From 98f33f552e00f1a3bb23d663c23acfd6111d89af Mon Sep 17 00:00:00 2001 From: flashlan Date: Thu, 15 Jun 2023 00:16:46 -0300 Subject: [PATCH] s3 on graph --- compareDBs.ipynb | 396 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 284 insertions(+), 112 deletions(-) diff --git a/compareDBs.ipynb b/compareDBs.ipynb index 64419cd..2caaf98 100644 --- a/compareDBs.ipynb +++ b/compareDBs.ipynb @@ -305,7 +305,6 @@ "cell_type": "markdown", "id": "4a8d5703-9bc9-4d38-83ff-457159304d58", "metadata": { - "jp-MarkdownHeadingCollapsed": true, "tags": [] }, "source": [ @@ -314,7 +313,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 20, "id": "c3202bbb-2655-45b2-b166-9f45a3ef854c", "metadata": { "tags": [] @@ -326,7 +325,7 @@ "'Database created'" ] }, - "execution_count": 9, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -380,7 +379,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 21, "id": "cc4865b3-a1bc-4a35-9624-15334754b3a1", "metadata": {}, "outputs": [], @@ -394,7 +393,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 22, "id": "1fac82c1-2d04-44ef-893a-dc13b755e6d8", "metadata": {}, "outputs": [], @@ -408,7 +407,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 23, "id": "597ae7bd-2eea-44d7-b379-f0eb7e745c15", "metadata": { "tags": [] @@ -448,92 +447,92 @@ " \n", " \n", " \n", - " 0\n", - " 7730801\n", - " 2023-01-02 15:58:45\n", - " 1672675140000000000\n", - " 2023-01-02 15:59:00\n", - " 1.065995\n", - " 1.066035\n", - " 1.065930\n", - " 1.066070\n", - " 57\n", + " 2999995\n", + " 8230798\n", + " 2023-05-03 10:35:00\n", + " 1683110115000000000\n", + " 2023-05-03 10:35:15\n", + " 1.103340\n", + " 1.10330\n", + " 1.103275\n", + " 1.103340\n", + " 61\n", " \n", " \n", - " 1\n", - " 7730801\n", - " 2023-01-02 15:58:45\n", - " 1672675140000000000\n", - " 2023-01-02 15:59:00\n", - " 1.065995\n", - " 1.066035\n", - " 1.065930\n", - " 1.066070\n", - " 57\n", + " 2999996\n", + " 8230799\n", + " 2023-05-03 10:35:15\n", + " 1683110130000000000\n", + " 2023-05-03 10:35:30\n", + " 1.103300\n", + " 1.10341\n", + " 1.103300\n", + " 1.103410\n", + " 44\n", " \n", " \n", - " 2\n", - " 7730802\n", - " 2023-01-02 15:59:00\n", - " 1672675155000000000\n", - " 2023-01-02 15:59:15\n", - " 1.066055\n", - " 1.066085\n", - " 1.066005\n", - " 1.066115\n", - " 52\n", + " 2999997\n", + " 8230799\n", + " 2023-05-03 10:35:15\n", + " 1683110130000000000\n", + " 2023-05-03 10:35:30\n", + " 1.103300\n", + " 1.10341\n", + " 1.103300\n", + " 1.103410\n", + " 44\n", " \n", " \n", - " 3\n", - " 7730802\n", - " 2023-01-02 15:59:00\n", - " 1672675155000000000\n", - " 2023-01-02 15:59:15\n", - " 1.066055\n", - " 1.066085\n", - " 1.066005\n", - " 1.066115\n", - " 52\n", + " 2999998\n", + " 8230800\n", + " 2023-05-03 10:35:30\n", + " 1683110145000000000\n", + " 2023-05-03 10:35:45\n", + " 1.103415\n", + " 1.10351\n", + " 1.103385\n", + " 1.103515\n", + " 51\n", " \n", " \n", - " 4\n", - " 7730803\n", - " 2023-01-02 15:59:15\n", - " 1672675170000000000\n", - " 2023-01-02 15:59:30\n", - " 1.066080\n", - " 1.066025\n", - " 1.066025\n", - " 1.066110\n", - " 57\n", + " 2999999\n", + " 8230800\n", + " 2023-05-03 10:35:30\n", + " 1683110145000000000\n", + " 2023-05-03 10:35:45\n", + " 1.103415\n", + " 1.10351\n", + " 1.103385\n", + " 1.103515\n", + " 51\n", " \n", " \n", "\n", "" ], "text/plain": [ - " id from at to \\\n", - "0 7730801 2023-01-02 15:58:45 1672675140000000000 2023-01-02 15:59:00 \n", - "1 7730801 2023-01-02 15:58:45 1672675140000000000 2023-01-02 15:59:00 \n", - "2 7730802 2023-01-02 15:59:00 1672675155000000000 2023-01-02 15:59:15 \n", - "3 7730802 2023-01-02 15:59:00 1672675155000000000 2023-01-02 15:59:15 \n", - "4 7730803 2023-01-02 15:59:15 1672675170000000000 2023-01-02 15:59:30 \n", + " id from at to \\\n", + "2999995 8230798 2023-05-03 10:35:00 1683110115000000000 2023-05-03 10:35:15 \n", + "2999996 8230799 2023-05-03 10:35:15 1683110130000000000 2023-05-03 10:35:30 \n", + "2999997 8230799 2023-05-03 10:35:15 1683110130000000000 2023-05-03 10:35:30 \n", + "2999998 8230800 2023-05-03 10:35:30 1683110145000000000 2023-05-03 10:35:45 \n", + "2999999 8230800 2023-05-03 10:35:30 1683110145000000000 2023-05-03 10:35:45 \n", "\n", - " open close min max volume \n", - "0 1.065995 1.066035 1.065930 1.066070 57 \n", - "1 1.065995 1.066035 1.065930 1.066070 57 \n", - "2 1.066055 1.066085 1.066005 1.066115 52 \n", - "3 1.066055 1.066085 1.066005 1.066115 52 \n", - "4 1.066080 1.066025 1.066025 1.066110 57 " + " open close min max volume \n", + "2999995 1.103340 1.10330 1.103275 1.103340 61 \n", + "2999996 1.103300 1.10341 1.103300 1.103410 44 \n", + "2999997 1.103300 1.10341 1.103300 1.103410 44 \n", + "2999998 1.103415 1.10351 1.103385 1.103515 51 \n", + "2999999 1.103415 1.10351 1.103385 1.103515 51 " ] }, - "execution_count": 25, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "dfCh.head()" + "dfCh.tail()" ] }, { @@ -695,7 +694,6 @@ "cell_type": "markdown", "id": "b9ddfdc6-c899-4f6c-9b4e-8ec6ab6d7e05", "metadata": { - "jp-MarkdownHeadingCollapsed": true, "tags": [] }, "source": [ @@ -704,7 +702,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 24, "id": "16cd8eb7-333d-43fd-88e0-ee983645d3fd", "metadata": {}, "outputs": [ @@ -714,7 +712,7 @@ "Engine(postgresql+psycopg2://postgres:***@192.168.1.133:5432/postgres)" ] }, - "execution_count": 7, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -736,7 +734,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 25, "id": "be31f3a0-b7ed-48e6-9b65-dc16319fb8d1", "metadata": {}, "outputs": [], @@ -773,7 +771,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 26, "id": "98cc9360-4b84-43e4-b23b-b32d0c50c3b9", "metadata": { "tags": [] @@ -789,7 +787,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 27, "id": "82e1b44e-35af-403f-9936-5e1561fd5abf", "metadata": { "tags": [] @@ -804,14 +802,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "id": "6d1b7480-5bc7-4f08-8cf3-b9590802d8f7", "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "126.40752380799677\n" + ] + } + ], "source": [ - "print(postgresql_read_time)" + "print(psql_read_execution_time)" ] }, { @@ -838,7 +844,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 15, "id": "7c7022bf-9c3b-400a-9045-b089483f05ad", "metadata": { "tags": [] @@ -882,61 +888,217 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 13, "id": "cd7fe012-9eee-4f91-8c07-8e0148633766", "metadata": { "tags": [] }, "outputs": [], "source": [ - "def main():\n", - " # Insert to db and benchmark time\n", - " df.to_parquet(\"data/data.parquet\")\n", - " s3CreateBucket()\n", - " start = timeit.default_timer()\n", - " s3uploadCsv()\n", - " stop = timeit.default_timer()\n", - " s3_write_execution_time = stop - start\n", - "\n", - "\n", - "if __name__ == \"__main__\":\n", - " try:\n", - " main()\n", - " except S3Error as exc:\n", - " print(\"error occurred.\", exc)" + "# Insert to db and benchmark time\n", + "df.to_parquet(\"data/data.parquet\")\n", + "s3CreateBucket()\n", + "start = timeit.default_timer()\n", + "s3uploadCsv()\n", + "stop = timeit.default_timer()\n", + "s3_write_execution_time = stop - start" ] }, { "cell_type": "code", "execution_count": null, + "id": "a803e870-1970-496f-b678-a7f8866870cf", + "metadata": {}, + "outputs": [], + "source": [ + "# falta read (parquet to df)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, "id": "390918c8-c88f-404a-96c4-685d578fdad0", "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3.8389689489995362\n" + ] + } + ], "source": [ - "%%time\n", - "df.to_parquet(\"data/data.parquet\")\n", - "if __name__ == \"__main__\":\n", - " try:\n", - " main()\n", - " except S3Error as exc:\n", - " print(\"error occurred.\", exc)" + "print(s3_write_execution_time)" ] }, { "cell_type": "code", - "execution_count": null, - "id": "a9e07143-8c11-4b68-a869-c3922cda9092", + "execution_count": 16, + "id": "666d4bc7-933d-4e6e-87c1-72fd37e61e0d", "metadata": { "tags": [] }, "outputs": [], "source": [ + "start = timeit.default_timer()\n", "pq = pd.read_parquet(\"data/data.parquet\", engine=\"pyarrow\")\n", + "stop = timeit.default_timer()\n", + "s3_read_execution_time = stop - start" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "573b10c3-5dfe-420a-a988-688d4ebcde24", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idfromattoopencloseminmaxvolume
077308012023-01-02 15:58:4516726751400000000002023-01-02 15:59:001.0659951.0660351.0659301.06607057
177308022023-01-02 15:59:0016726751550000000002023-01-02 15:59:151.0660551.0660851.0660051.06611552
277308032023-01-02 15:59:1516726751700000000002023-01-02 15:59:301.0660801.0660251.0660251.06611057
377308042023-01-02 15:59:3016726751850000000002023-01-02 15:59:451.0659801.0659851.0658851.06604564
477308052023-01-02 15:59:4516726752000000000002023-01-02 16:00:001.0659751.0660551.0658301.06605550
\n", + "
" + ], + "text/plain": [ + " id from at to \\\n", + "0 7730801 2023-01-02 15:58:45 1672675140000000000 2023-01-02 15:59:00 \n", + "1 7730802 2023-01-02 15:59:00 1672675155000000000 2023-01-02 15:59:15 \n", + "2 7730803 2023-01-02 15:59:15 1672675170000000000 2023-01-02 15:59:30 \n", + "3 7730804 2023-01-02 15:59:30 1672675185000000000 2023-01-02 15:59:45 \n", + "4 7730805 2023-01-02 15:59:45 1672675200000000000 2023-01-02 16:00:00 \n", + "\n", + " open close min max volume \n", + "0 1.065995 1.066035 1.065930 1.066070 57 \n", + "1 1.066055 1.066085 1.066005 1.066115 52 \n", + "2 1.066080 1.066025 1.066025 1.066110 57 \n", + "3 1.065980 1.065985 1.065885 1.066045 64 \n", + "4 1.065975 1.066055 1.065830 1.066055 50 " + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ "pq.head()" ] }, + { + "cell_type": "code", + "execution_count": 18, + "id": "fefb54f6-9040-4fd7-9861-20322c202d92", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.5066086639999412\n" + ] + } + ], + "source": [ + "print(s3_read_execution_time)" + ] + }, { "cell_type": "markdown", "id": "50d1fc58-89a7-4507-aff0-6e943656cfe0", @@ -1024,6 +1186,7 @@ "cell_type": "markdown", "id": "97405e42-61dc-42c7-8220-237a312c0ec7", "metadata": { + "jp-MarkdownHeadingCollapsed": true, "tags": [] }, "source": [ @@ -1086,6 +1249,7 @@ "cell_type": "markdown", "id": "4409cc89-ed14-4313-ac89-65b826038533", "metadata": { + "jp-MarkdownHeadingCollapsed": true, "tags": [] }, "source": [ @@ -1254,7 +1418,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 30, "id": "a9740731-6077-4bf1-bb65-b4c4225ac79b", "metadata": { "tags": [] @@ -1262,7 +1426,7 @@ "outputs": [ { "data": { - "image/png": "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tgPXwKFhZ/v27eaQmCQlJiZKkvr06aN58+Zp+PDhys/P14ABA5Sdna02bdpo5cqVpb6QhQsXavDgwerQoYNcXFzUs2dPzZgx44bvCwAAN6vY2FitW7dOp0+f1rBhw8z2du3a6euvv9Y333yj55577rr6dHNzU3Fxcam2Zs2aad++fapdu7Zd6r5WDg079913nwzDuOJym82mcePGady4cVdcJygoSIsWLaqI8gAAuCXExsZq0KBBKioqMkd2JCkmJkaDBw9WYWFhqcGJa1GzZk0lJyerdevW8vDwUOXKlTVmzBh17dpV1atX10MPPSQXFxft2rVLu3fv1uuvv27v3TI57ZwdAABwY8TGxurcuXOqXbt2qVu+xMTE6MyZM+Yl6tdjypQpWrNmjSIiItS0aVNJUnx8vFasWKHVq1fr7rvv1j333KNp06apRo0adt2f37MZfzS0covIzc1VQECAcnJyuAwdQJnUHPmlo0vAbxye2OWGft758+d16NAhRUZGVujck1vRH3231/r7zcgOAACwNMIOAACwNMIOAACwNMIOAACwNMIOAAB2wjU/9meP75SwAwBAObm5uUlShT7y4Fb163f663dcFg69qSAAAFZQqVIlBQYGmg+n9vb2ls1mc3BVNzfDMHT27FmdOHFCgYGBqlSpUpn7IuwAAGAHoaGhkmQGHtjHr09OLw/CDgAAdmCz2RQWFqaqVauqqKjI0eVYgpubW7lGdH5F2AEAwI4qVapklx9o2A8TlAEAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKU5ddgpLi7W6NGjFRkZKS8vL0VFRWn8+PEyDMNcxzAMjRkzRmFhYfLy8lJcXJwOHDjgwKoBAIAzceqwM2nSJL377rv629/+pr1792rSpEmaPHmyZs6caa4zefJkzZgxQ7Nnz1Zqaqp8fHwUHx+v8+fPO7ByAADgLFwdXcAf2bJlixISEtSlSxdJUs2aNfXhhx/qm2++kXRxVGf69Ol69dVXlZCQIElasGCBQkJCtHz5cj322GOX7begoEAFBQXm+9zc3AreEwAA4ChOPbJz7733Kjk5Wfv375ck7dq1S5s2bVLnzp0lSYcOHVJmZqbi4uLMbQICAtSqVStt3br1iv0mJSUpICDAfEVERFTsjgAAAIdx6pGdkSNHKjc3V/Xq1VOlSpVUXFysCRMmqFevXpKkzMxMSVJISEip7UJCQsxllzNq1CglJiaa73Nzcwk8AABYlFOHnY8//lgLFy7UokWL1LBhQ+3cuVNDhw5VeHi4+vTpU+Z+PTw85OHhYcdKAQCAs3LqsDNs2DCNHDnSnHvTqFEjHTlyRElJSerTp49CQ0MlSVlZWQoLCzO3y8rKUpMmTRxRMgAAcDJOPWfn7NmzcnEpXWKlSpVUUlIiSYqMjFRoaKiSk5PN5bm5uUpNTVV0dPQNrRUAADgnpx7Z6datmyZMmKDq1aurYcOG2rFjh6ZOnaqnn35akmSz2TR06FC9/vrrqlOnjiIjIzV69GiFh4ere/fuji0eAAA4BacOOzNnztTo0aM1cOBAnThxQuHh4XrmmWc0ZswYc53hw4crPz9fAwYMUHZ2ttq0aaOVK1fK09PTgZUDAABnYTN+ezviW1Rubq4CAgKUk5Mjf39/R5cD4CZUc+SXji4Bv3F4YhdHl4Ab4Fp/v516zg4AAEB5EXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAICllSnsnDt3TmfPnjXfHzlyRNOnT9fq1avtVhgAAIA9lCnsJCQkaMGCBZKk7OxstWrVSlOmTFFCQoLeffdduxYIAABQHmUKOxkZGWrbtq0k6ZNPPlFISIiOHDmiBQsWaMaMGXYtEAAAoDzKFHbOnj0rPz8/SdLq1avVo0cPubi46J577tGRI0fsWiAAAEB5lCns1K5dW8uXL9exY8e0atUq3X///ZKkEydOyN/f364FAgAAlEeZws6YMWP08ssvq2bNmmrVqpWio6MlXRzladq0qV0LBAAAKA/Xsmz00EMPqU2bNjp+/LgaN25stnfo0EEPPvig3YoDAAAorzLfZyc0NFRNmzaVi8v/d9GyZUvVq1fPLoX96ueff9YTTzyh4OBgeXl5qVGjRtq+fbu53DAMjRkzRmFhYfLy8lJcXJwOHDhg1xoAAMDN65pHdnr06HHNnS5durRMxfze6dOn1bp1a8XGxurrr79WlSpVdODAAVWuXNlcZ/LkyZoxY4bmz5+vyMhIjR49WvHx8fr+++/l6elplzoAAMDN65rDTkBAgPlnwzC0bNkyBQQEqEWLFpKk9PR0ZWdnX1couppJkyYpIiJCc+fONdsiIyNL1TF9+nS9+uqrSkhIkCQtWLBAISEhWr58uR577DG71QIAAG5O1xx2fhs4RowYoUceeUSzZ89WpUqVJEnFxcUaOHCgXa/G+vzzzxUfH6+HH35Y69evV7Vq1TRw4ED1799fknTo0CFlZmYqLi7O3CYgIECtWrXS1q1brxh2CgoKVFBQYL7Pzc21W80AAMC5lGnOzpw5c/Tyyy+bQUeSKlWqpMTERM2ZM8duxf3000969913VadOHa1atUrPPfechgwZovnz50uSMjMzJUkhISGltgsJCTGXXU5SUpICAgLMV0REhN1qBgAAzqVMYefChQv64YcfLmn/4YcfVFJSUu6iflVSUqJmzZrpjTfeUNOmTTVgwAD1799fs2fPLle/o0aNUk5Ojvk6duyYnSoGAADOpkyXnj/11FPq16+fDh48qJYtW0qSUlNTNXHiRD311FN2Ky4sLEwNGjQo1Va/fn19+umnki5eESZJWVlZCgsLM9fJyspSkyZNrtivh4eHPDw87FYnAABwXmUKO2+99ZZCQ0M1ZcoUHT9+XNLFYDJs2DC99NJLdiuudevW2rdvX6m2/fv3q0aNGpIuTlYODQ1VcnKyGW5yc3OVmpqq5557zm51AACAm1eZwo6Li4uGDx+u4cOHm5N7K+IxES+++KLuvfdevfHGG3rkkUf0zTff6O9//7v+/ve/S5JsNpuGDh2q119/XXXq1DEvPQ8PD1f37t3tXg8AALj5lCns/FZFPgvr7rvv1rJlyzRq1CiNGzdOkZGRmj59unr16mWuM3z4cOXn52vAgAHKzs5WmzZttHLlSu6xAwAAJEk2wzCM690oKytLL7/8spKTk3XixAn9vovi4mK7FXgj5ObmKiAgQDk5OTzIFECZ1Bz5paNLwG8cntjF0SXgBrjW3+8yjez07dtXR48e1ejRoxUWFiabzVbmQgEAACpSmcLOpk2btHHjxj+84gkAAMAZlOk+OxEREZecugIAAHBGZQo706dP18iRI3X48GE7lwMAAGBfZTqN9eijj+rs2bOKioqSt7e33NzcSi0/deqUXYoDAAAorzKFnenTp9u5DAAAgIpRprDTp08fe9cBAABQIcp8U8Hi4mItX75ce/fulSQ1bNhQf/rTn0o9CR0AAMDRyhR2fvzxRz3wwAP6+eefVbduXUlSUlKSIiIi9OWXXyoqKsquRQIAAJRVma7GGjJkiKKionTs2DFlZGQoIyNDR48eVWRkpIYMGWLvGgEAAMqsTCM769ev17Zt2xQUFGS2BQcHa+LEiWrdurXdigMAACivMo3seHh46MyZM5e05+Xlyd3dvdxFAQAA2EuZwk7Xrl01YMAApaamyjAMGYahbdu26dlnn9Wf/vQne9cIAABQZmUKOzNmzFBUVJSio6Pl6ekpT09PtW7dWrVr19bbb79t7xoBAADKrExzdgIDA/XZZ5/pxx9/NC89r1+/vmrXrm3X4gAAAMqrzPfZkaTatWsTcAAAgFMr02msnj17atKkSZe0T548WQ8//HC5iwIAALCXMoWdDRs26IEHHrikvXPnztqwYUO5iwIAALCXMoWdK11i7ubmptzc3HIXBQAAYC9lCjuNGjXSRx99dEn74sWL1aBBg3IXBQAAYC9lmqA8evRo9ejRQwcPHlT79u0lScnJyfrwww+1ZMkSuxYIAABQHmUKO926ddPy5cv1xhtv6JNPPpGXl5fuuusu/fvf/1ZMTIy9awQAACizMl963qVLF3Xp0sWetQAAANhdmebsSFJ2drb+8Y9/6JVXXtGpU6ckSRkZGfr555/tVhwAAEB5lWlk59tvv1VcXJwCAgJ0+PBh/eUvf1FQUJCWLl2qo0ePasGCBfauEwAAoEzKNLKTmJiovn376sCBA/L09DTbH3jgAe6zAwAAnEqZwk5aWpqeeeaZS9qrVaumzMzMchcFAABgL2UKOx4eHpe9eeD+/ftVpUqVchcFAABgL2UKO3/60580btw4FRUVSZJsNpuOHj2qESNGqGfPnnYtEAAAoDzKFHamTJmivLw8Va1aVefOnVNMTIyioqLk6+urCRMm2LtGAACAMivT1VgBAQFas2aNNm3apG+//VZ5eXlq3ry5OnToYO/6AAAAyuW6Rna2bt2qFStWmO/btGkjHx8fvfPOO3r88cc1YMAAFRQU2L1IAACAsrqusDNu3Djt2bPHfP/dd9+pf//+6tixo0aOHKkvvvhCSUlJdi8SAACgrK4r7OzcubPUqarFixerZcuWev/995WYmKgZM2bo448/tnuRAAAAZXVdYef06dMKCQkx369fv16dO3c239999906duyY/aoDAAAop+sKOyEhITp06JAkqbCwUBkZGbrnnnvM5WfOnJGbm5t9KwQAACiH6wo7DzzwgEaOHKmNGzdq1KhR8vb2Vtu2bc3l3377raKiouxeJAAAQFld16Xn48ePV48ePRQTEyNfX1/Nnz9f7u7u5vI5c+bo/vvvt3uRAAAAZXVdYee2227Thg0blJOTI19fX1WqVKnU8iVLlsjX19euBQIAAJRHmW8qeDlBQUHlKgYAAMDeyvS4CAAAgJsFYQcAAFgaYQcAAFgaYQcAAFgaYQcAAFgaYQcAAFgaYQcAAFgaYQcAAFgaYQcAAFgaYQcAAFgaYQcAAFgaYQcAAFgaYQcAAFgaYQcAAFgaYQcAAFgaYQcAAFjaTRV2Jk6cKJvNpqFDh5pt58+f16BBgxQcHCxfX1/17NlTWVlZjisSAAA4lZsm7KSlpem9997TXXfdVar9xRdf1BdffKElS5Zo/fr1+uWXX9SjRw8HVQkAAJzNTRF28vLy1KtXL73//vuqXLmy2Z6Tk6N//vOfmjp1qtq3b6/mzZtr7ty52rJli7Zt23bF/goKCpSbm1vqBQAArOmmCDuDBg1Sly5dFBcXV6o9PT1dRUVFpdrr1aun6tWra+vWrVfsLykpSQEBAeYrIiKiwmoHAACO5fRhZ/HixcrIyFBSUtIlyzIzM+Xu7q7AwMBS7SEhIcrMzLxin6NGjVJOTo75OnbsmL3LBgAATsLV0QX8kWPHjumFF17QmjVr5Onpabd+PTw85OHhYbf+AACA83LqkZ309HSdOHFCzZo1k6urq1xdXbV+/XrNmDFDrq6uCgkJUWFhobKzs0ttl5WVpdDQUMcUDQAAnIpTj+x06NBB3333Xam2p556SvXq1dOIESMUEREhNzc3JScnq2fPnpKkffv26ejRo4qOjnZEyQAAwMk4ddjx8/PTnXfeWarNx8dHwcHBZnu/fv2UmJiooKAg+fv76/nnn1d0dLTuueceR5QMAACcjFOHnWsxbdo0ubi4qGfPniooKFB8fLzeeecdR5cFAACchM0wDMPRRThabm6uAgIClJOTI39/f0eXA+AmVHPkl44uAb9xeGIXR5eAG+Baf7+deoIyAABAeRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApbk6ugAAAOzutQBHV4Dfei3HoR/v1CM7SUlJuvvuu+Xn56eqVauqe/fu2rdvX6l1zp8/r0GDBik4OFi+vr7q2bOnsrKyHFQxAABwNk4ddtavX69BgwZp27ZtWrNmjYqKinT//fcrPz/fXOfFF1/UF198oSVLlmj9+vX65Zdf1KNHDwdWDQAAnIlTn8ZauXJlqffz5s1T1apVlZ6ernbt2iknJ0f//Oc/tWjRIrVv316SNHfuXNWvX1/btm3TPffc44iyAQCAE3HqkZ3fy8m5eM4vKChIkpSenq6ioiLFxcWZ69SrV0/Vq1fX1q1br9hPQUGBcnNzS70AAIA13TRhp6SkREOHDlXr1q115513SpIyMzPl7u6uwMDAUuuGhIQoMzPzin0lJSUpICDAfEVERFRk6QAAwIFumrAzaNAg7d69W4sXLy53X6NGjVJOTo75OnbsmB0qBAAAzsip5+z8avDgwVqxYoU2bNig22+/3WwPDQ1VYWGhsrOzS43uZGVlKTQ09Ir9eXh4yMPDoyJLBgAATsKpR3YMw9DgwYO1bNkypaSkKDIystTy5s2by83NTcnJyWbbvn37dPToUUVHR9/ocgEAgBNy6pGdQYMGadGiRfrss8/k5+dnzsMJCAiQl5eXAgIC1K9fPyUmJiooKEj+/v56/vnnFR0dzZVYAABAkpOHnXfffVeSdN9995Vqnzt3rvr27StJmjZtmlxcXNSzZ08VFBQoPj5e77zzzg2uFAAAOCunDjuGYVx1HU9PT82aNUuzZs26ARUBAICbjVPP2QEAACgvwg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0V0cXYHU1R37p6BLwG4cndnF0CQCAG4yRHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmuji4AuKFeC3B0Bfi913IcXQEAi2NkBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWJplws6sWbNUs2ZNeXp6qlWrVvrmm28cXRIAAHAClgg7H330kRITE/XXv/5VGRkZaty4seLj43XixAlHlwYAABzMEmFn6tSp6t+/v5566ik1aNBAs2fPlre3t+bMmePo0gAAgIO5OrqA8iosLFR6erpGjRpltrm4uCguLk5bt2697DYFBQUqKCgw3+fk5EiScnNz7V5fScFZu/eJssu1GY4uAb9XAcedI3CsOxeOdSdTQcf5r7/bhvHHf983fdj573//q+Li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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAGwCAYAAABPSaTdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA8hElEQVR4nO3deVSU9f///8cgMCCrkLIoKomZlktqGmniguGapqX2NsPyrS1ameVWaaYZZrmkWZbvt1sfy7LUfOvJJfdcEEEtyz1cToqWCwgqIrx+f/R1fpE7DA5e3m/nzDnO63rNa57XcDk8eM3rusZmjDECAACwKDdXFwAAAFCUCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDS3F1dQHGQl5enw4cPy8/PTzabzdXlAACA62CM0enTpxUeHi43tyvP3xB2JB0+fFgRERGuLgMAABTAoUOHVK5cuStuJ+xI8vPzk/TXi+Xv7+/iagAAwPXIyMhQRESE4/f4lRB2JMdHV/7+/oQdAABuMddagsICZQAAYGmEHQAAYGmEHQAAYGms2QEAwIlyc3OVk5Pj6jIswcPDQyVKlCj0OIQdAACcwBijtLQ0nTp1ytWlWEpgYKBCQ0MLdR08wg4AAE5wMeiUKVNGJUuW5CK1hWSM0ZkzZ3Ts2DFJUlhYWIHHIuwAAFBIubm5jqATHBzs6nIsw9vbW5J07NgxlSlTpsAfabFAGQCAQrq4RqdkyZIursR6Lr6mhVkHRdgBAMBJ+OjK+ZzxmhJ2AACApRF2AACApbFAGQCAIlRx0KKb9lz7R7W+ac9VWN27d9epU6c0f/78In8uZnYAALiNde/eXTabTTabTR4eHoqMjNSAAQN07tw5V5fmNMzsAABwm2vRooWmTZumnJwcJScnKz4+XjabTe+9956rS3MKZnYAALjN2e12hYaGKiIiQu3bt1dsbKyWLVsmScrLy1NCQoIiIyPl7e2tmjVr6ptvvnE8Njc3Vz169HBsr1Klij788MN84+fm5qpfv34KDAxUcHCwBgwYIGPMTds/ZnYAi7uZ6wWKq1tpHQPgatu3b9f69etVoUIFSVJCQoL+7//+T5MnT1blypW1Zs0aPfnkkypdurRiYmKUl5encuXKac6cOQoODtb69evVq1cvhYWFqVOnTpKkMWPGaPr06Zo6daqqVq2qMWPGaN68eWratOlN2SfCDgAAt7mFCxfK19dXFy5cUHZ2ttzc3PTRRx8pOztb7777rn744QdFR0dLku688079+OOP+vTTTxUTEyMPDw+9/fbbjrEiIyO1YcMGff31146wM378eA0ePFgdOnSQJE2ePFlLliy5aftH2AEA4DbXpEkTffLJJ8rKytK4cePk7u6ujh076pdfftGZM2fUvHnzfP3Pnz+v++67z3F/0qRJmjp1qg4ePKizZ8/q/PnzqlWrliQpPT1dR44cUf369R393d3dVbdu3Zv2URZhBwCA25yPj4+ioqIkSVOnTlXNmjX13//+V/fee68kadGiRSpbtmy+x9jtdknS7Nmz9dprr2nMmDGKjo6Wn5+f3n//fSUmJt7cnbgKwg4AAHBwc3PT66+/rn79+mn37t2y2+06ePCgYmJiLtt/3bp1evDBB/XCCy842vbt2+f4d0BAgMLCwpSYmKhGjRpJki5cuKDk5GTVrl27aHfm/yHsAACAfB5//HH1799fn376qV577TW98sorysvLU8OGDZWenq5169bJ399f8fHxqly5smbOnKklS5YoMjJSn3/+uZKSkhQZGekY7+WXX9aoUaNUuXJl3X333Ro7dqxOnTp10/aHsAMAQBG6Fc8GdHd3V58+fTR69GilpqaqdOnSSkhI0G+//abAwEDVrl1br7/+uiTp2Wef1ZYtW9S5c2fZbDY98cQTeuGFF/T99987xnv11Vd15MgRxcfHy83NTc8884weffRRpaen35T9sZmbeaJ7MZWRkaGAgAClp6fL39/f1eUATsWp57fmLxvcWs6dO6fU1FRFRkbKy8vL1eVYytVe2+v9/c1FBQEAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKW5NOysWbNGbdu2VXh4uGw2m+bPn+/YlpOTo4EDB6p69ery8fFReHi4nnrqKR0+fDjfGCdOnFDXrl3l7++vwMBA9ejRQ5mZmTd5TwAAQHHl0rCTlZWlmjVratKkSZdsO3PmjFJSUjRkyBClpKRo7ty52rVrlx555JF8/bp27apffvlFy5Yt08KFC7VmzRr16tXrZu0CAAAo5lx6BeWWLVuqZcuWl90WEBCgZcuW5Wv76KOPVK9ePR08eFDly5fXjh07tHjxYiUlJalu3bqSpIkTJ6pVq1b64IMPFB4eXuT7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/HO+tqefflp33323Bg4cqIiICHl4eGj58uXq2LGjJGnXrl06ePCgoqOjXVEyAAAoZop12PHz89O9996br83Hx0fBwcGO9h49eqhfv34KCgqSv7+/XnzxRUVHR+uBBx5wRckAAKCYKdZh53qMGzdObm5u6tixo7KzsxUXF6ePP/7Y1WUBAIBiwmaMMa4uwtUyMjIUEBCg9PR0+fv7u7ocwKkqDlrk6hJcbv+o1q4uAUARuN7f38V6gTIAAEBhEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClubu6AAAocsMCXF2Baw1Ld3UFgEsxswMAACyNsAMAACyNsAMAACyNsAMAACyNsAMAACyNsAMAACyNsAMAACyNsAMAACyNsAMAACyNsAMAACyNsAMAACyNsAMAACyNsAMAACyNsAMAACytWIedhIQE3X///fLz81OZMmXUvn177dq1K1+fc+fOqXfv3goODpavr686duyoo0ePuqhiAABQ3BTrsLN69Wr17t1bGzdu1LJly5STk6OHH35YWVlZjj6vvPKK/ve//2nOnDlavXq1Dh8+rA4dOriwagAAUJy4u7qAq1m8eHG++9OnT1eZMmWUnJysRo0aKT09Xf/973/1xRdfqGnTppKkadOmqWrVqtq4caMeeOABV5QNAACKkWI9s/NP6enpkqSgoCBJUnJysnJychQbG+voc/fdd6t8+fLasGHDFcfJzs5WRkZGvhsAALCmWybs5OXlqW/fvmrQoIHuvfdeSVJaWpo8PT0VGBiYr29ISIjS0tKuOFZCQoICAgIct4iIiKIsHQAAuNAtE3Z69+6t7du3a/bs2YUea/DgwUpPT3fcDh065IQKAQBAcVSs1+xc1KdPHy1cuFBr1qxRuXLlHO2hoaE6f/68Tp06lW925+jRowoNDb3ieHa7XXa7vShLBgAAxUSxntkxxqhPnz6aN2+eVqxYocjIyHzb69SpIw8PDy1fvtzRtmvXLh08eFDR0dE3u1wAAFAMFeuZnd69e+uLL77Qd999Jz8/P8c6nICAAHl7eysgIEA9evRQv379FBQUJH9/f7344ouKjo7mTCwAACCpmIedTz75RJLUuHHjfO3Tpk1T9+7dJUnjxo2Tm5ubOnbsqOzsbMXFxenjjz++yZUCAIDiqliHHWPMNft4eXlp0qRJmjRp0k2oCAAA3GqK9ZodAACAwiLsAAAASyPsAAAASyvWa3asoOKgRa4uweX2j2rt6hIAALcxZnYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClubu6ANwGhgW4ugLXGpbu6goA4LbGzA4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0wg4AALA0Tj0HAKCocQkOlz49MzsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSLBN2Jk2apIoVK8rLy0v169fXpk2bXF0SAAAoBiwRdr766iv169dPb731llJSUlSzZk3FxcXp2LFjri4NAAC4mCUuKjh27Fj17NlTTz/9tCRp8uTJWrRokaZOnapBgwa5uDoAuL1VHLTI1SW43H4vV1dwe7vlw8758+eVnJyswYMHO9rc3NwUGxurDRs2XPYx2dnZys7OdtxPT//ryo4ZGRlOry8v+4zTx7zVZNiMq0twrSI4rm4ExyDHIMeg63EMFs0xePH3tjFXf31v+bDz559/Kjc3VyEhIfnaQ0JCtHPnzss+JiEhQW+//fYl7REREUVS4+3uNr9IujTqtn8FXO62/wlwDLrcbf8TKOJj8PTp0woIuPJz3PJhpyAGDx6sfv36Oe7n5eXpxIkTCg4Ols1mc2Fl1pORkaGIiAgdOnRI/v7+ri4HtyGOQbgax2DRMcbo9OnTCg8Pv2q/Wz7s3HHHHSpRooSOHj2ar/3o0aMKDQ297GPsdrvsdnu+tsDAwKIqEZL8/f35Tw6X4hiEq3EMFo2rzehcdMufjeXp6ak6depo+fLljra8vDwtX75c0dHRLqwMAAAUB7f8zI4k9evXT/Hx8apbt67q1aun8ePHKysry3F2FgAAuH1ZIux07txZf/zxh4YOHaq0tDTVqlVLixcvvmTRMm4+u92ut95665KPDYGbhWMQrsYx6Ho2c63ztQAAAG5ht/yaHQAAgKsh7AAAAEsj7AAAAEsj7NxGbDab5s+fL0nav3+/bDabtm7del2P7d69u9q3b19ktQFWVrFiRY0fP97VZQC3LcKORaSlpenFF1/UnXfeKbvdroiICLVt2zbf9Yf+LiIiQkeOHNG9995bZDX9PVz9HcHp9tC9e3fZbDbZbDZ5enoqKipKw4cP14ULFwo17qpVq2Sz2XTq1CnnFArL+eOPP/T888+rfPnystvtCg0NVVxcnNatW+fo8+yzz6pSpUry9vZW6dKl1a5duyt+xdBFjRs3dhzTXl5eqlatmj7++OOi3h2nuZ1DN2HHAvbv3686depoxYoVev/99/Xzzz9r8eLFatKkiXr37n3Zx5QoUUKhoaFyd7fE1QdQTLVo0UJHjhzRnj179Oqrr2rYsGF6//33XV2Ww/nz511dAopAx44dtWXLFs2YMUO7d+/WggUL1LhxYx0/ftzRp06dOpo2bZp27NihJUuWyBijhx9+WLm5uVcdu2fPnjpy5Ih+/fVXderUSb1799aXX35ZoDo5/m4ig1tey5YtTdmyZU1mZuYl206ePOn4tyQzb948Y4wxqampRpLZsmWLY/v27dtN69atjZ+fn/H19TUNGzY0e/fuNcYYEx8fb9q1a+fou2nTJnPHHXeYUaNGXbGuvz/f3/1zrHPnzpkXX3zRlC5d2tjtdtOgQQOzadMmx/Zp06aZgICAfGPMmzfP/P3w3bp1q2ncuLHx9fU1fn5+pnbt2iYpKcmxfe3ataZhw4bGy8vLlCtXzrz44ouXfb3gPP/8ORtjTPPmzc0DDzxgTpw4Ybp162YCAwONt7e3adGihdm9e7ej3/79+02bNm1MYGCgKVmypKlWrZpZtGiR47j9+y0+Pt4YY0xGRob517/+ZUqWLGlCQ0PN2LFjTUxMjHn55Zcd41aoUMEMHz7cdOvWzfj5+Tkee63jY9KkSSYqKsrY7XZTpkwZ07FjR8e2zMxM061bN+Pj42NCQ0PNBx98cNnnHTdunLNeWlzFyZMnjSSzatWqG3rctm3bjCTHe97l/PPnaowxlStXNl26dDHGGDNgwABTuXJl4+3tbSIjI82bb75pzp8/7+j71ltvmZo1a5opU6aYihUrGpvNZowxZvfu3eahhx4ydrvdVK1a1SxdujTf++fKlSuNpHzv51u2bDGSTGpqqqPtasdxTEzMJf93bifM7NziTpw4ocWLF6t3797y8fG5ZPv1fufX77//rkaNGslut2vFihVKTk7WM888c9mPHFasWKHmzZtr5MiRGjhwYGF3QQMGDNC3336rGTNmKCUlRVFRUYqLi9OJEyeue4yuXbuqXLlySkpKUnJysgYNGiQPDw9J0r59+9SiRQt17NhRP/30k7766iv9+OOP6tOnT6Frx43x9vbW+fPn1b17d23evFkLFizQhg0bZIxRq1atlJOTI0nq3bu3srOztWbNGv38889677335Ovrq4iICH377beSpF27dunIkSP68MMPJf11JfV169ZpwYIFWrZsmdauXauUlJRLavjggw9Us2ZNbdmyRUOGDLnm8bF582a99NJLGj58uHbt2qXFixerUaNGjvH69++v1atX67vvvtPSpUu1atWqyz4vbg5fX1/5+vpq/vz5ys7Ovq7HZGVladq0aYqMjFRERMQNPd/FY1qS/Pz8NH36dP3666/68MMPNWXKFI0bNy5f/7179+rbb7/V3LlztXXrVuXl5alDhw7y9PRUYmKiJk+eXKD31Wsdx3PnzlW5cuU0fPhwHTlyREeOHLnh57iluTptoXASExONJDN37txr9tVVZnYGDx5sIiMj8/0V8ncX/0qfO3eu8fX1NbNnz76u5/Py8jI+Pj75bu7u7o6/+DMzM42Hh4eZNWuW43Hnz5834eHhZvTo0caY65vZ8fPzM9OnT79sHT169DC9evXK17Z27Vrj5uZmzp49e839QMH8fWYnLy/PLFu2zNjtdtO+fXsjyaxbt87R988//zTe3t7m66+/NsYYU716dTNs2LDLjnu5v3IzMjKMh4eHmTNnjqPt1KlTpmTJkpfMsLRv3z7feNc6Pr799lvj7+9vMjIyLqnl9OnTxtPT01G3McYcP37ceHt7M7PjQt98840pVaqU8fLyMg8++KAZPHiw2bZt2yX9Jk2aZHx8fIwkU6VKlavO6hiTf2bnwoUL5vPPPzeSzEcffXTZ/u+//76pU6eO4/5bb71lPDw8zLFjxxxtS5YsMe7u7ub33393tH3//fc3PLNzPe9zt/NxyMzOLc446QLYW7du1UMPPeSYDbmcxMREPf744/r888/VuXPn6xp33Lhx2rp1a77bI4884ti+b98+5eTkqEGDBo42Dw8P1atXTzt27Lju+vv166d///vfio2N1ahRo7Rv3z7Htm3btmn69OmOv/h8fX0VFxenvLw8paamXvdz4MYtXLhQvr6+8vLyUsuWLdW5c2d1795d7u7uql+/vqNfcHCwqlSp4viZv/TSS3rnnXfUoEEDvfXWW/rpp5+u+jy//fabcnJyVK9ePUdbQECAqlSpcknfunXr5rt/reOjefPmqlChgu68805169ZNs2bN0pkzZyT9dfyeP38+374EBQVd9nlx83Ts2FGHDx/WggUL1KJFC61atUq1a9fW9OnT8/Xr2rWrtmzZotWrV+uuu+5Sp06ddO7cuauO/fHHH8vX11fe3t7q2bOnXnnlFT3//POSpK+++koNGjRQaGiofH199eabb+rgwYP5Hl+hQgWVLl3acX/Hjh2KiIhQeHi4o60gX2LN+9zVEXZucZUrV5bNZrvmWQTX4u3tfc0+lSpV0t13362pU6c6Pm64ltDQUEVFReW7+fn53VBtbm5ul4S6fz7/sGHD9Msvv6h169ZasWKFqlWrpnnz5kmSMjMz9eyzz+YLXNu2bdOePXtUqVKlG6oFN6ZJkybaunWr9uzZo7Nnz2rGjBmy2WzXfNy///1v/fbbb+rWrZt+/vln1a1bVxMnTnRKTf/8uPdax4efn59SUlL05ZdfKiwsTEOHDlXNmjU5G6yY8/LyUvPmzTVkyBCtX79e3bt311tvvZWvT0BAgCpXrqxGjRrpm2++0c6dOx3vG1fStWtXbd26VampqcrKytLYsWPl5uamDRs2qGvXrmrVqpUWLlyoLVu26I033rhkEfLllhtci5vbX7+q//4++M/3QN7nro6wc4sLCgpSXFycJk2apKysrEu2X+8bco0aNbR27dqrhpg77rhDK1as0N69e9WpU6frDjxXU6lSJXl6euY7JTQnJ0dJSUmqVq2aJKl06dI6ffp0vv273PWB7rrrLr3yyitaunSpOnTooGnTpkmSateurV9//fWS0BUVFSVPT89C7wOuzMfHR1FRUSpfvrzjzL+qVavqwoULSkxMdPQ7fvy4du3a5fiZS39dHuG5557T3Llz9eqrr2rKlCmS5PiZ/f2smTvvvFMeHh5KSkpytKWnp2v37t3XrPF6jg93d3fFxsZq9OjR+umnn7R//36tWLFClSpVkoeHR759OXny5HU9L26uatWqXfY98iJjjIwx11znExAQoKioKJUtW9YRQiRp/fr1qlChgt544w3VrVtXlStX1oEDB65ZV9WqVXXo0KF8a2g2btyYr8/FmaC/9/nne+D1HMeenp7XPNvMqgg7FjBp0iTl5uaqXr16+vbbb7Vnzx7t2LFDEyZMuO7p0D59+igjI0NdunTR5s2btWfPHn3++efatWtXvn5lypTRihUrtHPnTj3xxBOFvmaKj4+Pnn/+efXv31+LFy/Wr7/+qp49e+rMmTPq0aOHJKl+/foqWbKkXn/9de3bt09ffPFFvunos2fPqk+fPlq1apUOHDigdevWKSkpSVWrVpUkDRw4UOvXr1efPn0cswzfffcdC5RdpHLlymrXrp169uypH3/8Udu2bdOTTz6psmXLql27dpKkvn37asmSJUpNTVVKSopWrlzp+HlWqFBBNptNCxcu1B9//KHMzEz5+fkpPj5e/fv318qVK/XLL7+oR48ecnNzu+ZM0rWOj4ULF2rChAnaunWrDhw4oJkzZyovL09VqlSRr6+vevToof79+2vFihXavn27unfvnu+XIG6u48ePq2nTpvq///s//fTTT0pNTdWcOXM0evRox/H122+/KSEhQcnJyTp48KDWr1+vxx9/XN7e3mrVqlWBnrdy5co6ePCgZs+erX379mnChAnXnCWSpNjYWN11112Kj4/Xtm3btHbtWr3xxhv5+kRFRSkiIkLDhg3Tnj17tGjRIo0ZMyZfn+t5n6tYsaLWrFmj33//XX/++WeB9vOW5dIVQ3Caw4cPm969e5sKFSoYT09PU7ZsWfPII4+YlStXOvroGqeeb9u2zTz88MOmZMmSxs/Pzzz00ENm3759xphLTyM+fPiwueuuu0ynTp3MhQsXLlvT35/v7/451tmzZ82LL75o7rjjjsueem7MXwuSo6KijLe3t2nTpo357LPPHAuUs7OzTZcuXUxERITx9PQ04eHhpk+fPvkWH2/atMk0b97c+Pr6Gh8fH1OjRg0zcuTI63hlUVCXO/X8oounngcEBBhvb28TFxeX79TzPn36mEqVKhm73W5Kly5tunXrZv7880/H9uHDh5vQ0FBjs9mueup5vXr1zKBBgxyPu9ICzasdH2vXrjUxMTGmVKlSxtvb29SoUcN89dVXjseePn3aPPnkk6ZkyZImJCTEjB49mlPPXejcuXNm0KBBpnbt2iYgIMCULFnSVKlSxbz55pvmzJkzxhhjfv/9d9OyZUtTpkwZ4+HhYcqVK2f+9a9/mZ07d1517Mudev53/fv3N8HBwcbX19d07tzZjBs3Lt/JFRdPPf+nXbt2mYYNGxpPT09z1113mcWLF1/y/vnjjz+a6tWrGy8vL/PQQw+ZOXPmXHLq+bXe5zZs2GBq1Khh7Hb7bXfquc0YJ61wBYBiJCsrS2XLltWYMWMcs4Q3S+PGjVWrVq3b9mq1KDybzaZ58+ZxtXkn4fK5ACxhy5Yt2rlzp+rVq6f09HQNHz5ckhwfXQC4fRF2AFjGBx98oF27dsnT01N16tTR2rVrdccdd7i6LAAuxsdYAADA0jhlAAAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphB4DlrFq1SjabjS/rBCCJsAOgCHTv3l02m002m00eHh4KCQlR8+bNNXXqVOXl5V33ONOnT1dgYGDRFQrgtkDYAVAkWrRooSNHjmj//v36/vvv1aRJE7388stq06ZNob9AFgBuBGEHQJGw2+0KDQ1V2bJlVbt2bb3++uv67rvv9P333zu+tX7s2LGqXr26fHx8FBERoRdeeEGZmZmS/voo6umnn1Z6erpjlmjYsGGSpM8//1x169aVn5+fQkND9a9//UvHjh27pIZ169apRo0a8vLy0gMPPKDt27c7th0/flxPPPGEypYtq5IlS6p69er68ssv8z3+m2++UfXq1eXt7a3g4GDFxsYqKyvLsf0///mPqlatKi8vL9199936+OOPHdvOnz+vPn36KCwsTF5eXqpQoYISEhKc9fICuAGEHQA3TdOmTVWzZk3NnTtXkuTm5qYJEybol19+0YwZM7RixQoNGDBAkvTggw9q/Pjx8vf315EjR3TkyBG99tprkqScnByNGDFC27Zt0/z587V//3517979kufr37+/xowZo6SkJJUuXVpt27ZVTk6OJOncuXOqU6eOFi1apO3bt6tXr17q1q2bNm3aJEk6cuSInnjiCT3zzDPasWOHVq1apQ4dOujiRednzZqloUOHauTIkdqxY4feffddDRkyRDNmzJAkTZgwQQsWLNDXX3+tXbt2adasWapYsWJRvrwArsSl37kOwJLi4+NNu3btLrutc+fOpmrVqpfdNmfOHBMcHOy4P23aNBMQEHDN50tKSjKSzOnTp40xxqxcudJIMrNnz3b0OX78uPH29jZfffXVFcdp3bq1efXVV40xxiQnJxtJZv/+/ZftW6lSJfPFF1/kaxsxYoSJjo42xhjz4osvmqZNm5q8vLxr1g+gaDGzA+CmMsbIZrNJkn744Qc1a9ZMZcuWlZ+fn7p166bjx4/rzJkzVx0jOTlZbdu2Vfny5eXn56eYmBhJ0sGDB/P1i46Odvw7KChIVapU0Y4dOyRJubm5GjFihKpXr66goCD5+vpqyZIljjFq1qypZs2aqXr16nr88cc1ZcoUnTx5UpKUlZWlffv2qUePHvL19XXc3nnnHe3bt0/SX4u0t27dqipVquill17S0qVLnfDqASgIwg6Am2rHjh2KjIzU/v371aZNG9WoUUPffvutkpOTNWnSJEl/rXe5kqysLMXFxcnf31+zZs1SUlKS5s2bd83H/dP777+vDz/8UAMHDtTKlSu1detWxcXFOcYoUaKEli1bpu+//17VqlXTxIkTVaVKFaWmpjrWFU2ZMkVbt2513LZv366NGzdKkmrXrq3U1FSNGDFCZ8+eVadOnfTYY48V6DUDUDjuri4AwO1jxYoV+vnnn/XKK68oOTlZeXl5GjNmjNzc/vq76+uvv87X39PTU7m5ufnadu7cqePHj2vUqFGKiIiQJG3evPmyz7dx40aVL19eknTy5Ent3r1bVatWlfTX4uV27drpySeflCTl5eVp9+7dqlatmuPxNptNDRo0UIMGDTR06FBVqFBB8+bNU79+/RQeHq7ffvtNXbt2veL++vv7q3PnzurcubMee+wxtWjRQidOnFBQUNCNvGwAComwA6BIZGdnKy0tTbm5uTp69KgWL16shIQEtWnTRk899ZS2b9+unJwcTZw4UW3bttW6des0efLkfGNUrFhRmZmZWr58uWrWrKmSJUuqfPny8vT01MSJE/Xcc89p+/btGjFixGVrGD58uIKDgxUSEqI33nhDd9xxh9q3by9Jqly5sr755hutX79epUqV0tixY3X06FFH2ElMTNTy5cv18MMPq0yZMkpMTNQff/zhCEtvv/22XnrpJQUEBKhFixbKzs7W5s2bdfLkSfXr109jx45VWFiY7rvvPrm5uWnOnDkKDQ3lukGAK7h60RAA64mPjzeSjCTj7u5uSpcubWJjY83UqVNNbm6uo9/YsWNNWFiY8fb2NnFxcWbmzJlGkjl58qSjz3PPPWeCg4ONJPPWW28ZY4z54osvTMWKFY3dbjfR0dFmwYIFRpLZsmWLMeb/X6D8v//9z9xzzz3G09PT1KtXz2zbts0x7vHjx027du2Mr6+vKVOmjHnzzTfNU0895VhY/euvv5q4uDhTunRpY7fbzV133WUmTpyYbz9nzZplatWqZTw9PU2pUqVMo0aNzNy5c40xxnz22WemVq1axsfHx/j7+5tmzZqZlJQU57/YAK7JZsz/O48SAADAgligDAAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALO3/AwdsNPRjLMSCAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -1272,13 +1436,21 @@ } ], "source": [ - "x = np.arange(2) # change here\n", + "x = np.arange(3) # change here\n", "width = 0.40\n", - "y1 = [cHouse_read_execution_time, psql_read_execution_time] # change here\n", - "y2 = [cHouse_write_execution_time, psql_write_execution_time] # change here\n", + "y1 = [\n", + " cHouse_read_execution_time,\n", + " psql_read_execution_time,\n", + " s3_read_execution_time,\n", + "] # change here\n", + "y2 = [\n", + " cHouse_write_execution_time,\n", + " psql_write_execution_time,\n", + " s3_write_execution_time,\n", + "] # change here\n", "plt.bar(x - 0.2, y1, width)\n", "plt.bar(x + 0.2, y2, width)\n", - "plt.xticks(x, [\"Click House\", \"Postgresql\"])\n", + "plt.xticks(x, [\"Click House\", \"Postgresql\", \"S3 Parquet\"])\n", "plt.xlabel(\"Databases\")\n", "plt.ylabel(\"Seconds\")\n", "plt.legend([\"Read\", \"Write\"]) # ver\n",