From 23342ac8ac75dcce2f7b5ef2c26d5e29adeab750 Mon Sep 17 00:00:00 2001 From: itsGarrin Date: Sun, 5 Nov 2023 20:27:58 -0500 Subject: Continued work on the Zesty Salesman algorithm --- Clustering.ipynb | 215 ++++++++++++++++++++++++---------------------------- List E.csv | 3 - ZestySalesman.ipynb | 167 ++++++++++++++++++++++++++-------------- utils.py | 37 ++++++++- 4 files changed, 242 insertions(+), 180 deletions(-) delete mode 100644 List E.csv diff --git a/Clustering.ipynb b/Clustering.ipynb index 4bb7721..e658dcf 100644 --- a/Clustering.ipynb +++ b/Clustering.ipynb @@ -2,13 +2,13 @@ "cells": [ { "cell_type": "code", - "execution_count": 248, + "execution_count": 78, "id": "initial_id", "metadata": { "collapsed": true, "ExecuteTime": { - "end_time": "2023-11-06T00:18:48.861074Z", - "start_time": "2023-11-06T00:18:48.853531Z" + "end_time": "2023-11-06T01:14:10.536728Z", + "start_time": "2023-11-06T01:14:10.525881Z" } }, "outputs": [], @@ -26,7 +26,7 @@ }, { "cell_type": "code", - "execution_count": 249, + "execution_count": 79, "outputs": [], "source": [ "# Load the data\n", @@ -38,20 +38,20 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:18:49.113478Z", - "start_time": "2023-11-06T00:18:49.101708Z" + "end_time": "2023-11-06T01:14:10.821794Z", + "start_time": "2023-11-06T01:14:10.808507Z" } }, "id": "bb6f57eef695cf76" }, { "cell_type": "code", - "execution_count": 250, + "execution_count": 80, "outputs": [ { "data": { - "text/plain": " name gps \\\n0 521 Commercial Street #525 42.3688272,-71.0553792 \n1 Acorn St 42.3576234,-71.0688746 \n2 Arlington's Great Meadows 42.4299758,-71.2038948 \n3 Arthur Fiedler Statue 42.3565057,-71.0754527 \n4 BU Beach 42.3511927,-71.1060828 \n.. ... ... \n33 The Quiet Few 42.3670906,-71.0359889 \n34 The Tall Ship Boston 42.3649544,-71.0414523 \n35 Toasted Flats 42.3711266,-71.0371343 \n36 Vega Market 42.3891835,-71.033703 \n37 Winthrop High School 42.3803348,-70.9799864 \n\n googleUrl \\\n0 https://maps.google.com/maps?q=+%4042.3688272,... \n1 https://maps.google.com/maps?q=+%4042.3576234,... \n2 https://maps.google.com/maps?q=+%4042.4299758,... \n3 https://maps.google.com/maps?q=+%4042.3565057,... \n4 https://maps.google.com/maps?q=+%4042.3511927,... \n.. ... \n33 https://maps.google.com/maps?q=+%4042.3670906,... \n34 https://maps.google.com/maps?q=+%4042.3649544,... \n35 https://maps.google.com/maps?q=+%4042.3711266,... \n36 https://maps.google.com/maps?q=+%4042.3891835,... \n37 https://maps.google.com/maps?q=+%4042.3803348,... \n\n originalUrl info types \\\n0 https://www.google.com/maps/place/521+Commerci... NaN NaN \n1 https://www.google.com/maps/place/Acorn+St/dat... NaN NaN \n2 https://www.google.com/maps/place/Arlington's+... NaN NaN \n3 https://www.google.com/maps/place/Arthur+Fiedl... NaN NaN \n4 https://www.google.com/maps/place/BU+Beach/dat... NaN NaN \n.. ... ... ... \n33 https://www.google.com/maps/place/The+Quiet+Fe... NaN NaN \n34 https://www.google.com/maps/place/The+Tall+Shi... NaN NaN \n35 https://www.google.com/maps/place/Toasted+Flat... NaN NaN \n36 https://www.google.com/maps/place/Vega+Market/... NaN NaN \n37 https://www.google.com/maps/place/Winthrop+Hig... NaN NaN \n\n address \\\n0 NaN \n1 NaN \n2 Minuteman Commuter Bikeway, Lexington, MA 0242... \n3 Charles River Esplanades, Boston, MA 02114, Un... \n4 270 Bay State Rd, Boston, MA 02215, United States \n.. ... \n33 331 Sumner St, East Boston, MA 02128, United S... \n34 1 E Pier Dr, Boston, MA 02128, United States \n35 53 Chelsea St, Boston, MA 02128, United States \n36 29 Maverick St, Chelsea, MA 02150, United States \n37 400 Main St, Winthrop, MA 02152, United States \n\n description type \\\n0 NaN NaN \n1 NaN NaN \n2 183-acres of wet meadows & uplands with trails... Nature preserve \n3 NaN Sculpture \n4 A sloping, grassy plaza on the university grou... Park \n.. ... ... \n33 NaN Bar \n34 Laid-back waterside tall ship with tables doli... Lounge \n35 Snug eatery whipping up health-conscious flatb... Sandwich shop \n36 NaN Grocery store \n37 NaN High school \n\n phone website \\\n0 NaN NaN \n1 NaN NaN \n2 +1 781-863-5385 http://www.foagm.org/ \n3 +1 617-332-2433 http://helmicksculpture.com/portfolio/arthur-f... \n4 NaN https://www.bu.edu/today/2009/icons-among-us-t... \n.. ... ... \n33 +1 617-561-1061 https://www.thequietfew.com/ \n34 +1 617-307-7714 https://www.tallshipboston.com/ \n35 +1 857-264-8531 https://toastedflats.com/ \n36 NaN NaN \n37 +1 617-846-5505 https://www.winthrop.k12.ma.us/Domain/99 \n\n ratingsAverage ratingsTotal plusCode list \n0 NaN NaN NaN A \n1 NaN NaN NaN A \n2 4.6 171.0 CQHW+XC Lexington, Massachusetts, USA A \n3 4.6 14.0 9W4F+JR Boston, Massachusetts, USA A \n4 4.5 133.0 9V2V+FH Boston, Massachusetts, USA A \n.. ... ... ... ... \n33 4.7 257.0 9X87+RJ East Boston, Boston, MA, USA D \n34 4.2 549.0 9X75+XC Boston, Massachusetts, USA D \n35 4.7 372.0 9XC7+F4 Boston, Massachusetts, USA D \n36 4.8 5.0 9XQ8+MG Chelsea, Massachusetts, USA D \n37 NaN NaN 92JC+42 Winthrop, Massachusetts, USA D \n\n[169 rows x 15 columns]", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namegpsgoogleUrloriginalUrlinfotypesaddressdescriptiontypephonewebsiteratingsAverageratingsTotalplusCodelist
0521 Commercial Street #52542.3688272,-71.0553792https://maps.google.com/maps?q=+%4042.3688272,...https://www.google.com/maps/place/521+Commerci...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNA
1Acorn St42.3576234,-71.0688746https://maps.google.com/maps?q=+%4042.3576234,...https://www.google.com/maps/place/Acorn+St/dat...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNA
2Arlington's Great Meadows42.4299758,-71.2038948https://maps.google.com/maps?q=+%4042.4299758,...https://www.google.com/maps/place/Arlington's+...NaNNaNMinuteman Commuter Bikeway, Lexington, MA 0242...183-acres of wet meadows & uplands with trails...Nature preserve+1 781-863-5385http://www.foagm.org/4.6171.0CQHW+XC Lexington, Massachusetts, USAA
3Arthur Fiedler Statue42.3565057,-71.0754527https://maps.google.com/maps?q=+%4042.3565057,...https://www.google.com/maps/place/Arthur+Fiedl...NaNNaNCharles River Esplanades, Boston, MA 02114, Un...NaNSculpture+1 617-332-2433http://helmicksculpture.com/portfolio/arthur-f...4.614.09W4F+JR Boston, Massachusetts, USAA
4BU Beach42.3511927,-71.1060828https://maps.google.com/maps?q=+%4042.3511927,...https://www.google.com/maps/place/BU+Beach/dat...NaNNaN270 Bay State Rd, Boston, MA 02215, United StatesA sloping, grassy plaza on the university grou...ParkNaNhttps://www.bu.edu/today/2009/icons-among-us-t...4.5133.09V2V+FH Boston, Massachusetts, USAA
................................................
33The Quiet Few42.3670906,-71.0359889https://maps.google.com/maps?q=+%4042.3670906,...https://www.google.com/maps/place/The+Quiet+Fe...NaNNaN331 Sumner St, East Boston, MA 02128, United S...NaNBar+1 617-561-1061https://www.thequietfew.com/4.7257.09X87+RJ East Boston, Boston, MA, USAD
34The Tall Ship Boston42.3649544,-71.0414523https://maps.google.com/maps?q=+%4042.3649544,...https://www.google.com/maps/place/The+Tall+Shi...NaNNaN1 E Pier Dr, Boston, MA 02128, United StatesLaid-back waterside tall ship with tables doli...Lounge+1 617-307-7714https://www.tallshipboston.com/4.2549.09X75+XC Boston, Massachusetts, USAD
35Toasted Flats42.3711266,-71.0371343https://maps.google.com/maps?q=+%4042.3711266,...https://www.google.com/maps/place/Toasted+Flat...NaNNaN53 Chelsea St, Boston, MA 02128, United StatesSnug eatery whipping up health-conscious flatb...Sandwich shop+1 857-264-8531https://toastedflats.com/4.7372.09XC7+F4 Boston, Massachusetts, USAD
36Vega Market42.3891835,-71.033703https://maps.google.com/maps?q=+%4042.3891835,...https://www.google.com/maps/place/Vega+Market/...NaNNaN29 Maverick St, Chelsea, MA 02150, United StatesNaNGrocery storeNaNNaN4.85.09XQ8+MG Chelsea, Massachusetts, USAD
37Winthrop High School42.3803348,-70.9799864https://maps.google.com/maps?q=+%4042.3803348,...https://www.google.com/maps/place/Winthrop+Hig...NaNNaN400 Main St, Winthrop, MA 02152, United StatesNaNHigh school+1 617-846-5505https://www.winthrop.k12.ma.us/Domain/99NaNNaN92JC+42 Winthrop, Massachusetts, USAD
\n

169 rows × 15 columns

\n
" + "text/plain": " name gps \\\n0 521 Commercial Street #525 42.3688272,-71.0553792 \n1 Acorn St 42.3576234,-71.0688746 \n2 Arlington's Great Meadows 42.4299758,-71.2038948 \n3 Arthur Fiedler Statue 42.3565057,-71.0754527 \n4 BU Beach 42.3511927,-71.1060828 \n.. ... ... \n28 The Clam Box 42.2763168,-71.0092883 \n29 The Partisans 42.3478375,-71.0404428 \n30 Union Oyster House 42.361288,-71.056908 \n31 Victoria's Diner 42.3270498,-71.0667744 \n32 Wollaston Beach 42.2806539,-71.0119933 \n\n googleUrl \\\n0 https://maps.google.com/maps?q=+%4042.3688272,... \n1 https://maps.google.com/maps?q=+%4042.3576234,... \n2 https://maps.google.com/maps?q=+%4042.4299758,... \n3 https://maps.google.com/maps?q=+%4042.3565057,... \n4 https://maps.google.com/maps?q=+%4042.3511927,... \n.. ... \n28 https://maps.google.com/maps?q=+%4042.2763168,... \n29 https://maps.google.com/maps?q=+%4042.3478375,... \n30 https://maps.google.com/maps?q=+%4042.361288,-... \n31 https://maps.google.com/maps?q=+%4042.3270498,... \n32 https://maps.google.com/maps?q=+%4042.2806539,... \n\n originalUrl info types \\\n0 https://www.google.com/maps/place/521+Commerci... NaN NaN \n1 https://www.google.com/maps/place/Acorn+St/dat... NaN NaN \n2 https://www.google.com/maps/place/Arlington's+... NaN NaN \n3 https://www.google.com/maps/place/Arthur+Fiedl... NaN NaN \n4 https://www.google.com/maps/place/BU+Beach/dat... NaN NaN \n.. ... ... ... \n28 https://www.google.com/maps/place/The+Clam+Box... NaN NaN \n29 https://www.google.com/maps/place/The+Partisan... NaN NaN \n30 https://www.google.com/maps/place/Union+Oyster... NaN NaN \n31 https://www.google.com/maps/place/Victoria's+D... NaN NaN \n32 https://www.google.com/maps/place/Wollaston+Be... NaN NaN \n\n address \\\n0 NaN \n1 NaN \n2 Minuteman Commuter Bikeway, Lexington, MA 0242... \n3 Charles River Esplanades, Boston, MA 02114, Un... \n4 270 Bay State Rd, Boston, MA 02215, United States \n.. ... \n28 789 Quincy Shore Dr, Quincy, MA 02170, United ... \n29 Boston, MA 02210, United States \n30 41 Union St, Boston, MA 02108, United States \n31 1024 Massachusetts Ave, Boston, MA 02118, Unit... \n32 Quincy, MA, United States \n\n description type \\\n0 NaN NaN \n1 NaN NaN \n2 183-acres of wet meadows & uplands with trails... Nature preserve \n3 NaN Sculpture \n4 A sloping, grassy plaza on the university grou... Park \n.. ... ... \n28 Classic beachfront joint with a rustic vibe di... Seafood restaurant \n29 NaN Sculpture \n30 Historic eatery serving chowder & other New En... Seafood restaurant \n31 Long-standing classic diner for breakfast & sa... Diner \n32 Historic 2.3-mi.-long beach with a paved prome... Beach \n\n phone website \\\n0 NaN NaN \n1 NaN NaN \n2 +1 781-863-5385 http://www.foagm.org/ \n3 +1 617-332-2433 http://helmicksculpture.com/portfolio/arthur-f... \n4 NaN https://www.bu.edu/today/2009/icons-among-us-t... \n.. ... ... \n28 +1 617-302-3474 http://www.clamboxquincy.com/ \n29 NaN https://www.bostonseaport.xyz/venue/the-partis... \n30 +1 617-227-2750 http://www.unionoysterhouse.com/?y_source=1_Mj... \n31 +1 617-442-5965 http://www.victoriasdiner.com/ \n32 NaN NaN \n\n ratingsAverage ratingsTotal plusCode list \n0 NaN NaN NaN A \n1 NaN NaN NaN A \n2 4.6 171.0 CQHW+XC Lexington, Massachusetts, USA A \n3 4.6 14.0 9W4F+JR Boston, Massachusetts, USA A \n4 4.5 133.0 9V2V+FH Boston, Massachusetts, USA A \n.. ... ... ... ... \n28 4.3 2145.0 7XGR+G7 Quincy, Massachusetts, USA C \n29 4.8 6.0 8XX5+4R Boston, Massachusetts, USA C \n30 4.3 8497.0 9W6V+G6 Boston, Massachusetts, USA C \n31 4.1 1797.0 8WGM+R7 Boston, Massachusetts, USA C \n32 4.4 171.0 NaN C \n\n[131 rows x 15 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namegpsgoogleUrloriginalUrlinfotypesaddressdescriptiontypephonewebsiteratingsAverageratingsTotalplusCodelist
0521 Commercial Street #52542.3688272,-71.0553792https://maps.google.com/maps?q=+%4042.3688272,...https://www.google.com/maps/place/521+Commerci...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNA
1Acorn St42.3576234,-71.0688746https://maps.google.com/maps?q=+%4042.3576234,...https://www.google.com/maps/place/Acorn+St/dat...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNA
2Arlington's Great Meadows42.4299758,-71.2038948https://maps.google.com/maps?q=+%4042.4299758,...https://www.google.com/maps/place/Arlington's+...NaNNaNMinuteman Commuter Bikeway, Lexington, MA 0242...183-acres of wet meadows & uplands with trails...Nature preserve+1 781-863-5385http://www.foagm.org/4.6171.0CQHW+XC Lexington, Massachusetts, USAA
3Arthur Fiedler Statue42.3565057,-71.0754527https://maps.google.com/maps?q=+%4042.3565057,...https://www.google.com/maps/place/Arthur+Fiedl...NaNNaNCharles River Esplanades, Boston, MA 02114, Un...NaNSculpture+1 617-332-2433http://helmicksculpture.com/portfolio/arthur-f...4.614.09W4F+JR Boston, Massachusetts, USAA
4BU Beach42.3511927,-71.1060828https://maps.google.com/maps?q=+%4042.3511927,...https://www.google.com/maps/place/BU+Beach/dat...NaNNaN270 Bay State Rd, Boston, MA 02215, United StatesA sloping, grassy plaza on the university grou...ParkNaNhttps://www.bu.edu/today/2009/icons-among-us-t...4.5133.09V2V+FH Boston, Massachusetts, USAA
................................................
28The Clam Box42.2763168,-71.0092883https://maps.google.com/maps?q=+%4042.2763168,...https://www.google.com/maps/place/The+Clam+Box...NaNNaN789 Quincy Shore Dr, Quincy, MA 02170, United ...Classic beachfront joint with a rustic vibe di...Seafood restaurant+1 617-302-3474http://www.clamboxquincy.com/4.32145.07XGR+G7 Quincy, Massachusetts, USAC
29The Partisans42.3478375,-71.0404428https://maps.google.com/maps?q=+%4042.3478375,...https://www.google.com/maps/place/The+Partisan...NaNNaNBoston, MA 02210, United StatesNaNSculptureNaNhttps://www.bostonseaport.xyz/venue/the-partis...4.86.08XX5+4R Boston, Massachusetts, USAC
30Union Oyster House42.361288,-71.056908https://maps.google.com/maps?q=+%4042.361288,-...https://www.google.com/maps/place/Union+Oyster...NaNNaN41 Union St, Boston, MA 02108, United StatesHistoric eatery serving chowder & other New En...Seafood restaurant+1 617-227-2750http://www.unionoysterhouse.com/?y_source=1_Mj...4.38497.09W6V+G6 Boston, Massachusetts, USAC
31Victoria's Diner42.3270498,-71.0667744https://maps.google.com/maps?q=+%4042.3270498,...https://www.google.com/maps/place/Victoria's+D...NaNNaN1024 Massachusetts Ave, Boston, MA 02118, Unit...Long-standing classic diner for breakfast & sa...Diner+1 617-442-5965http://www.victoriasdiner.com/4.11797.08WGM+R7 Boston, Massachusetts, USAC
32Wollaston Beach42.2806539,-71.0119933https://maps.google.com/maps?q=+%4042.2806539,...https://www.google.com/maps/place/Wollaston+Be...NaNNaNQuincy, MA, United StatesHistoric 2.3-mi.-long beach with a paved prome...BeachNaNNaN4.4171.0NaNC
\n

131 rows × 15 columns

\n
" }, "metadata": {}, "output_type": "display_data" @@ -64,21 +64,21 @@ "ListC['list'] = 'C'\n", "ListD['list'] = 'D'\n", "\n", - "TotalList = pd.concat([ListA, ListB, ListC, ListD])\n", + "TotalList = pd.concat([ListA, ListB, ListC])\n", "display(TotalList)" ], "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:18:49.364284Z", - "start_time": "2023-11-06T00:18:49.351342Z" + "end_time": "2023-11-06T01:14:11.326041Z", + "start_time": "2023-11-06T01:14:11.322857Z" } }, "id": "dc434958d5e4a3a8" }, { "cell_type": "code", - "execution_count": 251, + "execution_count": 81, "outputs": [], "source": [ "# Remove all columns but name and gps\n", @@ -87,15 +87,15 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:18:49.785140Z", - "start_time": "2023-11-06T00:18:49.779600Z" + "end_time": "2023-11-06T01:14:12.014736Z", + "start_time": "2023-11-06T01:14:12.007694Z" } }, "id": "2873c16423fe3119" }, { "cell_type": "code", - "execution_count": 252, + "execution_count": 82, "outputs": [], "source": [ "# Convert the gps column to a list of lists for k-means\n", @@ -105,20 +105,20 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:18:50.022174Z", - "start_time": "2023-11-06T00:18:50.008422Z" + "end_time": "2023-11-06T01:14:12.457221Z", + "start_time": "2023-11-06T01:14:12.448967Z" } }, "id": "29f9155ef8d75fda" }, { "cell_type": "code", - "execution_count": 253, + "execution_count": 83, "outputs": [ { "data": { - "text/plain": " name gps list\n0 521 Commercial Street #525 [42.3688272, -71.0553792] A\n1 Acorn St [42.3576234, -71.0688746] A\n2 Arlington's Great Meadows [42.4299758, -71.2038948] A\n3 Arthur Fiedler Statue [42.3565057, -71.0754527] A\n4 BU Beach [42.3511927, -71.1060828] A\n.. ... ... ...\n33 The Quiet Few [42.3670906, -71.0359889] D\n34 The Tall Ship Boston [42.3649544, -71.0414523] D\n35 Toasted Flats [42.3711266, -71.0371343] D\n36 Vega Market [42.3891835, -71.033703] D\n37 Winthrop High School [42.3803348, -70.9799864] D\n\n[169 rows x 3 columns]", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namegpslist
0521 Commercial Street #525[42.3688272, -71.0553792]A
1Acorn St[42.3576234, -71.0688746]A
2Arlington's Great Meadows[42.4299758, -71.2038948]A
3Arthur Fiedler Statue[42.3565057, -71.0754527]A
4BU Beach[42.3511927, -71.1060828]A
............
33The Quiet Few[42.3670906, -71.0359889]D
34The Tall Ship Boston[42.3649544, -71.0414523]D
35Toasted Flats[42.3711266, -71.0371343]D
36Vega Market[42.3891835, -71.033703]D
37Winthrop High School[42.3803348, -70.9799864]D
\n

169 rows × 3 columns

\n
" + "text/plain": " name gps list\n0 521 Commercial Street #525 [42.3688272, -71.0553792] A\n1 Acorn St [42.3576234, -71.0688746] A\n2 Arlington's Great Meadows [42.4299758, -71.2038948] A\n3 Arthur Fiedler Statue [42.3565057, -71.0754527] A\n4 BU Beach [42.3511927, -71.1060828] A\n.. ... ... ...\n28 The Clam Box [42.2763168, -71.0092883] C\n29 The Partisans [42.3478375, -71.0404428] C\n30 Union Oyster House [42.361288, -71.056908] C\n31 Victoria's Diner [42.3270498, -71.0667744] C\n32 Wollaston Beach [42.2806539, -71.0119933] C\n\n[131 rows x 3 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namegpslist
0521 Commercial Street #525[42.3688272, -71.0553792]A
1Acorn St[42.3576234, -71.0688746]A
2Arlington's Great Meadows[42.4299758, -71.2038948]A
3Arthur Fiedler Statue[42.3565057, -71.0754527]A
4BU Beach[42.3511927, -71.1060828]A
............
28The Clam Box[42.2763168, -71.0092883]C
29The Partisans[42.3478375, -71.0404428]C
30Union Oyster House[42.361288, -71.056908]C
31Victoria's Diner[42.3270498, -71.0667744]C
32Wollaston Beach[42.2806539, -71.0119933]C
\n

131 rows × 3 columns

\n
" }, "metadata": {}, "output_type": "display_data" @@ -130,8 +130,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:18:50.242086Z", - "start_time": "2023-11-06T00:18:50.237892Z" + "end_time": "2023-11-06T01:14:13.043659Z", + "start_time": "2023-11-06T01:14:13.030154Z" } }, "id": "a03a7c5dacebddd0" @@ -148,12 +148,12 @@ }, { "cell_type": "code", - "execution_count": 254, + "execution_count": 84, "outputs": [ { "data": { "text/plain": "
", - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB9gAAANcCAYAAAAU0nQ9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACaPUlEQVR4nOzdfZzVdZ3//+fAMMOAOl4loiGSJaJoIlSC60Wl5GXbuptslmZh6Y2yJfNboqVIFqaGWhtelIZuqVSaqaHGlpgmVhJ2oeamqSCCKCmYjMDA+f3hjfk5cuGbYeAMzP1+u53bjfnM5/M5r3OYaWsfvN+nplKpVAIAAAAAAAAArFWXag8AAAAAAAAAAJsCgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAYBMyadKk1NTU5MEHH1zt948++ujsuuuurY7tuuuuOemkkzb8cBvAtGnTUlNTk5/85Cdveu5JJ520ymtvT2PHjk1NTU3x+ffee2+OO+647Lzzzqmrq0tjY2OGDRuWyy+/PK+88krLeRv67+frX/96brnllg1y76eeeio1NTWZNGnSBrl/yXOvfHTr1i3bbbdd3vWud+Xzn/98Hn744Y0+0+tt6J9HAAAAqkNgBwAA2Mz99Kc/zVe+8pVqj7HBfeUrX8lPf/rTao+RJDn33HNz0EEHZc6cOfnqV7+aqVOn5sYbb8z73//+jB07Nl/+8pc32iwbMrD37t0706dPz1FHHbVB7l/itNNOy/Tp03PPPffkf/7nf/KhD30ot956a975znfmoosuqtpcAAAAbJ5qqz0AAAAAG9agQYPa7V6VSiWvvvpqGhoa1us+TU1N632PN9ptt93a9X5t9eMf/zjjxo3LyJEj893vfrfVqvcjjjgiX/ziFzN9+vQqTrj+li9fnubm5tTX12f//fev6iy77LJLqxmOPPLInH766Tn22GPzxS9+MQMHDswRRxxRxQnX7PXv44bWXr+7AAAAnZ0V7AAAAJu51W1BvmjRopxxxhnp169f6urqsvPOO2f06NGtti5Pkpqamnz2s5/NFVdckQEDBqS+vj7XXnttkuS8887Le97znmy77bbZaqutst9+++Xqq69OpVJZ5fmPPvro3HzzzRk0aFC6d++e8847L0kyZ86cfPrTn06fPn1SV1eXnXbaKf/xH/+R5557rtU9li1blrPPPjs77bRTttpqqxx66KF57LHHWp2zui25V6xYkW9/+9vZd99909DQkK233jr7779/br311pZzJk+enOHDh6d3795paGjIgAEDcuaZZ67yXpQaN25cttlmm3zrW99a7ZbyW265ZYYPH77G61d+DMBTTz3V6vjK7fKnTZvWcmzmzJk5+uijs8MOO6S+vj477bRTjjrqqDzzzDNJXvv7e+WVV3Lttde2bKV+yCGHtFw/b968nHLKKXnrW9+aurq69OvXL+edd16am5tbzlm5FfuFF16Y888/P/369Ut9fX3uvvvu1W4Rv3Ir/Ycffjgf+chH0tjYmF69euWTn/xkFi5c2Oo1vfTSSxk5cmS23XbbbLHFFjnqqKPy97//PTU1NRk7duybv9lr0NDQkKuvvjrdunVbZRX7urzmiy++OBMmTEi/fv2yxRZbZOjQoXnggQdWeb5Jkyalf//+qa+vz4ABA3Ldddetcs7a3sckufXWWzN06ND06NEjW265ZQ477LDV/kOMn/3sZ9lnn31SX1+ft73tbbnssstW+/EF7fm7e/vtt2fQoEEtvx+33357y+seMGBAevbsmXe/+91r/OgKAACAzYkV7AAAAJuglStf3+iNgWx1Fi9enIMPPjjPPPNMzjrrrOyzzz55+OGHc8455+TPf/5z/vd//7dVrLvlllty77335pxzzsmOO+6YHXbYIclrwfCUU07JLrvskiR54IEHctppp2XOnDk555xzWj3nH/7whzz66KP58pe/nH79+qVnz56ZM2dO3vWud2XZsmUtcyxYsCB33XVXXnzxxfTq1avl+rPOOisHHHBAvve972XRokX50pe+lGOOOSaPPvpounbtusbXetJJJ+UHP/hBRo4cmXHjxqWuri5/+MMfWsXrv/3tbznyyCMzevTo9OzZM3/961/zjW98I7/73e/yq1/96k3fz9ebO3du/vKXv2TEiBHp0aPHOl27rl555ZUcdthh6devX77zne+kV69emTdvXu6+++68/PLLSZLp06fnfe97X9773ve2fEzAVlttleS10Pzud787Xbp0yTnnnJPddtst06dPz/nnn5+nnnoq3//+91s937e+9a3svvvuufjii7PVVlvlHe94x1rn+/d///eMGDEiI0eOzJ///OeMGTMmSXLNNdckee0fPxxzzDF58MEHM3bs2Oy3336ZPn16Dj/88HZ5f3baaacMHjw4999/f5qbm1NbW7vOr/k73/lO9thjj1x66aVJXvsYgiOPPDJPPvlkGhsbk7wWmT/xiU/kX//1X/PNb34zCxcuzNixY7NkyZJ06bLquobVvY/XX399PvrRj2b48OG54YYbsmTJklx44YU55JBD8stf/jL/8i//kiS58847c+yxx+aggw7K5MmT09zcnIsvvniVf5CyUnv87v7xj3/MmDFjcvbZZ6exsTHnnXdejj322IwZMya//OUv8/Wvfz01NTX50pe+lKOPPjpPPvmkVfIAAMDmrQIAAMAm4/vf/34lyVofffv2bXVN3759Kx//+Mdbvh4/fnylS5culd///vetzvvJT35SSVKZMmVKy7EklcbGxso//vGPtc61fPnyyrJlyyrjxo2rbLfddpUVK1a0ev6uXbtWHnvssVbXfPKTn6x069at8sgjj6zxvnfffXclSeXII49sdfxHP/pRJUll+vTpLcc+/vGPt3rtv/71rytJKmefffZaZ3+9FStWVJYtW1a55557Kkkqf/zjH1u+d+6551be7H9GP/DAA5UklTPPPLP4Od/497Py7/jJJ59sdd7K9+Luu++uVCqVyoMPPlhJUrnlllvWev+ePXu2uv9Kp5xySmWLLbaoPP30062OX3zxxZUklYcffrhSqVQqTz75ZCVJZbfddqssXbq01bkrv/f973+/5djK9+nCCy9sde6oUaMq3bt3b/nZ+PnPf15JUrn88stbnTd+/PhKksq555671te18rkvuuiiNZ4zYsSISpLKc88916bXvPfee1eam5tbzvvd735XSVK54YYbKpXKaz/3O+20U2W//fZr9TP/1FNPVbp169bq53FN7+PKe+y9996V5cuXtxx/+eWXKzvssENl2LBhLcfe9a53Vfr06VNZsmRJq/O22267VX422+t3t6GhofLMM8+0HHvooYcqSSq9e/euvPLKKy3Hb7nllkqSyq233rrW5wMAANjU2SIeAABgE3Tdddfl97///SqPlStd1+b222/PwIEDs++++6a5ubnl8YEPfGCVLciT5H3ve1+22WabVe7zq1/9KoceemgaGxvTtWvXdOvWLeecc04WLFiQ+fPntzp3n332ye67797q2B133JH3vve9GTBgwJvO/MEPfnCV+yXJ008/vcZr7rjjjiTJZz7zmbXe++9//3uOP/747Ljjji2v4+CDD06SPProo286W7W8/e1vzzbbbJMvfelLueKKK/LII4+s0/W333573vve92annXZq9XOw8vPK77nnnlbnf/CDH0y3bt2K77+6v7NXX3215Wdj5f2PO+64Vud95CMfWafXsTaVN+zosK6v+aijjmq1Q8Ibf+4ee+yxPPvsszn++ONb7frQt2/fDBs2bLUzvfF9XHmPE044odWK9y222CL//u//ngceeCCLFy/OK6+8kgcffDAf+tCHUldX1+q8Y445ZrXP1R6/u/vuu2923nnnlq9X/r4ecsghrXZpWHl8bb+TAAAAmwNbxAMAAGyCBgwYkCFDhqxyvLGxMbNnz17rtc8991wef/zxNcbSF154odXXvXv3XuWc3/3udxk+fHgOOeSQfPe73235POtbbrklX/va19LU1PSm93j++efz1re+da2zrrTddtu1+rq+vj5JVnmeN96/a9eu2XHHHdd4zj//+c8ceOCB6d69e84///zsvvvu6dGjR2bPnp1jjz12rfdfnZVbbj/55JPrdF1bNDY25p577snXvva1nHXWWXnxxRfTu3fvfOpTn8qXv/zlN43hzz33XG677bb1+jlYmzf7O1uwYEFqa2uz7bbbtjrv9R8NsL6efvrp1NfXtzzHur7mkteQZLU/YzvuuGOrjyJY6Y3v48p7rO793WmnnbJixYq8+OKLqVQqqVQqq31/1vSetcfv7hv/flbG/TUdf/XVV1c7CwAAwOZCYAcAAOhktt9++zQ0NLR8Fvbqvv96r1+Zu9KNN96Ybt265fbbb0/37t1bjt9yyy2rvefq7vGWt7wlzzzzzDpMvm7e8pa3ZPny5Zk3b94a4/CvfvWrPPvss5k2bVrLqvUkeemll9r0nL17987ee++dX/ziF1m8eHGbPod95fu5ZMmSVsffGH+TZO+9986NN96YSqWSP/3pT5k0aVLGjRuXhoaGnHnmmWt9nu233z777LNPvva1r632+zvttFOrr1f3d7g+tttuuzQ3N+cf//hHq1g7b968drn/nDlzMmPGjBx88MGprX3t//2xrq/5zawM8KubeU2v443v48p7zJ07d5Vzn3322XTp0iXbbLNNKpVKampqVvt566XPlaz77y4AAACt2SIeAACgkzn66KPzxBNPZLvttsuQIUNWeey6665veo+amprU1ta22j67qakp//M//1M8xxFHHJG77747jz32WFteRtH9k+Tyyy9f4zkrA+TKlckrXXnllW1+3q985St58cUX87nPfW6VLcqT11bN/+IXv1jj9Svf/z/96U+tjt96661rvKampibvfOc7c8kll2TrrbfOH/7wh5bv1dfXr3Yl/tFHH52//OUv2W233Vb7c7CusXldrfwHDZMnT251/MYbb1zvezc1NeXkk09Oc3NzvvjFL7Ycb+/X3L9///Tu3Ts33HBDq7/rp59+Ovfff3/xPXbeeedcf/31re7xyiuv5KabbsrQoUPTo0eP9OzZM0OGDMktt9ySpUuXtpz3z3/+M7fffnvxzO3xuwsAANCZWcEOAADQyYwePTo33XRTDjrooHz+85/PPvvskxUrVmTWrFn5xS9+kS984Qt5z3ves9Z7HHXUUZkwYUKOP/74fPrTn86CBQty8cUXrxKq12bcuHG54447ctBBB+Wss87K3nvvnZdeeil33nlnTj/99Oyxxx7r9ToPPPDAnHDCCTn//PPz3HPP5eijj059fX1mzpyZHj165LTTTsuwYcOyzTbb5NRTT825556bbt265Yc//GH++Mc/tvl5P/zhD+crX/lKvvrVr+avf/1rRo4cmd122y2LFy/Ob3/721x55ZUZMWJEhg8fvtrr3/Wud6V///4544wz0tzcnG222SY//elPc99997U67/bbb8/EiRPzoQ99KG9729tSqVRy880356WXXsphhx3Wct7ee++dadOm5bbbbkvv3r2z5ZZbpn///hk3blymTp2aYcOG5XOf+1z69++fV199NU899VSmTJmSK664ongL/7Y4/PDDc8ABB+QLX/hCFi1alMGDB2f69Om57rrrkqTV55GvzaxZs/LAAw9kxYoVWbhwYWbOnJlrrrkmTz/9dL75zW+2ep/b+zV36dIlX/3qV3PyySfn3/7t3/KpT30qL730UsaOHbvWjyZ44z0uvPDCfPSjH83RRx+dU045JUuWLMlFF12Ul156KRdccEGr+Y866qh84AMfyH/9139l+fLlueiii7LFFlvkH//4R9HztcfvLgAAQGcmsAMAAHQyPXv2zL333psLLrggV111VZ588sk0NDRkl112yaGHHlq0gv1973tfrrnmmnzjG9/IMccck5133jmf+tSnssMOO2TkyJFFc+y888753e9+l3PPPTcXXHBBFixYkLe85S35l3/5l1U+37mtJk2alP322y9XX311Jk2alIaGhuy5554566yzkry2PffPf/7zfOELX8jHPvax9OzZM//6r/+ayZMnZ7/99mvz844bNy6HHnpovv3tb+fss8/OCy+8kIaGhuy11145/fTTc8opp6zx2q5du+a2227LZz/72Zx66qmpr6/Pf/7nf+a///u/c9RRR7Wc9453vCNbb711Lrzwwjz77LOpq6tL//79M2nSpHz84x9vOe+yyy7LZz7zmfznf/5nFi9enIMPPjjTpk1L79698+CDD+arX/1qLrroojzzzDPZcsst069fvxx++OHZZptt2vz6S3Tp0iW33XZbvvCFL+SCCy7I0qVLc8ABB+QHP/hB9t9//2y99dZF9/n2t7+db3/72+natWu22mqrvO1tb8sxxxyTT33qU9lzzz1bnbshXvPKn/dvfOMbOfbYY7PrrrvmrLPOyj333JNp06YV3eP4449Pz549M378+IwYMSJdu3bN/vvvn7vvvjvDhg1rOe/www/PTTfdlHPOOScjRozIjjvumFGjRuXZZ58tXoHeHr+7AAAAnVlNZXX71QEAAABUwfXXX5+PfvSj+c1vftMqLrN6y5Yty7777pudd955rR89AAAAQPuwgh0AAACoihtuuCFz5szJ3nvvnS5duuSBBx7IRRddlIMOOkhcX4ORI0fmsMMOS+/evTNv3rxcccUVefTRR3PZZZdVezQAAIBOQWAHAAAAqmLLLbfMjTfemPPPPz+vvPJKevfunZNOOinnn39+tUfrsF5++eWcccYZef7559OtW7fst99+mTJlSg499NBqjwYAANAp2CIeAAAAAAAAAAp0qfYAAAAAAAAAALApENgBAAAAAAAAoECn+wz2FStW5Nlnn82WW26Zmpqaao8DAAAAAAAAQJVVKpW8/PLL2WmnndKly5rXqVc9sE+cODEXXXRR5s6dm7322iuXXnppDjzwwNWee9JJJ+Xaa69d5fiee+6Zhx9+uOj5nn322fTp02e9ZgYAAAAAAABg8zN79uy89a1vXeP3ayqVSmUjztPK5MmTc8IJJ2TixIk54IADcuWVV+Z73/teHnnkkeyyyy6rnL9w4cI0NTW1fN3c3Jx3vvOdOe200zJ27Nii51y4cGG23nrrzJ49O1tttVV7vRQAAAAAAAAANlGLFi1Knz598tJLL6WxsXGN51U1sL/nPe/Jfvvtl8svv7zl2IABA/KhD30o48ePf9Prb7nllhx77LF58skn07dv39Wes2TJkixZsqTl65VvzMKFCwV2AAAAAAAAALJo0aI0Nja+aUde8+bxG9jSpUszY8aMDB8+vNXx4cOH5/777y+6x9VXX51DDz10jXE9ScaPH5/GxsaWh+3hAQAAAAAAAGiLqgX2F154IcuXL0+vXr1aHe/Vq1fmzZv3ptfPnTs3d9xxR04++eS1njdmzJgsXLiw5TF79uz1mhsAAAAAAACAzqm22gPU1NS0+rpSqaxybHUmTZqUrbfeOh/60IfWel59fX3q6+vXZ0QAAAAAAAAAqN4K9u233z5du3ZdZbX6/PnzV1nV/kaVSiXXXHNNTjjhhNTV1W3IMQEAAAAAAAAgSRUDe11dXQYPHpypU6e2Oj516tQMGzZsrdfec889efzxxzNy5MgNOSIAAAAAAAAAtKjqFvGnn356TjjhhAwZMiRDhw7NVVddlVmzZuXUU09N8trnp8+ZMyfXXXddq+uuvvrqvOc978nAgQOrMTYAAAAAAAAAnVBVA/uIESOyYMGCjBs3LnPnzs3AgQMzZcqU9O3bN0kyd+7czJo1q9U1CxcuzE033ZTLLrusGiMDAAAAAAAA0EnVVCqVSrWH2JgWLVqUxsbGLFy4MFtttVW1xwEAAAAAAACgyko7ctU+gx0AAAAAAAAANiUCOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQoLbaA8CmplKppGnZ8mqPAQAAdEIN3bqmpqam2mMAAABApyWwwzqoVCr5jyumZ8bTL1Z7FAAAoBMa0neb/PjUoSI7AAAAVIkt4mEdNC1bLq4DAABV8+DTL9pRCwAAAKrICnZoowe/fGh61HWt9hgAAEAnsHjp8gw5/3+rPQYAAAB0egI7tFGPuq7pUedXCAAAAAAAADoLW8QDAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABSoemCfOHFi+vXrl+7du2fw4MG5995713r+kiVLcvbZZ6dv376pr6/PbrvtlmuuuWYjTQsAAAAAAABAZ1VbzSefPHlyRo8enYkTJ+aAAw7IlVdemSOOOCKPPPJIdtlll9Vec9xxx+W5557L1Vdfnbe//e2ZP39+mpubN/LkAAAAAAAAAHQ2VQ3sEyZMyMiRI3PyyScnSS699NLcddddufzyyzN+/PhVzr/zzjtzzz335O9//3u23XbbJMmuu+66MUcGAAAAAAAAoJOq2hbxS5cuzYwZMzJ8+PBWx4cPH577779/tdfceuutGTJkSC688MLsvPPO2X333XPGGWekqalpjc+zZMmSLFq0qNUDAAAAAAAAANZV1Vawv/DCC1m+fHl69erV6nivXr0yb9681V7z97//Pffdd1+6d++en/70p3nhhRcyatSo/OMf/1jj57CPHz8+5513XrvPDwAAAAAAAEDnUrUV7CvV1NS0+rpSqaxybKUVK1akpqYmP/zhD/Pud787Rx55ZCZMmJBJkyatcRX7mDFjsnDhwpbH7Nmz2/01AAAAAAAAALD5q9oK9u233z5du3ZdZbX6/PnzV1nVvlLv3r2z8847p7GxseXYgAEDUqlU8swzz+Qd73jHKtfU19envr6+fYcHAAAAAAAAoNOp2gr2urq6DB48OFOnTm11fOrUqRk2bNhqrznggAPy7LPP5p///GfLsf/7v/9Lly5d8ta3vnWDzgsAAAAAAABA51bVLeJPP/30fO9738s111yTRx99NJ///Ocza9asnHrqqUle2979xBNPbDn/+OOPz3bbbZdPfOITeeSRR/LrX/86/+///b988pOfTENDQ7VeBgAAAAAAAACdQNW2iE+SESNGZMGCBRk3blzmzp2bgQMHZsqUKenbt2+SZO7cuZk1a1bL+VtssUWmTp2a0047LUOGDMl2222X4447Lueff361XgIAAAAAAAAAnURVA3uSjBo1KqNGjVrt9yZNmrTKsT322GOVbeUBAAAAAAAAYEOr6hbxAAAAAAAAALCpENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFqh7YJ06cmH79+qV79+4ZPHhw7r333jWeO23atNTU1Kzy+Otf/7oRJwYAAAAAAACgM6pqYJ88eXJGjx6ds88+OzNnzsyBBx6YI444IrNmzVrrdY899ljmzp3b8njHO96xkSYGAAAAAAAAoLOqamCfMGFCRo4cmZNPPjkDBgzIpZdemj59+uTyyy9f63U77LBDdtxxx5ZH165d13jukiVLsmjRolYPAAAAAAAAAFhXVQvsS5cuzYwZMzJ8+PBWx4cPH577779/rdcOGjQovXv3zvvf//7cfffdaz13/PjxaWxsbHn06dNnvWcHAAAAAAAAoPOpWmB/4YUXsnz58vTq1avV8V69emXevHmrvaZ379656qqrctNNN+Xmm29O//798/73vz+//vWv1/g8Y8aMycKFC1ses2fPbtfXAQAAAAAAAEDnUFvtAWpqalp9XalUVjm2Uv/+/dO/f/+Wr4cOHZrZs2fn4osvzkEHHbTaa+rr61NfX99+AwMAAAAAAADQKVVtBfv222+frl27rrJaff78+ausal+b/fffP3/729/aezwAAAAAAAAAaKVqgb2uri6DBw/O1KlTWx2fOnVqhg0bVnyfmTNnpnfv3u09HgAAAAAAAAC0UtUt4k8//fSccMIJGTJkSIYOHZqrrroqs2bNyqmnnprktc9PnzNnTq677rokyaWXXppdd901e+21V5YuXZof/OAHuemmm3LTTTdV82UAAAAAAAAA0AlUNbCPGDEiCxYsyLhx4zJ37twMHDgwU6ZMSd++fZMkc+fOzaxZs1rOX7p0ac4444zMmTMnDQ0N2WuvvfLzn/88Rx55ZLVeAgAAAAAAAACdRE2lUqlUe4iNadGiRWlsbMzChQuz1VZbVXscNjGLlzZnz3PuSpI8Mu4D6VFX1X+jAgAAdBL+twgAAABsWKUduWqfwQ4AAAAAAAAAmxKBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoEBttQcAAAA2nEqlkqbmpmqPAaynxcuWv+7PTUlN1ypOA7SHhtqG1NTUVHsMAABgHQnsAACwmapUKjnxjhPz0PMPVXsUYD1VVnRL8tUkySE/Ojg1XZZVdyBgvQ3aYVCuPfxakR0AADYxAjsAAGymmpqbxHXYTNR0WZYtB5xZ7TGAdjRz/sw0NTelR7ce1R4FAABYBwI7AAB0AtOOm5aG2oZqjwEAnV5Tc1MO+dEh1R4DAABoI4EdAAA6gYbaBivkAAAAAGA9dan2AAAAAAAAAACwKRDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAJVD+wTJ05Mv3790r179wwePDj33ntv0XW/+c1vUltbm3333XfDDggAAAAAAAAAqXJgnzx5ckaPHp2zzz47M2fOzIEHHpgjjjgis2bNWut1CxcuzIknnpj3v//9G2lSAAAAAAAAADq7qgb2CRMmZOTIkTn55JMzYMCAXHrppenTp08uv/zytV53yimn5Pjjj8/QoUPf9DmWLFmSRYsWtXoAAAAAAAAAwLqqWmBfunRpZsyYkeHDh7c6Pnz48Nx///1rvO773/9+nnjiiZx77rlFzzN+/Pg0Nja2PPr06bNecwMAAAAAAADQOVUtsL/wwgtZvnx5evXq1ep4r169Mm/evNVe87e//S1nnnlmfvjDH6a2trboecaMGZOFCxe2PGbPnr3eswMAAAAAAADQ+ZRV6g2opqam1deVSmWVY0myfPnyHH/88TnvvPOy++67F9+/vr4+9fX16z0nAAAAAAAAAJ1b1QL79ttvn65du66yWn3+/PmrrGpPkpdffjkPPvhgZs6cmc9+9rNJkhUrVqRSqaS2tja/+MUv8r73vW+jzA4AAAAAAABA51O1LeLr6uoyePDgTJ06tdXxqVOnZtiwYaucv9VWW+XPf/5zHnrooZbHqaeemv79++ehhx7Ke97zno01OgAAAAAAAACdUFW3iD/99NNzwgknZMiQIRk6dGiuuuqqzJo1K6eeemqS1z4/fc6cObnuuuvSpUuXDBw4sNX1O+ywQ7p3777KcQAAAAAAAABob1UN7CNGjMiCBQsybty4zJ07NwMHDsyUKVPSt2/fJMncuXMza9asao4IAAAAAAAAAEmqHNiTZNSoURk1atRqvzdp0qS1Xjt27NiMHTu2/YcCAAAAAAAAgDeo2mewAwAAAAAAAMCmRGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACtRWewAAAACAEpVKJU3NTdUeA9bL63+G/TyzOWiobUhNTU21xwAA2GgEdgAAAKDDq1QqOfGOE/PQ8w9VexRoN4f86JBqjwDrbdAOg3Lt4deK7ABAp2GLeAAAAKDDa2puEtcBOqCZ82fajQEA6FSsYAcAAAA2KdOOm5aG2oZqjwHQqTU1N9mFAQDolAR2AAAAYJPSUNuQHt16VHsMAAAAOiFbxAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoMB6BfalS5fmscceS3Nzc3vNAwAAAAAAAAAdUpsC++LFizNy5Mj06NEje+21V2bNmpUk+dznPpcLLrigXQcEAAAAAAAAgI6gTYF9zJgx+eMf/5hp06ale/fuLccPPfTQTJ48ud2GAwAAAAAAAICOorYtF91yyy2ZPHly9t9//9TU1LQc33PPPfPEE0+023AAAAAAAAAA0FG0aQX7888/nx122GGV46+88kqr4A4AAAAAAAAAm4s2BfZ3vetd+fnPf97y9cqo/t3vfjdDhw5tn8kAAAAAAAAAoANp0xbx48ePz+GHH55HHnkkzc3Nueyyy/Lwww9n+vTpueeee9p7RgAAAAAAAACoujatYB82bFh+85vfZPHixdltt93yi1/8Ir169cr06dMzePDg9p4RAAAAAAAAAKquTSvYk2TvvffOtdde256zAAAAAAAAAECH1aYV7FOmTMldd921yvG77rord9xxx3oPBQAAAAAAAAAdTZsC+5lnnpnly5evcrxSqeTMM89c76EAAAAAAAAAoKNpU2D/29/+lj333HOV43vssUcef/zx9R4KAAAAAAAAADqaNgX2xsbG/P3vf1/l+OOPP56ePXuu91AAAAAAAAAA0NG0KbB/8IMfzOjRo/PEE0+0HHv88cfzhS98IR/84AfbbTgAAAAAAAAA6CjaFNgvuuii9OzZM3vssUf69euXfv36ZcCAAdluu+1y8cUXt/eMAAAAAAAAAFB1tW25qLGxMffff3+mTp2aP/7xj2loaMg+++yTgw46qL3nAwAAAAAAAIAOoU2BPUlqamoyfPjwDB8+vD3nAQAAAAAAAIAOqc2B/Ze//GV++ctfZv78+VmxYkWr711zzTXrPRgAAAAAAAAAdCRtCuznnXdexo0blyFDhqR3796pqalp77kAAAAAAAAAoENpU2C/4oorMmnSpJxwwgntPQ8AAAAAAAAAdEhd2nLR0qVLM2zYsPaeBQAAAAAAAAA6rDYF9pNPPjnXX399e88CAAAAAAAAAB1Wm7aIf/XVV3PVVVflf//3f7PPPvukW7durb4/YcKEdhkOAAAAAAAAADqKNgX2P/3pT9l3332TJH/5y19afa+mpma9hwIAAAAAAACAjqZN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4MGDZeDAgfL9739fbr75Zhk4cKAMHjxYVq1alRDe0o54qTdBPnPy4xmVVXz/Yfny5VJZWSlDhgyRSy65RG6//XY5/fTTZfTo0bJr166M/1622pJs9HVFgn02nm+CmoPKKi1Sr7zySsK/jh07NnwdbfLkyQ1fr127Vk899VRt3ry5VlRU6PLlyxPirqmp0W7dumnz5s314osv1i1btjT8rG/fvjFhf/nLX2qHDh20c+fOOn36dO3SpYuOHj1aO3furA8++GBW020JX1JSor1799Zf//rXum3btoS44s2dO1fbtWunHTp00Orqau3fv7+ecsop2rZtW50/f35M2Hnz5mnnzp21srJSmzVrpuecc4726NFD+/fvr59++qlj/Hv37tWXXnpJf/WrX+lDDz2k8+bNS5umeDU1NZ7TrGrLE2vclvDWcrdcU9aysaTbkg5V1bfeekvLy8t14MCBOmbMGB09erQOGDBAy8vL9c0334wJO2zYMP3iiy9UVXXGjBl6/PHH65gxY7SiokJ/97vfJcRtqZclJSVaUVER869x48ZaUVGhJ5xwQkLcyXTu3Dnhe9Y8scRvyZORI0fqQw89pIsWLdKxY8fq4MGDddeuXaqq+pWvfCWjdESsWrVKN23apKqq//znP/Xpp5/WRYsWJYSztK9ODhw4oEuWLNGdO3cm/Owf//iH249hvqYs9bKyslLXrVuny5Yt0zZt2uh7772nqqqrV6/WPn36uE6jqur27dtdh3UqG0u71qtXr4avhwwZosuWLVNV1XXr1iWUjaX+qtrqgvUasaTF0jZkeq1GTJo0KenPXn311YZ71+uvv66TJk3SF154wVW8tbW1umTJkoa6HG/fvn362WefJXz//fffT/jezp07dcqUKXr33Xfr3XffrVOmTNEdO3Yk/duff/65/upXv9IbbrhBb7nlFn3qqad07969rtIdEX/PjrDkiSXds2bN0v3795vSGC1VOe7bt08PHToU8xnuuusunTlzZsbpsMStejhPIu3G9u3b9cUXX9QPPvggafzWso+WLk/cXn+pJLtOLGEteWJJt7VsoqWrv9Z0Z9KWqKYuy2TclE2qz+mlTgZVltY2zW06gq7vfrTFqs5laYnbSzvltt0Jup65vU6CHgu7zRNr/9UaPlqq/Mu0j5Qqbutziui/N2HCBJ04caJu3LhRH3jgAb3ooovS/n6EUz/aUpbWvrF1zG9JtzVuyz3EkifWsrT00y35bR2TW65va12w1Elr/nm5r7ote0vZdOvWTe+//37t2bOnHnvssTpx4kT98MMPk6bBS5sZsWLFCp0yZYouXbrU8edBPYezPgceMmSIzpw5U59++mnt0qWLTp06VVVVX3zxRT333HNTfsZ4J598csz/g3yOaW3XnDzxxBOuP1uyZx9e7jlBjXHiuelrOEnWj3bbL8mkfxRh+Zxexgqqqlu3bo35v6UNHDhwoGN79Pzzz2v//v1jvmdtR6zta1DPnLyEz3TcFxHff6iqqtLq6mpVPdw23Xjjjbpv3z694447dOzYsY5xHDx4UKurq3XatGk6bdo0ra6u1oMHDyaE89KWuB2LeOnr+pGHyZ6Nh2EMaglr7TsEOQdlTUsm7Xy8op1gLykp0cGDB+vQoUMb/jVv3lyHDh2qw4YNiwkbfcP91re+pQ899JCqqr7wwgt6zjnnJMR91lln6csvv6xbt27VO++8U0855ZSGgo+fjDr11FN1+/btun79ei0rK9O1a9eqquqWLVu0Z8+eWU23JXyvXr30hRde0FGjRmmLFi30sssu09deey0hzogBAwZoTU2Nvv7669q2bVudO3euqqouXLhQzzjjjIR0RCrtO++8o1deeaWqqj7++ON64YUXJsSdSYc6WnzjZkmzNU+scVvzL8JNuVuvKUvZWNJtSYfq4UnIyMRjtHfffTdmok81duKvqqpK169fr6qHbxKVlZUJcVjq5aRJk3TkyJG6bt26hu9VVFQkxKnqfCOJ/Gvfvn1CeGueWOK35En8oOOnP/2p9u/fX3fu3Ok4ILF+TkuH0NK+qtoGgV4nk91cU5Z6GR22vLw85mdOn9EyYLSWjaVdix6sn3766TE/i88TS/1VtdUF6zViSYulbbCmQ1X14YcfTvjXrl27hq+j3XLLLVpZWak9evTQe++9V3v16qW33nqr9uvXT++4446EuG+77baGr2tqavTYY4/V7t27a/v27RsGQhHz5s3To446Stu0aaOnnXaarl69uuFn8dfUiy++qB07dtTLLrtMb7vtNr311lt1zJgx2rFjR33xxRcT0jFjxgzt0qWLXnDBBdq2bVv91re+peedd56Wl5frypUrHfPFidOAxJIn1nQ3atRI27dvrzfddFPaSV5LOaqq9unTp6He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/IsfVDgN5i156PXaVk19/anarpNMrql0eWJNt9dyT1d/M0m3m7bEUpbW/LZ8TmtdCKosLW2aNR1B1ndrui1laY3bkm5r252teqaa+joJcixsyRNr/9US3pJ/1j6S17YhWrLnFOXl5TETURs2bFBVdTypy9qPtpSltW9sGVtY022J23oPseSJtSwt/XRrflvH5G6vb2td8FonoyXLv0zuq+nK3lI21lfQWa4p60RKUM/hrM+bhg8frv/6178Svv/555/rgAEDEr5fUVHheMSwamKdD/I5prWeBbWhzFrPghrjqNruZ5mMW1RT90ss/SPr57TmiWUS0tIGrl69Ws8++2w96qijtGfPntqrVy898sgjddiwYQmvnbD2vazta1DPnKzhrfdsS//h1Vdf1Xbt2mnPnj21Q4cODbvQN27cqFdddVXC71smza1tiWUsYu0bW/LQ2v8Kyxg0yPGqanBzUJa0WMeU6RT1BHvEo48+qqeddlrCUTkRZ511VkwDH9kZuGnTpoRjcFVVx48fr7NmzUr4/owZMxJWC7733nvat29fPe2007Smpka/853vaFlZWcxOy2yl2xLeaRV/KuPGjXPsEK5evTphF+m7776rnTp10rKyMj3xxBMbVut88cUXjivBLBWusrIy6fsl4hs3S5pVbXlijdsS3lru0dJdU5GyadGihauysX5Ot+lQVd28ebOOGzdOW7ZsqS1atNCWLVtqy5Ytddy4cQ2ruKJNnjxZO3XqpM2aNdOSkhJt3bq1Xn311Qnv9FHNrF4uWLBAf/7znzv+7Gc/+1nMYCHavffemzJeN3lijd9tnuzduzfpe1ycXsNgTYelQ2hpX1Vtg0BrJzk+/1q1apX0msqkXtbX1+uiRYscr2tV24DRWjbWtl718A6D5cuX6+LFix3zQvVw/R0/fnxD/Y3U4WT1N1q6umC9RuLTkqotsbQN1nRE7N69WydMmKBjxozRLVu2JO1sfu1rX9MHH3xQ77nnHu3du7fef//9umXLFp0yZYpj+9qpU6eGFe/xi03iH0r06NEjoc7Pnz9fu3Tpoh07doz5/re//W0dN26cLlq0SLds2aJbt27VRYsW6bhx4/Syyy5LSMe5556rU6dO1S1btuivfvUrHT16dMPP4juylnu2NU+s6U7WPqxdu1Z/9KMfJXzfbTmqHt6d8NWvflXnzp2rP//5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2bKlrF69uiH8ddddJ926dWsIAwAAAABANjHBDgAAAACADzZu3Cjf/va3Zfz48bJq1SqZP3++XHzxxaKqIiKye/duueKKK+TNN9+Ud955R04++WQZNWqU7N69Oyaeu+++W8aOHSs1NTVyyimnyH/8x3/I1VdfLT/4wQ9k0aJFIiLyve99L+Z31qxZI88995zMmjVL5syZIzU1NXLttdcmTeudd94pv//97+XRRx+VFStWyE033ST/+Z//KdXV1abPfNddd8mYMWNk+fLlMmrUKPnOd74j27dvFxGRDRs2yMUXXyyjRo2Smpoaueqqq+T222+P+f1//OMfMmLECLn44otl+fLlMmPGDHnrrbcaPt/YsWMb4q2vr5c5c+bIY489Jn/4wx84rh4AAAAAkBMlGhnpAwAAAAAAz5YsWSL9+vWTdevWSXl5edrwBw8elKOOOkqeeeYZ+frXvy4ih3eF33nnnXL33XeLiMg777wjVVVV8uSTT8r48eNFROTZZ5+VcePGyZ49e0Tk8A72e+65R9atWyedOnUSEZE5c+bI+eefL5999pl07NhRrrzyStm5c6fMnDlTamtrpV27djJv3jypqqpqSM9VV10ldXV18swzzzimt6KiQm688Ua58cYbHdNaW1srrVq1ktmzZ8t5550nP/zhD2XmzJmyYsUKKSkpERGR22+/XX7xi1/Ijh075Mgjj5SxY8dKaWmpPPbYYw1/56233pKzzjpLamtrpXnz5rJjxw7p3bu3XHDBBfLiiy/KddddJ3fccYfrcgEAAAAAwE+8gx0AAAAAAB/06dNHvva1r0llZaWMGDFChg8fLpdeeqkcddRRIiKyefNm+fGPfyzz5s2TTZs2ycGDB6Wurk7Wr18fE0/v3r0bvj7mmGNERKSysjLme3v37pVdu3ZJ69atRUSkS5cuDZPrIiJVVVVy6NAh+fDDD6Vjx44x8a9cuVL27t0r5557bsz39+/fL3379jV95ui0tmjRQlq1aiWbN28WEZFVq1bJoEGDGibXI+mKtnjxYlmzZo384Q9/aPieqsqhQ4fk448/lh49eshRRx0lTz75pIwYMUIGDx6csAseAAAAAIBsYoIdAAAAAAAfHHHEEfLaa6/J22+/LX/729/kwQcflDvuuEMWLlwoJ5xwglx55ZWyZcsWmTx5spSXl0uzZs2kqqpK9u/fHxNPkyZNGr6OTE47fe/QoUNJ0xIJEz25HRH5vVdeeUWOP/74mJ81a9bM8pFj0hX5e5H43RyYd+jQIbn66qvl+uuvT/hZly5dGr5+44035IgjjpDPP/9camtrGxYWAAAAAACQbbyDHQAAAAAAn5SUlMgZZ5whd911lyxdulSaNm0qL730koiIvPnmm3L99dfLqFGjpGfPntKsWTPZunWrL393/fr18vnnnzf8f8GCBdKoUSPp1q1bQthTTz1VmjVrJuvXr5euXbvG/OvcubMv6Yn8nXfeeSfme/H/P+2002TFihUJ6ejatas0bdpURETefvtt+eUvfymzZs2S1q1by3XXXedbGgEAAAAAsGIHOwAAAAAAPli4cKHMnTtXhg8fLh06dJCFCxfKli1bpEePHiIi0rVrV5k2bZqcfvrpsmvXLrn11lultLTUl7/dvHlzueKKK+T++++XXbt2yfXXXy9jxoxJOB5eRKRVq1Zyyy23yE033SSHDh2Sr371q7Jr1y55++23pWXLlnLFFVf4kqZrrrlGHnjgAbn55pvl6quvlsWLF8vTTz8dE2bixIkyaNAgufbaa2XChAnSokULWbVqlbz22mvy4IMPyu7du+Xyyy+X6667TkaOHCldunSR008/Xb7+9a/L6NGjfUknAAAAAAAW7GAHAAAAAMAHrVu3ljfeeENGjRol3bp1kzvvvFMeeOABGTlypIiIPPXUU7Jjxw7p27evXH755XL99ddLhw4dfPnbXbt2lYsvvlhGjRolw4cPl169eskjjzySNPzdd98tP/7xj+Xee++VHj16yIgRI2TWrFlywgkn+JIekcNHvP/pT3+SWbNmSZ8+feS3v/2t/OxnP4sJ07t3b6murpbVq1fLmWeeKX379pUf/ehHcuyxx4qIyA033CAtWrRo+L2ePXvKL37xC7nmmmvks88+8y2tAAAAAAC4VaJuXooGAAAAAABCadKkSTJz5kypqanJdVIAAAAAACh47GAHAAAAAAAAAAAAAMAFJtgBAAAAAAAAAAAAAHCBI+IBAAAAAAAAAAAAAHCBHewAAAAAAAAAAAAAALjABDsAAAAAAAAAAAAAAC4wwQ4AAAAAAAAAAAAAgAtMsAMAAAAAAAAAAAAA4AIT7AAAAAAAAAAAAAAAuMAEOwAAAAAAAAAAAAAALjDBDgAAAAAAAAAAAACAC0ywAwAAAAAAAAAAAADgwv8HFUg2ZH0eMrsAAAAASUVORK5CYII=" + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB9gAAANcCAYAAAAU0nQ9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACOy0lEQVR4nOz9e5TWdb3//z8GhhkGlMlDIhoiaSKGJoI7we2hUtTUDu6CsrQSSxdlm8iviZgHtDA109qp0c7QXSqZ5kcNLXaJWWqlQSfNnaaCCKKkYDICA9fvD3/McuTgi2HgGpjbba1rrZn3vA/Pa5hZhXde73dNpVKpBAAAAAAAAABYpy7VHgAAAAAAAAAANgcCOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AADAZmTKlCmpqanJgw8+uMavH3PMMdl1111bbdt1113zyU9+cuMPtxHMmDEjNTU1+fGPf/yG+37yk59c7b23p/POOy81NTXF+997770ZOXJkdt5559TV1aWxsTHDhw/PVVddlZdffrllv4395/PVr341t95660Y595NPPpmamppMmTJlo5y/5NqrXt26dct2222X/fffP1/4whfy17/+dZPP9Fob++cRAACA6hDYAQAAtnA/+clP8uUvf7naY2x0X/7yl/OTn/yk2mMkSc4999wcfPDBmTt3bi644IJMnz49N954Y97znvfkvPPOy9lnn73JZtmYgb1Pnz65//77c/TRR2+U85c47bTTcv/99+eee+7J//zP/+QDH/hAbrvttrzjHe/IJZdcUrW5AAAA2DLVVnsAAAAANq7Bgwe327kqlUpeeeWVNDQ0bNB5mpqaNvgcr7fbbru16/na6qabbsrEiRMzevTofPe732216v2oo47KGWeckfvvv7+KE264FStWpLm5OfX19TnggAOqOssuu+zSaob3vve9GTduXI477ricccYZGTRoUI466qgqTrh2r/0+bmzt9bsLAADQ2VnBDgAAsIVb0y3IFy9enNNPPz39+/dPXV1ddt5554wdO7bVrcuTpKamJp/73Ody9dVXZ+DAgamvr8+1116bJDn//PPzzne+M9tuu2169eqV/fbbL9/73vdSqVRWu/4xxxyTW265JYMHD0737t1z/vnnJ0nmzp2bz3zmM+nbt2/q6uqy00475UMf+lCeffbZVudYvnx5JkyYkJ122im9evXKYYcdlkcffbTVPmu6JffKlSvzrW99K/vuu28aGhrypje9KQcccEBuu+22ln2mTp2aESNGpE+fPmloaMjAgQNz5plnrva9KDVx4sRss802+eY3v7nGW8pvvfXWGTFixFqPX/UYgCeffLLV9lW3y58xY0bLtpkzZ+aYY47JDjvskPr6+uy00045+uij8/TTTyd59c/v5ZdfzrXXXttyK/VDDz205fj58+fnlFNOyVve8pbU1dWlf//+Of/889Pc3Nyyz6pbsV988cW58MIL079//9TX1+fuu+9e4y3iV91K/69//Ws++tGPprGxMb17985JJ52URYsWtXpPL774YkaPHp1tt902W221VY4++uj84x//SE1NTc4777w3/mavRUNDQ773ve+lW7duq61iX5/3fOmll+ayyy5L//79s9VWW2XYsGF54IEHVrvelClTMmDAgNTX12fgwIG57rrrVttnXd/HJLntttsybNiw9OjRI1tvvXUOP/zwNf5DjP/3//5f9tlnn9TX1+etb31rrrjiijU+vqA9f3fvuOOODB48uOX344477mh53wMHDkzPnj3zb//2b2t9dAUAAMCWxAp2AACAzdCqla+v9/pAtiZLlizJIYcckqeffjpnnXVW9tlnn/z1r3/NOeeckz//+c/53//931ax7tZbb829996bc845JzvuuGN22GGHJK8Gw1NOOSW77LJLkuSBBx7Iaaedlrlz5+acc85pdc0//OEPeeSRR3L22Wenf//+6dmzZ+bOnZv9998/y5cvb5lj4cKF+dnPfpYXXnghvXv3bjn+rLPOyoEHHpj//u//zuLFi/OlL30pxx57bB555JF07dp1re/1k5/8ZH7wgx9k9OjRmThxYurq6vKHP/yhVbz++9//nve+970ZO3Zsevbsmb/97W/52te+lt/97nf55S9/+Ybfz9eaN29e/vKXv2TUqFHp0aPHeh27vl5++eUcfvjh6d+/f7797W+nd+/emT9/fu6+++689NJLSZL7778/7373u/Oud72r5TEBvXr1SvJqaP63f/u3dOnSJeecc05222233H///bnwwgvz5JNP5vvf/36r633zm9/MHnvskUsvvTS9evXK2972tnXO9x//8R8ZNWpURo8enT//+c8ZP358kuSaa65J8uo/fjj22GPz4IMP5rzzzst+++2X+++/P0ceeWS7fH922mmnDBkyJPfdd1+am5tTW1u73u/529/+dvbcc89cfvnlSV59DMF73/vePPHEE2lsbEzyamT+1Kc+lfe///35+te/nkWLFuW8887L0qVL06XL6usa1vR9vP766/Oxj30sI0aMyA033JClS5fm4osvzqGHHppf/OIX+fd///ckyV133ZXjjjsuBx98cKZOnZrm5uZceumlq/2DlFXa43f3j3/8Y8aPH58JEyaksbEx559/fo477riMHz8+v/jFL/LVr341NTU1+dKXvpRjjjkmTzzxhFXyAADAlq0CAADAZuP73/9+Jck6X/369Wt1TL9+/Sqf+MQnWj6fNGlSpUuXLpXf//73rfb78Y9/XElSmTZtWsu2JJXGxsbKP//5z3XOtWLFisry5csrEydOrGy33XaVlStXtrp+165dK48++mirY0466aRKt27dKg8//PBaz3v33XdXklTe+973ttr+ox/9qJKkcv/997ds+8QnPtHqvf/qV7+qJKlMmDBhnbO/1sqVKyvLly+v3HPPPZUklT/+8Y8tXzv33HMrb/TX6AceeKCSpHLmmWcWX/P1fz6r/oyfeOKJVvut+l7cfffdlUqlUnnwwQcrSSq33nrrOs/fs2fPVudf5ZRTTqlstdVWlaeeeqrV9ksvvbSSpPLXv/61UqlUKk888UQlSWW33XarLFu2rNW+q772/e9/v2Xbqu/TxRdf3GrfMWPGVLp3797ys/HTn/60kqRy1VVXtdpv0qRJlSSVc889d53va9W1L7nkkrXuM2rUqEqSyrPPPtum97z33ntXmpubW/b73e9+V0lSueGGGyqVyqs/9zvttFNlv/32a/Uz/+STT1a6devW6udxbd/HVefYe++9KytWrGjZ/tJLL1V22GGHyvDhw1u27b///pW+fftWli5d2mq/7bbbbrWfzfb63W1oaKg8/fTTLdtmzZpVSVLp06dP5eWXX27Zfuutt1aSVG677bZ1Xg8AAGBz5xbxAAAAm6Hrrrsuv//971d7rVrpui533HFHBg0alH333TfNzc0tryOOOGK1W5Anybvf/e5ss802q53nl7/8ZQ477LA0Njama9eu6datW84555wsXLgwCxYsaLXvPvvskz322KPVtjvvvDPvete7MnDgwDec+X3ve99q50uSp556aq3H3HnnnUmSz372s+s89z/+8Y8cf/zx2XHHHVvexyGHHJIkeeSRR95wtmrZfffds8022+RLX/pSrr766jz88MPrdfwdd9yRd73rXdlpp51a/Rysel75Pffc02r/973vfenWrVvx+df0Z/bKK6+0/GysOv/IkSNb7ffRj350vd7HulRed0eH9X3PRx99dKs7JLz+5+7RRx/NM888k+OPP77VXR/69euX4cOHr3Gm138fV53jhBNOaLXifauttsp//Md/5IEHHsiSJUvy8ssv58EHH8wHPvCB1NXVtdrv2GOPXeO12uN3d999983OO+/c8vmq39dDDz201V0aVm1f1+8kAADAlsAt4gEAADZDAwcOzNChQ1fb3tjYmDlz5qzz2GeffTaPPfbYWmPp888/3+rzPn36rLbP7373u4wYMSKHHnpovvvd77Y8z/rWW2/NV77ylTQ1Nb3hOZ577rm85S1vWeesq2y33XatPq+vr0+S1a7z+vN37do1O+6441r3+de//pWDDjoo3bt3z4UXXpg99tgjPXr0yJw5c3Lcccet8/xrsuqW20888cR6HdcWjY2Nueeee/KVr3wlZ511Vl544YX06dMnn/70p3P22We/YQx/9tlnc/vtt2/Qz8G6vNGf2cKFC1NbW5ttt9221X6vfTTAhnrqqadSX1/fco31fc8l7yHJGn/Gdtxxx1aPIljl9d/HVedY0/d3p512ysqVK/PCCy+kUqmkUqms8fuztu9Ze/zuvv7PZ1XcX9v2V155ZY2zAAAAbCkEdgAAgE5m++23T0NDQ8uzsNf09dd67crcVW688cZ069Ytd9xxR7p3796y/dZbb13jOdd0jje/+c15+umn12Py9fPmN785K1asyPz589cah3/5y1/mmWeeyYwZM1pWrSfJiy++2KZr9unTJ3vvvXd+/vOfZ8mSJW16Dvuq7+fSpUtbbX99/E2SvffeOzfeeGMqlUr+9Kc/ZcqUKZk4cWIaGhpy5plnrvM622+/ffbZZ5985StfWePXd9ppp1afr+nPcENst912aW5uzj//+c9WsXb+/Pntcv65c+fmoYceyiGHHJLa2lf/88f6vuc3sirAr2nmtb2P138fV51j3rx5q+37zDPPpEuXLtlmm21SqVRSU1Ozxuetl14rWf/fXQAAAFpzi3gAAIBO5phjjsnjjz+e7bbbLkOHDl3tteuuu77hOWpqalJbW9vq9tlNTU35n//5n+I5jjrqqNx999159NFH2/I2is6fJFddddVa91kVIFetTF7lO9/5Tpuv++UvfzkvvPBCPv/5z692i/Lk1VXzP//5z9d6/Krv/5/+9KdW22+77ba1HlNTU5N3vOMd+cY3vpE3velN+cMf/tDytfr6+jWuxD/mmGPyl7/8Jbvtttsafw7WNzavr1X/oGHq1Kmttt94440bfO6mpqacfPLJaW5uzhlnnNGyvb3f84ABA9KnT5/ccMMNrf6sn3rqqdx3333F59h5551z/fXXtzrHyy+/nJtvvjnDhg1Ljx490rNnzwwdOjS33nprli1b1rLfv/71r9xxxx3FM7fH7y4AAEBnZgU7AABAJzN27NjcfPPNOfjgg/OFL3wh++yzT1auXJnZs2fn5z//eb74xS/mne985zrPcfTRR+eyyy7L8ccfn8985jNZuHBhLr300tVC9bpMnDgxd955Zw4++OCcddZZ2XvvvfPiiy/mrrvuyrhx47Lnnntu0Ps86KCDcsIJJ+TCCy/Ms88+m2OOOSb19fWZOXNmevTokdNOOy3Dhw/PNttsk1NPPTXnnntuunXrlh/+8If54x//2ObrfvjDH86Xv/zlXHDBBfnb3/6W0aNHZ7fddsuSJUvy29/+Nt/5zncyatSojBgxYo3H77///hkwYEBOP/30NDc3Z5tttslPfvKT/PrXv2613x133JErr7wyH/jAB/LWt741lUolt9xyS1588cUcfvjhLfvtvffemTFjRm6//fb06dMnW2+9dQYMGJCJEydm+vTpGT58eD7/+c9nwIABeeWVV/Lkk09m2rRpufrqq4tv4d8WRx55ZA488MB88YtfzOLFizNkyJDcf//9ue6665Kk1fPI12X27Nl54IEHsnLlyixatCgzZ87MNddck6eeeipf//rXW32f2/s9d+nSJRdccEFOPvnkfPCDH8ynP/3pvPjiiznvvPPW+WiC15/j4osvzsc+9rEcc8wxOeWUU7J06dJccsklefHFF3PRRRe1mv/oo4/OEUcckf/8z//MihUrcskll2SrrbbKP//5z6LrtcfvLgAAQGcmsAMAAHQyPXv2zL333puLLrookydPzhNPPJGGhobssssuOeyww4pWsL/73e/ONddck6997Ws59thjs/POO+fTn/50dthhh4wePbpojp133jm/+93vcu655+aiiy7KwoUL8+Y3vzn//u//vtrzndtqypQp2W+//fK9730vU6ZMSUNDQ/baa6+cddZZSV69PfdPf/rTfPGLX8zHP/7x9OzZM+9///szderU7Lfffm2+7sSJE3PYYYflW9/6ViZMmJDnn38+DQ0Nefvb355x48bllFNOWeuxXbt2ze23357Pfe5zOfXUU1NfX5+PfOQj+a//+q8cffTRLfu97W1vy5ve9KZcfPHFeeaZZ1JXV5cBAwZkypQp+cQnPtGy3xVXXJHPfvaz+chHPpIlS5bkkEMOyYwZM9KnT588+OCDueCCC3LJJZfk6aefztZbb53+/fvnyCOPzDbbbNPm91+iS5cuuf322/PFL34xF110UZYtW5YDDzwwP/jBD3LAAQfkTW96U9F5vvWtb+Vb3/pWunbtml69euWtb31rjj322Hz605/OXnvt1WrfjfGeV/28f+1rX8txxx2XXXfdNWeddVbuueeezJgxo+gcxx9/fHr27JlJkyZl1KhR6dq1aw444IDcfffdGT58eMt+Rx55ZG6++eacc845GTVqVHbccceMGTMmzzzzTPEK9Pb43QUAAOjMaiprul8dAAAAQBVcf/31+djHPpbf/OY3reIya7Z8+fLsu+++2Xnnndf56AEAAADahxXsAAAAQFXccMMNmTt3bvbee+906dIlDzzwQC655JIcfPDB4vpajB49Oocffnj69OmT+fPn5+qrr84jjzySK664otqjAQAAdAoCOwAAAFAVW2+9dW688cZceOGFefnll9OnT5988pOfzIUXXljt0Tqsl156Kaeffnqee+65dOvWLfvtt1+mTZuWww47rNqjAQAAdApuEQ8AAAAAAAAABbpUewAAAAAAAAAA2BwI7AAAAAAAAABQoNM9g33lypV55plnsvXWW6empqba4wAAAAAAAABQZZVKJS+99FJ22mmndOmy9nXqnS6wP/PMM+nbt2+1xwAAAAAAAACgg5kzZ07e8pa3rPXrnS6wb7311kle/cb06tWrytMAAAAAAAAAUG2LFy9O3759W3ry2nS6wL7qtvC9evUS2AEAAAAAAABo8UaPGV/7zeMBAAAAAAAAgBYCOwAAAAAAAAAUENgB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nnu274QAAAAAAAAA0AGsV2D/xje+keTVFexXX311q9vB19XVZdddd83VV1/dvhMCAAAAAAAAQAewXoH9iSeeSJK8613vyi233JJtttlmowwFAAAAAAAAAB1Nm57Bfvfdd7eK6ytWrMisWbPywgsvtNtgAAAAAAAAANCRtCmwjx07Nt/73veSvBrXDz744Oy3337p27dvZsyYsV7nuvLKK9O/f/907949Q4YMyb333rvWfX/961/nwAMPzHbbbZeGhobsueeeLbetBwAAAAAAAICNqU2B/aabbso73vGOJMntt9+eJ598Mn/7298yduzYTJgwofg8U6dObTlm5syZOeigg3LUUUdl9uzZa9y/Z8+e+dznPpdf/epXeeSRR3L22Wfn7LPPzuTJk9vyNgAAAAAAAACgWJsC+8KFC7PjjjsmSaZNm5YPf/jD2WOPPTJ69Oj8+c9/Lj7PZZddltGjR+fkk0/OwIEDc/nll6dv37656qqr1rj/4MGD89GPfjRvf/vbs+uuu+bjH/94jjjiiHWuel+6dGkWL17c6gUAAAAAAAAA66tNgb137955+OGHs2LFitx111057LDDkiRLlixJ165di86xbNmyPPTQQxkxYkSr7SNGjMh9991XdI6ZM2fmvvvuyyGHHLLWfSZNmpTGxsaWV9++fYvODQAAAAAAAACv1abA/qlPfSojR47MoEGDUlNTk8MPPzxJ8tvf/jZ77rln0Tmef/75rFixIr179261vXfv3pk/f/46j33LW96S+vr6DB06NJ/97Gdz8sknr3Xf8ePHZ9GiRS2vOXPmFM0HAAAAAAAAAK9V25aDzjvvvAwaNChz5szJhz/84dTX1ydJunbtmjPPPHO9zlVTU9Pq80qlstq217v33nvzr3/9Kw888EDOPPPM7L777vnoRz+6xn3r6+tb5gMAAAAAAACAtmpTYE+SD33oQ6tt+8QnPlF8/Pbbb5+uXbuutlp9wYIFq61qf73+/fsnSfbee+88++yzOe+889Ya2AEAAAAAAACgPRQH9m9+85v5zGc+k+7du+eb3/zmOvf9/Oc//4bnq6ury5AhQzJ9+vR88IMfbNk+ffr0vP/97y8dK5VKJUuXLi3eHwAAAAAAAADaojiwf+Mb38jHPvaxdO/ePd/4xjfWul9NTU1RYE+ScePG5YQTTsjQoUMzbNiwTJ48ObNnz86pp56a5NXnp8+dOzfXXXddkuTb3/52dtlll5bnvP/617/OpZdemtNOO630bQAAAAAAAABAmxQH9ieeeGKNH2+IUaNGZeHChZk4cWLmzZuXQYMGZdq0aenXr1+SZN68eZk9e3bL/itXrsz48ePzxBNPpLa2NrvttlsuuuiinHLKKe0yDwAAAAAAAACsTXFgHzduXNF+NTU1+frXv148wJgxYzJmzJg1fm3KlCmtPj/ttNOsVgcAAAAAAACgKooD+8yZM1t9/tBDD2XFihUZMGBAkuT//u//0rVr1wwZMqR9JwQAAAAAAACADqA4sN99990tH1922WXZeuutc+2112abbbZJkrzwwgv51Kc+lYMOOqj9pwQAAAAAAACAKuvSloO+/vWvZ9KkSS1xPUm22WabXHjhhet1e3gAAAAAAAAA2Fy0KbAvXrw4zz777GrbFyxYkJdeemmDhwIAAAAAAACAjqZNgf2DH/xgPvWpT+XHP/5xnn766Tz99NP58Y9/nNGjR+e4445r7xkBAAAAAAAAoOqKn8H+WldffXVOP/30fPzjH8/y5ctfPVFtbUaPHp1LLrmkXQcEAAAAAAAAgI6gTYG9R48eufLKK3PJJZfk8ccfT6VSye67756ePXu293wAAAAAAAAA0CG0KbCv0rNnz+yzzz7tNQsAAAAAAAAAdFhtegY7AAAAAAAAAHQ2AjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFKit9gAAAABVVakky5e0z7mWLVnzxxuqW4+kpqb9zgcAAABAmwjsAABA51WpJNcckcz5bfuf+9Ld2+9cfQ9ITrpLZAcAAACoMreIBwAAOq/lSzZOXG9vcx5ov1X2AAAAALSZFewAAABJcvpjSV2Pak/R2rIl7bsSHgAAAIANIrADAAAkr8b1up7VngIAAACADswt4gEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABSoemC/8sor079//3Tv3j1DhgzJvffeu9Z9b7nllhx++OF585vfnF69emXYsGH52c9+tgmnBQAAAAAAAKCzqmpgnzp1asaOHZsJEyZk5syZOeigg3LUUUdl9uzZa9z/V7/6VQ4//PBMmzYtDz30UN71rnfl2GOPzcyZMzfx5AAAAAAAAAB0NlUN7JdddllGjx6dk08+OQMHDszll1+evn375qqrrlrj/pdffnnOOOOM7L///nnb296Wr371q3nb296W22+/fRNPDgAAAAAAAEBnU7XAvmzZsjz00EMZMWJEq+0jRozIfffdV3SOlStX5qWXXsq222671n2WLl2axYsXt3oBAAAAAAAAwPqqWmB//vnns2LFivTu3bvV9t69e2f+/PlF5/j617+el19+OSNHjlzrPpMmTUpjY2PLq2/fvhs0NwAAAAAAAACdU1VvEZ8kNTU1rT6vVCqrbVuTG264Ieedd16mTp2aHXbYYa37jR8/PosWLWp5zZkzZ4NnBgAAAAAAAKDzqa3Whbfffvt07dp1tdXqCxYsWG1V++tNnTo1o0ePzk033ZTDDjtsnfvW19envr5+g+cFAAAAAAAAoHOr2gr2urq6DBkyJNOnT2+1ffr06Rk+fPhaj7vhhhvyyU9+Mtdff32OPvrojT0mAAAAAAAAACSp4gr2JBk3blxOOOGEDB06NMOGDcvkyZMze/bsnHrqqUlevb373Llzc9111yV5Na6feOKJueKKK3LAAQe0rH5vaGhIY2Nj1d4HAAAAAAAAAFu+qgb2UaNGZeHChZk4cWLmzZuXQYMGZdq0aenXr1+SZN68eZk9e3bL/t/5znfS3Nycz372s/nsZz/bsv0Tn/hEpkyZsqnHBwAAAAAAAKATqWpgT5IxY8ZkzJgxa/za66P5jBkzNv5AAAAAAAAAALAGVXsGOwAAAAAAAABsTgR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQoLbaAwAAAAB0RJVKJU3NTdUeA9gEXvu77vceOo+G2obU1NRUewwANjMCOwAAAMDrVCqVnHjniZn13KxqjwJsYof+6NBqjwBsIoN3GJxrj7xWZAdgvbhFPAAAAMDrNDU3iesAsIWbuWCmu1YAsN6sYAcAAABYhxkjZ6ShtqHaYwAA7aSpucndKgBoM4EdAAAAYB0aahvSo1uPao8BAABAB+AW8QAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAAChQW+0BgLWoVJLlS6o9BXQMy5as+WPo7Lr1SGpqqj0FAAAAAECnIbBDR1SpJNcckcz5bbUngY7n0t2rPQF0HH0PSE66S2QHAAAAANhE3CIeOqLlS8R1AN7YnAfc7QQAAAAAYBOygh06utMfS+p6VHsKADqSZUvczQEAAAAAoAoEdujo6nokdT2rPQUAAAAAAAB0em4RDwAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAArUVnsAAAAAAAA2jUqlkqbmpmqPAVX12t8Bvw90dg21Dampqan2GLBZEdgBAAA2hkolWb5kw86xbMmaP26rbj0S/+EEADqtSqWSE+88MbOem1XtUaDDOPRHh1Z7BKiqwTsMzrVHXiuyw3oQ2AEAANpbpZJcc0Qy57ftd85Ld9/wc/Q9IDnpLpEdADqppuYmcR2AVmYumJmm5qb06Naj2qPAZkNgBwAAaG/Ll7RvXG8vcx54dba6ntWeBACoshkjZ6ShtqHaYwBQJU3NTe7gAG0ksAMAAGxMpz+W1FV5JcCyJe2zAh4A2GI01DZYrQgA0AYCOwAAwMZU18OKcQAAAIAtRJdqDwAAAAAAAAAAmwOBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQoLbaAwAAm6FKJVm+pNpTdF7Llqz5Yzatbj2SmppqTwEAAAAAbEICOwCwfiqV5Jojkjm/rfYkJMmlu1d7gs6r7wHJSXeJ7AAAAADQibhFPACwfpYvEdchSeY84E4OAAAAANDJWMEOALTd6Y8ldT2qPQVsWsuWuHMAAAAAAHRSAjsA0HZ1PZK6ntWeAgAAAAAANgm3iAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAK1FZ7AAAAAAAAANgcVSqVNDU3VXuM9fbamTfH+VdpqG1ITU1NtcegkxHYAQAAAAAAYD1VKpWceOeJmfXcrGqPskEO/dGh1R6hzQbvMDjXHnmtyM4m5RbxAAAAAAAAsJ6amps2+7i+uZu5YOZmvQKfzZMV7AAAAAAAALABZoyckYbahmqP0Wk0NTdt1ivv2bwJ7AAAAAAAALABGmob0qNbj2qPAWwCbhEPAAAAAAAAAAUEdgAAAAAAAAAoILADAAAAAAAAQAGBHQAAAAAAAAAKCOwAAAAAAAAAUEBgBwAAAAAAAIACAjsAAAAAAAAAFBDYAQAAAAAAAKCAwA4AAAAAAAAABQR2AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQQGAHAAAAAAAAgAICOwAAAAAAAAAUENgBAAAAAAAAoIDADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFCg6oH9yiuvTP/+/dO9e/cMGTIk995771r3nTdvXo4//vgMGDAgXbp0ydixYzfdoAAAAAAAAAB0alUN7FOnTs3YsWMzYcKEzJw5MwcddFCOOuqozJ49e437L126NG9+85szYcKEvOMd79jE0wIAAAAAAADQmVU1sF922WUZPXp0Tj755AwcODCXX355+vbtm6uuumqN+++666654oorcuKJJ6axsXETTwsAAAAAAABAZ1a1wL5s2bI89NBDGTFiRKvtI0aMyH333ddu11m6dGkWL17c6gUAAAAAAAAA66tqgf3555/PihUr0rt371bbe/funfnz57fbdSZNmpTGxsaWV9++fdvt3AAAAAAAAAB0HlW9RXyS1NTUtPq8Uqmstm1DjB8/PosWLWp5zZkzp93ODQAAAAAAAEDnUVutC2+//fbp2rXraqvVFyxYsNqq9g1RX1+f+vr6djsfAAAAAAAAAJ1T1Vaw19XVZciQIZk+fXqr7dOnT8/w4cOrNBUAAAAAAAAArFnVVrAnybhx43LCCSdk6NChGTZsWCZPnpzZs2fn1FNPTfLq7d3nzp2b6667ruWYWbNmJUn+9a9/5bnnnsusWbNSV1eXvfbaqxpvAQAAAAAAAIBOoqqBfdSoUVm4cGEmTpyYefPmZdCgQZk2bVr69euXJJk3b15mz57d6pjBgwe3fPzQQw/l+uuvT79+/fLkk09uytEBAAAAAAAA6GSqGtiTZMyYMRkzZswavzZlypTVtlUqlY08EQAAAAAAAACsrmrPYAcAAAAAAACAzYnADgAAAAAAAAAFBHYAAAAAAAAAKCCwAwAAAAAAAEABgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAUEdgAAAAAAAAAoUFvtAQAAAFgPlUqyfMn6HbNsyZo/LtWtR1JTs/7HAQAAAGxhBHYAAIDNRaWSXHNEMue3bT/Hpbuv/zF9D0hOumuLj+yVSiVNzU2b7HqvvdamvG5DbUNqtvA/SwAAANhYBHYAAIDNxfIlGxbX22rOA69eu67npr/2JlKpVHLinSdm1nOzqnL9Q3906Ca71uAdBufaI68V2QEAAKANBHYAAIDN0emPJXU9Nu41li1p24r3zVBTc1PV4vqmNnPBzDQ1N6VHt4388wMAAABbIIEdAABgc1TXY4teUV5NM0bOSENtQ7XHaHdNzU2bdKU8AAAAbIkE9s6iUnn1lo5sHpYtWfPHdHzdemzxzyYFANjSNdQ2WN0NAAAArJHA3hlUKsk1R1TnWY1suE5yS84tRt8DkpPuEtkBAKCdVCqVNDU3bfLrvvaa1bj+Kg21Danx9wsAAIAOQ2DvDJYvEddhU5nzwKu/c27XCgAAG6xSqeTEO0/MrOdmVXWOat5af/AOg3PtkdeK7AAAAB2EwN7ZnP7Yq89qBNrXsiXuNgAAAO2sqbmp6nG92mYumJmm5iaPLQAAAOggBPbOpq6HlbUAAABsdmaMnJGG2oZqj7HJNDU3VXXlPAAAAGsmsAMAAAAdXkNtg1XcAAAAVF2Xag8AAAAAAAAAAJsDgR0AAAAAAAAACgjsAAAAAAAAAFBAYAcAAAAAAACAAgI7AAAAAAAAABQQ2AEAAAAAAACggMAOAAAAAAAAAAVqqz0AAAAAAAAA0D4qlUqampuqPcZG9dr3t6W/1yRpqG1ITU1Ntcfg/09gBwAAAAAAgC1ApVLJiXeemFnPzar2KJvMoT86tNojbHSDdxica4+8VmTvINwiHgAAAAAAALYATc1NnSqudxYzF8zsFCv1NxdWsAMAAAAAAMAWZsbIGWmobaj2GGyApuamTrFCf3MjsAMAAAAAAMAWpqG2IT269aj2GLDFcYt4AAAAAAAAACggsAMAAAAAAABAAYEdAAAAAAAAAAoI7AAAAAAAAABQoLbaAwAAAABAZ1epVNLU3FTtMdjCvfZnzM8bm0JDbUNqamqqPQYAtCuBHQAAAACqqFKp5MQ7T8ys52ZVexQ6kUN/dGi1R6ATGLzD4Fx75LUiOwBbFLeIBwAAAIAqampuEteBLdLMBTPdLQGALY4V7AAAAADQQcwYOSMNtQ3VHgNggzQ1N7lLAgBbLIEdAAAAADqIhtqG9OjWo9pjAAAAayGwAwDQMVUqyfIl1Z5idcuWrPnjjqZbj8RzDgEAAACgXQnsAAB0PJVKcs0RyZzfVnuSdbt092pPsHZ9D0hOuktkBwAAAIB21KXaAwAAwGqWL+n4cb2jm/NAx7wDAAAAAABsxqxgBwCgYzv9saTOc0iLLVvSsVfWAwAAAMBmTGAHAKBjq+uR1PWs9hQAAAAA8P9r797joyruxo9/g9wSAohcRIEkVIzGJFDkGqwIFLlZq6JgL48oPPLor1ZEiuKtLZQqvWhL6632USqXWlFUWizQKpcoj4IECChgBREDgtwpmIRA4Pv7gyf7bC67e86Zszu72c/79eL1CtmdzJw5c2bmzJyZA7BFPAAAAAAAAAAAAAAATrCCHUB8UE3s98SeLKv750TUKE0kJcV2KgAAAAAAAAAAAOIOE+wA7FMVmTVUZNca2ynxR6K/97ZTX5FxS5lkBwAAAAAAAAAAqIEt4gHYd6qs/kyu1we7Vif2bgIAAAAAAAAAAABRwgp2APFl8naRxmm2U5GcTpYl/up7AAAAAAAAAACAKGKCHUB8aZwm0riZ7VQAAAAAAAAAAAAAtTDBDgAAAADJQtXdq2BOltX9sxON0kRSUtyFAQAAAAAAiHNMsAMAAABAMlAVmTVUZNcab+HdvkqmU1+RcUuZZAcAAAAAAPVKA9sJAAAAAADEwKky75PrXuxa7W61PAAAAAAAQAJgBTsAAAAAJJvJ20Uap0Xnb58sc7/aHQAAAAAAIEEwwQ4AAAAAyaZxmkjjZrZTAQAAAAAAkHCYYAcAAAAAAAAAoAZVlfLKctvJSEjB+UYemkltmCopKSm2kwEACMIEOwAAAAAAAAAAQVRVxiwZI8UHim0nJeENeGWA7SQktO7tusvsYbOZZAeAONLAdgIAAAAAAAAAAIgn5ZXlTK4jLmzYv4FdAAAgzrCCHQAAAAAAAACAEFaOXimpDVNtJwNJpryynNX/ABCnmGAHAAAAAK9URU6V1f79ybK6fw7WKE2EbR4BAADiXmrDVElrlGY7GQAAIE4wwQ4AAAAAXqiKzBoqsmtN+O893qXu33fqKzJuKZPsMKaqjrYNDf6Om21GUxum8s5PAAAAAAD+FxPsAAAAAODFqbLIk+vh7Fp99m80buZfmpB0VFXGLBnj+h2xbrYb7d6uu8weNptJdgAAAAAAhAl2AAAAADA3ebtIY4fbhp4sC72qHXCpvLLc9eS6Wxv2b5DyynK2xg3B6Q4CbnndccApdiYAAAAAAG+YYAcAAAAAU43TWIkO61aOXimpDVN9+3vlleWuVronI687CLgVjfPAzgQAAAAA4A0T7AAAAAAA1AOpDVNZZR5jsdhBIFrYmQAAAAAAvGGC3Q+qZ9+dGK9OltX9czxqlCbC0/MAAAAAgATj9w4C0cLOBAAAAABghgl2U6ois4aK7FpjOyXOxPu7Hjv1FRm3lEl2AAAAAEBCYQcBAAAAAEgODWwnIOGdKkucyfVEsGt1fO8GAAAAAAAAAAAAACBpsYLdT5O3izTmaXVPTpbF/+p6AAAAL2L9OiHbrwfilT8AAAAAAACox5hg91PjNJHGzWynAgAAAPHC9uuEbDzAyCt/AAAAAAAAUI8xwQ4AgA2xXtHqJ9urY/3ESltEWzK+TqjqlT88eAoAAAAAAIB6iAl2AABizfaKVj8l+us9WGmLWKrvrxPilT8AAAAAAABIAkywAwAQa8m4ojVesdIWscTrhAAgQFWlvLI84veCv+Pk+yIiqQ1TJYWH5wAAAAAAUcIEOwAANtX3Fa3xipW2AABYo6oyZskYKT5Q7CrcgFcGOPpe93bdZfaw2UyyAwAAT5w+CBhtXh40jDYeZER9Fy/Xf7B4rAuCJWu9wAQ7AAA2saIVAICocDswYjJokawDCl6VV5a7nlx3Y8P+DVJeWS5pjXiIEQAAuOP1QcBoc/qgYbTxICPqs3i9/oPFS10QLFnrBSbYAQAAAAD1iunAiNtBi2QdUPDDytErJbVhqi9/q7yyPC4HnAAAQOKI9oOAiY4HGVGfcf17k6z1AhPsAAAAAIB6JdYDI8k6oOCH1Iap5BsAAIhLfj4ImOh4kBHJhus/smSvF5hgBwAAAADUW9EcGEn2AQUAAID6jAcBYZvX94H78c7uZH8NFtc/ImGCHQAAAABQbzEwAgAAACDR+PU+cK8PBPMaLCC8BrYTAAAAAAAAAAAAAOAs2+8Dr3oNFoC6sYIdAAAAAAAAAAAAiEOxfB84r8ECnGGCHQAAAAAAAAAAAIhDvPYKiD9sEQ8AAAAAAAAAAAAAgAOsYAcAAAAAAAAAAACAJKSqUl5Z7ipM8PfdhhU5uzNDSkqK63Dxggl2AAAQfaoip8psp+L/nCyr+2fbGqWJJHDHEgAAIB54GSC0zXSA0qZEHxwFAABIZqoqY5aMkeIDxZ7/xoBXBrgO071dd5k9bHbC9iOZYAcAANGlKjJrqMiuNbZTUrfHu9hOwf/p1Fdk3FIm2QEAADzyY4DQNi8DlDYl+uAoAABAMiuvLLfSd96wf4OUV5ZLWqO0mMftBybYAQBAdJ0qi9/J9Xiza/XZ/GrczHZKAAAAEpKtAcJkluiDowAAADhr5eiVktowNapxlFeWJ9wDpXVhgh0AAMTO5O0ijRl4q+VkWXytpPeT19cDmG7jz3b7AIB6zus26H5sRZ4oW4LHYoAwmdWXwVEAAACcldowlYcmHWKCHQDqAz/eb+33O6mZ3EJdGqexOjuZ+PV6AC8PH7DdPgCgHvNrG3Svk6OJsiU4A4TVRfPd9NH4u4nyIAcAAACSDxPsqJsfk3Vu+D2x5xQTgKgPovF+az9W0jK5BcDm6wHYbh+AAaeTUF5WAjNhBD/Y3gadLcETT7TfTR+NleyJ8iAHAAAAkg8T7DW5nVg2mRiO18ndaEzWuRHLLXKZAER9EK/vt2ZyC0CwWL0eoD5vtw8gJrxOQjmdXGLCCH6L5TbobAmeuGw/lOEFD3IAgHPR3KVExJ9XzDjFA6kAEgET7MFMJ5bdDubG6+RuvE7WRQMTgKhv/J7AUhU55bLTfKpM5Hddz/7Me5MBVOH1AEDic/owspeHkOOo/Y/2JBQTRvAb26DDrXh/Nz0PciS3aE8SuhHLCUU3mHxETdHepaSmaNfRPJAKIBEwwR4s1hPLiTC5G6vVZrHG6jbUV35OYPmxmwXvTQYAoH7w2i9w2heI0/bfz0koJowAxAseykC8ivUkoRvx1IYz+YiaEnGXknB4IBVAImCCPZRoTiwn0uQuq82A5GVrN4tEePgIAJIBr05CsGj3C+K0/WcSCgCA2Klvk4TRwuQjwon3XUrC4YHU2Am3W4iT3TvYSQNggj00JpaB6twOsrthMiDvFAP3ZmKxm0UiPXwEAPUdr05COH72C2j/AQBAHRJ5kjBamHyEEzwgikjc7BYSqs5hJw2ACXbEu2hN6jKh644fW4U7Fa0BVgbuzfDQEYB4E6qP4LSN99pOx2pVt+1+BK9OQjj0CwAgqcT6ndg233vNirz4wSQhAESHH7uFsJMGwAQ74lmsJnWZ0I3M1lbhfmLgHgDqD6d9hHBtvJd2OparuuOpH8GrkwAASFq234kd69W6rMgDACQTt7uFsJMG8H+YYPeT0xVNXlYy2V7FZEOiT+rW1wndWGwV7icG7hELvKcYNVEmosuPPoKXdjqWfZN46kewWhkAkgrv5ESwZHsn9ob9G+TwicMx3ZqcawYAYAu7hQDeMcHuF68rmpxO/MXTKiYbEmlSt75P6DLIDqeSZYKR9xSjJspEbLntI/jVTkerb1Lf+xFIXiavdUjGB4kAS3gnJ8KJxTuxVVXGvzVePjz4YVTjCYdV8wAAxI9YvqqG19TADSbY/RLtFU3xtIrJBiZ1gcSSTBOMvKcYNVEmYstWH8FtvG4fOhJJrHe218TOTghm+lqHZH+QCIgh3smJcGKxyq3sVJnVyXUbuGYAVPE6kejHpGA0JvfcHo/JcTA5WT/ZfFUND9whEibYo8HPFU2sYrIvWVbhAn5K1glG3lOMmigTEIn+Tkci8TUByc5OqMm0XxAv7TyQZGL9Tk6/VidFa+URA/exF4sV8zbxHtv6IRlWVlL/xYZfE4le6xW/J/dMj8ftcTA5WT8l06tqeOAu8TDBHg2stq4/kmkVLhAtyTTB6KX+j+aq1mg8tGOaXrcPHokk9sNH9AkgEpuHjuJpApKdnRCOm35BvLXz9RTv20YosXwnZ7RWJ/k5ecnAfewl2nthTSZaWamZmJJlZSX1X2zYnkj0e3Iv1sfD5GT9V18fvKsPD9wl624VTLAD4STrKlzEp0R9dykTjKEl2ipP04eORLxNlPDwEeoTvx86ivcJSHZ2Qk30C+IK79tGvLA9qeDEhv0b5PCJw54HduNpMBD+Y6VmckqEussP9XXiMtSEkNOJn2jW67GcSIzF5J7b41FVOXH6hKPvlleWy/DXhwd+doI2OTEl2oN3ySKZ+0BMsANOJdMqXMQf3l1aPyXaKs9YP3RUZddqkdKD7urgRF71jvot2SYXk+14AYnvwdqaeN+2c4l0XhOdn5MKqirj3xrv2zu9TSYg4mkwEP5jpSZsrqx0MxnphpeJSzdsto1OJ4TC1fvRrNfr20Sim+Mxmaxz2k7TJgP+sdEHcvrQa7TbGSbYAacYILbDy3bUwUKt7lYVOeXi5sD2xB7vLq3/Em2Vp9v0qorMuU7kiyJv8fHKDQBAAoj3wdpwYv2+7USSyOc1Efk5qVB2qsy3yXVTyTohmoxbhkZzojVR6l6v2+WbvmPcZhmwNSEaq23qo1HubLaNPGQYv2IxWce5Qyw4bQu9tH3x0uepyctuFV4eho2Xh2mYYAcQv/zYjjpYrHYJiPbEHu8urZ8S7SEet+k9Wep9ct0LHioBAFiQyIO19W2llJ9snleTlfPxOvBmi63VpYkyIRoNybplaLLXp35N+Hq5bqJVBuK5Lk7kberjZZKThwzjl5e2O9yODk52ZaD/BD94bQvjZeLYK7d9oGg/DBvtdoYJdsSe0xXJTt4rXVO8bQmcTMcaDba2ozYVaTtr03OXaBOxiJ5QdYzTOsVWPeJltb7TXSdOlYn8ruvZn6lPYyNcW+ekLJL/AOopBmvrp1ieV9OV8/E68GaL35OeXlboJvqqJLfYNt25+rTKzeaEbzTKQCLVxTa3qXcj3vo8sX4oxsYDG+HqmHh4UCQUt+fGzaRmPFyzVeL5IR6/JcvONtFuCyNtk55o5ULE3zYsVu0ME+zJzMbEjNcVyU5X4HbsJXLLwrrTFesB/Ggfa33a/thJWbxn09lzWFOjVPd5ELyqe8ImZxN9Vd9xus11uPNYn85dtPBwSmRO65h4LItuHxJJtvrUpPxHehAhUn3n9vpwc25CnY94y38A8Emyr2Csr2J5Xk0H5hJ5stGtWA9MJ+uqJBN+r0IM5uU90fE08Fyfy5PfE76hyoTTMuDlvCdSXWy77+H1wSMn13q4chRP13MkNh7YSNRJZy8ScTepRHqIx1Ssd7bp2rar/HHwHx3lTTTrkWhtm17fXk9luw3zwvoE+zPPPCO//vWvZe/evZKbmyszZ86UK6+8MuT3CwsLZdKkSbJ582a58MIL5f7775c777wzhimuJ2xNzER7RfLutSIzOtT9WawH8KN9rOFWSSfSBKLTsli1IrUm0/Oa3ib221yzdXV4yfQgjgk/6phEKYvJVJ9Gu/xH4rZOTaZyCACIG8m0yqeKm4G5eFsZGG02BqZZleReNFchBnNa9iMNuscyj2NRnqKxqtvJathQovlgSzQnHGJZFyfargbRvmbDSaSJJBsPbCTipLMfEmU3qUR6iMdUrHc42XRgk/T9S19H341mPWJj2/REKhcmTO4LRczbQ6sT7PPnz5eJEyfKM888I1dccYU899xzMnz4cNmyZYtkZGTU+v5nn30mI0aMkPHjx8u8efPkf/7nf+QHP/iBtG3bVm688UYLR+Cjk6Uhfu9gdaaXAel4GBCP9XukbQ7guzlWpyukRaKzGrCusuh0lbCNspgo51WE96E7lUwP4vglmcqi22M13XWivj2cFYlJnZpM5dCGWPcVbUqmYwXgWjKt8gmWiCs6YsX2wDSrkqIj2oPwkQbdbeWx1xXfoQaXnazqdlv2ba2GjYdJwljVxbYfMPFyjPXt1QCxYOPhuUSZdPZDIvadkumByngri+EebrRZjuItn+JJPDx4Z3WC/Te/+Y3853/+p9x+++0iIjJz5kz5xz/+Ic8++6zMmDGj1vf/8Ic/SEZGhsycOVNERHJycqSoqEgef/zxkBPsFRUVUlFREfj/v//9bxEROXbsWO0vnywVqVD53y+IND7t/GBMwoqIzOgY+TuPXlT37x/c7S4ukerpvbtYpLGLzvvJcpEnv372Z5N8OlEpcsZh2JOV9tMbs2MtFdmx1nk8ddn+vsihL70NMkcqi6HKoUhsy2KinVeR6uU4Vmm2Va/5FdbkevfCy7UTD/kUq7KYkMdqWKfaLBMm5f+O9+qe7A7197zWqYlWJ9oKa9pPFLHbV0ymfnEilIlkCmsQZ9mpMjldfvp/gx6TykaV9TZsoqXXj7DrStY5/n5NRZ8Xyb7D+1yvIkmkfEq09PoZdvENi6Vpw6aOwp2oPCEj3hhhHOepslPSqFEjV2GLdxU7/n5dYlmOE+28ilQ/t165zWO/jtVteapy5UuhdwMVEblydujPV39vtau4TOthEfMybFImEqUuNs3jcDaUbJBes3qF/NxtmRDxpy5+7drXQk4k1fX3bJxXP8O6ud5PnTplpY7xK95Ea3eSqUwkwrGKVD9et22AiMigVwdF/E6ottK0TkyEazYeyoSNtjJUf6Rq/lhVw4ZP0UjfiJKTJ09KWlqavPrqq3LDDTcEfn/PPfdIcXGxFBYW1grTv39/6d69u/zud78L/O6NN96Q0aNHS1lZWZ0FberUqTJt2rToHAQAAAAAAAAAAAAAoN7YtWuXdOwYehGItRXsBw8elNOnT8v5559f7ffnn3++fPnll3WG+fLLL+v8fmVlpRw8eFAuuOCCWmEefPBBmTRpUuD/Z86ckcOHD0vr1q3r9VZaAAAAAAAAAAAAAABnVFWOHz8uF154YdjvWd0iXkRqTXKratiJ77q+X9fvqzRp0kSaNGlS7Xfnnnuuh5QCAAAAAAAAAAAAAOqrli1bRvxOgxiko05t2rSRc845p9Zq9f3799dapV6lffv2dX6/YcOG0rp166ilFQAAAAAAAAAAAAAAaxPsjRs3lh49eshbb71V7fdvvfWW9OvXr84wBQUFtb7/z3/+U3r27Fnn+9cBAAAAAAAAAAAAAPCLtQl2EZFJkybJ888/L7NmzZKtW7fKvffeKyUlJXLnnXeKyNn3p48ZMybw/TvvvFM+//xzmTRpkmzdulVmzZolL7zwgkyePNnWIQAAAAAAAAAAAAAAkoTVd7DffPPNcujQIfnZz34me/fulby8PFm8eLFkZmaKiMjevXulpKQk8P3OnTvL4sWL5d5775Wnn35aLrzwQvn9738vN954o61DAAAAAAAAAAAAAAAkiRRVVduJAAAAAAAAAAAAAAAg3lndIh4AAAAAAAAAAAAAgETBBDsAAAAAAAAAAAAAAA4wwQ4AAAAAAAAAAAAAgANMsAMAAAAAAAAAAAAA4AAT7ACAsP7xj3/YTgIAJJ3S0lKprKwUEZGjR49KYWGh7N2713Kqou/QoUPyzjvvyL59+2wnBQAQx44ePWo7CUnnyJEjtpOAJFZSUiKrVq2SVatWSUlJie3kwCfFxcWycOFC+fvf/y47duywnRwAAFxhgt0nlZWVsmHDBvn3v/8d8bsfffSRlXhr8uvmKNLf+fjjj2X//v0iIrJt2zaZPXu2rFu3zlNcL7zwgqdwImbH6ySszfNaUVEhCxculJkzZ8rTTz8tK1asiEm8NXnNYzfnNV6O1U2az5w5I++8847MmzdP5s2bJ++8846cOXPGVXxbtmyROXPmSHFxsaPve73utmzZUuvf7bffLlu3bpUtW7a4SnOwQ4cOuQ5jcr17idNtHtfkR53qJZ+iPdBlUre9+uqrgZ8PHjwo11xzjbRs2VIGDBhgNCjiJJ+81hV+XK81uT1HJmXRtBzblAiDtrGqJ+bMmSNt2rSRzp07y/LlyyUvL0/uu+8+yc/Pr3ZdxUqka86knhgzZkxgMn358uWSk5Mj9913n3Tt2lX+9re/RQzv1zXrps0pKSmRoUOHSnZ2tkyePFlOnDgR+KygoMB13CJ22kmRyGXSJH/9vAdwml4kFjf9cb/uAdyKRr/ALdttu5f6yQ2vdUW7du3kuuuuk0WLFrk+J7bKU7BY3Xt7zd+NGzdKjx49pHfv3rJ161a55pprpEOHDpKRkSGbNm3ylGYnbI2rxMO17pdEaCvd1Gsff/yx9OvXT/r06SM/+tGPZNKkSdKnTx/p16+fbN26NWxYr9e6aTm01X+KRt/Lq0htx6ZNmyQ/P1/69+8vN954ozzwwAPSs2dPGTVqlBw7diyqabNRLkzOjZ/1UyzuH/wK56ae8LPtAJB4nNZtUbkHUOiJEyf0jTfe0N/+9rf61FNP6fLlyyOGWbZsmbZp00bbtWunhYWF2qtXL7300ku1devWunLlyrBhU1JStGvXrvq73/1ODx065CqtXuOdOXNm4OcdO3boZZddpk2bNtWsrCzdtGlTxHiLi4s1OztbmzZtqiNHjtQDBw4EPuvevXvIcL/61a+0Xbt22qlTJ503b55mZGToqFGjtFOnTvrkk0+GjfPvf/97rX/t27cP/ByOyfF6DWvjvKqqLl++XDt16qT5+fnapEkTHTx4sObk5GivXr109+7dUYvXaz6ZnFdbx2qS5lWrVmlmZqb26dNHR48eraNGjdLevXtrZmamvvvuuyHDDRw4UL/88ktVVZ0/f7526NBBR48erVlZWfrf//3fYeM0ue5SUlI0Kyur2r+GDRtqVlaWdu7cOWzYcDp16hT2c5M89hqnSR6b1qle02wa75IlS7S4uFhVVVesWKFTp07VBQsWhA1jUrcFtw/jx4/XKVOm6N69e/WJJ57Q66+/3tXfChYpn7zWFV6vV1Xv7aSqWVk0CVtTaWmprl+/Xo8dO+bo+1u3btV9+/apquonn3yiL774ohYVFYUNY5JPNZ06dUrXr1+vR48ejfjdDz/80NXfrmKrnsjPz9edO3fqxo0btWXLlrp27VpVVd22bZt269bN07Goqh4+fNhTuEjXnEk9kZeXF/i5f//+unHjRlVV3blzZ8Qy4fWaNW1zhg8frk899ZQWFRXpmDFjtF+/foHr5utf/7qTw64lmu2k1+vOpE406Yv4WU/U/LuR7NmzR3/729/qPffco5MnT9ZZs2bpiRMnIoarqKjQM2fOBP6/ZMkSnTZtmi5cuNBR2o4ePaqzZ8/W6dOn6/Tp03X27Nl65MiRqMdbxW39X1FRoV988UWt33/00Udhw3ntj5vcA6h6z1+Ta0DVe3kybdu99PfCiVQ/qXovEyZ1RXZ2tj7++OOam5urF1xwgU6ZMkX/9a9/RUyraXkKtnnzZp09e7Zu2LAh4ndt3Hub5G///v114cKF+uKLL2pGRobOmTNHVVVff/11vfrqqyMebygXX3xx2M9tjKuYXus1Pf/8867DVHHaVzNtK73Wi+EcPHgw5Gcm9VqfPn3qrMNeffVV7dWrV8hwJte6STm01X8yCasa+7ajoKBACwsLVfVsvTJx4kStqKjQhx9+WMeMGRPx758+fVoLCwt17ty5OnfuXC0sLNTTp09HDGejXJicG5PyZOP+wda4iMk1u2jRIj158qSrME5E895D9Ww9XtVmHD58WF9//XX9+OOPw4YxPVY/246pU6d6Cuf2viWUSOfHa9/Wr/uzKl7zyW1YL+XJJJxJWfRat/l5DxAs6SfYvWZs7969tbi4WFesWKGtW7fWZcuWqarqmjVr9IorrggbZ15eni5YsEBHjBihzZo105tvvlnfeustR+n1Gm9wI/ad73xHn3rqKVVVXbBggQ4ePDhivFdddZW++eabevDgQX3kkUf00ksvDeRPuIHEyy67TA8fPqwlJSWalpamO3bsUFXVAwcOaG5ubtg4U1JStF+/fjpgwIDAv6ZNm+qAAQN04MCBYcOaHK/XsDbOa1V6qyqu1atX62233aaqqn/84x/1uuuui2q8Vdzkk+l5tXGsJmnOz88PTIwE++CDD6pNKtQU/FlBQYGWlJSo6tnGKj8/P2ycJtfd1KlTdfjw4bpz587A77KyssKGqVJXA1f1r23btmHDes1jkzhN8tikjjFJs0m8kydP1vz8fM3JydEZM2ZoXl6e3nfffdqjRw99+OGHQ4YzqduC24euXbtqZWVltf+HY5pPXuoKr9erqvd2UtWsLJqEvf/++wM/FxcX6wUXXKCXXHKJtm3bNjDYEYrXQQKTfLLxcKOteiI4bGZmZrXPIuWT10EN0/rUaz0RPNDes2fPap9FymOv16xJu65aOx8fffRR7dWrlx49ejRqeWySZq/XnUmdaNIXMaknwok00Dt//nzNyMjQa6+9Vlu3bq3f+c53dNiwYZqZmalbtmwJG7Zbt26Ba+33v/+95ufn6/333699+vTRn/3sZ2HDvv7669q+fXu9+eab9f7779f77rtPR48ere3bt9fXX389KvGa1P/Lly/XVq1aacuWLfXyyy/Xbdu2BT6LNHBqci/r9R7AJH9NrgGT8mTS9njt75nUTyZlwqSuCP7b7733no4fP15btGihV155pc6ePTtsOK/lyWTw38a9t0n+Bte3NevPSA/7bd68OeS/Cy64IGxYG+MqJte6rYUhJm2lSb0YTrh21qRey87O9vSZybVuUg5t9Z9MwtpoO2rWI8H3AZEexDGZdLZRLkzOjUl5snH/YHNcxOs126BBA23btq3ee++9ESdP3Yjmvcf8+fO1RYsWeu655+orr7yi+fn5OmzYMG3fvr2+9tprIcOZHKtJ2/H000/X+temTZvAz+GY3LeEE+78mPRtTe4LTfLJJKzX8uQ1nKpZWfRat5nU/+Ek/QS714wNbhQuuuiiap9FutkIvhB3796tjz76qHbp0kUzMzN12rRpYcN6jbfmJIeb9NZMs6rq3LlzNTs7W0tKSsJWLMGfZWRkhExTXV588UXt16+ffvDBB4HfOZ3oMzler2FtnNe60tijR4/Az+FuNkzj9ZpPJufV1rGapDncjUG4z7KzswOTkX379q32WaROtMl1p6q6fv16LSgo0GeffVZV1fHK9QYNGujAgQOrNXDBDV04XvPYJE6TPDapY0zSbBJvTk6OVlRU6OHDhzUtLS3Q4fvqq6/0sssuCxnOpG7LycnRLVu26ObNm2uVvWjmk9e6wuv1quq9naxKk9ey6Fddce211+obb7yhqqrvv/++9uvXL2xYr4MEJvlk4+FGW/VEjx499KOPPtJ3331X27Rpo++//76qqv7rX/+KOLjgdVDD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" }, "metadata": {}, "output_type": "display_data" @@ -174,22 +174,22 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:18:51.214742Z", - "start_time": "2023-11-06T00:18:50.736378Z" + "end_time": "2023-11-06T01:14:14.540031Z", + "start_time": "2023-11-06T01:14:14.088884Z" } }, "id": "9e215df3a350e3cf" }, { "cell_type": "code", - "execution_count": 255, + "execution_count": 85, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Number of clusters: 10\n", - "Silhouette score: 0.4218177237729999\n" + "Number of clusters: 7\n", + "Silhouette score: 0.42876627286716495\n" ] } ], @@ -211,8 +211,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:18:51.241741Z", - "start_time": "2023-11-06T00:18:51.217906Z" + "end_time": "2023-11-06T01:14:14.556841Z", + "start_time": "2023-11-06T01:14:14.545269Z" } }, "id": "2f52d83746e670d" @@ -229,7 +229,7 @@ }, { "cell_type": "code", - "execution_count": 256, + "execution_count": 86, "outputs": [], "source": [ "# Cluster the data using Gaussian Mixture Models\n", @@ -239,20 +239,20 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:18:54.543675Z", - "start_time": "2023-11-06T00:18:54.540819Z" + "end_time": "2023-11-06T01:14:15.329931Z", + "start_time": "2023-11-06T01:14:15.325838Z" } }, "id": "45b59d81ae2de84e" }, { "cell_type": "code", - "execution_count": 257, + "execution_count": 87, "outputs": [ { "data": { - "text/plain": " name gps list weights\n0 521 Commercial Street #525 [42.3688272, -71.0553792] A 0.016268\n1 Acorn St [42.3576234, -71.0688746] A 0.007206\n2 Arlington's Great Meadows [42.4299758, -71.2038948] A 0.000607\n3 Arthur Fiedler Statue [42.3565057, -71.0754527] A 0.004854\n4 BU Beach [42.3511927, -71.1060828] A 0.001925\n.. ... ... ... ...\n33 The Quiet Few [42.3670906, -71.0359889] D 0.004835\n34 The Tall Ship Boston [42.3649544, -71.0414523] D 0.006736\n35 Toasted Flats [42.3711266, -71.0371343] D 0.004775\n36 Vega Market [42.3891835, -71.033703] D 0.002828\n37 Winthrop High School [42.3803348, -70.9799864] D 0.001269\n\n[169 rows x 4 columns]", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namegpslistweights
0521 Commercial Street #525[42.3688272, -71.0553792]A0.016268
1Acorn St[42.3576234, -71.0688746]A0.007206
2Arlington's Great Meadows[42.4299758, -71.2038948]A0.000607
3Arthur Fiedler Statue[42.3565057, -71.0754527]A0.004854
4BU Beach[42.3511927, -71.1060828]A0.001925
...............
33The Quiet Few[42.3670906, -71.0359889]D0.004835
34The Tall Ship Boston[42.3649544, -71.0414523]D0.006736
35Toasted Flats[42.3711266, -71.0371343]D0.004775
36Vega Market[42.3891835, -71.033703]D0.002828
37Winthrop High School[42.3803348, -70.9799864]D0.001269
\n

169 rows × 4 columns

\n
" + "text/plain": " name gps list weights\n0 521 Commercial Street #525 [42.3688272, -71.0553792] A 0.018132\n1 Acorn St [42.3576234, -71.0688746] A 0.008032\n2 Arlington's Great Meadows [42.4299758, -71.2038948] A 0.000676\n3 Arthur Fiedler Statue [42.3565057, -71.0754527] A 0.005410\n4 BU Beach [42.3511927, -71.1060828] A 0.002145\n.. ... ... ... ...\n28 The Clam Box [42.2763168, -71.0092883] C 0.001136\n29 The Partisans [42.3478375, -71.0404428] C 0.005315\n30 Union Oyster House [42.361288, -71.056908] C 0.037200\n31 Victoria's Diner [42.3270498, -71.0667744] C 0.003055\n32 Wollaston Beach [42.2806539, -71.0119933] C 0.001198\n\n[131 rows x 4 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namegpslistweights
0521 Commercial Street #525[42.3688272, -71.0553792]A0.018132
1Acorn St[42.3576234, -71.0688746]A0.008032
2Arlington's Great Meadows[42.4299758, -71.2038948]A0.000676
3Arthur Fiedler Statue[42.3565057, -71.0754527]A0.005410
4BU Beach[42.3511927, -71.1060828]A0.002145
...............
28The Clam Box[42.2763168, -71.0092883]C0.001136
29The Partisans[42.3478375, -71.0404428]C0.005315
30Union Oyster House[42.361288, -71.056908]C0.037200
31Victoria's Diner[42.3270498, -71.0667744]C0.003055
32Wollaston Beach[42.2806539, -71.0119933]C0.001198
\n

131 rows × 4 columns

\n
" }, "metadata": {}, "output_type": "display_data" @@ -278,15 +278,15 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:18:54.970160Z", - "start_time": "2023-11-06T00:18:54.956075Z" + "end_time": "2023-11-06T01:14:15.942150Z", + "start_time": "2023-11-06T01:14:15.938980Z" } }, "id": "2f2975484d00129c" }, { "cell_type": "code", - "execution_count": 258, + "execution_count": 88, "outputs": [ { "name": "stderr", @@ -305,15 +305,15 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:18:56.312805Z", - "start_time": "2023-11-06T00:18:56.299246Z" + "end_time": "2023-11-06T01:14:16.878902Z", + "start_time": "2023-11-06T01:14:16.865126Z" } }, "id": "db1ef4b14a1da5f5" }, { "cell_type": "code", - "execution_count": 259, + "execution_count": 89, "outputs": [], "source": [ "# Add the cluster labels to the dataframe\n", @@ -322,20 +322,20 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:18:58.475575Z", - "start_time": "2023-11-06T00:18:58.468594Z" + "end_time": "2023-11-06T01:14:17.887765Z", + "start_time": "2023-11-06T01:14:17.880353Z" } }, "id": "99891fae96a2fff7" }, { "cell_type": "code", - "execution_count": 260, + "execution_count": 90, "outputs": [ { "data": { - "text/plain": " name gps list weights \\\n0 521 Commercial Street #525 [42.3688272, -71.0553792] A 0.016268 \n1 Acorn St [42.3576234, -71.0688746] A 0.007206 \n2 Arlington's Great Meadows [42.4299758, -71.2038948] A 0.000607 \n3 Arthur Fiedler Statue [42.3565057, -71.0754527] A 0.004854 \n4 BU Beach [42.3511927, -71.1060828] A 0.001925 \n.. ... ... ... ... \n33 The Quiet Few [42.3670906, -71.0359889] D 0.004835 \n34 The Tall Ship Boston [42.3649544, -71.0414523] D 0.006736 \n35 Toasted Flats [42.3711266, -71.0371343] D 0.004775 \n36 Vega Market [42.3891835, -71.033703] D 0.002828 \n37 Winthrop High School [42.3803348, -70.9799864] D 0.001269 \n\n cluster \n0 0 \n1 0 \n2 1 \n3 0 \n4 1 \n.. ... \n33 0 \n34 0 \n35 0 \n36 0 \n37 0 \n\n[169 rows x 5 columns]", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namegpslistweightscluster
0521 Commercial Street #525[42.3688272, -71.0553792]A0.0162680
1Acorn St[42.3576234, -71.0688746]A0.0072060
2Arlington's Great Meadows[42.4299758, -71.2038948]A0.0006071
3Arthur Fiedler Statue[42.3565057, -71.0754527]A0.0048540
4BU Beach[42.3511927, -71.1060828]A0.0019251
..................
33The Quiet Few[42.3670906, -71.0359889]D0.0048350
34The Tall Ship Boston[42.3649544, -71.0414523]D0.0067360
35Toasted Flats[42.3711266, -71.0371343]D0.0047750
36Vega Market[42.3891835, -71.033703]D0.0028280
37Winthrop High School[42.3803348, -70.9799864]D0.0012690
\n

169 rows × 5 columns

\n
" + "text/plain": " name gps list weights \\\n0 521 Commercial Street #525 [42.3688272, -71.0553792] A 0.018132 \n1 Acorn St [42.3576234, -71.0688746] A 0.008032 \n2 Arlington's Great Meadows [42.4299758, -71.2038948] A 0.000676 \n3 Arthur Fiedler Statue [42.3565057, -71.0754527] A 0.005410 \n4 BU Beach [42.3511927, -71.1060828] A 0.002145 \n.. ... ... ... ... \n28 The Clam Box [42.2763168, -71.0092883] C 0.001136 \n29 The Partisans [42.3478375, -71.0404428] C 0.005315 \n30 Union Oyster House [42.361288, -71.056908] C 0.037200 \n31 Victoria's Diner [42.3270498, -71.0667744] C 0.003055 \n32 Wollaston Beach [42.2806539, -71.0119933] C 0.001198 \n\n cluster \n0 1 \n1 1 \n2 0 \n3 1 \n4 0 \n.. ... \n28 1 \n29 1 \n30 1 \n31 1 \n32 1 \n\n[131 rows x 5 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
namegpslistweightscluster
0521 Commercial Street #525[42.3688272, -71.0553792]A0.0181321
1Acorn St[42.3576234, -71.0688746]A0.0080321
2Arlington's Great Meadows[42.4299758, -71.2038948]A0.0006760
3Arthur Fiedler Statue[42.3565057, -71.0754527]A0.0054101
4BU Beach[42.3511927, -71.1060828]A0.0021450
..................
28The Clam Box[42.2763168, -71.0092883]C0.0011361
29The Partisans[42.3478375, -71.0404428]C0.0053151
30Union Oyster House[42.361288, -71.056908]C0.0372001
31Victoria's Diner[42.3270498, -71.0667744]C0.0030551
32Wollaston Beach[42.2806539, -71.0119933]C0.0011981
\n

131 rows × 5 columns

\n
" }, "metadata": {}, "output_type": "display_data" @@ -348,8 +348,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:18:58.847605Z", - "start_time": "2023-11-06T00:18:58.843691Z" + "end_time": "2023-11-06T01:14:19.060647Z", + "start_time": "2023-11-06T01:14:19.051699Z" } }, "id": "49fc751352022ad1" @@ -366,7 +366,7 @@ }, { "cell_type": "code", - "execution_count": 261, + "execution_count": 91, "outputs": [], "source": [ "# Create a map in Boston\n", @@ -375,15 +375,15 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:19:00.620249Z", - "start_time": "2023-11-06T00:19:00.612951Z" + "end_time": "2023-11-06T01:14:20.184965Z", + "start_time": "2023-11-06T01:14:20.177057Z" } }, "id": "48d76bd40c44cc61" }, { "cell_type": "code", - "execution_count": 262, + "execution_count": 92, "outputs": [], "source": [ "# Plot the centroids on the map\n", @@ -418,22 +418,22 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:19:01.125434Z", - "start_time": "2023-11-06T00:19:01.109369Z" + "end_time": "2023-11-06T01:14:20.573947Z", + "start_time": "2023-11-06T01:14:20.558985Z" } }, "id": "3c8a7d2b34d4f22d" }, { "cell_type": "code", - "execution_count": 263, + "execution_count": 93, "outputs": [ { "data": { - "text/plain": "", - "text/html": "
Make this Notebook Trusted to load map: File -> Trust Notebook
" + "text/plain": "", + "text/html": "
Make this Notebook Trusted to load map: File -> Trust Notebook
" }, - "execution_count": 263, + "execution_count": 93, "metadata": {}, "output_type": "execute_result" } @@ -445,21 +445,21 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:19:02.155307Z", - "start_time": "2023-11-06T00:19:02.145235Z" + "end_time": "2023-11-06T01:14:23.580878Z", + "start_time": "2023-11-06T01:14:23.507152Z" } }, "id": "d6941d1f0a203ee7" }, { "cell_type": "code", - "execution_count": 264, + "execution_count": 94, "outputs": [ { "data": { - "text/plain": "0 106\n1 63\nName: cluster, dtype: int64" + "text/plain": "1 74\n0 57\nName: cluster, dtype: int64" }, - "execution_count": 264, + "execution_count": 94, "metadata": {}, "output_type": "execute_result" } @@ -471,15 +471,15 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:19:05.516139Z", - "start_time": "2023-11-06T00:19:05.510902Z" + "end_time": "2023-11-06T01:14:28.465028Z", + "start_time": "2023-11-06T01:14:28.461813Z" } }, "id": "479ba8f36cdafbf8" }, { "cell_type": "code", - "execution_count": 244, + "execution_count": 73, "outputs": [], "source": [ "# create a method to move n number of locations from the largest cluster to the smallest cluster, taking distance into account\n", @@ -516,21 +516,21 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-05T23:51:40.761645Z", - "start_time": "2023-11-05T23:51:40.752184Z" + "end_time": "2023-11-06T01:08:43.493687Z", + "start_time": "2023-11-06T01:08:43.480182Z" } }, "id": "4b79215a12bf36e2" }, { "cell_type": "code", - "execution_count": 245, + "execution_count": 74, "outputs": [ { "data": { "text/plain": "0 97\n1 72\nName: cluster, dtype: int64" }, - "execution_count": 245, + "execution_count": 74, "metadata": {}, "output_type": "execute_result" } @@ -545,46 +545,21 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-05T23:51:41.510095Z", - "start_time": "2023-11-05T23:51:41.434643Z" + "end_time": "2023-11-06T01:08:43.649954Z", + "start_time": "2023-11-06T01:08:43.542655Z" } }, "id": "176d5f92130c67b8" }, { "cell_type": "code", - "execution_count": 267, - "outputs": [ - { - "data": { - "text/plain": "0 106\n1 63\nName: cluster, dtype: int64" - }, - "execution_count": 267, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "TotalList['cluster'].value_counts()" - ], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2023-11-06T00:20:43.543111Z", - "start_time": "2023-11-06T00:20:43.529364Z" - } - }, - "id": "1b8e5c1793fb2feb" - }, - { - "cell_type": "code", - "execution_count": 265, + "execution_count": 75, "outputs": [ { "data": { "text/plain": "'-71.0553792,42.3688272;-71.0688746,42.3576234;-71.2038948,42.4299758;-71.0754527,42.3565057;-71.1060828,42.3511927;-71.0969274,42.3446263;-71.130887,42.35304;-71.0620802,42.3579151;-71.1459593,42.3501823;-71.0586014,42.357357;-71.0572023,42.3587627;-71.0556268,42.36521;-71.1460435,42.3495825;-71.1217152,42.3426377;-71.0720926,42.3489004;-71.067859,42.3500079;-71.0632036,42.3556154;-71.1258765,42.331864;-71.1095021,42.3364675;-71.133103,42.3890049;-71.0620134,42.3248471;-71.0851891,42.3500031;-71.1123834,42.3360385;-71.066414,42.354296;-71.2273649,42.3145041;-71.0834061,42.341987;-71.0992038,42.3306454;-71.0990577,42.3381442;-71.0569649,42.3604952;-71.0949218,42.3419564;-71.0942861,42.3413301;-71.0498714,42.3256817;-71.0908104,42.329969;-71.0616035,42.3537983;-71.0359433,42.3485465;-71.0913583,42.3490205;-71.1000217,42.3323776;-71.1241295,42.3518397;-71.1618052,42.3245965;-71.0638101,42.3587772;-71.1625829,42.340795;-71.167854,42.4107892;-71.155555,42.3317473;-71.1227278,42.3965778;-71.3598149,42.3140229;-71.1126695,42.3836229;-71.0555003,42.3640137;-71.119149,42.3884;-71.0712561,42.3407613;-71.0561781,42.3668968;-71.0664019,42.3554589;-71.059228,42.359349;-71.0668408,42.3524116;-71.0872846,42.2961434;-71.062146,42.366198;-71.1427371,42.3433772;-71.1438455,42.3569102;-71.0651214,42.3553972;-71.0596124,42.3509517;-71.0359354,42.3478381;-71.1313443,42.3525708;-71.1284677,42.3631904;-71.061757,42.3691906;-71.119301,42.388547;-71.097883,42.381008;-71.1107166,42.3741209;-71.0609962,42.3803747;-71.0516339,42.3609921;-71.1194344,42.3754427;-71.0809932,42.3675275;-71.0545357,42.3597994;-71.1013044,42.3627462;-71.1108423,42.3838224;-71.1026937,42.3820702;-71.1189467,42.373465;-71.1208817,42.3732344;-71.0342146,42.316274;-71.0756902,42.3695046;-71.0678704,42.3701829;-71.0968274,42.3799095;-71.0656594,42.3718401;-71.094048,42.339381;-71.1854722,42.3621177;-71.1146697,42.3782386;-71.0935443,42.3817274;-71.0611749,42.3551807;-71.0906355,42.3616095;-71.1161887,42.3766442;-71.0962734,42.3627993;-71.1155576,42.3784629;-71.0949101,42.3797674;-71.1087411,42.3640287;-71.0554239,42.3739796;-71.09476,42.37736;-71.1014951,42.3614115;-71.1024769,42.3822934;-71.1011111,42.3636597;-71.0631664,42.3741694;-71.056823,42.361531;-71.0632852,42.2857047;-71.0637877,42.2845163;-71.0496839,42.3519736;-71.0454645,42.3162356;-71.0336324,42.3441918;-71.0487437,42.3508756;-71.0512911,42.3521821;-71.0013637,42.2075316;-71.0607764,42.3763541;-71.0374911,42.316031;-71.0125206,42.3378699;-71.0672898,42.3523158;-71.02832,42.2576602;-71.0502126,42.3516479;-71.0331956,42.3639107;-71.0432778,42.3528151;-71.0035279,42.2392354;-71.0470633,42.3537343;-71.0352443,42.3291218;-71.0898829,42.3463992;-71.0240951,42.2743442;-71.0234949,42.3358743;-70.985881,42.420226;-71.0005483,42.2454086;-71.0096371,42.3367603;-71.0447796,42.3509709;-71.0983169,42.3319001;-71.0092883,42.2763168;-71.0404428,42.3478375;-71.056908,42.361288;-71.0667744,42.3270498;-71.0119933,42.2806539;-71.0618764,42.4074484;-71.0612182,42.3986053;-71.0392667,42.3855456;-71.0515875,42.4025721;-70.9903023,42.3917606;-71.055873,42.4206339;-71.0433886,42.4222989;-71.06088,42.3761612;-71.0412802,42.3936888;-71.0714924,42.3968978;-71.0282154,42.3778389;-71.0350852,42.3809511;-71.0331398,42.3734483;-70.9693867,42.3895122;-71.0945712,42.3253252;-71.0280157,42.398422;-71.0155516,42.4114215;-70.993656,42.4110462;-71.0355621,42.3976519;-71.0056995,42.390191;-71.0589219,42.403759;-71.037937,42.3698284;-71.0386285,42.3903823;-71.0316196,42.4122481;-71.0328839,42.3861321;-71.0270609,42.4213082;-71.0366491,42.391236;-71.0361399,42.3649623;-71.0116946,42.3827415;-70.9973058,42.4183123;-71.1122037,42.4008442;-70.997123,42.390501;-71.0506461,42.41826;-71.0359889,42.3670906;-71.0414523,42.3649544;-71.0371343,42.3711266;-71.033703,42.3891835;-70.9799864,42.3803348;'" }, - "execution_count": 265, + "execution_count": 75, "metadata": {}, "output_type": "execute_result" } @@ -595,28 +570,28 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:19:09.317992Z", - "start_time": "2023-11-06T00:19:09.308541Z" + "end_time": "2023-11-06T01:08:43.650401Z", + "start_time": "2023-11-06T01:08:43.622162Z" } }, "id": "2d83e5db093608d2" }, { "cell_type": "code", - "execution_count": 268, + "execution_count": 95, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "106\n" + "57\n" ] }, { "data": { - "text/plain": "'-71.0553792,42.3688272;-71.0688746,42.3576234;-71.0754527,42.3565057;-71.0620802,42.3579151;-71.0586014,42.357357;-71.0572023,42.3587627;-71.0556268,42.36521;-71.0720926,42.3489004;-71.067859,42.3500079;-71.0632036,42.3556154;-71.0620134,42.3248471;-71.066414,42.354296;-71.0569649,42.3604952;-71.0498714,42.3256817;-71.0616035,42.3537983;-71.0359433,42.3485465;-71.0638101,42.3587772;-71.0555003,42.3640137;-71.0712561,42.3407613;-71.0561781,42.3668968;-71.0664019,42.3554589;-71.059228,42.359349;-71.0668408,42.3524116;-71.062146,42.366198;-71.0651214,42.3553972;-71.0596124,42.3509517;-71.0359354,42.3478381;-71.061757,42.3691906;-71.0609962,42.3803747;-71.0516339,42.3609921;-71.0809932,42.3675275;-71.0545357,42.3597994;-71.0342146,42.316274;-71.0756902,42.3695046;-71.0678704,42.3701829;-71.0656594,42.3718401;-71.0611749,42.3551807;-71.0554239,42.3739796;-71.0631664,42.3741694;-71.056823,42.361531;-71.0632852,42.2857047;-71.0637877,42.2845163;-71.0496839,42.3519736;-71.0454645,42.3162356;-71.0336324,42.3441918;-71.0487437,42.3508756;-71.0512911,42.3521821;-71.0013637,42.2075316;-71.0607764,42.3763541;-71.0374911,42.316031;-71.0125206,42.3378699;-71.0672898,42.3523158;-71.02832,42.2576602;-71.0502126,42.3516479;-71.0331956,42.3639107;-71.0432778,42.3528151;-71.0035279,42.2392354;-71.0470633,42.3537343;-71.0352443,42.3291218;-71.0240951,42.2743442;-71.0234949,42.3358743;-70.985881,42.420226;-71.0005483,42.2454086;-71.0096371,42.3367603;-71.0447796,42.3509709;-71.0092883,42.2763168;-71.0404428,42.3478375;-71.056908,42.361288;-71.0667744,42.3270498;-71.0119933,42.2806539;-71.0618764,42.4074484;-71.0612182,42.3986053;-71.0392667,42.3855456;-71.0515875,42.4025721;-70.9903023,42.3917606;-71.055873,42.4206339;-71.0433886,42.4222989;-71.06088,42.3761612;-71.0412802,42.3936888;-71.0714924,42.3968978;-71.0282154,42.3778389;-71.0350852,42.3809511;-71.0331398,42.3734483;-70.9693867,42.3895122;-71.0280157,42.398422;-71.0155516,42.4114215;-70.993656,42.4110462;-71.0355621,42.3976519;-71.0056995,42.390191;-71.0589219,42.403759;-71.037937,42.3698284;-71.0386285,42.3903823;-71.0316196,42.4122481;-71.0328839,42.3861321;-71.0270609,42.4213082;-71.0366491,42.391236;-71.0361399,42.3649623;-71.0116946,42.3827415;-70.9973058,42.4183123;-70.997123,42.390501;-71.0506461,42.41826;-71.0359889,42.3670906;-71.0414523,42.3649544;-71.0371343,42.3711266;-71.033703,42.3891835;-70.9799864,42.3803348;'" + "text/plain": "'-71.2038948,42.4299758;-71.1060828,42.3511927;-71.0969274,42.3446263;-71.130887,42.35304;-71.1459593,42.3501823;-71.1460435,42.3495825;-71.1217152,42.3426377;-71.1258765,42.331864;-71.1095021,42.3364675;-71.133103,42.3890049;-71.1123834,42.3360385;-71.2273649,42.3145041;-71.0992038,42.3306454;-71.0990577,42.3381442;-71.0949218,42.3419564;-71.0942861,42.3413301;-71.0913583,42.3490205;-71.1000217,42.3323776;-71.1241295,42.3518397;-71.1618052,42.3245965;-71.1625829,42.340795;-71.167854,42.4107892;-71.155555,42.3317473;-71.1227278,42.3965778;-71.3598149,42.3140229;-71.1126695,42.3836229;-71.119149,42.3884;-71.1427371,42.3433772;-71.1438455,42.3569102;-71.1313443,42.3525708;-71.1284677,42.3631904;-71.119301,42.388547;-71.097883,42.381008;-71.1107166,42.3741209;-71.1194344,42.3754427;-71.1013044,42.3627462;-71.1108423,42.3838224;-71.1026937,42.3820702;-71.1189467,42.373465;-71.1208817,42.3732344;-71.0968274,42.3799095;-71.094048,42.339381;-71.1854722,42.3621177;-71.1146697,42.3782386;-71.0935443,42.3817274;-71.0906355,42.3616095;-71.1161887,42.3766442;-71.0962734,42.3627993;-71.1155576,42.3784629;-71.0949101,42.3797674;-71.1087411,42.3640287;-71.09476,42.37736;-71.1014951,42.3614115;-71.1024769,42.3822934;-71.1011111,42.3636597;-71.0898829,42.3463992;-71.0983169,42.3319001;'" }, - "execution_count": 268, + "execution_count": 95, "metadata": {}, "output_type": "execute_result" } @@ -629,28 +604,28 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:25:20.703565Z", - "start_time": "2023-11-06T00:25:20.690483Z" + "end_time": "2023-11-06T01:14:35.829990Z", + "start_time": "2023-11-06T01:14:35.821619Z" } }, "id": "89297f77828e8ed8" }, { "cell_type": "code", - "execution_count": 269, + "execution_count": 96, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "63\n" + "74\n" ] }, { "data": { - "text/plain": "'-71.2038948,42.4299758;-71.1060828,42.3511927;-71.0969274,42.3446263;-71.130887,42.35304;-71.1459593,42.3501823;-71.1460435,42.3495825;-71.1217152,42.3426377;-71.1258765,42.331864;-71.1095021,42.3364675;-71.133103,42.3890049;-71.0851891,42.3500031;-71.1123834,42.3360385;-71.2273649,42.3145041;-71.0834061,42.341987;-71.0992038,42.3306454;-71.0990577,42.3381442;-71.0949218,42.3419564;-71.0942861,42.3413301;-71.0908104,42.329969;-71.0913583,42.3490205;-71.1000217,42.3323776;-71.1241295,42.3518397;-71.1618052,42.3245965;-71.1625829,42.340795;-71.167854,42.4107892;-71.155555,42.3317473;-71.1227278,42.3965778;-71.3598149,42.3140229;-71.1126695,42.3836229;-71.119149,42.3884;-71.0872846,42.2961434;-71.1427371,42.3433772;-71.1438455,42.3569102;-71.1313443,42.3525708;-71.1284677,42.3631904;-71.119301,42.388547;-71.097883,42.381008;-71.1107166,42.3741209;-71.1194344,42.3754427;-71.1013044,42.3627462;-71.1108423,42.3838224;-71.1026937,42.3820702;-71.1189467,42.373465;-71.1208817,42.3732344;-71.0968274,42.3799095;-71.094048,42.339381;-71.1854722,42.3621177;-71.1146697,42.3782386;-71.0935443,42.3817274;-71.0906355,42.3616095;-71.1161887,42.3766442;-71.0962734,42.3627993;-71.1155576,42.3784629;-71.0949101,42.3797674;-71.1087411,42.3640287;-71.09476,42.37736;-71.1014951,42.3614115;-71.1024769,42.3822934;-71.1011111,42.3636597;-71.0898829,42.3463992;-71.0983169,42.3319001;-71.0945712,42.3253252;-71.1122037,42.4008442;'" + "text/plain": "'-71.0553792,42.3688272;-71.0688746,42.3576234;-71.0754527,42.3565057;-71.0620802,42.3579151;-71.0586014,42.357357;-71.0572023,42.3587627;-71.0556268,42.36521;-71.0720926,42.3489004;-71.067859,42.3500079;-71.0632036,42.3556154;-71.0620134,42.3248471;-71.0851891,42.3500031;-71.066414,42.354296;-71.0834061,42.341987;-71.0569649,42.3604952;-71.0498714,42.3256817;-71.0908104,42.329969;-71.0616035,42.3537983;-71.0359433,42.3485465;-71.0638101,42.3587772;-71.0555003,42.3640137;-71.0712561,42.3407613;-71.0561781,42.3668968;-71.0664019,42.3554589;-71.059228,42.359349;-71.0668408,42.3524116;-71.0872846,42.2961434;-71.062146,42.366198;-71.0651214,42.3553972;-71.0596124,42.3509517;-71.0359354,42.3478381;-71.061757,42.3691906;-71.0609962,42.3803747;-71.0516339,42.3609921;-71.0809932,42.3675275;-71.0545357,42.3597994;-71.0342146,42.316274;-71.0756902,42.3695046;-71.0678704,42.3701829;-71.0656594,42.3718401;-71.0611749,42.3551807;-71.0554239,42.3739796;-71.0631664,42.3741694;-71.056823,42.361531;-71.0632852,42.2857047;-71.0637877,42.2845163;-71.0496839,42.3519736;-71.0454645,42.3162356;-71.0336324,42.3441918;-71.0487437,42.3508756;-71.0512911,42.3521821;-71.0013637,42.2075316;-71.0607764,42.3763541;-71.0374911,42.316031;-71.0125206,42.3378699;-71.0672898,42.3523158;-71.02832,42.2576602;-71.0502126,42.3516479;-71.0331956,42.3639107;-71.0432778,42.3528151;-71.0035279,42.2392354;-71.0470633,42.3537343;-71.0352443,42.3291218;-71.0240951,42.2743442;-71.0234949,42.3358743;-70.985881,42.420226;-71.0005483,42.2454086;-71.0096371,42.3367603;-71.0447796,42.3509709;-71.0092883,42.2763168;-71.0404428,42.3478375;-71.056908,42.361288;-71.0667744,42.3270498;-71.0119933,42.2806539;'" }, - "execution_count": 269, + "execution_count": 96, "metadata": {}, "output_type": "execute_result" } @@ -662,19 +637,23 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:25:30.097229Z", - "start_time": "2023-11-06T00:25:30.070409Z" + "end_time": "2023-11-06T01:14:36.909798Z", + "start_time": "2023-11-06T01:14:36.904157Z" } }, "id": "6ff82e29a0366d9e" }, { "cell_type": "code", - "execution_count": null, + "execution_count": 77, "outputs": [], "source": [], "metadata": { - "collapsed": false + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T01:08:43.651470Z", + "start_time": "2023-11-06T01:08:43.640872Z" + } }, "id": "7949bddd34b6731" } diff --git a/List E.csv b/List E.csv deleted file mode 100644 index 4424e36..0000000 --- a/List E.csv +++ /dev/null @@ -1,3 +0,0 @@ -Title,Note,URL,Comment -Somerville Museum,,https://www.google.com/maps/place/Somerville+Museum/data=!4m2!3m1!1s0x89e377319800f8e5:0xa135b53119b8c58a, -Make Way for Ducklings,,https://www.google.com/maps/place/Make+Way+for+Ducklings/data=!4m2!3m1!1s0x89e3709e47f660b1:0x7a756ec808941b41, diff --git a/ZestySalesman.ipynb b/ZestySalesman.ipynb index fb03d13..7e74f46 100644 --- a/ZestySalesman.ipynb +++ b/ZestySalesman.ipynb @@ -2,13 +2,13 @@ "cells": [ { "cell_type": "code", - "execution_count": 62, + "execution_count": 10, "id": "initial_id", "metadata": { "collapsed": true, "ExecuteTime": { - "end_time": "2023-11-06T00:26:14.565659Z", - "start_time": "2023-11-06T00:26:14.551906Z" + "end_time": "2023-11-06T01:23:16.767323Z", + "start_time": "2023-11-06T01:23:16.761053Z" } }, "outputs": [], @@ -16,107 +16,104 @@ "import pandas as pd\n", "import numpy as np\n", "import requests\n", - "import folium" + "import folium\n", + "import utils" ] }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 11, "outputs": [], "source": [ "# Create a JSON request for the API\n", "# This is the data we want to get from the API\n", "northeastern_coordinate = \"-71.09033,42.33976;\"\n", - "coordinate_string = '-71.2038948,42.4299758;-71.1060828,42.3511927;-71.0969274,42.3446263;-71.130887,42.35304;-71.1459593,42.3501823;-71.1460435,42.3495825;-71.1217152,42.3426377;-71.1258765,42.331864;-71.1095021,42.3364675;-71.133103,42.3890049;-71.0851891,42.3500031;-71.1123834,42.3360385;-71.2273649,42.3145041;-71.0834061,42.341987;-71.0992038,42.3306454;-71.0990577,42.3381442;-71.0949218,42.3419564;-71.0942861,42.3413301;-71.0908104,42.329969;-71.0913583,42.3490205;-71.1000217,42.3323776;-71.1241295,42.3518397;-71.1618052,42.3245965;-71.1625829,42.340795;-71.167854,42.4107892;-71.155555,42.3317473;-71.1227278,42.3965778;-71.3598149,42.3140229;-71.1126695,42.3836229;-71.119149,42.3884;-71.0872846,42.2961434;-71.1427371,42.3433772;-71.1438455,42.3569102;-71.1313443,42.3525708;-71.1284677,42.3631904;-71.119301,42.388547;-71.097883,42.381008;-71.1107166,42.3741209;-71.1194344,42.3754427;-71.1013044,42.3627462;-71.1108423,42.3838224;-71.1026937,42.3820702;-71.1189467,42.373465;-71.1208817,42.3732344;-71.0968274,42.3799095;-71.094048,42.339381;-71.1854722,42.3621177;-71.1146697,42.3782386;-71.0935443,42.3817274;-71.0906355,42.3616095;-71.1161887,42.3766442;-71.0962734,42.3627993;-71.1155576,42.3784629;-71.0949101,42.3797674;-71.1087411,42.3640287;-71.09476,42.37736;-71.1014951,42.3614115;-71.1024769,42.3822934;-71.1011111,42.3636597;-71.0898829,42.3463992;-71.0983169,42.3319001;-71.0945712,42.3253252;-71.1122037,42.4008442'\n", - "coordinates = requests.get('http://acetyl.net:5000/trip/v1/bike/' + northeastern_coordinate + coordinate_string)\n", - "\n", - "coordinates = coordinates.json()" + "route_1 = '-71.2038948,42.4299758;-71.1060828,42.3511927;-71.0969274,42.3446263;-71.130887,42.35304;-71.1459593,42.3501823;-71.1460435,42.3495825;-71.1217152,42.3426377;-71.1258765,42.331864;-71.1095021,42.3364675;-71.133103,42.3890049;-71.1123834,42.3360385;-71.2273649,42.3145041;-71.0992038,42.3306454;-71.0990577,42.3381442;-71.0949218,42.3419564;-71.0942861,42.3413301;-71.0913583,42.3490205;-71.1000217,42.3323776;-71.1241295,42.3518397;-71.1618052,42.3245965;-71.1625829,42.340795;-71.167854,42.4107892;-71.155555,42.3317473;-71.1227278,42.3965778;-71.1126695,42.3836229;-71.119149,42.3884;-71.1427371,42.3433772;-71.1438455,42.3569102;-71.1313443,42.3525708;-71.1284677,42.3631904;-71.119301,42.388547;-71.097883,42.381008;-71.1107166,42.3741209;-71.1194344,42.3754427;-71.1013044,42.3627462;-71.1108423,42.3838224;-71.1026937,42.3820702;-71.1189467,42.373465;-71.1208817,42.3732344;-71.0968274,42.3799095;-71.094048,42.339381;-71.1854722,42.3621177;-71.1146697,42.3782386;-71.0935443,42.3817274;-71.0906355,42.3616095;-71.1161887,42.3766442;-71.0962734,42.3627993;-71.1155576,42.3784629;-71.0949101,42.3797674;-71.1087411,42.3640287;-71.09476,42.37736;-71.1014951,42.3614115;-71.1024769,42.3822934;-71.1011111,42.3636597;-71.0898829,42.3463992;-71.0983169,42.3319001'\n", + "route_2 = '-71.0553792,42.3688272;-71.0688746,42.3576234;-71.0754527,42.3565057;-71.0620802,42.3579151;-71.0586014,42.357357;-71.0572023,42.3587627;-71.0556268,42.36521;-71.0720926,42.3489004;-71.067859,42.3500079;-71.0632036,42.3556154;-71.0620134,42.3248471;-71.0851891,42.3500031;-71.066414,42.354296;-71.0834061,42.341987;-71.0569649,42.3604952;-71.0498714,42.3256817;-71.0908104,42.329969;-71.0616035,42.3537983;-71.0359433,42.3485465;-71.0638101,42.3587772;-71.0555003,42.3640137;-71.0712561,42.3407613;-71.0561781,42.3668968;-71.0664019,42.3554589;-71.059228,42.359349;-71.0668408,42.3524116;-71.0872846,42.2961434;-71.062146,42.366198;-71.0651214,42.3553972;-71.0596124,42.3509517;-71.0359354,42.3478381;-71.061757,42.3691906;-71.0609962,42.3803747;-71.0516339,42.3609921;-71.0809932,42.3675275;-71.0545357,42.3597994;-71.0342146,42.316274;-71.0756902,42.3695046;-71.0678704,42.3701829;-71.0656594,42.3718401;-71.0611749,42.3551807;-71.0554239,42.3739796;-71.0631664,42.3741694;-71.056823,42.361531;-71.0632852,42.2857047;-71.0637877,42.2845163;-71.0496839,42.3519736;-71.0454645,42.3162356;-71.0336324,42.3441918;-71.0487437,42.3508756;-71.0512911,42.3521821;-71.0013637,42.2075316;-71.0607764,42.3763541;-71.0374911,42.316031;-71.0125206,42.3378699;-71.0672898,42.3523158;-71.02832,42.2576602;-71.0502126,42.3516479;-71.0331956,42.3639107;-71.0432778,42.3528151;-71.0035279,42.2392354;-71.0470633,42.3537343;-71.0352443,42.3291218;-71.0240951,42.2743442;-71.0234949,42.3358743;-70.985881,42.420226;-71.0005483,42.2454086;-71.0096371,42.3367603;-71.0447796,42.3509709;-71.0092883,42.2763168;-71.0404428,42.3478375;-71.056908,42.361288;-71.0667744,42.3270498;-71.0119933,42.2806539'" ], "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:26:15.268775Z", - "start_time": "2023-11-06T00:26:14.558083Z" + "end_time": "2023-11-06T01:23:16.774149Z", + "start_time": "2023-11-06T01:23:16.765417Z" } }, "id": "aa618161182b5b07" }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 12, "outputs": [], "source": [ "# Create a dataframe from the JSON\n", - "df = pd.DataFrame(coordinates['waypoints'])" + "df1 = utils.create_json_df(northeastern_coordinate + route_1)\n", + "df2 = utils.create_json_df(northeastern_coordinate + route_2)" ], "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:26:15.278022Z", - "start_time": "2023-11-06T00:26:15.269158Z" + "end_time": "2023-11-06T01:23:18.694403Z", + "start_time": "2023-11-06T01:23:16.768656Z" } }, "id": "32c485788eedd94" }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 13, "outputs": [], "source": [ - "# Separate the location column into lon and lat columns\n", - "df['lat'] = df['location'].apply(lambda x: x[0])\n", - "df['lon'] = df['location'].apply(lambda x: x[1])\n", - "\n", - "df['waypoint_index'] = df['waypoint_index'].astype(int)\n", + "# Add columns for the route number\n", + "df1['route'] = 1\n", + "df2['route'] = 2\n", "\n", - "# Map out the waypoints in order of the waypoint index\n", - "df = df.sort_values(by=['waypoint_index'])" + "# Concatenate the two dataframes\n", + "df = pd.concat([df1, df2], ignore_index=True)" ], "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:26:15.284313Z", - "start_time": "2023-11-06T00:26:15.275568Z" + "end_time": "2023-11-06T01:23:18.698699Z", + "start_time": "2023-11-06T01:23:18.696008Z" } }, - "id": "535ab02638d20cb2" + "id": "49dba1f17ca8337e" }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 14, "outputs": [ { "data": { - "text/plain": " waypoint_index trips_index \\\n0 0 0 \n14 1 0 \n60 2 0 \n46 3 0 \n16 4 0 \n.. ... ... \n61 59 0 \n15 60 0 \n19 61 0 \n31 62 0 \n62 63 0 \n\n hint distance \\\n0 DoUhgBeFIYCcAAAAJgAAAAAAAAARAAAAm0CKQdkZiEAAAA... 0.236958 \n14 lhgDgIkYA4BkAAAAIgEAAFoBAAAaAAAAJyAzQWNrAEI8Ax... 7.134933 \n60 tg0igLoNIoAOAAAAAAAAADwAAADtAQAA8CrBQAAAAACcrM... 17.496916 \n46 k4chgBiIIYAKAAAAFwAAAPQDAAB_AgAAHn2aP-biHUBi6e... 36.240351 \n16 rLwhgLG8IYAEAAAABQAAADAAAABsAAAA1X8CQHGb7D9Kz6... 24.054372 \n.. ... ... \n61 g38hgI1_IYBOAAAAfwAAAAAAAAAAAAAAZ4ECQsbEUkIAAA... 12.789906 \n15 cX8hgJF_IYA1AAAAMAAAAGcAAABOAAAATyWxQQ77nUEHMC... 22.776295 \n19 5tYhgJHXIYAIAAAArQAAADwAAABCAQAAaRlbQD16mUGpAc... 17.374491 \n31 WhEngAASJ4BcAAAAdwAAAHoBAAAFAAAAI3gkQQlZRUJLNi... 13.907079 \n62 s9QhgLbUIYAwAAAAkAAAAAAAAAAAAAAA2XmpQNgrgEEAAA... 4.111715 \n\n name location lat lon \n0 Northeastern (Inbound) [-71.090331, 42.339762] -71.090331 42.339762 \n14 [-71.083465, 42.34194] -71.083465 42.341940 \n60 Public Alley 901 [-71.089677, 42.346361] -71.089677 42.346361 \n46 [-71.093834, 42.339096] -71.093834 42.339096 \n16 [-71.099284, 42.338007] -71.099284 42.338007 \n.. ... ... ... ... \n61 Tremont Street [-71.098267, 42.332009] -71.098267 42.332009 \n15 Alleghany Street [-71.099348, 42.33047] -71.099348 42.330470 \n19 Dudley Street [-71.090904, 42.329829] -71.090904 42.329829 \n31 Blue Hill Avenue [-71.087449, 42.296172] -71.087449 42.296172 \n62 [-71.09454, 42.325354] -71.094540 42.325354 \n\n[64 rows x 8 columns]", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
waypoint_indextrips_indexhintdistancenamelocationlatlon
000DoUhgBeFIYCcAAAAJgAAAAAAAAARAAAAm0CKQdkZiEAAAA...0.236958Northeastern (Inbound)[-71.090331, 42.339762]-71.09033142.339762
1410lhgDgIkYA4BkAAAAIgEAAFoBAAAaAAAAJyAzQWNrAEI8Ax...7.134933[-71.083465, 42.34194]-71.08346542.341940
6020tg0igLoNIoAOAAAAAAAAADwAAADtAQAA8CrBQAAAAACcrM...17.496916Public Alley 901[-71.089677, 42.346361]-71.08967742.346361
4630k4chgBiIIYAKAAAAFwAAAPQDAAB_AgAAHn2aP-biHUBi6e...36.240351[-71.093834, 42.339096]-71.09383442.339096
1640rLwhgLG8IYAEAAAABQAAADAAAABsAAAA1X8CQHGb7D9Kz6...24.054372[-71.099284, 42.338007]-71.09928442.338007
...........................
61590g38hgI1_IYBOAAAAfwAAAAAAAAAAAAAAZ4ECQsbEUkIAAA...12.789906Tremont Street[-71.098267, 42.332009]-71.09826742.332009
15600cX8hgJF_IYA1AAAAMAAAAGcAAABOAAAATyWxQQ77nUEHMC...22.776295Alleghany Street[-71.099348, 42.33047]-71.09934842.330470
196105tYhgJHXIYAIAAAArQAAADwAAABCAQAAaRlbQD16mUGpAc...17.374491Dudley Street[-71.090904, 42.329829]-71.09090442.329829
31620WhEngAASJ4BcAAAAdwAAAHoBAAAFAAAAI3gkQQlZRUJLNi...13.907079Blue Hill Avenue[-71.087449, 42.296172]-71.08744942.296172
62630s9QhgLbUIYAwAAAAkAAAAAAAAAAAAAAA2XmpQNgrgEEAAA...4.111715[-71.09454, 42.325354]-71.09454042.325354
\n

64 rows × 8 columns

\n
" + "text/plain": " waypoint_index trips_index \\\n0 0 0 \n17 1 0 \n22 2 0 \n73 3 0 \n11 4 0 \n.. ... ... \n3 70 0 \n12 71 0 \n9 72 0 \n8 73 0 \n14 74 0 \n\n hint distance \\\n0 DoUhgBeFIYCcAAAAJgAAAAAAAAARAAAAm0CKQdkZiEAAAA... 0.236958 \n17 5tYhgJHXIYAIAAAArQAAADwAAABCAQAAaRlbQD16mUGpAc... 17.374491 \n22 XAAigHIAIoBKAAAASwAAAFUAAABDAQAARGUEQURlBEG2ZR... 11.054154 \n73 CdQhgB0OA4AYAAAAHgAAADkAAAAAAAAALdMlQdSMQ0Fd0r... 10.970598 \n11 43YhgPN2IYA1AAAAJAAAAAAAAAA5AAAAEha0QWgpbEEAAA... 18.896385 \n.. ... ... \n3 jt4hgJLeIYA7AAAALQAAAAAAAAAAAAAA4gPGQasVlUEAAA... 4.709088 \n12 0OEhgPvhIYADAAAABgAAAA8AAAA0AAAA2lq-PipQFD-Y-N... 2.009578 \n9 m8shgJ7LIYAOAAAAXgEAAAAAAAAAAAAAOFW-QDE5G0IAAA... 1.716409 \n8 YQ0DgBTPIYDvAAAAdAAAAAAAAAAAAAAAsgLVQbMxTUEAAA... 4.830022 \n14 lhgDgIkYA4BkAAAAIgEAAFoBAAAaAAAAJyAzQWNrAEI8Ax... 7.134933 \n\n name location lat lon \\\n0 Northeastern (Inbound) [-71.090331, 42.339762] -71.090331 42.339762 \n17 Dudley Street [-71.090904, 42.329829] -71.090904 42.329829 \n22 [-71.071196, 42.34085] -71.071196 42.340850 \n73 [-71.066844, 42.327134] -71.066844 42.327134 \n11 Lucy Street [-71.06221, 42.324934] -71.062210 42.324934 \n.. ... ... ... ... \n3 [-71.075414, 42.356537] -71.075414 42.356537 \n12 [-71.085166, 42.349997] -71.085166 42.349997 \n9 Piedmont Street [-71.067854, 42.349993] -71.067854 42.349993 \n8 [-71.072038, 42.348915] -71.072038 42.348915 \n14 [-71.083465, 42.34194] -71.083465 42.341940 \n\n route \n0 2 \n17 2 \n22 2 \n73 2 \n11 2 \n.. ... \n3 2 \n12 2 \n9 2 \n8 2 \n14 2 \n\n[75 rows x 9 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
waypoint_indextrips_indexhintdistancenamelocationlatlonroute
000DoUhgBeFIYCcAAAAJgAAAAAAAAARAAAAm0CKQdkZiEAAAA...0.236958Northeastern (Inbound)[-71.090331, 42.339762]-71.09033142.3397622
17105tYhgJHXIYAIAAAArQAAADwAAABCAQAAaRlbQD16mUGpAc...17.374491Dudley Street[-71.090904, 42.329829]-71.09090442.3298292
2220XAAigHIAIoBKAAAASwAAAFUAAABDAQAARGUEQURlBEG2ZR...11.054154[-71.071196, 42.34085]-71.07119642.3408502
7330CdQhgB0OA4AYAAAAHgAAADkAAAAAAAAALdMlQdSMQ0Fd0r...10.970598[-71.066844, 42.327134]-71.06684442.3271342
114043YhgPN2IYA1AAAAJAAAAAAAAAA5AAAAEha0QWgpbEEAAA...18.896385Lucy Street[-71.06221, 42.324934]-71.06221042.3249342
..............................
3700jt4hgJLeIYA7AAAALQAAAAAAAAAAAAAA4gPGQasVlUEAAA...4.709088[-71.075414, 42.356537]-71.07541442.3565372
127100OEhgPvhIYADAAAABgAAAA8AAAA0AAAA2lq-PipQFD-Y-N...2.009578[-71.085166, 42.349997]-71.08516642.3499972
9720m8shgJ7LIYAOAAAAXgEAAAAAAAAAAAAAOFW-QDE5G0IAAA...1.716409Piedmont Street[-71.067854, 42.349993]-71.06785442.3499932
8730YQ0DgBTPIYDvAAAAdAAAAAAAAAAAAAAAsgLVQbMxTUEAAA...4.830022[-71.072038, 42.348915]-71.07203842.3489152
14740lhgDgIkYA4BkAAAAIgEAAFoBAAAaAAAAJyAzQWNrAEI8Ax...7.134933[-71.083465, 42.34194]-71.08346542.3419402
\n

75 rows × 9 columns

\n
" }, - "execution_count": 66, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "df" + "display(df2)" ], "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:26:15.297169Z", - "start_time": "2023-11-06T00:26:15.287354Z" + "end_time": "2023-11-06T01:23:18.708601Z", + "start_time": "2023-11-06T01:23:18.705324Z" } }, - "id": "49dba1f17ca8337e" + "id": "f231d9a35358988c" }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 15, "outputs": [ { "data": { - "text/plain": "", - "text/html": "
Make this Notebook Trusted to load map: File -> Trust Notebook
" + "text/plain": "", + "text/html": "
Make this Notebook Trusted to load map: File -> Trust Notebook
" }, - "execution_count": 67, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -125,12 +122,14 @@ "# Create a map\n", "m = folium.Map(location=[df['lon'].mean(), df['lat'].mean()], zoom_start=11)\n", "\n", - "# Add a marker for each waypoint and connect with a line as the salesman would travel\n", - "for i in range(len(df)):\n", - " folium.Marker([df.iloc[i]['lon'], df.iloc[i]['lat']], popup=df.iloc[i]['name']).add_to(m)\n", - " if i < len(df) - 1:\n", - " folium.PolyLine([[df.iloc[i]['lon'], df.iloc[i]['lat']], [df.iloc[i + 1]['lon'], df.iloc[i + 1]['lat']]],\n", - " color=\"red\", weight=2.5, opacity=1).add_to(m)\n", + "# Add the points and lines for the two routes with different colors\n", + "colors = ['red', 'blue']\n", + "\n", + "for route in df['route'].unique():\n", + " df_route = df[df['route'] == route]\n", + " folium.PolyLine(df_route[['lon', 'lat']].values.tolist(), color=colors[route-1]).add_to(m)\n", + " for i in range(len(df_route)):\n", + " folium.CircleMarker(df_route[['lon', 'lat']].iloc[i].values.tolist(), radius=3, color=colors[route-1]).add_to(m)\n", "\n", "# Display the map\n", "m" @@ -138,50 +137,104 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:26:15.360267Z", - "start_time": "2023-11-06T00:26:15.298760Z" + "end_time": "2023-11-06T01:23:18.781393Z", + "start_time": "2023-11-06T01:23:18.709803Z" } }, "id": "80fd847da2833913" }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 16, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "The trip will take 10.198055555555555 hours\n" + "The trip will take 6.789722222222222 hours\n", + "The trip will take 9.955833333333333 hours\n" ] } ], "source": [ - "trip_hrs = int(coordinates['trips'][0]['duration'])/3600\n", - "print(\"The trip will take {} hours\".format(trip_hrs))" + "trip_hrs_1 = utils.get_trip_time(route_1)\n", + "print(\"The trip will take {} hours\".format(trip_hrs_1))\n", + "trip_hrs_2 = utils.get_trip_time(route_2)\n", + "print(\"The trip will take {} hours\".format(trip_hrs_2))" ], "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:26:15.360383Z", - "start_time": "2023-11-06T00:26:15.353591Z" + "end_time": "2023-11-06T01:23:20.448487Z", + "start_time": "2023-11-06T01:23:18.761079Z" } }, "id": "a3ec09dfb5cbb5b3" }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 17, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " waypoint_index trips_index \\\n", + "20 20 0 \n", + "\n", + " hint distance name \\\n", + "20 2M4pgNrOKYCCAQAADAAAAAAAAAAAAAAALKILQ27Ah0AAAA... 0.0 Echo Bridge \n", + "\n", + " location lat lon route \n", + "20 [-71.227365, 42.314504] -71.227365 42.314504 1 \n" + ] + } + ], + "source": [ + "# Find the westmost point in Route 1\n", + "df1 = df[df['route'] == 1]\n", + "west = df1[df1['lon'] == df1['lon'].min()]\n", + "print(west)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T01:23:20.455714Z", + "start_time": "2023-11-06T01:23:20.453647Z" + } + }, + "id": "be94c3708a1bd250" + }, + { + "cell_type": "code", + "execution_count": 18, + "outputs": [], + "source": [ + "# Remove the westmost point from Route 1\n", + "df = df.drop(west.index)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-06T01:23:20.460791Z", + "start_time": "2023-11-06T01:23:20.456599Z" + } + }, + "id": "21fef07e5b2a03a0" + }, + { + "cell_type": "code", + "execution_count": 18, "outputs": [], "source": [], "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-11-06T00:26:15.360410Z", - "start_time": "2023-11-06T00:26:15.355568Z" + "end_time": "2023-11-06T01:23:20.460900Z", + "start_time": "2023-11-06T01:23:20.458522Z" } }, - "id": "be94c3708a1bd250" + "id": "eafe5678c44e94fd" } ], "metadata": { diff --git a/utils.py b/utils.py index f250a9c..880dd2a 100644 --- a/utils.py +++ b/utils.py @@ -1,5 +1,9 @@ -# make a function that turns a list of lists of coordinates into a string +import folium +import pandas as pd +import requests + +# make a function that turns a list of lists of coordinates into a string def list_to_string(list_of_lists): """ Takes a list of lists of coordinates and returns a string of the coordinates @@ -7,4 +11,33 @@ def list_to_string(list_of_lists): string = '' for i in list_of_lists: string += str(i[1]) + ',' + str(i[0]) + ';' - return string \ No newline at end of file + return string + + +def create_json_df(coordinate_string): + coordinates = requests.get('http://acetyl.net:5000/trip/v1/bike/' + coordinate_string) + coordinates = coordinates.json() + + # Create a dataframe from the JSON + df = pd.DataFrame(coordinates['waypoints']) + + # Separate the location column into lon and lat columns + df['lat'] = df['location'].apply(lambda x: x[0]) + df['lon'] = df['location'].apply(lambda x: x[1]) + + df['waypoint_index'] = df['waypoint_index'].astype(int) + + # Map out the waypoints in order of the waypoint index + df = df.sort_values(by=['waypoint_index']) + + return df + + +def get_trip_time(coordinate_string): + """ + Takes a list of lists of coordinates and returns the time of the trip in hours + """ + coordinates = requests.get('http://acetyl.net:5000/trip/v1/bike/' + coordinate_string) + coordinates = coordinates.json() + + return int(coordinates['trips'][0]['duration']) / 3600 -- cgit v1.2.3