From c10290c079e991b35a8f982bdfc6746314831248 Mon Sep 17 00:00:00 2001 From: JD <46619169+rudiejd@users.noreply.github.com> Date: Sun, 14 Jan 2024 22:49:23 -0500 Subject: [PATCH 1/4] feat(trip-explorer): speed for station pairs (#909) Add speed between station pairs on Trip Explorer. It is a toggleable option on the Travel Times graph. Also add a script for updating the distance between stations from a MassDOT GIS dataset. --- .../components/charts/AggregateLineChart.tsx | 20 +- .../components/charts/SingleChartWrapper.tsx | 12 +- .../components/charts/SingleDayLineChart.tsx | 21 +- common/constants/station_distances.json | 6114 +++++++++++++++++ common/constants/station_distances.ts | 3 + common/constants/stations.json | 1422 +++- common/types/charts.ts | 8 +- common/types/dataPoints.ts | 4 + common/utils/stations.ts | 18 +- common/utils/widgets.ts | 43 +- modules/dwells/DwellsAggregateWrapper.tsx | 2 +- .../dwells/charts/DwellsAggregateChart.tsx | 1 + modules/dwells/charts/DwellsSingleChart.tsx | 1 + modules/headways/HeadwaysAggregateWrapper.tsx | 2 +- .../charts/HeadwaysAggregateChart.tsx | 1 + .../headways/charts/HeadwaysSingleChart.tsx | 1 + modules/landing/utils.ts | 50 + .../SpeedBetweenStationsAggregateWrapper.tsx | 42 + .../SpeedBetweenStationsGraphWrapper.tsx | 43 + modules/speed/SpeedGraphWrapper.tsx | 2 +- .../SpeedBetweenStationsAggregateChart.tsx | 59 + .../SpeedBetweenStationsSingleChart.tsx | 47 + modules/speed/{ => charts}/SpeedGraph.tsx | 22 +- .../TravelTimesAggregateWrapper.tsx | 2 +- .../charts/TravelTimesAggregateChart.tsx | 1 + .../charts/TravelTimesSingleChart.tsx | 1 + modules/tripexplorer/SubwayTripGraphs.tsx | 117 +- server/pyproject.toml | 7 + server/scripts/update_station_distances.py | 200 + server/scripts/update_stations.py | 1 - 30 files changed, 7847 insertions(+), 420 deletions(-) create mode 100644 common/constants/station_distances.json create mode 100644 common/constants/station_distances.ts create mode 100644 modules/speed/SpeedBetweenStationsAggregateWrapper.tsx create mode 100644 modules/speed/SpeedBetweenStationsGraphWrapper.tsx create mode 100644 modules/speed/charts/SpeedBetweenStationsAggregateChart.tsx create mode 100644 modules/speed/charts/SpeedBetweenStationsSingleChart.tsx rename modules/speed/{ => charts}/SpeedGraph.tsx (87%) create mode 100644 server/scripts/update_station_distances.py diff --git a/common/components/charts/AggregateLineChart.tsx b/common/components/charts/AggregateLineChart.tsx index efefe64a1..b1fc21220 100644 --- a/common/components/charts/AggregateLineChart.tsx +++ b/common/components/charts/AggregateLineChart.tsx @@ -44,12 +44,15 @@ export const AggregateLineChart: React.FC = ({ suggestedYMax, showLegend = true, byTime = false, + yUnit = 'Minutes', }) => { const ref = useRef(); const hourly = timeUnit === 'hour'; const isMobile = !useBreakpoint('md'); const labels = useMemo(() => data.map((item) => item[pointField]), [data, pointField]); + const multiplier = yUnit === 'Minutes' ? 1 / 60 : 1; + return ( @@ -72,7 +75,7 @@ export const AggregateLineChart: React.FC = ({ pointRadius: byTime ? 0 : 3, pointHitRadius: 10, stepped: byTime, - data: data.map((item: AggregateDataPoint) => (item['50%'] / 60).toFixed(2)), + data: data.map((item: AggregateDataPoint) => (item['50%'] * multiplier).toFixed(2)), }, { label: '25th percentile', @@ -81,7 +84,7 @@ export const AggregateLineChart: React.FC = ({ stepped: byTime, tension: 0.4, pointRadius: 0, - data: data.map((item: AggregateDataPoint) => (item['25%'] / 60).toFixed(2)), + data: data.map((item: AggregateDataPoint) => (item['25%'] * multiplier).toFixed(2)), }, { label: '75th percentile', @@ -90,7 +93,7 @@ export const AggregateLineChart: React.FC = ({ stepped: byTime, tension: 0.4, pointRadius: 0, - data: data.map((item: AggregateDataPoint) => (item['75%'] / 60).toFixed(2)), + data: data.map((item: AggregateDataPoint) => (item['75%'] * multiplier).toFixed(2)), }, ], }} @@ -99,7 +102,7 @@ export const AggregateLineChart: React.FC = ({ y: { title: { display: true, - text: 'Minutes', + text: yUnit, }, ticks: { precision: 1, @@ -146,10 +149,11 @@ export const AggregateLineChart: React.FC = ({ position: 'nearest', callbacks: { label: (tooltipItem) => { - return `${tooltipItem.dataset.label}: ${getFormattedTimeString( - tooltipItem.parsed.y, - 'minutes' - )}`; + return `${tooltipItem.dataset.label}: ${ + yUnit === 'Minutes' + ? getFormattedTimeString(tooltipItem.parsed.y, 'minutes') + : `${tooltipItem.parsed.y} ${yUnit}` + }`; }, }, }, diff --git a/common/components/charts/SingleChartWrapper.tsx b/common/components/charts/SingleChartWrapper.tsx index b209f74d2..7231a18e5 100644 --- a/common/components/charts/SingleChartWrapper.tsx +++ b/common/components/charts/SingleChartWrapper.tsx @@ -6,12 +6,13 @@ import { ChartPlaceHolder } from '../graphics/ChartPlaceHolder'; import { TravelTimesSingleChart } from '../../../modules/traveltimes/charts/TravelTimesSingleChart'; import { HeadwaysSingleChart } from '../../../modules/headways/charts/HeadwaysSingleChart'; import { DwellsSingleChart } from '../../../modules/dwells/charts/DwellsSingleChart'; +import { SpeedBetweenStationsSingleChart } from '../../../modules/speed/charts/SpeedBetweenStationsSingleChart'; interface SingleChartWrapperProps { query: UseQueryResult; toStation: Station | undefined; fromStation: Station | undefined; - type: 'headways' | 'traveltimes' | 'dwells'; + type: 'headways' | 'traveltimes' | 'dwells' | 'speeds'; showLegend?: boolean; } @@ -47,5 +48,14 @@ export const SingleChartWrapper: React.FC = ({ return ( ); + case 'speeds': + return ( + + ); } }; diff --git a/common/components/charts/SingleDayLineChart.tsx b/common/components/charts/SingleDayLineChart.tsx index a03c6b469..c359f1cc2 100644 --- a/common/components/charts/SingleDayLineChart.tsx +++ b/common/components/charts/SingleDayLineChart.tsx @@ -65,6 +65,7 @@ export const SingleDayLineChart: React.FC = ({ fname, bothStops = false, location, + units, showLegend = true, }) => { const ref = useRef(); @@ -79,10 +80,15 @@ export const SingleDayLineChart: React.FC = ({ ); const displayBenchmarkData = benchmarkData.every((datapoint) => datapoint !== undefined); // Have to use `as number` because typescript doesn't understand `datapoint` is not undefined. + const multiplier = units === 'Minutes' ? 1 / 60 : 1; const benchmarkDataFormatted = displayBenchmarkData - ? benchmarkData.map((datapoint) => ((datapoint as number) / 60).toFixed(2)) + ? benchmarkData.map((datapoint) => ((datapoint as number) * multiplier).toFixed(2)) : null; + const convertedData = data.map((datapoint) => + ((datapoint[metricField] as number) * multiplier).toFixed(2) + ); + return ( @@ -103,7 +109,7 @@ export const SingleDayLineChart: React.FC = ({ pointHoverBackgroundColor: pointColors(data, metricField, benchmarkField), pointRadius: 3, pointHitRadius: 10, - data: data.map((datapoint) => ((datapoint[metricField] as number) / 60).toFixed(2)), + data: convertedData, }, { label: `Benchmark MBTA`, @@ -133,10 +139,11 @@ export const SingleDayLineChart: React.FC = ({ ) { return ''; } - return `${tooltipItem.dataset.label}: ${getFormattedTimeString( - tooltipItem.parsed.y, - 'minutes' - )}`; + return `${tooltipItem.dataset.label}: ${ + units === 'Minutes' + ? getFormattedTimeString(tooltipItem.parsed.y, 'minutes') + : `${tooltipItem.parsed.y} ${units}` + }`; }, afterBody: (tooltipItems) => { return departureFromNormalString( @@ -162,7 +169,7 @@ export const SingleDayLineChart: React.FC = ({ }, title: { display: true, - text: 'Minutes', + text: units, color: COLORS.design.subtitleGrey, }, }, diff --git a/common/constants/station_distances.json b/common/constants/station_distances.json new file mode 100644 index 000000000..e0b34f568 --- /dev/null +++ b/common/constants/station_distances.json @@ -0,0 +1,6114 @@ +{ + "place-wondl": { + "place-rbmnl": 0.386049255473037, + "place-bmmnl": 1.136689745014117, + "place-sdmnl": 1.64653959439374, + "place-orhte": 2.1289871935397278, + "place-wimnl": 3.2120840814642477, + "place-aport": 3.7597550560973896, + "place-mvbcl": 4.388216288127335, + "place-aqucl": 5.33715780902032, + "place-state": 5.649446981503021, + "place-gover": 5.7735038910264045, + "place-bomnl": 5.949268349091305 + }, + "place-rbmnl": { + "place-bmmnl": 0.75064048954108, + "place-sdmnl": 1.260490338920703, + "place-orhte": 1.742937938066691, + "place-wimnl": 2.826034825991211, + "place-aport": 3.3737058006243528, + "place-mvbcl": 4.002167032654298, + "place-aqucl": 4.951108553547283, + "place-state": 5.263397726029984, + "place-gover": 5.387454635553367, + "place-bomnl": 5.563219093618268, + "place-wondl": 0.386049255473037 + }, + "place-bmmnl": { + "place-sdmnl": 0.509849849379623, + "place-orhte": 0.992297448525611, + "place-wimnl": 2.075394336450131, + "place-aport": 2.623065311083273, + "place-mvbcl": 3.251526543113218, + "place-aqucl": 4.200468064006203, + "place-state": 4.512757236488904, + "place-gover": 4.636814146012287, + "place-bomnl": 4.812578604077188, + "place-rbmnl": 0.75064048954108, + "place-wondl": 1.136689745014117 + }, + "place-sdmnl": { + "place-orhte": 0.482447599145988, + "place-wimnl": 1.565544487070508, + "place-aport": 2.11321546170365, + "place-mvbcl": 2.741676693733595, + "place-aqucl": 3.69061821462658, + "place-state": 4.002907387109281, + "place-gover": 4.126964296632664, + "place-bomnl": 4.302728754697565, + "place-bmmnl": 0.509849849379623, + "place-rbmnl": 1.260490338920703, + "place-wondl": 1.64653959439374 + }, + "place-orhte": { + "place-wimnl": 1.08309688792452, + "place-aport": 1.6307678625576618, + "place-mvbcl": 2.259229094587607, + "place-aqucl": 3.208170615480592, + "place-state": 3.520459787963293, + "place-gover": 3.644516697486676, + "place-bomnl": 3.820281155551577, + "place-sdmnl": 0.482447599145988, + "place-bmmnl": 0.992297448525611, + "place-rbmnl": 1.742937938066691, + "place-wondl": 2.1289871935397278 + }, + "place-wimnl": { + "place-aport": 0.547670974633142, + "place-mvbcl": 1.176132206663087, + "place-aqucl": 2.125073727556072, + "place-state": 2.437362900038773, + "place-gover": 2.561419809562156, + "place-bomnl": 2.737184267627057, + "place-orhte": 1.08309688792452, + "place-sdmnl": 1.565544487070508, + "place-bmmnl": 2.075394336450131, + "place-rbmnl": 2.826034825991211, + "place-wondl": 3.2120840814642477 + }, + "place-aport": { + "place-mvbcl": 0.628461232029945, + "place-aqucl": 1.57740275292293, + "place-state": 1.889691925405631, + "place-gover": 2.013748834929014, + "place-bomnl": 2.189513292993915, + "place-wimnl": 0.547670974633142, + "place-orhte": 1.6307678625576618, + "place-sdmnl": 2.11321546170365, + "place-bmmnl": 2.623065311083273, + "place-rbmnl": 3.3737058006243528, + "place-wondl": 3.7597550560973896 + }, + "place-mvbcl": { + "place-aqucl": 0.948941520892985, + "place-state": 1.261230693375686, + "place-gover": 1.385287602899069, + "place-bomnl": 1.56105206096397, + "place-aport": 0.628461232029945, + "place-wimnl": 1.176132206663087, + "place-orhte": 2.259229094587607, + "place-sdmnl": 2.741676693733595, + "place-bmmnl": 3.251526543113218, + "place-rbmnl": 4.002167032654298, + "place-wondl": 4.388216288127335 + }, + "place-aqucl": { + "place-state": 0.312289172482701, + "place-gover": 0.436346082006084, + "place-bomnl": 0.612110540070985, + "place-mvbcl": 0.948941520892985, + "place-aport": 1.57740275292293, + "place-wimnl": 2.125073727556072, + "place-orhte": 3.208170615480592, + "place-sdmnl": 3.69061821462658, + "place-bmmnl": 4.200468064006203, + "place-rbmnl": 4.951108553547283, + "place-wondl": 5.33715780902032 + }, + "place-state": { + "place-gover": 0.124056909523383, + "place-bomnl": 0.29982136758828404, + "place-aqucl": 0.312289172482701, + "place-mvbcl": 1.261230693375686, + "place-aport": 1.889691925405631, + "place-wimnl": 2.437362900038773, + "place-orhte": 3.520459787963293, + "place-sdmnl": 4.002907387109281, + "place-bmmnl": 4.512757236488904, + "place-rbmnl": 5.263397726029984, + "place-wondl": 5.649446981503021, + "place-ogmnl": 5.795672741812817, + "place-mlmnl": 5.061042771464649, + "place-welln": 3.3080358773512692, + "place-astao": 2.674762902151436, + "place-sull": 2.097212165329477, + "place-ccmnl": 1.229412632724887, + "place-north": 0.522600064374056, + "place-haecl": 0.286489697044262, + "place-dwnxg": 0.281779185804899, + "place-chncl": 0.527514722147657, + "place-tumnl": 0.743945754294917, + "place-bbsta": 1.415917412312097, + "place-masta": 2.038755231945438, + "place-rugg": 2.455368848425196, + "place-rcmnl": 2.973873570224886, + "place-jaksn": 3.524121106488109, + "place-sbmnl": 4.006258620282549, + "place-grnst": 4.544769488686071, + "place-forhl": 5.233504873414258 + }, + "place-gover": { + "place-bomnl": 0.175764458064901, + "place-state": 0.124056909523383, + "place-aqucl": 0.436346082006084, + "place-mvbcl": 1.385287602899069, + "place-aport": 2.013748834929014, + "place-wimnl": 2.561419809562156, + "place-orhte": 3.644516697486676, + "place-sdmnl": 4.126964296632664, + "place-bmmnl": 4.636814146012287, + "place-rbmnl": 5.387454635553367, + "place-wondl": 5.7735038910264045, + "place-pktrm": 0.284019446432832, + "place-boyls": 0.575161677677364, + "place-armnl": 0.8988083442694661, + "place-coecl": 1.291035730707667, + "place-prmnl": 1.652678239083751, + "place-symcl": 1.915332086862721, + "place-nuniv": 2.247991070274596, + "place-mfa": 2.541224951284498, + "place-lngmd": 2.80901315504951, + "place-brmnl": 3.073916630627137, + "place-fenwd": 3.1490647636552525, + "place-mispk": 3.3417939172731246, + "place-rvrwy": 3.5471297746162405, + "place-bckhl": 3.6933715097580135, + "place-hymnl": 1.820381712672989, + "place-kencl": 2.220675037157997, + "place-fenwy": 2.7971361107382884, + "place-longw": 3.1533082933170284, + "place-bvmnl": 3.8916259705818024, + "place-brkhl": 4.424528220194066, + "place-bcnfd": 5.222040770028035, + "place-rsmnl": 5.621198164593772, + "place-chhil": 6.642106478167502, + "place-newto": 8.111257998289993, + "place-newtn": 8.920870672149652, + "place-eliot": 9.69325469818759, + "place-waban": 10.540593756213719, + "place-woodl": 11.36729626667761, + "place-river": 11.895180819016948, + "place-lake": 6.454213915732123, + "place-sougr": 5.94662911347729, + "place-chill": 5.665381616981825, + "place-chswk": 5.4898786990227055, + "place-sthld": 5.2450623875318145, + "place-wascm": 4.965034551966515, + "place-wrnst": 4.6717769668883715, + "place-alsgr": 4.515361798347651, + "place-grigg": 4.326906821040127, + "place-harvd": 4.132396856110316, + "place-brico": 3.7757729385389327, + "place-babck": 3.4840847481955377, + "place-amory": 3.2124434086186673, + "place-bucen": 2.8277943572039286, + "place-buest": 2.676676819250577, + "place-bland": 2.460570577825499, + "place-unsqu": 2.476522336430249, + "place-lech": 1.4620733820736902, + "place-spmnl": 0.895285088831226, + "place-north": 0.488451131641216, + "place-haecl": 0.253817981736658, + "place-esomr": 2.270857265444802, + "place-gilmn": 3.04026938802394, + "place-mgngl": 3.720471891031377, + "place-balsq": 4.195887671622724, + "place-mdftf": 4.769861345989422, + "place-hsmnl": 13.34749019103436, + "place-clmnl": 5.125324155680824, + "place-smary": 2.869922826319295, + "place-engav": 4.943149247146663, + "place-hwsst": 3.089076977327408, + "place-denrd": 4.780835662232562, + "place-kntst": 3.275469839885071, + "place-tapst": 4.550404134852461, + "place-stpul": 3.435516746575002, + "place-bcnwa": 4.3540821657768625, + "place-cool": 3.663099057131353, + "place-fbkst": 4.173842530869721, + "place-sumav": 3.883001556534837, + "place-bndhl": 4.046689041621928 + }, + "place-bomnl": { + "place-gover": 0.175764458064901, + "place-state": 0.29982136758828404, + "place-aqucl": 0.612110540070985, + "place-mvbcl": 1.56105206096397, + "place-aport": 2.189513292993915, + "place-wimnl": 2.737184267627057, + "place-orhte": 3.820281155551577, + "place-sdmnl": 4.302728754697565, + "place-bmmnl": 4.812578604077188, + "place-rbmnl": 5.563219093618268, + "place-wondl": 5.949268349091305 + }, + "place-pktrm": { + "place-boyls": 0.245430402076871, + "place-armnl": 0.614788897836634, + "place-coecl": 1.007016284274835, + "place-prmnl": 1.394627391036348, + "place-symcl": 1.657281238815318, + "place-nuniv": 1.989940222227193, + "place-mfa": 2.283174103237095, + "place-lngmd": 2.550962307002107, + "place-brmnl": 2.815865782579734, + "place-fenwd": 2.8910139156078496, + "place-mispk": 3.0837430692257217, + "place-rvrwy": 3.2890789265688376, + "place-bckhl": 3.4353206617106107, + "place-hymnl": 1.536362266240157, + "place-kencl": 1.936655590725165, + "place-fenwy": 2.539085262690885, + "place-longw": 2.895257445269625, + "place-bvmnl": 3.633575122534399, + "place-brkhl": 4.166477372146663, + "place-bcnfd": 4.963989921980632, + "place-rsmnl": 5.363147316546369, + "place-chhil": 6.384055630120099, + "place-newto": 7.853207150242589, + "place-newtn": 8.662819824102248, + "place-eliot": 9.435203850140185, + "place-waban": 10.282542908166315, + "place-woodl": 11.109245418630206, + "place-river": 11.637170267512731, + "place-lake": 6.170194469299291, + "place-sougr": 5.662609667044459, + "place-chill": 5.381362170548993, + "place-chswk": 5.205859252589874, + "place-sthld": 4.961042941098983, + "place-wascm": 4.6810151055336835, + "place-wrnst": 4.38775752045554, + "place-alsgr": 4.231342351914819, + "place-grigg": 4.042887374607295, + "place-harvd": 3.848377409677484, + "place-brico": 3.491753492106101, + "place-babck": 3.200065301762706, + "place-amory": 2.9284239621858354, + "place-bucen": 2.5437749107710967, + "place-buest": 2.3926573728177454, + "place-bland": 2.1765511313926673, + "place-gover": 0.284019446432832, + "place-haecl": 0.53783742816949, + "place-north": 0.772470578074048, + "place-spmnl": 1.1793045352640579, + "place-lech": 1.746092828506522, + "place-esomr": 2.554876711877634, + "place-gilmn": 3.324288834456772, + "place-mgngl": 4.004491337464209, + "place-balsq": 4.479907118055556, + "place-mdftf": 5.053880792422254, + "place-alfcl": 5.945387666030385, + "place-davis": 4.953975575141179, + "place-portr": 4.315595128201306, + "place-harsq": 3.2499242132197956, + "place-cntsq": 2.278665943390598, + "place-knncl": 1.3105006443619258, + "place-chmnl": 0.589480859281794, + "place-dwnxg": 0.127226172278891, + "place-sstat": 0.462768172000517, + "place-brdwy": 1.288142114426749, + "place-andrw": 2.148112788813331, + "place-jfk": 2.9329617291269, + "place-nqncy": 6.47780623036467, + "place-wlsta": 7.273996222063151, + "place-qnctr": 8.56750609503002, + "place-qamnl": 9.877604532654292, + "place-shmnl": 3.616599340476617, + "place-fldcr": 4.610146185029428, + "place-smmnl": 5.198303553497575, + "place-asmnl": 5.803362015827568, + "place-brntn": 11.680436881735652, + "place-hsmnl": 13.631509637467193, + "place-unsqu": 2.7904041982323218, + "place-bndhl": 4.33070848805476, + "place-smary": 3.153942272752127, + "place-clmnl": 5.409343602113656, + "place-hwsst": 3.3730964237602397, + "place-engav": 5.227168693579495, + "place-kntst": 3.559489286317903, + "place-denrd": 5.064855108665394, + "place-stpul": 3.719536193007834, + "place-tapst": 4.834423581285293, + "place-cool": 3.9471185035641847, + "place-bcnwa": 4.638101612209694, + "place-sumav": 4.167021002967669, + "place-fbkst": 4.457861977302553 + }, + "place-boyls": { + "place-armnl": 0.323646666592102, + "place-coecl": 0.7158740530303029, + "place-prmnl": 1.1492372855026651, + "place-symcl": 1.411891133281635, + "place-nuniv": 1.74455011669351, + "place-mfa": 2.037783997703412, + "place-lngmd": 2.305572201468424, + "place-brmnl": 2.570475677046051, + "place-fenwd": 2.6456238100741665, + "place-mispk": 2.8383529636920386, + "place-rvrwy": 3.0436888210351545, + "place-bckhl": 3.1899305561769276, + "place-hymnl": 1.245220034995625, + "place-kencl": 1.645513359480633, + "place-fenwy": 2.2936951571572024, + "place-longw": 2.6498673397359425, + "place-bvmnl": 3.3881850170007164, + "place-brkhl": 3.9210872666129806, + "place-bcnfd": 4.718599816446949, + "place-rsmnl": 5.1177572110126865, + "place-chhil": 6.138665524586417, + "place-newto": 7.607817044708907, + "place-newtn": 8.417429718568565, + "place-eliot": 9.189813744606502, + "place-waban": 10.037152802632631, + "place-woodl": 10.863855313096522, + "place-river": 11.391739865435861, + "place-lake": 5.87905223805476, + "place-sougr": 5.371467435799927, + "place-chill": 5.090219939304461, + "place-chswk": 4.914717021345342, + "place-sthld": 4.669900709854451, + "place-wascm": 4.389872874289152, + "place-wrnst": 4.096615289211008, + "place-alsgr": 3.9402001206702866, + "place-grigg": 3.7517451433627627, + "place-harvd": 3.5572351784329523, + "place-brico": 3.200611260861569, + "place-babck": 2.908923070518174, + "place-amory": 2.6372817309413032, + "place-bucen": 2.252632679526565, + "place-buest": 2.101515141573213, + "place-bland": 1.8854089001481351, + "place-pktrm": 0.245430402076871, + "place-gover": 0.575161677677364, + "place-haecl": 0.828979659414022, + "place-north": 1.06361280931858, + "place-spmnl": 1.4704467665085899, + "place-lech": 2.037235059751054, + "place-esomr": 2.8460189431221656, + "place-gilmn": 3.6154310657013036, + "place-mgngl": 4.295633568708741, + "place-balsq": 4.771049349300088, + "place-mdftf": 5.345023023666786, + "place-hsmnl": 13.922651868711725, + "place-unsqu": 3.0815464294768535, + "place-bndhl": 4.621850719299292, + "place-smary": 3.445084503996659, + "place-clmnl": 5.700485833358188, + "place-hwsst": 3.664238655004772, + "place-engav": 5.518310924824027, + "place-kntst": 3.850631517562435, + "place-denrd": 5.355997339909926, + "place-stpul": 4.010678424252366, + "place-tapst": 5.125565812529825, + "place-cool": 4.238260734808717, + "place-bcnwa": 4.929243843454227, + "place-sumav": 4.458163234212201, + "place-fbkst": 4.749004208547085 + }, + "place-armnl": { + "place-coecl": 0.392227386438201, + "place-prmnl": 0.779853142646941, + "place-symcl": 1.042506990425911, + "place-nuniv": 1.375165973837786, + "place-mfa": 1.668399854847688, + "place-lngmd": 1.9361880586127, + "place-brmnl": 2.201091534190327, + "place-fenwd": 2.2762396672184426, + "place-mispk": 2.4689688208363147, + "place-rvrwy": 2.6743046781794306, + "place-bckhl": 2.8205464133212037, + "place-hymnl": 0.921573368403523, + "place-kencl": 1.321866692888531, + "place-fenwy": 1.924311014301478, + "place-longw": 2.280483196880218, + "place-bvmnl": 3.018800874144992, + "place-brkhl": 3.551703123757256, + "place-bcnfd": 4.349215673591225, + "place-rsmnl": 4.748373068156962, + "place-chhil": 5.769281381730692, + "place-newto": 7.238432901853182, + "place-newtn": 8.048045575712841, + "place-eliot": 8.820429601750778, + "place-waban": 9.667768659776907, + "place-woodl": 10.494471170240798, + "place-river": 11.022355722580137, + "place-lake": 5.555405571462658, + "place-sougr": 5.047820769207825, + "place-chill": 4.7665732727123595, + "place-chswk": 4.59107035475324, + "place-sthld": 4.346254043262349, + "place-wascm": 4.06622620769705, + "place-wrnst": 3.7729686226189063, + "place-alsgr": 3.6165534540781845, + "place-grigg": 3.4280984767706606, + "place-harvd": 3.2335885118408503, + "place-brico": 2.876964594269467, + "place-babck": 2.585276403926072, + "place-amory": 2.313635064349201, + "place-bucen": 1.928986012934463, + "place-buest": 1.7778684749811111, + "place-bland": 1.561762233556033, + "place-boyls": 0.323646666592102, + "place-pktrm": 0.614788897836634, + "place-gover": 0.8988083442694661, + "place-haecl": 1.152626326006124, + "place-north": 1.387259475910682, + "place-spmnl": 1.794093433100692, + "place-lech": 2.360881726343156, + "place-esomr": 3.1696656097142677, + "place-gilmn": 3.9390777322934056, + "place-mgngl": 4.619280235300843, + "place-balsq": 5.09469601589219, + "place-mdftf": 5.668669690258888, + "place-hsmnl": 14.246298535303826, + "place-unsqu": 3.405193096068956, + "place-bndhl": 4.945497385891394, + "place-smary": 3.768731170588761, + "place-clmnl": 6.02413249995029, + "place-hwsst": 3.987885321596874, + "place-engav": 5.841957591416129, + "place-kntst": 4.174278184154537, + "place-denrd": 5.679644006502028, + "place-stpul": 4.334325090844468, + "place-tapst": 5.449212479121927, + "place-cool": 4.561907401400819, + "place-bcnwa": 5.252890510046329, + "place-sumav": 4.781809900804303, + "place-fbkst": 5.072650875139187 + }, + "place-coecl": { + "place-hymnl": 0.529345981965322, + "place-kencl": 0.92963930645033, + "place-fenwy": 1.570601364282589, + "place-longw": 1.926773546861329, + "place-bvmnl": 2.665091224126103, + "place-brkhl": 3.197993473738367, + "place-bcnfd": 3.995506023572336, + "place-rsmnl": 4.394663418138073, + "place-chhil": 5.415571731711803, + "place-newto": 6.884723251834293, + "place-newtn": 7.694335925693952, + "place-eliot": 8.46671995173189, + "place-waban": 9.314059009758019, + "place-woodl": 10.14076152022191, + "place-river": 10.668646072561248, + "place-lake": 5.163178185024457, + "place-sougr": 4.6555933827696245, + "place-chill": 4.374345886274159, + "place-chswk": 4.19884296831504, + "place-sthld": 3.9540266568241482, + "place-wascm": 3.673998821258849, + "place-wrnst": 3.380741236180705, + "place-alsgr": 3.2243260676399834, + "place-grigg": 3.0358710903324595, + "place-harvd": 2.841361125402649, + "place-brico": 2.484737207831266, + "place-babck": 2.193049017487871, + "place-amory": 1.921407677911, + "place-bucen": 1.5367586264962618, + "place-buest": 1.38564108854291, + "place-bland": 1.169534847117832, + "place-armnl": 0.392227386438201, + "place-boyls": 0.7158740530303029, + "place-pktrm": 1.007016284274835, + "place-gover": 1.291035730707667, + "place-haecl": 1.544853712444325, + "place-north": 1.7794868623488829, + "place-spmnl": 2.186320819538893, + "place-lech": 2.753109112781357, + "place-esomr": 3.561892996152469, + "place-gilmn": 4.331305118731607, + "place-mgngl": 5.011507621739044, + "place-balsq": 5.486923402330391, + "place-mdftf": 6.060897076697089, + "place-bckhl": 2.428367721257854, + "place-hsmnl": 2.516731768347848, + "place-rvrwy": 2.249637096232999, + "place-mispk": 2.098575999910522, + "place-fenwd": 1.8795757420414771, + "place-brmnl": 1.7260194203352408, + "place-lngmd": 1.514569811053447, + "place-mfa": 1.2461596843185792, + "place-nuniv": 0.9267693302364189, + "place-symcl": 0.650255019436491, + "place-prmnl": 0.387603785766126, + "place-unsqu": 3.7974204825071567, + "place-bndhl": 5.337724772329595, + "place-smary": 4.160958557026962, + "place-clmnl": 6.4163598863884905, + "place-hwsst": 4.380112708035075, + "place-engav": 6.23418497785433, + "place-kntst": 4.566505570592738, + "place-denrd": 6.071871392940229, + "place-stpul": 4.726552477282669, + "place-tapst": 5.841439865560128, + "place-cool": 4.95413478783902, + "place-bcnwa": 5.645117896484529, + "place-sumav": 5.174037287242504, + "place-fbkst": 5.464878261577388 + }, + "place-hymnl": { + "place-kencl": 0.400649134678478, + "place-bland": 0.64018886515251, + "place-buest": 0.856295106577588, + "place-bucen": 1.00741264453094, + "place-amory": 1.392061695945678, + "place-babck": 1.663703035522549, + "place-brico": 1.955391225865944, + "place-harvd": 2.312015143437327, + "place-grigg": 2.5065251083671374, + "place-alsgr": 2.6949800856746613, + "place-wrnst": 2.851395254215383, + "place-wascm": 3.144652839293527, + "place-sthld": 3.424680674858826, + "place-chswk": 3.669496986349718, + "place-chill": 3.844999904308837, + "place-sougr": 4.126247400804303, + "place-lake": 4.633832203059136, + "place-coecl": 0.529345981965322, + "place-armnl": 0.921573368403523, + "place-boyls": 1.245220034995625, + "place-pktrm": 1.536362266240157, + "place-gover": 1.820381712672989, + "place-haecl": 2.0741996944096472, + "place-north": 2.3088328443142054, + "place-spmnl": 2.7156668015042156, + "place-lech": 3.2824550947466795, + "place-esomr": 4.091238978117792, + "place-gilmn": 4.86065110069693, + "place-mgngl": 5.540853603704367, + "place-balsq": 6.016269384295714, + "place-mdftf": 6.590243058662412, + "place-clmnl": 3.3052982532013044, + "place-engav": 3.1231233446671443, + "place-denrd": 2.9608097597530425, + "place-tapst": 2.730378232372942, + "place-bcnwa": 2.534056263297344, + "place-fbkst": 2.3538166283902022, + "place-bndhl": 2.226663139142409, + "place-sumav": 2.062975654055318, + "place-cool": 1.8430731546518337, + "place-stpul": 1.615490844095483, + "place-kntst": 1.455443937405552, + "place-hwsst": 1.269051074847889, + "place-smary": 1.049896923839776, + "place-prmnl": 13.038743921125628, + "place-hsmnl": 15.16787190370735, + "place-symcl": 13.301395154795992, + "place-bckhl": 15.079507856617354, + "place-nuniv": 13.57790946559592, + "place-rvrwy": 14.9007772315925, + "place-mfa": 13.89729981967808, + "place-mispk": 14.749716135270024, + "place-lngmd": 14.16570994641295, + "place-fenwd": 14.53071587740098, + "place-brmnl": 14.377159555694742, + "place-river": 23.258190467668825, + "place-fenwy": 32.39722402544143, + "place-woodl": 23.82672607161677, + "place-longw": 32.024559931251495, + "place-waban": 24.634717531491102, + "place-bvmnl": 31.276100373195543, + "place-eliot": 25.495654073336723, + "place-brkhl": 30.761221329311823, + "place-newtn": 26.254367788987327, + "place-bcnfd": 29.97560783897042, + "place-newto": 27.07385785574745, + "place-rsmnl": 29.568161128385235, + "place-chhil": 28.54383540871313, + "place-unsqu": 4.326766464472479 + }, + "place-kencl": { + "place-bland": 0.239895540667502, + "place-buest": 0.45600178209258, + "place-bucen": 0.6071193200459319, + "place-amory": 0.9917683714606699, + "place-babck": 1.263409711037541, + "place-brico": 1.555097901380936, + "place-harvd": 1.911721818952319, + "place-grigg": 2.106231783882129, + "place-alsgr": 2.294686761189653, + "place-wrnst": 2.4511019297303753, + "place-wascm": 2.7443595148085187, + "place-sthld": 3.024387350373818, + "place-chswk": 3.2692036618647102, + "place-chill": 3.4447065798238294, + "place-sougr": 3.725954076319295, + "place-lake": 4.2335388785741275, + "place-hymnl": 0.400649134678478, + "place-coecl": 0.92963930645033, + "place-armnl": 1.321866692888531, + "place-boyls": 1.645513359480633, + "place-pktrm": 1.936655590725165, + "place-gover": 2.220675037157997, + "place-haecl": 2.474493018894655, + "place-north": 2.709126168799213, + "place-spmnl": 3.1159601259892233, + "place-lech": 3.6827484192316873, + "place-esomr": 4.491532302602799, + "place-gilmn": 5.260944425181937, + "place-mgngl": 5.941146928189374, + "place-balsq": 6.416562708780721, + "place-mdftf": 6.99089219334089, + "place-smary": 0.649247789161298, + "place-hwsst": 0.868401940169411, + "place-kntst": 1.054794802727074, + "place-stpul": 1.214841709417005, + "place-cool": 1.4424240199733558, + "place-sumav": 1.66232651937684, + "place-bndhl": 1.826014004463931, + "place-fbkst": 1.953167493711724, + "place-bcnwa": 2.133407128618866, + "place-tapst": 2.329729097694464, + "place-denrd": 2.5601606250745643, + "place-engav": 2.722474209988666, + "place-clmnl": 2.9046491185228263, + "place-river": 9.70007706431937, + "place-woodl": 9.131541460371423, + "place-waban": 8.32355000049709, + "place-eliot": 7.462613458651469, + "place-newtn": 6.703899743000869, + "place-newto": 5.884409676240748, + "place-chhil": 4.414432123275068, + "place-rsmnl": 3.390106403602958, + "place-bcnfd": 2.982659693017776, + "place-brkhl": 2.19704620267637, + "place-bvmnl": 1.682167158792651, + "place-longw": 0.9337076007366971, + "place-fenwy": 0.561043506546766, + "place-prmnl": 13.439393055804105, + "place-hsmnl": 15.568521038385828, + "place-symcl": 13.70204428947447, + "place-bckhl": 15.480156991295832, + "place-nuniv": 13.978558600274397, + "place-rvrwy": 15.301426366270977, + "place-mfa": 14.297948954356558, + "place-mispk": 15.150365269948502, + "place-lngmd": 14.566359081091427, + "place-fenwd": 14.931365012079457, + "place-brmnl": 14.77780869037322, + "place-unsqu": 4.7270597889574875 + }, + "place-bland": { + "place-buest": 0.216106241425078, + "place-bucen": 0.36722377937843, + "place-amory": 0.7518728307931679, + "place-babck": 1.023514170370039, + "place-brico": 1.315202360713434, + "place-harvd": 1.671826278284817, + "place-grigg": 1.866336243214627, + "place-alsgr": 2.054791220522151, + "place-wrnst": 2.2112063890628733, + "place-wascm": 2.5044639741410166, + "place-sthld": 2.784491809706316, + "place-chswk": 3.029308121197208, + "place-chill": 3.2048110391563274, + "place-sougr": 3.486058535651793, + "place-lake": 3.993643337906626, + "place-kencl": 0.239895540667502, + "place-hymnl": 0.64018886515251, + "place-coecl": 1.169534847117832, + "place-armnl": 1.561762233556033, + "place-boyls": 1.8854089001481351, + "place-pktrm": 2.1765511313926673, + "place-gover": 2.460570577825499, + "place-haecl": 2.714388559562157, + "place-north": 2.9490217094667153, + "place-spmnl": 3.3558556666567254, + "place-lech": 3.9226439598991893, + "place-esomr": 4.731427843270302, + "place-gilmn": 5.50083996584944, + "place-mgngl": 6.181042468856877, + "place-balsq": 6.656458249448224, + "place-mdftf": 7.230431923814922, + "place-prmnl": 13.678932786278137, + "place-hsmnl": 15.80806076885986, + "place-symcl": 13.941584019948502, + "place-bckhl": 15.719696721769864, + "place-nuniv": 14.218098330748429, + "place-rvrwy": 15.54096609674501, + "place-mfa": 14.53748868483059, + "place-mispk": 15.389905000422534, + "place-lngmd": 14.80589881156546, + "place-fenwd": 15.170904742553489, + "place-brmnl": 15.017348420847252, + "place-river": 23.898379332821335, + "place-fenwy": 33.03741289059394, + "place-woodl": 24.466914936769278, + "place-longw": 32.664748796404005, + "place-waban": 25.274906396643612, + "place-bvmnl": 31.916289238348053, + "place-eliot": 26.135842938489233, + "place-brkhl": 31.401410194464333, + "place-newtn": 26.894556654139837, + "place-bcnfd": 30.61579670412293, + "place-newto": 27.714046720899958, + "place-rsmnl": 30.208349993537745, + "place-chhil": 29.18402427386564, + "place-unsqu": 4.966955329624989, + "place-bndhl": 6.507259619447427, + "place-smary": 5.330493404144795, + "place-clmnl": 7.585894733506323, + "place-hwsst": 5.549647555152907, + "place-engav": 7.403719824972162, + "place-kntst": 5.73604041771057, + "place-denrd": 7.241406240058061, + "place-stpul": 5.896087324400501, + "place-tapst": 7.01097471267796, + "place-cool": 6.123669634956852, + "place-bcnwa": 6.814652743602362, + "place-sumav": 6.343572134360336, + "place-fbkst": 6.63441310869522 + }, + "place-buest": { + "place-bucen": 0.151117537953352, + "place-amory": 0.53576658936809, + "place-babck": 0.8074079289449609, + "place-brico": 1.099096119288356, + "place-harvd": 1.455720036859739, + "place-grigg": 1.650230001789549, + "place-alsgr": 1.838684979097073, + "place-wrnst": 1.9951001476377952, + "place-wascm": 2.2883577327159386, + "place-sthld": 2.5683855682812378, + "place-chswk": 2.81320187977213, + "place-chill": 2.9887047977312493, + "place-sougr": 3.269952294226715, + "place-lake": 3.777537096481548, + "place-bland": 0.216106241425078, + "place-kencl": 0.45600178209258, + "place-hymnl": 0.856295106577588, + "place-coecl": 1.38564108854291, + "place-armnl": 1.7778684749811111, + "place-boyls": 2.101515141573213, + "place-pktrm": 2.3926573728177454, + "place-gover": 2.676676819250577, + "place-haecl": 2.930494800987235, + "place-north": 3.1651279508917933, + "place-spmnl": 3.5719619080818035, + "place-lech": 4.138750201324267, + "place-esomr": 4.94753408469538, + "place-gilmn": 5.716946207274518, + "place-mgngl": 6.397148710281955, + "place-balsq": 6.872564490873302, + "place-mdftf": 7.44653816524, + "place-prmnl": 13.895039027703216, + "place-hsmnl": 16.024167010284938, + "place-symcl": 14.157690261373581, + "place-bckhl": 15.935802963194943, + "place-nuniv": 14.434204572173508, + "place-rvrwy": 15.757072338170088, + "place-mfa": 14.75359492625567, + "place-mispk": 15.606011241847611, + "place-lngmd": 15.022005052990536, + "place-fenwd": 15.387010983978566, + "place-brmnl": 15.23345466227233, + "place-river": 24.114485574246412, + "place-fenwy": 33.253519132019015, + "place-woodl": 24.683021178194355, + "place-longw": 32.880855037829086, + "place-waban": 25.49101263806869, + "place-bvmnl": 32.13239547977313, + "place-eliot": 26.351949179914314, + "place-brkhl": 31.617516435889414, + "place-newtn": 27.110662895564914, + "place-bcnfd": 30.831902945548006, + "place-newto": 27.93015296232503, + "place-rsmnl": 30.424456234962825, + "place-chhil": 29.400130515290712, + "place-unsqu": 5.183061571050067, + "place-bndhl": 6.723365860872505, + "place-smary": 5.546599645569872, + "place-clmnl": 7.802000974931401, + "place-hwsst": 5.765753796577985, + "place-engav": 7.61982606639724, + "place-kntst": 5.952146659135648, + "place-denrd": 7.457512481483139, + "place-stpul": 6.11219356582558, + "place-tapst": 7.227080954103038, + "place-cool": 6.33977587638193, + "place-bcnwa": 7.03075898502744, + "place-sumav": 6.559678375785414, + "place-fbkst": 6.850519350120298 + }, + "place-bucen": { + "place-amory": 0.384649051414738, + "place-babck": 0.6562903909916089, + "place-brico": 0.9479785813350039, + "place-harvd": 1.304602498906387, + "place-grigg": 1.499112463836197, + "place-alsgr": 1.687567441143721, + "place-wrnst": 1.8439826096844432, + "place-wascm": 2.1372401947625868, + "place-sthld": 2.417268030327886, + "place-chswk": 2.6620843418187783, + "place-chill": 2.8375872597778975, + "place-sougr": 3.118834756273363, + "place-lake": 3.626419558528196, + "place-buest": 0.151117537953352, + "place-bland": 0.36722377937843, + "place-kencl": 0.6071193200459319, + "place-hymnl": 1.00741264453094, + "place-coecl": 1.5367586264962618, + "place-armnl": 1.928986012934463, + "place-boyls": 2.252632679526565, + "place-pktrm": 2.5437749107710967, + "place-gover": 2.8277943572039286, + "place-haecl": 3.0816123389405865, + "place-north": 3.3162454888451447, + "place-spmnl": 3.723079446035155, + "place-lech": 4.289867739277619, + "place-esomr": 5.098651622648731, + "place-gilmn": 5.868063745227869, + "place-mgngl": 6.548266248235306, + "place-balsq": 7.023682028826653, + "place-mdftf": 7.597655703193351, + "place-prmnl": 14.046156565656567, + "place-hsmnl": 16.175284548238288, + "place-symcl": 14.308807799326932, + "place-bckhl": 16.086920501148295, + "place-nuniv": 14.58532211012686, + "place-rvrwy": 15.90818987612344, + "place-mfa": 14.90471246420902, + "place-mispk": 15.757128779800961, + "place-lngmd": 15.173122590943887, + "place-fenwd": 15.538128521931917, + "place-brmnl": 15.38457220022568, + "place-river": 24.265603112199763, + "place-fenwy": 33.40463666997236, + "place-woodl": 24.834138716147706, + "place-longw": 33.03197257578243, + "place-waban": 25.64213017602204, + "place-bvmnl": 32.28351301772648, + "place-eliot": 26.50306671786766, + "place-brkhl": 31.76863397384276, + "place-newtn": 27.261780433518265, + "place-bcnfd": 30.983020483501356, + "place-newto": 28.081270500278386, + "place-rsmnl": 30.575573772916172, + "place-chhil": 29.551248053244066, + "place-unsqu": 5.3341791090034185, + "place-bndhl": 6.8744833988258565, + "place-smary": 5.697717183523224, + "place-clmnl": 7.953118512884752, + "place-hwsst": 5.916871334531336, + "place-engav": 7.770943604350592, + "place-kntst": 6.103264197089, + "place-denrd": 7.60863001943649, + "place-stpul": 6.26331110377893, + "place-tapst": 7.37819849205639, + "place-cool": 6.490893414335281, + "place-bcnwa": 7.181876522980791, + "place-sumav": 6.710795913738766, + "place-fbkst": 7.00163688807365 + }, + "place-amory": { + "place-babck": 0.271641339576871, + "place-brico": 0.563329529920266, + "place-harvd": 0.919953447491649, + "place-grigg": 1.114463412421459, + "place-alsgr": 1.3029183897289829, + "place-wrnst": 1.4593335582697051, + "place-wascm": 1.752591143347849, + "place-sthld": 2.032618978913148, + "place-chswk": 2.2774352904040405, + "place-chill": 2.4529382083631597, + "place-sougr": 2.7341857048586253, + "place-lake": 3.241770507113458, + "place-bucen": 0.384649051414738, + "place-buest": 0.53576658936809, + "place-bland": 0.7518728307931679, + "place-kencl": 0.9917683714606699, + "place-hymnl": 1.392061695945678, + "place-coecl": 1.921407677911, + "place-armnl": 2.313635064349201, + "place-boyls": 2.6372817309413032, + "place-pktrm": 2.9284239621858354, + "place-gover": 3.2124434086186673, + "place-haecl": 3.466261390355325, + "place-north": 3.7008945402598834, + "place-spmnl": 4.1077284974498935, + "place-lech": 4.6745167906923575, + "place-esomr": 5.48330067406347, + "place-gilmn": 6.252712796642608, + "place-mgngl": 6.932915299650045, + "place-balsq": 7.408331080241392, + "place-mdftf": 7.98230475460809, + "place-prmnl": 14.430805617071305, + "place-hsmnl": 16.55993359965303, + "place-symcl": 14.69345685074167, + "place-bckhl": 16.471569552563032, + "place-nuniv": 14.969971161541597, + "place-rvrwy": 16.292838927538178, + "place-mfa": 15.289361515623758, + "place-mispk": 16.141777831215702, + "place-lngmd": 15.557771642358627, + "place-fenwd": 15.922777573346657, + "place-brmnl": 15.76922125164042, + "place-river": 24.650252163614503, + "place-fenwy": 33.7892857213871, + "place-woodl": 25.218787767562446, + "place-longw": 33.41662162719717, + "place-waban": 26.02677922743678, + "place-bvmnl": 32.66816206914122, + "place-eliot": 26.8877157692824, + "place-brkhl": 32.1532830252575, + "place-newtn": 27.646429484933005, + "place-bcnfd": 31.367669534916097, + "place-newto": 28.465919551693126, + "place-rsmnl": 30.960222824330913, + "place-chhil": 29.935897104658807, + "place-unsqu": 5.718828160418157, + "place-bndhl": 7.259132450240595, + "place-smary": 6.082366234937963, + "place-clmnl": 8.33776756429949, + "place-hwsst": 6.301520385946075, + "place-engav": 8.15559265576533, + "place-kntst": 6.487913248503738, + "place-denrd": 7.993279070851229, + "place-stpul": 6.647960155193669, + "place-tapst": 7.762847543471128, + "place-cool": 6.87554246575002, + "place-bcnwa": 7.56652557439553, + "place-sumav": 7.095444965153504, + "place-fbkst": 7.386285939488388 + }, + "place-babck": { + "place-brico": 0.291688190343395, + "place-harvd": 0.648312107914778, + "place-grigg": 0.842822072844588, + "place-alsgr": 1.031277050152112, + "place-wrnst": 1.187692218692834, + "place-wascm": 1.480949803770978, + "place-sthld": 1.760977639336277, + "place-chswk": 2.0057939508271696, + "place-chill": 2.181296868786289, + "place-sougr": 2.4625443652817545, + "place-lake": 2.9701291675365873, + "place-amory": 0.271641339576871, + "place-bucen": 0.6562903909916089, + "place-buest": 0.8074079289449609, + "place-bland": 1.023514170370039, + "place-kencl": 1.263409711037541, + "place-hymnl": 1.663703035522549, + "place-coecl": 2.193049017487871, + "place-armnl": 2.585276403926072, + "place-boyls": 2.908923070518174, + "place-pktrm": 3.200065301762706, + "place-gover": 3.4840847481955377, + "place-haecl": 3.7379027299321956, + "place-north": 3.972535879836754, + "place-spmnl": 4.379369837026764, + "place-lech": 4.946158130269228, + "place-esomr": 5.75494201364034, + "place-gilmn": 6.524354136219478, + "place-mgngl": 7.204556639226915, + "place-balsq": 7.679972419818262, + "place-mdftf": 8.25394609418496, + "place-prmnl": 14.702446956648174, + "place-hsmnl": 16.831574939229895, + "place-symcl": 14.965098190318539, + "place-bckhl": 16.743210892139903, + "place-nuniv": 15.241612501118468, + "place-rvrwy": 16.564480267115048, + "place-mfa": 15.561002855200627, + "place-mispk": 16.413419170792572, + "place-lngmd": 15.829412981935496, + "place-fenwd": 16.194418912923524, + "place-brmnl": 16.04086259121729, + "place-river": 24.92189350319137, + "place-fenwy": 34.06092706096398, + "place-woodl": 25.490429107139313, + "place-longw": 33.68826296677404, + "place-waban": 26.298420567013647, + "place-bvmnl": 32.93980340871809, + "place-eliot": 27.15935710885927, + "place-brkhl": 32.42492436483437, + "place-newtn": 27.918070824509872, + "place-bcnfd": 31.639310874492963, + "place-newto": 28.737560891269993, + "place-rsmnl": 31.23186416390778, + "place-chhil": 30.207538444235674, + "place-unsqu": 5.990469499995028, + "place-bndhl": 7.530773789817466, + "place-smary": 6.354007574514833, + "place-clmnl": 8.60940890387636, + "place-hwsst": 6.5731617255229455, + "place-engav": 8.4272339953422, + "place-kntst": 6.759554588080609, + "place-denrd": 8.2649204104281, + "place-stpul": 6.919601494770539, + "place-tapst": 8.034488883047999, + "place-cool": 7.147183805326891, + "place-bcnwa": 7.8381669139724, + "place-sumav": 7.367086304730375, + "place-fbkst": 7.657927279065259 + }, + "place-brico": { + "place-harvd": 0.356623917571383, + "place-grigg": 0.551133882501193, + "place-alsgr": 0.739588859808717, + "place-wrnst": 0.896004028349439, + "place-wascm": 1.189261613427583, + "place-sthld": 1.469289448992882, + "place-chswk": 1.7141057604837748, + "place-chill": 1.889608678442894, + "place-sougr": 2.1708561749383595, + "place-lake": 2.6784409771931923, + "place-babck": 0.291688190343395, + "place-amory": 0.563329529920266, + "place-bucen": 0.9479785813350039, + "place-buest": 1.099096119288356, + "place-bland": 1.315202360713434, + "place-kencl": 1.555097901380936, + "place-hymnl": 1.955391225865944, + "place-coecl": 2.484737207831266, + "place-armnl": 2.876964594269467, + "place-boyls": 3.200611260861569, + "place-pktrm": 3.491753492106101, + "place-gover": 3.7757729385389327, + "place-haecl": 4.029590920275591, + "place-north": 4.264224070180148, + "place-spmnl": 4.671058027370158, + "place-lech": 5.237846320612622, + "place-esomr": 6.046630203983734, + "place-gilmn": 6.816042326562872, + "place-mgngl": 7.496244829570309, + "place-balsq": 7.971660610161656, + "place-mdftf": 8.545634284528354, + "place-prmnl": 14.994135146991571, + "place-hsmnl": 17.123263129573292, + "place-symcl": 15.256786380661936, + "place-bckhl": 17.0348990824833, + "place-nuniv": 15.533300691461863, + "place-rvrwy": 16.856168457458445, + "place-mfa": 15.852691045544024, + "place-mispk": 16.705107361135966, + "place-lngmd": 16.12110117227889, + "place-fenwd": 16.48610710326692, + "place-brmnl": 16.332550781560684, + "place-river": 25.213581693534767, + "place-fenwy": 34.35261525130737, + "place-woodl": 25.78211729748271, + "place-longw": 33.97995115711744, + "place-waban": 26.590108757357044, + "place-bvmnl": 33.231491599061485, + "place-eliot": 27.45104529920267, + "place-brkhl": 32.71661255517777, + "place-newtn": 28.20975901485327, + "place-bcnfd": 31.93099906483636, + "place-newto": 29.029249081613386, + "place-rsmnl": 31.52355235425118, + "place-chhil": 30.499226634579067, + "place-unsqu": 6.282157690338422, + "place-bndhl": 7.822461980160861, + "place-smary": 6.645695764858228, + "place-clmnl": 8.901097094219757, + "place-hwsst": 6.8648499158663405, + "place-engav": 8.718922185685596, + "place-kntst": 7.051242778424004, + "place-denrd": 8.556608600771494, + "place-stpul": 7.211289685113934, + "place-tapst": 8.326177073391394, + "place-cool": 7.438871995670286, + "place-bcnwa": 8.129855104315794, + "place-sumav": 7.65877449507377, + "place-fbkst": 7.949615469408654 + }, + "place-harvd": { + "place-grigg": 0.19450996492981, + "place-alsgr": 0.382964942237334, + "place-wrnst": 0.539380110778056, + "place-wascm": 0.8326376958562, + "place-sthld": 1.112665531421499, + "place-chswk": 1.3574818429123918, + "place-chill": 1.532984760871511, + "place-sougr": 1.8142322573669767, + "place-lake": 2.321817059621809, + "place-brico": 0.356623917571383, + "place-babck": 0.648312107914778, + "place-amory": 0.919953447491649, + "place-bucen": 1.304602498906387, + "place-buest": 1.455720036859739, + "place-bland": 1.671826278284817, + "place-kencl": 1.911721818952319, + "place-hymnl": 2.312015143437327, + "place-coecl": 2.841361125402649, + "place-armnl": 3.2335885118408503, + "place-boyls": 3.5572351784329523, + "place-pktrm": 3.848377409677484, + "place-gover": 4.132396856110316, + "place-haecl": 4.386214837846974, + "place-north": 4.620847987751532, + "place-spmnl": 5.027681944941541, + "place-lech": 5.594470238184005, + "place-esomr": 6.4032541215551175, + "place-gilmn": 7.1726662441342555, + "place-mgngl": 7.8528687471416925, + "place-balsq": 8.32828452773304, + "place-mdftf": 8.902258202099738, + "place-prmnl": 15.350759064562954, + "place-hsmnl": 17.479887047144675, + "place-symcl": 15.613410298233319, + "place-bckhl": 17.391523000054683, + "place-nuniv": 15.889924609033246, + "place-rvrwy": 17.212792375029828, + "place-mfa": 16.209314963115407, + "place-mispk": 17.06173127870735, + "place-lngmd": 16.477725089850274, + "place-fenwd": 16.842731020838304, + "place-brmnl": 16.689174699132067, + "place-river": 25.57020561110615, + "place-fenwy": 34.70923916887875, + "place-woodl": 26.138741215054093, + "place-longw": 34.336575074688824, + "place-waban": 26.946732674928427, + "place-bvmnl": 33.58811551663287, + "place-eliot": 27.807669216774052, + "place-brkhl": 33.07323647274915, + "place-newtn": 28.566382932424652, + "place-bcnfd": 32.28762298240774, + "place-newto": 29.38587299918477, + "place-rsmnl": 31.880176271822563, + "place-chhil": 30.85585055215045, + "place-unsqu": 6.638781607909805, + "place-bndhl": 8.179085897732243, + "place-smary": 7.0023196824296114, + "place-clmnl": 9.25772101179114, + "place-hwsst": 7.221473833437724, + "place-engav": 9.075546103256979, + "place-kntst": 7.407866695995387, + "place-denrd": 8.913232518342877, + "place-stpul": 7.5679136026853175, + "place-tapst": 8.682800990962777, + "place-cool": 7.795495913241669, + "place-bcnwa": 8.486479021887178, + "place-sumav": 8.015398412645153, + "place-fbkst": 8.306239386980037 + }, + "place-grigg": { + "place-alsgr": 0.188454977307524, + "place-wrnst": 0.344870145848246, + "place-wascm": 0.63812773092639, + "place-sthld": 0.9181555664916891, + "place-chswk": 1.162971877982582, + "place-chill": 1.338474795941701, + "place-sougr": 1.6197222924371668, + "place-lake": 2.127307094691999, + "place-harvd": 0.19450996492981, + "place-brico": 0.551133882501193, + "place-babck": 0.842822072844588, + "place-amory": 1.114463412421459, + "place-bucen": 1.499112463836197, + "place-buest": 1.650230001789549, + "place-bland": 1.866336243214627, + "place-kencl": 2.106231783882129, + "place-hymnl": 2.5065251083671374, + "place-coecl": 3.0358710903324595, + "place-armnl": 3.4280984767706606, + "place-boyls": 3.7517451433627627, + "place-pktrm": 4.042887374607295, + "place-gover": 4.326906821040127, + "place-haecl": 4.580724802776785, + "place-north": 4.815357952681342, + "place-spmnl": 5.222191909871352, + "place-lech": 5.788980203113816, + "place-esomr": 6.597764086484928, + "place-gilmn": 7.367176209064066, + "place-mgngl": 8.047378712071502, + "place-balsq": 8.522794492662848, + "place-mdftf": 9.096768167029547, + "place-prmnl": 15.545269029492761, + "place-hsmnl": 17.674397012074486, + "place-symcl": 15.807920263163126, + "place-bckhl": 17.58603296498449, + "place-nuniv": 16.084434573963055, + "place-rvrwy": 17.407302339959635, + "place-mfa": 16.403824928045214, + "place-mispk": 17.256241243637156, + "place-lngmd": 16.67223505478008, + "place-fenwd": 17.037240985768115, + "place-brmnl": 16.883684664061875, + "place-river": 25.76471557603596, + "place-fenwy": 34.90374913380856, + "place-woodl": 26.333251179983904, + "place-longw": 34.53108503961863, + "place-waban": 27.141242639858238, + "place-bvmnl": 33.782625481562675, + "place-eliot": 28.00217918170386, + "place-brkhl": 33.26774643767896, + "place-newtn": 28.760892897354463, + "place-bcnfd": 32.482132947337554, + "place-newto": 29.580382964114584, + "place-rsmnl": 32.07468623675237, + "place-chhil": 31.050360517080264, + "place-unsqu": 6.833291572839616, + "place-bndhl": 8.373595862662054, + "place-smary": 7.196829647359422, + "place-clmnl": 9.452230976720951, + "place-hwsst": 7.4159837983675345, + "place-engav": 9.27005606818679, + "place-kntst": 7.602376660925198, + "place-denrd": 9.107742483272688, + "place-stpul": 7.762423567615128, + "place-tapst": 8.877310955892588, + "place-cool": 7.99000587817148, + "place-bcnwa": 8.680988986816988, + "place-sumav": 8.209908377574964, + "place-fbkst": 8.500749351909848 + }, + "place-alsgr": { + "place-wrnst": 0.156415168540722, + "place-wascm": 0.44967275361886594, + "place-sthld": 0.729700589184165, + "place-chswk": 0.974516900675058, + "place-chill": 1.150019818634177, + "place-sougr": 1.431267315129643, + "place-lake": 1.938852117384475, + "place-grigg": 0.188454977307524, + "place-harvd": 0.382964942237334, + "place-brico": 0.739588859808717, + "place-babck": 1.031277050152112, + "place-amory": 1.3029183897289829, + "place-bucen": 1.687567441143721, + "place-buest": 1.838684979097073, + "place-bland": 2.054791220522151, + "place-kencl": 2.294686761189653, + "place-hymnl": 2.6949800856746613, + "place-coecl": 3.2243260676399834, + "place-armnl": 3.6165534540781845, + "place-boyls": 3.9402001206702866, + "place-pktrm": 4.231342351914819, + "place-gover": 4.515361798347651, + "place-haecl": 4.7691797800843085, + "place-north": 5.003812929988866, + "place-spmnl": 5.410646887178876, + "place-lech": 5.97743518042134, + "place-esomr": 6.786219063792452, + "place-gilmn": 7.55563118637159, + "place-mgngl": 8.235833689379028, + "place-balsq": 8.711249469970374, + "place-mdftf": 9.285223144337072, + "place-prmnl": 15.733724006800287, + "place-hsmnl": 17.86285198938201, + "place-symcl": 15.996375240470652, + "place-bckhl": 17.774487942292016, + "place-nuniv": 16.27288955127058, + "place-rvrwy": 17.59575731726716, + "place-mfa": 16.59227990535274, + "place-mispk": 17.444696220944685, + "place-lngmd": 16.86069003208761, + "place-fenwd": 17.225695963075637, + "place-brmnl": 17.072139641369404, + "place-river": 25.953170553343483, + "place-fenwy": 35.09220411111609, + "place-woodl": 26.521706157291426, + "place-longw": 34.71954001692615, + "place-waban": 27.32969761716576, + "place-bvmnl": 33.971080458870205, + "place-eliot": 28.19063415901138, + "place-brkhl": 33.45620141498648, + "place-newtn": 28.949347874661985, + "place-bcnfd": 32.670587924645076, + "place-newto": 29.768837941422106, + "place-rsmnl": 32.26314121405989, + "place-chhil": 31.238815494387786, + "place-unsqu": 7.02174655014714, + "place-bndhl": 8.56205083996958, + "place-smary": 7.385284624666946, + "place-clmnl": 9.640685954028474, + "place-hwsst": 7.604438775675058, + "place-engav": 9.458511045494314, + "place-kntst": 7.790831638232722, + "place-denrd": 9.296197460580213, + "place-stpul": 7.950878544922652, + "place-tapst": 9.065765933200112, + "place-cool": 8.178460855479003, + "place-bcnwa": 8.869443964124514, + "place-sumav": 8.398363354882488, + "place-fbkst": 8.689204329217372 + }, + "place-wrnst": { + "place-wascm": 0.293257585078144, + "place-sthld": 0.573285420643443, + "place-chswk": 0.818101732134336, + "place-chill": 0.993604650093455, + "place-sougr": 1.2748521465889209, + "place-lake": 1.782436948843753, + "place-alsgr": 0.156415168540722, + "place-grigg": 0.344870145848246, + "place-harvd": 0.539380110778056, + "place-brico": 0.896004028349439, + "place-babck": 1.187692218692834, + "place-amory": 1.4593335582697051, + "place-bucen": 1.8439826096844432, + "place-buest": 1.9951001476377952, + "place-bland": 2.2112063890628733, + "place-kencl": 2.4511019297303753, + "place-hymnl": 2.851395254215383, + "place-coecl": 3.380741236180705, + "place-armnl": 3.7729686226189063, + "place-boyls": 4.096615289211008, + "place-pktrm": 4.38775752045554, + "place-gover": 4.6717769668883715, + "place-haecl": 4.9255949486250294, + "place-north": 5.160228098529587, + "place-spmnl": 5.567062055719597, + "place-lech": 6.133850348962061, + "place-esomr": 6.942634232333173, + "place-gilmn": 7.712046354912311, + "place-mgngl": 8.392248857919748, + "place-balsq": 8.867664638511094, + "place-mdftf": 9.441638312877792, + "place-prmnl": 15.890139175341009, + "place-hsmnl": 18.01926715792273, + "place-symcl": 16.152790409011374, + "place-bckhl": 17.930903110832737, + "place-nuniv": 16.4293047198113, + "place-rvrwy": 17.752172485807883, + "place-mfa": 16.74869507389346, + "place-mispk": 17.601111389485403, + "place-lngmd": 17.01710520062833, + "place-fenwd": 17.38211113161636, + "place-brmnl": 17.228554809910122, + "place-river": 26.109585721884205, + "place-fenwy": 35.24861927965681, + "place-woodl": 26.678121325832148, + "place-longw": 34.87595518546688, + "place-waban": 27.48611278570648, + "place-bvmnl": 34.12749562741092, + "place-eliot": 28.347049327552106, + "place-brkhl": 33.612616583527206, + "place-newtn": 29.105763043202707, + "place-bcnfd": 32.827003093185795, + "place-newto": 29.925253109962824, + "place-rsmnl": 32.41955638260062, + "place-chhil": 31.395230662928505, + "place-unsqu": 7.178161718687861, + "place-bndhl": 8.7184660085103, + "place-smary": 7.541699793207666, + "place-clmnl": 9.797101122569195, + "place-hwsst": 7.760853944215779, + "place-engav": 9.614926214035034, + "place-kntst": 7.9472468067734425, + "place-denrd": 9.452612629120933, + "place-stpul": 8.107293713463374, + "place-tapst": 9.222181101740833, + "place-cool": 8.334876024019724, + "place-bcnwa": 9.025859132665234, + "place-sumav": 8.55477852342321, + "place-fbkst": 8.845619497758094 + }, + "place-wascm": { + "place-sthld": 0.280027835565299, + "place-chswk": 0.524844147056192, + "place-chill": 0.700347065015311, + "place-sougr": 0.981594561510777, + "place-lake": 1.489179363765609, + "place-wrnst": 0.293257585078144, + "place-alsgr": 0.44967275361886594, + "place-grigg": 0.63812773092639, + "place-harvd": 0.8326376958562, + "place-brico": 1.189261613427583, + "place-babck": 1.480949803770978, + "place-amory": 1.752591143347849, + "place-bucen": 2.1372401947625868, + "place-buest": 2.2883577327159386, + "place-bland": 2.5044639741410166, + "place-kencl": 2.7443595148085187, + "place-hymnl": 3.144652839293527, + "place-coecl": 3.673998821258849, + "place-armnl": 4.06622620769705, + "place-boyls": 4.389872874289152, + "place-pktrm": 4.6810151055336835, + "place-gover": 4.965034551966515, + "place-haecl": 5.218852533703173, + "place-north": 5.453485683607731, + "place-spmnl": 5.860319640797741, + "place-lech": 6.427107934040205, + "place-esomr": 7.235891817411317, + "place-gilmn": 8.005303939990455, + "place-mgngl": 8.685506442997891, + "place-balsq": 9.160922223589237, + "place-mdftf": 9.734895897955935, + "place-prmnl": 16.18339676041915, + "place-hsmnl": 18.31252474300087, + "place-symcl": 16.446047994089515, + "place-bckhl": 18.22416069591088, + "place-nuniv": 16.722562304889443, + "place-rvrwy": 18.045430070886024, + "place-mfa": 17.041952658971603, + "place-mispk": 17.894368974563548, + "place-lngmd": 17.310362785706474, + "place-fenwd": 17.6753687166945, + "place-brmnl": 17.521812394988267, + "place-river": 26.402843306962346, + "place-fenwy": 35.541876864734945, + "place-woodl": 26.97137891091029, + "place-longw": 35.169212770545016, + "place-waban": 27.779370370784623, + "place-bvmnl": 34.42075321248906, + "place-eliot": 28.640306912630244, + "place-brkhl": 33.905874168605344, + "place-newtn": 29.399020628280848, + "place-bcnfd": 33.12026067826394, + "place-newto": 30.21851069504097, + "place-rsmnl": 32.712813967678755, + "place-chhil": 31.68848824800665, + "place-unsqu": 7.471419303766004, + "place-bndhl": 9.011723593588442, + "place-smary": 7.834957378285811, + "place-clmnl": 10.09035870764734, + "place-hwsst": 8.054111529293923, + "place-engav": 9.908183799113178, + "place-kntst": 8.240504391851587, + "place-denrd": 9.745870214199076, + "place-stpul": 8.400551298541517, + "place-tapst": 9.515438686818976, + "place-cool": 8.628133609097869, + "place-bcnwa": 9.319116717743377, + "place-sumav": 8.848036108501352, + "place-fbkst": 9.138877082836236 + }, + "place-sthld": { + "place-chswk": 0.244816311490893, + "place-chill": 0.420319229450012, + "place-sougr": 0.701566725945478, + "place-lake": 1.20915152820031, + "place-wascm": 0.280027835565299, + "place-wrnst": 0.573285420643443, + "place-alsgr": 0.729700589184165, + "place-grigg": 0.9181555664916891, + "place-harvd": 1.112665531421499, + "place-brico": 1.469289448992882, + "place-babck": 1.760977639336277, + "place-amory": 2.032618978913148, + "place-bucen": 2.417268030327886, + "place-buest": 2.5683855682812378, + "place-bland": 2.784491809706316, + "place-kencl": 3.024387350373818, + "place-hymnl": 3.424680674858826, + "place-coecl": 3.9540266568241482, + "place-armnl": 4.346254043262349, + "place-boyls": 4.669900709854451, + "place-pktrm": 4.961042941098983, + "place-gover": 5.2450623875318145, + "place-haecl": 5.4988803692684725, + "place-north": 5.73351351917303, + "place-spmnl": 6.14034747636304, + "place-lech": 6.707135769605504, + "place-esomr": 7.515919652976616, + "place-gilmn": 8.285331775555754, + "place-mgngl": 8.96553427856319, + "place-balsq": 9.440950059154536, + "place-mdftf": 10.014923733521234, + "place-prmnl": 16.46342459598445, + "place-hsmnl": 18.59255257856617, + "place-symcl": 16.726075829654814, + "place-bckhl": 18.504188531476178, + "place-nuniv": 17.002590140454743, + "place-rvrwy": 18.325457906451323, + "place-mfa": 17.321980494536902, + "place-mispk": 18.174396810128847, + "place-lngmd": 17.590390621271773, + "place-fenwd": 17.9553965522598, + "place-brmnl": 17.801840230553566, + "place-river": 26.682871142527645, + "place-fenwy": 35.82190470030025, + "place-woodl": 27.25140674647559, + "place-longw": 35.449240606110315, + "place-waban": 28.059398206349922, + "place-bvmnl": 34.70078104805437, + "place-eliot": 28.920334748195543, + "place-brkhl": 34.18590200417064, + "place-newtn": 29.679048463846147, + "place-bcnfd": 33.40028851382924, + "place-newto": 30.498538530606268, + "place-rsmnl": 32.992841803244055, + "place-chhil": 31.96851608357195, + "place-unsqu": 7.751447139331304, + "place-bndhl": 9.291751429153742, + "place-smary": 8.11498521385111, + "place-clmnl": 10.37038654321264, + "place-hwsst": 8.334139364859222, + "place-engav": 10.188211634678478, + "place-kntst": 8.520532227416886, + "place-denrd": 10.025898049764375, + "place-stpul": 8.680579134106816, + "place-tapst": 9.795466522384276, + "place-cool": 8.908161444663168, + "place-bcnwa": 9.599144553308676, + "place-sumav": 9.128063944066652, + "place-fbkst": 9.418904918401536 + }, + "place-chswk": { + "place-chill": 0.175502917959119, + "place-sougr": 0.456750414454585, + "place-lake": 0.964335216709417, + "place-sthld": 0.244816311490893, + "place-wascm": 0.524844147056192, + "place-wrnst": 0.818101732134336, + "place-alsgr": 0.974516900675058, + "place-grigg": 1.162971877982582, + "place-harvd": 1.3574818429123918, + "place-brico": 1.7141057604837748, + "place-babck": 2.0057939508271696, + "place-amory": 2.2774352904040405, + "place-bucen": 2.6620843418187783, + "place-buest": 2.81320187977213, + "place-bland": 3.029308121197208, + "place-kencl": 3.2692036618647102, + "place-hymnl": 3.669496986349718, + "place-coecl": 4.19884296831504, + "place-armnl": 4.59107035475324, + "place-boyls": 4.914717021345342, + "place-pktrm": 5.205859252589874, + "place-gover": 5.4898786990227055, + "place-haecl": 5.7436966807593635, + "place-north": 5.978329830663921, + "place-spmnl": 6.385163787853931, + "place-lech": 6.951952081096395, + "place-esomr": 7.760735964467507, + "place-gilmn": 8.530148087046646, + "place-mgngl": 9.210350590054084, + "place-balsq": 9.68576637064543, + "place-mdftf": 10.259740045012128, + "place-prmnl": 16.708240907475343, + "place-hsmnl": 18.837368890057064, + "place-symcl": 16.970892141145708, + "place-bckhl": 18.74900484296707, + "place-nuniv": 17.247406451945636, + "place-rvrwy": 18.570274217942217, + "place-mfa": 17.566796806027796, + "place-mispk": 18.41921312161974, + "place-lngmd": 17.835206932762667, + "place-fenwd": 18.200212863750693, + "place-brmnl": 18.04665654204446, + "place-river": 26.92768745401854, + "place-fenwy": 36.066721011791145, + "place-woodl": 27.496223057966482, + "place-longw": 35.69405691760121, + "place-waban": 28.304214517840816, + "place-bvmnl": 34.94559735954526, + "place-eliot": 29.165151059686437, + "place-brkhl": 34.43071831566154, + "place-newtn": 29.92386477533704, + "place-bcnfd": 33.64510482532013, + "place-newto": 30.743354842097162, + "place-rsmnl": 33.23765811473495, + "place-chhil": 32.21333239506284, + "place-unsqu": 7.996263450822195, + "place-bndhl": 9.536567740644633, + "place-smary": 8.359801525342, + "place-clmnl": 10.61520285470353, + "place-hwsst": 8.578955676350112, + "place-engav": 10.433027946169368, + "place-kntst": 8.765348538907777, + "place-denrd": 10.270714361255267, + "place-stpul": 8.925395445597708, + "place-tapst": 10.040282833875168, + "place-cool": 9.152977756154058, + "place-bcnwa": 9.843960864799568, + "place-sumav": 9.372880255557543, + "place-fbkst": 9.663721229892428 + }, + "place-chill": { + "place-sougr": 0.281247496495466, + "place-lake": 0.788832298750298, + "place-chswk": 0.175502917959119, + "place-sthld": 0.420319229450012, + "place-wascm": 0.700347065015311, + "place-wrnst": 0.993604650093455, + "place-alsgr": 1.150019818634177, + "place-grigg": 1.338474795941701, + "place-harvd": 1.532984760871511, + "place-brico": 1.889608678442894, + "place-babck": 2.181296868786289, + "place-amory": 2.4529382083631597, + "place-bucen": 2.8375872597778975, + "place-buest": 2.9887047977312493, + "place-bland": 3.2048110391563274, + "place-kencl": 3.4447065798238294, + "place-hymnl": 3.844999904308837, + "place-coecl": 4.374345886274159, + "place-armnl": 4.7665732727123595, + "place-boyls": 5.090219939304461, + "place-pktrm": 5.381362170548993, + "place-gover": 5.665381616981825, + "place-haecl": 5.919199598718483, + "place-north": 6.15383274862304, + "place-spmnl": 6.56066670581305, + "place-lech": 7.127454999055514, + "place-esomr": 7.936238882426626, + "place-gilmn": 8.705651005005764, + "place-mgngl": 9.385853508013202, + "place-balsq": 9.861269288604548, + "place-mdftf": 10.435242962971246, + "place-prmnl": 16.88374382543446, + "place-hsmnl": 19.012871808016186, + "place-symcl": 17.146395059104826, + "place-bckhl": 18.92450776092619, + "place-nuniv": 17.422909369904755, + "place-rvrwy": 18.745777135901335, + "place-mfa": 17.742299723986914, + "place-mispk": 18.594716039578856, + "place-lngmd": 18.01070985072178, + "place-fenwd": 18.375715781709815, + "place-brmnl": 18.222159460003574, + "place-river": 27.10319037197766, + "place-fenwy": 36.24222392975027, + "place-woodl": 27.671725975925604, + "place-longw": 35.86955983556033, + "place-waban": 28.479717435799937, + "place-bvmnl": 35.12110027750438, + "place-eliot": 29.34065397764556, + "place-brkhl": 34.60622123362066, + "place-newtn": 30.099367693296163, + "place-bcnfd": 33.820607743279254, + "place-newto": 30.918857760056284, + "place-rsmnl": 33.41316103269407, + "place-chhil": 32.388835313021964, + "place-unsqu": 8.171766368781315, + "place-bndhl": 9.712070658603754, + "place-smary": 8.53530444330112, + "place-clmnl": 10.790705772662648, + "place-hwsst": 8.754458594309233, + "place-engav": 10.608530864128488, + "place-kntst": 8.940851456866895, + "place-denrd": 10.446217279214387, + "place-stpul": 9.100898363556826, + "place-tapst": 10.215785751834286, + "place-cool": 9.328480674113177, + "place-bcnwa": 10.019463782758688, + "place-sumav": 9.548383173516662, + "place-fbkst": 9.839224147851546 + }, + "place-sougr": { + "place-lake": 0.507584802254832, + "place-chill": 0.281247496495466, + "place-chswk": 0.456750414454585, + "place-sthld": 0.701566725945478, + "place-wascm": 0.981594561510777, + "place-wrnst": 1.2748521465889209, + "place-alsgr": 1.431267315129643, + "place-grigg": 1.6197222924371668, + "place-harvd": 1.8142322573669767, + "place-brico": 2.1708561749383595, + "place-babck": 2.4625443652817545, + "place-amory": 2.7341857048586253, + "place-bucen": 3.118834756273363, + "place-buest": 3.269952294226715, + "place-bland": 3.486058535651793, + "place-kencl": 3.725954076319295, + "place-hymnl": 4.126247400804303, + "place-coecl": 4.6555933827696245, + "place-armnl": 5.047820769207825, + "place-boyls": 5.371467435799927, + "place-pktrm": 5.662609667044459, + "place-gover": 5.94662911347729, + "place-haecl": 6.200447095213948, + "place-north": 6.435080245118506, + "place-spmnl": 6.841914202308516, + "place-lech": 7.40870249555098, + "place-esomr": 8.217486378922091, + "place-gilmn": 8.98689850150123, + "place-mgngl": 9.667101004508666, + "place-balsq": 10.142516785100012, + "place-mdftf": 10.71649045946671, + "place-prmnl": 17.164991321929925, + "place-hsmnl": 19.294119304511646, + "place-symcl": 17.42764255560029, + "place-bckhl": 19.205755257421654, + "place-nuniv": 17.70415686640022, + "place-rvrwy": 19.0270246323968, + "place-mfa": 18.023547220482378, + "place-mispk": 18.875963536074323, + "place-lngmd": 18.29195734721725, + "place-fenwd": 18.656963278205275, + "place-brmnl": 18.50340695649904, + "place-river": 27.38443786847312, + "place-fenwy": 36.52347142624572, + "place-woodl": 27.952973472421064, + "place-longw": 36.15080733205579, + "place-waban": 28.760964932295398, + "place-bvmnl": 35.402347773999836, + "place-eliot": 29.62190147414102, + "place-brkhl": 34.88746873011612, + "place-newtn": 30.380615189791623, + "place-bcnfd": 34.101855239774714, + "place-newto": 31.200105256551744, + "place-rsmnl": 33.69440852918953, + "place-chhil": 32.670082809517424, + "place-unsqu": 8.45301386527678, + "place-bndhl": 9.993318155099217, + "place-smary": 8.816551939796586, + "place-clmnl": 11.071953269158115, + "place-hwsst": 9.035706090804698, + "place-engav": 10.889778360623954, + "place-kntst": 9.222098953362362, + "place-denrd": 10.727464775709851, + "place-stpul": 9.382145860052292, + "place-tapst": 10.497033248329751, + "place-cool": 9.609728170608644, + "place-bcnwa": 10.300711279254152, + "place-sumav": 9.829630670012127, + "place-fbkst": 10.120471644347012 + }, + "place-lake": { + "place-sougr": 0.507584802254832, + "place-chill": 0.788832298750298, + "place-chswk": 0.964335216709417, + "place-sthld": 1.20915152820031, + "place-wascm": 1.489179363765609, + "place-wrnst": 1.782436948843753, + "place-alsgr": 1.938852117384475, + "place-grigg": 2.127307094691999, + "place-harvd": 2.321817059621809, + "place-brico": 2.6784409771931923, + "place-babck": 2.9701291675365873, + "place-amory": 3.241770507113458, + "place-bucen": 3.626419558528196, + "place-buest": 3.777537096481548, + "place-bland": 3.993643337906626, + "place-kencl": 4.2335388785741275, + "place-hymnl": 4.633832203059136, + "place-coecl": 5.163178185024457, + "place-armnl": 5.555405571462658, + "place-boyls": 5.87905223805476, + "place-pktrm": 6.170194469299291, + "place-gover": 6.454213915732123, + "place-haecl": 6.708031897468781, + "place-north": 6.942665047373339, + "place-spmnl": 7.349499004563349, + "place-lech": 7.9162872978058125, + "place-esomr": 8.725071181176924, + "place-gilmn": 9.494483303756063, + "place-mgngl": 10.174685806763499, + "place-balsq": 10.650101587354845, + "place-mdftf": 11.224075261721543, + "place-prmnl": 17.672576124184758, + "place-hsmnl": 19.80170410676648, + "place-symcl": 17.935227357855123, + "place-bckhl": 19.713340059676487, + "place-nuniv": 18.21174166865505, + "place-rvrwy": 19.53460943465163, + "place-mfa": 18.53113202273721, + "place-mispk": 19.383548338329156, + "place-lngmd": 18.79954214947208, + "place-fenwd": 19.164548080460108, + "place-brmnl": 19.010991758753875, + "place-river": 27.892022670727954, + "place-fenwy": 37.03105622850056, + "place-woodl": 28.460558274675897, + "place-longw": 36.658392134310624, + "place-waban": 29.26854973455023, + "place-bvmnl": 35.909932576254675, + "place-eliot": 30.129486276395852, + "place-brkhl": 35.39505353237095, + "place-newtn": 30.888199992046456, + "place-bcnfd": 34.60944004202955, + "place-newto": 31.707690058806577, + "place-rsmnl": 34.20199333144436, + "place-chhil": 33.17766761177226, + "place-unsqu": 8.960598667531613, + "place-bndhl": 10.50090295735405, + "place-smary": 9.324136742051419, + "place-clmnl": 11.579538071412948, + "place-hwsst": 9.543290893059531, + "place-engav": 11.397363162878786, + "place-kntst": 9.729683755617195, + "place-denrd": 11.235049577964684, + "place-stpul": 9.889730662307125, + "place-tapst": 11.004618050584584, + "place-cool": 10.117312972863477, + "place-bcnwa": 10.808296081508985, + "place-sumav": 10.33721547226696, + "place-fbkst": 10.628056446601844 + }, + "place-smary": { + "place-hwsst": 0.219154151008113, + "place-kntst": 0.405547013565776, + "place-stpul": 0.565593920255707, + "place-cool": 0.7931762308120579, + "place-sumav": 1.013078730215542, + "place-bndhl": 1.176766215302633, + "place-fbkst": 1.303919704550426, + "place-bcnwa": 1.484159339457568, + "place-tapst": 1.680481308533166, + "place-denrd": 1.910912835913266, + "place-engav": 2.073226420827368, + "place-clmnl": 2.2554013293615283, + "place-kencl": 0.649247789161298, + "place-hymnl": 1.049896923839776, + "place-mdftf": 7.640139982502188, + "place-prmnl": 14.088640844965404, + "place-coecl": 14.47624463073153, + "place-unsqu": 18.273665113238685, + "place-river": 24.3080873915086, + "place-pktrm": 15.483260915006365, + "place-hsmnl": 16.217768827547125, + "place-symcl": 14.351292078635769, + "place-bckhl": 16.12940478045713, + "place-nuniv": 14.627806389435696, + "place-rvrwy": 15.950674155432276, + "place-mfa": 14.947196743517857, + "place-mispk": 15.799613059109799, + "place-lngmd": 15.215606870252724, + "place-fenwd": 15.580612801240754, + "place-brmnl": 15.427056479534517, + "place-balsq": 8.214113656868886, + "place-lech": 11.001509412530822, + "place-esomr": 10.139144063046807, + "place-mgngl": 8.689529437460232, + "place-gilmn": 9.36973194046767, + "place-gover": 15.767280361439198, + "place-haecl": 16.021098343175854, + "place-spmnl": 16.662565450270424, + "place-north": 16.255731493080415, + "place-bland": 15.645779477849363, + "place-chhil": 19.891816362443333, + "place-fenwy": 16.04684599501412, + "place-woodl": 24.61700615095344, + "place-longw": 16.40301817759286, + "place-waban": 23.790303640489547, + "place-bvmnl": 17.141335854857633, + "place-eliot": 22.942964582463418, + "place-brkhl": 17.674238104469897, + "place-newtn": 22.170580556425485, + "place-bcnfd": 18.471750654303868, + "place-newto": 21.360967882565824, + "place-rsmnl": 18.8709080488696, + "place-boyls": 15.192118683761834, + "place-buest": 15.86188571927444, + "place-armnl": 14.868472017169731, + "place-bucen": 16.013003257227794, + "place-lake": 19.63942281575599, + "place-amory": 16.39765230864253, + "place-sougr": 19.131838013501156, + "place-babck": 16.6692936482194, + "place-chill": 18.85059051700569, + "place-brico": 16.960981838562795, + "place-chswk": 18.67508759904657, + "place-harvd": 17.317605756134178, + "place-sthld": 18.43027128755568, + "place-grigg": 17.51211572106399, + "place-wascm": 18.15024345199038, + "place-alsgr": 17.700570698371514, + "place-wrnst": 17.856985866912236 + }, + "place-hwsst": { + "place-kntst": 0.186392862557663, + "place-stpul": 0.346439769247594, + "place-cool": 0.5740220798039449, + "place-sumav": 0.793924579207429, + "place-bndhl": 0.9576120642945201, + "place-fbkst": 1.084765553542313, + "place-bcnwa": 1.265005188449455, + "place-tapst": 1.461327157525053, + "place-denrd": 1.6917586849051531, + "place-engav": 1.854072269819255, + "place-clmnl": 2.036247178353415, + "place-smary": 0.219154151008113, + "place-kencl": 0.868401940169411, + "place-hymnl": 1.269051074847889, + "place-mdftf": 7.859294133510301, + "place-prmnl": 14.307794995973516, + "place-coecl": 14.695398781739643, + "place-unsqu": 18.492819264246798, + "place-river": 24.527241542516713, + "place-pktrm": 15.702415066014478, + "place-hsmnl": 16.436922978555238, + "place-symcl": 14.570446229643881, + "place-bckhl": 16.348558931465245, + "place-nuniv": 14.84696054044381, + "place-rvrwy": 16.16982830644039, + "place-mfa": 15.16635089452597, + "place-mispk": 16.01876721011791, + "place-lngmd": 15.434761021260837, + "place-fenwd": 15.799766952248866, + "place-brmnl": 15.64621063054263, + "place-balsq": 8.433267807876998, + "place-lech": 11.220663563538935, + "place-esomr": 10.358298214054921, + "place-mgngl": 8.908683588468346, + "place-gilmn": 9.588886091475782, + "place-gover": 15.98643451244731, + "place-haecl": 16.240252494183967, + "place-spmnl": 16.881719601278537, + "place-north": 16.474885644088527, + "place-bland": 15.864933628857475, + "place-chhil": 20.110970513451445, + "place-fenwy": 16.266000146022233, + "place-woodl": 24.836160301961552, + "place-longw": 16.62217232860097, + "place-waban": 24.00945779149766, + "place-bvmnl": 17.360490005865746, + "place-eliot": 23.16211873347153, + "place-brkhl": 17.89339225547801, + "place-newtn": 22.389734707433597, + "place-bcnfd": 18.69090480531198, + "place-newto": 21.580122033573936, + "place-rsmnl": 19.090062199877714, + "place-boyls": 15.411272834769946, + "place-buest": 16.081039870282552, + "place-armnl": 15.087626168177843, + "place-bucen": 16.232157408235906, + "place-lake": 19.8585769667641, + "place-amory": 16.616806459650643, + "place-sougr": 19.350992164509268, + "place-babck": 16.888447799227514, + "place-chill": 19.0697446680138, + "place-brico": 17.180135989570907, + "place-chswk": 18.894241750054682, + "place-harvd": 17.53675990714229, + "place-sthld": 18.649425438563792, + "place-grigg": 17.7312698720721, + "place-wascm": 18.369397602998493, + "place-alsgr": 17.919724849379627, + "place-wrnst": 18.07614001792035 + }, + "place-kntst": { + "place-stpul": 0.160046906689931, + "place-cool": 0.38762921724628197, + "place-sumav": 0.607531716649766, + "place-bndhl": 0.7712192017368571, + "place-fbkst": 0.8983726909846501, + "place-bcnwa": 1.0786123258917921, + "place-tapst": 1.27493429496739, + "place-denrd": 1.5053658223474902, + "place-engav": 1.6676794072615921, + "place-clmnl": 1.849854315795752, + "place-hwsst": 0.186392862557663, + "place-smary": 0.405547013565776, + "place-kencl": 1.054794802727074, + "place-hymnl": 1.455443937405552, + "place-mdftf": 8.045686996067964, + "place-prmnl": 14.49418785853118, + "place-coecl": 14.881791644297307, + "place-unsqu": 18.679212126804465, + "place-river": 24.713634405074377, + "place-pktrm": 15.888807928572142, + "place-hsmnl": 16.623315841112902, + "place-symcl": 14.756839092201545, + "place-bckhl": 16.53495179402291, + "place-nuniv": 15.033353403001472, + "place-rvrwy": 16.356221168998054, + "place-mfa": 15.352743757083633, + "place-mispk": 16.205160072675575, + "place-lngmd": 15.6211538838185, + "place-fenwd": 15.98615981480653, + "place-brmnl": 15.832603493100294, + "place-balsq": 8.619660670434662, + "place-lech": 11.407056426096599, + "place-esomr": 10.544691076612583, + "place-mgngl": 9.095076451026008, + "place-gilmn": 9.775278954033446, + "place-gover": 16.172827375004974, + "place-haecl": 16.42664535674163, + "place-spmnl": 17.0681124638362, + "place-north": 16.66127850664619, + "place-bland": 16.05132649141514, + "place-chhil": 20.29736337600911, + "place-fenwy": 16.452393008579897, + "place-woodl": 25.022553164519216, + "place-longw": 16.808565191158635, + "place-waban": 24.195850654055327, + "place-bvmnl": 17.54688286842341, + "place-eliot": 23.348511596029198, + "place-brkhl": 18.079785118035673, + "place-newtn": 22.576127569991257, + "place-bcnfd": 18.87729766786964, + "place-newto": 21.7665148961316, + "place-rsmnl": 19.27645506243538, + "place-boyls": 15.59766569732761, + "place-buest": 16.267432732840216, + "place-armnl": 15.274019030735507, + "place-bucen": 16.418550270793567, + "place-lake": 20.044969829321765, + "place-amory": 16.803199322208307, + "place-sougr": 19.537385027066932, + "place-babck": 17.074840661785178, + "place-chill": 19.256137530571465, + "place-brico": 17.366528852128575, + "place-chswk": 19.080634612612347, + "place-harvd": 17.723152769699958, + "place-sthld": 18.835818301121456, + "place-grigg": 17.917662734629765, + "place-wascm": 18.555790465556157, + "place-alsgr": 18.10611771193729, + "place-wrnst": 18.262532880478012 + }, + "place-stpul": { + "place-cool": 0.227582310556351, + "place-sumav": 0.447484809959835, + "place-bndhl": 0.611172295046926, + "place-fbkst": 0.7383257842947191, + "place-bcnwa": 0.9185654192018611, + "place-tapst": 1.114887388277459, + "place-denrd": 1.3453189156575591, + "place-engav": 1.507632500571661, + "place-clmnl": 1.689807409105821, + "place-kntst": 0.160046906689931, + "place-hwsst": 0.346439769247594, + "place-smary": 0.565593920255707, + "place-kencl": 1.214841709417005, + "place-hymnl": 1.615490844095483, + "place-mdftf": 8.205733902757895, + "place-prmnl": 14.654234765221112, + "place-coecl": 15.041838550987238, + "place-unsqu": 18.839259033494393, + "place-river": 24.873681311764308, + "place-pktrm": 16.048854835262073, + "place-hsmnl": 16.783362747802833, + "place-symcl": 14.916885998891477, + "place-bckhl": 16.694998700712837, + "place-nuniv": 15.193400309691404, + "place-rvrwy": 16.516268075687982, + "place-mfa": 15.512790663773565, + "place-mispk": 16.365206979365507, + "place-lngmd": 15.781200790508432, + "place-fenwd": 16.146206721496462, + "place-brmnl": 15.992650399790225, + "place-balsq": 8.779707577124594, + "place-lech": 11.56710333278653, + "place-esomr": 10.704737983302515, + "place-mgngl": 9.25512335771594, + "place-gilmn": 9.935325860723378, + "place-gover": 16.332874281694906, + "place-haecl": 16.586692263431562, + "place-spmnl": 17.228159370526132, + "place-north": 16.821325413336123, + "place-bland": 16.21137339810507, + "place-chhil": 20.45741028269904, + "place-fenwy": 16.612439915269828, + "place-woodl": 25.182600071209148, + "place-longw": 16.968612097848567, + "place-waban": 24.355897560745255, + "place-bvmnl": 17.70692977511334, + "place-eliot": 23.508558502719126, + "place-brkhl": 18.239832024725604, + "place-newtn": 22.736174476681192, + "place-bcnfd": 19.037344574559576, + "place-newto": 21.92656180282153, + "place-rsmnl": 19.43650196912531, + "place-boyls": 15.757712604017541, + "place-buest": 16.427479639530148, + "place-armnl": 15.434065937425439, + "place-bucen": 16.578597177483502, + "place-lake": 20.205016736011697, + "place-amory": 16.96324622889824, + "place-sougr": 19.697431933756864, + "place-babck": 17.23488756847511, + "place-chill": 19.416184437261396, + "place-brico": 17.526575758818502, + "place-chswk": 19.240681519302278, + "place-harvd": 17.883199676389886, + "place-sthld": 18.995865207811388, + "place-grigg": 18.077709641319696, + "place-wascm": 18.71583737224609, + "place-alsgr": 18.266164618627222, + "place-wrnst": 18.422579787167944 + }, + "place-cool": { + "place-sumav": 0.219902499403484, + "place-bndhl": 0.383589984490575, + "place-fbkst": 0.510743473738368, + "place-bcnwa": 0.69098310864551, + "place-tapst": 0.887305077721108, + "place-denrd": 1.117736605101208, + "place-engav": 1.28005019001531, + "place-clmnl": 1.46222509854947, + "place-stpul": 0.227582310556351, + "place-kntst": 0.38762921724628197, + "place-hwsst": 0.5740220798039449, + "place-smary": 0.7931762308120579, + "place-kencl": 1.4424240199733558, + "place-hymnl": 1.8430731546518337, + "place-mdftf": 8.433316213314246, + "place-prmnl": 14.881817075777462, + "place-coecl": 15.269420861543589, + "place-unsqu": 19.066841344050744, + "place-river": 25.10126362232066, + "place-pktrm": 16.276437145818424, + "place-hsmnl": 17.010945058359184, + "place-symcl": 15.144468309447827, + "place-bckhl": 16.922581011269187, + "place-nuniv": 15.420982620247754, + "place-rvrwy": 16.743850386244333, + "place-mfa": 15.740372974329915, + "place-mispk": 16.592789289921857, + "place-lngmd": 16.008783101064783, + "place-fenwd": 16.373789032052812, + "place-brmnl": 16.220232710346576, + "place-balsq": 9.007289887680944, + "place-lech": 11.79468564334288, + "place-esomr": 10.932320293858865, + "place-mgngl": 9.48270566827229, + "place-gilmn": 10.162908171279728, + "place-gover": 16.560456592251256, + "place-haecl": 16.814274573987912, + "place-spmnl": 17.455741681082483, + "place-north": 17.048907723892473, + "place-bland": 16.43895570866142, + "place-chhil": 20.68499259325539, + "place-fenwy": 16.84002222582618, + "place-woodl": 25.410182381765498, + "place-longw": 17.196194408404917, + "place-waban": 24.583479871301606, + "place-bvmnl": 17.93451208566969, + "place-eliot": 23.736140813275476, + "place-brkhl": 18.467414335281955, + "place-newtn": 22.963756787237543, + "place-bcnfd": 19.264926885115926, + "place-newto": 22.154144113377882, + "place-rsmnl": 19.66408427968166, + "place-boyls": 15.985294914573892, + "place-buest": 16.6550619500865, + "place-armnl": 15.66164824798179, + "place-bucen": 16.806179488039852, + "place-lake": 20.432599046568047, + "place-amory": 17.19082853945459, + "place-sougr": 19.925014244313214, + "place-babck": 17.46246987903146, + "place-chill": 19.643766747817747, + "place-brico": 17.754158069374853, + "place-chswk": 19.46826382985863, + "place-harvd": 18.110781986946236, + "place-sthld": 19.22344751836774, + "place-grigg": 18.305291951876047, + "place-wascm": 18.94341968280244, + "place-alsgr": 18.493746929183573, + "place-wrnst": 18.650162097724294 + }, + "place-sumav": { + "place-bndhl": 0.163687485087091, + "place-fbkst": 0.290840974334884, + "place-bcnwa": 0.471080609242026, + "place-tapst": 0.667402578317624, + "place-denrd": 0.897834105697724, + "place-engav": 1.0601476906118261, + "place-clmnl": 1.242322599145986, + "place-cool": 0.219902499403484, + "place-stpul": 0.447484809959835, + "place-kntst": 0.607531716649766, + "place-hwsst": 0.793924579207429, + "place-smary": 1.013078730215542, + "place-kencl": 1.66232651937684, + "place-hymnl": 2.062975654055318, + "place-mdftf": 8.653218712717731, + "place-prmnl": 15.101719575180947, + "place-coecl": 15.489323360947074, + "place-unsqu": 19.286743843454232, + "place-river": 25.321166121724143, + "place-pktrm": 16.49633964522191, + "place-hsmnl": 17.23084755776267, + "place-symcl": 15.364370808851312, + "place-bckhl": 17.142483510672676, + "place-nuniv": 15.640885119651239, + "place-rvrwy": 16.96375288564782, + "place-mfa": 15.9602754737334, + "place-mispk": 16.812691789325342, + "place-lngmd": 16.228685600468268, + "place-fenwd": 16.593691531456297, + "place-brmnl": 16.44013520975006, + "place-balsq": 9.227192387084429, + "place-lech": 12.014588142746366, + "place-esomr": 11.15222279326235, + "place-mgngl": 9.702608167675775, + "place-gilmn": 10.382810670683213, + "place-gover": 16.78035909165474, + "place-haecl": 17.034177073391398, + "place-spmnl": 17.675644180485968, + "place-north": 17.268810223295958, + "place-bland": 16.658858208064906, + "place-chhil": 20.904895092658876, + "place-fenwy": 17.059924725229664, + "place-woodl": 25.630084881168983, + "place-longw": 17.416096907808402, + "place-waban": 24.803382370705094, + "place-bvmnl": 18.154414585073177, + "place-eliot": 23.956043312678965, + "place-brkhl": 18.68731683468544, + "place-newtn": 23.183659286641024, + "place-bcnfd": 19.484829384519408, + "place-newto": 22.374046612781367, + "place-rsmnl": 19.88398677908515, + "place-boyls": 16.205197413977377, + "place-buest": 16.874964449489983, + "place-armnl": 15.881550747385274, + "place-bucen": 17.026081987443334, + "place-lake": 20.652501545971532, + "place-amory": 17.410731038858074, + "place-sougr": 20.1449167437167, + "place-babck": 17.682372378434945, + "place-chill": 19.86366924722123, + "place-brico": 17.97406056877834, + "place-chswk": 19.688166329262113, + "place-harvd": 18.330684486349725, + "place-sthld": 19.443350017771223, + "place-grigg": 18.525194451279532, + "place-wascm": 19.163322182205924, + "place-alsgr": 18.713649428587058, + "place-wrnst": 18.87006459712778 + }, + "place-bndhl": { + "place-fbkst": 0.127153489247793, + "place-bcnwa": 0.307393124154935, + "place-tapst": 0.503715093230533, + "place-denrd": 0.7341466206106331, + "place-engav": 0.896460205524735, + "place-clmnl": 1.078635114058895, + "place-sumav": 0.163687485087091, + "place-cool": 0.383589984490575, + "place-stpul": 0.611172295046926, + "place-kntst": 0.7712192017368571, + "place-hwsst": 0.9576120642945201, + "place-smary": 1.176766215302633, + "place-kencl": 1.826014004463931, + "place-hymnl": 2.226663139142409, + "place-mdftf": 8.81690619780482, + "place-prmnl": 15.265407060268036, + "place-coecl": 15.653010846034162, + "place-unsqu": 19.45043132854132, + "place-river": 25.484853606811235, + "place-pktrm": 16.660027130308997, + "place-hsmnl": 17.39453504284976, + "place-symcl": 15.5280582939384, + "place-bckhl": 17.306170995759764, + "place-nuniv": 15.804572604738329, + "place-rvrwy": 17.12744037073491, + "place-mfa": 16.12396295882049, + "place-mispk": 16.97637927441243, + "place-lngmd": 16.392373085555356, + "place-fenwd": 16.75737901654339, + "place-brmnl": 16.60382269483715, + "place-balsq": 9.390879872171519, + "place-lech": 12.178275627833454, + "place-esomr": 11.315910278349442, + "place-mgngl": 9.866295652762865, + "place-gilmn": 10.546498155770303, + "place-gover": 16.94404657674183, + "place-haecl": 17.197864558478486, + "place-spmnl": 17.839331665573056, + "place-north": 17.432497708383046, + "place-bland": 16.822545693151994, + "place-chhil": 21.068582577745964, + "place-fenwy": 17.22361221031675, + "place-woodl": 25.79377236625607, + "place-longw": 17.57978439289549, + "place-waban": 24.967069855792182, + "place-bvmnl": 18.318102070160265, + "place-eliot": 24.119730797766053, + "place-brkhl": 18.851004319772528, + "place-newtn": 23.347346771728112, + "place-bcnfd": 19.648516869606496, + "place-newto": 22.537734097868455, + "place-rsmnl": 20.047674264172237, + "place-boyls": 16.368884899064465, + "place-buest": 17.03865193457707, + "place-armnl": 16.045238232472364, + "place-bucen": 17.189769472530422, + "place-lake": 20.81618903105862, + "place-amory": 17.574418523945162, + "place-sougr": 20.308604228803787, + "place-babck": 17.846059863522033, + "place-chill": 20.02735673230832, + "place-brico": 18.13774805386543, + "place-chswk": 19.8518538143492, + "place-harvd": 18.494371971436813, + "place-sthld": 19.60703750285831, + "place-grigg": 18.68888193636662, + "place-wascm": 19.327009667293012, + "place-alsgr": 18.877336913674146, + "place-wrnst": 19.033752082214868 + }, + "place-fbkst": { + "place-bcnwa": 0.180239634907142, + "place-tapst": 0.37656160398274, + "place-denrd": 0.60699313136284, + "place-engav": 0.769306716276942, + "place-clmnl": 0.951481624811102, + "place-bndhl": 0.127153489247793, + "place-sumav": 0.290840974334884, + "place-cool": 0.510743473738368, + "place-stpul": 0.7383257842947191, + "place-kntst": 0.8983726909846501, + "place-hwsst": 1.084765553542313, + "place-smary": 1.303919704550426, + "place-kencl": 1.953167493711724, + "place-hymnl": 2.3538166283902022, + "place-mdftf": 8.944059687052615, + "place-prmnl": 15.392560549515832, + "place-coecl": 15.780164335281958, + "place-unsqu": 19.577584817789116, + "place-river": 25.612007096059028, + "place-pktrm": 16.787180619556793, + "place-hsmnl": 17.521688532097553, + "place-symcl": 15.655211783186196, + "place-bckhl": 17.43332448500756, + "place-nuniv": 15.931726093986123, + "place-rvrwy": 17.254593859982705, + "place-mfa": 16.251116448068284, + "place-mispk": 17.103532763660226, + "place-lngmd": 16.51952657480315, + "place-fenwd": 16.88453250579118, + "place-brmnl": 16.730976184084945, + "place-balsq": 9.518033361419313, + "place-lech": 12.30542911708125, + "place-esomr": 11.443063767597234, + "place-mgngl": 9.99344914201066, + "place-gilmn": 10.673651645018097, + "place-gover": 17.071200065989625, + "place-haecl": 17.32501804772628, + "place-spmnl": 17.96648515482085, + "place-north": 17.559651197630842, + "place-bland": 16.94969918239979, + "place-chhil": 21.19573606699376, + "place-fenwy": 17.350765699564548, + "place-woodl": 25.920925855503867, + "place-longw": 17.706937882143286, + "place-waban": 25.09422334503998, + "place-bvmnl": 18.44525555940806, + "place-eliot": 24.24688428701385, + "place-brkhl": 18.978157809020324, + "place-newtn": 23.47450026097591, + "place-bcnfd": 19.775670358854292, + "place-newto": 22.66488758711625, + "place-rsmnl": 20.174827753420033, + "place-boyls": 16.49603838831226, + "place-buest": 17.165805423824867, + "place-armnl": 16.17239172172016, + "place-bucen": 17.316922961778218, + "place-lake": 20.943342520306416, + "place-amory": 17.70157201319296, + "place-sougr": 20.435757718051583, + "place-babck": 17.97321335276983, + "place-chill": 20.154510221556116, + "place-brico": 18.264901543113226, + "place-chswk": 19.979007303596998, + "place-harvd": 18.62152546068461, + "place-sthld": 19.734190992106107, + "place-grigg": 18.816035425614416, + "place-wascm": 19.454163156540808, + "place-alsgr": 19.00449040292194, + "place-wrnst": 19.160905571462663 + }, + "place-bcnwa": { + "place-tapst": 0.196321969075598, + "place-denrd": 0.42675349645569804, + "place-engav": 0.5890670813698, + "place-clmnl": 0.77124198990396, + "place-fbkst": 0.180239634907142, + "place-bndhl": 0.307393124154935, + "place-sumav": 0.471080609242026, + "place-cool": 0.69098310864551, + "place-stpul": 0.9185654192018611, + "place-kntst": 1.0786123258917921, + "place-hwsst": 1.265005188449455, + "place-smary": 1.484159339457568, + "place-kencl": 2.133407128618866, + "place-hymnl": 2.534056263297344, + "place-mdftf": 9.124299321959755, + "place-prmnl": 15.57280018442297, + "place-coecl": 15.960403970189097, + "place-unsqu": 19.757824452696255, + "place-river": 25.79224673096617, + "place-pktrm": 16.96742025446393, + "place-hsmnl": 17.701928167004695, + "place-symcl": 15.835451418093335, + "place-bckhl": 17.6135641199147, + "place-nuniv": 16.111965728893264, + "place-rvrwy": 17.434833494889844, + "place-mfa": 16.431356082975423, + "place-mispk": 17.283772398567365, + "place-lngmd": 16.69976620971029, + "place-fenwd": 17.064772140698324, + "place-brmnl": 16.911215818992083, + "place-balsq": 9.698272996326454, + "place-lech": 12.485668751988388, + "place-esomr": 11.623303402504376, + "place-mgngl": 10.1736887769178, + "place-gilmn": 10.853891279925238, + "place-gover": 17.251439700896764, + "place-haecl": 17.50525768263342, + "place-spmnl": 18.14672478972799, + "place-north": 17.73989083253798, + "place-bland": 17.12993881730693, + "place-chhil": 21.3759757019009, + "place-fenwy": 17.531005334471686, + "place-woodl": 26.101165490411006, + "place-longw": 17.887177517050425, + "place-waban": 25.274462979947117, + "place-bvmnl": 18.6254951943152, + "place-eliot": 24.427123921920987, + "place-brkhl": 19.158397443927463, + "place-newtn": 23.654739895883047, + "place-bcnfd": 19.95590999376143, + "place-newto": 22.84512722202339, + "place-rsmnl": 20.35506738832717, + "place-boyls": 16.6762780232194, + "place-buest": 17.346045058732006, + "place-armnl": 16.3526313566273, + "place-bucen": 17.497162596685357, + "place-lake": 21.123582155213555, + "place-amory": 17.881811648100097, + "place-sougr": 20.615997352958722, + "place-babck": 18.153452987676967, + "place-chill": 20.334749856463255, + "place-brico": 18.445141178020364, + "place-chswk": 20.159246938504136, + "place-harvd": 18.801765095591747, + "place-sthld": 19.914430627013246, + "place-grigg": 18.996275060521555, + "place-wascm": 19.634402791447947, + "place-alsgr": 19.18473003782908, + "place-wrnst": 19.341145206369802 + }, + "place-tapst": { + "place-denrd": 0.2304315273801, + "place-engav": 0.392745112294202, + "place-clmnl": 0.574920020828362, + "place-bcnwa": 0.196321969075598, + "place-fbkst": 0.37656160398274, + "place-bndhl": 0.503715093230533, + "place-sumav": 0.667402578317624, + "place-cool": 0.887305077721108, + "place-stpul": 1.114887388277459, + "place-kntst": 1.27493429496739, + "place-hwsst": 1.461327157525053, + "place-smary": 1.680481308533166, + "place-kencl": 2.329729097694464, + "place-hymnl": 2.730378232372942, + "place-mdftf": 9.320621291035355, + "place-prmnl": 15.769122153498571, + "place-coecl": 16.156725939264696, + "place-unsqu": 19.954146421771853, + "place-river": 25.988568700041768, + "place-pktrm": 17.16374222353953, + "place-hsmnl": 17.898250136080293, + "place-symcl": 16.031773387168936, + "place-bckhl": 17.809886088990297, + "place-nuniv": 16.308287697968865, + "place-rvrwy": 17.63115546396544, + "place-mfa": 16.627678052051024, + "place-mispk": 17.480094367642966, + "place-lngmd": 16.89608817878589, + "place-fenwd": 17.26109410977392, + "place-brmnl": 17.107537788067685, + "place-balsq": 9.894594965402053, + "place-lech": 12.68199072106399, + "place-esomr": 11.819625371579974, + "place-mgngl": 10.3700107459934, + "place-gilmn": 11.050213249000837, + "place-gover": 17.447761669972362, + "place-haecl": 17.70157965170902, + "place-spmnl": 18.343046758803588, + "place-north": 17.93621280161358, + "place-bland": 17.326260786382527, + "place-chhil": 21.5722976709765, + "place-fenwy": 17.727327303547284, + "place-woodl": 26.297487459486604, + "place-longw": 18.083499486126026, + "place-waban": 25.470784949022715, + "place-bvmnl": 18.821817163390797, + "place-eliot": 24.623445890996585, + "place-brkhl": 19.354719413003064, + "place-newtn": 23.85106186495865, + "place-bcnfd": 20.152231962837032, + "place-newto": 23.04144919109899, + "place-rsmnl": 20.55138935740277, + "place-boyls": 16.872599992294997, + "place-buest": 17.542367027807607, + "place-armnl": 16.548953325702897, + "place-bucen": 17.693484565760958, + "place-lake": 21.319904124289152, + "place-amory": 18.078133617175695, + "place-sougr": 20.81231932203432, + "place-babck": 18.34977495675257, + "place-chill": 20.531071825538856, + "place-brico": 18.641463147095962, + "place-chswk": 20.355568907579737, + "place-harvd": 18.998087064667345, + "place-sthld": 20.110752596088844, + "place-grigg": 19.192597029597156, + "place-wascm": 19.830724760523545, + "place-alsgr": 19.381052006904678, + "place-wrnst": 19.5374671754454 + }, + "place-denrd": { + "place-engav": 0.162313584914102, + "place-clmnl": 0.344488493448262, + "place-tapst": 0.2304315273801, + "place-bcnwa": 0.42675349645569804, + "place-fbkst": 0.60699313136284, + "place-bndhl": 0.7341466206106331, + "place-sumav": 0.897834105697724, + "place-cool": 1.117736605101208, + "place-stpul": 1.3453189156575591, + "place-kntst": 1.5053658223474902, + "place-hwsst": 1.6917586849051531, + "place-smary": 1.910912835913266, + "place-kencl": 2.5601606250745643, + "place-hymnl": 2.9608097597530425, + "place-mdftf": 9.551052818415455, + "place-prmnl": 15.99955368087867, + "place-coecl": 16.387157466644794, + "place-unsqu": 20.18457794915195, + "place-river": 26.219000227421866, + "place-pktrm": 17.394173750919627, + "place-hsmnl": 18.12868166346039, + "place-symcl": 16.262204914549034, + "place-bckhl": 18.040317616370398, + "place-nuniv": 16.538719225348963, + "place-rvrwy": 17.861586991345543, + "place-mfa": 16.858109579431122, + "place-mispk": 17.710525895023068, + "place-lngmd": 17.126519706165993, + "place-fenwd": 17.49152563715402, + "place-brmnl": 17.337969315447786, + "place-balsq": 10.125026492782153, + "place-lech": 12.912422248444088, + "place-esomr": 12.050056898960076, + "place-mgngl": 10.600442273373499, + "place-gilmn": 11.280644776380937, + "place-gover": 17.67819319735246, + "place-haecl": 17.93201117908912, + "place-spmnl": 18.573478286183686, + "place-north": 18.166644328993677, + "place-bland": 17.556692313762625, + "place-chhil": 21.802729198356598, + "place-fenwy": 17.957758830927382, + "place-woodl": 26.527918986866702, + "place-longw": 18.313931013506124, + "place-waban": 25.701216476402813, + "place-bvmnl": 19.052248690770895, + "place-eliot": 24.853877418376683, + "place-brkhl": 19.585150940383162, + "place-newtn": 24.081493392338746, + "place-bcnfd": 20.38266349021713, + "place-newto": 23.27188071847909, + "place-rsmnl": 20.781820884782867, + "place-boyls": 17.103031519675095, + "place-buest": 17.772798555187705, + "place-armnl": 16.779384853082995, + "place-bucen": 17.923916093141056, + "place-lake": 21.55033565166925, + "place-amory": 18.308565144555793, + "place-sougr": 21.042750849414418, + "place-babck": 18.580206484132667, + "place-chill": 20.761503352918954, + "place-brico": 18.87189467447606, + "place-chswk": 20.586000434959836, + "place-harvd": 19.228518592047443, + "place-sthld": 20.341184123468942, + "place-grigg": 19.423028556977254, + "place-wascm": 20.061156287903643, + "place-alsgr": 19.611483534284776, + "place-wrnst": 19.767898702825498 + }, + "place-engav": { + "place-clmnl": 0.18217490853416, + "place-denrd": 0.162313584914102, + "place-tapst": 0.392745112294202, + "place-bcnwa": 0.5890670813698, + "place-fbkst": 0.769306716276942, + "place-bndhl": 0.896460205524735, + "place-sumav": 1.0601476906118261, + "place-cool": 1.28005019001531, + "place-stpul": 1.507632500571661, + "place-kntst": 1.6676794072615921, + "place-hwsst": 1.854072269819255, + "place-smary": 2.073226420827368, + "place-kencl": 2.722474209988666, + "place-hymnl": 3.1231233446671443, + "place-mdftf": 9.713366403329555, + "place-prmnl": 16.16186726579277, + "place-coecl": 16.549471051558896, + "place-unsqu": 20.346891534066053, + "place-river": 26.381313812335968, + "place-pktrm": 17.55648733583373, + "place-hsmnl": 18.290995248374493, + "place-symcl": 16.424518499463137, + "place-bckhl": 18.202631201284497, + "place-nuniv": 16.701032810263065, + "place-rvrwy": 18.023900576259642, + "place-mfa": 17.020423164345225, + "place-mispk": 17.872839479937166, + "place-lngmd": 17.288833291080092, + "place-fenwd": 17.65383922206812, + "place-brmnl": 17.500282900361885, + "place-balsq": 10.287340077696253, + "place-lech": 13.07473583335819, + "place-esomr": 12.212370483874174, + "place-mgngl": 10.7627558582876, + "place-gilmn": 11.442958361295037, + "place-gover": 17.840506782266562, + "place-haecl": 18.094324764003222, + "place-spmnl": 18.73579187109779, + "place-north": 18.32895791390778, + "place-bland": 17.719005898676727, + "place-chhil": 21.9650427832707, + "place-fenwy": 18.120072415841484, + "place-woodl": 26.690232571780804, + "place-longw": 18.476244598420227, + "place-waban": 25.863530061316915, + "place-bvmnl": 19.214562275684997, + "place-eliot": 25.016191003290785, + "place-brkhl": 19.747464525297264, + "place-newtn": 24.24380697725285, + "place-bcnfd": 20.544977075131232, + "place-newto": 23.43419430339319, + "place-rsmnl": 20.94413446969697, + "place-boyls": 17.265345104589198, + "place-buest": 17.935112140101808, + "place-armnl": 16.941698437997097, + "place-bucen": 18.086229678055158, + "place-lake": 21.712649236583353, + "place-amory": 18.470878729469895, + "place-sougr": 21.20506443432852, + "place-babck": 18.74252006904677, + "place-chill": 20.923816937833056, + "place-brico": 19.034208259390162, + "place-chswk": 20.748314019873938, + "place-harvd": 19.390832176961545, + "place-sthld": 20.503497708383044, + "place-grigg": 19.585342141891356, + "place-wascm": 20.223469872817745, + "place-alsgr": 19.77379711919888, + "place-wrnst": 19.9302122877396 + }, + "place-clmnl": { + "place-engav": 0.18217490853416, + "place-denrd": 0.344488493448262, + "place-tapst": 0.574920020828362, + "place-bcnwa": 0.77124198990396, + "place-fbkst": 0.951481624811102, + "place-bndhl": 1.078635114058895, + "place-sumav": 1.242322599145986, + "place-cool": 1.46222509854947, + "place-stpul": 1.689807409105821, + "place-kntst": 1.849854315795752, + "place-hwsst": 2.036247178353415, + "place-smary": 2.2554013293615283, + "place-kencl": 2.9046491185228263, + "place-hymnl": 3.3052982532013044, + "place-mdftf": 9.895541311863717, + "place-prmnl": 16.344042174326933, + "place-coecl": 16.731645960093058, + "place-unsqu": 20.529066442600215, + "place-river": 26.56348872087013, + "place-pktrm": 17.738662244367895, + "place-hsmnl": 18.473170156908655, + "place-symcl": 16.606693407997298, + "place-bckhl": 18.384806109818662, + "place-nuniv": 16.883207718797223, + "place-rvrwy": 18.206075484793807, + "place-mfa": 17.202598072879386, + "place-mispk": 18.055014388471328, + "place-lngmd": 17.471008199614253, + "place-fenwd": 17.836014130602283, + "place-brmnl": 17.682457808896046, + "place-balsq": 10.469514986230415, + "place-lech": 13.256910741892352, + "place-esomr": 12.394545392408336, + "place-mgngl": 10.944930766821761, + "place-gilmn": 11.625133269829199, + "place-gover": 18.022681690800724, + "place-haecl": 18.276499672537383, + "place-spmnl": 18.91796677963195, + "place-north": 18.51113282244194, + "place-bland": 17.90118080721089, + "place-chhil": 22.14721769180486, + "place-fenwy": 18.302247324375646, + "place-woodl": 26.87240748031497, + "place-longw": 18.658419506954388, + "place-waban": 26.045704969851077, + "place-bvmnl": 19.396737184219162, + "place-eliot": 25.198365911824947, + "place-brkhl": 19.929639433831426, + "place-newtn": 24.42598188578701, + "place-bcnfd": 20.727151983665394, + "place-newto": 23.61636921192735, + "place-rsmnl": 21.12630937823113, + "place-boyls": 17.44752001312336, + "place-buest": 18.11728704863597, + "place-armnl": 17.12387334653126, + "place-bucen": 18.26840458658932, + "place-lake": 21.894824145117514, + "place-amory": 18.653053638004057, + "place-sougr": 21.38723934286268, + "place-babck": 18.924694977580927, + "place-chill": 21.105991846367218, + "place-brico": 19.216383167924324, + "place-chswk": 20.930488928408096, + "place-harvd": 19.573007085495707, + "place-sthld": 20.685672616917206, + "place-grigg": 19.767517050425518, + "place-wascm": 20.405644781351906, + "place-alsgr": 19.95597202773304, + "place-wrnst": 20.11238719627376 + }, + "place-unsqu": { + "place-lech": 1.0443113697258, + "place-spmnl": 1.5812372227441762, + "place-north": 1.9880711805555573, + "place-haecl": 2.222707964860218, + "place-gover": 2.476522336430249, + "place-river": 14.371703155447197, + "place-pktrm": 26.00887342295993, + "place-fbkst": 30.466735400262483, + "place-wrnst": 30.39663094341547, + "place-sumav": 30.1758944259276, + "place-alsgr": 30.24021577487475, + "place-bcnwa": 30.646975035169625, + "place-wascm": 30.68988852849361, + "place-cool": 29.955991926524113, + "place-grigg": 30.051760797567226, + "place-tapst": 30.843297004245223, + "place-sthld": 30.96991636405891, + "place-stpul": 29.728409615967763, + "place-harvd": 29.857250832637412, + "place-denrd": 31.073728531625324, + "place-chswk": 31.214732675549804, + "place-kntst": 29.56836270927783, + "place-brico": 29.50062691506603, + "place-engav": 31.236042116539423, + "place-chill": 31.390235593508923, + "place-hwsst": 29.381969846720168, + "place-babck": 29.208938724722636, + "place-clmnl": 31.418217025073584, + "place-sougr": 31.671483090004386, + "place-smary": 29.162815695712055, + "place-amory": 28.937297385145765, + "place-bndhl": 30.33958191101469, + "place-lake": 32.17906789225922, + "place-chhil": 19.657348096491496, + "place-mdftf": 31.03965056445361, + "place-prmnl": 27.403500813996278, + "place-coecl": 27.015889707234763, + "place-symcl": 27.66615466177525, + "place-hsmnl": 39.640383060427126, + "place-nuniv": 27.998813645187123, + "place-bckhl": 29.444194084670542, + "place-mfa": 28.292047526197024, + "place-rvrwy": 29.297952349528767, + "place-lngmd": 28.559835729962035, + "place-mispk": 29.092616492185652, + "place-brmnl": 28.824739205539665, + "place-fenwd": 28.89988733856778, + "place-balsq": 30.44295783250817, + "place-esomr": 28.517456913500176, + "place-mgngl": 29.96550986364632, + "place-gilmn": 29.285248913843173, + "place-boyls": 26.2543038250368, + "place-bland": 28.185424554352597, + "place-rsmnl": 20.68167381616361, + "place-kencl": 24.071780219766566, + "place-fenwy": 23.5107367132198, + "place-woodl": 14.940238759395141, + "place-longw": 23.13807261902987, + "place-waban": 15.748230219269475, + "place-bvmnl": 22.389613060973915, + "place-eliot": 16.609166761115098, + "place-brkhl": 21.874734017090198, + "place-newtn": 17.3678804767657, + "place-bcnfd": 21.08912052674879, + "place-newto": 18.187370543525816, + "place-armnl": 26.623662320796562, + "place-buest": 28.401530795777674, + "place-hymnl": 27.545235689200087, + "place-bucen": 28.552648333731028 + }, + "place-lech": { + "place-spmnl": 0.566788293242464, + "place-north": 0.9736222504324741, + "place-haecl": 1.208255400337032, + "place-gover": 1.4620733820736902, + "place-river": 13.306577978977778, + "place-unsqu": 1.0443113697258, + "place-mdftf": 3.361369430028634, + "place-balsq": 2.764676698083195, + "place-mgngl": 2.287228729221348, + "place-gilmn": 1.606967779418198, + "place-esomr": 0.839175779075201, + "place-prmnl": 9.80987029249185, + "place-coecl": 10.197474078257976, + "place-fbkst": 15.662352339835364, + "place-wrnst": 13.578215314438681, + "place-sumav": 15.37151136550048, + "place-alsgr": 13.42180014589796, + "place-bcnwa": 15.842591974742504, + "place-wascm": 13.871472899516824, + "place-cool": 15.151608866096996, + "place-grigg": 13.233345168590436, + "place-tapst": 16.038913943818102, + "place-sthld": 14.151500735082124, + "place-stpul": 14.924026555540646, + "place-harvd": 13.038835203660625, + "place-denrd": 16.269345471198204, + "place-chswk": 14.396317046573015, + "place-kntst": 14.763979648850714, + "place-brico": 12.682211286089242, + "place-engav": 16.431659056112306, + "place-chill": 14.571819964532136, + "place-hwsst": 14.57758678629305, + "place-babck": 12.390523095745847, + "place-clmnl": 16.613833964646467, + "place-sougr": 14.8530674610276, + "place-smary": 14.358432635284938, + "place-amory": 12.118881756168976, + "place-bndhl": 15.53519885058757, + "place-lake": 15.360652263282432, + "place-chhil": 15.61304580996978, + "place-kencl": 11.127113384708306, + "place-brmnl": 11.148285927060964, + "place-symcl": 10.072521526162214, + "place-hsmnl": 11.938998275073573, + "place-nuniv": 10.349035836962141, + "place-bckhl": 11.850634227983576, + "place-mfa": 10.668426191044302, + "place-rvrwy": 11.671903602958722, + "place-lngmd": 10.936836317779171, + "place-mispk": 11.520842506636246, + "place-fenwd": 11.301842248767201, + "place-fenwy": 11.768075442540564, + "place-woodl": 20.338235598479883, + "place-longw": 12.124247625119304, + "place-waban": 19.511533088015995, + "place-bvmnl": 12.862565302384079, + "place-eliot": 18.664194029989865, + "place-brkhl": 13.395467551996344, + "place-newtn": 17.891810003951928, + "place-bcnfd": 14.192980101830312, + "place-newto": 17.08219733009227, + "place-rsmnl": 14.592137496396049, + "place-pktrm": 11.20449036253281, + "place-bland": 11.367008925375808, + "place-boyls": 10.913348131288279, + "place-buest": 11.583115166800885, + "place-armnl": 10.589701464696176, + "place-bucen": 11.734232704754238, + "place-hymnl": 10.726820060223298 + }, + "place-spmnl": { + "place-north": 0.40683395719001, + "place-haecl": 0.641467107094568, + "place-gover": 0.895285088831226, + "place-river": 12.790465932703022, + "place-lech": 0.566788293242464, + "place-esomr": 1.375572176613576, + "place-gilmn": 2.144984299192714, + "place-mgngl": 2.825186802200151, + "place-balsq": 3.300602582791498, + "place-mdftf": 3.8745762571581963, + "place-prmnl": 10.323077119621413, + "place-coecl": 10.71068090538754, + "place-fbkst": 16.175559166964927, + "place-wrnst": 14.091422141568245, + "place-sumav": 15.884718192630043, + "place-alsgr": 13.935006973027523, + "place-bcnwa": 16.35579880187207, + "place-wascm": 14.384679726646388, + "place-cool": 15.664815693226558, + "place-grigg": 13.746551995719999, + "place-tapst": 16.552120770947667, + "place-sthld": 14.664707562211687, + "place-stpul": 15.437233382670208, + "place-harvd": 13.552042030790188, + "place-denrd": 16.78255229832777, + "place-chswk": 14.909523873702579, + "place-kntst": 15.277186475980276, + "place-brico": 13.195418113218805, + "place-engav": 16.944865883241867, + "place-chill": 15.085026791661697, + "place-hwsst": 15.090793613422614, + "place-babck": 12.90372992287541, + "place-clmnl": 17.12704079177603, + "place-sougr": 15.366274288157165, + "place-smary": 14.871639462414501, + "place-amory": 12.63208858329854, + "place-bndhl": 16.048405677717135, + "place-lake": 15.873859090411997, + "place-unsqu": 14.508101387894696, + "place-bucen": 12.247439531883801, + "place-chhil": 16.12625263709934, + "place-kencl": 11.640320211837869, + "place-brmnl": 11.661492754190526, + "place-symcl": 10.585728353291778, + "place-hsmnl": 12.452205102203134, + "place-nuniv": 10.862242664091704, + "place-bckhl": 12.36384105511314, + "place-mfa": 11.181633018173866, + "place-rvrwy": 12.185110430088285, + "place-lngmd": 11.450043144908733, + "place-mispk": 12.034049333765807, + "place-fenwd": 11.815049075896763, + "place-fenwy": 12.281282269670129, + "place-woodl": 20.85144242560945, + "place-longw": 12.637454452248868, + "place-waban": 20.02473991514556, + "place-bvmnl": 13.375772129513642, + "place-eliot": 19.17740085711943, + "place-brkhl": 13.908674379125905, + "place-newtn": 18.40501683108149, + "place-bcnfd": 14.706186928959875, + "place-newto": 17.595404157221832, + "place-rsmnl": 15.105344323525612, + "place-pktrm": 11.717697189662374, + "place-bland": 11.880215752505372, + "place-boyls": 11.426554958417842, + "place-buest": 12.096321993930449, + "place-armnl": 11.10290829182574, + "place-hymnl": 11.240026887352862 + }, + "place-north": { + "place-haecl": 0.236110367329794, + "place-gover": 0.488451131641216, + "place-river": 12.38363197489164, + "place-spmnl": 0.40683395719001, + "place-lech": 0.9736222504324741, + "place-esomr": 1.782406133803586, + "place-gilmn": 2.551818256382724, + "place-mgngl": 3.232020759390161, + "place-balsq": 3.707436539981508, + "place-mdftf": 4.281410214348206, + "place-ogmnl": 5.273072677438761, + "place-mlmnl": 4.538442707090593, + "place-welln": 2.785435812977213, + "place-astao": 2.15216283777738, + "place-sull": 1.574612100955421, + "place-ccmnl": 0.706812568350831, + "place-state": 0.522600064374056, + "place-dwnxg": 0.8043792501789551, + "place-chncl": 1.050114786521713, + "place-tumnl": 1.266545818668973, + "place-bbsta": 1.938517476686153, + "place-masta": 2.561355296319494, + "place-rugg": 2.977968912799252, + "place-rcmnl": 3.4964736345989422, + "place-jaksn": 4.046721170862165, + "place-sbmnl": 4.528858684656605, + "place-grnst": 5.067369553060127, + "place-forhl": 5.756104937788314, + "place-pktrm": 0.931605422457846, + "place-fbkst": 5.389467399760399, + "place-wrnst": 5.3193629429133855, + "place-sumav": 5.098626425425515, + "place-alsgr": 5.162947774372665, + "place-bcnwa": 5.56970703466754, + "place-wascm": 5.612620527991529, + "place-cool": 4.8787239260220305, + "place-grigg": 4.974492797065141, + "place-tapst": 5.766029003743139, + "place-sthld": 5.8926483635568285, + "place-stpul": 4.65114161546568, + "place-harvd": 4.77998283213533, + "place-denrd": 5.9964605311232395, + "place-chswk": 6.1374646750477195, + "place-kntst": 4.491094708775749, + "place-brico": 4.423358914563947, + "place-engav": 6.158774116037341, + "place-chill": 6.312967593006839, + "place-hwsst": 4.3047018462180855, + "place-babck": 4.131670724220552, + "place-clmnl": 6.3409490245715014, + "place-sougr": 6.594215089502304, + "place-smary": 4.085547695209973, + "place-amory": 3.8600293846436813, + "place-bndhl": 5.2623139105126056, + "place-lake": 7.101799891757137, + "place-unsqu": 3.7220096206901676, + "place-bucen": 3.4753803332289426, + "place-chhil": 7.315661052577945, + "place-kencl": 2.868261013183011, + "place-brmnl": 3.74747120503758, + "place-coecl": 1.938621706732681, + "place-prmnl": 2.326232813494194, + "place-hsmnl": 14.563115059925039, + "place-symcl": 2.588886661273164, + "place-bckhl": 4.3669260841684565, + "place-nuniv": 2.9215456446850387, + "place-rvrwy": 4.220684349026683, + "place-mfa": 3.214779525694941, + "place-mispk": 4.015348491683568, + "place-lngmd": 3.4825677294599533, + "place-fenwd": 3.822619338065696, + "place-boyls": 1.177035824534717, + "place-bland": 3.108156553850513, + "place-rsmnl": 6.294752739004215, + "place-fenwy": 3.470690685148731, + "place-woodl": 12.040850841088051, + "place-longw": 3.8268628677274714, + "place-waban": 11.21414833062416, + "place-bvmnl": 4.565180544992245, + "place-eliot": 10.366809272598031, + "place-brkhl": 5.098082794604509, + "place-newtn": 9.594425246560094, + "place-bcnfd": 5.895595344438478, + "place-newto": 8.784812572700435, + "place-armnl": 1.54639432029448, + "place-buest": 3.324262795275591, + "place-hymnl": 2.4679676886980033 + }, + "place-haecl": { + "place-gover": 0.253817981736658, + "place-river": 12.14899519058698, + "place-north": 0.236110367329794, + "place-spmnl": 0.641467107094568, + "place-lech": 1.208255400337032, + "place-esomr": 2.017039283708144, + "place-gilmn": 2.786451406287282, + "place-mgngl": 3.466653909294719, + "place-balsq": 3.942069689886066, + "place-mdftf": 4.516043364252764, + "place-ogmnl": 5.509183044768555, + "place-mlmnl": 4.774553074420387, + "place-welln": 3.021546180307007, + "place-astao": 2.388273205107174, + "place-sull": 1.810722468285215, + "place-ccmnl": 0.942922935680625, + "place-state": 0.286489697044262, + "place-dwnxg": 0.5682688828491611, + "place-chncl": 0.8140044191919191, + "place-tumnl": 1.0304354513391791, + "place-bbsta": 1.702407109356359, + "place-masta": 2.3252449289897, + "place-rugg": 2.7418585454694577, + "place-rcmnl": 3.260363267269148, + "place-jaksn": 3.810610803532371, + "place-sbmnl": 4.292748317326811, + "place-grnst": 4.831259185730333, + "place-forhl": 5.51999457045852, + "place-pktrm": 0.6954950551280521, + "place-fbkst": 5.1533570324306055, + "place-wrnst": 5.083252575583591, + "place-sumav": 4.862516058095721, + "place-alsgr": 4.926837407042871, + "place-bcnwa": 5.333596667337746, + "place-wascm": 5.376510160661736, + "place-cool": 4.642613558692236, + "place-grigg": 4.738382429735347, + "place-tapst": 5.5299186364133455, + "place-sthld": 5.656537996227035, + "place-stpul": 4.415031248135886, + "place-harvd": 4.543872464805537, + "place-denrd": 5.760350163793445, + "place-chswk": 5.901354307717925, + "place-kntst": 4.2549843414459545, + "place-brico": 4.187248547234153, + "place-engav": 5.9226637487075475, + "place-chill": 6.0768572256770454, + "place-hwsst": 4.068591478888292, + "place-babck": 3.895560356890758, + "place-clmnl": 6.104838657241707, + "place-sougr": 6.358104722172511, + "place-smary": 3.849437327880179, + "place-amory": 3.6239190173138875, + "place-bndhl": 5.026203543182811, + "place-lake": 6.865689524427344, + "place-unsqu": 3.485899253360374, + "place-bucen": 3.239269965899149, + "place-chhil": 7.079550685248151, + "place-kencl": 2.6321506458532173, + "place-brmnl": 3.511360837707786, + "place-coecl": 1.702511339402887, + "place-prmnl": 2.0901224461644, + "place-hsmnl": 14.327004692595246, + "place-symcl": 2.35277629394337, + "place-bckhl": 4.130815716838663, + "place-nuniv": 2.685435277355245, + "place-rvrwy": 3.9845739816968897, + "place-mfa": 2.9786691583651472, + "place-mispk": 3.779238124353774, + "place-lngmd": 3.246457362130159, + "place-fenwd": 3.5865089707359017, + "place-boyls": 0.940925457204923, + "place-bland": 2.8720461865207194, + "place-rsmnl": 6.058642371674422, + "place-fenwy": 3.234580317818937, + "place-woodl": 11.804740473758258, + "place-longw": 3.5907525003976772, + "place-waban": 10.978037963294367, + "place-bvmnl": 4.329070177662452, + "place-eliot": 10.130698905268238, + "place-brkhl": 4.861972427274715, + "place-newtn": 9.358314879230301, + "place-bcnfd": 5.659484977108685, + "place-newto": 8.548702205370642, + "place-armnl": 1.3102839529646861, + "place-buest": 3.0881524279457975, + "place-hymnl": 2.231857321368209 + }, + "place-fenwy": { + "place-longw": 0.372664094189931, + "place-bvmnl": 1.121123652245885, + "place-brkhl": 1.636002696129604, + "place-bcnfd": 2.42161618647101, + "place-rsmnl": 2.829062897056192, + "place-chhil": 3.8533886167283016, + "place-newto": 5.323366169693982, + "place-newtn": 6.142856236454103, + "place-eliot": 6.901569952104703, + "place-waban": 7.762506493950324, + "place-woodl": 8.570497953824658, + "place-river": 9.139033557772603, + "place-kencl": 0.561043506546766, + "place-mdftf": 7.551935699887656, + "place-prmnl": 14.00043656235087, + "place-coecl": 14.388040348116997, + "place-fbkst": 19.852918609694385, + "place-wrnst": 17.768781584297702, + "place-sumav": 19.5620776353595, + "place-alsgr": 17.61236641575698, + "place-bcnwa": 20.033158244601527, + "place-wascm": 18.062039169375847, + "place-cool": 19.342175135956015, + "place-grigg": 17.423911438449455, + "place-tapst": 20.229480213677125, + "place-sthld": 18.342067004941146, + "place-stpul": 19.114592825399665, + "place-harvd": 17.229401473519644, + "place-denrd": 20.459911741057226, + "place-chswk": 18.586883316432036, + "place-kntst": 18.954545918709734, + "place-brico": 16.87277755594826, + "place-engav": 20.62222532597133, + "place-chill": 18.762386234391155, + "place-hwsst": 18.768153056152073, + "place-babck": 16.581089365604868, + "place-clmnl": 20.804400234505486, + "place-sougr": 19.043633730886622, + "place-smary": 18.54899890514396, + "place-amory": 16.309448026027997, + "place-bndhl": 19.725765120446592, + "place-lake": 19.551218533141455, + "place-unsqu": 18.18546083062415, + "place-bucen": 15.924798974613259, + "place-brmnl": 15.338852196919985, + "place-symcl": 14.263087796021235, + "place-hsmnl": 16.12956454493259, + "place-nuniv": 14.539602106821164, + "place-bckhl": 16.0412004978426, + "place-mfa": 14.858992460903323, + "place-rvrwy": 15.862469872817744, + "place-lngmd": 15.127402587638192, + "place-mispk": 15.711408776495267, + "place-fenwd": 15.492408518626222, + "place-balsq": 8.125909374254354, + "place-lech": 10.913305129916289, + "place-hymnl": 14.91738633008232, + "place-mgngl": 8.6013251548457, + "place-esomr": 10.050939780432277, + "place-gilmn": 9.281527657853138, + "place-spmnl": 16.57436116765589, + "place-armnl": 14.780267734555197, + "place-north": 16.16752721046588, + "place-buest": 15.773681436659906, + "place-haecl": 15.932894060561322, + "place-bland": 15.55757519523483, + "place-gover": 15.679076078824664, + "place-boyls": 15.1039144011473, + "place-pktrm": 15.395056632391832 + }, + "place-longw": { + "place-bvmnl": 0.748459558055954, + "place-brkhl": 1.2633386019396728, + "place-bcnfd": 2.048952092281079, + "place-rsmnl": 2.456398802866261, + "place-chhil": 3.4807245225383707, + "place-newto": 4.950702075504051, + "place-newtn": 5.770192142264172, + "place-eliot": 6.528905857914772, + "place-waban": 7.3898423997603935, + "place-woodl": 8.197833859634727, + "place-river": 8.766369463582672, + "place-fenwy": 0.372664094189931, + "place-kencl": 0.9337076007366971, + "place-mdftf": 7.9245997940775865, + "place-prmnl": 14.373100656540803, + "place-coecl": 14.76070444230693, + "place-fbkst": 20.225582703884317, + "place-wrnst": 18.141445678487635, + "place-sumav": 19.934741729549433, + "place-alsgr": 17.985030509946913, + "place-bcnwa": 20.40582233879146, + "place-wascm": 18.43470326356578, + "place-cool": 19.714839230145948, + "place-grigg": 17.796575532639388, + "place-tapst": 20.602144307867057, + "place-sthld": 18.71473109913108, + "place-stpul": 19.487256919589598, + "place-harvd": 17.60206556770958, + "place-denrd": 20.83257583524716, + "place-chswk": 18.95954741062197, + "place-kntst": 19.327210012899666, + "place-brico": 17.245441650138197, + "place-engav": 20.994889420161257, + "place-chill": 19.135050328581087, + "place-hwsst": 19.140817150342002, + "place-babck": 16.9537534597948, + "place-clmnl": 21.17706432869542, + "place-sougr": 19.416297825076555, + "place-smary": 18.92166299933389, + "place-amory": 16.68211212021793, + "place-bndhl": 20.098429214636525, + "place-lake": 19.923882627331388, + "place-unsqu": 18.558124924814088, + "place-bucen": 16.29746306880319, + "place-brmnl": 15.711516291109916, + "place-symcl": 14.635751890211168, + "place-hsmnl": 16.502228639122524, + "place-nuniv": 14.912266201011095, + "place-bckhl": 16.41386459203253, + "place-mfa": 15.231656555093256, + "place-rvrwy": 16.235133967007677, + "place-lngmd": 15.500066681828123, + "place-mispk": 16.084072870685198, + "place-fenwd": 15.865072612816153, + "place-balsq": 8.498573468444285, + "place-lech": 11.285969224106221, + "place-hymnl": 15.290050424272252, + "place-mgngl": 8.97398924903563, + "place-esomr": 10.423603874622206, + "place-gilmn": 9.654191752043069, + "place-spmnl": 16.947025261845823, + "place-armnl": 15.15293182874513, + "place-north": 16.540191304655814, + "place-buest": 16.14634553084984, + "place-haecl": 16.305558154751253, + "place-bland": 15.930239289424762, + "place-gover": 16.051740173014597, + "place-boyls": 15.476578495337233, + "place-pktrm": 15.767720726581764 + }, + "place-butlr": { + "place-cedgr": 0.582811809656605, + "place-asmnl": 0.907806877212081, + "place-miltt": 0.296833968374692, + "place-cenav": 0.609304169897797, + "place-valrd": 1.0353375903473712, + "place-capst": 1.3546190696333409, + "place-matt": 1.6010270656863907 + }, + "place-bvmnl": { + "place-brkhl": 0.514879043883719, + "place-bcnfd": 1.300492534225125, + "place-rsmnl": 1.707939244810307, + "place-chhil": 2.732264964482417, + "place-newto": 4.202242517448097, + "place-newtn": 5.021732584208218, + "place-eliot": 5.780446299858818, + "place-waban": 6.64138284170444, + "place-woodl": 7.449374301578773, + "place-river": 8.017909905526718, + "place-longw": 0.748459558055954, + "place-fenwy": 1.121123652245885, + "place-kencl": 1.682167158792651, + "place-mdftf": 8.67305935213354, + "place-prmnl": 15.121560214596755, + "place-coecl": 15.509164000362881, + "place-fbkst": 20.97404226194027, + "place-wrnst": 18.889905236543587, + "place-sumav": 20.683201287605385, + "place-alsgr": 18.733490068002865, + "place-bcnwa": 21.15428189684741, + "place-wascm": 19.183162821621732, + "place-cool": 20.4632987882019, + "place-grigg": 18.54503509069534, + "place-tapst": 21.35060386592301, + "place-sthld": 19.46319065718703, + "place-stpul": 20.23571647764555, + "place-harvd": 18.35052512576553, + "place-denrd": 21.58103539330311, + "place-chswk": 19.70800696867792, + "place-kntst": 20.07566957095562, + "place-brico": 17.993901208194146, + "place-engav": 21.743348978217213, + "place-chill": 19.88350988663704, + "place-hwsst": 19.889276708397958, + "place-babck": 17.702213017850752, + "place-clmnl": 21.92552388675137, + "place-sougr": 20.164757383132507, + "place-smary": 19.670122557389845, + "place-amory": 17.430571678273882, + "place-bndhl": 20.846888772692477, + "place-lake": 20.67234218538734, + "place-unsqu": 19.306584482870036, + "place-bucen": 17.045922626859145, + "place-brmnl": 16.459975849165872, + "place-symcl": 15.38421144826712, + "place-hsmnl": 17.250688197178476, + "place-nuniv": 15.660725759067049, + "place-bckhl": 17.162324150088484, + "place-mfa": 15.980116113149208, + "place-rvrwy": 16.98359352506363, + "place-lngmd": 16.24852623988408, + "place-mispk": 16.832532428741153, + "place-fenwd": 16.613532170872105, + "place-balsq": 9.247033026500239, + "place-lech": 12.034428782162173, + "place-hymnl": 16.038509982328204, + "place-mgngl": 9.722448807091585, + "place-esomr": 11.172063432678161, + "place-gilmn": 10.402651310099023, + "place-spmnl": 17.695484819901775, + "place-armnl": 15.901391386801082, + "place-north": 17.288650862711766, + "place-buest": 16.89480508890579, + "place-haecl": 17.054017712807205, + "place-bland": 16.678698847480714, + "place-gover": 16.80019973107055, + "place-boyls": 16.225038053393185, + "place-pktrm": 16.516180284637716 + }, + "place-brkhl": { + "place-bcnfd": 0.785613490341406, + "place-rsmnl": 1.193060200926588, + "place-chhil": 2.217385920598698, + "place-newto": 3.6873634735643783, + "place-newtn": 4.5068535403244985, + "place-eliot": 5.2655672559751, + "place-waban": 6.126503797820721, + "place-woodl": 6.934495257695055, + "place-river": 7.5030308616429995, + "place-bvmnl": 0.514879043883719, + "place-longw": 1.2633386019396728, + "place-fenwy": 1.636002696129604, + "place-kencl": 2.19704620267637, + "place-mdftf": 9.187938396017259, + "place-prmnl": 15.636439258480475, + "place-coecl": 16.0240430442466, + "place-fbkst": 21.488921305823986, + "place-wrnst": 19.404784280427304, + "place-sumav": 21.198080331489102, + "place-alsgr": 19.248369111886582, + "place-bcnwa": 21.66916094073113, + "place-wascm": 19.69804186550545, + "place-cool": 20.97817783208562, + "place-grigg": 19.05991413457906, + "place-tapst": 21.86548290980673, + "place-sthld": 19.978069701070748, + "place-stpul": 20.75059552152927, + "place-harvd": 18.86540416964925, + "place-denrd": 22.095914437186828, + "place-chswk": 20.222886012561638, + "place-kntst": 20.59054861483934, + "place-brico": 18.508780252077866, + "place-engav": 22.25822802210093, + "place-chill": 20.39838893052076, + "place-hwsst": 20.404155752281675, + "place-babck": 18.21709206173447, + "place-clmnl": 22.44040293063509, + "place-sougr": 20.679636427016224, + "place-smary": 20.185001601273562, + "place-amory": 17.9454507221576, + "place-bndhl": 21.361767816576194, + "place-lake": 21.187221229271056, + "place-unsqu": 19.821463526753757, + "place-bucen": 17.560801670742862, + "place-brmnl": 16.97485489304959, + "place-symcl": 15.89909049215084, + "place-hsmnl": 17.765567241062197, + "place-nuniv": 16.175604802950765, + "place-bckhl": 17.677203193972204, + "place-mfa": 16.49499515703293, + "place-rvrwy": 17.49847256894735, + "place-lngmd": 16.763405283767796, + "place-mispk": 17.34741147262487, + "place-fenwd": 17.128411214755825, + "place-balsq": 9.761912070383957, + "place-lech": 12.549307826045894, + "place-hymnl": 16.55338902621192, + "place-mgngl": 10.237327850975303, + "place-esomr": 11.686942476561878, + "place-gilmn": 10.917530353982741, + "place-spmnl": 18.210363863785492, + "place-armnl": 16.4162704306848, + "place-north": 17.803529906595482, + "place-buest": 17.40968413278951, + "place-haecl": 17.568896756690926, + "place-bland": 17.19357789136443, + "place-gover": 17.315078774954266, + "place-boyls": 16.7399170972769, + "place-pktrm": 17.031059328521437 + }, + "place-bcnfd": { + "place-rsmnl": 0.407446710585182, + "place-chhil": 1.431772430257292, + "place-newto": 2.901749983222972, + "place-newtn": 3.721240049983092, + "place-eliot": 4.479953765633693, + "place-waban": 5.340890307479315, + "place-woodl": 6.148881767353648, + "place-river": 6.717417371301593, + "place-brkhl": 0.785613490341406, + "place-bvmnl": 1.300492534225125, + "place-longw": 2.048952092281079, + "place-fenwy": 2.42161618647101, + "place-kencl": 2.982659693017776, + "place-mdftf": 9.973551886358665, + "place-prmnl": 16.42205274882188, + "place-coecl": 16.809656534588004, + "place-fbkst": 22.27453479616539, + "place-wrnst": 20.19039777076871, + "place-sumav": 21.983693821830506, + "place-alsgr": 20.033982602227987, + "place-bcnwa": 22.454774431072533, + "place-wascm": 20.483655355846853, + "place-cool": 21.763791322427025, + "place-grigg": 19.845527624920464, + "place-tapst": 22.651096400148134, + "place-sthld": 20.763683191412152, + "place-stpul": 21.536209011870675, + "place-harvd": 19.651017659990654, + "place-denrd": 22.881527927528232, + "place-chswk": 21.008499502903042, + "place-kntst": 21.376162105180743, + "place-brico": 19.29439374241927, + "place-engav": 23.043841512442334, + "place-chill": 21.184002420862164, + "place-hwsst": 21.18976924262308, + "place-babck": 19.002705552075874, + "place-clmnl": 23.226016420976496, + "place-sougr": 21.465249917357628, + "place-smary": 20.970615091614967, + "place-amory": 18.731064212499003, + "place-bndhl": 22.147381306917598, + "place-lake": 21.97283471961246, + "place-unsqu": 20.60707701709516, + "place-bucen": 18.346415161084266, + "place-brmnl": 17.760468383390993, + "place-symcl": 16.684703982492245, + "place-hsmnl": 18.551180731403605, + "place-nuniv": 16.961218293292173, + "place-bckhl": 18.46281668431361, + "place-mfa": 17.280608647374333, + "place-rvrwy": 18.284086059288754, + "place-lngmd": 17.5490187741092, + "place-mispk": 18.133024962966275, + "place-fenwd": 17.914024705097233, + "place-balsq": 10.547525560725363, + "place-lech": 13.334921316387298, + "place-hymnl": 17.339002516553325, + "place-mgngl": 11.02294134131671, + "place-esomr": 12.472555966903286, + "place-gilmn": 11.703143844324147, + "place-spmnl": 18.995977354126897, + "place-armnl": 17.201883921026205, + "place-north": 18.589143396936887, + "place-buest": 18.195297623130916, + "place-haecl": 18.35451024703233, + "place-bland": 17.979191381705835, + "place-gover": 18.10069226529567, + "place-boyls": 17.525530587618306, + "place-pktrm": 17.81667281886284 + }, + "place-rsmnl": { + "place-chhil": 1.02432571967211, + "place-newto": 2.49430327263779, + "place-newtn": 3.31379333939791, + "place-eliot": 4.072507055048511, + "place-waban": 4.933443596894133, + "place-woodl": 5.741435056768466, + "place-river": 6.309970660716411, + "place-bcnfd": 0.407446710585182, + "place-brkhl": 1.193060200926588, + "place-bvmnl": 1.707939244810307, + "place-longw": 2.456398802866261, + "place-fenwy": 2.829062897056192, + "place-kencl": 3.390106403602958, + "place-mdftf": 10.380998596943847, + "place-prmnl": 16.829499459407064, + "place-coecl": 17.21710324517319, + "place-fbkst": 22.681981506750574, + "place-wrnst": 20.597844481353892, + "place-sumav": 22.39114053241569, + "place-alsgr": 20.44142931281317, + "place-bcnwa": 22.862221141657717, + "place-wascm": 20.891102066432037, + "place-cool": 22.17123803301221, + "place-grigg": 20.252974335505648, + "place-tapst": 23.058543110733318, + "place-sthld": 21.171129901997336, + "place-stpul": 21.94365572245586, + "place-harvd": 20.058464370575837, + "place-denrd": 23.288974638113416, + "place-chswk": 21.415946213488226, + "place-kntst": 21.783608815765927, + "place-brico": 19.701840453004454, + "place-engav": 23.451288223027518, + "place-chill": 21.591449131447348, + "place-hwsst": 21.597215953208263, + "place-babck": 19.410152262661057, + "place-clmnl": 23.63346313156168, + "place-sougr": 21.872696627942812, + "place-smary": 21.37806180220015, + "place-amory": 19.138510923084187, + "place-bndhl": 22.554828017502782, + "place-lake": 22.380281430197645, + "place-unsqu": 21.014523727680345, + "place-bucen": 18.75386187166945, + "place-brmnl": 18.167915093976177, + "place-symcl": 17.09215069307743, + "place-hsmnl": 18.958627441988785, + "place-nuniv": 17.368665003877354, + "place-bckhl": 18.870263394898792, + "place-mfa": 17.688055357959517, + "place-rvrwy": 18.691532769873938, + "place-lngmd": 17.956465484694384, + "place-mispk": 18.54047167355146, + "place-fenwd": 18.321471415682414, + "place-balsq": 10.954972271310545, + "place-lech": 13.742368026972482, + "place-hymnl": 17.74644922713851, + "place-mgngl": 11.430388051901891, + "place-esomr": 12.880002677488466, + "place-gilmn": 12.11059055490933, + "place-spmnl": 19.40342406471208, + "place-armnl": 17.60933063161139, + "place-north": 18.99659010752207, + "place-buest": 18.6027443337161, + "place-haecl": 18.761956957617514, + "place-bland": 18.38663809229102, + "place-gover": 18.508138975880854, + "place-boyls": 17.93297729820349, + "place-pktrm": 18.224119529448025 + }, + "place-chhil": { + "place-newto": 1.46997755296568, + "place-newtn": 2.2894676197258, + "place-eliot": 3.048181335376401, + "place-waban": 3.909117877222023, + "place-woodl": 4.717109337096357, + "place-river": 5.285644941044302, + "place-rsmnl": 1.02432571967211, + "place-bcnfd": 1.431772430257292, + "place-brkhl": 2.217385920598698, + "place-bvmnl": 2.732264964482417, + "place-longw": 3.4807245225383707, + "place-fenwy": 3.8533886167283016, + "place-kencl": 4.414432123275068, + "place-mdftf": 11.405324316615957, + "place-prmnl": 17.853825179079173, + "place-coecl": 18.241428964845298, + "place-fbkst": 23.706307226422688, + "place-wrnst": 21.622170201026, + "place-sumav": 23.415466252087803, + "place-alsgr": 21.46575503248528, + "place-bcnwa": 23.886546861329826, + "place-wascm": 21.915427786104146, + "place-cool": 23.19556375268432, + "place-grigg": 21.277300055177758, + "place-tapst": 24.082868830405424, + "place-sthld": 22.195455621669446, + "place-stpul": 22.967981442127968, + "place-harvd": 21.082790090247947, + "place-denrd": 24.313300357785526, + "place-chswk": 22.44027193316034, + "place-kntst": 22.807934535438037, + "place-brico": 20.726166172676564, + "place-engav": 24.475613942699628, + "place-chill": 22.615774851119458, + "place-hwsst": 22.621541672880372, + "place-babck": 20.43447798233317, + "place-clmnl": 24.65778885123379, + "place-sougr": 22.89702234761492, + "place-smary": 22.40238752187226, + "place-amory": 20.162836642756297, + "place-bndhl": 23.57915373717489, + "place-lake": 23.404607149869754, + "place-unsqu": 22.038849447352455, + "place-bucen": 19.77818759134156, + "place-brmnl": 19.192240813648286, + "place-symcl": 18.116476412749538, + "place-hsmnl": 19.982953161660895, + "place-nuniv": 18.392990723549467, + "place-bckhl": 19.8945891145709, + "place-mfa": 18.712381077631626, + "place-rvrwy": 19.715858489546044, + "place-lngmd": 18.980791204366493, + "place-mispk": 19.564797393223568, + "place-fenwd": 19.345797135354523, + "place-balsq": 11.979297990982655, + "place-lech": 14.766693746644592, + "place-hymnl": 18.77077494681062, + "place-mgngl": 12.454713771574001, + "place-esomr": 13.904328397160576, + "place-gilmn": 13.134916274581439, + "place-spmnl": 20.42774978438419, + "place-armnl": 18.6336563512835, + "place-north": 20.02091582719418, + "place-buest": 19.62707005338821, + "place-haecl": 19.786282677289623, + "place-bland": 19.41096381196313, + "place-gover": 19.532464695552964, + "place-boyls": 18.9573030178756, + "place-pktrm": 19.24844524912013 + }, + "place-newto": { + "place-newtn": 0.81949006676012, + "place-eliot": 1.578203782410721, + "place-waban": 2.439140324256343, + "place-woodl": 3.2471317841306773, + "place-river": 3.815667388078621, + "place-chhil": 1.46997755296568, + "place-rsmnl": 2.49430327263779, + "place-bcnfd": 2.901749983222972, + "place-brkhl": 3.6873634735643783, + "place-bvmnl": 4.202242517448097, + "place-longw": 4.950702075504051, + "place-fenwy": 5.323366169693982, + "place-kencl": 5.884409676240748, + "place-mdftf": 12.875301869581637, + "place-prmnl": 19.323802732044854, + "place-coecl": 19.71140651781098, + "place-fbkst": 25.176284779388368, + "place-wrnst": 23.092147753991682, + "place-sumav": 24.885443805053484, + "place-alsgr": 22.93573258545096, + "place-bcnwa": 25.356524414295507, + "place-wascm": 23.385405339069827, + "place-cool": 24.66554130565, + "place-grigg": 22.74727760814344, + "place-tapst": 25.552846383371104, + "place-sthld": 23.665433174635126, + "place-stpul": 24.43795899509365, + "place-harvd": 22.552767643213627, + "place-denrd": 25.783277910751206, + "place-chswk": 23.91024948612602, + "place-kntst": 24.277912088403717, + "place-brico": 22.196143725642244, + "place-engav": 25.945591495665308, + "place-chill": 24.085752404085138, + "place-hwsst": 24.091519225846053, + "place-babck": 21.90445553529885, + "place-clmnl": 26.12776640419947, + "place-sougr": 24.366999900580602, + "place-smary": 23.87236507483794, + "place-amory": 21.632814195721977, + "place-bndhl": 25.049131290140572, + "place-lake": 24.874584702835435, + "place-unsqu": 23.508827000318135, + "place-bucen": 21.24816514430724, + "place-brmnl": 20.662218366613967, + "place-symcl": 19.58645396571522, + "place-hsmnl": 21.452930714626575, + "place-nuniv": 19.862968276515147, + "place-bckhl": 21.36456666753658, + "place-mfa": 20.182358630597307, + "place-rvrwy": 21.185836042511724, + "place-lngmd": 20.450768757332174, + "place-mispk": 21.03477494618925, + "place-fenwd": 20.815774688320204, + "place-balsq": 13.449275543948335, + "place-lech": 16.236671299610272, + "place-hymnl": 20.2407524997763, + "place-mgngl": 13.924691324539682, + "place-esomr": 15.374305950126256, + "place-gilmn": 14.60489382754712, + "place-spmnl": 21.89772733734987, + "place-armnl": 20.10363390424918, + "place-north": 21.49089338015986, + "place-buest": 21.09704760635389, + "place-haecl": 21.256260230255304, + "place-bland": 20.88094136492881, + "place-gover": 21.002442248518644, + "place-boyls": 20.42728057084128, + "place-pktrm": 20.71842280208581 + }, + "place-newtn": { + "place-eliot": 0.758713715650601, + "place-waban": 1.619650257496223, + "place-woodl": 2.427641717370557, + "place-river": 2.996177321318501, + "place-newto": 0.81949006676012, + "place-chhil": 2.2894676197258, + "place-rsmnl": 3.31379333939791, + "place-bcnfd": 3.721240049983092, + "place-brkhl": 4.5068535403244985, + "place-bvmnl": 5.021732584208218, + "place-longw": 5.770192142264172, + "place-fenwy": 6.142856236454103, + "place-kencl": 6.703899743000869, + "place-mdftf": 13.694791936341758, + "place-prmnl": 20.143292798804975, + "place-coecl": 20.5308965845711, + "place-fbkst": 25.995774846148485, + "place-wrnst": 23.911637820751803, + "place-sumav": 25.7049338718136, + "place-alsgr": 23.75522265221108, + "place-bcnwa": 26.176014481055628, + "place-wascm": 24.204895405829948, + "place-cool": 25.48503137241012, + "place-grigg": 23.56676767490356, + "place-tapst": 26.37233645013123, + "place-sthld": 24.484923241395247, + "place-stpul": 25.25744906185377, + "place-harvd": 23.37225770997375, + "place-denrd": 26.602767977511327, + "place-chswk": 24.729739552886137, + "place-kntst": 25.097402155163838, + "place-brico": 23.015633792402365, + "place-engav": 26.76508156242543, + "place-chill": 24.90524247084526, + "place-hwsst": 24.911009292606174, + "place-babck": 22.72394560205897, + "place-clmnl": 26.94725647095959, + "place-sougr": 25.186489967340723, + "place-smary": 24.69185514159806, + "place-amory": 22.452304262482098, + "place-bndhl": 25.868621356900693, + "place-lake": 25.694074769595556, + "place-unsqu": 24.328317067078256, + "place-bucen": 22.06765521106736, + "place-brmnl": 21.481708433374088, + "place-symcl": 20.40594403247534, + "place-hsmnl": 22.272420781386696, + "place-nuniv": 20.682458343275265, + "place-bckhl": 22.184056734296703, + "place-mfa": 21.001848697357428, + "place-rvrwy": 22.00532610927185, + "place-lngmd": 21.270258824092295, + "place-mispk": 21.85426501294937, + "place-fenwd": 21.635264755080325, + "place-balsq": 14.268765610708456, + "place-lech": 17.056161366370393, + "place-hymnl": 21.06024256653642, + "place-mgngl": 14.744181391299803, + "place-esomr": 16.193796016886377, + "place-gilmn": 15.42438389430724, + "place-spmnl": 22.71721740410999, + "place-armnl": 20.9231239710093, + "place-north": 22.31038344691998, + "place-buest": 21.91653767311401, + "place-haecl": 22.075750297015425, + "place-bland": 21.70043143168893, + "place-gover": 21.821932315278765, + "place-boyls": 21.2467706376014, + "place-pktrm": 21.537912868845936 + }, + "place-eliot": { + "place-waban": 0.860936541845622, + "place-woodl": 1.668928001719956, + "place-river": 2.2374636056679, + "place-newtn": 0.758713715650601, + "place-newto": 1.578203782410721, + "place-chhil": 3.048181335376401, + "place-rsmnl": 4.072507055048511, + "place-bcnfd": 4.479953765633693, + "place-brkhl": 5.2655672559751, + "place-bvmnl": 5.780446299858818, + "place-longw": 6.528905857914772, + "place-fenwy": 6.901569952104703, + "place-kencl": 7.462613458651469, + "place-mdftf": 14.453505651992359, + "place-prmnl": 20.902006514455575, + "place-coecl": 21.2896103002217, + "place-fbkst": 26.754488561799086, + "place-wrnst": 24.670351536402404, + "place-sumav": 26.4636475874642, + "place-alsgr": 24.51393636786168, + "place-bcnwa": 26.934728196706228, + "place-wascm": 24.96360912148055, + "place-cool": 26.24374508806072, + "place-grigg": 24.32548139055416, + "place-tapst": 27.13105016578183, + "place-sthld": 25.243636957045847, + "place-stpul": 26.01616277750437, + "place-harvd": 24.13097142562435, + "place-denrd": 27.361481693161927, + "place-chswk": 25.488453268536738, + "place-kntst": 25.85611587081444, + "place-brico": 23.774347508052966, + "place-engav": 27.52379527807603, + "place-chill": 25.66395618649586, + "place-hwsst": 25.669723008256774, + "place-babck": 23.48265931770957, + "place-clmnl": 27.70597018661019, + "place-sougr": 25.945203682991323, + "place-smary": 25.450568857248662, + "place-amory": 23.2110179781327, + "place-bndhl": 26.627335072551293, + "place-lake": 26.452788485246156, + "place-unsqu": 25.087030782728856, + "place-bucen": 22.82636892671796, + "place-brmnl": 22.24042214902469, + "place-symcl": 21.16465774812594, + "place-hsmnl": 23.031134497037296, + "place-nuniv": 21.441172058925865, + "place-bckhl": 22.942770449947304, + "place-mfa": 21.760562413008028, + "place-rvrwy": 22.76403982492245, + "place-lngmd": 22.028972539742895, + "place-mispk": 22.61297872859997, + "place-fenwd": 22.393978470730925, + "place-balsq": 15.027479326359057, + "place-lech": 17.814875082020993, + "place-hymnl": 21.81895628218702, + "place-mgngl": 15.502895106950403, + "place-esomr": 16.952509732536978, + "place-gilmn": 16.18309760995784, + "place-spmnl": 23.47593111976059, + "place-armnl": 21.6818376866599, + "place-north": 23.069097162570582, + "place-buest": 22.67525138876461, + "place-haecl": 22.834464012666025, + "place-bland": 22.45914514733953, + "place-gover": 22.580646030929366, + "place-boyls": 22.005484353252, + "place-pktrm": 22.296626584496536 + }, + "place-waban": { + "place-woodl": 0.807991459874334, + "place-river": 1.376527063822278, + "place-eliot": 0.860936541845622, + "place-newtn": 1.619650257496223, + "place-newto": 2.439140324256343, + "place-chhil": 3.909117877222023, + "place-rsmnl": 4.933443596894133, + "place-bcnfd": 5.340890307479315, + "place-brkhl": 6.126503797820721, + "place-bvmnl": 6.64138284170444, + "place-longw": 7.3898423997603935, + "place-fenwy": 7.762506493950324, + "place-kencl": 8.32355000049709, + "place-mdftf": 15.31444219383798, + "place-prmnl": 21.762943056301197, + "place-coecl": 22.15054684206732, + "place-fbkst": 27.61542510364471, + "place-wrnst": 25.531288078248025, + "place-sumav": 27.324584129309827, + "place-alsgr": 25.374872909707303, + "place-bcnwa": 27.79566473855185, + "place-wascm": 25.82454566332617, + "place-cool": 27.10468162990634, + "place-grigg": 25.18641793239978, + "place-tapst": 27.991986707627447, + "place-sthld": 26.10457349889147, + "place-stpul": 26.87709931934999, + "place-harvd": 24.99190796746997, + "place-denrd": 28.22241823500755, + "place-chswk": 26.349389810382362, + "place-kntst": 26.71705241266006, + "place-brico": 24.635284049898587, + "place-engav": 28.38473181992165, + "place-chill": 26.52489272834148, + "place-hwsst": 26.530659550102396, + "place-babck": 24.343595859555194, + "place-clmnl": 28.566906728455812, + "place-sougr": 26.806140224836945, + "place-smary": 26.311505399094283, + "place-amory": 24.07195451997832, + "place-bndhl": 27.488271614396915, + "place-lake": 27.313725027091778, + "place-unsqu": 25.947967324574478, + "place-bucen": 23.687305468563583, + "place-brmnl": 23.10135869087031, + "place-symcl": 22.02559428997156, + "place-hsmnl": 23.892071038882918, + "place-nuniv": 22.30210860077149, + "place-bckhl": 23.80370699179292, + "place-mfa": 22.62149895485365, + "place-rvrwy": 23.624976366768067, + "place-lngmd": 22.889909081588517, + "place-mispk": 23.47391527044559, + "place-fenwd": 23.254915012576546, + "place-balsq": 15.888415868204678, + "place-lech": 18.675811623866615, + "place-hymnl": 22.679892824032642, + "place-mgngl": 16.363831648796026, + "place-esomr": 17.8134462743826, + "place-gilmn": 17.044034151803462, + "place-spmnl": 24.336867661606213, + "place-armnl": 22.54277422850552, + "place-north": 23.930033704416203, + "place-buest": 23.536187930610232, + "place-haecl": 23.695400554511647, + "place-bland": 23.32008168918515, + "place-gover": 23.441582572774987, + "place-boyls": 22.866420895097622, + "place-pktrm": 23.157563126342154 + }, + "place-woodl": { + "place-river": 0.568535603947944, + "place-waban": 0.807991459874334, + "place-eliot": 1.668928001719956, + "place-newtn": 2.427641717370557, + "place-newto": 3.2471317841306773, + "place-chhil": 4.717109337096357, + "place-rsmnl": 5.741435056768466, + "place-bcnfd": 6.148881767353648, + "place-brkhl": 6.934495257695055, + "place-bvmnl": 7.449374301578773, + "place-longw": 8.197833859634727, + "place-fenwy": 8.570497953824658, + "place-kencl": 9.131541460371423, + "place-mdftf": 16.122433653712314, + "place-prmnl": 22.57093451617553, + "place-coecl": 22.958538301941655, + "place-fbkst": 28.42341656351904, + "place-wrnst": 26.33927953812236, + "place-sumav": 28.132575589184157, + "place-alsgr": 26.182864369581637, + "place-bcnwa": 28.603656198426183, + "place-wascm": 26.632537123200503, + "place-cool": 27.912673089780675, + "place-grigg": 25.994409392274115, + "place-tapst": 28.799978167501784, + "place-sthld": 26.912564958765802, + "place-stpul": 27.685090779224325, + "place-harvd": 25.799899427344304, + "place-denrd": 29.030409694881882, + "place-chswk": 27.157381270256693, + "place-kntst": 27.525043872534393, + "place-brico": 25.44327550977292, + "place-engav": 29.192723279795985, + "place-chill": 27.332884188215814, + "place-hwsst": 27.33865100997673, + "place-babck": 25.151587319429524, + "place-clmnl": 29.374898188330146, + "place-sougr": 27.61413168471128, + "place-smary": 27.119496858968617, + "place-amory": 24.879945979852653, + "place-bndhl": 28.29626307427125, + "place-lake": 28.12171648696611, + "place-unsqu": 26.75595878444881, + "place-bucen": 24.495296928437917, + "place-brmnl": 23.909350150744643, + "place-symcl": 22.833585749845895, + "place-hsmnl": 24.70006249875725, + "place-nuniv": 23.11010006064582, + "place-bckhl": 24.61169845166726, + "place-mfa": 23.429490414727983, + "place-rvrwy": 24.432967826642404, + "place-lngmd": 23.69790054146285, + "place-mispk": 24.281906730319925, + "place-fenwd": 24.06290647245088, + "place-balsq": 16.69640732807901, + "place-lech": 19.48380308374095, + "place-hymnl": 23.487884283906975, + "place-mgngl": 17.17182310867036, + "place-esomr": 18.621437734256933, + "place-gilmn": 17.852025611677796, + "place-spmnl": 25.144859121480547, + "place-armnl": 23.350765688379855, + "place-north": 24.738025164290537, + "place-buest": 24.344179390484566, + "place-haecl": 24.50339201438598, + "place-bland": 24.128073149059485, + "place-gover": 24.24957403264932, + "place-boyls": 23.674412354971956, + "place-pktrm": 23.96555458621649 + }, + "place-river": { + "place-woodl": 0.568535603947944, + "place-waban": 1.376527063822278, + "place-eliot": 2.2374636056679, + "place-newtn": 2.996177321318501, + "place-newto": 3.815667388078621, + "place-chhil": 5.285644941044302, + "place-rsmnl": 6.309970660716411, + "place-bcnfd": 6.717417371301593, + "place-brkhl": 7.5030308616429995, + "place-bvmnl": 8.017909905526718, + "place-longw": 8.766369463582672, + "place-fenwy": 9.139033557772603, + "place-kencl": 9.70007706431937, + "place-mdftf": 16.667947409006413, + "place-balsq": 16.071254677060974, + "place-mgngl": 15.593806708199125, + "place-gilmn": 14.913545758395976, + "place-esomr": 14.14575375805298, + "place-pktrm": 11.637170267512731, + "place-fbkst": 16.095032244815286, + "place-wrnst": 16.02492778796827, + "place-sumav": 15.8041912704804, + "place-alsgr": 15.86851261942755, + "place-bcnwa": 16.275271879722425, + "place-wascm": 16.318185373046415, + "place-cool": 15.584288771076917, + "place-grigg": 15.680057642120026, + "place-tapst": 16.471593848798022, + "place-sthld": 16.598213208611714, + "place-stpul": 15.356706460520565, + "place-harvd": 15.485547677190215, + "place-denrd": 16.702025376178124, + "place-chswk": 16.843029520102604, + "place-kntst": 15.196659553830635, + "place-brico": 15.128923759618832, + "place-engav": 16.864338961092226, + "place-chill": 17.018532438061726, + "place-hwsst": 15.010266691272971, + "place-babck": 14.837235569275437, + "place-clmnl": 17.046513869626388, + "place-sougr": 17.29977993455719, + "place-smary": 14.791112540264859, + "place-amory": 14.565594229698567, + "place-bndhl": 15.96787875556749, + "place-lake": 17.807364736812023, + "place-unsqu": 14.427574465745053, + "place-bucen": 14.180945178283828, + "place-brmnl": 14.453036050092464, + "place-coecl": 12.644186551787566, + "place-prmnl": 13.03179765854908, + "place-hsmnl": 25.268679904979926, + "place-symcl": 13.294451506328048, + "place-bckhl": 15.072490929223342, + "place-nuniv": 13.627110489739923, + "place-rvrwy": 14.926249194081569, + "place-mfa": 13.920344370749827, + "place-mispk": 14.720913336738453, + "place-lngmd": 14.188132574514839, + "place-fenwd": 14.528184183120581, + "place-lech": 13.383263096019252, + "place-hymnl": 13.173532533752889, + "place-spmnl": 12.816474802776789, + "place-armnl": 12.251959165349366, + "place-north": 12.409640845586779, + "place-buest": 14.029827640330478, + "place-haecl": 12.175007695682222, + "place-bland": 13.813721398905399, + "place-gover": 11.921189713945564, + "place-boyls": 11.882600669589602 + }, + "place-mdftf": { + "place-balsq": 0.573973674366698, + "place-mgngl": 1.049389454958045, + "place-gilmn": 1.7295919579654822, + "place-esomr": 2.49900408054462, + "place-lech": 3.361369430028634, + "place-river": 16.667947409006413, + "place-bckhl": 8.489264797954943, + "place-hsmnl": 8.577628845044938, + "place-rvrwy": 8.310534172930089, + "place-mispk": 8.159473076607611, + "place-fenwd": 7.9404728187385665, + "place-brmnl": 7.78691649703233, + "place-lngmd": 7.575466887750537, + "place-mfa": 7.3070567610156685, + "place-nuniv": 6.987666406933508, + "place-symcl": 6.71115209613358, + "place-prmnl": 6.448500862463216, + "place-coecl": 6.836104648229342, + "place-fbkst": 12.30098290980673, + "place-wrnst": 10.216845884410047, + "place-sumav": 12.010141935471847, + "place-alsgr": 10.060430715869325, + "place-bcnwa": 12.481222544713871, + "place-wascm": 10.510103469488191, + "place-cool": 11.790239436068362, + "place-grigg": 9.871975738561801, + "place-tapst": 12.67754451378947, + "place-sthld": 10.79013130505349, + "place-stpul": 11.562657125512011, + "place-harvd": 9.67746577363199, + "place-denrd": 12.90797604116957, + "place-chswk": 11.034947616544382, + "place-kntst": 11.40261021882208, + "place-brico": 9.320841856060607, + "place-engav": 13.070289626083671, + "place-chill": 11.2104505345035, + "place-hwsst": 11.216217356264416, + "place-babck": 9.029153665717214, + "place-clmnl": 13.252464534617832, + "place-sougr": 11.491698030998966, + "place-smary": 10.997063205256303, + "place-amory": 8.757512326140342, + "place-bndhl": 12.173829420558937, + "place-lake": 11.9992828332538, + "place-unsqu": 10.633525130736498, + "place-bucen": 8.372863274725603, + "place-chhil": 12.251676379941145, + "place-pktrm": 7.843120932504177, + "place-spmnl": 9.022425467768235, + "place-hymnl": 7.365450630194664, + "place-rsmnl": 11.230768066367414, + "place-boyls": 7.551978701259645, + "place-north": 8.615591510578225, + "place-buest": 8.221745736772252, + "place-newto": 13.720827900063636, + "place-gover": 8.127140378937009, + "place-haecl": 8.380958360673667, + "place-armnl": 7.228332034667543, + "place-bland": 8.005639495347173, + "place-bcnfd": 10.831610671801677, + "place-kencl": 7.765743954679672, + "place-fenwy": 8.40670601251193, + "place-woodl": 16.976866168451252, + "place-longw": 8.762878195090671, + "place-waban": 16.15016365798736, + "place-bvmnl": 9.501195872355446, + "place-eliot": 15.30282459996123, + "place-brkhl": 10.034098121967709, + "place-newtn": 14.530440573923293 + }, + "place-balsq": { + "place-mgngl": 0.475415780591347, + "place-gilmn": 1.155618283598784, + "place-esomr": 1.925030406177922, + "place-lech": 2.764676698083195, + "place-river": 16.071254677060974, + "place-mdftf": 0.573973674366698, + "place-newtn": 15.104414248289991, + "place-pktrm": 8.417094606870874, + "place-fbkst": 12.874956584173429, + "place-wrnst": 10.790819558776745, + "place-sumav": 12.584115609838545, + "place-alsgr": 10.634404390236023, + "place-bcnwa": 13.05519621908057, + "place-wascm": 11.08407714385489, + "place-cool": 12.36421311043506, + "place-grigg": 10.445949412928499, + "place-tapst": 13.251518188156169, + "place-sthld": 11.364104979420189, + "place-stpul": 12.13663079987871, + "place-harvd": 10.251439447998688, + "place-denrd": 13.481949715536269, + "place-chswk": 11.60892129091108, + "place-kntst": 11.976583893188778, + "place-brico": 9.894815530427305, + "place-engav": 13.644263300450369, + "place-chill": 11.784424208870199, + "place-hwsst": 11.790191030631114, + "place-babck": 9.603127340083912, + "place-clmnl": 13.82643820898453, + "place-sougr": 12.065671705365665, + "place-smary": 11.571036879623001, + "place-amory": 9.33148600050704, + "place-bndhl": 12.747803094925635, + "place-lake": 12.573256507620497, + "place-unsqu": 11.207498805103196, + "place-bucen": 8.946836949092301, + "place-chhil": 12.825650054307843, + "place-boyls": 8.125952375626342, + "place-hsmnl": 9.151602519411636, + "place-coecl": 7.41007832259604, + "place-prmnl": 7.022474536829914, + "place-bckhl": 9.063238472321641, + "place-symcl": 7.2851257705002785, + "place-rvrwy": 8.884507847296787, + "place-nuniv": 7.561640081300206, + "place-mispk": 8.73344675097431, + "place-mfa": 7.881030435382367, + "place-fenwd": 8.514446493105265, + "place-lngmd": 8.149440562117235, + "place-brmnl": 8.360890171399028, + "place-spmnl": 9.596399142134933, + "place-hymnl": 7.939424304561362, + "place-rsmnl": 11.804741740734112, + "place-gover": 8.701114053303707, + "place-haecl": 8.954932035040365, + "place-buest": 8.79571941113895, + "place-newto": 14.294801574430334, + "place-bland": 8.579613169713872, + "place-bcnfd": 11.405584346168375, + "place-north": 9.189565184944923, + "place-armnl": 7.802305709034241, + "place-woodl": 17.55083984281795, + "place-kencl": 8.339717629046369, + "place-fenwy": 8.980679686878629, + "place-waban": 16.724137332354058, + "place-longw": 9.33685186945737, + "place-eliot": 15.876798274327928, + "place-bvmnl": 10.075169546722144, + "place-brkhl": 10.608071796334407 + }, + "place-mgngl": { + "place-gilmn": 0.680202503007437, + "place-esomr": 1.449614625586575, + "place-lech": 2.287228729221348, + "place-river": 15.593806708199125, + "place-balsq": 0.475415780591347, + "place-mdftf": 1.049389454958045, + "place-newtn": 15.579830028881338, + "place-pktrm": 8.892510387462222, + "place-fbkst": 13.350372364764775, + "place-wrnst": 11.266235339368091, + "place-sumav": 13.05953139042989, + "place-alsgr": 11.10982017082737, + "place-bcnwa": 13.530611999671915, + "place-wascm": 11.559492924446236, + "place-cool": 12.839628891026406, + "place-grigg": 10.921365193519845, + "place-tapst": 13.726933968747515, + "place-sthld": 11.839520760011535, + "place-stpul": 12.612046580470055, + "place-harvd": 10.726855228590034, + "place-denrd": 13.957365496127615, + "place-chswk": 12.084337071502427, + "place-kntst": 12.451999673780124, + "place-brico": 10.370231311018651, + "place-engav": 14.119679081041715, + "place-chill": 12.259839989461545, + "place-hwsst": 12.26560681122246, + "place-babck": 10.078543120675258, + "place-clmnl": 14.301853989575877, + "place-sougr": 12.54108748595701, + "place-smary": 12.046452660214348, + "place-amory": 9.806901781098386, + "place-bndhl": 13.22321887551698, + "place-lake": 13.048672288211844, + "place-unsqu": 11.682914585694542, + "place-bucen": 9.422252729683647, + "place-chhil": 13.30106583489919, + "place-boyls": 8.60136815621769, + "place-hsmnl": 9.627018300002982, + "place-coecl": 7.885494103187387, + "place-prmnl": 7.497890317421261, + "place-bckhl": 9.538654252912988, + "place-symcl": 7.760541551091626, + "place-rvrwy": 9.359923627888133, + "place-nuniv": 8.037055861891552, + "place-mispk": 9.208862531565655, + "place-mfa": 8.356446215973714, + "place-fenwd": 8.98986227369661, + "place-lngmd": 8.624856342708581, + "place-brmnl": 8.836305951990374, + "place-spmnl": 10.07181492272628, + "place-hymnl": 8.414840085152708, + "place-rsmnl": 12.280157521325458, + "place-gover": 9.176529833895053, + "place-haecl": 9.43034781563171, + "place-buest": 9.271135191730297, + "place-newto": 14.77021735502168, + "place-bland": 9.055028950305218, + "place-bcnfd": 11.881000126759721, + "place-north": 9.66498096553627, + "place-armnl": 8.277721489625588, + "place-woodl": 18.0262556234093, + "place-kencl": 8.815133409637717, + "place-fenwy": 9.456095467469975, + "place-waban": 17.199553112945406, + "place-longw": 9.812267650048716, + "place-eliot": 16.352214054919276, + "place-bvmnl": 10.55058532731349, + "place-brkhl": 11.083487576925753 + }, + "place-gilmn": { + "place-esomr": 0.769412122579138, + "place-lech": 1.606967779418198, + "place-river": 14.913545758395976, + "place-mgngl": 0.680202503007437, + "place-balsq": 1.155618283598784, + "place-mdftf": 1.7295919579654822, + "place-newtn": 16.260032531888776, + "place-pktrm": 9.57271289046966, + "place-fbkst": 14.030574867772213, + "place-wrnst": 11.946437842375529, + "place-sumav": 13.739733893437329, + "place-alsgr": 11.790022673834807, + "place-bcnwa": 14.210814502679353, + "place-wascm": 12.239695427453674, + "place-cool": 13.519831394033844, + "place-grigg": 11.601567696527283, + "place-tapst": 14.407136471754953, + "place-sthld": 12.519723263018973, + "place-stpul": 13.292249083477493, + "place-harvd": 11.407057731597472, + "place-denrd": 14.637567999135053, + "place-chswk": 12.764539574509865, + "place-kntst": 13.132202176787562, + "place-brico": 11.05043381402609, + "place-engav": 14.799881584049153, + "place-chill": 12.940042492468983, + "place-hwsst": 12.945809314229898, + "place-babck": 10.758745623682696, + "place-clmnl": 14.982056492583315, + "place-sougr": 13.221289988964449, + "place-smary": 12.726655163221785, + "place-amory": 10.487104284105824, + "place-bndhl": 13.903421378524419, + "place-lake": 13.728874791219281, + "place-unsqu": 12.36311708870198, + "place-bucen": 10.102455232691085, + "place-chhil": 13.981268337906627, + "place-boyls": 9.281570659225128, + "place-hsmnl": 10.30722080301042, + "place-coecl": 8.565696606194823, + "place-prmnl": 8.178092820428699, + "place-bckhl": 10.218856755920426, + "place-symcl": 8.440744054099063, + "place-rvrwy": 10.04012613089557, + "place-nuniv": 8.71725836489899, + "place-mispk": 9.889065034573093, + "place-mfa": 9.036648718981152, + "place-fenwd": 9.670064776704049, + "place-lngmd": 9.305058845716019, + "place-brmnl": 9.516508454997812, + "place-spmnl": 10.752017425733717, + "place-hymnl": 9.095042588160146, + "place-rsmnl": 12.960360024332896, + "place-gover": 9.85673233690249, + "place-haecl": 10.110550318639149, + "place-buest": 9.951337694737735, + "place-newto": 15.450419858029118, + "place-bland": 9.735231453312656, + "place-bcnfd": 12.561202629767159, + "place-north": 10.345183468543707, + "place-armnl": 8.957923992633024, + "place-woodl": 18.706458126416734, + "place-kencl": 9.495335912645153, + "place-fenwy": 10.136297970477413, + "place-waban": 17.879755615952842, + "place-longw": 10.492470153056153, + "place-eliot": 17.032416557926712, + "place-bvmnl": 11.230787830320928, + "place-brkhl": 11.763690079933191 + }, + "place-esomr": { + "place-lech": 0.839175779075201, + "place-river": 14.14575375805298, + "place-gilmn": 0.769412122579138, + "place-mgngl": 1.449614625586575, + "place-balsq": 1.925030406177922, + "place-mdftf": 2.49900408054462, + "place-newtn": 17.029444654467913, + "place-pktrm": 10.342125013048797, + "place-fbkst": 14.79998699035135, + "place-wrnst": 12.715849964954668, + "place-sumav": 14.509146016016466, + "place-alsgr": 12.559434796413946, + "place-bcnwa": 14.980226625258492, + "place-wascm": 13.009107550032812, + "place-cool": 14.28924351661298, + "place-grigg": 12.37097981910642, + "place-tapst": 15.17654859433409, + "place-sthld": 13.289135385598112, + "place-stpul": 14.06166120605663, + "place-harvd": 12.17646985417661, + "place-denrd": 15.406980121714192, + "place-chswk": 13.533951697089002, + "place-kntst": 13.901614299366699, + "place-brico": 11.819845936605226, + "place-engav": 15.56929370662829, + "place-chill": 13.70945461504812, + "place-hwsst": 13.715221436809035, + "place-babck": 11.528157746261833, + "place-clmnl": 15.751468615162452, + "place-sougr": 13.990702111543587, + "place-smary": 13.496067285800923, + "place-amory": 11.256516406684963, + "place-bndhl": 14.672833501103558, + "place-lake": 14.49828691379842, + "place-unsqu": 13.132529211281117, + "place-bucen": 10.871867355270222, + "place-chhil": 14.750680460485764, + "place-boyls": 10.050982781804265, + "place-hsmnl": 11.076632925589557, + "place-coecl": 9.335108728773962, + "place-prmnl": 8.947504943007836, + "place-bckhl": 10.988268878499564, + "place-symcl": 9.2101561766782, + "place-rvrwy": 10.80953825347471, + "place-nuniv": 9.48667048747813, + "place-mispk": 10.65847715715223, + "place-mfa": 9.806060841560289, + "place-fenwd": 10.439476899283186, + "place-lngmd": 10.074470968295156, + "place-brmnl": 10.285920577576949, + "place-spmnl": 11.521429548312856, + "place-hymnl": 9.864454710739285, + "place-rsmnl": 13.729772146912033, + "place-gover": 10.62614445948163, + "place-haecl": 10.879962441218286, + "place-buest": 10.720749817316872, + "place-newto": 16.219831980608255, + "place-bland": 10.504643575891794, + "place-bcnfd": 13.330614752346296, + "place-north": 11.114595591122846, + "place-armnl": 9.727336115212163, + "place-woodl": 19.47587024899587, + "place-kencl": 10.264748035224292, + "place-fenwy": 10.905710093056552, + "place-waban": 18.64916773853198, + "place-longw": 11.26188227563529, + "place-eliot": 17.80182868050585, + "place-bvmnl": 12.000199952900065, + "place-brkhl": 12.533102202512328 + }, + "place-cedgr": { + "place-asmnl": 0.324995067555476, + "place-cedgr": 0.641043370466476, + "place-butlr": 0.582811809656605, + "place-miltt": 0.884430273453034, + "place-cenav": 1.1969004749761392, + "place-valrd": 1.6229338954257133, + "place-capst": 1.942215374711683, + "place-matt": 2.188623370764733 + }, + "place-ogmnl": { + "place-mlmnl": 0.734629970348168, + "place-welln": 2.487636864461548, + "place-astao": 3.120909839661381, + "place-sull": 3.69846057648334, + "place-ccmnl": 4.5662601090879305, + "place-north": 5.273072677438761, + "place-haecl": 5.509183044768555, + "place-state": 5.795672741812817, + "place-dwnxg": 6.077451927617716, + "place-chncl": 6.323187463960474, + "place-tumnl": 6.5396184961077335, + "place-bbsta": 7.211590154124914, + "place-masta": 7.834427973758255, + "place-rugg": 8.251041590238014, + "place-rcmnl": 8.769546312037702, + "place-jaksn": 9.319793848300925, + "place-sbmnl": 9.801931362095365, + "place-grnst": 10.340442230498887, + "place-forhl": 11.029177615227075 + }, + "place-mlmnl": { + "place-welln": 1.75300689411338, + "place-astao": 2.386279869313213, + "place-sull": 2.963830606135172, + "place-ccmnl": 3.8316301387397624, + "place-north": 4.538442707090593, + "place-haecl": 4.774553074420387, + "place-state": 5.061042771464649, + "place-dwnxg": 5.342821957269548, + "place-chncl": 5.588557493612306, + "place-tumnl": 5.8049885257595655, + "place-bbsta": 6.476960183776746, + "place-masta": 7.099798003410087, + "place-rugg": 7.516411619889845, + "place-rcmnl": 8.034916341689534, + "place-jaksn": 8.585163877952757, + "place-sbmnl": 9.067301391747197, + "place-grnst": 9.605812260150719, + "place-forhl": 10.294547644878907, + "place-ogmnl": 0.734629970348168 + }, + "place-welln": { + "place-astao": 0.633272975199833, + "place-sull": 1.2108237120217922, + "place-ccmnl": 2.078623244626382, + "place-north": 2.785435812977213, + "place-haecl": 3.021546180307007, + "place-state": 3.3080358773512692, + "place-dwnxg": 3.589815063156168, + "place-chncl": 3.835550599498926, + "place-tumnl": 4.051981631646186, + "place-bbsta": 4.723953289663366, + "place-masta": 5.346791109296707, + "place-rugg": 5.763404725776465, + "place-rcmnl": 6.281909447576154, + "place-jaksn": 6.8321569838393765, + "place-sbmnl": 7.314294497633816, + "place-grnst": 7.852805366037338, + "place-forhl": 8.541540750765527, + "place-mlmnl": 1.75300689411338, + "place-ogmnl": 2.487636864461548 + }, + "place-astao": { + "place-sull": 0.577550736821959, + "place-ccmnl": 1.445350269426549, + "place-north": 2.15216283777738, + "place-haecl": 2.388273205107174, + "place-state": 2.674762902151436, + "place-dwnxg": 2.956542087956335, + "place-chncl": 3.202277624299093, + "place-tumnl": 3.418708656446353, + "place-bbsta": 4.090680314463533, + "place-masta": 4.713518134096875, + "place-rugg": 5.130131750576632, + "place-rcmnl": 5.648636472376321, + "place-jaksn": 6.198884008639544, + "place-sbmnl": 6.6810215224339835, + "place-grnst": 7.2195323908375055, + "place-forhl": 7.908267775565694, + "place-welln": 0.633272975199833, + "place-mlmnl": 2.386279869313213, + "place-ogmnl": 3.120909839661381 + }, + "place-sull": { + "place-ccmnl": 0.86779953260459, + "place-north": 1.574612100955421, + "place-haecl": 1.810722468285215, + "place-state": 2.097212165329477, + "place-dwnxg": 2.378991351134376, + "place-chncl": 2.624726887477134, + "place-tumnl": 2.841157919624394, + "place-bbsta": 3.513129577641574, + "place-masta": 4.135967397274915, + "place-rugg": 4.552581013754673, + "place-rcmnl": 5.071085735554362, + "place-jaksn": 5.621333271817585, + "place-sbmnl": 6.103470785612025, + "place-grnst": 6.641981654015547, + "place-forhl": 7.330717038743735, + "place-astao": 0.577550736821959, + "place-welln": 1.2108237120217922, + "place-mlmnl": 2.963830606135172, + "place-ogmnl": 3.69846057648334 + }, + "place-ccmnl": { + "place-north": 0.706812568350831, + "place-haecl": 0.942922935680625, + "place-state": 1.229412632724887, + "place-dwnxg": 1.511191818529786, + "place-chncl": 1.756927354872544, + "place-tumnl": 1.973358387019804, + "place-bbsta": 2.645330045036984, + "place-masta": 3.268167864670325, + "place-rugg": 3.684781481150083, + "place-rcmnl": 4.203286202949773, + "place-jaksn": 4.753533739212996, + "place-sbmnl": 5.235671253007435, + "place-grnst": 5.774182121410957, + "place-forhl": 6.462917506139145, + "place-sull": 0.86779953260459, + "place-astao": 1.445350269426549, + "place-welln": 2.078623244626382, + "place-mlmnl": 3.8316301387397624, + "place-ogmnl": 4.5662601090879305 + }, + "place-dwnxg": { + "place-chncl": 0.245735536342758, + "place-tumnl": 0.462166568490018, + "place-bbsta": 1.134138226507198, + "place-masta": 1.7569760461405388, + "place-rugg": 2.1735896626202966, + "place-rcmnl": 2.692094384419987, + "place-jaksn": 3.24234192068321, + "place-sbmnl": 3.72447943447765, + "place-grnst": 4.262990302881172, + "place-forhl": 4.951725687609359, + "place-state": 0.281779185804899, + "place-haecl": 0.5682688828491611, + "place-north": 0.8043792501789551, + "place-ccmnl": 1.511191818529786, + "place-sull": 2.378991351134376, + "place-astao": 2.956542087956335, + "place-welln": 3.589815063156168, + "place-mlmnl": 5.342821957269548, + "place-ogmnl": 6.077451927617716, + "place-alfcl": 6.072613838309276, + "place-davis": 5.08120174742007, + "place-portr": 4.442821300480197, + "place-harsq": 3.3771503854986866, + "place-cntsq": 2.405892115669489, + "place-knncl": 1.4377268166408168, + "place-chmnl": 0.7167070315606849, + "place-pktrm": 0.127226172278891, + "place-sstat": 0.335541999721626, + "place-brdwy": 1.160915942147858, + "place-andrw": 2.02088661653444, + "place-jfk": 2.805735556848009, + "place-nqncy": 6.350580058085779, + "place-wlsta": 7.14677004978426, + "place-qnctr": 8.44027992275113, + "place-qamnl": 9.7503783603754, + "place-shmnl": 3.489373168197726, + "place-fldcr": 4.482920012750537, + "place-smmnl": 5.071077381218684, + "place-asmnl": 5.676135843548677, + "place-brntn": 11.55321070945676 + }, + "place-chncl": { + "place-tumnl": 0.21643103214726, + "place-bbsta": 0.88840269016444, + "place-masta": 1.5112405097977808, + "place-rugg": 1.9278541262775388, + "place-rcmnl": 2.446358848077229, + "place-jaksn": 2.996606384340452, + "place-sbmnl": 3.478743898134892, + "place-grnst": 4.017254766538414, + "place-forhl": 4.705990151266602, + "place-dwnxg": 0.245735536342758, + "place-state": 0.527514722147657, + "place-haecl": 0.8140044191919191, + "place-north": 1.050114786521713, + "place-ccmnl": 1.756927354872544, + "place-sull": 2.624726887477134, + "place-astao": 3.202277624299093, + "place-welln": 3.835550599498926, + "place-mlmnl": 5.588557493612306, + "place-ogmnl": 6.323187463960474 + }, + "place-tumnl": { + "place-bbsta": 0.67197165801718, + "place-masta": 1.2948094776505208, + "place-rugg": 1.7114230941302788, + "place-rcmnl": 2.229927815929969, + "place-jaksn": 2.780175352193192, + "place-sbmnl": 3.262312865987632, + "place-grnst": 3.8008237343911544, + "place-forhl": 4.489559119119342, + "place-chncl": 0.21643103214726, + "place-dwnxg": 0.462166568490018, + "place-state": 0.743945754294917, + "place-haecl": 1.0304354513391791, + "place-north": 1.266545818668973, + "place-ccmnl": 1.973358387019804, + "place-sull": 2.841157919624394, + "place-astao": 3.418708656446353, + "place-welln": 4.051981631646186, + "place-mlmnl": 5.8049885257595655, + "place-ogmnl": 6.5396184961077335 + }, + "place-bbsta": { + "place-masta": 0.622837819633341, + "place-rugg": 1.0394514361130989, + "place-rcmnl": 1.557956157912789, + "place-jaksn": 2.108203694176012, + "place-sbmnl": 2.590341207970452, + "place-grnst": 3.1288520763739744, + "place-forhl": 3.8175874611021614, + "place-tumnl": 0.67197165801718, + "place-chncl": 0.88840269016444, + "place-dwnxg": 1.134138226507198, + "place-state": 1.415917412312097, + "place-haecl": 1.702407109356359, + "place-north": 1.938517476686153, + "place-ccmnl": 2.645330045036984, + "place-sull": 3.513129577641574, + "place-astao": 4.090680314463533, + "place-welln": 4.723953289663366, + "place-mlmnl": 6.476960183776746, + "place-ogmnl": 7.211590154124914 + }, + "place-masta": { + "place-rugg": 0.416613616479758, + "place-rcmnl": 0.9351183382794479, + "place-jaksn": 1.485365874542671, + "place-sbmnl": 1.967503388337111, + "place-grnst": 2.5060142567406336, + "place-forhl": 3.1947496414688206, + "place-bbsta": 0.622837819633341, + "place-tumnl": 1.2948094776505208, + "place-chncl": 1.5112405097977808, + "place-dwnxg": 1.7569760461405388, + "place-state": 2.038755231945438, + "place-haecl": 2.3252449289897, + "place-north": 2.561355296319494, + "place-ccmnl": 3.268167864670325, + "place-sull": 4.135967397274915, + "place-astao": 4.713518134096875, + "place-welln": 5.346791109296707, + "place-mlmnl": 7.099798003410087, + "place-ogmnl": 7.834427973758255 + }, + "place-rugg": { + "place-rcmnl": 0.51850472179969, + "place-jaksn": 1.068752258062913, + "place-sbmnl": 1.5508897718573529, + "place-grnst": 2.089400640260876, + "place-forhl": 2.7781360249890628, + "place-masta": 0.416613616479758, + "place-bbsta": 1.0394514361130989, + "place-tumnl": 1.7114230941302788, + "place-chncl": 1.9278541262775388, + "place-dwnxg": 2.1735896626202966, + "place-state": 2.455368848425196, + "place-haecl": 2.7418585454694577, + "place-north": 2.977968912799252, + "place-ccmnl": 3.684781481150083, + "place-sull": 4.552581013754673, + "place-astao": 5.130131750576632, + "place-welln": 5.763404725776465, + "place-mlmnl": 7.516411619889845, + "place-ogmnl": 8.251041590238014 + }, + "place-rcmnl": { + "place-jaksn": 0.550247536263223, + "place-sbmnl": 1.032385050057663, + "place-grnst": 1.570895918461186, + "place-forhl": 2.259631303189373, + "place-rugg": 0.51850472179969, + "place-masta": 0.9351183382794479, + "place-bbsta": 1.557956157912789, + "place-tumnl": 2.229927815929969, + "place-chncl": 2.446358848077229, + "place-dwnxg": 2.692094384419987, + "place-state": 2.973873570224886, + "place-haecl": 3.260363267269148, + "place-north": 3.4964736345989422, + "place-ccmnl": 4.203286202949773, + "place-sull": 5.071085735554362, + "place-astao": 5.648636472376321, + "place-welln": 6.281909447576154, + "place-mlmnl": 8.034916341689534, + "place-ogmnl": 8.769546312037702 + }, + "place-jaksn": { + "place-sbmnl": 0.48213751379444, + "place-grnst": 1.020648382197963, + "place-forhl": 1.7093837669261498, + "place-rcmnl": 0.550247536263223, + "place-rugg": 1.068752258062913, + "place-masta": 1.485365874542671, + "place-bbsta": 2.108203694176012, + "place-tumnl": 2.780175352193192, + "place-chncl": 2.996606384340452, + "place-dwnxg": 3.24234192068321, + "place-state": 3.524121106488109, + "place-haecl": 3.810610803532371, + "place-north": 4.046721170862165, + "place-ccmnl": 4.753533739212996, + "place-sull": 5.621333271817585, + "place-astao": 6.198884008639544, + "place-welln": 6.8321569838393765, + "place-mlmnl": 8.585163877952757, + "place-ogmnl": 9.319793848300925 + }, + "place-sbmnl": { + "place-grnst": 0.538510868403523, + "place-forhl": 1.2272462531317099, + "place-jaksn": 0.48213751379444, + "place-rcmnl": 1.032385050057663, + "place-rugg": 1.5508897718573529, + "place-masta": 1.967503388337111, + "place-bbsta": 2.590341207970452, + "place-tumnl": 3.262312865987632, + "place-chncl": 3.478743898134892, + "place-dwnxg": 3.72447943447765, + "place-state": 4.006258620282549, + "place-haecl": 4.292748317326811, + "place-north": 4.528858684656605, + "place-ccmnl": 5.235671253007435, + "place-sull": 6.103470785612025, + "place-astao": 6.6810215224339835, + "place-welln": 7.314294497633816, + "place-mlmnl": 9.067301391747197, + "place-ogmnl": 9.801931362095365 + }, + "place-grnst": { + "place-forhl": 0.688735384728187, + "place-grnst": 1.378145264157322, + "place-sbmnl": 0.538510868403523, + "place-jaksn": 1.020648382197963, + "place-rcmnl": 1.570895918461186, + "place-rugg": 2.089400640260876, + "place-masta": 2.5060142567406336, + "place-bbsta": 3.1288520763739744, + "place-tumnl": 3.8008237343911544, + "place-chncl": 4.017254766538414, + "place-dwnxg": 4.262990302881172, + "place-state": 4.544769488686071, + "place-haecl": 4.831259185730333, + "place-north": 5.067369553060127, + "place-ccmnl": 5.774182121410957, + "place-sull": 6.641981654015547, + "place-astao": 7.2195323908375055, + "place-welln": 7.852805366037338, + "place-mlmnl": 9.605812260150719, + "place-ogmnl": 10.340442230498887 + }, + "place-forhl": { + "place-grnst": 0.688735384728187, + "place-sbmnl": 1.2272462531317099, + "place-jaksn": 1.7093837669261498, + "place-rcmnl": 2.259631303189373, + "place-rugg": 2.7781360249890628, + "place-masta": 3.1947496414688206, + "place-bbsta": 3.8175874611021614, + "place-tumnl": 4.489559119119342, + "place-chncl": 4.705990151266602, + "place-dwnxg": 4.951725687609359, + "place-state": 5.233504873414258, + "place-haecl": 5.51999457045852, + "place-north": 5.756104937788314, + "place-ccmnl": 6.462917506139145, + "place-sull": 7.330717038743735, + "place-astao": 7.908267775565694, + "place-welln": 8.541540750765527, + "place-mlmnl": 10.294547644878907, + "place-ogmnl": 11.029177615227075 + }, + "place-alfcl": { + "place-davis": 0.991412090889206, + "place-portr": 1.629792537829079, + "place-harsq": 2.6954634528105887, + "place-cntsq": 3.6667217226397866, + "place-knncl": 4.634887021668459, + "place-chmnl": 5.3559068067485915, + "place-pktrm": 5.945387666030385, + "place-dwnxg": 6.072613838309276, + "place-sstat": 6.408155838030902, + "place-brdwy": 7.233529780457134, + "place-andrw": 8.093500454843715, + "place-jfk": 8.878349395157285, + "place-nqncy": 12.423193896395054, + "place-wlsta": 13.219383888093537, + "place-qnctr": 14.512893761060406, + "place-qamnl": 15.822992198684679, + "place-shmnl": 9.561987006507001, + "place-fldcr": 10.555533851059813, + "place-smmnl": 11.14369121952796, + "place-asmnl": 11.748749681857953, + "place-brntn": 17.625824547766037 + }, + "place-davis": { + "place-portr": 0.638380446939873, + "place-harsq": 1.7040513619213828, + "place-cntsq": 2.6753096317505807, + "place-knncl": 3.6434749307792527, + "place-chmnl": 4.364494715859386, + "place-pktrm": 4.953975575141179, + "place-dwnxg": 5.08120174742007, + "place-sstat": 5.416743747141696, + "place-brdwy": 6.2421176895679285, + "place-andrw": 7.102088363954509, + "place-jfk": 7.886937304268079, + "place-nqncy": 11.431781805505848, + "place-wlsta": 12.227971797204331, + "place-qnctr": 13.5214816701712, + "place-qamnl": 14.831580107795473, + "place-shmnl": 8.570574915617795, + "place-fldcr": 9.564121760170607, + "place-smmnl": 10.152279128638755, + "place-asmnl": 10.757337590968747, + "place-alfcl": 0.991412090889206, + "place-brntn": 16.63441245687683 + }, + "place-portr": { + "place-harsq": 1.06567091498151, + "place-cntsq": 2.036929184810708, + "place-knncl": 3.00509448383938, + "place-chmnl": 3.7261142689195124, + "place-pktrm": 4.315595128201306, + "place-dwnxg": 4.442821300480197, + "place-sstat": 4.778363300201823, + "place-brdwy": 5.603737242628055, + "place-andrw": 6.463707917014636, + "place-jfk": 7.2485568573282055, + "place-nqncy": 10.793401358565974, + "place-wlsta": 11.589591350264458, + "place-qnctr": 12.883101223231327, + "place-qamnl": 14.1931996608556, + "place-shmnl": 7.932194468677922, + "place-fldcr": 8.925741313230734, + "place-smmnl": 9.513898681698882, + "place-asmnl": 10.118957144028874, + "place-davis": 0.638380446939873, + "place-alfcl": 1.629792537829079, + "place-brntn": 15.99603200993696 + }, + "place-harsq": { + "place-cntsq": 0.971258269829198, + "place-knncl": 1.93942356885787, + "place-chmnl": 2.6604433539380024, + "place-pktrm": 3.2499242132197956, + "place-dwnxg": 3.3771503854986866, + "place-sstat": 3.712692385220313, + "place-brdwy": 4.538066327646545, + "place-andrw": 5.398037002033126, + "place-jfk": 6.1828859423466955, + "place-nqncy": 9.727730443584464, + "place-wlsta": 10.523920435282948, + "place-qnctr": 11.817430308249817, + "place-qamnl": 13.12752874587409, + "place-shmnl": 6.866523553696412, + "place-fldcr": 7.860070398249223, + "place-smmnl": 8.448227766717372, + "place-asmnl": 9.053286229047364, + "place-portr": 1.06567091498151, + "place-davis": 1.7040513619213828, + "place-alfcl": 2.6954634528105887, + "place-brntn": 14.93036109495545 + }, + "place-cntsq": { + "place-knncl": 0.968165299028672, + "place-chmnl": 1.689185084108804, + "place-pktrm": 2.278665943390598, + "place-dwnxg": 2.405892115669489, + "place-sstat": 2.741434115391115, + "place-brdwy": 3.566808057817347, + "place-andrw": 4.426778732203928, + "place-jfk": 5.211627672517498, + "place-nqncy": 8.756472173755267, + "place-wlsta": 9.55266216545375, + "place-qnctr": 10.846172038420619, + "place-qamnl": 12.156270476044892, + "place-shmnl": 5.895265283867214, + "place-fldcr": 6.888812128420025, + "place-smmnl": 7.476969496888173, + "place-asmnl": 8.082027959218166, + "place-harsq": 0.971258269829198, + "place-portr": 2.036929184810708, + "place-davis": 2.6753096317505807, + "place-alfcl": 3.6667217226397866, + "place-brntn": 13.959102825126251 + }, + "place-knncl": { + "place-chmnl": 0.721019785080132, + "place-pktrm": 1.3105006443619258, + "place-dwnxg": 1.4377268166408168, + "place-sstat": 1.7732688163624428, + "place-brdwy": 2.598642758788675, + "place-andrw": 3.4586134331752567, + "place-jfk": 4.243462373488826, + "place-nqncy": 7.7883068747265956, + "place-wlsta": 8.584496866425077, + "place-qnctr": 9.878006739391946, + "place-qamnl": 11.188105177016219, + "place-shmnl": 4.927099984838542, + "place-fldcr": 5.9206468293913534, + "place-smmnl": 6.508804197859501, + "place-asmnl": 7.113862660189493, + "place-cntsq": 0.968165299028672, + "place-harsq": 1.93942356885787, + "place-portr": 3.00509448383938, + "place-davis": 3.6434749307792527, + "place-alfcl": 4.634887021668459, + "place-brntn": 12.990937526097579 + }, + "place-chmnl": { + "place-pktrm": 0.589480859281794, + "place-dwnxg": 0.7167070315606849, + "place-sstat": 1.052249031282311, + "place-brdwy": 1.877622973708543, + "place-andrw": 2.7375936480951246, + "place-jfk": 3.522442588408694, + "place-nqncy": 7.067287089646464, + "place-wlsta": 7.8634770813449455, + "place-qnctr": 9.156986954311813, + "place-qamnl": 10.467085391936086, + "place-shmnl": 4.206080199758411, + "place-fldcr": 5.199627044311222, + "place-smmnl": 5.787784412779369, + "place-asmnl": 6.392842875109362, + "place-knncl": 0.721019785080132, + "place-cntsq": 1.689185084108804, + "place-harsq": 2.6604433539380024, + "place-portr": 3.7261142689195124, + "place-davis": 4.364494715859386, + "place-alfcl": 5.3559068067485915, + "place-brntn": 12.269917741017446 + }, + "place-sstat": { + "place-brdwy": 0.825373942426232, + "place-andrw": 1.685344616812814, + "place-jfk": 2.470193557126383, + "place-nqncy": 6.015038058364152, + "place-wlsta": 6.811228050062634, + "place-qnctr": 8.104737923029504, + "place-qamnl": 9.414836360653775, + "place-shmnl": 3.1538311684761, + "place-fldcr": 4.147378013028911, + "place-smmnl": 4.7355353814970575, + "place-asmnl": 5.34059384382705, + "place-dwnxg": 0.335541999721626, + "place-pktrm": 0.462768172000517, + "place-chmnl": 1.052249031282311, + "place-knncl": 1.7732688163624428, + "place-cntsq": 2.741434115391115, + "place-harsq": 3.712692385220313, + "place-portr": 4.778363300201823, + "place-davis": 5.416743747141696, + "place-alfcl": 6.408155838030902, + "place-brntn": 11.217668709735134 + }, + "place-brdwy": { + "place-andrw": 0.859970674386582, + "place-jfk": 1.644819614700151, + "place-nqncy": 5.18966411593792, + "place-wlsta": 5.985854107636402, + "place-qnctr": 7.279363980603272, + "place-qamnl": 8.589462418227543, + "place-shmnl": 2.328457226049868, + "place-fldcr": 3.322004070602679, + "place-smmnl": 3.9101614390708255, + "place-asmnl": 4.515219901400818, + "place-sstat": 0.825373942426232, + "place-dwnxg": 1.160915942147858, + "place-pktrm": 1.288142114426749, + "place-chmnl": 1.877622973708543, + "place-knncl": 2.598642758788675, + "place-cntsq": 3.566808057817347, + "place-harsq": 4.538066327646545, + "place-portr": 5.603737242628055, + "place-davis": 6.2421176895679285, + "place-alfcl": 7.233529780457134, + "place-brntn": 10.392294767308902 + }, + "place-andrw": { + "place-jfk": 0.784848940313569, + "place-shmnl": 1.4684865516632861, + "place-fldcr": 2.462033396216097, + "place-smmnl": 3.050190764684243, + "place-asmnl": 3.6552492270142363, + "place-brdwy": 0.859970674386582, + "place-sstat": 1.685344616812814, + "place-dwnxg": 2.02088661653444, + "place-pktrm": 2.148112788813331, + "place-chmnl": 2.7375936480951246, + "place-knncl": 3.4586134331752567, + "place-cntsq": 4.426778732203928, + "place-harsq": 5.398037002033126, + "place-portr": 6.463707917014636, + "place-davis": 7.102088363954509, + "place-alfcl": 8.093500454843715, + "place-qamnl": 7.72949174384096, + "place-brntn": 9.53232409292232, + "place-qnctr": 6.419393306216691, + "place-wlsta": 5.12588343324982, + "place-nqncy": 4.329693441551338 + }, + "place-jfk": { + "place-shmnl": 0.705335739903961, + "place-fldcr": 1.698882584456772, + "place-smmnl": 2.287039952924918, + "place-asmnl": 2.892098415254911, + "place-andrw": 0.784848940313569, + "place-brdwy": 1.644819614700151, + "place-sstat": 2.470193557126383, + "place-dwnxg": 2.805735556848009, + "place-pktrm": 2.9329617291269, + "place-chmnl": 3.522442588408694, + "place-knncl": 4.243462373488826, + "place-cntsq": 5.211627672517498, + "place-harsq": 6.1828859423466955, + "place-portr": 7.2485568573282055, + "place-davis": 7.886937304268079, + "place-alfcl": 8.878349395157285, + "place-nqncy": 3.54484450123777, + "place-wlsta": 4.3410344929362505, + "place-qnctr": 5.634544365903121, + "place-qamnl": 6.94464280352739, + "place-brntn": 8.74747515260875 + }, + "place-shmnl": { + "place-fldcr": 0.993546844552811, + "place-smmnl": 1.581704213020957, + "place-asmnl": 2.18676267535095, + "place-jfk": 0.705335739903961, + "place-andrw": 1.4684865516632861, + "place-brdwy": 2.328457226049868, + "place-sstat": 3.1538311684761, + "place-dwnxg": 3.489373168197726, + "place-pktrm": 3.616599340476617, + "place-chmnl": 4.206080199758411, + "place-knncl": 4.927099984838542, + "place-cntsq": 5.895265283867214, + "place-harsq": 6.866523553696412, + "place-portr": 7.932194468677922, + "place-davis": 8.570574915617795, + "place-alfcl": 9.561987006507001, + "place-brntn": 27.18781155427304, + "place-nqncy": 21.985180902902055, + "place-qamnl": 25.38497920519168, + "place-wlsta": 22.78137089460054, + "place-qnctr": 24.074880767567407 + }, + "place-fldcr": { + "place-smmnl": 0.588157368468146, + "place-asmnl": 1.193215830798139, + "place-shmnl": 0.993546844552811, + "place-jfk": 1.698882584456772, + "place-andrw": 2.462033396216097, + "place-brdwy": 3.322004070602679, + "place-sstat": 4.147378013028911, + "place-dwnxg": 4.482920012750537, + "place-pktrm": 4.610146185029428, + "place-chmnl": 5.199627044311222, + "place-knncl": 5.9206468293913534, + "place-cntsq": 6.888812128420025, + "place-harsq": 7.860070398249223, + "place-portr": 8.925741313230734, + "place-davis": 9.564121760170607, + "place-alfcl": 10.555533851059813, + "place-brntn": 28.18135839882585, + "place-nqncy": 22.97872774745487, + "place-qamnl": 26.378526049744494, + "place-wlsta": 23.774917739153352, + "place-qnctr": 25.068427612120217 + }, + "place-smmnl": { + "place-asmnl": 0.605058462329993, + "place-fldcr": 0.588157368468146, + "place-shmnl": 1.581704213020957, + "place-jfk": 2.287039952924918, + "place-andrw": 3.050190764684243, + "place-brdwy": 3.9101614390708255, + "place-sstat": 4.7355353814970575, + "place-dwnxg": 5.071077381218684, + "place-pktrm": 5.198303553497575, + "place-chmnl": 5.787784412779369, + "place-knncl": 6.508804197859501, + "place-cntsq": 7.476969496888173, + "place-harsq": 8.448227766717372, + "place-portr": 9.513898681698882, + "place-davis": 10.152279128638755, + "place-alfcl": 11.14369121952796, + "place-brntn": 28.769515767293996, + "place-nqncy": 23.566885115923014, + "place-qamnl": 26.96668341821264, + "place-wlsta": 24.363075107621498, + "place-qnctr": 25.656584980588367 + }, + "place-asmnl": { + "place-smmnl": 0.605058462329993, + "place-fldcr": 1.193215830798139, + "place-shmnl": 2.18676267535095, + "place-jfk": 2.892098415254911, + "place-andrw": 3.6552492270142363, + "place-brdwy": 4.515219901400818, + "place-sstat": 5.34059384382705, + "place-dwnxg": 5.676135843548677, + "place-pktrm": 5.803362015827568, + "place-chmnl": 6.392842875109362, + "place-knncl": 7.113862660189493, + "place-cntsq": 8.082027959218166, + "place-harsq": 9.053286229047364, + "place-portr": 10.118957144028874, + "place-davis": 10.757337590968747, + "place-alfcl": 11.748749681857953, + "place-cedgr": 0.324995067555476, + "place-butlr": 0.907806877212081, + "place-miltt": 1.198289122773005, + "place-cenav": 1.520633463697009, + "place-valrd": 1.945859852834446, + "place-capst": 2.24913190094846, + "place-matt": 2.5073426365028233, + "place-brntn": 29.37457422962399, + "place-nqncy": 24.171943578253007, + "place-qamnl": 27.571741880542632, + "place-wlsta": 24.96813356995149, + "place-qnctr": 26.26164344291836 + }, + "place-nqncy": { + "place-wlsta": 0.796189991698481, + "place-qnctr": 2.089699864665351, + "place-qamnl": 3.399798302289621, + "place-brntn": 5.20263065137098, + "place-jfk": 3.54484450123777, + "place-andrw": 4.329693441551338, + "place-alfcl": 12.423193896395054, + "place-davis": 11.431781805505848, + "place-portr": 10.793401358565974, + "place-harsq": 9.727730443584464, + "place-cntsq": 8.756472173755267, + "place-knncl": 7.7883068747265956, + "place-chmnl": 7.067287089646464, + "place-pktrm": 6.47780623036467, + "place-dwnxg": 6.350580058085779, + "place-sstat": 6.015038058364152, + "place-brdwy": 5.18966411593792, + "place-asmnl": 9.704884017338738, + "place-shmnl": 7.518121341987788, + "place-smmnl": 9.099825555008746, + "place-fldcr": 8.5116681865406 + }, + "place-wlsta": { + "place-qnctr": 1.29350987296687, + "place-qamnl": 2.60360831059114, + "place-brntn": 4.4064406596725, + "place-nqncy": 0.796189991698481, + "place-jfk": 4.3410344929362505, + "place-andrw": 5.12588343324982, + "place-alfcl": 13.219383888093537, + "place-davis": 12.227971797204331, + "place-portr": 11.589591350264458, + "place-harsq": 10.523920435282948, + "place-cntsq": 9.55266216545375, + "place-knncl": 8.584496866425077, + "place-chmnl": 7.8634770813449455, + "place-pktrm": 7.273996222063151, + "place-dwnxg": 7.14677004978426, + "place-sstat": 6.811228050062634, + "place-brdwy": 5.985854107636402, + "place-asmnl": 10.50107400903722, + "place-shmnl": 8.31431133368627, + "place-smmnl": 9.896015546707227, + "place-fldcr": 9.30785817823908 + }, + "place-qnctr": { + "place-qamnl": 1.31009843762427, + "place-brntn": 3.11293078670563, + "place-wlsta": 1.29350987296687, + "place-nqncy": 2.089699864665351, + "place-jfk": 5.634544365903121, + "place-andrw": 6.419393306216691, + "place-alfcl": 14.512893761060406, + "place-davis": 13.5214816701712, + "place-portr": 12.883101223231327, + "place-harsq": 11.817430308249817, + "place-cntsq": 10.846172038420619, + "place-knncl": 9.878006739391946, + "place-chmnl": 9.156986954311813, + "place-pktrm": 8.56750609503002, + "place-dwnxg": 8.44027992275113, + "place-sstat": 8.104737923029504, + "place-brdwy": 7.279363980603272, + "place-asmnl": 11.79458388200409, + "place-shmnl": 9.60782120665314, + "place-smmnl": 11.189525419674098, + "place-fldcr": 10.601368051205952 + }, + "place-qamnl": { + "place-brntn": 1.80283234908136, + "place-qamnl": 3.60566470934741, + "place-qnctr": 1.31009843762427, + "place-wlsta": 2.60360831059114, + "place-nqncy": 3.399798302289621, + "place-jfk": 6.94464280352739, + "place-andrw": 7.72949174384096, + "place-alfcl": 15.822992198684679, + "place-davis": 14.831580107795473, + "place-portr": 14.1931996608556, + "place-harsq": 13.12752874587409, + "place-cntsq": 12.156270476044892, + "place-knncl": 11.188105177016219, + "place-chmnl": 10.467085391936086, + "place-pktrm": 9.877604532654292, + "place-dwnxg": 9.7503783603754, + "place-sstat": 9.414836360653775, + "place-brdwy": 8.589462418227543, + "place-asmnl": 13.10468231962836, + "place-shmnl": 10.917919644277411, + "place-smmnl": 12.499623857298367, + "place-fldcr": 11.911466488830222 + }, + "place-brntn": { + "place-qamnl": 1.80283234908136, + "place-qnctr": 3.11293078670563, + "place-wlsta": 4.4064406596725, + "place-nqncy": 5.20263065137098, + "place-jfk": 8.74747515260875, + "place-andrw": 9.53232409292232, + "place-alfcl": 17.625824547766037, + "place-davis": 16.63441245687683, + "place-portr": 15.99603200993696, + "place-harsq": 14.93036109495545, + "place-cntsq": 13.959102825126251, + "place-knncl": 12.990937526097579, + "place-chmnl": 12.269917741017446, + "place-pktrm": 11.680436881735652, + "place-dwnxg": 11.55321070945676, + "place-sstat": 11.217668709735134, + "place-brdwy": 10.392294767308902, + "place-asmnl": 14.90751466870972, + "place-shmnl": 12.720751993358771, + "place-smmnl": 14.302456206379727, + "place-fldcr": 13.714298837911581 + }, + "place-prmnl": { + "place-symcl": 0.262651233670365, + "place-nuniv": 0.539165544470293, + "place-mfa": 0.8585558985524531, + "place-lngmd": 1.126966025287321, + "place-brmnl": 1.338415634569115, + "place-fenwd": 1.491971956275351, + "place-mispk": 1.710972214144396, + "place-rvrwy": 1.862033310466873, + "place-bckhl": 2.040763935491728, + "place-hsmnl": 2.129127982581722, + "place-coecl": 0.387603785766126, + "place-mdftf": 6.448500862463216, + "place-newtn": 20.97894143638651, + "place-pktrm": 14.291621794967392, + "place-fbkst": 18.749483772269947, + "place-wrnst": 16.66534674687326, + "place-sumav": 18.458642797935063, + "place-alsgr": 16.50893157833254, + "place-bcnwa": 18.929723407177086, + "place-wascm": 16.958604331951406, + "place-cool": 18.238740298531578, + "place-grigg": 16.320476601025018, + "place-tapst": 19.126045376252687, + "place-sthld": 17.238632167516705, + "place-stpul": 18.011157987975228, + "place-harvd": 16.125966636095207, + "place-denrd": 19.356476903632785, + "place-chswk": 17.4834484790076, + "place-kntst": 17.851111081285296, + "place-brico": 15.769342718523824, + "place-engav": 19.518790488546887, + "place-chill": 17.658951396966717, + "place-hwsst": 17.664718218727632, + "place-babck": 15.47765452818043, + "place-clmnl": 19.70096539708105, + "place-sougr": 17.94019889346218, + "place-smary": 17.44556406771952, + "place-amory": 15.206013188603556, + "place-bndhl": 18.62233028302215, + "place-lake": 18.447783695717014, + "place-unsqu": 17.082025993199714, + "place-bucen": 14.82136413718882, + "place-chhil": 18.70017724240436, + "place-boyls": 14.00047956372286, + "place-balsq": 7.022474536829914, + "place-brkhl": 16.482598984430926, + "place-gover": 14.575641241400223, + "place-mgngl": 7.497890317421261, + "place-bvmnl": 15.949696734818662, + "place-bland": 14.454140357810388, + "place-rsmnl": 17.67926892883063, + "place-haecl": 14.829459223136883, + "place-hymnl": 13.813951492657878, + "place-newto": 20.169328762526852, + "place-buest": 14.670246599235469, + "place-bcnfd": 17.280111534264893, + "place-north": 15.06409237304144, + "place-armnl": 13.676832897130758, + "place-gilmn": 8.178092820428699, + "place-eliot": 21.751325462424447, + "place-spmnl": 15.47092633023145, + "place-waban": 22.598664520450576, + "place-esomr": 8.947504943007836, + "place-longw": 15.211379057553888, + "place-lech": 9.80987029249185, + "place-woodl": 23.42536703091447, + "place-kencl": 14.214244817142887, + "place-fenwy": 14.855206874975146, + "place-river": 23.11644827146963 + }, + "place-symcl": { + "place-nuniv": 0.276514310799928, + "place-mfa": 0.595904664882088, + "place-lngmd": 0.864314791616956, + "place-brmnl": 1.07576440089875, + "place-fenwd": 1.229320722604986, + "place-mispk": 1.448320980474031, + "place-rvrwy": 1.599382076796508, + "place-bckhl": 1.7781127018213632, + "place-hsmnl": 1.8664767489113572, + "place-prmnl": 0.262651233670365, + "place-coecl": 0.650255019436491, + "place-mdftf": 6.71115209613358, + "place-newtn": 21.241592670056875, + "place-pktrm": 14.554273028637757, + "place-fbkst": 19.012135005940312, + "place-wrnst": 16.927997980543626, + "place-sumav": 18.721294031605428, + "place-alsgr": 16.771582812002904, + "place-bcnwa": 19.19237464084745, + "place-wascm": 17.22125556562177, + "place-cool": 18.501391532201943, + "place-grigg": 16.583127834695382, + "place-tapst": 19.388696609923052, + "place-sthld": 17.50128340118707, + "place-stpul": 18.273809221645593, + "place-harvd": 16.38861786976557, + "place-denrd": 19.61912813730315, + "place-chswk": 17.746099712677964, + "place-kntst": 18.11376231495566, + "place-brico": 16.03199395219419, + "place-engav": 19.781441722217252, + "place-chill": 17.921602630637082, + "place-hwsst": 17.927369452397997, + "place-babck": 15.740305761850795, + "place-clmnl": 19.963616630751414, + "place-sougr": 18.202850127132546, + "place-smary": 17.708215301389885, + "place-amory": 15.468664422273921, + "place-bndhl": 18.884981516692516, + "place-lake": 18.71043492938738, + "place-unsqu": 17.34467722687008, + "place-bucen": 15.084015370859184, + "place-chhil": 18.962828476074726, + "place-boyls": 14.263130797393226, + "place-balsq": 7.2851257705002785, + "place-brkhl": 16.74525021810129, + "place-gover": 14.838292475070588, + "place-mgngl": 7.760541551091626, + "place-bvmnl": 16.212347968489027, + "place-bland": 14.716791591480753, + "place-rsmnl": 17.941920162500995, + "place-haecl": 15.092110456807248, + "place-hymnl": 14.076602726328243, + "place-newto": 20.431979996197217, + "place-buest": 14.932897832905834, + "place-bcnfd": 17.54276276793526, + "place-north": 15.326743606711805, + "place-armnl": 13.939484130801123, + "place-gilmn": 8.440744054099063, + "place-eliot": 22.01397669609481, + "place-spmnl": 15.733577563901815, + "place-waban": 22.86131575412094, + "place-esomr": 9.2101561766782, + "place-longw": 15.474030291224253, + "place-lech": 10.072521526162214, + "place-woodl": 23.688018264584834, + "place-kencl": 14.476896050813252, + "place-fenwy": 15.11785810864551, + "place-river": 23.379099505139994 + }, + "place-nuniv": { + "place-mfa": 0.31939035408216, + "place-lngmd": 0.5878004808170281, + "place-brmnl": 0.799250090098822, + "place-fenwd": 0.952806411805058, + "place-mispk": 1.171806669674103, + "place-rvrwy": 1.32286776599658, + "place-bckhl": 1.5015983910214352, + "place-hsmnl": 1.5899624381114292, + "place-symcl": 0.276514310799928, + "place-prmnl": 0.539165544470293, + "place-coecl": 0.9267693302364189, + "place-mdftf": 6.987666406933508, + "place-newtn": 21.5181069808568, + "place-pktrm": 14.830787339437684, + "place-fbkst": 19.28864931674024, + "place-wrnst": 17.204512291343555, + "place-sumav": 18.997808342405357, + "place-alsgr": 17.048097122802833, + "place-bcnwa": 19.46888895164738, + "place-wascm": 17.4977698764217, + "place-cool": 18.777905843001868, + "place-grigg": 16.859642145495307, + "place-tapst": 19.665210920722977, + "place-sthld": 17.777797711987, + "place-stpul": 18.550323532445518, + "place-harvd": 16.6651321805655, + "place-denrd": 19.89564244810308, + "place-chswk": 18.022614023477892, + "place-kntst": 18.39027662575559, + "place-brico": 16.308508262994117, + "place-engav": 20.057956033017177, + "place-chill": 18.198116941437007, + "place-hwsst": 18.203883763197922, + "place-babck": 16.016820072650724, + "place-clmnl": 20.240130941551342, + "place-sougr": 18.479364437932475, + "place-smary": 17.98472961218981, + "place-amory": 15.74517873307385, + "place-bndhl": 19.161495827492445, + "place-lake": 18.986949240187307, + "place-unsqu": 17.621191537670008, + "place-bucen": 15.360529681659111, + "place-chhil": 19.23934278687465, + "place-boyls": 14.539645108193152, + "place-balsq": 7.561640081300206, + "place-brkhl": 17.021764528901215, + "place-gover": 15.114806785870517, + "place-mgngl": 8.037055861891552, + "place-bvmnl": 16.488862279288952, + "place-bland": 14.993305902280682, + "place-rsmnl": 18.218434473300924, + "place-haecl": 15.368624767607175, + "place-hymnl": 14.353117037128172, + "place-newto": 20.708494306997146, + "place-buest": 15.20941214370576, + "place-bcnfd": 17.819277078735183, + "place-north": 15.603257917511733, + "place-armnl": 14.215998441601052, + "place-gilmn": 8.71725836489899, + "place-eliot": 22.29049100689474, + "place-spmnl": 16.010091874701743, + "place-waban": 23.13783006492087, + "place-esomr": 9.48667048747813, + "place-longw": 15.75054460202418, + "place-lech": 10.349035836962141, + "place-woodl": 23.96453257538476, + "place-kencl": 14.75341036161318, + "place-fenwy": 15.394372419445439, + "place-river": 23.655613815939923 + }, + "place-mfa": { + "place-lngmd": 0.268410126734868, + "place-brmnl": 0.479859736016662, + "place-fenwd": 0.633416057722898, + "place-mispk": 0.8524163155919431, + "place-rvrwy": 1.00347741191442, + "place-bckhl": 1.1822080369392751, + "place-hsmnl": 1.2705720840292694, + "place-nuniv": 0.31939035408216, + "place-symcl": 0.595904664882088, + "place-prmnl": 0.8585558985524531, + "place-coecl": 1.2461596843185792, + "place-mdftf": 7.3070567610156685, + "place-newtn": 21.837497334938963, + "place-pktrm": 15.150177693519845, + "place-fbkst": 19.6080396708224, + "place-wrnst": 17.523902645425714, + "place-sumav": 19.317198696487516, + "place-alsgr": 17.367487476884993, + "place-bcnwa": 19.78827930572954, + "place-wascm": 17.81716023050386, + "place-cool": 19.09729619708403, + "place-grigg": 17.17903249957747, + "place-tapst": 19.98460127480514, + "place-sthld": 18.097188066069158, + "place-stpul": 18.86971388652768, + "place-harvd": 16.98452253464766, + "place-denrd": 20.215032802185238, + "place-chswk": 18.342004377560052, + "place-kntst": 18.70966697983775, + "place-brico": 16.627898617076276, + "place-engav": 20.37734638709934, + "place-chill": 18.51750729551917, + "place-hwsst": 18.523274117280085, + "place-babck": 16.336210426732883, + "place-clmnl": 20.559521295633502, + "place-sougr": 18.798754792014634, + "place-smary": 18.304119966271973, + "place-amory": 16.06456908715601, + "place-bndhl": 19.480886181574604, + "place-lake": 19.306339594269467, + "place-unsqu": 17.940581891752167, + "place-bucen": 15.679920035741272, + "place-chhil": 19.558733140956814, + "place-boyls": 14.859035462275314, + "place-balsq": 7.881030435382367, + "place-brkhl": 17.34115488298338, + "place-gover": 15.434197139952676, + "place-mgngl": 8.356446215973714, + "place-bvmnl": 16.808252633371115, + "place-bland": 15.312696256362841, + "place-rsmnl": 18.537824827383083, + "place-haecl": 15.688015121689336, + "place-hymnl": 14.672507391210331, + "place-newto": 21.027884661079305, + "place-buest": 15.528802497787922, + "place-bcnfd": 18.138667432817346, + "place-north": 15.922648271593893, + "place-armnl": 14.535388795683211, + "place-gilmn": 9.036648718981152, + "place-eliot": 22.6098813609769, + "place-spmnl": 16.329482228783903, + "place-waban": 23.45722041900303, + "place-esomr": 9.806060841560289, + "place-longw": 16.06993495610634, + "place-lech": 10.668426191044302, + "place-woodl": 24.28392292946692, + "place-kencl": 15.07280071569534, + "place-fenwy": 15.713762773527598, + "place-river": 23.975004170022082 + }, + "place-lngmd": { + "place-brmnl": 0.211449609281794, + "place-fenwd": 0.36500593098803, + "place-mispk": 0.584006188857075, + "place-rvrwy": 0.735067285179552, + "place-bckhl": 0.913797910204407, + "place-hsmnl": 1.0021619572944014, + "place-mfa": 0.268410126734868, + "place-nuniv": 0.5878004808170281, + "place-symcl": 0.864314791616956, + "place-prmnl": 1.126966025287321, + "place-coecl": 1.514569811053447, + "place-mdftf": 7.575466887750537, + "place-newtn": 22.10590746167383, + "place-pktrm": 15.418587820254714, + "place-fbkst": 19.876449797557267, + "place-wrnst": 17.792312772160585, + "place-sumav": 19.585608823222383, + "place-alsgr": 17.63589760361986, + "place-bcnwa": 20.05668943246441, + "place-wascm": 18.08557035723873, + "place-cool": 19.3657063238189, + "place-grigg": 17.447442626312338, + "place-tapst": 20.253011401540007, + "place-sthld": 18.36559819280403, + "place-stpul": 19.138124013262548, + "place-harvd": 17.252932661382527, + "place-denrd": 20.483442928920105, + "place-chswk": 18.61041450429492, + "place-kntst": 18.978077106572616, + "place-brico": 16.896308743811144, + "place-engav": 20.645756513834208, + "place-chill": 18.785917422254037, + "place-hwsst": 18.791684244014952, + "place-babck": 16.60462055346775, + "place-clmnl": 20.82793142236837, + "place-sougr": 19.067164918749505, + "place-smary": 18.57253009300684, + "place-amory": 16.33297921389088, + "place-bndhl": 19.749296308309475, + "place-lake": 19.574749721004338, + "place-unsqu": 18.208992018487034, + "place-bucen": 15.94833016247614, + "place-chhil": 19.82714326769168, + "place-boyls": 15.127445589010183, + "place-balsq": 8.149440562117235, + "place-brkhl": 17.609565009718246, + "place-gover": 15.702607266687545, + "place-mgngl": 8.624856342708581, + "place-bvmnl": 17.076662760105982, + "place-bland": 15.58110638309771, + "place-rsmnl": 18.80623495411795, + "place-haecl": 15.956425248424203, + "place-hymnl": 14.9409175179452, + "place-newto": 21.296294787814173, + "place-buest": 15.797212624522789, + "place-bcnfd": 18.407077559552214, + "place-north": 16.191058398328764, + "place-armnl": 14.803798922418078, + "place-gilmn": 9.305058845716019, + "place-eliot": 22.878291487711767, + "place-spmnl": 16.597892355518773, + "place-waban": 23.725630545737896, + "place-esomr": 10.074470968295156, + "place-longw": 16.338345082841208, + "place-lech": 10.936836317779171, + "place-woodl": 24.55233305620179, + "place-kencl": 15.341210842430208, + "place-fenwy": 15.982172900262468, + "place-river": 24.24341429675695 + }, + "place-brmnl": { + "place-fenwd": 0.153556321706236, + "place-mispk": 0.372556579575281, + "place-rvrwy": 0.523617675897758, + "place-bckhl": 0.702348300922613, + "place-hsmnl": 0.7907123480126074, + "place-lngmd": 0.211449609281794, + "place-mfa": 0.479859736016662, + "place-nuniv": 0.799250090098822, + "place-symcl": 1.07576440089875, + "place-prmnl": 1.338415634569115, + "place-coecl": 1.7260194203352408, + "place-mdftf": 7.78691649703233, + "place-newtn": 22.317357070955623, + "place-pktrm": 15.630037429536507, + "place-fbkst": 20.08789940683906, + "place-wrnst": 18.003762381442378, + "place-sumav": 19.797058432504176, + "place-alsgr": 17.847347212901653, + "place-bcnwa": 20.268139041746203, + "place-wascm": 18.297019966520523, + "place-cool": 19.57715593310069, + "place-grigg": 17.65889223559413, + "place-tapst": 20.4644610108218, + "place-sthld": 18.577047802085822, + "place-stpul": 19.34957362254434, + "place-harvd": 17.46438227066432, + "place-denrd": 20.6948925382019, + "place-chswk": 18.821864113576712, + "place-kntst": 19.18952671585441, + "place-brico": 17.107758353092937, + "place-engav": 20.857206123116, + "place-chill": 18.99736703153583, + "place-hwsst": 19.003133853296745, + "place-babck": 16.816070162749543, + "place-clmnl": 21.039381031650162, + "place-sougr": 19.278614528031298, + "place-smary": 18.783979702288633, + "place-amory": 16.544428823172673, + "place-bndhl": 19.960745917591268, + "place-lake": 19.78619933028613, + "place-unsqu": 18.420441627768827, + "place-bucen": 16.159779771757933, + "place-chhil": 20.038592876973475, + "place-boyls": 15.338895198291976, + "place-balsq": 8.360890171399028, + "place-brkhl": 17.82101461900004, + "place-gover": 15.914056875969338, + "place-mgngl": 8.836305951990374, + "place-bvmnl": 17.288112369387775, + "place-bland": 15.792555992379503, + "place-rsmnl": 19.017684563399744, + "place-haecl": 16.167874857705996, + "place-hymnl": 15.152367127226993, + "place-newto": 21.507744397095966, + "place-buest": 16.008662233804582, + "place-bcnfd": 18.618527168834007, + "place-north": 16.402508007610557, + "place-armnl": 15.015248531699871, + "place-gilmn": 9.516508454997812, + "place-eliot": 23.08974109699356, + "place-spmnl": 16.809341964800566, + "place-waban": 23.93708015501969, + "place-esomr": 10.285920577576949, + "place-longw": 16.549794692123, + "place-lech": 11.148285927060964, + "place-woodl": 24.763782665483582, + "place-kencl": 15.552660451712, + "place-fenwy": 16.193622509544262, + "place-river": 24.454863906038742 + }, + "place-fenwd": { + "place-mispk": 0.219000257869045, + "place-rvrwy": 0.370061354191522, + "place-bckhl": 0.548791979216377, + "place-hsmnl": 0.6371560263063714, + "place-brmnl": 0.153556321706236, + "place-lngmd": 0.36500593098803, + "place-mfa": 0.633416057722898, + "place-nuniv": 0.952806411805058, + "place-symcl": 1.229320722604986, + "place-prmnl": 1.491971956275351, + "place-coecl": 1.8795757420414771, + "place-mdftf": 7.9404728187385665, + "place-newtn": 22.47091339266186, + "place-pktrm": 15.783593751242744, + "place-fbkst": 20.241455728545297, + "place-wrnst": 18.15731870314861, + "place-sumav": 19.950614754210413, + "place-alsgr": 18.000903534607893, + "place-bcnwa": 20.421695363452436, + "place-wascm": 18.450576288226756, + "place-cool": 19.730712254806928, + "place-grigg": 17.812448557300367, + "place-tapst": 20.618017332528037, + "place-sthld": 18.730604123792055, + "place-stpul": 19.503129944250578, + "place-harvd": 17.617938592370557, + "place-denrd": 20.84844885990814, + "place-chswk": 18.97542043528295, + "place-kntst": 19.343083037560646, + "place-brico": 17.261314674799173, + "place-engav": 21.010762444822237, + "place-chill": 19.150923353242067, + "place-hwsst": 19.156690175002982, + "place-babck": 16.96962648445578, + "place-clmnl": 21.1929373533564, + "place-sougr": 19.43217084973753, + "place-smary": 18.93753602399487, + "place-amory": 16.697985144878906, + "place-bndhl": 20.1143022392975, + "place-lake": 19.939755651992364, + "place-unsqu": 18.573997949475064, + "place-bucen": 16.31333609346417, + "place-chhil": 20.19214919867971, + "place-boyls": 15.492451519998212, + "place-balsq": 8.514446493105265, + "place-brkhl": 17.974570940706275, + "place-gover": 16.067613197675577, + "place-mgngl": 8.98986227369661, + "place-bvmnl": 17.441668691094012, + "place-bland": 15.94611231408574, + "place-rsmnl": 19.17124088510598, + "place-haecl": 16.321431179412233, + "place-hymnl": 15.30592344893323, + "place-newto": 21.661300718802202, + "place-buest": 16.16221855551082, + "place-bcnfd": 18.772083490540243, + "place-north": 16.55606432931679, + "place-armnl": 15.168804853406108, + "place-gilmn": 9.670064776704049, + "place-eliot": 23.243297418699797, + "place-spmnl": 16.9628982865068, + "place-waban": 24.090636476725926, + "place-esomr": 10.439476899283186, + "place-longw": 16.703351013829238, + "place-lech": 11.301842248767201, + "place-woodl": 24.91733898718982, + "place-kencl": 15.706216773418237, + "place-fenwy": 16.347178831250496, + "place-river": 24.60842022774498 + }, + "place-mispk": { + "place-rvrwy": 0.151061096322477, + "place-bckhl": 0.32979172134733203, + "place-hsmnl": 0.4181557684373264, + "place-fenwd": 0.219000257869045, + "place-brmnl": 0.372556579575281, + "place-lngmd": 0.584006188857075, + "place-mfa": 0.8524163155919431, + "place-nuniv": 1.171806669674103, + "place-symcl": 1.448320980474031, + "place-prmnl": 1.710972214144396, + "place-coecl": 2.098575999910522, + "place-mdftf": 8.159473076607611, + "place-newtn": 22.689913650530904, + "place-pktrm": 16.00259400911179, + "place-fbkst": 20.460455986414342, + "place-wrnst": 18.37631896101766, + "place-sumav": 20.169615012079458, + "place-alsgr": 18.219903792476934, + "place-bcnwa": 20.640695621321484, + "place-wascm": 18.669576546095804, + "place-cool": 19.949712512675973, + "place-grigg": 18.031448815169412, + "place-tapst": 20.837017590397082, + "place-sthld": 18.949604381661104, + "place-stpul": 19.722130202119622, + "place-harvd": 17.8369388502396, + "place-denrd": 21.06744911777718, + "place-chswk": 19.194420693151994, + "place-kntst": 19.56208329542969, + "place-brico": 17.480314932668218, + "place-engav": 21.229762702691282, + "place-chill": 19.369923611111112, + "place-hwsst": 19.375690432872027, + "place-babck": 17.188626742324825, + "place-clmnl": 21.411937611225444, + "place-sougr": 19.65117110760658, + "place-smary": 19.156536281863914, + "place-amory": 16.916985402747954, + "place-bndhl": 20.33330249716655, + "place-lake": 20.158755909861412, + "place-unsqu": 18.79299820734411, + "place-bucen": 16.532336351333214, + "place-chhil": 20.411149456548756, + "place-boyls": 15.711451777867257, + "place-balsq": 8.73344675097431, + "place-brkhl": 18.19357119857532, + "place-gover": 16.286613455544618, + "place-mgngl": 9.208862531565655, + "place-bvmnl": 17.660668948963057, + "place-bland": 16.165112571954786, + "place-rsmnl": 19.390241142975025, + "place-haecl": 16.540431437281278, + "place-hymnl": 15.524923706802275, + "place-newto": 21.880300976671247, + "place-buest": 16.381218813379864, + "place-bcnfd": 18.991083748409288, + "place-north": 16.775064587185838, + "place-armnl": 15.387805111275153, + "place-gilmn": 9.889065034573093, + "place-eliot": 23.46229767656884, + "place-spmnl": 17.181898544375848, + "place-waban": 24.30963673459497, + "place-esomr": 10.65847715715223, + "place-longw": 16.922351271698282, + "place-lech": 11.520842506636246, + "place-woodl": 25.136339245058863, + "place-kencl": 15.925217031287282, + "place-fenwy": 16.566179089119544, + "place-river": 24.827420485614024 + }, + "place-rvrwy": { + "place-bckhl": 0.178730625024855, + "place-hsmnl": 0.2670946721148494, + "place-mispk": 0.151061096322477, + "place-fenwd": 0.370061354191522, + "place-brmnl": 0.523617675897758, + "place-lngmd": 0.735067285179552, + "place-mfa": 1.00347741191442, + "place-nuniv": 1.32286776599658, + "place-symcl": 1.599382076796508, + "place-prmnl": 1.862033310466873, + "place-coecl": 2.249637096232999, + "place-mdftf": 8.310534172930089, + "place-newtn": 22.840974746853384, + "place-pktrm": 16.153655105434265, + "place-fbkst": 20.611517082736817, + "place-wrnst": 18.527380057340135, + "place-sumav": 20.320676108401933, + "place-alsgr": 18.370964888799413, + "place-bcnwa": 20.79175671764396, + "place-wascm": 18.82063764241828, + "place-cool": 20.100773608998452, + "place-grigg": 18.18250991149189, + "place-tapst": 20.98807868671956, + "place-sthld": 19.10066547798358, + "place-stpul": 19.8731912984421, + "place-harvd": 17.987999946562077, + "place-denrd": 21.21851021409966, + "place-chswk": 19.34548178947447, + "place-kntst": 19.713144391752166, + "place-brico": 17.631376028990694, + "place-engav": 21.38082379901376, + "place-chill": 19.52098470743359, + "place-hwsst": 19.526751529194506, + "place-babck": 17.3396878386473, + "place-clmnl": 21.56299870754792, + "place-sougr": 19.802232203929055, + "place-smary": 19.307597378186394, + "place-amory": 17.06804649907043, + "place-bndhl": 20.484363593489025, + "place-lake": 20.309817006183888, + "place-unsqu": 18.944059303666585, + "place-bucen": 16.683397447655693, + "place-chhil": 20.562210552871235, + "place-boyls": 15.862512874189733, + "place-balsq": 8.884507847296787, + "place-brkhl": 18.3446322948978, + "place-gover": 16.437674551867097, + "place-mgngl": 9.359923627888133, + "place-bvmnl": 17.811730045285536, + "place-bland": 16.316173668277262, + "place-rsmnl": 19.5413022392975, + "place-haecl": 16.691492533603757, + "place-hymnl": 15.675984803124752, + "place-newto": 22.031362072993723, + "place-buest": 16.53227990970234, + "place-bcnfd": 19.142144844731767, + "place-north": 16.926125683508314, + "place-armnl": 15.538866207597632, + "place-gilmn": 10.04012613089557, + "place-eliot": 23.613358772891317, + "place-spmnl": 17.332959640698324, + "place-waban": 24.460697830917447, + "place-esomr": 10.80953825347471, + "place-longw": 17.07341236802076, + "place-lech": 11.671903602958722, + "place-woodl": 25.287400341381343, + "place-kencl": 16.07627812760976, + "place-fenwy": 16.71724018544202, + "place-river": 24.9784815819365 + }, + "place-bckhl": { + "place-hsmnl": 0.0883640470899944, + "place-bckhl": 0.1768010214099658, + "place-rvrwy": 0.178730625024855, + "place-mispk": 0.32979172134733203, + "place-fenwd": 0.548791979216377, + "place-brmnl": 0.702348300922613, + "place-lngmd": 0.913797910204407, + "place-mfa": 1.1822080369392751, + "place-nuniv": 1.5015983910214352, + "place-symcl": 1.7781127018213632, + "place-prmnl": 2.040763935491728, + "place-coecl": 2.428367721257854, + "place-mdftf": 8.489264797954943, + "place-newtn": 23.01970537187824, + "place-pktrm": 16.33238573045912, + "place-fbkst": 20.790247707761672, + "place-wrnst": 18.70611068236499, + "place-sumav": 20.499406733426788, + "place-alsgr": 18.54969551382427, + "place-bcnwa": 20.970487342668815, + "place-wascm": 18.999368267443135, + "place-cool": 20.279504234023307, + "place-grigg": 18.361240536516746, + "place-tapst": 21.166809311744416, + "place-sthld": 19.279396103008434, + "place-stpul": 20.051921923466956, + "place-harvd": 18.166730571586932, + "place-denrd": 21.397240839124514, + "place-chswk": 19.524212414499324, + "place-kntst": 19.89187501677702, + "place-brico": 17.81010665401555, + "place-engav": 21.559554424038616, + "place-chill": 19.699715332458446, + "place-hwsst": 19.70548215421936, + "place-babck": 17.518418463672155, + "place-clmnl": 21.741729332572774, + "place-sougr": 19.98096282895391, + "place-smary": 19.48632800321125, + "place-amory": 17.246777124095285, + "place-bndhl": 20.66309421851388, + "place-lake": 20.488547631208743, + "place-unsqu": 19.12278992869144, + "place-bucen": 16.862128072680548, + "place-chhil": 20.74094117789609, + "place-boyls": 16.041243499214588, + "place-balsq": 9.063238472321641, + "place-brkhl": 18.523362919922654, + "place-gover": 16.616405176891952, + "place-mgngl": 9.538654252912988, + "place-bvmnl": 17.99046067031039, + "place-bland": 16.494904293302117, + "place-rsmnl": 19.720032864322356, + "place-haecl": 16.87022315862861, + "place-hymnl": 15.854715428149607, + "place-newto": 22.210092698018578, + "place-buest": 16.711010534727194, + "place-bcnfd": 19.320875469756622, + "place-north": 17.10485630853317, + "place-armnl": 15.717596832622487, + "place-gilmn": 10.218856755920426, + "place-eliot": 23.792089397916172, + "place-spmnl": 17.51169026572318, + "place-waban": 24.6394284559423, + "place-esomr": 10.988268878499564, + "place-longw": 17.252142993045616, + "place-lech": 11.850634227983576, + "place-woodl": 25.466130966406197, + "place-kencl": 16.255008752634616, + "place-fenwy": 16.895970810466874, + "place-river": 25.157212206961354 + }, + "place-hsmnl": { + "place-bckhl": 0.0883640470899944, + "place-rvrwy": 0.2670946721148494, + "place-mispk": 0.4181557684373264, + "place-fenwd": 0.6371560263063714, + "place-brmnl": 0.7907123480126074, + "place-lngmd": 1.0021619572944014, + "place-mfa": 1.2705720840292694, + "place-nuniv": 1.5899624381114292, + "place-symcl": 1.8664767489113572, + "place-prmnl": 2.129127982581722, + "place-coecl": 2.516731768347848, + "place-mdftf": 8.577628845044938, + "place-newtn": 23.10806941896823, + "place-pktrm": 16.420749777549116, + "place-fbkst": 20.87861175485167, + "place-wrnst": 18.794474729454983, + "place-sumav": 20.587770780516784, + "place-alsgr": 18.638059560914265, + "place-bcnwa": 21.058851389758807, + "place-wascm": 19.087732314533127, + "place-cool": 20.3678682811133, + "place-grigg": 18.44960458360674, + "place-tapst": 21.25517335883441, + "place-sthld": 19.367760150098427, + "place-stpul": 20.14028597055695, + "place-harvd": 18.255094618676928, + "place-denrd": 21.48560488621451, + "place-chswk": 19.61257646158932, + "place-kntst": 19.980239063867018, + "place-brico": 17.898470701105545, + "place-engav": 21.64791847112861, + "place-chill": 19.78807937954844, + "place-hwsst": 19.793846201309353, + "place-babck": 17.60678251076215, + "place-clmnl": 21.83009337966277, + "place-sougr": 20.069326876043903, + "place-smary": 19.57469205030124, + "place-amory": 17.335141171185278, + "place-bndhl": 20.751458265603873, + "place-lake": 20.576911678298735, + "place-unsqu": 19.211153975781436, + "place-bucen": 16.95049211977054, + "place-chhil": 20.829305224986083, + "place-boyls": 16.129607546304584, + "place-balsq": 9.151602519411636, + "place-brkhl": 18.611726967012647, + "place-gover": 16.70476922398195, + "place-mgngl": 9.627018300002982, + "place-bvmnl": 18.078824717400384, + "place-bland": 16.58326834039211, + "place-rsmnl": 19.808396911412352, + "place-haecl": 16.958587205718604, + "place-hymnl": 15.943079475239601, + "place-newto": 22.298456745108574, + "place-buest": 16.79937458181719, + "place-bcnfd": 19.409239516846615, + "place-north": 17.19322035562316, + "place-armnl": 15.80596087971248, + "place-gilmn": 10.30722080301042, + "place-eliot": 23.880453445006168, + "place-spmnl": 17.60005431281317, + "place-waban": 24.727792503032298, + "place-esomr": 11.076632925589557, + "place-longw": 17.34050704013561, + "place-lech": 11.938998275073573, + "place-woodl": 25.55449501349619, + "place-kencl": 16.34337279972461, + "place-fenwy": 16.984334857556867, + "place-river": 25.24557625405135 + }, + "place-miltt": { + "place-cenav": 0.312470201523105, + "place-valrd": 0.738503621972679, + "place-capst": 1.057785101258649, + "place-matt": 1.3041930973116989, + "place-butlr": 0.296833968374692, + "place-cedgr": 0.884430273453034, + "place-asmnl": 1.20942534100851 + }, + "place-cenav": { + "place-valrd": 0.426033420449574, + "place-capst": 0.745314899735544, + "place-matt": 0.991722895788594, + "place-miltt": 0.312470201523105, + "place-butlr": 0.609304169897797, + "place-cedgr": 1.1969004749761392, + "place-asmnl": 1.5218955425316152 + }, + "place-valrd": { + "place-capst": 0.31928147928597, + "place-matt": 0.56568947533902, + "place-cenav": 0.426033420449574, + "place-miltt": 0.738503621972679, + "place-butlr": 1.0353375903473712, + "place-cedgr": 1.6229338954257133, + "place-asmnl": 1.9479289629811893 + }, + "place-capst": { + "place-matt": 0.24640799605305, + "place-valrd": 0.31928147928597, + "place-cenav": 0.745314899735544, + "place-miltt": 1.057785101258649, + "place-butlr": 1.3546190696333409, + "place-cedgr": 1.942215374711683, + "place-asmnl": 2.2672104422671593 + }, + "place-matt": { + "place-capst": 0.24640799605305, + "place-valrd": 0.56568947533902, + "place-cenav": 0.991722895788594, + "place-miltt": 1.3041930973116989, + "place-butlr": 1.6010270656863907, + "place-cedgr": 2.188623370764733, + "place-asmnl": 2.5136184383202087 + } +} \ No newline at end of file diff --git a/common/constants/station_distances.ts b/common/constants/station_distances.ts new file mode 100644 index 000000000..0c84c9b8e --- /dev/null +++ b/common/constants/station_distances.ts @@ -0,0 +1,3 @@ +import stationDistancesJson from './station_distances.json'; + +export const station_distances = stationDistancesJson; diff --git a/common/constants/stations.json b/common/constants/stations.json index 51bafd46c..8d26a85a1 100644 --- a/common/constants/stations.json +++ b/common/constants/stations.json @@ -8,12 +8,19 @@ "stations": [ { "stop_name": "Alewife", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-alfcl", "order": 1, "stops": { - "0": ["70061"], - "1": ["70061"] + "0": [ + "70061" + ], + "1": [ + "70061" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -22,12 +29,19 @@ }, { "stop_name": "Davis", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-davis", "order": 2, "stops": { - "0": ["70064"], - "1": ["70063"] + "0": [ + "70064" + ], + "1": [ + "70063" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -35,34 +49,55 @@ }, { "stop_name": "Porter", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-portr", "order": 3, "stops": { - "0": ["70066"], - "1": ["70065"] + "0": [ + "70066" + ], + "1": [ + "70065" + ] }, "accessible": true }, { "stop_name": "Harvard", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-harsq", "order": 4, "stops": { - "0": ["70068"], - "1": ["70067"] + "0": [ + "70068" + ], + "1": [ + "70067" + ] }, "accessible": true }, { "stop_name": "Central", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-cntsq", "order": 5, "stops": { - "0": ["70070"], - "1": ["70069"] + "0": [ + "70070" + ], + "1": [ + "70069" + ] }, "accessible": true, "enclosed_bike_parking": true @@ -70,140 +105,219 @@ { "stop_name": "Kendall/MIT", "short": "Kendall", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-knncl", "order": 6, "stops": { - "0": ["70072"], - "1": ["70071"] + "0": [ + "70072" + ], + "1": [ + "70071" + ] }, "accessible": true }, { "stop_name": "Charles/MGH", "short": "MGH", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-chmnl", "order": 7, "stops": { - "0": ["70074"], - "1": ["70073"] + "0": [ + "70074" + ], + "1": [ + "70073" + ] }, "accessible": true }, { "stop_name": "Park Street", "short": "Park St.", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-pktrm", "order": 8, "stops": { - "0": ["70076"], - "1": ["70075"] + "0": [ + "70076" + ], + "1": [ + "70075" + ] }, "accessible": true }, { "stop_name": "Downtown Crossing", "short": "DTX", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-dwnxg", "order": 9, "stops": { - "0": ["70078"], - "1": ["70077"] + "0": [ + "70078" + ], + "1": [ + "70077" + ] }, "accessible": true }, { "stop_name": "South Station", "short": "S. Station", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-sstat", "order": 10, "stops": { - "0": ["70080"], - "1": ["70079"] + "0": [ + "70080" + ], + "1": [ + "70079" + ] }, "accessible": true }, { "stop_name": "Broadway", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-brdwy", "order": 11, "stops": { - "0": ["70082"], - "1": ["70081"] + "0": [ + "70082" + ], + "1": [ + "70081" + ] }, "accessible": true }, { "stop_name": "Andrew", - "branches": ["A", "B"], + "branches": [ + "A", + "B" + ], "station": "place-andrw", "order": 12, "stops": { - "0": ["70084"], - "1": ["70083"] + "0": [ + "70084" + ], + "1": [ + "70083" + ] }, "accessible": true }, { "stop_name": "JFK/UMass (Ashmont)", "short": "JFK (A)", - "branches": ["A"], + "branches": [ + "A" + ], "station": "place-jfk", "order": 101, "stops": { - "0": ["70086"], - "1": ["70085"] + "0": [ + "70086" + ], + "1": [ + "70085" + ] }, "accessible": true }, { "stop_name": "Savin Hill", - "branches": ["A"], + "branches": [ + "A" + ], "station": "place-shmnl", "order": 102, "stops": { - "0": ["70088"], - "1": ["70087"] + "0": [ + "70088" + ], + "1": [ + "70087" + ] }, "accessible": true }, { "stop_name": "Fields Corner", "short": "Fields Cor.", - "branches": ["A"], + "branches": [ + "A" + ], "station": "place-fldcr", "order": 103, "stops": { - "0": ["70090"], - "1": ["70089"] + "0": [ + "70090" + ], + "1": [ + "70089" + ] }, "accessible": true, "enclosed_bike_parking": true }, { "stop_name": "Shawmut", - "branches": ["A"], + "branches": [ + "A" + ], "station": "place-smmnl", "order": 104, "stops": { - "0": ["70092"], - "1": ["70091"] + "0": [ + "70092" + ], + "1": [ + "70091" + ] }, "accessible": true }, { "stop_name": "Ashmont", - "branches": ["A"], + "branches": [ + "A" + ], "station": "place-asmnl", "order": 105, "stops": { - "0": ["70094"], - "1": ["70093"] + "0": [ + "70094" + ], + "1": [ + "70093" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -213,36 +327,54 @@ { "stop_name": "JFK/UMass (Braintree)", "short": "JFK (B)", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-jfk", "order": 201, "stops": { - "0": ["70096"], - "1": ["70095"] + "0": [ + "70096" + ], + "1": [ + "70095" + ] }, "accessible": true }, { "stop_name": "North Quincy", "short": "N. Quincy", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-nqncy", "order": 202, "stops": { - "0": ["70098"], - "1": ["70097"] + "0": [ + "70098" + ], + "1": [ + "70097" + ] }, "accessible": true, "enclosed_bike_parking": true }, { "stop_name": "Wollaston", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-wlsta", "order": 203, "stops": { - "0": ["70100"], - "1": ["70099"] + "0": [ + "70100" + ], + "1": [ + "70099" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -251,35 +383,53 @@ { "stop_name": "Quincy Center", "short": "Quincy Ctr.", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-qnctr", "order": 204, "stops": { - "0": ["70102"], - "1": ["70101"] + "0": [ + "70102" + ], + "1": [ + "70101" + ] }, "accessible": true }, { "stop_name": "Quincy Adams", "short": "Q. Adams", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-qamnl", "order": 205, "stops": { - "0": ["70104"], - "1": ["70103"] + "0": [ + "70104" + ], + "1": [ + "70103" + ] }, "accessible": true }, { "stop_name": "Braintree", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-brntn", "order": 206, "stops": { - "0": ["70105"], - "1": ["70105"] + "0": [ + "70105" + ], + "1": [ + "70105" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -301,8 +451,12 @@ "station": "place-ogmnl", "order": 1, "stops": { - "0": ["70036"], - "1": ["70036"] + "0": [ + "70036" + ], + "1": [ + "70036" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -316,8 +470,12 @@ "station": "place-mlmnl", "order": 2, "stops": { - "0": ["70035"], - "1": ["70034"] + "0": [ + "70035" + ], + "1": [ + "70034" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -329,8 +487,12 @@ "station": "place-welln", "order": 3, "stops": { - "0": ["70033"], - "1": ["70032"] + "0": [ + "70033" + ], + "1": [ + "70032" + ] }, "accessible": true, "enclosed_bike_parking": true @@ -341,8 +503,12 @@ "station": "place-astao", "order": 4, "stops": { - "0": ["70279"], - "1": ["70278"] + "0": [ + "70279" + ], + "1": [ + "70278" + ] }, "accessible": true }, @@ -353,8 +519,12 @@ "station": "place-sull", "order": 5, "stops": { - "0": ["70031"], - "1": ["70030"] + "0": [ + "70031" + ], + "1": [ + "70030" + ] }, "accessible": true, "enclosed_bike_parking": true @@ -366,8 +536,12 @@ "station": "place-ccmnl", "order": 6, "stops": { - "0": ["70029"], - "1": ["70028"] + "0": [ + "70029" + ], + "1": [ + "70028" + ] }, "accessible": true }, @@ -378,8 +552,12 @@ "station": "place-north", "order": 7, "stops": { - "0": ["70027"], - "1": ["70026"] + "0": [ + "70027" + ], + "1": [ + "70026" + ] }, "accessible": true }, @@ -389,8 +567,12 @@ "station": "place-haecl", "order": 8, "stops": { - "0": ["70025"], - "1": ["70024"] + "0": [ + "70025" + ], + "1": [ + "70024" + ] }, "accessible": true }, @@ -401,8 +583,12 @@ "station": "place-state", "order": 9, "stops": { - "0": ["70023"], - "1": ["70022"] + "0": [ + "70023" + ], + "1": [ + "70022" + ] }, "accessible": true }, @@ -413,8 +599,12 @@ "station": "place-dwnxg", "order": 10, "stops": { - "0": ["70021"], - "1": ["70020"] + "0": [ + "70021" + ], + "1": [ + "70020" + ] }, "accessible": true }, @@ -424,8 +614,12 @@ "station": "place-chncl", "order": 11, "stops": { - "0": ["70019"], - "1": ["70018"] + "0": [ + "70019" + ], + "1": [ + "70018" + ] }, "accessible": true }, @@ -436,8 +630,12 @@ "station": "place-tumnl", "order": 12, "stops": { - "0": ["70017"], - "1": ["70016"] + "0": [ + "70017" + ], + "1": [ + "70016" + ] }, "accessible": true }, @@ -447,8 +645,12 @@ "station": "place-bbsta", "order": 13, "stops": { - "0": ["70015"], - "1": ["70014"] + "0": [ + "70015" + ], + "1": [ + "70014" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -461,8 +663,12 @@ "station": "place-masta", "order": 14, "stops": { - "0": ["70013"], - "1": ["70012"] + "0": [ + "70013" + ], + "1": [ + "70012" + ] }, "accessible": true }, @@ -472,8 +678,12 @@ "station": "place-rugg", "order": 15, "stops": { - "0": ["70011"], - "1": ["70010"] + "0": [ + "70011" + ], + "1": [ + "70010" + ] }, "accessible": true }, @@ -484,8 +694,12 @@ "station": "place-rcmnl", "order": 16, "stops": { - "0": ["70009"], - "1": ["70008"] + "0": [ + "70009" + ], + "1": [ + "70008" + ] }, "accessible": true, "enclosed_bike_parking": true @@ -497,8 +711,12 @@ "station": "place-jaksn", "order": 17, "stops": { - "0": ["70007"], - "1": ["70006"] + "0": [ + "70007" + ], + "1": [ + "70006" + ] }, "accessible": true, "enclosed_bike_parking": true @@ -509,8 +727,12 @@ "station": "place-sbmnl", "order": 18, "stops": { - "0": ["70005"], - "1": ["70004"] + "0": [ + "70005" + ], + "1": [ + "70004" + ] }, "accessible": true }, @@ -521,8 +743,12 @@ "station": "place-grnst", "order": 19, "stops": { - "0": ["70003"], - "1": ["70002"] + "0": [ + "70003" + ], + "1": [ + "70002" + ] }, "accessible": true, "enclosed_bike_parking": true @@ -533,8 +759,12 @@ "station": "place-forhl", "order": 20, "stops": { - "0": ["70001"], - "1": ["70001"] + "0": [ + "70001" + ], + "1": [ + "70001" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -556,8 +786,12 @@ "station": "place-wondl", "order": 1, "stops": { - "0": ["70060"], - "1": ["70059"] + "0": [ + "70060" + ], + "1": [ + "70059" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -571,8 +805,12 @@ "station": "place-rbmnl", "order": 2, "stops": { - "0": ["70058"], - "1": ["70057"] + "0": [ + "70058" + ], + "1": [ + "70057" + ] }, "accessible": true }, @@ -582,8 +820,12 @@ "station": "place-bmmnl", "order": 3, "stops": { - "0": ["70056"], - "1": ["70055"] + "0": [ + "70056" + ], + "1": [ + "70055" + ] }, "accessible": true }, @@ -594,8 +836,12 @@ "station": "place-sdmnl", "order": 4, "stops": { - "0": ["70054"], - "1": ["70053"] + "0": [ + "70054" + ], + "1": [ + "70053" + ] }, "accessible": true }, @@ -606,8 +852,12 @@ "station": "place-orhte", "order": 5, "stops": { - "0": ["70052"], - "1": ["70051"] + "0": [ + "70052" + ], + "1": [ + "70051" + ] }, "accessible": true, "enclosed_bike_parking": true @@ -618,8 +868,12 @@ "station": "place-wimnl", "order": 6, "stops": { - "0": ["70050"], - "1": ["70049"] + "0": [ + "70050" + ], + "1": [ + "70049" + ] }, "accessible": true, "enclosed_bike_parking": true @@ -630,8 +884,12 @@ "station": "place-aport", "order": 7, "stops": { - "0": ["70048"], - "1": ["70047"] + "0": [ + "70048" + ], + "1": [ + "70047" + ] }, "accessible": true }, @@ -641,8 +899,12 @@ "station": "place-mvbcl", "order": 8, "stops": { - "0": ["70046"], - "1": ["70045"] + "0": [ + "70046" + ], + "1": [ + "70045" + ] }, "accessible": true, "enclosed_bike_parking": true @@ -653,8 +915,12 @@ "station": "place-aqucl", "order": 9, "stops": { - "0": ["70044"], - "1": ["70043"] + "0": [ + "70044" + ], + "1": [ + "70043" + ] }, "accessible": true }, @@ -665,8 +931,12 @@ "station": "place-state", "order": 10, "stops": { - "0": ["70042"], - "1": ["70041"] + "0": [ + "70042" + ], + "1": [ + "70041" + ] }, "accessible": true }, @@ -677,8 +947,12 @@ "station": "place-gover", "order": 11, "stops": { - "0": ["70040"], - "1": ["70039"] + "0": [ + "70040" + ], + "1": [ + "70039" + ] }, "accessible": true }, @@ -688,8 +962,12 @@ "station": "place-bomnl", "order": 12, "stops": { - "0": ["70038"], - "1": ["70838"] + "0": [ + "70038" + ], + "1": [ + "70838" + ] }, "accessible": false, "terminus": true @@ -705,13 +983,19 @@ "stations": [ { "stop_name": "Medford/Tufts", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-mdftf", "disabled": false, "order": 1, "stops": { - "0": ["70511"], - "1": ["70512"] + "0": [ + "70511" + ], + "1": [ + "70512" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -719,64 +1003,94 @@ }, { "stop_name": "Ball Square", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-balsq", "disabled": false, "order": 2, "stops": { - "0": ["70509"], - "1": ["70510"] + "0": [ + "70509" + ], + "1": [ + "70510" + ] }, "accessible": true, "enclosed_bike_parking": true }, { "stop_name": "Magoun Square", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-mgngl", "disabled": false, "order": 3, "stops": { - "0": ["70507"], - "1": ["70508"] + "0": [ + "70507" + ], + "1": [ + "70508" + ] }, "accessible": true, "enclosed_bike_parking": true }, { "stop_name": "Gilman Square", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-gilmn", "disabled": false, "order": 4, "stops": { - "0": ["70505"], - "1": ["70506"] + "0": [ + "70505" + ], + "1": [ + "70506" + ] }, "accessible": true }, { "stop_name": "East Somerville", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-esomr", "disabled": false, "order": 5, "stops": { - "0": ["70513"], - "1": ["70514"] + "0": [ + "70513" + ], + "1": [ + "70514" + ] }, "accessible": true, "enclosed_bike_parking": true }, { "stop_name": "Union Square", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-unsqu", "disabled": false, "order": 6, "stops": { - "0": ["70503"], - "1": ["70504"] + "0": [ + "70503" + ], + "1": [ + "70504" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -784,594 +1098,948 @@ }, { "stop_name": "Lechmere", - "branches": ["D", "E"], + "branches": [ + "D", + "E" + ], "station": "place-lech", "order": 7, "stops": { - "0": ["70501", "70209"], - "1": ["70502", "70210"] + "0": [ + "70501", + "70209" + ], + "1": [ + "70502", + "70210" + ] }, "accessible": true, "enclosed_bike_parking": true }, { "stop_name": "Science Park", - "branches": ["D", "E"], + "branches": [ + "D", + "E" + ], "station": "place-spmnl", "order": 8, "stops": { - "0": ["70207"], - "1": ["70208"] + "0": [ + "70207" + ], + "1": [ + "70208" + ] }, "accessible": true }, { "stop_name": "North Station", - "branches": ["C", "D", "E"], + "branches": [ + "C", + "D", + "E" + ], "station": "place-north", "order": 9, "stops": { - "0": ["70205"], - "1": ["70206"] + "0": [ + "70205" + ], + "1": [ + "70206" + ] }, "accessible": true }, { "stop_name": "Haymarket", - "branches": ["C", "D", "E"], + "branches": [ + "C", + "D", + "E" + ], "station": "place-haecl", "order": 10, "stops": { - "0": ["70203"], - "1": ["70204"] + "0": [ + "70203" + ], + "1": [ + "70204" + ] }, "accessible": true }, { "stop_name": "Government Center", - "branches": ["B", "C", "D", "E"], + "branches": [ + "B", + "C", + "D", + "E" + ], "station": "place-gover", "order": 11, "stops": { - "0": ["70201"], - "1": ["70202"] + "0": [ + "70201" + ], + "1": [ + "70202" + ] }, "accessible": true }, { "stop_name": "Park Street", - "branches": ["B", "C", "D", "E"], + "branches": [ + "B", + "C", + "D", + "E" + ], "station": "place-pktrm", "order": 12, "stops": { - "0": ["70200"], - "1": ["70196", "70197", "70198", "70199"] + "0": [ + "70200" + ], + "1": [ + "70196", + "70197", + "70198", + "70199" + ] }, "accessible": true }, { "stop_name": "Boylston", - "branches": ["B", "C", "D", "E"], + "branches": [ + "B", + "C", + "D", + "E" + ], "station": "place-boyls", "order": 13, "stops": { - "0": ["70158"], - "1": ["70159"] + "0": [ + "70158" + ], + "1": [ + "70159" + ] }, "accessible": false }, { "stop_name": "Arlington", - "branches": ["B", "C", "D", "E"], + "branches": [ + "B", + "C", + "D", + "E" + ], "station": "place-armnl", "order": 14, "stops": { - "0": ["70156"], - "1": ["70157"] + "0": [ + "70156" + ], + "1": [ + "70157" + ] }, "accessible": true }, { "stop_name": "Copley", - "branches": ["B", "C", "D", "E"], + "branches": [ + "B", + "C", + "D", + "E" + ], "station": "place-coecl", "order": 15, "stops": { - "0": ["70154"], - "1": ["70155"] + "0": [ + "70154" + ], + "1": [ + "70155" + ] }, "accessible": true }, { "stop_name": "Hynes", - "branches": ["B", "C", "D"], + "branches": [ + "B", + "C", + "D" + ], "station": "place-hymnl", "order": 16, "stops": { - "0": ["70152"], - "1": ["70153"] + "0": [ + "70152" + ], + "1": [ + "70153" + ] }, "accessible": false }, { "stop_name": "Kenmore", - "branches": ["B", "C", "D"], + "branches": [ + "B", + "C", + "D" + ], "station": "place-kencl", "order": 17, "stops": { - "0": ["70150", "71150"], - "1": ["70151", "71151"] + "0": [ + "70150", + "71150" + ], + "1": [ + "70151", + "71151" + ] }, "accessible": true }, { "stop_name": "Blandford Street", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-bland", "order": 101, "stops": { - "0": ["70148"], - "1": ["70149"] + "0": [ + "70148" + ], + "1": [ + "70149" + ] }, "accessible": false }, { "stop_name": "Boston University East", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-buest", "order": 102, "stops": { - "0": ["70146"], - "1": ["70147"] + "0": [ + "70146" + ], + "1": [ + "70147" + ] }, "accessible": true }, { "stop_name": "Boston University Central", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-bucen", "order": 103, "stops": { - "0": ["70144"], - "1": ["70145"] + "0": [ + "70144" + ], + "1": [ + "70145" + ] }, "accessible": true }, { "stop_name": "Amory Street", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-amory", "order": 105, "stops": { - "0": ["170140", "70140"], - "1": ["170141", "70141"] + "0": [ + "170140", + "70140" + ], + "1": [ + "170141", + "70141" + ] }, "accessible": true }, { "stop_name": "Babcock Street", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-babck", "order": 107, "stops": { - "0": ["170136", "70136"], - "1": ["170137", "70137"] + "0": [ + "170136", + "70136" + ], + "1": [ + "170137", + "70137" + ] }, "accessible": true }, { "stop_name": "Packards Corner", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-brico", "order": 108, "stops": { - "0": ["70134"], - "1": ["70135"] + "0": [ + "70134" + ], + "1": [ + "70135" + ] }, "accessible": false }, { "stop_name": "Harvard Avenue", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-harvd", "order": 109, "stops": { - "0": ["70130"], - "1": ["70131"] + "0": [ + "70130" + ], + "1": [ + "70131" + ] }, "accessible": true }, { "stop_name": "Griggs Street", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-grigg", "order": 110, "stops": { - "0": ["70128"], - "1": ["70129"] + "0": [ + "70128" + ], + "1": [ + "70129" + ] }, "accessible": false }, { "stop_name": "Allston Street", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-alsgr", "order": 111, "stops": { - "0": ["70126"], - "1": ["70127"] + "0": [ + "70126" + ], + "1": [ + "70127" + ] }, "accessible": false }, { "stop_name": "Warren Street", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-wrnst", "order": 112, "stops": { - "0": ["70124"], - "1": ["70125"] + "0": [ + "70124" + ], + "1": [ + "70125" + ] }, "accessible": false, "enclosed_bike_parking": true }, { "stop_name": "Washington Street", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-wascm", "order": 113, "stops": { - "0": ["70120"], - "1": ["70121"] + "0": [ + "70120" + ], + "1": [ + "70121" + ] }, "accessible": true }, { "stop_name": "Sutherland Road", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-sthld", "order": 114, "stops": { - "0": ["70116"], - "1": ["70117"] + "0": [ + "70116" + ], + "1": [ + "70117" + ] }, "accessible": false }, { "stop_name": "Chiswick Road", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-chswk", "order": 115, "stops": { - "0": ["70114"], - "1": ["70115"] + "0": [ + "70114" + ], + "1": [ + "70115" + ] }, "accessible": false }, { "stop_name": "Chestnut Hill Avenue", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-chill", "order": 116, "stops": { - "0": ["70112"], - "1": ["70113"] + "0": [ + "70112" + ], + "1": [ + "70113" + ] }, "accessible": false }, { "stop_name": "South Street", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-sougr", "order": 117, "stops": { - "0": ["70110"], - "1": ["70111"] + "0": [ + "70110" + ], + "1": [ + "70111" + ] }, "accessible": false }, { "stop_name": "Boston College", - "branches": ["B"], + "branches": [ + "B" + ], "station": "place-lake", "order": 118, "stops": { - "0": ["70106"], - "1": ["70107"] + "0": [ + "70106" + ], + "1": [ + "70107" + ] }, "accessible": true, "terminus": true }, { "stop_name": "Saint Marys Street", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-smary", "order": 201, "stops": { - "0": ["70212"], - "1": ["70211"] + "0": [ + "70212" + ], + "1": [ + "70211" + ] }, "accessible": true }, { "stop_name": "Hawes Street", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-hwsst", "order": 202, "stops": { - "0": ["70214"], - "1": ["70213"] + "0": [ + "70214" + ], + "1": [ + "70213" + ] }, "accessible": false }, { "stop_name": "Kent Street", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-kntst", "order": 203, "stops": { - "0": ["70216"], - "1": ["70215"] + "0": [ + "70216" + ], + "1": [ + "70215" + ] }, "accessible": false }, { "stop_name": "Saint Paul Street (C)", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-stpul", "order": 204, "stops": { - "0": ["70218"], - "1": ["70217"] + "0": [ + "70218" + ], + "1": [ + "70217" + ] }, "accessible": false }, { "stop_name": "Coolidge Corner", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-cool", "order": 205, "stops": { - "0": ["70220"], - "1": ["70219"] + "0": [ + "70220" + ], + "1": [ + "70219" + ] }, "accessible": true }, { "stop_name": "Summit Avenue", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-sumav", "order": 206, "stops": { - "0": ["70224"], - "1": ["70223"] + "0": [ + "70224" + ], + "1": [ + "70223" + ] }, "accessible": false, "enclosed_bike_parking": true }, { "stop_name": "Brandon Hall", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-bndhl", "order": 207, "stops": { - "0": ["70226"], - "1": ["70225"] + "0": [ + "70226" + ], + "1": [ + "70225" + ] }, "accessible": false }, { "stop_name": "Fairbanks Street", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-fbkst", "order": 208, "stops": { - "0": ["70228"], - "1": ["70227"] + "0": [ + "70228" + ], + "1": [ + "70227" + ] }, "accessible": false }, { "stop_name": "Washington Square", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-bcnwa", "order": 209, "stops": { - "0": ["70230"], - "1": ["70229"] + "0": [ + "70230" + ], + "1": [ + "70229" + ] }, "accessible": true }, { "stop_name": "Tappan Street", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-tapst", "order": 210, "stops": { - "0": ["70232"], - "1": ["70231"] + "0": [ + "70232" + ], + "1": [ + "70231" + ] }, "accessible": false }, { "stop_name": "Dean Road", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-denrd", "order": 211, "stops": { - "0": ["70234"], - "1": ["70233"] + "0": [ + "70234" + ], + "1": [ + "70233" + ] }, "accessible": false }, { "stop_name": "Englewood Avenue", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-engav", "order": 212, "stops": { - "0": ["70236"], - "1": ["70235"] + "0": [ + "70236" + ], + "1": [ + "70235" + ] }, "accessible": false }, { "stop_name": "Cleveland Circle", - "branches": ["C"], + "branches": [ + "C" + ], "station": "place-clmnl", "order": 213, "stops": { - "0": ["70238"], - "1": ["70237"] + "0": [ + "70238" + ], + "1": [ + "70237" + ] }, "accessible": true, "terminus": true }, { "stop_name": "Fenway", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-fenwy", "order": 301, "stops": { - "0": ["70186"], - "1": ["70187"] + "0": [ + "70186" + ], + "1": [ + "70187" + ] }, "accessible": true }, { "stop_name": "Longwood", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-longw", "order": 302, "stops": { - "0": ["70182"], - "1": ["70183"] + "0": [ + "70182" + ], + "1": [ + "70183" + ] }, "accessible": true }, { "stop_name": "Brookline Village", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-bvmnl", "order": 303, "stops": { - "0": ["70180"], - "1": ["70181"] + "0": [ + "70180" + ], + "1": [ + "70181" + ] }, "accessible": true, "enclosed_bike_parking": true }, { "stop_name": "Brookline Hills", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-brkhl", "order": 304, "stops": { - "0": ["70178"], - "1": ["70179"] + "0": [ + "70178" + ], + "1": [ + "70179" + ] }, "accessible": true }, { "stop_name": "Beaconsfield", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-bcnfd", "order": 305, "stops": { - "0": ["70176"], - "1": ["70177"] + "0": [ + "70176" + ], + "1": [ + "70177" + ] }, "accessible": false }, { "stop_name": "Reservoir", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-rsmnl", "order": 306, "stops": { - "0": ["70174"], - "1": ["70175"] + "0": [ + "70174" + ], + "1": [ + "70175" + ] }, "accessible": true, "enclosed_bike_parking": true }, { "stop_name": "Chestnut Hill", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-chhil", "order": 307, "stops": { - "0": ["70172"], - "1": ["70173"] + "0": [ + "70172" + ], + "1": [ + "70173" + ] }, "accessible": false, "enclosed_bike_parking": true }, { "stop_name": "Newton Centre", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-newto", "order": 308, "stops": { - "0": ["70170"], - "1": ["70171"] + "0": [ + "70170" + ], + "1": [ + "70171" + ] }, "accessible": true }, { "stop_name": "Newton Highlands", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-newtn", "order": 309, "stops": { - "0": ["70168"], - "1": ["70169"] + "0": [ + "70168" + ], + "1": [ + "70169" + ] }, "accessible": true }, { "stop_name": "Eliot", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-eliot", "order": 310, "stops": { - "0": ["70166"], - "1": ["70167"] + "0": [ + "70166" + ], + "1": [ + "70167" + ] }, "accessible": false, "enclosed_bike_parking": true }, { "stop_name": "Waban", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-waban", "order": 311, "stops": { - "0": ["70164"], - "1": ["70165"] + "0": [ + "70164" + ], + "1": [ + "70165" + ] }, "accessible": false }, { "stop_name": "Woodland", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-woodl", "order": 312, "stops": { - "0": ["70162"], - "1": ["70163"] + "0": [ + "70162" + ], + "1": [ + "70163" + ] }, "accessible": true, "enclosed_bike_parking": true }, { "stop_name": "Riverside", - "branches": ["D"], + "branches": [ + "D" + ], "station": "place-river", "order": 313, "stops": { - "0": ["70160"], - "1": ["70161"] + "0": [ + "70160" + ], + "1": [ + "70161" + ] }, "accessible": true, "enclosed_bike_parking": true, @@ -1379,126 +2047,192 @@ }, { "stop_name": "Prudential", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-prmnl", "order": 401, "stops": { - "0": ["70240"], - "1": ["70239"] + "0": [ + "70240" + ], + "1": [ + "70239" + ] }, "accessible": true }, { "stop_name": "Symphony", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-symcl", "order": 402, "stops": { - "0": ["70242"], - "1": ["70241"] + "0": [ + "70242" + ], + "1": [ + "70241" + ] }, "accessible": false }, { "stop_name": "Northeastern University", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-nuniv", "order": 403, "stops": { - "0": ["70244"], - "1": ["70243"] + "0": [ + "70244" + ], + "1": [ + "70243" + ] }, "accessible": true }, { "stop_name": "Museum of Fine Arts", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-mfa", "order": 404, "stops": { - "0": ["70246"], - "1": ["70245"] + "0": [ + "70246" + ], + "1": [ + "70245" + ] }, "accessible": true }, { "stop_name": "Longwood Medical Area", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-lngmd", "order": 405, "stops": { - "0": ["70248"], - "1": ["70247"] + "0": [ + "70248" + ], + "1": [ + "70247" + ] }, "accessible": true }, { "stop_name": "Brigham Circle", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-brmnl", "order": 406, "stops": { - "0": ["70250"], - "1": ["70249"] + "0": [ + "70250" + ], + "1": [ + "70249" + ] }, "accessible": true }, { "stop_name": "Fenwood Road", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-fenwd", "order": 407, "stops": { - "0": ["70252"], - "1": ["70251"] + "0": [ + "70252" + ], + "1": [ + "70251" + ] }, "accessible": false }, { "stop_name": "Mission Park", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-mispk", "order": 408, "stops": { - "0": ["70254"], - "1": ["70253"] + "0": [ + "70254" + ], + "1": [ + "70253" + ] }, "accessible": false }, { "stop_name": "Riverway", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-rvrwy", "order": 409, "stops": { - "0": ["70256"], - "1": ["70255"] + "0": [ + "70256" + ], + "1": [ + "70255" + ] }, "accessible": false }, { "stop_name": "Back of the Hill", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-bckhl", "order": 410, "stops": { - "0": ["70258"], - "1": ["70257"] + "0": [ + "70258" + ], + "1": [ + "70257" + ] }, "accessible": false }, { "stop_name": "Heath Street", - "branches": ["E"], + "branches": [ + "E" + ], "station": "place-hsmnl", "order": 411, "stops": { - "0": ["70260"], - "1": ["70260"] + "0": [ + "70260" + ], + "1": [ + "70260" + ] }, "accessible": true, "terminus": true } ] } -} +} \ No newline at end of file diff --git a/common/types/charts.ts b/common/types/charts.ts index a97501cb0..0c965410e 100644 --- a/common/types/charts.ts +++ b/common/types/charts.ts @@ -13,6 +13,8 @@ export interface SingleDayDataPoint { benchmark_travel_time_sec?: number; benchmark_headway_time_sec?: number; threshold_flag_1?: string; + speed_mph?: number; + benchmark_speed_mph?: number; } export interface AggregateDataPoint { @@ -57,17 +59,19 @@ export enum MetricFieldKeys { travelTimeSec = 'travel_time_sec', headwayTimeSec = 'headway_time_sec', dwellTimeSec = 'dwell_time_sec', + speedMph = 'speed_mph', } export enum BenchmarkFieldKeys { benchmarkTravelTimeSec = 'benchmark_travel_time_sec', benchmarkHeadwayTimeSec = 'benchmark_headway_time_sec', + benchmarkSpeedMph = 'benchmark_speed_mph', } export type PointField = PointFieldKeys; export type MetricField = MetricFieldKeys; export type BenchmarkField = BenchmarkFieldKeys; -type DataName = 'traveltimes' | 'headways' | 'dwells' | 'traveltimesByHour'; +type DataName = 'traveltimes' | 'headways' | 'dwells' | 'traveltimesByHour' | 'speeds'; export interface LineProps { chartId: string; @@ -90,6 +94,7 @@ export interface AggregateLineProps extends LineProps { suggestedYMax?: number; byTime?: boolean; children?: React.ReactNode; + yUnit: string; } export interface SingleDayLineProps extends LineProps { @@ -97,6 +102,7 @@ export interface SingleDayLineProps extends LineProps { metricField: MetricField; date: string | undefined; benchmarkField?: BenchmarkField; + units: 'Minutes' | 'MPH'; } export interface HeadwayHistogramProps { diff --git a/common/types/dataPoints.ts b/common/types/dataPoints.ts index ced81bc48..410062a6f 100644 --- a/common/types/dataPoints.ts +++ b/common/types/dataPoints.ts @@ -43,6 +43,10 @@ export interface DayDelayTotals { export type Direction = 'northbound' | 'southbound'; +export type Distance = { + [to_stop_id: string]: number; +}; + export interface SlowZone { start: string; end: string; diff --git a/common/utils/stations.ts b/common/utils/stations.ts index 51a541d32..b19aa54dc 100644 --- a/common/utils/stations.ts +++ b/common/utils/stations.ts @@ -1,8 +1,9 @@ import type { BusRoute, Line, LineShort } from '../types/lines'; import { isLineMap, type Station } from '../types/stations'; import type { Location } from '../types/charts'; -import type { Direction } from '../types/dataPoints'; +import type { Direction, Distance } from '../types/dataPoints'; import { stations, rtStations, busStations } from '../constants/stations'; +import { station_distances } from '../constants/station_distances'; export const optionsForField = ( type: 'from' | 'to', @@ -62,8 +63,19 @@ const createParentStationIndex = () => { return index; }; +const createStationDistanceIndex = () => { + const index: Record = {}; + + for (const [key, value] of Object.entries(station_distances)) { + index[key] = value as Distance; + } + + return index; +}; + const stationIndex = createStationIndex(); const parentStationIndex = createParentStationIndex(); +const stationDistanceIndex = createStationDistanceIndex(); export const getStationById = (stationStopId: string) => { return stationIndex[stationStopId]; @@ -73,6 +85,10 @@ export const getParentStationForStopId = (stopId: string) => { return parentStationIndex[stopId]; }; +export const getStationDistance = (fromStationId: string, toStationId: string) => { + return stationDistanceIndex[fromStationId][toStationId]; +}; + export const getStationForInvalidFromSelection = (line: Line, busRoute?: BusRoute): Station => { if (line === 'line-green') return getParentStationForStopId('70202'); // Gov. Center if (line === 'line-red') return getParentStationForStopId('70076'); // Park St. diff --git a/common/utils/widgets.ts b/common/utils/widgets.ts index 2e3e9ddf6..2345784d4 100644 --- a/common/utils/widgets.ts +++ b/common/utils/widgets.ts @@ -1,4 +1,4 @@ -import { TimeWidgetValue } from '../types/basicWidgets'; +import { MPHWidgetValue, TimeWidgetValue } from '../types/basicWidgets'; import type { AggregateDataPoint, SingleDayDataPoint } from '../types/charts'; const getAverage = (data: (number | undefined)[]) => { @@ -38,23 +38,24 @@ const getAggDataPointsOfInterest = (aggData: AggregateDataPoint[]) => { return { average, min, max, median, p10, p90 }; }; -export const getAggDataWidgets = (aggData: AggregateDataPoint[]) => { +export const getAggDataWidgets = (aggData: AggregateDataPoint[], type: 'times' | 'speeds') => { const { average, min, max, median, p10, p90 } = getAggDataPointsOfInterest(aggData); return [ - { text: 'Avg', widgetValue: new TimeWidgetValue(average), type: 'data' }, - { text: 'Median', widgetValue: new TimeWidgetValue(median), type: 'data' }, - { text: '10%', widgetValue: new TimeWidgetValue(p10), type: 'data' }, - { text: '90%', widgetValue: new TimeWidgetValue(p90), type: 'data' }, - { text: 'Min', widgetValue: new TimeWidgetValue(min), type: 'data' }, - { text: 'Max', widgetValue: new TimeWidgetValue(max), type: 'data' }, + { text: 'Avg', widgetValue: getWidget(type, average), type: 'data' }, + { text: 'Median', widgetValue: getWidget(type, median), type: 'data' }, + { text: '10%', widgetValue: getWidget(type, p10), type: 'data' }, + { text: '90%', widgetValue: getWidget(type, p90), type: 'data' }, + { text: 'Min', widgetValue: getWidget(type, min), type: 'data' }, + { text: 'Max', widgetValue: getWidget(type, max), type: 'data' }, ]; }; const getSingleDayNumberArray = ( data: SingleDayDataPoint[], - type: 'traveltimes' | 'dwells' | 'headways' + type: 'traveltimes' | 'dwells' | 'headways' | 'speeds' ) => { if (type === 'traveltimes') return data.map((data) => data.travel_time_sec); + if (type === 'speeds') return data.map((data) => data.speed_mph); if (type === 'dwells') return data.map((data) => data.dwell_time_sec); if (type === 'headways') return data.map((data) => data.headway_time_sec); return []; @@ -62,7 +63,7 @@ const getSingleDayNumberArray = ( const getSingleDayPointsOfInterest = ( data: SingleDayDataPoint[], - type: 'traveltimes' | 'dwells' | 'headways' + type: 'traveltimes' | 'dwells' | 'headways' | 'speeds' ) => { const _data = getSingleDayNumberArray(data, type); const { max, min, median, p10, p90 } = getPeaks(_data); @@ -70,17 +71,25 @@ const getSingleDayPointsOfInterest = ( return { max, min, median, average, p10, p90 }; }; +function getWidget(type: string, value: number | undefined) { + if (type === 'speeds') { + return new MPHWidgetValue(value); + } else { + return new TimeWidgetValue(value); + } +} + export const getSingleDayWidgets = ( data: SingleDayDataPoint[], - type: 'traveltimes' | 'dwells' | 'headways' + type: 'traveltimes' | 'dwells' | 'headways' | 'speeds' ) => { const { max, min, median, average, p10, p90 } = getSingleDayPointsOfInterest(data, type); return [ - { text: 'Avg', widgetValue: new TimeWidgetValue(average), type: 'data' }, - { text: 'Median', widgetValue: new TimeWidgetValue(median), type: 'data' }, - { text: '10%', widgetValue: new TimeWidgetValue(p10), type: 'data' }, - { text: '90%', widgetValue: new TimeWidgetValue(p90), type: 'data' }, - { text: 'Min', widgetValue: new TimeWidgetValue(min), type: 'data' }, - { text: 'Max', widgetValue: new TimeWidgetValue(max), type: 'data' }, + { text: 'Avg', widgetValue: getWidget(type, average), type: 'data' }, + { text: 'Median', widgetValue: getWidget(type, median), type: 'data' }, + { text: '10%', widgetValue: getWidget(type, p10), type: 'data' }, + { text: '90%', widgetValue: getWidget(type, p90), type: 'data' }, + { text: 'Min', widgetValue: getWidget(type, min), type: 'data' }, + { text: 'Max', widgetValue: getWidget(type, max), type: 'data' }, ]; }; diff --git a/modules/dwells/DwellsAggregateWrapper.tsx b/modules/dwells/DwellsAggregateWrapper.tsx index 580d6038e..dd2ad85e6 100644 --- a/modules/dwells/DwellsAggregateWrapper.tsx +++ b/modules/dwells/DwellsAggregateWrapper.tsx @@ -24,7 +24,7 @@ export const DwellsAggregateWrapper: React.FC = ({ if (!dataReady) return ; const dwellsData = query.data.by_date.filter((datapoint) => datapoint.peak === 'all'); if (dwellsData.length < 1) return ; - const widgetObjects = getAggDataWidgets(dwellsData); + const widgetObjects = getAggDataWidgets(dwellsData, 'times'); return ( diff --git a/modules/dwells/charts/DwellsAggregateChart.tsx b/modules/dwells/charts/DwellsAggregateChart.tsx index 7cb58e604..094e4d85c 100644 --- a/modules/dwells/charts/DwellsAggregateChart.tsx +++ b/modules/dwells/charts/DwellsAggregateChart.tsx @@ -39,6 +39,7 @@ export const DwellsAggregateChart: React.FC = ({ location={getLocationDetails(fromStation, toStation)} bothStops={false} fname="dwells" + yUnit="Minutes" /> ); }, [dwells.by_date, startDate, endDate, fromStation, toStation]); diff --git a/modules/dwells/charts/DwellsSingleChart.tsx b/modules/dwells/charts/DwellsSingleChart.tsx index 54d647034..ee628ecbc 100644 --- a/modules/dwells/charts/DwellsSingleChart.tsx +++ b/modules/dwells/charts/DwellsSingleChart.tsx @@ -32,6 +32,7 @@ export const DwellsSingleChart: React.FC = ({ pointField={PointFieldKeys.arrDt} location={getLocationDetails(fromStation, toStation)} fname={'dwells'} + units={'Minutes'} showLegend={false} /> ); diff --git a/modules/headways/HeadwaysAggregateWrapper.tsx b/modules/headways/HeadwaysAggregateWrapper.tsx index bdde6bf07..a92f4b8e4 100644 --- a/modules/headways/HeadwaysAggregateWrapper.tsx +++ b/modules/headways/HeadwaysAggregateWrapper.tsx @@ -24,7 +24,7 @@ export const HeadwaysAggregateWrapper: React.FC = if (!dataReady) return ; const headwaysData = query.data.by_date.filter((datapoint) => datapoint.peak === 'all'); if (headwaysData.length < 1) return ; - const widgetObjects = getAggDataWidgets(headwaysData); + const widgetObjects = getAggDataWidgets(headwaysData, 'times'); return ( diff --git a/modules/headways/charts/HeadwaysAggregateChart.tsx b/modules/headways/charts/HeadwaysAggregateChart.tsx index 9f41c3046..3faf5312e 100644 --- a/modules/headways/charts/HeadwaysAggregateChart.tsx +++ b/modules/headways/charts/HeadwaysAggregateChart.tsx @@ -39,6 +39,7 @@ export const HeadwaysAggregateChart: React.FC = ({ location={getLocationDetails(fromStation, toStation)} bothStops={false} fname="headways" + yUnit="Minutes" /> ); }, [headways.by_date, startDate, endDate, fromStation, toStation]); diff --git a/modules/headways/charts/HeadwaysSingleChart.tsx b/modules/headways/charts/HeadwaysSingleChart.tsx index 091a8f4d9..5c4962e7d 100644 --- a/modules/headways/charts/HeadwaysSingleChart.tsx +++ b/modules/headways/charts/HeadwaysSingleChart.tsx @@ -31,6 +31,7 @@ export const HeadwaysSingleChart: React.FC = ({ benchmarkField={BenchmarkFieldKeys.benchmarkHeadwayTimeSec} location={getLocationDetails(fromStation, toStation)} fname={'headways'} + units={'Minutes'} showLegend={showLegend && anyHeadwayBenchmarks} /> ); diff --git a/modules/landing/utils.ts b/modules/landing/utils.ts index 88c49ea81..ee27e9cab 100644 --- a/modules/landing/utils.ts +++ b/modules/landing/utils.ts @@ -8,6 +8,8 @@ import { import { LINE_COLORS } from '../../common/constants/colors'; import type { RidershipCount, DeliveredTripMetrics } from '../../common/types/dataPoints'; import type { Line } from '../../common/types/lines'; +import type { AggregateDataPoint, SingleDayDataPoint } from '../../common/types/charts'; +import { getStationDistance } from '../../common/utils/stations'; const getDatasetOptions = (line: Line): Partial> => { return { @@ -45,6 +47,54 @@ export const convertToSpeedDataset = (data: { [key in Line]?: DeliveredTripMetri }); }; +function convertSecondsToMph(travelTimeSec: number | undefined, distanceMiles: number | undefined) { + return distanceMiles && travelTimeSec ? (3600 * distanceMiles) / travelTimeSec : undefined; +} + +export const convertToStationSpeedDataset = ( + fromStationId: string, + toStationId: string, + data: SingleDayDataPoint[] +) => { + const intervalDistance = getStationDistance(fromStationId, toStationId); + const ret = + data?.map((datapoint) => { + return { + ...datapoint, + speed_mph: convertSecondsToMph(datapoint.travel_time_sec, intervalDistance), + benchmark_speed_mph: convertSecondsToMph( + datapoint.benchmark_travel_time_sec, + intervalDistance + ), + }; + }) ?? []; + return ret; +}; + +export const convertToAggregateStationSpeedDataset = ( + fromStationId: string, + toStationId: string, + data: AggregateDataPoint[] +) => { + const intervalDistance = getStationDistance(fromStationId, toStationId); + + const ret = data.map((datapoint) => { + return { + ...datapoint, + // could be bad to default to zero here + '25%': convertSecondsToMph(datapoint['25%'], intervalDistance) ?? 0, + '50%': convertSecondsToMph(datapoint['50%'], intervalDistance) ?? 0, + '75%': convertSecondsToMph(datapoint['75%'], intervalDistance) ?? 0, + mean: convertSecondsToMph(datapoint.mean, intervalDistance) ?? 0, + max: convertSecondsToMph(datapoint.max, intervalDistance) ?? 0, + min: convertSecondsToMph(datapoint.min, intervalDistance) ?? 0, + std: convertSecondsToMph(datapoint.std, intervalDistance) ?? 0, + }; + }); + + return ret; +}; + export const convertToServiceDataset = (data: { [key in Line]?: DeliveredTripMetrics[] }) => { return Object.keys(data).map((line: Line) => { const datasetOptions = getDatasetOptions(line); diff --git a/modules/speed/SpeedBetweenStationsAggregateWrapper.tsx b/modules/speed/SpeedBetweenStationsAggregateWrapper.tsx new file mode 100644 index 000000000..43e9108bb --- /dev/null +++ b/modules/speed/SpeedBetweenStationsAggregateWrapper.tsx @@ -0,0 +1,42 @@ +import React from 'react'; +import type { UseQueryResult } from '@tanstack/react-query'; +import type { AggregateDataResponse } from '../../common/types/charts'; +import type { Station } from '../../common/types/stations'; +import { ChartPlaceHolder } from '../../common/components/graphics/ChartPlaceHolder'; +import { CarouselGraphDiv } from '../../common/components/charts/CarouselGraphDiv'; +import { NoDataNotice } from '../../common/components/notices/NoDataNotice'; +import { MiniWidgetCreator } from '../../common/components/widgets/MiniWidgetCreator'; +import { getAggDataWidgets } from '../../common/utils/widgets'; +import { convertToAggregateStationSpeedDataset } from '../landing/utils'; +import { SpeedBetweenStationsAggregateChart } from './charts/SpeedBetweenStationsAggregateChart'; + +interface SpeedBetweenStationsAggregateWrapperProps { + query: UseQueryResult; + toStation: Station; + fromStation: Station; +} + +export const SpeedBetweenStationsAggregateWrapper: React.FC< + SpeedBetweenStationsAggregateWrapperProps +> = ({ query, toStation, fromStation }) => { + const dataReady = !query.isError && query.data && toStation && fromStation && query.data; + if (!dataReady) return ; + const traveltimesData = convertToAggregateStationSpeedDataset( + fromStation.station, + toStation.station, + query.data.by_date.filter((datapoint) => datapoint.peak === 'all') + ); + if (traveltimesData.length < 1) return ; + const widgetObjects = getAggDataWidgets(traveltimesData, 'speeds'); + return ( + + + + + ); +}; diff --git a/modules/speed/SpeedBetweenStationsGraphWrapper.tsx b/modules/speed/SpeedBetweenStationsGraphWrapper.tsx new file mode 100644 index 000000000..98991e210 --- /dev/null +++ b/modules/speed/SpeedBetweenStationsGraphWrapper.tsx @@ -0,0 +1,43 @@ +import React from 'react'; +import type { UseQueryResult } from '@tanstack/react-query'; +import type { Station } from '../../common/types/stations'; +import { ChartPlaceHolder } from '../../common/components/graphics/ChartPlaceHolder'; +import { CarouselGraphDiv } from '../../common/components/charts/CarouselGraphDiv'; +import type { SingleDayDataPoint } from '../../common/types/charts'; +import { NoDataNotice } from '../../common/components/notices/NoDataNotice'; +import { MiniWidgetCreator } from '../../common/components/widgets/MiniWidgetCreator'; +import { getSingleDayWidgets } from '../../common/utils/widgets'; +import { convertToStationSpeedDataset } from '../landing/utils'; +import { SpeedBetweenStationsSingleChart } from './charts/SpeedBetweenStationsSingleChart'; + +interface SpeedBetweenStationsSingleWrapperProps { + query: UseQueryResult; + toStation: Station; + fromStation: Station; +} + +export const SpeedBetweenStationsSingleWrapper: React.FC< + SpeedBetweenStationsSingleWrapperProps +> = ({ query, toStation, fromStation }) => { + const dataReady = !query.isError && query.data && toStation && fromStation; + if (!dataReady) return ; + if (query.data.length < 1) return ; + + const convertedData = convertToStationSpeedDataset( + fromStation.station, + toStation.station, + query.data + ); + + const widgetObjects = getSingleDayWidgets(convertedData, 'speeds'); + return ( + + + + + ); +}; diff --git a/modules/speed/SpeedGraphWrapper.tsx b/modules/speed/SpeedGraphWrapper.tsx index ca0f5787b..8a83b97ac 100644 --- a/modules/speed/SpeedGraphWrapper.tsx +++ b/modules/speed/SpeedGraphWrapper.tsx @@ -5,7 +5,7 @@ import { WidgetForCarousel } from '../../common/components/widgets/internal/Widg import { MPHWidgetValue } from '../../common/types/basicWidgets'; import type { DeliveredTripMetrics } from '../../common/types/dataPoints'; import { NoDataNotice } from '../../common/components/notices/NoDataNotice'; -import { SpeedGraph } from './SpeedGraph'; +import { SpeedGraph } from './charts/SpeedGraph'; import { getDetailsSpeedWidgetValues } from './utils/utils'; import type { ParamsType } from './constants/speeds'; diff --git a/modules/speed/charts/SpeedBetweenStationsAggregateChart.tsx b/modules/speed/charts/SpeedBetweenStationsAggregateChart.tsx new file mode 100644 index 000000000..bb3265d54 --- /dev/null +++ b/modules/speed/charts/SpeedBetweenStationsAggregateChart.tsx @@ -0,0 +1,59 @@ +import React, { useMemo } from 'react'; +import { AggregateLineChart } from '../../../common/components/charts/AggregateLineChart'; +import { CHART_COLORS } from '../../../common/constants/colors'; +import type { AggregateDataResponse, TravelTimesUnit } from '../../../common/types/charts'; +import { PointFieldKeys } from '../../../common/types/charts'; +import type { Station } from '../../../common/types/stations'; +import { useDelimitatedRoute } from '../../../common/utils/router'; +import { getLocationDetails } from '../../../common/utils/stations'; +import { convertToAggregateStationSpeedDataset } from '../../landing/utils'; + +interface SpeedBetweenStationsAggregateChartProps { + traveltimes: AggregateDataResponse; + toStation: Station; + fromStation: Station; + timeUnit?: TravelTimesUnit; + peakTime?: boolean; +} + +export const SpeedBetweenStationsAggregateChart: React.FC< + SpeedBetweenStationsAggregateChartProps +> = ({ traveltimes, toStation, fromStation, timeUnit, peakTime = true }) => { + const { + query: { startDate, endDate }, + } = useDelimitatedRoute(); + + const chart = useMemo(() => { + const timeUnitByDate = timeUnit === 'by_date'; + + const traveltimesData = timeUnitByDate + ? traveltimes.by_date.filter((datapoint) => datapoint.peak === 'all') + : traveltimes.by_time.filter((datapoint) => datapoint.is_peak_day === peakTime); + + return ( + + ); + }, [timeUnit, traveltimes, startDate, endDate, fromStation, toStation, peakTime]); + + return chart; +}; diff --git a/modules/speed/charts/SpeedBetweenStationsSingleChart.tsx b/modules/speed/charts/SpeedBetweenStationsSingleChart.tsx new file mode 100644 index 000000000..ad159be12 --- /dev/null +++ b/modules/speed/charts/SpeedBetweenStationsSingleChart.tsx @@ -0,0 +1,47 @@ +import { useMemo } from 'react'; +import type { SingleDayDataPoint } from '../../../common/types/charts'; +import { MetricFieldKeys, PointFieldKeys } from '../../../common/types/charts'; +import type { Station } from '../../../common/types/stations'; +import { useDelimitatedRoute } from '../../../common/utils/router'; +import { SingleDayLineChart } from '../../../common/components/charts/SingleDayLineChart'; +import { getLocationDetails } from '../../../common/utils/stations'; + +interface SpeedBetweenStationsSingleChartProps { + traveltimes: SingleDayDataPoint[]; + toStation: Station; + fromStation: Station; + showLegend?: boolean; +} + +export const SpeedBetweenStationsSingleChart: React.FC = ({ + traveltimes, + toStation, + fromStation, + showLegend = true, +}) => { + const { + linePath, + query: { date }, + } = useDelimitatedRoute(); + + const location = getLocationDetails(fromStation, toStation); + + const chart = useMemo(() => { + return ( + + ); + }, [linePath, traveltimes, date, fromStation, toStation, showLegend]); + + return chart; +}; diff --git a/modules/speed/SpeedGraph.tsx b/modules/speed/charts/SpeedGraph.tsx similarity index 87% rename from modules/speed/SpeedGraph.tsx rename to modules/speed/charts/SpeedGraph.tsx index a7d02d84e..2c6212caf 100644 --- a/modules/speed/SpeedGraph.tsx +++ b/modules/speed/charts/SpeedGraph.tsx @@ -5,17 +5,17 @@ import 'chartjs-adapter-date-fns'; import { enUS } from 'date-fns/locale'; import ChartjsPluginWatermark from 'chartjs-plugin-watermark'; -import { useDelimitatedRoute } from '../../common/utils/router'; -import { CHART_COLORS, COLORS, LINE_COLORS } from '../../common/constants/colors'; -import type { DeliveredTripMetrics } from '../../common/types/dataPoints'; -import { drawSimpleTitle } from '../../common/components/charts/Title'; -import { useBreakpoint } from '../../common/hooks/useBreakpoint'; -import { watermarkLayout } from '../../common/constants/charts'; -import { ChartBorder } from '../../common/components/charts/ChartBorder'; -import { ChartDiv } from '../../common/components/charts/ChartDiv'; -import { PEAK_SPEED } from '../../common/constants/baselines'; -import { getShuttlingBlockAnnotations } from '../service/utils/graphUtils'; -import type { ParamsType } from './constants/speeds'; +import { useDelimitatedRoute } from '../../../common/utils/router'; +import { CHART_COLORS, COLORS, LINE_COLORS } from '../../../common/constants/colors'; +import type { DeliveredTripMetrics } from '../../../common/types/dataPoints'; +import { drawSimpleTitle } from '../../../common/components/charts/Title'; +import { useBreakpoint } from '../../../common/hooks/useBreakpoint'; +import { watermarkLayout } from '../../../common/constants/charts'; +import { ChartBorder } from '../../../common/components/charts/ChartBorder'; +import { ChartDiv } from '../../../common/components/charts/ChartDiv'; +import { PEAK_SPEED } from '../../../common/constants/baselines'; +import { getShuttlingBlockAnnotations } from '../../service/utils/graphUtils'; +import type { ParamsType } from '../constants/speeds'; interface SpeedGraphProps { data: DeliveredTripMetrics[]; diff --git a/modules/traveltimes/TravelTimesAggregateWrapper.tsx b/modules/traveltimes/TravelTimesAggregateWrapper.tsx index 7e03329f9..fed4232ec 100644 --- a/modules/traveltimes/TravelTimesAggregateWrapper.tsx +++ b/modules/traveltimes/TravelTimesAggregateWrapper.tsx @@ -24,7 +24,7 @@ export const TravelTimesAggregateWrapper: React.FC; const traveltimesData = query.data.by_date.filter((datapoint) => datapoint.peak === 'all'); if (traveltimesData.length < 1) return ; - const widgetObjects = getAggDataWidgets(traveltimesData); + const widgetObjects = getAggDataWidgets(traveltimesData, 'times'); return ( location={getLocationDetails(fromStation, toStation)} bothStops={true} fname="traveltimes" + yUnit="Minutes" /> ); }, [timeUnit, traveltimes, startDate, endDate, fromStation, toStation, peakTime]); diff --git a/modules/traveltimes/charts/TravelTimesSingleChart.tsx b/modules/traveltimes/charts/TravelTimesSingleChart.tsx index 3b182fe64..4a768d14d 100644 --- a/modules/traveltimes/charts/TravelTimesSingleChart.tsx +++ b/modules/traveltimes/charts/TravelTimesSingleChart.tsx @@ -38,6 +38,7 @@ export const TravelTimesSingleChart: React.FC = ({ pointField={PointFieldKeys.depDt} benchmarkField={BenchmarkFieldKeys.benchmarkTravelTimeSec} bothStops={true} + units="Minutes" location={getLocationDetails(fromStation, toStation)} fname={'traveltimes'} showLegend={showLegend && anyTravelBenchmarks} diff --git a/modules/tripexplorer/SubwayTripGraphs.tsx b/modules/tripexplorer/SubwayTripGraphs.tsx index a272a273d..1f8ae60f6 100644 --- a/modules/tripexplorer/SubwayTripGraphs.tsx +++ b/modules/tripexplorer/SubwayTripGraphs.tsx @@ -11,10 +11,12 @@ import type { Line } from '../../common/types/lines'; import { TravelTimesAggregateWrapper } from '../traveltimes/TravelTimesAggregateWrapper'; import { HeadwaysAggregateWrapper } from '../headways/HeadwaysAggregateWrapper'; import { DwellsAggregateWrapper } from '../dwells/DwellsAggregateWrapper'; -import { TravelTimesSingleWrapper } from '../traveltimes/TravelTimesSingleWrapper'; import { HeadwaysSingleWrapper } from '../headways/HeadwaysSingleWrapper'; import { DwellsSingleWrapper } from '../dwells/DwellsSingleWrapper'; import { HeadwaysHistogramWrapper } from '../headways/charts/HeadwaysHistogramWrapper'; +import { SpeedBetweenStationsSingleWrapper } from '../speed/SpeedBetweenStationsGraphWrapper'; +import { SpeedBetweenStationsAggregateWrapper } from '../speed/SpeedBetweenStationsAggregateWrapper'; +import { TravelTimesSingleWrapper } from '../traveltimes/TravelTimesSingleWrapper'; interface SubwayTripGraphsProps { fromStation: Station; @@ -34,6 +36,9 @@ export const SubwayTripGraphs: React.FC = ({ line, }) => { const [peakTime, setPeakTime] = React.useState<'weekday' | 'weekend'>('weekday'); + const [travelTimeDisplay, setTravelTimeDisplay] = React.useState<'speeds' | 'traveltimes'>( + 'traveltimes' + ); const { traveltimes, headways, dwells } = useTripExplorerQueries( 'subway', @@ -49,18 +54,49 @@ export const SubwayTripGraphs: React.FC = ({ {aggregate ? ( <> - - + {travelTimeDisplay === 'speeds' ? ( + <> + + + + ) : ( + <> + + + + )} +
+ +
= ({ ) : ( <> - - + {travelTimeDisplay === 'speeds' ? ( + <> + + + + ) : ( + <> + + + + )} +
+ +
diff --git a/server/pyproject.toml b/server/pyproject.toml index b06e3c755..a3488fa19 100644 --- a/server/pyproject.toml +++ b/server/pyproject.toml @@ -32,3 +32,10 @@ target-version = ['py311'] [build-system] requires = ["poetry-core>=1.6.0"] build-backend = "poetry.core.masonry.api" + +[tool.pyright] +reportMissingImports = true +reportMissingTypeStubs = false +useLibraryCodeForTypes = false + + diff --git a/server/scripts/update_station_distances.py b/server/scripts/update_station_distances.py new file mode 100644 index 000000000..2836e5016 --- /dev/null +++ b/server/scripts/update_station_distances.py @@ -0,0 +1,200 @@ +from typing import Dict, Set, TypeAlias +import json +import requests + +""" +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "id": 1, + "geometry": null, + "properties": { + "route_id": "Blue", + "direction_id": 0, + "route_pattern_name": "Wonderland - Bowdoin", + "from_stop_id": "70059", + "from_station_id": "place-wondl", + "from_stop_name": "Wonderland", + "to_stop_id": "70057", + "to_station_id": "place-rbmnl", + "to_stop_name": "Revere Beach", + "from_to_meters": 648.07954, + "cumulative_meters": 648.07954, + "from_to_miles": 0.402697956434423, + "cumulative_miles": 0.402697956434423, + "ObjectId": 1 + } + }, + ... +} +""" + +WeightedGraph: TypeAlias = Dict[str, Dict[str, float]] + + +# for the purpose of this, we need all the green to be one line +def transform_to_line(route_from_api: str): + if not route_from_api.startswith("Green"): + return route_from_api + else: + return "Green" + + +def initialize_interstop_data(): + # stop id => distance to other reachable stops on the same route + stop_distances: WeightedGraph = {} + + # station id => set containing all lines the station is on + station_lines: Dict[str, Set[str]] = {} + + # stop id => route of stop + stop_routes: WeightedGraph = {} + + # stop id => direction of stop + stop_directions: Dict[str, int] = {} + + # stop id => station that the stop is on + stop_stations: Dict[str, str] = {} + + stop_distance_response = requests.get( + "https://services1.arcgis.com/ceiitspzDAHrdGO1/arcgis/rest/services/MBTA_Rapid_Transit_Stop_Distances/FeatureServer/0/query?outFields=*&where=1%3D1&f=geojson" + ) + + stop_response_json = stop_distance_response.json() + for feature in stop_response_json["features"]: + distance_details = feature["properties"] + + from_stop_id = distance_details["from_stop_id"] + to_stop_id = distance_details["to_stop_id"] + + from_station_id = distance_details["from_station_id"] + to_station_id = distance_details["to_station_id"] + + # ignore stations we don't have data for in stations.json + # if distance_details["from_station_id"] not in stations_by_id: + # continue + + from_stop_distances = stop_distances.get(from_stop_id, {}) + from_stop_distances[to_stop_id] = distance_details["from_to_miles"] + + stop_distances[from_stop_id] = from_stop_distances + # route pattern name is more detaield than id - e.g. route_id is always Red for all routes + stop_routes[from_stop_id] = distance_details["route_pattern_name"] + stop_stations[from_stop_id] = distance_details["from_station_id"] + + # set this just in case the to station is a terminus + stop_routes[to_stop_id] = distance_details["route_pattern_name"] + stop_stations[to_stop_id] = distance_details["to_station_id"] + + stop_directions[to_stop_id] = distance_details["direction_id"] + stop_directions[from_stop_id] = distance_details["direction_id"] + + from_station_lines = station_lines.get(from_station_id, set()) + to_station_lines = station_lines.get(to_station_id, set()) + transformed_line = transform_to_line(distance_details["route_id"]) + from_station_lines.add(transformed_line) + to_station_lines.add(transformed_line) + + station_lines[from_station_id] = from_station_lines + station_lines[to_station_id] = to_station_lines + + return stop_distances, station_lines, stop_routes, stop_directions, stop_stations + + +# there is probably still a more efficient way to do this. +def enrich_distances(target_stop_id, stop_distances, station_distances, stop_stations, stop_directions, stop_routes): + stop_stack = [] + + # assume each stop starts with one destination + first_dest, first_dist = next(iter(stop_distances[target_stop_id].items())) + stop_stack.append((first_dest, first_dist)) + + current_stop_distances = {} + + target_station = stop_stations[target_stop_id] + target_station_distances = station_distances.get(target_station, dict()) + + while len(stop_stack) > 0: + dest, dist = stop_stack.pop() + destination_station = stop_stations[dest] + + current_stop_distances[dest] = dist + target_station_distances[destination_station] = dist + + # distance is a symmetric relationship, so set the distance here for those routes that have a direction id change + destination_station_distances = station_distances.get(destination_station, dict()) + destination_station_distances[target_station] = dist + + # This should be a terminus + if dest not in stop_distances or stop_distances[dest] is None or len(stop_distances[dest]) == 0: + break + + for child, child_distance in stop_distances[dest].items(): + # if the stops or in the same direction OR on the same route, keep traversing + if stop_directions[child] == stop_directions[dest] or stop_routes[child] == stop_routes[dest]: + stop_stack.append((child, dist + child_distance)) + + station_distances[target_station] = target_station_distances + + return current_stop_distances, station_distances + + +# perform a dfs of the station graph starting from station_id filtered by line +# this will fully connect station_id to all stations on lines +# shared with station id +def connect_stations_graph(station_id, station_distances, station_lines): + stk = [] + seen_stations = set() + seen_stations.add(station_id) + + for dest, dist in station_distances[station_id].items(): + stk.append((dest, dist)) + + while len(stk) > 0: + dest, dist = stk.pop() + + print(f"Traversing from {station_id} to {dest}. Distance: {dist}") + + seen_stations.add(dest) + + station_distances[station_id][dest] = dist + + if dest not in station_distances: + continue + + for second_dest, second_dist in station_distances[dest].items(): + # the station we're going to is unseen and is on one of the lines we started on + # this should help to avoid inter-line cycles + common_lines = station_lines[second_dest].intersection(station_lines[station_id]) + if ( + second_dest not in seen_stations + and len(common_lines) > 0 + and second_dest not in station_distances[station_id] + ): + stk.append((second_dest, second_dist + dist)) + + +def ingest_station_distances(): + # station id => distance to other reachable stations on all routes + stop_distances, station_lines, stop_routes, stop_directions, stop_stations = initialize_interstop_data() + + station_distances: WeightedGraph = {} + # first pass on stops, just to initialliy the stations graph + for stop_id in stop_distances: + stop_distances[stop_id], station_distances = enrich_distances( + stop_id, stop_distances, station_distances, stop_stations, stop_directions, stop_routes + ) + + # second pass to fully connect the stations graph + for station_id in station_distances: + connect_stations_graph(station_id, station_distances, station_lines) + + return station_distances + + +if __name__ == "__main__": + station_distances = ingest_station_distances() + with open("common/constants/station_distances.json", "w") as f: + json.dump(station_distances, f, indent=2) diff --git a/server/scripts/update_stations.py b/server/scripts/update_stations.py index cfc280873..91dde2003 100644 --- a/server/scripts/update_stations.py +++ b/server/scripts/update_stations.py @@ -1,5 +1,4 @@ import json - import requests with open("common/constants/stations.json", "r") as f: From 43f3de4352b6cdc6742e3ecf724124f4fa87dbab Mon Sep 17 00:00:00 2001 From: JD <46619169+rudiejd@users.noreply.github.com> Date: Mon, 15 Jan 2024 04:57:08 -0500 Subject: [PATCH 2/4] fix(trip-explorer): disable speed between stations for green line (#939) --- modules/tripexplorer/SubwayTripGraphs.tsx | 56 +++++++++++++---------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/modules/tripexplorer/SubwayTripGraphs.tsx b/modules/tripexplorer/SubwayTripGraphs.tsx index 1f8ae60f6..21e82f0a1 100644 --- a/modules/tripexplorer/SubwayTripGraphs.tsx +++ b/modules/tripexplorer/SubwayTripGraphs.tsx @@ -85,18 +85,22 @@ export const SubwayTripGraphs: React.FC = ({ /> )} -
- -
+ {line !== 'line-green' ? ( +
+ +
+ ) : ( + + )}
= ({ /> )} -
- -
+ {line !== 'line-green' ? ( +
+ +
+ ) : ( + + )}
From 0f0631d08454c99018146dfc8f7b8256f9127ff7 Mon Sep 17 00:00:00 2001 From: Casey Whittaker <47030097+cdwhitt@users.noreply.github.com> Date: Mon, 15 Jan 2024 16:33:46 -0500 Subject: [PATCH 3/4] add csv download link to speed, prediction accuracy, service, ridership (#935) * add csv download link to speed, prediction accuracy, service, ridership * make DownloadButton data type agnostic * create strict typing for csv util * lint fixes * remove unknown typing for data prop * remove unused data types --------- Co-authored-by: Casey Whittaker --- common/components/buttons/DownloadButton.tsx | 56 +++++------------ .../components/charts/AggregateLineChart.tsx | 4 +- .../components/charts/SingleDayLineChart.tsx | 4 +- .../TimeSeriesChart/TimeSeriesChart.tsx | 7 +-- common/types/charts.ts | 4 +- common/types/dataPoints.ts | 2 + common/utils/csv.ts | 61 +++++++++++++++++++ .../dwells/charts/DwellsAggregateChart.tsx | 2 +- .../charts/HeadwaysAggregateChart.tsx | 2 +- .../predictions/charts/PredictionsGraph.tsx | 15 +++++ modules/ridership/RidershipGraph.tsx | 12 ++++ modules/service/ServiceGraph.tsx | 38 ++++++++---- modules/service/ServiceHoursGraph.tsx | 19 +++--- .../SpeedBetweenStationsAggregateChart.tsx | 2 +- .../SpeedBetweenStationsSingleChart.tsx | 2 +- modules/speed/charts/SpeedGraph.tsx | 14 +++++ .../charts/TravelTimesAggregateChart.tsx | 2 +- .../charts/TravelTimesSingleChart.tsx | 2 +- 18 files changed, 170 insertions(+), 78 deletions(-) create mode 100644 common/utils/csv.ts diff --git a/common/components/buttons/DownloadButton.tsx b/common/components/buttons/DownloadButton.tsx index 5ff7abb80..0639da715 100644 --- a/common/components/buttons/DownloadButton.tsx +++ b/common/components/buttons/DownloadButton.tsx @@ -3,59 +3,26 @@ import React from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faFileArrowDown } from '@fortawesome/free-solid-svg-icons'; import classNames from 'classnames'; -import type { DataPoint } from '../../types/dataPoints'; -import type { AggregateDataPoint, Location } from '../../types/charts'; +import type { Location } from '../../types/charts'; import { lineColorTextHover } from '../../styles/general'; import { useDelimitatedRoute } from '../../utils/router'; - -const directionAbbrs = { - northbound: 'NB', - southbound: 'SB', - eastbound: 'EB', - westbound: 'WB', - inbound: 'IB', - outbound: 'OB', -}; - -function filename( - datasetName: string, - location: Location, - bothStops: boolean, - startDate: string, - endDate?: string -) { - // CharlesMGH-SB_dwells_20210315.csv - // CentralSquareCambridge-MelneaCassWashington_traveltimesByHour-weekday_20200101-20201231.csv - // BostonUniversityWest-EB_headways_20161226-20170328.csv - const fromStop = location.from.replace(/[^A-z]/g, ''); - const toStop = location.to.replace(/[^A-z]/g, ''); - const dir = directionAbbrs[location.direction]; - const where = `${fromStop}-${bothStops ? toStop : dir}`; - - const what = datasetName; - - const date1 = startDate.replaceAll('-', ''); - const date2 = endDate ? `-${endDate.replaceAll('-', '')}` : ''; - const when = `${date1}${date2}`; - - return `${where}_${what}_${when}.csv`; -} +import { getCsvFilename } from '../../utils/csv'; interface DownloadButtonProps { datasetName: string; - data: (DataPoint | AggregateDataPoint)[]; - location: Location; - bothStops: boolean; + data: Record[]; startDate: string; + includeBothStopsForLocation?: boolean; + location?: Location; endDate?: string; } export const DownloadButton: React.FC = ({ datasetName, data, - location, - bothStops, + includeBothStopsForLocation, startDate, + location, endDate, }) => { const { line } = useDelimitatedRoute(); @@ -65,7 +32,14 @@ export const DownloadButton: React.FC = ({ className={'csv-link'} data={data} title={'Download data as CSV'} - filename={filename(datasetName, location, bothStops, startDate, endDate)} + filename={getCsvFilename({ + datasetName, + includeBothStopsForLocation, + startDate, + line, + location, + endDate, + })} > = ({ data, location, pointField, - bothStops = false, + includeBothStopsForLocation = false, fname, timeUnit, timeFormat, @@ -179,7 +179,7 @@ export const AggregateLineChart: React.FC = ({ data={data} datasetName={fname} location={location} - bothStops={bothStops} + includeBothStopsForLocation={includeBothStopsForLocation} startDate={startDate} /> )} diff --git a/common/components/charts/SingleDayLineChart.tsx b/common/components/charts/SingleDayLineChart.tsx index c359f1cc2..3d54735f9 100644 --- a/common/components/charts/SingleDayLineChart.tsx +++ b/common/components/charts/SingleDayLineChart.tsx @@ -63,7 +63,7 @@ export const SingleDayLineChart: React.FC = ({ pointField, benchmarkField, fname, - bothStops = false, + includeBothStopsForLocation = false, location, units, showLegend = true, @@ -229,7 +229,7 @@ export const SingleDayLineChart: React.FC = ({ data={data} datasetName={fname} location={location} - bothStops={bothStops} + includeBothStopsForLocation={includeBothStopsForLocation} startDate={date} /> )} diff --git a/common/components/charts/TimeSeriesChart/TimeSeriesChart.tsx b/common/components/charts/TimeSeriesChart/TimeSeriesChart.tsx index 0a214b6df..20fb51fe1 100644 --- a/common/components/charts/TimeSeriesChart/TimeSeriesChart.tsx +++ b/common/components/charts/TimeSeriesChart/TimeSeriesChart.tsx @@ -23,7 +23,6 @@ import type { ChartData } from 'chart.js'; import { enUS } from 'date-fns/locale'; import { useBreakpoint } from '../../../hooks/useBreakpoint'; -import { ChartBorder } from '../ChartBorder'; import { ChartDiv } from '../ChartDiv'; import { CHART_COLORS, COLORS } from '../../../constants/colors'; @@ -282,9 +281,5 @@ export const TimeSeriesChart = (props: Props) => { ); }, [isMobile, chartJsData, chartJsOptions, chartJsPlugins]); - return ( - - {chart} - - ); + return {chart}; }; diff --git a/common/types/charts.ts b/common/types/charts.ts index 0c965410e..87adf4cb8 100644 --- a/common/types/charts.ts +++ b/common/types/charts.ts @@ -77,7 +77,7 @@ export interface LineProps { chartId: string; location: Location; pointField: PointField; // X value - bothStops?: boolean; + includeBothStopsForLocation?: boolean; fname: DataName; showLegend?: boolean; } @@ -111,7 +111,7 @@ export interface HeadwayHistogramProps { date: string | undefined; location: Location; isLoading: boolean; - bothStops?: boolean; + includeBothStopsForLocation?: boolean; fname: DataName; showLegend?: boolean; metricField: MetricField; diff --git a/common/types/dataPoints.ts b/common/types/dataPoints.ts index 410062a6f..55175def1 100644 --- a/common/types/dataPoints.ts +++ b/common/types/dataPoints.ts @@ -98,6 +98,7 @@ export interface DeliveredTripMetrics { miles_covered: number; total_time: number; count: number; + miles_per_hour?: string; } export type LineSegmentData = { @@ -136,6 +137,7 @@ export interface TimePrediction { weekly: string; num_accurate_predictions: number; num_predictions: number; + accuracy_percentage?: string; } export type PredictionBin = '0-3 min' | '3-6 min' | '6-12 min' | '12-30 min'; diff --git a/common/utils/csv.ts b/common/utils/csv.ts new file mode 100644 index 000000000..3e2575fc3 --- /dev/null +++ b/common/utils/csv.ts @@ -0,0 +1,61 @@ +import { flatten } from 'lodash'; +import type { Location } from '../types/charts'; +import type { DeliveredTripMetrics, TimePredictionWeek } from '../types/dataPoints'; + +const directionAbbrs = { + northbound: 'NB', + southbound: 'SB', + eastbound: 'EB', + westbound: 'WB', + inbound: 'IB', + outbound: 'OB', +}; + +type GetCsvFilenameOptions = { + datasetName: string; + startDate: string; + endDate?: string; + line?: string; + location?: Location; + includeBothStopsForLocation?: boolean | undefined; +}; + +export function getCsvFilename(options: GetCsvFilenameOptions) { + const { datasetName, startDate, endDate, line, location, includeBothStopsForLocation } = options; + // CharlesMGH-SB_dwells_20210315.csv + // CentralSquareCambridge-MelneaCassWashington_traveltimesByHour-weekday_20200101-20201231.csv + // BostonUniversityWest-EB_headways_20161226-20170328.csv + const fromStop = location?.from.replace(/[^A-z]/g, ''); + const toStop = location?.to.replace(/[^A-z]/g, ''); + const dir = location && directionAbbrs[location.direction]; + + //Location does not exist on all widgets - in that case, 'where' will just be the name of the line + const where = location ? `${fromStop}-${includeBothStopsForLocation ? toStop : dir}` : line; + const what = datasetName; + const date1 = startDate.replaceAll('-', ''); + const date2 = endDate ? `-${endDate.replaceAll('-', '')}` : ''; + const when = `${date1}${date2}`; + + return `${where}_${what}_${when}.csv`; +} + +export const addAccuracyPercentageToData = (data: TimePredictionWeek[]) => { + const predictionsList = flatten(data.map(({ prediction }) => prediction)); + + const newData = predictionsList.map((item) => { + const accuracyPercentage = (item?.num_accurate_predictions / item?.num_predictions) * 100; + return { ...item, accuracy_percentage: accuracyPercentage.toFixed(1) }; + }); + + return newData; +}; + +export const addMPHToSpeedData = (data: DeliveredTripMetrics[]) => { + const newData = data.map((item) => { + const hours = item.total_time / 3600; + const mph = item.miles_covered / hours; + return { ...item, miles_per_hour: mph.toFixed(1) }; + }); + + return newData; +}; diff --git a/modules/dwells/charts/DwellsAggregateChart.tsx b/modules/dwells/charts/DwellsAggregateChart.tsx index 094e4d85c..01a53c233 100644 --- a/modules/dwells/charts/DwellsAggregateChart.tsx +++ b/modules/dwells/charts/DwellsAggregateChart.tsx @@ -37,7 +37,7 @@ export const DwellsAggregateChart: React.FC = ({ endDate={endDate} fillColor={CHART_COLORS.FILL} location={getLocationDetails(fromStation, toStation)} - bothStops={false} + includeBothStopsForLocation={false} fname="dwells" yUnit="Minutes" /> diff --git a/modules/headways/charts/HeadwaysAggregateChart.tsx b/modules/headways/charts/HeadwaysAggregateChart.tsx index 3faf5312e..4a3d24b86 100644 --- a/modules/headways/charts/HeadwaysAggregateChart.tsx +++ b/modules/headways/charts/HeadwaysAggregateChart.tsx @@ -37,7 +37,7 @@ export const HeadwaysAggregateChart: React.FC = ({ endDate={endDate} fillColor={CHART_COLORS.FILL} location={getLocationDetails(fromStation, toStation)} - bothStops={false} + includeBothStopsForLocation={false} fname="headways" yUnit="Minutes" /> diff --git a/modules/predictions/charts/PredictionsGraph.tsx b/modules/predictions/charts/PredictionsGraph.tsx index f632f2dbc..751e707fd 100644 --- a/modules/predictions/charts/PredictionsGraph.tsx +++ b/modules/predictions/charts/PredictionsGraph.tsx @@ -18,6 +18,8 @@ import { ChartDiv } from '../../../common/components/charts/ChartDiv'; import { PEAK_SPEED } from '../../../common/constants/baselines'; import { getRemainingBlockAnnotation } from '../../service/utils/graphUtils'; import { DATE_FORMAT, TODAY } from '../../../common/constants/dates'; +import { DownloadButton } from '../../../common/components/buttons/DownloadButton'; +import { addAccuracyPercentageToData } from '../../../common/utils/csv'; interface PredictionsGraphProps { data: TimePredictionWeek[]; @@ -61,6 +63,8 @@ export const PredictionsGraph: React.FC = ({ }, 0), })); + const dataWithPercentage = addAccuracyPercentageToData(data); + return ( @@ -207,6 +211,17 @@ export const PredictionsGraph: React.FC = ({ ]} /> +
+ {startDate && ( + + )} +
); }; diff --git a/modules/ridership/RidershipGraph.tsx b/modules/ridership/RidershipGraph.tsx index f5516cc3c..4e39c317a 100644 --- a/modules/ridership/RidershipGraph.tsx +++ b/modules/ridership/RidershipGraph.tsx @@ -17,6 +17,7 @@ import { useBreakpoint } from '../../common/hooks/useBreakpoint'; import { watermarkLayout } from '../../common/constants/charts'; import { ChartBorder } from '../../common/components/charts/ChartBorder'; import { ChartDiv } from '../../common/components/charts/ChartDiv'; +import { DownloadButton } from '../../common/components/buttons/DownloadButton'; interface RidershipGraphProps { data: RidershipCount[]; @@ -198,6 +199,17 @@ export const RidershipGraph: React.FC = ({ ]} />
+
+ {startDate && ( + + )} +
); }, [ diff --git a/modules/service/ServiceGraph.tsx b/modules/service/ServiceGraph.tsx index 567e309cd..cfe123db6 100644 --- a/modules/service/ServiceGraph.tsx +++ b/modules/service/ServiceGraph.tsx @@ -4,8 +4,10 @@ import { useDelimitatedRoute } from '../../common/utils/router'; import { PEAK_SCHEDULED_SERVICE } from '../../common/constants/baselines'; import type { DeliveredTripMetrics, ScheduledService } from '../../common/types/dataPoints'; import type { ParamsType } from '../speed/constants/speeds'; -import { getShuttlingBlockAnnotations } from './utils/graphUtils'; +import { ChartBorder } from '../../common/components/charts/ChartBorder'; +import { DownloadButton } from '../../common/components/buttons/DownloadButton'; import { ScheduledAndDeliveredGraph } from './ScheduledAndDeliveredGraph'; +import { getShuttlingBlockAnnotations } from './utils/graphUtils'; interface ServiceGraphProps { config: ParamsType; @@ -68,15 +70,29 @@ export const ServiceGraph: React.FC = (props: ServiceGraphPro }, [data, peak]); return ( - + + + +
+ {startDate && ( + + )} +
+
); }; diff --git a/modules/service/ServiceHoursGraph.tsx b/modules/service/ServiceHoursGraph.tsx index 5b14856e3..b36be9bf0 100644 --- a/modules/service/ServiceHoursGraph.tsx +++ b/modules/service/ServiceHoursGraph.tsx @@ -2,6 +2,7 @@ import React, { useMemo } from 'react'; import type { FetchServiceHoursResponse } from '../../common/types/api'; import type { AggType } from '../speed/constants/speeds'; +import { ChartBorder } from '../../common/components/charts/ChartBorder'; import { ScheduledAndDeliveredGraph } from './ScheduledAndDeliveredGraph'; interface ServiceHoursGraphProps { @@ -32,13 +33,15 @@ export const ServiceHoursGraph: React.FC = ( }, [serviceHours]); return ( - + + + ); }; diff --git a/modules/speed/charts/SpeedBetweenStationsAggregateChart.tsx b/modules/speed/charts/SpeedBetweenStationsAggregateChart.tsx index bb3265d54..367efd539 100644 --- a/modules/speed/charts/SpeedBetweenStationsAggregateChart.tsx +++ b/modules/speed/charts/SpeedBetweenStationsAggregateChart.tsx @@ -48,7 +48,7 @@ export const SpeedBetweenStationsAggregateChart: React.FC< endDate={endDate} fillColor={timeUnitByDate ? CHART_COLORS.FILL : CHART_COLORS.FILL_HOURLY} location={getLocationDetails(fromStation, toStation)} - bothStops={true} + includeBothStopsForLocation={true} fname="speeds" yUnit="MPH" /> diff --git a/modules/speed/charts/SpeedBetweenStationsSingleChart.tsx b/modules/speed/charts/SpeedBetweenStationsSingleChart.tsx index ad159be12..7094061b6 100644 --- a/modules/speed/charts/SpeedBetweenStationsSingleChart.tsx +++ b/modules/speed/charts/SpeedBetweenStationsSingleChart.tsx @@ -34,7 +34,7 @@ export const SpeedBetweenStationsSingleChart: React.FC = ({ const isMobile = !useBreakpoint('md'); const labels = data.map((point) => point.date); const shuttlingBlocks = getShuttlingBlockAnnotations(data); + const dataWithMPH = addMPHToSpeedData(data); return ( @@ -192,6 +195,17 @@ export const SpeedGraph: React.FC = ({ ]} />
+
+ {startDate && ( + + )} +
); }; diff --git a/modules/traveltimes/charts/TravelTimesAggregateChart.tsx b/modules/traveltimes/charts/TravelTimesAggregateChart.tsx index bcf3bd8b6..10da57900 100644 --- a/modules/traveltimes/charts/TravelTimesAggregateChart.tsx +++ b/modules/traveltimes/charts/TravelTimesAggregateChart.tsx @@ -46,7 +46,7 @@ export const TravelTimesAggregateChart: React.FC endDate={endDate} fillColor={timeUnitByDate ? CHART_COLORS.FILL : CHART_COLORS.FILL_HOURLY} location={getLocationDetails(fromStation, toStation)} - bothStops={true} + includeBothStopsForLocation={true} fname="traveltimes" yUnit="Minutes" /> diff --git a/modules/traveltimes/charts/TravelTimesSingleChart.tsx b/modules/traveltimes/charts/TravelTimesSingleChart.tsx index 4a768d14d..5d85fa095 100644 --- a/modules/traveltimes/charts/TravelTimesSingleChart.tsx +++ b/modules/traveltimes/charts/TravelTimesSingleChart.tsx @@ -37,7 +37,7 @@ export const TravelTimesSingleChart: React.FC = ({ metricField={MetricFieldKeys.travelTimeSec} pointField={PointFieldKeys.depDt} benchmarkField={BenchmarkFieldKeys.benchmarkTravelTimeSec} - bothStops={true} + includeBothStopsForLocation={true} units="Minutes" location={getLocationDetails(fromStation, toStation)} fname={'traveltimes'} From 52d9d958e4198c7a7bd1fb280fcccf42c160df51 Mon Sep 17 00:00:00 2001 From: Devin Matte Date: Tue, 16 Jan 2024 12:01:47 -0500 Subject: [PATCH 4/4] Updating Pandas to 2.x (#936) * Updating Pandas to 2.x * Update to show dec 2023 data --- common/constants/dates.ts | 2 +- server/bus/setup_bus_input.sh | 2 +- server/poetry.lock | 484 ++++++++++++++++++---------------- server/pyproject.toml | 10 +- 4 files changed, 265 insertions(+), 233 deletions(-) diff --git a/common/constants/dates.ts b/common/constants/dates.ts index 232874de6..fc7f1062d 100644 --- a/common/constants/dates.ts +++ b/common/constants/dates.ts @@ -35,7 +35,7 @@ export const THREE_MONTHS_AGO_STRING = TODAY.subtract(90, 'days').format(DATE_FO const OVERVIEW_TRAIN_MIN_DATE = '2016-02-01'; const TRAIN_MIN_DATE = '2016-01-15'; const BUS_MIN_DATE = '2018-08-01'; -export const BUS_MAX_DATE = '2023-11-30'; +export const BUS_MAX_DATE = '2023-12-31'; const BUS_MAX_DAY = dayjs(BUS_MAX_DATE); export const BUS_MAX_DATE_MINUS_ONE_WEEK = dayjs(BUS_MAX_DATE) .subtract(7, 'days') diff --git a/server/bus/setup_bus_input.sh b/server/bus/setup_bus_input.sh index 6e3de81e5..88655088a 100755 --- a/server/bus/setup_bus_input.sh +++ b/server/bus/setup_bus_input.sh @@ -14,7 +14,7 @@ unzip -d data/input/MBTA_GTFS/ data/input/gtfs.zip cd data/input for i in `seq 2018 2023`; do - unzip -d $i $i.zip + unzip -o -d $i $i.zip done mv 2021/MBTA*/*.csv 2021/ diff --git a/server/poetry.lock b/server/poetry.lock index 092515f45..fbe2640c5 100644 --- a/server/poetry.lock +++ b/server/poetry.lock @@ -13,51 +13,52 @@ files = [ [[package]] name = "attrs" -version = "23.1.0" +version = "23.2.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, - {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, ] [package.extras] cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]", "pre-commit"] +dev = ["attrs[tests]", "pre-commit"] docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] [[package]] name = "black" -version = "23.12.0" +version = "23.12.1" description = "The uncompromising code formatter." optional = false python-versions = ">=3.8" files = [ - {file = "black-23.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:67f19562d367468ab59bd6c36a72b2c84bc2f16b59788690e02bbcb140a77175"}, - {file = "black-23.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:bbd75d9f28a7283b7426160ca21c5bd640ca7cd8ef6630b4754b6df9e2da8462"}, - {file = "black-23.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:593596f699ca2dcbbbdfa59fcda7d8ad6604370c10228223cd6cf6ce1ce7ed7e"}, - {file = "black-23.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:12d5f10cce8dc27202e9a252acd1c9a426c83f95496c959406c96b785a92bb7d"}, - {file = "black-23.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e73c5e3d37e5a3513d16b33305713237a234396ae56769b839d7c40759b8a41c"}, - {file = "black-23.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ba09cae1657c4f8a8c9ff6cfd4a6baaf915bb4ef7d03acffe6a2f6585fa1bd01"}, - {file = "black-23.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ace64c1a349c162d6da3cef91e3b0e78c4fc596ffde9413efa0525456148873d"}, - {file = "black-23.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:72db37a2266b16d256b3ea88b9affcdd5c41a74db551ec3dd4609a59c17d25bf"}, - {file = "black-23.12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fdf6f23c83078a6c8da2442f4d4eeb19c28ac2a6416da7671b72f0295c4a697b"}, - {file = "black-23.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39dda060b9b395a6b7bf9c5db28ac87b3c3f48d4fdff470fa8a94ab8271da47e"}, - {file = "black-23.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7231670266ca5191a76cb838185d9be59cfa4f5dd401b7c1c70b993c58f6b1b5"}, - {file = "black-23.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:193946e634e80bfb3aec41830f5d7431f8dd5b20d11d89be14b84a97c6b8bc75"}, - {file = "black-23.12.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bcf91b01ddd91a2fed9a8006d7baa94ccefe7e518556470cf40213bd3d44bbbc"}, - {file = "black-23.12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:996650a89fe5892714ea4ea87bc45e41a59a1e01675c42c433a35b490e5aa3f0"}, - {file = "black-23.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdbff34c487239a63d86db0c9385b27cdd68b1bfa4e706aa74bb94a435403672"}, - {file = "black-23.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:97af22278043a6a1272daca10a6f4d36c04dfa77e61cbaaf4482e08f3640e9f0"}, - {file = "black-23.12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ead25c273adfad1095a8ad32afdb8304933efba56e3c1d31b0fee4143a1e424a"}, - {file = "black-23.12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c71048345bdbced456cddf1622832276d98a710196b842407840ae8055ade6ee"}, - {file = "black-23.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a832b6e00eef2c13b3239d514ea3b7d5cc3eaa03d0474eedcbbda59441ba5d"}, - {file = "black-23.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:6a82a711d13e61840fb11a6dfecc7287f2424f1ca34765e70c909a35ffa7fb95"}, - {file = "black-23.12.0-py3-none-any.whl", hash = "sha256:a7c07db8200b5315dc07e331dda4d889a56f6bf4db6a9c2a526fa3166a81614f"}, - {file = "black-23.12.0.tar.gz", hash = "sha256:330a327b422aca0634ecd115985c1c7fd7bdb5b5a2ef8aa9888a82e2ebe9437a"}, + {file = "black-23.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0aaf6041986767a5e0ce663c7a2f0e9eaf21e6ff87a5f95cbf3675bfd4c41d2"}, + {file = "black-23.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c88b3711d12905b74206227109272673edce0cb29f27e1385f33b0163c414bba"}, + {file = "black-23.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920b569dc6b3472513ba6ddea21f440d4b4c699494d2e972a1753cdc25df7b0"}, + {file = "black-23.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:3fa4be75ef2a6b96ea8d92b1587dd8cb3a35c7e3d51f0738ced0781c3aa3a5a3"}, + {file = "black-23.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d4df77958a622f9b5a4c96edb4b8c0034f8434032ab11077ec6c56ae9f384ba"}, + {file = "black-23.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:602cfb1196dc692424c70b6507593a2b29aac0547c1be9a1d1365f0d964c353b"}, + {file = "black-23.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c4352800f14be5b4864016882cdba10755bd50805c95f728011bcb47a4afd59"}, + {file = "black-23.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:0808494f2b2df923ffc5723ed3c7b096bd76341f6213989759287611e9837d50"}, + {file = "black-23.12.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:25e57fd232a6d6ff3f4478a6fd0580838e47c93c83eaf1ccc92d4faf27112c4e"}, + {file = "black-23.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2d9e13db441c509a3763a7a3d9a49ccc1b4e974a47be4e08ade2a228876500ec"}, + {file = "black-23.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1bd9c210f8b109b1762ec9fd36592fdd528485aadb3f5849b2740ef17e674e"}, + {file = "black-23.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:ae76c22bde5cbb6bfd211ec343ded2163bba7883c7bc77f6b756a1049436fbb9"}, + {file = "black-23.12.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1fa88a0f74e50e4487477bc0bb900c6781dbddfdfa32691e780bf854c3b4a47f"}, + {file = "black-23.12.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a4d6a9668e45ad99d2f8ec70d5c8c04ef4f32f648ef39048d010b0689832ec6d"}, + {file = "black-23.12.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b18fb2ae6c4bb63eebe5be6bd869ba2f14fd0259bda7d18a46b764d8fb86298a"}, + {file = "black-23.12.1-cp38-cp38-win_amd64.whl", hash = "sha256:c04b6d9d20e9c13f43eee8ea87d44156b8505ca8a3c878773f68b4e4812a421e"}, + {file = "black-23.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e1b38b3135fd4c025c28c55ddfc236b05af657828a8a6abe5deec419a0b7055"}, + {file = "black-23.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4f0031eaa7b921db76decd73636ef3a12c942ed367d8c3841a0739412b260a54"}, + {file = "black-23.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97e56155c6b737854e60a9ab1c598ff2533d57e7506d97af5481141671abf3ea"}, + {file = "black-23.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:dd15245c8b68fe2b6bd0f32c1556509d11bb33aec9b5d0866dd8e2ed3dba09c2"}, + {file = "black-23.12.1-py3-none-any.whl", hash = "sha256:78baad24af0f033958cad29731e27363183e140962595def56423e626f4bee3e"}, + {file = "black-23.12.1.tar.gz", hash = "sha256:4ce3ef14ebe8d9509188014d96af1c456a910d5b5cbf434a09fef7e024b3d0d5"}, ] [package.dependencies] @@ -782,13 +783,13 @@ mypy = ["mypy"] [[package]] name = "fastjsonschema" -version = "2.19.0" +version = "2.19.1" description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" files = [ - {file = "fastjsonschema-2.19.0-py3-none-any.whl", hash = "sha256:b9fd1a2dd6971dbc7fee280a95bd199ae0dd9ce22beb91cc75e9c1c528a5170e"}, - {file = "fastjsonschema-2.19.0.tar.gz", hash = "sha256:e25df6647e1bc4a26070b700897b07b542ec898dd4f1f6ea013e7f6a88417225"}, + {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"}, + {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"}, ] [package.extras] @@ -812,19 +813,19 @@ typing = ["typing-extensions (>=4.8)"] [[package]] name = "flake8" -version = "6.1.0" +version = "7.0.0" description = "the modular source code checker: pep8 pyflakes and co" optional = false python-versions = ">=3.8.1" files = [ - {file = "flake8-6.1.0-py2.py3-none-any.whl", hash = "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5"}, - {file = "flake8-6.1.0.tar.gz", hash = "sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23"}, + {file = "flake8-7.0.0-py2.py3-none-any.whl", hash = "sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3"}, + {file = "flake8-7.0.0.tar.gz", hash = "sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132"}, ] [package.dependencies] mccabe = ">=0.7.0,<0.8.0" pycodestyle = ">=2.11.0,<2.12.0" -pyflakes = ">=3.1.0,<3.2.0" +pyflakes = ">=3.2.0,<3.3.0" [[package]] name = "idna" @@ -988,13 +989,13 @@ files = [ [[package]] name = "more-itertools" -version = "10.1.0" +version = "10.2.0" description = "More routines for operating on iterables, beyond itertools" optional = false python-versions = ">=3.8" files = [ - {file = "more-itertools-10.1.0.tar.gz", hash = "sha256:626c369fa0eb37bac0291bce8259b332fd59ac792fa5497b59837309cd5b114a"}, - {file = "more_itertools-10.1.0-py3-none-any.whl", hash = "sha256:64e0735fcfdc6f3464ea133afe8ea4483b1c5fe3a3d69852e6503b43a0b222e6"}, + {file = "more-itertools-10.2.0.tar.gz", hash = "sha256:8fccb480c43d3e99a00087634c06dd02b0d50fbf088b380de5a41a015ec239e1"}, + {file = "more_itertools-10.2.0-py3-none-any.whl", hash = "sha256:686b06abe565edfab151cb8fd385a05651e1fdf8f0a14191e4439283421f8684"}, ] [[package]] @@ -1075,47 +1076,47 @@ files = [ [[package]] name = "numpy" -version = "1.26.2" +version = "1.26.3" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.9" files = [ - {file = "numpy-1.26.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3703fc9258a4a122d17043e57b35e5ef1c5a5837c3db8be396c82e04c1cf9b0f"}, - {file = "numpy-1.26.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cc392fdcbd21d4be6ae1bb4475a03ce3b025cd49a9be5345d76d7585aea69440"}, - {file = "numpy-1.26.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36340109af8da8805d8851ef1d74761b3b88e81a9bd80b290bbfed61bd2b4f75"}, - {file = "numpy-1.26.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcc008217145b3d77abd3e4d5ef586e3bdfba8fe17940769f8aa09b99e856c00"}, - {file = "numpy-1.26.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3ced40d4e9e18242f70dd02d739e44698df3dcb010d31f495ff00a31ef6014fe"}, - {file = "numpy-1.26.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b272d4cecc32c9e19911891446b72e986157e6a1809b7b56518b4f3755267523"}, - {file = "numpy-1.26.2-cp310-cp310-win32.whl", hash = "sha256:22f8fc02fdbc829e7a8c578dd8d2e15a9074b630d4da29cda483337e300e3ee9"}, - {file = "numpy-1.26.2-cp310-cp310-win_amd64.whl", hash = "sha256:26c9d33f8e8b846d5a65dd068c14e04018d05533b348d9eaeef6c1bd787f9919"}, - {file = "numpy-1.26.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b96e7b9c624ef3ae2ae0e04fa9b460f6b9f17ad8b4bec6d7756510f1f6c0c841"}, - {file = "numpy-1.26.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:aa18428111fb9a591d7a9cc1b48150097ba6a7e8299fb56bdf574df650e7d1f1"}, - {file = "numpy-1.26.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06fa1ed84aa60ea6ef9f91ba57b5ed963c3729534e6e54055fc151fad0423f0a"}, - {file = "numpy-1.26.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96ca5482c3dbdd051bcd1fce8034603d6ebfc125a7bd59f55b40d8f5d246832b"}, - {file = "numpy-1.26.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:854ab91a2906ef29dc3925a064fcd365c7b4da743f84b123002f6139bcb3f8a7"}, - {file = "numpy-1.26.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f43740ab089277d403aa07567be138fc2a89d4d9892d113b76153e0e412409f8"}, - {file = "numpy-1.26.2-cp311-cp311-win32.whl", hash = "sha256:a2bbc29fcb1771cd7b7425f98b05307776a6baf43035d3b80c4b0f29e9545186"}, - {file = "numpy-1.26.2-cp311-cp311-win_amd64.whl", hash = "sha256:2b3fca8a5b00184828d12b073af4d0fc5fdd94b1632c2477526f6bd7842d700d"}, - {file = "numpy-1.26.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a4cd6ed4a339c21f1d1b0fdf13426cb3b284555c27ac2f156dfdaaa7e16bfab0"}, - {file = "numpy-1.26.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5d5244aabd6ed7f312268b9247be47343a654ebea52a60f002dc70c769048e75"}, - {file = "numpy-1.26.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a3cdb4d9c70e6b8c0814239ead47da00934666f668426fc6e94cce869e13fd7"}, - {file = "numpy-1.26.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa317b2325f7aa0a9471663e6093c210cb2ae9c0ad824732b307d2c51983d5b6"}, - {file = "numpy-1.26.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:174a8880739c16c925799c018f3f55b8130c1f7c8e75ab0a6fa9d41cab092fd6"}, - {file = "numpy-1.26.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f79b231bf5c16b1f39c7f4875e1ded36abee1591e98742b05d8a0fb55d8a3eec"}, - {file = "numpy-1.26.2-cp312-cp312-win32.whl", hash = "sha256:4a06263321dfd3598cacb252f51e521a8cb4b6df471bb12a7ee5cbab20ea9167"}, - {file = "numpy-1.26.2-cp312-cp312-win_amd64.whl", hash = "sha256:b04f5dc6b3efdaab541f7857351aac359e6ae3c126e2edb376929bd3b7f92d7e"}, - {file = "numpy-1.26.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4eb8df4bf8d3d90d091e0146f6c28492b0be84da3e409ebef54349f71ed271ef"}, - {file = "numpy-1.26.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1a13860fdcd95de7cf58bd6f8bc5a5ef81c0b0625eb2c9a783948847abbef2c2"}, - {file = "numpy-1.26.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64308ebc366a8ed63fd0bf426b6a9468060962f1a4339ab1074c228fa6ade8e3"}, - {file = "numpy-1.26.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baf8aab04a2c0e859da118f0b38617e5ee65d75b83795055fb66c0d5e9e9b818"}, - {file = "numpy-1.26.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d73a3abcac238250091b11caef9ad12413dab01669511779bc9b29261dd50210"}, - {file = "numpy-1.26.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b361d369fc7e5e1714cf827b731ca32bff8d411212fccd29ad98ad622449cc36"}, - {file = "numpy-1.26.2-cp39-cp39-win32.whl", hash = "sha256:bd3f0091e845164a20bd5a326860c840fe2af79fa12e0469a12768a3ec578d80"}, - {file = "numpy-1.26.2-cp39-cp39-win_amd64.whl", hash = "sha256:2beef57fb031dcc0dc8fa4fe297a742027b954949cabb52a2a376c144e5e6060"}, - {file = "numpy-1.26.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1cc3d5029a30fb5f06704ad6b23b35e11309491c999838c31f124fee32107c79"}, - {file = "numpy-1.26.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94cc3c222bb9fb5a12e334d0479b97bb2df446fbe622b470928f5284ffca3f8d"}, - {file = "numpy-1.26.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe6b44fb8fcdf7eda4ef4461b97b3f63c466b27ab151bec2366db8b197387841"}, - {file = "numpy-1.26.2.tar.gz", hash = "sha256:f65738447676ab5777f11e6bbbdb8ce11b785e105f690bc45966574816b6d3ea"}, + {file = "numpy-1.26.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:806dd64230dbbfaca8a27faa64e2f414bf1c6622ab78cc4264f7f5f028fee3bf"}, + {file = "numpy-1.26.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02f98011ba4ab17f46f80f7f8f1c291ee7d855fcef0a5a98db80767a468c85cd"}, + {file = "numpy-1.26.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d45b3ec2faed4baca41c76617fcdcfa4f684ff7a151ce6fc78ad3b6e85af0a6"}, + {file = "numpy-1.26.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdd2b45bf079d9ad90377048e2747a0c82351989a2165821f0c96831b4a2a54b"}, + {file = "numpy-1.26.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:211ddd1e94817ed2d175b60b6374120244a4dd2287f4ece45d49228b4d529178"}, + {file = "numpy-1.26.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1240f767f69d7c4c8a29adde2310b871153df9b26b5cb2b54a561ac85146485"}, + {file = "numpy-1.26.3-cp310-cp310-win32.whl", hash = "sha256:21a9484e75ad018974a2fdaa216524d64ed4212e418e0a551a2d83403b0531d3"}, + {file = "numpy-1.26.3-cp310-cp310-win_amd64.whl", hash = "sha256:9e1591f6ae98bcfac2a4bbf9221c0b92ab49762228f38287f6eeb5f3f55905ce"}, + {file = "numpy-1.26.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b831295e5472954104ecb46cd98c08b98b49c69fdb7040483aff799a755a7374"}, + {file = "numpy-1.26.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9e87562b91f68dd8b1c39149d0323b42e0082db7ddb8e934ab4c292094d575d6"}, + {file = "numpy-1.26.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c66d6fec467e8c0f975818c1796d25c53521124b7cfb760114be0abad53a0a2"}, + {file = "numpy-1.26.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f25e2811a9c932e43943a2615e65fc487a0b6b49218899e62e426e7f0a57eeda"}, + {file = "numpy-1.26.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:af36e0aa45e25c9f57bf684b1175e59ea05d9a7d3e8e87b7ae1a1da246f2767e"}, + {file = "numpy-1.26.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:51c7f1b344f302067b02e0f5b5d2daa9ed4a721cf49f070280ac202738ea7f00"}, + {file = "numpy-1.26.3-cp311-cp311-win32.whl", hash = "sha256:7ca4f24341df071877849eb2034948459ce3a07915c2734f1abb4018d9c49d7b"}, + {file = "numpy-1.26.3-cp311-cp311-win_amd64.whl", hash = "sha256:39763aee6dfdd4878032361b30b2b12593fb445ddb66bbac802e2113eb8a6ac4"}, + {file = "numpy-1.26.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a7081fd19a6d573e1a05e600c82a1c421011db7935ed0d5c483e9dd96b99cf13"}, + {file = "numpy-1.26.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12c70ac274b32bc00c7f61b515126c9205323703abb99cd41836e8125ea0043e"}, + {file = "numpy-1.26.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f784e13e598e9594750b2ef6729bcd5a47f6cfe4a12cca13def35e06d8163e3"}, + {file = "numpy-1.26.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f24750ef94d56ce6e33e4019a8a4d68cfdb1ef661a52cdaee628a56d2437419"}, + {file = "numpy-1.26.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:77810ef29e0fb1d289d225cabb9ee6cf4d11978a00bb99f7f8ec2132a84e0166"}, + {file = "numpy-1.26.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8ed07a90f5450d99dad60d3799f9c03c6566709bd53b497eb9ccad9a55867f36"}, + {file = "numpy-1.26.3-cp312-cp312-win32.whl", hash = "sha256:f73497e8c38295aaa4741bdfa4fda1a5aedda5473074369eca10626835445511"}, + {file = "numpy-1.26.3-cp312-cp312-win_amd64.whl", hash = "sha256:da4b0c6c699a0ad73c810736303f7fbae483bcb012e38d7eb06a5e3b432c981b"}, + {file = "numpy-1.26.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1666f634cb3c80ccbd77ec97bc17337718f56d6658acf5d3b906ca03e90ce87f"}, + {file = "numpy-1.26.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:18c3319a7d39b2c6a9e3bb75aab2304ab79a811ac0168a671a62e6346c29b03f"}, + {file = "numpy-1.26.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b7e807d6888da0db6e7e75838444d62495e2b588b99e90dd80c3459594e857b"}, + {file = "numpy-1.26.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4d362e17bcb0011738c2d83e0a65ea8ce627057b2fdda37678f4374a382a137"}, + {file = "numpy-1.26.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b8c275f0ae90069496068c714387b4a0eba5d531aace269559ff2b43655edd58"}, + {file = "numpy-1.26.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cc0743f0302b94f397a4a65a660d4cd24267439eb16493fb3caad2e4389bccbb"}, + {file = "numpy-1.26.3-cp39-cp39-win32.whl", hash = "sha256:9bc6d1a7f8cedd519c4b7b1156d98e051b726bf160715b769106661d567b3f03"}, + {file = "numpy-1.26.3-cp39-cp39-win_amd64.whl", hash = "sha256:867e3644e208c8922a3be26fc6bbf112a035f50f0a86497f98f228c50c607bb2"}, + {file = "numpy-1.26.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3c67423b3703f8fbd90f5adaa37f85b5794d3366948efe9a5190a5f3a83fc34e"}, + {file = "numpy-1.26.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46f47ee566d98849323f01b349d58f2557f02167ee301e5e28809a8c0e27a2d0"}, + {file = "numpy-1.26.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a8474703bffc65ca15853d5fd4d06b18138ae90c17c8d12169968e998e448bb5"}, + {file = "numpy-1.26.3.tar.gz", hash = "sha256:697df43e2b6310ecc9d95f05d5ef20eacc09c7c4ecc9da3f235d39e71b7da1e4"}, ] [[package]] @@ -1146,47 +1147,67 @@ files = [ [[package]] name = "pandas" -version = "1.5.3" +version = "2.1.4" description = "Powerful data structures for data analysis, time series, and statistics" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "pandas-1.5.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3749077d86e3a2f0ed51367f30bf5b82e131cc0f14260c4d3e499186fccc4406"}, - {file = "pandas-1.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:972d8a45395f2a2d26733eb8d0f629b2f90bebe8e8eddbb8829b180c09639572"}, - {file = "pandas-1.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:50869a35cbb0f2e0cd5ec04b191e7b12ed688874bd05dd777c19b28cbea90996"}, - {file = "pandas-1.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3ac844a0fe00bfaeb2c9b51ab1424e5c8744f89860b138434a363b1f620f354"}, - {file = "pandas-1.5.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a0a56cef15fd1586726dace5616db75ebcfec9179a3a55e78f72c5639fa2a23"}, - {file = "pandas-1.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:478ff646ca42b20376e4ed3fa2e8d7341e8a63105586efe54fa2508ee087f328"}, - {file = "pandas-1.5.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6973549c01ca91ec96199e940495219c887ea815b2083722821f1d7abfa2b4dc"}, - {file = "pandas-1.5.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c39a8da13cede5adcd3be1182883aea1c925476f4e84b2807a46e2775306305d"}, - {file = "pandas-1.5.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f76d097d12c82a535fda9dfe5e8dd4127952b45fea9b0276cb30cca5ea313fbc"}, - {file = "pandas-1.5.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e474390e60ed609cec869b0da796ad94f420bb057d86784191eefc62b65819ae"}, - {file = "pandas-1.5.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f2b952406a1588ad4cad5b3f55f520e82e902388a6d5a4a91baa8d38d23c7f6"}, - {file = "pandas-1.5.3-cp311-cp311-win_amd64.whl", hash = "sha256:bc4c368f42b551bf72fac35c5128963a171b40dce866fb066540eeaf46faa003"}, - {file = "pandas-1.5.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:14e45300521902689a81f3f41386dc86f19b8ba8dd5ac5a3c7010ef8d2932813"}, - {file = "pandas-1.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9842b6f4b8479e41968eced654487258ed81df7d1c9b7b870ceea24ed9459b31"}, - {file = "pandas-1.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:26d9c71772c7afb9d5046e6e9cf42d83dd147b5cf5bcb9d97252077118543792"}, - {file = "pandas-1.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fbcb19d6fceb9e946b3e23258757c7b225ba450990d9ed63ccceeb8cae609f7"}, - {file = "pandas-1.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:565fa34a5434d38e9d250af3c12ff931abaf88050551d9fbcdfafca50d62babf"}, - {file = "pandas-1.5.3-cp38-cp38-win32.whl", hash = "sha256:87bd9c03da1ac870a6d2c8902a0e1fd4267ca00f13bc494c9e5a9020920e1d51"}, - {file = "pandas-1.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:41179ce559943d83a9b4bbacb736b04c928b095b5f25dd2b7389eda08f46f373"}, - {file = "pandas-1.5.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c74a62747864ed568f5a82a49a23a8d7fe171d0c69038b38cedf0976831296fa"}, - {file = "pandas-1.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c4c00e0b0597c8e4f59e8d461f797e5d70b4d025880516a8261b2817c47759ee"}, - {file = "pandas-1.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a50d9a4336a9621cab7b8eb3fb11adb82de58f9b91d84c2cd526576b881a0c5a"}, - {file = "pandas-1.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd05f7783b3274aa206a1af06f0ceed3f9b412cf665b7247eacd83be41cf7bf0"}, - {file = "pandas-1.5.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f69c4029613de47816b1bb30ff5ac778686688751a5e9c99ad8c7031f6508e5"}, - {file = "pandas-1.5.3-cp39-cp39-win32.whl", hash = "sha256:7cec0bee9f294e5de5bbfc14d0573f65526071029d036b753ee6507d2a21480a"}, - {file = "pandas-1.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:dfd681c5dc216037e0b0a2c821f5ed99ba9f03ebcf119c7dac0e9a7b960b9ec9"}, - {file = "pandas-1.5.3.tar.gz", hash = "sha256:74a3fd7e5a7ec052f183273dc7b0acd3a863edf7520f5d3a1765c04ffdb3b0b1"}, + {file = "pandas-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bdec823dc6ec53f7a6339a0e34c68b144a7a1fd28d80c260534c39c62c5bf8c9"}, + {file = "pandas-2.1.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:294d96cfaf28d688f30c918a765ea2ae2e0e71d3536754f4b6de0ea4a496d034"}, + {file = "pandas-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b728fb8deba8905b319f96447a27033969f3ea1fea09d07d296c9030ab2ed1d"}, + {file = "pandas-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00028e6737c594feac3c2df15636d73ace46b8314d236100b57ed7e4b9ebe8d9"}, + {file = "pandas-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:426dc0f1b187523c4db06f96fb5c8d1a845e259c99bda74f7de97bd8a3bb3139"}, + {file = "pandas-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:f237e6ca6421265643608813ce9793610ad09b40154a3344a088159590469e46"}, + {file = "pandas-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b7d852d16c270e4331f6f59b3e9aa23f935f5c4b0ed2d0bc77637a8890a5d092"}, + {file = "pandas-2.1.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bd7d5f2f54f78164b3d7a40f33bf79a74cdee72c31affec86bfcabe7e0789821"}, + {file = "pandas-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0aa6e92e639da0d6e2017d9ccff563222f4eb31e4b2c3cf32a2a392fc3103c0d"}, + {file = "pandas-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d797591b6846b9db79e65dc2d0d48e61f7db8d10b2a9480b4e3faaddc421a171"}, + {file = "pandas-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d2d3e7b00f703aea3945995ee63375c61b2e6aa5aa7871c5d622870e5e137623"}, + {file = "pandas-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:dc9bf7ade01143cddc0074aa6995edd05323974e6e40d9dbde081021ded8510e"}, + {file = "pandas-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:482d5076e1791777e1571f2e2d789e940dedd927325cc3cb6d0800c6304082f6"}, + {file = "pandas-2.1.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8a706cfe7955c4ca59af8c7a0517370eafbd98593155b48f10f9811da440248b"}, + {file = "pandas-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0513a132a15977b4a5b89aabd304647919bc2169eac4c8536afb29c07c23540"}, + {file = "pandas-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9f17f2b6fc076b2a0078862547595d66244db0f41bf79fc5f64a5c4d635bead"}, + {file = "pandas-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:45d63d2a9b1b37fa6c84a68ba2422dc9ed018bdaa668c7f47566a01188ceeec1"}, + {file = "pandas-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:f69b0c9bb174a2342818d3e2778584e18c740d56857fc5cdb944ec8bbe4082cf"}, + {file = "pandas-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3f06bda01a143020bad20f7a85dd5f4a1600112145f126bc9e3e42077c24ef34"}, + {file = "pandas-2.1.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab5796839eb1fd62a39eec2916d3e979ec3130509930fea17fe6f81e18108f6a"}, + {file = "pandas-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edbaf9e8d3a63a9276d707b4d25930a262341bca9874fcb22eff5e3da5394732"}, + {file = "pandas-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ebfd771110b50055712b3b711b51bee5d50135429364d0498e1213a7adc2be8"}, + {file = "pandas-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8ea107e0be2aba1da619cc6ba3f999b2bfc9669a83554b1904ce3dd9507f0860"}, + {file = "pandas-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:d65148b14788b3758daf57bf42725caa536575da2b64df9964c563b015230984"}, + {file = "pandas-2.1.4.tar.gz", hash = "sha256:fcb68203c833cc735321512e13861358079a96c174a61f5116a1de89c58c0ef7"}, ] [package.dependencies] -numpy = {version = ">=1.23.2", markers = "python_version >= \"3.11\""} -python-dateutil = ">=2.8.1" +numpy = {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""} +python-dateutil = ">=2.8.2" pytz = ">=2020.1" +tzdata = ">=2022.1" [package.extras] -test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] +all = ["PyQt5 (>=5.15.6)", "SQLAlchemy (>=1.4.36)", "beautifulsoup4 (>=4.11.1)", "bottleneck (>=1.3.4)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=0.8.1)", "fsspec (>=2022.05.0)", "gcsfs (>=2022.05.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.8.0)", "matplotlib (>=3.6.1)", "numba (>=0.55.2)", "numexpr (>=2.8.0)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pandas-gbq (>=0.17.5)", "psycopg2 (>=2.9.3)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.5)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "pyxlsb (>=1.0.9)", "qtpy (>=2.2.0)", "s3fs (>=2022.05.0)", "scipy (>=1.8.1)", "tables (>=3.7.0)", "tabulate (>=0.8.10)", "xarray (>=2022.03.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)", "zstandard (>=0.17.0)"] +aws = ["s3fs (>=2022.05.0)"] +clipboard = ["PyQt5 (>=5.15.6)", "qtpy (>=2.2.0)"] +compression = ["zstandard (>=0.17.0)"] +computation = ["scipy (>=1.8.1)", "xarray (>=2022.03.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pyxlsb (>=1.0.9)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)"] +feather = ["pyarrow (>=7.0.0)"] +fss = ["fsspec (>=2022.05.0)"] +gcp = ["gcsfs (>=2022.05.0)", "pandas-gbq (>=0.17.5)"] +hdf5 = ["tables (>=3.7.0)"] +html = ["beautifulsoup4 (>=4.11.1)", "html5lib (>=1.1)", "lxml (>=4.8.0)"] +mysql = ["SQLAlchemy (>=1.4.36)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.8.10)"] +parquet = ["pyarrow (>=7.0.0)"] +performance = ["bottleneck (>=1.3.4)", "numba (>=0.55.2)", "numexpr (>=2.8.0)"] +plot = ["matplotlib (>=3.6.1)"] +postgresql = ["SQLAlchemy (>=1.4.36)", "psycopg2 (>=2.9.3)"] +spss = ["pyreadstat (>=1.1.5)"] +sql-other = ["SQLAlchemy (>=1.4.36)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.8.0)"] [[package]] name = "pathspec" @@ -1215,13 +1236,13 @@ ptyprocess = ">=0.5" [[package]] name = "pip" -version = "23.3.1" +version = "23.3.2" description = "The PyPA recommended tool for installing Python packages." optional = false python-versions = ">=3.7" files = [ - {file = "pip-23.3.1-py3-none-any.whl", hash = "sha256:55eb67bb6171d37447e82213be585b75fe2b12b359e993773aca4de9247a052b"}, - {file = "pip-23.3.1.tar.gz", hash = "sha256:1fcaa041308d01f14575f6d0d2ea4b75a3e2871fe4f9c694976f908768e14174"}, + {file = "pip-23.3.2-py3-none-any.whl", hash = "sha256:5052d7889c1f9d05224cd41741acb7c5d6fa735ab34e339624a614eaaa7e7d76"}, + {file = "pip-23.3.2.tar.gz", hash = "sha256:7fd9972f96db22c8077a1ee2691b172c8089b17a5652a44494a9ecb0d78f9149"}, ] [[package]] @@ -1316,22 +1337,22 @@ poetry-core = ">=1.7.0,<2.0.0" [[package]] name = "protobuf" -version = "4.25.1" +version = "4.25.2" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-4.25.1-cp310-abi3-win32.whl", hash = "sha256:193f50a6ab78a970c9b4f148e7c750cfde64f59815e86f686c22e26b4fe01ce7"}, - {file = "protobuf-4.25.1-cp310-abi3-win_amd64.whl", hash = "sha256:3497c1af9f2526962f09329fd61a36566305e6c72da2590ae0d7d1322818843b"}, - {file = "protobuf-4.25.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:0bf384e75b92c42830c0a679b0cd4d6e2b36ae0cf3dbb1e1dfdda48a244f4bcd"}, - {file = "protobuf-4.25.1-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:0f881b589ff449bf0b931a711926e9ddaad3b35089cc039ce1af50b21a4ae8cb"}, - {file = "protobuf-4.25.1-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:ca37bf6a6d0046272c152eea90d2e4ef34593aaa32e8873fc14c16440f22d4b7"}, - {file = "protobuf-4.25.1-cp38-cp38-win32.whl", hash = "sha256:abc0525ae2689a8000837729eef7883b9391cd6aa7950249dcf5a4ede230d5dd"}, - {file = "protobuf-4.25.1-cp38-cp38-win_amd64.whl", hash = "sha256:1484f9e692091450e7edf418c939e15bfc8fc68856e36ce399aed6889dae8bb0"}, - {file = "protobuf-4.25.1-cp39-cp39-win32.whl", hash = "sha256:8bdbeaddaac52d15c6dce38c71b03038ef7772b977847eb6d374fc86636fa510"}, - {file = "protobuf-4.25.1-cp39-cp39-win_amd64.whl", hash = "sha256:becc576b7e6b553d22cbdf418686ee4daa443d7217999125c045ad56322dda10"}, - {file = "protobuf-4.25.1-py3-none-any.whl", hash = "sha256:a19731d5e83ae4737bb2a089605e636077ac001d18781b3cf489b9546c7c80d6"}, - {file = "protobuf-4.25.1.tar.gz", hash = "sha256:57d65074b4f5baa4ab5da1605c02be90ac20c8b40fb137d6a8df9f416b0d0ce2"}, + {file = "protobuf-4.25.2-cp310-abi3-win32.whl", hash = "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6"}, + {file = "protobuf-4.25.2-cp310-abi3-win_amd64.whl", hash = "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9"}, + {file = "protobuf-4.25.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d"}, + {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62"}, + {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020"}, + {file = "protobuf-4.25.2-cp38-cp38-win32.whl", hash = "sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61"}, + {file = "protobuf-4.25.2-cp38-cp38-win_amd64.whl", hash = "sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62"}, + {file = "protobuf-4.25.2-cp39-cp39-win32.whl", hash = "sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3"}, + {file = "protobuf-4.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0"}, + {file = "protobuf-4.25.2-py3-none-any.whl", hash = "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830"}, + {file = "protobuf-4.25.2.tar.gz", hash = "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e"}, ] [[package]] @@ -1369,13 +1390,13 @@ files = [ [[package]] name = "pyflakes" -version = "3.1.0" +version = "3.2.0" description = "passive checker of Python programs" optional = false python-versions = ">=3.8" files = [ - {file = "pyflakes-3.1.0-py2.py3-none-any.whl", hash = "sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774"}, - {file = "pyflakes-3.1.0.tar.gz", hash = "sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc"}, + {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"}, + {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"}, ] [[package]] @@ -1488,101 +1509,101 @@ files = [ [[package]] name = "rapidfuzz" -version = "3.5.2" +version = "3.6.1" description = "rapid fuzzy string matching" optional = false python-versions = ">=3.8" files = [ - {file = "rapidfuzz-3.5.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1a047d6e58833919d742bbc0dfa66d1de4f79e8562ee195007d3eae96635df39"}, - {file = "rapidfuzz-3.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:22877c027c492b7dc7e3387a576a33ed5aad891104aa90da2e0844c83c5493ef"}, - {file = "rapidfuzz-3.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e0f448b0eacbcc416feb634e1232a48d1cbde5e60f269c84e4fb0912f7bbb001"}, - {file = "rapidfuzz-3.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d05146497672f869baf41147d5ec1222788c70e5b8b0cfcd6e95597c75b5b96b"}, - {file = "rapidfuzz-3.5.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8f2df3968738a38d2a0058b5e721753f5d3d602346a1027b0dde31b0476418f3"}, - {file = "rapidfuzz-3.5.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5afc1fcf1830f9bb87d3b490ba03691081b9948a794ea851befd2643069a30c1"}, - {file = "rapidfuzz-3.5.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84be69ea65f64fa01e5c4976be9826a5aa949f037508887add42da07420d65d6"}, - {file = "rapidfuzz-3.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8658c1045766e87e0038323aa38b4a9f49b7f366563271f973c8890a98aa24b5"}, - {file = "rapidfuzz-3.5.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:852b3f93c15fce58b8dc668bd54123713bfdbbb0796ba905ea5df99cfd083132"}, - {file = "rapidfuzz-3.5.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:12424a06ad9bd0cbf5f7cea1015e78d924a0034a0e75a5a7b39c0703dcd94095"}, - {file = "rapidfuzz-3.5.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b4e9ded8e80530bd7205a7a2b01802f934a4695ca9e9fbe1ce9644f5e0697864"}, - {file = "rapidfuzz-3.5.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:affb8fe36157c2dc8a7bc45b6a1875eb03e2c49167a1d52789144bdcb7ab3b8c"}, - {file = "rapidfuzz-3.5.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1d33a622572d384f4c90b5f7a139328246ab5600141e90032b521c2127bd605"}, - {file = "rapidfuzz-3.5.2-cp310-cp310-win32.whl", hash = "sha256:2cf9f2ed4a97b388cffd48d534452a564c2491f68f4fd5bc140306f774ceb63a"}, - {file = "rapidfuzz-3.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:6541ffb70097885f7302cd73e2efd77be99841103023c2f9408551f27f45f7a5"}, - {file = "rapidfuzz-3.5.2-cp310-cp310-win_arm64.whl", hash = "sha256:1dd2542e5103fb8ca46500a979ae14d1609dcba11d2f9fe01e99eec03420e193"}, - {file = "rapidfuzz-3.5.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bff7d3127ebc5cd908f3a72f6517f31f5247b84666137556a8fcc5177c560939"}, - {file = "rapidfuzz-3.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fdfdb3685b631d8efbb6d6d3d86eb631be2b408d9adafcadc11e63e3f9c96dec"}, - {file = "rapidfuzz-3.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:97b043fe8185ec53bb3ff0e59deb89425c0fc6ece6e118939963aab473505801"}, - {file = "rapidfuzz-3.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a4a7832737f87583f3863dc62e6f56dd4a9fefc5f04a7bdcb4c433a0f36bb1b"}, - {file = "rapidfuzz-3.5.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d876dba9a11fcf60dcf1562c5a84ef559db14c2ceb41e1ad2d93cd1dc085889"}, - {file = "rapidfuzz-3.5.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa4c0612893716bbb6595066ca9ecb517c982355abe39ba9d1f4ab834ace91ad"}, - {file = "rapidfuzz-3.5.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:120316824333e376b88b284724cfd394c6ccfcb9818519eab5d58a502e5533f0"}, - {file = "rapidfuzz-3.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9cdbe8e80cc186d55f748a34393533a052d855357d5398a1ccb71a5021b58e8d"}, - {file = "rapidfuzz-3.5.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1062425c8358a547ae5ebad148f2e0f02417716a571b803b0c68e4d552e99d32"}, - {file = "rapidfuzz-3.5.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:66be181965aff13301dd5f9b94b646ce39d99c7fe2fd5de1656f4ca7fafcb38c"}, - {file = "rapidfuzz-3.5.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:53df7aea3cf301633cfa2b4b2c2d2441a87dfc878ef810e5b4eddcd3e68723ad"}, - {file = "rapidfuzz-3.5.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:76639dca5eb0afc6424ac5f42d43d3bd342ac710e06f38a8c877d5b96de09589"}, - {file = "rapidfuzz-3.5.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:27689361c747b5f7b8a26056bc60979875323f1c3dcaaa9e2fec88f03b20a365"}, - {file = "rapidfuzz-3.5.2-cp311-cp311-win32.whl", hash = "sha256:99c9fc5265566fb94731dc6826f43c5109e797078264e6389a36d47814473692"}, - {file = "rapidfuzz-3.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:666928ee735562a909d81bd2f63207b3214afd4ca41f790ab3025d066975c814"}, - {file = "rapidfuzz-3.5.2-cp311-cp311-win_arm64.whl", hash = "sha256:d55de67c48f06b7772541e8d4c062a2679205799ce904236e2836cb04c106442"}, - {file = "rapidfuzz-3.5.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:04e1e02b182283c43c866e215317735e91d22f5d34e65400121c04d5ed7ed859"}, - {file = "rapidfuzz-3.5.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:365e544aba3ac13acf1a62cb2e5909ad2ba078d0bfc7d69b1f801dfd673b9782"}, - {file = "rapidfuzz-3.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b61f77d834f94b0099fa9ed35c189b7829759d4e9c2743697a130dd7ba62259f"}, - {file = "rapidfuzz-3.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:43fb368998b9703fa8c63db292a8ab9e988bf6da0c8a635754be8e69da1e7c1d"}, - {file = "rapidfuzz-3.5.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25510b5d142c47786dbd27cfd9da7cae5bdea28d458379377a3644d8460a3404"}, - {file = "rapidfuzz-3.5.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bf3093443751e5a419834162af358d1e31dec75f84747a91dbbc47b2c04fc085"}, - {file = "rapidfuzz-3.5.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2fbaf546f15a924613f89d609ff66b85b4f4c2307ac14d93b80fe1025b713138"}, - {file = "rapidfuzz-3.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32d580df0e130ed85400ff77e1c32d965e9bc7be29ac4072ab637f57e26d29fb"}, - {file = "rapidfuzz-3.5.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:358a0fbc49343de20fee8ebdb33c7fa8f55a9ff93ff42d1ffe097d2caa248f1b"}, - {file = "rapidfuzz-3.5.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:fb379ac0ddfc86c5542a225d194f76ed468b071b6f79ff57c4b72e635605ad7d"}, - {file = "rapidfuzz-3.5.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7fb21e182dc6d83617e88dea002963d5cf99cf5eabbdbf04094f503d8fe8d723"}, - {file = "rapidfuzz-3.5.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:c04f9f1310ce414ab00bdcbf26d0906755094bfc59402cb66a7722c6f06d70b2"}, - {file = "rapidfuzz-3.5.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f6da61cc38c1a95efc5edcedf258759e6dbab73191651a28c5719587f32a56ad"}, - {file = "rapidfuzz-3.5.2-cp312-cp312-win32.whl", hash = "sha256:f823fd1977071486739f484e27092765d693da6beedaceece54edce1dfeec9b2"}, - {file = "rapidfuzz-3.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:a8162d81486de85ab1606e48e076431b66d44cf431b2b678e9cae458832e7147"}, - {file = "rapidfuzz-3.5.2-cp312-cp312-win_arm64.whl", hash = "sha256:dfc63fabb7d8da8483ca836bae7e55766fe39c63253571e103c034ba8ea80950"}, - {file = "rapidfuzz-3.5.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:df8fae2515a1e4936affccac3e7d506dd904de5ff82bc0b1433b4574a51b9bfb"}, - {file = "rapidfuzz-3.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:dd6384780c2a16097d47588844cd677316a90e0f41ef96ff485b62d58de79dcf"}, - {file = "rapidfuzz-3.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:467a4d730ae3bade87dba6bd769e837ab97e176968ce20591fe8f7bf819115b1"}, - {file = "rapidfuzz-3.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54576669c1502b751b534bd76a4aeaaf838ed88b30af5d5c1b7d0a3ca5d4f7b5"}, - {file = "rapidfuzz-3.5.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abafeb82f85a651a9d6d642a33dc021606bc459c33e250925b25d6b9e7105a2e"}, - {file = "rapidfuzz-3.5.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73e14617a520c0f1bc15eb78c215383477e5ca70922ecaff1d29c63c060e04ca"}, - {file = "rapidfuzz-3.5.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7cdf92116e9dfe40da17f921cdbfa0039dde9eb158914fa5f01b1e67a20b19cb"}, - {file = "rapidfuzz-3.5.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1962d5ccf8602589dbf8e85246a0ee2b4050d82fade1568fb76f8a4419257704"}, - {file = "rapidfuzz-3.5.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:db45028eae2fda7a24759c69ebeb2a7fbcc1a326606556448ed43ee480237a3c"}, - {file = "rapidfuzz-3.5.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b685abb8b6d97989f6c69556d7934e0e533aa8822f50b9517ff2da06a1d29f23"}, - {file = "rapidfuzz-3.5.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:40139552961018216b8cd88f6df4ecbbe984f907a62a5c823ccd907132c29a14"}, - {file = "rapidfuzz-3.5.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:0fef4705459842ef8f79746d6f6a0b5d2b6a61a145d7d8bbe10b2e756ea337c8"}, - {file = "rapidfuzz-3.5.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6b2ad5516f7068c7d9cbcda8ac5906c589e99bc427df2e1050282ee2d8bc2d58"}, - {file = "rapidfuzz-3.5.2-cp38-cp38-win32.whl", hash = "sha256:2da3a24c2f7dfca7f26ba04966b848e3bbeb93e54d899908ff88dfe3e1def9dc"}, - {file = "rapidfuzz-3.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:e3f2be79d4114d01f383096dbee51b57df141cb8b209c19d0cf65f23a24e75ba"}, - {file = "rapidfuzz-3.5.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:089a7e96e5032821af5964d8457fcb38877cc321cdd06ad7c5d6e3d852264cb9"}, - {file = "rapidfuzz-3.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:75d8a52bf8d1aa2ac968ae4b21b83b94fc7e5ea3dfbab34811fc60f32df505b2"}, - {file = "rapidfuzz-3.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2bacce6bbc0362f0789253424269cc742b1f45e982430387db3abe1d0496e371"}, - {file = "rapidfuzz-3.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5fd627e604ddc02db2ddb9ddc4a91dd92b7a6d6378fcf30bb37b49229072b89"}, - {file = "rapidfuzz-3.5.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2e8b369f23f00678f6e673572209a5d3b0832f4991888e3df97af7b8b9decf3"}, - {file = "rapidfuzz-3.5.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c29958265e4c2b937269e804b8a160c027ee1c2627d6152655008a8b8083630e"}, - {file = "rapidfuzz-3.5.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:00be97f9219355945c46f37ac9fa447046e6f7930f7c901e5d881120d1695458"}, - {file = "rapidfuzz-3.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ada0d8d57e0f556ef38c24fee71bfe8d0db29c678bff2acd1819fc1b74f331c2"}, - {file = "rapidfuzz-3.5.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:de89585268ed8ee44e80126814cae63ff6b00d08416481f31b784570ef07ec59"}, - {file = "rapidfuzz-3.5.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:908ff2de9c442b379143d1da3c886c63119d4eba22986806e2533cee603fe64b"}, - {file = "rapidfuzz-3.5.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:54f0061028723c026020f5bb20649c22bc8a0d9f5363c283bdc5901d4d3bff01"}, - {file = "rapidfuzz-3.5.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:b581107ec0c610cdea48b25f52030770be390db4a9a73ca58b8d70fa8a5ec32e"}, - {file = "rapidfuzz-3.5.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1d5a686ea258931aaa38019204bdc670bbe14b389a230b1363d84d6cf4b9dc38"}, - {file = "rapidfuzz-3.5.2-cp39-cp39-win32.whl", hash = "sha256:97f811ca7709c6ee8c0b55830f63b3d87086f4abbcbb189b4067e1cd7014db7b"}, - {file = "rapidfuzz-3.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:58ee34350f8c292dd24a050186c0e18301d80da904ef572cf5fda7be6a954929"}, - {file = "rapidfuzz-3.5.2-cp39-cp39-win_arm64.whl", hash = "sha256:c5075ce7b9286624cafcf36720ef1cfb2946d75430b87cb4d1f006e82cd71244"}, - {file = "rapidfuzz-3.5.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:af5221e4f7800db3e84c46b79dba4112e3b3cc2678f808bdff4fcd2487073846"}, - {file = "rapidfuzz-3.5.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8501d7875b176930e6ed9dbc1bc35adb37ef312f6106bd6bb5c204adb90160ac"}, - {file = "rapidfuzz-3.5.2-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e414e1ca40386deda4291aa2d45062fea0fbaa14f95015738f8bb75c4d27f862"}, - {file = "rapidfuzz-3.5.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2059cd73b7ea779a9307d7a78ed743f0e3d33b88ccdcd84569abd2953cd859f"}, - {file = "rapidfuzz-3.5.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:58e3e21f6f13a7cca265cce492bc797425bd4cb2025fdd161a9e86a824ad65ce"}, - {file = "rapidfuzz-3.5.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b847a49377e64e92e11ef3d0a793de75451526c83af015bdafdd5d04de8a058a"}, - {file = "rapidfuzz-3.5.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a42c7a8c62b29c4810e39da22b42524295fcb793f41c395c2cb07c126b729e83"}, - {file = "rapidfuzz-3.5.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:51b5166be86e09e011e92d9862b1fe64c4c7b9385f443fb535024e646d890460"}, - {file = "rapidfuzz-3.5.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f808dcb0088a7a496cc9895e66a7b8de55ffea0eb9b547c75dfb216dd5f76ed"}, - {file = "rapidfuzz-3.5.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d4b05a8f4ab7e7344459394094587b033fe259eea3a8720035e8ba30e79ab39b"}, - {file = "rapidfuzz-3.5.2.tar.gz", hash = "sha256:9e9b395743e12c36a3167a3a9fd1b4e11d92fb0aa21ec98017ee6df639ed385e"}, + {file = "rapidfuzz-3.6.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ac434fc71edda30d45db4a92ba5e7a42c7405e1a54cb4ec01d03cc668c6dcd40"}, + {file = "rapidfuzz-3.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2a791168e119cfddf4b5a40470620c872812042f0621e6a293983a2d52372db0"}, + {file = "rapidfuzz-3.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5a2f3e9df346145c2be94e4d9eeffb82fab0cbfee85bd4a06810e834fe7c03fa"}, + {file = "rapidfuzz-3.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23de71e7f05518b0bbeef55d67b5dbce3bcd3e2c81e7e533051a2e9401354eb0"}, + {file = "rapidfuzz-3.6.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d056e342989248d2bdd67f1955bb7c3b0ecfa239d8f67a8dfe6477b30872c607"}, + {file = "rapidfuzz-3.6.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01835d02acd5d95c1071e1da1bb27fe213c84a013b899aba96380ca9962364bc"}, + {file = "rapidfuzz-3.6.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ed0f712e0bb5fea327e92aec8a937afd07ba8de4c529735d82e4c4124c10d5a0"}, + {file = "rapidfuzz-3.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96cd19934f76a1264e8ecfed9d9f5291fde04ecb667faef5f33bdbfd95fe2d1f"}, + {file = "rapidfuzz-3.6.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e06c4242a1354cf9d48ee01f6f4e6e19c511d50bb1e8d7d20bcadbb83a2aea90"}, + {file = "rapidfuzz-3.6.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:d73dcfe789d37c6c8b108bf1e203e027714a239e50ad55572ced3c004424ed3b"}, + {file = "rapidfuzz-3.6.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:06e98ff000e2619e7cfe552d086815671ed09b6899408c2c1b5103658261f6f3"}, + {file = "rapidfuzz-3.6.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:08b6fb47dd889c69fbc0b915d782aaed43e025df6979b6b7f92084ba55edd526"}, + {file = "rapidfuzz-3.6.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a1788ebb5f5b655a15777e654ea433d198f593230277e74d51a2a1e29a986283"}, + {file = "rapidfuzz-3.6.1-cp310-cp310-win32.whl", hash = "sha256:c65f92881753aa1098c77818e2b04a95048f30edbe9c3094dc3707d67df4598b"}, + {file = "rapidfuzz-3.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:4243a9c35667a349788461aae6471efde8d8800175b7db5148a6ab929628047f"}, + {file = "rapidfuzz-3.6.1-cp310-cp310-win_arm64.whl", hash = "sha256:f59d19078cc332dbdf3b7b210852ba1f5db8c0a2cd8cc4c0ed84cc00c76e6802"}, + {file = "rapidfuzz-3.6.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fbc07e2e4ac696497c5f66ec35c21ddab3fc7a406640bffed64c26ab2f7ce6d6"}, + {file = "rapidfuzz-3.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:40cced1a8852652813f30fb5d4b8f9b237112a0bbaeebb0f4cc3611502556764"}, + {file = "rapidfuzz-3.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:82300e5f8945d601c2daaaac139d5524d7c1fdf719aa799a9439927739917460"}, + {file = "rapidfuzz-3.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edf97c321fd641fea2793abce0e48fa4f91f3c202092672f8b5b4e781960b891"}, + {file = "rapidfuzz-3.6.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7420e801b00dee4a344ae2ee10e837d603461eb180e41d063699fb7efe08faf0"}, + {file = "rapidfuzz-3.6.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:060bd7277dc794279fa95522af355034a29c90b42adcb7aa1da358fc839cdb11"}, + {file = "rapidfuzz-3.6.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7e3375e4f2bfec77f907680328e4cd16cc64e137c84b1886d547ab340ba6928"}, + {file = "rapidfuzz-3.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a490cd645ef9d8524090551016f05f052e416c8adb2d8b85d35c9baa9d0428ab"}, + {file = "rapidfuzz-3.6.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2e03038bfa66d2d7cffa05d81c2f18fd6acbb25e7e3c068d52bb7469e07ff382"}, + {file = "rapidfuzz-3.6.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:2b19795b26b979c845dba407fe79d66975d520947b74a8ab6cee1d22686f7967"}, + {file = "rapidfuzz-3.6.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:064c1d66c40b3a0f488db1f319a6e75616b2e5fe5430a59f93a9a5e40a656d15"}, + {file = "rapidfuzz-3.6.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3c772d04fb0ebeece3109d91f6122b1503023086a9591a0b63d6ee7326bd73d9"}, + {file = "rapidfuzz-3.6.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:841eafba6913c4dfd53045835545ba01a41e9644e60920c65b89c8f7e60c00a9"}, + {file = "rapidfuzz-3.6.1-cp311-cp311-win32.whl", hash = "sha256:266dd630f12696ea7119f31d8b8e4959ef45ee2cbedae54417d71ae6f47b9848"}, + {file = "rapidfuzz-3.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:d79aec8aeee02ab55d0ddb33cea3ecd7b69813a48e423c966a26d7aab025cdfe"}, + {file = "rapidfuzz-3.6.1-cp311-cp311-win_arm64.whl", hash = "sha256:484759b5dbc5559e76fefaa9170147d1254468f555fd9649aea3bad46162a88b"}, + {file = "rapidfuzz-3.6.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b2ef4c0fd3256e357b70591ffb9e8ed1d439fb1f481ba03016e751a55261d7c1"}, + {file = "rapidfuzz-3.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:588c4b20fa2fae79d60a4e438cf7133d6773915df3cc0a7f1351da19eb90f720"}, + {file = "rapidfuzz-3.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7142ee354e9c06e29a2636b9bbcb592bb00600a88f02aa5e70e4f230347b373e"}, + {file = "rapidfuzz-3.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1dfc557c0454ad22382373ec1b7df530b4bbd974335efe97a04caec936f2956a"}, + {file = "rapidfuzz-3.6.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:03f73b381bdeccb331a12c3c60f1e41943931461cdb52987f2ecf46bfc22f50d"}, + {file = "rapidfuzz-3.6.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b0ccc2ec1781c7e5370d96aef0573dd1f97335343e4982bdb3a44c133e27786"}, + {file = "rapidfuzz-3.6.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da3e8c9f7e64bb17faefda085ff6862ecb3ad8b79b0f618a6cf4452028aa2222"}, + {file = "rapidfuzz-3.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fde9b14302a31af7bdafbf5cfbb100201ba21519be2b9dedcf4f1048e4fbe65d"}, + {file = "rapidfuzz-3.6.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c1a23eee225dfb21c07f25c9fcf23eb055d0056b48e740fe241cbb4b22284379"}, + {file = "rapidfuzz-3.6.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e49b9575d16c56c696bc7b06a06bf0c3d4ef01e89137b3ddd4e2ce709af9fe06"}, + {file = "rapidfuzz-3.6.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:0a9fc714b8c290261669f22808913aad49553b686115ad0ee999d1cb3df0cd66"}, + {file = "rapidfuzz-3.6.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:a3ee4f8f076aa92184e80308fc1a079ac356b99c39408fa422bbd00145be9854"}, + {file = "rapidfuzz-3.6.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f056ba42fd2f32e06b2c2ba2443594873cfccc0c90c8b6327904fc2ddf6d5799"}, + {file = "rapidfuzz-3.6.1-cp312-cp312-win32.whl", hash = "sha256:5d82b9651e3d34b23e4e8e201ecd3477c2baa17b638979deeabbb585bcb8ba74"}, + {file = "rapidfuzz-3.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:dad55a514868dae4543ca48c4e1fc0fac704ead038dafedf8f1fc0cc263746c1"}, + {file = "rapidfuzz-3.6.1-cp312-cp312-win_arm64.whl", hash = "sha256:3c84294f4470fcabd7830795d754d808133329e0a81d62fcc2e65886164be83b"}, + {file = "rapidfuzz-3.6.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e19d519386e9db4a5335a4b29f25b8183a1c3f78cecb4c9c3112e7f86470e37f"}, + {file = "rapidfuzz-3.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:01eb03cd880a294d1bf1a583fdd00b87169b9cc9c9f52587411506658c864d73"}, + {file = "rapidfuzz-3.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:be368573255f8fbb0125a78330a1a40c65e9ba3c5ad129a426ff4289099bfb41"}, + {file = "rapidfuzz-3.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3e5af946f419c30f5cb98b69d40997fe8580efe78fc83c2f0f25b60d0e56efb"}, + {file = "rapidfuzz-3.6.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f382f7ffe384ce34345e1c0b2065451267d3453cadde78946fbd99a59f0cc23c"}, + {file = "rapidfuzz-3.6.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be156f51f3a4f369e758505ed4ae64ea88900dcb2f89d5aabb5752676d3f3d7e"}, + {file = "rapidfuzz-3.6.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1936d134b6c513fbe934aeb668b0fee1ffd4729a3c9d8d373f3e404fbb0ce8a0"}, + {file = "rapidfuzz-3.6.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12ff8eaf4a9399eb2bebd838f16e2d1ded0955230283b07376d68947bbc2d33d"}, + {file = "rapidfuzz-3.6.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ae598a172e3a95df3383634589660d6b170cc1336fe7578115c584a99e0ba64d"}, + {file = "rapidfuzz-3.6.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cd4ba4c18b149da11e7f1b3584813159f189dc20833709de5f3df8b1342a9759"}, + {file = "rapidfuzz-3.6.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:0402f1629e91a4b2e4aee68043a30191e5e1b7cd2aa8dacf50b1a1bcf6b7d3ab"}, + {file = "rapidfuzz-3.6.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:1e12319c6b304cd4c32d5db00b7a1e36bdc66179c44c5707f6faa5a889a317c0"}, + {file = "rapidfuzz-3.6.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0bbfae35ce4de4c574b386c43c78a0be176eeddfdae148cb2136f4605bebab89"}, + {file = "rapidfuzz-3.6.1-cp38-cp38-win32.whl", hash = "sha256:7fec74c234d3097612ea80f2a80c60720eec34947066d33d34dc07a3092e8105"}, + {file = "rapidfuzz-3.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:a553cc1a80d97459d587529cc43a4c7c5ecf835f572b671107692fe9eddf3e24"}, + {file = "rapidfuzz-3.6.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:757dfd7392ec6346bd004f8826afb3bf01d18a723c97cbe9958c733ab1a51791"}, + {file = "rapidfuzz-3.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2963f4a3f763870a16ee076796be31a4a0958fbae133dbc43fc55c3968564cf5"}, + {file = "rapidfuzz-3.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d2f0274595cc5b2b929c80d4e71b35041104b577e118cf789b3fe0a77b37a4c5"}, + {file = "rapidfuzz-3.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f211e366e026de110a4246801d43a907cd1a10948082f47e8a4e6da76fef52"}, + {file = "rapidfuzz-3.6.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a59472b43879012b90989603aa5a6937a869a72723b1bf2ff1a0d1edee2cc8e6"}, + {file = "rapidfuzz-3.6.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a03863714fa6936f90caa7b4b50ea59ea32bb498cc91f74dc25485b3f8fccfe9"}, + {file = "rapidfuzz-3.6.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dd95b6b7bfb1584f806db89e1e0c8dbb9d25a30a4683880c195cc7f197eaf0c"}, + {file = "rapidfuzz-3.6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7183157edf0c982c0b8592686535c8b3e107f13904b36d85219c77be5cefd0d8"}, + {file = "rapidfuzz-3.6.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ad9d74ef7c619b5b0577e909582a1928d93e07d271af18ba43e428dc3512c2a1"}, + {file = "rapidfuzz-3.6.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:b53137d81e770c82189e07a8f32722d9e4260f13a0aec9914029206ead38cac3"}, + {file = "rapidfuzz-3.6.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:49b9ed2472394d306d5dc967a7de48b0aab599016aa4477127b20c2ed982dbf9"}, + {file = "rapidfuzz-3.6.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:dec307b57ec2d5054d77d03ee4f654afcd2c18aee00c48014cb70bfed79597d6"}, + {file = "rapidfuzz-3.6.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4381023fa1ff32fd5076f5d8321249a9aa62128eb3f21d7ee6a55373e672b261"}, + {file = "rapidfuzz-3.6.1-cp39-cp39-win32.whl", hash = "sha256:8d7a072f10ee57c8413c8ab9593086d42aaff6ee65df4aa6663eecdb7c398dca"}, + {file = "rapidfuzz-3.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:ebcfb5bfd0a733514352cfc94224faad8791e576a80ffe2fd40b2177bf0e7198"}, + {file = "rapidfuzz-3.6.1-cp39-cp39-win_arm64.whl", hash = "sha256:1c47d592e447738744905c18dda47ed155620204714e6df20eb1941bb1ba315e"}, + {file = "rapidfuzz-3.6.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:eef8b346ab331bec12bbc83ac75641249e6167fab3d84d8f5ca37fd8e6c7a08c"}, + {file = "rapidfuzz-3.6.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53251e256017e2b87f7000aee0353ba42392c442ae0bafd0f6b948593d3f68c6"}, + {file = "rapidfuzz-3.6.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6dede83a6b903e3ebcd7e8137e7ff46907ce9316e9d7e7f917d7e7cdc570ee05"}, + {file = "rapidfuzz-3.6.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e4da90e4c2b444d0a171d7444ea10152e07e95972bb40b834a13bdd6de1110c"}, + {file = "rapidfuzz-3.6.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:ca3dfcf74f2b6962f411c33dd95b0adf3901266e770da6281bc96bb5a8b20de9"}, + {file = "rapidfuzz-3.6.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bcc957c0a8bde8007f1a8a413a632a1a409890f31f73fe764ef4eac55f59ca87"}, + {file = "rapidfuzz-3.6.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:692c9a50bea7a8537442834f9bc6b7d29d8729a5b6379df17c31b6ab4df948c2"}, + {file = "rapidfuzz-3.6.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76c23ceaea27e790ddd35ef88b84cf9d721806ca366199a76fd47cfc0457a81b"}, + {file = "rapidfuzz-3.6.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b155e67fff215c09f130555002e42f7517d0ea72cbd58050abb83cb7c880cec"}, + {file = "rapidfuzz-3.6.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3028ee8ecc48250607fa8a0adce37b56275ec3b1acaccd84aee1f68487c8557b"}, + {file = "rapidfuzz-3.6.1.tar.gz", hash = "sha256:35660bee3ce1204872574fa041c7ad7ec5175b3053a4cb6e181463fc07013de7"}, ] [package.extras] @@ -1671,13 +1692,13 @@ jeepney = ">=0.6" [[package]] name = "setuptools" -version = "69.0.2" +version = "69.0.3" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.0.2-py3-none-any.whl", hash = "sha256:1e8fdff6797d3865f37397be788a4e3cba233608e9b509382a2777d25ebde7f2"}, - {file = "setuptools-69.0.2.tar.gz", hash = "sha256:735896e78a4742605974de002ac60562d286fa8051a7e2299445e8e8fbb01aa6"}, + {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"}, + {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"}, ] [package.extras] @@ -1827,13 +1848,13 @@ files = [ [[package]] name = "trove-classifiers" -version = "2023.11.29" +version = "2024.1.8" description = "Canonical source for classifiers on PyPI (pypi.org)." optional = false python-versions = "*" files = [ - {file = "trove-classifiers-2023.11.29.tar.gz", hash = "sha256:ff8f7fd82c7932113b46e7ef6742c70091cc63640c8c65db00d91f2e940b9514"}, - {file = "trove_classifiers-2023.11.29-py3-none-any.whl", hash = "sha256:02307750cbbac2b3d13078662f8a5bf077732bf506e9c33c97204b7f68f3699e"}, + {file = "trove-classifiers-2024.1.8.tar.gz", hash = "sha256:6e36caf430ff6485c4b57a4c6b364a13f6a898d16b9417c6c37467e59c14b05a"}, + {file = "trove_classifiers-2024.1.8-py3-none-any.whl", hash = "sha256:3c1ff4deb10149c7e39ede6e5bbc107def64362ef1ee7590ec98d71fb92f1b6a"}, ] [[package]] @@ -1847,6 +1868,17 @@ files = [ {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, ] +[[package]] +name = "tzdata" +version = "2023.4" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +files = [ + {file = "tzdata-2023.4-py2.py3-none-any.whl", hash = "sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3"}, + {file = "tzdata-2023.4.tar.gz", hash = "sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9"}, +] + [[package]] name = "urllib3" version = "2.0.7" @@ -1886,13 +1918,13 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess [[package]] name = "wcwidth" -version = "0.2.12" +version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" files = [ - {file = "wcwidth-0.2.12-py2.py3-none-any.whl", hash = "sha256:f26ec43d96c8cbfed76a5075dac87680124fa84e0855195a6184da9c187f133c"}, - {file = "wcwidth-0.2.12.tar.gz", hash = "sha256:f01c104efdf57971bcb756f054dd58ddec5204dd15fa31d6503ea57947d97c02"}, + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, ] [[package]] @@ -2101,4 +2133,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "~3.11" -content-hash = "7ba87dc21af992a0dea9cc2568d6f2499b17c7e1ed2493a365017a5de62455a6" +content-hash = "402269d7f6b15db227ab9a51fb436d2e23b6baf748550604e8b014386804f8a2" diff --git a/server/pyproject.toml b/server/pyproject.toml index a3488fa19..01e65dcbd 100644 --- a/server/pyproject.toml +++ b/server/pyproject.toml @@ -12,17 +12,17 @@ requests = "2.31.0" pytz = "2023.3" boto3 = "1.34.2" botocore = "1.34.2" -numpy = "1.26.2" -pandas = "1.5.3" +numpy = "1.26.3" +pandas = "2.1.4" datadog_lambda = "5.85.0" ddtrace = "2.3.1" dynamodb-json = "^1.3" [tool.poetry.dev-dependencies] -pip = ">=23.0" +pip = ">=23.1" chalice = "1.30.0" -flake8 = "~6.1.0" -black = "~23.12.0" +flake8 = "~7.0.0" +black = "~23.12.1" poetry-plugin-export = "^1.6.0" [tool.black]