Skip to content

Instantly share code, notes, and snippets.

@SonerYldrm
Created April 21, 2019 12:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SonerYldrm/bdcefd26bfb6a52b15bd039ef30c4214 to your computer and use it in GitHub Desktop.
Save SonerYldrm/bdcefd26bfb6a52b15bd039ef30c4214 to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# The Battle of Neighborhoods"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This project aims to use Foursquare location data to explore and/or compare geographical locations."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Introduction/Business Problem"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The word \"investment\" sounds tempting to many people. It may the best way to spend money when return of investment is considered. However, investment may turn into the worst way of spending money if not planned wisely. In order to have a good plan, a thorough research is required. In this project, I will try to guide investors by providing them with a potential profitable venues in certain places. I will compare two or more different cities in terms of popular venues located in each city. I think it is safe to assume certain kind of venues located close to each other effect each others business positively. For example, a pharmacy close to a hospital will do better business compared to a pharmacy far away from any hospital. This is kind of an obvious observation. By using Foursquare location data, I will try to find similar patterns that are not so obvious."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I will be using Foursquare location data to find what kind of venues are located close to each other or far way from each other. Grouping venues in clustes might give insight to understand what kind of venues are located close to each other. For example, there might be a coffee shop close to each bakery. Minimum distance between same kind of venues should also be taken into account. For example, it is probably not a good idea to open a coffee shop close to an existing coffee shop. All these insights and even more will be more visible after analyzing data and seeing the results. Certain venues are located closer to downtown where as some others might be more in numbers far away from city centre."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.1 Data Sources"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I will be using Toronto postal codes with their coordinates which I will download from an online database. It is also accessible on Wikipedia. I will also use Foursquare location data to explore venues in each postal code in Toronto. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.2 Data Acquisition and cleaning"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Postal codes of Toronto"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Libraries imported.\n"
]
}
],
"source": [
"import numpy as np # library to handle data in a vectorized manner\n",
"\n",
"import pandas as pd # library for data analsysis\n",
"pd.set_option('display.max_columns', None)\n",
"pd.set_option('display.max_rows', None)\n",
"\n",
"import json # library to handle JSON files\n",
"\n",
"#!conda install -c conda-forge geopy --yes # uncomment this line if you haven't completed the Foursquare API lab\n",
"from geopy.geocoders import Nominatim # convert an address into latitude and longitude values\n",
"\n",
"import requests # library to handle requests\n",
"from pandas.io.json import json_normalize # tranform JSON file into a pandas dataframe\n",
"\n",
"# Matplotlib and associated plotting modules\n",
"import matplotlib.cm as cm\n",
"import matplotlib.colors as colors\n",
"\n",
"# import k-means from clustering stage\n",
"from sklearn.cluster import KMeans\n",
"\n",
"#!conda install -c conda-forge folium=0.5.0 --yes # uncomment this line if you haven't completed the Foursquare API lab\n",
"import folium # map rendering library\n",
"\n",
"print('Libraries imported.')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"#Toronto postal codes with latitudes and longitudes\n",
"url_coordinates = 'http://cocl.us/Geospatial_data'\n",
"toronto_postal = pd.read_csv(url_coordinates)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(103, 3)\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Postal Code</th>\n",
" <th>Latitude</th>\n",
" <th>Longitude</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>M1B</td>\n",
" <td>43.806686</td>\n",
" <td>-79.194353</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>M1C</td>\n",
" <td>43.784535</td>\n",
" <td>-79.160497</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>M1E</td>\n",
" <td>43.763573</td>\n",
" <td>-79.188711</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>M1G</td>\n",
" <td>43.770992</td>\n",
" <td>-79.216917</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>M1H</td>\n",
" <td>43.773136</td>\n",
" <td>-79.239476</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Postal Code Latitude Longitude\n",
"0 M1B 43.806686 -79.194353\n",
"1 M1C 43.784535 -79.160497\n",
"2 M1E 43.763573 -79.188711\n",
"3 M1G 43.770992 -79.216917\n",
"4 M1H 43.773136 -79.239476"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(toronto_postal.shape)\n",
"toronto_postal.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Define foursquare credentials and export venues in each postal code area"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Your credentails:\n",
"CLIENT_ID: PA04CRFBNVV4WQU3UFGCK1PJLLR1PTXMDZQ0CMAUFYXKNLYS\n",
"CLIENT_SECRET:T0M2PTV1RT4ROGFBMTATPW042TBGXVEQ23WYNJRUZFFNWWB0\n"
]
}
],
"source": [
"#Define foursquare credentials\n",
"CLIENT_ID = 'PA04CRFBNVV4WQU3UFGCK1PJLLR1PTXMDZQ0CMAUFYXKNLYS' # your Foursquare ID\n",
"CLIENT_SECRET = 'T0M2PTV1RT4ROGFBMTATPW042TBGXVEQ23WYNJRUZFFNWWB0' # your Foursquare Secret\n",
"VERSION = '20180605' # Foursquare API version\n",
"\n",
"print('Your credentails:')\n",
"print('CLIENT_ID: ' + CLIENT_ID)\n",
"print('CLIENT_SECRET:' + CLIENT_SECRET)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"getNearbyVenues function definition"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"#Define a function to get nearby venues in each postal code\n",
"LIMIT = 50 # limit of number of venues returned by Foursquare API\n",
"\n",
"radius = 1000 # define radius\n",
"\n",
"def getNearbyVenues(names, latitudes, longitudes, radius=1000):\n",
" \n",
" venues_list=[]\n",
" for name, lat, lng in zip(names, latitudes, longitudes):\n",
" print(name)\n",
" \n",
" # create the API request URL\n",
" url = 'https://api.foursquare.com/v2/venues/explore?&client_id={}&client_secret={}&v={}&ll={},{}&radius={}&limit={}'.format(\n",
" CLIENT_ID, \n",
" CLIENT_SECRET, \n",
" VERSION, \n",
" lat, \n",
" lng, \n",
" radius, \n",
" LIMIT)\n",
" \n",
" # make the GET request\n",
" results = requests.get(url).json()[\"response\"]['groups'][0]['items']\n",
" \n",
" # return only relevant information for each nearby venue\n",
" venues_list.append([(\n",
" name, \n",
" lat, \n",
" lng, \n",
" v['venue']['name'], \n",
" v['venue']['location']['lat'], \n",
" v['venue']['location']['lng'], \n",
" v['venue']['categories'][0]['name']) for v in results])\n",
"\n",
" nearby_venues = pd.DataFrame([item for venue_list in venues_list for item in venue_list])\n",
" nearby_venues.columns = ['Postal Code', \n",
" 'Postal Code Latitude', \n",
" 'Postal Code Longitude', \n",
" 'Venue', \n",
" 'Venue Latitude', \n",
" 'Venue Longitude', \n",
" 'Venue Category']\n",
" \n",
" return(nearby_venues)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"M1B\n",
"M1C\n",
"M1E\n",
"M1G\n",
"M1H\n",
"M1J\n",
"M1K\n",
"M1L\n",
"M1M\n",
"M1N\n",
"M1P\n",
"M1R\n",
"M1S\n",
"M1T\n",
"M1V\n",
"M1W\n",
"M1X\n",
"M2H\n",
"M2J\n",
"M2K\n",
"M2L\n",
"M2M\n",
"M2N\n",
"M2P\n",
"M2R\n",
"M3A\n",
"M3B\n",
"M3C\n",
"M3H\n",
"M3J\n",
"M3K\n",
"M3L\n",
"M3M\n",
"M3N\n",
"M4A\n",
"M4B\n",
"M4C\n",
"M4E\n",
"M4G\n",
"M4H\n",
"M4J\n",
"M4K\n",
"M4L\n",
"M4M\n",
"M4N\n",
"M4P\n",
"M4R\n",
"M4S\n",
"M4T\n",
"M4V\n",
"M4W\n",
"M4X\n",
"M4Y\n",
"M5A\n",
"M5B\n",
"M5C\n",
"M5E\n",
"M5G\n",
"M5H\n",
"M5J\n",
"M5K\n",
"M5L\n",
"M5M\n",
"M5N\n",
"M5P\n",
"M5R\n",
"M5S\n",
"M5T\n",
"M5V\n",
"M5W\n",
"M5X\n",
"M6A\n",
"M6B\n",
"M6C\n",
"M6E\n",
"M6G\n",
"M6H\n",
"M6J\n",
"M6K\n",
"M6L\n",
"M6M\n",
"M6N\n",
"M6P\n",
"M6R\n",
"M6S\n",
"M7A\n",
"M7R\n",
"M7Y\n",
"M8V\n",
"M8W\n",
"M8X\n",
"M8Y\n",
"M8Z\n",
"M9A\n",
"M9B\n",
"M9C\n",
"M9L\n",
"M9M\n",
"M9N\n",
"M9P\n",
"M9R\n",
"M9V\n",
"M9W\n"
]
}
],
"source": [
"#Toronto venues\n",
"toronto_venues = getNearbyVenues(names=toronto_postal['Postal Code'],\n",
" latitudes=toronto_postal['Latitude'],\n",
" longitudes=toronto_postal['Longitude']\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(3359, 7)\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Postal Code</th>\n",
" <th>Postal Code Latitude</th>\n",
" <th>Postal Code Longitude</th>\n",
" <th>Venue</th>\n",
" <th>Venue Latitude</th>\n",
" <th>Venue Longitude</th>\n",
" <th>Venue Category</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>M1B</td>\n",
" <td>43.806686</td>\n",
" <td>-79.194353</td>\n",
" <td>Images Salon &amp; Spa</td>\n",
" <td>43.802283</td>\n",
" <td>-79.198565</td>\n",
" <td>Spa</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>M1B</td>\n",
" <td>43.806686</td>\n",
" <td>-79.194353</td>\n",
" <td>Caribbean Wave</td>\n",
" <td>43.798558</td>\n",
" <td>-79.195777</td>\n",
" <td>Caribbean Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>M1B</td>\n",
" <td>43.806686</td>\n",
" <td>-79.194353</td>\n",
" <td>Wendy's</td>\n",
" <td>43.802008</td>\n",
" <td>-79.198080</td>\n",
" <td>Fast Food Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>M1B</td>\n",
" <td>43.806686</td>\n",
" <td>-79.194353</td>\n",
" <td>Staples Morningside</td>\n",
" <td>43.800285</td>\n",
" <td>-79.196607</td>\n",
" <td>Paper / Office Supplies Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>M1B</td>\n",
" <td>43.806686</td>\n",
" <td>-79.194353</td>\n",
" <td>Harvey's</td>\n",
" <td>43.800106</td>\n",
" <td>-79.198258</td>\n",
" <td>Fast Food Restaurant</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Postal Code Postal Code Latitude Postal Code Longitude \\\n",
"0 M1B 43.806686 -79.194353 \n",
"1 M1B 43.806686 -79.194353 \n",
"2 M1B 43.806686 -79.194353 \n",
"3 M1B 43.806686 -79.194353 \n",
"4 M1B 43.806686 -79.194353 \n",
"\n",
" Venue Venue Latitude Venue Longitude \\\n",
"0 Images Salon & Spa 43.802283 -79.198565 \n",
"1 Caribbean Wave 43.798558 -79.195777 \n",
"2 Wendy's 43.802008 -79.198080 \n",
"3 Staples Morningside 43.800285 -79.196607 \n",
"4 Harvey's 43.800106 -79.198258 \n",
"\n",
" Venue Category \n",
"0 Spa \n",
"1 Caribbean Restaurant \n",
"2 Fast Food Restaurant \n",
"3 Paper / Office Supplies Store \n",
"4 Fast Food Restaurant "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(toronto_venues.shape)\n",
"toronto_venues.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. Exploratory Data Analysis"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"There are 308 uniques categories.\n"
]
}
],
"source": [
"print('There are {} uniques categories.'.format(len(toronto_venues['Venue Category'].unique())))"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Postal Code</th>\n",
" <th>Postal Code Latitude</th>\n",
" <th>Postal Code Longitude</th>\n",
" <th>Venue</th>\n",
" <th>Venue Latitude</th>\n",
" <th>Venue Longitude</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Venue Category</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Accessories Store</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Adult Boutique</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Afghan Restaurant</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Airport</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Airport Lounge</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>American Restaurant</th>\n",
" <td>43</td>\n",
" <td>43</td>\n",
" <td>43</td>\n",
" <td>43</td>\n",
" <td>43</td>\n",
" <td>43</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Amphitheater</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Animal Shelter</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Antique Shop</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Aquarium</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Art Gallery</th>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Art Museum</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Arts &amp; Crafts Store</th>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Asian Restaurant</th>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Athletics &amp; Sports</th>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Auto Dealership</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Automotive Shop</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>BBQ Joint</th>\n",
" <td>14</td>\n",
" <td>14</td>\n",
" <td>14</td>\n",
" <td>14</td>\n",
" <td>14</td>\n",
" <td>14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Baby Store</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Badminton Court</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bagel Shop</th>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bakery</th>\n",
" <td>81</td>\n",
" <td>81</td>\n",
" <td>81</td>\n",
" <td>81</td>\n",
" <td>81</td>\n",
" <td>81</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bank</th>\n",
" <td>46</td>\n",
" <td>46</td>\n",
" <td>46</td>\n",
" <td>46</td>\n",
" <td>46</td>\n",
" <td>46</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bar</th>\n",
" <td>43</td>\n",
" <td>43</td>\n",
" <td>43</td>\n",
" <td>43</td>\n",
" <td>43</td>\n",
" <td>43</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Baseball Field</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Baseball Stadium</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Basketball Stadium</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Beach</th>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Beach Bar</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Beer Bar</th>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Beer Store</th>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Belgian Restaurant</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bike Shop</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bistro</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bookstore</th>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Boutique</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bowling Alley</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Brazilian Restaurant</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Breakfast Spot</th>\n",
" <td>33</td>\n",
" <td>33</td>\n",
" <td>33</td>\n",
" <td>33</td>\n",
" <td>33</td>\n",
" <td>33</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Brewery</th>\n",
" <td>23</td>\n",
" <td>23</td>\n",
" <td>23</td>\n",
" <td>23</td>\n",
" <td>23</td>\n",
" <td>23</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bridal Shop</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bridge</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bubble Tea Shop</th>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Burger Joint</th>\n",
" <td>41</td>\n",
" <td>41</td>\n",
" <td>41</td>\n",
" <td>41</td>\n",
" <td>41</td>\n",
" <td>41</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Burrito Place</th>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bus Line</th>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bus Station</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bus Stop</th>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Business Service</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Butcher</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Café</th>\n",
" <td>139</td>\n",
" <td>139</td>\n",
" <td>139</td>\n",
" <td>139</td>\n",
" <td>139</td>\n",
" <td>139</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cajun / Creole Restaurant</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Candy Store</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cantonese Restaurant</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Caribbean Restaurant</th>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Castle</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cemetery</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Check Cashing Service</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cheese Shop</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Chinese Restaurant</th>\n",
" <td>44</td>\n",
" <td>44</td>\n",
" <td>44</td>\n",
" <td>44</td>\n",
" <td>44</td>\n",
" <td>44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Chiropractor</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Chocolate Shop</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Church</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Churrascaria</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Climbing Gym</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Clothing Store</th>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cocktail Bar</th>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Coffee Shop</th>\n",
" <td>252</td>\n",
" <td>252</td>\n",
" <td>252</td>\n",
" <td>252</td>\n",
" <td>252</td>\n",
" <td>252</td>\n",
" </tr>\n",
" <tr>\n",
" <th>College Gym</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>College Quad</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>College Rec Center</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>College Stadium</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Comedy Club</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Comfort Food Restaurant</th>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Comic Shop</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Community Center</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Concert Hall</th>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Construction &amp; Landscaping</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Convenience Store</th>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cosmetics Shop</th>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Coworking Space</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Creperie</th>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cuban Restaurant</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cupcake Shop</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Curling Ice</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Dance Studio</th>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Deli / Bodega</th>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Department Store</th>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Design Studio</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Dessert Shop</th>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Dim Sum Restaurant</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Diner</th>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Discount Store</th>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Dive Bar</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Dog Run</th>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Doner Restaurant</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Donut Shop</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Dumpling Restaurant</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Eastern European Restaurant</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Electronics Store</th>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Empanada Restaurant</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ethiopian Restaurant</th>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Event Space</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Falafel Restaurant</th>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Farm</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Farmers Market</th>\n",
" <td>14</td>\n",
" <td>14</td>\n",
" <td>14</td>\n",
" <td>14</td>\n",
" <td>14</td>\n",
" <td>14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Fast Food Restaurant</th>\n",
" <td>60</td>\n",
" <td>60</td>\n",
" <td>60</td>\n",
" <td>60</td>\n",
" <td>60</td>\n",
" <td>60</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Field</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Filipino Restaurant</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Fireworks Store</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Fish &amp; Chips Shop</th>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Fish Market</th>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Flea Market</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Flower Shop</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Food</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Food &amp; Drink Shop</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Food Court</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Food Truck</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Fountain</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>French Restaurant</th>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Fried Chicken Joint</th>\n",
" <td>23</td>\n",
" <td>23</td>\n",
" <td>23</td>\n",
" <td>23</td>\n",
" <td>23</td>\n",
" <td>23</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Frozen Yogurt Shop</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Fruit &amp; Vegetable Store</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Furniture / Home Store</th>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Gaming Cafe</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Garden</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Garden Center</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Gas Station</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Gastropub</th>\n",
" <td>38</td>\n",
" <td>38</td>\n",
" <td>38</td>\n",
" <td>38</td>\n",
" <td>38</td>\n",
" <td>38</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Gay Bar</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>General Entertainment</th>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>German Restaurant</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Gift Shop</th>\n",
" <td>10</td>\n",
" <td>10</td>\n",
" <td>10</td>\n",
" <td>10</td>\n",
" <td>10</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Gluten-free Restaurant</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Golf Course</th>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Golf Driving Range</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Gourmet Shop</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Greek Restaurant</th>\n",
" <td>29</td>\n",
" <td>29</td>\n",
" <td>29</td>\n",
" <td>29</td>\n",
" <td>29</td>\n",
" <td>29</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Grocery Store</th>\n",
" <td>69</td>\n",
" <td>69</td>\n",
" <td>69</td>\n",
" <td>69</td>\n",
" <td>69</td>\n",
" <td>69</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Gym</th>\n",
" <td>45</td>\n",
" <td>45</td>\n",
" <td>45</td>\n",
" <td>45</td>\n",
" <td>45</td>\n",
" <td>45</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Gym / Fitness Center</th>\n",
" <td>24</td>\n",
" <td>24</td>\n",
" <td>24</td>\n",
" <td>24</td>\n",
" <td>24</td>\n",
" <td>24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Gym Pool</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hakka Restaurant</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Harbor / Marina</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hardware Store</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hawaiian Restaurant</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Health Food Store</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Historic Site</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>History Museum</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hobby Shop</th>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hockey Arena</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Home Service</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hookah Bar</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hostel</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hot Dog Joint</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hotel</th>\n",
" <td>38</td>\n",
" <td>38</td>\n",
" <td>38</td>\n",
" <td>38</td>\n",
" <td>38</td>\n",
" <td>38</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hotpot Restaurant</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Housing Development</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>IT Services</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ice Cream Shop</th>\n",
" <td>28</td>\n",
" <td>28</td>\n",
" <td>28</td>\n",
" <td>28</td>\n",
" <td>28</td>\n",
" <td>28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Indian Chinese Restaurant</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Indian Restaurant</th>\n",
" <td>36</td>\n",
" <td>36</td>\n",
" <td>36</td>\n",
" <td>36</td>\n",
" <td>36</td>\n",
" <td>36</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Indie Movie Theater</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Indie Theater</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Indonesian Restaurant</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Intersection</th>\n",
" <td>20</td>\n",
" <td>20</td>\n",
" <td>20</td>\n",
" <td>20</td>\n",
" <td>20</td>\n",
" <td>20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Italian Restaurant</th>\n",
" <td>86</td>\n",
" <td>86</td>\n",
" <td>86</td>\n",
" <td>86</td>\n",
" <td>86</td>\n",
" <td>86</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Japanese Restaurant</th>\n",
" <td>50</td>\n",
" <td>50</td>\n",
" <td>50</td>\n",
" <td>50</td>\n",
" <td>50</td>\n",
" <td>50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Jazz Club</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Jewelry Store</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Jewish Restaurant</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Juice Bar</th>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Kitchen Supply Store</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Korean Restaurant</th>\n",
" <td>20</td>\n",
" <td>20</td>\n",
" <td>20</td>\n",
" <td>20</td>\n",
" <td>20</td>\n",
" <td>20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lake</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Latin American Restaurant</th>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Laundry Service</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Light Rail Station</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Liquor Store</th>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lounge</th>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mac &amp; Cheese Joint</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Malay Restaurant</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Market</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Martial Arts Dojo</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Massage Studio</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mattress Store</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mediterranean Restaurant</th>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Men's Store</th>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Metro Station</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mexican Restaurant</th>\n",
" <td>29</td>\n",
" <td>29</td>\n",
" <td>29</td>\n",
" <td>29</td>\n",
" <td>29</td>\n",
" <td>29</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Middle Eastern Restaurant</th>\n",
" <td>23</td>\n",
" <td>23</td>\n",
" <td>23</td>\n",
" <td>23</td>\n",
" <td>23</td>\n",
" <td>23</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Miscellaneous Shop</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mobile Phone Shop</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Modern European Restaurant</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Monument / Landmark</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Moroccan Restaurant</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Motorcycle Shop</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Movie Theater</th>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Moving Target</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Museum</th>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Music School</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Music Store</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Music Venue</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Nail Salon</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Neighborhood</th>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>New American Restaurant</th>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Nightclub</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Noodle House</th>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Office</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Opera House</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Optical Shop</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Organic Grocery</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Other Great Outdoors</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Other Repair Shop</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Pakistani Restaurant</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Paper / Office Supplies Store</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Park</th>\n",
" <td>123</td>\n",
" <td>123</td>\n",
" <td>123</td>\n",
" <td>123</td>\n",
" <td>123</td>\n",
" <td>123</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Pastry Shop</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Performing Arts Venue</th>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Persian Restaurant</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Pet Store</th>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Pharmacy</th>\n",
" <td>52</td>\n",
" <td>52</td>\n",
" <td>52</td>\n",
" <td>52</td>\n",
" <td>52</td>\n",
" <td>52</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Photography Lab</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Pie Shop</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Pizza Place</th>\n",
" <td>115</td>\n",
" <td>115</td>\n",
" <td>115</td>\n",
" <td>115</td>\n",
" <td>115</td>\n",
" <td>115</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Playground</th>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Plaza</th>\n",
" <td>10</td>\n",
" <td>10</td>\n",
" <td>10</td>\n",
" <td>10</td>\n",
" <td>10</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Poke Place</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Pool</th>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Pool Hall</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Portuguese Restaurant</th>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Poutine Place</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Print Shop</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Pub</th>\n",
" <td>37</td>\n",
" <td>37</td>\n",
" <td>37</td>\n",
" <td>37</td>\n",
" <td>37</td>\n",
" <td>37</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ramen Restaurant</th>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Record Shop</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Recreation Center</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rental Car Location</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Residential Building (Apartment / Condo)</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Restaurant</th>\n",
" <td>73</td>\n",
" <td>73</td>\n",
" <td>73</td>\n",
" <td>73</td>\n",
" <td>73</td>\n",
" <td>73</td>\n",
" </tr>\n",
" <tr>\n",
" <th>River</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Road</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rock Climbing Spot</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rock Club</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Salad Place</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Salon / Barbershop</th>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sandwich Place</th>\n",
" <td>64</td>\n",
" <td>64</td>\n",
" <td>64</td>\n",
" <td>64</td>\n",
" <td>64</td>\n",
" <td>64</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Scenic Lookout</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>School</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sculpture Garden</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Seafood Restaurant</th>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Shanghai Restaurant</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Shoe Store</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Shop &amp; Service</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Shopping Mall</th>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Skate Park</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Skating Rink</th>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ski Area</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ski Chalet</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Smoke Shop</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Smoothie Shop</th>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Snack Place</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Soccer Field</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Soccer Stadium</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Soup Place</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>South American Restaurant</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Spa</th>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Spanish Restaurant</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Speakeasy</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sporting Goods Shop</th>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sports Bar</th>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sports Club</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sri Lankan Restaurant</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Stadium</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Stationery Store</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Steakhouse</th>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Storage Facility</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Supermarket</th>\n",
" <td>28</td>\n",
" <td>28</td>\n",
" <td>28</td>\n",
" <td>28</td>\n",
" <td>28</td>\n",
" <td>28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Supplement Shop</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sushi Restaurant</th>\n",
" <td>48</td>\n",
" <td>48</td>\n",
" <td>48</td>\n",
" <td>48</td>\n",
" <td>48</td>\n",
" <td>48</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Taco Place</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Tailor Shop</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Taiwanese Restaurant</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Tanning Salon</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Tapas Restaurant</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Tea Room</th>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Tech Startup</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Tennis Court</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Thai Restaurant</th>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Theater</th>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Theme Restaurant</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Thrift / Vintage Store</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Tibetan Restaurant</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Toy / Game Store</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Track</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Trail</th>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Train Station</th>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Turkish Restaurant</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Vegetarian / Vegan Restaurant</th>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Video Game Store</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Video Store</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Vietnamese Restaurant</th>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Warehouse Store</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Wine Bar</th>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Wine Shop</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Wings Joint</th>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Women's Store</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Yoga Studio</th>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Postal Code Postal Code Latitude \\\n",
"Venue Category \n",
"Accessories Store 1 1 \n",
"Adult Boutique 2 2 \n",
"Afghan Restaurant 3 3 \n",
"Airport 2 2 \n",
"Airport Lounge 1 1 \n",
"American Restaurant 43 43 \n",
"Amphitheater 1 1 \n",
"Animal Shelter 1 1 \n",
"Antique Shop 2 2 \n",
"Aquarium 2 2 \n",
"Art Gallery 9 9 \n",
"Art Museum 1 1 \n",
"Arts & Crafts Store 8 8 \n",
"Asian Restaurant 25 25 \n",
"Athletics & Sports 11 11 \n",
"Auto Dealership 1 1 \n",
"Automotive Shop 3 3 \n",
"BBQ Joint 14 14 \n",
"Baby Store 1 1 \n",
"Badminton Court 2 2 \n",
"Bagel Shop 6 6 \n",
"Bakery 81 81 \n",
"Bank 46 46 \n",
"Bar 43 43 \n",
"Baseball Field 3 3 \n",
"Baseball Stadium 2 2 \n",
"Basketball Stadium 4 4 \n",
"Beach 9 9 \n",
"Beach Bar 1 1 \n",
"Beer Bar 17 17 \n",
"Beer Store 17 17 \n",
"Belgian Restaurant 2 2 \n",
"Bike Shop 2 2 \n",
"Bistro 5 5 \n",
"Bookstore 21 21 \n",
"Boutique 3 3 \n",
"Bowling Alley 4 4 \n",
"Brazilian Restaurant 2 2 \n",
"Breakfast Spot 33 33 \n",
"Brewery 23 23 \n",
"Bridal Shop 2 2 \n",
"Bridge 1 1 \n",
"Bubble Tea Shop 11 11 \n",
"Burger Joint 41 41 \n",
"Burrito Place 13 13 \n",
"Bus Line 11 11 \n",
"Bus Station 2 2 \n",
"Bus Stop 6 6 \n",
"Business Service 1 1 \n",
"Butcher 4 4 \n",
"Café 139 139 \n",
"Cajun / Creole Restaurant 1 1 \n",
"Candy Store 2 2 \n",
"Cantonese Restaurant 4 4 \n",
"Caribbean Restaurant 18 18 \n",
"Castle 1 1 \n",
"Cemetery 1 1 \n",
"Check Cashing Service 1 1 \n",
"Cheese Shop 5 5 \n",
"Chinese Restaurant 44 44 \n",
"Chiropractor 2 2 \n",
"Chocolate Shop 2 2 \n",
"Church 2 2 \n",
"Churrascaria 2 2 \n",
"Climbing Gym 2 2 \n",
"Clothing Store 18 18 \n",
"Cocktail Bar 13 13 \n",
"Coffee Shop 252 252 \n",
"College Gym 2 2 \n",
"College Quad 1 1 \n",
"College Rec Center 1 1 \n",
"College Stadium 1 1 \n",
"Comedy Club 3 3 \n",
"Comfort Food Restaurant 7 7 \n",
"Comic Shop 4 4 \n",
"Community Center 1 1 \n",
"Concert Hall 13 13 \n",
"Construction & Landscaping 1 1 \n",
"Convenience Store 26 26 \n",
"Cosmetics Shop 12 12 \n",
"Coworking Space 1 1 \n",
"Creperie 7 7 \n",
"Cuban Restaurant 3 3 \n",
"Cupcake Shop 4 4 \n",
"Curling Ice 3 3 \n",
"Dance Studio 8 8 \n",
"Deli / Bodega 19 19 \n",
"Department Store 7 7 \n",
"Design Studio 2 2 \n",
"Dessert Shop 26 26 \n",
"Dim Sum Restaurant 3 3 \n",
"Diner 26 26 \n",
"Discount Store 21 21 \n",
"Dive Bar 2 2 \n",
"Dog Run 7 7 \n",
"Doner Restaurant 2 2 \n",
"Donut Shop 3 3 \n",
"Dumpling Restaurant 2 2 \n",
"Eastern European Restaurant 5 5 \n",
"Electronics Store 16 16 \n",
"Empanada Restaurant 1 1 \n",
"Ethiopian Restaurant 6 6 \n",
"Event Space 4 4 \n",
"Falafel Restaurant 6 6 \n",
"Farm 1 1 \n",
"Farmers Market 14 14 \n",
"Fast Food Restaurant 60 60 \n",
"Field 1 1 \n",
"Filipino Restaurant 3 3 \n",
"Fireworks Store 1 1 \n",
"Fish & Chips Shop 7 7 \n",
"Fish Market 6 6 \n",
"Flea Market 3 3 \n",
"Flower Shop 4 4 \n",
"Food 2 2 \n",
"Food & Drink Shop 5 5 \n",
"Food Court 4 4 \n",
"Food Truck 5 5 \n",
"Fountain 1 1 \n",
"French Restaurant 16 16 \n",
"Fried Chicken Joint 23 23 \n",
"Frozen Yogurt Shop 3 3 \n",
"Fruit & Vegetable Store 3 3 \n",
"Furniture / Home Store 21 21 \n",
"Gaming Cafe 2 2 \n",
"Garden 4 4 \n",
"Garden Center 1 1 \n",
"Gas Station 1 1 \n",
"Gastropub 38 38 \n",
"Gay Bar 2 2 \n",
"General Entertainment 7 7 \n",
"German Restaurant 3 3 \n",
"Gift Shop 10 10 \n",
"Gluten-free Restaurant 2 2 \n",
"Golf Course 6 6 \n",
"Golf Driving Range 1 1 \n",
"Gourmet Shop 5 5 \n",
"Greek Restaurant 29 29 \n",
"Grocery Store 69 69 \n",
"Gym 45 45 \n",
"Gym / Fitness Center 24 24 \n",
"Gym Pool 5 5 \n",
"Hakka Restaurant 1 1 \n",
"Harbor / Marina 3 3 \n",
"Hardware Store 4 4 \n",
"Hawaiian Restaurant 1 1 \n",
"Health Food Store 2 2 \n",
"Historic Site 4 4 \n",
"History Museum 3 3 \n",
"Hobby Shop 8 8 \n",
"Hockey Arena 3 3 \n",
"Home Service 1 1 \n",
"Hookah Bar 2 2 \n",
"Hostel 4 4 \n",
"Hot Dog Joint 1 1 \n",
"Hotel 38 38 \n",
"Hotpot Restaurant 1 1 \n",
"Housing Development 1 1 \n",
"IT Services 1 1 \n",
"Ice Cream Shop 28 28 \n",
"Indian Chinese Restaurant 2 2 \n",
"Indian Restaurant 36 36 \n",
"Indie Movie Theater 5 5 \n",
"Indie Theater 1 1 \n",
"Indonesian Restaurant 2 2 \n",
"Intersection 20 20 \n",
"Italian Restaurant 86 86 \n",
"Japanese Restaurant 50 50 \n",
"Jazz Club 5 5 \n",
"Jewelry Store 1 1 \n",
"Jewish Restaurant 2 2 \n",
"Juice Bar 8 8 \n",
"Kitchen Supply Store 1 1 \n",
"Korean Restaurant 20 20 \n",
"Lake 1 1 \n",
"Latin American Restaurant 7 7 \n",
"Laundry Service 2 2 \n",
"Light Rail Station 2 2 \n",
"Liquor Store 25 25 \n",
"Lounge 7 7 \n",
"Mac & Cheese Joint 1 1 \n",
"Malay Restaurant 3 3 \n",
"Market 2 2 \n",
"Martial Arts Dojo 2 2 \n",
"Massage Studio 1 1 \n",
"Mattress Store 1 1 \n",
"Mediterranean Restaurant 9 9 \n",
"Men's Store 6 6 \n",
"Metro Station 5 5 \n",
"Mexican Restaurant 29 29 \n",
"Middle Eastern Restaurant 23 23 \n",
"Miscellaneous Shop 4 4 \n",
"Mobile Phone Shop 2 2 \n",
"Modern European Restaurant 4 4 \n",
"Monument / Landmark 3 3 \n",
"Moroccan Restaurant 1 1 \n",
"Motorcycle Shop 1 1 \n",
"Movie Theater 8 8 \n",
"Moving Target 2 2 \n",
"Museum 9 9 \n",
"Music School 2 2 \n",
"Music Store 2 2 \n",
"Music Venue 3 3 \n",
"Nail Salon 4 4 \n",
"Neighborhood 6 6 \n",
"New American Restaurant 7 7 \n",
"Nightclub 2 2 \n",
"Noodle House 7 7 \n",
"Office 4 4 \n",
"Opera House 1 1 \n",
"Optical Shop 3 3 \n",
"Organic Grocery 2 2 \n",
"Other Great Outdoors 2 2 \n",
"Other Repair Shop 1 1 \n",
"Pakistani Restaurant 1 1 \n",
"Paper / Office Supplies Store 5 5 \n",
"Park 123 123 \n",
"Pastry Shop 3 3 \n",
"Performing Arts Venue 6 6 \n",
"Persian Restaurant 1 1 \n",
"Pet Store 15 15 \n",
"Pharmacy 52 52 \n",
"Photography Lab 1 1 \n",
"Pie Shop 1 1 \n",
"Pizza Place 115 115 \n",
"Playground 11 11 \n",
"Plaza 10 10 \n",
"Poke Place 2 2 \n",
"Pool 8 8 \n",
"Pool Hall 2 2 \n",
"Portuguese Restaurant 7 7 \n",
"Poutine Place 1 1 \n",
"Print Shop 1 1 \n",
"Pub 37 37 \n",
"Ramen Restaurant 16 16 \n",
"Record Shop 2 2 \n",
"Recreation Center 1 1 \n",
"Rental Car Location 3 3 \n",
"Residential Building (Apartment / Condo) 1 1 \n",
"Restaurant 73 73 \n",
"River 1 1 \n",
"Road 2 2 \n",
"Rock Climbing Spot 1 1 \n",
"Rock Club 2 2 \n",
"Salad Place 4 4 \n",
"Salon / Barbershop 7 7 \n",
"Sandwich Place 64 64 \n",
"Scenic Lookout 3 3 \n",
"School 1 1 \n",
"Sculpture Garden 1 1 \n",
"Seafood Restaurant 21 21 \n",
"Shanghai Restaurant 1 1 \n",
"Shoe Store 3 3 \n",
"Shop & Service 3 3 \n",
"Shopping Mall 27 27 \n",
"Skate Park 3 3 \n",
"Skating Rink 16 16 \n",
"Ski Area 1 1 \n",
"Ski Chalet 1 1 \n",
"Smoke Shop 3 3 \n",
"Smoothie Shop 7 7 \n",
"Snack Place 5 5 \n",
"Soccer Field 4 4 \n",
"Soccer Stadium 3 3 \n",
"Soup Place 1 1 \n",
"South American Restaurant 1 1 \n",
"Spa 13 13 \n",
"Spanish Restaurant 1 1 \n",
"Speakeasy 5 5 \n",
"Sporting Goods Shop 16 16 \n",
"Sports Bar 9 9 \n",
"Sports Club 1 1 \n",
"Sri Lankan Restaurant 1 1 \n",
"Stadium 1 1 \n",
"Stationery Store 1 1 \n",
"Steakhouse 21 21 \n",
"Storage Facility 1 1 \n",
"Supermarket 28 28 \n",
"Supplement Shop 2 2 \n",
"Sushi Restaurant 48 48 \n",
"Taco Place 5 5 \n",
"Tailor Shop 2 2 \n",
"Taiwanese Restaurant 2 2 \n",
"Tanning Salon 1 1 \n",
"Tapas Restaurant 5 5 \n",
"Tea Room 21 21 \n",
"Tech Startup 1 1 \n",
"Tennis Court 5 5 \n",
"Thai Restaurant 39 39 \n",
"Theater 16 16 \n",
"Theme Restaurant 1 1 \n",
"Thrift / Vintage Store 3 3 \n",
"Tibetan Restaurant 1 1 \n",
"Toy / Game Store 3 3 \n",
"Track 2 2 \n",
"Trail 11 11 \n",
"Train Station 8 8 \n",
"Turkish Restaurant 5 5 \n",
"Vegetarian / Vegan Restaurant 26 26 \n",
"Video Game Store 4 4 \n",
"Video Store 3 3 \n",
"Vietnamese Restaurant 21 21 \n",
"Warehouse Store 1 1 \n",
"Wine Bar 7 7 \n",
"Wine Shop 3 3 \n",
"Wings Joint 8 8 \n",
"Women's Store 2 2 \n",
"Yoga Studio 19 19 \n",
"\n",
" Postal Code Longitude Venue \\\n",
"Venue Category \n",
"Accessories Store 1 1 \n",
"Adult Boutique 2 2 \n",
"Afghan Restaurant 3 3 \n",
"Airport 2 2 \n",
"Airport Lounge 1 1 \n",
"American Restaurant 43 43 \n",
"Amphitheater 1 1 \n",
"Animal Shelter 1 1 \n",
"Antique Shop 2 2 \n",
"Aquarium 2 2 \n",
"Art Gallery 9 9 \n",
"Art Museum 1 1 \n",
"Arts & Crafts Store 8 8 \n",
"Asian Restaurant 25 25 \n",
"Athletics & Sports 11 11 \n",
"Auto Dealership 1 1 \n",
"Automotive Shop 3 3 \n",
"BBQ Joint 14 14 \n",
"Baby Store 1 1 \n",
"Badminton Court 2 2 \n",
"Bagel Shop 6 6 \n",
"Bakery 81 81 \n",
"Bank 46 46 \n",
"Bar 43 43 \n",
"Baseball Field 3 3 \n",
"Baseball Stadium 2 2 \n",
"Basketball Stadium 4 4 \n",
"Beach 9 9 \n",
"Beach Bar 1 1 \n",
"Beer Bar 17 17 \n",
"Beer Store 17 17 \n",
"Belgian Restaurant 2 2 \n",
"Bike Shop 2 2 \n",
"Bistro 5 5 \n",
"Bookstore 21 21 \n",
"Boutique 3 3 \n",
"Bowling Alley 4 4 \n",
"Brazilian Restaurant 2 2 \n",
"Breakfast Spot 33 33 \n",
"Brewery 23 23 \n",
"Bridal Shop 2 2 \n",
"Bridge 1 1 \n",
"Bubble Tea Shop 11 11 \n",
"Burger Joint 41 41 \n",
"Burrito Place 13 13 \n",
"Bus Line 11 11 \n",
"Bus Station 2 2 \n",
"Bus Stop 6 6 \n",
"Business Service 1 1 \n",
"Butcher 4 4 \n",
"Café 139 139 \n",
"Cajun / Creole Restaurant 1 1 \n",
"Candy Store 2 2 \n",
"Cantonese Restaurant 4 4 \n",
"Caribbean Restaurant 18 18 \n",
"Castle 1 1 \n",
"Cemetery 1 1 \n",
"Check Cashing Service 1 1 \n",
"Cheese Shop 5 5 \n",
"Chinese Restaurant 44 44 \n",
"Chiropractor 2 2 \n",
"Chocolate Shop 2 2 \n",
"Church 2 2 \n",
"Churrascaria 2 2 \n",
"Climbing Gym 2 2 \n",
"Clothing Store 18 18 \n",
"Cocktail Bar 13 13 \n",
"Coffee Shop 252 252 \n",
"College Gym 2 2 \n",
"College Quad 1 1 \n",
"College Rec Center 1 1 \n",
"College Stadium 1 1 \n",
"Comedy Club 3 3 \n",
"Comfort Food Restaurant 7 7 \n",
"Comic Shop 4 4 \n",
"Community Center 1 1 \n",
"Concert Hall 13 13 \n",
"Construction & Landscaping 1 1 \n",
"Convenience Store 26 26 \n",
"Cosmetics Shop 12 12 \n",
"Coworking Space 1 1 \n",
"Creperie 7 7 \n",
"Cuban Restaurant 3 3 \n",
"Cupcake Shop 4 4 \n",
"Curling Ice 3 3 \n",
"Dance Studio 8 8 \n",
"Deli / Bodega 19 19 \n",
"Department Store 7 7 \n",
"Design Studio 2 2 \n",
"Dessert Shop 26 26 \n",
"Dim Sum Restaurant 3 3 \n",
"Diner 26 26 \n",
"Discount Store 21 21 \n",
"Dive Bar 2 2 \n",
"Dog Run 7 7 \n",
"Doner Restaurant 2 2 \n",
"Donut Shop 3 3 \n",
"Dumpling Restaurant 2 2 \n",
"Eastern European Restaurant 5 5 \n",
"Electronics Store 16 16 \n",
"Empanada Restaurant 1 1 \n",
"Ethiopian Restaurant 6 6 \n",
"Event Space 4 4 \n",
"Falafel Restaurant 6 6 \n",
"Farm 1 1 \n",
"Farmers Market 14 14 \n",
"Fast Food Restaurant 60 60 \n",
"Field 1 1 \n",
"Filipino Restaurant 3 3 \n",
"Fireworks Store 1 1 \n",
"Fish & Chips Shop 7 7 \n",
"Fish Market 6 6 \n",
"Flea Market 3 3 \n",
"Flower Shop 4 4 \n",
"Food 2 2 \n",
"Food & Drink Shop 5 5 \n",
"Food Court 4 4 \n",
"Food Truck 5 5 \n",
"Fountain 1 1 \n",
"French Restaurant 16 16 \n",
"Fried Chicken Joint 23 23 \n",
"Frozen Yogurt Shop 3 3 \n",
"Fruit & Vegetable Store 3 3 \n",
"Furniture / Home Store 21 21 \n",
"Gaming Cafe 2 2 \n",
"Garden 4 4 \n",
"Garden Center 1 1 \n",
"Gas Station 1 1 \n",
"Gastropub 38 38 \n",
"Gay Bar 2 2 \n",
"General Entertainment 7 7 \n",
"German Restaurant 3 3 \n",
"Gift Shop 10 10 \n",
"Gluten-free Restaurant 2 2 \n",
"Golf Course 6 6 \n",
"Golf Driving Range 1 1 \n",
"Gourmet Shop 5 5 \n",
"Greek Restaurant 29 29 \n",
"Grocery Store 69 69 \n",
"Gym 45 45 \n",
"Gym / Fitness Center 24 24 \n",
"Gym Pool 5 5 \n",
"Hakka Restaurant 1 1 \n",
"Harbor / Marina 3 3 \n",
"Hardware Store 4 4 \n",
"Hawaiian Restaurant 1 1 \n",
"Health Food Store 2 2 \n",
"Historic Site 4 4 \n",
"History Museum 3 3 \n",
"Hobby Shop 8 8 \n",
"Hockey Arena 3 3 \n",
"Home Service 1 1 \n",
"Hookah Bar 2 2 \n",
"Hostel 4 4 \n",
"Hot Dog Joint 1 1 \n",
"Hotel 38 38 \n",
"Hotpot Restaurant 1 1 \n",
"Housing Development 1 1 \n",
"IT Services 1 1 \n",
"Ice Cream Shop 28 28 \n",
"Indian Chinese Restaurant 2 2 \n",
"Indian Restaurant 36 36 \n",
"Indie Movie Theater 5 5 \n",
"Indie Theater 1 1 \n",
"Indonesian Restaurant 2 2 \n",
"Intersection 20 20 \n",
"Italian Restaurant 86 86 \n",
"Japanese Restaurant 50 50 \n",
"Jazz Club 5 5 \n",
"Jewelry Store 1 1 \n",
"Jewish Restaurant 2 2 \n",
"Juice Bar 8 8 \n",
"Kitchen Supply Store 1 1 \n",
"Korean Restaurant 20 20 \n",
"Lake 1 1 \n",
"Latin American Restaurant 7 7 \n",
"Laundry Service 2 2 \n",
"Light Rail Station 2 2 \n",
"Liquor Store 25 25 \n",
"Lounge 7 7 \n",
"Mac & Cheese Joint 1 1 \n",
"Malay Restaurant 3 3 \n",
"Market 2 2 \n",
"Martial Arts Dojo 2 2 \n",
"Massage Studio 1 1 \n",
"Mattress Store 1 1 \n",
"Mediterranean Restaurant 9 9 \n",
"Men's Store 6 6 \n",
"Metro Station 5 5 \n",
"Mexican Restaurant 29 29 \n",
"Middle Eastern Restaurant 23 23 \n",
"Miscellaneous Shop 4 4 \n",
"Mobile Phone Shop 2 2 \n",
"Modern European Restaurant 4 4 \n",
"Monument / Landmark 3 3 \n",
"Moroccan Restaurant 1 1 \n",
"Motorcycle Shop 1 1 \n",
"Movie Theater 8 8 \n",
"Moving Target 2 2 \n",
"Museum 9 9 \n",
"Music School 2 2 \n",
"Music Store 2 2 \n",
"Music Venue 3 3 \n",
"Nail Salon 4 4 \n",
"Neighborhood 6 6 \n",
"New American Restaurant 7 7 \n",
"Nightclub 2 2 \n",
"Noodle House 7 7 \n",
"Office 4 4 \n",
"Opera House 1 1 \n",
"Optical Shop 3 3 \n",
"Organic Grocery 2 2 \n",
"Other Great Outdoors 2 2 \n",
"Other Repair Shop 1 1 \n",
"Pakistani Restaurant 1 1 \n",
"Paper / Office Supplies Store 5 5 \n",
"Park 123 123 \n",
"Pastry Shop 3 3 \n",
"Performing Arts Venue 6 6 \n",
"Persian Restaurant 1 1 \n",
"Pet Store 15 15 \n",
"Pharmacy 52 52 \n",
"Photography Lab 1 1 \n",
"Pie Shop 1 1 \n",
"Pizza Place 115 115 \n",
"Playground 11 11 \n",
"Plaza 10 10 \n",
"Poke Place 2 2 \n",
"Pool 8 8 \n",
"Pool Hall 2 2 \n",
"Portuguese Restaurant 7 7 \n",
"Poutine Place 1 1 \n",
"Print Shop 1 1 \n",
"Pub 37 37 \n",
"Ramen Restaurant 16 16 \n",
"Record Shop 2 2 \n",
"Recreation Center 1 1 \n",
"Rental Car Location 3 3 \n",
"Residential Building (Apartment / Condo) 1 1 \n",
"Restaurant 73 73 \n",
"River 1 1 \n",
"Road 2 2 \n",
"Rock Climbing Spot 1 1 \n",
"Rock Club 2 2 \n",
"Salad Place 4 4 \n",
"Salon / Barbershop 7 7 \n",
"Sandwich Place 64 64 \n",
"Scenic Lookout 3 3 \n",
"School 1 1 \n",
"Sculpture Garden 1 1 \n",
"Seafood Restaurant 21 21 \n",
"Shanghai Restaurant 1 1 \n",
"Shoe Store 3 3 \n",
"Shop & Service 3 3 \n",
"Shopping Mall 27 27 \n",
"Skate Park 3 3 \n",
"Skating Rink 16 16 \n",
"Ski Area 1 1 \n",
"Ski Chalet 1 1 \n",
"Smoke Shop 3 3 \n",
"Smoothie Shop 7 7 \n",
"Snack Place 5 5 \n",
"Soccer Field 4 4 \n",
"Soccer Stadium 3 3 \n",
"Soup Place 1 1 \n",
"South American Restaurant 1 1 \n",
"Spa 13 13 \n",
"Spanish Restaurant 1 1 \n",
"Speakeasy 5 5 \n",
"Sporting Goods Shop 16 16 \n",
"Sports Bar 9 9 \n",
"Sports Club 1 1 \n",
"Sri Lankan Restaurant 1 1 \n",
"Stadium 1 1 \n",
"Stationery Store 1 1 \n",
"Steakhouse 21 21 \n",
"Storage Facility 1 1 \n",
"Supermarket 28 28 \n",
"Supplement Shop 2 2 \n",
"Sushi Restaurant 48 48 \n",
"Taco Place 5 5 \n",
"Tailor Shop 2 2 \n",
"Taiwanese Restaurant 2 2 \n",
"Tanning Salon 1 1 \n",
"Tapas Restaurant 5 5 \n",
"Tea Room 21 21 \n",
"Tech Startup 1 1 \n",
"Tennis Court 5 5 \n",
"Thai Restaurant 39 39 \n",
"Theater 16 16 \n",
"Theme Restaurant 1 1 \n",
"Thrift / Vintage Store 3 3 \n",
"Tibetan Restaurant 1 1 \n",
"Toy / Game Store 3 3 \n",
"Track 2 2 \n",
"Trail 11 11 \n",
"Train Station 8 8 \n",
"Turkish Restaurant 5 5 \n",
"Vegetarian / Vegan Restaurant 26 26 \n",
"Video Game Store 4 4 \n",
"Video Store 3 3 \n",
"Vietnamese Restaurant 21 21 \n",
"Warehouse Store 1 1 \n",
"Wine Bar 7 7 \n",
"Wine Shop 3 3 \n",
"Wings Joint 8 8 \n",
"Women's Store 2 2 \n",
"Yoga Studio 19 19 \n",
"\n",
" Venue Latitude Venue Longitude \n",
"Venue Category \n",
"Accessories Store 1 1 \n",
"Adult Boutique 2 2 \n",
"Afghan Restaurant 3 3 \n",
"Airport 2 2 \n",
"Airport Lounge 1 1 \n",
"American Restaurant 43 43 \n",
"Amphitheater 1 1 \n",
"Animal Shelter 1 1 \n",
"Antique Shop 2 2 \n",
"Aquarium 2 2 \n",
"Art Gallery 9 9 \n",
"Art Museum 1 1 \n",
"Arts & Crafts Store 8 8 \n",
"Asian Restaurant 25 25 \n",
"Athletics & Sports 11 11 \n",
"Auto Dealership 1 1 \n",
"Automotive Shop 3 3 \n",
"BBQ Joint 14 14 \n",
"Baby Store 1 1 \n",
"Badminton Court 2 2 \n",
"Bagel Shop 6 6 \n",
"Bakery 81 81 \n",
"Bank 46 46 \n",
"Bar 43 43 \n",
"Baseball Field 3 3 \n",
"Baseball Stadium 2 2 \n",
"Basketball Stadium 4 4 \n",
"Beach 9 9 \n",
"Beach Bar 1 1 \n",
"Beer Bar 17 17 \n",
"Beer Store 17 17 \n",
"Belgian Restaurant 2 2 \n",
"Bike Shop 2 2 \n",
"Bistro 5 5 \n",
"Bookstore 21 21 \n",
"Boutique 3 3 \n",
"Bowling Alley 4 4 \n",
"Brazilian Restaurant 2 2 \n",
"Breakfast Spot 33 33 \n",
"Brewery 23 23 \n",
"Bridal Shop 2 2 \n",
"Bridge 1 1 \n",
"Bubble Tea Shop 11 11 \n",
"Burger Joint 41 41 \n",
"Burrito Place 13 13 \n",
"Bus Line 11 11 \n",
"Bus Station 2 2 \n",
"Bus Stop 6 6 \n",
"Business Service 1 1 \n",
"Butcher 4 4 \n",
"Café 139 139 \n",
"Cajun / Creole Restaurant 1 1 \n",
"Candy Store 2 2 \n",
"Cantonese Restaurant 4 4 \n",
"Caribbean Restaurant 18 18 \n",
"Castle 1 1 \n",
"Cemetery 1 1 \n",
"Check Cashing Service 1 1 \n",
"Cheese Shop 5 5 \n",
"Chinese Restaurant 44 44 \n",
"Chiropractor 2 2 \n",
"Chocolate Shop 2 2 \n",
"Church 2 2 \n",
"Churrascaria 2 2 \n",
"Climbing Gym 2 2 \n",
"Clothing Store 18 18 \n",
"Cocktail Bar 13 13 \n",
"Coffee Shop 252 252 \n",
"College Gym 2 2 \n",
"College Quad 1 1 \n",
"College Rec Center 1 1 \n",
"College Stadium 1 1 \n",
"Comedy Club 3 3 \n",
"Comfort Food Restaurant 7 7 \n",
"Comic Shop 4 4 \n",
"Community Center 1 1 \n",
"Concert Hall 13 13 \n",
"Construction & Landscaping 1 1 \n",
"Convenience Store 26 26 \n",
"Cosmetics Shop 12 12 \n",
"Coworking Space 1 1 \n",
"Creperie 7 7 \n",
"Cuban Restaurant 3 3 \n",
"Cupcake Shop 4 4 \n",
"Curling Ice 3 3 \n",
"Dance Studio 8 8 \n",
"Deli / Bodega 19 19 \n",
"Department Store 7 7 \n",
"Design Studio 2 2 \n",
"Dessert Shop 26 26 \n",
"Dim Sum Restaurant 3 3 \n",
"Diner 26 26 \n",
"Discount Store 21 21 \n",
"Dive Bar 2 2 \n",
"Dog Run 7 7 \n",
"Doner Restaurant 2 2 \n",
"Donut Shop 3 3 \n",
"Dumpling Restaurant 2 2 \n",
"Eastern European Restaurant 5 5 \n",
"Electronics Store 16 16 \n",
"Empanada Restaurant 1 1 \n",
"Ethiopian Restaurant 6 6 \n",
"Event Space 4 4 \n",
"Falafel Restaurant 6 6 \n",
"Farm 1 1 \n",
"Farmers Market 14 14 \n",
"Fast Food Restaurant 60 60 \n",
"Field 1 1 \n",
"Filipino Restaurant 3 3 \n",
"Fireworks Store 1 1 \n",
"Fish & Chips Shop 7 7 \n",
"Fish Market 6 6 \n",
"Flea Market 3 3 \n",
"Flower Shop 4 4 \n",
"Food 2 2 \n",
"Food & Drink Shop 5 5 \n",
"Food Court 4 4 \n",
"Food Truck 5 5 \n",
"Fountain 1 1 \n",
"French Restaurant 16 16 \n",
"Fried Chicken Joint 23 23 \n",
"Frozen Yogurt Shop 3 3 \n",
"Fruit & Vegetable Store 3 3 \n",
"Furniture / Home Store 21 21 \n",
"Gaming Cafe 2 2 \n",
"Garden 4 4 \n",
"Garden Center 1 1 \n",
"Gas Station 1 1 \n",
"Gastropub 38 38 \n",
"Gay Bar 2 2 \n",
"General Entertainment 7 7 \n",
"German Restaurant 3 3 \n",
"Gift Shop 10 10 \n",
"Gluten-free Restaurant 2 2 \n",
"Golf Course 6 6 \n",
"Golf Driving Range 1 1 \n",
"Gourmet Shop 5 5 \n",
"Greek Restaurant 29 29 \n",
"Grocery Store 69 69 \n",
"Gym 45 45 \n",
"Gym / Fitness Center 24 24 \n",
"Gym Pool 5 5 \n",
"Hakka Restaurant 1 1 \n",
"Harbor / Marina 3 3 \n",
"Hardware Store 4 4 \n",
"Hawaiian Restaurant 1 1 \n",
"Health Food Store 2 2 \n",
"Historic Site 4 4 \n",
"History Museum 3 3 \n",
"Hobby Shop 8 8 \n",
"Hockey Arena 3 3 \n",
"Home Service 1 1 \n",
"Hookah Bar 2 2 \n",
"Hostel 4 4 \n",
"Hot Dog Joint 1 1 \n",
"Hotel 38 38 \n",
"Hotpot Restaurant 1 1 \n",
"Housing Development 1 1 \n",
"IT Services 1 1 \n",
"Ice Cream Shop 28 28 \n",
"Indian Chinese Restaurant 2 2 \n",
"Indian Restaurant 36 36 \n",
"Indie Movie Theater 5 5 \n",
"Indie Theater 1 1 \n",
"Indonesian Restaurant 2 2 \n",
"Intersection 20 20 \n",
"Italian Restaurant 86 86 \n",
"Japanese Restaurant 50 50 \n",
"Jazz Club 5 5 \n",
"Jewelry Store 1 1 \n",
"Jewish Restaurant 2 2 \n",
"Juice Bar 8 8 \n",
"Kitchen Supply Store 1 1 \n",
"Korean Restaurant 20 20 \n",
"Lake 1 1 \n",
"Latin American Restaurant 7 7 \n",
"Laundry Service 2 2 \n",
"Light Rail Station 2 2 \n",
"Liquor Store 25 25 \n",
"Lounge 7 7 \n",
"Mac & Cheese Joint 1 1 \n",
"Malay Restaurant 3 3 \n",
"Market 2 2 \n",
"Martial Arts Dojo 2 2 \n",
"Massage Studio 1 1 \n",
"Mattress Store 1 1 \n",
"Mediterranean Restaurant 9 9 \n",
"Men's Store 6 6 \n",
"Metro Station 5 5 \n",
"Mexican Restaurant 29 29 \n",
"Middle Eastern Restaurant 23 23 \n",
"Miscellaneous Shop 4 4 \n",
"Mobile Phone Shop 2 2 \n",
"Modern European Restaurant 4 4 \n",
"Monument / Landmark 3 3 \n",
"Moroccan Restaurant 1 1 \n",
"Motorcycle Shop 1 1 \n",
"Movie Theater 8 8 \n",
"Moving Target 2 2 \n",
"Museum 9 9 \n",
"Music School 2 2 \n",
"Music Store 2 2 \n",
"Music Venue 3 3 \n",
"Nail Salon 4 4 \n",
"Neighborhood 6 6 \n",
"New American Restaurant 7 7 \n",
"Nightclub 2 2 \n",
"Noodle House 7 7 \n",
"Office 4 4 \n",
"Opera House 1 1 \n",
"Optical Shop 3 3 \n",
"Organic Grocery 2 2 \n",
"Other Great Outdoors 2 2 \n",
"Other Repair Shop 1 1 \n",
"Pakistani Restaurant 1 1 \n",
"Paper / Office Supplies Store 5 5 \n",
"Park 123 123 \n",
"Pastry Shop 3 3 \n",
"Performing Arts Venue 6 6 \n",
"Persian Restaurant 1 1 \n",
"Pet Store 15 15 \n",
"Pharmacy 52 52 \n",
"Photography Lab 1 1 \n",
"Pie Shop 1 1 \n",
"Pizza Place 115 115 \n",
"Playground 11 11 \n",
"Plaza 10 10 \n",
"Poke Place 2 2 \n",
"Pool 8 8 \n",
"Pool Hall 2 2 \n",
"Portuguese Restaurant 7 7 \n",
"Poutine Place 1 1 \n",
"Print Shop 1 1 \n",
"Pub 37 37 \n",
"Ramen Restaurant 16 16 \n",
"Record Shop 2 2 \n",
"Recreation Center 1 1 \n",
"Rental Car Location 3 3 \n",
"Residential Building (Apartment / Condo) 1 1 \n",
"Restaurant 73 73 \n",
"River 1 1 \n",
"Road 2 2 \n",
"Rock Climbing Spot 1 1 \n",
"Rock Club 2 2 \n",
"Salad Place 4 4 \n",
"Salon / Barbershop 7 7 \n",
"Sandwich Place 64 64 \n",
"Scenic Lookout 3 3 \n",
"School 1 1 \n",
"Sculpture Garden 1 1 \n",
"Seafood Restaurant 21 21 \n",
"Shanghai Restaurant 1 1 \n",
"Shoe Store 3 3 \n",
"Shop & Service 3 3 \n",
"Shopping Mall 27 27 \n",
"Skate Park 3 3 \n",
"Skating Rink 16 16 \n",
"Ski Area 1 1 \n",
"Ski Chalet 1 1 \n",
"Smoke Shop 3 3 \n",
"Smoothie Shop 7 7 \n",
"Snack Place 5 5 \n",
"Soccer Field 4 4 \n",
"Soccer Stadium 3 3 \n",
"Soup Place 1 1 \n",
"South American Restaurant 1 1 \n",
"Spa 13 13 \n",
"Spanish Restaurant 1 1 \n",
"Speakeasy 5 5 \n",
"Sporting Goods Shop 16 16 \n",
"Sports Bar 9 9 \n",
"Sports Club 1 1 \n",
"Sri Lankan Restaurant 1 1 \n",
"Stadium 1 1 \n",
"Stationery Store 1 1 \n",
"Steakhouse 21 21 \n",
"Storage Facility 1 1 \n",
"Supermarket 28 28 \n",
"Supplement Shop 2 2 \n",
"Sushi Restaurant 48 48 \n",
"Taco Place 5 5 \n",
"Tailor Shop 2 2 \n",
"Taiwanese Restaurant 2 2 \n",
"Tanning Salon 1 1 \n",
"Tapas Restaurant 5 5 \n",
"Tea Room 21 21 \n",
"Tech Startup 1 1 \n",
"Tennis Court 5 5 \n",
"Thai Restaurant 39 39 \n",
"Theater 16 16 \n",
"Theme Restaurant 1 1 \n",
"Thrift / Vintage Store 3 3 \n",
"Tibetan Restaurant 1 1 \n",
"Toy / Game Store 3 3 \n",
"Track 2 2 \n",
"Trail 11 11 \n",
"Train Station 8 8 \n",
"Turkish Restaurant 5 5 \n",
"Vegetarian / Vegan Restaurant 26 26 \n",
"Video Game Store 4 4 \n",
"Video Store 3 3 \n",
"Vietnamese Restaurant 21 21 \n",
"Warehouse Store 1 1 \n",
"Wine Bar 7 7 \n",
"Wine Shop 3 3 \n",
"Wings Joint 8 8 \n",
"Women's Store 2 2 \n",
"Yoga Studio 19 19 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"toronto_venues.groupby('Venue Category').count()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Analyze each postal code. Find how common each venue category in postal codes."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Postal Code</th>\n",
" <th>Accessories Store</th>\n",
" <th>Adult Boutique</th>\n",
" <th>Afghan Restaurant</th>\n",
" <th>Airport</th>\n",
" <th>Airport Lounge</th>\n",
" <th>American Restaurant</th>\n",
" <th>Amphitheater</th>\n",
" <th>Animal Shelter</th>\n",
" <th>Antique Shop</th>\n",
" <th>Aquarium</th>\n",
" <th>Art Gallery</th>\n",
" <th>Art Museum</th>\n",
" <th>Arts &amp; Crafts Store</th>\n",
" <th>Asian Restaurant</th>\n",
" <th>Athletics &amp; Sports</th>\n",
" <th>Auto Dealership</th>\n",
" <th>Automotive Shop</th>\n",
" <th>BBQ Joint</th>\n",
" <th>Baby Store</th>\n",
" <th>Badminton Court</th>\n",
" <th>Bagel Shop</th>\n",
" <th>Bakery</th>\n",
" <th>Bank</th>\n",
" <th>Bar</th>\n",
" <th>Baseball Field</th>\n",
" <th>Baseball Stadium</th>\n",
" <th>Basketball Stadium</th>\n",
" <th>Beach</th>\n",
" <th>Beach Bar</th>\n",
" <th>Beer Bar</th>\n",
" <th>Beer Store</th>\n",
" <th>Belgian Restaurant</th>\n",
" <th>Bike Shop</th>\n",
" <th>Bistro</th>\n",
" <th>Bookstore</th>\n",
" <th>Boutique</th>\n",
" <th>Bowling Alley</th>\n",
" <th>Brazilian Restaurant</th>\n",
" <th>Breakfast Spot</th>\n",
" <th>Brewery</th>\n",
" <th>Bridal Shop</th>\n",
" <th>Bridge</th>\n",
" <th>Bubble Tea Shop</th>\n",
" <th>Burger Joint</th>\n",
" <th>Burrito Place</th>\n",
" <th>Bus Line</th>\n",
" <th>Bus Station</th>\n",
" <th>Bus Stop</th>\n",
" <th>Business Service</th>\n",
" <th>Butcher</th>\n",
" <th>Café</th>\n",
" <th>Cajun / Creole Restaurant</th>\n",
" <th>Candy Store</th>\n",
" <th>Cantonese Restaurant</th>\n",
" <th>Caribbean Restaurant</th>\n",
" <th>Castle</th>\n",
" <th>Cemetery</th>\n",
" <th>Check Cashing Service</th>\n",
" <th>Cheese Shop</th>\n",
" <th>Chinese Restaurant</th>\n",
" <th>Chiropractor</th>\n",
" <th>Chocolate Shop</th>\n",
" <th>Church</th>\n",
" <th>Churrascaria</th>\n",
" <th>Climbing Gym</th>\n",
" <th>Clothing Store</th>\n",
" <th>Cocktail Bar</th>\n",
" <th>Coffee Shop</th>\n",
" <th>College Gym</th>\n",
" <th>College Quad</th>\n",
" <th>College Rec Center</th>\n",
" <th>College Stadium</th>\n",
" <th>Comedy Club</th>\n",
" <th>Comfort Food Restaurant</th>\n",
" <th>Comic Shop</th>\n",
" <th>Community Center</th>\n",
" <th>Concert Hall</th>\n",
" <th>Construction &amp; Landscaping</th>\n",
" <th>Convenience Store</th>\n",
" <th>Cosmetics Shop</th>\n",
" <th>Coworking Space</th>\n",
" <th>Creperie</th>\n",
" <th>Cuban Restaurant</th>\n",
" <th>Cupcake Shop</th>\n",
" <th>Curling Ice</th>\n",
" <th>Dance Studio</th>\n",
" <th>Deli / Bodega</th>\n",
" <th>Department Store</th>\n",
" <th>Design Studio</th>\n",
" <th>Dessert Shop</th>\n",
" <th>Dim Sum Restaurant</th>\n",
" <th>Diner</th>\n",
" <th>Discount Store</th>\n",
" <th>Dive Bar</th>\n",
" <th>Dog Run</th>\n",
" <th>Doner Restaurant</th>\n",
" <th>Donut Shop</th>\n",
" <th>Dumpling Restaurant</th>\n",
" <th>Eastern European Restaurant</th>\n",
" <th>Electronics Store</th>\n",
" <th>Empanada Restaurant</th>\n",
" <th>Ethiopian Restaurant</th>\n",
" <th>Event Space</th>\n",
" <th>Falafel Restaurant</th>\n",
" <th>Farm</th>\n",
" <th>Farmers Market</th>\n",
" <th>Fast Food Restaurant</th>\n",
" <th>Field</th>\n",
" <th>Filipino Restaurant</th>\n",
" <th>Fireworks Store</th>\n",
" <th>Fish &amp; Chips Shop</th>\n",
" <th>Fish Market</th>\n",
" <th>Flea Market</th>\n",
" <th>Flower Shop</th>\n",
" <th>Food</th>\n",
" <th>Food &amp; Drink Shop</th>\n",
" <th>Food Court</th>\n",
" <th>Food Truck</th>\n",
" <th>Fountain</th>\n",
" <th>French Restaurant</th>\n",
" <th>Fried Chicken Joint</th>\n",
" <th>Frozen Yogurt Shop</th>\n",
" <th>Fruit &amp; Vegetable Store</th>\n",
" <th>Furniture / Home Store</th>\n",
" <th>Gaming Cafe</th>\n",
" <th>Garden</th>\n",
" <th>Garden Center</th>\n",
" <th>Gas Station</th>\n",
" <th>Gastropub</th>\n",
" <th>Gay Bar</th>\n",
" <th>General Entertainment</th>\n",
" <th>German Restaurant</th>\n",
" <th>Gift Shop</th>\n",
" <th>Gluten-free Restaurant</th>\n",
" <th>Golf Course</th>\n",
" <th>Golf Driving Range</th>\n",
" <th>Gourmet Shop</th>\n",
" <th>Greek Restaurant</th>\n",
" <th>Grocery Store</th>\n",
" <th>Gym</th>\n",
" <th>Gym / Fitness Center</th>\n",
" <th>Gym Pool</th>\n",
" <th>Hakka Restaurant</th>\n",
" <th>Harbor / Marina</th>\n",
" <th>Hardware Store</th>\n",
" <th>Hawaiian Restaurant</th>\n",
" <th>Health Food Store</th>\n",
" <th>Historic Site</th>\n",
" <th>History Museum</th>\n",
" <th>Hobby Shop</th>\n",
" <th>Hockey Arena</th>\n",
" <th>Home Service</th>\n",
" <th>Hookah Bar</th>\n",
" <th>Hostel</th>\n",
" <th>Hot Dog Joint</th>\n",
" <th>Hotel</th>\n",
" <th>Hotpot Restaurant</th>\n",
" <th>Housing Development</th>\n",
" <th>IT Services</th>\n",
" <th>Ice Cream Shop</th>\n",
" <th>Indian Chinese Restaurant</th>\n",
" <th>Indian Restaurant</th>\n",
" <th>Indie Movie Theater</th>\n",
" <th>Indie Theater</th>\n",
" <th>Indonesian Restaurant</th>\n",
" <th>Intersection</th>\n",
" <th>Italian Restaurant</th>\n",
" <th>Japanese Restaurant</th>\n",
" <th>Jazz Club</th>\n",
" <th>Jewelry Store</th>\n",
" <th>Jewish Restaurant</th>\n",
" <th>Juice Bar</th>\n",
" <th>Kitchen Supply Store</th>\n",
" <th>Korean Restaurant</th>\n",
" <th>Lake</th>\n",
" <th>Latin American Restaurant</th>\n",
" <th>Laundry Service</th>\n",
" <th>Light Rail Station</th>\n",
" <th>Liquor Store</th>\n",
" <th>Lounge</th>\n",
" <th>Mac &amp; Cheese Joint</th>\n",
" <th>Malay Restaurant</th>\n",
" <th>Market</th>\n",
" <th>Martial Arts Dojo</th>\n",
" <th>Massage Studio</th>\n",
" <th>Mattress Store</th>\n",
" <th>Mediterranean Restaurant</th>\n",
" <th>Men's Store</th>\n",
" <th>Metro Station</th>\n",
" <th>Mexican Restaurant</th>\n",
" <th>Middle Eastern Restaurant</th>\n",
" <th>Miscellaneous Shop</th>\n",
" <th>Mobile Phone Shop</th>\n",
" <th>Modern European Restaurant</th>\n",
" <th>Monument / Landmark</th>\n",
" <th>Moroccan Restaurant</th>\n",
" <th>Motorcycle Shop</th>\n",
" <th>Movie Theater</th>\n",
" <th>Moving Target</th>\n",
" <th>Museum</th>\n",
" <th>Music School</th>\n",
" <th>Music Store</th>\n",
" <th>Music Venue</th>\n",
" <th>Nail Salon</th>\n",
" <th>Neighborhood</th>\n",
" <th>New American Restaurant</th>\n",
" <th>Nightclub</th>\n",
" <th>Noodle House</th>\n",
" <th>Office</th>\n",
" <th>Opera House</th>\n",
" <th>Optical Shop</th>\n",
" <th>Organic Grocery</th>\n",
" <th>Other Great Outdoors</th>\n",
" <th>Other Repair Shop</th>\n",
" <th>Pakistani Restaurant</th>\n",
" <th>Paper / Office Supplies Store</th>\n",
" <th>Park</th>\n",
" <th>Pastry Shop</th>\n",
" <th>Performing Arts Venue</th>\n",
" <th>Persian Restaurant</th>\n",
" <th>Pet Store</th>\n",
" <th>Pharmacy</th>\n",
" <th>Photography Lab</th>\n",
" <th>Pie Shop</th>\n",
" <th>Pizza Place</th>\n",
" <th>Playground</th>\n",
" <th>Plaza</th>\n",
" <th>Poke Place</th>\n",
" <th>Pool</th>\n",
" <th>Pool Hall</th>\n",
" <th>Portuguese Restaurant</th>\n",
" <th>Poutine Place</th>\n",
" <th>Print Shop</th>\n",
" <th>Pub</th>\n",
" <th>Ramen Restaurant</th>\n",
" <th>Record Shop</th>\n",
" <th>Recreation Center</th>\n",
" <th>Rental Car Location</th>\n",
" <th>Residential Building (Apartment / Condo)</th>\n",
" <th>Restaurant</th>\n",
" <th>River</th>\n",
" <th>Road</th>\n",
" <th>Rock Climbing Spot</th>\n",
" <th>Rock Club</th>\n",
" <th>Salad Place</th>\n",
" <th>Salon / Barbershop</th>\n",
" <th>Sandwich Place</th>\n",
" <th>Scenic Lookout</th>\n",
" <th>School</th>\n",
" <th>Sculpture Garden</th>\n",
" <th>Seafood Restaurant</th>\n",
" <th>Shanghai Restaurant</th>\n",
" <th>Shoe Store</th>\n",
" <th>Shop &amp; Service</th>\n",
" <th>Shopping Mall</th>\n",
" <th>Skate Park</th>\n",
" <th>Skating Rink</th>\n",
" <th>Ski Area</th>\n",
" <th>Ski Chalet</th>\n",
" <th>Smoke Shop</th>\n",
" <th>Smoothie Shop</th>\n",
" <th>Snack Place</th>\n",
" <th>Soccer Field</th>\n",
" <th>Soccer Stadium</th>\n",
" <th>Soup Place</th>\n",
" <th>South American Restaurant</th>\n",
" <th>Spa</th>\n",
" <th>Spanish Restaurant</th>\n",
" <th>Speakeasy</th>\n",
" <th>Sporting Goods Shop</th>\n",
" <th>Sports Bar</th>\n",
" <th>Sports Club</th>\n",
" <th>Sri Lankan Restaurant</th>\n",
" <th>Stadium</th>\n",
" <th>Stationery Store</th>\n",
" <th>Steakhouse</th>\n",
" <th>Storage Facility</th>\n",
" <th>Supermarket</th>\n",
" <th>Supplement Shop</th>\n",
" <th>Sushi Restaurant</th>\n",
" <th>Taco Place</th>\n",
" <th>Tailor Shop</th>\n",
" <th>Taiwanese Restaurant</th>\n",
" <th>Tanning Salon</th>\n",
" <th>Tapas Restaurant</th>\n",
" <th>Tea Room</th>\n",
" <th>Tech Startup</th>\n",
" <th>Tennis Court</th>\n",
" <th>Thai Restaurant</th>\n",
" <th>Theater</th>\n",
" <th>Theme Restaurant</th>\n",
" <th>Thrift / Vintage Store</th>\n",
" <th>Tibetan Restaurant</th>\n",
" <th>Toy / Game Store</th>\n",
" <th>Track</th>\n",
" <th>Trail</th>\n",
" <th>Train Station</th>\n",
" <th>Turkish Restaurant</th>\n",
" <th>Vegetarian / Vegan Restaurant</th>\n",
" <th>Video Game Store</th>\n",
" <th>Video Store</th>\n",
" <th>Vietnamese Restaurant</th>\n",
" <th>Warehouse Store</th>\n",
" <th>Wine Bar</th>\n",
" <th>Wine Shop</th>\n",
" <th>Wings Joint</th>\n",
" <th>Women's Store</th>\n",
" <th>Yoga Studio</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>M1B</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>M1B</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>M1B</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>M1B</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>M1B</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Postal Code Accessories Store Adult Boutique Afghan Restaurant Airport \\\n",
"0 M1B 0 0 0 0 \n",
"1 M1B 0 0 0 0 \n",
"2 M1B 0 0 0 0 \n",
"3 M1B 0 0 0 0 \n",
"4 M1B 0 0 0 0 \n",
"\n",
" Airport Lounge American Restaurant Amphitheater Animal Shelter \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Antique Shop Aquarium Art Gallery Art Museum Arts & Crafts Store \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" Asian Restaurant Athletics & Sports Auto Dealership Automotive Shop \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" BBQ Joint Baby Store Badminton Court Bagel Shop Bakery Bank Bar \\\n",
"0 0 0 0 0 0 0 0 \n",
"1 0 0 0 0 0 0 0 \n",
"2 0 0 0 0 0 0 0 \n",
"3 0 0 0 0 0 0 0 \n",
"4 0 0 0 0 0 0 0 \n",
"\n",
" Baseball Field Baseball Stadium Basketball Stadium Beach Beach Bar \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" Beer Bar Beer Store Belgian Restaurant Bike Shop Bistro Bookstore \\\n",
"0 0 0 0 0 0 0 \n",
"1 0 0 0 0 0 0 \n",
"2 0 0 0 0 0 0 \n",
"3 0 0 0 0 0 0 \n",
"4 0 0 0 0 0 0 \n",
"\n",
" Boutique Bowling Alley Brazilian Restaurant Breakfast Spot Brewery \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" Bridal Shop Bridge Bubble Tea Shop Burger Joint Burrito Place \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" Bus Line Bus Station Bus Stop Business Service Butcher Café \\\n",
"0 0 0 0 0 0 0 \n",
"1 0 0 0 0 0 0 \n",
"2 0 0 0 0 0 0 \n",
"3 0 0 0 0 0 0 \n",
"4 0 0 0 0 0 0 \n",
"\n",
" Cajun / Creole Restaurant Candy Store Cantonese Restaurant \\\n",
"0 0 0 0 \n",
"1 0 0 0 \n",
"2 0 0 0 \n",
"3 0 0 0 \n",
"4 0 0 0 \n",
"\n",
" Caribbean Restaurant Castle Cemetery Check Cashing Service Cheese Shop \\\n",
"0 0 0 0 0 0 \n",
"1 1 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" Chinese Restaurant Chiropractor Chocolate Shop Church Churrascaria \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" Climbing Gym Clothing Store Cocktail Bar Coffee Shop College Gym \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" College Quad College Rec Center College Stadium Comedy Club \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Comfort Food Restaurant Comic Shop Community Center Concert Hall \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Construction & Landscaping Convenience Store Cosmetics Shop \\\n",
"0 0 0 0 \n",
"1 0 0 0 \n",
"2 0 0 0 \n",
"3 0 0 0 \n",
"4 0 0 0 \n",
"\n",
" Coworking Space Creperie Cuban Restaurant Cupcake Shop Curling Ice \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" Dance Studio Deli / Bodega Department Store Design Studio Dessert Shop \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" Dim Sum Restaurant Diner Discount Store Dive Bar Dog Run \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" Doner Restaurant Donut Shop Dumpling Restaurant \\\n",
"0 0 0 0 \n",
"1 0 0 0 \n",
"2 0 0 0 \n",
"3 0 0 0 \n",
"4 0 0 0 \n",
"\n",
" Eastern European Restaurant Electronics Store Empanada Restaurant \\\n",
"0 0 0 0 \n",
"1 0 0 0 \n",
"2 0 0 0 \n",
"3 0 0 0 \n",
"4 0 0 0 \n",
"\n",
" Ethiopian Restaurant Event Space Falafel Restaurant Farm \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Farmers Market Fast Food Restaurant Field Filipino Restaurant \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 1 0 0 \n",
"3 0 0 0 0 \n",
"4 0 1 0 0 \n",
"\n",
" Fireworks Store Fish & Chips Shop Fish Market Flea Market Flower Shop \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" Food Food & Drink Shop Food Court Food Truck Fountain \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" French Restaurant Fried Chicken Joint Frozen Yogurt Shop \\\n",
"0 0 0 0 \n",
"1 0 0 0 \n",
"2 0 0 0 \n",
"3 0 0 0 \n",
"4 0 0 0 \n",
"\n",
" Fruit & Vegetable Store Furniture / Home Store Gaming Cafe Garden \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Garden Center Gas Station Gastropub Gay Bar General Entertainment \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" German Restaurant Gift Shop Gluten-free Restaurant Golf Course \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Golf Driving Range Gourmet Shop Greek Restaurant Grocery Store Gym \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" Gym / Fitness Center Gym Pool Hakka Restaurant Harbor / Marina \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Hardware Store Hawaiian Restaurant Health Food Store Historic Site \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" History Museum Hobby Shop Hockey Arena Home Service Hookah Bar Hostel \\\n",
"0 0 0 0 0 0 0 \n",
"1 0 0 0 0 0 0 \n",
"2 0 0 0 0 0 0 \n",
"3 0 0 0 0 0 0 \n",
"4 0 0 0 0 0 0 \n",
"\n",
" Hot Dog Joint Hotel Hotpot Restaurant Housing Development IT Services \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" Ice Cream Shop Indian Chinese Restaurant Indian Restaurant \\\n",
"0 0 0 0 \n",
"1 0 0 0 \n",
"2 0 0 0 \n",
"3 0 0 0 \n",
"4 0 0 0 \n",
"\n",
" Indie Movie Theater Indie Theater Indonesian Restaurant Intersection \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Italian Restaurant Japanese Restaurant Jazz Club Jewelry Store \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Jewish Restaurant Juice Bar Kitchen Supply Store Korean Restaurant \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Lake Latin American Restaurant Laundry Service Light Rail Station \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Liquor Store Lounge Mac & Cheese Joint Malay Restaurant Market \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" Martial Arts Dojo Massage Studio Mattress Store \\\n",
"0 0 0 0 \n",
"1 0 0 0 \n",
"2 0 0 0 \n",
"3 0 0 0 \n",
"4 0 0 0 \n",
"\n",
" Mediterranean Restaurant Men's Store Metro Station Mexican Restaurant \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Middle Eastern Restaurant Miscellaneous Shop Mobile Phone Shop \\\n",
"0 0 0 0 \n",
"1 0 0 0 \n",
"2 0 0 0 \n",
"3 0 0 0 \n",
"4 0 0 0 \n",
"\n",
" Modern European Restaurant Monument / Landmark Moroccan Restaurant \\\n",
"0 0 0 0 \n",
"1 0 0 0 \n",
"2 0 0 0 \n",
"3 0 0 0 \n",
"4 0 0 0 \n",
"\n",
" Motorcycle Shop Movie Theater Moving Target Museum Music School \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" Music Store Music Venue Nail Salon Neighborhood \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" New American Restaurant Nightclub Noodle House Office Opera House \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" Optical Shop Organic Grocery Other Great Outdoors Other Repair Shop \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Pakistani Restaurant Paper / Office Supplies Store Park Pastry Shop \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 1 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Performing Arts Venue Persian Restaurant Pet Store Pharmacy \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Photography Lab Pie Shop Pizza Place Playground Plaza Poke Place \\\n",
"0 0 0 0 0 0 0 \n",
"1 0 0 0 0 0 0 \n",
"2 0 0 0 0 0 0 \n",
"3 0 0 0 0 0 0 \n",
"4 0 0 0 0 0 0 \n",
"\n",
" Pool Pool Hall Portuguese Restaurant Poutine Place Print Shop Pub \\\n",
"0 0 0 0 0 0 0 \n",
"1 0 0 0 0 0 0 \n",
"2 0 0 0 0 0 0 \n",
"3 0 0 0 0 0 0 \n",
"4 0 0 0 0 0 0 \n",
"\n",
" Ramen Restaurant Record Shop Recreation Center Rental Car Location \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Residential Building (Apartment / Condo) Restaurant River Road \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Rock Climbing Spot Rock Club Salad Place Salon / Barbershop \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Sandwich Place Scenic Lookout School Sculpture Garden \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Seafood Restaurant Shanghai Restaurant Shoe Store Shop & Service \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Shopping Mall Skate Park Skating Rink Ski Area Ski Chalet Smoke Shop \\\n",
"0 0 0 0 0 0 0 \n",
"1 0 0 0 0 0 0 \n",
"2 0 0 0 0 0 0 \n",
"3 0 0 0 0 0 0 \n",
"4 0 0 0 0 0 0 \n",
"\n",
" Smoothie Shop Snack Place Soccer Field Soccer Stadium Soup Place \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" South American Restaurant Spa Spanish Restaurant Speakeasy \\\n",
"0 0 1 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Sporting Goods Shop Sports Bar Sports Club Sri Lankan Restaurant \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Stadium Stationery Store Steakhouse Storage Facility Supermarket \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" Supplement Shop Sushi Restaurant Taco Place Tailor Shop \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Taiwanese Restaurant Tanning Salon Tapas Restaurant Tea Room \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Tech Startup Tennis Court Thai Restaurant Theater Theme Restaurant \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" Thrift / Vintage Store Tibetan Restaurant Toy / Game Store Track Trail \\\n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 \n",
"\n",
" Train Station Turkish Restaurant Vegetarian / Vegan Restaurant \\\n",
"0 0 0 0 \n",
"1 0 0 0 \n",
"2 0 0 0 \n",
"3 0 0 0 \n",
"4 0 0 0 \n",
"\n",
" Video Game Store Video Store Vietnamese Restaurant Warehouse Store \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 0 0 0 0 \n",
"3 0 0 0 0 \n",
"4 0 0 0 0 \n",
"\n",
" Wine Bar Wine Shop Wings Joint Women's Store Yoga Studio \n",
"0 0 0 0 0 0 \n",
"1 0 0 0 0 0 \n",
"2 0 0 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 0 0 0 0 0 "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# one hot encoding\n",
"toronto_onehot = pd.get_dummies(toronto_venues[['Venue Category']], prefix=\"\", prefix_sep=\"\")\n",
"\n",
"# add neighborhood column back to dataframe\n",
"toronto_onehot['Postal Code'] = toronto_venues['Postal Code'] \n",
"\n",
"# move neighborhood column to the first column\n",
"fixed_columns = [toronto_onehot.columns[-1]] + list(toronto_onehot.columns[:-1])\n",
"toronto_onehot = toronto_onehot[fixed_columns]\n",
"\n",
"toronto_onehot.head()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(3359, 309)"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"toronto_onehot.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, let's group rows by neighborhood and by taking the mean of the frequency of occurrence of each category"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Postal Code</th>\n",
" <th>Accessories Store</th>\n",
" <th>Adult Boutique</th>\n",
" <th>Afghan Restaurant</th>\n",
" <th>Airport</th>\n",
" <th>Airport Lounge</th>\n",
" <th>American Restaurant</th>\n",
" <th>Amphitheater</th>\n",
" <th>Animal Shelter</th>\n",
" <th>Antique Shop</th>\n",
" <th>Aquarium</th>\n",
" <th>Art Gallery</th>\n",
" <th>Art Museum</th>\n",
" <th>Arts &amp; Crafts Store</th>\n",
" <th>Asian Restaurant</th>\n",
" <th>Athletics &amp; Sports</th>\n",
" <th>Auto Dealership</th>\n",
" <th>Automotive Shop</th>\n",
" <th>BBQ Joint</th>\n",
" <th>Baby Store</th>\n",
" <th>Badminton Court</th>\n",
" <th>Bagel Shop</th>\n",
" <th>Bakery</th>\n",
" <th>Bank</th>\n",
" <th>Bar</th>\n",
" <th>Baseball Field</th>\n",
" <th>Baseball Stadium</th>\n",
" <th>Basketball Stadium</th>\n",
" <th>Beach</th>\n",
" <th>Beach Bar</th>\n",
" <th>Beer Bar</th>\n",
" <th>Beer Store</th>\n",
" <th>Belgian Restaurant</th>\n",
" <th>Bike Shop</th>\n",
" <th>Bistro</th>\n",
" <th>Bookstore</th>\n",
" <th>Boutique</th>\n",
" <th>Bowling Alley</th>\n",
" <th>Brazilian Restaurant</th>\n",
" <th>Breakfast Spot</th>\n",
" <th>Brewery</th>\n",
" <th>Bridal Shop</th>\n",
" <th>Bridge</th>\n",
" <th>Bubble Tea Shop</th>\n",
" <th>Burger Joint</th>\n",
" <th>Burrito Place</th>\n",
" <th>Bus Line</th>\n",
" <th>Bus Station</th>\n",
" <th>Bus Stop</th>\n",
" <th>Business Service</th>\n",
" <th>Butcher</th>\n",
" <th>Café</th>\n",
" <th>Cajun / Creole Restaurant</th>\n",
" <th>Candy Store</th>\n",
" <th>Cantonese Restaurant</th>\n",
" <th>Caribbean Restaurant</th>\n",
" <th>Castle</th>\n",
" <th>Cemetery</th>\n",
" <th>Check Cashing Service</th>\n",
" <th>Cheese Shop</th>\n",
" <th>Chinese Restaurant</th>\n",
" <th>Chiropractor</th>\n",
" <th>Chocolate Shop</th>\n",
" <th>Church</th>\n",
" <th>Churrascaria</th>\n",
" <th>Climbing Gym</th>\n",
" <th>Clothing Store</th>\n",
" <th>Cocktail Bar</th>\n",
" <th>Coffee Shop</th>\n",
" <th>College Gym</th>\n",
" <th>College Quad</th>\n",
" <th>College Rec Center</th>\n",
" <th>College Stadium</th>\n",
" <th>Comedy Club</th>\n",
" <th>Comfort Food Restaurant</th>\n",
" <th>Comic Shop</th>\n",
" <th>Community Center</th>\n",
" <th>Concert Hall</th>\n",
" <th>Construction &amp; Landscaping</th>\n",
" <th>Convenience Store</th>\n",
" <th>Cosmetics Shop</th>\n",
" <th>Coworking Space</th>\n",
" <th>Creperie</th>\n",
" <th>Cuban Restaurant</th>\n",
" <th>Cupcake Shop</th>\n",
" <th>Curling Ice</th>\n",
" <th>Dance Studio</th>\n",
" <th>Deli / Bodega</th>\n",
" <th>Department Store</th>\n",
" <th>Design Studio</th>\n",
" <th>Dessert Shop</th>\n",
" <th>Dim Sum Restaurant</th>\n",
" <th>Diner</th>\n",
" <th>Discount Store</th>\n",
" <th>Dive Bar</th>\n",
" <th>Dog Run</th>\n",
" <th>Doner Restaurant</th>\n",
" <th>Donut Shop</th>\n",
" <th>Dumpling Restaurant</th>\n",
" <th>Eastern European Restaurant</th>\n",
" <th>Electronics Store</th>\n",
" <th>Empanada Restaurant</th>\n",
" <th>Ethiopian Restaurant</th>\n",
" <th>Event Space</th>\n",
" <th>Falafel Restaurant</th>\n",
" <th>Farm</th>\n",
" <th>Farmers Market</th>\n",
" <th>Fast Food Restaurant</th>\n",
" <th>Field</th>\n",
" <th>Filipino Restaurant</th>\n",
" <th>Fireworks Store</th>\n",
" <th>Fish &amp; Chips Shop</th>\n",
" <th>Fish Market</th>\n",
" <th>Flea Market</th>\n",
" <th>Flower Shop</th>\n",
" <th>Food</th>\n",
" <th>Food &amp; Drink Shop</th>\n",
" <th>Food Court</th>\n",
" <th>Food Truck</th>\n",
" <th>Fountain</th>\n",
" <th>French Restaurant</th>\n",
" <th>Fried Chicken Joint</th>\n",
" <th>Frozen Yogurt Shop</th>\n",
" <th>Fruit &amp; Vegetable Store</th>\n",
" <th>Furniture / Home Store</th>\n",
" <th>Gaming Cafe</th>\n",
" <th>Garden</th>\n",
" <th>Garden Center</th>\n",
" <th>Gas Station</th>\n",
" <th>Gastropub</th>\n",
" <th>Gay Bar</th>\n",
" <th>General Entertainment</th>\n",
" <th>German Restaurant</th>\n",
" <th>Gift Shop</th>\n",
" <th>Gluten-free Restaurant</th>\n",
" <th>Golf Course</th>\n",
" <th>Golf Driving Range</th>\n",
" <th>Gourmet Shop</th>\n",
" <th>Greek Restaurant</th>\n",
" <th>Grocery Store</th>\n",
" <th>Gym</th>\n",
" <th>Gym / Fitness Center</th>\n",
" <th>Gym Pool</th>\n",
" <th>Hakka Restaurant</th>\n",
" <th>Harbor / Marina</th>\n",
" <th>Hardware Store</th>\n",
" <th>Hawaiian Restaurant</th>\n",
" <th>Health Food Store</th>\n",
" <th>Historic Site</th>\n",
" <th>History Museum</th>\n",
" <th>Hobby Shop</th>\n",
" <th>Hockey Arena</th>\n",
" <th>Home Service</th>\n",
" <th>Hookah Bar</th>\n",
" <th>Hostel</th>\n",
" <th>Hot Dog Joint</th>\n",
" <th>Hotel</th>\n",
" <th>Hotpot Restaurant</th>\n",
" <th>Housing Development</th>\n",
" <th>IT Services</th>\n",
" <th>Ice Cream Shop</th>\n",
" <th>Indian Chinese Restaurant</th>\n",
" <th>Indian Restaurant</th>\n",
" <th>Indie Movie Theater</th>\n",
" <th>Indie Theater</th>\n",
" <th>Indonesian Restaurant</th>\n",
" <th>Intersection</th>\n",
" <th>Italian Restaurant</th>\n",
" <th>Japanese Restaurant</th>\n",
" <th>Jazz Club</th>\n",
" <th>Jewelry Store</th>\n",
" <th>Jewish Restaurant</th>\n",
" <th>Juice Bar</th>\n",
" <th>Kitchen Supply Store</th>\n",
" <th>Korean Restaurant</th>\n",
" <th>Lake</th>\n",
" <th>Latin American Restaurant</th>\n",
" <th>Laundry Service</th>\n",
" <th>Light Rail Station</th>\n",
" <th>Liquor Store</th>\n",
" <th>Lounge</th>\n",
" <th>Mac &amp; Cheese Joint</th>\n",
" <th>Malay Restaurant</th>\n",
" <th>Market</th>\n",
" <th>Martial Arts Dojo</th>\n",
" <th>Massage Studio</th>\n",
" <th>Mattress Store</th>\n",
" <th>Mediterranean Restaurant</th>\n",
" <th>Men's Store</th>\n",
" <th>Metro Station</th>\n",
" <th>Mexican Restaurant</th>\n",
" <th>Middle Eastern Restaurant</th>\n",
" <th>Miscellaneous Shop</th>\n",
" <th>Mobile Phone Shop</th>\n",
" <th>Modern European Restaurant</th>\n",
" <th>Monument / Landmark</th>\n",
" <th>Moroccan Restaurant</th>\n",
" <th>Motorcycle Shop</th>\n",
" <th>Movie Theater</th>\n",
" <th>Moving Target</th>\n",
" <th>Museum</th>\n",
" <th>Music School</th>\n",
" <th>Music Store</th>\n",
" <th>Music Venue</th>\n",
" <th>Nail Salon</th>\n",
" <th>Neighborhood</th>\n",
" <th>New American Restaurant</th>\n",
" <th>Nightclub</th>\n",
" <th>Noodle House</th>\n",
" <th>Office</th>\n",
" <th>Opera House</th>\n",
" <th>Optical Shop</th>\n",
" <th>Organic Grocery</th>\n",
" <th>Other Great Outdoors</th>\n",
" <th>Other Repair Shop</th>\n",
" <th>Pakistani Restaurant</th>\n",
" <th>Paper / Office Supplies Store</th>\n",
" <th>Park</th>\n",
" <th>Pastry Shop</th>\n",
" <th>Performing Arts Venue</th>\n",
" <th>Persian Restaurant</th>\n",
" <th>Pet Store</th>\n",
" <th>Pharmacy</th>\n",
" <th>Photography Lab</th>\n",
" <th>Pie Shop</th>\n",
" <th>Pizza Place</th>\n",
" <th>Playground</th>\n",
" <th>Plaza</th>\n",
" <th>Poke Place</th>\n",
" <th>Pool</th>\n",
" <th>Pool Hall</th>\n",
" <th>Portuguese Restaurant</th>\n",
" <th>Poutine Place</th>\n",
" <th>Print Shop</th>\n",
" <th>Pub</th>\n",
" <th>Ramen Restaurant</th>\n",
" <th>Record Shop</th>\n",
" <th>Recreation Center</th>\n",
" <th>Rental Car Location</th>\n",
" <th>Residential Building (Apartment / Condo)</th>\n",
" <th>Restaurant</th>\n",
" <th>River</th>\n",
" <th>Road</th>\n",
" <th>Rock Climbing Spot</th>\n",
" <th>Rock Club</th>\n",
" <th>Salad Place</th>\n",
" <th>Salon / Barbershop</th>\n",
" <th>Sandwich Place</th>\n",
" <th>Scenic Lookout</th>\n",
" <th>School</th>\n",
" <th>Sculpture Garden</th>\n",
" <th>Seafood Restaurant</th>\n",
" <th>Shanghai Restaurant</th>\n",
" <th>Shoe Store</th>\n",
" <th>Shop &amp; Service</th>\n",
" <th>Shopping Mall</th>\n",
" <th>Skate Park</th>\n",
" <th>Skating Rink</th>\n",
" <th>Ski Area</th>\n",
" <th>Ski Chalet</th>\n",
" <th>Smoke Shop</th>\n",
" <th>Smoothie Shop</th>\n",
" <th>Snack Place</th>\n",
" <th>Soccer Field</th>\n",
" <th>Soccer Stadium</th>\n",
" <th>Soup Place</th>\n",
" <th>South American Restaurant</th>\n",
" <th>Spa</th>\n",
" <th>Spanish Restaurant</th>\n",
" <th>Speakeasy</th>\n",
" <th>Sporting Goods Shop</th>\n",
" <th>Sports Bar</th>\n",
" <th>Sports Club</th>\n",
" <th>Sri Lankan Restaurant</th>\n",
" <th>Stadium</th>\n",
" <th>Stationery Store</th>\n",
" <th>Steakhouse</th>\n",
" <th>Storage Facility</th>\n",
" <th>Supermarket</th>\n",
" <th>Supplement Shop</th>\n",
" <th>Sushi Restaurant</th>\n",
" <th>Taco Place</th>\n",
" <th>Tailor Shop</th>\n",
" <th>Taiwanese Restaurant</th>\n",
" <th>Tanning Salon</th>\n",
" <th>Tapas Restaurant</th>\n",
" <th>Tea Room</th>\n",
" <th>Tech Startup</th>\n",
" <th>Tennis Court</th>\n",
" <th>Thai Restaurant</th>\n",
" <th>Theater</th>\n",
" <th>Theme Restaurant</th>\n",
" <th>Thrift / Vintage Store</th>\n",
" <th>Tibetan Restaurant</th>\n",
" <th>Toy / Game Store</th>\n",
" <th>Track</th>\n",
" <th>Trail</th>\n",
" <th>Train Station</th>\n",
" <th>Turkish Restaurant</th>\n",
" <th>Vegetarian / Vegan Restaurant</th>\n",
" <th>Video Game Store</th>\n",
" <th>Video Store</th>\n",
" <th>Vietnamese Restaurant</th>\n",
" <th>Warehouse Store</th>\n",
" <th>Wine Bar</th>\n",
" <th>Wine Shop</th>\n",
" <th>Wings Joint</th>\n",
" <th>Women's Store</th>\n",
" <th>Yoga Studio</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>M1B</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.066667</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.066667</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.133333</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.200000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.066667</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.066667</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.066667</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.066667</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.066667</td>\n",
" <td>0.066667</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.066667</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.066667</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>M1C</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.2</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.200000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.2</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.200000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.2</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>M1E</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.043478</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.043478</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.043478</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.086957</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.043478</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.086957</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.043478</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.043478</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.043478</td>\n",
" <td>0.043478</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.043478</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.043478</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.043478</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.173913</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.043478</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.043478</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.043478</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.043478</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>M1G</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.142857</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.285714</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.142857</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.142857</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.142857</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.142857</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>M1H</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.034483</td>\n",
" <td>0.034483</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.137931</td>\n",
" <td>0.034483</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.034483</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.034483</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.034483</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.103448</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.034483</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.034483</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.034483</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.034483</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.034483</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.068966</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.034483</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.068966</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.034483</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.034483</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.034483</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.034483</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.034483</td>\n",
" <td>0.0</td>\n",
" <td>0.034483</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Postal Code Accessories Store Adult Boutique Afghan Restaurant Airport \\\n",
"0 M1B 0.0 0.0 0.0 0.0 \n",
"1 M1C 0.0 0.0 0.0 0.0 \n",
"2 M1E 0.0 0.0 0.0 0.0 \n",
"3 M1G 0.0 0.0 0.0 0.0 \n",
"4 M1H 0.0 0.0 0.0 0.0 \n",
"\n",
" Airport Lounge American Restaurant Amphitheater Animal Shelter \\\n",
"0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 \n",
"\n",
" Antique Shop Aquarium Art Gallery Art Museum Arts & Crafts Store \\\n",
"0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Asian Restaurant Athletics & Sports Auto Dealership Automotive Shop \\\n",
"0 0.000000 0.000000 0.0 0.0 \n",
"1 0.000000 0.000000 0.0 0.0 \n",
"2 0.000000 0.000000 0.0 0.0 \n",
"3 0.000000 0.000000 0.0 0.0 \n",
"4 0.034483 0.034483 0.0 0.0 \n",
"\n",
" BBQ Joint Baby Store Badminton Court Bagel Shop Bakery Bank \\\n",
"0 0.0 0.0 0.0 0.0 0.000000 0.000000 \n",
"1 0.0 0.0 0.0 0.0 0.000000 0.000000 \n",
"2 0.0 0.0 0.0 0.0 0.000000 0.043478 \n",
"3 0.0 0.0 0.0 0.0 0.000000 0.000000 \n",
"4 0.0 0.0 0.0 0.0 0.137931 0.034483 \n",
"\n",
" Bar Baseball Field Baseball Stadium Basketball Stadium Beach \\\n",
"0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Beach Bar Beer Bar Beer Store Belgian Restaurant Bike Shop Bistro \\\n",
"0 0.0 0.0 0.000000 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.000000 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.043478 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.000000 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.000000 0.0 0.0 0.0 \n",
"\n",
" Bookstore Boutique Bowling Alley Brazilian Restaurant Breakfast Spot \\\n",
"0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.2 \n",
"2 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Brewery Bridal Shop Bridge Bubble Tea Shop Burger Joint Burrito Place \\\n",
"0 0.0 0.0 0.0 0.0 0.000000 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.200000 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.043478 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.000000 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.034483 0.0 \n",
"\n",
" Bus Line Bus Station Bus Stop Business Service Butcher Café \\\n",
"0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Cajun / Creole Restaurant Candy Store Cantonese Restaurant \\\n",
"0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 \n",
"\n",
" Caribbean Restaurant Castle Cemetery Check Cashing Service Cheese Shop \\\n",
"0 0.066667 0.0 0.0 0.0 0.0 \n",
"1 0.000000 0.0 0.0 0.0 0.0 \n",
"2 0.000000 0.0 0.0 0.0 0.0 \n",
"3 0.000000 0.0 0.0 0.0 0.0 \n",
"4 0.034483 0.0 0.0 0.0 0.0 \n",
"\n",
" Chinese Restaurant Chiropractor Chocolate Shop Church Churrascaria \\\n",
"0 0.066667 0.0 0.0 0.0 0.0 \n",
"1 0.000000 0.0 0.0 0.0 0.0 \n",
"2 0.000000 0.0 0.0 0.0 0.0 \n",
"3 0.142857 0.0 0.0 0.0 0.0 \n",
"4 0.034483 0.0 0.0 0.0 0.0 \n",
"\n",
" Climbing Gym Clothing Store Cocktail Bar Coffee Shop College Gym \\\n",
"0 0.0 0.0 0.0 0.133333 0.0 \n",
"1 0.0 0.0 0.0 0.000000 0.0 \n",
"2 0.0 0.0 0.0 0.086957 0.0 \n",
"3 0.0 0.0 0.0 0.285714 0.0 \n",
"4 0.0 0.0 0.0 0.103448 0.0 \n",
"\n",
" College Quad College Rec Center College Stadium Comedy Club \\\n",
"0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 \n",
"\n",
" Comfort Food Restaurant Comic Shop Community Center Concert Hall \\\n",
"0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 \n",
"\n",
" Construction & Landscaping Convenience Store Cosmetics Shop \\\n",
"0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 \n",
"\n",
" Coworking Space Creperie Cuban Restaurant Cupcake Shop Curling Ice \\\n",
"0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Dance Studio Deli / Bodega Department Store Design Studio Dessert Shop \\\n",
"0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Dim Sum Restaurant Diner Discount Store Dive Bar Dog Run \\\n",
"0 0.0 0.0 0.000000 0.0 0.0 \n",
"1 0.0 0.0 0.000000 0.0 0.0 \n",
"2 0.0 0.0 0.043478 0.0 0.0 \n",
"3 0.0 0.0 0.000000 0.0 0.0 \n",
"4 0.0 0.0 0.000000 0.0 0.0 \n",
"\n",
" Doner Restaurant Donut Shop Dumpling Restaurant \\\n",
"0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 \n",
"\n",
" Eastern European Restaurant Electronics Store Empanada Restaurant \\\n",
"0 0.0 0.000000 0.0 \n",
"1 0.0 0.000000 0.0 \n",
"2 0.0 0.000000 0.0 \n",
"3 0.0 0.142857 0.0 \n",
"4 0.0 0.000000 0.0 \n",
"\n",
" Ethiopian Restaurant Event Space Falafel Restaurant Farm \\\n",
"0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 \n",
"\n",
" Farmers Market Fast Food Restaurant Field Filipino Restaurant \\\n",
"0 0.0 0.200000 0.0 0.0 \n",
"1 0.0 0.000000 0.0 0.0 \n",
"2 0.0 0.086957 0.0 0.0 \n",
"3 0.0 0.142857 0.0 0.0 \n",
"4 0.0 0.034483 0.0 0.0 \n",
"\n",
" Fireworks Store Fish & Chips Shop Fish Market Flea Market Flower Shop \\\n",
"0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Food Food & Drink Shop Food Court Food Truck Fountain \\\n",
"0 0.0 0.000000 0.0 0.0 0.0 \n",
"1 0.0 0.000000 0.0 0.0 0.0 \n",
"2 0.0 0.043478 0.0 0.0 0.0 \n",
"3 0.0 0.000000 0.0 0.0 0.0 \n",
"4 0.0 0.000000 0.0 0.0 0.0 \n",
"\n",
" French Restaurant Fried Chicken Joint Frozen Yogurt Shop \\\n",
"0 0.0 0.000000 0.0 \n",
"1 0.0 0.000000 0.0 \n",
"2 0.0 0.043478 0.0 \n",
"3 0.0 0.000000 0.0 \n",
"4 0.0 0.034483 0.0 \n",
"\n",
" Fruit & Vegetable Store Furniture / Home Store Gaming Cafe Garden \\\n",
"0 0.066667 0.0 0.0 0.0 \n",
"1 0.000000 0.0 0.0 0.0 \n",
"2 0.000000 0.0 0.0 0.0 \n",
"3 0.000000 0.0 0.0 0.0 \n",
"4 0.000000 0.0 0.0 0.0 \n",
"\n",
" Garden Center Gas Station Gastropub Gay Bar General Entertainment \\\n",
"0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" German Restaurant Gift Shop Gluten-free Restaurant Golf Course \\\n",
"0 0.000000 0.0 0.0 0.0 \n",
"1 0.000000 0.0 0.0 0.0 \n",
"2 0.000000 0.0 0.0 0.0 \n",
"3 0.000000 0.0 0.0 0.0 \n",
"4 0.034483 0.0 0.0 0.0 \n",
"\n",
" Golf Driving Range Gourmet Shop Greek Restaurant Grocery Store \\\n",
"0 0.0 0.0 0.000000 0.000000 \n",
"1 0.0 0.0 0.000000 0.000000 \n",
"2 0.0 0.0 0.043478 0.043478 \n",
"3 0.0 0.0 0.000000 0.000000 \n",
"4 0.0 0.0 0.000000 0.034483 \n",
"\n",
" Gym Gym / Fitness Center Gym Pool Hakka Restaurant \\\n",
"0 0.066667 0.0 0.0 0.000000 \n",
"1 0.000000 0.0 0.0 0.000000 \n",
"2 0.000000 0.0 0.0 0.000000 \n",
"3 0.000000 0.0 0.0 0.000000 \n",
"4 0.000000 0.0 0.0 0.034483 \n",
"\n",
" Harbor / Marina Hardware Store Hawaiian Restaurant Health Food Store \\\n",
"0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 \n",
"\n",
" Historic Site History Museum Hobby Shop Hockey Arena Home Service \\\n",
"0 0.0 0.0 0.066667 0.0 0.0 \n",
"1 0.0 0.0 0.000000 0.0 0.0 \n",
"2 0.0 0.0 0.000000 0.0 0.0 \n",
"3 0.0 0.0 0.000000 0.0 0.0 \n",
"4 0.0 0.0 0.000000 0.0 0.0 \n",
"\n",
" Hookah Bar Hostel Hot Dog Joint Hotel Hotpot Restaurant \\\n",
"0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Housing Development IT Services Ice Cream Shop \\\n",
"0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 \n",
"\n",
" Indian Chinese Restaurant Indian Restaurant Indie Movie Theater \\\n",
"0 0.0 0.000000 0.0 \n",
"1 0.0 0.000000 0.0 \n",
"2 0.0 0.000000 0.0 \n",
"3 0.0 0.142857 0.0 \n",
"4 0.0 0.068966 0.0 \n",
"\n",
" Indie Theater Indonesian Restaurant Intersection Italian Restaurant \\\n",
"0 0.0 0.0 0.000000 0.0 \n",
"1 0.0 0.0 0.000000 0.2 \n",
"2 0.0 0.0 0.043478 0.0 \n",
"3 0.0 0.0 0.000000 0.0 \n",
"4 0.0 0.0 0.000000 0.0 \n",
"\n",
" Japanese Restaurant Jazz Club Jewelry Store Jewish Restaurant \\\n",
"0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 \n",
"\n",
" Juice Bar Kitchen Supply Store Korean Restaurant Lake \\\n",
"0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 \n",
"\n",
" Latin American Restaurant Laundry Service Light Rail Station \\\n",
"0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 \n",
"\n",
" Liquor Store Lounge Mac & Cheese Joint Malay Restaurant Market \\\n",
"0 0.000000 0.0 0.0 0.0 0.0 \n",
"1 0.000000 0.0 0.0 0.0 0.0 \n",
"2 0.043478 0.0 0.0 0.0 0.0 \n",
"3 0.000000 0.0 0.0 0.0 0.0 \n",
"4 0.000000 0.0 0.0 0.0 0.0 \n",
"\n",
" Martial Arts Dojo Massage Studio Mattress Store \\\n",
"0 0.066667 0.0 0.0 \n",
"1 0.000000 0.0 0.0 \n",
"2 0.000000 0.0 0.0 \n",
"3 0.000000 0.0 0.0 \n",
"4 0.000000 0.0 0.0 \n",
"\n",
" Mediterranean Restaurant Men's Store Metro Station Mexican Restaurant \\\n",
"0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 \n",
"\n",
" Middle Eastern Restaurant Miscellaneous Shop Mobile Phone Shop \\\n",
"0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 \n",
"\n",
" Modern European Restaurant Monument / Landmark Moroccan Restaurant \\\n",
"0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 \n",
"\n",
" Motorcycle Shop Movie Theater Moving Target Museum Music School \\\n",
"0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Music Store Music Venue Nail Salon Neighborhood \\\n",
"0 0.000000 0.0 0.0 0.0 \n",
"1 0.000000 0.0 0.0 0.0 \n",
"2 0.000000 0.0 0.0 0.0 \n",
"3 0.000000 0.0 0.0 0.0 \n",
"4 0.034483 0.0 0.0 0.0 \n",
"\n",
" New American Restaurant Nightclub Noodle House Office Opera House \\\n",
"0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Optical Shop Organic Grocery Other Great Outdoors Other Repair Shop \\\n",
"0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 \n",
"\n",
" Pakistani Restaurant Paper / Office Supplies Store Park Pastry Shop \\\n",
"0 0.0 0.066667 0.066667 0.0 \n",
"1 0.0 0.000000 0.200000 0.0 \n",
"2 0.0 0.000000 0.000000 0.0 \n",
"3 0.0 0.000000 0.142857 0.0 \n",
"4 0.0 0.000000 0.000000 0.0 \n",
"\n",
" Performing Arts Venue Persian Restaurant Pet Store Pharmacy \\\n",
"0 0.0 0.0 0.0 0.000000 \n",
"1 0.0 0.0 0.0 0.000000 \n",
"2 0.0 0.0 0.0 0.043478 \n",
"3 0.0 0.0 0.0 0.000000 \n",
"4 0.0 0.0 0.0 0.068966 \n",
"\n",
" Photography Lab Pie Shop Pizza Place Playground Plaza Poke Place \\\n",
"0 0.0 0.0 0.000000 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.000000 0.2 0.0 0.0 \n",
"2 0.0 0.0 0.173913 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.000000 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.034483 0.0 0.0 0.0 \n",
"\n",
" Pool Pool Hall Portuguese Restaurant Poutine Place Print Shop Pub \\\n",
"0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Ramen Restaurant Record Shop Recreation Center Rental Car Location \\\n",
"0 0.0 0.0 0.0 0.000000 \n",
"1 0.0 0.0 0.0 0.000000 \n",
"2 0.0 0.0 0.0 0.000000 \n",
"3 0.0 0.0 0.0 0.000000 \n",
"4 0.0 0.0 0.0 0.034483 \n",
"\n",
" Residential Building (Apartment / Condo) Restaurant River Road \\\n",
"0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 \n",
"\n",
" Rock Climbing Spot Rock Club Salad Place Salon / Barbershop \\\n",
"0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 \n",
"\n",
" Sandwich Place Scenic Lookout School Sculpture Garden \\\n",
"0 0.066667 0.0 0.0 0.0 \n",
"1 0.000000 0.0 0.0 0.0 \n",
"2 0.043478 0.0 0.0 0.0 \n",
"3 0.000000 0.0 0.0 0.0 \n",
"4 0.000000 0.0 0.0 0.0 \n",
"\n",
" Seafood Restaurant Shanghai Restaurant Shoe Store Shop & Service \\\n",
"0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 \n",
"\n",
" Shopping Mall Skate Park Skating Rink Ski Area Ski Chalet Smoke Shop \\\n",
"0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Smoothie Shop Snack Place Soccer Field Soccer Stadium Soup Place \\\n",
"0 0.000000 0.0 0.0 0.0 0.0 \n",
"1 0.000000 0.0 0.0 0.0 0.0 \n",
"2 0.043478 0.0 0.0 0.0 0.0 \n",
"3 0.000000 0.0 0.0 0.0 0.0 \n",
"4 0.000000 0.0 0.0 0.0 0.0 \n",
"\n",
" South American Restaurant Spa Spanish Restaurant Speakeasy \\\n",
"0 0.0 0.066667 0.0 0.0 \n",
"1 0.0 0.000000 0.0 0.0 \n",
"2 0.0 0.000000 0.0 0.0 \n",
"3 0.0 0.000000 0.0 0.0 \n",
"4 0.0 0.000000 0.0 0.0 \n",
"\n",
" Sporting Goods Shop Sports Bar Sports Club Sri Lankan Restaurant \\\n",
"0 0.000000 0.000000 0.0 0.0 \n",
"1 0.000000 0.000000 0.0 0.0 \n",
"2 0.000000 0.043478 0.0 0.0 \n",
"3 0.000000 0.000000 0.0 0.0 \n",
"4 0.034483 0.000000 0.0 0.0 \n",
"\n",
" Stadium Stationery Store Steakhouse Storage Facility Supermarket \\\n",
"0 0.0 0.0 0.0 0.0 0.000000 \n",
"1 0.0 0.0 0.0 0.0 0.000000 \n",
"2 0.0 0.0 0.0 0.0 0.043478 \n",
"3 0.0 0.0 0.0 0.0 0.000000 \n",
"4 0.0 0.0 0.0 0.0 0.000000 \n",
"\n",
" Supplement Shop Sushi Restaurant Taco Place Tailor Shop \\\n",
"0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 \n",
"\n",
" Taiwanese Restaurant Tanning Salon Tapas Restaurant Tea Room \\\n",
"0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 \n",
"\n",
" Tech Startup Tennis Court Thai Restaurant Theater Theme Restaurant \\\n",
"0 0.0 0.0 0.000000 0.0 0.0 \n",
"1 0.0 0.0 0.000000 0.0 0.0 \n",
"2 0.0 0.0 0.000000 0.0 0.0 \n",
"3 0.0 0.0 0.000000 0.0 0.0 \n",
"4 0.0 0.0 0.034483 0.0 0.0 \n",
"\n",
" Thrift / Vintage Store Tibetan Restaurant Toy / Game Store Track Trail \\\n",
"0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Train Station Turkish Restaurant Vegetarian / Vegan Restaurant \\\n",
"0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 \n",
"\n",
" Video Game Store Video Store Vietnamese Restaurant Warehouse Store \\\n",
"0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 \n",
"\n",
" Wine Bar Wine Shop Wings Joint Women's Store Yoga Studio \n",
"0 0.0 0.0 0.000000 0.0 0.000000 \n",
"1 0.0 0.0 0.000000 0.0 0.000000 \n",
"2 0.0 0.0 0.000000 0.0 0.000000 \n",
"3 0.0 0.0 0.000000 0.0 0.000000 \n",
"4 0.0 0.0 0.034483 0.0 0.034483 "
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"toronto_grouped = toronto_onehot.groupby('Postal Code').mean().reset_index()\n",
"toronto_grouped.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Explore most common venues"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"----M1B----\n",
" venue freq\n",
"0 Fast Food Restaurant 0.20\n",
"1 Coffee Shop 0.13\n",
"2 Fruit & Vegetable Store 0.07\n",
"3 Martial Arts Dojo 0.07\n",
"4 Sandwich Place 0.07\n",
"\n",
"\n",
"----M1C----\n",
" venue freq\n",
"0 Breakfast Spot 0.2\n",
"1 Burger Joint 0.2\n",
"2 Playground 0.2\n",
"3 Park 0.2\n",
"4 Italian Restaurant 0.2\n",
"\n",
"\n",
"----M1E----\n",
" venue freq\n",
"0 Pizza Place 0.17\n",
"1 Fast Food Restaurant 0.09\n",
"2 Coffee Shop 0.09\n",
"3 Smoothie Shop 0.04\n",
"4 Beer Store 0.04\n",
"\n",
"\n",
"----M1G----\n",
" venue freq\n",
"0 Coffee Shop 0.29\n",
"1 Fast Food Restaurant 0.14\n",
"2 Indian Restaurant 0.14\n",
"3 Electronics Store 0.14\n",
"4 Park 0.14\n",
"\n",
"\n",
"----M1H----\n",
" venue freq\n",
"0 Bakery 0.14\n",
"1 Coffee Shop 0.10\n",
"2 Indian Restaurant 0.07\n",
"3 Pharmacy 0.07\n",
"4 Yoga Studio 0.03\n",
"\n",
"\n",
"----M1J----\n",
" venue freq\n",
"0 Fast Food Restaurant 0.27\n",
"1 Convenience Store 0.09\n",
"2 Restaurant 0.09\n",
"3 Sandwich Place 0.09\n",
"4 Coffee Shop 0.09\n",
"\n",
"\n",
"----M1K----\n",
" venue freq\n",
"0 Coffee Shop 0.12\n",
"1 Chinese Restaurant 0.08\n",
"2 Fast Food Restaurant 0.08\n",
"3 Grocery Store 0.08\n",
"4 Discount Store 0.08\n",
"\n",
"\n",
"----M1L----\n",
" venue freq\n",
"0 Intersection 0.10\n",
"1 Coffee Shop 0.10\n",
"2 Fast Food Restaurant 0.07\n",
"3 Bus Line 0.07\n",
"4 Diner 0.07\n",
"\n",
"\n",
"----M1M----\n",
" venue freq\n",
"0 Pizza Place 0.25\n",
"1 Fast Food Restaurant 0.17\n",
"2 Beach 0.17\n",
"3 Burger Joint 0.08\n",
"4 Cajun / Creole Restaurant 0.08\n",
"\n",
"\n",
"----M1N----\n",
" venue freq\n",
"0 Park 0.15\n",
"1 Fast Food Restaurant 0.08\n",
"2 Bank 0.08\n",
"3 Thai Restaurant 0.08\n",
"4 Café 0.08\n",
"\n",
"\n",
"----M1P----\n",
" venue freq\n",
"0 Electronics Store 0.08\n",
"1 Coffee Shop 0.08\n",
"2 Asian Restaurant 0.06\n",
"3 Chinese Restaurant 0.04\n",
"4 Indian Restaurant 0.04\n",
"\n",
"\n",
"----M1R----\n",
" venue freq\n",
"0 Pizza Place 0.10\n",
"1 Middle Eastern Restaurant 0.10\n",
"2 Burger Joint 0.07\n",
"3 Grocery Store 0.07\n",
"4 Intersection 0.07\n",
"\n",
"\n",
"----M1S----\n",
" venue freq\n",
"0 Chinese Restaurant 0.15\n",
"1 Shopping Mall 0.07\n",
"2 Supermarket 0.04\n",
"3 Bakery 0.04\n",
"4 Caribbean Restaurant 0.04\n",
"\n",
"\n",
"----M1T----\n",
" venue freq\n",
"0 Sandwich Place 0.05\n",
"1 Discount Store 0.05\n",
"2 Coffee Shop 0.05\n",
"3 Chinese Restaurant 0.05\n",
"4 Pharmacy 0.05\n",
"\n",
"\n",
"----M1V----\n",
" venue freq\n",
"0 Chinese Restaurant 0.14\n",
"1 Korean Restaurant 0.07\n",
"2 Noodle House 0.07\n",
"3 Pizza Place 0.07\n",
"4 Bakery 0.07\n",
"\n",
"\n",
"----M1W----\n",
" venue freq\n",
"0 Fast Food Restaurant 0.12\n",
"1 Chinese Restaurant 0.12\n",
"2 Bakery 0.08\n",
"3 Coffee Shop 0.08\n",
"4 Cosmetics Shop 0.04\n",
"\n",
"\n",
"----M2H----\n",
" venue freq\n",
"0 Pharmacy 0.10\n",
"1 Coffee Shop 0.10\n",
"2 Park 0.10\n",
"3 Housing Development 0.05\n",
"4 Korean Restaurant 0.05\n",
"\n",
"\n",
"----M2J----\n",
" venue freq\n",
"0 Clothing Store 0.12\n",
"1 Coffee Shop 0.09\n",
"2 Fast Food Restaurant 0.07\n",
"3 Sandwich Place 0.05\n",
"4 Japanese Restaurant 0.05\n",
"\n",
"\n",
"----M2K----\n",
" venue freq\n",
"0 Bank 0.17\n",
"1 Japanese Restaurant 0.17\n",
"2 Intersection 0.08\n",
"3 Grocery Store 0.08\n",
"4 Chinese Restaurant 0.08\n",
"\n",
"\n",
"----M2L----\n",
" venue freq\n",
"0 Park 0.75\n",
"1 Pool 0.25\n",
"2 Accessories Store 0.00\n",
"3 Nail Salon 0.00\n",
"4 Opera House 0.00\n",
"\n",
"\n",
"----M2M----\n",
" venue freq\n",
"0 Café 0.12\n",
"1 Korean Restaurant 0.12\n",
"2 Pizza Place 0.06\n",
"3 Middle Eastern Restaurant 0.06\n",
"4 Coffee Shop 0.06\n",
"\n",
"\n",
"----M2N----\n",
" venue freq\n",
"0 Korean Restaurant 0.08\n",
"1 Ramen Restaurant 0.08\n",
"2 Japanese Restaurant 0.06\n",
"3 Fried Chicken Joint 0.04\n",
"4 Restaurant 0.04\n",
"\n",
"\n",
"----M2P----\n",
" venue freq\n",
"0 Park 0.12\n",
"1 Restaurant 0.12\n",
"2 Tennis Court 0.12\n",
"3 Bank 0.06\n",
"4 Coffee Shop 0.06\n",
"\n",
"\n",
"----M2R----\n",
" venue freq\n",
"0 Pharmacy 0.22\n",
"1 Convenience Store 0.11\n",
"2 Pizza Place 0.11\n",
"3 Bus Line 0.11\n",
"4 Bakery 0.11\n",
"\n",
"\n",
"----M3A----\n",
" venue freq\n",
"0 Park 0.11\n",
"1 Bus Stop 0.07\n",
"2 Shopping Mall 0.07\n",
"3 Convenience Store 0.07\n",
"4 Pharmacy 0.07\n",
"\n",
"\n",
"----M3B----\n",
" venue freq\n",
"0 Coffee Shop 0.10\n",
"1 Japanese Restaurant 0.10\n",
"2 Burger Joint 0.06\n",
"3 Pizza Place 0.06\n",
"4 Paper / Office Supplies Store 0.03\n",
"\n",
"\n",
"----M3C----\n",
" venue freq\n",
"0 Restaurant 0.07\n",
"1 Gym 0.05\n",
"2 Japanese Restaurant 0.05\n",
"3 Beer Store 0.05\n",
"4 American Restaurant 0.05\n",
"\n",
"\n",
"----M3H----\n",
" venue freq\n",
"0 Coffee Shop 0.07\n",
"1 Ski Area 0.04\n",
"2 Men's Store 0.04\n",
"3 Sushi Restaurant 0.04\n",
"4 Fast Food Restaurant 0.04\n",
"\n",
"\n",
"----M3J----\n",
" venue freq\n",
"0 Pizza Place 0.14\n",
"1 Coffee Shop 0.14\n",
"2 Furniture / Home Store 0.09\n",
"3 Sandwich Place 0.09\n",
"4 Restaurant 0.09\n",
"\n",
"\n",
"----M3K----\n",
" venue freq\n",
"0 Coffee Shop 0.11\n",
"1 Turkish Restaurant 0.11\n",
"2 Gym 0.05\n",
"3 Italian Restaurant 0.05\n",
"4 Other Repair Shop 0.05\n",
"\n",
"\n",
"----M3L----\n",
" venue freq\n",
"0 Park 0.29\n",
"1 Coffee Shop 0.14\n",
"2 Moving Target 0.14\n",
"3 Vietnamese Restaurant 0.14\n",
"4 Pizza Place 0.14\n",
"\n",
"\n",
"----M3M----\n",
" venue freq\n",
"0 Vietnamese Restaurant 0.50\n",
"1 Baseball Field 0.25\n",
"2 Restaurant 0.25\n",
"3 Accessories Store 0.00\n",
"4 Nail Salon 0.00\n",
"\n",
"\n",
"----M3N----\n",
" venue freq\n",
"0 Hotel 0.14\n",
"1 Pizza Place 0.07\n",
"2 Coffee Shop 0.07\n",
"3 Pharmacy 0.07\n",
"4 Fast Food Restaurant 0.07\n",
"\n",
"\n",
"----M4A----\n",
" venue freq\n",
"0 Coffee Shop 0.15\n",
"1 Men's Store 0.08\n",
"2 Park 0.08\n",
"3 Golf Course 0.08\n",
"4 Sporting Goods Shop 0.08\n",
"\n",
"\n",
"----M4B----\n",
" venue freq\n",
"0 Fast Food Restaurant 0.11\n",
"1 Coffee Shop 0.11\n",
"2 Brewery 0.11\n",
"3 Pizza Place 0.11\n",
"4 Bank 0.05\n",
"\n",
"\n",
"----M4C----\n",
" venue freq\n",
"0 Park 0.13\n",
"1 Coffee Shop 0.10\n",
"2 Skating Rink 0.07\n",
"3 Sandwich Place 0.07\n",
"4 Thai Restaurant 0.07\n",
"\n",
"\n",
"----M4E----\n",
" venue freq\n",
"0 Pub 0.10\n",
"1 Coffee Shop 0.04\n",
"2 Bakery 0.04\n",
"3 Japanese Restaurant 0.04\n",
"4 Beach 0.04\n",
"\n",
"\n",
"----M4G----\n",
" venue freq\n",
"0 Coffee Shop 0.10\n",
"1 Sporting Goods Shop 0.06\n",
"2 Sports Bar 0.04\n",
"3 Grocery Store 0.04\n",
"4 Electronics Store 0.04\n",
"\n",
"\n",
"----M4H----\n",
" venue freq\n",
"0 Coffee Shop 0.12\n",
"1 Indian Restaurant 0.09\n",
"2 Supermarket 0.05\n",
"3 Brewery 0.05\n",
"4 Burger Joint 0.05\n",
"\n",
"\n",
"----M4J----\n",
" venue freq\n",
"0 Greek Restaurant 0.10\n",
"1 Café 0.10\n",
"2 Coffee Shop 0.08\n",
"3 Ethiopian Restaurant 0.04\n",
"4 Pizza Place 0.04\n",
"\n",
"\n",
"----M4K----\n",
" venue freq\n",
"0 Greek Restaurant 0.18\n",
"1 Pub 0.06\n",
"2 Italian Restaurant 0.04\n",
"3 Ice Cream Shop 0.04\n",
"4 Coffee Shop 0.04\n",
"\n",
"\n",
"----M4L----\n",
" venue freq\n",
"0 Indian Restaurant 0.08\n",
"1 Coffee Shop 0.06\n",
"2 Beach 0.06\n",
"3 Sandwich Place 0.04\n",
"4 Bakery 0.04\n",
"\n",
"\n",
"----M4M----\n",
" venue freq\n",
"0 Coffee Shop 0.12\n",
"1 Bakery 0.06\n",
"2 Café 0.06\n",
"3 Italian Restaurant 0.06\n",
"4 Bar 0.04\n",
"\n",
"\n",
"----M4N----\n",
" venue freq\n",
"0 College Quad 0.12\n",
"1 Trail 0.12\n",
"2 Park 0.12\n",
"3 Gym / Fitness Center 0.12\n",
"4 Bookstore 0.12\n",
"\n",
"\n",
"----M4P----\n",
" venue freq\n",
"0 Coffee Shop 0.12\n",
"1 Café 0.08\n",
"2 Italian Restaurant 0.06\n",
"3 Pizza Place 0.06\n",
"4 Yoga Studio 0.04\n",
"\n",
"\n",
"----M4R----\n",
" venue freq\n",
"0 Italian Restaurant 0.07\n",
"1 Sporting Goods Shop 0.07\n",
"2 Coffee Shop 0.07\n",
"3 Diner 0.05\n",
"4 Skating Rink 0.05\n",
"\n",
"\n",
"----M4S----\n",
" venue freq\n",
"0 Italian Restaurant 0.10\n",
"1 Sushi Restaurant 0.06\n",
"2 Indian Restaurant 0.06\n",
"3 Gym 0.06\n",
"4 Dessert Shop 0.06\n",
"\n",
"\n",
"----M4T----\n",
" venue freq\n",
"0 Italian Restaurant 0.08\n",
"1 Coffee Shop 0.08\n",
"2 Park 0.06\n",
"3 Grocery Store 0.06\n",
"4 Bank 0.04\n",
"\n",
"\n",
"----M4V----\n",
" venue freq\n",
"0 Coffee Shop 0.10\n",
"1 Italian Restaurant 0.08\n",
"2 Sushi Restaurant 0.08\n",
"3 Park 0.06\n",
"4 Café 0.04\n",
"\n",
"\n",
"----M4W----\n",
" venue freq\n",
"0 Coffee Shop 0.08\n",
"1 Bank 0.08\n",
"2 Park 0.08\n",
"3 Grocery Store 0.08\n",
"4 Sandwich Place 0.04\n",
"\n",
"\n",
"----M4X----\n",
" venue freq\n",
"0 Café 0.07\n",
"1 Park 0.07\n",
"2 Coffee Shop 0.05\n",
"3 Diner 0.05\n",
"4 Italian Restaurant 0.05\n",
"\n",
"\n",
"----M4Y----\n",
" venue freq\n",
"0 Coffee Shop 0.08\n",
"1 Men's Store 0.04\n",
"2 Gastropub 0.04\n",
"3 Gay Bar 0.04\n",
"4 Restaurant 0.04\n",
"\n",
"\n",
"----M5A----\n",
" venue freq\n",
"0 Coffee Shop 0.18\n",
"1 Bakery 0.06\n",
"2 Italian Restaurant 0.06\n",
"3 Park 0.06\n",
"4 Café 0.06\n",
"\n",
"\n",
"----M5B----\n",
" venue freq\n",
"0 Café 0.06\n",
"1 Coffee Shop 0.06\n",
"2 Clothing Store 0.04\n",
"3 Italian Restaurant 0.04\n",
"4 Cosmetics Shop 0.04\n",
"\n",
"\n",
"----M5C----\n",
" venue freq\n",
"0 Coffee Shop 0.10\n",
"1 Italian Restaurant 0.06\n",
"2 Café 0.06\n",
"3 Gastropub 0.06\n",
"4 Farmers Market 0.04\n",
"\n",
"\n",
"----M5E----\n",
" venue freq\n",
"0 Café 0.06\n",
"1 Coffee Shop 0.06\n",
"2 Japanese Restaurant 0.04\n",
"3 Hotel 0.04\n",
"4 Cocktail Bar 0.04\n",
"\n",
"\n",
"----M5G----\n",
" venue freq\n",
"0 Coffee Shop 0.12\n",
"1 Bubble Tea Shop 0.06\n",
"2 Plaza 0.04\n",
"3 Pizza Place 0.04\n",
"4 Vegetarian / Vegan Restaurant 0.04\n",
"\n",
"\n",
"----M5H----\n",
" venue freq\n",
"0 Café 0.08\n",
"1 American Restaurant 0.08\n",
"2 Steakhouse 0.06\n",
"3 Coffee Shop 0.06\n",
"4 Concert Hall 0.04\n",
"\n",
"\n",
"----M5J----\n",
" venue freq\n",
"0 Hotel 0.08\n",
"1 Park 0.06\n",
"2 Baseball Stadium 0.04\n",
"3 Brewery 0.04\n",
"4 Aquarium 0.04\n",
"\n",
"\n",
"----M5K----\n",
" venue freq\n",
"0 Café 0.12\n",
"1 Coffee Shop 0.12\n",
"2 Hotel 0.08\n",
"3 Gastropub 0.06\n",
"4 Restaurant 0.06\n",
"\n",
"\n",
"----M5L----\n",
" venue freq\n",
"0 Coffee Shop 0.12\n",
"1 Café 0.10\n",
"2 Hotel 0.08\n",
"3 Steakhouse 0.06\n",
"4 American Restaurant 0.06\n",
"\n",
"\n",
"----M5M----\n",
" venue freq\n",
"0 Italian Restaurant 0.09\n",
"1 Coffee Shop 0.07\n",
"2 Fast Food Restaurant 0.07\n",
"3 Restaurant 0.02\n",
"4 Greek Restaurant 0.02\n",
"\n",
"\n",
"----M5N----\n",
" venue freq\n",
"0 Sushi Restaurant 0.13\n",
"1 Coffee Shop 0.09\n",
"2 Pharmacy 0.09\n",
"3 Café 0.09\n",
"4 Italian Restaurant 0.09\n",
"\n",
"\n",
"----M5P----\n",
" venue freq\n",
"0 Park 0.09\n",
"1 Coffee Shop 0.07\n",
"2 Café 0.07\n",
"3 Burger Joint 0.04\n",
"4 Trail 0.04\n",
"\n",
"\n",
"----M5R----\n",
" venue freq\n",
"0 Pizza Place 0.06\n",
"1 Italian Restaurant 0.06\n",
"2 Vegetarian / Vegan Restaurant 0.06\n",
"3 Café 0.06\n",
"4 Tea Room 0.04\n",
"\n",
"\n",
"----M5S----\n",
" venue freq\n",
"0 Café 0.08\n",
"1 Bookstore 0.06\n",
"2 Bakery 0.06\n",
"3 Vegetarian / Vegan Restaurant 0.06\n",
"4 Pizza Place 0.04\n",
"\n",
"\n",
"----M5T----\n",
" venue freq\n",
"0 Café 0.10\n",
"1 Vegetarian / Vegan Restaurant 0.06\n",
"2 Mexican Restaurant 0.06\n",
"3 Vietnamese Restaurant 0.04\n",
"4 Caribbean Restaurant 0.04\n",
"\n",
"\n",
"----M5V----\n",
" venue freq\n",
"0 Coffee Shop 0.20\n",
"1 Café 0.13\n",
"2 Harbor / Marina 0.13\n",
"3 Track 0.07\n",
"4 Sculpture Garden 0.07\n",
"\n",
"\n",
"----M5W----\n",
" venue freq\n",
"0 Café 0.08\n",
"1 Hotel 0.06\n",
"2 Restaurant 0.06\n",
"3 Cocktail Bar 0.04\n",
"4 Farmers Market 0.04\n",
"\n",
"\n",
"----M5X----\n",
" venue freq\n",
"0 Coffee Shop 0.10\n",
"1 Café 0.10\n",
"2 American Restaurant 0.06\n",
"3 Gastropub 0.06\n",
"4 Deli / Bodega 0.04\n",
"\n",
"\n",
"----M6A----\n",
" venue freq\n",
"0 Coffee Shop 0.06\n",
"1 Furniture / Home Store 0.06\n",
"2 Clothing Store 0.06\n",
"3 Fast Food Restaurant 0.06\n",
"4 Vietnamese Restaurant 0.04\n",
"\n",
"\n",
"----M6B----\n",
" venue freq\n",
"0 Fast Food Restaurant 0.12\n",
"1 Grocery Store 0.12\n",
"2 Coffee Shop 0.06\n",
"3 Gym 0.06\n",
"4 Park 0.06\n",
"\n",
"\n",
"----M6C----\n",
" venue freq\n",
"0 Coffee Shop 0.13\n",
"1 Pizza Place 0.10\n",
"2 Grocery Store 0.07\n",
"3 Park 0.07\n",
"4 Italian Restaurant 0.07\n",
"\n",
"\n",
"----M6E----\n",
" venue freq\n",
"0 Park 0.12\n",
"1 Pizza Place 0.08\n",
"2 Pharmacy 0.08\n",
"3 Mexican Restaurant 0.08\n",
"4 Cosmetics Shop 0.04\n",
"\n",
"\n",
"----M6G----\n",
" venue freq\n",
"0 Korean Restaurant 0.10\n",
"1 Café 0.08\n",
"2 Grocery Store 0.08\n",
"3 Coffee Shop 0.06\n",
"4 Indian Restaurant 0.04\n",
"\n",
"\n",
"----M6H----\n",
" venue freq\n",
"0 Café 0.12\n",
"1 Coffee Shop 0.10\n",
"2 Park 0.08\n",
"3 Pharmacy 0.04\n",
"4 Portuguese Restaurant 0.04\n",
"\n",
"\n",
"----M6J----\n",
" venue freq\n",
"0 Bar 0.10\n",
"1 Asian Restaurant 0.06\n",
"2 Coffee Shop 0.06\n",
"3 Café 0.04\n",
"4 Pizza Place 0.04\n",
"\n",
"\n",
"----M6K----\n",
" venue freq\n",
"0 Café 0.10\n",
"1 Restaurant 0.04\n",
"2 Sandwich Place 0.04\n",
"3 Hotel 0.04\n",
"4 Bar 0.04\n",
"\n",
"\n",
"----M6L----\n",
" venue freq\n",
"0 Coffee Shop 0.25\n",
"1 Convenience Store 0.08\n",
"2 Dim Sum Restaurant 0.08\n",
"3 Mediterranean Restaurant 0.08\n",
"4 Chinese Restaurant 0.08\n",
"\n",
"\n",
"----M6M----\n",
" venue freq\n",
"0 Furniture / Home Store 0.19\n",
"1 Grocery Store 0.12\n",
"2 Coffee Shop 0.06\n",
"3 Check Cashing Service 0.06\n",
"4 Wine Shop 0.06\n",
"\n",
"\n",
"----M6N----\n",
" venue freq\n",
"0 Coffee Shop 0.09\n",
"1 Brewery 0.07\n",
"2 Pizza Place 0.07\n",
"3 Park 0.07\n",
"4 Sandwich Place 0.05\n",
"\n",
"\n",
"----M6P----\n",
" venue freq\n",
"0 Café 0.14\n",
"1 Bar 0.10\n",
"2 Sushi Restaurant 0.06\n",
"3 Italian Restaurant 0.06\n",
"4 Gastropub 0.04\n",
"\n",
"\n",
"----M6R----\n",
" venue freq\n",
"0 Bar 0.08\n",
"1 Coffee Shop 0.06\n",
"2 Sushi Restaurant 0.06\n",
"3 Dog Run 0.04\n",
"4 Thai Restaurant 0.04\n",
"\n",
"\n",
"----M6S----\n",
" venue freq\n",
"0 Café 0.10\n",
"1 Bakery 0.08\n",
"2 Coffee Shop 0.08\n",
"3 Italian Restaurant 0.06\n",
"4 Sushi Restaurant 0.04\n",
"\n",
"\n",
"----M7A----\n",
" venue freq\n",
"0 Coffee Shop 0.12\n",
"1 Pizza Place 0.04\n",
"2 Gastropub 0.04\n",
"3 Bubble Tea Shop 0.04\n",
"4 Diner 0.04\n",
"\n",
"\n",
"----M7R----\n",
" venue freq\n",
"0 Coffee Shop 0.10\n",
"1 Middle Eastern Restaurant 0.08\n",
"2 Chinese Restaurant 0.06\n",
"3 Hotel 0.06\n",
"4 Fried Chicken Joint 0.04\n",
"\n",
"\n",
"----M7Y----\n",
" venue freq\n",
"0 Park 0.10\n",
"1 Coffee Shop 0.06\n",
"2 Brewery 0.06\n",
"3 Italian Restaurant 0.04\n",
"4 Pet Store 0.04\n",
"\n",
"\n",
"----M8V----\n",
" venue freq\n",
"0 Park 0.14\n",
"1 Pub 0.05\n",
"2 Pharmacy 0.05\n",
"3 Fried Chicken Joint 0.05\n",
"4 Café 0.05\n",
"\n",
"\n",
"----M8W----\n",
" venue freq\n",
"0 Discount Store 0.12\n",
"1 Pizza Place 0.08\n",
"2 Grocery Store 0.08\n",
"3 Pharmacy 0.08\n",
"4 Shopping Mall 0.04\n",
"\n",
"\n",
"----M8X----\n",
" venue freq\n",
"0 Coffee Shop 0.09\n",
"1 Park 0.07\n",
"2 Breakfast Spot 0.05\n",
"3 Sushi Restaurant 0.05\n",
"4 French Restaurant 0.05\n",
"\n",
"\n",
"----M8Y----\n",
" venue freq\n",
"0 Italian Restaurant 0.25\n",
"1 Park 0.25\n",
"2 Gym / Fitness Center 0.12\n",
"3 Shopping Mall 0.12\n",
"4 Eastern European Restaurant 0.12\n",
"\n",
"\n",
"----M8Z----\n",
" venue freq\n",
"0 Gym / Fitness Center 0.06\n",
"1 Coffee Shop 0.06\n",
"2 Burrito Place 0.06\n",
"3 Sushi Restaurant 0.04\n",
"4 Bakery 0.04\n",
"\n",
"\n",
"----M9A----\n",
" venue freq\n",
"0 Pharmacy 0.23\n",
"1 Convenience Store 0.08\n",
"2 Café 0.08\n",
"3 Skating Rink 0.08\n",
"4 Shopping Mall 0.08\n",
"\n",
"\n",
"----M9B----\n",
" venue freq\n",
"0 Park 0.18\n",
"1 Bank 0.12\n",
"2 Pizza Place 0.12\n",
"3 Grocery Store 0.06\n",
"4 Gym 0.06\n",
"\n",
"\n",
"----M9C----\n",
" venue freq\n",
"0 IT Services 0.07\n",
"1 College Rec Center 0.07\n",
"2 Café 0.07\n",
"3 Fish & Chips Shop 0.07\n",
"4 Beer Store 0.07\n",
"\n",
"\n",
"----M9L----\n",
" venue freq\n",
"0 Pharmacy 0.2\n",
"1 Electronics Store 0.1\n",
"2 Bank 0.1\n",
"3 Bakery 0.1\n",
"4 Shopping Mall 0.1\n",
"\n",
"\n",
"----M9M----\n",
" venue freq\n",
"0 Convenience Store 0.14\n",
"1 Storage Facility 0.14\n",
"2 Park 0.14\n",
"3 Discount Store 0.14\n",
"4 Golf Course 0.14\n",
"\n",
"\n",
"----M9N----\n",
" venue freq\n",
"0 Train Station 0.12\n",
"1 Pizza Place 0.12\n",
"2 Coffee Shop 0.12\n",
"3 Diner 0.06\n",
"4 Skating Rink 0.06\n",
"\n",
"\n",
"----M9P----\n",
" venue freq\n",
"0 Pizza Place 0.21\n",
"1 Golf Driving Range 0.07\n",
"2 Coffee Shop 0.07\n",
"3 Ice Cream Shop 0.07\n",
"4 Golf Course 0.07\n",
"\n",
"\n",
"----M9R----\n",
" venue freq\n",
"0 Bank 0.07\n",
"1 Pharmacy 0.07\n",
"2 Shopping Mall 0.07\n",
"3 Bus Line 0.07\n",
"4 Beer Store 0.07\n",
"\n",
"\n",
"----M9V----\n",
" venue freq\n",
"0 Pizza Place 0.21\n",
"1 Grocery Store 0.21\n",
"2 Park 0.07\n",
"3 Bus Line 0.07\n",
"4 Fried Chicken Joint 0.07\n",
"\n",
"\n",
"----M9W----\n",
" venue freq\n",
"0 Dog Run 0.33\n",
"1 Lounge 0.33\n",
"2 Coffee Shop 0.33\n",
"3 Accessories Store 0.00\n",
"4 Other Great Outdoors 0.00\n",
"\n",
"\n"
]
}
],
"source": [
"num_top_venues = 5\n",
"\n",
"for hood in toronto_grouped['Postal Code']:\n",
" print(\"----\"+hood+\"----\")\n",
" temp = toronto_grouped[toronto_grouped['Postal Code'] == hood].T.reset_index()\n",
" temp.columns = ['venue','freq']\n",
" temp = temp.iloc[1:]\n",
" temp['freq'] = temp['freq'].astype(float)\n",
" temp = temp.round({'freq': 2})\n",
" print(temp.sort_values('freq', ascending=False).reset_index(drop=True).head(num_top_venues))\n",
" print('\\n')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's put that into a pandas dataframe"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"def return_most_common_venues(row, num_top_venues):\n",
" row_categories = row.iloc[1:]\n",
" row_categories_sorted = row_categories.sort_values(ascending=False)\n",
" \n",
" return row_categories_sorted.index.values[0:num_top_venues]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Postal Code</th>\n",
" <th>1st Most Common Venue</th>\n",
" <th>2nd Most Common Venue</th>\n",
" <th>3rd Most Common Venue</th>\n",
" <th>4th Most Common Venue</th>\n",
" <th>5th Most Common Venue</th>\n",
" <th>6th Most Common Venue</th>\n",
" <th>7th Most Common Venue</th>\n",
" <th>8th Most Common Venue</th>\n",
" <th>9th Most Common Venue</th>\n",
" <th>10th Most Common Venue</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>M1B</td>\n",
" <td>Fast Food Restaurant</td>\n",
" <td>Coffee Shop</td>\n",
" <td>Hobby Shop</td>\n",
" <td>Gym</td>\n",
" <td>Martial Arts Dojo</td>\n",
" <td>Fruit &amp; Vegetable Store</td>\n",
" <td>Caribbean Restaurant</td>\n",
" <td>Sandwich Place</td>\n",
" <td>Chinese Restaurant</td>\n",
" <td>Paper / Office Supplies Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>M1C</td>\n",
" <td>Breakfast Spot</td>\n",
" <td>Park</td>\n",
" <td>Playground</td>\n",
" <td>Burger Joint</td>\n",
" <td>Italian Restaurant</td>\n",
" <td>Eastern European Restaurant</td>\n",
" <td>Electronics Store</td>\n",
" <td>Empanada Restaurant</td>\n",
" <td>Ethiopian Restaurant</td>\n",
" <td>Event Space</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>M1E</td>\n",
" <td>Pizza Place</td>\n",
" <td>Coffee Shop</td>\n",
" <td>Fast Food Restaurant</td>\n",
" <td>Smoothie Shop</td>\n",
" <td>Bank</td>\n",
" <td>Intersection</td>\n",
" <td>Sports Bar</td>\n",
" <td>Beer Store</td>\n",
" <td>Greek Restaurant</td>\n",
" <td>Grocery Store</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>M1G</td>\n",
" <td>Coffee Shop</td>\n",
" <td>Chinese Restaurant</td>\n",
" <td>Electronics Store</td>\n",
" <td>Fast Food Restaurant</td>\n",
" <td>Park</td>\n",
" <td>Indian Restaurant</td>\n",
" <td>Falafel Restaurant</td>\n",
" <td>Dumpling Restaurant</td>\n",
" <td>Eastern European Restaurant</td>\n",
" <td>Empanada Restaurant</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>M1H</td>\n",
" <td>Bakery</td>\n",
" <td>Coffee Shop</td>\n",
" <td>Pharmacy</td>\n",
" <td>Indian Restaurant</td>\n",
" <td>Athletics &amp; Sports</td>\n",
" <td>Burger Joint</td>\n",
" <td>Fast Food Restaurant</td>\n",
" <td>Caribbean Restaurant</td>\n",
" <td>Sporting Goods Shop</td>\n",
" <td>Fried Chicken Joint</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Postal Code 1st Most Common Venue 2nd Most Common Venue \\\n",
"0 M1B Fast Food Restaurant Coffee Shop \n",
"1 M1C Breakfast Spot Park \n",
"2 M1E Pizza Place Coffee Shop \n",
"3 M1G Coffee Shop Chinese Restaurant \n",
"4 M1H Bakery Coffee Shop \n",
"\n",
" 3rd Most Common Venue 4th Most Common Venue 5th Most Common Venue \\\n",
"0 Hobby Shop Gym Martial Arts Dojo \n",
"1 Playground Burger Joint Italian Restaurant \n",
"2 Fast Food Restaurant Smoothie Shop Bank \n",
"3 Electronics Store Fast Food Restaurant Park \n",
"4 Pharmacy Indian Restaurant Athletics & Sports \n",
"\n",
" 6th Most Common Venue 7th Most Common Venue 8th Most Common Venue \\\n",
"0 Fruit & Vegetable Store Caribbean Restaurant Sandwich Place \n",
"1 Eastern European Restaurant Electronics Store Empanada Restaurant \n",
"2 Intersection Sports Bar Beer Store \n",
"3 Indian Restaurant Falafel Restaurant Dumpling Restaurant \n",
"4 Burger Joint Fast Food Restaurant Caribbean Restaurant \n",
"\n",
" 9th Most Common Venue 10th Most Common Venue \n",
"0 Chinese Restaurant Paper / Office Supplies Store \n",
"1 Ethiopian Restaurant Event Space \n",
"2 Greek Restaurant Grocery Store \n",
"3 Eastern European Restaurant Empanada Restaurant \n",
"4 Sporting Goods Shop Fried Chicken Joint "
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"num_top_venues = 10\n",
"\n",
"indicators = ['st', 'nd', 'rd']\n",
"\n",
"# create columns according to number of top venues\n",
"columns = ['Postal Code']\n",
"for ind in np.arange(num_top_venues):\n",
" try:\n",
" columns.append('{}{} Most Common Venue'.format(ind+1, indicators[ind]))\n",
" except:\n",
" columns.append('{}th Most Common Venue'.format(ind+1))\n",
"\n",
"# create a new dataframe\n",
"postal_venues_sorted = pd.DataFrame(columns=columns)\n",
"postal_venues_sorted['Postal Code'] = toronto_grouped['Postal Code']\n",
"\n",
"for ind in np.arange(toronto_grouped.shape[0]):\n",
" postal_venues_sorted.iloc[ind, 1:] = return_most_common_venues(toronto_grouped.iloc[ind, :], num_top_venues)\n",
"\n",
"postal_venues_sorted.head()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib as mpl\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"first_common = postal_venues_sorted.groupby(postal_venues_sorted['1st Most Common Venue']).count()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"count, bin_edges = np.histogram(first_common['Postal Code'])"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"first_common['Postal Code'].plot(kind='hist', xticks=bin_edges)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Above histogram shows us only a few venue categories are most common in many postal code areas. I will show which these categories are in the following parts."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### The distance of each postal code to Toronto downtown. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I will try to explore if there is a connection between the distance to city centre and type of common venue categories."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(103, 3)\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Postal Code</th>\n",
" <th>Latitude</th>\n",
" <th>Longitude</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>M1B</td>\n",
" <td>43.806686</td>\n",
" <td>-79.194353</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>M1C</td>\n",
" <td>43.784535</td>\n",
" <td>-79.160497</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>M1E</td>\n",
" <td>43.763573</td>\n",
" <td>-79.188711</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>M1G</td>\n",
" <td>43.770992</td>\n",
" <td>-79.216917</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>M1H</td>\n",
" <td>43.773136</td>\n",
" <td>-79.239476</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Postal Code Latitude Longitude\n",
"0 M1B 43.806686 -79.194353\n",
"1 M1C 43.784535 -79.160497\n",
"2 M1E 43.763573 -79.188711\n",
"3 M1G 43.770992 -79.216917\n",
"4 M1H 43.773136 -79.239476"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(toronto_postal.shape)\n",
"toronto_postal.head()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The geograpical coordinate of Toronto are 43.653963, -79.387207.\n"
]
}
],
"source": [
"address = 'Toronto, CA'\n",
"\n",
"geolocator = Nominatim(user_agent=\"toronto_explorer\")\n",
"location = geolocator.geocode(address)\n",
"latitude = location.latitude\n",
"longitude = location.longitude\n",
"print('The geograpical coordinate of Toronto are {}, {}.'.format(latitude, longitude))"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"from geopy.distance import great_circle"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"distance_lon = []\n",
"distance_lat = []\n",
"\n",
"for row in toronto_postal['Longitude']:\n",
" distance_lon.append(row)\n",
" \n",
"for row in toronto_postal['Latitude']:\n",
" distance_lat.append(row)\n",
" \n",
"toronto_coordinates = (latitude, longitude)\n",
"# distance.append(great_circle(toronto_coordinates, postal_coordinates).miles)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"lon_lat=pd.DataFrame({'Latitude': distance_lat,\n",
" 'Longitude': distance_lon}, dtype='float'\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Latitude</th>\n",
" <th>Longitude</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>43.806686</td>\n",
" <td>-79.194353</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>43.784535</td>\n",
" <td>-79.160497</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>43.763573</td>\n",
" <td>-79.188711</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>43.770992</td>\n",
" <td>-79.216917</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>43.773136</td>\n",
" <td>-79.239476</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Latitude Longitude\n",
"0 43.806686 -79.194353\n",
"1 43.784535 -79.160497\n",
"2 43.763573 -79.188711\n",
"3 43.770992 -79.216917\n",
"4 43.773136 -79.239476"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lon_lat.head()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Latitude float64\n",
"Longitude float64\n",
"dtype: object"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lon_lat.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tuple"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(toronto_coordinates)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"tuples = [tuple(x) for x in lon_lat.values]"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"distance = []\n",
"\n",
"for i in tuples:\n",
" distance.append(great_circle(toronto_coordinates, i).miles)\n",
"\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"103"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(distance)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"toronto_postal['Distance to downtown'] = distance"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Postal Code</th>\n",
" <th>Latitude</th>\n",
" <th>Longitude</th>\n",
" <th>Distance to downtown</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>M1B</td>\n",
" <td>43.806686</td>\n",
" <td>-79.194353</td>\n",
" <td>14.288896</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>M1C</td>\n",
" <td>43.784535</td>\n",
" <td>-79.160497</td>\n",
" <td>14.480115</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>M1E</td>\n",
" <td>43.763573</td>\n",
" <td>-79.188711</td>\n",
" <td>12.479041</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>M1G</td>\n",
" <td>43.770992</td>\n",
" <td>-79.216917</td>\n",
" <td>11.738290</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>M1H</td>\n",
" <td>43.773136</td>\n",
" <td>-79.239476</td>\n",
" <td>11.058964</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Postal Code Latitude Longitude Distance to downtown\n",
"0 M1B 43.806686 -79.194353 14.288896\n",
"1 M1C 43.784535 -79.160497 14.480115\n",
"2 M1E 43.763573 -79.188711 12.479041\n",
"3 M1G 43.770992 -79.216917 11.738290\n",
"4 M1H 43.773136 -79.239476 11.058964"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"toronto_postal.head()"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(102, 11)"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"postal_venues_sorted.shape"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"11.73830012952136\n"
]
}
],
"source": [
"print(great_circle(toronto_coordinates, (43.770992, -79.216917)).miles)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [],
"source": [
"new = postal_venues_sorted.merge(toronto_postal)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Postal Code</th>\n",
" <th>1st Most Common Venue</th>\n",
" <th>2nd Most Common Venue</th>\n",
" <th>3rd Most Common Venue</th>\n",
" <th>4th Most Common Venue</th>\n",
" <th>5th Most Common Venue</th>\n",
" <th>6th Most Common Venue</th>\n",
" <th>7th Most Common Venue</th>\n",
" <th>8th Most Common Venue</th>\n",
" <th>9th Most Common Venue</th>\n",
" <th>10th Most Common Venue</th>\n",
" <th>Latitude</th>\n",
" <th>Longitude</th>\n",
" <th>Distance to downtown</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>M1B</td>\n",
" <td>Fast Food Restaurant</td>\n",
" <td>Coffee Shop</td>\n",
" <td>Hobby Shop</td>\n",
" <td>Gym</td>\n",
" <td>Martial Arts Dojo</td>\n",
" <td>Fruit &amp; Vegetable Store</td>\n",
" <td>Caribbean Restaurant</td>\n",
" <td>Sandwich Place</td>\n",
" <td>Chinese Restaurant</td>\n",
" <td>Paper / Office Supplies Store</td>\n",
" <td>43.806686</td>\n",
" <td>-79.194353</td>\n",
" <td>14.288896</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>M1C</td>\n",
" <td>Breakfast Spot</td>\n",
" <td>Park</td>\n",
" <td>Playground</td>\n",
" <td>Burger Joint</td>\n",
" <td>Italian Restaurant</td>\n",
" <td>Eastern European Restaurant</td>\n",
" <td>Electronics Store</td>\n",
" <td>Empanada Restaurant</td>\n",
" <td>Ethiopian Restaurant</td>\n",
" <td>Event Space</td>\n",
" <td>43.784535</td>\n",
" <td>-79.160497</td>\n",
" <td>14.480115</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>M1E</td>\n",
" <td>Pizza Place</td>\n",
" <td>Coffee Shop</td>\n",
" <td>Fast Food Restaurant</td>\n",
" <td>Smoothie Shop</td>\n",
" <td>Bank</td>\n",
" <td>Intersection</td>\n",
" <td>Sports Bar</td>\n",
" <td>Beer Store</td>\n",
" <td>Greek Restaurant</td>\n",
" <td>Grocery Store</td>\n",
" <td>43.763573</td>\n",
" <td>-79.188711</td>\n",
" <td>12.479041</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>M1G</td>\n",
" <td>Coffee Shop</td>\n",
" <td>Chinese Restaurant</td>\n",
" <td>Electronics Store</td>\n",
" <td>Fast Food Restaurant</td>\n",
" <td>Park</td>\n",
" <td>Indian Restaurant</td>\n",
" <td>Falafel Restaurant</td>\n",
" <td>Dumpling Restaurant</td>\n",
" <td>Eastern European Restaurant</td>\n",
" <td>Empanada Restaurant</td>\n",
" <td>43.770992</td>\n",
" <td>-79.216917</td>\n",
" <td>11.738290</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>M1H</td>\n",
" <td>Bakery</td>\n",
" <td>Coffee Shop</td>\n",
" <td>Pharmacy</td>\n",
" <td>Indian Restaurant</td>\n",
" <td>Athletics &amp; Sports</td>\n",
" <td>Burger Joint</td>\n",
" <td>Fast Food Restaurant</td>\n",
" <td>Caribbean Restaurant</td>\n",
" <td>Sporting Goods Shop</td>\n",
" <td>Fried Chicken Joint</td>\n",
" <td>43.773136</td>\n",
" <td>-79.239476</td>\n",
" <td>11.058964</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Postal Code 1st Most Common Venue 2nd Most Common Venue \\\n",
"0 M1B Fast Food Restaurant Coffee Shop \n",
"1 M1C Breakfast Spot Park \n",
"2 M1E Pizza Place Coffee Shop \n",
"3 M1G Coffee Shop Chinese Restaurant \n",
"4 M1H Bakery Coffee Shop \n",
"\n",
" 3rd Most Common Venue 4th Most Common Venue 5th Most Common Venue \\\n",
"0 Hobby Shop Gym Martial Arts Dojo \n",
"1 Playground Burger Joint Italian Restaurant \n",
"2 Fast Food Restaurant Smoothie Shop Bank \n",
"3 Electronics Store Fast Food Restaurant Park \n",
"4 Pharmacy Indian Restaurant Athletics & Sports \n",
"\n",
" 6th Most Common Venue 7th Most Common Venue 8th Most Common Venue \\\n",
"0 Fruit & Vegetable Store Caribbean Restaurant Sandwich Place \n",
"1 Eastern European Restaurant Electronics Store Empanada Restaurant \n",
"2 Intersection Sports Bar Beer Store \n",
"3 Indian Restaurant Falafel Restaurant Dumpling Restaurant \n",
"4 Burger Joint Fast Food Restaurant Caribbean Restaurant \n",
"\n",
" 9th Most Common Venue 10th Most Common Venue Latitude \\\n",
"0 Chinese Restaurant Paper / Office Supplies Store 43.806686 \n",
"1 Ethiopian Restaurant Event Space 43.784535 \n",
"2 Greek Restaurant Grocery Store 43.763573 \n",
"3 Eastern European Restaurant Empanada Restaurant 43.770992 \n",
"4 Sporting Goods Shop Fried Chicken Joint 43.773136 \n",
"\n",
" Longitude Distance to downtown \n",
"0 -79.194353 14.288896 \n",
"1 -79.160497 14.480115 \n",
"2 -79.188711 12.479041 \n",
"3 -79.216917 11.738290 \n",
"4 -79.239476 11.058964 "
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"new.head()"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"df_distance = new.filter(['1st Most Common Venue','Distance to downtown'], axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>1st Most Common Venue</th>\n",
" <th>Distance to downtown</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Fast Food Restaurant</td>\n",
" <td>14.288896</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Breakfast Spot</td>\n",
" <td>14.480115</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Pizza Place</td>\n",
" <td>12.479041</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Coffee Shop</td>\n",
" <td>11.738290</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Bakery</td>\n",
" <td>11.058964</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 1st Most Common Venue Distance to downtown\n",
"0 Fast Food Restaurant 14.288896\n",
"1 Breakfast Spot 14.480115\n",
"2 Pizza Place 12.479041\n",
"3 Coffee Shop 11.738290\n",
"4 Bakery 11.058964"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_distance.head()"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
"distance_grouped = df_distance.groupby('1st Most Common Venue').mean()\n",
"distance_grouped.sort_values('Distance to downtown', inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAF1CAYAAAD4PxH2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsnXfYFNX1+D/nBRVQsWKLBbFgjCAiEBRBjSWxa8QYYtdojFGjfu0pliS/EKOxYDTBgt3YEzU2YlCKDZCmYomKSjSKxkJEFPT8/jh3eWfnndmd2d1393U9n+eZ531n5uzM3Xvvnrlz7rnniKriOI7jfPlpaXQBHMdxnNrgCt1xHKdJcIXuOI7TJLhCdxzHaRJcoTuO4zQJrtAdx3GaBFfojuM4TYIrdMdxnCbBFbrjOE6T0LmeN1t11VW1Z8+e9byl4zjOl56pU6e+q6o9ysnVVaH37NmTKVOm1POWjuM4X3pE5LUscm5ycRzHaRJcoTuO4zQJrtAdx3GahLra0JNYtGgRc+fOZeHChY0uivMlpkuXLqy99tostdRSjS6K4zSMhiv0uXPnsvzyy9OzZ09EpNHFcb6EqCrvvfcec+fOZf311290cRynYTTc5LJw4UJWWWUVV+ZOxYgIq6yyir/lOV95Gq7QAVfmTtV4H3KcDqLQHcdxnOppuA09Ts/T/17T680ZuVtZmU6dOtGnTx8WLVpE586dOeSQQzjhhBNoaWlhypQpXHfddVxyySXJ158zh8cee4wf/OAHNS13Fj744ANuuukmjjnmmIqvcfbZZ7Pccstx8skn17BkRiPrxnG+LKTpvCy6K46P0IGuXbsyffp0nn32WcaOHct9993HOeecA8CAAQNSlTmY0rrpppvqVdQiPvjgAy677LKG3DsLjawbx/kq4go9xmqrrcbo0aO59NJLUVUeeeQRdt99dwAeffRR+vXrR79+/dhiiy2YP38+p59+OhMmTKBfv35ceOGFzJkzh6FDh9K/f3/69+/PY489BsAjjzzCdtttx/Dhw9lkk0044IADUFUAJk+ezNZbb83mm2/OoEGDmD9/Pp9//jmnnHIKAwcOpG/fvvz5z39uU9bTTz+dl19+mX79+nHKKaegqpxyyilsttlm9OnTh1tuuSXxO/7mN7+hd+/e7LjjjrzwwgtLjk+fPp3BgwfTt29f9tlnH95//33eeecdttxySwBmzJiBiPD6668DsMEGG7BgwQIOPfRQjj/+eLbeemt69erF7bffvqR80bpZuHAhhx12GH369GGLLbZg3LhxAOy6667MnDkTgC222IJzzz0XgF/84hdceeWVJevOcZxWOpzJpSPQq1cvvvjiC955552i4+effz5//OMfGTJkCP/73//o0qULI0eO5Pzzz+fee+8FYMGCBYwdO5YuXbrw0ksvMWLEiCXxa6ZNm8azzz7LWmutxZAhQ5g0aRKDBg1i//3355ZbbmHgwIF89NFHdO3alauuuooVVliByZMn8+mnnzJkyBB23nnnIre8kSNH8swzzzB9+nQA7rjjDqZPn86MGTN49913GThwIMOGDWPNNddc8pmpU6fyl7/8hWnTprF48WL69++/RGEffPDBjBo1im233ZZf/vKXnHPOOVx00UUsXLiQjz76iAkTJjBgwAAmTJjANttsw2qrrUa3bt0AeOutt5g4cSLPP/88e+65J8OHD29TNxdccAEAs2bN4vnnn2fnnXfmxRdfZNiwYUyYMIGePXvSuXNnJk2aBMDEiRM58MADeeuttxLrbptttql52zvOl5myI3QRuVpE3hGRZxLOnSwiKiKrtk/xGkfSCHDIkCGcdNJJXHLJJXzwwQd07tz2ebho0SKOPPJI+vTpw3777cdzzz235NygQYNYe+21aWlpoV+/fsyZM4cXXniBNddck4EDBwLQvXt3OnfuzEMPPcR1111Hv379+OY3v8l7773HSy+9VLLMEydOZMSIEXTq1InVV1+dbbfdlsmTJxfJTJgwgX322Ydu3brRvXt39txzTwA+/PBDPvjgA7bddlsADjnkEMaPHw/A1ltvzaRJkxg/fjxnnnkm48ePZ8KECQwdOnTJdffee29aWlrYdNNNefvtt1PLd9BBBwGwySabsN566/Hiiy8ydOhQxo8fz8SJE9ltt9343//+x4IFC5gzZw69e/dOrTvHcYrJMkK/BrgUuC56UETWAXYCXq99sRrLK6+8QqdOnVhttdWYPXv2kuOnn346u+22G/fddx+DBw/mH//4R5vPXnjhhay++urMmDGDL774gi5duiw5t8wyyyz5v1OnTixevBhVTXS5U1VGjRrFt7/97czlzmqGyOviN3ToUCZMmMBrr73GXnvtxe9+9ztEZIkpCoq/W1o50o4PHDiQKVOm0KtXL3baaSfeffddrrjiiiVvDvHrF+rOcZxiyo7QVXU88N+EUxcCpwJNZcycN28eRx99NMcee2wbxffyyy/Tp08fTjvtNAYMGMDzzz/P8ssvz/z585fIfPjhh6y55pq0tLRw/fXX8/nnn5e83yabbMKbb765ZCQ9f/58Fi9ezLe//W0uv/xyFi1aBMCLL77Ixx9/XPTZ+L2HDRvGLbfcwueff868efMYP348gwYNKvrMsGHDuOuuu/jkk0+YP38+99xzDwArrLACK620EhMmTADg+uuvXzJaHzZsGDfccAMbbbQRLS0trLzyytx3330MGTKk5HdLKt+NN9645Pu8/vrr9O7dm6WXXpp11lmHW2+9lcGDBzN06FDOP//8ojcAx3HKU5ENXUT2BP6tqjPKjfZE5CjgKIB111237LUrcdWplk8++YR+/fotcVs86KCDOOmkk9rIXXTRRYwbN45OnTqx6aabsssuu9DS0kLnzp3ZfPPNOfTQQznmmGPYd999ue2229h+++1ZdtllS9576aWX5pZbbuG4447jk08+oWvXrvzjH//ghz/8IXPmzKF///6oKj169OCvf/1r0WdXWWUVhgwZwmabbcYuu+zCeeedx+OPP87mm2+OiHDeeeexxhprFH2mf//+7L///vTr14/11luvSGlee+21HH300SxYsIBevXoxZswYwOLYgylkgG222Ya5c+ey0korlfxuffv2bVM3Rx99NH369KFz585cc801S0beQ4cO5eGHH6Zbt24MHTqUuXPnukJ3nJxIltd0EekJ3Kuqm4lIN2AcsLOqfigic4ABqvpuuesMGDBA4wkuZs+ezde//vUKiu44xXhfcr6MZPFDF5Gpqjqg3LUqcVvcAFgfmBGU+drA0yKyRslPOY7jOO1KbpOLqs4CVivs5xmhO47jOO1HFrfFm4HHgd4iMldEjqh1IXyRiFMt3occJ8MIXVVHlDnfs5oCdOnShffee89D6DoVU4iHHnURdZyvIg1fKbr22mszd+5c5s2b1+iiOF9iChmLHOerTMMV+lJLLeVZZhzHcWqAB+dyHMdpElyhO47jNAmu0B3HcZoEV+iO4zhNgit0x3GcJsEVuuM4TpPgCt1xHKdJcIXuOI7TJLhCdxzHaRJcoTuO4zQJrtAdx3GaBFfojuM4TYIrdMdx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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"distance_grouped.plot(kind='bar')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Caffe and Bar categories are closer to city center. Korean Restaurant category has the minimum average distance to city centee but we can take it as an exception since there are not many Korean Restaurants."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Map of Toronto with coordinates of postal codes superimposed on top"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The geograpical coordinate of Toronto are 43.653963, -79.387207.\n"
]
}
],
"source": [
"address = 'Toronto, CA'\n",
"\n",
"geolocator = Nominatim(user_agent=\"toronto_explorer\")\n",
"location = geolocator.geocode(address)\n",
"latitude = location.latitude\n",
"longitude = location.longitude\n",
"print('The geograpical coordinate of Toronto are {}, {}.'.format(latitude, longitude))"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNDMuNjUzOTYzLC03OS4zODcyMDddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyX2I3OGJiNGEyZDUxNDRhNGJiN2I0ZjcwODE3NDk0OTA5ID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAgICAgICAgICAgICAgewogICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICJtYXhab29tIjogMTgsCiAgIm1pblpvb20iOiAxLAogICJub1dyYXAiOiBmYWxzZSwKICAic3ViZG9tYWlucyI6ICJhYmMiCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84N2FjNjBhMmM1ZTU0ODBkYWU2ZjgzMTViNDM2NTNkNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjgwNjY4NjI5OTk5OTk5NiwtNzkuMTk0MzUzNDAwMDAwMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDI4NWZlYzAyMDQyNDA4ZTg3ODU3NmRhMmVmYjM0YWMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTE1YWQ5NGEyZTA0NGNhZGFmNWM0NTM0ODIwZTA0MmIgPSAkKCc8ZGl2IGlkPSJodG1sX2ExNWFkOTRhMmUwNDRjYWRhZjVjNDUzNDgyMGUwNDJiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NMUI8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2QyODVmZWMwMjA0MjQwOGU4Nzg1NzZkYTJlZmIzNGFjLnNldENvbnRlbnQoaHRtbF9hMTVhZDk0YTJlMDQ0Y2FkYWY1YzQ1MzQ4MjBlMDQyYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84N2FjNjBhMmM1ZTU0ODBkYWU2ZjgzMTViNDM2NTNkNi5iaW5kUG9wdXAocG9wdXBfZDI4NWZlYzAyMDQyNDA4ZTg3ODU3NmRhMmVmYjM0YWMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2U4YWNlYWE3NmI0NGY5ZDlkNTFjMjc5MGI3NGEwNzkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My43ODQ1MzUxLC03OS4xNjA0OTcwOTk5OTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83MWQwMTg4MTU5ZmM0ZDNkOTY0ZTc4Mjc3NmRkODYyMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jMmY5MzgzNzY2ODI0ZjdkOTJjNzY2ZmJhNzUyOTZkOCA9ICQoJzxkaXYgaWQ9Imh0bWxfYzJmOTM4Mzc2NjgyNGY3ZDkyYzc2NmZiYTc1Mjk2ZDgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk0xQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzFkMDE4ODE1OWZjNGQzZDk2NGU3ODI3NzZkZDg2MjIuc2V0Q29udGVudChodG1sX2MyZjkzODM3NjY4MjRmN2Q5MmM3NjZmYmE3NTI5NmQ4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzdlOGFjZWFhNzZiNDRmOWQ5ZDUxYzI3OTBiNzRhMDc5LmJpbmRQb3B1cChwb3B1cF83MWQwMTg4MTU5ZmM0ZDNkOTY0ZTc4Mjc3NmRkODYyMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yZTI4OTE1ZGMwNDU0ODk4YTdhNjg2MzM2ZGE0OGYyOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjc2MzU3MjYsLTc5LjE4ODcxMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOGM1OWNiY2RjNTU2NGQxZGJjNzdjZWIyOTc0YzhmNzYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2FiZjkzYmU2OTY0NGQzNTgzZDc4ZTNjYzVlMmIwNjAgPSAkKCc8ZGl2IGlkPSJodG1sX2NhYmY5M2JlNjk2NDRkMzU4M2Q3OGUzY2M1ZTJiMDYwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NMUU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzhjNTljYmNkYzU1NjRkMWRiYzc3Y2ViMjk3NGM4Zjc2LnNldENvbnRlbnQoaHRtbF9jYWJmOTNiZTY5NjQ0ZDM1ODNkNzhlM2NjNWUyYjA2MCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yZTI4OTE1ZGMwNDU0ODk4YTdhNjg2MzM2ZGE0OGYyOS5iaW5kUG9wdXAocG9wdXBfOGM1OWNiY2RjNTU2NGQxZGJjNzdjZWIyOTc0YzhmNzYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDNjZDA3MjU4MDMzNDU3YmFjZGE5ZTgzNGYxZTkyNzcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My43NzA5OTIxLC03OS4yMTY5MTc0MDAwMDAwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kZGQyNTk3NjU0OGM0MmM0YjM3NjliNGU1OGFjMjMxMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81MGFlMTEzOGE0NmE0YzRiYTRlMTNmMTI2NjFmNDBmNCA9ICQoJzxkaXYgaWQ9Imh0bWxfNTBhZTExMzhhNDZhNGM0YmE0ZTEzZjEyNjYxZjQwZjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk0xRzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGRkMjU5NzY1NDhjNDJjNGIzNzY5YjRlNThhYzIzMTAuc2V0Q29udGVudChodG1sXzUwYWUxMTM4YTQ2YTRjNGJhNGUxM2YxMjY2MWY0MGY0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzAzY2QwNzI1ODAzMzQ1N2JhY2RhOWU4MzRmMWU5Mjc3LmJpbmRQb3B1cChwb3B1cF9kZGQyNTk3NjU0OGM0MmM0YjM3NjliNGU1OGFjMjMxMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xODVjMGI0ZTczMDk0N2IxODc5OWNhMjc1OWQxODI3MyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjc3MzEzNiwtNzkuMjM5NDc2MDk5OTk5OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWViZGYwOTBmMzdmNDk1ZmIyZTg1OTQwNGE3YTdlZTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODgwZjA5ODJkNDU1NDU3OGIxNDNjZjQ1ZGZlNTFkYWMgPSAkKCc8ZGl2IGlkPSJodG1sXzg4MGYwOTgyZDQ1NTQ1NzhiMTQzY2Y0NWRmZTUxZGFjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NMUg8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2VlYmRmMDkwZjM3ZjQ5NWZiMmU4NTk0MDRhN2E3ZWU3LnNldENvbnRlbnQoaHRtbF84ODBmMDk4MmQ0NTU0NTc4YjE0M2NmNDVkZmU1MWRhYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xODVjMGI0ZTczMDk0N2IxODc5OWNhMjc1OWQxODI3My5iaW5kUG9wdXAocG9wdXBfZWViZGYwOTBmMzdmNDk1ZmIyZTg1OTQwNGE3YTdlZTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTI3Y2U5NmZiN2FjNDcyOTk4ZGIxMWFhYjEzM2ViYTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My43NDQ3MzQyLC03OS4yMzk0NzYwOTk5OTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83ZDQzYTQwMzNmOWY0M2VkOGI4OWZiMWQ4MzQwMTkzMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81ODlmNzcxN2JiNjU0NDYyOTY2Y2U2YWFhNGM0OWZkZSA9ICQoJzxkaXYgaWQ9Imh0bWxfNTg5Zjc3MTdiYjY1NDQ2Mjk2NmNlNmFhYTRjNDlmZGUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk0xSjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2Q0M2E0MDMzZjlmNDNlZDhiODlmYjFkODM0MDE5MzIuc2V0Q29udGVudChodG1sXzU4OWY3NzE3YmI2NTQ0NjI5NjZjZTZhYWE0YzQ5ZmRlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzUyN2NlOTZmYjdhYzQ3Mjk5OGRiMTFhYWIxMzNlYmEyLmJpbmRQb3B1cChwb3B1cF83ZDQzYTQwMzNmOWY0M2VkOGI4OWZiMWQ4MzQwMTkzMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wYmViMmU3Mjc3Nzc0MTg2OTI1OTE4YmQyNGNhOWRkMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjcyNzkyOTIsLTc5LjI2MjAyOTQwMDAwMDAyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JkOGUxZjRiNzFkNTQ3ZWNhMmViN2MzM2Y0YmY4OTFjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc1YjIxMjQzNWRmMTRkNzg5NjRlZGFlYjNiZDAxZjZmID0gJCgnPGRpdiBpZD0iaHRtbF83NWIyMTI0MzVkZjE0ZDc4OTY0ZWRhZWIzYmQwMWY2ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTFLPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iZDhlMWY0YjcxZDU0N2VjYTJlYjdjMzNmNGJmODkxYy5zZXRDb250ZW50KGh0bWxfNzViMjEyNDM1ZGYxNGQ3ODk2NGVkYWViM2JkMDFmNmYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMGJlYjJlNzI3Nzc3NDE4NjkyNTkxOGJkMjRjYTlkZDEuYmluZFBvcHVwKHBvcHVwX2JkOGUxZjRiNzFkNTQ3ZWNhMmViN2MzM2Y0YmY4OTFjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IzZDZjYTc1NTQyMjQ5MTM5YWUxMWQ2MjY5M2I1OTE0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNzExMTExNzAwMDAwMDA0LC03OS4yODQ1NzcyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y3ODE1MzE4NTc4MDRmMjI5YzkyY2QzNWM3Yzk1Y2E1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhmOTY2ZDhmMWRlNjQyYzk5NTA0MjI5ZjQzMDVhMjk0ID0gJCgnPGRpdiBpZD0iaHRtbF84Zjk2NmQ4ZjFkZTY0MmM5OTUwNDIyOWY0MzA1YTI5NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mNzgxNTMxODU3ODA0ZjIyOWM5MmNkMzVjN2M5NWNhNS5zZXRDb250ZW50KGh0bWxfOGY5NjZkOGYxZGU2NDJjOTk1MDQyMjlmNDMwNWEyOTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjNkNmNhNzU1NDIyNDkxMzlhZTExZDYyNjkzYjU5MTQuYmluZFBvcHVwKHBvcHVwX2Y3ODE1MzE4NTc4MDRmMjI5YzkyY2QzNWM3Yzk1Y2E1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzc4NWRmZDI3M2FjNTQ4NDViYWU3YTI3ZjIyYWUzNjc3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNzE2MzE2LC03OS4yMzk0NzYwOTk5OTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80MWQ0NzUxZDA5ZjA0M2FjYjY0ZGQ1YzhjOTc3MmE1ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85ZjUzNTFmNjg2YTk0YTlkYjYzOWU5YzUzMjIxNDAwOSA9ICQoJzxkaXYgaWQ9Imh0bWxfOWY1MzUxZjY4NmE5NGE5ZGI2MzllOWM1MzIyMTQwMDkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk0xTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDFkNDc1MWQwOWYwNDNhY2I2NGRkNWM4Yzk3NzJhNWQuc2V0Q29udGVudChodG1sXzlmNTM1MWY2ODZhOTRhOWRiNjM5ZTljNTMyMjE0MDA5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzc4NWRmZDI3M2FjNTQ4NDViYWU3YTI3ZjIyYWUzNjc3LmJpbmRQb3B1cChwb3B1cF80MWQ0NzUxZDA5ZjA0M2FjYjY0ZGQ1YzhjOTc3MmE1ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yMjkwZmFhNTIzZDk0N2FiYTE5YzEzNDMzZWFiN2QyZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjY5MjY1NzAwMDAwMDAwNCwtNzkuMjY0ODQ4MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84MWVmY2QyMjA5ZGE0MWIxOGI4OGI3NjBkMzdjZjk1OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yMzNjYzgzMDM3MjY0Y2MzOWNmYTZmMDUwNzk0MjBiZCA9ICQoJzxkaXYgaWQ9Imh0bWxfMjMzY2M4MzAzNzI2NGNjMzljZmE2ZjA1MDc5NDIwYmQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk0xTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODFlZmNkMjIwOWRhNDFiMThiODhiNzYwZDM3Y2Y5NTguc2V0Q29udGVudChodG1sXzIzM2NjODMwMzcyNjRjYzM5Y2ZhNmYwNTA3OTQyMGJkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzIyOTBmYWE1MjNkOTQ3YWJhMTljMTM0MzNlYWI3ZDJkLmJpbmRQb3B1cChwb3B1cF84MWVmY2QyMjA5ZGE0MWIxOGI4OGI3NjBkMzdjZjk1OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85MDAxODJhZjE0NzU0MzgzYjExOWE3MjRiNWI0YzZiZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjc1NzQwOTYsLTc5LjI3MzMwNDAwMDAwMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzNlNTc5YjcwMWNkNzQ2NmJhMjA2MWQ2ZWI4OTNiYzZlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2FhOWU5OTJlZGFmYzQzYTA5ZWVkNGMxYjlkMzJhYjVmID0gJCgnPGRpdiBpZD0iaHRtbF9hYTllOTkyZWRhZmM0M2EwOWVlZDRjMWI5ZDMyYWI1ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTFQPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zZTU3OWI3MDFjZDc0NjZiYTIwNjFkNmViODkzYmM2ZS5zZXRDb250ZW50KGh0bWxfYWE5ZTk5MmVkYWZjNDNhMDllZWQ0YzFiOWQzMmFiNWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTAwMTgyYWYxNDc1NDM4M2IxMTlhNzI0YjViNGM2YmYuYmluZFBvcHVwKHBvcHVwXzNlNTc5YjcwMWNkNzQ2NmJhMjA2MWQ2ZWI4OTNiYzZlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ3ZTk4YWVkOGYyODQwZTRhZjY5YTY5ZTFhZDU0YjExID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNzUwMDcxNTAwMDAwMDA0LC03OS4yOTU4NDkxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FjMjkzM2FjOTQ2ZDRlNjFhMTc0MGRkY2YzM2ViMDQ4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJlZjRhYWM2ZjhjMzQyYmFiMGUyOTIyN2ZmNDY4NWJmID0gJCgnPGRpdiBpZD0iaHRtbF8yZWY0YWFjNmY4YzM0MmJhYjBlMjkyMjdmZjQ2ODViZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTFSPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hYzI5MzNhYzk0NmQ0ZTYxYTE3NDBkZGNmMzNlYjA0OC5zZXRDb250ZW50KGh0bWxfMmVmNGFhYzZmOGMzNDJiYWIwZTI5MjI3ZmY0Njg1YmYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNDdlOThhZWQ4ZjI4NDBlNGFmNjlhNjllMWFkNTRiMTEuYmluZFBvcHVwKHBvcHVwX2FjMjkzM2FjOTQ2ZDRlNjFhMTc0MGRkY2YzM2ViMDQ4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzkxYTMzMjMwODU3NjQ3YTliMjQ0ZTM1ZmY1ZTJiMzhiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNzk0MjAwMywtNzkuMjYyMDI5NDAwMDAwMDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2ViZDY0MTQxYTBiNDkxZTljNzI5MDAwYWNmZGI0MDkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTUxZTczZjJhNGYxNGE5MWJlYjNjYmRlMDc5Y2I0MWUgPSAkKCc8ZGl2IGlkPSJodG1sXzU1MWU3M2YyYTRmMTRhOTFiZWIzY2JkZTA3OWNiNDFlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NMVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdlYmQ2NDE0MWEwYjQ5MWU5YzcyOTAwMGFjZmRiNDA5LnNldENvbnRlbnQoaHRtbF81NTFlNzNmMmE0ZjE0YTkxYmViM2NiZGUwNzljYjQxZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85MWEzMzIzMDg1NzY0N2E5YjI0NGUzNWZmNWUyYjM4Yi5iaW5kUG9wdXAocG9wdXBfN2ViZDY0MTQxYTBiNDkxZTljNzI5MDAwYWNmZGI0MDkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGM1ZDQxM2ZjMTZmNGQxZjkzODUyNzAzNWZlMmY5YTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My43ODE2Mzc1LC03OS4zMDQzMDIxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2QzMmVlZjk2N2M3NjRkMGI4ZjRjNDYzMDMwN2NhZmIxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzUxOGNlMDAyZTYyYzQ1ZmZiN2U2NDA1YWI3ODYyNmVmID0gJCgnPGRpdiBpZD0iaHRtbF81MThjZTAwMmU2MmM0NWZmYjdlNjQwNWFiNzg2MjZlZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTFUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kMzJlZWY5NjdjNzY0ZDBiOGY0YzQ2MzAzMDdjYWZiMS5zZXRDb250ZW50KGh0bWxfNTE4Y2UwMDJlNjJjNDVmZmI3ZTY0MDVhYjc4NjI2ZWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZGM1ZDQxM2ZjMTZmNGQxZjkzODUyNzAzNWZlMmY5YTUuYmluZFBvcHVwKHBvcHVwX2QzMmVlZjk2N2M3NjRkMGI4ZjRjNDYzMDMwN2NhZmIxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q1OWE1NWEyYzg4YzQxOTFhYzdiODU3NTBkMTk2ZTA5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuODE1MjUyMiwtNzkuMjg0NTc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mNGQzZDVjZGEyYjQ0NGQ0Yjk0NTVlMDVmOTE5YTBmYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lYjRkYmI3Yzg4N2Y0Yjk5OWM2NmExOTgyYTIyYjljNSA9ICQoJzxkaXYgaWQ9Imh0bWxfZWI0ZGJiN2M4ODdmNGI5OTljNjZhMTk4MmEyMmI5YzUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk0xVjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjRkM2Q1Y2RhMmI0NDRkNGI5NDU1ZTA1ZjkxOWEwZmIuc2V0Q29udGVudChodG1sX2ViNGRiYjdjODg3ZjRiOTk5YzY2YTE5ODJhMjJiOWM1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Q1OWE1NWEyYzg4YzQxOTFhYzdiODU3NTBkMTk2ZTA5LmJpbmRQb3B1cChwb3B1cF9mNGQzZDVjZGEyYjQ0NGQ0Yjk0NTVlMDVmOTE5YTBmYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hZmQyODkwNDNjMDk0NmUzYjQ0MmNmOWEzNjE1YTRiNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjc5OTUyNTIwMDAwMDAwNSwtNzkuMzE4Mzg4N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xODk3NWQ5MGFjNGU0MzhjYTE1OTg5Y2U5YTJkZWFiNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NDVjM2MxMzcwZDM0OWM4YjJhN2YwOWM3ZTdiZmIwZCA9ICQoJzxkaXYgaWQ9Imh0bWxfOTQ1YzNjMTM3MGQzNDljOGIyYTdmMDljN2U3YmZiMGQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk0xVzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTg5NzVkOTBhYzRlNDM4Y2ExNTk4OWNlOWEyZGVhYjUuc2V0Q29udGVudChodG1sXzk0NWMzYzEzNzBkMzQ5YzhiMmE3ZjA5YzdlN2JmYjBkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2FmZDI4OTA0M2MwOTQ2ZTNiNDQyY2Y5YTM2MTVhNGI3LmJpbmRQb3B1cChwb3B1cF8xODk3NWQ5MGFjNGU0MzhjYTE1OTg5Y2U5YTJkZWFiNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lODA0ODMwY2ExYjA0ZjM5ODZlY2VmZjlkZTFkMDUzOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjgzNjEyNDcwMDAwMDAwNiwtNzkuMjA1NjM2MDk5OTk5OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTM2ZjY4ZGI5MWM3NDczYmI0ZjFjMGVlNzViNTVkMDIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGNkMTBjNjVjYWRhNGQxMmI5YjQ3M2I2NjFmNWM4ZDIgPSAkKCc8ZGl2IGlkPSJodG1sXzRjZDEwYzY1Y2FkYTRkMTJiOWI0NzNiNjYxZjVjOGQyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NMVg8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzUzNmY2OGRiOTFjNzQ3M2JiNGYxYzBlZTc1YjU1ZDAyLnNldENvbnRlbnQoaHRtbF80Y2QxMGM2NWNhZGE0ZDEyYjliNDczYjY2MWY1YzhkMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lODA0ODMwY2ExYjA0ZjM5ODZlY2VmZjlkZTFkMDUzOC5iaW5kUG9wdXAocG9wdXBfNTM2ZjY4ZGI5MWM3NDczYmI0ZjFjMGVlNzViNTVkMDIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGZkM2U0N2E1OTAzNGQxZmJlODE4Y2Y3NjgxMzA5NTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My44MDM3NjIyLC03OS4zNjM0NTE3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzRkNjA4MDk2MTM1YzQ2NTBiYjBlZjQzNGRkYjAwNGYzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y0Njk4Mzg0YzQ0MzQ3NjI5NTllMThiZjI1YjcxZTM5ID0gJCgnPGRpdiBpZD0iaHRtbF9mNDY5ODM4NGM0NDM0NzYyOTU5ZTE4YmYyNWI3MWUzOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTJIPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80ZDYwODA5NjEzNWM0NjUwYmIwZWY0MzRkZGIwMDRmMy5zZXRDb250ZW50KGh0bWxfZjQ2OTgzODRjNDQzNDc2Mjk1OWUxOGJmMjViNzFlMzkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNGZkM2U0N2E1OTAzNGQxZmJlODE4Y2Y3NjgxMzA5NTAuYmluZFBvcHVwKHBvcHVwXzRkNjA4MDk2MTM1YzQ2NTBiYjBlZjQzNGRkYjAwNGYzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2VkMjY4ZWU5Mzg2OTQ3MGI4ZmRmOWQwYTIwODg3Y2ZiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNzc4NTE3NSwtNzkuMzQ2NTU1N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xZjcxNWM4ODZlODk0ZDU4YTExMGUzYzg0ZjVmODQ2NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xMjQ1NDI5M2NjZTg0NGFlYmIyNjU3NzA2NDg5OTRmNSA9ICQoJzxkaXYgaWQ9Imh0bWxfMTI0NTQyOTNjY2U4NDRhZWJiMjY1NzcwNjQ4OTk0ZjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk0ySjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWY3MTVjODg2ZTg5NGQ1OGExMTBlM2M4NGY1Zjg0Njcuc2V0Q29udGVudChodG1sXzEyNDU0MjkzY2NlODQ0YWViYjI2NTc3MDY0ODk5NGY1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2VkMjY4ZWU5Mzg2OTQ3MGI4ZmRmOWQwYTIwODg3Y2ZiLmJpbmRQb3B1cChwb3B1cF8xZjcxNWM4ODZlODk0ZDU4YTExMGUzYzg0ZjVmODQ2Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iOGFlMmZmM2YzNTM0NTY0OTlkNjFkNzUxYzNjMmRlNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjc4Njk0NzMsLTc5LjM4NTk3NV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMmNlNWU0ZDA3ODY0MDcwOTIyOTE5NzhlMDhlNmM5MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mYTUxZWRiZDFmM2M0YjRlOTI2ZWUzZjRiODBjYmY5NCA9ICQoJzxkaXYgaWQ9Imh0bWxfZmE1MWVkYmQxZjNjNGI0ZTkyNmVlM2Y0YjgwY2JmOTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk0ySzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzJjZTVlNGQwNzg2NDA3MDkyMjkxOTc4ZTA4ZTZjOTIuc2V0Q29udGVudChodG1sX2ZhNTFlZGJkMWYzYzRiNGU5MjZlZTNmNGI4MGNiZjk0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2I4YWUyZmYzZjM1MzQ1NjQ5OWQ2MWQ3NTFjM2MyZGU3LmJpbmRQb3B1cChwb3B1cF8zMmNlNWU0ZDA3ODY0MDcwOTIyOTE5NzhlMDhlNmM5Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zNTc1MjZiNGRjMzg0YWQ1YjU5NTEwODM0MmE5YjJjMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjc1NzQ5MDIsLTc5LjM3NDcxNDA5OTk5OTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkyZDViODdmODhjYjRjNmZhMWE5YmE1NmUxYWI0OWUwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E5M2QyM2M0MmM4NTRjZWU4MTM1NjBhY2ViM2Y3YjY0ID0gJCgnPGRpdiBpZD0iaHRtbF9hOTNkMjNjNDJjODU0Y2VlODEzNTYwYWNlYjNmN2I2NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTJMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85MmQ1Yjg3Zjg4Y2I0YzZmYTFhOWJhNTZlMWFiNDllMC5zZXRDb250ZW50KGh0bWxfYTkzZDIzYzQyYzg1NGNlZTgxMzU2MGFjZWIzZjdiNjQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMzU3NTI2YjRkYzM4NGFkNWI1OTUxMDgzNDJhOWIyYzMuYmluZFBvcHVwKHBvcHVwXzkyZDViODdmODhjYjRjNmZhMWE5YmE1NmUxYWI0OWUwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUyMGI1YWM2N2Q5YTRhMDBhNGI5YWU2MDg1YmZmMDQzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNzg5MDUzLC03OS40MDg0OTI3OTk5OTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81ZTIwZjY4M2Q5Y2M0MzM1OTk1OTkxOWIzOGZiMTE2MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jYjE0MDM3OTZkNWY0Y2Q4OWJmYWIzZWEzNGExOThjOSA9ICQoJzxkaXYgaWQ9Imh0bWxfY2IxNDAzNzk2ZDVmNGNkODliZmFiM2VhMzRhMTk4YzkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk0yTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNWUyMGY2ODNkOWNjNDMzNTk5NTk5MTliMzhmYjExNjIuc2V0Q29udGVudChodG1sX2NiMTQwMzc5NmQ1ZjRjZDg5YmZhYjNlYTM0YTE5OGM5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzUyMGI1YWM2N2Q5YTRhMDBhNGI5YWU2MDg1YmZmMDQzLmJpbmRQb3B1cChwb3B1cF81ZTIwZjY4M2Q5Y2M0MzM1OTk1OTkxOWIzOGZiMTE2Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iZjUxMDZkZjU4YzQ0MzYyYTZmNzVmMjU1MGRmNGE5ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjc3MDExOTksLTc5LjQwODQ5Mjc5OTk5OTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzNiNDJlY2QzYWIxNjQ4ZjA4ZGUzYzQ2NmM5MzcxZDM1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U4MzJjN2I3MTg5MTQ0YWJiMjQxMjY1Y2Y0YjI1YTQ2ID0gJCgnPGRpdiBpZD0iaHRtbF9lODMyYzdiNzE4OTE0NGFiYjI0MTI2NWNmNGIyNWE0NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTJOPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zYjQyZWNkM2FiMTY0OGYwOGRlM2M0NjZjOTM3MWQzNS5zZXRDb250ZW50KGh0bWxfZTgzMmM3YjcxODkxNDRhYmIyNDEyNjVjZjRiMjVhNDYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYmY1MTA2ZGY1OGM0NDM2MmE2Zjc1ZjI1NTBkZjRhOWYuYmluZFBvcHVwKHBvcHVwXzNiNDJlY2QzYWIxNjQ4ZjA4ZGUzYzQ2NmM5MzcxZDM1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FkMTIzZDVhMjJlNzQ0YWQ4YzgzODk0MThlZGUyMjcyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNzUyNzU4Mjk5OTk5OTk2LC03OS40MDAwNDkzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Q5ZDBlYzgxNTMwZDQ4MmZiMWMyM2I5ODRmOTRmMmQ2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2YzZTQ2MzhhYzUwZTQ1MjJiZWZmNzliMzk2Y2VmNmVlID0gJCgnPGRpdiBpZD0iaHRtbF9mM2U0NjM4YWM1MGU0NTIyYmVmZjc5YjM5NmNlZjZlZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTJQPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kOWQwZWM4MTUzMGQ0ODJmYjFjMjNiOTg0Zjk0ZjJkNi5zZXRDb250ZW50KGh0bWxfZjNlNDYzOGFjNTBlNDUyMmJlZmY3OWIzOTZjZWY2ZWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYWQxMjNkNWEyMmU3NDRhZDhjODM4OTQxOGVkZTIyNzIuYmluZFBvcHVwKHBvcHVwX2Q5ZDBlYzgxNTMwZDQ4MmZiMWMyM2I5ODRmOTRmMmQ2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RlNjA2NWI2NzY5NDRkMjFiMzkyMDA4MDM2ZGVjMDIzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNzgyNzM2NCwtNzkuNDQyMjU5M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wN2Q1ODVhOWZjN2I0ODJhYmI0ZDAzMThmNzdhMTZiNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81MTg2N2E2MzAwYjM0YTVlOGMzNTBmYmQ1Y2Y3YTQwMCA9ICQoJzxkaXYgaWQ9Imh0bWxfNTE4NjdhNjMwMGIzNGE1ZThjMzUwZmJkNWNmN2E0MDAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk0yUjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDdkNTg1YTlmYzdiNDgyYWJiNGQwMzE4Zjc3YTE2YjQuc2V0Q29udGVudChodG1sXzUxODY3YTYzMDBiMzRhNWU4YzM1MGZiZDVjZjdhNDAwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2RlNjA2NWI2NzY5NDRkMjFiMzkyMDA4MDM2ZGVjMDIzLmJpbmRQb3B1cChwb3B1cF8wN2Q1ODVhOWZjN2I0ODJhYmI0ZDAzMThmNzdhMTZiNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mYmU5MjdmNmZkMGI0MGUxYmFmYmFjNDE0NjNlNWZkMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjc1MzI1ODYsLTc5LjMyOTY1NjVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2I0NzU0NWRlNzQzNDEzYmIxNDM3MWE5MzA3MmMwMTMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfN2Q3MDQ5OTkxYjYzNDc3Y2I3MzZhMjZlNzk3ODI1ZmUgPSAkKCc8ZGl2IGlkPSJodG1sXzdkNzA0OTk5MWI2MzQ3N2NiNzM2YTI2ZTc5NzgyNWZlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NM0E8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NiNDc1NDVkZTc0MzQxM2JiMTQzNzFhOTMwNzJjMDEzLnNldENvbnRlbnQoaHRtbF83ZDcwNDk5OTFiNjM0NzdjYjczNmEyNmU3OTc4MjVmZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mYmU5MjdmNmZkMGI0MGUxYmFmYmFjNDE0NjNlNWZkMi5iaW5kUG9wdXAocG9wdXBfY2I0NzU0NWRlNzQzNDEzYmIxNDM3MWE5MzA3MmMwMTMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOThmNWM4OWI0MzdkNDQ0M2IwYmY1NzFmZTUzZDNkNGEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My43NDU5MDU3OTk5OTk5OTYsLTc5LjM1MjE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yNDUyN2ZjZjY2NGQ0N2VhODRiYmE5NTk0YWExNTExNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82ZDI3YTllOTA3Nzk0MmIzYWRmOTI2ZmQ0YTc1MzBkOSA9ICQoJzxkaXYgaWQ9Imh0bWxfNmQyN2E5ZTkwNzc5NDJiM2FkZjkyNmZkNGE3NTMwZDkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk0zQjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjQ1MjdmY2Y2NjRkNDdlYTg0YmJhOTU5NGFhMTUxMTQuc2V0Q29udGVudChodG1sXzZkMjdhOWU5MDc3OTQyYjNhZGY5MjZmZDRhNzUzMGQ5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzk4ZjVjODliNDM3ZDQ0NDNiMGJmNTcxZmU1M2QzZDRhLmJpbmRQb3B1cChwb3B1cF8yNDUyN2ZjZjY2NGQ0N2VhODRiYmE5NTk0YWExNTExNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wOWQyN2I5MjZlZDI0YzYxYTg0YTFjYjUzMjkyODg4OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjcyNTg5OTcwMDAwMDAxLC03OS4zNDA5MjNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGU2MDZkMWZkZmE0NGZjZmEwYTkxMjg4ZTNhNmQyNDUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZWRhMDVjOTgzYWVlNDM0NGI5NTRiMzRjMDUyMWE2ZTUgPSAkKCc8ZGl2IGlkPSJodG1sX2VkYTA1Yzk4M2FlZTQzNDRiOTU0YjM0YzA1MjFhNmU1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NM0M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBlNjA2ZDFmZGZhNDRmY2ZhMGE5MTI4OGUzYTZkMjQ1LnNldENvbnRlbnQoaHRtbF9lZGEwNWM5ODNhZWU0MzQ0Yjk1NGIzNGMwNTIxYTZlNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wOWQyN2I5MjZlZDI0YzYxYTg0YTFjYjUzMjkyODg4OC5iaW5kUG9wdXAocG9wdXBfMGU2MDZkMWZkZmE0NGZjZmEwYTkxMjg4ZTNhNmQyNDUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDFiMmExYWVjY2E4NGNmOTkxM2NlODM3MmI4MTEzMTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My43NTQzMjgzLC03OS40NDIyNTkzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzdmNjdkOTNlNjI5MjQzNDFhOTg3NjBmN2E1MjliMGVmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzI3NTIzZWRmNTZhNDRlMDA4YWZjMGYyODBkNDlhMThiID0gJCgnPGRpdiBpZD0iaHRtbF8yNzUyM2VkZjU2YTQ0ZTAwOGFmYzBmMjgwZDQ5YTE4YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTNIPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83ZjY3ZDkzZTYyOTI0MzQxYTk4NzYwZjdhNTI5YjBlZi5zZXRDb250ZW50KGh0bWxfMjc1MjNlZGY1NmE0NGUwMDhhZmMwZjI4MGQ0OWExOGIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDFiMmExYWVjY2E4NGNmOTkxM2NlODM3MmI4MTEzMTIuYmluZFBvcHVwKHBvcHVwXzdmNjdkOTNlNjI5MjQzNDFhOTg3NjBmN2E1MjliMGVmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcxYTMyZTg5NmJmNDQxMGI5NWFiOGYwY2IyMDRhNjZiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNzY3OTgwMywtNzkuNDg3MjYxOTAwMDAwMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNWNlOGNhNDIxNGEzNDcxYThhMGM1NDE2NmMyZGY3M2UgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTk4ODg2MDkzM2QzNDY1YmI2MGI2M2Y0MTUxZmNiYzAgPSAkKCc8ZGl2IGlkPSJodG1sXzE5ODg4NjA5MzNkMzQ2NWJiNjBiNjNmNDE1MWZjYmMwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NM0o8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzVjZThjYTQyMTRhMzQ3MWE4YTBjNTQxNjZjMmRmNzNlLnNldENvbnRlbnQoaHRtbF8xOTg4ODYwOTMzZDM0NjViYjYwYjYzZjQxNTFmY2JjMCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83MWEzMmU4OTZiZjQ0MTBiOTVhYjhmMGNiMjA0YTY2Yi5iaW5kUG9wdXAocG9wdXBfNWNlOGNhNDIxNGEzNDcxYThhMGM1NDE2NmMyZGY3M2UpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTlhZThiZDNmMDU5NDFiNGExZDU2MGI1ZTAwMmI4ZjEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My43Mzc0NzMyMDAwMDAwMDQsLTc5LjQ2NDc2MzI5OTk5OTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JmZWQ0NTI4MTAzNjQ2NTBiYjc3OTM4MDNjMjZmOWRiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2YxNjcxZmVlZWViYjRhMDdiNmU4M2IzODU5ZWMyYTFhID0gJCgnPGRpdiBpZD0iaHRtbF9mMTY3MWZlZWVlYmI0YTA3YjZlODNiMzg1OWVjMmExYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTNLPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iZmVkNDUyODEwMzY0NjUwYmI3NzkzODAzYzI2ZjlkYi5zZXRDb250ZW50KGh0bWxfZjE2NzFmZWVlZWJiNGEwN2I2ZTgzYjM4NTllYzJhMWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTlhZThiZDNmMDU5NDFiNGExZDU2MGI1ZTAwMmI4ZjEuYmluZFBvcHVwKHBvcHVwX2JmZWQ0NTI4MTAzNjQ2NTBiYjc3OTM4MDNjMjZmOWRiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q4YTI1MDRhOGY4ZjRjYWFhNDRlMGYwZDNkMWU4YjQ0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNzM5MDE0NiwtNzkuNTA2OTQzNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80YjAxOTY2ODM3MmY0ZjBlYjQwZmY1YTcxNGVmY2U5MyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zYjRhYzMxMWNmN2U0NGQzYTA5MDgyOTljZjBhMzE5ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfM2I0YWMzMTFjZjdlNDRkM2EwOTA4Mjk5Y2YwYTMxOWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk0zTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNGIwMTk2NjgzNzJmNGYwZWI0MGZmNWE3MTRlZmNlOTMuc2V0Q29udGVudChodG1sXzNiNGFjMzExY2Y3ZTQ0ZDNhMDkwODI5OWNmMGEzMTlkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Q4YTI1MDRhOGY4ZjRjYWFhNDRlMGYwZDNkMWU4YjQ0LmJpbmRQb3B1cChwb3B1cF80YjAxOTY2ODM3MmY0ZjBlYjQwZmY1YTcxNGVmY2U5Myk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84YzhlZTEwMmI5N2Q0NWVmODk4YTQ3YTJlYzU4MGU0MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjcyODQ5NjQsLTc5LjQ5NTY5NzQwMDAwMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y3MGU2NDVmNmNlNDQwYzc5YmZhNjFkNmRkYWExMDg4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E4MmYzYTBhOWNlMzRlYWQ4ODQ0ODA5OTYxMzg2MjhlID0gJCgnPGRpdiBpZD0iaHRtbF9hODJmM2EwYTljZTM0ZWFkODg0NDgwOTk2MTM4NjI4ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mNzBlNjQ1ZjZjZTQ0MGM3OWJmYTYxZDZkZGFhMTA4OC5zZXRDb250ZW50KGh0bWxfYTgyZjNhMGE5Y2UzNGVhZDg4NDQ4MDk5NjEzODYyOGUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOGM4ZWUxMDJiOTdkNDVlZjg5OGE0N2EyZWM1ODBlNDIuYmluZFBvcHVwKHBvcHVwX2Y3MGU2NDVmNmNlNDQwYzc5YmZhNjFkNmRkYWExMDg4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk2YTJjMDJiYzg0NzQ1Nzc4NmUyYTEyMGQzMWEyMmJlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNzYxNjMxMywtNzkuNTIwOTk5NDAwMDAwMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDc5YTI5NjJmMGIwNDgyZDliNmUxZDAxNzY4Zjc0NTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjI2OTU1MThlM2RiNDkzYTk3YjYxMTNhMjVlZTE3ZTEgPSAkKCc8ZGl2IGlkPSJodG1sX2IyNjk1NTE4ZTNkYjQ5M2E5N2I2MTEzYTI1ZWUxN2UxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NM048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzA3OWEyOTYyZjBiMDQ4MmQ5YjZlMWQwMTc2OGY3NDUxLnNldENvbnRlbnQoaHRtbF9iMjY5NTUxOGUzZGI0OTNhOTdiNjExM2EyNWVlMTdlMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85NmEyYzAyYmM4NDc0NTc3ODZlMmExMjBkMzFhMjJiZS5iaW5kUG9wdXAocG9wdXBfMDc5YTI5NjJmMGIwNDgyZDliNmUxZDAxNzY4Zjc0NTEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmExNjI1YzlhODVkNGM0NjgwNjc3Y2MzZDE5NjNiNWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My43MjU4ODIyOTk5OTk5OTUsLTc5LjMxNTU3MTU5OTk5OTk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzcyNDU0NmM4MmUwNjRmOTU4OGYwMzAzMzdlYWI0N2RlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJkYWNkZmMwYmQxYTQyYTNhNzRkMTc5MWFlNjFhYjRjID0gJCgnPGRpdiBpZD0iaHRtbF8yZGFjZGZjMGJkMWE0MmEzYTc0ZDE3OTFhZTYxYWI0YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTRBPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83MjQ1NDZjODJlMDY0Zjk1ODhmMDMwMzM3ZWFiNDdkZS5zZXRDb250ZW50KGh0bWxfMmRhY2RmYzBiZDFhNDJhM2E3NGQxNzkxYWU2MWFiNGMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZmExNjI1YzlhODVkNGM0NjgwNjc3Y2MzZDE5NjNiNWIuYmluZFBvcHVwKHBvcHVwXzcyNDU0NmM4MmUwNjRmOTU4OGYwMzAzMzdlYWI0N2RlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzA1OGEyNDFmYTlhMjRkM2E5NTAyZmEwYTdlMTA4MTI0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNzA2Mzk3MiwtNzkuMzA5OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMwNWE0OTJmZjVhYjQ0ZWJhM2FhNGE1OTQwNDExMzQ1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y5NWY1MGI0ZGJmZDQwZTBhMTI5YmY2NGFkOGVhZGYzID0gJCgnPGRpdiBpZD0iaHRtbF9mOTVmNTBiNGRiZmQ0MGUwYTEyOWJmNjRhZDhlYWRmMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTRCPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMDVhNDkyZmY1YWI0NGViYTNhYTRhNTk0MDQxMTM0NS5zZXRDb250ZW50KGh0bWxfZjk1ZjUwYjRkYmZkNDBlMGExMjliZjY0YWQ4ZWFkZjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDU4YTI0MWZhOWEyNGQzYTk1MDJmYTBhN2UxMDgxMjQuYmluZFBvcHVwKHBvcHVwXzMwNWE0OTJmZjVhYjQ0ZWJhM2FhNGE1OTQwNDExMzQ1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVmZTFkZDNlMjhiNTRmM2RhYTcyNmI1YjYxYTU3ZGUzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNjk1MzQzOTAwMDAwMDA1LC03OS4zMTgzODg3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkyYTA1OTY0YmE4MTQ4YmNhZDU1ZDI4OWY1ZTk0Y2YwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2QwMzZlZGE4ZDMxZDRkYjE5N2E1ZTdkMWRkNjE4YjM0ID0gJCgnPGRpdiBpZD0iaHRtbF9kMDM2ZWRhOGQzMWQ0ZGIxOTdhNWU3ZDFkZDYxOGIzNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTRDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85MmEwNTk2NGJhODE0OGJjYWQ1NWQyODlmNWU5NGNmMC5zZXRDb250ZW50KGh0bWxfZDAzNmVkYThkMzFkNGRiMTk3YTVlN2QxZGQ2MThiMzQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNWZlMWRkM2UyOGI1NGYzZGFhNzI2YjViNjFhNTdkZTMuYmluZFBvcHVwKHBvcHVwXzkyYTA1OTY0YmE4MTQ4YmNhZDU1ZDI4OWY1ZTk0Y2YwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZjZmFlMjAxODhlYjQxNTBhZTNiZjFjODkwMzZhZWUyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNjc2MzU3Mzk5OTk5OTksLTc5LjI5MzAzMTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmNmNzdlYTNlMTA5NDFlNTgwZTNiYmZiNjgxODJlNDAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTgwMjgzMTRlYTZhNDVmMGFjOTRhY2I3M2M0NmI3MzggPSAkKCc8ZGl2IGlkPSJodG1sXzU4MDI4MzE0ZWE2YTQ1ZjBhYzk0YWNiNzNjNDZiNzM4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNEU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JjZjc3ZWEzZTEwOTQxZTU4MGUzYmJmYjY4MTgyZTQwLnNldENvbnRlbnQoaHRtbF81ODAyODMxNGVhNmE0NWYwYWM5NGFjYjczYzQ2YjczOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82Y2ZhZTIwMTg4ZWI0MTUwYWUzYmYxYzg5MDM2YWVlMi5iaW5kUG9wdXAocG9wdXBfYmNmNzdlYTNlMTA5NDFlNTgwZTNiYmZiNjgxODJlNDApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTdiYTY1NTRlNWFmNGNhNDk1YzIyYWNjMjNiZTQ5MGIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My43MDkwNjA0LC03OS4zNjM0NTE3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQwYTZmMmU2MTcxZTQ5MGY5NDE4OTQwNjgyNGM5NjFmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg4NDQzOTBhMDY0NTQyNzlhMWZkMmU4OTk2MjZiMmFmID0gJCgnPGRpdiBpZD0iaHRtbF84ODQ0MzkwYTA2NDU0Mjc5YTFmZDJlODk5NjI2YjJhZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTRHPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80MGE2ZjJlNjE3MWU0OTBmOTQxODk0MDY4MjRjOTYxZi5zZXRDb250ZW50KGh0bWxfODg0NDM5MGEwNjQ1NDI3OWExZmQyZTg5OTYyNmIyYWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNTdiYTY1NTRlNWFmNGNhNDk1YzIyYWNjMjNiZTQ5MGIuYmluZFBvcHVwKHBvcHVwXzQwYTZmMmU2MTcxZTQ5MGY5NDE4OTQwNjgyNGM5NjFmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRjZGY5MGI1MzRjZTQ0YTk5N2NmNjZlMmM0OGU2MjUyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNzA1MzY4OSwtNzkuMzQ5MzcxOTAwMDAwMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODkwYmE4NDJmZTg4NGRiYmFhMjQ5NDRjMGMxMGQxZmIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTdjYjMxOTg0NDkyNDNkYmE0YTU5NDAzNjBkMzkxMmIgPSAkKCc8ZGl2IGlkPSJodG1sXzE3Y2IzMTk4NDQ5MjQzZGJhNGE1OTQwMzYwZDM5MTJiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNEg8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg5MGJhODQyZmU4ODRkYmJhYTI0OTQ0YzBjMTBkMWZiLnNldENvbnRlbnQoaHRtbF8xN2NiMzE5ODQ0OTI0M2RiYTRhNTk0MDM2MGQzOTEyYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80Y2RmOTBiNTM0Y2U0NGE5OTdjZjY2ZTJjNDhlNjI1Mi5iaW5kUG9wdXAocG9wdXBfODkwYmE4NDJmZTg4NGRiYmFhMjQ5NDRjMGMxMGQxZmIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDU3Y2I5NGI4OTFiNGI3Zjk4ZjBhZDY3N2UwYmMzNGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42ODUzNDcsLTc5LjMzODEwNjVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzY4Njg1Y2QyMjBhNDE2Mjk4YjY1ODU5ODU5YmY5MmIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTdlYTExMGQzYTY3NGNlNGI0NzAyZGYzOWM4ZjFhMDcgPSAkKCc8ZGl2IGlkPSJodG1sXzE3ZWExMTBkM2E2NzRjZTRiNDcwMmRmMzljOGYxYTA3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNEo8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc2ODY4NWNkMjIwYTQxNjI5OGI2NTg1OTg1OWJmOTJiLnNldENvbnRlbnQoaHRtbF8xN2VhMTEwZDNhNjc0Y2U0YjQ3MDJkZjM5YzhmMWEwNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wNTdjYjk0Yjg5MWI0YjdmOThmMGFkNjc3ZTBiYzM0ZS5iaW5kUG9wdXAocG9wdXBfNzY4Njg1Y2QyMjBhNDE2Mjk4YjY1ODU5ODU5YmY5MmIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjQ1NWI5ODIwODkzNDU5OWI1OTBiYmQxZDczY2I3NTYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42Nzk1NTcxLC03OS4zNTIxODhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTljODIyYzk5NTNkNDA0NDhkZTNkMGU5ZjU1MDg3MzYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTI5ZTE1M2JhNTM5NGI5ZmE0MGVmNzk2NWE3M2I4ZjEgPSAkKCc8ZGl2IGlkPSJodG1sXzUyOWUxNTNiYTUzOTRiOWZhNDBlZjc5NjVhNzNiOGYxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNEs8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE5YzgyMmM5OTUzZDQwNDQ4ZGUzZDBlOWY1NTA4NzM2LnNldENvbnRlbnQoaHRtbF81MjllMTUzYmE1Mzk0YjlmYTQwZWY3OTY1YTczYjhmMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mNDU1Yjk4MjA4OTM0NTk5YjU5MGJiZDFkNzNjYjc1Ni5iaW5kUG9wdXAocG9wdXBfMTljODIyYzk5NTNkNDA0NDhkZTNkMGU5ZjU1MDg3MzYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjY5ZGIxZmZkMzM3NDU3ZGJjYzRkYjIxZmU4ZDg3YTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42Njg5OTg1LC03OS4zMTU1NzE1OTk5OTk5OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xZDZlMDc2YzM2NWQ0YzJjOWM5OTc0ODk5NTI2ZTkyOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MTQyZDRjODE3ZDM0NjFiYWYzZjE1NGVhMWMxYTJlZiA9ICQoJzxkaXYgaWQ9Imh0bWxfNjE0MmQ0YzgxN2QzNDYxYmFmM2YxNTRlYTFjMWEyZWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk00TDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWQ2ZTA3NmMzNjVkNGMyYzljOTk3NDg5OTUyNmU5Mjkuc2V0Q29udGVudChodG1sXzYxNDJkNGM4MTdkMzQ2MWJhZjNmMTU0ZWExYzFhMmVmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Y2OWRiMWZmZDMzNzQ1N2RiY2M0ZGIyMWZlOGQ4N2EwLmJpbmRQb3B1cChwb3B1cF8xZDZlMDc2YzM2NWQ0YzJjOWM5OTc0ODk5NTI2ZTkyOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84NjY3ZDAwMTk0OWE0NzgzYjI3MzM5MTNjMjg4ZjAyMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjY1OTUyNTUsLTc5LjM0MDkyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xNTA2ZjAxMDViNDc0NWU4OTc2N2IwNDUxNTI2Mzg4MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yMWVhMGJmOWZkNzU0ZjU4YTYyZTVlNzRhY2VlZDYzNiA9ICQoJzxkaXYgaWQ9Imh0bWxfMjFlYTBiZjlmZDc1NGY1OGE2MmU1ZTc0YWNlZWQ2MzYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk00TTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTUwNmYwMTA1YjQ3NDVlODk3NjdiMDQ1MTUyNjM4ODIuc2V0Q29udGVudChodG1sXzIxZWEwYmY5ZmQ3NTRmNThhNjJlNWU3NGFjZWVkNjM2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzg2NjdkMDAxOTQ5YTQ3ODNiMjczMzkxM2MyODhmMDIwLmJpbmRQb3B1cChwb3B1cF8xNTA2ZjAxMDViNDc0NWU4OTc2N2IwNDUxNTI2Mzg4Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mZTkxNGQ4MGE0NmE0MjEyYTJjYWMxOTgxYzgyMjBkZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjcyODAyMDUsLTc5LjM4ODc5MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDYxNzQxMDUyZWVjNDBhOWE4YmViNzczZjAyZTFhMDIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDg4OGMwMTRjNWRiNGM1MWJjMTkzZmEzMzhhM2VmMjggPSAkKCc8ZGl2IGlkPSJodG1sX2Q4ODhjMDE0YzVkYjRjNTFiYzE5M2ZhMzM4YTNlZjI4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNE48L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQ2MTc0MTA1MmVlYzQwYTlhOGJlYjc3M2YwMmUxYTAyLnNldENvbnRlbnQoaHRtbF9kODg4YzAxNGM1ZGI0YzUxYmMxOTNmYTMzOGEzZWYyOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mZTkxNGQ4MGE0NmE0MjEyYTJjYWMxOTgxYzgyMjBkZC5iaW5kUG9wdXAocG9wdXBfNDYxNzQxMDUyZWVjNDBhOWE4YmViNzczZjAyZTFhMDIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGIyZmQ5MDE2NTU2NDNjMTkxMDBjMGRjY2Q2NTkxZWYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My43MTI3NTExLC03OS4zOTAxOTc1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZkZmY4ZTczMGEzZDQ5ZmU5MmI2ZmM0OTA1NmQ3ZDQ5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ1NjIwZjlmYjU2NTRkZjhhYmFhNTkzYTIxYjRiY2U3ID0gJCgnPGRpdiBpZD0iaHRtbF80NTYyMGY5ZmI1NjU0ZGY4YWJhYTU5M2EyMWI0YmNlNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTRQPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82ZGZmOGU3MzBhM2Q0OWZlOTJiNmZjNDkwNTZkN2Q0OS5zZXRDb250ZW50KGh0bWxfNDU2MjBmOWZiNTY1NGRmOGFiYWE1OTNhMjFiNGJjZTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNGIyZmQ5MDE2NTU2NDNjMTkxMDBjMGRjY2Q2NTkxZWYuYmluZFBvcHVwKHBvcHVwXzZkZmY4ZTczMGEzZDQ5ZmU5MmI2ZmM0OTA1NmQ3ZDQ5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzgwNTUyZjgwM2I1NjQ2Y2JhNTM4YzBmNDkwNDlmNjJjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNzE1MzgzNCwtNzkuNDA1Njc4NDAwMDAwMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNWY3Y2ZhZTk3YzA3NDk2NmIyNjdhZTUwNzYxNmUzOWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOWZlNjNhZmI3N2VjNGE0Y2I1ZGMwZGJmODE0ZWE5N2EgPSAkKCc8ZGl2IGlkPSJodG1sXzlmZTYzYWZiNzdlYzRhNGNiNWRjMGRiZjgxNGVhOTdhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNFI8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzVmN2NmYWU5N2MwNzQ5NjZiMjY3YWU1MDc2MTZlMzlkLnNldENvbnRlbnQoaHRtbF85ZmU2M2FmYjc3ZWM0YTRjYjVkYzBkYmY4MTRlYTk3YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84MDU1MmY4MDNiNTY0NmNiYTUzOGMwZjQ5MDQ5ZjYyYy5iaW5kUG9wdXAocG9wdXBfNWY3Y2ZhZTk3YzA3NDk2NmIyNjdhZTUwNzYxNmUzOWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjQ5OTI1MTZjNWQ0NDM1OGE5YmQyNmUxYjYzNTZlMTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My43MDQzMjQ0LC03OS4zODg3OTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzE3NzYyMGZiZjg1OTQxMjQ5NGE1ZmZiYjZhZmRjYjNkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q2OWQ5ODRhZGE3NzQ4YTU4NDZkMDI2MGI5NjJlZWZiID0gJCgnPGRpdiBpZD0iaHRtbF9kNjlkOTg0YWRhNzc0OGE1ODQ2ZDAyNjBiOTYyZWVmYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xNzc2MjBmYmY4NTk0MTI0OTRhNWZmYmI2YWZkY2IzZC5zZXRDb250ZW50KGh0bWxfZDY5ZDk4NGFkYTc3NDhhNTg0NmQwMjYwYjk2MmVlZmIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjQ5OTI1MTZjNWQ0NDM1OGE5YmQyNmUxYjYzNTZlMTkuYmluZFBvcHVwKHBvcHVwXzE3NzYyMGZiZjg1OTQxMjQ5NGE1ZmZiYjZhZmRjYjNkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM2YWVmNDJmMjU1MjQ2ZDI5Zjk3NjVjMjZlMDIwODI1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNjg5NTc0MywtNzkuMzgzMTU5OTAwMDAwMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjNjZDUzODQ3NTljNDM0OGE4YzY0YThlMjEwYWVjMWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjBmNmQ3M2E1ZDdmNDFhMGIzOGQxYjY1ZjhlOThiMzUgPSAkKCc8ZGl2IGlkPSJodG1sX2IwZjZkNzNhNWQ3ZjQxYTBiMzhkMWI2NWY4ZTk4YjM1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2IzY2Q1Mzg0NzU5YzQzNDhhOGM2NGE4ZTIxMGFlYzFkLnNldENvbnRlbnQoaHRtbF9iMGY2ZDczYTVkN2Y0MWEwYjM4ZDFiNjVmOGU5OGIzNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zNmFlZjQyZjI1NTI0NmQyOWY5NzY1YzI2ZTAyMDgyNS5iaW5kUG9wdXAocG9wdXBfYjNjZDUzODQ3NTljNDM0OGE4YzY0YThlMjEwYWVjMWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzNkNjY2YTdlODhiNDgyYjhkOWUzYjMyMGQxNmRkYmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42ODY0MTIyOTk5OTk5OSwtNzkuNDAwMDQ5M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82MGIxYWFhYjkzMGE0YzZjYjU5OGUzMGE0OWQyMGY3YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zZTA0NjQ1MDIxMzI0YTlhOTE3ZmI2ZjAzZGIyZDc0MyA9ICQoJzxkaXYgaWQ9Imh0bWxfM2UwNDY0NTAyMTMyNGE5YTkxN2ZiNmYwM2RiMmQ3NDMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk00VjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjBiMWFhYWI5MzBhNGM2Y2I1OThlMzBhNDlkMjBmN2Iuc2V0Q29udGVudChodG1sXzNlMDQ2NDUwMjEzMjRhOWE5MTdmYjZmMDNkYjJkNzQzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzMzZDY2NmE3ZTg4YjQ4MmI4ZDllM2IzMjBkMTZkZGJjLmJpbmRQb3B1cChwb3B1cF82MGIxYWFhYjkzMGE0YzZjYjU5OGUzMGE0OWQyMGY3Yik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xY2E1N2E4YTdjN2E0MDM0OTRkNjEwOGYwOGVjNTQ1NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjY3OTU2MjYsLTc5LjM3NzUyOTQwMDAwMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y3MWRjZjk0MGM2NTQ0Y2FhNTYzYTM2NmJmZjIxNGU4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzFmZTBjZmI3ZWYxODQwOGNhMmE5ODc1M2JmNGUzNDdkID0gJCgnPGRpdiBpZD0iaHRtbF8xZmUwY2ZiN2VmMTg0MDhjYTJhOTg3NTNiZjRlMzQ3ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTRXPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mNzFkY2Y5NDBjNjU0NGNhYTU2M2EzNjZiZmYyMTRlOC5zZXRDb250ZW50KGh0bWxfMWZlMGNmYjdlZjE4NDA4Y2EyYTk4NzUzYmY0ZTM0N2QpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMWNhNTdhOGE3YzdhNDAzNDk0ZDYxMDhmMDhlYzU0NTYuYmluZFBvcHVwKHBvcHVwX2Y3MWRjZjk0MGM2NTQ0Y2FhNTYzYTM2NmJmZjIxNGU4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM5ZWFhMmIxODdhMjRmZTI4NzA5Nzk5NTdiMDdlMWVjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNjY3OTY3LC03OS4zNjc2NzUzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ZkNjEyYTJkM2IxNjQ2MmQ4YjM2ZWFiZGU3MmMxZmI0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzZiNjgzYWUwZTcxZjQzOTZiYzQ3NDhlMzg4NjM0MWEwID0gJCgnPGRpdiBpZD0iaHRtbF82YjY4M2FlMGU3MWY0Mzk2YmM0NzQ4ZTM4ODYzNDFhMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTRYPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mZDYxMmEyZDNiMTY0NjJkOGIzNmVhYmRlNzJjMWZiNC5zZXRDb250ZW50KGh0bWxfNmI2ODNhZTBlNzFmNDM5NmJjNDc0OGUzODg2MzQxYTApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMzllYWEyYjE4N2EyNGZlMjg3MDk3OTk1N2IwN2UxZWMuYmluZFBvcHVwKHBvcHVwX2ZkNjEyYTJkM2IxNjQ2MmQ4YjM2ZWFiZGU3MmMxZmI0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U3ZTFlMmQxNjgzZDQ5ZTlhYjE4YTIxNmJmNDNmNzI2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNjY1ODU5OSwtNzkuMzgzMTU5OTAwMDAwMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzk1Mjk1OTBkMjkxNGI5YzhjZDQ1OTcxZTBmZGFkMjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDUyOGVjNmI4YjI5NGU5NjlhN2EzNGUyM2NhNjZlYjUgPSAkKCc8ZGl2IGlkPSJodG1sX2Q1MjhlYzZiOGIyOTRlOTY5YTdhMzRlMjNjYTY2ZWI1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNFk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2M5NTI5NTkwZDI5MTRiOWM4Y2Q0NTk3MWUwZmRhZDI3LnNldENvbnRlbnQoaHRtbF9kNTI4ZWM2YjhiMjk0ZTk2OWE3YTM0ZTIzY2E2NmViNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lN2UxZTJkMTY4M2Q0OWU5YWIxOGEyMTZiZjQzZjcyNi5iaW5kUG9wdXAocG9wdXBfYzk1Mjk1OTBkMjkxNGI5YzhjZDQ1OTcxZTBmZGFkMjcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGM1YzlmNWYyODJmNDg5ZDhiMGNkYTEzMjI3YjI0YTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42NTQyNTk5LC03OS4zNjA2MzU5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc5YjgwY2EwMTlhYzQ4MTJhZGFjMDliNzY5MGI2ZmNlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JhOTgxMTljYTEwNTQzMDk5YmQ4YWI4NjE4N2JmZTUyID0gJCgnPGRpdiBpZD0iaHRtbF9iYTk4MTE5Y2ExMDU0MzA5OWJkOGFiODYxODdiZmU1MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTVBPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83OWI4MGNhMDE5YWM0ODEyYWRhYzA5Yjc2OTBiNmZjZS5zZXRDb250ZW50KGh0bWxfYmE5ODExOWNhMTA1NDMwOTliZDhhYjg2MTg3YmZlNTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZGM1YzlmNWYyODJmNDg5ZDhiMGNkYTEzMjI3YjI0YTUuYmluZFBvcHVwKHBvcHVwXzc5YjgwY2EwMTlhYzQ4MTJhZGFjMDliNzY5MGI2ZmNlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IxYzBjNmM5NjJhNzRmYzFiZDY3ZmQ5MzVhNGJkMzI3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNjU3MTYxOCwtNzkuMzc4OTM3MDk5OTk5OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZmFkY2ZjNmI1ZWRhNGUyNWIyY2ZiZjNjNjU0ZGNkNGYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTg0MDNiOTdkMDY1NGEzMmFjOTUzMTYwZGFmZDUzNzQgPSAkKCc8ZGl2IGlkPSJodG1sXzU4NDAzYjk3ZDA2NTRhMzJhYzk1MzE2MGRhZmQ1Mzc0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNUI8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZhZGNmYzZiNWVkYTRlMjViMmNmYmYzYzY1NGRjZDRmLnNldENvbnRlbnQoaHRtbF81ODQwM2I5N2QwNjU0YTMyYWM5NTMxNjBkYWZkNTM3NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iMWMwYzZjOTYyYTc0ZmMxYmQ2N2ZkOTM1YTRiZDMyNy5iaW5kUG9wdXAocG9wdXBfZmFkY2ZjNmI1ZWRhNGUyNWIyY2ZiZjNjNjU0ZGNkNGYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2FlMTA0ODU1MDEwNDBhMWE5OWE2OGU0YmRlNmUzOGIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42NTE0OTM5LC03OS4zNzU0MTc5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc2NThiNjkxYzUzMzRkOGY4ZmEyOWZjNjc4ODYzYzlhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzYwZjBkNjIwZmJkZjRjMWFiMjRiYjhmNjg5NjEwZmFkID0gJCgnPGRpdiBpZD0iaHRtbF82MGYwZDYyMGZiZGY0YzFhYjI0YmI4ZjY4OTYxMGZhZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTVDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83NjU4YjY5MWM1MzM0ZDhmOGZhMjlmYzY3ODg2M2M5YS5zZXRDb250ZW50KGh0bWxfNjBmMGQ2MjBmYmRmNGMxYWIyNGJiOGY2ODk2MTBmYWQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfN2FlMTA0ODU1MDEwNDBhMWE5OWE2OGU0YmRlNmUzOGIuYmluZFBvcHVwKHBvcHVwXzc2NThiNjkxYzUzMzRkOGY4ZmEyOWZjNjc4ODYzYzlhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI0YmMzNTA2ZWQ5MTRjYzQ4OGNjMDdmNGQ3NGQ5ZDgwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNjQ0NzcwNzk5OTk5OTk2LC03OS4zNzMzMDY0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA5MWQ4MWUxZTNhYjRiNTFiYzgyMjNiZDkyMjcxOWM1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhkOGE2NDQ2NDRmMTQ2ZGY5OThiZGJiOTJlMWMyM2FkID0gJCgnPGRpdiBpZD0iaHRtbF84ZDhhNjQ0NjQ0ZjE0NmRmOTk4YmRiYjkyZTFjMjNhZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTVFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wOTFkODFlMWUzYWI0YjUxYmM4MjIzYmQ5MjI3MTljNS5zZXRDb250ZW50KGh0bWxfOGQ4YTY0NDY0NGYxNDZkZjk5OGJkYmI5MmUxYzIzYWQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMjRiYzM1MDZlZDkxNGNjNDg4Y2MwN2Y0ZDc0ZDlkODAuYmluZFBvcHVwKHBvcHVwXzA5MWQ4MWUxZTNhYjRiNTFiYzgyMjNiZDkyMjcxOWM1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RhOTAzZGE4NTRjNzRhNjY5Yjk1OWUzNzdkMzc5NTRhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNjU3OTUyNCwtNzkuMzg3MzgyNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85ZjJkODlmYTE3ZDQ0MGFiODI5NTY1ODhjNGYxMDA2OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NTRiZGY2NjY2NGY0OWE5OTUwYzllYzQ4NzUyY2M0OCA9ICQoJzxkaXYgaWQ9Imh0bWxfOTU0YmRmNjY2NjRmNDlhOTk1MGM5ZWM0ODc1MmNjNDgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk01RzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWYyZDg5ZmExN2Q0NDBhYjgyOTU2NTg4YzRmMTAwNjguc2V0Q29udGVudChodG1sXzk1NGJkZjY2NjY0ZjQ5YTk5NTBjOWVjNDg3NTJjYzQ4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2RhOTAzZGE4NTRjNzRhNjY5Yjk1OWUzNzdkMzc5NTRhLmJpbmRQb3B1cChwb3B1cF85ZjJkODlmYTE3ZDQ0MGFiODI5NTY1ODhjNGYxMDA2OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83YTFmZDZmZDVlZjc0ZWY0YWRjMDY3MTJkNTQzY2I0NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjY1MDU3MTIwMDAwMDAxLC03OS4zODQ1Njc1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzdkODk4YjgxYTdlYzQ0M2ViZDAzZjU5MmUwMmFjYmNlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzRiZWY1Y2U1ODk4NzQ1ODZhMWFlYjYxMDYyYzBmMjE4ID0gJCgnPGRpdiBpZD0iaHRtbF80YmVmNWNlNTg5ODc0NTg2YTFhZWI2MTA2MmMwZjIxOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTVIPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83ZDg5OGI4MWE3ZWM0NDNlYmQwM2Y1OTJlMDJhY2JjZS5zZXRDb250ZW50KGh0bWxfNGJlZjVjZTU4OTg3NDU4NmExYWViNjEwNjJjMGYyMTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfN2ExZmQ2ZmQ1ZWY3NGVmNGFkYzA2NzEyZDU0M2NiNDQuYmluZFBvcHVwKHBvcHVwXzdkODk4YjgxYTdlYzQ0M2ViZDAzZjU5MmUwMmFjYmNlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM4YmUzNzg4MzhlYzQ0ODM5OTk0NGQzMDI3ZDIyYmE4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNjQwODE1NywtNzkuMzgxNzUyMjk5OTk5OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYWVlMjc0YzIxMzZjNDQwYjk0NGI0YmMzOTNlYzk4YjMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTk0ZjdmM2Y0ODhhNGViN2E3NjkyNzEzNmQ2OWQ5MDEgPSAkKCc8ZGl2IGlkPSJodG1sX2U5NGY3ZjNmNDg4YTRlYjdhNzY5MjcxMzZkNjlkOTAxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNUo8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FlZTI3NGMyMTM2YzQ0MGI5NDRiNGJjMzkzZWM5OGIzLnNldENvbnRlbnQoaHRtbF9lOTRmN2YzZjQ4OGE0ZWI3YTc2OTI3MTM2ZDY5ZDkwMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zOGJlMzc4ODM4ZWM0NDgzOTk5NDRkMzAyN2QyMmJhOC5iaW5kUG9wdXAocG9wdXBfYWVlMjc0YzIxMzZjNDQwYjk0NGI0YmMzOTNlYzk4YjMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTNmOWZmNjJiZjlhNDAyMzkxZTdhYTNjZTQ0NGUzOTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42NDcxNzY4LC03OS4zODE1NzY0MDAwMDAwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iZDUyMmYxNTFiMDU0MmQwOWIxMDU4ZjdjZTEzNTY1NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wMTAwZTg2YmQ3Yzk0Yzc1YWY5ZWQwNDk0MmYwODJlYiA9ICQoJzxkaXYgaWQ9Imh0bWxfMDEwMGU4NmJkN2M5NGM3NWFmOWVkMDQ5NDJmMDgyZWIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk01SzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYmQ1MjJmMTUxYjA1NDJkMDliMTA1OGY3Y2UxMzU2NTUuc2V0Q29udGVudChodG1sXzAxMDBlODZiZDdjOTRjNzVhZjllZDA0OTQyZjA4MmViKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzEzZjlmZjYyYmY5YTQwMjM5MWU3YWEzY2U0NDRlMzkwLmJpbmRQb3B1cChwb3B1cF9iZDUyMmYxNTFiMDU0MmQwOWIxMDU4ZjdjZTEzNTY1NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80NzFjY2RhOGY4ZDI0MTRkOTQ2YWNjMGExZGE1NGFkZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjY0ODE5ODUsLTc5LjM3OTgxNjkwMDAwMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2I3YmYxNTJlZTIzODQ1N2ZiNTkxMzQ3NmEyMWZlYmQ2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I4ZTRlNDUxZmEzNjQ3OTBhZTc1NDZhMTgzZGY4YjM2ID0gJCgnPGRpdiBpZD0iaHRtbF9iOGU0ZTQ1MWZhMzY0NzkwYWU3NTQ2YTE4M2RmOGIzNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTVMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iN2JmMTUyZWUyMzg0NTdmYjU5MTM0NzZhMjFmZWJkNi5zZXRDb250ZW50KGh0bWxfYjhlNGU0NTFmYTM2NDc5MGFlNzU0NmExODNkZjhiMzYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNDcxY2NkYThmOGQyNDE0ZDk0NmFjYzBhMWRhNTRhZGQuYmluZFBvcHVwKHBvcHVwX2I3YmYxNTJlZTIzODQ1N2ZiNTkxMzQ3NmEyMWZlYmQ2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNjMmZmMTBkYzhiMjRhYjU5MmU4NWEzMmVlMmZhYmQ5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNzMzMjgyNSwtNzkuNDE5NzQ5N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83MWQ3NWNhNzI0ZTI0Zjg5OGQzYmMxMzI1M2FjYWY2OSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83ZTBlYjNmNTM3ODk0ZWViOWZjYWYxMWU0ZTAwNzI3ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfN2UwZWIzZjUzNzg5NGVlYjlmY2FmMTFlNGUwMDcyN2QiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk01TTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzFkNzVjYTcyNGUyNGY4OThkM2JjMTMyNTNhY2FmNjkuc2V0Q29udGVudChodG1sXzdlMGViM2Y1Mzc4OTRlZWI5ZmNhZjExZTRlMDA3MjdkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzNjMmZmMTBkYzhiMjRhYjU5MmU4NWEzMmVlMmZhYmQ5LmJpbmRQb3B1cChwb3B1cF83MWQ3NWNhNzI0ZTI0Zjg5OGQzYmMxMzI1M2FjYWY2OSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lZTRhNWRlYWRiNzM0MjA5YWJiYWEwZWM1Zjk1M2E3NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjcxMTY5NDgsLTc5LjQxNjkzNTU5OTk5OTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU3OGIxZWJjM2Q5YjQzYzNhMzFkYzgxNmFmNWI3ZDFmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzUyZDdmNTQ3NmRkNDQ2ZWJhMWYxZDUzZmY4ZTU1ZTNjID0gJCgnPGRpdiBpZD0iaHRtbF81MmQ3ZjU0NzZkZDQ0NmViYTFmMWQ1M2ZmOGU1NWUzYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTVOPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NzhiMWViYzNkOWI0M2MzYTMxZGM4MTZhZjViN2QxZi5zZXRDb250ZW50KGh0bWxfNTJkN2Y1NDc2ZGQ0NDZlYmExZjFkNTNmZjhlNTVlM2MpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZWU0YTVkZWFkYjczNDIwOWFiYmFhMGVjNWY5NTNhNzUuYmluZFBvcHVwKHBvcHVwXzU3OGIxZWJjM2Q5YjQzYzNhMzFkYzgxNmFmNWI3ZDFmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M2YjFiYjNhMzNiZjQwMWM4MTNkYzU4N2QxNjBjNGRkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNjk2OTQ3NiwtNzkuNDExMzA3MjAwMDAwMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOGQ4MjcxZDgxN2RmNDBkNDg3OWJjNDk5YmM3YmZjNjIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzc3NzhlNjRiNzdjNDI3Y2IwOWIxMmYyNGIyYWUxMGMgPSAkKCc8ZGl2IGlkPSJodG1sX2M3Nzc4ZTY0Yjc3YzQyN2NiMDliMTJmMjRiMmFlMTBjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNVA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzhkODI3MWQ4MTdkZjQwZDQ4NzliYzQ5OWJjN2JmYzYyLnNldENvbnRlbnQoaHRtbF9jNzc3OGU2NGI3N2M0MjdjYjA5YjEyZjI0YjJhZTEwYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jNmIxYmIzYTMzYmY0MDFjODEzZGM1ODdkMTYwYzRkZC5iaW5kUG9wdXAocG9wdXBfOGQ4MjcxZDgxN2RmNDBkNDg3OWJjNDk5YmM3YmZjNjIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDNmNzAxN2M4YTUxNDQ5MTgzZGM0MGY3YTI2MDJmZDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42NzI3MDk3LC03OS40MDU2Nzg0MDAwMDAwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wNDczZGY5NjI0ZjE0NmIxOTBhOTdlYjYwMjVmOGNhNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82Njg0OTExMTFkMGU0ZGQ5OTNmODRkYWJmNGFkNDY1ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfNjY4NDkxMTExZDBlNGRkOTkzZjg0ZGFiZjRhZDQ2NWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk01UjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDQ3M2RmOTYyNGYxNDZiMTkwYTk3ZWI2MDI1ZjhjYTUuc2V0Q29udGVudChodG1sXzY2ODQ5MTExMWQwZTRkZDk5M2Y4NGRhYmY0YWQ0NjVmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2QzZjcwMTdjOGE1MTQ0OTE4M2RjNDBmN2EyNjAyZmQ0LmJpbmRQb3B1cChwb3B1cF8wNDczZGY5NjI0ZjE0NmIxOTBhOTdlYjYwMjVmOGNhNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lN2MwMThhZGMyOGE0NzYzYWVhMTM0ZGNiODBhNzllNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjY2MjY5NTYsLTc5LjQwMDA0OTNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjIwYWNjYWFlMmU3NDk1MTlkMGI0NGZiZGE2MWUwYzAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDNiMjhmYjNjMjNiNDcxNmJlMTk0NDQwMGZiYjk2YTUgPSAkKCc8ZGl2IGlkPSJodG1sXzQzYjI4ZmIzYzIzYjQ3MTZiZTE5NDQ0MDBmYmI5NmE1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzIyMGFjY2FhZTJlNzQ5NTE5ZDBiNDRmYmRhNjFlMGMwLnNldENvbnRlbnQoaHRtbF80M2IyOGZiM2MyM2I0NzE2YmUxOTQ0NDAwZmJiOTZhNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lN2MwMThhZGMyOGE0NzYzYWVhMTM0ZGNiODBhNzllNS5iaW5kUG9wdXAocG9wdXBfMjIwYWNjYWFlMmU3NDk1MTlkMGI0NGZiZGE2MWUwYzApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjQ0N2Y4YTgyZjYxNGU2NDg0ZDFhZDMwYTAwZjBhYjQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42NTMyMDU3LC03OS40MDAwNDkzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NlMTQwZDY5ZDNiNDQ3NDBhYTFkMmJjYzFmZWRkODZlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2EyZjk5NWI5OGE4MzQyY2NhYTE0ODA0YTRkMjlkMGQwID0gJCgnPGRpdiBpZD0iaHRtbF9hMmY5OTViOThhODM0MmNjYWExNDgwNGE0ZDI5ZDBkMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTVUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jZTE0MGQ2OWQzYjQ0NzQwYWExZDJiY2MxZmVkZDg2ZS5zZXRDb250ZW50KGh0bWxfYTJmOTk1Yjk4YTgzNDJjY2FhMTQ4MDRhNGQyOWQwZDApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjQ0N2Y4YTgyZjYxNGU2NDg0ZDFhZDMwYTAwZjBhYjQuYmluZFBvcHVwKHBvcHVwX2NlMTQwZDY5ZDNiNDQ3NDBhYTFkMmJjYzFmZWRkODZlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVjNjc5M2YzNWFmNzRiYzE5ZjJiZDE4NGY2ZDUxNDA4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNjI4OTQ2NywtNzkuMzk0NDE5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85ZTFkYWI3N2UzZDY0YzliYWE1ZDQ3N2Q0NTVlMjNkNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mMjZhNzYxYzY3NTA0NzdmOWZkNDMxNzI5Y2I0Y2UxMyA9ICQoJzxkaXYgaWQ9Imh0bWxfZjI2YTc2MWM2NzUwNDc3ZjlmZDQzMTcyOWNiNGNlMTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk01VjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWUxZGFiNzdlM2Q2NGM5YmFhNWQ0NzdkNDU1ZTIzZDYuc2V0Q29udGVudChodG1sX2YyNmE3NjFjNjc1MDQ3N2Y5ZmQ0MzE3MjljYjRjZTEzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzVjNjc5M2YzNWFmNzRiYzE5ZjJiZDE4NGY2ZDUxNDA4LmJpbmRQb3B1cChwb3B1cF85ZTFkYWI3N2UzZDY0YzliYWE1ZDQ3N2Q0NTVlMjNkNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83NWVmY2U3MTE1ZTM0NmZhODllMTMzM2NmN2Y1MWMwNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjY0NjQzNTIsLTc5LjM3NDg0NTk5OTk5OTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQ3MTMxYzU3ZDU5OTQyMjM5Mjg1YThhMTRlYWI3MTExID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzZlOGFlY2MyYzJiNzQ5YjA5ODBmNDI3YTY5ZWQ3ZjU0ID0gJCgnPGRpdiBpZD0iaHRtbF82ZThhZWNjMmMyYjc0OWIwOTgwZjQyN2E2OWVkN2Y1NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTVXPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80NzEzMWM1N2Q1OTk0MjIzOTI4NWE4YTE0ZWFiNzExMS5zZXRDb250ZW50KGh0bWxfNmU4YWVjYzJjMmI3NDliMDk4MGY0MjdhNjllZDdmNTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNzVlZmNlNzExNWUzNDZmYTg5ZTEzMzNjZjdmNTFjMDUuYmluZFBvcHVwKHBvcHVwXzQ3MTMxYzU3ZDU5OTQyMjM5Mjg1YThhMTRlYWI3MTExKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJkMjQwYmZmNGU1YjRlZGQ4ZDkwNGY3NmFjNzQ3ZjBiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNjQ4NDI5MiwtNzkuMzgyMjgwMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81YjkzMGRjYzk1YjU0MTAwOTQ5YTdjNTY0OGQzMDM2NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jNzhiNmFiZjUwYTc0MmFmYTdjNDIxNjU2MzhmYjNmYyA9ICQoJzxkaXYgaWQ9Imh0bWxfYzc4YjZhYmY1MGE3NDJhZmE3YzQyMTY1NjM4ZmIzZmMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk01WDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNWI5MzBkY2M5NWI1NDEwMDk0OWE3YzU2NDhkMzAzNjUuc2V0Q29udGVudChodG1sX2M3OGI2YWJmNTBhNzQyYWZhN2M0MjE2NTYzOGZiM2ZjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzJkMjQwYmZmNGU1YjRlZGQ4ZDkwNGY3NmFjNzQ3ZjBiLmJpbmRQb3B1cChwb3B1cF81YjkzMGRjYzk1YjU0MTAwOTQ5YTdjNTY0OGQzMDM2NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMDBjNzRlNWM2MTk0NTk2YmZkNDYwMTc5NTk4M2FkNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjcxODUxNzk5OTk5OTk5NiwtNzkuNDY0NzYzMjk5OTk5OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZmU5MDE0NGU5ZjUxNGZhOTkwMzUzN2YwZDViNjQ4ODIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGY5OGVjYjNjM2QwNDlhOGFhMTBhYTdkMTMyMzdhNDggPSAkKCc8ZGl2IGlkPSJodG1sXzhmOThlY2IzYzNkMDQ5YThhYTEwYWE3ZDEzMjM3YTQ4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNkE8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZlOTAxNDRlOWY1MTRmYTk5MDM1MzdmMGQ1YjY0ODgyLnNldENvbnRlbnQoaHRtbF84Zjk4ZWNiM2MzZDA0OWE4YWExMGFhN2QxMzIzN2E0OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jMDBjNzRlNWM2MTk0NTk2YmZkNDYwMTc5NTk4M2FkNS5iaW5kUG9wdXAocG9wdXBfZmU5MDE0NGU5ZjUxNGZhOTkwMzUzN2YwZDViNjQ4ODIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTVjOTFkMmVlYmE3NDAwZjkzMDU2MGMyOGUwNmQ3NDEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My43MDk1NzcsLTc5LjQ0NTA3MjU5OTk5OTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NkN2RiZDk2ODk0MzQ5OTFhNjhjZDFiNDZkODJlZDUyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2QzZWQ2ZTI3YTJiYzQ2NDRhMjgxNTgwMTAyMGNhMzdiID0gJCgnPGRpdiBpZD0iaHRtbF9kM2VkNmUyN2EyYmM0NjQ0YTI4MTU4MDEwMjBjYTM3YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTZCPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jZDdkYmQ5Njg5NDM0OTkxYTY4Y2QxYjQ2ZDgyZWQ1Mi5zZXRDb250ZW50KGh0bWxfZDNlZDZlMjdhMmJjNDY0NGEyODE1ODAxMDIwY2EzN2IpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNTVjOTFkMmVlYmE3NDAwZjkzMDU2MGMyOGUwNmQ3NDEuYmluZFBvcHVwKHBvcHVwX2NkN2RiZDk2ODk0MzQ5OTFhNjhjZDFiNDZkODJlZDUyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYwMzMyMjE5MmI4YzQ5MzU5MTA4NGM4MTYwODBiNTA5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNjkzNzgxMywtNzkuNDI4MTkxNDAwMDAwMDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmJhZGVhM2E3MWEwNDg5YTkyZGViMGJlYzZhZGM4M2EgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNmRiNWRiNjg0ZDM0NGFlNWE4MjJlMzc2NWVlODI2MTQgPSAkKCc8ZGl2IGlkPSJodG1sXzZkYjVkYjY4NGQzNDRhZTVhODIyZTM3NjVlZTgyNjE0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNkM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZiYWRlYTNhNzFhMDQ4OWE5MmRlYjBiZWM2YWRjODNhLnNldENvbnRlbnQoaHRtbF82ZGI1ZGI2ODRkMzQ0YWU1YTgyMmUzNzY1ZWU4MjYxNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82MDMzMjIxOTJiOGM0OTM1OTEwODRjODE2MDgwYjUwOS5iaW5kUG9wdXAocG9wdXBfNmJhZGVhM2E3MWEwNDg5YTkyZGViMGJlYzZhZGM4M2EpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjA3NjExYWI0MjM4NDc1YTk4ZGQ5MzE0ZGJmODJjMzUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42ODkwMjU2LC03OS40NTM1MTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDhmOGQzMTdjMDlhNGQ3ZDkxZGU2NTA2ZWUzY2I2NTAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGY3YWQ4Y2NhMjQyNDAxMGJkMzczYmNkNWFkMmNlZmQgPSAkKCc8ZGl2IGlkPSJodG1sXzhmN2FkOGNjYTI0MjQwMTBiZDM3M2JjZDVhZDJjZWZkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNkU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q4ZjhkMzE3YzA5YTRkN2Q5MWRlNjUwNmVlM2NiNjUwLnNldENvbnRlbnQoaHRtbF84ZjdhZDhjY2EyNDI0MDEwYmQzNzNiY2Q1YWQyY2VmZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iMDc2MTFhYjQyMzg0NzVhOThkZDkzMTRkYmY4MmMzNS5iaW5kUG9wdXAocG9wdXBfZDhmOGQzMTdjMDlhNGQ3ZDkxZGU2NTA2ZWUzY2I2NTApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmY4MzUwZDZmMjA3NDYzM2FiNzkwNTNkOGMzMmVkY2QgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42Njk1NDIsLTc5LjQyMjU2MzddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTE0OGU3NjVlMDE3NDdiM2IyMjJiNWMzYmMyZjUzYjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzc1ZGExM2ZmOGUyNGRlOWE2ZTBjYmQ0M2I5ZWJkZWMgPSAkKCc8ZGl2IGlkPSJodG1sXzM3NWRhMTNmZjhlMjRkZTlhNmUwY2JkNDNiOWViZGVjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNkc8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzExNDhlNzY1ZTAxNzQ3YjNiMjIyYjVjM2JjMmY1M2I3LnNldENvbnRlbnQoaHRtbF8zNzVkYTEzZmY4ZTI0ZGU5YTZlMGNiZDQzYjllYmRlYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iZjgzNTBkNmYyMDc0NjMzYWI3OTA1M2Q4YzMyZWRjZC5iaW5kUG9wdXAocG9wdXBfMTE0OGU3NjVlMDE3NDdiM2IyMjJiNWMzYmMyZjUzYjcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWVhNWU0ZWNiNjFiNDY3NmI4NzcwYjA1OWI5ZWMyYzIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42NjkwMDUxMDAwMDAwMSwtNzkuNDQyMjU5M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMzAxMjYxMmNjN2Y0ODA5YjRmOTk3ZjllNzljMzgzOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yNGIyNTdlY2Y2MzE0Y2ViOTk1MzY3NjliZTQwM2NhMCA9ICQoJzxkaXYgaWQ9Imh0bWxfMjRiMjU3ZWNmNjMxNGNlYjk5NTM2NzY5YmU0MDNjYTAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk02SDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzMwMTI2MTJjYzdmNDgwOWI0Zjk5N2Y5ZTc5YzM4Mzguc2V0Q29udGVudChodG1sXzI0YjI1N2VjZjYzMTRjZWI5OTUzNjc2OWJlNDAzY2EwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzFlYTVlNGVjYjYxYjQ2NzZiODc3MGIwNTliOWVjMmMyLmJpbmRQb3B1cChwb3B1cF8zMzAxMjYxMmNjN2Y0ODA5YjRmOTk3ZjllNzljMzgzOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNmY3ZWEyMjgzNWM0ZDYzYWY0NjY5MmU4OWU0NGUwNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjY0NzkyNjcwMDAwMDAwNiwtNzkuNDE5NzQ5N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wMDI4YmYxZjZhODM0MTNkYmJlOTA2ZmE0MThmNDM0YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jZGIyOTU1OTZhNTk0MmUxOWU3MmIyYzdhMzI2ZWVlNCA9ICQoJzxkaXYgaWQ9Imh0bWxfY2RiMjk1NTk2YTU5NDJlMTllNzJiMmM3YTMyNmVlZTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk02SjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDAyOGJmMWY2YTgzNDEzZGJiZTkwNmZhNDE4ZjQzNGIuc2V0Q29udGVudChodG1sX2NkYjI5NTU5NmE1OTQyZTE5ZTcyYjJjN2EzMjZlZWU0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2I2ZjdlYTIyODM1YzRkNjNhZjQ2NjkyZTg5ZTQ0ZTA0LmJpbmRQb3B1cChwb3B1cF8wMDI4YmYxZjZhODM0MTNkYmJlOTA2ZmE0MThmNDM0Yik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMzg5YzVkZjA1YzQ0ODkxYTg2NzdmZGQ3NGZhNmVhYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjYzNjg0NzIsLTc5LjQyODE5MTQwMDAwMDAyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkzYTk2MTQyNDE3MjQ0MjJhZWYwOWY1NjdiNTE0YWMzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JjYTkyZDA0NzVhNDQ2ZjA5ZjdlZDEyYTZjMWQ2ZjMyID0gJCgnPGRpdiBpZD0iaHRtbF9iY2E5MmQwNDc1YTQ0NmYwOWY3ZWQxMmE2YzFkNmYzMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTZLPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85M2E5NjE0MjQxNzI0NDIyYWVmMDlmNTY3YjUxNGFjMy5zZXRDb250ZW50KGh0bWxfYmNhOTJkMDQ3NWE0NDZmMDlmN2VkMTJhNmMxZDZmMzIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDM4OWM1ZGYwNWM0NDg5MWE4Njc3ZmRkNzRmYTZlYWEuYmluZFBvcHVwKHBvcHVwXzkzYTk2MTQyNDE3MjQ0MjJhZWYwOWY1NjdiNTE0YWMzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZmY2I1M2NlM2U2YjQ0YjY4MmNkYjFlN2ViYTY2ZWQ3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNzEzNzU2MjAwMDAwMDA2LC03OS40OTAwNzM4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFjMDU5OTI5ZWY1MDRjOTliMTExZDk0NjU4NjQ5OWZkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhjNWVkYTc3NjA3NzQ5NTdhZjI0NWI1MmJmZWFhY2JlID0gJCgnPGRpdiBpZD0iaHRtbF84YzVlZGE3NzYwNzc0OTU3YWYyNDViNTJiZmVhYWNiZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTZMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xYzA1OTkyOWVmNTA0Yzk5YjExMWQ5NDY1ODY0OTlmZC5zZXRDb250ZW50KGh0bWxfOGM1ZWRhNzc2MDc3NDk1N2FmMjQ1YjUyYmZlYWFjYmUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZmZjYjUzY2UzZTZiNDRiNjgyY2RiMWU3ZWJhNjZlZDcuYmluZFBvcHVwKHBvcHVwXzFjMDU5OTI5ZWY1MDRjOTliMTExZDk0NjU4NjQ5OWZkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2YyMTQ2ODUwNjc0YjRlMWI4ZmQ2MjkzZDU4ODA0ZDY3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNjkxMTE1OCwtNzkuNDc2MDEzMjk5OTk5OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjA4N2E3ODY5ZDFiNDg4ODgwNTA3YzBlNWZjNGZiOTYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzA5MTBmYWNkMzJjNDlmNWFmMTEwMGUwMDllMzMyZjQgPSAkKCc8ZGl2IGlkPSJodG1sX2MwOTEwZmFjZDMyYzQ5ZjVhZjExMDBlMDA5ZTMzMmY0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNk08L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2YwODdhNzg2OWQxYjQ4ODg4MDUwN2MwZTVmYzRmYjk2LnNldENvbnRlbnQoaHRtbF9jMDkxMGZhY2QzMmM0OWY1YWYxMTAwZTAwOWUzMzJmNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mMjE0Njg1MDY3NGI0ZTFiOGZkNjI5M2Q1ODgwNGQ2Ny5iaW5kUG9wdXAocG9wdXBfZjA4N2E3ODY5ZDFiNDg4ODgwNTA3YzBlNWZjNGZiOTYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjBhZTZmMTE1NDUxNDI1NWJjYmI2OTU2MTYwOTYzYzUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42NzMxODUyOTk5OTk5OSwtNzkuNDg3MjYxOTAwMDAwMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYWIwNGZiYzQzMGQxNGFjNThlYWY2NWRkZjAxZDBjNjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOWFjOTQzZDhmYTdkNGFiZTlmZDkxN2Q5ZDIwMzcwZDcgPSAkKCc8ZGl2IGlkPSJodG1sXzlhYzk0M2Q4ZmE3ZDRhYmU5ZmQ5MTdkOWQyMDM3MGQ3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNk48L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FiMDRmYmM0MzBkMTRhYzU4ZWFmNjVkZGYwMWQwYzY3LnNldENvbnRlbnQoaHRtbF85YWM5NDNkOGZhN2Q0YWJlOWZkOTE3ZDlkMjAzNzBkNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mMGFlNmYxMTU0NTE0MjU1YmNiYjY5NTYxNjA5NjNjNS5iaW5kUG9wdXAocG9wdXBfYWIwNGZiYzQzMGQxNGFjNThlYWY2NWRkZjAxZDBjNjcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTExY2RiNzM5NTg5NGVhYmFjYzJjY2M1M2Y5MmEwYmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42NjE2MDgzLC03OS40NjQ3NjMyOTk5OTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wZWM1NjIyNTI0ZDM0YzgyYTFkYTE5ZTE3MmEyYzQ1NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zY2E0NTNjNDEyMTk0Mjk5OWQwYThiZGUwMDI4MjU2YSA9ICQoJzxkaXYgaWQ9Imh0bWxfM2NhNDUzYzQxMjE5NDI5OTlkMGE4YmRlMDAyODI1NmEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk02UDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGVjNTYyMjUyNGQzNGM4MmExZGExOWUxNzJhMmM0NTcuc2V0Q29udGVudChodG1sXzNjYTQ1M2M0MTIxOTQyOTk5ZDBhOGJkZTAwMjgyNTZhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzExMWNkYjczOTU4OTRlYWJhY2MyY2NjNTNmOTJhMGJhLmJpbmRQb3B1cChwb3B1cF8wZWM1NjIyNTI0ZDM0YzgyYTFkYTE5ZTE3MmEyYzQ1Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jY2U0OGZiNWMxMTk0Y2QwOTJkZGQ4YTA2ZWM1YWRhMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjY0ODk1OTcsLTc5LjQ1NjMyNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jMmJmZDMxM2Y1MWU0MzJlYjliNWMwNDA1NjNlODBlZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MmFjMDIxMGM5YzQ0NjQwOWZjN2E1Mzk1MzU1ZmQ1MiA9ICQoJzxkaXYgaWQ9Imh0bWxfNjJhYzAyMTBjOWM0NDY0MDlmYzdhNTM5NTM1NWZkNTIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk02UjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzJiZmQzMTNmNTFlNDMyZWI5YjVjMDQwNTYzZTgwZWQuc2V0Q29udGVudChodG1sXzYyYWMwMjEwYzljNDQ2NDA5ZmM3YTUzOTUzNTVmZDUyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2NjZTQ4ZmI1YzExOTRjZDA5MmRkZDhhMDZlYzVhZGEwLmJpbmRQb3B1cChwb3B1cF9jMmJmZDMxM2Y1MWU0MzJlYjliNWMwNDA1NjNlODBlZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hNzBjNzg3ZjI1OTA0OWU2ODdhZWE3NjI3OTQ4ODcyMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjY1MTU3MDYsLTc5LjQ4NDQ0OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZmJkMWM3ZTg3YzAyNGEwOGI1ZTYyYjQxNmQxY2YxZmQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2U3NTYwMmYwZGYzNDlkZDkxYzlmOWEzNjgzNDhhNWEgPSAkKCc8ZGl2IGlkPSJodG1sXzNlNzU2MDJmMGRmMzQ5ZGQ5MWM5ZjlhMzY4MzQ4YTVhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NNlM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZiZDFjN2U4N2MwMjRhMDhiNWU2MmI0MTZkMWNmMWZkLnNldENvbnRlbnQoaHRtbF8zZTc1NjAyZjBkZjM0OWRkOTFjOWY5YTM2ODM0OGE1YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hNzBjNzg3ZjI1OTA0OWU2ODdhZWE3NjI3OTQ4ODcyMi5iaW5kUG9wdXAocG9wdXBfZmJkMWM3ZTg3YzAyNGEwOGI1ZTYyYjQxNmQxY2YxZmQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjE2ODU3OTUyMmI3NGQ5NmFmMTE4MjZkNTA1NzgyNzIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42NjIzMDE1LC03OS4zODk0OTM4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM0OGFiMDNlMTk2MDQ5Y2I4NTI4MmFhMzJlNDRlN2Q2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzBiNGE0ZDNiMDY0YzRjMzI4ODY5MTgwOGQzNjZmNzg4ID0gJCgnPGRpdiBpZD0iaHRtbF8wYjRhNGQzYjA2NGM0YzMyODg2OTE4MDhkMzY2Zjc4OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTdBPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zNDhhYjAzZTE5NjA0OWNiODUyODJhYTMyZTQ0ZTdkNi5zZXRDb250ZW50KGh0bWxfMGI0YTRkM2IwNjRjNGMzMjg4NjkxODA4ZDM2NmY3ODgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZjE2ODU3OTUyMmI3NGQ5NmFmMTE4MjZkNTA1NzgyNzIuYmluZFBvcHVwKHBvcHVwXzM0OGFiMDNlMTk2MDQ5Y2I4NTI4MmFhMzJlNDRlN2Q2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzczNWI0NDcyZWI4ZDQ4MWY5MWM4OTAyM2NhNTc5ZTcxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNjM2OTY1NiwtNzkuNjE1ODE4OTk5OTk5OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjRiZTk5MzE3MzU2NDkyMGE0NjgzOGVkODE3YTQ3NjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODZkMmJmMDhkNzIxNDY5YWI3OTE4NDM2NDRjY2U2NmMgPSAkKCc8ZGl2IGlkPSJodG1sXzg2ZDJiZjA4ZDcyMTQ2OWFiNzkxODQzNjQ0Y2NlNjZjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NN1I8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY0YmU5OTMxNzM1NjQ5MjBhNDY4MzhlZDgxN2E0NzY3LnNldENvbnRlbnQoaHRtbF84NmQyYmYwOGQ3MjE0NjlhYjc5MTg0MzY0NGNjZTY2Yyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83MzViNDQ3MmViOGQ0ODFmOTFjODkwMjNjYTU3OWU3MS5iaW5kUG9wdXAocG9wdXBfNjRiZTk5MzE3MzU2NDkyMGE0NjgzOGVkODE3YTQ3NjcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjM4MGU5MThhYzYxNGVkY2I2NzM4ZWNiZjhkM2ZmYTMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42NjI3NDM5LC03OS4zMjE1NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2I2Y2JlZTE1NzNiNDk1ZjgyOTM3ZjcxNWRiNGM0N2UgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzkxZGI0OGU5MzNmNGRhZjljNjc3ZmJjYTgzMzRiMmIgPSAkKCc8ZGl2IGlkPSJodG1sXzc5MWRiNDhlOTMzZjRkYWY5YzY3N2ZiY2E4MzM0YjJiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NN1k8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NiNmNiZWUxNTczYjQ5NWY4MjkzN2Y3MTVkYjRjNDdlLnNldENvbnRlbnQoaHRtbF83OTFkYjQ4ZTkzM2Y0ZGFmOWM2NzdmYmNhODMzNGIyYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mMzgwZTkxOGFjNjE0ZWRjYjY3MzhlY2JmOGQzZmZhMy5iaW5kUG9wdXAocG9wdXBfY2I2Y2JlZTE1NzNiNDk1ZjgyOTM3ZjcxNWRiNGM0N2UpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2ZjZGI2NmFmY2QxNDFhOWJjYTEyMTM1MWZiZWQ2YzMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42MDU2NDY2LC03OS41MDEzMjA3MDAwMDAwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wMTU5MjU3M2FkODc0ZGFjODMxMWQzODk3ZmRhYWU3MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yZDE5MmRhZmIyZjY0MzBiOTY1NjcyZGQ2ZjcwMzViMyA9ICQoJzxkaXYgaWQ9Imh0bWxfMmQxOTJkYWZiMmY2NDMwYjk2NTY3MmRkNmY3MDM1YjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk04VjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDE1OTI1NzNhZDg3NGRhYzgzMTFkMzg5N2ZkYWFlNzEuc2V0Q29udGVudChodG1sXzJkMTkyZGFmYjJmNjQzMGI5NjU2NzJkZDZmNzAzNWIzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2NmY2RiNjZhZmNkMTQxYTliY2ExMjEzNTFmYmVkNmMzLmJpbmRQb3B1cChwb3B1cF8wMTU5MjU3M2FkODc0ZGFjODMxMWQzODk3ZmRhYWU3MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xZWFhYjU4ZmYxMGQ0MjI1OTQ0OTdhZDk3MzYwOThlZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjYwMjQxMzcwMDAwMDAxLC03OS41NDM0ODQwOTk5OTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hMmY0MTY4MGEyNzE0NzAzOWRmODgxZWQyNGM0ODY0OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MjExZjEwYzRiYjc0YzhmYTZhN2Y0YWQ1MjQ3NDBkZCA9ICQoJzxkaXYgaWQ9Imh0bWxfNjIxMWYxMGM0YmI3NGM4ZmE2YTdmNGFkNTI0NzQwZGQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk04VzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTJmNDE2ODBhMjcxNDcwMzlkZjg4MWVkMjRjNDg2NDguc2V0Q29udGVudChodG1sXzYyMTFmMTBjNGJiNzRjOGZhNmE3ZjRhZDUyNDc0MGRkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzFlYWFiNThmZjEwZDQyMjU5NDQ5N2FkOTczNjA5OGVmLmJpbmRQb3B1cChwb3B1cF9hMmY0MTY4MGEyNzE0NzAzOWRmODgxZWQyNGM0ODY0OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMGQ5OGM5ZTYzZjE0ZjlhYjhjMzgzYTZjZjExYjVjNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjY1MzY1MzYwMDAwMDAwNSwtNzkuNTA2OTQzNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85N2M4OGUyMjUwYjE0MjI1OGQ0YTI3ZjgzNjFhOTY4NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wODMwNjI1MTBiNjE0NWUwYjVlOTA1MjFhYzhlODcyNSA9ICQoJzxkaXYgaWQ9Imh0bWxfMDgzMDYyNTEwYjYxNDVlMGI1ZTkwNTIxYWM4ZTg3MjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk04WDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTdjODhlMjI1MGIxNDIyNThkNGEyN2Y4MzYxYTk2ODUuc2V0Q29udGVudChodG1sXzA4MzA2MjUxMGI2MTQ1ZTBiNWU5MDUyMWFjOGU4NzI1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzAwZDk4YzllNjNmMTRmOWFiOGMzODNhNmNmMTFiNWM3LmJpbmRQb3B1cChwb3B1cF85N2M4OGUyMjUwYjE0MjI1OGQ0YTI3ZjgzNjFhOTY4NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wYmYzZjY4NWYyZTM0ZGQ0YTY2NmE2MGM5MDJhOGRjMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjYzNjI1NzksLTc5LjQ5ODUwOTA5OTk5OTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM1NzFiMTkxYWIyZTRkZDRiODI5YWU3MmRiNWJhNDQxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2IyMDBmYjM4OTI2NzQ4MDQ5Zjc3ZTc4OWE0MGE3OWIwID0gJCgnPGRpdiBpZD0iaHRtbF9iMjAwZmIzODkyNjc0ODA0OWY3N2U3ODlhNDBhNzliMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TThZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zNTcxYjE5MWFiMmU0ZGQ0YjgyOWFlNzJkYjViYTQ0MS5zZXRDb250ZW50KGh0bWxfYjIwMGZiMzg5MjY3NDgwNDlmNzdlNzg5YTQwYTc5YjApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMGJmM2Y2ODVmMmUzNGRkNGE2NjZhNjBjOTAyYThkYzIuYmluZFBvcHVwKHBvcHVwXzM1NzFiMTkxYWIyZTRkZDRiODI5YWU3MmRiNWJhNDQxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU5MTc3ODNmZDBjZTRlNzBhNzdmMDVkMjczMTQ3NmJiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNjI4ODQwOCwtNzkuNTIwOTk5NDAwMDAwMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmQxM2M3Y2NjNDAwNGIzZjk1MTk4NGQ0MDY2N2ZkYjYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGM1NjgxYzRkMDQxNDE5YmJiYmUzMzg4NzY4NDRhODMgPSAkKCc8ZGl2IGlkPSJodG1sX2RjNTY4MWM0ZDA0MTQxOWJiYmJlMzM4ODc2ODQ0YTgzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NOFo8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZkMTNjN2NjYzQwMDRiM2Y5NTE5ODRkNDA2NjdmZGI2LnNldENvbnRlbnQoaHRtbF9kYzU2ODFjNGQwNDE0MTliYmJiZTMzODg3Njg0NGE4Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81OTE3NzgzZmQwY2U0ZTcwYTc3ZjA1ZDI3MzE0NzZiYi5iaW5kUG9wdXAocG9wdXBfNmQxM2M3Y2NjNDAwNGIzZjk1MTk4NGQ0MDY2N2ZkYjYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODU5ODVkZjQ1NGQwNGUwMjhmOTcyMzEwYzVkMzdmOWEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42Njc4NTU2LC03OS41MzIyNDI0MDAwMDAwMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mZjZlN2VmMTM1ZGM0YmU2YWZhNjIwODQxMzg0ZTZkNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84MDJkMmExYWFiZmE0ZjE2OTVlMTZlOTU4MTllMWU1ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfODAyZDJhMWFhYmZhNGYxNjk1ZTE2ZTk1ODE5ZTFlNWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk05QTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZmY2ZTdlZjEzNWRjNGJlNmFmYTYyMDg0MTM4NGU2ZDUuc2V0Q29udGVudChodG1sXzgwMmQyYTFhYWJmYTRmMTY5NWUxNmU5NTgxOWUxZTVkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzg1OTg1ZGY0NTRkMDRlMDI4Zjk3MjMxMGM1ZDM3ZjlhLmJpbmRQb3B1cChwb3B1cF9mZjZlN2VmMTM1ZGM0YmU2YWZhNjIwODQxMzg0ZTZkNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lNmVkZWVmN2ZhNWU0Yzg4YTJkZTczZjJkNTE5NDQxNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjY1MDk0MzIsLTc5LjU1NDcyNDQwMDAwMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzczM2E1NzNjYjE4ZDRjYzc5MjhhNDYwNmYwYmRlMmQyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzBkZTkwNmI0NjNiMzQ4MWU5MzM4NzViNDlmMzZjNDcxID0gJCgnPGRpdiBpZD0iaHRtbF8wZGU5MDZiNDYzYjM0ODFlOTMzODc1YjQ5ZjM2YzQ3MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTlCPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83MzNhNTczY2IxOGQ0Y2M3OTI4YTQ2MDZmMGJkZTJkMi5zZXRDb250ZW50KGh0bWxfMGRlOTA2YjQ2M2IzNDgxZTkzMzg3NWI0OWYzNmM0NzEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTZlZGVlZjdmYTVlNGM4OGEyZGU3M2YyZDUxOTQ0MTQuYmluZFBvcHVwKHBvcHVwXzczM2E1NzNjYjE4ZDRjYzc5MjhhNDYwNmYwYmRlMmQyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzlkMzc1YWNkYThjNTQyZjVhYjc2NDk2NWQ4NjMzOTg5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNjQzNTE1MiwtNzkuNTc3MjAwNzk5OTk5OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNGVlMzczNzUwZmI0NDhhNGFmYWYyMWVmYjRmMTAyYTIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDE5NTZmODU3YzBjNGQ1OTgyNjVhOWVjYTI3Nzk4NWQgPSAkKCc8ZGl2IGlkPSJodG1sXzAxOTU2Zjg1N2MwYzRkNTk4MjY1YTllY2EyNzc5ODVkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NOUM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzRlZTM3Mzc1MGZiNDQ4YTRhZmFmMjFlZmI0ZjEwMmEyLnNldENvbnRlbnQoaHRtbF8wMTk1NmY4NTdjMGM0ZDU5ODI2NWE5ZWNhMjc3OTg1ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85ZDM3NWFjZGE4YzU0MmY1YWI3NjQ5NjVkODYzMzk4OS5iaW5kUG9wdXAocG9wdXBfNGVlMzczNzUwZmI0NDhhNGFmYWYyMWVmYjRmMTAyYTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjQ0OTExMWVkNWI0NGY4NzlkMWU0MjNhOTM4YjJjY2EgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My43NTYzMDMzLC03OS41NjU5NjMyOTk5OTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83NzliNmNiYTFjYmE0ODJhYTgzYTEzYmMyMzM2Mzc0OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85MDgwMDNmMThkYmM0ZDc3YmU2ZmI5ZmFjZTBjOTJiOCA9ICQoJzxkaXYgaWQ9Imh0bWxfOTA4MDAzZjE4ZGJjNGQ3N2JlNmZiOWZhY2UwYzkyYjgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk05TDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzc5YjZjYmExY2JhNDgyYWE4M2ExM2JjMjMzNjM3NDguc2V0Q29udGVudChodG1sXzkwODAwM2YxOGRiYzRkNzdiZTZmYjlmYWNlMGM5MmI4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzI0NDkxMTFlZDViNDRmODc5ZDFlNDIzYTkzOGIyY2NhLmJpbmRQb3B1cChwb3B1cF83NzliNmNiYTFjYmE0ODJhYTgzYTEzYmMyMzM2Mzc0OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lMThiN2YzOTM0Njk0YTdmOWU5ODliNTRkNWJlOGU0MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjcyNDc2NTksLTc5LjUzMjI0MjQwMDAwMDAyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRjMjg3ZTY5NGFiMDQzOTdhMTNhYmM2NmEzYTMzOTZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzJlYzhiZTVkY2U5NTQxZDJiY2U5NDcwN2QyNGFmYWZiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgxNTI1ODY0YjZmYTRhNDNiM2ExOWVkNDlhODZhYWNkID0gJCgnPGRpdiBpZD0iaHRtbF84MTUyNTg2NGI2ZmE0YTQzYjNhMTllZDQ5YTg2YWFjZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TTlNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yZWM4YmU1ZGNlOTU0MWQyYmNlOTQ3MDdkMjRhZmFmYi5zZXRDb250ZW50KGh0bWxfODE1MjU4NjRiNmZhNGE0M2IzYTE5ZWQ0OWE4NmFhY2QpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTE4YjdmMzkzNDY5NGE3ZjllOTg5YjU0ZDViZThlNDIuYmluZFBvcHVwKHBvcHVwXzJlYzhiZTVkY2U5NTQxZDJiY2U5NDcwN2QyNGFmYWZiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAxNmQ2ZTUxZDA0NjRjNTY5ODZhOTk2ZTE5OTY2NDExID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNzA2ODc2LC03OS41MTgxODg0MDAwMDAwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wY2IxNGRiYTJkMGI0NDJkYjE3OTliOGJlNDA4MDhlNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xYWZiMGY4MWYyMDY0ZTQwOGQyZTM3NGYwNWI5NTVhYyA9ICQoJzxkaXYgaWQ9Imh0bWxfMWFmYjBmODFmMjA2NGU0MDhkMmUzNzRmMDViOTU1YWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk05TjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGNiMTRkYmEyZDBiNDQyZGIxNzk5YjhiZTQwODA4ZTYuc2V0Q29udGVudChodG1sXzFhZmIwZjgxZjIwNjRlNDA4ZDJlMzc0ZjA1Yjk1NWFjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzAxNmQ2ZTUxZDA0NjRjNTY5ODZhOTk2ZTE5OTY2NDExLmJpbmRQb3B1cChwb3B1cF8wY2IxNGRiYTJkMGI0NDJkYjE3OTliOGJlNDA4MDhlNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jNjM0NmI3NTQwNmM0MTJmYjU4NjY2MDYxMTM5NzJkMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjY5NjMxOSwtNzkuNTMyMjQyNDAwMDAwMDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGMyODdlNjk0YWIwNDM5N2ExM2FiYzY2YTNhMzM5NmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNWJmNjNmODFhMmYxNGRkNWJhMWY5YjE4NzIzN2IzMTMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGZiZWM4YjBjMmNmNGIxMmFiY2FlZDZmNmM4MjQ3OTIgPSAkKCc8ZGl2IGlkPSJodG1sXzhmYmVjOGIwYzJjZjRiMTJhYmNhZWQ2ZjZjODI0NzkyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NOVA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzViZjYzZjgxYTJmMTRkZDViYTFmOWIxODcyMzdiMzEzLnNldENvbnRlbnQoaHRtbF84ZmJlYzhiMGMyY2Y0YjEyYWJjYWVkNmY2YzgyNDc5Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jNjM0NmI3NTQwNmM0MTJmYjU4NjY2MDYxMTM5NzJkMi5iaW5kUG9wdXAocG9wdXBfNWJmNjNmODFhMmYxNGRkNWJhMWY5YjE4NzIzN2IzMTMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWJiYTcwZmM1NjlhNDJkZGFiYmQ5YTlhMjU0NmM2YjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My42ODg5MDU0LC03OS41NTQ3MjQ0MDAwMDAwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85MzI0MDBjN2UzNWI0ODhiYTgwMmYzNjM3NGRlMDRiNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81Y2RkNGZjM2FlNWU0ODY3ODU4Njc5MTc2MGRkNWUwYyA9ICQoJzxkaXYgaWQ9Imh0bWxfNWNkZDRmYzNhZTVlNDg2Nzg1ODY3OTE3NjBkZDVlMGMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk05UjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTMyNDAwYzdlMzViNDg4YmE4MDJmMzYzNzRkZTA0YjUuc2V0Q29udGVudChodG1sXzVjZGQ0ZmMzYWU1ZTQ4Njc4NTg2NzkxNzYwZGQ1ZTBjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzFiYmE3MGZjNTY5YTQyZGRhYmJkOWE5YTI1NDZjNmIyLmJpbmRQb3B1cChwb3B1cF85MzI0MDBjN2UzNWI0ODhiYTgwMmYzNjM3NGRlMDRiNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mYjhiOWU5NGFhODA0Y2VjODk1ODFlNGQ2OGVjNGJlZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjczOTQxNjM5OTk5OTk5NiwtNzkuNTg4NDM2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mZTA5YjIzNGFhOGU0MjcwYTQxN2EwOTU3YTY1NTkxMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yNDFmYjYyYjVkODk0ZjkxYjc3NjExMTQ5YWFhZDE0MyA9ICQoJzxkaXYgaWQ9Imh0bWxfMjQxZmI2MmI1ZDg5NGY5MWI3NzYxMTE0OWFhYWQxNDMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk05VjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZmUwOWIyMzRhYThlNDI3MGE0MTdhMDk1N2E2NTU5MTAuc2V0Q29udGVudChodG1sXzI0MWZiNjJiNWQ4OTRmOTFiNzc2MTExNDlhYWFkMTQzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2ZiOGI5ZTk0YWE4MDRjZWM4OTU4MWU0ZDY4ZWM0YmVmLmJpbmRQb3B1cChwb3B1cF9mZTA5YjIzNGFhOGU0MjcwYTQxN2EwOTU3YTY1NTkxMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zYjc3Njc5ODYzYmI0NDU0OWJiY2U0ZDdlYzgzZmNhOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjcwNjc0ODI5OTk5OTk5NCwtNzkuNTk0MDU0NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YzI4N2U2OTRhYjA0Mzk3YTEzYWJjNjZhM2EzMzk2YSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMmM3NzE4MzczZWQ0ODcyYWRhZjA1YjRjNzZiZDY1MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80NTYyOTJkY2Y5Mzg0ZDU0OWU3YTZhYWY5ZWIyNTI3MSA9ICQoJzxkaXYgaWQ9Imh0bWxfNDU2MjkyZGNmOTM4NGQ1NDllN2E2YWFmOWViMjUyNzEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk05VzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzJjNzcxODM3M2VkNDg3MmFkYWYwNWI0Yzc2YmQ2NTIuc2V0Q29udGVudChodG1sXzQ1NjI5MmRjZjkzODRkNTQ5ZTdhNmFhZjllYjI1MjcxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzNiNzc2Nzk4NjNiYjQ0NTQ5YmJjZTRkN2VjODNmY2E5LmJpbmRQb3B1cChwb3B1cF8zMmM3NzE4MzczZWQ0ODcyYWRhZjA1YjRjNzZiZDY1Mik7CgogICAgICAgICAgICAKICAgICAgICAKPC9zY3JpcHQ+\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7f29584d7eb8>"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create map of Toronto using latitude and longitude values\n",
"map_toronto = folium.Map(location=[latitude, longitude], zoom_start=10)\n",
"\n",
"# add markers to map\n",
"for lat, lng, postal in zip(toronto_postal['Latitude'], toronto_postal['Longitude'], toronto_postal['Postal Code']):\n",
" label = '{}'.format(postal)\n",
" label = folium.Popup(label, parse_html=True)\n",
" folium.CircleMarker(\n",
" [lat, lng],\n",
" radius=5,\n",
" popup=label,\n",
" color='blue',\n",
" fill=True,\n",
" fill_color='#3186cc',\n",
" fill_opacity=0.7,\n",
" parse_html=False).add_to(map_toronto) \n",
" \n",
"map_toronto"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4. Results and Conclusion"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [],
"source": [
"second_common = postal_venues_sorted.groupby(postal_venues_sorted['2nd Most Common Venue']).count()\n",
"second_common.sort_values('Postal Code', ascending=False, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [],
"source": [
"third_common = postal_venues_sorted.groupby(postal_venues_sorted['3rd Most Common Venue']).count()\n",
"third_common.sort_values('Postal Code', ascending=False, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [],
"source": [
"first_common.sort_values('Postal Code', ascending=False, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [],
"source": [
"first_common_ten = first_common.head(10)\n",
"second_common_ten = second_common.head(10)\n",
"third_common_ten = third_common.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"first_common_ten['Postal Code'].plot(kind='bar')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"second_common_ten['Postal Code'].plot(kind='bar')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"third_common_ten['Postal Code'].plot(kind='bar')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment