diff --git a/lab-p7/README.md b/lab-p7/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..2ec096bfbb365686294a814c7d80aaaab43127d0
--- /dev/null
+++ b/lab-p7/README.md
@@ -0,0 +1,81 @@
+# Lab 7: Dictionaries
+
+In this lab, you will analyze water accessibility data using dictionaries.
+
+### Corrections/Clarifications
+
+None yet
+
+**Find any issues?** Report to us:
+
+- Srinath Namburi <sgnamburi@wisc.edu>
+- Karthik Suresh <ksuresh6@wisc.edu>
+
+------------------------------
+
+## Learning Objectives
+
+In this lab, you will practice how to...
+* Access and utilize data in CSV files
+* Deal with messy real-world datasets
+* Use dictionaries to organize data into key, value pairs
+
+------------------------------
+## Note on Academic Misconduct
+
+You may do these lab exercises only with your project partner; you are not allowed to start
+working on Lab-P7 with one person, then do the project with a different partner. Now may be a
+good time to review [our course policies](https://cs220.cs.wisc.edu/s23/syllabus.html).
+
+
+## Project Partner
+
+We strongly recommend students find a project partner. Pair programming is a great way to learn
+from a fellow student. Project difficulty increases exponentially in this course. Finding a project
+partner early on during the semester is a good idea.
+
+If you are still looking for a project partner, take a moment to ask around the room if anyone
+would like to partner with you on this project. Then you can work with them on this lab and the
+project.
+
+
+------------------------------
+## Segment 1: Setup
+
+Create a `lab-p7` directory and download the following files into the `lab-p7` directory.
+
+* `water_accessibility.csv`
+* `practice.ipynb`
+* `practice_test.py`
+
+If you found your `.csv` file is downloaded as a `.txt` file (e.g. `water_accessibility.txt` instead of `water_accessibility.csv`), run `mv water_accessibility.txt water_accessibility.csv` from your Powershell/Terminal to change the extension of the file into `.csv` file manually. All the data that we need for p7 is stored in `water_accessibility.csv`
+
+To start, familiarize yourself with the dataset (`water_accessibility.csv`). Examine its contents using Microsoft Excel, Numbers (Mac) or any other spreadsheet viewing software.
+
+------------------------------
+
+## Segments 2: Using dictionaries to analyze the data
+
+You will be finishing the rest of your lab on `practice.ipynb`. Run the command `jupyter notebook` from your Terminal/PowerShell window.
+Remember not to close this
+Terminal/PowerShell window while Jupyter is running, and open a new Terminal/PowerShell
+window if necessary.
+
+**Note**: For p7, you will be working on `p7.ipynb`, which is very similar to `practice.ipynb`. We
+strongly recommend that you finish working on this notebook during the lab, so you can ask
+your TA/PM any questions about the notebook that may arise.
+
+**Note**: Unlike `p7.ipynb`, you do **not** have to submit `practice.ipynb`. This notebook is solely
+for your practice and preparation for p7.
+
+------------------------------
+
+## Segment 3: Otter tests check for project submission
+
+This segment is informational only and has no tasks. Your work on `p7.ipynb` is not complete when you submit the project on Gradescope. You **must** review the project's rubric and make sure that you have followed the directions provided in the project to solve the questions. The rubric is meant to reinforce your understanding of the project's directions. The hidden tests on the autograder will be making deductions as per the rubric. If you feel that the autograder has falsely identified your code as incorrect, make a regrade request, so that TAs and graders manually review your code to confirm whether the deduction is appropriate.
+
+------------------------------
+
+## Project 7
+
+You can now get started with [p7]((https://git.doit.wisc.edu/cdis/cs/courses/cs220/cs220-s23-projects/-/tree/main/p7)). **You may use any helper functions created here in project p7**. Remember to only work with p7 with your partner from this point on. Have fun!
diff --git a/lab-p7/images/gradescope.png b/lab-p7/images/gradescope.png
new file mode 100644
index 0000000000000000000000000000000000000000..a46c44d2a9b9b8d4b76a9721809d2e81754e946a
Binary files /dev/null and b/lab-p7/images/gradescope.png differ
diff --git a/lab-p7/practice.ipynb b/lab-p7/practice.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..efa2ab5c4e758a2a5baec1515a64ac63491c0220
--- /dev/null
+++ b/lab-p7/practice.ipynb
@@ -0,0 +1,2315 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "abc3b06b",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "# Initialize Otter\n",
+    "import otter\n",
+    "grader = otter.Notebook(\"practice.ipynb\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "c18a96f5",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import practice_test"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "c94d1b64",
+   "metadata": {},
+   "source": [
+    "# Lab-P7: Dictionaries (Drinking Water Accessibility)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "b20b5975",
+   "metadata": {},
+   "source": [
+    "## Segment 2: Loading Data from CSVs"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "1351a1b8",
+   "metadata": {},
+   "source": [
+    "## Dataset:\n",
+    "\n",
+    "In P7, you will be analyzing the data in `water_accessibility.csv`. This dataset has information on the **percentage of population** of each country who had **at least basic** water supply in the years **2015** and **2020**. You will learn more about the dataset in P7. In Lab-P7, you will practice creating dictionaries using the data in `water_accessibility.csv` and using dictionaries to answer simple questions. \n",
+    "\n",
+    "For now, open `water_accessibility.csv` with Microsoft Excel or some other Spreadsheet viewer and look at the list of countries in the dataset. Data for each country appears twice, one row for the year `2015` and the other row for year `2020`. Countries which had incomplete data have been **omitted** from the dataset, and we will **ignore** those countries in this project. You do **not** have to deal with any **missing data** in the dataset.\n",
+    "\n",
+    "The data shows:\n",
+    "- `country_code` : the unique country code that consists of three alphabet letters\n",
+    "- `country_name` : the name of the country\n",
+    "- `region` : the geographical location of the country (does not equal to its corresponding continents, but follows the administrative groupings from [The World Bank](https://datahelpdesk.worldbank.org/knowledgebase/articles/906519-world-bank-country-and-lending-groups)\n",
+    "- `year` : the year in which it was subject to data collection\n",
+    "- `income_level` : the classification of income level based on GNI per capita in US dollars ([The World Bank Atlas Method](https://datahelpdesk.worldbank.org/knowledgebase/articles/378834-how-does-the-world-bank-classify-countries))\n",
+    "- `pop` : population of the country in a specific year (in thousands)\n",
+    "- `urban_percent` : the percentage of population in a given country that is urban\n",
+    "- `national_alb` : the percentage of a country's population that has access to at least basic water supply\n",
+    "- `urban_alb` : the percentage of a country's urban population that has access to at least basic water supply"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "8a9c84f4",
+   "metadata": {},
+   "source": [
+    "### Task 2.1: Processing the CSV file\n",
+    "\n",
+    "You should first copy/paste the `process_csv` function from [Lab-P6](https://git.doit.wisc.edu/cdis/cs/courses/cs220/cs220-s23-projects/-/blob/main/lab-p6/practice.ipynb) so you can read the data in `water_accessibility.csv`."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "0aa089dc",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# it is considered a good coding practice to place all import statements at the top of the notebook\n",
+    "# please place all your import statements in this cell if you need to import any more modules for this lab\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "f3e22f27",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# define the 'process_csv' function here\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "8f280cec",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "# call process_csv here to read 'water_accessibility.csv'\n",
+    "csv_data = ...\n",
+    "\n",
+    "# split the header and other rows into appropriate variables\n",
+    "csv_header = ...\n",
+    "csv_rows = ..."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "5e520cfe",
+   "metadata": {},
+   "source": [
+    "### Function 1: `cell(row_idx, col_name)`\n",
+    "\n",
+    "This function must take in a row index, `row_idx` and a column name, `col_name` as its inputs, and return the value in `water_accessibility.csv` stored there. There is **no missing data** in this dataset.\n",
+    "\n",
+    "Your `cell` function **must** also typecast the values based on column names (similar to `cell_v2` from [Lab-P6](https://git.doit.wisc.edu/cdis/cs/courses/cs220/cs220-s23-projects/-/tree/main/lab-p6)). These are the expected data types for each of the columns:\n",
+    "\n",
+    "- `country_code` : **str**\n",
+    "- `country_name` : **str**\n",
+    "- `region` : **str**\n",
+    "- `year` : **int**\n",
+    "- `income_level` : **str**\n",
+    "- `pop` : **int**\n",
+    "- `urban_percent` : **int**\n",
+    "- `national_alb` : **int**\n",
+    "- `urban_alb` : **int**\n",
+    "\n",
+    "In addition to typecasting, your function **must** also handle the `pop` column specially, by multiplying the values by *1000* before returning. This is because, the `pop` column represents the population in thousands, and to get (an approximation of) the true population, we need to multiply by *1000*.\n",
+    "\n",
+    "**Important:** You **must** only use the `cell` function to extract data from the dataset. If you extract any data without explicitly using this function, you will **lose points** in P7."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "7eb170ee",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# define the cell function here\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "2ac78cc5",
+   "metadata": {},
+   "source": [
+    "### Task 2.2: Verifying the `cell` function\n",
+    "\n",
+    "It is recommended that you verify that you have defined this function properly. Open `water_accessibility.csv` with Microsoft Excel or some other Spreadsheet viewer, then call the `cell` function on different inputs and confirm that the output matches the values in the table.\n",
+    "\n",
+    "Move on to the next section after you have verified that `cell` function works as it should for the below test cases."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "738e08d9",
+   "metadata": {},
+   "source": [
+    "**Question 1.1:** What is the `year` for the *5*th data row?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "9ceff330",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# using the cell function, retrieve the year for the 5th data row\n",
+    "# replace the ... with approriate values\n",
+    "\n",
+    "year_idx4 = cell(..., ...)\n",
+    "\n",
+    "year_idx4"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "4ee7c603",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q1-1\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "31c636bc",
+   "metadata": {},
+   "source": [
+    "**Question 1.2:** What is the `pop` for the *6*th data row?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "5fd64707",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# using the cell function, retrieve the population for the 6th data row\n",
+    "# replace the ... with approriate values\n",
+    "\n",
+    "pop_idx5 = cell(..., ...)\n",
+    "\n",
+    "pop_idx5"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "c4eaa4a0",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q1-2\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "e28bbe8f",
+   "metadata": {},
+   "source": [
+    "**Question 1.3:** What is the `urban_percent` for the *58*th data row?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "d67929d6",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# using the cell function, retrieve the 'urban_percent' for the 58th data row\n",
+    "# replace the ... with approriate values\n",
+    "\n",
+    "urban_percent_idx57 = cell(..., ...)\n",
+    "\n",
+    "urban_percent_idx57"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "b63f6c2c",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q1-3\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "494eee74",
+   "metadata": {},
+   "source": [
+    "**Question 1.4:** What is the `national_alb` for the *59*th data row?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "612bda10",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# using the cell function, retrieve the 'national_alb' for the 59th data row\n",
+    "# replace the ... with approriate values\n",
+    "\n",
+    "national_alb_idx58 = cell(..., ...)\n",
+    "\n",
+    "national_alb_idx58"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "9216bf53",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q1-4\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "de8ae2c7",
+   "metadata": {},
+   "source": [
+    "**Question 1.5:** What is the `urban_alb` for the *59*th data row?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "0f35a77d",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# using the cell function, retrieve the 'urban_alb' for the 59th data row\n",
+    "# replace the ... with approriate values\n",
+    "\n",
+    "urban_alb_idx58 = cell(..., ...)\n",
+    "\n",
+    "urban_alb_idx58"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "bdfc467d",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q1-5\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "408bd4ac",
+   "metadata": {},
+   "source": [
+    "**Question 1.6:** What is the `country_code` for the *60*th data row?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "83a670ce",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# using the cell function, retrieve the 'country_code' for the 60th data row\n",
+    "# replace the ... with approriate values\n",
+    "\n",
+    "country_code_idx59 = cell(..., ...)\n",
+    "\n",
+    "country_code_idx59"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "39252810",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q1-6\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "d6b88bcd",
+   "metadata": {},
+   "source": [
+    "**Question 1.7:** What is the `income_level` for the *60*th data row?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "a9821b4e",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# using the cell function, retrieve the 'income_level' for the 60th data row\n",
+    "# replace the ... with approriate values\n",
+    "\n",
+    "income_level_idx59 = cell(..., ...)\n",
+    "\n",
+    "income_level_idx59"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "0fe25c06",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q1-7\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "9a33e216",
+   "metadata": {},
+   "source": [
+    "## Segment 3: Dictionaries and Looping through Timeseries data"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "e647279e",
+   "metadata": {},
+   "source": [
+    "### Task 3.1: Creating and Accessing Dictionaries"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "0619cfd2",
+   "metadata": {},
+   "source": [
+    "**Question 2:** Create a dictionary mapping each `country_name` to its `country_code`.\n",
+    "\n",
+    "Your output **must** be a **dict** where each key is a `country_name` and the value is the `country_code`. The first five key-value pairs within this **dict** would be these:\n",
+    "```\n",
+    "{'Afghanistan': 'AFG',\n",
+    " 'Albania': 'ALB',\n",
+    " 'Algeria': 'DZA',\n",
+    " 'Andorra': 'AND',\n",
+    " 'Angola': 'AGO',\n",
+    " ...\n",
+    "}\n",
+    "```\n",
+    "\n",
+    "**Important:** This dataset is different from the previous datasets you have worked with because every country in the dataset has **two** rows: one for the `year` *2015* and one for *2020*. This means that when working with data, you **need** to make sure to set your `for` loop in a way that will let you process two rows at once. Thankfully, the data is organized in such a way that for *each country*, the data from *2015* appears in the **even** indexed rows (0, 2, 4, ...), and the data from *2020* appears in the **odd** indexed rows (1, 3, , ...)."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "8dfd0aa1",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "# Initialize as an empty dictionary\n",
+    "country_codes = ...\n",
+    "\n",
+    "# this will loop through from 0 to len(csv_rows) and increase by 2 numbers each loop\n",
+    "# i.e. it will loop through even indices corresponding to just the data from 2015\n",
+    "for idx in range(0, len(csv_rows), 2): \n",
+    "    # Before you populate the dictionary with the key-value pairs,\n",
+    "    # use print function calls to print the key and the value.\n",
+    "    # Once you have verified the output for the first five lines of data, \n",
+    "    # use the dictionary key-value pair insert syntax to update the dictionary\n",
+    "    # Don't forget to delete the print function call line of code.\n",
+    "    country_codes[...] = ...\n",
+    "\n",
+    "\n",
+    "country_codes"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "b4f6379f",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q2\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "59349301",
+   "metadata": {},
+   "source": [
+    "**Question 3.1:** What is the `country_code` of *Ireland*?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "fbc1cc74",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "ireland_country_code = ...\n",
+    "\n",
+    "ireland_country_code"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "6b05afe8",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q3-1\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "0303a44c",
+   "metadata": {},
+   "source": [
+    "**Question 3.2:** What is the country code of *Sudan*?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "bd47e2f5",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "sudan_country_code = ...\n",
+    "\n",
+    "sudan_country_code"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "3fb28427",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q3-2\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "2e014f0d",
+   "metadata": {},
+   "source": [
+    "**Question 4:** Create a dictionary mapping each `country_name` to `income_level` for *2015*.\n",
+    "\n",
+    "The first five key-value pairs within this **dict** would be these:\n",
+    "```\n",
+    "{'Afghanistan': 'Low income',\n",
+    " 'Albania': 'Upper middle income',\n",
+    " 'Algeria': 'Upper middle income',\n",
+    " 'Andorra': 'High income',\n",
+    " 'Angola': 'Upper middle income',\n",
+    " ...\n",
+    "}\n",
+    "```\n",
+    "\n",
+    "**Hint:** The data for *2015* is found on rows at **even** indices. "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "59a07a28",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "# Initialize as an empty dictionary\n",
+    "income_levels_2015 = ...\n",
+    "\n",
+    "# you need to loop through from 0 to len(csv_rows) and increase by 2 numbers each loop\n",
+    "for idx in range(..., ..., ...):\n",
+    "    # Before you populate the dictionary with the key-value pairs,\n",
+    "    # use print function calls to print the key and the value.\n",
+    "    # Once you have verified the output for the first five lines of data, \n",
+    "    # use the dictionary key-value pair insert syntax to update the dictionary.\n",
+    "    # Don't forget to delete the print function call line of code.\n",
+    "    income_levels_2015[...] = ...\n",
+    "\n",
+    "\n",
+    "income_levels_2015"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "eae6e56a",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q4\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "9bb241de",
+   "metadata": {},
+   "source": [
+    "**Question 5:** Create a dictionary mapping each `country_name` to `income_level` for *2020*.\n",
+    "\n",
+    "The first five key-value pairs within this **dict** would be these:\n",
+    "```\n",
+    "{'Afghanistan': 'Low income',\n",
+    " 'Albania': 'Upper middle income',\n",
+    " 'Algeria': 'Lower middle income',\n",
+    " 'Andorra': 'High income',\n",
+    " 'Angola': 'Lower middle income',\n",
+    " ...\n",
+    "}\n",
+    "```\n",
+    "\n",
+    "**Hint:** The data for *2020* is found on rows at **odd** indices. "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "ec6d35b8",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "# Initialize as an empty dictionary\n",
+    "income_levels_2020 = ...\n",
+    "\n",
+    "# you need to loop through from 1 to len(csv_rows) and increase by 2 numbers each loop\n",
+    "for idx in range(..., ..., ...):\n",
+    "    # Before you populate the dictionary with the key-value pairs,\n",
+    "    # use print function calls to print the key and the value.\n",
+    "    # Once you have verified the output for the first five lines of data, \n",
+    "    # use the dictionary key-value pair insert syntax to update the dictionary\n",
+    "    # Don't forget to delete the print function call line of code.\n",
+    "    income_levels_2020[...] = ...\n",
+    "\n",
+    "\n",
+    "income_levels_2020"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "4cb3ac26",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q5\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "97d671ab",
+   "metadata": {},
+   "source": [
+    "**Question 6.1:** What is the `income_level` of *Zimbabwe* in *2015*?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "11cd8c43",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "zimbabwe_income_level_2015 = ...\n",
+    "\n",
+    "zimbabwe_income_level_2015"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "3c19bf0d",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q6-1\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "b31a09ea",
+   "metadata": {},
+   "source": [
+    "**Question 6.2:** What is the `income_level` of *Zimbabwe* in *2020*?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "ecce349b",
+   "metadata": {
+    "scrolled": true,
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "zimbabwe_income_level_2020 = ...\n",
+    "\n",
+    "zimbabwe_income_level_2020"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "e336e2b8",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q6-2\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "1b653489",
+   "metadata": {},
+   "source": [
+    "### Task 3.2: Comparing data in odd and even indices"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "331e6f66",
+   "metadata": {},
+   "source": [
+    "**Question 7:** Create a **list** of all the countries (`country_name`) whose populations (`pop`) have **decreased** from *2015* to *2020*."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "3025c600",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "# initalize as an empty list\n",
+    "pop_decrease_countries = ...\n",
+    "\n",
+    "# you need to loop through only even indices to avoid repeating the same steps twice\n",
+    "for idx in range(..., ..., ...):\n",
+    "    idx_2015 = idx\n",
+    "    idx_2020 = idx + 1\n",
+    "    if ...: # check if population in 2020 is less than population in 2015\n",
+    "        pop_decrease_countries.append(...)\n",
+    "        \n",
+    "pop_decrease_countries"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "0d880a4e",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q7\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "82c7b9cd",
+   "metadata": {},
+   "source": [
+    "**Question 8:** Create a list of all the countries whose urban population percentage (`urban_percent`) **increased** from *2015* to *2020*."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "852f6ee0",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "# initialize as an empty list\n",
+    "more_urban_countries = []\n",
+    "\n",
+    "# you need to loop through only even (or only odd) indices to avoid repeating the same steps twice\n",
+    "# and add the country_name to the list if urban_percent is higher in 2020 than in 2015\n",
+    "        \n",
+    "more_urban_countries"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "652c4cb9",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q8\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "a08a32d9",
+   "metadata": {},
+   "source": [
+    "### Task 3.3: Working with Nested Dictionaries\n",
+    "\n",
+    "You have defined two dictionaries `income_levels_2015` and `income_levels_2020`. You will now create a *nested* dictionary that combines both these dictionaries."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "7b837291",
+   "metadata": {},
+   "source": [
+    "**Question 9:** Create a dictionary mapping each `country_name` to another **dictionary** that maps each `year` to `income_level`. You may hardcode the years *2015* and *2020* for this question.\n",
+    "\n",
+    "The first five key-value pairs within this **dict** would be these:\n",
+    "```\n",
+    "{'Afghanistan': {2015: 'Low income', 2020: 'Low income'},\n",
+    " 'Albania': {2015: 'Upper middle income', 2020: 'Upper middle income'},\n",
+    " 'Algeria': {2015: 'Upper middle income', 2020: 'Lower middle income'},\n",
+    " 'Andorra': {2015: 'High income', 2020: 'High income'},\n",
+    " 'Angola': {2015: 'Upper middle income', 2020: 'Lower middle income'},\n",
+    " ...\n",
+    "}\n",
+    "```\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "af3b24fd",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "# initialize as an empty dictionary\n",
+    "income_levels = ...\n",
+    "\n",
+    "# you need to loop through only even (or only odd) indices to avoid repeating the same steps twice\n",
+    "for idx in range(..., ..., ...):\n",
+    "    country_name = cell(idx, \"country_name\")\n",
+    "    # initialize as an empty nested dictionary as the value\n",
+    "    income_levels[country_name] = ...\n",
+    "    # First, use print function call to display the 2015 income_level for\n",
+    "    # the current country. Once you verify that, delete the print function call line.\n",
+    "    # add the income_level for 2015 as key-value pair to inner dictionary\n",
+    "    income_levels[...][...] = income_levels_2015[...]\n",
+    "    # add the income_level for 2020 as key-value pair to inner dictionary\n",
+    "    income_levels[...][...] = income_levels_2020[...]\n",
+    "\n",
+    "income_levels"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "3fc64163",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q9\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "7c9c233a",
+   "metadata": {},
+   "source": [
+    "**Question 10.1:** Use the nested dictionary you created to find the `income_level` of *Cuba* in *2015*.\n",
+    "\n",
+    "You **must** use the dictionary `income_levels` to answer this question."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "0c0a8465",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "cuba_income_level_2015 = income_levels[...][...]\n",
+    "\n",
+    "cuba_income_level_2015"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "8d43224a",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q10-1\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "581a552c",
+   "metadata": {},
+   "source": [
+    "**Question 10.2:** Use the nested dictionary you created to find the `income_level` of *Gibraltar* in *2020*.\n",
+    "\n",
+    "You **must** use the dictionary `income_levels` to answer this question."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "633781b9",
+   "metadata": {
+    "scrolled": false,
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "gibraltar_income_level_2020 = income_levels[...][...]\n",
+    "\n",
+    "gibraltar_income_level_2020"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "0b9776d8",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q10-2\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "11801822",
+   "metadata": {},
+   "source": [
+    "**Question 11**: Create a dictionary mapping each `country_name` to a **boolean** representing whether or not the `income_level` of a country is different in *2020* than in *2015*.\n",
+    "\n",
+    "The first five key-value pairs within this **dict** would be these:\n",
+    "```\n",
+    "{'Afghanistan': False,\n",
+    " 'Albania': False,\n",
+    " 'Algeria': True,\n",
+    " 'Andorra': False,\n",
+    " 'Angola': True,\n",
+    " ...\n",
+    "}\n",
+    "```\n",
+    "\n",
+    "You have already created a nested dictionary called `income_levels` which contains all the relevant data. Loop through the keys of that dictionary and combine the data from the inner dictionary to create your dictionary."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "7b919e60",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "# initialize as an empty dictionary\n",
+    "income_level_differences = ...\n",
+    "\n",
+    "# loop over the keys of income_levels\n",
+    "for ... in ...:\n",
+    "    if ...: \n",
+    "        # use the dictionary income_levels to compare 2015 and 2020 income_level\n",
+    "        income_change_boolean = True\n",
+    "    else:\n",
+    "        income_change_boolean = False\n",
+    "    # map the country name to the boolean\n",
+    "    income_level_differences[...] = income_change_boolean\n",
+    "\n",
+    "income_level_differences"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "4ee8c425",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q11\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "93ac9ecf",
+   "metadata": {},
+   "source": [
+    "### Task 3.4: Binning\n",
+    "\n",
+    "We created the dictionary `income_levels_2015` a little while ago which maps each `country_name` to its `income_level`. We will now use this dictionary to create a **new** dictionary where each key is an `income_level`, and the corresponding value is a **list** of all the countries from that `income_level`.\n",
+    "\n",
+    "**Hint:** If a given key is not present as the keys in dictionary, you might want to actually initialize it with an empty dictionary. A pseudo-code looks like this,\n",
+    "```\n",
+    "if new_key not in dictionary:\n",
+    "    dictionary[new_key] = []\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "4e6ce90a",
+   "metadata": {},
+   "source": [
+    "**Question 12:** Create a new dictionary using the `income_levels_2015` dictionary by mapping each `income_level` to a **list** of all the countries (`country_name`) from that `income_level`.\n",
+    "\n",
+    "The first three country names for each key within this **dict** would be these:\n",
+    "```\n",
+    "{'Low income': ['Afghanistan',\n",
+    "  'Benin',\n",
+    "  'Burkina Faso', ...],\n",
+    " 'Upper middle income': ['Albania',\n",
+    "  'Algeria',\n",
+    "  'Angola', ...],\n",
+    " 'High income': ['Andorra',\n",
+    "  'Australia',\n",
+    "  'Austria', ...],\n",
+    " 'Lower middle income': ['Armenia',\n",
+    "  'Bangladesh',\n",
+    "  'Bhutan', ...]\n",
+    "}\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "01d85153",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "# initialize as an empty dictionary\n",
+    "income_levels_to_country_names_2015 = ...\n",
+    "\n",
+    "# loop over the keys of income_levels_2015\n",
+    "for ... in ...:\n",
+    "    # find the income_level of the country and store as bin_key\n",
+    "    bin_key = ...\n",
+    "    # if the income_level doesn't already exist in the new dict, map it to an empty list \n",
+    "    if bin_key not in income_levels_to_country_names_2015:\n",
+    "        income_levels_to_country_names_2015[bin_key] = ...\n",
+    "    # append the country name to the list\n",
+    "    income_levels_to_country_names_2015[bin_key].append(...)\n",
+    "\n",
+    "income_levels_to_country_names_2015"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "92a471bc",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q12\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "26613d73",
+   "metadata": {},
+   "source": [
+    "**Question 13:** Create a new dictionary using the `income_levels_2020` dictionary by mapping each `income_level` to a **list** of all the countries (`country_name`) from that `income_level`."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "2ddcdfea",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "# initialize as an empty dictionary\n",
+    "income_levels_to_country_names_2020 = ...\n",
+    "\n",
+    "# loop over the keys of income_levels_2020\n",
+    "# and update income_levels_to_country_names_2020 by appending each country to the correct list\n",
+    "\n",
+    "income_levels_to_country_names_2020"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "18774dde",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q13\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "013d9a9a",
+   "metadata": {},
+   "source": [
+    "### Task 3.5: Summarizing Data in Dictionaries"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "fe5e5aea",
+   "metadata": {},
+   "source": [
+    "**Question 14.1:** Create a new dictionary that maps each `income_level` to the **number** of countries from that `income_level` in *2015*.\n",
+    "\n",
+    "The key-value pairs within this **dict** would be these:\n",
+    "```\n",
+    "{'Low income': 25,\n",
+    " 'Upper middle income': 44,\n",
+    " 'High income': 41,\n",
+    " 'Lower middle income': 41}\n",
+    "```\n",
+    "\n",
+    "**Hint:** Start with the dictionary `income_levels_to_country_names_2015`. Your new dictionary must have the same keys, but the values must be the **length** of the corresponding values in `income_levels_to_country_names_2015`."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "030b86ec",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "# initialize as an empty dictionary\n",
+    "income_level_country_counts_2015 = ...\n",
+    "\n",
+    "# loop over the keys of income_levels_to_country_names_2015\n",
+    "for ... in ...:\n",
+    "    # map the income level to the length of the value in income_levels_to_country_names_2015\n",
+    "    income_level_country_counts_2015[...] = len(...)\n",
+    "\n",
+    "income_level_country_counts_2015"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "f03f9888",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q14-1\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "9d5980a3",
+   "metadata": {},
+   "source": [
+    "**Question 14.2**: Create a new dictionary that maps each `income_level` to the **number** of countries from that `income_level` in *2020*.\n",
+    "\n",
+    "The key-value pairs within this **dict** would be these:\n",
+    "```\n",
+    "{'Low income': 22,\n",
+    " 'Upper middle income': 43,\n",
+    " 'Lower middle income': 44,\n",
+    " 'High income': 42}\n",
+    "\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "d43db4d0",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "# initialize as an empty dictionary\n",
+    "income_level_country_counts_2020 = ...\n",
+    "\n",
+    "# loop over the keys of income_levels_to_country_names_2020\n",
+    "# and map the income_level to the length\n",
+    "\n",
+    "income_level_country_counts_2020"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "768b351f",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q14-2\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "beb6ea2d",
+   "metadata": {},
+   "source": [
+    "### Task 3.6: Combining data from different dictionaries"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "fef61793",
+   "metadata": {},
+   "source": [
+    "**Question 15.1:** Create a dictionary that maps each `country_name` to the population (`pop`) of that country in *2020*.\n",
+    "\n",
+    "The first five key-value pairs within this **dict** would be these:\n",
+    "```\n",
+    "{'Afghanistan': 38928000,\n",
+    " 'Albania': 2878000,\n",
+    " 'Algeria': 43851000,\n",
+    " 'Andorra': 77000,\n",
+    " 'Angola': 32866000,\n",
+    " ...\n",
+    "}\n",
+    "```\n",
+    "\n",
+    "\n",
+    "**Reminder:** The `pop` column represents the population in **thousands**. Your `cell` function definition should already have handled this conversion."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "aae1145e",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "# initialize as an empty dictionary\n",
+    "pops = ...\n",
+    "\n",
+    "# loop over the odd indices of csv_rows to get the data for 2020\n",
+    "# and map the country_name to the pop\n",
+    "\n",
+    "pops"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "b4aef3d9",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q15-1\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "300d21d6",
+   "metadata": {},
+   "source": [
+    "**Question 15.2:** Create a dictionary that maps each `country_name` to the urban population percentage (`urban_percent`) of that country in *2020*.\n",
+    "\n",
+    "The first five key-value pairs within this **dict** would be these:\n",
+    "```\n",
+    "{'Afghanistan': 26,\n",
+    " 'Albania': 62,\n",
+    " 'Algeria': 74,\n",
+    " 'Andorra': 88,\n",
+    " 'Angola': 67,\n",
+    " ...\n",
+    "}\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "e2c081c7",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'urban_percents', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "3da62fe1",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q15-2\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "978bc4e4",
+   "metadata": {},
+   "source": [
+    "**Question 16:** Using the two dictionaries `pops` and `urban_percents`, create a new dictionary that maps each `country_name` to the size of the urban population of that country in *2020*.\n",
+    "\n",
+    "You **must** round the numbers to the nearest integer using the built-in function `round`.  To learn more about the `round` function, check out this [link](https://docs.python.org/3/library/functions.html#round).\n",
+    "\n",
+    "The first five key-value pairs within this **dict** would be these:\n",
+    "```\n",
+    "{'Afghanistan': 10121280,\n",
+    " 'Albania': 1784360,\n",
+    " 'Algeria': 32449740,\n",
+    " 'Andorra': 67760,\n",
+    " 'Angola': 22020220,\n",
+    " ...\n",
+    " }\n",
+    "```\n",
+    "\n",
+    "**Hint:** For each country, the size of the urban population is just the `pop * urban_percent / 100`"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "528640c8",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "# initialize as an empty dictionary\n",
+    "urban_populations = ...\n",
+    "\n",
+    "# loop over the keys of either pops/urban_percents (it doesn't matter as they are the same)\n",
+    "for ... in ...:\n",
+    "    # map the country name to its urban population using data from pops and urban_percents\n",
+    "    # Remember that both pops and urban_percents have the same keys (country names)\n",
+    "    # So a single for loop can be sufficient to access data from both of these dictionaries\n",
+    "    urban_populations[...] = ...\n",
+    "\n",
+    "urban_populations"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "5ac2fee4",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q16\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "f0aa7a87",
+   "metadata": {},
+   "source": [
+    "### Task 3.7: Finding Minimum/Maximum Values in Dictionaries"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "56afff02",
+   "metadata": {},
+   "source": [
+    "**Question 17**: What is the name of the country with the **smallest** urban population? Do not worry about ties."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "1c72ab99",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "# initialize a new variable as None\n",
+    "smallest_urban_country = ...\n",
+    "\n",
+    "# loop over the keys of urban_populations\n",
+    "for ... in ...:\n",
+    "    # check if the variable smallest_urban_country should be updated\n",
+    "    if ...:\n",
+    "        # correctly update the variable\n",
+    "        smallest_urban_country = ...\n",
+    "\n",
+    "smallest_urban_country"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "2ecf8d6c",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q17\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "3d68a87d",
+   "metadata": {},
+   "source": [
+    "**Question 18**: What is the name of the country with the **largest** urban population? Do not worry about ties."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "541fca56",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'largest_urban_country', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "b1036293",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q18\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "34a60617",
+   "metadata": {},
+   "source": [
+    "### Task 3.8: Adding additional data to nested dictionaries\n",
+    "\n",
+    "You have already defined a nested dictionary `income_levels`in q9. This is a dictionary where each `country_name` maps to an inner dictionary with the keys *2015* and *2020*. The corresponding values for this inner dictionary are the `income_levels` of `country_name` in *2015* and *2020* respectively.\n",
+    "\n",
+    "You will now add an additional column to this nested dictionary."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "b47b88b7",
+   "metadata": {},
+   "source": [
+    "**Question 19**: Add an additional key-value pair mapping the string `\"region\"` to the `region` of each country to each of the inner dictionaries of `income_levels`.\n",
+    "\n",
+    "The value of the variable `income_levels` should look like this:\n",
+    "```python\n",
+    "{'Afghanistan': {2015: 'Low income',\n",
+    "  2020: 'Low income',\n",
+    "  'region': 'South Asia'},\n",
+    " 'Albania': {2015: 'Upper middle income',\n",
+    "  2020: 'Upper middle income',\n",
+    "  'region': 'Europe & Central Asia'},\n",
+    " 'Algeria': {2015: 'Upper middle income',\n",
+    "  2020: 'Lower middle income',\n",
+    "  'region': 'Middle East & North Africa'},\n",
+    "  ...\n",
+    "}\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "002bfe6a",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# update the value of the variable 'income_levels', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "edb4964c",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q19\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "14a4af04",
+   "metadata": {},
+   "source": [
+    "### Task 3.9: More binning"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "75996b30",
+   "metadata": {},
+   "source": [
+    "**Question 20**: Create a new dictionary that maps each `region` to the **list** of countries from that region whose `income_level` was *Lower middle income* in *2020*."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "f373083c",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "# initialize as an empty dictionary\n",
+    "lower_mid_countries_by_region = ...\n",
+    "# loop over the keys of income_levels\n",
+    "for ... in ...:\n",
+    "    # find the region of the country and store it as the bin_key\n",
+    "    bin_key = ...\n",
+    "    # check if bin_key is already a key of lower_mid_countries_by_region\n",
+    "    if ...:\n",
+    "        # initialize the value as an empty list if key is not in the dict\n",
+    "        lower_mid_countries_by_region[bin_key] = ...\n",
+    "    # if the income level of the country was 'Lower middle income' in 2020,\n",
+    "    # add country to the correct bin\n",
+    "\n",
+    "lower_mid_countries_by_region"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "aad9a4ed",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q20\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "273e0384",
+   "metadata": {},
+   "source": [
+    "## Great work! You are now ready to start [P7](https://git.doit.wisc.edu/cdis/cs/courses/cs220/cs220-s23-projects/-/tree/main/p7). You may use any helper functions that you have created here."
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "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.9.13"
+  },
+  "otter": {
+   "OK_FORMAT": true,
+   "tests": {
+    "q1-1": {
+     "name": "q1-1",
+     "points": 0.5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q1-1\", year_idx4)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q1-2": {
+     "name": "q1-2",
+     "points": 0.5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q1-2\", pop_idx5)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q1-3": {
+     "name": "q1-3",
+     "points": 0.5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q1-3\", urban_percent_idx57)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q1-4": {
+     "name": "q1-4",
+     "points": 0.5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q1-4\", national_alb_idx58)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q1-5": {
+     "name": "q1-5",
+     "points": 1,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q1-5\", urban_alb_idx58)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q1-6": {
+     "name": "q1-6",
+     "points": 1,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q1-6\", country_code_idx59)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q1-7": {
+     "name": "q1-7",
+     "points": 1,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q1-7\", income_level_idx59)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q10-1": {
+     "name": "q10-1",
+     "points": 2.5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q10-1\", cuba_income_level_2015)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q10-2": {
+     "name": "q10-2",
+     "points": 5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q10-2\", gibraltar_income_level_2020)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q11": {
+     "name": "q11",
+     "points": 5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q11\", income_level_differences)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q12": {
+     "name": "q12",
+     "points": 5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q12\", income_levels_to_country_names_2015)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q13": {
+     "name": "q13",
+     "points": 5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q13\", income_levels_to_country_names_2020)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q14-1": {
+     "name": "q14-1",
+     "points": 2,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q14-1\", income_level_country_counts_2015)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q14-2": {
+     "name": "q14-2",
+     "points": 3,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q14-2\", income_level_country_counts_2020)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q15-1": {
+     "name": "q15-1",
+     "points": 2,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q15-1\", pops)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q15-2": {
+     "name": "q15-2",
+     "points": 3,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q15-2\", urban_percents)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q16": {
+     "name": "q16",
+     "points": 5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q16\", urban_populations)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q17": {
+     "name": "q17",
+     "points": 5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q17\", smallest_urban_country)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q18": {
+     "name": "q18",
+     "points": 5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q18\", largest_urban_country)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q19": {
+     "name": "q19",
+     "points": 5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q19\", income_levels)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q2": {
+     "name": "q2",
+     "points": 5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q2\", country_codes)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q20": {
+     "name": "q20",
+     "points": 5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q20\", lower_mid_countries_by_region)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q3-1": {
+     "name": "q3-1",
+     "points": 2.5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q3-1\", ireland_country_code)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q3-2": {
+     "name": "q3-2",
+     "points": 2.5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q3-2\", sudan_country_code)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q4": {
+     "name": "q4",
+     "points": 5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q4\", income_levels_2015)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q5": {
+     "name": "q5",
+     "points": 5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q5\", income_levels_2020)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q6-1": {
+     "name": "q6-1",
+     "points": 2.5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q6-1\", zimbabwe_income_level_2015)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q6-2": {
+     "name": "q6-2",
+     "points": 2.5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q6-2\", zimbabwe_income_level_2020)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q7": {
+     "name": "q7",
+     "points": 5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q7\", pop_decrease_countries)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q8": {
+     "name": "q8",
+     "points": 5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q8\", more_urban_countries)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q9": {
+     "name": "q9",
+     "points": 5,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> practice_test.check(\"q9\", income_levels)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    }
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/lab-p7/practice_test.py b/lab-p7/practice_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..462fdc6aa3f0096cbff1db6e98e17dd11899a25f
--- /dev/null
+++ b/lab-p7/practice_test.py
@@ -0,0 +1,2429 @@
+#!/usr/bin/python
+import os
+import json
+import math
+
+
+REL_TOL = 6e-04  # relative tolerance for floats
+ABS_TOL = 15e-03  # absolute tolerance for floats
+
+PASS = "PASS"
+
+TEXT_FORMAT = "text"  # question type when expected answer is a str, int, float, or bool
+# question type when expected answer is a namedtuple
+TEXT_FORMAT_NAMEDTUPLE = "text namedtuple"
+# question type when the expected answer is a list where the order does *not* matter
+TEXT_FORMAT_UNORDERED_LIST = "text list_unordered"
+# question type when the expected answer is a list where the order does matter
+TEXT_FORMAT_ORDERED_LIST = "text list_ordered"
+# question type when the expected answer is a list of namedtuples where the order does matter
+TEXT_FORMAT_ORDERED_LIST_NAMEDTUPLE = "text list_ordered namedtuple"
+# question type when the expected answer is a list where order does matter, but with possible ties. Elements are ordered according to values in special_ordered_json (with ties allowed)
+TEXT_FORMAT_SPECIAL_ORDERED_LIST = "text list_special_ordered"
+# question type when the expected answer is a dictionary
+TEXT_FORMAT_DICT = "text dict"
+# question type when the expected answer is a list of dicts where the order does matter
+TEXT_FORMAT_LIST_DICTS_ORDERED = "text list_dicts_ordered"
+
+
+expected_json = {"1-1": (TEXT_FORMAT, 2015),
+                 "1-2": (TEXT_FORMAT, 43851000),
+                 "1-3": (TEXT_FORMAT, 24),
+                 "1-4": (TEXT_FORMAT, 100),
+                 "1-5": (TEXT_FORMAT, 100),
+                 "1-6": (TEXT_FORMAT, 'CHL'),
+                 "1-7": (TEXT_FORMAT, 'High income'),
+                 "2": (TEXT_FORMAT_DICT, {'Afghanistan': 'AFG',
+                                          'Albania': 'ALB',
+                                          'Algeria': 'DZA',
+                                          'Andorra': 'AND',
+                                          'Angola': 'AGO',
+                                          'Armenia': 'ARM',
+                                          'Australia': 'AUS',
+                                          'Austria': 'AUT',
+                                          'Azerbaijan': 'AZE',
+                                          'Bangladesh': 'BGD',
+                                          'Belarus': 'BLR',
+                                          'Belgium': 'BEL',
+                                          'Belize': 'BLZ',
+                                          'Benin': 'BEN',
+                                          'Bermuda': 'BMU',
+                                          'Bhutan': 'BTN',
+                                          'Bosnia and Herzegovina': 'BIH',
+                                          'Botswana': 'BWA',
+                                          'Brazil': 'BRA',
+                                          'Brunei Darussalam': 'BRN',
+                                          'Bulgaria': 'BGR',
+                                          'Burkina Faso': 'BFA',
+                                          'Burundi': 'BDI',
+                                          'Cabo Verde': 'CPV',
+                                          'Cambodia': 'KHM',
+                                          'Cameroon': 'CMR',
+                                          'Canada': 'CAN',
+                                          'Central African Republic': 'CAF',
+                                          'Chad': 'TCD',
+                                          'Chile': 'CHL',
+                                          'China': 'CHN',
+                                          'Colombia': 'COL',
+                                          'Costa Rica': 'CRI',
+                                          "Côte d'Ivoire": 'CIV',
+                                          'Cuba': 'CUB',
+                                          'Cyprus': 'CYP',
+                                          'Czech Republic': 'CZE',
+                                          'Denmark': 'DNK',
+                                          'Djibouti': 'DJI',
+                                          'Dominican Republic': 'DOM',
+                                          'Ecuador': 'ECU',
+                                          'El Salvador': 'SLV',
+                                          'Estonia': 'EST',
+                                          'Eswatini': 'SWZ',
+                                          'Ethiopia': 'ETH',
+                                          'Fiji': 'FJI',
+                                          'Finland': 'FIN',
+                                          'France': 'FRA',
+                                          'Gabon': 'GAB',
+                                          'Georgia': 'GEO',
+                                          'Germany': 'DEU',
+                                          'Ghana': 'GHA',
+                                          'Gibraltar': 'GIB',
+                                          'Greece': 'GRC',
+                                          'Greenland': 'GRL',
+                                          'Guatemala': 'GTM',
+                                          'Guinea': 'GIN',
+                                          'Guinea-Bissau': 'GNB',
+                                          'Guyana': 'GUY',
+                                          'Haiti': 'HTI',
+                                          'Honduras': 'HND',
+                                          'Hungary': 'HUN',
+                                          'Iceland': 'ISL',
+                                          'India': 'IND',
+                                          'Indonesia': 'IDN',
+                                          'Iraq': 'IRQ',
+                                          'Ireland': 'IRL',
+                                          'Israel': 'ISR',
+                                          'Jamaica': 'JAM',
+                                          'Jordan': 'JOR',
+                                          'Kazakhstan': 'KAZ',
+                                          'Kenya': 'KEN',
+                                          'Kiribati': 'KIR',
+                                          'Latvia': 'LVA',
+                                          'Lesotho': 'LSO',
+                                          'Liberia': 'LBR',
+                                          'Lithuania': 'LTU',
+                                          'Luxembourg': 'LUX',
+                                          'Madagascar': 'MDG',
+                                          'Malawi': 'MWI',
+                                          'Malaysia': 'MYS',
+                                          'Maldives': 'MDV',
+                                          'Mali': 'MLI',
+                                          'Malta': 'MLT',
+                                          'Marshall Islands': 'MHL',
+                                          'Mauritania': 'MRT',
+                                          'Mauritius': 'MUS',
+                                          'Mexico': 'MEX',
+                                          'Monaco': 'MCO',
+                                          'Mongolia': 'MNG',
+                                          'Montenegro': 'MNE',
+                                          'Morocco': 'MAR',
+                                          'Mozambique': 'MOZ',
+                                          'Myanmar': 'MMR',
+                                          'Namibia': 'NAM',
+                                          'Nauru': 'NRU',
+                                          'Nepal': 'NPL',
+                                          'Netherlands': 'NLD',
+                                          'New Zealand': 'NZL',
+                                          'Nicaragua': 'NIC',
+                                          'Niger': 'NER',
+                                          'Nigeria': 'NGA',
+                                          'North Macedonia': 'MKD',
+                                          'Norway': 'NOR',
+                                          'Oman': 'OMN',
+                                          'Pakistan': 'PAK',
+                                          'Palau': 'PLW',
+                                          'Panama': 'PAN',
+                                          'Papua New Guinea': 'PNG',
+                                          'Paraguay': 'PRY',
+                                          'Peru': 'PER',
+                                          'Philippines': 'PHL',
+                                          'Poland': 'POL',
+                                          'Portugal': 'PRT',
+                                          'Romania': 'ROU',
+                                          'Russian Federation': 'RUS',
+                                          'Rwanda': 'RWA',
+                                          'Samoa': 'WSM',
+                                          'Senegal': 'SEN',
+                                          'Serbia': 'SRB',
+                                          'Sierra Leone': 'SLE',
+                                          'Singapore': 'SGP',
+                                          'Solomon Islands': 'SLB',
+                                          'Somalia': 'SOM',
+                                          'South Africa': 'ZAF',
+                                          'South Sudan': 'SSD',
+                                          'Spain': 'ESP',
+                                          'Sri Lanka': 'LKA',
+                                          'Sudan': 'SDN',
+                                          'Suriname': 'SUR',
+                                          'Sweden': 'SWE',
+                                          'Switzerland': 'CHE',
+                                          'Syrian Arab Republic': 'SYR',
+                                          'Tajikistan': 'TJK',
+                                          'Thailand': 'THA',
+                                          'Timor-Leste': 'TLS',
+                                          'Togo': 'TGO',
+                                          'Tonga': 'TON',
+                                          'Tunisia': 'TUN',
+                                          'Turkmenistan': 'TKM',
+                                          'Tuvalu': 'TUV',
+                                          'Uganda': 'UGA',
+                                          'Ukraine': 'UKR',
+                                          'United Kingdom': 'GBR',
+                                          'United States of America': 'USA',
+                                          'Uruguay': 'URY',
+                                          'Uzbekistan': 'UZB',
+                                          'Vanuatu': 'VUT',
+                                          'Vietnam': 'VNM',
+                                          'Zambia': 'ZMB',
+                                          'Zimbabwe': 'ZWE'}),
+                 "3-1": (TEXT_FORMAT, 'IRL'),
+                 "3-2": (TEXT_FORMAT, 'SDN'),
+                 "4": (TEXT_FORMAT_DICT, {'Afghanistan': 'Low income',
+                                          'Albania': 'Upper middle income',
+                                          'Algeria': 'Upper middle income',
+                                          'Andorra': 'High income',
+                                          'Angola': 'Upper middle income',
+                                          'Armenia': 'Lower middle income',
+                                          'Australia': 'High income',
+                                          'Austria': 'High income',
+                                          'Azerbaijan': 'Upper middle income',
+                                          'Bangladesh': 'Lower middle income',
+                                          'Belarus': 'Upper middle income',
+                                          'Belgium': 'High income',
+                                          'Belize': 'Upper middle income',
+                                          'Benin': 'Low income',
+                                          'Bermuda': 'High income',
+                                          'Bhutan': 'Lower middle income',
+                                          'Bosnia and Herzegovina': 'Upper middle income',
+                                          'Botswana': 'Upper middle income',
+                                          'Brazil': 'Upper middle income',
+                                          'Brunei Darussalam': 'High income',
+                                          'Bulgaria': 'Upper middle income',
+                                          'Burkina Faso': 'Low income',
+                                          'Burundi': 'Low income',
+                                          'Cabo Verde': 'Lower middle income',
+                                          'Cambodia': 'Lower middle income',
+                                          'Cameroon': 'Lower middle income',
+                                          'Canada': 'High income',
+                                          'Central African Republic': 'Low income',
+                                          'Chad': 'Low income',
+                                          'Chile': 'High income',
+                                          'China': 'Upper middle income',
+                                          'Colombia': 'Upper middle income',
+                                          'Costa Rica': 'Upper middle income',
+                                          "Côte d'Ivoire": 'Lower middle income',
+                                          'Cuba': 'Upper middle income',
+                                          'Cyprus': 'High income',
+                                          'Czech Republic': 'High income',
+                                          'Denmark': 'High income',
+                                          'Djibouti': 'Lower middle income',
+                                          'Dominican Republic': 'Upper middle income',
+                                          'Ecuador': 'Upper middle income',
+                                          'El Salvador': 'Lower middle income',
+                                          'Estonia': 'High income',
+                                          'Eswatini': 'Lower middle income',
+                                          'Ethiopia': 'Low income',
+                                          'Fiji': 'Upper middle income',
+                                          'Finland': 'High income',
+                                          'France': 'High income',
+                                          'Gabon': 'Upper middle income',
+                                          'Georgia': 'Upper middle income',
+                                          'Germany': 'High income',
+                                          'Ghana': 'Lower middle income',
+                                          'Gibraltar': 'High income',
+                                          'Greece': 'High income',
+                                          'Greenland': 'High income',
+                                          'Guatemala': 'Lower middle income',
+                                          'Guinea': 'Low income',
+                                          'Guinea-Bissau': 'Low income',
+                                          'Guyana': 'Upper middle income',
+                                          'Haiti': 'Low income',
+                                          'Honduras': 'Lower middle income',
+                                          'Hungary': 'High income',
+                                          'Iceland': 'High income',
+                                          'India': 'Lower middle income',
+                                          'Indonesia': 'Lower middle income',
+                                          'Iraq': 'Upper middle income',
+                                          'Ireland': 'High income',
+                                          'Israel': 'High income',
+                                          'Jamaica': 'Upper middle income',
+                                          'Jordan': 'Upper middle income',
+                                          'Kazakhstan': 'Upper middle income',
+                                          'Kenya': 'Lower middle income',
+                                          'Kiribati': 'Lower middle income',
+                                          'Latvia': 'High income',
+                                          'Lesotho': 'Lower middle income',
+                                          'Liberia': 'Low income',
+                                          'Lithuania': 'High income',
+                                          'Luxembourg': 'High income',
+                                          'Madagascar': 'Low income',
+                                          'Malawi': 'Low income',
+                                          'Malaysia': 'Upper middle income',
+                                          'Maldives': 'Upper middle income',
+                                          'Mali': 'Low income',
+                                          'Malta': 'High income',
+                                          'Marshall Islands': 'Upper middle income',
+                                          'Mauritania': 'Lower middle income',
+                                          'Mauritius': 'Upper middle income',
+                                          'Mexico': 'Upper middle income',
+                                          'Monaco': 'High income',
+                                          'Mongolia': 'Lower middle income',
+                                          'Montenegro': 'Upper middle income',
+                                          'Morocco': 'Lower middle income',
+                                          'Mozambique': 'Low income',
+                                          'Myanmar': 'Lower middle income',
+                                          'Namibia': 'Upper middle income',
+                                          'Nauru': 'High income',
+                                          'Nepal': 'Low income',
+                                          'Netherlands': 'High income',
+                                          'New Zealand': 'High income',
+                                          'Nicaragua': 'Lower middle income',
+                                          'Niger': 'Low income',
+                                          'Nigeria': 'Lower middle income',
+                                          'North Macedonia': 'Upper middle income',
+                                          'Norway': 'High income',
+                                          'Oman': 'High income',
+                                          'Pakistan': 'Lower middle income',
+                                          'Palau': 'Upper middle income',
+                                          'Panama': 'Upper middle income',
+                                          'Papua New Guinea': 'Lower middle income',
+                                          'Paraguay': 'Upper middle income',
+                                          'Peru': 'Upper middle income',
+                                          'Philippines': 'Lower middle income',
+                                          'Poland': 'High income',
+                                          'Portugal': 'High income',
+                                          'Romania': 'Upper middle income',
+                                          'Russian Federation': 'Upper middle income',
+                                          'Rwanda': 'Low income',
+                                          'Samoa': 'Lower middle income',
+                                          'Senegal': 'Low income',
+                                          'Serbia': 'Upper middle income',
+                                          'Sierra Leone': 'Low income',
+                                          'Singapore': 'High income',
+                                          'Solomon Islands': 'Lower middle income',
+                                          'Somalia': 'Low income',
+                                          'South Africa': 'Upper middle income',
+                                          'South Sudan': 'Low income',
+                                          'Spain': 'High income',
+                                          'Sri Lanka': 'Lower middle income',
+                                          'Sudan': 'Lower middle income',
+                                          'Suriname': 'Upper middle income',
+                                          'Sweden': 'High income',
+                                          'Switzerland': 'High income',
+                                          'Syrian Arab Republic': 'Lower middle income',
+                                          'Tajikistan': 'Lower middle income',
+                                          'Thailand': 'Upper middle income',
+                                          'Timor-Leste': 'Lower middle income',
+                                          'Togo': 'Low income',
+                                          'Tonga': 'Lower middle income',
+                                          'Tunisia': 'Lower middle income',
+                                          'Turkmenistan': 'Upper middle income',
+                                          'Tuvalu': 'Upper middle income',
+                                          'Uganda': 'Low income',
+                                          'Ukraine': 'Lower middle income',
+                                          'United Kingdom': 'High income',
+                                          'United States of America': 'High income',
+                                          'Uruguay': 'High income',
+                                          'Uzbekistan': 'Lower middle income',
+                                          'Vanuatu': 'Lower middle income',
+                                          'Vietnam': 'Lower middle income',
+                                          'Zambia': 'Lower middle income',
+                                          'Zimbabwe': 'Low income'}),
+                 "5": (TEXT_FORMAT_DICT, {'Afghanistan': 'Low income',
+                                          'Albania': 'Upper middle income',
+                                          'Algeria': 'Lower middle income',
+                                          'Andorra': 'High income',
+                                          'Angola': 'Lower middle income',
+                                          'Armenia': 'Upper middle income',
+                                          'Australia': 'High income',
+                                          'Austria': 'High income',
+                                          'Azerbaijan': 'Upper middle income',
+                                          'Bangladesh': 'Lower middle income',
+                                          'Belarus': 'Upper middle income',
+                                          'Belgium': 'High income',
+                                          'Belize': 'Lower middle income',
+                                          'Benin': 'Lower middle income',
+                                          'Bermuda': 'High income',
+                                          'Bhutan': 'Lower middle income',
+                                          'Bosnia and Herzegovina': 'Upper middle income',
+                                          'Botswana': 'Upper middle income',
+                                          'Brazil': 'Upper middle income',
+                                          'Brunei Darussalam': 'High income',
+                                          'Bulgaria': 'Upper middle income',
+                                          'Burkina Faso': 'Low income',
+                                          'Burundi': 'Low income',
+                                          'Cabo Verde': 'Lower middle income',
+                                          'Cambodia': 'Lower middle income',
+                                          'Cameroon': 'Lower middle income',
+                                          'Canada': 'High income',
+                                          'Central African Republic': 'Low income',
+                                          'Chad': 'Low income',
+                                          'Chile': 'High income',
+                                          'China': 'Upper middle income',
+                                          'Colombia': 'Upper middle income',
+                                          'Costa Rica': 'Upper middle income',
+                                          "Côte d'Ivoire": 'Lower middle income',
+                                          'Cuba': 'Upper middle income',
+                                          'Cyprus': 'High income',
+                                          'Czech Republic': 'High income',
+                                          'Denmark': 'High income',
+                                          'Djibouti': 'Lower middle income',
+                                          'Dominican Republic': 'Upper middle income',
+                                          'Ecuador': 'Upper middle income',
+                                          'El Salvador': 'Lower middle income',
+                                          'Estonia': 'High income',
+                                          'Eswatini': 'Lower middle income',
+                                          'Ethiopia': 'Low income',
+                                          'Fiji': 'Upper middle income',
+                                          'Finland': 'High income',
+                                          'France': 'High income',
+                                          'Gabon': 'Upper middle income',
+                                          'Georgia': 'Upper middle income',
+                                          'Germany': 'High income',
+                                          'Ghana': 'Lower middle income',
+                                          'Gibraltar': 'High income',
+                                          'Greece': 'High income',
+                                          'Greenland': 'High income',
+                                          'Guatemala': 'Upper middle income',
+                                          'Guinea': 'Low income',
+                                          'Guinea-Bissau': 'Low income',
+                                          'Guyana': 'Upper middle income',
+                                          'Haiti': 'Lower middle income',
+                                          'Honduras': 'Lower middle income',
+                                          'Hungary': 'High income',
+                                          'Iceland': 'High income',
+                                          'India': 'Lower middle income',
+                                          'Indonesia': 'Lower middle income',
+                                          'Iraq': 'Upper middle income',
+                                          'Ireland': 'High income',
+                                          'Israel': 'High income',
+                                          'Jamaica': 'Upper middle income',
+                                          'Jordan': 'Upper middle income',
+                                          'Kazakhstan': 'Upper middle income',
+                                          'Kenya': 'Lower middle income',
+                                          'Kiribati': 'Lower middle income',
+                                          'Latvia': 'High income',
+                                          'Lesotho': 'Lower middle income',
+                                          'Liberia': 'Low income',
+                                          'Lithuania': 'High income',
+                                          'Luxembourg': 'High income',
+                                          'Madagascar': 'Low income',
+                                          'Malawi': 'Low income',
+                                          'Malaysia': 'Upper middle income',
+                                          'Maldives': 'Upper middle income',
+                                          'Mali': 'Low income',
+                                          'Malta': 'High income',
+                                          'Marshall Islands': 'Upper middle income',
+                                          'Mauritania': 'Lower middle income',
+                                          'Mauritius': 'Upper middle income',
+                                          'Mexico': 'Upper middle income',
+                                          'Monaco': 'High income',
+                                          'Mongolia': 'Lower middle income',
+                                          'Montenegro': 'Upper middle income',
+                                          'Morocco': 'Lower middle income',
+                                          'Mozambique': 'Low income',
+                                          'Myanmar': 'Lower middle income',
+                                          'Namibia': 'Upper middle income',
+                                          'Nauru': 'High income',
+                                          'Nepal': 'Lower middle income',
+                                          'Netherlands': 'High income',
+                                          'New Zealand': 'High income',
+                                          'Nicaragua': 'Lower middle income',
+                                          'Niger': 'Low income',
+                                          'Nigeria': 'Lower middle income',
+                                          'North Macedonia': 'Upper middle income',
+                                          'Norway': 'High income',
+                                          'Oman': 'High income',
+                                          'Pakistan': 'Lower middle income',
+                                          'Palau': 'High income',
+                                          'Panama': 'Upper middle income',
+                                          'Papua New Guinea': 'Lower middle income',
+                                          'Paraguay': 'Upper middle income',
+                                          'Peru': 'Upper middle income',
+                                          'Philippines': 'Lower middle income',
+                                          'Poland': 'High income',
+                                          'Portugal': 'High income',
+                                          'Romania': 'Upper middle income',
+                                          'Russian Federation': 'Upper middle income',
+                                          'Rwanda': 'Low income',
+                                          'Samoa': 'Lower middle income',
+                                          'Senegal': 'Lower middle income',
+                                          'Serbia': 'Upper middle income',
+                                          'Sierra Leone': 'Low income',
+                                          'Singapore': 'High income',
+                                          'Solomon Islands': 'Lower middle income',
+                                          'Somalia': 'Low income',
+                                          'South Africa': 'Upper middle income',
+                                          'South Sudan': 'Low income',
+                                          'Spain': 'High income',
+                                          'Sri Lanka': 'Lower middle income',
+                                          'Sudan': 'Low income',
+                                          'Suriname': 'Upper middle income',
+                                          'Sweden': 'High income',
+                                          'Switzerland': 'High income',
+                                          'Syrian Arab Republic': 'Low income',
+                                          'Tajikistan': 'Lower middle income',
+                                          'Thailand': 'Upper middle income',
+                                          'Timor-Leste': 'Lower middle income',
+                                          'Togo': 'Low income',
+                                          'Tonga': 'Upper middle income',
+                                          'Tunisia': 'Lower middle income',
+                                          'Turkmenistan': 'Upper middle income',
+                                          'Tuvalu': 'Upper middle income',
+                                          'Uganda': 'Low income',
+                                          'Ukraine': 'Lower middle income',
+                                          'United Kingdom': 'High income',
+                                          'United States of America': 'High income',
+                                          'Uruguay': 'High income',
+                                          'Uzbekistan': 'Lower middle income',
+                                          'Vanuatu': 'Lower middle income',
+                                          'Vietnam': 'Lower middle income',
+                                          'Zambia': 'Lower middle income',
+                                          'Zimbabwe': 'Lower middle income'}),
+                 "6-1": (TEXT_FORMAT, 'Low income'),
+                 "6-2": (TEXT_FORMAT, 'Lower middle income'),
+                 "7": (TEXT_FORMAT_UNORDERED_LIST, ['Albania',
+                                         'Andorra',
+                                         'Bermuda',
+                                         'Bosnia and Herzegovina',
+                                         'Bulgaria',
+                                         'Georgia',
+                                         'Greece',
+                                         'Hungary',
+                                         'Latvia',
+                                         'Lithuania',
+                                         'Poland',
+                                         'Portugal',
+                                         'Romania',
+                                         'Serbia',
+                                         'Syrian Arab Republic',
+                                         'Ukraine']),
+                 "8": (TEXT_FORMAT_UNORDERED_LIST, ['Afghanistan',
+                                         'Albania',
+                                         'Algeria',
+                                         'Angola',
+                                         'Austria',
+                                         'Azerbaijan',
+                                         'Bangladesh',
+                                         'Belarus',
+                                         'Belize',
+                                         'Benin',
+                                         'Bhutan',
+                                         'Bosnia and Herzegovina',
+                                         'Botswana',
+                                         'Brazil',
+                                         'Brunei Darussalam',
+                                         'Bulgaria',
+                                         'Burkina Faso',
+                                         'Burundi',
+                                         'Cabo Verde',
+                                         'Cambodia',
+                                         'Cameroon',
+                                         'Canada',
+                                         'Central African Republic',
+                                         'Chad',
+                                         'Chile',
+                                         'China',
+                                         'Colombia',
+                                         'Costa Rica',
+                                         "Côte d'Ivoire",
+                                         'Czech Republic',
+                                         'Djibouti',
+                                         'Dominican Republic',
+                                         'Ecuador',
+                                         'El Salvador',
+                                         'Estonia',
+                                         'Eswatini',
+                                         'Ethiopia',
+                                         'Fiji',
+                                         'Finland',
+                                         'France',
+                                         'Gabon',
+                                         'Georgia',
+                                         'Ghana',
+                                         'Greece',
+                                         'Greenland',
+                                         'Guatemala',
+                                         'Guinea',
+                                         'Guinea-Bissau',
+                                         'Guyana',
+                                         'Haiti',
+                                         'Honduras',
+                                         'Hungary',
+                                         'India',
+                                         'Indonesia',
+                                         'Iraq',
+                                         'Ireland',
+                                         'Israel',
+                                         'Jamaica',
+                                         'Jordan',
+                                         'Kazakhstan',
+                                         'Kenya',
+                                         'Kiribati',
+                                         'Lesotho',
+                                         'Liberia',
+                                         'Lithuania',
+                                         'Luxembourg',
+                                         'Madagascar',
+                                         'Malawi',
+                                         'Malaysia',
+                                         'Maldives',
+                                         'Mali',
+                                         'Malta',
+                                         'Marshall Islands',
+                                         'Mauritania',
+                                         'Mexico',
+                                         'Mongolia',
+                                         'Montenegro',
+                                         'Morocco',
+                                         'Mozambique',
+                                         'Myanmar',
+                                         'Namibia',
+                                         'Nepal',
+                                         'Netherlands',
+                                         'New Zealand',
+                                         'Nicaragua',
+                                         'Niger',
+                                         'Nigeria',
+                                         'North Macedonia',
+                                         'Norway',
+                                         'Oman',
+                                         'Pakistan',
+                                         'Palau',
+                                         'Panama',
+                                         'Paraguay',
+                                         'Peru',
+                                         'Philippines',
+                                         'Portugal',
+                                         'Russian Federation',
+                                         'Senegal',
+                                         'Sierra Leone',
+                                         'Solomon Islands',
+                                         'Somalia',
+                                         'South Africa',
+                                         'South Sudan',
+                                         'Spain',
+                                         'Sri Lanka',
+                                         'Sudan',
+                                         'Sweden',
+                                         'Syrian Arab Republic',
+                                         'Tajikistan',
+                                         'Thailand',
+                                         'Timor-Leste',
+                                         'Togo',
+                                         'Tunisia',
+                                         'Turkmenistan',
+                                         'Tuvalu',
+                                         'Uganda',
+                                         'United Kingdom',
+                                         'United States of America',
+                                         'Uruguay',
+                                         'Vanuatu',
+                                         'Vietnam',
+                                         'Zambia']),
+                 "9": (TEXT_FORMAT_DICT, {'Afghanistan': {2015: 'Low income', 2020: 'Low income'},
+                                          'Albania': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Algeria': {2015: 'Upper middle income', 2020: 'Lower middle income'},
+                                          'Andorra': {2015: 'High income', 2020: 'High income'},
+                                          'Angola': {2015: 'Upper middle income', 2020: 'Lower middle income'},
+                                          'Armenia': {2015: 'Lower middle income', 2020: 'Upper middle income'},
+                                          'Australia': {2015: 'High income', 2020: 'High income'},
+                                          'Austria': {2015: 'High income', 2020: 'High income'},
+                                          'Azerbaijan': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Bangladesh': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Belarus': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Belgium': {2015: 'High income', 2020: 'High income'},
+                                          'Belize': {2015: 'Upper middle income', 2020: 'Lower middle income'},
+                                          'Benin': {2015: 'Low income', 2020: 'Lower middle income'},
+                                          'Bermuda': {2015: 'High income', 2020: 'High income'},
+                                          'Bhutan': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Bosnia and Herzegovina': {2015: 'Upper middle income',
+                                                                     2020: 'Upper middle income'},
+                                          'Botswana': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Brazil': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Brunei Darussalam': {2015: 'High income', 2020: 'High income'},
+                                          'Bulgaria': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Burkina Faso': {2015: 'Low income', 2020: 'Low income'},
+                                          'Burundi': {2015: 'Low income', 2020: 'Low income'},
+                                          'Cabo Verde': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Cambodia': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Cameroon': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Canada': {2015: 'High income', 2020: 'High income'},
+                                          'Central African Republic': {2015: 'Low income', 2020: 'Low income'},
+                                          'Chad': {2015: 'Low income', 2020: 'Low income'},
+                                          'Chile': {2015: 'High income', 2020: 'High income'},
+                                          'China': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Colombia': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Costa Rica': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          "Côte d'Ivoire": {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Cuba': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Cyprus': {2015: 'High income', 2020: 'High income'},
+                                          'Czech Republic': {2015: 'High income', 2020: 'High income'},
+                                          'Denmark': {2015: 'High income', 2020: 'High income'},
+                                          'Djibouti': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Dominican Republic': {2015: 'Upper middle income',
+                                                                 2020: 'Upper middle income'},
+                                          'Ecuador': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'El Salvador': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Estonia': {2015: 'High income', 2020: 'High income'},
+                                          'Eswatini': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Ethiopia': {2015: 'Low income', 2020: 'Low income'},
+                                          'Fiji': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Finland': {2015: 'High income', 2020: 'High income'},
+                                          'France': {2015: 'High income', 2020: 'High income'},
+                                          'Gabon': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Georgia': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Germany': {2015: 'High income', 2020: 'High income'},
+                                          'Ghana': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Gibraltar': {2015: 'High income', 2020: 'High income'},
+                                          'Greece': {2015: 'High income', 2020: 'High income'},
+                                          'Greenland': {2015: 'High income', 2020: 'High income'},
+                                          'Guatemala': {2015: 'Lower middle income', 2020: 'Upper middle income'},
+                                          'Guinea': {2015: 'Low income', 2020: 'Low income'},
+                                          'Guinea-Bissau': {2015: 'Low income', 2020: 'Low income'},
+                                          'Guyana': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Haiti': {2015: 'Low income', 2020: 'Lower middle income'},
+                                          'Honduras': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Hungary': {2015: 'High income', 2020: 'High income'},
+                                          'Iceland': {2015: 'High income', 2020: 'High income'},
+                                          'India': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Indonesia': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Iraq': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Ireland': {2015: 'High income', 2020: 'High income'},
+                                          'Israel': {2015: 'High income', 2020: 'High income'},
+                                          'Jamaica': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Jordan': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Kazakhstan': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Kenya': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Kiribati': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Latvia': {2015: 'High income', 2020: 'High income'},
+                                          'Lesotho': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Liberia': {2015: 'Low income', 2020: 'Low income'},
+                                          'Lithuania': {2015: 'High income', 2020: 'High income'},
+                                          'Luxembourg': {2015: 'High income', 2020: 'High income'},
+                                          'Madagascar': {2015: 'Low income', 2020: 'Low income'},
+                                          'Malawi': {2015: 'Low income', 2020: 'Low income'},
+                                          'Malaysia': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Maldives': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Mali': {2015: 'Low income', 2020: 'Low income'},
+                                          'Malta': {2015: 'High income', 2020: 'High income'},
+                                          'Marshall Islands': {2015: 'Upper middle income',
+                                                               2020: 'Upper middle income'},
+                                          'Mauritania': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Mauritius': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Mexico': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Monaco': {2015: 'High income', 2020: 'High income'},
+                                          'Mongolia': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Montenegro': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Morocco': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Mozambique': {2015: 'Low income', 2020: 'Low income'},
+                                          'Myanmar': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Namibia': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Nauru': {2015: 'High income', 2020: 'High income'},
+                                          'Nepal': {2015: 'Low income', 2020: 'Lower middle income'},
+                                          'Netherlands': {2015: 'High income', 2020: 'High income'},
+                                          'New Zealand': {2015: 'High income', 2020: 'High income'},
+                                          'Nicaragua': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Niger': {2015: 'Low income', 2020: 'Low income'},
+                                          'Nigeria': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'North Macedonia': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Norway': {2015: 'High income', 2020: 'High income'},
+                                          'Oman': {2015: 'High income', 2020: 'High income'},
+                                          'Pakistan': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Palau': {2015: 'Upper middle income', 2020: 'High income'},
+                                          'Panama': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Papua New Guinea': {2015: 'Lower middle income',
+                                                               2020: 'Lower middle income'},
+                                          'Paraguay': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Peru': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Philippines': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Poland': {2015: 'High income', 2020: 'High income'},
+                                          'Portugal': {2015: 'High income', 2020: 'High income'},
+                                          'Romania': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Russian Federation': {2015: 'Upper middle income',
+                                                                 2020: 'Upper middle income'},
+                                          'Rwanda': {2015: 'Low income', 2020: 'Low income'},
+                                          'Samoa': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Senegal': {2015: 'Low income', 2020: 'Lower middle income'},
+                                          'Serbia': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Sierra Leone': {2015: 'Low income', 2020: 'Low income'},
+                                          'Singapore': {2015: 'High income', 2020: 'High income'},
+                                          'Solomon Islands': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Somalia': {2015: 'Low income', 2020: 'Low income'},
+                                          'South Africa': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'South Sudan': {2015: 'Low income', 2020: 'Low income'},
+                                          'Spain': {2015: 'High income', 2020: 'High income'},
+                                          'Sri Lanka': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Sudan': {2015: 'Lower middle income', 2020: 'Low income'},
+                                          'Suriname': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Sweden': {2015: 'High income', 2020: 'High income'},
+                                          'Switzerland': {2015: 'High income', 2020: 'High income'},
+                                          'Syrian Arab Republic': {2015: 'Lower middle income', 2020: 'Low income'},
+                                          'Tajikistan': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Thailand': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Timor-Leste': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Togo': {2015: 'Low income', 2020: 'Low income'},
+                                          'Tonga': {2015: 'Lower middle income', 2020: 'Upper middle income'},
+                                          'Tunisia': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Turkmenistan': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Tuvalu': {2015: 'Upper middle income', 2020: 'Upper middle income'},
+                                          'Uganda': {2015: 'Low income', 2020: 'Low income'},
+                                          'Ukraine': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'United Kingdom': {2015: 'High income', 2020: 'High income'},
+                                          'United States of America': {2015: 'High income', 2020: 'High income'},
+                                          'Uruguay': {2015: 'High income', 2020: 'High income'},
+                                          'Uzbekistan': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Vanuatu': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Vietnam': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Zambia': {2015: 'Lower middle income', 2020: 'Lower middle income'},
+                                          'Zimbabwe': {2015: 'Low income', 2020: 'Lower middle income'}}),
+                 "10-1": (TEXT_FORMAT, 'Upper middle income'),
+                 "10-2": (TEXT_FORMAT, 'High income'),
+                 "11": (TEXT_FORMAT_DICT, {'Afghanistan': False,
+                                           'Albania': False,
+                                           'Algeria': True,
+                                           'Andorra': False,
+                                           'Angola': True,
+                                           'Armenia': True,
+                                           'Australia': False,
+                                           'Austria': False,
+                                           'Azerbaijan': False,
+                                           'Bangladesh': False,
+                                           'Belarus': False,
+                                           'Belgium': False,
+                                           'Belize': True,
+                                           'Benin': True,
+                                           'Bermuda': False,
+                                           'Bhutan': False,
+                                           'Bosnia and Herzegovina': False,
+                                           'Botswana': False,
+                                           'Brazil': False,
+                                           'Brunei Darussalam': False,
+                                           'Bulgaria': False,
+                                           'Burkina Faso': False,
+                                           'Burundi': False,
+                                           'Cabo Verde': False,
+                                           'Cambodia': False,
+                                           'Cameroon': False,
+                                           'Canada': False,
+                                           'Central African Republic': False,
+                                           'Chad': False,
+                                           'Chile': False,
+                                           'China': False,
+                                           'Colombia': False,
+                                           'Costa Rica': False,
+                                           "Côte d'Ivoire": False,
+                                           'Cuba': False,
+                                           'Cyprus': False,
+                                           'Czech Republic': False,
+                                           'Denmark': False,
+                                           'Djibouti': False,
+                                           'Dominican Republic': False,
+                                           'Ecuador': False,
+                                           'El Salvador': False,
+                                           'Estonia': False,
+                                           'Eswatini': False,
+                                           'Ethiopia': False,
+                                           'Fiji': False,
+                                           'Finland': False,
+                                           'France': False,
+                                           'Gabon': False,
+                                           'Georgia': False,
+                                           'Germany': False,
+                                           'Ghana': False,
+                                           'Gibraltar': False,
+                                           'Greece': False,
+                                           'Greenland': False,
+                                           'Guatemala': True,
+                                           'Guinea': False,
+                                           'Guinea-Bissau': False,
+                                           'Guyana': False,
+                                           'Haiti': True,
+                                           'Honduras': False,
+                                           'Hungary': False,
+                                           'Iceland': False,
+                                           'India': False,
+                                           'Indonesia': False,
+                                           'Iraq': False,
+                                           'Ireland': False,
+                                           'Israel': False,
+                                           'Jamaica': False,
+                                           'Jordan': False,
+                                           'Kazakhstan': False,
+                                           'Kenya': False,
+                                           'Kiribati': False,
+                                           'Latvia': False,
+                                           'Lesotho': False,
+                                           'Liberia': False,
+                                           'Lithuania': False,
+                                           'Luxembourg': False,
+                                           'Madagascar': False,
+                                           'Malawi': False,
+                                           'Malaysia': False,
+                                           'Maldives': False,
+                                           'Mali': False,
+                                           'Malta': False,
+                                           'Marshall Islands': False,
+                                           'Mauritania': False,
+                                           'Mauritius': False,
+                                           'Mexico': False,
+                                           'Monaco': False,
+                                           'Mongolia': False,
+                                           'Montenegro': False,
+                                           'Morocco': False,
+                                           'Mozambique': False,
+                                           'Myanmar': False,
+                                           'Namibia': False,
+                                           'Nauru': False,
+                                           'Nepal': True,
+                                           'Netherlands': False,
+                                           'New Zealand': False,
+                                           'Nicaragua': False,
+                                           'Niger': False,
+                                           'Nigeria': False,
+                                           'North Macedonia': False,
+                                           'Norway': False,
+                                           'Oman': False,
+                                           'Pakistan': False,
+                                           'Palau': True,
+                                           'Panama': False,
+                                           'Papua New Guinea': False,
+                                           'Paraguay': False,
+                                           'Peru': False,
+                                           'Philippines': False,
+                                           'Poland': False,
+                                           'Portugal': False,
+                                           'Romania': False,
+                                           'Russian Federation': False,
+                                           'Rwanda': False,
+                                           'Samoa': False,
+                                           'Senegal': True,
+                                           'Serbia': False,
+                                           'Sierra Leone': False,
+                                           'Singapore': False,
+                                           'Solomon Islands': False,
+                                           'Somalia': False,
+                                           'South Africa': False,
+                                           'South Sudan': False,
+                                           'Spain': False,
+                                           'Sri Lanka': False,
+                                           'Sudan': True,
+                                           'Suriname': False,
+                                           'Sweden': False,
+                                           'Switzerland': False,
+                                           'Syrian Arab Republic': True,
+                                           'Tajikistan': False,
+                                           'Thailand': False,
+                                           'Timor-Leste': False,
+                                           'Togo': False,
+                                           'Tonga': True,
+                                           'Tunisia': False,
+                                           'Turkmenistan': False,
+                                           'Tuvalu': False,
+                                           'Uganda': False,
+                                           'Ukraine': False,
+                                           'United Kingdom': False,
+                                           'United States of America': False,
+                                           'Uruguay': False,
+                                           'Uzbekistan': False,
+                                           'Vanuatu': False,
+                                           'Vietnam': False,
+                                           'Zambia': False,
+                                           'Zimbabwe': True}),
+                 "12": (TEXT_FORMAT_DICT, {'Low income': ['Afghanistan',
+                                                          'Benin',
+                                                          'Burkina Faso',
+                                                          'Burundi',
+                                                          'Central African Republic',
+                                                          'Chad',
+                                                          'Ethiopia',
+                                                          'Guinea',
+                                                          'Guinea-Bissau',
+                                                          'Haiti',
+                                                          'Liberia',
+                                                          'Madagascar',
+                                                          'Malawi',
+                                                          'Mali',
+                                                          'Mozambique',
+                                                          'Nepal',
+                                                          'Niger',
+                                                          'Rwanda',
+                                                          'Senegal',
+                                                          'Sierra Leone',
+                                                          'Somalia',
+                                                          'South Sudan',
+                                                          'Togo',
+                                                          'Uganda',
+                                                          'Zimbabwe'],
+                                           'Upper middle income': ['Albania',
+                                                                   'Algeria',
+                                                                   'Angola',
+                                                                   'Azerbaijan',
+                                                                   'Belarus',
+                                                                   'Belize',
+                                                                   'Bosnia and Herzegovina',
+                                                                   'Botswana',
+                                                                   'Brazil',
+                                                                   'Bulgaria',
+                                                                   'China',
+                                                                   'Colombia',
+                                                                   'Costa Rica',
+                                                                   'Cuba',
+                                                                   'Dominican Republic',
+                                                                   'Ecuador',
+                                                                   'Fiji',
+                                                                   'Gabon',
+                                                                   'Georgia',
+                                                                   'Guyana',
+                                                                   'Iraq',
+                                                                   'Jamaica',
+                                                                   'Jordan',
+                                                                   'Kazakhstan',
+                                                                   'Malaysia',
+                                                                   'Maldives',
+                                                                   'Marshall Islands',
+                                                                   'Mauritius',
+                                                                   'Mexico',
+                                                                   'Montenegro',
+                                                                   'Namibia',
+                                                                   'North Macedonia',
+                                                                   'Palau',
+                                                                   'Panama',
+                                                                   'Paraguay',
+                                                                   'Peru',
+                                                                   'Romania',
+                                                                   'Russian Federation',
+                                                                   'Serbia',
+                                                                   'South Africa',
+                                                                   'Suriname',
+                                                                   'Thailand',
+                                                                   'Turkmenistan',
+                                                                   'Tuvalu'],
+                                           'High income': ['Andorra',
+                                                           'Australia',
+                                                           'Austria',
+                                                           'Belgium',
+                                                           'Bermuda',
+                                                           'Brunei Darussalam',
+                                                           'Canada',
+                                                           'Chile',
+                                                           'Cyprus',
+                                                           'Czech Republic',
+                                                           'Denmark',
+                                                           'Estonia',
+                                                           'Finland',
+                                                           'France',
+                                                           'Germany',
+                                                           'Gibraltar',
+                                                           'Greece',
+                                                           'Greenland',
+                                                           'Hungary',
+                                                           'Iceland',
+                                                           'Ireland',
+                                                           'Israel',
+                                                           'Latvia',
+                                                           'Lithuania',
+                                                           'Luxembourg',
+                                                           'Malta',
+                                                           'Monaco',
+                                                           'Nauru',
+                                                           'Netherlands',
+                                                           'New Zealand',
+                                                           'Norway',
+                                                           'Oman',
+                                                           'Poland',
+                                                           'Portugal',
+                                                           'Singapore',
+                                                           'Spain',
+                                                           'Sweden',
+                                                           'Switzerland',
+                                                           'United Kingdom',
+                                                           'United States of America',
+                                                           'Uruguay'],
+                                           'Lower middle income': ['Armenia',
+                                                                   'Bangladesh',
+                                                                   'Bhutan',
+                                                                   'Cabo Verde',
+                                                                   'Cambodia',
+                                                                   'Cameroon',
+                                                                   "Côte d'Ivoire",
+                                                                   'Djibouti',
+                                                                   'El Salvador',
+                                                                   'Eswatini',
+                                                                   'Ghana',
+                                                                   'Guatemala',
+                                                                   'Honduras',
+                                                                   'India',
+                                                                   'Indonesia',
+                                                                   'Kenya',
+                                                                   'Kiribati',
+                                                                   'Lesotho',
+                                                                   'Mauritania',
+                                                                   'Mongolia',
+                                                                   'Morocco',
+                                                                   'Myanmar',
+                                                                   'Nicaragua',
+                                                                   'Nigeria',
+                                                                   'Pakistan',
+                                                                   'Papua New Guinea',
+                                                                   'Philippines',
+                                                                   'Samoa',
+                                                                   'Solomon Islands',
+                                                                   'Sri Lanka',
+                                                                   'Sudan',
+                                                                   'Syrian Arab Republic',
+                                                                   'Tajikistan',
+                                                                   'Timor-Leste',
+                                                                   'Tonga',
+                                                                   'Tunisia',
+                                                                   'Ukraine',
+                                                                   'Uzbekistan',
+                                                                   'Vanuatu',
+                                                                   'Vietnam',
+                                                                   'Zambia']}),
+                 "13": (TEXT_FORMAT_DICT, {'Low income': ['Afghanistan',
+                                                          'Burkina Faso',
+                                                          'Burundi',
+                                                          'Central African Republic',
+                                                          'Chad',
+                                                          'Ethiopia',
+                                                          'Guinea',
+                                                          'Guinea-Bissau',
+                                                          'Liberia',
+                                                          'Madagascar',
+                                                          'Malawi',
+                                                          'Mali',
+                                                          'Mozambique',
+                                                          'Niger',
+                                                          'Rwanda',
+                                                          'Sierra Leone',
+                                                          'Somalia',
+                                                          'South Sudan',
+                                                          'Sudan',
+                                                          'Syrian Arab Republic',
+                                                          'Togo',
+                                                          'Uganda'],
+                                           'Upper middle income': ['Albania',
+                                                                   'Armenia',
+                                                                   'Azerbaijan',
+                                                                   'Belarus',
+                                                                   'Bosnia and Herzegovina',
+                                                                   'Botswana',
+                                                                   'Brazil',
+                                                                   'Bulgaria',
+                                                                   'China',
+                                                                   'Colombia',
+                                                                   'Costa Rica',
+                                                                   'Cuba',
+                                                                   'Dominican Republic',
+                                                                   'Ecuador',
+                                                                   'Fiji',
+                                                                   'Gabon',
+                                                                   'Georgia',
+                                                                   'Guatemala',
+                                                                   'Guyana',
+                                                                   'Iraq',
+                                                                   'Jamaica',
+                                                                   'Jordan',
+                                                                   'Kazakhstan',
+                                                                   'Malaysia',
+                                                                   'Maldives',
+                                                                   'Marshall Islands',
+                                                                   'Mauritius',
+                                                                   'Mexico',
+                                                                   'Montenegro',
+                                                                   'Namibia',
+                                                                   'North Macedonia',
+                                                                   'Panama',
+                                                                   'Paraguay',
+                                                                   'Peru',
+                                                                   'Romania',
+                                                                   'Russian Federation',
+                                                                   'Serbia',
+                                                                   'South Africa',
+                                                                   'Suriname',
+                                                                   'Thailand',
+                                                                   'Tonga',
+                                                                   'Turkmenistan',
+                                                                   'Tuvalu'],
+                                           'Lower middle income': ['Algeria',
+                                                                   'Angola',
+                                                                   'Bangladesh',
+                                                                   'Belize',
+                                                                   'Benin',
+                                                                   'Bhutan',
+                                                                   'Cabo Verde',
+                                                                   'Cambodia',
+                                                                   'Cameroon',
+                                                                   "Côte d'Ivoire",
+                                                                   'Djibouti',
+                                                                   'El Salvador',
+                                                                   'Eswatini',
+                                                                   'Ghana',
+                                                                   'Haiti',
+                                                                   'Honduras',
+                                                                   'India',
+                                                                   'Indonesia',
+                                                                   'Kenya',
+                                                                   'Kiribati',
+                                                                   'Lesotho',
+                                                                   'Mauritania',
+                                                                   'Mongolia',
+                                                                   'Morocco',
+                                                                   'Myanmar',
+                                                                   'Nepal',
+                                                                   'Nicaragua',
+                                                                   'Nigeria',
+                                                                   'Pakistan',
+                                                                   'Papua New Guinea',
+                                                                   'Philippines',
+                                                                   'Samoa',
+                                                                   'Senegal',
+                                                                   'Solomon Islands',
+                                                                   'Sri Lanka',
+                                                                   'Tajikistan',
+                                                                   'Timor-Leste',
+                                                                   'Tunisia',
+                                                                   'Ukraine',
+                                                                   'Uzbekistan',
+                                                                   'Vanuatu',
+                                                                   'Vietnam',
+                                                                   'Zambia',
+                                                                   'Zimbabwe'],
+                                           'High income': ['Andorra',
+                                                           'Australia',
+                                                           'Austria',
+                                                           'Belgium',
+                                                           'Bermuda',
+                                                           'Brunei Darussalam',
+                                                           'Canada',
+                                                           'Chile',
+                                                           'Cyprus',
+                                                           'Czech Republic',
+                                                           'Denmark',
+                                                           'Estonia',
+                                                           'Finland',
+                                                           'France',
+                                                           'Germany',
+                                                           'Gibraltar',
+                                                           'Greece',
+                                                           'Greenland',
+                                                           'Hungary',
+                                                           'Iceland',
+                                                           'Ireland',
+                                                           'Israel',
+                                                           'Latvia',
+                                                           'Lithuania',
+                                                           'Luxembourg',
+                                                           'Malta',
+                                                           'Monaco',
+                                                           'Nauru',
+                                                           'Netherlands',
+                                                           'New Zealand',
+                                                           'Norway',
+                                                           'Oman',
+                                                           'Palau',
+                                                           'Poland',
+                                                           'Portugal',
+                                                           'Singapore',
+                                                           'Spain',
+                                                           'Sweden',
+                                                           'Switzerland',
+                                                           'United Kingdom',
+                                                           'United States of America',
+                                                           'Uruguay']}),
+                 "14-1": (TEXT_FORMAT_DICT, {'Low income': 25,
+                                           'Upper middle income': 44,
+                                           'High income': 41,
+                                           'Lower middle income': 41}),
+                 "14-2": (TEXT_FORMAT_DICT, {'Low income': 22,
+                                           'Upper middle income': 43,
+                                           'Lower middle income': 44,
+                                           'High income': 42}),
+                 "15-1": (TEXT_FORMAT_DICT, {'Afghanistan': 38928000,
+                                             'Albania': 2878000,
+                                             'Algeria': 43851000,
+                                             'Andorra': 77000,
+                                             'Angola': 32866000,
+                                             'Armenia': 2963000,
+                                             'Australia': 25500000,
+                                             'Austria': 9006000,
+                                             'Azerbaijan': 10139000,
+                                             'Bangladesh': 164689000,
+                                             'Belarus': 9449000,
+                                             'Belgium': 11590000,
+                                             'Belize': 398000,
+                                             'Benin': 12123000,
+                                             'Bermuda': 62000,
+                                             'Bhutan': 772000,
+                                             'Bosnia and Herzegovina': 3281000,
+                                             'Botswana': 2352000,
+                                             'Brazil': 212559000,
+                                             'Brunei Darussalam': 437000,
+                                             'Bulgaria': 6948000,
+                                             'Burkina Faso': 20903000,
+                                             'Burundi': 11891000,
+                                             'Cabo Verde': 556000,
+                                             'Cambodia': 16719000,
+                                             'Cameroon': 26546000,
+                                             'Canada': 37742000,
+                                             'Central African Republic': 4830000,
+                                             'Chad': 16426000,
+                                             'Chile': 19116000,
+                                             'China': 1463141000,
+                                             'Colombia': 50883000,
+                                             'Costa Rica': 5094000,
+                                             "Côte d'Ivoire": 26378000,
+                                             'Cuba': 11327000,
+                                             'Cyprus': 1207000,
+                                             'Czech Republic': 10709000,
+                                             'Denmark': 5792000,
+                                             'Djibouti': 988000,
+                                             'Dominican Republic': 10848000,
+                                             'Ecuador': 17643000,
+                                             'El Salvador': 6486000,
+                                             'Estonia': 1327000,
+                                             'Eswatini': 1160000,
+                                             'Ethiopia': 114964000,
+                                             'Fiji': 896000,
+                                             'Finland': 5541000,
+                                             'France': 65274000,
+                                             'Gabon': 2226000,
+                                             'Georgia': 3989000,
+                                             'Germany': 83784000,
+                                             'Ghana': 31073000,
+                                             'Gibraltar': 34000,
+                                             'Greece': 10423000,
+                                             'Greenland': 57000,
+                                             'Guatemala': 17916000,
+                                             'Guinea': 13133000,
+                                             'Guinea-Bissau': 1968000,
+                                             'Guyana': 787000,
+                                             'Haiti': 11403000,
+                                             'Honduras': 9905000,
+                                             'Hungary': 9660000,
+                                             'Iceland': 341000,
+                                             'India': 1380004000,
+                                             'Indonesia': 273524000,
+                                             'Iraq': 40223000,
+                                             'Ireland': 4938000,
+                                             'Israel': 8656000,
+                                             'Jamaica': 2961000,
+                                             'Jordan': 10203000,
+                                             'Kazakhstan': 18777000,
+                                             'Kenya': 53771000,
+                                             'Kiribati': 119000,
+                                             'Latvia': 1886000,
+                                             'Lesotho': 2142000,
+                                             'Liberia': 5058000,
+                                             'Lithuania': 2722000,
+                                             'Luxembourg': 626000,
+                                             'Madagascar': 27691000,
+                                             'Malawi': 19130000,
+                                             'Malaysia': 32366000,
+                                             'Maldives': 541000,
+                                             'Mali': 20251000,
+                                             'Malta': 442000,
+                                             'Marshall Islands': 59000,
+                                             'Mauritania': 4650000,
+                                             'Mauritius': 1272000,
+                                             'Mexico': 128933000,
+                                             'Monaco': 39000,
+                                             'Mongolia': 3278000,
+                                             'Montenegro': 628000,
+                                             'Morocco': 36911000,
+                                             'Mozambique': 31255000,
+                                             'Myanmar': 54410000,
+                                             'Namibia': 2541000,
+                                             'Nauru': 11000,
+                                             'Nepal': 29137000,
+                                             'Netherlands': 17135000,
+                                             'New Zealand': 4822000,
+                                             'Nicaragua': 6625000,
+                                             'Niger': 24207000,
+                                             'Nigeria': 206140000,
+                                             'North Macedonia': 2083000,
+                                             'Norway': 5421000,
+                                             'Oman': 5107000,
+                                             'Pakistan': 220892000,
+                                             'Palau': 18000,
+                                             'Panama': 4315000,
+                                             'Papua New Guinea': 8947000,
+                                             'Paraguay': 7133000,
+                                             'Peru': 32972000,
+                                             'Philippines': 109581000,
+                                             'Poland': 37847000,
+                                             'Portugal': 10197000,
+                                             'Romania': 19238000,
+                                             'Russian Federation': 145934000,
+                                             'Rwanda': 12952000,
+                                             'Samoa': 198000,
+                                             'Senegal': 16744000,
+                                             'Serbia': 8737000,
+                                             'Sierra Leone': 7977000,
+                                             'Singapore': 5850000,
+                                             'Solomon Islands': 687000,
+                                             'Somalia': 15893000,
+                                             'South Africa': 59309000,
+                                             'South Sudan': 11194000,
+                                             'Spain': 46755000,
+                                             'Sri Lanka': 21413000,
+                                             'Sudan': 43849000,
+                                             'Suriname': 587000,
+                                             'Sweden': 10099000,
+                                             'Switzerland': 8655000,
+                                             'Syrian Arab Republic': 17501000,
+                                             'Tajikistan': 9538000,
+                                             'Thailand': 69800000,
+                                             'Timor-Leste': 1318000,
+                                             'Togo': 8279000,
+                                             'Tonga': 106000,
+                                             'Tunisia': 11819000,
+                                             'Turkmenistan': 6031000,
+                                             'Tuvalu': 12000,
+                                             'Uganda': 45741000,
+                                             'Ukraine': 43734000,
+                                             'United Kingdom': 67886000,
+                                             'United States of America': 331003000,
+                                             'Uruguay': 3474000,
+                                             'Uzbekistan': 33469000,
+                                             'Vanuatu': 307000,
+                                             'Vietnam': 97339000,
+                                             'Zambia': 18384000,
+                                             'Zimbabwe': 14863000}),
+                 "15-2": (TEXT_FORMAT_DICT, {'Afghanistan': 26,
+                                         'Albania': 62,
+                                         'Algeria': 74,
+                                         'Andorra': 88,
+                                         'Angola': 67,
+                                         'Armenia': 63,
+                                         'Australia': 86,
+                                         'Austria': 59,
+                                         'Azerbaijan': 56,
+                                         'Bangladesh': 38,
+                                         'Belarus': 79,
+                                         'Belgium': 98,
+                                         'Belize': 46,
+                                         'Benin': 48,
+                                         'Bermuda': 100,
+                                         'Bhutan': 42,
+                                         'Bosnia and Herzegovina': 49,
+                                         'Botswana': 71,
+                                         'Brazil': 87,
+                                         'Brunei Darussalam': 78,
+                                         'Bulgaria': 76,
+                                         'Burkina Faso': 31,
+                                         'Burundi': 14,
+                                         'Cabo Verde': 67,
+                                         'Cambodia': 24,
+                                         'Cameroon': 58,
+                                         'Canada': 82,
+                                         'Central African Republic': 42,
+                                         'Chad': 24,
+                                         'Chile': 88,
+                                         'China': 62,
+                                         'Colombia': 81,
+                                         'Costa Rica': 81,
+                                         "Côte d'Ivoire": 52,
+                                         'Cuba': 77,
+                                         'Cyprus': 67,
+                                         'Czech Republic': 74,
+                                         'Denmark': 88,
+                                         'Djibouti': 78,
+                                         'Dominican Republic': 83,
+                                         'Ecuador': 64,
+                                         'El Salvador': 73,
+                                         'Estonia': 69,
+                                         'Eswatini': 24,
+                                         'Ethiopia': 22,
+                                         'Fiji': 57,
+                                         'Finland': 86,
+                                         'France': 81,
+                                         'Gabon': 90,
+                                         'Georgia': 59,
+                                         'Germany': 77,
+                                         'Ghana': 57,
+                                         'Gibraltar': 100,
+                                         'Greece': 80,
+                                         'Greenland': 87,
+                                         'Guatemala': 52,
+                                         'Guinea': 37,
+                                         'Guinea-Bissau': 44,
+                                         'Guyana': 27,
+                                         'Haiti': 57,
+                                         'Honduras': 58,
+                                         'Hungary': 72,
+                                         'Iceland': 94,
+                                         'India': 35,
+                                         'Indonesia': 57,
+                                         'Iraq': 71,
+                                         'Ireland': 64,
+                                         'Israel': 93,
+                                         'Jamaica': 56,
+                                         'Jordan': 91,
+                                         'Kazakhstan': 58,
+                                         'Kenya': 28,
+                                         'Kiribati': 56,
+                                         'Latvia': 68,
+                                         'Lesotho': 29,
+                                         'Liberia': 52,
+                                         'Lithuania': 68,
+                                         'Luxembourg': 91,
+                                         'Madagascar': 39,
+                                         'Malawi': 17,
+                                         'Malaysia': 77,
+                                         'Maldives': 41,
+                                         'Mali': 44,
+                                         'Malta': 95,
+                                         'Marshall Islands': 78,
+                                         'Mauritania': 55,
+                                         'Mauritius': 41,
+                                         'Mexico': 81,
+                                         'Monaco': 100,
+                                         'Mongolia': 69,
+                                         'Montenegro': 67,
+                                         'Morocco': 64,
+                                         'Mozambique': 37,
+                                         'Myanmar': 31,
+                                         'Namibia': 52,
+                                         'Nauru': 100,
+                                         'Nepal': 21,
+                                         'Netherlands': 92,
+                                         'New Zealand': 87,
+                                         'Nicaragua': 59,
+                                         'Niger': 17,
+                                         'Nigeria': 52,
+                                         'North Macedonia': 58,
+                                         'Norway': 83,
+                                         'Oman': 86,
+                                         'Pakistan': 37,
+                                         'Palau': 81,
+                                         'Panama': 68,
+                                         'Papua New Guinea': 13,
+                                         'Paraguay': 62,
+                                         'Peru': 78,
+                                         'Philippines': 47,
+                                         'Poland': 60,
+                                         'Portugal': 66,
+                                         'Romania': 54,
+                                         'Russian Federation': 75,
+                                         'Rwanda': 17,
+                                         'Samoa': 18,
+                                         'Senegal': 48,
+                                         'Serbia': 56,
+                                         'Sierra Leone': 43,
+                                         'Singapore': 100,
+                                         'Solomon Islands': 25,
+                                         'Somalia': 46,
+                                         'South Africa': 67,
+                                         'South Sudan': 20,
+                                         'Spain': 81,
+                                         'Sri Lanka': 19,
+                                         'Sudan': 35,
+                                         'Suriname': 66,
+                                         'Sweden': 88,
+                                         'Switzerland': 74,
+                                         'Syrian Arab Republic': 55,
+                                         'Tajikistan': 28,
+                                         'Thailand': 51,
+                                         'Timor-Leste': 31,
+                                         'Togo': 43,
+                                         'Tonga': 23,
+                                         'Tunisia': 70,
+                                         'Turkmenistan': 53,
+                                         'Tuvalu': 64,
+                                         'Uganda': 25,
+                                         'Ukraine': 69,
+                                         'United Kingdom': 84,
+                                         'United States of America': 83,
+                                         'Uruguay': 96,
+                                         'Uzbekistan': 50,
+                                         'Vanuatu': 26,
+                                         'Vietnam': 37,
+                                         'Zambia': 45,
+                                         'Zimbabwe': 32}),
+                 "16": (TEXT_FORMAT_DICT, {'Afghanistan': 10121280,
+                                             'Albania': 1784360,
+                                             'Algeria': 32449740,
+                                             'Andorra': 67760,
+                                             'Angola': 22020220,
+                                             'Armenia': 1866690,
+                                             'Australia': 21930000,
+                                             'Austria': 5313540,
+                                             'Azerbaijan': 5677840,
+                                             'Bangladesh': 62581820,
+                                             'Belarus': 7464710,
+                                             'Belgium': 11358200,
+                                             'Belize': 183080,
+                                             'Benin': 5819040,
+                                             'Bermuda': 62000,
+                                             'Bhutan': 324240,
+                                             'Bosnia and Herzegovina': 1607690,
+                                             'Botswana': 1669920,
+                                             'Brazil': 184926330,
+                                             'Brunei Darussalam': 340860,
+                                             'Bulgaria': 5280480,
+                                             'Burkina Faso': 6479930,
+                                             'Burundi': 1664740,
+                                             'Cabo Verde': 372520,
+                                             'Cambodia': 4012560,
+                                             'Cameroon': 15396680,
+                                             'Canada': 30948440,
+                                             'Central African Republic': 2028600,
+                                             'Chad': 3942240,
+                                             'Chile': 16822080,
+                                             'China': 907147420,
+                                             'Colombia': 41215230,
+                                             'Costa Rica': 4126140,
+                                             "Côte d'Ivoire": 13716560,
+                                             'Cuba': 8721790,
+                                             'Cyprus': 808690,
+                                             'Czech Republic': 7924660,
+                                             'Denmark': 5096960,
+                                             'Djibouti': 770640,
+                                             'Dominican Republic': 9003840,
+                                             'Ecuador': 11291520,
+                                             'El Salvador': 4734780,
+                                             'Estonia': 915630,
+                                             'Eswatini': 278400,
+                                             'Ethiopia': 25292080,
+                                             'Fiji': 510720,
+                                             'Finland': 4765260,
+                                             'France': 52871940,
+                                             'Gabon': 2003400,
+                                             'Georgia': 2353510,
+                                             'Germany': 64513680,
+                                             'Ghana': 17711610,
+                                             'Gibraltar': 34000,
+                                             'Greece': 8338400,
+                                             'Greenland': 49590,
+                                             'Guatemala': 9316320,
+                                             'Guinea': 4859210,
+                                             'Guinea-Bissau': 865920,
+                                             'Guyana': 212490,
+                                             'Haiti': 6499710,
+                                             'Honduras': 5744900,
+                                             'Hungary': 6955200,
+                                             'Iceland': 320540,
+                                             'India': 483001400,
+                                             'Indonesia': 155908680,
+                                             'Iraq': 28558330,
+                                             'Ireland': 3160320,
+                                             'Israel': 8050080,
+                                             'Jamaica': 1658160,
+                                             'Jordan': 9284730,
+                                             'Kazakhstan': 10890660,
+                                             'Kenya': 15055880,
+                                             'Kiribati': 66640,
+                                             'Latvia': 1282480,
+                                             'Lesotho': 621180,
+                                             'Liberia': 2630160,
+                                             'Lithuania': 1850960,
+                                             'Luxembourg': 569660,
+                                             'Madagascar': 10799490,
+                                             'Malawi': 3252100,
+                                             'Malaysia': 24921820,
+                                             'Maldives': 221810,
+                                             'Mali': 8910440,
+                                             'Malta': 419900,
+                                             'Marshall Islands': 46020,
+                                             'Mauritania': 2557500,
+                                             'Mauritius': 521520,
+                                             'Mexico': 104435730,
+                                             'Monaco': 39000,
+                                             'Mongolia': 2261820,
+                                             'Montenegro': 420760,
+                                             'Morocco': 23623040,
+                                             'Mozambique': 11564350,
+                                             'Myanmar': 16867100,
+                                             'Namibia': 1321320,
+                                             'Nauru': 11000,
+                                             'Nepal': 6118770,
+                                             'Netherlands': 15764200,
+                                             'New Zealand': 4195140,
+                                             'Nicaragua': 3908750,
+                                             'Niger': 4115190,
+                                             'Nigeria': 107192800,
+                                             'North Macedonia': 1208140,
+                                             'Norway': 4499430,
+                                             'Oman': 4392020,
+                                             'Pakistan': 81730040,
+                                             'Palau': 14580,
+                                             'Panama': 2934200,
+                                             'Papua New Guinea': 1163110,
+                                             'Paraguay': 4422460,
+                                             'Peru': 25718160,
+                                             'Philippines': 51503070,
+                                             'Poland': 22708200,
+                                             'Portugal': 6730020,
+                                             'Romania': 10388520,
+                                             'Russian Federation': 109450500,
+                                             'Rwanda': 2201840,
+                                             'Samoa': 35640,
+                                             'Senegal': 8037120,
+                                             'Serbia': 4892720,
+                                             'Sierra Leone': 3430110,
+                                             'Singapore': 5850000,
+                                             'Solomon Islands': 171750,
+                                             'Somalia': 7310780,
+                                             'South Africa': 39737030,
+                                             'South Sudan': 2238800,
+                                             'Spain': 37871550,
+                                             'Sri Lanka': 4068470,
+                                             'Sudan': 15347150,
+                                             'Suriname': 387420,
+                                             'Sweden': 8887120,
+                                             'Switzerland': 6404700,
+                                             'Syrian Arab Republic': 9625550,
+                                             'Tajikistan': 2670640,
+                                             'Thailand': 35598000,
+                                             'Timor-Leste': 408580,
+                                             'Togo': 3559970,
+                                             'Tonga': 24380,
+                                             'Tunisia': 8273300,
+                                             'Turkmenistan': 3196430,
+                                             'Tuvalu': 7680,
+                                             'Uganda': 11435250,
+                                             'Ukraine': 30176460,
+                                             'United Kingdom': 57024240,
+                                             'United States of America': 274732490,
+                                             'Uruguay': 3335040,
+                                             'Uzbekistan': 16734500,
+                                             'Vanuatu': 79820,
+                                             'Vietnam': 36015430,
+                                             'Zambia': 8272800,
+                                             'Zimbabwe': 4756160}),
+                 "17": (TEXT_FORMAT, 'Tuvalu'),
+                 "18": (TEXT_FORMAT, 'China'),
+                 "19": (TEXT_FORMAT_DICT, {'Afghanistan': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'South Asia'},
+                                             'Albania': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Algeria': {2015: 'Upper middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Middle East & North Africa'},
+                                             'Andorra': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Angola': {2015: 'Upper middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Armenia': {2015: 'Lower middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Australia': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Austria': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Azerbaijan': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Bangladesh': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'South Asia'},
+                                             'Belarus': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Belgium': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Belize': {2015: 'Upper middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'Benin': {2015: 'Low income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Bermuda': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'North America'},
+                                             'Bhutan': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'South Asia'},
+                                             'Bosnia and Herzegovina': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Botswana': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Brazil': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'Brunei Darussalam': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Bulgaria': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Burkina Faso': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Burundi': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Cabo Verde': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Cambodia': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Cameroon': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Canada': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'North America'},
+                                             'Central African Republic': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Chad': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Chile': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'China': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Colombia': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'Costa Rica': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             "Côte d'Ivoire": {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Cuba': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'Cyprus': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Czech Republic': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Denmark': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Djibouti': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Middle East & North Africa'},
+                                             'Dominican Republic': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'Ecuador': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'El Salvador': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'Estonia': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Eswatini': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Ethiopia': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Fiji': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Finland': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'France': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Gabon': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Georgia': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Germany': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Ghana': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Gibraltar': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Greece': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Greenland': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Guatemala': {2015: 'Lower middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'Guinea': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Guinea-Bissau': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Guyana': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'Haiti': {2015: 'Low income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'Honduras': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'Hungary': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Iceland': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'India': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'South Asia'},
+                                             'Indonesia': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Iraq': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Middle East & North Africa'},
+                                             'Ireland': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Israel': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Middle East & North Africa'},
+                                             'Jamaica': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'Jordan': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Middle East & North Africa'},
+                                             'Kazakhstan': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Kenya': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Kiribati': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Latvia': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Lesotho': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Liberia': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Lithuania': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Luxembourg': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Madagascar': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Malawi': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Malaysia': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Maldives': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'South Asia'},
+                                             'Mali': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Malta': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Middle East & North Africa'},
+                                             'Marshall Islands': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Mauritania': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Mauritius': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Mexico': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'Monaco': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Mongolia': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Montenegro': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Morocco': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Middle East & North Africa'},
+                                             'Mozambique': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Myanmar': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Namibia': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Nauru': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Nepal': {2015: 'Low income',
+                                              2020: 'Lower middle income',
+                                              'region': 'South Asia'},
+                                             'Netherlands': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'New Zealand': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Nicaragua': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'Niger': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Nigeria': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'North Macedonia': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Norway': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Oman': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Middle East & North Africa'},
+                                             'Pakistan': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'South Asia'},
+                                             'Palau': {2015: 'Upper middle income',
+                                              2020: 'High income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Panama': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'Papua New Guinea': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Paraguay': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'Peru': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'Philippines': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Poland': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Portugal': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Romania': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Russian Federation': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Rwanda': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Samoa': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Senegal': {2015: 'Low income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Serbia': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Sierra Leone': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Singapore': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Solomon Islands': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Somalia': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'South Africa': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'South Sudan': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Spain': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Sri Lanka': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'South Asia'},
+                                             'Sudan': {2015: 'Lower middle income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Suriname': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'Sweden': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Switzerland': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Syrian Arab Republic': {2015: 'Lower middle income',
+                                              2020: 'Low income',
+                                              'region': 'Middle East & North Africa'},
+                                             'Tajikistan': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Thailand': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Timor-Leste': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Togo': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Tonga': {2015: 'Lower middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Tunisia': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Middle East & North Africa'},
+                                             'Turkmenistan': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Tuvalu': {2015: 'Upper middle income',
+                                              2020: 'Upper middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Uganda': {2015: 'Low income',
+                                              2020: 'Low income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Ukraine': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Europe & Central Asia'},
+                                             'United Kingdom': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Europe & Central Asia'},
+                                             'United States of America': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'North America'},
+                                             'Uruguay': {2015: 'High income',
+                                              2020: 'High income',
+                                              'region': 'Latin America & Caribbean'},
+                                             'Uzbekistan': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Europe & Central Asia'},
+                                             'Vanuatu': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Vietnam': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'East Asia & Pacific'},
+                                             'Zambia': {2015: 'Lower middle income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Sub-Saharan Africa'},
+                                             'Zimbabwe': {2015: 'Low income',
+                                              2020: 'Lower middle income',
+                                              'region': 'Sub-Saharan Africa'}}),
+                 "20": (TEXT_FORMAT_DICT, {'South Asia': ['Bangladesh',
+                                              'Bhutan',
+                                              'India',
+                                              'Nepal',
+                                              'Pakistan',
+                                              'Sri Lanka'],
+                                             'Europe & Central Asia': ['Tajikistan', 'Ukraine', 'Uzbekistan'],
+                                             'Middle East & North Africa': ['Algeria', 'Djibouti', 'Morocco', 'Tunisia'],
+                                             'Sub-Saharan Africa': ['Angola',
+                                              'Benin',
+                                              'Cabo Verde',
+                                              'Cameroon',
+                                              "Côte d'Ivoire",
+                                              'Eswatini',
+                                              'Ghana',
+                                              'Kenya',
+                                              'Lesotho',
+                                              'Mauritania',
+                                              'Nigeria',
+                                              'Senegal',
+                                              'Zambia',
+                                              'Zimbabwe'],
+                                             'East Asia & Pacific': ['Cambodia',
+                                              'Indonesia',
+                                              'Kiribati',
+                                              'Mongolia',
+                                              'Myanmar',
+                                              'Papua New Guinea',
+                                              'Philippines',
+                                              'Samoa',
+                                              'Solomon Islands',
+                                              'Timor-Leste',
+                                              'Vanuatu',
+                                              'Vietnam'],
+                                             'Latin America & Caribbean': ['Belize',
+                                              'El Salvador',
+                                              'Haiti',
+                                              'Honduras',
+                                              'Nicaragua'],
+                                             'North America': []})}
+
+
+def check_cell(qnum, actual):
+    format, expected = expected_json[qnum[1:]]
+    try:
+        if format == TEXT_FORMAT:
+            return simple_compare(expected, actual)
+        elif format == TEXT_FORMAT_UNORDERED_LIST:
+            return list_compare_unordered(expected, actual)
+        elif format == TEXT_FORMAT_ORDERED_LIST:
+            return list_compare_ordered(expected, actual)
+        elif format == TEXT_FORMAT_DICT:
+            return dict_compare(expected, actual)
+        else:
+            if expected != actual:
+                return "expected %s but found %s " % (repr(expected), repr(actual))
+    except:
+        if expected != actual:
+            return "expected %s" % (repr(expected))
+    return PASS
+
+
+def simple_compare(expected, actual, complete_msg=True):
+    msg = PASS
+    if type(expected) == type:
+        if expected != actual:
+            if type(actual) == type:
+                msg = "expected %s but found %s" % (
+                    expected.__name__, actual.__name__)
+            else:
+                msg = "expected %s but found %s" % (
+                    expected.__name__, repr(actual))
+    elif type(expected) != type(actual) and not (type(expected) in [float, int] and type(actual) in [float, int]):
+        msg = "expected to find type %s but found type %s" % (
+            type(expected).__name__, type(actual).__name__)
+    elif type(expected) == float:
+        if not math.isclose(actual, expected, rel_tol=REL_TOL, abs_tol=ABS_TOL):
+            msg = "expected %s" % (repr(expected))
+            if complete_msg:
+                msg = msg + " but found %s" % (repr(actual))
+    else:
+        if expected != actual:
+            msg = "expected %s" % (repr(expected))
+            if complete_msg:
+                msg = msg + " but found %s" % (repr(actual))
+    return msg
+
+
+def namedtuple_compare(expected, actual):
+    msg = PASS
+    for field in expected._fields:
+        val = simple_compare(getattr(expected, field), getattr(actual, field))
+        if val != PASS:
+            msg = "at attribute %s of namedtuple %s, " % (
+                field, type(expected).__name__) + val
+            return msg
+    return msg
+
+
+def list_compare_ordered(expected, actual, obj="list"):
+    msg = PASS
+    if type(expected) != type(actual):
+        msg = "expected to find type %s but found type %s" % (
+            type(expected).__name__, type(actual).__name__)
+        return msg
+    for i in range(len(expected)):
+        if i >= len(actual):
+            msg = "expected missing %s in %s" % (repr(expected[i]), obj)
+            break
+        if type(expected[i]) in [int, float, bool, str]:
+            val = simple_compare(expected[i], actual[i])
+        elif type(expected[i]) in [list]:
+            val = list_compare_ordered(expected[i], actual[i], "sub" + obj)
+        elif type(expected[i]) in [dict]:
+            val = dict_compare(expected[i], actual[i])
+        elif type(expected[i]).__name__ == obfuscate1():
+            val = simple_compare(expected[i], actual[i])
+        if val != PASS:
+            msg = "at index %d of the %s, " % (i, obj) + val
+            break
+    if len(actual) > len(expected) and msg == PASS:
+        msg = "found unexpected %s in %s" % (repr(actual[len(expected)]), obj)
+    if len(expected) != len(actual):
+        msg = msg + \
+            " (found %d entries in %s, but expected %d)" % (
+                len(actual), obj, len(expected))
+
+    if len(expected) > 0 and type(expected[0]) in [int, float, bool, str]:
+        if msg != PASS and list_compare_unordered(expected, actual, obj) == PASS:
+            try:
+                msg = msg + " (list may not be ordered as required)"
+            except:
+                pass
+    return msg
+
+
+def list_compare_helper(larger, smaller):
+    msg = PASS
+    j = 0
+    for i in range(len(larger)):
+        if i == len(smaller):
+            msg = "expected %s" % (repr(larger[i]))
+            break
+        found = False
+        while not found:
+            if j == len(smaller):
+                val = simple_compare(larger[i], smaller[j - 1], False)
+                break
+            val = simple_compare(larger[i], smaller[j], False)
+            j += 1
+            if val == PASS:
+                found = True
+                break
+        if not found:
+            msg = val
+            break
+    return msg
+
+
+def list_compare_unordered(expected, actual, obj="list"):
+    msg = PASS
+    if type(expected) != type(actual):
+        msg = "expected to find type %s but found type %s" % (
+            type(expected).__name__, type(actual).__name__)
+        return msg
+    try:
+        sort_expected = sorted(expected)
+        sort_actual = sorted(actual)
+    except:
+        msg = "unexpected datatype found in %s; expected entries of type %s" % (
+            obj, obj, type(expected[0]).__name__)
+        return msg
+
+    if len(actual) == 0 and len(expected) > 0:
+        msg = "in the %s, missing" % (obj) + expected[0]
+    elif len(actual) > 0 and len(expected) > 0:
+        val = simple_compare(sort_expected[0], sort_actual[0])
+        if val.startswith("expected to find type"):
+            msg = "in the %s, " % (
+                obj) + simple_compare(sort_expected[0], sort_actual[0])
+        else:
+            if len(expected) > len(actual):
+                msg = "in the %s, missing " % (
+                    obj) + list_compare_helper(sort_expected, sort_actual)
+            elif len(expected) < len(actual):
+                msg = "in the %s, found un" % (
+                    obj) + list_compare_helper(sort_actual, sort_expected)
+            if len(expected) != len(actual):
+                msg = msg + \
+                    " (found %d entries in %s, but expected %d)" % (
+                        len(actual), obj, len(expected))
+                return msg
+            else:
+                val = list_compare_helper(sort_expected, sort_actual)
+                if val != PASS:
+                    msg = "in the %s, missing " % (obj) + val + ", but found un" + list_compare_helper(sort_actual,
+                                                                                                       sort_expected)
+    return msg
+
+
+def list_compare_special_init(expected, special_order):
+    real_expected = []
+    for i in range(len(expected)):
+        if real_expected == [] or special_order[i-1] != special_order[i]:
+            real_expected.append([])
+        real_expected[-1].append(expected[i])
+    return real_expected
+
+
+def list_compare_special(expected, actual, special_order):
+    expected = list_compare_special_init(expected, special_order)
+    msg = PASS
+    expected_list = []
+    for expected_item in expected:
+        expected_list.extend(expected_item)
+    val = list_compare_unordered(expected_list, actual)
+    if val != PASS:
+        msg = val
+    else:
+        i = 0
+        for expected_item in expected:
+            j = len(expected_item)
+            actual_item = actual[i: i + j]
+            val = list_compare_unordered(expected_item, actual_item)
+            if val != PASS:
+                if j == 1:
+                    msg = "at index %d " % (i) + val
+                else:
+                    msg = "between indices %d and %d " % (i, i + j - 1) + val
+                msg = msg + " (list may not be ordered as required)"
+                break
+            i += j
+
+    return msg
+
+
+def dict_compare(expected, actual, obj="dict"):
+    msg = PASS
+    if type(expected) != type(actual):
+        msg = "expected to find type %s but found type %s" % (
+            type(expected).__name__, type(actual).__name__)
+        return msg
+    try:
+        expected_keys = sorted(list(expected.keys()))
+        actual_keys = sorted(list(actual.keys()))
+    except:
+        msg = "unexpected datatype found in keys of dict; expect a dict with keys of type %s" % (
+            type(expected_keys[0]).__name__)
+        return msg
+    val = list_compare_unordered(expected_keys, actual_keys, "dict")
+    if val != PASS:
+        msg = "bad keys in %s: " % (obj) + val
+    if msg == PASS:
+        for key in expected:
+            if expected[key] == None or type(expected[key]) in [int, float, bool, str]:
+                val = simple_compare(expected[key], actual[key])
+            elif type(expected[key]) in [list]:
+                val = list_compare_ordered(expected[key], actual[key], "value")
+            elif type(expected[key]) in [dict]:
+                val = dict_compare(expected[key], actual[key], "sub" + obj)
+            if val != PASS:
+                msg = "incorrect val for key %s in %s: " % (
+                    repr(key), obj) + val
+    return msg
+
+
+def check(qnum, actual):
+    msg = check_cell(qnum, actual)
+    if msg == PASS:
+        return True
+    print("<b style='color: red;'>ERROR:</b> " + msg)
diff --git a/lab-p7/water_accessibility.csv b/lab-p7/water_accessibility.csv
new file mode 100644
index 0000000000000000000000000000000000000000..2be44faac5c2e89f66743c049245d6e1ca630b3d
--- /dev/null
+++ b/lab-p7/water_accessibility.csv
@@ -0,0 +1,303 @@
+country_code,country_name,region,year,income_level,pop,urban_percent,national_alb,urban_alb
+AFG,Afghanistan,South Asia,2015,Low income,34414,25,61,87
+AFG,Afghanistan,South Asia,2020,Low income,38928,26,75,100
+ALB,Albania,Europe & Central Asia,2015,Upper middle income,2891,57,93,95
+ALB,Albania,Europe & Central Asia,2020,Upper middle income,2878,62,95,96
+DZA,Algeria,Middle East & North Africa,2015,Upper middle income,39728,71,93,95
+DZA,Algeria,Middle East & North Africa,2020,Lower middle income,43851,74,94,96
+AND,Andorra,Europe & Central Asia,2015,High income,78,88,100,100
+AND,Andorra,Europe & Central Asia,2020,High income,77,88,100,100
+AGO,Angola,Sub-Saharan Africa,2015,Upper middle income,27884,63,54,70
+AGO,Angola,Sub-Saharan Africa,2020,Lower middle income,32866,67,57,72
+ARM,Armenia,Europe & Central Asia,2015,Lower middle income,2926,63,100,100
+ARM,Armenia,Europe & Central Asia,2020,Upper middle income,2963,63,100,100
+AUS,Australia,East Asia & Pacific,2015,High income,23932,86,100,100
+AUS,Australia,East Asia & Pacific,2020,High income,25500,86,100,100
+AUT,Austria,Europe & Central Asia,2015,High income,8679,58,100,100
+AUT,Austria,Europe & Central Asia,2020,High income,9006,59,100,100
+AZE,Azerbaijan,Europe & Central Asia,2015,Upper middle income,9623,55,92,100
+AZE,Azerbaijan,Europe & Central Asia,2020,Upper middle income,10139,56,96,100
+BGD,Bangladesh,South Asia,2015,Lower middle income,156256,34,97,98
+BGD,Bangladesh,South Asia,2020,Lower middle income,164689,38,98,97
+BLR,Belarus,Europe & Central Asia,2015,Upper middle income,9439,77,96,96
+BLR,Belarus,Europe & Central Asia,2020,Upper middle income,9449,79,96,96
+BEL,Belgium,Europe & Central Asia,2015,High income,11288,98,100,100
+BEL,Belgium,Europe & Central Asia,2020,High income,11590,98,100,100
+BLZ,Belize,Latin America & Caribbean,2015,Upper middle income,361,45,97,100
+BLZ,Belize,Latin America & Caribbean,2020,Lower middle income,398,46,98,99
+BEN,Benin,Sub-Saharan Africa,2015,Low income,10576,46,65,74
+BEN,Benin,Sub-Saharan Africa,2020,Lower middle income,12123,48,65,73
+BMU,Bermuda,North America,2015,High income,64,100,100,100
+BMU,Bermuda,North America,2020,High income,62,100,100,100
+BTN,Bhutan,South Asia,2015,Lower middle income,728,39,96,98
+BTN,Bhutan,South Asia,2020,Lower middle income,772,42,97,98
+BIH,Bosnia and Herzegovina,Europe & Central Asia,2015,Upper middle income,3429,47,96,95
+BIH,Bosnia and Herzegovina,Europe & Central Asia,2020,Upper middle income,3281,49,96,95
+BWA,Botswana,Sub-Saharan Africa,2015,Upper middle income,2121,67,88,97
+BWA,Botswana,Sub-Saharan Africa,2020,Upper middle income,2352,71,92,98
+BRA,Brazil,Latin America & Caribbean,2015,Upper middle income,204472,86,98,100
+BRA,Brazil,Latin America & Caribbean,2020,Upper middle income,212559,87,100,100
+BRN,Brunei Darussalam,East Asia & Pacific,2015,High income,415,77,100,100
+BRN,Brunei Darussalam,East Asia & Pacific,2020,High income,437,78,100,100
+BGR,Bulgaria,Europe & Central Asia,2015,Upper middle income,7200,74,100,100
+BGR,Bulgaria,Europe & Central Asia,2020,Upper middle income,6948,76,100,100
+BFA,Burkina Faso,Sub-Saharan Africa,2015,Low income,18111,28,50,80
+BFA,Burkina Faso,Sub-Saharan Africa,2020,Low income,20903,31,47,80
+BDI,Burundi,Sub-Saharan Africa,2015,Low income,10160,12,60,89
+BDI,Burundi,Sub-Saharan Africa,2020,Low income,11891,14,62,91
+CPV,Cabo Verde,Sub-Saharan Africa,2015,Lower middle income,525,64,85,92
+CPV,Cabo Verde,Sub-Saharan Africa,2020,Lower middle income,556,67,89,93
+KHM,Cambodia,East Asia & Pacific,2015,Lower middle income,15521,22,68,89
+KHM,Cambodia,East Asia & Pacific,2020,Lower middle income,16719,24,71,90
+CMR,Cameroon,Sub-Saharan Africa,2015,Lower middle income,23298,55,64,82
+CMR,Cameroon,Sub-Saharan Africa,2020,Lower middle income,26546,58,66,82
+CAN,Canada,North America,2015,High income,36027,81,100,100
+CAN,Canada,North America,2020,High income,37742,82,100,100
+CAF,Central African Republic,Sub-Saharan Africa,2015,Low income,4493,40,42,58
+CAF,Central African Republic,Sub-Saharan Africa,2020,Low income,4830,42,37,50
+TCD,Chad,Sub-Saharan Africa,2015,Low income,14111,23,44,75
+TCD,Chad,Sub-Saharan Africa,2020,Low income,16426,24,46,74
+CHL,Chile,Latin America & Caribbean,2015,High income,17969,87,100,100
+CHL,Chile,Latin America & Caribbean,2020,High income,19116,88,100,100
+CHN,China,East Asia & Pacific,2015,Upper middle income,1430405,56,92,98
+CHN,China,East Asia & Pacific,2020,Upper middle income,1463141,62,94,97
+COL,Colombia,Latin America & Caribbean,2015,Upper middle income,47521,80,96,100
+COL,Colombia,Latin America & Caribbean,2020,Upper middle income,50883,81,97,100
+CRI,Costa Rica,Latin America & Caribbean,2015,Upper middle income,4848,77,100,100
+CRI,Costa Rica,Latin America & Caribbean,2020,Upper middle income,5094,81,100,100
+CIV,Côte d'Ivoire,Sub-Saharan Africa,2015,Lower middle income,23226,49,71,87
+CIV,Côte d'Ivoire,Sub-Saharan Africa,2020,Lower middle income,26378,52,71,85
+CUB,Cuba,Latin America & Caribbean,2015,Upper middle income,11325,77,96,98
+CUB,Cuba,Latin America & Caribbean,2020,Upper middle income,11327,77,97,98
+CYP,Cyprus,Europe & Central Asia,2015,High income,1161,67,100,100
+CYP,Cyprus,Europe & Central Asia,2020,High income,1207,67,100,100
+CZE,Czech Republic,Europe & Central Asia,2015,High income,10601,73,100,100
+CZE,Czech Republic,Europe & Central Asia,2020,High income,10709,74,100,100
+DNK,Denmark,Europe & Central Asia,2015,High income,5689,88,100,100
+DNK,Denmark,Europe & Central Asia,2020,High income,5792,88,100,100
+DJI,Djibouti,Middle East & North Africa,2015,Lower middle income,914,77,76,84
+DJI,Djibouti,Middle East & North Africa,2020,Lower middle income,988,78,76,84
+DOM,Dominican Republic,Latin America & Caribbean,2015,Upper middle income,10282,79,96,98
+DOM,Dominican Republic,Latin America & Caribbean,2020,Upper middle income,10848,83,97,98
+ECU,Ecuador,Latin America & Caribbean,2015,Upper middle income,16212,63,93,100
+ECU,Ecuador,Latin America & Caribbean,2020,Upper middle income,17643,64,95,100
+SLV,El Salvador,Latin America & Caribbean,2015,Lower middle income,6325,70,96,99
+SLV,El Salvador,Latin America & Caribbean,2020,Lower middle income,6486,73,98,100
+EST,Estonia,Europe & Central Asia,2015,High income,1315,68,100,100
+EST,Estonia,Europe & Central Asia,2020,High income,1327,69,100,100
+SWZ,Eswatini,Sub-Saharan Africa,2015,Lower middle income,1104,23,67,95
+SWZ,Eswatini,Sub-Saharan Africa,2020,Lower middle income,1160,24,71,97
+ETH,Ethiopia,Sub-Saharan Africa,2015,Low income,100835,19,42,82
+ETH,Ethiopia,Sub-Saharan Africa,2020,Low income,114964,22,50,84
+FJI,Fiji,East Asia & Pacific,2015,Upper middle income,869,55,94,98
+FJI,Fiji,East Asia & Pacific,2020,Upper middle income,896,57,94,98
+FIN,Finland,Europe & Central Asia,2015,High income,5481,85,100,100
+FIN,Finland,Europe & Central Asia,2020,High income,5541,86,100,100
+FRA,France,Europe & Central Asia,2015,High income,64453,80,100,100
+FRA,France,Europe & Central Asia,2020,High income,65274,81,100,100
+GAB,Gabon,Sub-Saharan Africa,2015,Upper middle income,1948,88,84,89
+GAB,Gabon,Sub-Saharan Africa,2020,Upper middle income,2226,90,85,90
+GEO,Georgia,Europe & Central Asia,2015,Upper middle income,4024,57,96,100
+GEO,Georgia,Europe & Central Asia,2020,Upper middle income,3989,59,97,100
+DEU,Germany,Europe & Central Asia,2015,High income,81787,77,100,100
+DEU,Germany,Europe & Central Asia,2020,High income,83784,77,100,100
+GHA,Ghana,Sub-Saharan Africa,2015,Lower middle income,27849,54,80,91
+GHA,Ghana,Sub-Saharan Africa,2020,Lower middle income,31073,57,86,96
+GIB,Gibraltar,Europe & Central Asia,2015,High income,34,100,100,100
+GIB,Gibraltar,Europe & Central Asia,2020,High income,34,100,100,100
+GRC,Greece,Europe & Central Asia,2015,High income,10660,78,100,100
+GRC,Greece,Europe & Central Asia,2020,High income,10423,80,100,100
+GRL,Greenland,Europe & Central Asia,2015,High income,56,86,100,100
+GRL,Greenland,Europe & Central Asia,2020,High income,57,87,100,100
+GTM,Guatemala,Latin America & Caribbean,2015,Lower middle income,16252,50,92,97
+GTM,Guatemala,Latin America & Caribbean,2020,Upper middle income,17916,52,94,98
+GIN,Guinea,Sub-Saharan Africa,2015,Low income,11432,35,64,85
+GIN,Guinea,Sub-Saharan Africa,2020,Low income,13133,37,64,87
+GNB,Guinea-Bissau,Sub-Saharan Africa,2015,Low income,1737,42,59,73
+GNB,Guinea-Bissau,Sub-Saharan Africa,2020,Low income,1968,44,59,71
+GUY,Guyana,Latin America & Caribbean,2015,Upper middle income,767,26,95,100
+GUY,Guyana,Latin America & Caribbean,2020,Upper middle income,787,27,96,100
+HTI,Haiti,Latin America & Caribbean,2015,Low income,10696,52,65,85
+HTI,Haiti,Latin America & Caribbean,2020,Lower middle income,11403,57,67,85
+HND,Honduras,Latin America & Caribbean,2015,Lower middle income,9113,55,93,99
+HND,Honduras,Latin America & Caribbean,2020,Lower middle income,9905,58,96,100
+HUN,Hungary,Europe & Central Asia,2015,High income,9778,71,100,100
+HUN,Hungary,Europe & Central Asia,2020,High income,9660,72,100,100
+ISL,Iceland,Europe & Central Asia,2015,High income,330,94,100,100
+ISL,Iceland,Europe & Central Asia,2020,High income,341,94,100,100
+IND,India,South Asia,2015,Lower middle income,1310152,33,88,93
+IND,India,South Asia,2020,Lower middle income,1380004,35,90,94
+IDN,Indonesia,East Asia & Pacific,2015,Lower middle income,258383,53,89,95
+IDN,Indonesia,East Asia & Pacific,2020,Lower middle income,273524,57,92,98
+IRQ,Iraq,Middle East & North Africa,2015,Upper middle income,35572,70,94,98
+IRQ,Iraq,Middle East & North Africa,2020,Upper middle income,40223,71,98,100
+IRL,Ireland,Europe & Central Asia,2015,High income,4652,63,97,97
+IRL,Ireland,Europe & Central Asia,2020,High income,4938,64,97,97
+ISR,Israel,Middle East & North Africa,2015,High income,7978,92,100,100
+ISR,Israel,Middle East & North Africa,2020,High income,8656,93,100,100
+JAM,Jamaica,Latin America & Caribbean,2015,Upper middle income,2891,55,90,95
+JAM,Jamaica,Latin America & Caribbean,2020,Upper middle income,2961,56,91,95
+JOR,Jordan,Middle East & North Africa,2015,Upper middle income,9267,90,100,100
+JOR,Jordan,Middle East & North Africa,2020,Upper middle income,10203,91,99,100
+KAZ,Kazakhstan,Europe & Central Asia,2015,Upper middle income,17572,57,95,98
+KAZ,Kazakhstan,Europe & Central Asia,2020,Upper middle income,18777,58,95,98
+KEN,Kenya,Sub-Saharan Africa,2015,Lower middle income,47878,26,58,87
+KEN,Kenya,Sub-Saharan Africa,2020,Lower middle income,53771,28,62,87
+KIR,Kiribati,East Asia & Pacific,2015,Lower middle income,111,52,74,89
+KIR,Kiribati,East Asia & Pacific,2020,Lower middle income,119,56,78,92
+LVA,Latvia,Europe & Central Asia,2015,High income,1998,68,99,99
+LVA,Latvia,Europe & Central Asia,2020,High income,1886,68,99,99
+LSO,Lesotho,Sub-Saharan Africa,2015,Lower middle income,2059,27,71,90
+LSO,Lesotho,Sub-Saharan Africa,2020,Lower middle income,2142,29,72,93
+LBR,Liberia,Sub-Saharan Africa,2015,Low income,4472,50,73,84
+LBR,Liberia,Sub-Saharan Africa,2020,Low income,5058,52,75,86
+LTU,Lithuania,Europe & Central Asia,2015,High income,2932,67,97,100
+LTU,Lithuania,Europe & Central Asia,2020,High income,2722,68,98,100
+LUX,Luxembourg,Europe & Central Asia,2015,High income,567,90,100,100
+LUX,Luxembourg,Europe & Central Asia,2020,High income,626,91,100,100
+MDG,Madagascar,Sub-Saharan Africa,2015,Low income,24234,35,49,78
+MDG,Madagascar,Sub-Saharan Africa,2020,Low income,27691,39,53,80
+MWI,Malawi,Sub-Saharan Africa,2015,Low income,16745,16,66,86
+MWI,Malawi,Sub-Saharan Africa,2020,Low income,19130,17,70,86
+MYS,Malaysia,East Asia & Pacific,2015,Upper middle income,30271,74,97,100
+MYS,Malaysia,East Asia & Pacific,2020,Upper middle income,32366,77,97,100
+MDV,Maldives,South Asia,2015,Upper middle income,455,39,99,99
+MDV,Maldives,South Asia,2020,Upper middle income,541,41,100,100
+MLI,Mali,Sub-Saharan Africa,2015,Low income,17439,40,74,91
+MLI,Mali,Sub-Saharan Africa,2020,Low income,20251,44,83,96
+MLT,Malta,Middle East & North Africa,2015,High income,434,94,100,100
+MLT,Malta,Middle East & North Africa,2020,High income,442,95,100,100
+MHL,Marshall Islands,East Asia & Pacific,2015,Upper middle income,57,76,88,86
+MHL,Marshall Islands,East Asia & Pacific,2020,Upper middle income,59,78,89,87
+MRT,Mauritania,Sub-Saharan Africa,2015,Lower middle income,4046,51,67,86
+MRT,Mauritania,Sub-Saharan Africa,2020,Lower middle income,4650,55,72,89
+MUS,Mauritius,Sub-Saharan Africa,2015,Upper middle income,1259,41,100,100
+MUS,Mauritius,Sub-Saharan Africa,2020,Upper middle income,1272,41,100,100
+MEX,Mexico,Latin America & Caribbean,2015,Upper middle income,121858,79,98,100
+MEX,Mexico,Latin America & Caribbean,2020,Upper middle income,128933,81,100,100
+MCO,Monaco,Europe & Central Asia,2015,High income,38,100,100,100
+MCO,Monaco,Europe & Central Asia,2020,High income,39,100,100,100
+MNG,Mongolia,East Asia & Pacific,2015,Lower middle income,2998,68,81,94
+MNG,Mongolia,East Asia & Pacific,2020,Lower middle income,3278,69,85,97
+MNE,Montenegro,Europe & Central Asia,2015,Upper middle income,627,66,97,98
+MNE,Montenegro,Europe & Central Asia,2020,Upper middle income,628,67,99,100
+MAR,Morocco,Middle East & North Africa,2015,Lower middle income,34664,61,84,96
+MAR,Morocco,Middle East & North Africa,2020,Lower middle income,36911,64,90,98
+MOZ,Mozambique,Sub-Saharan Africa,2015,Low income,27042,34,51,80
+MOZ,Mozambique,Sub-Saharan Africa,2020,Low income,31255,37,63,88
+MMR,Myanmar,East Asia & Pacific,2015,Lower middle income,52681,30,74,88
+MMR,Myanmar,East Asia & Pacific,2020,Lower middle income,54410,31,84,95
+NAM,Namibia,Sub-Saharan Africa,2015,Upper middle income,2315,47,83,97
+NAM,Namibia,Sub-Saharan Africa,2020,Upper middle income,2541,52,84,96
+NRU,Nauru,East Asia & Pacific,2015,High income,10,100,100,100
+NRU,Nauru,East Asia & Pacific,2020,High income,11,100,100,100
+NPL,Nepal,South Asia,2015,Low income,27015,19,88,90
+NPL,Nepal,South Asia,2020,Lower middle income,29137,21,90,90
+NLD,Netherlands,Europe & Central Asia,2015,High income,16938,90,100,100
+NLD,Netherlands,Europe & Central Asia,2020,High income,17135,92,100,100
+NZL,New Zealand,East Asia & Pacific,2015,High income,4615,86,100,100
+NZL,New Zealand,East Asia & Pacific,2020,High income,4822,87,100,100
+NIC,Nicaragua,Latin America & Caribbean,2015,Lower middle income,6223,58,81,97
+NIC,Nicaragua,Latin America & Caribbean,2020,Lower middle income,6625,59,82,97
+NER,Niger,Sub-Saharan Africa,2015,Low income,20002,16,45,88
+NER,Niger,Sub-Saharan Africa,2020,Low income,24207,17,47,86
+NGA,Nigeria,Sub-Saharan Africa,2015,Lower middle income,181137,48,69,85
+NGA,Nigeria,Sub-Saharan Africa,2020,Lower middle income,206140,52,78,92
+MKD,North Macedonia,Europe & Central Asia,2015,Upper middle income,2079,57,97,97
+MKD,North Macedonia,Europe & Central Asia,2020,Upper middle income,2083,58,98,98
+NOR,Norway,Europe & Central Asia,2015,High income,5200,81,100,100
+NOR,Norway,Europe & Central Asia,2020,High income,5421,83,100,100
+OMN,Oman,Middle East & North Africa,2015,High income,4267,81,90,94
+OMN,Oman,Middle East & North Africa,2020,High income,5107,86,92,95
+PAK,Pakistan,South Asia,2015,Lower middle income,199427,36,89,94
+PAK,Pakistan,South Asia,2020,Lower middle income,220892,37,90,93
+PLW,Palau,East Asia & Pacific,2015,Upper middle income,18,78,100,100
+PLW,Palau,East Asia & Pacific,2020,High income,18,81,100,100
+PAN,Panama,Latin America & Caribbean,2015,Upper middle income,3968,67,93,98
+PAN,Panama,Latin America & Caribbean,2020,Upper middle income,4315,68,94,98
+PNG,Papua New Guinea,East Asia & Pacific,2015,Lower middle income,8108,13,41,85
+PNG,Papua New Guinea,East Asia & Pacific,2020,Lower middle income,8947,13,45,86
+PRY,Paraguay,Latin America & Caribbean,2015,Upper middle income,6689,61,97,100
+PRY,Paraguay,Latin America & Caribbean,2020,Upper middle income,7133,62,100,100
+PER,Peru,Latin America & Caribbean,2015,Upper middle income,30471,77,90,95
+PER,Peru,Latin America & Caribbean,2020,Upper middle income,32972,78,93,97
+PHL,Philippines,East Asia & Pacific,2015,Lower middle income,102113,46,92,96
+PHL,Philippines,East Asia & Pacific,2020,Lower middle income,109581,47,94,97
+POL,Poland,Europe & Central Asia,2015,High income,38034,60,100,100
+POL,Poland,Europe & Central Asia,2020,High income,37847,60,100,100
+PRT,Portugal,Europe & Central Asia,2015,High income,10368,64,100,100
+PRT,Portugal,Europe & Central Asia,2020,High income,10197,66,100,100
+ROU,Romania,Europe & Central Asia,2015,Upper middle income,19925,54,100,100
+ROU,Romania,Europe & Central Asia,2020,Upper middle income,19238,54,100,100
+RUS,Russian Federation,Europe & Central Asia,2015,Upper middle income,144985,74,97,99
+RUS,Russian Federation,Europe & Central Asia,2020,Upper middle income,145934,75,97,99
+RWA,Rwanda,Sub-Saharan Africa,2015,Low income,11369,17,57,80
+RWA,Rwanda,Sub-Saharan Africa,2020,Low income,12952,17,60,83
+WSM,Samoa,East Asia & Pacific,2015,Lower middle income,194,19,91,91
+WSM,Samoa,East Asia & Pacific,2020,Lower middle income,198,18,92,92
+SEN,Senegal,Sub-Saharan Africa,2015,Low income,14578,46,79,94
+SEN,Senegal,Sub-Saharan Africa,2020,Lower middle income,16744,48,85,95
+SRB,Serbia,Europe & Central Asia,2015,Upper middle income,8877,56,93,92
+SRB,Serbia,Europe & Central Asia,2020,Upper middle income,8737,56,95,95
+SLE,Sierra Leone,Sub-Saharan Africa,2015,Low income,7172,41,58,76
+SLE,Sierra Leone,Sub-Saharan Africa,2020,Low income,7977,43,64,78
+SGP,Singapore,East Asia & Pacific,2015,High income,5592,100,100,100
+SGP,Singapore,East Asia & Pacific,2020,High income,5850,100,100,100
+SLB,Solomon Islands,East Asia & Pacific,2015,Lower middle income,603,22,69,91
+SLB,Solomon Islands,East Asia & Pacific,2020,Lower middle income,687,25,67,91
+SOM,Somalia,Sub-Saharan Africa,2015,Low income,13797,43,49,74
+SOM,Somalia,Sub-Saharan Africa,2020,Low income,15893,46,56,79
+ZAF,South Africa,Sub-Saharan Africa,2015,Upper middle income,55386,65,92,99
+ZAF,South Africa,Sub-Saharan Africa,2020,Upper middle income,59309,67,94,100
+SSD,South Sudan,Sub-Saharan Africa,2015,Low income,10716,19,41,61
+SSD,South Sudan,Sub-Saharan Africa,2020,Low income,11194,20,41,70
+ESP,Spain,Europe & Central Asia,2015,High income,46672,80,100,100
+ESP,Spain,Europe & Central Asia,2020,High income,46755,81,100,100
+LKA,Sri Lanka,South Asia,2015,Lower middle income,20908,18,90,98
+LKA,Sri Lanka,South Asia,2020,Lower middle income,21413,19,92,100
+SDN,Sudan,Sub-Saharan Africa,2015,Lower middle income,38903,34,59,73
+SDN,Sudan,Sub-Saharan Africa,2020,Low income,43849,35,60,74
+SUR,Suriname,Latin America & Caribbean,2015,Upper middle income,559,66,96,98
+SUR,Suriname,Latin America & Caribbean,2020,Upper middle income,587,66,98,99
+SWE,Sweden,Europe & Central Asia,2015,High income,9765,87,100,100
+SWE,Sweden,Europe & Central Asia,2020,High income,10099,88,100,100
+CHE,Switzerland,Europe & Central Asia,2015,High income,8297,74,100,100
+CHE,Switzerland,Europe & Central Asia,2020,High income,8655,74,100,100
+SYR,Syrian Arab Republic,Middle East & North Africa,2015,Lower middle income,17997,52,94,95
+SYR,Syrian Arab Republic,Middle East & North Africa,2020,Low income,17501,55,94,95
+TJK,Tajikistan,Europe & Central Asia,2015,Lower middle income,8454,27,76,95
+TJK,Tajikistan,Europe & Central Asia,2020,Lower middle income,9538,28,82,96
+THA,Thailand,East Asia & Pacific,2015,Upper middle income,68715,48,100,100
+THA,Thailand,East Asia & Pacific,2020,Upper middle income,69800,51,100,100
+TLS,Timor-Leste,East Asia & Pacific,2015,Lower middle income,1196,29,75,90
+TLS,Timor-Leste,East Asia & Pacific,2020,Lower middle income,1318,31,85,96
+TGO,Togo,Sub-Saharan Africa,2015,Low income,7323,40,64,88
+TGO,Togo,Sub-Saharan Africa,2020,Low income,8279,43,69,91
+TON,Tonga,East Asia & Pacific,2015,Lower middle income,101,23,99,100
+TON,Tonga,East Asia & Pacific,2020,Upper middle income,106,23,99,100
+TUN,Tunisia,Middle East & North Africa,2015,Lower middle income,11180,68,95,100
+TUN,Tunisia,Middle East & North Africa,2020,Lower middle income,11819,70,98,100
+TKM,Turkmenistan,Europe & Central Asia,2015,Upper middle income,5565,50,98,100
+TKM,Turkmenistan,Europe & Central Asia,2020,Upper middle income,6031,53,100,100
+TUV,Tuvalu,East Asia & Pacific,2015,Upper middle income,11,60,100,100
+TUV,Tuvalu,East Asia & Pacific,2020,Upper middle income,12,64,100,100
+UGA,Uganda,Sub-Saharan Africa,2015,Low income,38225,22,48,77
+UGA,Uganda,Sub-Saharan Africa,2020,Low income,45741,25,56,79
+UKR,Ukraine,Europe & Central Asia,2015,Lower middle income,44922,69,94,92
+UKR,Ukraine,Europe & Central Asia,2020,Lower middle income,43734,69,94,92
+GBR,United Kingdom,Europe & Central Asia,2015,High income,65860,83,100,100
+GBR,United Kingdom,Europe & Central Asia,2020,High income,67886,84,100,100
+USA,United States of America,North America,2015,High income,320878,82,100,100
+USA,United States of America,North America,2020,High income,331003,83,100,100
+URY,Uruguay,Latin America & Caribbean,2015,High income,3412,95,100,100
+URY,Uruguay,Latin America & Caribbean,2020,High income,3474,96,100,100
+UZB,Uzbekistan,Europe & Central Asia,2015,Lower middle income,30930,51,98,100
+UZB,Uzbekistan,Europe & Central Asia,2020,Lower middle income,33469,50,98,100
+VUT,Vanuatu,East Asia & Pacific,2015,Lower middle income,271,25,90,100
+VUT,Vanuatu,East Asia & Pacific,2020,Lower middle income,307,26,91,100
+VNM,Vietnam,East Asia & Pacific,2015,Lower middle income,92677,34,93,98
+VNM,Vietnam,East Asia & Pacific,2020,Lower middle income,97339,37,97,100
+ZMB,Zambia,Sub-Saharan Africa,2015,Lower middle income,15879,42,61,86
+ZMB,Zambia,Sub-Saharan Africa,2020,Lower middle income,18384,45,65,87
+ZWE,Zimbabwe,Sub-Saharan Africa,2015,Low income,13815,32,65,94
+ZWE,Zimbabwe,Sub-Saharan Africa,2020,Lower middle income,14863,32,63,93
diff --git a/p7/README.md b/p7/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..23df7bb68bd9de326e90801c67b61d98a410d38b
--- /dev/null
+++ b/p7/README.md
@@ -0,0 +1,41 @@
+# Project 7 (P7): Drinking Water Accessibility
+
+
+## Corrections and clarifications:
+
+* None yet.
+
+**Find any issues?** Report to us:
+
+- Srinath Namburi <sgnamburi@wisc.edu>
+- Karthik Suresh <ksuresh6@wisc.edu>
+
+## Instructions:
+
+This project will focus on **utilizing lists** and **managing dictionaries**. To start, download [`p7.ipynb`](https://git.doit.wisc.edu/cdis/cs/courses/cs220/cs220-s23-projectdesign/-/blob/main/p7/otter_files/student/p7.ipynb), [`p7_test.py`](https://git.doit.wisc.edu/cdis/cs/courses/cs220/cs220-s23-projectdesign/-/blob/main/p7/otter_files/student/p7_test.py), and [`water_accessibility.csv`](https://git.doit.wisc.edu/cdis/cs/courses/cs220/cs220-s23-projectdesign/-/raw/main/p7/otter_files/student/water_accessibility.csv).
+
+
+**Note:** Please go through [lab-p7](https://git.doit.wisc.edu/cdis/cs/courses/cs220/cs220-s23-projectdesign/-/tree/main/lab-p7) before you start the project. The lab contains some very important information that will be necessary for you to finish the project.
+
+You will work on `p7.ipynb` and hand it in. You should follow the provided directions for each question. Questions have **specific** directions on what **to do** and what **not to do**. 
+
+After you've downloaded the file to your `p7` directory, open a terminal window and use `cd` to navigate to that directory. To make sure you're in the correct directory in the terminal, type `pwd`. To make sure you've downloaded the notebook file, type `ls` to ensure that `p7.ipynb`, `p7_test.py`, and `water_accessibility.csv` are listed. Then run the command `jupyter notebook` to start Jupyter, and get started on the project!
+
+**IMPORTANT**: You should **NOT** terminate/close the session where you run the above command. If you need to use any other Terminal/PowerShell commands, open a new window instead. Keep constantly saving your notebook file, by either clicking the "Save and Checkpoint" button (floppy disk) or using the appropriate keyboard shortcut.
+
+------------------------------
+
+## IMPORTANT Submission instructions:
+- Review the [Grading Rubric](https://git.doit.wisc.edu/cdis/cs/courses/cs220/cs220-s23-projects/-/tree/main/p7/rubric.md), to ensure that you don't lose points during code review.
+- You must **save your notebook file** before you run the cell containing **export**.
+- Login to [Gradescope](https://www.gradescope.com/) and upload the zip file into the p7 assignment.
+- If you completed the project with a **partner**, make sure to **add their name** by clicking "Add Group Member"
+in Gradescope when uploading the p6 zip file.
+       
+   <img src="images/add_group_member.png" width="400">
+   
+- It is **your responsibility** to make sure that your project clears auto-grader tests on the Gradescope test system. Otter test results should be available in a few minutes after your submission. You should be able to see both PASS / FAIL results for the 20 test cases and your total score, which is accessible via Gradescope Dashboard (as in the image below):
+       
+    <img src="images/gradescope.png" width="400">
+
+- If you feel you have been incorrectly graded on a particular question during manual review, then you can find more about the Regrade Request process [here](https://piazza.com/class/ld8bqui1lgeas/post/105).
diff --git a/p7/images/add_group_member.png b/p7/images/add_group_member.png
new file mode 100644
index 0000000000000000000000000000000000000000..402e5962e3e54ce8349f60ccfe4ce2b60840dd3b
Binary files /dev/null and b/p7/images/add_group_member.png differ
diff --git a/p7/images/autograder_success.png b/p7/images/autograder_success.png
new file mode 100644
index 0000000000000000000000000000000000000000..7fece5968bff83153462f4aa12302d1bab25702f
Binary files /dev/null and b/p7/images/autograder_success.png differ
diff --git a/p7/images/gradescope.png b/p7/images/gradescope.png
new file mode 100644
index 0000000000000000000000000000000000000000..a46c44d2a9b9b8d4b76a9721809d2e81754e946a
Binary files /dev/null and b/p7/images/gradescope.png differ
diff --git a/p7/p7.ipynb b/p7/p7.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..6d8d8526ee2d42c56bb3c054464a6d421e6c3f73
--- /dev/null
+++ b/p7/p7.ipynb
@@ -0,0 +1,2471 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "4ec2178b",
+   "metadata": {
+    "cell_type": "code",
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "# import and initialize otter\n",
+    "import otter\n",
+    "grader = otter.Notebook(\"p7.ipynb\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "4098a8db",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "import p7_test"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "f080923f",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# PLEASE FILL IN THE DETAILS\n",
+    "# Enter none if you don't have a project partner\n",
+    "\n",
+    "# project: p7\n",
+    "# submitter: NETID1\n",
+    "# partner: NETID2"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "12654767",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "# Project 7: Drinking Water Accessibility"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "2b970d5d",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "## Learning Objectives:\n",
+    "\n",
+    "In this project you will demonstrate how to:\n",
+    "\n",
+    "- Write programs to interpret data present in csv files,\n",
+    "- Use lists and dictionaries effectively to manage data,\n",
+    "- **Develop good coding styling habits (points may be deducted for bad coding styles)**"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "d997f9d6",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "## Testing your code:\n",
+    "\n",
+    "Along with this notebook, you must have downloaded the file `p7_test.py`. If you are curious about how we test your code, you can explore this file, and specifically the value of the variable `expected_json`, to understand the expected answers to the questions. You can have a look at [P2](https://git.doit.wisc.edu/cdis/cs/courses/cs220/cs220-s23-projects/-/tree/main/p2/p2.ipynb) if you have forgotten how to read the outputs of the `grader.check` function calls."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "60ecd7f7",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Please go through [Lab-P7](https://git.doit.wisc.edu/cdis/cs/courses/cs220/cs220-s23-projects/-/tree/main/lab-p7) before starting this project.** The lab introduces some useful techniques necessary for this project."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "8c9d3711",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "## Project Description:\n",
+    "\n",
+    "Universal access to safe drinking water is a fundamental need and human right. Securing access for all would go a long way in reducing illness and death, especially among children. \"Safely managed\" drinking water services represent an ambitious new rung on the ladder used to track progress on drinking water. Since 2000, 2 billion people have gained access to safely managed services (i.e., accessible on-premises, available when needed, and free from contamination). In 2020, 5.8 billion people used safely managed services and a further 2 billion people used basic services. However, 771 million people still lacked even a basic level of service, including 282 million who used a “limited” water service (source from which water collection time exceeds 30 minutes), 367 million who used unimproved sources and 122 million who still collected drinking water directly from rivers, lakes, and other surface water sources. The data reveal pronounced disparities, with the poorest and those living in rural areas least likely to use a basic service. In most countries, the burden of water collection continues to fall mainly to women and girls.\n",
+    "\n",
+    "[The Unicef website](https://data.unicef.org/) states that \"consistent, credible data about children’s situations are critical to the improvement of their lives – and indispensable to realizing the rights of every child.\" Data Scientists will play an important role in reaching this goal.\n",
+    "\n",
+    "For this project, you'll be analyzing data drawn from multiple sources. Our data is primarily drawn from the report titled [\"Progress on Household Drinking Water, Sanitation and Hygiene\"](https://washdata.org/sites/default/files/2021-07/jmp-2021-wash-households.pdf) data published by the Unicef/WHO Joint Monitoring Programme for Water Supply, Sanitation and Hygiene (2021). The original dataset can be found [here](https://data.unicef.org/topic/water-and-sanitation/drinking-water/) if you are interested in exploring the dataset yourself. Our dataset is further augmented by data from The World Bank on the [income levels of each country](https://datatopics.worldbank.org/world-development-indicators/the-world-by-income-and-region.html)."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "1abbab4c",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "## Dataset:\n",
+    "\n",
+    "The JMP report defines *people who have access to an [improved source of water](https://www.cdc.gov/healthywater/global/assessing.html#ImprovedDrinking) within 30 minutes round trip collection time* as having [at least basic access](https://www.cdc.gov/healthywater/global/assessing.html#DrinkingWaterSources) to water. For this project, we will focus on the **percentage of population** of each country who had **at least basic** water supply in the years **2015** and **2020**. Open `water_accessibility.csv` with Microsoft Excel or some other Spreadsheet viewer and look at the list of countries in the dataset. Data for each country appears twice, one row for the year *2015* and the other row for year *2020*. Countries which had incomplete data have been **omitted** from the dataset, and we will **ignore** those countries in this project. You do **not** have to deal with any **missing data** in the dataset.\n",
+    "\n",
+    "The data shows:\n",
+    "- `country_code` : the unique country code that consists of three alphabet letters\n",
+    "- `country_name` : the name of the country\n",
+    "- `region` : the geographical location of the country (does not equal to its corresponding continents, but follows the administrative groupings from [The World Bank](https://datahelpdesk.worldbank.org/knowledgebase/articles/906519-world-bank-country-and-lending-groups))\n",
+    "- `year` : the year in which it was subject to data collection\n",
+    "- `income_level` : the classification of income level based on GNI per capita in US dollars ([The World Bank Atlas Method](https://datahelpdesk.worldbank.org/knowledgebase/articles/378834-how-does-the-world-bank-classify-countries))\n",
+    "- `pop` : population of the country in a specific year (in thousands)\n",
+    "- `urban_percent` : the percentage of population in a given country that is urban\n",
+    "- `national_alb` : the percentage of a country's population that has access to at least basic water supply\n",
+    "- `urban_alb` : the percentage of a country's urban population that has access to at least basic water supply"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "3226285c",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "## Project Requirements:\n",
+    "\n",
+    "You **may not** hardcode indices in your code, unless the question explicitly says so. If you open your `.csv` file with Excel, manually count through the rows and use this number to loop through the dataset, this is also considered as hardcoding. We'll **manually deduct** points from your autograder score on Gradescope during code review. You are **allowed** to assume that the dataset is ordered in such a way that the *even indices* (0, 2 .. etc;) corresponds to the rows with information for the year 2015, and the *odd indices* (1, 3 .. etc;) correspond to the rows with information for year 2020. Using this fact about the dataset will **not** be considered hardcoding.\n",
+    "\n",
+    "**Store** your final answer for each question in the **variable specified for each question**. This step is important because Otter grades your work by comparing the value of this variable against the correct answer.\n",
+    "\n",
+    "For some of the questions, we'll ask you to write (then use) a function to compute the answer. If you compute the answer **without** creating the function we ask you to write, we'll **manually deduct** points from your autograder score on Gradescope, even if the way you did it produced the correct answer. \n",
+    "\n",
+    "Required Functions:\n",
+    "- `cell`\n",
+    "- `get_col_dict`\n",
+    "\n",
+    "In this project, you will also be required to define certain **data structures**. If you do not create these data structures exactly as specified, we'll **manually deduct** points from your autograder score on Gradescope, even if the way you did it produced the correct answer.\n",
+    "\n",
+    "Required Data Structures:\n",
+    "- `dict_2015`\n",
+    "- `dict_2020`\n",
+    "- `rural_non_alb_bin_2015_dict`\n",
+    "- `rural_non_alb_bin_2020_dict`\n",
+    "    \n",
+    "Students are only allowed to use Python commands and concepts that have been taught in the course prior to the release of p7. Therefore, **you should not use the pandas module**.  We will **manually deduct** points from your autograder score on Gradescope otherwise.\n",
+    "\n",
+    "For more details on what will cause you to lose points during code review and specific requirements, please take a look at the [Grading rubric](https://git.doit.wisc.edu/cdis/cs/courses/cs220/cs220-s23-projects/-/blob/main/p7/rubric.md)."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "30a1f9b6",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "## Incremental Coding and Testing:\n",
+    "\n",
+    "You should always strive to do incremental coding. **Incremental coding enables you to avoid challenging bugs.** Always write a few lines of code and then test those lines of code, before proceeding to write further code. You can call the `print` function to test intermediate step outputs.\n",
+    "\n",
+    "We also recommend you do incremental testing: make sure to run the local tests as soon as you are done with a question. This will ensure that you haven't made a big mistake that might potentially impact the rest of your project solution. Please refrain from making multiple submissions on Gradescope for testing individual questions' answers. Instead use the local tests, to test your solution on your laptop.\n",
+    "\n",
+    "That said, it is **important** that you check the Gradescope test results as soon as you submit your project on Gradescope. Test results on Gradescope are typically available somewhere between 2 to 10 minutes after the submission.\n",
+    "\n",
+    "Also, remember to check with the [P7 rubric](https://git.doit.wisc.edu/cdis/cs/courses/cs220/cs220-s23-projects/-/blob/main/p7/rubric.md) to verify that you will not be losing any points during manual review."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "301913cb",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "## Project Questions and Functions:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "6db03afc",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# it is considered a good coding practice to place all import statements at the top of the notebook\n",
+    "# please place all your import statements in this cell if you need to import any more modules for this project\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "84fc95f0",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "First, read the data stored in `water_accessibility.csv`. You **must** read the csv file and then get the header and rows (and store them into `csv_header` and `csv_rows` variables). You will **lose points** if you use any other names to store these variables."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "1bee769c",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# read the data stored in water_accessibility.csv\n",
+    "\n",
+    "# read the data in \"water_accessibility.csv\"\n",
+    "csv_data = ... \n",
+    "\n",
+    "# split the header and other rows into appropriate variables\n",
+    "csv_header = ...\n",
+    "csv_rows = ...\n",
+    "\n",
+    "print(csv_header)\n",
+    "print(csv_rows[0:2])"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "899b98a0",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "### Function 1: `cell(row_idx, col_name)` \n",
+    "\n",
+    "This function must take in a row index, `row_idx` and a column name, `col_name` as its inputs, and return the value in `water_accessibility.csv` stored there. There is **no missing data** in this dataset.\n",
+    "\n",
+    "You **must** define the variables `csv_header` and `csv_rows` as in Lab-P7, and you **must** copy/paste your `cell` function from Lab-P7.\n",
+    "\n",
+    "**Important:** You **must** only use the `cell` function to extract data from the dataset. If you extract any data without explicitly using this function, you will **lose points** during manual review. Moreover, your `cell` function **must** handle typecasting all columns and multiplying the population (`pop`) by *1000*. You will **lose points** if you perform these steps outside the `cell` function."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "8d660407",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# define the cell function here\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "22319e1e",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "After you define the function `cell`, run the following two cells to test whether it works."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "0f8f552c",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "cell_test1 = cell(0, 'country_name')\n",
+    "cell_test2 = cell(1, 'year')\n",
+    "cell_test3 = cell(2, 'urban_percent')\n",
+    "cell_test4 = cell(3, 'urban_alb')\n",
+    "cell_test5 = cell(4, 'income_level')\n",
+    "cell_test6 = cell(5, 'pop')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "b69f3c64",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"cell_test\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "029ef4df",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "You are all set! You are now ready to start solving the questions."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "ec0db606",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 1:** Which country had the highest population (`pop`) in *2020*?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "267544c7",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'highest_pop_country', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "823559e7",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q1\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "541486f4",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 2:** Which country had the highest population (`pop`) **increase** between *2015* and *2020*?\n",
+    "\n",
+    "There is a **unique** country in this dataset whose population increased the most. You **do not** have to worry about ties.\n",
+    "\n",
+    "**Hint:** Recall how to loop through the dataset and extract data from each year from [Lab-P7](https://git.doit.wisc.edu/cdis/cs/courses/cs220/cs220-s23-projects/-/tree/main/lab-p7)."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "166a98dd",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'highest_pop_inc_country', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "5021ef50",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q2\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "1a6716cb",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 3:** Which country had the highest **increase** in at least basic (`national_alb`) water supply between the years of *2015* and *2020*? \n",
+    "\n",
+    "There is a **unique** country in this dataset whose `national_alb` value increased the most. You **do not** have to worry about ties.\n",
+    "\n",
+    "**Hint:** Take a look at q7 in Lab-P7 to see how to compute the change in `national_alb` between *2015* and *2020* for each country."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "c2066e60",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'highest_nat_alb_inc_country', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "0bab1616",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q3\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "9dc35fc4",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 4:** What was the `income_level` in *2020* of the country with the highest increase in at least basic (`national_alb`) water supply between *2015* and *2020*?\n",
+    "\n",
+    "You **must** not repeat your computation here. Instead modify your code for q3 to extract the correct index, and use that to answer this question."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "6e8927dd",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'highest_alb_inc_income_level', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "e558e594",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q4\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "72a83cc4",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 5:** What is the **total** population (`pop`) of **all** the countries (in the dataset) in the `year` *2015*?\n",
+    "\n",
+    "The `pop` column stores the population in thousands. Your `cell` function already multiplies the value in this column by *1000*, so you can directly use the value returned by `cell` as the population of the country."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "bbc9f7d5",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'total_pop_2015', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "495a9cc2",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q5\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "6fd46918",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 6:** What was the global **percentage** of urban population (`urban_percent`) across **all** countries (in the dataset) in the `year` *2015*?\n",
+    "\n",
+    "You need to find the **total** urban population by *multiplying* the `pop` and `urban_percent` columns of each country and *adding* this up (the urban population). Then you need to *divide* by the **total** population to get the percentage of urban population across all the countries.\n",
+    "\n",
+    "Your output **must** be an **int**. You **must** use the `round` function to round your answer to the nearest integer."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "59597ee6",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'urban_pop_percent_2015', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "51239c61",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q6\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "43f8cde2",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 7:** What was the **total** population (`pop`) of countries that were in the *High income* group (`income_level`) in the `year` *2020*?\n",
+    "\n",
+    "Your output **must** be an **int**."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "972f9e3f",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'high_income_pop', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "625825be",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q7\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "c832901b",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 8:** Which *income group* (`income_level`) had the **least** population (`pop`) in the `year` *2015*?\n",
+    "\n",
+    "You must find the **total** population (`pop`) for each `income_level`, and find the `income_level` which has the **least** total population.\n",
+    "\n",
+    "**Hint:** There are several ways to solve this problem efficiently (including using `dicts`). You can try to solve this problem using dicts if you want to. However, another approach that you might already be familiar with from p6 is to first create a *list* of all the **unique** income levels, and then loop through the entire dataset for **each** income level to find the total population of that income level, before comparing these numbers to find the income level with the least population."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "c6f5df91",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'least_pop_income_group', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "6e3c7f47",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q8\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "23bce21c",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 9:** Create a **list** of the names (`country_name`) of all countries in the *North America* `region` that **tied** for the **maximum** `national_alb` in *2015* (in *North America*).\n",
+    "\n",
+    "You need to first find the **maximum** value of `national_alb` among all countries in the `region` *North America*, and then make a `list` of **all** the countries in this region having this `national_alb` value. **Multiple** countries from *North America* have the same maximum `national_alb` value, so your output **must** be a `list` of **all** those countries."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "574514c6",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'na_max_alb_countries', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "70816313",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q9\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "505aefcf",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "### Function 2: `get_col_dict(col_name, year)` \n",
+    "\n",
+    "This function should take in a column `col_name` and a `year` (*2015* or *2020*) as its inputs, and return a `dict` where each key is a `country_code` and the corresponding value is the value under the given `col_name` for the country with the said `country_code` in the given `year`.\n",
+    "\n",
+    "For example, the value returned by `get_col_dict('country_name', 2015)` should be something like the following:\n",
+    "```python\n",
+    "{'AFG': 'Afghanistan',\n",
+    " 'ALB': 'Albania',\n",
+    " 'DZA': 'Algeria',\n",
+    " 'AND': 'Andorra',\n",
+    " 'AGO': 'Angola',\n",
+    " 'ARM': 'Armenia',\n",
+    " 'AUS': 'Australia',\n",
+    " 'AUT': 'Austria',\n",
+    " 'AZE': 'Azerbaijan',\n",
+    " 'BGD': 'Bangladesh',\n",
+    " ...\n",
+    "}\n",
+    "```\n",
+    "\n",
+    "and the value returned by `get_col_dict('pop', 2020)` should be something like the following:\n",
+    "```python\n",
+    "{'AFG': 38928000,\n",
+    " 'ALB': 2878000,\n",
+    " 'DZA': 43851000,\n",
+    " 'AND': 77000,\n",
+    " 'AGO': 32866000,\n",
+    " 'ARM': 2963000,\n",
+    " 'AUS': 25500000,\n",
+    " 'AUT': 9006000,\n",
+    " 'AZE': 10139000,\n",
+    " 'BGD': 164689000,\n",
+    " ...\n",
+    "}\n",
+    "```\n",
+    "\n",
+    "Start with the following code snippet and complete the function."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "6ea7d480",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# replace the ... with your code\n",
+    "\n",
+    "def get_col_dict(col_name, year):\n",
+    "    col_dict = {}\n",
+    "    if year == 2015:\n",
+    "        for idx in range (0, len(csv_rows), 2):\n",
+    "            col_dict[...] = ... \n",
+    "    elif year == 2020:\n",
+    "        for idx in range (1, len(csv_rows), 2):\n",
+    "            col_dict[...] = ... \n",
+    "    return col_dict"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "4da85178",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "After you define the function `get_col_dict`, run the following two cells to test whether it works."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "c8c01873",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "get_col_dict_test1 = get_col_dict('region', 2020)\n",
+    "get_col_dict_test2 = get_col_dict('national_alb', 2015)\n",
+    "get_col_dict_test3 = get_col_dict('pop', 2020)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "ffb16361",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"get_col_dict\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "fd5d8dbe",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "### Data Structures 1: `dict_2015`\n",
+    "\n",
+    "You must now create a data structure named `dict_2015`. This data structure must be a **dict**. Each key must be a `country_code`, and the corresponding value must be another **dict**. As for the inner dictionary, the keys must be the various column names, and the values must be the values under the column name for `country_code` in the `year` *2015*.\n",
+    "\n",
+    "The keys for each of the *inner* dictionary are the column names:\n",
+    "- `'country_name'`\n",
+    "- `'region'`\n",
+    "- `'income_level'`\n",
+    "- `'year'`\n",
+    "- `'pop'`\n",
+    "- `'urban_percent'`\n",
+    "- `'national_alb'`\n",
+    "- `'urban_alb'`\n",
+    "\n",
+    "You are **allowed** to *hardcode* the **names** of all these columns (i.e., the keys of the *inner* dictionaries).\n",
+    "\n",
+    "The data structure `dict_2015` should look something like this:\n",
+    "```python\n",
+    "{'AFG': {'country_name': 'Afghanistan',\n",
+    "  'region': 'South Asia',\n",
+    "  'income_level': 'Low income',\n",
+    "  'year': 2015,\n",
+    "  'pop': 34414000,\n",
+    "  'urban_percent': 25,\n",
+    "  'national_alb': 61,\n",
+    "  'urban_alb': 87},\n",
+    " 'ALB': {'country_name': 'Albania',\n",
+    "  'region': 'Europe & Central Asia',\n",
+    "  'income_level': 'Upper middle income',\n",
+    "  'year': 2015,\n",
+    "  'pop': 2891000,\n",
+    "  'urban_percent': 57,\n",
+    "  'national_alb': 93,\n",
+    "  'urban_alb': 95},\n",
+    "  ...\n",
+    "}\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "db358fa4",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# define the variable 'dict_2015' here as described above\n",
+    "# you may display the variable for testing purposes while you define it,\n",
+    "# BUT you MUST remove the line displaying 'dict_2015' before submission as the output will be too large to display\n",
+    "\n",
+    "# initialize as an empty dictionary\n",
+    "dict_2015 = ...\n",
+    "\n",
+    "country_dict = get_col_dict('country_name', 2015)\n",
+    "region_dict = get_col_dict(..., ...)\n",
+    "# call get_col_dict for other columns\n",
+    "...\n",
+    "\n",
+    "# add data from all these dicts to dict_2015"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "582e6dd2",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "After you define the data structure `dict_2015`, run the following cell to test whether you have defined it properly."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "1b82de8b",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"dict_2015\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "7e4d448a",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "### Data Structures 2: `dict_2020`\n",
+    "\n",
+    "You must now create a data structure named `dict_2020`. This data structure must be a **dict**. Each key must be a `country_code`, and the corresponding value must be another **dict**. As for the inner dictionary, the keys must be the various column names, and the values must be the values under the column name for `country_code` in the `year` *2020*.\n",
+    "\n",
+    "The keys for each of the *inner* dictionary are the column names:\n",
+    "- `'country_name'`\n",
+    "- `'region'`\n",
+    "- `'income_level'`\n",
+    "- `'year'`\n",
+    "- `'pop'`\n",
+    "- `'urban_percent'`\n",
+    "- `'national_alb'`\n",
+    "- `'urban_alb'`\n",
+    "\n",
+    "You are **allowed** to *hardcode* the **names** of all these columns (i.e., the keys of the *inner* dictionaries)."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "d9d1fa73",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# define the variable 'dict_2020' here as described above\n",
+    "# you may display the variable for testing purposes while you define it,\n",
+    "# BUT you MUST remove the line displaying 'dict_2020' before submission as the output will be too large to display\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "27206e45",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "After you define the data structure `dict_2020`, run the following cell to test whether you have defined it properly."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "f7f2590c",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"dict_2020\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "f5823f27",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "#### From this point onwards, you are only allowed to access data from `water_accessibility.csv` by querying from the **dicts** `dict_2015` and `dict_2020`. You will **lose points** during manual review if you access the data through any other means (inlcuding calling the `cell` function)."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "122010ce",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 10:** Output the data from *China* (`country_code`: *CHN*) for the `year` *2020*.\n",
+    "\n",
+    "Your output **must** be a **dict** mapping each column name to the value for the country *CHN* in the year *2020*. You **must** answer this by querying data from `dict_2020`.\n",
+    "\n",
+    "The expected output is:\n",
+    "```python\n",
+    "{'country_name': 'China',\n",
+    " 'region': 'East Asia & Pacific',\n",
+    " 'income_level': 'Upper middle income',\n",
+    " 'year': 2020,\n",
+    " 'pop': 1463141000,\n",
+    " 'urban_percent': 62,\n",
+    " 'national_alb': 94,\n",
+    " 'urban_alb': 97}\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "1f92792a",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'chn_2020_dict', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "3e0db750",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q10\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "1c6f7551",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 11:** What is the national at least basic (`national_alb`) water supply for *Nepal* (`country_code`: *NPL*) in the `year` *2015*?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "6afb44a6",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'npl_national_alb_2015', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "8628138d",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q11\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "a1c2a622",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 12:** How much did the population (`pop`) of *Finland* **increase** (`country_code`: *FIN*) from the `year` *2015* to *2020*?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "9d227a6e",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'population_change_fin', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "a621aa32",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q12\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "1bac50ce",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 13:** For each `income_level`, find the **total** population (`pop`) of all countries within that `income_level` in *2020*.\n",
+    "\n",
+    "Your output **must** be a **dict** where each key is a `income_level`, and the corresponding value is the **sum** of populations (`pop`) of all the countries from that `income_level` in the `year` *2020*."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "e2244625",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'income_level_pops', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "8ac9595f",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q13\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "4355a333",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 14:** For each `income_level`, find the **total** population (`pop`) of all countries who have access to at least basic water supply within that `income_level` in *2020*.\n",
+    "\n",
+    "Your output **must** be a **dict** where each key is a `income_level`, and the corresponding value is the **sum** of populations (`pop`) which have access to at least basic water supply of all the countries from that `income_level` in the `year` *2020*.\n",
+    "\n",
+    "You **must** round the population of **each** country with access to at least basic water supply to the **nearest** integer **before** adding them up.\n",
+    "\n",
+    "**Hint:** For each country, the population with at least basic water supply is `pop * national_alb / 100`. "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "2163db33",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'income_level_alb_pops', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "43d09315",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q14\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "2fc75f18",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 15:** For each `income_level`, find the **percentage** of population (`pop`) of all countries within that `income_level` with at least basic water supply in *2020*.\n",
+    "\n",
+    "Your output **must** be a **dict** where each key is a `income_level`, and the corresponding value is the **percentage** of the population (`pop`) which have access to at least basic water supply of all the countries from that `income_level` in the `year` *2020*. The percentages **must** be represented as **int**s between *0* and *100*. You **must** round each of the percentages to the **nearest** integer.\n",
+    "\n",
+    "**Hint:** You need to loop through the dictionary you found in Q13 (or Q14), and for each key, you need to divide the corresponding value in the Q14 dictionary by the value of the same key in the Q13 dictionary and multiply by 100. Take another look at Task 3.6 from Lab-P7, if you are not sure how to proceed here."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "8fc6a590",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'income_level_alb_percent', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "cce208df",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q15\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "a25919a2",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "### Data Structure 3: Adding `rural_alb`  to `dict_2015` and `dict_2020`\n",
+    "\n",
+    "Our dataset has data on the percentage of **national** and **urban** populations with at least basic water supply. However, it is usually **rural** populations which have the greatest difficulty in getting access to water.\n",
+    "\n",
+    "Luckily, we are able to calculate **rural_alb** from the given data using the formula:\n",
+    "\n",
+    "$$\n",
+    "rural_{alb} = \\frac{national_{alb} - \\left(urban_{alb} \\times \\frac{urban\\_percent}{100}\\right)}{\\left(1 - \\frac{urban\\_percent}{100}\\right)}\n",
+    "$$\n",
+    "\n",
+    "*If a country has `urban_percent` equal to `100`, then the country has a negligible rural population, and the formula above is not valid. For such countries, we will assume that `rural_alb` is the **same** as `urban_alb`.*\n",
+    "\n",
+    "You **must** loop through each country in `dict_2015` and `dict_2020`, and add an **additional** key value pair for each country. The new key should be the string: `\"rural_alb\"`, and the corresponding value should be the `rural_alb` value for that country as given by the formula above. You **must** round each number to the **nearest** integer."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "f897e182",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# add the additional key-value pair to both dicts 'dict_2015' and 'dict_2020' here\n",
+    "# you may display the variable for testing purposes while you define it,\n",
+    "# BUT you MUST remove the line displaying the dicts before submission as the output will be too large to display\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "873d577f",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "Run the following cell to test whether you have correctly updated the two data structures."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "f819df98",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"ds3\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "8ec2d557",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 16:** What's the percentage of rural population with at least basic (`rural_alb`) water supply in *Zimbabwe* (`country_code`: *ZWE*) in *2020*? \n",
+    "\n",
+    "You **must** answer this question by querying data from the dict `dict_2020`."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "82e8a1ed",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'zimbabwe_rural_alb_2020', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "39afe0ed",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q16\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "89ad1d5d",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "### Data Structure 4: `rural_non_alb` bins\n",
+    "\n",
+    "We have now managed to extract the percentage of rural population with access to atleast basic water supply for each of the countries in the dataset. We can now use this information to find out the countries whose rural populations do **not** have access to at least basic water supply.\n",
+    "\n",
+    "You **must** create two **dict**s (one for the `year` *2015* and one for *2020*) where the keys are the integers *0*, *10*, *20*, ..., *100*. The value corresponding to the integer *0* **must** be a **list** containing the names of all the countries for which their rural population **without** access to at least basic (which we can represent as `rural_non_alb`) water supply is `0 <= rural_non_alb < 10`. Similarly, the value corresponding to the key *10* must be a **list** of all countries for which `10 <= rural_non_alb < 20`, and so on.\n",
+    "\n",
+    "**Hints:**\n",
+    "1. You can find `rural_non_alb` as `rural_non_alb = 100 - rural_alb`.\n",
+    "2. You can find the bin which any country falls into by using the formula:\n",
+    "```python\n",
+    "rural_non_alb_bin = ((100 - rural_alb)//10) * 10\n",
+    "```\n",
+    "3. Even if a particular bin has no countries in it, you **must** still create a bin for it in your dict (with the value being an empty list). The starter code below will help you accomplish this."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "b87087c6",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'rural_non_alb_bin_2015_dict'\n",
+    "\n",
+    "# initialize as an empty dictionary\n",
+    "rural_non_alb_bin_2015_dict = ...\n",
+    "\n",
+    "# loop through the keys we want for the dictionary - 0, 10, 20, ..., 100 (inclusive of 100)\n",
+    "# and add them to the dictionary as keys with the value as an empty list\n",
+    "for rural_non_alb_bin in range(...):\n",
+    "    rural_non_alb_bin_2015_dict[rural_non_alb_bin] = []\n",
+    "\n",
+    "# loop through each country and add to the correct bin of rural_non_alb_bin_2015_dict"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "3494a2e3",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'rural_non_alb_bin_2020_dict'\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "0587f1dc",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "After you define the data structures `rural_non_alb_bin_2015_dict` and `rural_non_alb_bin_2020_dict`, run the following cell to test whether you have defined them properly."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "8a645c3e",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"rural_non_alb_bins\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "852082e7",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 17:** List all the countries which had `rural_non_alb` value between *20* and *29* (both inclusive) in the `year` *2015*.\n",
+    "\n",
+    "You **must** answer this question by querying the the **dict** `rural_non_alb_bin_2015_dict`."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "3d3cb290",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'bin_20_countries', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "9b39a0f5",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q17\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "cfa77a6b",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 18:** What are the countries in the **last** non-empty bin in the `year` *2020*?\n",
+    "\n",
+    "Your output **must** be a **list** of the countries in the bin with the **highest** percentage of rural population without at least basic access to water.\n",
+    "\n",
+    "**Hint:** You must first find the largest key of the **dict** `rural_non_alb_bin_2020_dict` with a non-empty bin, and then find the value of that key."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "df205363",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'last_non_empty_bin_2020', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "ac4cbbb5",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q18\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "b7a2eb11",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 19:** What countries have **regressed** by moving to a **higher** bin from *2015* to *2020*?\n",
+    "\n",
+    "Your answer **must** be a **list** of countries which have regressed by having their percentage of rural population without at least basic access to water move to a bin with a **higher** key.\n",
+    "\n",
+    "**Hint:** There are many ways of solving this question. Here are a few:\n",
+    "1. You could create a new dictionary by swapping the keys and values of `rural_non_alb_bin_2015_dict` (and similarly `rural_non_alb_bin_2020_dict`), and use these dictionaries to determine the countries that have regressed.\n",
+    "2. You could create a nested loop to go through all possible combinations of keys in both the dictionaries `rural_non_alb_bin_2015_dict` and `rural_non_alb_bin_2020_dict`.\n",
+    "3. You could loop through all the countries and directly query from `dict_2015` and `dict_2020` to determine which of them have regressed."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "9394c718",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'countries_regressed', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "70db3d66",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q19\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "471a1681",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "**Question 20:** What countries have **improved** by moving to a **lower** bin from *2015* to *2020*?\n",
+    "\n",
+    "Your answer **must** be a **list** of countries which have improved by having their percentage of rural population without at least basic access to water move to a bin with a **lower** key."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "6fc48d32",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "# compute and store the answer in the variable 'countries_improved', then display it\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "aca62588",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "grader.check(\"q20\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "9e4b8059",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    "## Submission\n",
+    "It is recommended that at this stage, you Restart and Run all Cells in your notebook.\n",
+    "That will automatically save your work and generate a zip file for you to submit.\n",
+    "\n",
+    "**SUBMISSION INSTRUCTIONS**:\n",
+    "1. **Upload** the zipfile to Gradescope.\n",
+    "2. Check **Gradescope otter** results as soon as the auto-grader execution gets completed. Don't worry about the score showing up as -/100.0. You only need to check that the test cases passed."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "5e515e70",
+   "metadata": {
+    "cell_type": "code"
+   },
+   "outputs": [],
+   "source": [
+    "# running this cell will create a new save checkpoint for your notebook\n",
+    "from IPython.display import display, Javascript\n",
+    "display(Javascript('IPython.notebook.save_checkpoint();'))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "ba9d60ae",
+   "metadata": {
+    "cell_type": "code",
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "!jupytext --to py p7.ipynb"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "34403430",
+   "metadata": {
+    "cell_type": "code",
+    "deletable": false,
+    "editable": false
+   },
+   "outputs": [],
+   "source": [
+    "p7_test.check_file_size(\"p7.ipynb\")\n",
+    "grader.export(pdf=False, run_tests=True, files=[\"p7.py\"])"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "38a140ba",
+   "metadata": {
+    "deletable": false,
+    "editable": false
+   },
+   "source": [
+    " "
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "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.9.13"
+  },
+  "otter": {
+   "OK_FORMAT": true,
+   "tests": {
+    "cell_test": {
+     "name": "cell_test",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"qcell_test1\", cell_test1)\nTrue",
+         "hidden": false,
+         "locked": false
+        },
+        {
+         "code": ">>> p7_test.check(\"qcell_test2\", cell_test2)\nTrue",
+         "hidden": false,
+         "locked": false
+        },
+        {
+         "code": ">>> p7_test.check(\"qcell_test3\", cell_test3)\nTrue",
+         "hidden": false,
+         "locked": false
+        },
+        {
+         "code": ">>> p7_test.check(\"qcell_test4\", cell_test4)\nTrue",
+         "hidden": false,
+         "locked": false
+        },
+        {
+         "code": ">>> p7_test.check(\"qcell_test5\", cell_test5)\nTrue",
+         "hidden": false,
+         "locked": false
+        },
+        {
+         "code": ">>> p7_test.check(\"qcell_test6\", cell_test6)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "dict_2015": {
+     "name": "dict_2015",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"qdict_2015_test\", dict_2015)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "dict_2020": {
+     "name": "dict_2020",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"qdict_2020_test\", dict_2020)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "ds3": {
+     "name": "ds3",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"qdict_2015_rural_alb_test\", dict_2015)\nTrue",
+         "hidden": false,
+         "locked": false
+        },
+        {
+         "code": ">>> p7_test.check(\"qdict_2020_rural_alb_test\", dict_2020)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "get_col_dict": {
+     "name": "get_col_dict",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"qget_col_dict_test1\", get_col_dict_test1)\nTrue",
+         "hidden": false,
+         "locked": false
+        },
+        {
+         "code": ">>> p7_test.check(\"qget_col_dict_test2\", get_col_dict_test2)\nTrue",
+         "hidden": false,
+         "locked": false
+        },
+        {
+         "code": ">>> p7_test.check(\"qget_col_dict_test3\", get_col_dict_test3)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "import": {
+     "name": "import",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q1": {
+     "name": "q1",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q1\", highest_pop_country)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q10": {
+     "name": "q10",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q10\", chn_2020_dict)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q11": {
+     "name": "q11",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q11\", npl_national_alb_2015)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q12": {
+     "name": "q12",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q12\", population_change_fin)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q13": {
+     "name": "q13",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q13\", income_level_pops)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q14": {
+     "name": "q14",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q14\", income_level_alb_pops)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q15": {
+     "name": "q15",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q15\", income_level_alb_percent)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q16": {
+     "name": "q16",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q16\", zimbabwe_rural_alb_2020)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q17": {
+     "name": "q17",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q17\", bin_20_countries)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q18": {
+     "name": "q18",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q18\", last_non_empty_bin_2020)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q19": {
+     "name": "q19",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q19\", countries_regressed)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q2": {
+     "name": "q2",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q2\", highest_pop_inc_country)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q20": {
+     "name": "q20",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q20\", countries_improved)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q3": {
+     "name": "q3",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q3\", highest_nat_alb_inc_country)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q4": {
+     "name": "q4",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q4\", highest_alb_inc_income_level)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q5": {
+     "name": "q5",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q5\", total_pop_2015)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q6": {
+     "name": "q6",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q6\", urban_pop_percent_2015)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q7": {
+     "name": "q7",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q7\", high_income_pop)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q8": {
+     "name": "q8",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q8\", least_pop_income_group)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "q9": {
+     "name": "q9",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"q9\", na_max_alb_countries)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-f1": {
+     "name": "rubric-f1",
+     "points": 3,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-f2": {
+     "name": "rubric-f2",
+     "points": 3,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q1": {
+     "name": "rubric-q1",
+     "points": 4,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q10": {
+     "name": "rubric-q10",
+     "points": 2,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q11": {
+     "name": "rubric-q11",
+     "points": 2,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q12": {
+     "name": "rubric-q12",
+     "points": 3,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q13": {
+     "name": "rubric-q13",
+     "points": 4,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q14": {
+     "name": "rubric-q14",
+     "points": 4,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q15": {
+     "name": "rubric-q15",
+     "points": 4,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q16": {
+     "name": "rubric-q16",
+     "points": 2,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q17": {
+     "name": "rubric-q17",
+     "points": 2,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q18": {
+     "name": "rubric-q18",
+     "points": 4,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q19": {
+     "name": "rubric-q19",
+     "points": 5,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q2": {
+     "name": "rubric-q2",
+     "points": 4,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q20": {
+     "name": "rubric-q20",
+     "points": 5,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q3": {
+     "name": "rubric-q3",
+     "points": 4,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q4": {
+     "name": "rubric-q4",
+     "points": 4,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q5": {
+     "name": "rubric-q5",
+     "points": 4,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q6": {
+     "name": "rubric-q6",
+     "points": 4,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q7": {
+     "name": "rubric-q7",
+     "points": 4,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q8": {
+     "name": "rubric-q8",
+     "points": 5,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rubric-q9": {
+     "name": "rubric-q9",
+     "points": 4,
+     "suites": [
+      {
+       "cases": [],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    },
+    "rural_non_alb_bins": {
+     "name": "rural_non_alb_bins",
+     "points": 0,
+     "suites": [
+      {
+       "cases": [
+        {
+         "code": ">>> p7_test.check(\"qrural_non_alb_bin_2015\", rural_non_alb_bin_2015_dict)\nTrue",
+         "hidden": false,
+         "locked": false
+        },
+        {
+         "code": ">>> p7_test.check(\"qrural_non_alb_bin_2020\", rural_non_alb_bin_2020_dict)\nTrue",
+         "hidden": false,
+         "locked": false
+        }
+       ],
+       "scored": true,
+       "setup": "",
+       "teardown": "",
+       "type": "doctest"
+      }
+     ]
+    }
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/p7/p7_test.py b/p7/p7_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..f3620389474b40cbacad4b500e7b159de57ee7e3
--- /dev/null
+++ b/p7/p7_test.py
@@ -0,0 +1,6205 @@
+#!/usr/bin/python
+
+import os, json, math
+
+MAX_FILE_SIZE = 500 # units - KB
+REL_TOL = 6e-04  # relative tolerance for floats
+ABS_TOL = 15e-03  # absolute tolerance for floats
+
+PASS = "PASS"
+
+TEXT_FORMAT = "text"  # question type when expected answer is a str, int, float, or bool
+TEXT_FORMAT_NAMEDTUPLE = "text namedtuple"  # question type when expected answer is a namedtuple
+TEXT_FORMAT_UNORDERED_LIST = "text list_unordered"  # question type when the expected answer is a list where the order does *not* matter
+TEXT_FORMAT_ORDERED_LIST = "text list_ordered"  # question type when the expected answer is a list where the order does matter
+TEXT_FORMAT_ORDERED_LIST_NAMEDTUPLE = "text list_ordered namedtuple"  # question type when the expected answer is a list of namedtuples where the order does matter
+TEXT_FORMAT_SPECIAL_ORDERED_LIST = "text list_special_ordered"  # question type when the expected answer is a list where order does matter, but with possible ties. Elements are ordered according to values in special_ordered_json (with ties allowed)
+TEXT_FORMAT_DICT = "text dict"  # question type when the expected answer is a dictionary
+TEXT_FORMAT_LIST_DICTS_ORDERED = "text list_dicts_ordered"  # question type when the expected answer is a list of dicts where the order does matter
+
+
+expected_json = {"cell_test1": (TEXT_FORMAT, 'Afghanistan'),
+                 "cell_test2": (TEXT_FORMAT, 2020),
+                 "cell_test3": (TEXT_FORMAT, 57),
+                 "cell_test4": (TEXT_FORMAT, 96),
+                 "cell_test5": (TEXT_FORMAT, 'Upper middle income'),
+                 "cell_test6": (TEXT_FORMAT, 43851000),
+                 "1": (TEXT_FORMAT, "China"),
+                 "2": (TEXT_FORMAT, "India"),
+                 "3": (TEXT_FORMAT, "Afghanistan"),
+                 "4": (TEXT_FORMAT, "Low income"),
+                 "5": (TEXT_FORMAT, 6501786000),
+                 "6": (TEXT_FORMAT, 52),
+                 "7": (TEXT_FORMAT, 871268000),
+                 "8": (TEXT_FORMAT, "Low income"),
+                 "9": (TEXT_FORMAT_UNORDERED_LIST, ['Bermuda', 'Canada', 'United States of America']),
+                 "get_col_dict_test1": (TEXT_FORMAT_DICT, {'AFG': 'South Asia',
+                                         'ALB': 'Europe & Central Asia',
+                                         'DZA': 'Middle East & North Africa',
+                                         'AND': 'Europe & Central Asia',
+                                         'AGO': 'Sub-Saharan Africa',
+                                         'ARM': 'Europe & Central Asia',
+                                         'AUS': 'East Asia & Pacific',
+                                         'AUT': 'Europe & Central Asia',
+                                         'AZE': 'Europe & Central Asia',
+                                         'BGD': 'South Asia',
+                                         'BLR': 'Europe & Central Asia',
+                                         'BEL': 'Europe & Central Asia',
+                                         'BLZ': 'Latin America & Caribbean',
+                                         'BEN': 'Sub-Saharan Africa',
+                                         'BMU': 'North America',
+                                         'BTN': 'South Asia',
+                                         'BIH': 'Europe & Central Asia',
+                                         'BWA': 'Sub-Saharan Africa',
+                                         'BRA': 'Latin America & Caribbean',
+                                         'BRN': 'East Asia & Pacific',
+                                         'BGR': 'Europe & Central Asia',
+                                         'BFA': 'Sub-Saharan Africa',
+                                         'BDI': 'Sub-Saharan Africa',
+                                         'CPV': 'Sub-Saharan Africa',
+                                         'KHM': 'East Asia & Pacific',
+                                         'CMR': 'Sub-Saharan Africa',
+                                         'CAN': 'North America',
+                                         'CAF': 'Sub-Saharan Africa',
+                                         'TCD': 'Sub-Saharan Africa',
+                                         'CHL': 'Latin America & Caribbean',
+                                         'CHN': 'East Asia & Pacific',
+                                         'COL': 'Latin America & Caribbean',
+                                         'CRI': 'Latin America & Caribbean',
+                                         'CIV': 'Sub-Saharan Africa',
+                                         'CUB': 'Latin America & Caribbean',
+                                         'CYP': 'Europe & Central Asia',
+                                         'CZE': 'Europe & Central Asia',
+                                         'DNK': 'Europe & Central Asia',
+                                         'DJI': 'Middle East & North Africa',
+                                         'DOM': 'Latin America & Caribbean',
+                                         'ECU': 'Latin America & Caribbean',
+                                         'SLV': 'Latin America & Caribbean',
+                                         'EST': 'Europe & Central Asia',
+                                         'SWZ': 'Sub-Saharan Africa',
+                                         'ETH': 'Sub-Saharan Africa',
+                                         'FJI': 'East Asia & Pacific',
+                                         'FIN': 'Europe & Central Asia',
+                                         'FRA': 'Europe & Central Asia',
+                                         'GAB': 'Sub-Saharan Africa',
+                                         'GEO': 'Europe & Central Asia',
+                                         'DEU': 'Europe & Central Asia',
+                                         'GHA': 'Sub-Saharan Africa',
+                                         'GIB': 'Europe & Central Asia',
+                                         'GRC': 'Europe & Central Asia',
+                                         'GRL': 'Europe & Central Asia',
+                                         'GTM': 'Latin America & Caribbean',
+                                         'GIN': 'Sub-Saharan Africa',
+                                         'GNB': 'Sub-Saharan Africa',
+                                         'GUY': 'Latin America & Caribbean',
+                                         'HTI': 'Latin America & Caribbean',
+                                         'HND': 'Latin America & Caribbean',
+                                         'HUN': 'Europe & Central Asia',
+                                         'ISL': 'Europe & Central Asia',
+                                         'IND': 'South Asia',
+                                         'IDN': 'East Asia & Pacific',
+                                         'IRQ': 'Middle East & North Africa',
+                                         'IRL': 'Europe & Central Asia',
+                                         'ISR': 'Middle East & North Africa',
+                                         'JAM': 'Latin America & Caribbean',
+                                         'JOR': 'Middle East & North Africa',
+                                         'KAZ': 'Europe & Central Asia',
+                                         'KEN': 'Sub-Saharan Africa',
+                                         'KIR': 'East Asia & Pacific',
+                                         'LVA': 'Europe & Central Asia',
+                                         'LSO': 'Sub-Saharan Africa',
+                                         'LBR': 'Sub-Saharan Africa',
+                                         'LTU': 'Europe & Central Asia',
+                                         'LUX': 'Europe & Central Asia',
+                                         'MDG': 'Sub-Saharan Africa',
+                                         'MWI': 'Sub-Saharan Africa',
+                                         'MYS': 'East Asia & Pacific',
+                                         'MDV': 'South Asia',
+                                         'MLI': 'Sub-Saharan Africa',
+                                         'MLT': 'Middle East & North Africa',
+                                         'MHL': 'East Asia & Pacific',
+                                         'MRT': 'Sub-Saharan Africa',
+                                         'MUS': 'Sub-Saharan Africa',
+                                         'MEX': 'Latin America & Caribbean',
+                                         'MCO': 'Europe & Central Asia',
+                                         'MNG': 'East Asia & Pacific',
+                                         'MNE': 'Europe & Central Asia',
+                                         'MAR': 'Middle East & North Africa',
+                                         'MOZ': 'Sub-Saharan Africa',
+                                         'MMR': 'East Asia & Pacific',
+                                         'NAM': 'Sub-Saharan Africa',
+                                         'NRU': 'East Asia & Pacific',
+                                         'NPL': 'South Asia',
+                                         'NLD': 'Europe & Central Asia',
+                                         'NZL': 'East Asia & Pacific',
+                                         'NIC': 'Latin America & Caribbean',
+                                         'NER': 'Sub-Saharan Africa',
+                                         'NGA': 'Sub-Saharan Africa',
+                                         'MKD': 'Europe & Central Asia',
+                                         'NOR': 'Europe & Central Asia',
+                                         'OMN': 'Middle East & North Africa',
+                                         'PAK': 'South Asia',
+                                         'PLW': 'East Asia & Pacific',
+                                         'PAN': 'Latin America & Caribbean',
+                                         'PNG': 'East Asia & Pacific',
+                                         'PRY': 'Latin America & Caribbean',
+                                         'PER': 'Latin America & Caribbean',
+                                         'PHL': 'East Asia & Pacific',
+                                         'POL': 'Europe & Central Asia',
+                                         'PRT': 'Europe & Central Asia',
+                                         'ROU': 'Europe & Central Asia',
+                                         'RUS': 'Europe & Central Asia',
+                                         'RWA': 'Sub-Saharan Africa',
+                                         'WSM': 'East Asia & Pacific',
+                                         'SEN': 'Sub-Saharan Africa',
+                                         'SRB': 'Europe & Central Asia',
+                                         'SLE': 'Sub-Saharan Africa',
+                                         'SGP': 'East Asia & Pacific',
+                                         'SLB': 'East Asia & Pacific',
+                                         'SOM': 'Sub-Saharan Africa',
+                                         'ZAF': 'Sub-Saharan Africa',
+                                         'SSD': 'Sub-Saharan Africa',
+                                         'ESP': 'Europe & Central Asia',
+                                         'LKA': 'South Asia',
+                                         'SDN': 'Sub-Saharan Africa',
+                                         'SUR': 'Latin America & Caribbean',
+                                         'SWE': 'Europe & Central Asia',
+                                         'CHE': 'Europe & Central Asia',
+                                         'SYR': 'Middle East & North Africa',
+                                         'TJK': 'Europe & Central Asia',
+                                         'THA': 'East Asia & Pacific',
+                                         'TLS': 'East Asia & Pacific',
+                                         'TGO': 'Sub-Saharan Africa',
+                                         'TON': 'East Asia & Pacific',
+                                         'TUN': 'Middle East & North Africa',
+                                         'TKM': 'Europe & Central Asia',
+                                         'TUV': 'East Asia & Pacific',
+                                         'UGA': 'Sub-Saharan Africa',
+                                         'UKR': 'Europe & Central Asia',
+                                         'GBR': 'Europe & Central Asia',
+                                         'USA': 'North America',
+                                         'URY': 'Latin America & Caribbean',
+                                         'UZB': 'Europe & Central Asia',
+                                         'VUT': 'East Asia & Pacific',
+                                         'VNM': 'East Asia & Pacific',
+                                         'ZMB': 'Sub-Saharan Africa',
+                                         'ZWE': 'Sub-Saharan Africa'}),
+                 "get_col_dict_test2": (TEXT_FORMAT_DICT, {'AFG': 61,
+                                        'ALB': 93,
+                                        'DZA': 93,
+                                        'AND': 100,
+                                        'AGO': 54,
+                                        'ARM': 100,
+                                        'AUS': 100,
+                                        'AUT': 100,
+                                        'AZE': 92,
+                                        'BGD': 97,
+                                        'BLR': 96,
+                                        'BEL': 100,
+                                        'BLZ': 97,
+                                        'BEN': 65,
+                                        'BMU': 100,
+                                        'BTN': 96,
+                                        'BIH': 96,
+                                        'BWA': 88,
+                                        'BRA': 98,
+                                        'BRN': 100,
+                                        'BGR': 100,
+                                        'BFA': 50,
+                                        'BDI': 60,
+                                        'CPV': 85,
+                                        'KHM': 68,
+                                        'CMR': 64,
+                                        'CAN': 100,
+                                        'CAF': 42,
+                                        'TCD': 44,
+                                        'CHL': 100,
+                                        'CHN': 92,
+                                        'COL': 96,
+                                        'CRI': 100,
+                                        'CIV': 71,
+                                        'CUB': 96,
+                                        'CYP': 100,
+                                        'CZE': 100,
+                                        'DNK': 100,
+                                        'DJI': 76,
+                                        'DOM': 96,
+                                        'ECU': 93,
+                                        'SLV': 96,
+                                        'EST': 100,
+                                        'SWZ': 67,
+                                        'ETH': 42,
+                                        'FJI': 94,
+                                        'FIN': 100,
+                                        'FRA': 100,
+                                        'GAB': 84,
+                                        'GEO': 96,
+                                        'DEU': 100,
+                                        'GHA': 80,
+                                        'GIB': 100,
+                                        'GRC': 100,
+                                        'GRL': 100,
+                                        'GTM': 92,
+                                        'GIN': 64,
+                                        'GNB': 59,
+                                        'GUY': 95,
+                                        'HTI': 65,
+                                        'HND': 93,
+                                        'HUN': 100,
+                                        'ISL': 100,
+                                        'IND': 88,
+                                        'IDN': 89,
+                                        'IRQ': 94,
+                                        'IRL': 97,
+                                        'ISR': 100,
+                                        'JAM': 90,
+                                        'JOR': 100,
+                                        'KAZ': 95,
+                                        'KEN': 58,
+                                        'KIR': 74,
+                                        'LVA': 99,
+                                        'LSO': 71,
+                                        'LBR': 73,
+                                        'LTU': 97,
+                                        'LUX': 100,
+                                        'MDG': 49,
+                                        'MWI': 66,
+                                        'MYS': 97,
+                                        'MDV': 99,
+                                        'MLI': 74,
+                                        'MLT': 100,
+                                        'MHL': 88,
+                                        'MRT': 67,
+                                        'MUS': 100,
+                                        'MEX': 98,
+                                        'MCO': 100,
+                                        'MNG': 81,
+                                        'MNE': 97,
+                                        'MAR': 84,
+                                        'MOZ': 51,
+                                        'MMR': 74,
+                                        'NAM': 83,
+                                        'NRU': 100,
+                                        'NPL': 88,
+                                        'NLD': 100,
+                                        'NZL': 100,
+                                        'NIC': 81,
+                                        'NER': 45,
+                                        'NGA': 69,
+                                        'MKD': 97,
+                                        'NOR': 100,
+                                        'OMN': 90,
+                                        'PAK': 89,
+                                        'PLW': 100,
+                                        'PAN': 93,
+                                        'PNG': 41,
+                                        'PRY': 97,
+                                        'PER': 90,
+                                        'PHL': 92,
+                                        'POL': 100,
+                                        'PRT': 100,
+                                        'ROU': 100,
+                                        'RUS': 97,
+                                        'RWA': 57,
+                                        'WSM': 91,
+                                        'SEN': 79,
+                                        'SRB': 93,
+                                        'SLE': 58,
+                                        'SGP': 100,
+                                        'SLB': 69,
+                                        'SOM': 49,
+                                        'ZAF': 92,
+                                        'SSD': 41,
+                                        'ESP': 100,
+                                        'LKA': 90,
+                                        'SDN': 59,
+                                        'SUR': 96,
+                                        'SWE': 100,
+                                        'CHE': 100,
+                                        'SYR': 94,
+                                        'TJK': 76,
+                                        'THA': 100,
+                                        'TLS': 75,
+                                        'TGO': 64,
+                                        'TON': 99,
+                                        'TUN': 95,
+                                        'TKM': 98,
+                                        'TUV': 100,
+                                        'UGA': 48,
+                                        'UKR': 94,
+                                        'GBR': 100,
+                                        'USA': 100,
+                                        'URY': 100,
+                                        'UZB': 98,
+                                        'VUT': 90,
+                                        'VNM': 93,
+                                        'ZMB': 61,
+                                        'ZWE': 65}),
+                 "get_col_dict_test3": (TEXT_FORMAT_DICT, {'AFG': 38928000,
+                                         'ALB': 2878000,
+                                         'DZA': 43851000,
+                                         'AND': 77000,
+                                         'AGO': 32866000,
+                                         'ARM': 2963000,
+                                         'AUS': 25500000,
+                                         'AUT': 9006000,
+                                         'AZE': 10139000,
+                                         'BGD': 164689000,
+                                         'BLR': 9449000,
+                                         'BEL': 11590000,
+                                         'BLZ': 398000,
+                                         'BEN': 12123000,
+                                         'BMU': 62000,
+                                         'BTN': 772000,
+                                         'BIH': 3281000,
+                                         'BWA': 2352000,
+                                         'BRA': 212559000,
+                                         'BRN': 437000,
+                                         'BGR': 6948000,
+                                         'BFA': 20903000,
+                                         'BDI': 11891000,
+                                         'CPV': 556000,
+                                         'KHM': 16719000,
+                                         'CMR': 26546000,
+                                         'CAN': 37742000,
+                                         'CAF': 4830000,
+                                         'TCD': 16426000,
+                                         'CHL': 19116000,
+                                         'CHN': 1463141000,
+                                         'COL': 50883000,
+                                         'CRI': 5094000,
+                                         'CIV': 26378000,
+                                         'CUB': 11327000,
+                                         'CYP': 1207000,
+                                         'CZE': 10709000,
+                                         'DNK': 5792000,
+                                         'DJI': 988000,
+                                         'DOM': 10848000,
+                                         'ECU': 17643000,
+                                         'SLV': 6486000,
+                                         'EST': 1327000,
+                                         'SWZ': 1160000,
+                                         'ETH': 114964000,
+                                         'FJI': 896000,
+                                         'FIN': 5541000,
+                                         'FRA': 65274000,
+                                         'GAB': 2226000,
+                                         'GEO': 3989000,
+                                         'DEU': 83784000,
+                                         'GHA': 31073000,
+                                         'GIB': 34000,
+                                         'GRC': 10423000,
+                                         'GRL': 57000,
+                                         'GTM': 17916000,
+                                         'GIN': 13133000,
+                                         'GNB': 1968000,
+                                         'GUY': 787000,
+                                         'HTI': 11403000,
+                                         'HND': 9905000,
+                                         'HUN': 9660000,
+                                         'ISL': 341000,
+                                         'IND': 1380004000,
+                                         'IDN': 273524000,
+                                         'IRQ': 40223000,
+                                         'IRL': 4938000,
+                                         'ISR': 8656000,
+                                         'JAM': 2961000,
+                                         'JOR': 10203000,
+                                         'KAZ': 18777000,
+                                         'KEN': 53771000,
+                                         'KIR': 119000,
+                                         'LVA': 1886000,
+                                         'LSO': 2142000,
+                                         'LBR': 5058000,
+                                         'LTU': 2722000,
+                                         'LUX': 626000,
+                                         'MDG': 27691000,
+                                         'MWI': 19130000,
+                                         'MYS': 32366000,
+                                         'MDV': 541000,
+                                         'MLI': 20251000,
+                                         'MLT': 442000,
+                                         'MHL': 59000,
+                                         'MRT': 4650000,
+                                         'MUS': 1272000,
+                                         'MEX': 128933000,
+                                         'MCO': 39000,
+                                         'MNG': 3278000,
+                                         'MNE': 628000,
+                                         'MAR': 36911000,
+                                         'MOZ': 31255000,
+                                         'MMR': 54410000,
+                                         'NAM': 2541000,
+                                         'NRU': 11000,
+                                         'NPL': 29137000,
+                                         'NLD': 17135000,
+                                         'NZL': 4822000,
+                                         'NIC': 6625000,
+                                         'NER': 24207000,
+                                         'NGA': 206140000,
+                                         'MKD': 2083000,
+                                         'NOR': 5421000,
+                                         'OMN': 5107000,
+                                         'PAK': 220892000,
+                                         'PLW': 18000,
+                                         'PAN': 4315000,
+                                         'PNG': 8947000,
+                                         'PRY': 7133000,
+                                         'PER': 32972000,
+                                         'PHL': 109581000,
+                                         'POL': 37847000,
+                                         'PRT': 10197000,
+                                         'ROU': 19238000,
+                                         'RUS': 145934000,
+                                         'RWA': 12952000,
+                                         'WSM': 198000,
+                                         'SEN': 16744000,
+                                         'SRB': 8737000,
+                                         'SLE': 7977000,
+                                         'SGP': 5850000,
+                                         'SLB': 687000,
+                                         'SOM': 15893000,
+                                         'ZAF': 59309000,
+                                         'SSD': 11194000,
+                                         'ESP': 46755000,
+                                         'LKA': 21413000,
+                                         'SDN': 43849000,
+                                         'SUR': 587000,
+                                         'SWE': 10099000,
+                                         'CHE': 8655000,
+                                         'SYR': 17501000,
+                                         'TJK': 9538000,
+                                         'THA': 69800000,
+                                         'TLS': 1318000,
+                                         'TGO': 8279000,
+                                         'TON': 106000,
+                                         'TUN': 11819000,
+                                         'TKM': 6031000,
+                                         'TUV': 12000,
+                                         'UGA': 45741000,
+                                         'UKR': 43734000,
+                                         'GBR': 67886000,
+                                         'USA': 331003000,
+                                         'URY': 3474000,
+                                         'UZB': 33469000,
+                                         'VUT': 307000,
+                                         'VNM': 97339000,
+                                         'ZMB': 18384000,
+                                         'ZWE': 14863000}),
+                 "dict_2015_test": (TEXT_FORMAT_DICT, {'AFG': {'country_name': 'Afghanistan',
+                                      'region': 'South Asia',
+                                      'income_level': 'Low income',
+                                      'year': 2015,
+                                      'pop': 34414000,
+                                      'urban_percent': 25,
+                                      'national_alb': 61,
+                                      'urban_alb': 87},
+                                         'ALB': {'country_name': 'Albania',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 2891000,
+                                          'urban_percent': 57,
+                                          'national_alb': 93,
+                                          'urban_alb': 95},
+                                         'DZA': {'country_name': 'Algeria',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 39728000,
+                                          'urban_percent': 71,
+                                          'national_alb': 93,
+                                          'urban_alb': 95},
+                                         'AND': {'country_name': 'Andorra',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 78000,
+                                          'urban_percent': 88,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'AGO': {'country_name': 'Angola',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 27884000,
+                                          'urban_percent': 63,
+                                          'national_alb': 54,
+                                          'urban_alb': 70},
+                                         'ARM': {'country_name': 'Armenia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 2926000,
+                                          'urban_percent': 63,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'AUS': {'country_name': 'Australia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 23932000,
+                                          'urban_percent': 86,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'AUT': {'country_name': 'Austria',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 8679000,
+                                          'urban_percent': 58,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'AZE': {'country_name': 'Azerbaijan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 9623000,
+                                          'urban_percent': 55,
+                                          'national_alb': 92,
+                                          'urban_alb': 100},
+                                         'BGD': {'country_name': 'Bangladesh',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 156256000,
+                                          'urban_percent': 34,
+                                          'national_alb': 97,
+                                          'urban_alb': 98},
+                                         'BLR': {'country_name': 'Belarus',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 9439000,
+                                          'urban_percent': 77,
+                                          'national_alb': 96,
+                                          'urban_alb': 96},
+                                         'BEL': {'country_name': 'Belgium',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 11288000,
+                                          'urban_percent': 98,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'BLZ': {'country_name': 'Belize',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 361000,
+                                          'urban_percent': 45,
+                                          'national_alb': 97,
+                                          'urban_alb': 100},
+                                         'BEN': {'country_name': 'Benin',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 10576000,
+                                          'urban_percent': 46,
+                                          'national_alb': 65,
+                                          'urban_alb': 74},
+                                         'BMU': {'country_name': 'Bermuda',
+                                          'region': 'North America',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 64000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'BTN': {'country_name': 'Bhutan',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 728000,
+                                          'urban_percent': 39,
+                                          'national_alb': 96,
+                                          'urban_alb': 98},
+                                         'BIH': {'country_name': 'Bosnia and Herzegovina',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 3429000,
+                                          'urban_percent': 47,
+                                          'national_alb': 96,
+                                          'urban_alb': 95},
+                                         'BWA': {'country_name': 'Botswana',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 2121000,
+                                          'urban_percent': 67,
+                                          'national_alb': 88,
+                                          'urban_alb': 97},
+                                         'BRA': {'country_name': 'Brazil',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 204472000,
+                                          'urban_percent': 86,
+                                          'national_alb': 98,
+                                          'urban_alb': 100},
+                                         'BRN': {'country_name': 'Brunei Darussalam',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 415000,
+                                          'urban_percent': 77,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'BGR': {'country_name': 'Bulgaria',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 7200000,
+                                          'urban_percent': 74,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'BFA': {'country_name': 'Burkina Faso',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 18111000,
+                                          'urban_percent': 28,
+                                          'national_alb': 50,
+                                          'urban_alb': 80},
+                                         'BDI': {'country_name': 'Burundi',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 10160000,
+                                          'urban_percent': 12,
+                                          'national_alb': 60,
+                                          'urban_alb': 89},
+                                         'CPV': {'country_name': 'Cabo Verde',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 525000,
+                                          'urban_percent': 64,
+                                          'national_alb': 85,
+                                          'urban_alb': 92},
+                                         'KHM': {'country_name': 'Cambodia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 15521000,
+                                          'urban_percent': 22,
+                                          'national_alb': 68,
+                                          'urban_alb': 89},
+                                         'CMR': {'country_name': 'Cameroon',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 23298000,
+                                          'urban_percent': 55,
+                                          'national_alb': 64,
+                                          'urban_alb': 82},
+                                         'CAN': {'country_name': 'Canada',
+                                          'region': 'North America',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 36027000,
+                                          'urban_percent': 81,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'CAF': {'country_name': 'Central African Republic',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 4493000,
+                                          'urban_percent': 40,
+                                          'national_alb': 42,
+                                          'urban_alb': 58},
+                                         'TCD': {'country_name': 'Chad',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 14111000,
+                                          'urban_percent': 23,
+                                          'national_alb': 44,
+                                          'urban_alb': 75},
+                                         'CHL': {'country_name': 'Chile',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 17969000,
+                                          'urban_percent': 87,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'CHN': {'country_name': 'China',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 1430405000,
+                                          'urban_percent': 56,
+                                          'national_alb': 92,
+                                          'urban_alb': 98},
+                                         'COL': {'country_name': 'Colombia',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 47521000,
+                                          'urban_percent': 80,
+                                          'national_alb': 96,
+                                          'urban_alb': 100},
+                                         'CRI': {'country_name': 'Costa Rica',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 4848000,
+                                          'urban_percent': 77,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'CIV': {'country_name': "Côte d'Ivoire",
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 23226000,
+                                          'urban_percent': 49,
+                                          'national_alb': 71,
+                                          'urban_alb': 87},
+                                         'CUB': {'country_name': 'Cuba',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 11325000,
+                                          'urban_percent': 77,
+                                          'national_alb': 96,
+                                          'urban_alb': 98},
+                                         'CYP': {'country_name': 'Cyprus',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 1161000,
+                                          'urban_percent': 67,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'CZE': {'country_name': 'Czech Republic',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 10601000,
+                                          'urban_percent': 73,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'DNK': {'country_name': 'Denmark',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 5689000,
+                                          'urban_percent': 88,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'DJI': {'country_name': 'Djibouti',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 914000,
+                                          'urban_percent': 77,
+                                          'national_alb': 76,
+                                          'urban_alb': 84},
+                                         'DOM': {'country_name': 'Dominican Republic',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 10282000,
+                                          'urban_percent': 79,
+                                          'national_alb': 96,
+                                          'urban_alb': 98},
+                                         'ECU': {'country_name': 'Ecuador',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 16212000,
+                                          'urban_percent': 63,
+                                          'national_alb': 93,
+                                          'urban_alb': 100},
+                                         'SLV': {'country_name': 'El Salvador',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 6325000,
+                                          'urban_percent': 70,
+                                          'national_alb': 96,
+                                          'urban_alb': 99},
+                                         'EST': {'country_name': 'Estonia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 1315000,
+                                          'urban_percent': 68,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'SWZ': {'country_name': 'Eswatini',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 1104000,
+                                          'urban_percent': 23,
+                                          'national_alb': 67,
+                                          'urban_alb': 95},
+                                         'ETH': {'country_name': 'Ethiopia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 100835000,
+                                          'urban_percent': 19,
+                                          'national_alb': 42,
+                                          'urban_alb': 82},
+                                         'FJI': {'country_name': 'Fiji',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 869000,
+                                          'urban_percent': 55,
+                                          'national_alb': 94,
+                                          'urban_alb': 98},
+                                         'FIN': {'country_name': 'Finland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 5481000,
+                                          'urban_percent': 85,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'FRA': {'country_name': 'France',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 64453000,
+                                          'urban_percent': 80,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'GAB': {'country_name': 'Gabon',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 1948000,
+                                          'urban_percent': 88,
+                                          'national_alb': 84,
+                                          'urban_alb': 89},
+                                         'GEO': {'country_name': 'Georgia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 4024000,
+                                          'urban_percent': 57,
+                                          'national_alb': 96,
+                                          'urban_alb': 100},
+                                         'DEU': {'country_name': 'Germany',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 81787000,
+                                          'urban_percent': 77,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'GHA': {'country_name': 'Ghana',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 27849000,
+                                          'urban_percent': 54,
+                                          'national_alb': 80,
+                                          'urban_alb': 91},
+                                         'GIB': {'country_name': 'Gibraltar',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 34000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'GRC': {'country_name': 'Greece',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 10660000,
+                                          'urban_percent': 78,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'GRL': {'country_name': 'Greenland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 56000,
+                                          'urban_percent': 86,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'GTM': {'country_name': 'Guatemala',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 16252000,
+                                          'urban_percent': 50,
+                                          'national_alb': 92,
+                                          'urban_alb': 97},
+                                         'GIN': {'country_name': 'Guinea',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 11432000,
+                                          'urban_percent': 35,
+                                          'national_alb': 64,
+                                          'urban_alb': 85},
+                                         'GNB': {'country_name': 'Guinea-Bissau',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 1737000,
+                                          'urban_percent': 42,
+                                          'national_alb': 59,
+                                          'urban_alb': 73},
+                                         'GUY': {'country_name': 'Guyana',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 767000,
+                                          'urban_percent': 26,
+                                          'national_alb': 95,
+                                          'urban_alb': 100},
+                                         'HTI': {'country_name': 'Haiti',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 10696000,
+                                          'urban_percent': 52,
+                                          'national_alb': 65,
+                                          'urban_alb': 85},
+                                         'HND': {'country_name': 'Honduras',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 9113000,
+                                          'urban_percent': 55,
+                                          'national_alb': 93,
+                                          'urban_alb': 99},
+                                         'HUN': {'country_name': 'Hungary',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 9778000,
+                                          'urban_percent': 71,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'ISL': {'country_name': 'Iceland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 330000,
+                                          'urban_percent': 94,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'IND': {'country_name': 'India',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 1310152000,
+                                          'urban_percent': 33,
+                                          'national_alb': 88,
+                                          'urban_alb': 93},
+                                         'IDN': {'country_name': 'Indonesia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 258383000,
+                                          'urban_percent': 53,
+                                          'national_alb': 89,
+                                          'urban_alb': 95},
+                                         'IRQ': {'country_name': 'Iraq',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 35572000,
+                                          'urban_percent': 70,
+                                          'national_alb': 94,
+                                          'urban_alb': 98},
+                                         'IRL': {'country_name': 'Ireland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 4652000,
+                                          'urban_percent': 63,
+                                          'national_alb': 97,
+                                          'urban_alb': 97},
+                                         'ISR': {'country_name': 'Israel',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 7978000,
+                                          'urban_percent': 92,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'JAM': {'country_name': 'Jamaica',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 2891000,
+                                          'urban_percent': 55,
+                                          'national_alb': 90,
+                                          'urban_alb': 95},
+                                         'JOR': {'country_name': 'Jordan',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 9267000,
+                                          'urban_percent': 90,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'KAZ': {'country_name': 'Kazakhstan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 17572000,
+                                          'urban_percent': 57,
+                                          'national_alb': 95,
+                                          'urban_alb': 98},
+                                         'KEN': {'country_name': 'Kenya',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 47878000,
+                                          'urban_percent': 26,
+                                          'national_alb': 58,
+                                          'urban_alb': 87},
+                                         'KIR': {'country_name': 'Kiribati',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 111000,
+                                          'urban_percent': 52,
+                                          'national_alb': 74,
+                                          'urban_alb': 89},
+                                         'LVA': {'country_name': 'Latvia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 1998000,
+                                          'urban_percent': 68,
+                                          'national_alb': 99,
+                                          'urban_alb': 99},
+                                         'LSO': {'country_name': 'Lesotho',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 2059000,
+                                          'urban_percent': 27,
+                                          'national_alb': 71,
+                                          'urban_alb': 90},
+                                         'LBR': {'country_name': 'Liberia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 4472000,
+                                          'urban_percent': 50,
+                                          'national_alb': 73,
+                                          'urban_alb': 84},
+                                         'LTU': {'country_name': 'Lithuania',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 2932000,
+                                          'urban_percent': 67,
+                                          'national_alb': 97,
+                                          'urban_alb': 100},
+                                         'LUX': {'country_name': 'Luxembourg',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 567000,
+                                          'urban_percent': 90,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'MDG': {'country_name': 'Madagascar',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 24234000,
+                                          'urban_percent': 35,
+                                          'national_alb': 49,
+                                          'urban_alb': 78},
+                                         'MWI': {'country_name': 'Malawi',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 16745000,
+                                          'urban_percent': 16,
+                                          'national_alb': 66,
+                                          'urban_alb': 86},
+                                         'MYS': {'country_name': 'Malaysia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 30271000,
+                                          'urban_percent': 74,
+                                          'national_alb': 97,
+                                          'urban_alb': 100},
+                                         'MDV': {'country_name': 'Maldives',
+                                          'region': 'South Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 455000,
+                                          'urban_percent': 39,
+                                          'national_alb': 99,
+                                          'urban_alb': 99},
+                                         'MLI': {'country_name': 'Mali',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 17439000,
+                                          'urban_percent': 40,
+                                          'national_alb': 74,
+                                          'urban_alb': 91},
+                                         'MLT': {'country_name': 'Malta',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 434000,
+                                          'urban_percent': 94,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'MHL': {'country_name': 'Marshall Islands',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 57000,
+                                          'urban_percent': 76,
+                                          'national_alb': 88,
+                                          'urban_alb': 86},
+                                         'MRT': {'country_name': 'Mauritania',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 4046000,
+                                          'urban_percent': 51,
+                                          'national_alb': 67,
+                                          'urban_alb': 86},
+                                         'MUS': {'country_name': 'Mauritius',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 1259000,
+                                          'urban_percent': 41,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'MEX': {'country_name': 'Mexico',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 121858000,
+                                          'urban_percent': 79,
+                                          'national_alb': 98,
+                                          'urban_alb': 100},
+                                         'MCO': {'country_name': 'Monaco',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 38000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'MNG': {'country_name': 'Mongolia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 2998000,
+                                          'urban_percent': 68,
+                                          'national_alb': 81,
+                                          'urban_alb': 94},
+                                         'MNE': {'country_name': 'Montenegro',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 627000,
+                                          'urban_percent': 66,
+                                          'national_alb': 97,
+                                          'urban_alb': 98},
+                                         'MAR': {'country_name': 'Morocco',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 34664000,
+                                          'urban_percent': 61,
+                                          'national_alb': 84,
+                                          'urban_alb': 96},
+                                         'MOZ': {'country_name': 'Mozambique',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 27042000,
+                                          'urban_percent': 34,
+                                          'national_alb': 51,
+                                          'urban_alb': 80},
+                                         'MMR': {'country_name': 'Myanmar',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 52681000,
+                                          'urban_percent': 30,
+                                          'national_alb': 74,
+                                          'urban_alb': 88},
+                                         'NAM': {'country_name': 'Namibia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 2315000,
+                                          'urban_percent': 47,
+                                          'national_alb': 83,
+                                          'urban_alb': 97},
+                                         'NRU': {'country_name': 'Nauru',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 10000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'NPL': {'country_name': 'Nepal',
+                                          'region': 'South Asia',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 27015000,
+                                          'urban_percent': 19,
+                                          'national_alb': 88,
+                                          'urban_alb': 90},
+                                         'NLD': {'country_name': 'Netherlands',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 16938000,
+                                          'urban_percent': 90,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'NZL': {'country_name': 'New Zealand',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 4615000,
+                                          'urban_percent': 86,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'NIC': {'country_name': 'Nicaragua',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 6223000,
+                                          'urban_percent': 58,
+                                          'national_alb': 81,
+                                          'urban_alb': 97},
+                                         'NER': {'country_name': 'Niger',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 20002000,
+                                          'urban_percent': 16,
+                                          'national_alb': 45,
+                                          'urban_alb': 88},
+                                         'NGA': {'country_name': 'Nigeria',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 181137000,
+                                          'urban_percent': 48,
+                                          'national_alb': 69,
+                                          'urban_alb': 85},
+                                         'MKD': {'country_name': 'North Macedonia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 2079000,
+                                          'urban_percent': 57,
+                                          'national_alb': 97,
+                                          'urban_alb': 97},
+                                         'NOR': {'country_name': 'Norway',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 5200000,
+                                          'urban_percent': 81,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'OMN': {'country_name': 'Oman',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 4267000,
+                                          'urban_percent': 81,
+                                          'national_alb': 90,
+                                          'urban_alb': 94},
+                                         'PAK': {'country_name': 'Pakistan',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 199427000,
+                                          'urban_percent': 36,
+                                          'national_alb': 89,
+                                          'urban_alb': 94},
+                                         'PLW': {'country_name': 'Palau',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 18000,
+                                          'urban_percent': 78,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'PAN': {'country_name': 'Panama',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 3968000,
+                                          'urban_percent': 67,
+                                          'national_alb': 93,
+                                          'urban_alb': 98},
+                                         'PNG': {'country_name': 'Papua New Guinea',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 8108000,
+                                          'urban_percent': 13,
+                                          'national_alb': 41,
+                                          'urban_alb': 85},
+                                         'PRY': {'country_name': 'Paraguay',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 6689000,
+                                          'urban_percent': 61,
+                                          'national_alb': 97,
+                                          'urban_alb': 100},
+                                         'PER': {'country_name': 'Peru',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 30471000,
+                                          'urban_percent': 77,
+                                          'national_alb': 90,
+                                          'urban_alb': 95},
+                                         'PHL': {'country_name': 'Philippines',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 102113000,
+                                          'urban_percent': 46,
+                                          'national_alb': 92,
+                                          'urban_alb': 96},
+                                         'POL': {'country_name': 'Poland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 38034000,
+                                          'urban_percent': 60,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'PRT': {'country_name': 'Portugal',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 10368000,
+                                          'urban_percent': 64,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'ROU': {'country_name': 'Romania',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 19925000,
+                                          'urban_percent': 54,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'RUS': {'country_name': 'Russian Federation',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 144985000,
+                                          'urban_percent': 74,
+                                          'national_alb': 97,
+                                          'urban_alb': 99},
+                                         'RWA': {'country_name': 'Rwanda',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 11369000,
+                                          'urban_percent': 17,
+                                          'national_alb': 57,
+                                          'urban_alb': 80},
+                                         'WSM': {'country_name': 'Samoa',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 194000,
+                                          'urban_percent': 19,
+                                          'national_alb': 91,
+                                          'urban_alb': 91},
+                                         'SEN': {'country_name': 'Senegal',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 14578000,
+                                          'urban_percent': 46,
+                                          'national_alb': 79,
+                                          'urban_alb': 94},
+                                         'SRB': {'country_name': 'Serbia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 8877000,
+                                          'urban_percent': 56,
+                                          'national_alb': 93,
+                                          'urban_alb': 92},
+                                         'SLE': {'country_name': 'Sierra Leone',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 7172000,
+                                          'urban_percent': 41,
+                                          'national_alb': 58,
+                                          'urban_alb': 76},
+                                         'SGP': {'country_name': 'Singapore',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 5592000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'SLB': {'country_name': 'Solomon Islands',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 603000,
+                                          'urban_percent': 22,
+                                          'national_alb': 69,
+                                          'urban_alb': 91},
+                                         'SOM': {'country_name': 'Somalia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 13797000,
+                                          'urban_percent': 43,
+                                          'national_alb': 49,
+                                          'urban_alb': 74},
+                                         'ZAF': {'country_name': 'South Africa',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 55386000,
+                                          'urban_percent': 65,
+                                          'national_alb': 92,
+                                          'urban_alb': 99},
+                                         'SSD': {'country_name': 'South Sudan',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 10716000,
+                                          'urban_percent': 19,
+                                          'national_alb': 41,
+                                          'urban_alb': 61},
+                                         'ESP': {'country_name': 'Spain',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 46672000,
+                                          'urban_percent': 80,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'LKA': {'country_name': 'Sri Lanka',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 20908000,
+                                          'urban_percent': 18,
+                                          'national_alb': 90,
+                                          'urban_alb': 98},
+                                         'SDN': {'country_name': 'Sudan',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 38903000,
+                                          'urban_percent': 34,
+                                          'national_alb': 59,
+                                          'urban_alb': 73},
+                                         'SUR': {'country_name': 'Suriname',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 559000,
+                                          'urban_percent': 66,
+                                          'national_alb': 96,
+                                          'urban_alb': 98},
+                                         'SWE': {'country_name': 'Sweden',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 9765000,
+                                          'urban_percent': 87,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'CHE': {'country_name': 'Switzerland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 8297000,
+                                          'urban_percent': 74,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'SYR': {'country_name': 'Syrian Arab Republic',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 17997000,
+                                          'urban_percent': 52,
+                                          'national_alb': 94,
+                                          'urban_alb': 95},
+                                         'TJK': {'country_name': 'Tajikistan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 8454000,
+                                          'urban_percent': 27,
+                                          'national_alb': 76,
+                                          'urban_alb': 95},
+                                         'THA': {'country_name': 'Thailand',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 68715000,
+                                          'urban_percent': 48,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'TLS': {'country_name': 'Timor-Leste',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 1196000,
+                                          'urban_percent': 29,
+                                          'national_alb': 75,
+                                          'urban_alb': 90},
+                                         'TGO': {'country_name': 'Togo',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 7323000,
+                                          'urban_percent': 40,
+                                          'national_alb': 64,
+                                          'urban_alb': 88},
+                                         'TON': {'country_name': 'Tonga',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 101000,
+                                          'urban_percent': 23,
+                                          'national_alb': 99,
+                                          'urban_alb': 100},
+                                         'TUN': {'country_name': 'Tunisia',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 11180000,
+                                          'urban_percent': 68,
+                                          'national_alb': 95,
+                                          'urban_alb': 100},
+                                         'TKM': {'country_name': 'Turkmenistan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 5565000,
+                                          'urban_percent': 50,
+                                          'national_alb': 98,
+                                          'urban_alb': 100},
+                                         'TUV': {'country_name': 'Tuvalu',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 11000,
+                                          'urban_percent': 60,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'UGA': {'country_name': 'Uganda',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 38225000,
+                                          'urban_percent': 22,
+                                          'national_alb': 48,
+                                          'urban_alb': 77},
+                                         'UKR': {'country_name': 'Ukraine',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 44922000,
+                                          'urban_percent': 69,
+                                          'national_alb': 94,
+                                          'urban_alb': 92},
+                                         'GBR': {'country_name': 'United Kingdom',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 65860000,
+                                          'urban_percent': 83,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'USA': {'country_name': 'United States of America',
+                                          'region': 'North America',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 320878000,
+                                          'urban_percent': 82,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'URY': {'country_name': 'Uruguay',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 3412000,
+                                          'urban_percent': 95,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'UZB': {'country_name': 'Uzbekistan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 30930000,
+                                          'urban_percent': 51,
+                                          'national_alb': 98,
+                                          'urban_alb': 100},
+                                         'VUT': {'country_name': 'Vanuatu',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 271000,
+                                          'urban_percent': 25,
+                                          'national_alb': 90,
+                                          'urban_alb': 100},
+                                         'VNM': {'country_name': 'Vietnam',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 92677000,
+                                          'urban_percent': 34,
+                                          'national_alb': 93,
+                                          'urban_alb': 98},
+                                         'ZMB': {'country_name': 'Zambia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 15879000,
+                                          'urban_percent': 42,
+                                          'national_alb': 61,
+                                          'urban_alb': 86},
+                                         'ZWE': {'country_name': 'Zimbabwe',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 13815000,
+                                          'urban_percent': 32,
+                                          'national_alb': 65,
+                                          'urban_alb': 94}}),
+                 "dict_2020_test": (TEXT_FORMAT_DICT, {'AFG': {'country_name': 'Afghanistan',
+                                          'region': 'South Asia',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 38928000,
+                                          'urban_percent': 26,
+                                          'national_alb': 75,
+                                          'urban_alb': 100},
+                                         'ALB': {'country_name': 'Albania',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 2878000,
+                                          'urban_percent': 62,
+                                          'national_alb': 95,
+                                          'urban_alb': 96},
+                                         'DZA': {'country_name': 'Algeria',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 43851000,
+                                          'urban_percent': 74,
+                                          'national_alb': 94,
+                                          'urban_alb': 96},
+                                         'AND': {'country_name': 'Andorra',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 77000,
+                                          'urban_percent': 88,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'AGO': {'country_name': 'Angola',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 32866000,
+                                          'urban_percent': 67,
+                                          'national_alb': 57,
+                                          'urban_alb': 72},
+                                         'ARM': {'country_name': 'Armenia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 2963000,
+                                          'urban_percent': 63,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'AUS': {'country_name': 'Australia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 25500000,
+                                          'urban_percent': 86,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'AUT': {'country_name': 'Austria',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 9006000,
+                                          'urban_percent': 59,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'AZE': {'country_name': 'Azerbaijan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 10139000,
+                                          'urban_percent': 56,
+                                          'national_alb': 96,
+                                          'urban_alb': 100},
+                                         'BGD': {'country_name': 'Bangladesh',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 164689000,
+                                          'urban_percent': 38,
+                                          'national_alb': 98,
+                                          'urban_alb': 97},
+                                         'BLR': {'country_name': 'Belarus',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 9449000,
+                                          'urban_percent': 79,
+                                          'national_alb': 96,
+                                          'urban_alb': 96},
+                                         'BEL': {'country_name': 'Belgium',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 11590000,
+                                          'urban_percent': 98,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'BLZ': {'country_name': 'Belize',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 398000,
+                                          'urban_percent': 46,
+                                          'national_alb': 98,
+                                          'urban_alb': 99},
+                                         'BEN': {'country_name': 'Benin',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 12123000,
+                                          'urban_percent': 48,
+                                          'national_alb': 65,
+                                          'urban_alb': 73},
+                                         'BMU': {'country_name': 'Bermuda',
+                                          'region': 'North America',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 62000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'BTN': {'country_name': 'Bhutan',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 772000,
+                                          'urban_percent': 42,
+                                          'national_alb': 97,
+                                          'urban_alb': 98},
+                                         'BIH': {'country_name': 'Bosnia and Herzegovina',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 3281000,
+                                          'urban_percent': 49,
+                                          'national_alb': 96,
+                                          'urban_alb': 95},
+                                         'BWA': {'country_name': 'Botswana',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 2352000,
+                                          'urban_percent': 71,
+                                          'national_alb': 92,
+                                          'urban_alb': 98},
+                                         'BRA': {'country_name': 'Brazil',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 212559000,
+                                          'urban_percent': 87,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'BRN': {'country_name': 'Brunei Darussalam',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 437000,
+                                          'urban_percent': 78,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'BGR': {'country_name': 'Bulgaria',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 6948000,
+                                          'urban_percent': 76,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'BFA': {'country_name': 'Burkina Faso',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 20903000,
+                                          'urban_percent': 31,
+                                          'national_alb': 47,
+                                          'urban_alb': 80},
+                                         'BDI': {'country_name': 'Burundi',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 11891000,
+                                          'urban_percent': 14,
+                                          'national_alb': 62,
+                                          'urban_alb': 91},
+                                         'CPV': {'country_name': 'Cabo Verde',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 556000,
+                                          'urban_percent': 67,
+                                          'national_alb': 89,
+                                          'urban_alb': 93},
+                                         'KHM': {'country_name': 'Cambodia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 16719000,
+                                          'urban_percent': 24,
+                                          'national_alb': 71,
+                                          'urban_alb': 90},
+                                         'CMR': {'country_name': 'Cameroon',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 26546000,
+                                          'urban_percent': 58,
+                                          'national_alb': 66,
+                                          'urban_alb': 82},
+                                         'CAN': {'country_name': 'Canada',
+                                          'region': 'North America',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 37742000,
+                                          'urban_percent': 82,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'CAF': {'country_name': 'Central African Republic',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 4830000,
+                                          'urban_percent': 42,
+                                          'national_alb': 37,
+                                          'urban_alb': 50},
+                                         'TCD': {'country_name': 'Chad',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 16426000,
+                                          'urban_percent': 24,
+                                          'national_alb': 46,
+                                          'urban_alb': 74},
+                                         'CHL': {'country_name': 'Chile',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 19116000,
+                                          'urban_percent': 88,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'CHN': {'country_name': 'China',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 1463141000,
+                                          'urban_percent': 62,
+                                          'national_alb': 94,
+                                          'urban_alb': 97},
+                                         'COL': {'country_name': 'Colombia',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 50883000,
+                                          'urban_percent': 81,
+                                          'national_alb': 97,
+                                          'urban_alb': 100},
+                                         'CRI': {'country_name': 'Costa Rica',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 5094000,
+                                          'urban_percent': 81,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'CIV': {'country_name': "Côte d'Ivoire",
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 26378000,
+                                          'urban_percent': 52,
+                                          'national_alb': 71,
+                                          'urban_alb': 85},
+                                         'CUB': {'country_name': 'Cuba',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 11327000,
+                                          'urban_percent': 77,
+                                          'national_alb': 97,
+                                          'urban_alb': 98},
+                                         'CYP': {'country_name': 'Cyprus',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 1207000,
+                                          'urban_percent': 67,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'CZE': {'country_name': 'Czech Republic',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 10709000,
+                                          'urban_percent': 74,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'DNK': {'country_name': 'Denmark',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 5792000,
+                                          'urban_percent': 88,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'DJI': {'country_name': 'Djibouti',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 988000,
+                                          'urban_percent': 78,
+                                          'national_alb': 76,
+                                          'urban_alb': 84},
+                                         'DOM': {'country_name': 'Dominican Republic',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 10848000,
+                                          'urban_percent': 83,
+                                          'national_alb': 97,
+                                          'urban_alb': 98},
+                                         'ECU': {'country_name': 'Ecuador',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 17643000,
+                                          'urban_percent': 64,
+                                          'national_alb': 95,
+                                          'urban_alb': 100},
+                                         'SLV': {'country_name': 'El Salvador',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 6486000,
+                                          'urban_percent': 73,
+                                          'national_alb': 98,
+                                          'urban_alb': 100},
+                                         'EST': {'country_name': 'Estonia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 1327000,
+                                          'urban_percent': 69,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'SWZ': {'country_name': 'Eswatini',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 1160000,
+                                          'urban_percent': 24,
+                                          'national_alb': 71,
+                                          'urban_alb': 97},
+                                         'ETH': {'country_name': 'Ethiopia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 114964000,
+                                          'urban_percent': 22,
+                                          'national_alb': 50,
+                                          'urban_alb': 84},
+                                         'FJI': {'country_name': 'Fiji',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 896000,
+                                          'urban_percent': 57,
+                                          'national_alb': 94,
+                                          'urban_alb': 98},
+                                         'FIN': {'country_name': 'Finland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 5541000,
+                                          'urban_percent': 86,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'FRA': {'country_name': 'France',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 65274000,
+                                          'urban_percent': 81,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'GAB': {'country_name': 'Gabon',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 2226000,
+                                          'urban_percent': 90,
+                                          'national_alb': 85,
+                                          'urban_alb': 90},
+                                         'GEO': {'country_name': 'Georgia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 3989000,
+                                          'urban_percent': 59,
+                                          'national_alb': 97,
+                                          'urban_alb': 100},
+                                         'DEU': {'country_name': 'Germany',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 83784000,
+                                          'urban_percent': 77,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'GHA': {'country_name': 'Ghana',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 31073000,
+                                          'urban_percent': 57,
+                                          'national_alb': 86,
+                                          'urban_alb': 96},
+                                         'GIB': {'country_name': 'Gibraltar',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 34000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'GRC': {'country_name': 'Greece',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 10423000,
+                                          'urban_percent': 80,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'GRL': {'country_name': 'Greenland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 57000,
+                                          'urban_percent': 87,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'GTM': {'country_name': 'Guatemala',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 17916000,
+                                          'urban_percent': 52,
+                                          'national_alb': 94,
+                                          'urban_alb': 98},
+                                         'GIN': {'country_name': 'Guinea',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 13133000,
+                                          'urban_percent': 37,
+                                          'national_alb': 64,
+                                          'urban_alb': 87},
+                                         'GNB': {'country_name': 'Guinea-Bissau',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 1968000,
+                                          'urban_percent': 44,
+                                          'national_alb': 59,
+                                          'urban_alb': 71},
+                                         'GUY': {'country_name': 'Guyana',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 787000,
+                                          'urban_percent': 27,
+                                          'national_alb': 96,
+                                          'urban_alb': 100},
+                                         'HTI': {'country_name': 'Haiti',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 11403000,
+                                          'urban_percent': 57,
+                                          'national_alb': 67,
+                                          'urban_alb': 85},
+                                         'HND': {'country_name': 'Honduras',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 9905000,
+                                          'urban_percent': 58,
+                                          'national_alb': 96,
+                                          'urban_alb': 100},
+                                         'HUN': {'country_name': 'Hungary',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 9660000,
+                                          'urban_percent': 72,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'ISL': {'country_name': 'Iceland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 341000,
+                                          'urban_percent': 94,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'IND': {'country_name': 'India',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 1380004000,
+                                          'urban_percent': 35,
+                                          'national_alb': 90,
+                                          'urban_alb': 94},
+                                         'IDN': {'country_name': 'Indonesia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 273524000,
+                                          'urban_percent': 57,
+                                          'national_alb': 92,
+                                          'urban_alb': 98},
+                                         'IRQ': {'country_name': 'Iraq',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 40223000,
+                                          'urban_percent': 71,
+                                          'national_alb': 98,
+                                          'urban_alb': 100},
+                                         'IRL': {'country_name': 'Ireland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 4938000,
+                                          'urban_percent': 64,
+                                          'national_alb': 97,
+                                          'urban_alb': 97},
+                                         'ISR': {'country_name': 'Israel',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 8656000,
+                                          'urban_percent': 93,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'JAM': {'country_name': 'Jamaica',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 2961000,
+                                          'urban_percent': 56,
+                                          'national_alb': 91,
+                                          'urban_alb': 95},
+                                         'JOR': {'country_name': 'Jordan',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 10203000,
+                                          'urban_percent': 91,
+                                          'national_alb': 99,
+                                          'urban_alb': 100},
+                                         'KAZ': {'country_name': 'Kazakhstan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 18777000,
+                                          'urban_percent': 58,
+                                          'national_alb': 95,
+                                          'urban_alb': 98},
+                                         'KEN': {'country_name': 'Kenya',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 53771000,
+                                          'urban_percent': 28,
+                                          'national_alb': 62,
+                                          'urban_alb': 87},
+                                         'KIR': {'country_name': 'Kiribati',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 119000,
+                                          'urban_percent': 56,
+                                          'national_alb': 78,
+                                          'urban_alb': 92},
+                                         'LVA': {'country_name': 'Latvia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 1886000,
+                                          'urban_percent': 68,
+                                          'national_alb': 99,
+                                          'urban_alb': 99},
+                                         'LSO': {'country_name': 'Lesotho',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 2142000,
+                                          'urban_percent': 29,
+                                          'national_alb': 72,
+                                          'urban_alb': 93},
+                                         'LBR': {'country_name': 'Liberia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 5058000,
+                                          'urban_percent': 52,
+                                          'national_alb': 75,
+                                          'urban_alb': 86},
+                                         'LTU': {'country_name': 'Lithuania',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 2722000,
+                                          'urban_percent': 68,
+                                          'national_alb': 98,
+                                          'urban_alb': 100},
+                                         'LUX': {'country_name': 'Luxembourg',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 626000,
+                                          'urban_percent': 91,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'MDG': {'country_name': 'Madagascar',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 27691000,
+                                          'urban_percent': 39,
+                                          'national_alb': 53,
+                                          'urban_alb': 80},
+                                         'MWI': {'country_name': 'Malawi',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 19130000,
+                                          'urban_percent': 17,
+                                          'national_alb': 70,
+                                          'urban_alb': 86},
+                                         'MYS': {'country_name': 'Malaysia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 32366000,
+                                          'urban_percent': 77,
+                                          'national_alb': 97,
+                                          'urban_alb': 100},
+                                         'MDV': {'country_name': 'Maldives',
+                                          'region': 'South Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 541000,
+                                          'urban_percent': 41,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'MLI': {'country_name': 'Mali',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 20251000,
+                                          'urban_percent': 44,
+                                          'national_alb': 83,
+                                          'urban_alb': 96},
+                                         'MLT': {'country_name': 'Malta',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 442000,
+                                          'urban_percent': 95,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'MHL': {'country_name': 'Marshall Islands',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 59000,
+                                          'urban_percent': 78,
+                                          'national_alb': 89,
+                                          'urban_alb': 87},
+                                         'MRT': {'country_name': 'Mauritania',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 4650000,
+                                          'urban_percent': 55,
+                                          'national_alb': 72,
+                                          'urban_alb': 89},
+                                         'MUS': {'country_name': 'Mauritius',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 1272000,
+                                          'urban_percent': 41,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'MEX': {'country_name': 'Mexico',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 128933000,
+                                          'urban_percent': 81,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'MCO': {'country_name': 'Monaco',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 39000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'MNG': {'country_name': 'Mongolia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 3278000,
+                                          'urban_percent': 69,
+                                          'national_alb': 85,
+                                          'urban_alb': 97},
+                                         'MNE': {'country_name': 'Montenegro',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 628000,
+                                          'urban_percent': 67,
+                                          'national_alb': 99,
+                                          'urban_alb': 100},
+                                         'MAR': {'country_name': 'Morocco',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 36911000,
+                                          'urban_percent': 64,
+                                          'national_alb': 90,
+                                          'urban_alb': 98},
+                                         'MOZ': {'country_name': 'Mozambique',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 31255000,
+                                          'urban_percent': 37,
+                                          'national_alb': 63,
+                                          'urban_alb': 88},
+                                         'MMR': {'country_name': 'Myanmar',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 54410000,
+                                          'urban_percent': 31,
+                                          'national_alb': 84,
+                                          'urban_alb': 95},
+                                         'NAM': {'country_name': 'Namibia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 2541000,
+                                          'urban_percent': 52,
+                                          'national_alb': 84,
+                                          'urban_alb': 96},
+                                         'NRU': {'country_name': 'Nauru',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 11000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'NPL': {'country_name': 'Nepal',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 29137000,
+                                          'urban_percent': 21,
+                                          'national_alb': 90,
+                                          'urban_alb': 90},
+                                         'NLD': {'country_name': 'Netherlands',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 17135000,
+                                          'urban_percent': 92,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'NZL': {'country_name': 'New Zealand',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 4822000,
+                                          'urban_percent': 87,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'NIC': {'country_name': 'Nicaragua',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 6625000,
+                                          'urban_percent': 59,
+                                          'national_alb': 82,
+                                          'urban_alb': 97},
+                                         'NER': {'country_name': 'Niger',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 24207000,
+                                          'urban_percent': 17,
+                                          'national_alb': 47,
+                                          'urban_alb': 86},
+                                         'NGA': {'country_name': 'Nigeria',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 206140000,
+                                          'urban_percent': 52,
+                                          'national_alb': 78,
+                                          'urban_alb': 92},
+                                         'MKD': {'country_name': 'North Macedonia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 2083000,
+                                          'urban_percent': 58,
+                                          'national_alb': 98,
+                                          'urban_alb': 98},
+                                         'NOR': {'country_name': 'Norway',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 5421000,
+                                          'urban_percent': 83,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'OMN': {'country_name': 'Oman',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 5107000,
+                                          'urban_percent': 86,
+                                          'national_alb': 92,
+                                          'urban_alb': 95},
+                                         'PAK': {'country_name': 'Pakistan',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 220892000,
+                                          'urban_percent': 37,
+                                          'national_alb': 90,
+                                          'urban_alb': 93},
+                                         'PLW': {'country_name': 'Palau',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 18000,
+                                          'urban_percent': 81,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'PAN': {'country_name': 'Panama',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 4315000,
+                                          'urban_percent': 68,
+                                          'national_alb': 94,
+                                          'urban_alb': 98},
+                                         'PNG': {'country_name': 'Papua New Guinea',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 8947000,
+                                          'urban_percent': 13,
+                                          'national_alb': 45,
+                                          'urban_alb': 86},
+                                         'PRY': {'country_name': 'Paraguay',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 7133000,
+                                          'urban_percent': 62,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'PER': {'country_name': 'Peru',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 32972000,
+                                          'urban_percent': 78,
+                                          'national_alb': 93,
+                                          'urban_alb': 97},
+                                         'PHL': {'country_name': 'Philippines',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 109581000,
+                                          'urban_percent': 47,
+                                          'national_alb': 94,
+                                          'urban_alb': 97},
+                                         'POL': {'country_name': 'Poland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 37847000,
+                                          'urban_percent': 60,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'PRT': {'country_name': 'Portugal',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 10197000,
+                                          'urban_percent': 66,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'ROU': {'country_name': 'Romania',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 19238000,
+                                          'urban_percent': 54,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'RUS': {'country_name': 'Russian Federation',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 145934000,
+                                          'urban_percent': 75,
+                                          'national_alb': 97,
+                                          'urban_alb': 99},
+                                         'RWA': {'country_name': 'Rwanda',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 12952000,
+                                          'urban_percent': 17,
+                                          'national_alb': 60,
+                                          'urban_alb': 83},
+                                         'WSM': {'country_name': 'Samoa',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 198000,
+                                          'urban_percent': 18,
+                                          'national_alb': 92,
+                                          'urban_alb': 92},
+                                         'SEN': {'country_name': 'Senegal',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 16744000,
+                                          'urban_percent': 48,
+                                          'national_alb': 85,
+                                          'urban_alb': 95},
+                                         'SRB': {'country_name': 'Serbia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 8737000,
+                                          'urban_percent': 56,
+                                          'national_alb': 95,
+                                          'urban_alb': 95},
+                                         'SLE': {'country_name': 'Sierra Leone',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 7977000,
+                                          'urban_percent': 43,
+                                          'national_alb': 64,
+                                          'urban_alb': 78},
+                                         'SGP': {'country_name': 'Singapore',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 5850000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'SLB': {'country_name': 'Solomon Islands',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 687000,
+                                          'urban_percent': 25,
+                                          'national_alb': 67,
+                                          'urban_alb': 91},
+                                         'SOM': {'country_name': 'Somalia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 15893000,
+                                          'urban_percent': 46,
+                                          'national_alb': 56,
+                                          'urban_alb': 79},
+                                         'ZAF': {'country_name': 'South Africa',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 59309000,
+                                          'urban_percent': 67,
+                                          'national_alb': 94,
+                                          'urban_alb': 100},
+                                         'SSD': {'country_name': 'South Sudan',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 11194000,
+                                          'urban_percent': 20,
+                                          'national_alb': 41,
+                                          'urban_alb': 70},
+                                         'ESP': {'country_name': 'Spain',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 46755000,
+                                          'urban_percent': 81,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'LKA': {'country_name': 'Sri Lanka',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 21413000,
+                                          'urban_percent': 19,
+                                          'national_alb': 92,
+                                          'urban_alb': 100},
+                                         'SDN': {'country_name': 'Sudan',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 43849000,
+                                          'urban_percent': 35,
+                                          'national_alb': 60,
+                                          'urban_alb': 74},
+                                         'SUR': {'country_name': 'Suriname',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 587000,
+                                          'urban_percent': 66,
+                                          'national_alb': 98,
+                                          'urban_alb': 99},
+                                         'SWE': {'country_name': 'Sweden',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 10099000,
+                                          'urban_percent': 88,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'CHE': {'country_name': 'Switzerland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 8655000,
+                                          'urban_percent': 74,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'SYR': {'country_name': 'Syrian Arab Republic',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 17501000,
+                                          'urban_percent': 55,
+                                          'national_alb': 94,
+                                          'urban_alb': 95},
+                                         'TJK': {'country_name': 'Tajikistan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 9538000,
+                                          'urban_percent': 28,
+                                          'national_alb': 82,
+                                          'urban_alb': 96},
+                                         'THA': {'country_name': 'Thailand',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 69800000,
+                                          'urban_percent': 51,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'TLS': {'country_name': 'Timor-Leste',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 1318000,
+                                          'urban_percent': 31,
+                                          'national_alb': 85,
+                                          'urban_alb': 96},
+                                         'TGO': {'country_name': 'Togo',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 8279000,
+                                          'urban_percent': 43,
+                                          'national_alb': 69,
+                                          'urban_alb': 91},
+                                         'TON': {'country_name': 'Tonga',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 106000,
+                                          'urban_percent': 23,
+                                          'national_alb': 99,
+                                          'urban_alb': 100},
+                                         'TUN': {'country_name': 'Tunisia',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 11819000,
+                                          'urban_percent': 70,
+                                          'national_alb': 98,
+                                          'urban_alb': 100},
+                                         'TKM': {'country_name': 'Turkmenistan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 6031000,
+                                          'urban_percent': 53,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'TUV': {'country_name': 'Tuvalu',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 12000,
+                                          'urban_percent': 64,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'UGA': {'country_name': 'Uganda',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 45741000,
+                                          'urban_percent': 25,
+                                          'national_alb': 56,
+                                          'urban_alb': 79},
+                                         'UKR': {'country_name': 'Ukraine',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 43734000,
+                                          'urban_percent': 69,
+                                          'national_alb': 94,
+                                          'urban_alb': 92},
+                                         'GBR': {'country_name': 'United Kingdom',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 67886000,
+                                          'urban_percent': 84,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'USA': {'country_name': 'United States of America',
+                                          'region': 'North America',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 331003000,
+                                          'urban_percent': 83,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'URY': {'country_name': 'Uruguay',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 3474000,
+                                          'urban_percent': 96,
+                                          'national_alb': 100,
+                                          'urban_alb': 100},
+                                         'UZB': {'country_name': 'Uzbekistan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 33469000,
+                                          'urban_percent': 50,
+                                          'national_alb': 98,
+                                          'urban_alb': 100},
+                                         'VUT': {'country_name': 'Vanuatu',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 307000,
+                                          'urban_percent': 26,
+                                          'national_alb': 91,
+                                          'urban_alb': 100},
+                                         'VNM': {'country_name': 'Vietnam',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 97339000,
+                                          'urban_percent': 37,
+                                          'national_alb': 97,
+                                          'urban_alb': 100},
+                                         'ZMB': {'country_name': 'Zambia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 18384000,
+                                          'urban_percent': 45,
+                                          'national_alb': 65,
+                                          'urban_alb': 87},
+                                         'ZWE': {'country_name': 'Zimbabwe',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 14863000,
+                                          'urban_percent': 32,
+                                          'national_alb': 63,
+                                          'urban_alb': 93}}),
+                 "10": (TEXT_FORMAT_DICT, {'country_name': 'China',
+                                         'region': 'East Asia & Pacific',
+                                         'income_level': 'Upper middle income',
+                                         'year': 2020,
+                                         'pop': 1463141000,
+                                         'urban_percent': 62,
+                                         'national_alb': 94,
+                                         'urban_alb': 97}),
+                 "11": (TEXT_FORMAT, 88),
+                 "12": (TEXT_FORMAT, 60000),
+                 "13": (TEXT_FORMAT_DICT, {'Low income': 514021000,
+                                         'Upper middle income': 2430080000,
+                                         'Lower middle income': 3045857000,
+                                         'High income': 871268000}),
+                 "14": (TEXT_FORMAT_DICT, {'Low income': 302975040,
+                                         'Upper middle income': 2321860110,
+                                         'Lower middle income': 2687761440,
+                                         'High income': 870638000}),
+                 "15": (TEXT_FORMAT_DICT, {'Low income': 59,
+                                         'Upper middle income': 96,
+                                         'Lower middle income': 88,
+                                         'High income': 100}),
+                 "dict_2015_rural_alb_test": (TEXT_FORMAT_DICT, {'AFG': {'country_name': 'Afghanistan',
+                                          'region': 'South Asia',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 34414000,
+                                          'urban_percent': 25,
+                                          'national_alb': 61,
+                                          'urban_alb': 87,
+                                          'rural_alb': 52},
+                                         'ALB': {'country_name': 'Albania',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 2891000,
+                                          'urban_percent': 57,
+                                          'national_alb': 93,
+                                          'urban_alb': 95,
+                                          'rural_alb': 90},
+                                         'DZA': {'country_name': 'Algeria',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 39728000,
+                                          'urban_percent': 71,
+                                          'national_alb': 93,
+                                          'urban_alb': 95,
+                                          'rural_alb': 88},
+                                         'AND': {'country_name': 'Andorra',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 78000,
+                                          'urban_percent': 88,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'AGO': {'country_name': 'Angola',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 27884000,
+                                          'urban_percent': 63,
+                                          'national_alb': 54,
+                                          'urban_alb': 70,
+                                          'rural_alb': 27},
+                                         'ARM': {'country_name': 'Armenia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 2926000,
+                                          'urban_percent': 63,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'AUS': {'country_name': 'Australia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 23932000,
+                                          'urban_percent': 86,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'AUT': {'country_name': 'Austria',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 8679000,
+                                          'urban_percent': 58,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'AZE': {'country_name': 'Azerbaijan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 9623000,
+                                          'urban_percent': 55,
+                                          'national_alb': 92,
+                                          'urban_alb': 100,
+                                          'rural_alb': 82},
+                                         'BGD': {'country_name': 'Bangladesh',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 156256000,
+                                          'urban_percent': 34,
+                                          'national_alb': 97,
+                                          'urban_alb': 98,
+                                          'rural_alb': 96},
+                                         'BLR': {'country_name': 'Belarus',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 9439000,
+                                          'urban_percent': 77,
+                                          'national_alb': 96,
+                                          'urban_alb': 96,
+                                          'rural_alb': 96},
+                                         'BEL': {'country_name': 'Belgium',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 11288000,
+                                          'urban_percent': 98,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'BLZ': {'country_name': 'Belize',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 361000,
+                                          'urban_percent': 45,
+                                          'national_alb': 97,
+                                          'urban_alb': 100,
+                                          'rural_alb': 95},
+                                         'BEN': {'country_name': 'Benin',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 10576000,
+                                          'urban_percent': 46,
+                                          'national_alb': 65,
+                                          'urban_alb': 74,
+                                          'rural_alb': 57},
+                                         'BMU': {'country_name': 'Bermuda',
+                                          'region': 'North America',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 64000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'BTN': {'country_name': 'Bhutan',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 728000,
+                                          'urban_percent': 39,
+                                          'national_alb': 96,
+                                          'urban_alb': 98,
+                                          'rural_alb': 95},
+                                         'BIH': {'country_name': 'Bosnia and Herzegovina',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 3429000,
+                                          'urban_percent': 47,
+                                          'national_alb': 96,
+                                          'urban_alb': 95,
+                                          'rural_alb': 97},
+                                         'BWA': {'country_name': 'Botswana',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 2121000,
+                                          'urban_percent': 67,
+                                          'national_alb': 88,
+                                          'urban_alb': 97,
+                                          'rural_alb': 70},
+                                         'BRA': {'country_name': 'Brazil',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 204472000,
+                                          'urban_percent': 86,
+                                          'national_alb': 98,
+                                          'urban_alb': 100,
+                                          'rural_alb': 86},
+                                         'BRN': {'country_name': 'Brunei Darussalam',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 415000,
+                                          'urban_percent': 77,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'BGR': {'country_name': 'Bulgaria',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 7200000,
+                                          'urban_percent': 74,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'BFA': {'country_name': 'Burkina Faso',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 18111000,
+                                          'urban_percent': 28,
+                                          'national_alb': 50,
+                                          'urban_alb': 80,
+                                          'rural_alb': 38},
+                                         'BDI': {'country_name': 'Burundi',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 10160000,
+                                          'urban_percent': 12,
+                                          'national_alb': 60,
+                                          'urban_alb': 89,
+                                          'rural_alb': 56},
+                                         'CPV': {'country_name': 'Cabo Verde',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 525000,
+                                          'urban_percent': 64,
+                                          'national_alb': 85,
+                                          'urban_alb': 92,
+                                          'rural_alb': 73},
+                                         'KHM': {'country_name': 'Cambodia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 15521000,
+                                          'urban_percent': 22,
+                                          'national_alb': 68,
+                                          'urban_alb': 89,
+                                          'rural_alb': 62},
+                                         'CMR': {'country_name': 'Cameroon',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 23298000,
+                                          'urban_percent': 55,
+                                          'national_alb': 64,
+                                          'urban_alb': 82,
+                                          'rural_alb': 42},
+                                         'CAN': {'country_name': 'Canada',
+                                          'region': 'North America',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 36027000,
+                                          'urban_percent': 81,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'CAF': {'country_name': 'Central African Republic',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 4493000,
+                                          'urban_percent': 40,
+                                          'national_alb': 42,
+                                          'urban_alb': 58,
+                                          'rural_alb': 31},
+                                         'TCD': {'country_name': 'Chad',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 14111000,
+                                          'urban_percent': 23,
+                                          'national_alb': 44,
+                                          'urban_alb': 75,
+                                          'rural_alb': 35},
+                                         'CHL': {'country_name': 'Chile',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 17969000,
+                                          'urban_percent': 87,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'CHN': {'country_name': 'China',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 1430405000,
+                                          'urban_percent': 56,
+                                          'national_alb': 92,
+                                          'urban_alb': 98,
+                                          'rural_alb': 84},
+                                         'COL': {'country_name': 'Colombia',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 47521000,
+                                          'urban_percent': 80,
+                                          'national_alb': 96,
+                                          'urban_alb': 100,
+                                          'rural_alb': 80},
+                                         'CRI': {'country_name': 'Costa Rica',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 4848000,
+                                          'urban_percent': 77,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'CIV': {'country_name': "Côte d'Ivoire",
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 23226000,
+                                          'urban_percent': 49,
+                                          'national_alb': 71,
+                                          'urban_alb': 87,
+                                          'rural_alb': 56},
+                                         'CUB': {'country_name': 'Cuba',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 11325000,
+                                          'urban_percent': 77,
+                                          'national_alb': 96,
+                                          'urban_alb': 98,
+                                          'rural_alb': 89},
+                                         'CYP': {'country_name': 'Cyprus',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 1161000,
+                                          'urban_percent': 67,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'CZE': {'country_name': 'Czech Republic',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 10601000,
+                                          'urban_percent': 73,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'DNK': {'country_name': 'Denmark',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 5689000,
+                                          'urban_percent': 88,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'DJI': {'country_name': 'Djibouti',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 914000,
+                                          'urban_percent': 77,
+                                          'national_alb': 76,
+                                          'urban_alb': 84,
+                                          'rural_alb': 49},
+                                         'DOM': {'country_name': 'Dominican Republic',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 10282000,
+                                          'urban_percent': 79,
+                                          'national_alb': 96,
+                                          'urban_alb': 98,
+                                          'rural_alb': 88},
+                                         'ECU': {'country_name': 'Ecuador',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 16212000,
+                                          'urban_percent': 63,
+                                          'national_alb': 93,
+                                          'urban_alb': 100,
+                                          'rural_alb': 81},
+                                         'SLV': {'country_name': 'El Salvador',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 6325000,
+                                          'urban_percent': 70,
+                                          'national_alb': 96,
+                                          'urban_alb': 99,
+                                          'rural_alb': 89},
+                                         'EST': {'country_name': 'Estonia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 1315000,
+                                          'urban_percent': 68,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'SWZ': {'country_name': 'Eswatini',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 1104000,
+                                          'urban_percent': 23,
+                                          'national_alb': 67,
+                                          'urban_alb': 95,
+                                          'rural_alb': 59},
+                                         'ETH': {'country_name': 'Ethiopia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 100835000,
+                                          'urban_percent': 19,
+                                          'national_alb': 42,
+                                          'urban_alb': 82,
+                                          'rural_alb': 33},
+                                         'FJI': {'country_name': 'Fiji',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 869000,
+                                          'urban_percent': 55,
+                                          'national_alb': 94,
+                                          'urban_alb': 98,
+                                          'rural_alb': 89},
+                                         'FIN': {'country_name': 'Finland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 5481000,
+                                          'urban_percent': 85,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'FRA': {'country_name': 'France',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 64453000,
+                                          'urban_percent': 80,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'GAB': {'country_name': 'Gabon',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 1948000,
+                                          'urban_percent': 88,
+                                          'national_alb': 84,
+                                          'urban_alb': 89,
+                                          'rural_alb': 47},
+                                         'GEO': {'country_name': 'Georgia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 4024000,
+                                          'urban_percent': 57,
+                                          'national_alb': 96,
+                                          'urban_alb': 100,
+                                          'rural_alb': 91},
+                                         'DEU': {'country_name': 'Germany',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 81787000,
+                                          'urban_percent': 77,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'GHA': {'country_name': 'Ghana',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 27849000,
+                                          'urban_percent': 54,
+                                          'national_alb': 80,
+                                          'urban_alb': 91,
+                                          'rural_alb': 67},
+                                         'GIB': {'country_name': 'Gibraltar',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 34000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'GRC': {'country_name': 'Greece',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 10660000,
+                                          'urban_percent': 78,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'GRL': {'country_name': 'Greenland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 56000,
+                                          'urban_percent': 86,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'GTM': {'country_name': 'Guatemala',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 16252000,
+                                          'urban_percent': 50,
+                                          'national_alb': 92,
+                                          'urban_alb': 97,
+                                          'rural_alb': 87},
+                                         'GIN': {'country_name': 'Guinea',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 11432000,
+                                          'urban_percent': 35,
+                                          'national_alb': 64,
+                                          'urban_alb': 85,
+                                          'rural_alb': 53},
+                                         'GNB': {'country_name': 'Guinea-Bissau',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 1737000,
+                                          'urban_percent': 42,
+                                          'national_alb': 59,
+                                          'urban_alb': 73,
+                                          'rural_alb': 49},
+                                         'GUY': {'country_name': 'Guyana',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 767000,
+                                          'urban_percent': 26,
+                                          'national_alb': 95,
+                                          'urban_alb': 100,
+                                          'rural_alb': 93},
+                                         'HTI': {'country_name': 'Haiti',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 10696000,
+                                          'urban_percent': 52,
+                                          'national_alb': 65,
+                                          'urban_alb': 85,
+                                          'rural_alb': 43},
+                                         'HND': {'country_name': 'Honduras',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 9113000,
+                                          'urban_percent': 55,
+                                          'national_alb': 93,
+                                          'urban_alb': 99,
+                                          'rural_alb': 86},
+                                         'HUN': {'country_name': 'Hungary',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 9778000,
+                                          'urban_percent': 71,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'ISL': {'country_name': 'Iceland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 330000,
+                                          'urban_percent': 94,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'IND': {'country_name': 'India',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 1310152000,
+                                          'urban_percent': 33,
+                                          'national_alb': 88,
+                                          'urban_alb': 93,
+                                          'rural_alb': 86},
+                                         'IDN': {'country_name': 'Indonesia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 258383000,
+                                          'urban_percent': 53,
+                                          'national_alb': 89,
+                                          'urban_alb': 95,
+                                          'rural_alb': 82},
+                                         'IRQ': {'country_name': 'Iraq',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 35572000,
+                                          'urban_percent': 70,
+                                          'national_alb': 94,
+                                          'urban_alb': 98,
+                                          'rural_alb': 85},
+                                         'IRL': {'country_name': 'Ireland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 4652000,
+                                          'urban_percent': 63,
+                                          'national_alb': 97,
+                                          'urban_alb': 97,
+                                          'rural_alb': 97},
+                                         'ISR': {'country_name': 'Israel',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 7978000,
+                                          'urban_percent': 92,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'JAM': {'country_name': 'Jamaica',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 2891000,
+                                          'urban_percent': 55,
+                                          'national_alb': 90,
+                                          'urban_alb': 95,
+                                          'rural_alb': 84},
+                                         'JOR': {'country_name': 'Jordan',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 9267000,
+                                          'urban_percent': 90,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'KAZ': {'country_name': 'Kazakhstan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 17572000,
+                                          'urban_percent': 57,
+                                          'national_alb': 95,
+                                          'urban_alb': 98,
+                                          'rural_alb': 91},
+                                         'KEN': {'country_name': 'Kenya',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 47878000,
+                                          'urban_percent': 26,
+                                          'national_alb': 58,
+                                          'urban_alb': 87,
+                                          'rural_alb': 48},
+                                         'KIR': {'country_name': 'Kiribati',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 111000,
+                                          'urban_percent': 52,
+                                          'national_alb': 74,
+                                          'urban_alb': 89,
+                                          'rural_alb': 58},
+                                         'LVA': {'country_name': 'Latvia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 1998000,
+                                          'urban_percent': 68,
+                                          'national_alb': 99,
+                                          'urban_alb': 99,
+                                          'rural_alb': 99},
+                                         'LSO': {'country_name': 'Lesotho',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 2059000,
+                                          'urban_percent': 27,
+                                          'national_alb': 71,
+                                          'urban_alb': 90,
+                                          'rural_alb': 64},
+                                         'LBR': {'country_name': 'Liberia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 4472000,
+                                          'urban_percent': 50,
+                                          'national_alb': 73,
+                                          'urban_alb': 84,
+                                          'rural_alb': 62},
+                                         'LTU': {'country_name': 'Lithuania',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 2932000,
+                                          'urban_percent': 67,
+                                          'national_alb': 97,
+                                          'urban_alb': 100,
+                                          'rural_alb': 91},
+                                         'LUX': {'country_name': 'Luxembourg',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 567000,
+                                          'urban_percent': 90,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'MDG': {'country_name': 'Madagascar',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 24234000,
+                                          'urban_percent': 35,
+                                          'national_alb': 49,
+                                          'urban_alb': 78,
+                                          'rural_alb': 33},
+                                         'MWI': {'country_name': 'Malawi',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 16745000,
+                                          'urban_percent': 16,
+                                          'national_alb': 66,
+                                          'urban_alb': 86,
+                                          'rural_alb': 62},
+                                         'MYS': {'country_name': 'Malaysia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 30271000,
+                                          'urban_percent': 74,
+                                          'national_alb': 97,
+                                          'urban_alb': 100,
+                                          'rural_alb': 88},
+                                         'MDV': {'country_name': 'Maldives',
+                                          'region': 'South Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 455000,
+                                          'urban_percent': 39,
+                                          'national_alb': 99,
+                                          'urban_alb': 99,
+                                          'rural_alb': 99},
+                                         'MLI': {'country_name': 'Mali',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 17439000,
+                                          'urban_percent': 40,
+                                          'national_alb': 74,
+                                          'urban_alb': 91,
+                                          'rural_alb': 63},
+                                         'MLT': {'country_name': 'Malta',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 434000,
+                                          'urban_percent': 94,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'MHL': {'country_name': 'Marshall Islands',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 57000,
+                                          'urban_percent': 76,
+                                          'national_alb': 88,
+                                          'urban_alb': 86,
+                                          'rural_alb': 94},
+                                         'MRT': {'country_name': 'Mauritania',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 4046000,
+                                          'urban_percent': 51,
+                                          'national_alb': 67,
+                                          'urban_alb': 86,
+                                          'rural_alb': 47},
+                                         'MUS': {'country_name': 'Mauritius',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 1259000,
+                                          'urban_percent': 41,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'MEX': {'country_name': 'Mexico',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 121858000,
+                                          'urban_percent': 79,
+                                          'national_alb': 98,
+                                          'urban_alb': 100,
+                                          'rural_alb': 90},
+                                         'MCO': {'country_name': 'Monaco',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 38000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'MNG': {'country_name': 'Mongolia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 2998000,
+                                          'urban_percent': 68,
+                                          'national_alb': 81,
+                                          'urban_alb': 94,
+                                          'rural_alb': 53},
+                                         'MNE': {'country_name': 'Montenegro',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 627000,
+                                          'urban_percent': 66,
+                                          'national_alb': 97,
+                                          'urban_alb': 98,
+                                          'rural_alb': 95},
+                                         'MAR': {'country_name': 'Morocco',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 34664000,
+                                          'urban_percent': 61,
+                                          'national_alb': 84,
+                                          'urban_alb': 96,
+                                          'rural_alb': 65},
+                                         'MOZ': {'country_name': 'Mozambique',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 27042000,
+                                          'urban_percent': 34,
+                                          'national_alb': 51,
+                                          'urban_alb': 80,
+                                          'rural_alb': 36},
+                                         'MMR': {'country_name': 'Myanmar',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 52681000,
+                                          'urban_percent': 30,
+                                          'national_alb': 74,
+                                          'urban_alb': 88,
+                                          'rural_alb': 68},
+                                         'NAM': {'country_name': 'Namibia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 2315000,
+                                          'urban_percent': 47,
+                                          'national_alb': 83,
+                                          'urban_alb': 97,
+                                          'rural_alb': 71},
+                                         'NRU': {'country_name': 'Nauru',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 10000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'NPL': {'country_name': 'Nepal',
+                                          'region': 'South Asia',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 27015000,
+                                          'urban_percent': 19,
+                                          'national_alb': 88,
+                                          'urban_alb': 90,
+                                          'rural_alb': 88},
+                                         'NLD': {'country_name': 'Netherlands',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 16938000,
+                                          'urban_percent': 90,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'NZL': {'country_name': 'New Zealand',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 4615000,
+                                          'urban_percent': 86,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'NIC': {'country_name': 'Nicaragua',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 6223000,
+                                          'urban_percent': 58,
+                                          'national_alb': 81,
+                                          'urban_alb': 97,
+                                          'rural_alb': 59},
+                                         'NER': {'country_name': 'Niger',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 20002000,
+                                          'urban_percent': 16,
+                                          'national_alb': 45,
+                                          'urban_alb': 88,
+                                          'rural_alb': 37},
+                                         'NGA': {'country_name': 'Nigeria',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 181137000,
+                                          'urban_percent': 48,
+                                          'national_alb': 69,
+                                          'urban_alb': 85,
+                                          'rural_alb': 54},
+                                         'MKD': {'country_name': 'North Macedonia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 2079000,
+                                          'urban_percent': 57,
+                                          'national_alb': 97,
+                                          'urban_alb': 97,
+                                          'rural_alb': 97},
+                                         'NOR': {'country_name': 'Norway',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 5200000,
+                                          'urban_percent': 81,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'OMN': {'country_name': 'Oman',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 4267000,
+                                          'urban_percent': 81,
+                                          'national_alb': 90,
+                                          'urban_alb': 94,
+                                          'rural_alb': 73},
+                                         'PAK': {'country_name': 'Pakistan',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 199427000,
+                                          'urban_percent': 36,
+                                          'national_alb': 89,
+                                          'urban_alb': 94,
+                                          'rural_alb': 86},
+                                         'PLW': {'country_name': 'Palau',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 18000,
+                                          'urban_percent': 78,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'PAN': {'country_name': 'Panama',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 3968000,
+                                          'urban_percent': 67,
+                                          'national_alb': 93,
+                                          'urban_alb': 98,
+                                          'rural_alb': 83},
+                                         'PNG': {'country_name': 'Papua New Guinea',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 8108000,
+                                          'urban_percent': 13,
+                                          'national_alb': 41,
+                                          'urban_alb': 85,
+                                          'rural_alb': 34},
+                                         'PRY': {'country_name': 'Paraguay',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 6689000,
+                                          'urban_percent': 61,
+                                          'national_alb': 97,
+                                          'urban_alb': 100,
+                                          'rural_alb': 92},
+                                         'PER': {'country_name': 'Peru',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 30471000,
+                                          'urban_percent': 77,
+                                          'national_alb': 90,
+                                          'urban_alb': 95,
+                                          'rural_alb': 73},
+                                         'PHL': {'country_name': 'Philippines',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 102113000,
+                                          'urban_percent': 46,
+                                          'national_alb': 92,
+                                          'urban_alb': 96,
+                                          'rural_alb': 89},
+                                         'POL': {'country_name': 'Poland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 38034000,
+                                          'urban_percent': 60,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'PRT': {'country_name': 'Portugal',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 10368000,
+                                          'urban_percent': 64,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'ROU': {'country_name': 'Romania',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 19925000,
+                                          'urban_percent': 54,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'RUS': {'country_name': 'Russian Federation',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 144985000,
+                                          'urban_percent': 74,
+                                          'national_alb': 97,
+                                          'urban_alb': 99,
+                                          'rural_alb': 91},
+                                         'RWA': {'country_name': 'Rwanda',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 11369000,
+                                          'urban_percent': 17,
+                                          'national_alb': 57,
+                                          'urban_alb': 80,
+                                          'rural_alb': 52},
+                                         'WSM': {'country_name': 'Samoa',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 194000,
+                                          'urban_percent': 19,
+                                          'national_alb': 91,
+                                          'urban_alb': 91,
+                                          'rural_alb': 91},
+                                         'SEN': {'country_name': 'Senegal',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 14578000,
+                                          'urban_percent': 46,
+                                          'national_alb': 79,
+                                          'urban_alb': 94,
+                                          'rural_alb': 66},
+                                         'SRB': {'country_name': 'Serbia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 8877000,
+                                          'urban_percent': 56,
+                                          'national_alb': 93,
+                                          'urban_alb': 92,
+                                          'rural_alb': 94},
+                                         'SLE': {'country_name': 'Sierra Leone',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 7172000,
+                                          'urban_percent': 41,
+                                          'national_alb': 58,
+                                          'urban_alb': 76,
+                                          'rural_alb': 45},
+                                         'SGP': {'country_name': 'Singapore',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 5592000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'SLB': {'country_name': 'Solomon Islands',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 603000,
+                                          'urban_percent': 22,
+                                          'national_alb': 69,
+                                          'urban_alb': 91,
+                                          'rural_alb': 63},
+                                         'SOM': {'country_name': 'Somalia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 13797000,
+                                          'urban_percent': 43,
+                                          'national_alb': 49,
+                                          'urban_alb': 74,
+                                          'rural_alb': 30},
+                                         'ZAF': {'country_name': 'South Africa',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 55386000,
+                                          'urban_percent': 65,
+                                          'national_alb': 92,
+                                          'urban_alb': 99,
+                                          'rural_alb': 79},
+                                         'SSD': {'country_name': 'South Sudan',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 10716000,
+                                          'urban_percent': 19,
+                                          'national_alb': 41,
+                                          'urban_alb': 61,
+                                          'rural_alb': 36},
+                                         'ESP': {'country_name': 'Spain',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 46672000,
+                                          'urban_percent': 80,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'LKA': {'country_name': 'Sri Lanka',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 20908000,
+                                          'urban_percent': 18,
+                                          'national_alb': 90,
+                                          'urban_alb': 98,
+                                          'rural_alb': 88},
+                                         'SDN': {'country_name': 'Sudan',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 38903000,
+                                          'urban_percent': 34,
+                                          'national_alb': 59,
+                                          'urban_alb': 73,
+                                          'rural_alb': 52},
+                                         'SUR': {'country_name': 'Suriname',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 559000,
+                                          'urban_percent': 66,
+                                          'national_alb': 96,
+                                          'urban_alb': 98,
+                                          'rural_alb': 92},
+                                         'SWE': {'country_name': 'Sweden',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 9765000,
+                                          'urban_percent': 87,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'CHE': {'country_name': 'Switzerland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 8297000,
+                                          'urban_percent': 74,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'SYR': {'country_name': 'Syrian Arab Republic',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 17997000,
+                                          'urban_percent': 52,
+                                          'national_alb': 94,
+                                          'urban_alb': 95,
+                                          'rural_alb': 93},
+                                         'TJK': {'country_name': 'Tajikistan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 8454000,
+                                          'urban_percent': 27,
+                                          'national_alb': 76,
+                                          'urban_alb': 95,
+                                          'rural_alb': 69},
+                                         'THA': {'country_name': 'Thailand',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 68715000,
+                                          'urban_percent': 48,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'TLS': {'country_name': 'Timor-Leste',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 1196000,
+                                          'urban_percent': 29,
+                                          'national_alb': 75,
+                                          'urban_alb': 90,
+                                          'rural_alb': 69},
+                                         'TGO': {'country_name': 'Togo',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 7323000,
+                                          'urban_percent': 40,
+                                          'national_alb': 64,
+                                          'urban_alb': 88,
+                                          'rural_alb': 48},
+                                         'TON': {'country_name': 'Tonga',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 101000,
+                                          'urban_percent': 23,
+                                          'national_alb': 99,
+                                          'urban_alb': 100,
+                                          'rural_alb': 99},
+                                         'TUN': {'country_name': 'Tunisia',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 11180000,
+                                          'urban_percent': 68,
+                                          'national_alb': 95,
+                                          'urban_alb': 100,
+                                          'rural_alb': 84},
+                                         'TKM': {'country_name': 'Turkmenistan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 5565000,
+                                          'urban_percent': 50,
+                                          'national_alb': 98,
+                                          'urban_alb': 100,
+                                          'rural_alb': 96},
+                                         'TUV': {'country_name': 'Tuvalu',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2015,
+                                          'pop': 11000,
+                                          'urban_percent': 60,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'UGA': {'country_name': 'Uganda',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 38225000,
+                                          'urban_percent': 22,
+                                          'national_alb': 48,
+                                          'urban_alb': 77,
+                                          'rural_alb': 40},
+                                         'UKR': {'country_name': 'Ukraine',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 44922000,
+                                          'urban_percent': 69,
+                                          'national_alb': 94,
+                                          'urban_alb': 92,
+                                          'rural_alb': 98},
+                                         'GBR': {'country_name': 'United Kingdom',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 65860000,
+                                          'urban_percent': 83,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'USA': {'country_name': 'United States of America',
+                                          'region': 'North America',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 320878000,
+                                          'urban_percent': 82,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'URY': {'country_name': 'Uruguay',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'High income',
+                                          'year': 2015,
+                                          'pop': 3412000,
+                                          'urban_percent': 95,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'UZB': {'country_name': 'Uzbekistan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 30930000,
+                                          'urban_percent': 51,
+                                          'national_alb': 98,
+                                          'urban_alb': 100,
+                                          'rural_alb': 96},
+                                         'VUT': {'country_name': 'Vanuatu',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 271000,
+                                          'urban_percent': 25,
+                                          'national_alb': 90,
+                                          'urban_alb': 100,
+                                          'rural_alb': 87},
+                                         'VNM': {'country_name': 'Vietnam',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 92677000,
+                                          'urban_percent': 34,
+                                          'national_alb': 93,
+                                          'urban_alb': 98,
+                                          'rural_alb': 90},
+                                         'ZMB': {'country_name': 'Zambia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2015,
+                                          'pop': 15879000,
+                                          'urban_percent': 42,
+                                          'national_alb': 61,
+                                          'urban_alb': 86,
+                                          'rural_alb': 43},
+                                         'ZWE': {'country_name': 'Zimbabwe',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2015,
+                                          'pop': 13815000,
+                                          'urban_percent': 32,
+                                          'national_alb': 65,
+                                          'urban_alb': 94,
+                                          'rural_alb': 51}}),
+"dict_2020_rural_alb_test": (TEXT_FORMAT_DICT, {'AFG': {'country_name': 'Afghanistan',
+                                          'region': 'South Asia',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 38928000,
+                                          'urban_percent': 26,
+                                          'national_alb': 75,
+                                          'urban_alb': 100,
+                                          'rural_alb': 66},
+                                         'ALB': {'country_name': 'Albania',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 2878000,
+                                          'urban_percent': 62,
+                                          'national_alb': 95,
+                                          'urban_alb': 96,
+                                          'rural_alb': 93},
+                                         'DZA': {'country_name': 'Algeria',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 43851000,
+                                          'urban_percent': 74,
+                                          'national_alb': 94,
+                                          'urban_alb': 96,
+                                          'rural_alb': 88},
+                                         'AND': {'country_name': 'Andorra',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 77000,
+                                          'urban_percent': 88,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'AGO': {'country_name': 'Angola',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 32866000,
+                                          'urban_percent': 67,
+                                          'national_alb': 57,
+                                          'urban_alb': 72,
+                                          'rural_alb': 27},
+                                         'ARM': {'country_name': 'Armenia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 2963000,
+                                          'urban_percent': 63,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'AUS': {'country_name': 'Australia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 25500000,
+                                          'urban_percent': 86,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'AUT': {'country_name': 'Austria',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 9006000,
+                                          'urban_percent': 59,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'AZE': {'country_name': 'Azerbaijan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 10139000,
+                                          'urban_percent': 56,
+                                          'national_alb': 96,
+                                          'urban_alb': 100,
+                                          'rural_alb': 91},
+                                         'BGD': {'country_name': 'Bangladesh',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 164689000,
+                                          'urban_percent': 38,
+                                          'national_alb': 98,
+                                          'urban_alb': 97,
+                                          'rural_alb': 99},
+                                         'BLR': {'country_name': 'Belarus',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 9449000,
+                                          'urban_percent': 79,
+                                          'national_alb': 96,
+                                          'urban_alb': 96,
+                                          'rural_alb': 96},
+                                         'BEL': {'country_name': 'Belgium',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 11590000,
+                                          'urban_percent': 98,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'BLZ': {'country_name': 'Belize',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 398000,
+                                          'urban_percent': 46,
+                                          'national_alb': 98,
+                                          'urban_alb': 99,
+                                          'rural_alb': 97},
+                                         'BEN': {'country_name': 'Benin',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 12123000,
+                                          'urban_percent': 48,
+                                          'national_alb': 65,
+                                          'urban_alb': 73,
+                                          'rural_alb': 58},
+                                         'BMU': {'country_name': 'Bermuda',
+                                          'region': 'North America',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 62000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'BTN': {'country_name': 'Bhutan',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 772000,
+                                          'urban_percent': 42,
+                                          'national_alb': 97,
+                                          'urban_alb': 98,
+                                          'rural_alb': 96},
+                                         'BIH': {'country_name': 'Bosnia and Herzegovina',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 3281000,
+                                          'urban_percent': 49,
+                                          'national_alb': 96,
+                                          'urban_alb': 95,
+                                          'rural_alb': 97},
+                                         'BWA': {'country_name': 'Botswana',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 2352000,
+                                          'urban_percent': 71,
+                                          'national_alb': 92,
+                                          'urban_alb': 98,
+                                          'rural_alb': 77},
+                                         'BRA': {'country_name': 'Brazil',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 212559000,
+                                          'urban_percent': 87,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'BRN': {'country_name': 'Brunei Darussalam',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 437000,
+                                          'urban_percent': 78,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'BGR': {'country_name': 'Bulgaria',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 6948000,
+                                          'urban_percent': 76,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'BFA': {'country_name': 'Burkina Faso',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 20903000,
+                                          'urban_percent': 31,
+                                          'national_alb': 47,
+                                          'urban_alb': 80,
+                                          'rural_alb': 32},
+                                         'BDI': {'country_name': 'Burundi',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 11891000,
+                                          'urban_percent': 14,
+                                          'national_alb': 62,
+                                          'urban_alb': 91,
+                                          'rural_alb': 57},
+                                         'CPV': {'country_name': 'Cabo Verde',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 556000,
+                                          'urban_percent': 67,
+                                          'national_alb': 89,
+                                          'urban_alb': 93,
+                                          'rural_alb': 81},
+                                         'KHM': {'country_name': 'Cambodia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 16719000,
+                                          'urban_percent': 24,
+                                          'national_alb': 71,
+                                          'urban_alb': 90,
+                                          'rural_alb': 65},
+                                         'CMR': {'country_name': 'Cameroon',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 26546000,
+                                          'urban_percent': 58,
+                                          'national_alb': 66,
+                                          'urban_alb': 82,
+                                          'rural_alb': 44},
+                                         'CAN': {'country_name': 'Canada',
+                                          'region': 'North America',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 37742000,
+                                          'urban_percent': 82,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'CAF': {'country_name': 'Central African Republic',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 4830000,
+                                          'urban_percent': 42,
+                                          'national_alb': 37,
+                                          'urban_alb': 50,
+                                          'rural_alb': 28},
+                                         'TCD': {'country_name': 'Chad',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 16426000,
+                                          'urban_percent': 24,
+                                          'national_alb': 46,
+                                          'urban_alb': 74,
+                                          'rural_alb': 37},
+                                         'CHL': {'country_name': 'Chile',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 19116000,
+                                          'urban_percent': 88,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'CHN': {'country_name': 'China',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 1463141000,
+                                          'urban_percent': 62,
+                                          'national_alb': 94,
+                                          'urban_alb': 97,
+                                          'rural_alb': 89},
+                                         'COL': {'country_name': 'Colombia',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 50883000,
+                                          'urban_percent': 81,
+                                          'national_alb': 97,
+                                          'urban_alb': 100,
+                                          'rural_alb': 84},
+                                         'CRI': {'country_name': 'Costa Rica',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 5094000,
+                                          'urban_percent': 81,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'CIV': {'country_name': "Côte d'Ivoire",
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 26378000,
+                                          'urban_percent': 52,
+                                          'national_alb': 71,
+                                          'urban_alb': 85,
+                                          'rural_alb': 56},
+                                         'CUB': {'country_name': 'Cuba',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 11327000,
+                                          'urban_percent': 77,
+                                          'national_alb': 97,
+                                          'urban_alb': 98,
+                                          'rural_alb': 94},
+                                         'CYP': {'country_name': 'Cyprus',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 1207000,
+                                          'urban_percent': 67,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'CZE': {'country_name': 'Czech Republic',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 10709000,
+                                          'urban_percent': 74,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'DNK': {'country_name': 'Denmark',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 5792000,
+                                          'urban_percent': 88,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'DJI': {'country_name': 'Djibouti',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 988000,
+                                          'urban_percent': 78,
+                                          'national_alb': 76,
+                                          'urban_alb': 84,
+                                          'rural_alb': 48},
+                                         'DOM': {'country_name': 'Dominican Republic',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 10848000,
+                                          'urban_percent': 83,
+                                          'national_alb': 97,
+                                          'urban_alb': 98,
+                                          'rural_alb': 92},
+                                         'ECU': {'country_name': 'Ecuador',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 17643000,
+                                          'urban_percent': 64,
+                                          'national_alb': 95,
+                                          'urban_alb': 100,
+                                          'rural_alb': 86},
+                                         'SLV': {'country_name': 'El Salvador',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 6486000,
+                                          'urban_percent': 73,
+                                          'national_alb': 98,
+                                          'urban_alb': 100,
+                                          'rural_alb': 93},
+                                         'EST': {'country_name': 'Estonia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 1327000,
+                                          'urban_percent': 69,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'SWZ': {'country_name': 'Eswatini',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 1160000,
+                                          'urban_percent': 24,
+                                          'national_alb': 71,
+                                          'urban_alb': 97,
+                                          'rural_alb': 63},
+                                         'ETH': {'country_name': 'Ethiopia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 114964000,
+                                          'urban_percent': 22,
+                                          'national_alb': 50,
+                                          'urban_alb': 84,
+                                          'rural_alb': 40},
+                                         'FJI': {'country_name': 'Fiji',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 896000,
+                                          'urban_percent': 57,
+                                          'national_alb': 94,
+                                          'urban_alb': 98,
+                                          'rural_alb': 89},
+                                         'FIN': {'country_name': 'Finland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 5541000,
+                                          'urban_percent': 86,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'FRA': {'country_name': 'France',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 65274000,
+                                          'urban_percent': 81,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'GAB': {'country_name': 'Gabon',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 2226000,
+                                          'urban_percent': 90,
+                                          'national_alb': 85,
+                                          'urban_alb': 90,
+                                          'rural_alb': 40},
+                                         'GEO': {'country_name': 'Georgia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 3989000,
+                                          'urban_percent': 59,
+                                          'national_alb': 97,
+                                          'urban_alb': 100,
+                                          'rural_alb': 93},
+                                         'DEU': {'country_name': 'Germany',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 83784000,
+                                          'urban_percent': 77,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'GHA': {'country_name': 'Ghana',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 31073000,
+                                          'urban_percent': 57,
+                                          'national_alb': 86,
+                                          'urban_alb': 96,
+                                          'rural_alb': 73},
+                                         'GIB': {'country_name': 'Gibraltar',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 34000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'GRC': {'country_name': 'Greece',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 10423000,
+                                          'urban_percent': 80,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'GRL': {'country_name': 'Greenland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 57000,
+                                          'urban_percent': 87,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'GTM': {'country_name': 'Guatemala',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 17916000,
+                                          'urban_percent': 52,
+                                          'national_alb': 94,
+                                          'urban_alb': 98,
+                                          'rural_alb': 90},
+                                         'GIN': {'country_name': 'Guinea',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 13133000,
+                                          'urban_percent': 37,
+                                          'national_alb': 64,
+                                          'urban_alb': 87,
+                                          'rural_alb': 50},
+                                         'GNB': {'country_name': 'Guinea-Bissau',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 1968000,
+                                          'urban_percent': 44,
+                                          'national_alb': 59,
+                                          'urban_alb': 71,
+                                          'rural_alb': 50},
+                                         'GUY': {'country_name': 'Guyana',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 787000,
+                                          'urban_percent': 27,
+                                          'national_alb': 96,
+                                          'urban_alb': 100,
+                                          'rural_alb': 95},
+                                         'HTI': {'country_name': 'Haiti',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 11403000,
+                                          'urban_percent': 57,
+                                          'national_alb': 67,
+                                          'urban_alb': 85,
+                                          'rural_alb': 43},
+                                         'HND': {'country_name': 'Honduras',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 9905000,
+                                          'urban_percent': 58,
+                                          'national_alb': 96,
+                                          'urban_alb': 100,
+                                          'rural_alb': 90},
+                                         'HUN': {'country_name': 'Hungary',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 9660000,
+                                          'urban_percent': 72,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'ISL': {'country_name': 'Iceland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 341000,
+                                          'urban_percent': 94,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'IND': {'country_name': 'India',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 1380004000,
+                                          'urban_percent': 35,
+                                          'national_alb': 90,
+                                          'urban_alb': 94,
+                                          'rural_alb': 88},
+                                         'IDN': {'country_name': 'Indonesia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 273524000,
+                                          'urban_percent': 57,
+                                          'national_alb': 92,
+                                          'urban_alb': 98,
+                                          'rural_alb': 84},
+                                         'IRQ': {'country_name': 'Iraq',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 40223000,
+                                          'urban_percent': 71,
+                                          'national_alb': 98,
+                                          'urban_alb': 100,
+                                          'rural_alb': 93},
+                                         'IRL': {'country_name': 'Ireland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 4938000,
+                                          'urban_percent': 64,
+                                          'national_alb': 97,
+                                          'urban_alb': 97,
+                                          'rural_alb': 97},
+                                         'ISR': {'country_name': 'Israel',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 8656000,
+                                          'urban_percent': 93,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'JAM': {'country_name': 'Jamaica',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 2961000,
+                                          'urban_percent': 56,
+                                          'national_alb': 91,
+                                          'urban_alb': 95,
+                                          'rural_alb': 86},
+                                         'JOR': {'country_name': 'Jordan',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 10203000,
+                                          'urban_percent': 91,
+                                          'national_alb': 99,
+                                          'urban_alb': 100,
+                                          'rural_alb': 89},
+                                         'KAZ': {'country_name': 'Kazakhstan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 18777000,
+                                          'urban_percent': 58,
+                                          'national_alb': 95,
+                                          'urban_alb': 98,
+                                          'rural_alb': 91},
+                                         'KEN': {'country_name': 'Kenya',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 53771000,
+                                          'urban_percent': 28,
+                                          'national_alb': 62,
+                                          'urban_alb': 87,
+                                          'rural_alb': 52},
+                                         'KIR': {'country_name': 'Kiribati',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 119000,
+                                          'urban_percent': 56,
+                                          'national_alb': 78,
+                                          'urban_alb': 92,
+                                          'rural_alb': 60},
+                                         'LVA': {'country_name': 'Latvia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 1886000,
+                                          'urban_percent': 68,
+                                          'national_alb': 99,
+                                          'urban_alb': 99,
+                                          'rural_alb': 99},
+                                         'LSO': {'country_name': 'Lesotho',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 2142000,
+                                          'urban_percent': 29,
+                                          'national_alb': 72,
+                                          'urban_alb': 93,
+                                          'rural_alb': 63},
+                                         'LBR': {'country_name': 'Liberia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 5058000,
+                                          'urban_percent': 52,
+                                          'national_alb': 75,
+                                          'urban_alb': 86,
+                                          'rural_alb': 63},
+                                         'LTU': {'country_name': 'Lithuania',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 2722000,
+                                          'urban_percent': 68,
+                                          'national_alb': 98,
+                                          'urban_alb': 100,
+                                          'rural_alb': 94},
+                                         'LUX': {'country_name': 'Luxembourg',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 626000,
+                                          'urban_percent': 91,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'MDG': {'country_name': 'Madagascar',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 27691000,
+                                          'urban_percent': 39,
+                                          'national_alb': 53,
+                                          'urban_alb': 80,
+                                          'rural_alb': 36},
+                                         'MWI': {'country_name': 'Malawi',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 19130000,
+                                          'urban_percent': 17,
+                                          'national_alb': 70,
+                                          'urban_alb': 86,
+                                          'rural_alb': 67},
+                                         'MYS': {'country_name': 'Malaysia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 32366000,
+                                          'urban_percent': 77,
+                                          'national_alb': 97,
+                                          'urban_alb': 100,
+                                          'rural_alb': 87},
+                                         'MDV': {'country_name': 'Maldives',
+                                          'region': 'South Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 541000,
+                                          'urban_percent': 41,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'MLI': {'country_name': 'Mali',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 20251000,
+                                          'urban_percent': 44,
+                                          'national_alb': 83,
+                                          'urban_alb': 96,
+                                          'rural_alb': 73},
+                                         'MLT': {'country_name': 'Malta',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 442000,
+                                          'urban_percent': 95,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'MHL': {'country_name': 'Marshall Islands',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 59000,
+                                          'urban_percent': 78,
+                                          'national_alb': 89,
+                                          'urban_alb': 87,
+                                          'rural_alb': 96},
+                                         'MRT': {'country_name': 'Mauritania',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 4650000,
+                                          'urban_percent': 55,
+                                          'national_alb': 72,
+                                          'urban_alb': 89,
+                                          'rural_alb': 51},
+                                         'MUS': {'country_name': 'Mauritius',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 1272000,
+                                          'urban_percent': 41,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'MEX': {'country_name': 'Mexico',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 128933000,
+                                          'urban_percent': 81,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'MCO': {'country_name': 'Monaco',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 39000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'MNG': {'country_name': 'Mongolia',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 3278000,
+                                          'urban_percent': 69,
+                                          'national_alb': 85,
+                                          'urban_alb': 97,
+                                          'rural_alb': 58},
+                                         'MNE': {'country_name': 'Montenegro',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 628000,
+                                          'urban_percent': 67,
+                                          'national_alb': 99,
+                                          'urban_alb': 100,
+                                          'rural_alb': 97},
+                                         'MAR': {'country_name': 'Morocco',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 36911000,
+                                          'urban_percent': 64,
+                                          'national_alb': 90,
+                                          'urban_alb': 98,
+                                          'rural_alb': 76},
+                                         'MOZ': {'country_name': 'Mozambique',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 31255000,
+                                          'urban_percent': 37,
+                                          'national_alb': 63,
+                                          'urban_alb': 88,
+                                          'rural_alb': 48},
+                                         'MMR': {'country_name': 'Myanmar',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 54410000,
+                                          'urban_percent': 31,
+                                          'national_alb': 84,
+                                          'urban_alb': 95,
+                                          'rural_alb': 79},
+                                         'NAM': {'country_name': 'Namibia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 2541000,
+                                          'urban_percent': 52,
+                                          'national_alb': 84,
+                                          'urban_alb': 96,
+                                          'rural_alb': 71},
+                                         'NRU': {'country_name': 'Nauru',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 11000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'NPL': {'country_name': 'Nepal',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 29137000,
+                                          'urban_percent': 21,
+                                          'national_alb': 90,
+                                          'urban_alb': 90,
+                                          'rural_alb': 90},
+                                         'NLD': {'country_name': 'Netherlands',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 17135000,
+                                          'urban_percent': 92,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'NZL': {'country_name': 'New Zealand',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 4822000,
+                                          'urban_percent': 87,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'NIC': {'country_name': 'Nicaragua',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 6625000,
+                                          'urban_percent': 59,
+                                          'national_alb': 82,
+                                          'urban_alb': 97,
+                                          'rural_alb': 60},
+                                         'NER': {'country_name': 'Niger',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 24207000,
+                                          'urban_percent': 17,
+                                          'national_alb': 47,
+                                          'urban_alb': 86,
+                                          'rural_alb': 39},
+                                         'NGA': {'country_name': 'Nigeria',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 206140000,
+                                          'urban_percent': 52,
+                                          'national_alb': 78,
+                                          'urban_alb': 92,
+                                          'rural_alb': 63},
+                                         'MKD': {'country_name': 'North Macedonia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 2083000,
+                                          'urban_percent': 58,
+                                          'national_alb': 98,
+                                          'urban_alb': 98,
+                                          'rural_alb': 98},
+                                         'NOR': {'country_name': 'Norway',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 5421000,
+                                          'urban_percent': 83,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'OMN': {'country_name': 'Oman',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 5107000,
+                                          'urban_percent': 86,
+                                          'national_alb': 92,
+                                          'urban_alb': 95,
+                                          'rural_alb': 74},
+                                         'PAK': {'country_name': 'Pakistan',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 220892000,
+                                          'urban_percent': 37,
+                                          'national_alb': 90,
+                                          'urban_alb': 93,
+                                          'rural_alb': 88},
+                                         'PLW': {'country_name': 'Palau',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 18000,
+                                          'urban_percent': 81,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'PAN': {'country_name': 'Panama',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 4315000,
+                                          'urban_percent': 68,
+                                          'national_alb': 94,
+                                          'urban_alb': 98,
+                                          'rural_alb': 86},
+                                         'PNG': {'country_name': 'Papua New Guinea',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 8947000,
+                                          'urban_percent': 13,
+                                          'national_alb': 45,
+                                          'urban_alb': 86,
+                                          'rural_alb': 39},
+                                         'PRY': {'country_name': 'Paraguay',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 7133000,
+                                          'urban_percent': 62,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'PER': {'country_name': 'Peru',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 32972000,
+                                          'urban_percent': 78,
+                                          'national_alb': 93,
+                                          'urban_alb': 97,
+                                          'rural_alb': 79},
+                                         'PHL': {'country_name': 'Philippines',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 109581000,
+                                          'urban_percent': 47,
+                                          'national_alb': 94,
+                                          'urban_alb': 97,
+                                          'rural_alb': 91},
+                                         'POL': {'country_name': 'Poland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 37847000,
+                                          'urban_percent': 60,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'PRT': {'country_name': 'Portugal',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 10197000,
+                                          'urban_percent': 66,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'ROU': {'country_name': 'Romania',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 19238000,
+                                          'urban_percent': 54,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'RUS': {'country_name': 'Russian Federation',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 145934000,
+                                          'urban_percent': 75,
+                                          'national_alb': 97,
+                                          'urban_alb': 99,
+                                          'rural_alb': 91},
+                                         'RWA': {'country_name': 'Rwanda',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 12952000,
+                                          'urban_percent': 17,
+                                          'national_alb': 60,
+                                          'urban_alb': 83,
+                                          'rural_alb': 55},
+                                         'WSM': {'country_name': 'Samoa',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 198000,
+                                          'urban_percent': 18,
+                                          'national_alb': 92,
+                                          'urban_alb': 92,
+                                          'rural_alb': 92},
+                                         'SEN': {'country_name': 'Senegal',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 16744000,
+                                          'urban_percent': 48,
+                                          'national_alb': 85,
+                                          'urban_alb': 95,
+                                          'rural_alb': 76},
+                                         'SRB': {'country_name': 'Serbia',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 8737000,
+                                          'urban_percent': 56,
+                                          'national_alb': 95,
+                                          'urban_alb': 95,
+                                          'rural_alb': 95},
+                                         'SLE': {'country_name': 'Sierra Leone',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 7977000,
+                                          'urban_percent': 43,
+                                          'national_alb': 64,
+                                          'urban_alb': 78,
+                                          'rural_alb': 53},
+                                         'SGP': {'country_name': 'Singapore',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 5850000,
+                                          'urban_percent': 100,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'SLB': {'country_name': 'Solomon Islands',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 687000,
+                                          'urban_percent': 25,
+                                          'national_alb': 67,
+                                          'urban_alb': 91,
+                                          'rural_alb': 59},
+                                         'SOM': {'country_name': 'Somalia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 15893000,
+                                          'urban_percent': 46,
+                                          'national_alb': 56,
+                                          'urban_alb': 79,
+                                          'rural_alb': 36},
+                                         'ZAF': {'country_name': 'South Africa',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 59309000,
+                                          'urban_percent': 67,
+                                          'national_alb': 94,
+                                          'urban_alb': 100,
+                                          'rural_alb': 82},
+                                         'SSD': {'country_name': 'South Sudan',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 11194000,
+                                          'urban_percent': 20,
+                                          'national_alb': 41,
+                                          'urban_alb': 70,
+                                          'rural_alb': 34},
+                                         'ESP': {'country_name': 'Spain',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 46755000,
+                                          'urban_percent': 81,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'LKA': {'country_name': 'Sri Lanka',
+                                          'region': 'South Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 21413000,
+                                          'urban_percent': 19,
+                                          'national_alb': 92,
+                                          'urban_alb': 100,
+                                          'rural_alb': 90},
+                                         'SDN': {'country_name': 'Sudan',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 43849000,
+                                          'urban_percent': 35,
+                                          'national_alb': 60,
+                                          'urban_alb': 74,
+                                          'rural_alb': 52},
+                                         'SUR': {'country_name': 'Suriname',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 587000,
+                                          'urban_percent': 66,
+                                          'national_alb': 98,
+                                          'urban_alb': 99,
+                                          'rural_alb': 96},
+                                         'SWE': {'country_name': 'Sweden',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 10099000,
+                                          'urban_percent': 88,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'CHE': {'country_name': 'Switzerland',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 8655000,
+                                          'urban_percent': 74,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'SYR': {'country_name': 'Syrian Arab Republic',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 17501000,
+                                          'urban_percent': 55,
+                                          'national_alb': 94,
+                                          'urban_alb': 95,
+                                          'rural_alb': 93},
+                                         'TJK': {'country_name': 'Tajikistan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 9538000,
+                                          'urban_percent': 28,
+                                          'national_alb': 82,
+                                          'urban_alb': 96,
+                                          'rural_alb': 77},
+                                         'THA': {'country_name': 'Thailand',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 69800000,
+                                          'urban_percent': 51,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'TLS': {'country_name': 'Timor-Leste',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 1318000,
+                                          'urban_percent': 31,
+                                          'national_alb': 85,
+                                          'urban_alb': 96,
+                                          'rural_alb': 80},
+                                         'TGO': {'country_name': 'Togo',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 8279000,
+                                          'urban_percent': 43,
+                                          'national_alb': 69,
+                                          'urban_alb': 91,
+                                          'rural_alb': 52},
+                                         'TON': {'country_name': 'Tonga',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 106000,
+                                          'urban_percent': 23,
+                                          'national_alb': 99,
+                                          'urban_alb': 100,
+                                          'rural_alb': 99},
+                                         'TUN': {'country_name': 'Tunisia',
+                                          'region': 'Middle East & North Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 11819000,
+                                          'urban_percent': 70,
+                                          'national_alb': 98,
+                                          'urban_alb': 100,
+                                          'rural_alb': 93},
+                                         'TKM': {'country_name': 'Turkmenistan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 6031000,
+                                          'urban_percent': 53,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'TUV': {'country_name': 'Tuvalu',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Upper middle income',
+                                          'year': 2020,
+                                          'pop': 12000,
+                                          'urban_percent': 64,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'UGA': {'country_name': 'Uganda',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Low income',
+                                          'year': 2020,
+                                          'pop': 45741000,
+                                          'urban_percent': 25,
+                                          'national_alb': 56,
+                                          'urban_alb': 79,
+                                          'rural_alb': 48},
+                                         'UKR': {'country_name': 'Ukraine',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 43734000,
+                                          'urban_percent': 69,
+                                          'national_alb': 94,
+                                          'urban_alb': 92,
+                                          'rural_alb': 98},
+                                         'GBR': {'country_name': 'United Kingdom',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 67886000,
+                                          'urban_percent': 84,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'USA': {'country_name': 'United States of America',
+                                          'region': 'North America',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 331003000,
+                                          'urban_percent': 83,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'URY': {'country_name': 'Uruguay',
+                                          'region': 'Latin America & Caribbean',
+                                          'income_level': 'High income',
+                                          'year': 2020,
+                                          'pop': 3474000,
+                                          'urban_percent': 96,
+                                          'national_alb': 100,
+                                          'urban_alb': 100,
+                                          'rural_alb': 100},
+                                         'UZB': {'country_name': 'Uzbekistan',
+                                          'region': 'Europe & Central Asia',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 33469000,
+                                          'urban_percent': 50,
+                                          'national_alb': 98,
+                                          'urban_alb': 100,
+                                          'rural_alb': 96},
+                                         'VUT': {'country_name': 'Vanuatu',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 307000,
+                                          'urban_percent': 26,
+                                          'national_alb': 91,
+                                          'urban_alb': 100,
+                                          'rural_alb': 88},
+                                         'VNM': {'country_name': 'Vietnam',
+                                          'region': 'East Asia & Pacific',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 97339000,
+                                          'urban_percent': 37,
+                                          'national_alb': 97,
+                                          'urban_alb': 100,
+                                          'rural_alb': 95},
+                                         'ZMB': {'country_name': 'Zambia',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 18384000,
+                                          'urban_percent': 45,
+                                          'national_alb': 65,
+                                          'urban_alb': 87,
+                                          'rural_alb': 47},
+                                         'ZWE': {'country_name': 'Zimbabwe',
+                                          'region': 'Sub-Saharan Africa',
+                                          'income_level': 'Lower middle income',
+                                          'year': 2020,
+                                          'pop': 14863000,
+                                          'urban_percent': 32,
+                                          'national_alb': 63,
+                                          'urban_alb': 93,
+                                          'rural_alb': 49}}),
+                 "16": (TEXT_FORMAT, 49),
+                 "rural_non_alb_bin_2015": (TEXT_FORMAT_DICT, {0: ['Andorra',
+                                          'Armenia',
+                                          'Australia',
+                                          'Austria',
+                                          'Bangladesh',
+                                          'Belarus',
+                                          'Belgium',
+                                          'Belize',
+                                          'Bermuda',
+                                          'Bhutan',
+                                          'Bosnia and Herzegovina',
+                                          'Brunei Darussalam',
+                                          'Bulgaria',
+                                          'Canada',
+                                          'Chile',
+                                          'Costa Rica',
+                                          'Cyprus',
+                                          'Czech Republic',
+                                          'Denmark',
+                                          'Estonia',
+                                          'Finland',
+                                          'France',
+                                          'Georgia',
+                                          'Germany',
+                                          'Gibraltar',
+                                          'Greece',
+                                          'Greenland',
+                                          'Guyana',
+                                          'Hungary',
+                                          'Iceland',
+                                          'Ireland',
+                                          'Israel',
+                                          'Jordan',
+                                          'Kazakhstan',
+                                          'Latvia',
+                                          'Lithuania',
+                                          'Luxembourg',
+                                          'Maldives',
+                                          'Malta',
+                                          'Marshall Islands',
+                                          'Mauritius',
+                                          'Monaco',
+                                          'Montenegro',
+                                          'Nauru',
+                                          'Netherlands',
+                                          'New Zealand',
+                                          'North Macedonia',
+                                          'Norway',
+                                          'Palau',
+                                          'Paraguay',
+                                          'Poland',
+                                          'Portugal',
+                                          'Romania',
+                                          'Russian Federation',
+                                          'Samoa',
+                                          'Serbia',
+                                          'Singapore',
+                                          'Spain',
+                                          'Suriname',
+                                          'Sweden',
+                                          'Switzerland',
+                                          'Syrian Arab Republic',
+                                          'Thailand',
+                                          'Tonga',
+                                          'Turkmenistan',
+                                          'Tuvalu',
+                                          'Ukraine',
+                                          'United Kingdom',
+                                          'United States of America',
+                                          'Uruguay',
+                                          'Uzbekistan'],
+                                         10: ['Albania',
+                                          'Algeria',
+                                          'Azerbaijan',
+                                          'Brazil',
+                                          'China',
+                                          'Cuba',
+                                          'Dominican Republic',
+                                          'Ecuador',
+                                          'El Salvador',
+                                          'Fiji',
+                                          'Guatemala',
+                                          'Honduras',
+                                          'India',
+                                          'Indonesia',
+                                          'Iraq',
+                                          'Jamaica',
+                                          'Malaysia',
+                                          'Mexico',
+                                          'Nepal',
+                                          'Pakistan',
+                                          'Panama',
+                                          'Philippines',
+                                          'Sri Lanka',
+                                          'Tunisia',
+                                          'Vanuatu',
+                                          'Vietnam'],
+                                         20: ['Cabo Verde', 'Colombia', 'Namibia', 'Oman', 'Peru', 'South Africa'],
+                                         30: ['Botswana',
+                                          'Cambodia',
+                                          'Ghana',
+                                          'Lesotho',
+                                          'Liberia',
+                                          'Malawi',
+                                          'Mali',
+                                          'Morocco',
+                                          'Myanmar',
+                                          'Senegal',
+                                          'Solomon Islands',
+                                          'Tajikistan',
+                                          'Timor-Leste'],
+                                         40: ['Afghanistan',
+                                          'Benin',
+                                          'Burundi',
+                                          "Côte d'Ivoire",
+                                          'Eswatini',
+                                          'Guinea',
+                                          'Kiribati',
+                                          'Mongolia',
+                                          'Nicaragua',
+                                          'Nigeria',
+                                          'Rwanda',
+                                          'Sudan',
+                                          'Zimbabwe'],
+                                         50: ['Cameroon',
+                                          'Djibouti',
+                                          'Gabon',
+                                          'Guinea-Bissau',
+                                          'Haiti',
+                                          'Kenya',
+                                          'Mauritania',
+                                          'Sierra Leone',
+                                          'Togo',
+                                          'Zambia'],
+                                         60: ['Burkina Faso',
+                                          'Central African Republic',
+                                          'Chad',
+                                          'Ethiopia',
+                                          'Madagascar',
+                                          'Mozambique',
+                                          'Niger',
+                                          'Papua New Guinea',
+                                          'South Sudan',
+                                          'Uganda'],
+                                         70: ['Angola', 'Somalia'],
+                                         80: [],
+                                         90: [],
+                                         100: []}),
+                 "rural_non_alb_bin_2020": (TEXT_FORMAT_DICT, {0: ['Albania',
+                                          'Andorra',
+                                          'Armenia',
+                                          'Australia',
+                                          'Austria',
+                                          'Azerbaijan',
+                                          'Bangladesh',
+                                          'Belarus',
+                                          'Belgium',
+                                          'Belize',
+                                          'Bermuda',
+                                          'Bhutan',
+                                          'Bosnia and Herzegovina',
+                                          'Brazil',
+                                          'Brunei Darussalam',
+                                          'Bulgaria',
+                                          'Canada',
+                                          'Chile',
+                                          'Costa Rica',
+                                          'Cuba',
+                                          'Cyprus',
+                                          'Czech Republic',
+                                          'Denmark',
+                                          'Dominican Republic',
+                                          'El Salvador',
+                                          'Estonia',
+                                          'Finland',
+                                          'France',
+                                          'Georgia',
+                                          'Germany',
+                                          'Gibraltar',
+                                          'Greece',
+                                          'Greenland',
+                                          'Guyana',
+                                          'Hungary',
+                                          'Iceland',
+                                          'Iraq',
+                                          'Ireland',
+                                          'Israel',
+                                          'Kazakhstan',
+                                          'Latvia',
+                                          'Lithuania',
+                                          'Luxembourg',
+                                          'Maldives',
+                                          'Malta',
+                                          'Marshall Islands',
+                                          'Mauritius',
+                                          'Mexico',
+                                          'Monaco',
+                                          'Montenegro',
+                                          'Nauru',
+                                          'Netherlands',
+                                          'New Zealand',
+                                          'North Macedonia',
+                                          'Norway',
+                                          'Palau',
+                                          'Paraguay',
+                                          'Philippines',
+                                          'Poland',
+                                          'Portugal',
+                                          'Romania',
+                                          'Russian Federation',
+                                          'Samoa',
+                                          'Serbia',
+                                          'Singapore',
+                                          'Spain',
+                                          'Suriname',
+                                          'Sweden',
+                                          'Switzerland',
+                                          'Syrian Arab Republic',
+                                          'Thailand',
+                                          'Tonga',
+                                          'Tunisia',
+                                          'Turkmenistan',
+                                          'Tuvalu',
+                                          'Ukraine',
+                                          'United Kingdom',
+                                          'United States of America',
+                                          'Uruguay',
+                                          'Uzbekistan',
+                                          'Vietnam'],
+                                         10: ['Algeria',
+                                          'Cabo Verde',
+                                          'China',
+                                          'Colombia',
+                                          'Ecuador',
+                                          'Fiji',
+                                          'Guatemala',
+                                          'Honduras',
+                                          'India',
+                                          'Indonesia',
+                                          'Jamaica',
+                                          'Jordan',
+                                          'Malaysia',
+                                          'Nepal',
+                                          'Pakistan',
+                                          'Panama',
+                                          'South Africa',
+                                          'Sri Lanka',
+                                          'Vanuatu'],
+                                         20: ['Botswana',
+                                          'Ghana',
+                                          'Mali',
+                                          'Morocco',
+                                          'Myanmar',
+                                          'Namibia',
+                                          'Oman',
+                                          'Peru',
+                                          'Senegal',
+                                          'Tajikistan',
+                                          'Timor-Leste'],
+                                         30: ['Afghanistan',
+                                          'Cambodia',
+                                          'Eswatini',
+                                          'Lesotho',
+                                          'Liberia',
+                                          'Malawi',
+                                          'Nigeria'],
+                                         40: ['Benin',
+                                          'Burundi',
+                                          "Côte d'Ivoire",
+                                          'Kenya',
+                                          'Kiribati',
+                                          'Mauritania',
+                                          'Mongolia',
+                                          'Nicaragua',
+                                          'Rwanda',
+                                          'Sierra Leone',
+                                          'Solomon Islands',
+                                          'Sudan',
+                                          'Togo'],
+                                         50: ['Cameroon',
+                                          'Djibouti',
+                                          'Guinea',
+                                          'Guinea-Bissau',
+                                          'Haiti',
+                                          'Mozambique',
+                                          'Uganda',
+                                          'Zambia',
+                                          'Zimbabwe'],
+                                         60: ['Burkina Faso',
+                                          'Chad',
+                                          'Ethiopia',
+                                          'Gabon',
+                                          'Madagascar',
+                                          'Niger',
+                                          'Papua New Guinea',
+                                          'Somalia',
+                                          'South Sudan'],
+                                         70: ['Angola', 'Central African Republic'],
+                                         80: [],
+                                         90: [],
+                                         100: []}),
+                 "17": (TEXT_FORMAT_UNORDERED_LIST, ['Cabo Verde', 'Colombia', 'Namibia', 'Oman', 'Peru', 'South Africa']),
+                 "18": (TEXT_FORMAT_UNORDERED_LIST, ['Angola', 'Central African Republic']),
+                 "19": (TEXT_FORMAT_UNORDERED_LIST, ['Jordan',
+                                         'Solomon Islands',
+                                         'Guinea',
+                                         'Zimbabwe',
+                                         'Gabon',
+                                         'Central African Republic']),
+                 "20": (TEXT_FORMAT_UNORDERED_LIST, ['Albania',
+                                         'Azerbaijan',
+                                         'Brazil',
+                                         'Cuba',
+                                         'Dominican Republic',
+                                         'El Salvador',
+                                         'Iraq',
+                                         'Mexico',
+                                         'Philippines',
+                                         'Tunisia',
+                                         'Vietnam',
+                                         'Cabo Verde',
+                                         'Colombia',
+                                         'South Africa',
+                                         'Botswana',
+                                         'Ghana',
+                                         'Mali',
+                                         'Morocco',
+                                         'Myanmar',
+                                         'Senegal',
+                                         'Tajikistan',
+                                         'Timor-Leste',
+                                         'Afghanistan',
+                                         'Eswatini',
+                                         'Nigeria',
+                                         'Kenya',
+                                         'Mauritania',
+                                         'Sierra Leone',
+                                         'Togo',
+                                         'Mozambique',
+                                         'Uganda',
+                                         'Somalia'])}
+
+
+special_ordered_json =  {}
+
+def compare_outputs(expected, actual, format, expected_ordering=None):
+    try:
+        if format == TEXT_FORMAT:
+            return simple_compare(expected, actual)
+        elif format in [TEXT_FORMAT_ORDERED_LIST, TEXT_FORMAT_LIST_DICTS_ORDERED]:
+            return list_compare_ordered(expected, actual)
+        elif format == TEXT_FORMAT_UNORDERED_LIST:
+            return list_compare_unordered(expected, actual)
+        elif format == TEXT_FORMAT_SPECIAL_ORDERED_LIST:
+            return list_compare_special(expected, actual, special_ordered_json[qnum[1:]])
+        elif format == TEXT_FORMAT_DICT:
+            return dict_compare(expected, actual)
+        else:
+            if expected != actual:
+                return "expected %s but found %s " % (repr(expected), repr(actual))
+    except:
+        if expected != actual:
+            return "expected %s" % (repr(expected))
+
+def check_cell_text(qnum, actual):
+    format, expected = expected_json[qnum[1:]]
+    if format == TEXT_FORMAT_SPECIAL_ORDERED_LIST:
+        expected_ordering = special_ordered_json[qnum[1:]]
+        return compare_outputs(expected, actual, format, expected_ordering)
+    else:
+        return compare_outputs(expected, actual, format)
+
+
+def simple_compare(expected, actual, complete_msg=True):
+    msg = PASS
+    if type(expected) == type:
+        if expected != actual:
+            if type(actual) == type:
+                msg = "expected %s but found %s" % (expected.__name__, actual.__name__)
+            else:
+                msg = "expected %s but found %s" % (expected.__name__, repr(actual))
+    elif type(expected) != type(actual) and not (type(expected) in [float, int] and type(actual) in [float, int]):
+        msg = "expected to find type %s but found type %s" % (type(expected).__name__, type(actual).__name__)
+    elif type(expected) == float:
+        if not math.isclose(actual, expected, rel_tol=REL_TOL, abs_tol=ABS_TOL):
+            msg = "expected %s" % (repr(expected))
+            if complete_msg:
+                msg = msg + " but found %s" % (repr(actual))
+    else:
+        if expected != actual:
+            msg = "expected %s" % (repr(expected))
+            if complete_msg:
+                msg = msg + " but found %s" % (repr(actual))
+    return msg
+
+
+def list_compare_ordered(expected, actual, obj="list"):
+    msg = PASS
+    if type(expected) != type(actual):
+        msg = "expected to find type %s but found type %s" % (type(expected).__name__, type(actual).__name__)
+        return msg
+    for i in range(len(expected)):
+        if i >= len(actual):
+            msg = "expected missing %s in %s" % (repr(expected[i]), obj)
+            break
+        if type(expected[i]) in [int, float, bool, str]:
+            val = simple_compare(expected[i], actual[i])
+        elif type(expected[i]) in [list]:
+            val = list_compare_ordered(expected[i], actual[i], "sub" + obj)
+        elif type(expected[i]) in [dict]:
+            val = dict_compare(expected[i], actual[i])
+        elif type(expected[i]).__name__ == obfuscate1():
+            val = simple_compare(expected[i], actual[i])
+        if val != PASS:
+            msg = "at index %d of the %s, " % (i, obj) + val
+            break
+    if len(actual) > len(expected) and msg == PASS:
+        msg = "found unexpected %s in %s" % (repr(actual[len(expected)]), obj)
+    if len(expected) != len(actual):
+        msg = msg + " (found %d entries in %s, but expected %d)" % (len(actual), obj, len(expected))
+
+    if len(expected) > 0 and type(expected[0]) in [int, float, bool, str]:
+        if msg != PASS and list_compare_unordered(expected, actual, obj) == PASS:
+            try:
+                msg = msg + " (list may not be ordered as required)"
+            except:
+                pass
+    return msg
+
+
+def list_compare_helper(larger, smaller):
+    msg = PASS
+    j = 0
+    for i in range(len(larger)):
+        if i == len(smaller):
+            msg = "expected %s" % (repr(larger[i]))
+            break
+        found = False
+        while not found:
+            if j == len(smaller):
+                val = simple_compare(larger[i], smaller[j - 1], False)
+                break
+            val = simple_compare(larger[i], smaller[j], False)
+            j += 1
+            if val == PASS:
+                found = True
+                break
+        if not found:
+            msg = val
+            break
+    return msg
+
+
+def list_compare_unordered(expected, actual, obj="list"):
+    msg = PASS
+    if type(expected) != type(actual):
+        msg = "expected to find type %s but found type %s" % (type(expected).__name__, type(actual).__name__)
+        return msg
+    try:
+        sort_expected = sorted(expected)
+        sort_actual = sorted(actual)
+    except:
+        msg = "unexpected datatype found in %s; expected entries of type %s" % (obj, obj, type(expected[0]).__name__)
+        return msg
+
+    if len(actual) == 0 and len(expected) > 0:
+        msg = "in the %s, missing" % (obj) + expected[0]
+    elif len(actual) > 0 and len(expected) > 0:
+        val = simple_compare(sort_expected[0], sort_actual[0])
+        if val.startswith("expected to find type"):
+            msg = "in the %s, " % (obj) + simple_compare(sort_expected[0], sort_actual[0])
+        else:
+            if len(expected) > len(actual):
+                msg = "in the %s, missing " % (obj) + list_compare_helper(sort_expected, sort_actual)
+            elif len(expected) < len(actual):
+                msg = "in the %s, found un" % (obj) + list_compare_helper(sort_actual, sort_expected)
+            if len(expected) != len(actual):
+                msg = msg + " (found %d entries in %s, but expected %d)" % (len(actual), obj, len(expected))
+                return msg
+            else:
+                val = list_compare_helper(sort_expected, sort_actual)
+                if val != PASS:
+                    msg = "in the %s, missing " % (obj) + val + ", but found un" + list_compare_helper(sort_actual,
+                                                                                               sort_expected)
+    return msg
+
+
+def list_compare_special_init(expected, special_order):
+    real_expected = []
+    for i in range(len(expected)):
+        if real_expected == [] or special_order[i-1] != special_order[i]:
+            real_expected.append([])
+        real_expected[-1].append(expected[i])
+    return real_expected
+
+
+def list_compare_special(expected, actual, special_order):
+    expected = list_compare_special_init(expected, special_order)
+    msg = PASS
+    expected_list = []
+    for expected_item in expected:
+        expected_list.extend(expected_item)
+    val = list_compare_unordered(expected_list, actual)
+    if val != PASS:
+        msg = val
+    else:
+        i = 0
+        for expected_item in expected:
+            j = len(expected_item)
+            actual_item = actual[i: i + j]
+            val = list_compare_unordered(expected_item, actual_item)
+            if val != PASS:
+                if j == 1:
+                    msg = "at index %d " % (i) + val
+                else:
+                    msg = "between indices %d and %d " % (i, i + j - 1) + val
+                msg = msg + " (list may not be ordered as required)"
+                break
+            i += j
+
+    return msg
+
+
+def dict_compare(expected, actual, obj="dict"):
+    msg = PASS
+    if type(expected) != type(actual):
+        msg = "expected to find type %s but found type %s" % (type(expected).__name__, type(actual).__name__)
+        return msg
+    try:
+        expected_keys = sorted(list(expected.keys()))
+        actual_keys = sorted(list(actual.keys()))
+    except:
+        msg = "unexpected datatype found in keys of dict; expect a dict with keys of type %s" % (
+            type(expected_keys[0]).__name__)
+        return msg
+    val = list_compare_unordered(expected_keys, actual_keys, "dict")
+    if val != PASS:
+        msg = "bad keys in %s: " % (obj) + val
+    if msg == PASS:
+        for key in expected:
+            if expected[key] == None or type(expected[key]) in [int, float, bool, str]:
+                val = simple_compare(expected[key], actual[key])
+            elif type(expected[key]) in [list]:
+                val = list_compare_ordered(expected[key], actual[key], "value")
+            elif type(expected[key]) in [dict]:
+                val = dict_compare(expected[key], actual[key], "sub" + obj)
+            if val != PASS:
+                msg = "incorrect val for key %s in %s: " % (repr(key), obj) + val
+    return msg
+
+
+def check(qnum, actual):
+    msg = check_cell_text(qnum, actual)
+    if msg == PASS:
+        return True
+    print("<b style='color: red;'>ERROR:</b> " + msg)
+
+def check_file_size(path):
+    size = os.path.getsize(path)
+    assert size < MAX_FILE_SIZE * 10**3, "Your file is too big to be processed by Gradescope; please delete unnecessary output cells so your file size is < %s KB" % MAX_FILE_SIZE
diff --git a/p7/rubric.md b/p7/rubric.md
new file mode 100644
index 0000000000000000000000000000000000000000..63c9880aa73eb59aee9bd7e9698ee5b45a8f538b
--- /dev/null
+++ b/p7/rubric.md
@@ -0,0 +1,124 @@
+# Project 7 (P7) grading rubric
+
+## Code reviews
+
+- A TA / grader will be reviewing your code after the deadline.
+- They will make deductions based on the Rubric provided below.
+- To ensure that you don’t lose any points in code review, you must review the rubric and make sure that you have followed the instructions provided in the project correctly.
+
+## Rubric
+
+### General guidelines:
+
+- Did not save the notebook file prior to running the cell containing "export". We cannot see your output if you do not save before generating the zip file. This deduction will become stricter for future projects. (-3)
+- Used concepts/modules (ex: pandas) not covered in class yet (built-in functions that you have been introduced to can be used) (-3)
+- import statements are not mentioned in the required cell at the top of the notebook (-1)
+- Hardcoded answers or data structures (full points)
+
+### Question specific guidelines:
+
+- `cell` (3)
+	- Function does not typecast based on column names (-1)
+	- Function does not multiply the values in the pop column by 1000 (-1)
+	- Function is defined more than once (-1)
+
+- Q1 (4)
+	- Incorrect logic is used to answer (-2)
+	- Required functions are not used to answer (-1)
+
+- Q2 (4)
+	- Incorrect logic is used to answer (-2)
+	- Required functions are not used to answer (-1)
+
+- Q3 (4)
+	- Incorrect logic is used to answer (-2)
+	- Required functions are not used to answer (-1)
+
+- Q4 (4)
+	- Incorrect logic is used to answer (-1)
+	- Recomputed variable defined in Q3 (-1)
+	- Required functions are not used to answer (-1)
+
+- Q5 (4)
+	- Incorrect logic is used to answer (-2)
+	- Required functions are not used to answer (-1)
+
+- Q6 (4)
+	- Incorrect logic is used to answer (-2)
+	- Required functions are not used to answer (-1)
+
+- Q7 (4)
+	- Incorrect logic is used to answer (-2)
+	- Required functions are not used to answer (-1)
+
+- Q8 (5)
+	- Incorrect logic is used to answer (-2)
+	- Hardcoded income levels (-1)
+	- Required functions are not used to answer (-1)
+
+- Q9 (4)
+	- Incorrect logic is used to answer (-2)
+	- Required functions are not used to answer (-1)
+
+- `get_col_dict` (3)
+	- Incorrect logic is used in function (-2)
+	- Function is defined more than once (-1)
+
+- `dict_2015` (3)
+	- Data structure is defined incorrectly (-3)
+
+- `dict_2020` (3)
+	- Data structure is defined incorrectly (-3)
+
+- Q10 (2)
+	- Required data structures are not used to answer (-1)
+
+- Q11 (2)
+	- Required data structures are not used to answer (-1)
+
+- Q12 (3)
+	- Incorrect logic is used to answer (-1)
+	- Required data structures are not used to answer (-1)
+
+- Q13 (4)
+	- Incorrect logic is used to answer (-2)
+	- Required data structures are not used to answer (-1)
+
+- Q14 (4)
+	- Incorrect logic is used to answer (-2)
+	- Required data structures are not used to answer (-1)
+
+- Q15 (4)
+	- Incorrect logic is used to answer (-1)
+	- Recomputed variables already defined in q13 and q14 (-1)
+	- Required data structures are not used to answer (-1)
+
+- `dict_2015` (2)
+	- Incorrect rural_alb calculation in data structure (-2)
+
+- `dict_2020` (2)
+	- Incorrect rural_alb calculation in data structure (-2)
+
+- Q16 (2)
+	- Required data structures are not used to answer (-1)
+
+- `rural_non_alb_bin_2015_dict` (5)
+	- Data structure is defined incorrectly (-5)
+
+- `rural_non_alb_bin_2020_dict` (5)
+	- Data structure is defined incorrectly (-5)
+
+- Q17 (2)
+	- Required data structures are not used to answer (-1)
+
+- Q18 (4)
+	- Incorrect logic is used to answer (-2)
+	- Required data structures are not used to answer (-1)
+
+- Q19 (5)
+	- Incorrect logic is used to answer (-2)
+	- Required data structures are not used to answer (-2)
+
+- Q20 (5)
+	- Incorrect logic is used to answer (-2)
+	- Required data structures are not used to answer (-2)
diff --git a/p7/water_accessibility.csv b/p7/water_accessibility.csv
new file mode 100644
index 0000000000000000000000000000000000000000..2be44faac5c2e89f66743c049245d6e1ca630b3d
--- /dev/null
+++ b/p7/water_accessibility.csv
@@ -0,0 +1,303 @@
+country_code,country_name,region,year,income_level,pop,urban_percent,national_alb,urban_alb
+AFG,Afghanistan,South Asia,2015,Low income,34414,25,61,87
+AFG,Afghanistan,South Asia,2020,Low income,38928,26,75,100
+ALB,Albania,Europe & Central Asia,2015,Upper middle income,2891,57,93,95
+ALB,Albania,Europe & Central Asia,2020,Upper middle income,2878,62,95,96
+DZA,Algeria,Middle East & North Africa,2015,Upper middle income,39728,71,93,95
+DZA,Algeria,Middle East & North Africa,2020,Lower middle income,43851,74,94,96
+AND,Andorra,Europe & Central Asia,2015,High income,78,88,100,100
+AND,Andorra,Europe & Central Asia,2020,High income,77,88,100,100
+AGO,Angola,Sub-Saharan Africa,2015,Upper middle income,27884,63,54,70
+AGO,Angola,Sub-Saharan Africa,2020,Lower middle income,32866,67,57,72
+ARM,Armenia,Europe & Central Asia,2015,Lower middle income,2926,63,100,100
+ARM,Armenia,Europe & Central Asia,2020,Upper middle income,2963,63,100,100
+AUS,Australia,East Asia & Pacific,2015,High income,23932,86,100,100
+AUS,Australia,East Asia & Pacific,2020,High income,25500,86,100,100
+AUT,Austria,Europe & Central Asia,2015,High income,8679,58,100,100
+AUT,Austria,Europe & Central Asia,2020,High income,9006,59,100,100
+AZE,Azerbaijan,Europe & Central Asia,2015,Upper middle income,9623,55,92,100
+AZE,Azerbaijan,Europe & Central Asia,2020,Upper middle income,10139,56,96,100
+BGD,Bangladesh,South Asia,2015,Lower middle income,156256,34,97,98
+BGD,Bangladesh,South Asia,2020,Lower middle income,164689,38,98,97
+BLR,Belarus,Europe & Central Asia,2015,Upper middle income,9439,77,96,96
+BLR,Belarus,Europe & Central Asia,2020,Upper middle income,9449,79,96,96
+BEL,Belgium,Europe & Central Asia,2015,High income,11288,98,100,100
+BEL,Belgium,Europe & Central Asia,2020,High income,11590,98,100,100
+BLZ,Belize,Latin America & Caribbean,2015,Upper middle income,361,45,97,100
+BLZ,Belize,Latin America & Caribbean,2020,Lower middle income,398,46,98,99
+BEN,Benin,Sub-Saharan Africa,2015,Low income,10576,46,65,74
+BEN,Benin,Sub-Saharan Africa,2020,Lower middle income,12123,48,65,73
+BMU,Bermuda,North America,2015,High income,64,100,100,100
+BMU,Bermuda,North America,2020,High income,62,100,100,100
+BTN,Bhutan,South Asia,2015,Lower middle income,728,39,96,98
+BTN,Bhutan,South Asia,2020,Lower middle income,772,42,97,98
+BIH,Bosnia and Herzegovina,Europe & Central Asia,2015,Upper middle income,3429,47,96,95
+BIH,Bosnia and Herzegovina,Europe & Central Asia,2020,Upper middle income,3281,49,96,95
+BWA,Botswana,Sub-Saharan Africa,2015,Upper middle income,2121,67,88,97
+BWA,Botswana,Sub-Saharan Africa,2020,Upper middle income,2352,71,92,98
+BRA,Brazil,Latin America & Caribbean,2015,Upper middle income,204472,86,98,100
+BRA,Brazil,Latin America & Caribbean,2020,Upper middle income,212559,87,100,100
+BRN,Brunei Darussalam,East Asia & Pacific,2015,High income,415,77,100,100
+BRN,Brunei Darussalam,East Asia & Pacific,2020,High income,437,78,100,100
+BGR,Bulgaria,Europe & Central Asia,2015,Upper middle income,7200,74,100,100
+BGR,Bulgaria,Europe & Central Asia,2020,Upper middle income,6948,76,100,100
+BFA,Burkina Faso,Sub-Saharan Africa,2015,Low income,18111,28,50,80
+BFA,Burkina Faso,Sub-Saharan Africa,2020,Low income,20903,31,47,80
+BDI,Burundi,Sub-Saharan Africa,2015,Low income,10160,12,60,89
+BDI,Burundi,Sub-Saharan Africa,2020,Low income,11891,14,62,91
+CPV,Cabo Verde,Sub-Saharan Africa,2015,Lower middle income,525,64,85,92
+CPV,Cabo Verde,Sub-Saharan Africa,2020,Lower middle income,556,67,89,93
+KHM,Cambodia,East Asia & Pacific,2015,Lower middle income,15521,22,68,89
+KHM,Cambodia,East Asia & Pacific,2020,Lower middle income,16719,24,71,90
+CMR,Cameroon,Sub-Saharan Africa,2015,Lower middle income,23298,55,64,82
+CMR,Cameroon,Sub-Saharan Africa,2020,Lower middle income,26546,58,66,82
+CAN,Canada,North America,2015,High income,36027,81,100,100
+CAN,Canada,North America,2020,High income,37742,82,100,100
+CAF,Central African Republic,Sub-Saharan Africa,2015,Low income,4493,40,42,58
+CAF,Central African Republic,Sub-Saharan Africa,2020,Low income,4830,42,37,50
+TCD,Chad,Sub-Saharan Africa,2015,Low income,14111,23,44,75
+TCD,Chad,Sub-Saharan Africa,2020,Low income,16426,24,46,74
+CHL,Chile,Latin America & Caribbean,2015,High income,17969,87,100,100
+CHL,Chile,Latin America & Caribbean,2020,High income,19116,88,100,100
+CHN,China,East Asia & Pacific,2015,Upper middle income,1430405,56,92,98
+CHN,China,East Asia & Pacific,2020,Upper middle income,1463141,62,94,97
+COL,Colombia,Latin America & Caribbean,2015,Upper middle income,47521,80,96,100
+COL,Colombia,Latin America & Caribbean,2020,Upper middle income,50883,81,97,100
+CRI,Costa Rica,Latin America & Caribbean,2015,Upper middle income,4848,77,100,100
+CRI,Costa Rica,Latin America & Caribbean,2020,Upper middle income,5094,81,100,100
+CIV,Côte d'Ivoire,Sub-Saharan Africa,2015,Lower middle income,23226,49,71,87
+CIV,Côte d'Ivoire,Sub-Saharan Africa,2020,Lower middle income,26378,52,71,85
+CUB,Cuba,Latin America & Caribbean,2015,Upper middle income,11325,77,96,98
+CUB,Cuba,Latin America & Caribbean,2020,Upper middle income,11327,77,97,98
+CYP,Cyprus,Europe & Central Asia,2015,High income,1161,67,100,100
+CYP,Cyprus,Europe & Central Asia,2020,High income,1207,67,100,100
+CZE,Czech Republic,Europe & Central Asia,2015,High income,10601,73,100,100
+CZE,Czech Republic,Europe & Central Asia,2020,High income,10709,74,100,100
+DNK,Denmark,Europe & Central Asia,2015,High income,5689,88,100,100
+DNK,Denmark,Europe & Central Asia,2020,High income,5792,88,100,100
+DJI,Djibouti,Middle East & North Africa,2015,Lower middle income,914,77,76,84
+DJI,Djibouti,Middle East & North Africa,2020,Lower middle income,988,78,76,84
+DOM,Dominican Republic,Latin America & Caribbean,2015,Upper middle income,10282,79,96,98
+DOM,Dominican Republic,Latin America & Caribbean,2020,Upper middle income,10848,83,97,98
+ECU,Ecuador,Latin America & Caribbean,2015,Upper middle income,16212,63,93,100
+ECU,Ecuador,Latin America & Caribbean,2020,Upper middle income,17643,64,95,100
+SLV,El Salvador,Latin America & Caribbean,2015,Lower middle income,6325,70,96,99
+SLV,El Salvador,Latin America & Caribbean,2020,Lower middle income,6486,73,98,100
+EST,Estonia,Europe & Central Asia,2015,High income,1315,68,100,100
+EST,Estonia,Europe & Central Asia,2020,High income,1327,69,100,100
+SWZ,Eswatini,Sub-Saharan Africa,2015,Lower middle income,1104,23,67,95
+SWZ,Eswatini,Sub-Saharan Africa,2020,Lower middle income,1160,24,71,97
+ETH,Ethiopia,Sub-Saharan Africa,2015,Low income,100835,19,42,82
+ETH,Ethiopia,Sub-Saharan Africa,2020,Low income,114964,22,50,84
+FJI,Fiji,East Asia & Pacific,2015,Upper middle income,869,55,94,98
+FJI,Fiji,East Asia & Pacific,2020,Upper middle income,896,57,94,98
+FIN,Finland,Europe & Central Asia,2015,High income,5481,85,100,100
+FIN,Finland,Europe & Central Asia,2020,High income,5541,86,100,100
+FRA,France,Europe & Central Asia,2015,High income,64453,80,100,100
+FRA,France,Europe & Central Asia,2020,High income,65274,81,100,100
+GAB,Gabon,Sub-Saharan Africa,2015,Upper middle income,1948,88,84,89
+GAB,Gabon,Sub-Saharan Africa,2020,Upper middle income,2226,90,85,90
+GEO,Georgia,Europe & Central Asia,2015,Upper middle income,4024,57,96,100
+GEO,Georgia,Europe & Central Asia,2020,Upper middle income,3989,59,97,100
+DEU,Germany,Europe & Central Asia,2015,High income,81787,77,100,100
+DEU,Germany,Europe & Central Asia,2020,High income,83784,77,100,100
+GHA,Ghana,Sub-Saharan Africa,2015,Lower middle income,27849,54,80,91
+GHA,Ghana,Sub-Saharan Africa,2020,Lower middle income,31073,57,86,96
+GIB,Gibraltar,Europe & Central Asia,2015,High income,34,100,100,100
+GIB,Gibraltar,Europe & Central Asia,2020,High income,34,100,100,100
+GRC,Greece,Europe & Central Asia,2015,High income,10660,78,100,100
+GRC,Greece,Europe & Central Asia,2020,High income,10423,80,100,100
+GRL,Greenland,Europe & Central Asia,2015,High income,56,86,100,100
+GRL,Greenland,Europe & Central Asia,2020,High income,57,87,100,100
+GTM,Guatemala,Latin America & Caribbean,2015,Lower middle income,16252,50,92,97
+GTM,Guatemala,Latin America & Caribbean,2020,Upper middle income,17916,52,94,98
+GIN,Guinea,Sub-Saharan Africa,2015,Low income,11432,35,64,85
+GIN,Guinea,Sub-Saharan Africa,2020,Low income,13133,37,64,87
+GNB,Guinea-Bissau,Sub-Saharan Africa,2015,Low income,1737,42,59,73
+GNB,Guinea-Bissau,Sub-Saharan Africa,2020,Low income,1968,44,59,71
+GUY,Guyana,Latin America & Caribbean,2015,Upper middle income,767,26,95,100
+GUY,Guyana,Latin America & Caribbean,2020,Upper middle income,787,27,96,100
+HTI,Haiti,Latin America & Caribbean,2015,Low income,10696,52,65,85
+HTI,Haiti,Latin America & Caribbean,2020,Lower middle income,11403,57,67,85
+HND,Honduras,Latin America & Caribbean,2015,Lower middle income,9113,55,93,99
+HND,Honduras,Latin America & Caribbean,2020,Lower middle income,9905,58,96,100
+HUN,Hungary,Europe & Central Asia,2015,High income,9778,71,100,100
+HUN,Hungary,Europe & Central Asia,2020,High income,9660,72,100,100
+ISL,Iceland,Europe & Central Asia,2015,High income,330,94,100,100
+ISL,Iceland,Europe & Central Asia,2020,High income,341,94,100,100
+IND,India,South Asia,2015,Lower middle income,1310152,33,88,93
+IND,India,South Asia,2020,Lower middle income,1380004,35,90,94
+IDN,Indonesia,East Asia & Pacific,2015,Lower middle income,258383,53,89,95
+IDN,Indonesia,East Asia & Pacific,2020,Lower middle income,273524,57,92,98
+IRQ,Iraq,Middle East & North Africa,2015,Upper middle income,35572,70,94,98
+IRQ,Iraq,Middle East & North Africa,2020,Upper middle income,40223,71,98,100
+IRL,Ireland,Europe & Central Asia,2015,High income,4652,63,97,97
+IRL,Ireland,Europe & Central Asia,2020,High income,4938,64,97,97
+ISR,Israel,Middle East & North Africa,2015,High income,7978,92,100,100
+ISR,Israel,Middle East & North Africa,2020,High income,8656,93,100,100
+JAM,Jamaica,Latin America & Caribbean,2015,Upper middle income,2891,55,90,95
+JAM,Jamaica,Latin America & Caribbean,2020,Upper middle income,2961,56,91,95
+JOR,Jordan,Middle East & North Africa,2015,Upper middle income,9267,90,100,100
+JOR,Jordan,Middle East & North Africa,2020,Upper middle income,10203,91,99,100
+KAZ,Kazakhstan,Europe & Central Asia,2015,Upper middle income,17572,57,95,98
+KAZ,Kazakhstan,Europe & Central Asia,2020,Upper middle income,18777,58,95,98
+KEN,Kenya,Sub-Saharan Africa,2015,Lower middle income,47878,26,58,87
+KEN,Kenya,Sub-Saharan Africa,2020,Lower middle income,53771,28,62,87
+KIR,Kiribati,East Asia & Pacific,2015,Lower middle income,111,52,74,89
+KIR,Kiribati,East Asia & Pacific,2020,Lower middle income,119,56,78,92
+LVA,Latvia,Europe & Central Asia,2015,High income,1998,68,99,99
+LVA,Latvia,Europe & Central Asia,2020,High income,1886,68,99,99
+LSO,Lesotho,Sub-Saharan Africa,2015,Lower middle income,2059,27,71,90
+LSO,Lesotho,Sub-Saharan Africa,2020,Lower middle income,2142,29,72,93
+LBR,Liberia,Sub-Saharan Africa,2015,Low income,4472,50,73,84
+LBR,Liberia,Sub-Saharan Africa,2020,Low income,5058,52,75,86
+LTU,Lithuania,Europe & Central Asia,2015,High income,2932,67,97,100
+LTU,Lithuania,Europe & Central Asia,2020,High income,2722,68,98,100
+LUX,Luxembourg,Europe & Central Asia,2015,High income,567,90,100,100
+LUX,Luxembourg,Europe & Central Asia,2020,High income,626,91,100,100
+MDG,Madagascar,Sub-Saharan Africa,2015,Low income,24234,35,49,78
+MDG,Madagascar,Sub-Saharan Africa,2020,Low income,27691,39,53,80
+MWI,Malawi,Sub-Saharan Africa,2015,Low income,16745,16,66,86
+MWI,Malawi,Sub-Saharan Africa,2020,Low income,19130,17,70,86
+MYS,Malaysia,East Asia & Pacific,2015,Upper middle income,30271,74,97,100
+MYS,Malaysia,East Asia & Pacific,2020,Upper middle income,32366,77,97,100
+MDV,Maldives,South Asia,2015,Upper middle income,455,39,99,99
+MDV,Maldives,South Asia,2020,Upper middle income,541,41,100,100
+MLI,Mali,Sub-Saharan Africa,2015,Low income,17439,40,74,91
+MLI,Mali,Sub-Saharan Africa,2020,Low income,20251,44,83,96
+MLT,Malta,Middle East & North Africa,2015,High income,434,94,100,100
+MLT,Malta,Middle East & North Africa,2020,High income,442,95,100,100
+MHL,Marshall Islands,East Asia & Pacific,2015,Upper middle income,57,76,88,86
+MHL,Marshall Islands,East Asia & Pacific,2020,Upper middle income,59,78,89,87
+MRT,Mauritania,Sub-Saharan Africa,2015,Lower middle income,4046,51,67,86
+MRT,Mauritania,Sub-Saharan Africa,2020,Lower middle income,4650,55,72,89
+MUS,Mauritius,Sub-Saharan Africa,2015,Upper middle income,1259,41,100,100
+MUS,Mauritius,Sub-Saharan Africa,2020,Upper middle income,1272,41,100,100
+MEX,Mexico,Latin America & Caribbean,2015,Upper middle income,121858,79,98,100
+MEX,Mexico,Latin America & Caribbean,2020,Upper middle income,128933,81,100,100
+MCO,Monaco,Europe & Central Asia,2015,High income,38,100,100,100
+MCO,Monaco,Europe & Central Asia,2020,High income,39,100,100,100
+MNG,Mongolia,East Asia & Pacific,2015,Lower middle income,2998,68,81,94
+MNG,Mongolia,East Asia & Pacific,2020,Lower middle income,3278,69,85,97
+MNE,Montenegro,Europe & Central Asia,2015,Upper middle income,627,66,97,98
+MNE,Montenegro,Europe & Central Asia,2020,Upper middle income,628,67,99,100
+MAR,Morocco,Middle East & North Africa,2015,Lower middle income,34664,61,84,96
+MAR,Morocco,Middle East & North Africa,2020,Lower middle income,36911,64,90,98
+MOZ,Mozambique,Sub-Saharan Africa,2015,Low income,27042,34,51,80
+MOZ,Mozambique,Sub-Saharan Africa,2020,Low income,31255,37,63,88
+MMR,Myanmar,East Asia & Pacific,2015,Lower middle income,52681,30,74,88
+MMR,Myanmar,East Asia & Pacific,2020,Lower middle income,54410,31,84,95
+NAM,Namibia,Sub-Saharan Africa,2015,Upper middle income,2315,47,83,97
+NAM,Namibia,Sub-Saharan Africa,2020,Upper middle income,2541,52,84,96
+NRU,Nauru,East Asia & Pacific,2015,High income,10,100,100,100
+NRU,Nauru,East Asia & Pacific,2020,High income,11,100,100,100
+NPL,Nepal,South Asia,2015,Low income,27015,19,88,90
+NPL,Nepal,South Asia,2020,Lower middle income,29137,21,90,90
+NLD,Netherlands,Europe & Central Asia,2015,High income,16938,90,100,100
+NLD,Netherlands,Europe & Central Asia,2020,High income,17135,92,100,100
+NZL,New Zealand,East Asia & Pacific,2015,High income,4615,86,100,100
+NZL,New Zealand,East Asia & Pacific,2020,High income,4822,87,100,100
+NIC,Nicaragua,Latin America & Caribbean,2015,Lower middle income,6223,58,81,97
+NIC,Nicaragua,Latin America & Caribbean,2020,Lower middle income,6625,59,82,97
+NER,Niger,Sub-Saharan Africa,2015,Low income,20002,16,45,88
+NER,Niger,Sub-Saharan Africa,2020,Low income,24207,17,47,86
+NGA,Nigeria,Sub-Saharan Africa,2015,Lower middle income,181137,48,69,85
+NGA,Nigeria,Sub-Saharan Africa,2020,Lower middle income,206140,52,78,92
+MKD,North Macedonia,Europe & Central Asia,2015,Upper middle income,2079,57,97,97
+MKD,North Macedonia,Europe & Central Asia,2020,Upper middle income,2083,58,98,98
+NOR,Norway,Europe & Central Asia,2015,High income,5200,81,100,100
+NOR,Norway,Europe & Central Asia,2020,High income,5421,83,100,100
+OMN,Oman,Middle East & North Africa,2015,High income,4267,81,90,94
+OMN,Oman,Middle East & North Africa,2020,High income,5107,86,92,95
+PAK,Pakistan,South Asia,2015,Lower middle income,199427,36,89,94
+PAK,Pakistan,South Asia,2020,Lower middle income,220892,37,90,93
+PLW,Palau,East Asia & Pacific,2015,Upper middle income,18,78,100,100
+PLW,Palau,East Asia & Pacific,2020,High income,18,81,100,100
+PAN,Panama,Latin America & Caribbean,2015,Upper middle income,3968,67,93,98
+PAN,Panama,Latin America & Caribbean,2020,Upper middle income,4315,68,94,98
+PNG,Papua New Guinea,East Asia & Pacific,2015,Lower middle income,8108,13,41,85
+PNG,Papua New Guinea,East Asia & Pacific,2020,Lower middle income,8947,13,45,86
+PRY,Paraguay,Latin America & Caribbean,2015,Upper middle income,6689,61,97,100
+PRY,Paraguay,Latin America & Caribbean,2020,Upper middle income,7133,62,100,100
+PER,Peru,Latin America & Caribbean,2015,Upper middle income,30471,77,90,95
+PER,Peru,Latin America & Caribbean,2020,Upper middle income,32972,78,93,97
+PHL,Philippines,East Asia & Pacific,2015,Lower middle income,102113,46,92,96
+PHL,Philippines,East Asia & Pacific,2020,Lower middle income,109581,47,94,97
+POL,Poland,Europe & Central Asia,2015,High income,38034,60,100,100
+POL,Poland,Europe & Central Asia,2020,High income,37847,60,100,100
+PRT,Portugal,Europe & Central Asia,2015,High income,10368,64,100,100
+PRT,Portugal,Europe & Central Asia,2020,High income,10197,66,100,100
+ROU,Romania,Europe & Central Asia,2015,Upper middle income,19925,54,100,100
+ROU,Romania,Europe & Central Asia,2020,Upper middle income,19238,54,100,100
+RUS,Russian Federation,Europe & Central Asia,2015,Upper middle income,144985,74,97,99
+RUS,Russian Federation,Europe & Central Asia,2020,Upper middle income,145934,75,97,99
+RWA,Rwanda,Sub-Saharan Africa,2015,Low income,11369,17,57,80
+RWA,Rwanda,Sub-Saharan Africa,2020,Low income,12952,17,60,83
+WSM,Samoa,East Asia & Pacific,2015,Lower middle income,194,19,91,91
+WSM,Samoa,East Asia & Pacific,2020,Lower middle income,198,18,92,92
+SEN,Senegal,Sub-Saharan Africa,2015,Low income,14578,46,79,94
+SEN,Senegal,Sub-Saharan Africa,2020,Lower middle income,16744,48,85,95
+SRB,Serbia,Europe & Central Asia,2015,Upper middle income,8877,56,93,92
+SRB,Serbia,Europe & Central Asia,2020,Upper middle income,8737,56,95,95
+SLE,Sierra Leone,Sub-Saharan Africa,2015,Low income,7172,41,58,76
+SLE,Sierra Leone,Sub-Saharan Africa,2020,Low income,7977,43,64,78
+SGP,Singapore,East Asia & Pacific,2015,High income,5592,100,100,100
+SGP,Singapore,East Asia & Pacific,2020,High income,5850,100,100,100
+SLB,Solomon Islands,East Asia & Pacific,2015,Lower middle income,603,22,69,91
+SLB,Solomon Islands,East Asia & Pacific,2020,Lower middle income,687,25,67,91
+SOM,Somalia,Sub-Saharan Africa,2015,Low income,13797,43,49,74
+SOM,Somalia,Sub-Saharan Africa,2020,Low income,15893,46,56,79
+ZAF,South Africa,Sub-Saharan Africa,2015,Upper middle income,55386,65,92,99
+ZAF,South Africa,Sub-Saharan Africa,2020,Upper middle income,59309,67,94,100
+SSD,South Sudan,Sub-Saharan Africa,2015,Low income,10716,19,41,61
+SSD,South Sudan,Sub-Saharan Africa,2020,Low income,11194,20,41,70
+ESP,Spain,Europe & Central Asia,2015,High income,46672,80,100,100
+ESP,Spain,Europe & Central Asia,2020,High income,46755,81,100,100
+LKA,Sri Lanka,South Asia,2015,Lower middle income,20908,18,90,98
+LKA,Sri Lanka,South Asia,2020,Lower middle income,21413,19,92,100
+SDN,Sudan,Sub-Saharan Africa,2015,Lower middle income,38903,34,59,73
+SDN,Sudan,Sub-Saharan Africa,2020,Low income,43849,35,60,74
+SUR,Suriname,Latin America & Caribbean,2015,Upper middle income,559,66,96,98
+SUR,Suriname,Latin America & Caribbean,2020,Upper middle income,587,66,98,99
+SWE,Sweden,Europe & Central Asia,2015,High income,9765,87,100,100
+SWE,Sweden,Europe & Central Asia,2020,High income,10099,88,100,100
+CHE,Switzerland,Europe & Central Asia,2015,High income,8297,74,100,100
+CHE,Switzerland,Europe & Central Asia,2020,High income,8655,74,100,100
+SYR,Syrian Arab Republic,Middle East & North Africa,2015,Lower middle income,17997,52,94,95
+SYR,Syrian Arab Republic,Middle East & North Africa,2020,Low income,17501,55,94,95
+TJK,Tajikistan,Europe & Central Asia,2015,Lower middle income,8454,27,76,95
+TJK,Tajikistan,Europe & Central Asia,2020,Lower middle income,9538,28,82,96
+THA,Thailand,East Asia & Pacific,2015,Upper middle income,68715,48,100,100
+THA,Thailand,East Asia & Pacific,2020,Upper middle income,69800,51,100,100
+TLS,Timor-Leste,East Asia & Pacific,2015,Lower middle income,1196,29,75,90
+TLS,Timor-Leste,East Asia & Pacific,2020,Lower middle income,1318,31,85,96
+TGO,Togo,Sub-Saharan Africa,2015,Low income,7323,40,64,88
+TGO,Togo,Sub-Saharan Africa,2020,Low income,8279,43,69,91
+TON,Tonga,East Asia & Pacific,2015,Lower middle income,101,23,99,100
+TON,Tonga,East Asia & Pacific,2020,Upper middle income,106,23,99,100
+TUN,Tunisia,Middle East & North Africa,2015,Lower middle income,11180,68,95,100
+TUN,Tunisia,Middle East & North Africa,2020,Lower middle income,11819,70,98,100
+TKM,Turkmenistan,Europe & Central Asia,2015,Upper middle income,5565,50,98,100
+TKM,Turkmenistan,Europe & Central Asia,2020,Upper middle income,6031,53,100,100
+TUV,Tuvalu,East Asia & Pacific,2015,Upper middle income,11,60,100,100
+TUV,Tuvalu,East Asia & Pacific,2020,Upper middle income,12,64,100,100
+UGA,Uganda,Sub-Saharan Africa,2015,Low income,38225,22,48,77
+UGA,Uganda,Sub-Saharan Africa,2020,Low income,45741,25,56,79
+UKR,Ukraine,Europe & Central Asia,2015,Lower middle income,44922,69,94,92
+UKR,Ukraine,Europe & Central Asia,2020,Lower middle income,43734,69,94,92
+GBR,United Kingdom,Europe & Central Asia,2015,High income,65860,83,100,100
+GBR,United Kingdom,Europe & Central Asia,2020,High income,67886,84,100,100
+USA,United States of America,North America,2015,High income,320878,82,100,100
+USA,United States of America,North America,2020,High income,331003,83,100,100
+URY,Uruguay,Latin America & Caribbean,2015,High income,3412,95,100,100
+URY,Uruguay,Latin America & Caribbean,2020,High income,3474,96,100,100
+UZB,Uzbekistan,Europe & Central Asia,2015,Lower middle income,30930,51,98,100
+UZB,Uzbekistan,Europe & Central Asia,2020,Lower middle income,33469,50,98,100
+VUT,Vanuatu,East Asia & Pacific,2015,Lower middle income,271,25,90,100
+VUT,Vanuatu,East Asia & Pacific,2020,Lower middle income,307,26,91,100
+VNM,Vietnam,East Asia & Pacific,2015,Lower middle income,92677,34,93,98
+VNM,Vietnam,East Asia & Pacific,2020,Lower middle income,97339,37,97,100
+ZMB,Zambia,Sub-Saharan Africa,2015,Lower middle income,15879,42,61,86
+ZMB,Zambia,Sub-Saharan Africa,2020,Lower middle income,18384,45,65,87
+ZWE,Zimbabwe,Sub-Saharan Africa,2015,Low income,13815,32,65,94
+ZWE,Zimbabwe,Sub-Saharan Africa,2020,Lower middle income,14863,32,63,93