{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "![Callysto.ca Banner](https://github.com/callysto/curriculum-notebooks/blob/master/callysto-notebook-banner-top.jpg?raw=true)\n", "\n", "\"Open" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(Click **Cell** > **Run All** before proceeding.)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [ "hide-input" ] }, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "#----------\n", "\n", "#Import modules and packages \n", "import ipywidgets as widgets\n", "import random\n", "import math\n", "import matplotlib.pyplot as plt\n", "from ipywidgets import Output, IntSlider, VBox, HBox, Layout\n", "from IPython.display import clear_output, display, HTML, Javascript, SVG, YouTubeVideo\n", "\n", "#----------\n", "\n", "#ipywidgets as widgets\n", "#import random\n", "\n", "#This function produces a multiple choice form with four options\n", "def multiple_choice(option_1, option_2, option_3, option_4):\n", " option_list = [option_1, option_2, option_3, option_4]\n", " answer = option_list[0]\n", " letters = [\"(A) \", \"(B) \", \"(C) \", \"(D) \"]\n", "\n", " #Boldface letters at the beginning of each option\n", " start_bold = \"\\033[1m\"; end_bold = \"\\033[0;0m\"\n", "\n", " #Randomly shuffle the options\n", " random.shuffle(option_list)\n", " \n", " #Prints the letters (A) to (D) in sequence with randomly chosen options\n", " for i in range(4):\n", " option_text = option_list.pop()\n", " print(start_bold + letters[i] + end_bold + option_text)\n", "\n", " #Stores the correct answer\n", " if option_text == answer:\n", " letter_answer = letters[i]\n", "\n", " button1 = widgets.Button(description=\"(A)\"); button2 = widgets.Button(description=\"(B)\")\n", " button3 = widgets.Button(description=\"(C)\"); button4 = widgets.Button(description=\"(D)\")\n", " \n", " button1.style.button_color = 'Whitesmoke'; button2.style.button_color = 'Whitesmoke'\n", " button3.style.button_color = 'Whitesmoke'; button4.style.button_color = 'Whitesmoke'\n", " \n", " container = widgets.HBox(children=[button1,button2,button3,button4])\n", " display(container)\n", " print(\" \", end='\\r')\n", "\n", " def on_button1_clicked(b):\n", " if \"(A) \" == letter_answer:\n", " print(\"Correct! 👏\", end='\\r')\n", " button1.style.button_color = '#abffa8'; button2.style.button_color = 'Whitesmoke'\n", " button3.style.button_color = 'Whitesmoke'; button4.style.button_color = 'Whitesmoke'\n", " else:\n", " print(\"Try again! \", end='\\r')\n", " button1.style.button_color = '#ffbbb8'; button2.style.button_color = 'Whitesmoke'\n", " button3.style.button_color = 'Whitesmoke'; button4.style.button_color = 'Whitesmoke'\n", "\n", " def on_button2_clicked(b):\n", " if \"(B) \" == letter_answer:\n", " print(\"Correct! 👏\", end='\\r')\n", " button1.style.button_color = 'Whitesmoke'; button2.style.button_color = '#abffa8'\n", " button3.style.button_color = 'Whitesmoke'; button4.style.button_color = 'Whitesmoke'\n", " else:\n", " print(\"Try again! \", end='\\r')\n", " button1.style.button_color = 'Whitesmoke'; button2.style.button_color = '#ffbbb8'\n", " button3.style.button_color = 'Whitesmoke'; button4.style.button_color = 'Whitesmoke'\n", "\n", " def on_button3_clicked(b):\n", " if \"(C) \" == letter_answer:\n", " print(\"Correct! 👏\", end='\\r')\n", " button1.style.button_color = 'Whitesmoke'; button2.style.button_color = 'Whitesmoke'\n", " button3.style.button_color = '#abffa8'; button4.style.button_color = 'Whitesmoke'\n", " else:\n", " print(\"Try again! \", end='\\r')\n", " button1.style.button_color = 'Whitesmoke'; button2.style.button_color = 'Whitesmoke'\n", " button3.style.button_color = '#ffbbb8'; button4.style.button_color = 'Whitesmoke'\n", "\n", " def on_button4_clicked(b):\n", " if \"(D) \" == letter_answer:\n", " print(\"Correct! 👏\", end='\\r')\n", " button1.style.button_color = 'Whitesmoke'; button2.style.button_color = 'Whitesmoke'\n", " button3.style.button_color = 'Whitesmoke'; button4.style.button_color = '#abffa8'\n", " else:\n", " print(\"Try again! \", end='\\r')\n", " button1.style.button_color = 'Whitesmoke'; button2.style.button_color = 'Whitesmoke'\n", " button3.style.button_color = 'Whitesmoke'; button4.style.button_color = '#ffbbb8'\n", "\n", " button1.on_click(on_button1_clicked); button2.on_click(on_button2_clicked)\n", " button3.on_click(on_button3_clicked); button4.on_click(on_button4_clicked)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Stoichiometry and Limiting Reactants\n", "\n", "
\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Stoichiometry\n", "\n", "**Stoichiometry** is founded on the Law of Conservation of Mass. Note that \"stoichio\" comes from the Greek word \"stoikheion\" which means \"element\" and \"metry\" means \"measure\". So \"stoichiometry\" is the calculation of relative quantities of reactants and products in chemical reactions.\n", "\n", "**Stoichiometry allows us to:**\n", "\n", "- Predict how much product will form in chemical reactions.\n", "- Determine which reactant is in excess and which is limiting." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Mole - Mole Relationships in Chemical Reactions\n", "\n", "The coefficients in a balanced chemical equation indicate both the relative numbers of molecules in the reaction and the relative number of moles.\n", "\n", "
\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Examples\n", "\n", "**1)** Consider the following chemical equation: \n", "\n", "
____ Al + ____ Br$_2$ $\\rightarrow$ ____ AlBr$_3$
\n", "\n", "Given 15 moles of aluminum (Al), how many moles of bromine (br) are needed for this reaction to occur (with no excess reactant)? Round to two significant figures." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "scrolled": true, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "2927aa1655f54f84ad94157f715d4a7e", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Button(button_style='primary', description='Step One', layout=Layout(height='100%', width='20%'…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#----------\n", "\n", "#import ipywidgets as widgets\n", "#from ipywidgets import Output, VBox, Layout\n", "#from IPython.display import clear_output, display, HTML\n", "\n", "#----------\n", "\n", "out1 = Output()\n", "button1_step1 = widgets.Button(description=\"Step One\", layout=Layout(width='20%', height='100%'), button_style='primary')\n", "count1 = 1\n", "\n", "text1_1 = widgets.HTMLMath(value=r\"First, we balance the above equation: 2Al + 3Br$_2$ $\\rightarrow$ 2AlBr$_3$\")\n", "text1_2 = widgets.HTMLMath(value=\"Note: The coefficients from the above balanced chemical equation give us the molar ratios.\")\n", "\n", "def on_button1_step1_clicked(b):\n", " global count1\n", " count1 += 1\n", " with out1:\n", " clear_output()\n", " if count1 % 2 == 0:\n", " display(text1_1, text1_2)\n", " \n", "display(VBox([button1_step1, out1]))\n", "button1_step1.on_click(on_button1_step1_clicked)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": true, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8c57179f2862400ebdcf23a2a98c555d", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Button(button_style='primary', description='Step Two', layout=Layout(height='100%', width='20%'…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#----------\n", "\n", "#import ipywidgets as widgets\n", "#from ipywidgets import Output, VBox, Layout\n", "#from IPython.display import clear_output, display, HTML\n", "\n", "#----------\n", "\n", "out2 = Output()\n", "button1_step2 = widgets.Button(description=\"Step Two\", layout=Layout(width='20%', height='100%'), button_style='primary')\n", "count2 = 1\n", "\n", "text2_1 = widgets.HTMLMath(value=r\"Now, we use these coefficients to convert mol of Al to mol of Br$_2$:\")\n", "text2_2 = widgets.HTMLMath(value=r\"$15 \\text{ mol Al} \\bigg(\\dfrac{3\\text{ mol Br}_2}{2\\text{ mol Al}}\\bigg)=22.5=23 \\text{ mol Br}_2$\")\n", "text2_3 = widgets.HTMLMath(value=r\"Therefore, given 15 moles aluminum, 23 moles bromine are needed. This is the merit of balancing.\")\n", "\n", "def on_button1_step2_clicked(b):\n", " global count2\n", " count2 += 1\n", " with out2:\n", " clear_output()\n", " if count2 % 2 == 0:\n", " display(text2_1, text2_2, text2_3)\n", " \n", "display(VBox([button1_step2, out2]))\n", "button1_step2.on_click(on_button1_step2_clicked)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**2)** Consider the following chemical equation:\n", "\n", "
____ H$_2$ + ____ N$_2$ $\\rightarrow$ ____ NH$_3$
\n", "\n", "How many moles of NH$_3$ are formed when 3.6 mol of H$_2$ are reacted with an excess of N$_2$?" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ba3a13c3ea76401ca2a37a0b8abfd050", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Button(button_style='primary', description='Step One', layout=Layout(height='100%', width='20%'…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#----------\n", "\n", "#import ipywidgets as widgets\n", "#from ipywidgets import Output, VBox, Layout\n", "#from IPython.display import clear_output, display, HTML\n", "\n", "#----------\n", "\n", "out3 = Output()\n", "button2_step1 = widgets.Button(description=\"Step One\", layout=Layout(width='20%', height='100%'), button_style='primary')\n", "count3 = 1\n", "\n", "text3_1 = widgets.HTMLMath(value=r\"As usual, we balance the equation: 3H$_2$ + 2N$_2$ $\\rightarrow$ 2NH$_3$\")\n", "\n", "def on_button2_step1_clicked(b):\n", " global count3\n", " count3 += 1\n", " with out3:\n", " clear_output()\n", " if count3 % 2 == 0:\n", " display(text3_1)\n", " \n", "display(VBox([button2_step1, out3]))\n", "button2_step1.on_click(on_button2_step1_clicked)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "afddd51f5b4d48cab040c3997b3176da", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Button(button_style='primary', description='Step Two', layout=Layout(height='100%', width='20%'…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#----------\n", "\n", "#import ipywidgets as widgets\n", "#from ipywidgets import Output, VBox, Layout\n", "#from IPython.display import clear_output, display, HTML\n", "\n", "#----------\n", "\n", "out4 = Output()\n", "button2_step2 = widgets.Button(description=\"Step Two\", layout=Layout(width='20%', height='100%'), button_style='primary')\n", "count4 = 1\n", "\n", "text4_1 = widgets.HTMLMath(value=r\"We write what we are given. We place the unit and the element that we wish to cancel in the denominator of the molar ratio. We write what we wish to convert to (moles of NH$_3$) in the numerator:\")\n", "text4_2 = widgets.HTMLMath(value=r\"$3.6 \\text{ mol H}_2 \\bigg(\\dfrac{2\\text{ mol NH}_3}{3\\text{ mol H}_2}\\bigg)=2.4 \\text{ mol NH}_3$\")\n", "\n", "def on_button2_step2_clicked(b):\n", " global count4\n", " count4 += 1\n", " with out4:\n", " clear_output()\n", " if count4 % 2 == 0:\n", " display(text4_1, text4_2)\n", " \n", "display(VBox([button2_step2, out4]))\n", "button2_step2.on_click(on_button2_step2_clicked)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Practice\n", "\n", "Use the chemical equation below to answer the following question(s). Remember to balance it before proceeding.\n", "\n", "
\n", "
____ KClO$_3$ + ____ KCl $\\rightarrow$ ____ O$_2$
" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "477595bc998b492fa27dd03247c0e468", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Button(button_style='success', description='Generate New Question', layout=Layout(height='100%', width='20%'),…" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "If the reaction produced 31.3 moles of potassium chloride, how many moles of oxygen were produced?\n", "\u001b[1m(A) \u001b[0;0m47.0 moles oxygen\n", "\u001b[1m(B) \u001b[0;0m20.4 moles oxygen\n", "\u001b[1m(C) \u001b[0;0m24.7 moles oxygen\n", "\u001b[1m(D) \u001b[0;0m29.5 moles oxygen\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "2859926b8ded466a8532825c9e628a02", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(Button(description='(A)', style=ButtonStyle(button_color='Whitesmoke')), Button(description='(B…" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ " \r" ] } ], "source": [ "#from IPython.display import Javascript, display\n", "#from ipywidgets import widgets\n", "\n", "def generate_new_question(ev):\n", " display(Javascript('IPython.notebook.execute_cell()'))\n", "\n", "button_generate_question = widgets.Button(description=\"Generate New Question\", layout=Layout(width='20%', height='100%'), button_style='success')\n", "button_generate_question.on_click(generate_new_question)\n", "display(button_generate_question)\n", "\n", "#Randomize variables\n", "mole_amount = round(random.uniform(10.0, 50.0), 1)\n", "\n", "#Determine question type\n", "question_type = random.randint(1,3)\n", "\n", "if question_type == 1:\n", " #Print question\n", " question = \"If the reaction produced {} moles of oxygen, how many moles of potassium chlorate decomposed?\".format(mole_amount)\n", " print(question)\n", " #Answer\n", " substance_choice = \"potassium chlorate\"\n", " answer = mole_amount * (2/3)\n", "elif question_type == 2:\n", " question = \"Given {} moles of potassium chlorate, how many moles of potassium chloride will be produced?\".format(mole_amount)\n", " print(question)\n", " #Answer\n", " substance_choice = \"potassium chloride\"\n", " answer = mole_amount * (2/2)\n", "elif question_type == 3:\n", " question = \"If the reaction produced {} moles of potassium chloride, how many moles of oxygen were produced?\".format(mole_amount)\n", " print(question)\n", " #Answer\n", " substance_choice = \"oxygen\"\n", " answer = mole_amount * (3/2)\n", "\n", "\n", "#Define range of values for random multiple choices\n", "mini = 100\n", "maxa = 1000\n", "\n", "#Create three choices that are unique (and not equal to the answer)\n", "choice_list = random.sample(range(mini,maxa),3)\n", "while choice_list.count(int(answer)) >= 1:\n", " choice_list = random.sample(range(mini,maxa),3)\n", "\n", "#Assign each multiple choice to these four variables\n", "#Option_1 contains the answer\n", "option_1 = str(round(answer, 1)) + \" moles \" + substance_choice\n", "option_2 = str(round(choice_list[0]/10, 1)) + \" moles \" + substance_choice\n", "option_3 = str(round(choice_list[1]/10,1)) + \" moles \" + substance_choice\n", "option_4 = str(round(choice_list[2]/10,1)) + \" moles \" + substance_choice\n", "\n", "multiple_choice(option_1, option_2, option_3, option_4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Additional Resource\n", "\n", "If you're still confused regarding the material above, this video should clear things up." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2MBERISGBUYLxoaL2NCOEJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY//AABEIAWgB4AMBIgACEQEDEQH/xAAbAAEAAgMBAQAAAAAAAAAAAAAAAwQCBQYBB//EAEsQAAEDAgMDBgoJAgQEBgMAAAEAAgMEEQUSIRMxURQiQWGS0RUyUlNUVXGBkZQGFhcjQpOhseEzwSRicnMHNEOCNWODorLxJUXw/8QAGgEBAQEBAQEBAAAAAAAAAAAAAAECAwYEBf/EACMRAQACAgICAwADAQAAAAAAAAABEQISEzEhUQNBYQQiMhT/2gAMAwEAAhEDEQA/AOv8BYP6qofl2dyeAsH9VUPy7O5bBEGv8BYP6qofl2dyeAsH9VUPy7O5X7pdBQ8BYP6qofl2dyeAsH9VUPy7O5bC6XQa/wABYP6qofl2dyeAsH9VUPy7O5bBEGv8BYP6qofl2dyeAsH9VUPy7O5bC6XQa/wFg/qqh+XZ3J4Cwf1VQ/Ls7lsLpdBr/AWD+qqH5dncngLB/VVD8uzuWwRBr/AWD+qqH5dncngLB/VVD8uzuV+69ug1/gLB/VVD8uzuTwFg/qqh+XZ3K/deoNf4Cwf1VQ/Ls7k8BYP6qofl2dyv3XqDX+AsH9VUPy7O5PAWD+qqH5dnctgiDX+AsH9VUPy7O5PAWD+qqH5dncthdLoNf4Cwf1VQ/Ls7k8BYP6qofl2dy2CINf4Cwf1VQ/Ls7k8BYP6qofl2dy2CINf4Cwf1VQ/Ls7k8BYP6qofl2dy2CXQa/wABYP6qofl2dyeAsH9VUPy7O5bC6INf4Cwf1VQ/Ls7k8BYP6qofl2dy2CINf4Cwf1VQ/Ls7k8BYP6qofl2dy2F0Qa/wFg/qqh+XZ3J4Cwf1VQ/Ls7lsEQa/wFg/qqh+XZ3J4Cwf1VQ/Ls7lfuvboNf4Cwf1VQ/Ls7k8BYP6qofl2dy2CINf4Cwf1VQ/Ls7k8BYP6qofl2dy2CINf4Cwf1VQ/Ls7k8BYP6qofl2dy2CXQa/wFg/qqh+XZ3J4Cwf1VQ/Ls7lsEQa/wFg/qqh+XZ3J4Cwf1VQ/Ls7lsEQa/wABYP6qofl2dyeAsH9VUPy7O5bBEGv8BYP6qofl2dyeAsH9VUPy7O5bBEGv8BYP6qofl2dyeAsH9VUPy7O5bBEGv8BYP6qofl2dyeAsH9VUPy7O5bBEGv8AAWD+qqH5dncngLB/VVD8uzuWwRAWEptG72FZrxwzNIPSLIOX+j9bJTNcauVzopmukYXG9i02I+Cywyqlgraupq5HlrqcT5L+KCTYW9gC2LsBpn0EVI98hbE8vDr2JudR7NVPLhUMs80jybTQiItG4AX70dZyx8q/hSQ7Jk8OyFSxxicHX6L68FUw3FXQYbRRaSTStc68j7AAHpKvRYPaSJ09TJMIGlsQIAy3Fr9eixZgjIo6cQzObJTghry0G4PQQheFUuYfWtrqVs7WltyQR1g2UraiF8hjbKxzx+EHVeU0LoYgx8hkO8uIA/ZZiNgdmDGh3EBHOaav6Sl/guzHuYXSsbdpsdSqrq6Y4Q2kLyKx0nJyRvH+b4arb19E2ugET3OaA9r7jqN1GMLgGJOrhm2jm5bdHt9qN45RVS1mFYg+DCaOMNM0873NZmdwJ3leYjiL56fZ2MM0FVGyRodxPQeCutwRkdNTxxzPa+ncXRyWBOvEe9eeA43RuzzPdI+Zsr32FyRuHsRrbG7Ry4+xkstowYoX5HHPZxPUFtag/wCGlI0OQ2+CpDCzHNK6CodEyV2dzQ0Gx6idyvvZnjcw7nCyOc19ONppQ7D4BGKkV8rrRyF5DCb+225byoxrk8ssWRr3U7QZS5+W5tfmjpUjcEhbhkdEJH/duzsk0zNN7qR+GEVEk8NQ6N8oAk5oNyOnXcUdJyxntTgq3HGayRl3M5PG5rC6w1/ZZeGZHsq42xsE8MW0Ba/M0j2qaowSKoNQXzSXnjawnTTL0rKPCGNlmkknfI6aLZu0AAHVZEmcVF1a+XCKGeta/NJIyxifa9+k9ysS42Y45qhsGalhk2b35udfiAsxgrTSQU76mRzYHtcw2A8XoWMmBskbLEKiRtPLJtHxADU+1C8J7e1GNGJ1Xkpy9tKAXOzWuCOhHYz/AIqOFkbOcxr/ALx+Uuvw4qSTCIntrRtHAVYANvw2HQsZ8HEzWRuqHbNoaLFgJFuB6EP6KEGJy0JxGZ8bpY2VNiS7cDbQKxLiMNJVV84ZK50TGFwL9DfgOhTyYJFJT1UO1fapk2hOmhVfF8KcaStkp88ks7GNyDqKLeEysHGDHNJFNTua9sJmaGnNmHD2qbDK817HPtFYbjHJm+PBRQ4UdoZ5aiQzGLZtcABkHepaHDhSTyzmQvfIADzQ0adQ6UZy0+kdTPHFjMQIkMgge4WdzbDq4qOmxozOoy6nLI6skMOa5BHUrc9AyatbUl7g5sTo7DdYqCLB442ULRI88jJLf83tRbwrykxqpfSYVUTxeO1uh4dagocJgMME7pZ3TWDy/anU+zdZbGeBlRA+GVuZjxYhUIMKmgyMZiNRsWEWYQN3C/BGYmKpQhxKWidicz43SxR1AB53ig2GitVOONinmYyNrhA0OkzPsTfXmjpUsmCxSU9ZEZXgVUgkcQBzSLbvgsnYVlqZJoJzEZQA/mg3t0i+4o1M4T5Qvxo7WpZFTl+wjEhJdbQi/wAV63F9q+CN9O5jKmNzmOza6Dp4KbwTHtKuQyvJqYxG7dpYWuvBhEYdSHaP/wAMwsbu1uLaol4KtFiYZSUcFLE+SScOLBI/cBvuVcnraiGFjnQRteb5g+SwFuHFQswRkUdNsZ3slprhr7A3B3ghZvwpz5o5nVchlY1zS4tBuD1dCE6qUeIcuxHC5o8zGSNkuy/BXvpC90eCVTmOLXBuhBsd6xpMFipXUhbK93Js2W9tc3FW8QpG11FJTPcWtkFiRvQmcdopz9K4urqKOibURygB8+1cbOZbXQlbAY8wyXEYMO12V8/Ove18vC6tS4ax8lLK2RzJKbQOH4m8CsIcLMD3CGoeyJz8+TKDre5F+CLOWMo58XdT1TI5ImZHSbPSS7hfcSOCkhxKWpnlbTU4fFDJs3uLrG/TYKEYEzRvKJNm2fbBthvv0lTR4WYZpXQVMkUcsm0ewAb+mxRJ0rwqU9dUztxIVLAYYXOaC11iABu/lSU2JWjpaWjhMkj4draR+5vWeKmbhIZJVFtQ8R1JJcyw0JFt6xGDNjdBJBUPjlhi2WawOZvWEW8WDMcEvJRFA5z6guaBe2Ut33WJx0CmDzE1j9q6I53Wa0jiVNBgkMD6R7JH3pi4i/4i7fdG4RkieyOoc0PkdIczA4G/QQUT+i/SymanZI5oaXC9g64+KlVbD6RlDSMp2OLmtvqes3VlGJ78CIiIIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIPLJZeog8sll6iDyyWXqICIiDyy9REBERASyIgIiICIiAiIgIiICIiDyy9REBERAREQEREBERAREQEREBERAREQEREBYvDnMIa7KSNHWvZZIg0kTa92LzUpxF+SOJsgOybrckf2U1NirRWVFPO59xUbJhDOaOaCAT8VbZSFmJzVecWkibHltusSb/qqzsKcTIdqOfVCo3dAAFv0QWIsSp5ajYsLrkkNcWnK4jeAVnVVkVK5jHB73yXysY3MTbeqdHhApKoPY2Axtc5wds/vNb6X96sVdJK+piqqZ7GysaWWeLtIPs9iDGTFaaJ1n7SwALzkNowd2bgspMSp2VGxJeSCGlwaS1pO4E8VXmwypkE7W1EYbVNAm5moNrEt14cV54HaysdKxsDmPc152jLuaQAND7ggptxSolyua+ZglqjDYReK0Zt3E83VbGPEoWRNvJJO973taGx842OunAcVjFhbo9h96Dsql8+7fmzaf8AuWEWFTUzmSwTM2rHSeO05S17s1v2QTHEIY5JXSTODWsY7ZlhBFyQPaTwR2LUzWNcRLmc8xhmQ5s1r2t7FBU4O6rdK+eVjnvbH+DQOaSd3DVSQYY5j4HnYsMUpkLYmEA3aWoDsYiMtIIo5ZGVIcQ4MPNt1KzTVsdTI5sTZCGkjOW2aSDY2PtVVuGzRClMMseeB8hOZpIIcSV7S4dJDiTqrNExpDgWRAjOSd7tbXQTVNWymnLpJrMZC6RzMt9B03/svaPEIKx72RZw5oDiHtLdDuOvsUdfh5q3SkSBuenfDu3X6VnT0RhrHz5wQ6FkeW3k31/VBnVVsVJYytky7y8NJa0dZXmJTPp8NqZozZ8cbnNPWAqmLYXPiBe1s7WxPjyZXX5p4ix/dXaynNTQzU4cGmSMsvwuEEMGJwyteAJc7GB5aYyC4HpA6VFPiOcU5gLmk1Iika9tiNCbW+CwfhlXLnkfVsbMIxGwxtIFr3N9b69SxgweSN2Z0rLmpbOQ0G2jbW1KC4MRh25hcJGOs5wzMIzAb7KODGaOdhe172sEe1zPYWgs4hVIsFqBWRzzVTZDG2RtyDd2YW1ubC3UpfAuaCKJ02jKXk9wOnTX9EFjwpAIto5kzbkNaHRkF5O6w6VjJi1M2NhbtC94dZgYS4W33HRZR1GHVNXCxtTJA50Tw+O0ZykgEG4v03WLcJmie2aB9PHIWOje0RnLYm+mu9BawuofU4XT1ErgXPjDnHcq1VizTh089MJBkZmbI6M5XC+8cVboqPk2GxUj358keQuAtdVPBtU7DnUL54jEI9mwhhzdV9eCCduK0pjlfd7dkQ0tcwhxJ3WHTdeOxema1htLme4sDBGc2YC5FvYoarBhUyzyOe07Qxua1zbgFo6eKygwt0ctPIdizZPc4tiZYG7bIJIMWpap7WROfeRpcwuYQDbfv6QvI8ThbDCM0lQ98YkJjjN8vlEdCwhwt0fI7yg8nEgOm/MsYMMqaMRmmnjzbFsT9o0kc3cRr1lBbdXxNqmQPEjXPOVriwhpNr2uo8IqJKmhEszrvzvG62gcQqrsJqJMQjqJKlr2xzbUXBva1su+wCu4fSGjpdgXZ+c51/aSUGAxakL3gvc1rQ453NIacu+x6bLBmM0jmyuO1YIoxK7PGRzTuP6Ks3AGiOWD7nZODg14Z94L9ajfh9XVVFVDUyM+9pGxiRjCG3uUG2dWRNfKwZ3Pia1zmtaSdd1vgqk2MxRsicyOV+0m2JaGHM09NwsH4ZWPNRIaljJZhGOYCAA0nTffW6wjwaeKE5J4xLykTt5pLRpa2+6C26vihfMZJXHK5rQwM1BIuAOJXjsXpWsaSZMzpNnkyHMHWva3sUcuGSvlfOJmtm2jJWHLoCG5SCOG9eR4VJyqOplmaZRNtX2bp4paAPigvUtTHVwNmhJyu4ixB6QVVGJQxC0kj5XPlexobGb3HRp+6noKU0dOYi7Nd7n3txJKrxYYY6iKUyA5JpJbW8obkHrsXpTBE+Jz3mZpcwMYSbDeSOiyhocSBpIJ6qe16bavbk69/wDCjpsEmo2wmCeMyMY+Nxew2LXOvx3hZjBDyaOF0/iU4hzBvSCCD+m5BbbiDHRF4hqNCAG7I3Khfi8W1pWxxySNqC4XDTzbdHt0Sekr6iFrX1ETS14JDGuAeLG4Ot//AKUcGFT00NKIpo9pBI92rTlIdfr60FtmI08lTsGl1y4sDspylw3i/FR4jWOpJqS1y2SQtcGtzE80nT4KKlwjk1YZWiAs2jpASzngm9xf2lWMQpJqiSmkgexj4Hl/PBIPNIt+qDEYrTOhjkjL5NpcNYxhLtN+nRZYDFonVkEMUcj2TMLg8NOliBb9VFDhMtMYpoJmGpbnzl7ea7ObnTo3BZxYZNTvp3xTMLmZ9oXNPOzkEka6ahB5h+KtlkMExdtTNIxpyENOUnS/GysYhXCh2F4nybWQM5ovbT+FDDhjo3Qnag7Ookm3b819P1U+IUslTHFsXtZJFKJBmFwbXFv1QVfCzIa+eKcvDAYw2zDZuYdJ9qsjEac1WwBffNkzZTlzcL8VDNhj5hU5pWh0zonaDdlIP9ljHhGyrXTMEBY6Uy3dHd4J1Njfigt1tdBQsY6dxAkdkblaSSbXtp7FgMSpzUCEZ8xOXNlOUOtfLfis6ulNRLSvDgNhLtCLb+aR/dVWYVs6907RA5r5NoS9l3tPUUCmxMMw2GoqRI4uYXPcxlw0A7ys24m1+IS0gjfZsYeJA0ka37lTnwWpko2UzalmQQujIcHWufxCx6+lXI6CaKr2jJGZHQtieC035t9R8UHtPiVOaYvfMX7OJsr3FtrtO429yzGJU5qBCC+5IbmynKHEXsTxVQ4JeKiZtrbBgjlsP6jRY2+I/dZMwgRVzpmCAsfLtSXsu9p6bFBtUREBDoiwlBdE8DeQUHjZ4nlwbKxxaLkBwNlkZGAXL2jS+/oWhgwqaKGBrIQw8gdFJa2rzbf+qxno6uqpqgcmezNRshAeRcuBN+nrQb0VMBt99Hqco5w1PBRRV0clVPA4tY6J4YLu1ddoOnxWsqcKJfXOipm3eyIR2AGoOtv0WFXQzPqK5ooy99RIwxTaWZZrdeIsQUG9M0YkEZkYHkXDb6/BYuqoGgl08YA6S4LUcglGJvfIyZ+eYSNkZlsAAN5Oo6dFEMKNPhlPlp5BUNe55MQa43N94doRqg6Frg5oc0gg6ghV5q2CKmmn2jHNiBLsrhp1KAw1U2CGE5Yqp0OXm6BrrLXPoZqiOTLRbBopHRFht94/S27oFjr1oNzRzSTU4llbG0nUZH5hb2rLlUFidvHpv540WEcOzoRC1gaRHaw42Wmo8HdG7DzJTM+7pHsluB4xy2v+qDevnijy55GNzeLdwF1CysaauohcA0Qta4vJ01Wpjop4YYxNRmozUjYQ0Ecxwve9+g3Go4LF+FVuyka8l5DYcxBF5Mu8a/3Qb01EIiEpljEZ/FmFvistqzLmztta979HFaRlHJHJDPyWaWJrnl0T8ma5As4AadB+KwrqapkbWNho3gVNMxjGgizCC64OvWEG4ZVtdPURvsxsGW7ydDcXUhqYGta500Ya7xSXCx9i09Xh9RIZnBjsu0iflba7w1tiNdN/HgopqGZkbJKaCp2vPyh7YyNSNHDcBfgg30z3MiL2tDiOgut+qbaIP2ZkYH7suYXVfEopZ8MkiY28jmjQe0LXTYbM6eqlEIL31cMjHdOUZb/sUG3qamKkgM07wxgIBJ6zZRGvibViEuYGOj2gkLhY62so8ap3VWGSxsj2jrtcG8bEFU6ugdVue8UmUGjfGxrgOa4ncg3DpY2Oa10jA53igu1PsXrnNYLucGjiSufOHVG2zTMnkEkcbRs8vMLRqCTu11uFs8ZpXVlBsGsz3ljJHUHgn9EFrlEN2Dax3f4vOHO9i9E0TpDG2RheN7Q4XHuWmq8Ofy55EUroXtY1myy2ZY7jfd7lhyavmxSGR0OyEcj8zmtaBlIIBvvPQg3E1dTQRyvknZaIXeA65HuWTZw97NnldG5pOcOH7LTNopHYPLQuobTiBzTKctnu4g7zfes6qjqKpjDTwmn/AMNJHZ1hYkt0042KDbtqIXtLmyxua3eQ4WCyjlZKCY3teAbHKbrQ1FDPVRVGyozTsdTiIxmwzuuD0cBf4rYUNK+nxCscIwyGTIWW3GzbFBddNE2QRukYHnc0uFz7kM0W0DNozOdA3MLrT4rBWVFUWxU/ND43Nka1uoDgTcnUe5JcOlM80ohGd1dFI12l8gy3/YoNjUV0cNRBCC175ZNmQHat0JuR7lJU1UNK1rp5AwOcGgniVp4KKdtRSsdSEPhqnSST3FnNIdY339I+CvY1TunpYiyHbGOZjyywuQDra6CZlfG6rlp3OY3IGlpLhzs193wVjbRiQRl7RIdQ2+vwWlq8OknfWytprOfHCIr2uLG5HuXooJm4k98jJn552ytezLYAW0JOultyDdOe1gu5wbfTU2WIniLwwSsLnC4bmFyOKqYpScsFKwxh8bZw54O6wB/hUm0ErMSeXxzOa6YSMezLlAAAsTvFrbgg2VNXRS00c0jmRbQkAOcONllyyDlZpdo3bBodlv0FaWppa3wcylbTXvFIMwa1xDiTYanQdatU9LJFicc0lMX56ZjDILc1wve6DZwTbSIOdla613NDr296y20ecM2jM7hcNzC5C0LMMrI6OkjjbldJCIKjXxRe9/hce9SDDpI8ScXMmcwzNfG5mXK1oA0JOotbcEG7e9rBd7g0cSbLxssb2tc2RhDtxBGqpYvSvq4qdjGB4bUMe4HyQdVr3UFRBJDJHASyKtfLkZa+UttcD2oN46eJgzOlY0cS4BeGojs/I9jnNbmLQ7Wy0tNhsz5KZ1RTizX1Di1xBy5jdq9ocMlp4qH7kMeyGVshHE2sEG1oayOspY5mloc5gcWB1y2/FStnic0ubKwgGxIcNDwXPQYZVPp4Yo6c0kkVI6J8hIGZxAsNOvW6ydhj5qV0Yp5gS6JrmyZACGuubZerpQdC17XNDmuBadxBUUlbBHTyzCVjmRAl2VwNrLGrp3Pw6anprROdGWstoAbLU8hmnz5aPYMbSOicw2+8fpbdwsdetBt6KeSopmzSNY3NqMj8wt7VnyqCxO3isN/PGiwhh2eHthDA0iO1hxstNRYO5nINrSs+7pXsk0HjG1r/AKoN6+aKPLnkY3NoMzgLqNlUHVFRG4Bohy3cTpqLrTRUNRBDGJqM1OakZCBcfduAN736DpqOCykwyrNPIxxMjgYSSCLyZRrv038UG6NTA1jXumjDHbnFwsfYpBqLrnZaGURtlgp6ragvLczYyNbb27gDbo61vKZ0pZlliyOaBcjxSba2QToiICIiAiKtWVD6fZhkWcvdluXWAPQixF+Fm6KnavdqXwM6spd+twlsQbudTv6spb/coUuIqZqKxgu6kD/9uS/7gL3l7QPvIKhn/pk/shrK2iqDEqQmxmDf9YLf3WYrqQ7qmHthCpWEUPK6b0iLthe8pg89H2ghrPpKih5VT3tt4u2FKCHC4II6kKmHqIiIIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAqeIHWm/32q4qeIeNS/77Uax7W9w1VU4nRBxbyqK4385MVhlqMMqYqc2lfGQ32rV01RSuwqOB1LLHLEwgRmF3Nda2+yMt5DKyeJskTg9jhcOG4rNcfSvxKjw/ZwGoceSgtY5niuvqBpwUm2ry2Acrqcj3PzFsRu0ZdAbjig6mV8cUbpJS1rGi5cdwC8DYpGhwaxwIuDbeuTjnxI0kglkqXmSjLrOj3SB27dwV1tVUicCV1SxrImOibHHo821B033Qbqo5HA0OnETA45QXAalZcipvR4uyFyu3raqjqWTsqHAywuia9hJAvd3QF2ANwgiNLBa2xjt/pCgwxrQyYxtyxGQhjeAGn7gqxVPMdNK8fhaSsaOPZUkLDvDRdGvpOiIjIiIgIignqWQsB1c52jWN3uKEeUr3tY0ucQANSSqgrJJjaliL23/AKj+a33dJUMzXANmrWukO9sLBdrfbxKllxGGCgFZZzojbxRrqjVVDGR9bTAzSyQvjFrta0gjXir4Wtq6oTVsFAAQ542r92jR0fGyuS1LIpYoiC58p0A4DefYhPSdFBUVccET3nnBmrg3eBxUzSHNDgbg6goy9REQEREBF4XAWuQL6BeoCIiAiKCoqo4LA3c8+KxouSgmRamoqJtqGTue1xaXbKG1w3i5xU2D1baimc0l+eNxDmv8ZoOrb+6yLXi2xRQRVTJXytbcNiOVzjuuhq4xURw3vtAS1w3EjoRE6IiAiIgIiICLy69QERV6urjpY7u1cdGt4osRaZ72saXPcGtG8lGva5ge1wLSLg9C1DNrWESGMTO6C/SJnsH4vasqYQ1E4iqDLI8Aloe3KwjqHejWi67EKUXAlDiOhnO/ZSwzxztJidmtoeIVaKsjBqI44XN5N4wsADpfT3KOgmbMJsRcDHFK0Zc2hygbz8SiVFNki17sWjYyOWSGVkEhAbKQLa7rjeFlLicbGuc2Nzw2URXFtXHuRleRQ0tSypjLmggtcWuad4I6FMgIiICIiAqeIb6b/fariqYho2A8JmfujWPa0sdozLmzttxuoMShlqMOnhp35JXsIa69rFc/Hg9ZFFG4QtIbJmlhfKMr9LdAsjLp9ozy2/FNozTnN13a71yNFQ1FTh9JNTRRvLNsx7S+1rkgfBSyYPibuQjZRAUwjuQ/W4OutkG/GIwuLRFmkBlMRLR4pHFWtoy5Gdtxv13LnYsIqoZWltPHzawzZw/UsN9N3WoDgdc5oBYzOwS5pM+subxb+xB1IkYRo9ptwKzXM02DVNOTaljc10MbXM2lgXtOpXSjQIKuKPyUEn+azPibf3VoCwCq19ncnjP4pm/pr/ZWgiz09RERBERBVxGo5NSue3WQ82McXHcFHh1EaaIOlOea2p4dQUVbEXYrRl7rtzHK3hYG5/ZbJG5msahVrtuYctOwOLtHHNawVDFInyYQ2hhiDZpLBsYduAN7+xbKpqRDZrRnmd4rB09wXlNTmMullOeZ/jO4dQ6kSOvLVnD3UdVHUt5jWwvE0xdqCba26rLCkmIngrZptrDkkYJNCW63F7dJAW9Y5krLtIc0r3I21gBbhZEmb7czTBgFU+VjjLs3CLmi72vOhNunWy6KjidDRwxON3MYAfgso4IogRHGxoOvNFlIiCIiAiIgoVtPUSywmKYtaHgkZQbaHVXWAtYA52Ygam29ZIgIirTSv5VFDH0gueeARYhLMJHRkRODXHpIvZR09MynBNy958aR+pK9mqYoB947U7mjUn2BQbOes/qgwweQDzn+3h7EWLpRqY5qrEuUUzDLT5RHKAQM9jfS/RxWFUx1I+WqdUcmnqntDGAi2gsLk++63rGNjYGtaGtGgA6F6WtdvAPtCJMuelzRUEtIBmqDUF7GndJrmF79CzpIo3tw5tM0/wBQzyEi1tCD+pst5JFHKLSRtcODhdZNaGiwAA6kR6iIgKOVrntsyQxniBdSIgrcnn9Mk7Le5OTz+mSdlvcrKINbXUNVPTmOOseHEiziAMvXor0DHRwsY95kc1oBefxHipF4giqZxBHnILnHRrRvceCrR4e2SUVFX95N5N+a3qAWUQ5RXyyP8WA5GC/Ta5P6qxLPFA3NLI1g6yjdzj4hnaw0C17HSRVL6irjZG0Ahr8+4cPepeVTTm1LCbeck0b8N5WUVGA8SzvM0o6Xbm+wdCJHjtquQTVtRV1EkbmwygFjM1i+wtrwCjMcmxpsMdUiKQw7OSO4tbLa44kldGmVpN8ovxsiTNtO+mrarD2UE0TWWytfKHAggcBvusKannAiga0fcVTnyZja4NyD171vEsiKGFgl1XNazJZi5nWAAL/or6btyICIiAiIgKriMbpKN+Tx2We32g3/ALK0vCixNMIZWzRNkYbtcLgrOwIsVVdQRFznMdJEXG5yPIBPsXnIONTUH/vQ8LLI2MFmNa0cALLK4VbkEXS+Y+2V3esXYXRvHPiz/wCtxP7otQsOljb40jR7XKN1dSN8aoi7YSOgpIvEp4h/2hSiKMbo2/BDwhGIUfRUxdsKRtTC/wASVjvY4LPZs8hvwUb6SnkHPhjd7WhE8IKw3rKKx02h/wDiVcVRuG00cjJI48hYbgNJAv7FbQmvp6iIiCIiCtWQPk2UkWXaxOzNzbjpYhYONbJzWsjhB3uLsx9wVxEW0FPSsgu65fI7xnu1JUy9XhRJm1LCCTRm/RI8f+4q8qeFi1EOtzj+pVxFy7EREQREQEREBERAUFRSR1D2vcXtc0Wuxxbp7lOiLE0ggpIac3jYAelx1J96msvURBVnTPFeyHTI6Mu67gjvVlVJR/8Akqc/5Hj/AOKLEWtoiIgiIgIiICIiAiIgrS0MMshkOdrjvLHlt/bZexUNPEQ5sQzD8TtT8SrCIty8ssZJWxZc5tmcGj2rNVMSFqXaAEmJwfYcAdf0QjzK2i8aQ5ocNx1XqIIiICIiAiIgIiICIiCu81gedmyEt6Mzjf8AZY5q7yKftHuVpEFXNXeRT9o9yZq7yKftHuVpEFXNXeRT9o9yZq7yKftHuVpEFXNXeRT9o9yZq7yKftHuVpEFXNXeRT9o9yZq7yKftHuVpEFXNXeRT9o9yZq7yKftHuVpEFXNXeRT9o9yZq7yKftHuVpEFXNXeRT9o9yZq7yKftHuWJr8tUyF0DwHuLWv0sSppKunifkknjY7gXgFFmKR5q7yKftHuTNXeRT9o9ykFVAYzIJoywGxdmFrqLl7DWxwNAcySMyCQO00IH90RBh5q+RR5WQ2t0uPcrF67zcHbPcosPqYG4dG500YaNCS4aHgrQqYCLiaM6geMN/BGs/9SivXebg7Z7kvXebg7Z7ljT4hHJC6SbLDlkdHZzxqQrAqITJsxIwyWvlDtUZQ3rvNwds9yXrvNwds9ywZiDnVFTDsLGAA3Lxzr7lJh1Zy6jjqBGWB4uATdB5eu83B2z3JmrvNwds9ytIgq5q7zcHbPcmau83B2z3K0iCrmrvNwds9yZq7zcHbPcrS8JsCUFa9d5uDtnuS9d5uDtnuWdLUioY52QsyuLSHdS85fSa/4mHT/wAwIdMb1vm4O2e5VpHVnhCAFkObI8jnHq6lefUwsc1rpWAu8UFw1WubXMkxJr5csIjEjDmdpoWo1iu5q3zcHaPcvM1d5uDtnuUrqmBrgHTRguFwC4ahQ1dfHT0skzMspYzaZA8XLeKMvb13m4O2e5L13m4O2e5StqInOazaMEhF8mYXVeSveaiSCmpzM6K2c5soBPR7UGd67zcHbPcl67zcHbPcsqGsjrYDIwOaWuLHNdva4bwrCCreu83B2z3Jeu83B2z3K0iCreu83B2z3Jeu83B2z3K0iCreu83B2z3Jeu83B2z3KaeUxRlzWOeehrelRU9YyaB0rhsg0kOzndZFrxby9d5uDtnuXh5a5pBjgsf857lIK2lcQBUxEk2FnjUr11RGHmNr2GUC+TMLoijh760QugyQkwOyXc468OjgrWau8iDtHuVSkrWPqY53kRNqogQ1zukH+VfdV07XlpnjDhvBcLhFy7R3rvNwds9yXrvNwds9yxqa9kD4mtAkzyiJ2V3ik8VNyqnu8baPmeNzhp7URHeu83B2z3Jeu83B2z3Lytr2UtA+rY3bMYL81w1CwfiBZUUsOwJ5QCbh45thcoJL13m4O2e5L13m4O0e5KqtEEscLIzLNJctYDbQbySsaWu29RJTyROimjAcWk3BB3EFBajz5BtAA7py7lkiICIiDGR7Y2F7yA1ouSehRNrKd9MahszDCNS++iyqjlpZSQTzDuF+hccaCqioKijjY/kMkW3HNN81vEt7UHZQzRzxiSJ4ew7nDcVjDUwzvkZFIHujOV4HQVy7pa5tNGyLlDC2mj2DWtIBfucD/K9nkrYZa18DJBnqI9oWsPi5bEj38EHWrF72xsL3mzQLknoXNRPrnTwQ1NVU7EsuyaOMjM7NudpwUdLV1/KYYqjlNmmYS5mHKd+VB08M8c8TZYnB7Hahw6VIuMfUV1PhlBFTR1LHsZdxa028bcRbgtxg5nnxCrklmnLGPtGx7bNLSBru43QbtERAREQF4vUQUDDUurhK9sTo26N1N2jj7VUxLCpquapcyOA7WFsbS46gg3vuW6RFmbaM4VUsqtrG2HIJWybO+h5uUjd71DJglS5r2tdGwPZINCeaXEGw03aLol47cURzmH4XM1lPUxxQu5pD43PJDri192hU8mF1Qlk2LKcRvmjlALiC0ttcDTqWzw3/AMOp/wDQFaRrL/Uuefg9W+USPETm5pM0YkIuHHjZWKTC5qfEBM3KyIXu0PzA6W6Rp8VuURlqThrpa2rmnhhkEoAjubkWHsVSnElA6hon1QZM3QsaeaW3PVvK6FeZRvtqg9REQEREBeOXqIKlJFJE2USBvOeXCx4rVQYLK10GeKnswSh1jvzbuhdAiLM259mD1Yp3wv2LtpEyPPc3YW9I0UUuHVJxKNpEbtZJLZyLg2G+29dIVr5J4m4tHeRo+6dvPWEXG1alwqSnMsZihdDJYglxJj0tYXGqrtwmv2OzIp9KU04IcfjuW/zttfMLcbrETxONhI0+wolS1FNhUzK4yztZIDLtQdoeabWta2qtMpaqmr6ianEb4qizi1zrFrgLcNy2IXqI0GTkFVDFyzLPNLtZGDRhudf7ALfrwtB3heoCIiAiIghqhM6Fwp8okO4u3Km+jmkwqelLIw97S0c4ka9JWyRFvxTnzgsxbL91Ttc6ONrbHcWn2KWPC6lrmBwiOSd04fm5xvfm7utXq3FKShH38oDvJGpVOH6TYdK/KXuj63iwRuPizmLiPDXyYLUMnpHTFj2ZRC5oeRbeRY2V1uFVHIX0746cyN/py3N3c6+uivYhI19G2VhDgJGOuOGYK6EZnqGjdh1dJK55bAzNUMmOV53BtuG9RRYFM2nEcrGPewZRIJSCRmvw0K6JeXRlqJMOqX4DJRF7HyvBF3GwAvfoC8mw4wzU9RDHDAIWO2rgdRcbxprZS1mPUFI8sfLmeN4aL2WFP9IsOqNDMIzweLKW6cXyVes0rUbJ6l8ddS1DZzE5zA2Q6lhtoSNx0utlTUsgrZayoyh72BjWtNwGjXf71NDV002kUzHHgCp1XN6iIgIiIMZHZI3PIJyi9h0qGCqjlgZK77rOL5XmxCyrIzLSTRtGZzmEAe5cy/AqyWJjZIIyW0exBLx499Cg6RtXA6pkgDxtI2hzhwBUm1jsDnZY7jdczU4HXSOldEyNr3wxjMX65m7x71K3A3mSjz0oMTHudK10gO8dCDoRLGTYSMJ4XTax2vtGW45lymGYeaqWR0ULGthqZDnDtXDcG24LP6v1QpKRrYWhzC4TsD/HvuN0HSNrIH1EkAeM8bQ53UDuSSsgjlijLwXS3yW6bLn5cGrIpJjS08TtpFGwGR9yLb9+9eUuC1cLKQzU0UphkkLml4tlduQdBTVjJ6dkzgYc2mWTQqYyxg2L2g8LrlmYHXtp42viZJlhkjyF+jXONw5eyYDVlzzso3uEcTWvL9S5u8oOqDgb2INl6qWGwPh25fAyIvkzc15dm6yrqAiIgxe7K0kqs50kguDYKSsNoCeBVVk+VlroDZpWyBmY6rKUytuc5VM1H37SOKnmqA8+5B7gtUJKSKF3jNjHvFlemlyAAbytFgYc6eBwBsItT7ltK12SZt91kay7l7IZbXzELGKWaQFubcsJan7uygpZwHvOqMp5JpYdcxNuKuUs7aiEPHv9q1FVUZrq1gbXCneSCAX3CDZoiICIiAiIgIi8Qcv9I8YkbMaOmcW28dwP6Lm5I3g5nEm4vqrGLB8eLVIk35yfd0KvJO5+87hZZei/jfHjh8cUyjkqJGbESvyX8XNosJGPhdo5zSOkGy8hlMZuEllMhud6OusV06j6MY1JUScjqXZngcxxOp6l06+efR1jnY5TFoOjrn2L6GrD8L+XhGHyeBERV8oiIgLB8jI25nuDW8SbLM7lVbRR7XaSl0r73BedB7BuRYr7Y+EGv/5eGWfra2zfiVWxGurKekklEETQ0X1eXH4ALYTO2censVfZsmic2TUOFijUTET04L72sqHSSyXc43JKinj2brEg+xWsSpnYdWuZ+Am7DxCpOeXu4rD0eOeM4xr022DYk6KCopJX/dll2XO48F27Zo8rTnbztBrvK5bDsLFLg880wG1lYdD0BW6e9PitNFcuhcSW3Pim279VYfi/PpnlM4tw+vZncyBjp3t35dw9p3LS/SCtrIKQfeCMyHLljF7Drct5OcoDWi1+CqYlRR1tC6I+Nvb1FWXD4sscc4mY8OLhpxIwvc7VVn81xtoR0qSQvge6J1wWmxCwijfUzCKMXc42CzL0c5Rq6z6PVEdfhpZVsa50bsucjU+9bige772Fzy/ZOsHHeRYELX09LFheHiMkANF3u61JgcpJma5pa55z2PQNw/Zaed+SYmZmOm4REVcRERAREQEREGDImR3yMa2++wss0RAREQEREBERAREQYvaHtLXC4K01Ths8brwytLODjay3ahmpYJ3tfLE15buzC9kIaTZsAIkq4mydAabqONh2gL5m5R1HuW+jg2b3m7ch8VoYAGrO7HxlzS1w4hGvCrhELY8PgI3lgU9XTNqYspJBG4joWGGf+HU/+2FZQy7lon4XWh+j2Ft991LJhc+zGzkbm6QtnUCN0eWV2Vrja4dlN/ao+QxHe+b813eiRX2oU+FzZ80zxbgFt42BjA1o0CqjDom3tJPcnT712ittFgBe6E19PUREQREQEREBERBoPpBgJxAienIbOBY33OC5R+FV7JjEaZ5eNSALr6S42BJ6Fp4pJqrETJFLs2SRXbePWwPt61Jh9fwfyM8MZj6cvJ9H8TFOJWwe1t9VBDg2IySBvJZLniLALvWMqopG3mbLH+LM3KR7LLKnqHVD3uay0INmu8rrHUlN/wDZ8nbX4Fg4w9u0lsZnC2nQtyvF6q+TPOc8tshERGBERAO5Ytc17Q5pBaekLJU3U8sEjpKQizjd0TvFJ4g9CLEWmqoy+BwbvGoWnNWG6OOUjoK2XL9mDyinmjt0huYfEKKR+G1JDpHxE9ZsUNZairhbikezcNfwuHQVUpsAfh8zZqtzXtG4AdPWumhNBAPu5IR/3hZS1lHlIfNG4cL3UdcPk+TCNYaStq9pC6MG9y0adZC92E0tVCY3WkDi9pPADp/ZWKlsL5IG0tI4GSQWc8ZW6a+3oWzpKXYXe92eV3jG1gOoDoCJesQqVFUHBuYFkzfGjO/3cVBJVZVt5oIp2ZZo2vH+YXVQ4LQn/pEex5VY/q0WIYUcS+8a4RyeU7cR1qLDoI8Lc9xdt5912age9dLHhVFGQdiHEeWS791YfTwvZkdG3LwspTrzTGOt+HOF7qp15nA9LWN3A8TxW3wmmMLXSP3uViOhponZmRgFWALCwCrjM29RERBERBXfTF7i7lEzb9DXaBY8jPpNR2lJLVQQ/wBWZjPa4BQjFKN3iTB3+kE/si1LLkZ9KqO0nIz6VUdpOXwnxRK72RO7lia5x0jpJ3f9ob+6GssuRn0qo7ScjPpVR2li6Wud/Spom/7kncF6GVx8aWBvsYT/AHRdXvIz6VUdpORn0qo7SbOs9Ii/KPesXeEGEW2Eo6Rq3vQr9ZcjPpVR2k5GfSqjtLHl4jvymKSC34iLt+IVlkjJGhzHBwPSDdEmJhByM+lVHaTkZ9KqO0rSIiryM+lVHaTkZ9KqO0rSIKvIz6VUdpORn0qo7StKCWqiikbGSTI7c1oufah2wNGSLGpnsf8AMqNPT7Kinj20zHQZgQDpbeD8LLbk2Gq1NfPCJXugla+UsyyRjXMPduKNY+fCaioyaKD/ABEw5g0DupKhjYAAamoc93isa7UqLD6qeqpI44GCLI0Ne6TeDbye9XqelZAS7V8jvGkdqSi5RU+VSHD5ZCJameXODdjQ7RneVZ5I70mftfwrSIxM2q8jPpVR2k5GfSqjtK0iCryM+lVHaTkZ9KqO0rSIKvIz6VUdpORn0qo7StIgq8jPpVR2k5GfSqjtK0iCryM+lVHbTkZ9KqO2rKpVGJRQucGtMmTxyCAG9Vz09SLETPSTkh9Jn7S1jqZ9HXxtMz2wknK8utYHePbdbFtZJL/QppHDyn8wfrqsophO98E0OR7QCWk3BHUjUXCm+I1UvJ4KqZ0f/VeHaAcB1q22iytDW1E4A0ADhp+issY2NuVjQ0cAFkjMz9KvIz6TP2k5GfSajtK0iIq8jPpNR2k5GfSajtK0iCryM+k1HaTkZ9JqO0rSIKvIz6TUdpe8kPpM/a/hWUQVeSH0mftfwvOQg755j7SO5W14TYIKng9nnJP07lXfSmKujG3lEcjS3ePGGvDhdWnYjTNkLBLmcN4YC63wWM2WtprwOs9rszC5pFnBGov7V5aQuxCBu3mOVrn3zbtw/upZYzHPFHt5ztSQDmGlhdRMqLVTp5GTbUsDBCIzoenXcrNPC8ymoqLbQizWjcwcEWYrtlyQ+kz9r+F5yM+kz9pWkRhV5GfSZ+0nIz6TP2laRBV5GfSZ+0nIz6TP2v4VpEGMbcjA3MXW6TvWSIgKm+rfI4x0kYkINnPJs0e/pSue8iOnjNnTOsXA7mjUn+3vViKNkUbWMaGtaLABGuouVSOGOigkmqRFYc5xZHu/clZ+EqEYfy/bM5La+06OCyxEOOH1DWsc9xjIDWi5Oi5SfB6xlBWUrIpHUmUSwxhupe4Wtbq1KJM27GGVk0TZYySxwuDa2ijpqyCrMohcTsn5H3BFiualgxFzrNjqQ/ZwinIuGst4115UQYkBUbKKdrH1meTK03cwttccdUR1NRPHTQvmlJDGC7iBfRZQysniZLGbseA4HqWiNNiTcKew1Dpoti5uR8X3rj0dKpOpcQkqKVjuVRQiCMNLGnmuG8HXRB1igq6yCiYx9Q4tD3BgsCdTuXPx0GJxzVzGvlLYg99M8vPPLhoPcqzaWuOGjOyrkkdNC50bozzS084jXqQdha6rSUFO9xe1pjefxRnKf0VkL1FulI8qphe/KYxv0s8f2KswzMnjEkbrtKzsqbgKWuY5otHUHK4dGa2h/RF7XUXiIygrJzDGAwB0rzlY3iVXa4Un3UTTPVP1cf7k9AULpnz1rjCMz9Y4rjRo/E4+/T3K/T07IGENuXHVzjvceJRvqFE7GWoENbNtJHG2zAIYDw6/eti2NkbbMa1oHQBZUKhzn10bDTy7ONwdma3Rx4nqC12MsnrKx3JHVBjbC4OMV7Z7iwFulCYmW2pDtqmeoaBszaNp8q17n4n9FPJVRRVEMDyQ+a+TTQ261oBT1dO0xxRVPJy2Jzm3Nz5YH6aKWCGobiFO7ZTmATvdHmBORpbbXhqjMzbc8th5WaXMdsG5y3Kd3G6UtZDWNe6BxcGOLTdpFiN41WukgfJ9IXSETsj5OG7RgIBN72uqtE+ro6ZzWXjc6peQyZhzSAu0/S+qI6NERAREQEREBeE2XpVGsa+Rz9qSymjbmdY+P1exFiLRTV7qifktFq5w50v4WDiOJUlNQU1DGHOJe5v/AFJNSs8OhyQCRwGeXnG3QOge5WZDZh0J03BGpmvEPIZWTRNkjN2O1BVaK0mKSvG6OMM95JPcqzZ9hg4jfHIJi0tbGNHOPUtRDQ1ApzZtaJTTFzrlwvKN3vQmKt1l1BDWQzUxqGutEL3c4WtbetKW1skjyWVAqNqx0T9coZpmB6OOilbSz1P0eqaZsbo5XPeWtkFr8/MPijDYsxOldJGzM5pl8QuYWh3sJVxaOt22JUtPBFTyQyNe17nSNsI8uu/p9yvYXPNO2YzPZIGvsx7BYOHT+t0F5ERAREQERCgwlkZFG6SRwa1ouSqLwZ43TVeZlON0Qvd3WbfsswOWVZJ1ghNgOhz/AOP3V1GulFkkzm5aalEUYGjpNP0H8KKHZ1cxY+ske8C+RvMb7uPxWyO5a6mcZK8yyU8kZa0taSNAEWJe1dJDTUsk0RcyRgu05zvV9hJYCd9tVy09PPV4hJIOUyUxqGluUuILem3VdTsjqmSNhnjqXUrHStFrk7+YeJFkTLqpb9lVG+pkpwTtIwHOFug7lE3EqZzJ3hzrQG0nMOh+C1+DMqo6o8rZIX8nY0yOGhIJ0vxsQoRTyvjxRxbVM2j3FjQCMwsBoEZbuKpilphUNd90RmDiLacdVAzFaR74253ASmzHOYQHHqK1FQ2tqMOioInNa6Snyuic2zm2G8nrIsrFRtcRoIKUUssMmZheXNsGZSCbHp3dCDeIiICIiCnWERVFPO6+Rri1x4XGh+Ktiy8exr2FrgC0ixBVQMno9I7zQdDL85vsPSjXcJ6ufk9LJNYHI0kAutf3qAYpSNZGZ6iKJ7wDkLxcXUVZPFXUM9NFIxssjC0Nl5tvctXP9H6uojlDjTAvpmQtNybFpvfcjMxTcMxWldUVMJkDDT2zlxAGqzOJUQY15qoQ1/inONVpqrAKqokqXNfA0yujkG+4c3o9imhwV8dTSSGKnEcWcvbmc65d0i4QbNmJUUj8jKqFzrE2Dx0b0OJ0IYX8rhyg2Jzhc5g+HOrYnvAia2GomczynE3Av1aqd30bn5NRNAgL6djo5G5i1sgPTca3QbhmL0bqmeEytaYGtc5xIsQeC8fjFG2SnaJmOE4cWODhl061q34DWRyVBpH08bZWRtFwbty7x7F5R4BV0jaWxpnuhkkcQ69iHe5BtafFqd1JHPUyRwGS9hnB3damfiVFHII31UIebWBeOnctDF9HayKGMbSnc5sL4HA3tZxvcab9Vk/6O1FpGtdCRsYo2Ode92G9zog6OOWOQuEb2uLDZ1jexVerOeppYgLnPnPUAD3hQRPdROmErYnSyvzRshGrtOnvVilp3te6ecgzPFtNzRwCNR48rSjnJbBI5u8NJHwUi8sjMKmHwRxwMkZq57RdynmnjgZmleGjrUDsPZc7KaaJp/Cx2ikiooIn5w0uf5TyXH9Uamp8ofvq3yoYOnoe/uH6q3FGyJgYxoa0bgFlZESZepZERCygno6epc0zwMkLfFLheynRB4BZeoiAiIgIiICwmjbLE+N3ivaWlZogoMlqaWNsclM+bLoHxEajrB3LLa1k4GzhEAP4pDcj3DvV1LItq8FI2Jxkc50kp3vdv/hTr1ESZsSyIg8c0OaWuF2kWIPSoqelgpWltPCyIHeGC11MiAiIgIiIC8O5eogp4Y5ophFukYSHtO+91bUM1HBM7O9nPH4mkg/EKMYbBrmMrgeh0riP3RrxPllNWwxHLmzyHcxnOcfcotjNWf8AMfdw+aB1P+o/2VqGnigaGxRtYOACkshddMWtDQA0AAbgFkiIyIiIIDR05qeUGCPbD8dtfip0RAREQEREBERBHJDHK20jGvHAi6ruw2mIs1ro/wDbcW/sriIsTMKYonsFo6uoHtIP7hNnXRAls0c3APbY/EdyuIhtKmKySMff0krOJZzx+mq98IQdIlH/AKL+5W0QuPSr4Qp//M/Kd3Jy+n8p/wCW7uVpEP6+lM17CbRwzvPVGR+9kL6ybRkbadvlPOZ3uAVxELj6V4KZkFyLue7xnu1LlOF6iJ2IiICIiAsZI2yNyuva99DZZIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAi4qT/iFGyRzPB7zlJH9Qdyx+0SP1e/8wdy1rKW7dFxH2iR+r3/AJg7k+0SP1e/8wdyaSXDt0XEfaJH6vf+YO5PtEj9Xv8AzB3JpJcO3RcR9okfq9/5g7lOPpvKXsYMIlzPZtGjONW8U1kt2CLiPtEj9Xv/ADB3KZ/05kZAJnYVIIyAQ7aDcdyayXDsUXEn/iC1rWuOGvDXXsdoNf0Xn2iR+r3/AJg7k1kt26Linf8AEFrQ0uw14DhcfeDULH7RI/V7/wAwdyayXDt0XEfaJH6vf+YO5PtEj9Xv/MHcmslw7dFxH2iR+r3/AJg7k+0SP1e/8wdyayXDt0XEfaJH6vf+YO5PtEj9Xv8AzB3JrJcO3RcV9oMfoD/zP4Vg/TSURtecKlDXC4O0G617/BNMjaHWouK+0GL0B/5gXv2gMsD4PfY7uf8AwmmSbQ7RFxbfp+1zg1uHuJOgG0/hZS/TzYvLJcNka8dBeE0yNodki5Kn+mklU1zoMLkeG77SDRRSfTxsRAkw6RpIuOeNQmmS7Q7JFxrPp3tGPezDZHMjF3EP3Bey/ToxPayTDJGvcAQC8bjuTSTaHYouMf8AT5scjmPw57XNNiM40Kx+0GP0B35n8K6Zek2h2qLjR9PQWtd4OfZxsDnGpWc304dTm02FyMPT94NFNJXaHXouMH0+YWF/g9+UG19oN6y+vYvbwbJfLn8cbuKaSm0OxRcV9oMfoD/zAvW/8QI3Gww95PU8JpkbQ7RFxX2gxegP7YT7QY7/APIO/M/hXTL0bQ7VFxv1+j9Af20+v0foDu3/AAnHl6Nodki436/R+gO7f8J9fo/QHdv+E48vRtDskXG/X6P0B3b/AIT6/R+gO7f8Jx5ejaHZIuN+v0foDu3/AAn1+j9Ad2/4Tjy9G0OyRcb9fo/QHdv+E+v0foDu3/CceXo2h2SLjfr9H6A7t/wn1+j9Ad2/4Tjy9G0OyRcb9fo/QHdv+E+v0foDu3/CceXo2h2SLjfr9H6A7t/wn1+j9Af2/wCE48vRtDskXIj6b/c7bwbJs72zB4ssR9O25C/we/Je1843px5ejaHYIuSP01cP/wBZLozOed+HilL9OI6mqhgFE5pkeG3z7rlOPL0bQ+dTvYZ5CHNILjrfrUedvlD4oivIamdvlD4pnb5Q+KInJJqZ2+UPimdvlD4oickmpnb5Q+K3LMfY2OJuwBdGwMzZ9bW1HvNl4iTnZSjX1rKud0gAZuDWgizRbcrLMZAfAC0CKONrHBhAc617a+3W3UiKblLB+kEAqHSx0zWhxvbMDbj0dKRY7TtGaWn2khLS7njKbW1tbfofivEU2/Fpgcbj2RbsW5nCznXHO8bq/wAw+C1GZvlD4oi1GdJRmb5Q+KZm+UPiiJyGpmb5Q+KZm+UPiiJyGpmb5Q+K9D2+UPiiK8hqk2jPLb8VsvC0AqBVBrhUbMsJ2gy+LlBGnvREn5LTVbhx2iMg2kWQZy8nMCAbHcLdY+Cx+sMBewmIkMc4gZx0gC+7fp+qIpv+Lqo1mIw1U8LsrWRxtAytIF+JSrxGGerEzY4y1rAyzyNbC19LfoiK8n4ao6OuZTbfxXbWF0fjWtfpWwp8fhjZE18LX7Noa05hcaWJCIk/Jf0aqtHikVNJUEsa9k51ZmsLXvZWTj0L2OzxAvIA8cWOltdOjoRFN/w1Q4ji8NdE1rYmxkPLvGHST3qw7H6YPBjgAGUNdneCXC503ddkRN/w1Vq/FoqtkLWt2YjdeweLDQaDhuVk/SCDnDZFwcG5i5zQXkG/OsLHgiJv+Grw47TZyRCQSLbTO3ONDre2/VYnHYXNaJImyBrcrQ9wPQBw6kRN/wANWX1gia4mOMXO9znNJPjb9OsfALJv0ihblIhDXB1yWOAvpqd29ETf8NUDsWgkikzNj0ja2NpsSHWsXblrBIy/jt+K8RWPkpNUu1j8434ptY/ON+KItc0+k4zax+cb8U2sfnG/FETmn0cZtY/ON+KbWPzjfiiJzT6OM2sfnG/FNrH5xvxRE5p9HGbWPzjfim1j8434oic0+jjNrH5xvxTax+cb8UROafRxm1j8434ptY/ON+KInNPo4zax+cb8U2sfnG/FETmn0ca2yvp2YdJTDV8jgS4uFhY/FQy1EOyijZK2zRc6/iP/APBEU5p9Gi6MUo+bcPsKfY/1G/Hcq2GTwx4nSvfKxrWytJJcAALoics+l0f/2Q==\n", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import YouTubeVideo\n", "YouTubeVideo('7qoR8jmmnYQ')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Stoichiometry Involving Mass, Particles, and Volume\n", "\n", "Converting from moles of one substance to moles of another is the fundamental goal of stoichiometry. We now use the mole ratio to convert between particles, grams, and litres." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example\n", "\n", "**1)** Consider the combustion of butane (C$_4$H$_{10}$):\n", "\n", "
\n", "
____ C$_4$H$_{10}$ + ____ O$_2$ $\\rightarrow$         ?
\n", "\n", "Calculate the mass of CO$_2$ produced when 1.00 g of C$_4$H$_{10}$ is burned." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "aa6bd3d7976b408c994c5cad8d5b3d0b", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Button(button_style='primary', description='Step One', layout=Layout(height='100%', width='20%'…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#----------\n", "\n", "#import ipywidgets as widgets\n", "#from ipywidgets import Output, VBox, Layout\n", "#from IPython.display import clear_output, display, HTML\n", "\n", "#----------\n", "\n", "out6 = Output()\n", "button3_step1 = widgets.Button(description=\"Step One\", layout=Layout(width='20%', height='100%'), button_style='primary')\n", "count5 = 1\n", "\n", "text5_1 = widgets.HTMLMath(value=r\"First, we predict the products (a combustion reaction) and balance the above equation: 2C$_4$H$_{10}$ + 13O$_2$ $\\rightarrow$ 10H$_2$O + 8CO$_2$\")\n", "text5_2 = widgets.HTMLMath(value=r\"Recall: H$_2$O and CO$_2$ are always the products of a combustion reaction.\")\n", "\n", "def on_button3_step1_clicked(b):\n", " global count5\n", " count5 += 1\n", " with out6:\n", " clear_output()\n", " if count5 % 2 == 0:\n", " display(text5_1, text5_2)\n", " \n", "display(VBox([button3_step1, out6]))\n", "button3_step1.on_click(on_button3_step1_clicked)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8a8bae606317489db52b3d4ea382d8d1", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Button(button_style='primary', description='Step Two', layout=Layout(height='100%', width='20%'…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#----------\n", "\n", "#import ipywidgets as widgets\n", "#from ipywidgets import Output, VBox, Layout\n", "#from IPython.display import clear_output, display, HTML\n", "\n", "#----------\n", "\n", "out7 = Output()\n", "button3_step2 = widgets.Button(description=\"Step Two\", layout=Layout(width='20%', height='100%'), button_style='primary')\n", "count6 = 1\n", "\n", "text6_1 = widgets.HTMLMath(value=r\"We wish to move from grams of C$_4$H$_{10}$ to grams of CO$_2$. On the diagram above, put your finger on where we should begin and trace to where we should end: grams (C$_4$H$_{10}$) $\\rightarrow$ moles (C$_4$H$_{10}$) $\\rightarrow$ moles (CO$_2$) $\\rightarrow$ grams (CO$_2$).\")\n", "text6_2 = widgets.HTMLMath(value=r\"$1.00 \\text{ g }C_4H_{10} \\bigg(\\dfrac{1\\text{ mol}}{52.07\\text{ g}}\\bigg)\\bigg(\\dfrac{8 \\text{ mol CO}_2}{2 \\text{ mol }C_4H_{10}}\\bigg)\\bigg(\\dfrac{44.01 \\text{ g}}{1 \\text{ mol}}\\bigg)=3.38 \\text{ g CO}_2$\")\n", "text6_3 = widgets.HTMLMath(value=r\"Recall: To move between grams and moles we require the molar mass, which is 52.07 g/mol for C$_4$H$_{10}$ and 44.01 g/mol for CO$_2$.\")\n", "def on_button3_step2_clicked(b):\n", " global count6\n", " count6 += 1\n", " with out7:\n", " clear_output()\n", " if count6 % 2 == 0:\n", " display(text6_1, text6_2, text6_3)\n", " \n", "display(VBox([button3_step2, out7]))\n", "button3_step2.on_click(on_button3_step2_clicked)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**2)** The decomposition of potassium chlorate is often used to prepare small amounts of oxygen in many labs.\n", "\n", "
\n", "
____ KClO$_3$ $\\rightarrow$         ?
\n", "\n", "How many millilitres of oxygen gas can be prepared from 4.50 g of potassium chlorate?" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "964b853807464893a3b247affbee4704", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Button(button_style='primary', description='Step One', layout=Layout(height='100%', width='20%'…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#----------\n", "\n", "#import ipywidgets as widgets\n", "#from ipywidgets import Output, VBox, Layout\n", "#from IPython.display import clear_output, display, HTML\n", "\n", "#----------\n", "\n", "out8 = Output()\n", "button4_step1 = widgets.Button(description=\"Step One\", layout=Layout(width='20%', height='100%'), button_style='primary')\n", "count7 = 1\n", "\n", "text7_1 = widgets.HTMLMath(value=r\"First, we predict the products (a decomposition reaction) and balance the above equation: 2KClO$_3$ $\\rightarrow$ 2KCl + 3O$_2$\")\n", "text7_2 = widgets.HTMLMath(value=r\"Recall: If 'M' represents a metal, then MClO$_3$ $\\rightarrow$ MCl + O$_2$.\")\n", "\n", "def on_button4_step1_clicked(b):\n", " global count7\n", " count7 += 1\n", " with out8:\n", " clear_output()\n", " if count7 % 2 == 0:\n", " display(text7_1, text7_2)\n", " \n", "display(VBox([button4_step1, out8]))\n", "button4_step1.on_click(on_button4_step1_clicked)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9655eeba3805469e99cbfe60e9eb1e5c", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Button(button_style='primary', description='Step Two', layout=Layout(height='100%', width='20%'…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#----------\n", "\n", "#import ipywidgets as widgets\n", "#from ipywidgets import Output, VBox, Layout\n", "#from IPython.display import clear_output, display, HTML\n", "\n", "#----------\n", "\n", "out9 = Output()\n", "button4_step2 = widgets.Button(description=\"Step Two\", layout=Layout(width='20%', height='100%'), button_style='primary')\n", "count8 = 1\n", "\n", "text8_1 = widgets.HTMLMath(value=r\"Following the above diagram, the order of conversions is as follows: g (O$_2$) $\\rightarrow$ mol (O$_2$) $\\rightarrow$ mol (KClO$_3$) $\\rightarrow$ L (KClO$_3$) $\\rightarrow$ mL (KClO$_3$).\")\n", "text8_2 = widgets.HTMLMath(value=r\"$4.50 \\text{ g KClO}_3 \\bigg(\\dfrac{1\\text{ mol}}{122.55\\text{ g}}\\bigg)\\bigg(\\dfrac{3 \\text{ mol O}_2}{2 \\text{ mol KClO}_3}\\bigg)\\bigg(\\dfrac{22.4 \\text{ L}}{1 \\text{ mol}}\\bigg)\\bigg(\\dfrac{1000 \\text{ mL}}{1 \\text{ L}}\\bigg)=1230 \\text{ mL O}_2$\")\n", "text8_3 = widgets.HTMLMath(value=r\"Recall: To move between litres and moles (assuming that the reaction takes place at standard temperature and pressure (STP) we use the conversion 22.4 L/mol.\")\n", "def on_button4_step2_clicked(b):\n", " global count8\n", " count8 += 1\n", " with out9:\n", " clear_output()\n", " if count8 % 2 == 0:\n", " display(text8_1, text8_2, text8_3)\n", " \n", "display(VBox([button4_step2, out9]))\n", "button4_step2.on_click(on_button4_step2_clicked)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Practice\n", "\n", "Mixing solid zinc with a solution of hydrochloric acid is used to produce hydrogen gas (remember to balance):\n", "\n", "
\n", "
____ Zn + ____ HCl $\\rightarrow$ ____ ZnCl$_2$ + ____ H$_2$
" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "0e3789c83fae43baa423eacfebea2bf6", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Button(button_style='success', description='Generate New Question', layout=Layout(height='100%', width='20%'),…" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "If you had 9.11 ⨉ 10²³ atoms of zinc, how many millilitres of hydrogen would be produced?\n", "\u001b[1m(A) \u001b[0;0m2870 mL hydrogen\n", "\u001b[1m(B) \u001b[0;0m33900 mL hydrogen\n", "\u001b[1m(C) \u001b[0;0m854 mL hydrogen\n", "\u001b[1m(D) \u001b[0;0m7780 mL hydrogen\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "cd76630a846e48bfa44fbf7df98051bf", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(Button(description='(A)', style=ButtonStyle(button_color='Whitesmoke')), Button(description='(B…" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ " \r" ] } ], "source": [ "#from IPython.display import Javascript, display\n", "#from ipywidgets import widgets\n", "\n", "def generate_new_question(ev):\n", " display(Javascript('IPython.notebook.execute_cell()'))\n", "\n", "button_generate_question = widgets.Button(description=\"Generate New Question\", layout=Layout(width='20%', height='100%'), button_style='success')\n", "button_generate_question.on_click(generate_new_question)\n", "display(button_generate_question)\n", "\n", "#Randomize variables\n", "particle_amount = round(random.uniform(5.0, 9.9), 2)\n", "exact_amount = particle_amount * 10**23\n", "#Determine question type\n", "question_type = random.randint(1,2)\n", "\n", "if question_type == 1:\n", " #Print question\n", " question = \"If you had {} \".format(particle_amount) + chr(0x2A09) + \" 10\" + chr(0x00B2) + chr(0x00B3) + \" atoms of zinc, how many millilitres of hydrogen would be produced?\"\n", " print(question)\n", " #Answer\n", " substance_choice = \" mL hydrogen\"\n", " answer = (exact_amount / (6.02 * 10**23)) * 22.4 * 1000\n", "elif question_type == 2:\n", " question = \"If you had {} \".format(particle_amount) + chr(0x2A09) + \" 10\" + chr(0x00B2) + chr(0x00B3) + \" molecules of hydrochloric acid, how many grams of zinc are required for this reaction to take place?\"\n", " print(question)\n", " #Answer\n", " substance_choice = \" g Zn\"\n", " answer = (exact_amount / (6.02 * 10**23)) / 2 * 65.41\n", "\n", "\n", "#Define range of values for random multiple choices\n", "mini = 10\n", "maxa = 20000\n", "\n", "#Create three choices that are unique (and not equal to the answer)\n", "choice_list = random.sample(range(mini,maxa),3)\n", "while choice_list.count(int(answer)) >= 1:\n", " choice_list = random.sample(range(mini,maxa),3)\n", "\n", "#Round options to the specified number of significant figures\n", "def round_sf(number, significant):\n", " return round(number, significant - len(str(number)))\n", "\n", "#Assign each multiple choice to these four variables\n", "#Option_1 contains the answer\n", "if answer < 100:\n", " option_1 = str(\"%0.1f\" % answer) + substance_choice\n", "else:\n", " option_1 = str(round_sf(int(answer), 3)) + substance_choice\n", " \n", "option_2 = str(round_sf(int(choice_list[0]), 3)) + substance_choice\n", "option_3 = str(round_sf(int(choice_list[1]),3)) + substance_choice\n", "option_4 = str(round_sf(int(choice_list[2]),3)) + substance_choice\n", "\n", "multiple_choice(option_1, option_2, option_3, option_4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Additional Resource\n", "\n", "If you're still confused regarding the material above, this video should clear things up." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/jpeg": "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wW27ItdchFrtyEvIKbO1103v4TOrhdtVd2KtyfQ7S5KFDzgNvY3v4+UtYgUg4CwrUc2Or1FWrdKeU7B/i69ZIx+F2JXnC62ux8s8x9QhR6uu2/8AeWcQPFHKgHkNdJ7EQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBETF3WtGdyFVRsk+wQMokKriVVzPXUlnihOdUdSvOPhuSMbITKoW6v7Lf2PtEDbE0W5SVZVVDb5rFZgfYAut/5mOFmDNQ2V1utX8DtrTjzECTERARE0rkq2XZjAHnrRXJ9miT8oG6IkfKzK8VqFsB/fWCtdeZgSImNti1VtZYeVFGyfITTh5lObipk0EmpxsEjUCREhU8VxrrlqHiKXBNZdCA4Hfl85txM2nM8TwCSK25G2pHXW/bAkRPNxuB7Ei08Qx73vVHP7gAuWUqBvfn900rxFctWTE2lpXnQ2qVBXf2h5iBYROffiuatYPq+ErPzZApLKyrrrrfQdT+Eva3D1q6kMrAEEdjAziIgIkejMrvyMilAeaghW38RuSICImmjJW970UHdL8jb89A/7wN0REBE0ZeUuJT4jKzksFVVHViewmN+YuNgNl31uiovMydCR8IEmJHuzK6XxlYMfpDcqkew6J6/hIz8WU2umPjX5K1tyu9QBCny+P8ASBYxNFGSt9l6KCDS/I2/PQP+8ZmXXh0eLaCV5lXp8TqBviIgIiICInkD2IiAiIgInm57ARG4gIkXDzRmBnrqdav4LG1p/u9v4yHncb+guwtwMoorBRYAOVie2usC2iYq3MoJBGx2PsmUBERARNGZlJh4z32g8id9Rl5aYlAtsBILKvTzJAH+YG+IiAmNjBa2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YrWWKH0q8oXY7TNeH4aPY641QawEOeXuD3khVCqFUaAGgIHL5pyBwfiRtyhZy5GgpXWvWX+0mHMykstpueu7w8mpFY1+xvh5y0bh+G1ljtjVlrdc5K/a+/8AATYcagszGpCzMGJ13I7GBXYGbktntRmMVc8xRQg5WUHuGB+I7zzJy8v02cal1WivH8Zhy7ZuutCT6cLGx7WtpoRHf7TKO82CmvxvG5F8Tl5ebXXXlAosPiuY2GcrMIpoarnFmlPKdjQAB2e/tmKcYymezH3phkV1C501yhhvqP6a/rLn0Zg/vN4tR8Xo+17+2E4dh10vSmNWK7Ptjl+198CvyBlrxHEX0gvLqzZ8Ma6a79Zpx+IZFt646eHR4mTapsCDsvb+plseG4RrrrONWUrbmUa7HzmVmDi21NW9CMjNzka/i84FQnEM7JuoprurT1budwm+YowAI+/ctMG+zM4XReSFstqDbA6AkTcuNQnJyUovIpVdDWge4EzrrSqta61Coo0AOwECgwsnKrxMWpspee+518R1+xot0+86lnwzJfIruFjK5ptNYsUaD611/vr+k2ejcLksT6LVy2HmYcvc+c30U1Y9S1U1rWi9lUaAgUePkW4x4lZkZ2lS8qoKbO9LrQ/rrUi5XEchqSbEe58bORUUKFZtpsAj+s6B+H4llljvj1s1o05I+0J6mBi1KFrx61AYP0H8Q9v3wKQ8U4haMevHIeyyprWKqo0d65dMfZ7fbLi++2vhNmQQFuWgvruA3LuZW4GLcNWY6MObn6j29tzLIx1uw7MZdIr1lBofZBGoHP5uZlth2032pct2EbfVTRrPT49juTMzij0ZqCuwvX4y0unh+qpP/l59jJ+LwvExsY0rQmnUK519rXnM24dhteb2xqzaSDzcvXY9sCuqz8k4N+ebkIQWaxwo6cu+m+++k9wcnOsrubMpV1FQsr2V6t5dCenbRliMHFGQ14x6/Fbu3L1inAxKA4qx60Fg02l7jy+6Bq4VjNj4u7G5rbWNtmhocx9g+EmzxEVFCqNKBoAeyewEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAROHs/wBRaksZDw99qSP+oPlPPrHq93P+YPlNeHLQ7mJw31j1e7n/ADBH1j1e7n/MEvhy0O5icN9Y9Xu5/wAwR9Y9Xu5/zBHhy0O5icN9Y9Xu5/zBN4/bqwuijhF3M6eIo5x1Xzk8JHZROG+ser3e/wCYPlNzft4y0i48Ks8MjfN4g7R4SOzicOf9REVFY8NsCtvR8QdZ59Y9Xu5/zBHhyHcxOIb/AFERApbhrgONr+8HUTH6x6vdz/mD5R4ch3MThvrHq93P+YPlH1j1e7n/ADB8pfDlodzE4b6x6vdz/mD5R9Y9Xu5/zB8o8OWh3MThvrHq93P+YPlH1j1e7n/MHyjw5aHcxOH+sar3e/5g+UkH9t7RWLDwm0Kw5gfEHbW9/gIx8tDsInD/AFi1e73/ADB8p79YlegfRz6Pb94PlGPlodvE4hf9Q0dgq8OcknQHiD5TK7/UAUWGu3hliMOui4+UY+Wh2sTjsf8Abp8lWajhVjhRs6sHSa7P9QBUQLOG2KSNjdg7fhGPlodrE4tP2/8AErssThljJWAXIcdN/wBIs/b7wnVLOF2KzAEAuOoPb2Rj5aHaROJf/UJK3ZH4a6sp0QbB0P4TH6xavd7/AJg+UY+Wh3ETiR/qCpCkcNs0x0P3g6n8Jnf+3hx25buF2IfjYIx8tDs4nE/WEnJz+jn5d634g7zL/wDX/XXoyz7PP/1B284x8tDtInD/AFi1e73/ADB8p6P9RKydDhzk/wD9n/EY+Wh28Th/rFq93v8AmD5R9YtXu9/zP+JcfPQ7iJxH1iV+73/M/wCJ79Ydfu9vzP8AiXDz0lu2icT9Ydfu9/zP+I+sOv3e/wCZ/wARh56LdtE4n6w6/d7/AJn/ABH1h1+73/M/4jDz0W7aJxP1h1+73/M/4j6w6/d7/mf8Rh56LdtE4n6w6/d7/mf8R9Ydfu9/zP8AiMPPRbtonE/WHX7vf8z/AIj6w6/d7/mf8Rh56LdtE4n6w6/d7/mf8R9Ydfu9/wAz/iMPPRbtonE/WHX7vf8AM/4mVf8AqAtjqicNdmY6AFnf+0Yeei3aROMP7e8tfiHhlgTm5ebn6b8u0x+sBeTn9HPy71vxB3/CTFz0W7WJxx/bpxvfCreic/2/4fPtGL+3teTl00DBZTY4Tfidtn7oxc9FvnOQynItIYEFzog/Ga9jzERLlko2PMRseYiIyyUbHmI2PMREZZKNjzEtzxtPBqTwPWrrFfPz9da0f9oiSf6X8ELNy1y7ms5eQ9AFGgANfCSKeLeG1KldVogVghAZtbI6/f8A4iIyfit78bqFxanHFa+wbB+/2e2eLxmkKpajbgqT1HKeXXXWu/QxEnlGhi/GUagoKFDkaZhrr9r4f+Q/CVOx5iImo/pXxDY842POIlyzoo2PONjziIyzoo2POe7HmJ5EZZ0Uz5h5iWY4rSLxkrW4yPCNZPOOX7HLsDX3REs/2v4UmU8bwms1dRyqXL72CF6N2GvbsfhNZ4/WWUiogKzEesPaAN9u/T+8RM5PxUHMz6sq6luQJXWoXlUjr5me5fEKr8sXCpCBWE5XPfQ1vpqeRLm/Eprw8tcY3kgN4tLV9+2/bLGjj1VddSPjhvDUKrcw2vTRI6RET/W/hSJicSqx7by1IsS49U5tDW+0kjjlZqYPTtiAOjDR+/p2HsiJJ/rfwauJcWpzqwq0is+IX+0D3J+ckHj2Orqa8bpoKeZwSRs9N67a6REuX8KRM/ideWaeVWrFZ3y8w0O3QdOnaSjx2nb/ALksH5SxZl25Db9bQ0YiMv4UNxvHNhYUMCRrxOcc479d67zBeN18vLZQtqhdKHI6f2iJMn4Mjx2oMSlAO+hLkEn7Xfp8f7CZp+0Fa8pFPIwbZKsOvx7d55EZI0NTcWrsqsDIvq1halOthtaLdv8A3pKoMvmPxnkTUf2r4Uz51/mH4z3nX+YfjPIm/ZnRT3nX+YfjHOv8w/GeRHszop7zr/MPxjnX+YfjPIj2Z0U951/mH4xzr/MPxnkR7M6Ke86/zD8Y51/mH4zyI9mdFPedf5h+Mc6/zD8Z5EezOinvOv8AMPxjnX+YfjPIj2Z0U951/mH4zdh5FePl03P6wrcNoNonR3PIk9mdFJF2fjvh2UIrAtd4oLODrprXaR7bazXXWjghRs/ee/8AtESR/omPhSb6TxfV2lnTG8A6sHX49pG4XbWnFMR3sRVW5SWJ0ANxEZ50U//Z\n", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import YouTubeVideo\n", "YouTubeVideo('Auq_tXHKXW8')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Limiting Reactants\n", "\n", "Before defining what a limiting reactant is, we first present a very simple example to demonstrate the concept.\n", "\n", "**Silly (but useful) example:** Suppose you wish to make several extremely boring sandwiches using one slice of cheese and two slices of bread for each. Then, let\n", "\n", "- Bd = bread\n", "- Ch = cheese\n", "- Bd$_2$Ch = sandwich\n", "\n", "\n", "\n", "So then we have the following equation:\n", "\n", "$$2\\text{Bd + Ch} \\rightarrow \\text{ Bd}_2 \\text{Ch}$$\n", "\n", "**Problem:** *If you have 10 slices of bread and 7 slices of cheese, how many sandwiches can you make? What will be leftover?*\n", "\n", "**Solution:** This can be done mentally; however, here's the basic computation that is required:\n", "\n", "\n", "$$10 \\text{Bd} \\bigg(\\dfrac{1\\: \\text{Bd}_2\\text{Ch}}{2\\: \\text{Bd}}\\bigg) = 5 \\text{Bd}_2\\text{Ch} $$\n", "\n", "Therefore, we can make 5 sandwiches and so 2 slices of cheese are leftover." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A **limiting reactant** is the reactant that is completely consumed in a reaction. It will determine, or limit, the amount of product formed. The other reactants are called **excess reactants**. These reactants are added to a reaction in larger than necessary amounts.\n", "\n", "In the previous question, which was limiting? Will the *bread* run out first or will the *cheese* run out first? Answer: The bread is the limiting reactant and the cheese is in excess. *How do we know?*\n", "\n", "**Key Steps**: Given the information (10 slices of bread and 7 slices of cheese in this case) we must do the following:\n", "\n", "1. *Choose one of the values to work with. It doesn't matter which.* \n", "\n", "Let's choose the first value to work with. So we'll start with 10 slices of bread.\n", "2. *Using stoichiometry, start with your chosen value and convert that value (using the appropriate molar ratio) into the other reactant.*\n", "\n", "$$10 \\text{Bd}\\bigg(\\dfrac{1\\: \\text{Ch}}{2\\: \\text{Bd}}\\bigg) = 5 \\text{Ch}$$\n", "\n", "3. *Compare the result from Step 2 with the corresponding value that you are given in the question. Step 2 tells us **how much we need** of the other reactant for a perfect reaction; i.e. if we are given **more** than what Step 2 gives us, then that reactant is in excess.*\n", "\n", "We are given **7 slices of cheese**. From Step 2, we calculated that (given 10 slices of bread) we **only need 5 slices of cheese**. Since $7 > 5$, **cheese is in excess** and **bread** is the **limiting reactant (LR)**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example\n", "\n", "Consider the following synthesis reaction:\n", "\n", "\n", "$$\\text{____ Fe + ____ Cl}_2 \\rightarrow \\text{ ____ FeCl}_3$$\n", "\n", "If 11.2 g of iron is reacted with 23.4 g of chlorine, iron (III) chloride is formed.\n", "\n", "**1)** *Which reactant is in excess? Which reactant is limiting?*" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "7680c0cd58da4e29b523a0c9b28b1dbd", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Button(button_style='primary', description='Step One', layout=Layout(height='100%', width='20%'…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#----------\n", "\n", "#import ipywidgets as widgets\n", "#from ipywidgets import Output, VBox, Layout\n", "#from IPython.display import clear_output, display, HTML\n", "\n", "#----------\n", "\n", "out11 = Output()\n", "button5_step1 = widgets.Button(description=\"Step One\", layout=Layout(width='20%', height='100%'), button_style='primary')\n", "count9 = 1\n", "\n", "text9_1 = widgets.HTMLMath(value=r\"First, we balance the above equation: 2Fe + 3Cl$_2$ $\\rightarrow$ 2FeCl$_3$\")\n", "text9_2 = widgets.HTMLMath(value=r\"Next, we follow the 'Key Steps' above. Choose one of the reactants to work with, say Fe.\")\n", "\n", "\n", "def on_button5_step1_clicked(b):\n", " global count9\n", " count9 += 1\n", " with out11:\n", " clear_output()\n", " if count9 % 2 == 0:\n", " display(text9_1, text9_2)\n", " \n", "display(VBox([button5_step1, out11]))\n", "button5_step1.on_click(on_button5_step1_clicked)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "03550779510941cd9927bc71cbe52c66", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Button(button_style='primary', description='Step Two', layout=Layout(height='100%', width='20%'…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#----------\n", "\n", "#import ipywidgets as widgets\n", "#from ipywidgets import Output, VBox, Layout\n", "#from IPython.display import clear_output, display, HTML\n", "\n", "#----------\n", "\n", "out12 = Output()\n", "button5_step2 = widgets.Button(description=\"Step Two\", layout=Layout(width='20%', height='100%'), button_style='primary')\n", "count10 = 1\n", "\n", "text10_1 = widgets.HTMLMath(value=r\"With 11.2 g of Fe, how much Cl$_2$ is required for a perfect reaction?\")\n", "text10_2 = widgets.HTMLMath(value=r\"11.2 g Fe $\\bigg(\\dfrac{1\\text{ mol}}{55.85\\text{ g}}\\bigg)\\bigg(\\dfrac{3\\text{ mol Cl}_2}{2\\text{ mol Fe}}\\bigg)\\bigg(\\dfrac{70.90\\text{ g}}{1\\text{ mol}}\\bigg)=$ 21.3 g Cl$_2$\")\n", "text10_3 = widgets.HTMLMath(value=r\"Note: 21.3 g Cl$_2$ is exactly how much Cl$_2$ you NEED for a PERFECT reaction (i.e. reacting 11.2 g Fe with 21.3 g Cl$_2$ would result in NO EXCESS reactant).\")\n", "\n", "\n", "def on_button5_step2_clicked(b):\n", " global count10\n", " count10 += 1\n", " with out12:\n", " clear_output()\n", " if count10 % 2 == 0:\n", " display(text10_1, text10_2, text10_3)\n", " \n", "display(VBox([button5_step2, out12]))\n", "button5_step2.on_click(on_button5_step2_clicked)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "122eeefae2ff4c92bed4267cc901795c", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Button(button_style='primary', description='Step Three', layout=Layout(height='100%', width='20…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#----------\n", "\n", "#import ipywidgets as widgets\n", "#from ipywidgets import Output, VBox, Layout\n", "#from IPython.display import clear_output, display, HTML\n", "\n", "#----------\n", "\n", "out13 = Output()\n", "button5_step3 = widgets.Button(description=\"Step Three\", layout=Layout(width='20%', height='100%'), button_style='primary')\n", "count11 = 1\n", "\n", "text11_1 = widgets.HTMLMath(value=r\"Compare that value (21.3 g Cl$_2$) with the given Cl$_2$ value (from the question): 23.4 g $>$ 21.3 g $\\implies$ Cl$_2$ is in excess. Therefore, Fe is the LR.\")\n", "\n", "def on_button5_step3_clicked(b):\n", " global count11\n", " count11 += 1\n", " with out13:\n", " clear_output()\n", " if count11 % 2 == 0:\n", " display(text11_1)\n", " \n", "display(VBox([button5_step3, out13]))\n", "button5_step3.on_click(on_button5_step3_clicked)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "1a1067d1c4484fcf86b1337cb362295c", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(Button(button_style='warning', description='NOTE', layout=Layout(height='100%', width='20%'), s…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#----------\n", "\n", "#import ipywidgets as widgets\n", "#from ipywidgets import Output, VBox, Layout\n", "#from IPython.display import clear_output, display, HTML\n", "\n", "#----------\n", "\n", "out14 = Output()\n", "button5_step4 = widgets.Button(description=\"NOTE\", layout=Layout(width='20%', height='100%'), button_style='warning')\n", "count12 = 1\n", "\n", "text12_1 = widgets.HTMLMath(value=r\"What if we started with 23.4 g of Cl$_2$ instead of 11.2 g of Fe? The stategy is exactly the same. We show the work below:\")\n", "text12_2 = widgets.HTMLMath(value=r\"23.4 g Cl$_2$ $\\bigg(\\dfrac{1\\text{ mol}}{70.90\\text{ g}}\\bigg)\\bigg(\\dfrac{2\\text{ mol Fe}}{3\\text{ mol Cl}_2}\\bigg)\\bigg(\\dfrac{55.85\\text{ g}}{1\\text{ mol}}\\bigg)=$ 12.3 g Fe\")\n", "text12_3 = widgets.HTMLMath(value=r\"Since 11.2 g Fe $<$ 12.3 g Fe, we don't start with enough Fe for a perfect reaction $\\implies$ Fe is the LR and Cl$_2$ must be excess.\")\n", " \n", "def on_button5_step4_clicked(b):\n", " global count12\n", " count12 += 1\n", " with out14:\n", " clear_output()\n", " if count12 % 2 == 0:\n", " display(text12_1, text12_2, text12_3)\n", " \n", "display(VBox([button5_step4, out14]))\n", "button5_step4.on_click(on_button5_step4_clicked)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**2)** *Calculate the mass of the excess.*\n", "\n", "Because we chose to work with Fe first (which was a completely random choice) we calculated that we require exactly 21.3 g of Cl$_2$ for a perfect reaction. Also, it worked out that Cl$_2$ is in excess, which means that we simply perform the following subtraction:\n", "\n", "$$23.4 g - 21.3 g = 2.1 g \\text{ Cl}_2$$\n", "\n", "Note: If we chose to work with Cl$_2$ first (instead of Fe) then, while we would still have been able to find which is limiting (see \"NOTE\" above), we would have to perform the calculation to find 21.3 g of Cl$_2$ required for a perfect reaction." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3)** *Calculate the mass of the product.*\n", "\n", "The whole point of determining which reactant is limiting is precisely to find how much product will be produced. *Always use the mass of the **limiting reactant** to calculate the mass of the product!*\n", "\n", "Since Fe is the LR, we must start with that mass and convert it to the mass of the product (FeCl$_3$):\n", "\n", "$$ 11.2 g \\text{ Fe}\\bigg(\\dfrac{1\\text{ mol}}{55.85\\text{ g}}\\bigg)\\bigg(\\dfrac{2\\text{ mol FeCl}_3}{2\\text{ mol Fe}}\\bigg)\\bigg(\\dfrac{162.2\\text{ g}}{1\\text{ mol}}\\bigg)= 32.5 g \\text{ FeCl}_3$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Interactive Example\n", "\n", "Recall the chemical reaction (from above):\n", "\n", "$$2\\text{Fe + 3Cl}_2 \\rightarrow 2\\text{FeCl}_3$$\n", "\n", "Use the sliders below to dynamically adjust the mass of both reactants. As you adjust the mass of the reactants, observe the changes in limiting reactant, mass of excess, and the mass of product." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e0031355423741139f5f2a6acc082180", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(FloatSlider(value=11.2, continuous_update=False, description='Fe (g)', min=10.0, style=SliderSt…" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d5e24e9d94ad4a66aeafedd6c79d2ce7", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "out_text = Output()\n", "\n", "################ Widgets #################\n", "style = {'description_width': 'initial'}\n", "reactant1_slider = widgets.FloatSlider(continuous_update=False, wait=True, value=11.2, min=10, max=100, step=0.1, description=\"Fe (g)\", style=style)\n", "reactant2_slider = widgets.FloatSlider(continuous_update=False, wait=True, value=21.3, min=10, max=100, step=0.1, description=\"Cl\" + chr(0x2082) + \" (g)\", style=style)\n", "calc = widgets.Button(description=\"Calculate LR and Excess\", layout=Layout(width='20%', height='88%'),button_style='success')\n", "###########################################\n", "\n", "display(VBox([reactant1_slider, reactant2_slider, calc]))\n", "\n", "#############################################\n", "\n", "def on_submit_button_clicked(b):\n", " #Answers\n", " Fe_first = reactant1_slider.value * (1/55.85) * (3/2) * (70.9/1)\n", " Cl_first = reactant2_slider.value * (1/70.9) * (2/3) * (55.85/1)\n", "\n", " if reactant2_slider.value > Fe_first:\n", " LR1 = \"Fe\"\n", " Excess1 = \"Cl\" + chr(0x2082)\n", " amount_excess1 = round(reactant2_slider.value - Fe_first,1)\n", " mass_product1 = round(reactant1_slider.value * (1/55.85) * (2/2) * (162.2/1),1)\n", " else:\n", " amount_excess1 = round(reactant1_slider.value - Cl_first,1)\n", " if amount_excess1 == 0:\n", " LR1 = \"None\"\n", " Excess1 = \"None\"\n", " else:\n", " LR1 = \"Cl\" + chr(0x2082)\n", " Excess1 = \"Fe\"\n", " \n", " mass_product1 = round(reactant2_slider.value * (1/32) * (2/1) * (18.016/1),1)\n", " \n", " with out_text:\n", " clear_output()\n", " text_answer1 = widgets.HTMLMath(value=r\"LR: {}; Excess: {}, Mass of Excess: {} g; Mass of Product: {} g\".format(LR1, Excess1, str(amount_excess1), str(mass_product1))) \n", " display(text_answer1)\n", "\n", "### Widget Interaction Function Calls ###\n", "calc.on_click(on_submit_button_clicked)\n", "\n", "display(out_text)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Practice\n", "\n", "Given the following reaction:\n", "\n", "$$ 2\\text{H}_2 + \\text{O}_2 \\rightarrow 2\\text{H}_2 O$$\n", "\n", "Determine which reactant is in excess and which is limiting and calculate the mass of the excess and product. Round all answers to one decimal place. The mass of the reactants are given below." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c1d51873b3e34697897065826e64e80f", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Button(button_style='success', description='Generate New Question', layout=Layout(height='100%', width='20%'),…" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Starting amount of hydrogen: 52.6 g; Starting amount of oxygen: 158.4 g\n", "\u001b[1m(A) \u001b[0;0mLR: O₂; Excess: H₂, Mass of Excess: 36.6 g; Mass of Product: 225.4 g\n", "\u001b[1m(B) \u001b[0;0mLR: O₂; Excess: H₂, Mass of Excess: 32.6 g; Mass of Product: 178.4 g\n", "\u001b[1m(C) \u001b[0;0mLR: H₂; Excess: O₂, Mass of Excess: 51.6 g; Mass of Product: 209.4 g\n", "\u001b[1m(D) \u001b[0;0mLR: H₂; Excess: O₂, Mass of Excess: 53.6 g; Mass of Product: 219.4 g\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9077319469cc4773a2baca3861e3123f", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(Button(description='(A)', style=ButtonStyle(button_color='Whitesmoke')), Button(description='(B…" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ " \r" ] } ], "source": [ "#from IPython.display import Javascript, display\n", "#from ipywidgets import widgets\n", "\n", "def generate_new_question(ev):\n", " display(Javascript('IPython.notebook.execute_cell()'))\n", "\n", "button_generate_question = widgets.Button(description=\"Generate New Question\", layout=Layout(width='20%', height='100%'), button_style='success')\n", "button_generate_question.on_click(generate_new_question)\n", "display(button_generate_question)\n", "\n", "#Randomize variables\n", "H_amount = round(random.uniform(10.0, 100.0), 1)\n", "O_amount = round(random.uniform(10.0, 200.0), 1)\n", "\n", "amount_sentence = \"Starting amount of hydrogen: {} g; Starting amount of oxygen: {} g\".format(H_amount, O_amount)\n", "print(amount_sentence)\n", "\n", "#Answers\n", "H_first = H_amount * (1/2.016) * (1/2) * (32/1)\n", "O_first = O_amount * (1/32) * (2/1) * (2.016/1)\n", "\n", "if O_amount > H_first:\n", " LR = \"H\" + chr(0x2082)\n", " Excess = \"O\" + chr(0x2082)\n", " amount_excess = round(O_amount - H_first,1)\n", " mass_product = round(H_amount * (1/32) * (2/2) * (18.016/1),1)\n", "else:\n", " LR = \"O\" + chr(0x2082)\n", " Excess = \"H\" + chr(0x2082)\n", " amount_excess = round(H_amount - O_first,1)\n", " mass_product = round(O_amount * (1/32) * (2/1) * (18.016/1),1)\n", "\n", "#Random Variations in Answer\n", "wrong_answers = random.sample(range(1, 50), 6)\n", "\n", "#Assign each multiple choice to these four variables\n", "#Option_1 contains the answer\n", "option_1 = \"LR: {}; Excess: {}, Mass of Excess: {} g; Mass of Product: {} g\".format(LR, Excess, str(amount_excess), str(mass_product)) \n", "option_2 = \"LR: {}; Excess: {}, Mass of Excess: {} g; Mass of Product: {} g\".format(LR, Excess, str(amount_excess + wrong_answers[0]), str(mass_product + wrong_answers[1])) \n", "option_3 = \"LR: {}; Excess: {}, Mass of Excess: {} g; Mass of Product: {} g\".format(Excess, LR, str(amount_excess + wrong_answers[2]), str(mass_product + wrong_answers[3])) \n", "option_4 = \"LR: {}; Excess: {}, Mass of Excess: {} g; Mass of Product: {} g\".format(Excess, LR, str(amount_excess + wrong_answers[4]), str(mass_product + wrong_answers[5])) \n", "\n", "multiple_choice(option_1, option_2, option_3, option_4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Additional Resource\n", "\n", "If you're still confused regarding the material above, this video should clear things up." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/jpeg": "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\n", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import YouTubeVideo\n", "YouTubeVideo('pdoBH6Cg__o')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusion\n", "\n", "- **Stoichiometry** is the calculation of relative quantities of reactants and products in chemical reactions. It allows us to:\n", " - Predict how much product will form in chemical reactions.\n", " - Determine which reactant is in excess and which is limiting.\n", "\n", "\n", "- The coefficients in a balanced chemical equation indicate both the relative numbers of molecules in the reaction and the relative number of moles.\n", "\n", "\n", "- A **limiting reactant** is the reactant that is completely consumed in a reaction. It will determine, or limit, the amount of product formed.\n", "\n", "\n", "- **Excess reactants** are reactants that are added to a reaction in larger than necessary amounts.\n", "\n", "\n", "- Use the **three step process** outlined above to determine which reactant is limiting, in excess, and to determine the mass of the products.\n", "\n", "*Images and content in this notebook are by [DanPalmarin](https://palmarin.weebly.com)*" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "scrolled": true, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%html\n", "\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[![Callysto.ca License](https://github.com/callysto/curriculum-notebooks/blob/master/callysto-notebook-banner-bottom.jpg?raw=true)](https://github.com/callysto/curriculum-notebooks/blob/master/LICENSE.md)" ] } ], "metadata": { "celltoolbar": "Edit Metadata", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 2 }