{ "cells": [ { "cell_type": "markdown", "id": "a246d497", "metadata": {}, "source": [ "# Demo on TensorCircuit SDK for Tencent Quantum Cloud\n", "\n", "This notebook is not served as a full user manual for TC SDK for QCLOUD. Instead,it only highlighted a limited subset of features that TC enabled, mainly for live demo and tutorials.\n", "\n", "## Import and Setup" ] }, { "cell_type": "code", "execution_count": 6, "id": "ff5cc3c8", "metadata": {}, "outputs": [], "source": [ "import tensorcircuit as tc" ] }, { "cell_type": "markdown", "id": "e66850fe", "metadata": {}, "source": [ "The following two line are by default and no need to run explicitly, \n", "unless you activate tencent cloud service for the first time when you have to set up the token copied from the web" ] }, { "cell_type": "code", "execution_count": 2, "id": "4352cc25", "metadata": {}, "outputs": [], "source": [ "# tc.cloud.apis.set_token(\"123456isnotgoodpassword\")\n", "# tc.cloud.apis.set_provider(\"tencent\")" ] }, { "cell_type": "markdown", "id": "2aa760be", "metadata": {}, "source": [ "## Devices and properties" ] }, { "cell_type": "markdown", "id": "735c2d63", "metadata": {}, "source": [ "**Provider agnostic**: The SDK architecture is designed to be provider agnostic so that we have the potential to support multiple QPU providers in the future. And from the user's pespective, no code will change to deploy the quantum program on different QPU providers. We also support some third party and local providers now internally, and the list will be expanding...\n" ] }, { "cell_type": "code", "execution_count": 7, "id": "72106e97", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[tencent, local]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tc.cloud.apis.list_providers()" ] }, { "cell_type": "code", "execution_count": 8, "id": "e35e1518", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[tencent::simulator:tc,\n", " tencent::simulator:aer,\n", " tencent::simulator:tcn1,\n", " tencent::tianshu_s1,\n", " tencent::tianxuan_s1]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tc.cloud.apis.list_devices()" ] }, { "cell_type": "markdown", "id": "4f5ce14e", "metadata": {}, "source": [ "list only devices online that are currently available with `state` argument" ] }, { "cell_type": "code", "execution_count": 9, "id": "b8456acc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[tencent::simulator:tc,\n", " tencent::simulator:aer,\n", " tencent::tianshu_s1,\n", " tencent::tianxuan_s1]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tc.cloud.apis.list_devices(\"tencent\", state=\"on\")" ] }, { "cell_type": "code", "execution_count": 10, "id": "7ced9cc6", "metadata": {}, "outputs": [], "source": [ "device_name = \"tianxuan_s1\" # 9 qubits chip\n", "\n", "# get the device object\n", "\n", "d = tc.cloud.apis.get_device(device_name)" ] }, { "cell_type": "code", "execution_count": 46, "id": "0e0633c5", "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAArIAAAKcCAYAAAAU31nGAAABRmlDQ1BJQ0MgUHJvZmlsZQAAKJFjYGASSSwoyGFhYGDIzSspCnJ3UoiIjFJgf87AyiDGwMWgwsCdmFxc4BgQ4ANUwgCjUcG3awyMIPqyLsiszDMnZZIO3o9wfTN/Xvc/ISlM9SiAKyW1OBlI/wHitOSCohIGBsYUIFu5vKQAxO4AskWKgI4CsueA2OkQ9gYQOwnCPgJWExLkDGTfALIFkjMSgWYwvgCydZKQxNOR2FB7QYDHxdXHRyHAyNzQNJCAc0kHJakVJSDaOb+gsigzPaNEwREYSqkKnnnJejoKRgZGxgwMoDCHqP58AxyWjGIcCLECMQYGSxcGBubFCLEkYLhuB7pfkhMhprKcgYE/goFhW0NBYlEi3AGM31iK04yNIGzu7QwMrNP+//8czsDArsnA8Pf6//+/t////3cZ0PxbDAwHvgEAzdZe7lH6upkAAACKZVhJZk1NACoAAAAIAAQBGgAFAAAAAQAAAD4BGwAFAAAAAQAAAEYBKAADAAAAAQACAACHaQAEAAAAAQAAAE4AAAAAAAAAkAAAAAEAAACQAAAAAQADkoYABwAAABIAAAB4oAIABAAAAAEAAAKyoAMABAAAAAEAAAKcAAAAAEFTQ0lJAAAAU2NyZWVuc2hvdHnEINgAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHWaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjY2ODwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj42OTA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpVc2VyQ29tbWVudD5TY3JlZW5zaG90PC9leGlmOlVzZXJDb21tZW50PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KWGllcQAAABxpRE9UAAAAAgAAAAAAAAFOAAAAKAAAAU4AAAFOAABCIgofdtMAAEAASURBVHgB7J19sF3VeZ+XTJAtAQofMgmSwQ4XDG48mCRqOwV0m/whaVq704/UyWjSOpkpJBjy0fzTphPRdoqmM2knbToTyyRQe5I4Vesk07it00jKR3tlaJqoDti1g2vEGIwgxiBhARIfBvW+11z57qN9ztof73rXu9Z59A9373P2et/9PGuv9ePq3Kt1p0+/fCbwBwIQgAAEIAABCEAAAoURWEeQLcwY7UIAAhCAAAQgAAEIrBAgyDIRIAABCEAAAhCAAASKJECQLVIbTUMAAhCAAAQgAAEIEGSZAxCAAAQgAAEIQAACRRIgyBapjaYhAAEIQAACEIAABAiyzAEIQAACEIAABCAAgSIJEGSL1EbTEIAABCAAAQhAAAIEWeYABCAAAQhAAAIQgECRBAiyRWqjaQhAAAIQgAAEIAABgixzAAIQgAAEIAABCECgSAIE2SK10TQEIAABCEAAAhCAAEGWOQABCEAAAhCAAAQgUCQBgmyR2mgaAhCAAAQgAAEIQIAgyxyAAAQgAAEIQAACECiSAEG2SG00DQEIQAACEIAABCBAkGUOQAACEIAABCAAAQgUSYAgW6Q2moYABCAAAQhAAAIQIMgyByAAAQhAAAIQgAAEiiRAkC1SG01DAAIQgAAEIAABCBBkmQMQgAAEIAABCEAAAkUSIMgWqY2mIQABCEAAAhCAAAQIsswBCEAAAhCAAAQgAIEiCRBki9RG0xCAAAQgAAEIQAACBFnmAAQgAAEIQAACEIBAkQQIskVqo2kIQAACEIAABCAAAYIscwACEIAABCAAAQhAoEgCBNkitdE0BCAAAQhAAAIQgABBljkAAQhAAAIQgAAEIFAkAYJskdpoGgIQgAAEIAABCECAIMscgAAEIAABCEAAAhAokgBBtkhtNA0BCEAAAhCAAAQgQJBlDkAAAhCAAAQgAAEIFEmAIFukNpqGAAQgAAEIQAACECDIMgcgAAEIQAACEIAABIokQJAtUhtNQwACEIAABCAAAQgQZJkDEIAABCAAAQhAAAJFEiDIFqmNpiEAAQhAAAIQgAAECLLMAQhAAAIQgAAEIACBIgkQZIvURtMQgAAEIAABCEAAAgRZ5gAEIAABCEAAAhCAQJEECLJFaqNpCEAAAhCAAAQgAAGCLHMAAhCAAAQgAAEIQKBIAgTZIrXRNAQgAAEIQAACEIAAQZY5AAEIQAACEIAABCBQJAGCbJHaaBoCEIAABCAAAQhAgCDLHIAABCAAAQhAAAIQKJIAQbZIbTQNAQhAAAIQgAAEIECQZQ5AAAIQgAAEIAABCBRJgCBbpDaahgAEIAABCEAAAhAgyDIHIAABCEAAAhCAAASKJECQLVIbTUMAAhCAAAQgAAEIEGSZAxCAAAQgAAEIQAACRRIgyBapjaYhAAEIQAACEIAABAiyzAEIQAACEIAABCAAgSIJEGSL1EbTEIAABCAAAQhAAAIEWeYABCAAAQhAAAIQgECRBAiyRWqjaQhAAAIQgAAEIAABgixzAAIQgAAEIAABCECgSAIE2SK10TQEIAABCEAAAhCAAEGWOQABCEAAAhCAAAQgUCQBgmyR2mgaAhCAAAQgAAEIQIAgyxyAAAQgAAEIQAACECiSAEHWSNsTTzweLrjgQqNqlLEk8OKLL6yUw68ldbta+LVjnaMSfnNQt6uJXzvWOSqJX4KsEfkTJ46HSy651KgaZSwJiFv5g19L6na18GvHOkcl/OagblcTv3asc1QSvwRZI/ICm6BjBNu4DAulMXDjcvg1Bm5cDr/GwI3L4dcYuHE58UuQNYIusAmyRrCNy7BQGgM3LodfY+DG5fBrDNy4HH6NgRuXE78EWSPoApsgawTbuAwLpTFw43L4NQZuXA6/xsCNy+HXGLhxOfFLkDWCLrAJskawjcuwUBoDNy6HX2PgxuXwawzcuBx+jYEblxO/BFkj6AKbIGsE27gMC6UxcONy+DUGblwOv8bAjcvh1xi4cTnxS5A1gi6wCbJGsI3LsFAaAzcuh19j4Mbl8GsM3Lgcfo2BG5cTvwRZI+gCmyBrBNu4DAulMXDjcvg1Bm5cDr/GwI3L4dcYuHE58UuQNYIusAmyRrCNy7BQGgM3LodfY+DG5fBrDNy4HH6NgRuXE78EWSPoApsgawTbuAwLpTFw43L4NQZuXA6/xsCNy+HXGLhxOfFLkDWCLrAJskawjcuwUBoDNy6HX2PgxuXwawzcuBx+jYEblxO/BFkj6AKbIGsE27gMC6UxcONy+DUGblwOv8bAjcvh1xi4cTnxS5A1gi6wCbJGsI3LsFAaAzcuh19j4Mbl8GsM3Lgcfo2BG5cTvwRZI+gCmyBrBNu4DAulMXDjcvg1Bm5cDr/GwI3L4dcYuHE58UuQNYIusAmyRrCNy7BQGgM3LodfY+DG5fBrDNy4HH6NgRuXE78EWSPoApsgawTbuAwLpTFw43L4NQZuXA6/xsCNy+HXGLhxOfFLkDWCLrAJskawjcuwUBoDNy6HX2PgxuXwawzcuBx+jYEblxO/BFkj6AKbIGsE27gMC6UxcONy+DUGblwOv8bAjcvh1xi4cTnxS5A1gi6wSw+ye/feHQ4fXlIltn37Ytiz5y7VMa0HY6G0Jm5bD7+2vK2r4deauG29Wvyy/7bPG/FLkG1no35WYJceZHft2hGWlpbCpoVtKnxOHj0SFhcXw4EDh1TGyzVILQtlLn7e6+LXu6Fx/eF3HD/vV9fil/23faaJX4JsOxv1swK7hiD74LFT4frb71Ph8/A9t4Ybt24kyKrQZJBUBGrZCFPxKX1c/JZucHb/tfiVIMv+e65r8UuQPZdLkjMCmyDbREuQbfLgyCeBWjZCn3Tzd4Xf/A5SdlCLX4Js+ywRvwTZdjbqZwU2QbaJlSDb5MGRTwK1bIQ+6ebvCr/5HaTsoBa/BNn2WSJ+CbLtbNTPCmyCbBMrQbbJgyOfBGrZCH3Szd8VfvM7SNlBLX4Jsu2zRPwSZNvZqJ8V2ATZJlaCbJMHRz4J1LIR+qSbvyv85neQsoNa/BJk22eJ+CXItrNRPyuwCbJNrATZJg+OfBKoZSP0STd/V/jN7yBlB7X4Jci2zxLxS5BtZ6N+VmATZJtYCbJNHhz5JFDLRuiTbv6u8JvfQcoOavFLkG2fJeKXINvORv2swCbINrESZJs8OPJJoJaN0Cfd/F3hN7+DlB3U4pcg2z5LxC9Btp2N+lmBTZBtYiXINnlw5JNALRuhT7r5u8JvfgcpO6jFL0G2fZaIX4JsOxv1swKbINvESpBt8uDIJ4FaNkKfdPN3hd/8DlJ2UItfgmz7LBG/BNl2NupnBTZBtomVINvkwZFPArVshD7p5u8Kv/kdpOygFr8E2fZZIn4Jsu1s1M8KbIJsEytBtsmDI58EatkIfdLN3xV+8ztI2UEtfgmy7bNE/BJk29monxXYBNkmVoJskwdHPgnUshH6pJu/K/zmd5Cyg1r8EmTbZ4n4Jci2s1E/K7AJsk2sBNkmD458EqhlI/RJN39X+M3vIGUHtfglyLbPEvFLkG1no35WYBNkm1gJsk0eHPkkUMtG6JNu/q7wm99Byg5q8UuQbZ8l4pcg285G/azAJsg2sRJkmzw48kmglo3QJ938XeE3v4OUHdTilyDbPkvEL0G2nY36WYFNkG1iJcg2eXDkk0AtG6FPuvm7wm9+Byk7qMUvQbZ9lohfgmw7G/WzApsg28RKkG3y4MgngVo2Qp9083eF3/wOUnZQi1+CbPssEb8E2XY26mcFNkG2iZUg2+TBkU8CtWyEPunm7wq/+R2k7KAWvwTZ9lkifgmy7WzUzwpsgmwTK0G2yYMjnwRq2Qh90s3fFX7zO0jZQS1+CbLts0T8EmTb2aifFdgE2SZWgmyTB0c+CdSyEfqkm78r/OZ3kLKDWvwSZNtnifglyLazUT8rsAmyTawE2SYPjnwSqGUj9Ek3f1f4ze8gZQe1+CXIts8S8UuQbWejflZgE2SbWAmyTR4c+SRQy0bok27+rvCb30HKDmrxS5BtnyXilyDbzkb9rMAmyDaxEmSbPDjySaCWjdAn3fxd4Te/g5Qd1OKXINs+S8QvQbadjfpZgU2QbWIlyDZ5cOSTQC0boU+6+bvCb34HKTuoxS9Btn2WiF+CbDsb9bMCmyDbxEqQbfLgyCeBWjZCn3Tzd4Xf/A5SdlCLX4Js+ywRvwTZdjbqZwU2QbaJlSDb5MGRTwK1bIQ+6ebvCr/5HaTsoBa/BNn2WSJ+CbLtbNTPCmyCbBMrQbbJgyOfBGrZCH3Szd8VfvM7SNlBLX4Jsu2zRPwSZNvZqJ8V2FpBdu/eu8Phw0vqPcYGXFpaCpsWtoXrb78v9tZOr0uQPXn0SFhcXOz0fs03bd++GPbsuUtlyFoWShUYFQ6C3wqlrrkl/K6BUeGX2n7Zf8dPEu39lyA73kmnEeRh0gqy8n9mq6GyU3HFN1109bawdeftKiMeO3hPeP7RIypj9RlkNTwfOHCoz2VT36u9UE4txAtZCOA3C3azovg1Q52lkLZf9t9xGlPsvwTZcU46Xy0Pk2aQffDYKbXvjHa+iUreqP2RBu2FshLM1dwGfqtR2Xoj+G3FUs1Jbb/af8VfDeiON5Ji/yXIdoQ/9m3yMBFkx1LUuT7FgySdafnVuUtG0SKgvRFq9cU4OgTwq8PR6yjafgmy40yn2H8JsuOcdL6aINsZVfI3pniQpGmCbHJ1WQpob4RZboKiUwngdyqaKl7Q9ltCkF23bO6MU3sp9l+CrJHseQiyH/hLl4f3vfvSc4j+7H99LHzxq6fPOZ/rRIoHSe6FIJvLaNq62hth2m4ZvS8B/PYlVtb7tf16DbJvOf9N4ae/b0u4+epNYf1568IffvFr4eOffiYcfeYlV8JS7L8EWSPF8xBk/93fvTpcvOFbwqeOnmxQ/cRnnw1PP/9q41zOgxQPktwPQTan1XS1tTfCdJ0y8hAC+B1CrZxrtP16DbL7fnAhbNm0Pvz8HxwLr7x2Jtx607eFN3/Lm8IHfvX/uZKVYv8lyBopnocg+8kP/oWw/8gz4WN/8rQR1WFlUjxI0glBdpgP71dpb4Te73fe+sNv3ca1/XoMsjdsuSD80u6F8KP7j4bPPvniitC3Xbw+/PLua8M//sSXzp7zYDrF/kuQNTJbe5CV78QeuPM7w0/8xqPhjx97PszbZ3RkGhFkjR4m4zLaG6Fx+5SLEMBvBFDhL2v79Rhkf2bH28J3XPaW8GP/8RH3tgiy7hVNb7D2ILvtqgvDh35gIXzkj74S/so7LgpXb35LeOjYi+HnDh0LTzz38nQwGV5J8SDJbRBkM8g0KKm9ERq0TIkeBPDbA1aBb9X26zHI/tvvvzo8+bWXw8E/ey78wHdvDlde/Obwp0+8EO751J+H06++7spaiv2X78gaKa49yO7+nreGf7j8QfNPf/mF8N8/fyK88/IN4b3feWl4+euvh/d/5OHw/EuvGZGOl0nxIElVgmycfYnv0N4IS2RQc8/4rdluCNp+PQbZj/3wO8OLL78ervu2DeFPHnshrFv+K9Fbln/o68++cir8g19/JLx+xs/vMEix/xJkjZ7h2oOsBNd3X7Ex/JfPHg9ff/0bD833LH+Xdt/yd2nvfeDPw30PfMWIdLxMigdJqhJk4+xLfIf2Rlgig5p7xm/NducjyP7n294Vtnzr+vCPfvtL4X8+8rUVoTuvvzjc/b63h3/2ycfD7/7ZCTeSU+y/BFkjvbUH2TaMb1r+38LfWf4BsM8sf/hcHjAvf1I8SHJvBFkvhnX7IOjo8vQ2Gn69GdHtR9uvx+/IfuSHrl0Jsu+95/PhtTe+kSS/seDg8s+tfGL5m0v/Zvk3GXj5k2L/Jcga2a09yH778q/9kN9d9/iJ5udhf3v5/xQffvp0+Jnln5z08ifFgyT3RpD1Yli3D+2NULc7RhtLAL9jCfq+XtuvxyD7c3/zHUH24B/+teav2vrEj75r5ddh/uvfJ8j6nqWFdFd7kJUH6buvvDD8jV/6fHjpjQ+XX7f8cYNf/cA7Vz5w/tHlHwLz8ocg68VEGX1ob4Rl3PX8dInful1r+/UYZH9w+Qe8fuKvbgl//cOfCyff+HkU+YHr/T9yXfjnv/P4ys+teLGcYv/lO7JGdmsPsrcsbAo//7e/I/zmg8+Ej/7R0+Edl7453H7Lt4erLnlz+P5/zw97GU0zyiQgoL0RJmiRIUcQwO8IeAVcqu3XY5DdsPyvesl3X7+w/Lef//LgE2Hj8vFPfe+W8I7lX8kl36U9cerrbkwRZN2o6N9I7UFWiPyd91wW7li8Ilz05vOC/JCkPFR7/ttj4csTHzfoT0/3ihQPknTIRwt0PXkZTXsj9HJf9PENAviteyZo+/UYZMWg/B7Zf/Heq1Z+Y5B8TPboM6fDP13+Qa9H+Sdq657glnc3D0FWeMoPeG351vPD106/Fp5/2c+v3FrrmiC7lgZfxwhob4SxerxuSwC/trytq2n79RpkV7nKP04kv37L03dhV3uT/6bYf/lowVrCCb+elyCbEKHa0CkeJGmO78iqKXI1kPZG6OrmaEb994yC1BcB7efXe5D1Rf/cblLsvwTZczknOUOQTYJ10KApHiRphCA7SIf7i7Q3Qvc3PGcN4rdu4dp+CbLj5kuK/ZcgO85J56u1g+zS0lLYtLCtc32tN1509bawdeftKsMdO3hPeP7RIypj9Rnk5NEjYXFxMRw4cKjPZVPfq71QTi3EC1kI4DcLdrOi+DVDnaWQtl8Jsuy/w1Wm2H8JssN99LpSHiat79jt3Xt3OHx4qVd9jTevPrzX336fxnArn5WRSX3LLdvDs88+G1599ZVlRpeEDRs2qIw/a5Dt2xfDnj13zXpL59e0F8rOhXmjCQH8mmDOVgS/2dCbFNb2a7X/nj59evljLyfC+eevD5s3b17Z8+WbV9r7r3xTx/qP9v5LkDUyKA+TVpA1avmcMtp/pSJ/xXDDFRvCnXfeGZ566smz9Xbs2Bmuuebas8fev9BeKL3f77z1h9+6jeMXv94IHD36SDh48MDZtq64YkvYt29feOjJU6pB9satG9X+ZvJss8ZfyPNLkDWCLrAJsk3YEmS3rj8Vbrvt1uYLy0clhVk2wnP0VXUCv1XpPOdm8HsOkqpOlOZ3MsSuyrj33vvCsVc2EmRXgbzxX/FLkJ2AkupQYBNkm3QlyF6+7rlwxx13NF9446iUMFvaQtkKm5NTCeB3KpoqXsBvFRqn3kRJfqeFWLk5+Y7s02cuJshOmBa/BNkJKKkOBTZBtklXgux1l64Lu3fvbr6w5qiEMFvSQrkGLV92JIDfjqAKfRt+CxXXse1S/M4KsXKr+/fvD184foYgO+Fd/BJkJ6CkOhTYBNkmXQmy8hmdD31oXzh06GDzxTVH3sNsKQvlGqR82YMAfnvAKvCt+C1QWo+WS/AbC7E7d+5a/pvLD4YHj/EZ2Un14pcgO0kl0bHAJsg24a4GWfk1WI888sViw2wJC2WTPEd9COC3D63y3ovf8pz16di73y4hdmHhmpDih635Ya8+M4n3rvzrMQTZ5kRYG2TllVLDrPeFskmdo74E8NuXWFnvx29Zvvp269lv1xAr90yQbTcvfvmObDsb9bMCmyDbxDoZZOXVEsOs54WySZyjIQTwO4RaOdfgtxxXQzr16rdPiJX7Jsi22xe/BNl2NupnBTZBtom1LcjKO0oLs14XyiZtjoYSwO9QcmVch98yPA3t0qPfviFW7p0g2z4DxC9Btp2N+lmBTZBtYp0WZOVdJYVZjwtlkzRHYwjgdww9/9fi17+jMR168zskxMr9E2TbZ4H4Jci2s1E/K7AJsk2ss4KsvLOUMOttoWxS5mgsAfyOJej7evz69jO2O09+h4ZYYUCQbZ8J4pcg285G/azAJsg2scaCrLy7hDDraaFsEuZIgwB+NSj6HQO/ft1odObF75gQKxwIsu2zQfwSZNvZqJ8V2ATZJtYuQVau8B5mvSyUTbocaRHArxZJn+Pg16cXra48+B0bYoUFQbZ9Rohfgmw7G/WzApsg28TaNcjKVZ7DrIeFskmWI00C+NWk6W8s/PpzotlRbr8aIVZ4EGTbZ4X4Jci2s1E/K7AJsk2sfYKsXOk1zOZeKJtUOdImgF9tor7Gw68vH9rd5PSrFWKFCUG2fWaIX4JsOxv1swKbINvE2jfIytUew2zOhbJJlKMUBPCbgqqfMfHrx0WKTnL51QyxwoUg2z47xC9Btp2N+lmBTZBtYh0SZGUEb2E210LZpMlRKgL4TUXWx7j49eEhVRc5/GqHWGFDkG2fIeKXINvORv2swCbINrEODbIySmyh2LFjZ7jmmmubBRMd5VgoE90Kw7YQwG8LlIpO4bcimS23Yu03tjft3LkrLCxc09Lp7FME2XY+4pcg285G/azAJsg2sY4JsjJSbMGwCrPWC2WTIkepCeA3NeG84+M3L//U1S39xvakoSFWGBFk22eK+CXItrNRPyuwCbJNrGODrIwWWzgswqzlQtkkyJEFAfxaUM5XA7/52FtUtvIb24vGhFjhRJBtny3ilyDbzkb9rMAmyDaxagRZGTG2gKQOs1YLZZMeR1YE8GtFOk8d/ObhblXVwm9sDxobYoUVQbZ9xohfgmw7G/WzApsg28SqFWRl1NhCkjLMWiyUTXIcWRLAryVt+1r4tWduWTG139jeoxFihRdBtn3WiF+CbDsb9bMCmyDbxKoZZGXk2IKSKsymXiib1DiyJoBfa+K29fBry9u6Wkq/sT1HK8QKM4Js+8wRvwTZdjbqZwU2QbaJVTvIyuixhSVFmE25UDaJcZSDAH5zULeriV871jkqpfIb22s0Q6xwI8i2zx7xS5BtZ6N+VmATZJtYUwRZqRBbYLTDbKqFskmLo1wE8JuLvE1d/NpwzlUlhd/YHqMdYoUdQbZ9Bolfgmw7G/WzApsg28SaKshKldhCoxlmUyyUTVIc5SSA35z009fGb3rGOSto+43tLSlCrPAjyLbPIvFLkG1no35WYBNkm1hTBlmpFFtwtMKs9kLZpMRRbgL4zW0gbX38puWbe3RNv7E9JVWIFYYE2faZJH4Jsu1s1M8KbIJsE2vqICvVYguPRpjVXCibhDjyQAC/Hiyk6wG/6dh6GFnLb2wvSRlihSNBtn02iV+CbDsb9bMCu4Ygu7S0FDYtbFPhc/LokbC4uBgOHDikMt60QWIL0Ngwq7VQTuuf83kJ4Dcv/9TV8ZuacN7xNfzG9pDUIVYISpAtcf9NbV/8EmRTU35jfIFdepDdu/fucPjwkiqx7dsXw549d6mO2TZYbCEaE2Y1Fsq2njnngwB+fXhI1QV+U5H1Me5Yv7G9wyLECsmS99+UM0H8EmRTEl4ztsAuPciuuZ0iv4wtSEPD7NiFskiYc9Q0fuuWjV/8TiMQ2zOsQuy0/jgfgjy/BFmjmSCwCbJGsGeUiS1MQ8IsG+EM4BW8hN8KJM64BfzOgFPBS0P9xvYKQqyPySF+CbJGLgQ2QdYIdqRMbIHqG2aHLpSRNnnZCQH8OhGRqA38JgLrZNghfmN7BCHWidzlNsQvQdbIh8AmyBrB7lAmtlD1CbNDFsoOLfIWJwTw60REojbwmwisk2H7+o3tDYRYJ2LfaEP8EmSNnAhsgqwR7I5lYgtW1zDbd6Hs2B5vc0IAv05EJGoDv4nAOhm2j9/YnkCIdSJ1TRvilyC7BkjKLwU2QTYl4WFjxxauLmG2z0I5rEuuykkAvznpp6+N3/SMc1bo6je2FxBic1qcXlv8EmSn81F9RWATZFWRqg0WW8BiYbbrQqnWMAOZEsCvKW7zYvg1R25asIvf2B5AiDVV1quY+CXI9kI2/M0CmyA7nF/qK2ML2aww22WhTN0/46cjgN90bD2MjF8PFtL1EPMbW/sJsencaIwsfgmyGiQ7jCGwCbIdQGV8S2xBmxZmYwtlxluitAIB/CpAdDwEfh3LUWhtlt/Ymk+IVRCQeAjxS5BNDHl1eIFNkF2l4fe/sYWtLczOWij93imddSWA366kynwffsv01rXraX5jaz0htivhvO8TvwRZIwcCmyBrBHtkmdgCNxlmpy2UI9vgcicE8OtERKI28JsIrJNh2/zG1nhCrBN5HdoQvwTZDqA03iKwCbIaJG3GiC10a8Ns20Jp0yVVLAjg14Jyvhr4zcfeovKk39jaToi1sKJXQ/wSZPV4zhxJYBNkZyJy92JswVsNs5MLpbsboaFRBPA7Cp/7i/HrXtGoBtf6ja3phNhRqLNcLH4JskboBTZB1gi2YpnYwidh9rLLLlupiF9F8I6GWrsROmqLVpQI4FcJpNNhVv0eP348HDx4YGqXhNipaFy/IH4JskaKBDZBxwi2cplYmL3pppvCVVe9Hb/K3L0Mt7oR8vx6MaLbB351eXobTfw+/vhj4YEHHpjaGiF2Khr3L4hfgqyRJoHNRmgEO0GZLmH2Pe/5rgSVGTI3AYJObgNp6+M3Ld/coz/00J8SYnNLSFifIJsQ7uTQBNlJIuUdx8Ls6mdmy7szOp5FgKAzi075r+G3fIfT7iC2ZvOd2GnkyjlPkDV0RZA1hJ2wVGxhJMwmhJ9paIJOJvBGZfFrBNq4TGytJsQaC0lUjiCbCGzbsE888Xi44IIL217iXGEEYp+3Wv3MbGG3RbtTCLz44gsrr/D8TgFU+Gn8Fi6wpf3YGn3zzTeHK6+8quVKTpVGQJ5fPiNrZI0gawTaqExsoSTMGokwKEPQMYCcsQR+M8JPUDq2NhNiE0DPOCRB1hA+Hy0whG1UKvZXV3zMwEhE4jL81XNiwJmHx29mAYrlY2syHydQhO1kKD5aYCiCIGsI27BUbOEkzBrKSFSKoJMIrJNh8etExMg2YmsxIXYkYKeXE2QNxRBkDWEbl/rMZx4M999//9SqhNmpaIp4gaBThKbBTeJ3MDo3F8ZCrHyc4IYbbnTTL43oESDI6rGMjkSQjSIq9g3i9stffpwwW6zB2Y0TdGbzKf1V/JZtsEuIlR/s4ve4l+15Wvfy/PLDXtPoKJ8X2DxIylCdDLe6Ecb+CUS+M+tEWM82Vv3y/PYEV8jb8VuIqJY2YyFWPk5w6aWXrlzJ89sCsIJT8vwSZI1ECmweJCPYxmXWboSxhZUwayxHodxavwrDMYQzAvh1JqRjO7G1dvUzsfjtCLTQt4lfgqyRPIFNkDWCbVxmcqGMLbCEWWNBI8tN+h05HJc7I4BfZ0I6tBNbY1dDrAyF3w5AC36L+CXIGgkU2ARZI9jGZdoWythCS5g1ljSiXJvfEcNxqTMC+HUmJNJObG1dG2JlKPxGgBb+svglyBpJFNgEWSPYxmWmLZSxBZcwayxqYLlpfgcOx2XOCODXmZAZ7cTW1MkQK0PhdwbQCl4SvwRZI5ECmyBrBNu4zKyFMrbwEmaNZQ0oN8vvgOG4xBkB/DoTMqWd2FraFmJlKPxOAVrJafFLkDWSKbAJskawjcvEFsrYAkyYNRbWs1zMb8/heLszAvh1JqSlndgaOi3EylD4bQFa0SnxS5A1EiqwCbJGsI3LdFkoYwsxYdZYWo9yXfz2GI63OiOAX2dCJtqJrZ2zQqwMhd8JoJUdil+CrJFUgU2QNYJtXKbrQhlbkAmzxuI6luvqt+NwvM0ZAfw6E7KmndiaGQuxMhR+1wCt8EvxS5A1EiuwCbJGsI3L9FkoYwszYdZYXodyffx2GI63OCOAX2dC3mgntlZ2CbEyFH59+tXqSvwSZLVoRsYR2ATZCKRCX+67UMYWaMKsr4nQ16+v7ukmRgC/MUL2r8fWyK4hVjrHr70/y4rilyBrRFxgE2SNYBuXGbJQxhZqwqyxxBnlhvidMRwvOSOAX19CYmtjnxArd4ZfX361uxG/BFltqlPGE9gE2SlwCj89dKGMLdiEWR8TY6hfH93TRYwAfmOE7F6PrYl9Q6x0jl87fzkqiV+CrBF5gU2QNYJtXGbMQhlbuAmzxjJbyo3x2zIcp5wRwK8PIbG1cEiIlTvDrw+/qboQvwTZVHQnxhXYBNkJKJUcjl0oYwu4VZjdu/fucPjwkqqV7dsXw549d6mOaT3YWL/W/VKvH4Fa/Jb8/MbWwKEhVmZCLX77zer5ebf4Jcga+RbYBFkj2MZlNBbK2EJuEWZ37doRlpaWwqaFbSoETx49EhYXF8OBA4dUxss1iIbfXL1TN06gFr+lPr+xtW9MiBX7tfiNz+T5fIf4JcgauRfYBFkj2MZltBbK2IKeOszKRvjgsVPh+tvvUyH48D23hhu3biTIqtBkkFQEtJ7fVP11HbfE5ze25o0NscKuFr9d58G8vU/8EmSNrAtsgqwRbOMymgtlbGFPGWZL3AgtVGv6teiXGv0I1OK3tOc3ttZphFiZCbX47Ter5+fd4pcga+RbYBNkjWAbl9FeKGMLfKowW9pGaKVZ269V39TpRqAWvyU9v7E1TivEygyoxW+32Tx/7xK/BFkj7wKbIGsE27hMioUyttCnCLMlbYSWilP4teyfWrMJ1OK3lOc3trZphlgxX4vf2bN4fl8VvwRZI/8CmyBrBNu4TKqFMrbga4fZUjZCY71shNbAjeulen6NbyOU8PzG1jTtECsOavFrPZ9KqSd+CbJGtgQ2QdYItnGZlAtlbOHXDLMlbITGalfKpfSb436o2SRQi1/vz29sLUsRYsV0LX6bs5ajVQLilyC7SiPxfwU2QTYx5EzDp14oYxuAVpj1vhFm0stGmAu8Ud3Uz6/Rbbj+jmxsDUsVYoV9LX6t5lFpdcQvQdbImsAmyBrBNi5jsVDGNgKNMEuQbZ84Fn7bK3PWgkAtfr0+v7G1K2WIlflTi1+LZ6HEGuKXIGtkTmATZI1gG5exWihjG8LYMOt1IzTWeU45K7/nFOaECYFa/Hp8fmNrVuoQKxOoFr8mD0OBRcQvQdZInMAmyBrBNi5juVDGNoYxYdbjRmissrWcpd/WBjiZlEAtfr09v7G1yiLEysSpxW/Sh6DgwcUvQdZIoMAmyBrBNi5jvVDGNoihYdbbRmiscWo5a79TG+GFJARq8evp+Y2tUVYhViZMLX6TTP4KBhW/BFkjkQKbIGsE27hMjoUytlEMCbOeNkJjhTPL5fA7syFeVCVQi18vz29sbbIMsTJRavGrOukrGkz8EmSNhApsgqwRbOMyuRbK2IbRN8x62QiN9UXL5fIbbYw3qBCoxa+H5ze2JlmHWJkgtfhVmewVDiJ+CbJGYgU2QdYItnGZnAtlbOPoE2Y9bITG6jqVy+m3U4O8aRSBWvzmfn5ja1GOECsToxa/oyZ5xReLX4KskWCBTZA1gm1cJvdCGdtAuobZ3BuhsbbO5XL77dwobxxEoBa/OZ/f2BqUK8TKhKjF76DJPQcXiV+CrJFogU2QNYJtXMbDQhnbSLqE2ZwbobGyXuU8+O3VMG/uRaAWv7me39jakzPEykSoxW+vST1Hbxa/BFkj4QKbIGsE27iMl4UytqHEwmyujdBYV+9yXvz2bpwLOhGoxW+O5ze25uQOsTIBavHbaTLP4ZvEL0HWSLzAJsgawTYu42mhjG0ss8Jsjo3QWNWgcp78DroBLppJoBa/1s9vbK3xEGJFfC1+Z07iOX5R/BJkjSaAwCbIGsE2LuNtoYxtMNPCrPVGaKxpcDlvfgffCBe2EqjFr+XzG1tjvIRYEV6L39bJy8kVvwRZo4kgDxNB1gi2cRmPC2Vso2kLs5YbobGiUeU8+h11Q1zcIFCLX6vnN7a2eAqxIroWv41Jy8FZAuKXIHsWR9ovBDZBNi3jXKN7XShjG85kmLXaCHN5GlrXq9+h98N1TQK1+LV4fmNrircQK6Zr8ductRytEhC/BNlVGon/K7AJsokhZxre80IZ23jWhlmLjTCTolFlPfsddWNcvEKgFr+pn9/YWuIxxIrgWvzyuLYTEL8E2XY26mcFNkFWHauLAb0vlLENaDXMpt4IXcga0IR3vwNuiUvWEKjFb8rnN7aGeA2xorkWv2umLF+uISB+CbJrgKT8UmATZFMSzjd2CQtlbCOSMHvnnXeEB4+dCtfffp8KzIfvuTXcuHVjOHDgkMp4uQYpwW8uNjXUrcVvqiC7b9+Hw8GDB6aq9hxipela/E4VMOcviF+CrNEkENgEWSPYxmVKWShjYXb//v3hC8fPEGQn5k8pfifa5rAjgVr8pgiy1126LuzevXsqSe8hVhqvxe9UCXP+gvglyBpNAoFNkDWCbVympIVyVpjdt29fePrMxQTZiflTkt+J1jnsQKAWvymC7OXrngt33HFHK8USQqw0XovfVgmcXPFLkDWaCPIwEWSNYBuXKW2hnBZm7733vnDslY0E2Yn5U5rfifY5jBCoxW+KILt1/alw2223nkOwlBArjdfi9xwJnFghIH4JskaTQWATZI1gG5cpcaGcDLNXXLElyHdkH3qSz8hOTp8S/U7eA8fTCdTiN0WQfc+WjSvfkX3qqSfPAiwpxErTtfg9K4AvGgTEL0G2gSTdgcAmyKbjm3Nk7YVy7967w+HDS8lv6fTp08uL/Ilw/vnrw+bNm1dqblrYpvod2ZNHj4TFxcXk9zJZYPv2xbBnz12Tpwcda/sd1AQXJSOg7dfq+Z0EsrS0FFI8v/IsPfPMM+HVV19Z3sMuCRs2bJgsrX7M86uOtNoB5fklyBrpFdgEWSPYxmW0N0L5zsrqpmR8K+Giq7eFrTtvVyl77OA94flHj6iM1WeQ1fCs9dsStP32uRfem56Atl+e33HOeH7H8Zu3q+X5JcgaWRfYBFkj2MZlUmyEmr8GyxhH9nLav/ZL2292QDTQIKDtV/uv+BvNzsEBz+8cSFa8RXl+CbKKQGcNJbAJsrMIlfsaG6Evd2yEvnx474bn15chnl9fPrx3Q5A1NESQNYRtXGoeN8Lz3rRuhfJrr58xph0vx0YYZ8Q7vklg3p7fbzy5Ifh7cr/hhOf3m3OTr+IECLJxRmrvIMiqoXQ30LxthBvXvyl85IeuDZ/83Inwa3/8tDsfbITulLhuaF6e3+++8sJw5+IV4Z1v3RBeO3Mm/N/l31DyC//jWHjkqy+58sPz60qH+2YIsoaKCLKGsI1LzctGKFg3veW8sPd9bw9/+R0XhV9ceoogazzXKKdPYB6e36s3vyX8yt97Zzjy5RfCxz/91fCW898U/v5fvDxsvXh92P3RL4Tjp76uD3bgiATZgeDm9DKCrKF4gqwhbONS87ARCtJbFjaFn911ZXjp1dfDWy88P/zS/X9OkDWea5TTJzAPz+9Pfe+W8P7v2hz+2oc/F55/6bUViAvL4fY//Mh14V/93hPhtx58Vh/swBEJsgPBzellBFlD8QRZQ9jGpeZhIxSk+35wITz9/Kvh53//WPjEj70rfOR/PR0+9id8tMB4ulFOmcA8PL/fc9WF4dKN3xIOPfzcWXoXvfm88Lt3fmf45eX/If2V/+3nOSbInlXEFx0IEGQ7QNJ6C0FWi6S/ceZhIxTqshGu/hXkH/zkuwmy/qYiHQ0gMC/P7ySav3XDZeGf7Hxb+OB/Oho+vfyRAy9/CLJeTJTRB0HW0BNB1hC2cal53AgJssaTjHLJCMzj8/ttF50fPrr8mdkvPH06/PRvPZqM7ZCBCbJDqM3vNQRZQ/cEWUPYxqXmcSMkyBpPMsolIzBvz+/lyyH2F9+/ENafty7cuv+R8MwLryZjO2RgguwQavN7DUHW0D1B1hC2cal52wgFL0HWeJJRLhmBeXp+t37r+pXPur/2egg//htHw5NfeyUZ16EDE2SHkpvP6wiyht4JsoawjUvN00a4ipYgu0qC/5ZOYF6e3y3LIfbDyz+w+eIrr4ef/M1H3X0ndnUeEWRXSfDfLgQIsl0oKb2HIKsE0uEw87IRrkVPkF1Lg69LJjAPz+8F688Lv/7D7wwnX34t/PjHj4aTb/wKLo/eCLIerfjtiSBr6IYgawjbuNQ8bISTSAmyk0Q4LpXAPDy/P7n8e2R/aNtbw4eW/xGTryz/Cr21f7707EsrP/S19lzOrwmyOemXV5sga+iMIGsI27jUPGyEk0gJspNEOC6VwDw8v7/34+8OFy3/q3xtf/b/n6+GX/jDJ9teynKOIJsFe7FFCbKG6giyhrCNS83DRmiMdFQ5NsJR+ObuYp5fX8p5fn358N4NQdbQEEHWELZxKTZCY+CRcmyEEUC83CDA89vAkf2A5ze7gqIaIMga6iLIGsI2LsVGaAw8Uo6NMAKIlxsEeH4bOLIf8PxmV1BUAwRZQ10EWUPYxqVSbIRLS0th08I24zsJ4aKrt4WtO29XqXvs4D3h+UePqIzVZ5CTR4+ExcXFcODAoT6XTX2vtt+phXghCwFtv7t27Qg8v8NV8vwOZzePV8rzu+706ZfPzOPNW9+zwL7kkkuty1LPgID2Rrh3793h8OElg86bJVY33+tvv6/5wsAj+c6KbEq33LI9PPvss+HVV19ZfgYuCRs2bBg4YvfLtm9fDHv23NX9ghnv1PY7oxQvZSCg7dfq+T19+nQ4ceJEOP/89WHz5s0ra4b8z6/28yv/U2j9h+fXmni59eT5Jcga+RPYBFkj2MZltDdC4/bPlpPvJD147JTqRnjDFRvCnXfeGZ566ps/Fb1jx85wzTXXnq3r/Yta/HrnnKu/Ev0ePfpIOHjwwFlkV1yxJezbty889KTu83vj1o1qf7NxtlnjL0r0a4yo6HLilyBrpFBgE2SNYBuXqWWhTBFkt64/FW677dZzjJQUZmvxe44ETqwQKM3vZIhd1XjvvfeFY69sVP0fUYLsKl3+65WAPL8EWSM7ApsgawTbuExpG+E0PCmC7OXrngt33HFHa8lSwmwtflslcHL5r+ePr1AoYX2eFmLlBuQ7sk+fuZggOzGnS/I70TqHHQiIX4JsB1AabxHYJSyUGvc6b2PUslCmCLLXXbou7N69e+qUKCHM1uJ3qoQ5f6EUv7NCrCjcv39/+MLxMwTZiflcit+JtjnsSED8EmQ7whr7NoFNkB1L0ef1tSyUKYKs/NXkhz60Lxw6dHCqPO9htha/UwXM+Qsl+I2F2J07dy3/zccH1T/jzkcL5vzhKOD25fklyBqJEtgEWSPYxmVK2Ai7IEkVZOXXYD3yyBeLDbO1+O0yB+bxPd79dgmxCwvXhJTPb8nzwrvfktl66F38EmSNTAhsgqwRbOMytSyUqTfCUsNsLX6NH4tiynn22zXECuzUz28xQica9ex3olUOBxAQvwTZAeCGXCKwCbJDyPm/ppaF0mIjLDHM1uLX/5OUp0OvfvuEWCFn8fzmMTSuqle/4+6Kq1cJiF+C7CqNxP8V2ATZxJAzDV/LQmm1EZYWZmvxm+nxcF/Wo9++IVYgWz2/7oVONOjR70SLHI4gIH4JsiMA9rlUYBNk+xAr5721LJSWG2FJYbYWv+U8UbadevM7JMQKMcvn19bQuGre/I67G66eJCB+CbKTVBIdC2yCbCK4mYetZaG03ghLCbO1+M38mLgt78nv0BArcK2fX7dCJxrz5HeiNQ4VCIhfgqwCyC5DCGyCbBdS5b2nloUyx0ZYQpitxW95T5ZNx178jgmxQirH82tjaFwVL37H3QVXTyMgfgmy0+gonxfYBFllqE6Gq2WhzLUReg+ztfh18ri4a8OD37EhVqDmen7dCZ1oyIPfiZY4VCQgfgmyikBnDSWwCbKzCJX7Wi0LZc6N0HOYrcVvuU9Y2s5z+9UIsUIo5/Ob1tC40XP7Hdc9V8cIiF+CbIyS0usCmyCrBNPZMLUslLk3Qq9htha/zh4bN+3k9KsVYgVm7ufXjdCJRnL6nWiFwwQExC9BNgHYtiEFNkG2jUz552pZKD1shB7DbC1+y3/S0txBLr+aIVbIeHh+0xgaN2ouv+O65uquBMQvQbYrrZHvE9gE2ZEQnV5ey0LpZSP0FmZr8ev08cneVg6/2iFWIHp5frMLnWggh9+JFjhMSED8EmQTAl47tMAmyK4lUs/XtSyUnjbC2Ea/Y8fOcM0115pMolr8msAqsIi139jc3rlzV1hYuKY3SU/Pb+/mE15g7TfhrTB0CwHxS5BtAZPilMAmyKYgm3/MWhZKbxthbMO3CrO1+M3/pPjswNJvbE4PDbFC1tvz68W2pV8v9zxPfYhfgqyRcYFNkDWCbVymloXS40YY2/gtwmwtfo0fi2LKWfmNzeUxIVZge3x+PUwCK78e7nUeexC/BFkj8wKbIGsE27hMLQul140wFgBSh9la/Bo/FsWUs/Abm8NjQ6zA9vr85p4IFn5z3+M81xe/BFmjGSCwCbJGsI3L1LJQet4IY0EgZZitxa/xY1FMudR+Y3NXI8QKbM/Pb87JkNpvznujdgjilyBrNBMENkHWCLZxmVoWSu8bYSwQpAqztfg1fiyKKZfSb2zOaoVYge39+c01IVL6zXVP1P0mAfFLkP0mj6RfCWyCbFLE2QavZaEsYSOMBYMUYbYWv9keEOeFU/mNzVXNECuIS3h+c0yFVH5z3As1zyUgfgmy53JJckZgE2SToM0+aC0LZSkbYSwgaIfZWvxmf1CcNpDCb2yOaodYQVvK82s9DVL4tb4H6k0nIH4JstP5qL4isAmyqkjdDFbLQlnSRhgLCpphtha/bh4YZ41o+43NzRQhVpCW9PxaTgFtv5a9UytOQPwSZOOcVN4hsAmyKijdDVLLQlnaRhgLDFphtha/7h4cJw1p+o3NyVQhVlCW9vxa6df0a9UzdboTEL8E2e68Rr1TYBNkRyF0e3EtC2WJG2EsOGiE2Vr8un2AMjem5Tc2F1OGWEFY4vNroV7Lr0Wv1OhPQPwSZPtzG3SFwCbIDkLn/qJaFkrZCJeWlsKmhW0qzE8ePRIWFxfDgQOHVMabNkgsQIwNs7X4ncZv3s9r+I3NwdQhVhyW+vymnn8aflP3yPjDCYhfguxwfr2uFNgE2V7IinlzLQvl3r13h8OHl1S5b9++GPbsuUt1zLbBYkFiTJitxW8bN8594/dQCoeh63Ns7lmEWOm/5OdX+k/1h+c3FVkf44pfgqyRC4E9dKE0apEyAwmwUA4Ep3xZLFAMDbP4VRblbLgxfmNzzirEOkPqqp0xfl3dCM20EhC/BNlWNPonBTZBVp+rhxFZKD1Y+EYPsWAxJMzi14/fFJ0M9Ruba4TYFLb6jznUb/9KXJGDgPglyBqRF9gEWSPYxmVYKI2BR8rFAkbfMIvfCPDCXx7iNzbHCLF+JsUQv366p5MYAfFLkI1RUnpdYBNklWA6G4aF0pmQ5XZiQaNPmMWvP7+aHfX1G5tbhFhNO+PH6ut3fEVGsCQgfgmyRsQFNkHWCLZxGRZKY+Ady8UCR9cwi9+OwAt9Wx+/sTlFiPU3Cfr49dc9HcUIiF+CbIyS0usCmyCrBNPZMCyUzoSsaScWPLqEWfyuAVrhl139xuYSIdbn5Ojq12f3dBUjIH4JsjFKSq8LbIKsEkxnw7BQOhMy0U4sgMTCLH4ngFZ22MVvbA4RYv1Oii5+/XZPZzEC4pcgG6Ok9LrAJsgqwXQ2DAulMyEt7cSCyKwwi98WoBWdivmNzR1CrO/JEPPru3u6ixEQvwTZGCWl1wU2QVYJprNhWCidCZnSTiyQTAuz+J0CtJLTs/zG5gwh1v8kmOXXf/d0GCMgfgmyMUpKrwtsgqwSTGfDsFA6EzKjnVgwaQuz+J0BtIKXpvmNzRVCbBnyp/kto3u6jBEQvwTZGCWl1wU2QVYJprNhnnvuRDhz5gx+nXmZ1k4soEyGWfxOI1nH+Ta/sTlCiC3HfZvfcrqn0xgB8UuQjVFSep0gqwTS4TAslA6lRFqKBZW1YRa/EZiFvzzpNzY3CLFlCZ/0W1b3dBsjIH4JsjFKSq8TZJVAOhyGhdKhlA4txQLLapjFbweYBb9lrd/YnCDElid6rd/yuqfjGAHxS5CNUVJ6nSCrBNLhMCyUDqV0bCkWXCTMbt68mY+OdORZ4ttWn9/jx4+HgwcPTL0FQuxUNK5fWPXLR/tcaxrcHEF2MLr+FxJk+zMr5QoWylJMtfcZC7M333xzuPLKq/gMdDu+4s/K8/vYY18KDzzwwNR7IcROReP+BdZn94pGNUiQHYWv38UE2X68Sno3C2VJttp7jYXZm266KbznPd/VfjFniybwmc88GO6///6p90CInYqmiBdYn4vQNLhJguxgdP0vJMj2Z1bKFSyUpZia3WcszK5+Znb2KLxaEoGYc0JsSTbbe2V9budSy1mCrKFJgqwhbONSLJTGwBOWiwUbwmxC+MZDx1wTYo2FJCrH+pwIrJNhCbKGIp544vFwwQUXGlaklBWBF198YaUUfq2Ip63z+OOPzfy8pHzM4Kqr3p62CUZPSiDmePVz0UmbYHATAqzPJpizFRG//NYCI/wEWSPQGcqwUGaAnrhkLOgQZhMLSDh8zC0hNiH8DEOzPmeAbliSIGsIm48WGMI2LsVfXRkDNyoX+6tnPmZgJEKxTMwpHydQhO1kKNZnJyIStcFHCxKBbRuWINtGpY5zLJR1eGy7i1jwIcy2UfN5LuaSEOvT29iuWJ/HEvR9PUHW0A9B1hC2cSkWSmPgxuU++9mHwqc+9ampVQmzU9G4eSEWYuXjBDfccKObfmlEjwDrsx5LjyMRZA2tEGQNYRuXYqE0Bm5cTvzK5ypn/a5RwqyxlB7lYiH2lltuCW9725X8gxc9mJb0Vtbnkmz175Ug25/Z4CsIsoPRub+QhdK9olENrvqN/ROmhNlRmJNcHAux8nGCyy67jH+COAl9H4OuPr/8E7U+fGh3QZDVJjpjPILsDDiFv8RCWbjASPtr/caCEWE2AtPw5Zir1c/ErvVr2B6ljAjg1wh0pjLil1+/ZQSfIGsEOkMZFsoM0A1LTvqNBSTCrKGcKaVijlZDrFw+6XfKkJwulAB+CxXXsW3xS5DtCGvs2wiyYwn6vZ6F0q8bjc7a/MaCEmFWg/ywMWJu1oZYqdDmd1hlrvJIAL8erej1JH4Jsno8Z45EkJ2Jp+gXWSiL1hdtfprfWGAizEbRqr8h5mQyxEoD0/yqN8eAWQjgNwt2s6LilyBrhJsgawQ6QxkWygzQDUvO8hsLToRZO1ExF20hVrqb5deueyqlIoDfVGR9jCt+CbJGLgiyRqAzlGGhzADdsGTMbyxAEWbTy4o5mBZipbOY3/TdUyElAfympJt/bPFLkDXyQJA1Ap2hDAtlBuiGJbv4jQUpwmw6YTH2s0KsdNXFb7ruGTk1AfymJpx3fPFLkDVyQJA1Ap2hDAtlBuiGJbv6jQUqwqy+tBjzWIiVjrr61e+eES0I4NeCcr4a4pcga8SfIGsEOkMZFsoM0A1L9vEbC1aEWT1xMdZdQqx008evXveMZEUAv1ak89QRvwRZI/YEWSPQGcqwUGaAbliyr99YwCLMjpcXY9w1xEonff2O754RLAng15K2fS3xS5A14k6QNQKdoQwLZQbohiWH+I0FLcLscIExtn1CrHQxxO/w7rnSmgB+rYnb1hO/BFkj5gRZI9AZyrBQZoBuWHKo31jgIsz2lxhj2jfESgdD/fbvnityEMBvDup2NcUvQdaIN0HWCHSGMiyUGaAblhzjNxa8CLPdRcZYDgmxUn2M3+7d885cBPCbi7xNXfFLkLVhHQiyRqAzlGGhzADdsORYv7EAZhVm9+69Oxw+vKRKbvv2xbBnz12qY7YNFmM4NMRKrbF+2/rlnB8C+PXjIkUn4pcgm4Jsy5gE2RYolZxioaxE5JTb0PAbC2IWYXbXrh1haWkpbFrYNuVO+50+efRIWFxcDAcOHOp3Yc93x9iNCbHSiobfnrfE2w0J4NcQdoZS4pcgawSeIGsEOkMZFsoM0A1LavmNBbLUYVaC7IPHToXrb79Phd7D99yeEsw2AAAB4klEQVQabty6MWmQjTEbG2IFhJZfFagMok4Av+pIXQ0ofgmyRkoIskagM5RhocwA3bCkpt9YMEsZZksLsjFWGiFWppGmX8NpSamOBPDbEVShbxO/BFkjeQRZI9AZyrBQZoBuWFLbbyygpQqzJQXZGCOtECvTSNuv4dSkVAcC+O0AqeC3iF+CrJFAgqwR6AxlWCgzQDcsmcJvLKilCLOlBNkYG80QK9MohV/D6UmpCAH8RgAV/rL4JcgaSSTIGoHOUIaFMgN0w5Kp/MYCm3aYLSHIxphoh1iZRqn8Gk5RSs0ggN8ZcCp4SfwSZI1EEmSNQGcow0KZAbphyZR+Y8FNM8x6D7IxFilCrEyjlH4NpymlphDA7xQwlZwWvwRZI5kEWSPQGcqwUGaAblgytd9YgNMKs56DbIxBqhAr0yi1X8OpSqkWAvhtgVLRKfFLkDUSSpA1Ap2hDAtlBuiGJS38xoKcRpj1GmRj954yxMo0svBrOF0pNUEAvxNAKjsUvwRZI6kEWSPQGcqwUGaAbljSym8s0I0Nsx6DbOyeU4dYmUZWfg2nLKXWEMDvGhgVfil+CbJGYgmyRqAzlGGhzADdsKSl31iwGxNmvQXZ2L1ahFiZRpZ+Dactpd4ggN+6p4L4/f8AAAD//wceVWEAAEAASURBVO2dC5Rd11nft2xLjmRbth52LMt2HI8cKw2JHVBLa3sGwkLSolnhERKoaAgQ7KLIQKCPBazKbakVYPEohWLJYLUJgUSERyksHhmJEhg5DgQV7DQPu7YU27Hkl2Q5UqyxJdvq/SaeyZyrc+4+995v/79v7/uftcBzzrl3f9/5/fbZ+5/R1WjB9PQLpwO/khM4evSZsGzZ8uR1WABP4Nlnj4bTp0/TLx49pCLa7/79D4Xduycb7239+g1hzZprGq83Xdi4cX249+CJsHbzzqaX9HX+/jtvDtevXhImJ/f09T55ceweN2zYGMbG1vQ97iBvQPsdpEe+Z3AC9Ds4uxzeKX4XMMhiVDHIYjhbVOFCaUEdV9PCbyzoDRJmvQTZ2L0hQ6zMIgu/uNnLSvRb9hwQvwyyIMcMsiDQBmW4UBpAB5a08hsLfP2GWQ9BNnZP6BAr08jKL3AKj3Qp+i1bv/hlkAU5ZpAFgTYow4XSADqwpKXfWPDrJ8xaB9nYvViEWJlGln6B03hkS9Fv2erFL4MsyDGDLAi0QRkulAbQgSWt/cYCYNswaxlkY/dgFWJlGln7BU7lkSxFv2VrF78MsiDHDLIg0AZluFAaQAeW9OA3FgTbhFmrIBvr3TLEyjTy4Bc4nUeuFP2WrVz8MsiCHDPIgkAblOFCaQAdWNKL31ggjIVZiyAb69k6xMo08uIXOKVHqhT9lq1b/DLIghwzyIJAG5ThQmkAHVjSk99YMOwVZtFBNtarhxAr08iTX+C0HplS9Fu2avHLIAtyzCALAm1QhgulAXRgSW9+YwGxKcwig2ysRy8hVqaRN7/AqT0Spei3bM3il0EW5JhBFgTaoAwXSgPowJIe/caCYl2YRQXZWG+eQqxMI49+gdO7+FL0W7Zi8csgC3LMIAsCbVCGC6UBdGBJr35jgbE7zCKCbKwnbyFWppFXv8ApXnQp+i1a78zzyyALcswgCwJtUIYLpQF0YEnPfmPBcX6YTR1kY714DLEyjTz7BU7zYkvRb7FqZ25M/DLIghwzyIJAG5ThQmkAHVjSu99YgJwNsymDbKwHryFWppF3v8CpXmQp+i1S69xNiV8G2Tkcab9hkE3L13J0LpSW9NPXzsFvLEhKmL311i3h3oMnwtrNO1Wg3X/nzeH61UvC9u07wu7dk41jeg6x0nQOfhvh8kKUAP1GEWX9AvHLIAtSyCALAm1QhgulAXRgyVz8xsLsrl27wgPPnFYNstcuXxA2bdrUaMN7iJXGc/HbCJkXehKg3554sr8ofhlkQRoZZEGgDcpwoTSADiyZk99eYXb79u3hqdMXqQbZSxY8G7Zs2VJrI4cQK43n5LcWNE/2JEC/PfFkf1H8MsiCNDLIgkAblOFCaQAdWDI3v01h9q67doaDJ5eoBtnVi06EW265+QwbuYRYaTw3v2fA5omeBOi3J57sL4pfBlmQRgZZEGiDMlwoDaADS+botzvMrlp1WeezrNvDfYd0PyN73WVLZn4i+/jjh+aM5BRipekc/c7B5jdRAvQbRZT1C8QvgyxIIYMsCLRBGS6UBtCBJbX9btt2e9i7dyr5HUxPT4ejR4+GhQsXhZUrV87UXDq2TvUnssf27wvj4xPh8OHD4dSpk2HZsmVh8eLFye9Nam7deptKHW2/Kk1xEDUC9KuG0uVA4pdBFqSGQRYE2qAMF0oD6MCS2n7l12BNTU0FCZXorwuuXhdWb9isUvbg7jvD8QP7VMbqZxAJzxMTE2Fyck8/b2t8rbbfxkK8YEKAfk2ww4qKXwZZEG4GWRBogzJcKA2gA0tq+9X+fa5AFC5Kzf7aLwZZFzrcN6H9/Lq/4RFrkEEWKJxBFggbXIoLJRg4uJy2XwbZ4QQyyA7Hb9Terf38jho/7/fLIAs0xCALhA0uxYUSDBxcTtuv9yC7oMP3NJhxP+UYZPuhxddqP78k6osAgyzQB4MsEDa4FBdKMHBwOW2/XoPsqy9YGL7/n746fMOaC2cITz30pfBLf3kwnHrJV6xlkAU/AJmX035+M8dRXPsMskClDLJA2OBSXCjBwMHltP16DbK/9s6xsPDsBeFX//pQuGjxOeGnNlwe7n3subD1Tx4BE+9djkG2Nx9erRLQfn6ro/PImgCDLNAAgywQNrgUF0owcHA5bb8eg+w3X3tReP/bXhO+c+f94bFnX5gh/JbXXRh+5m1Xhe+46/PhiWMnwdSbyzHINrPhlTMJaD+/Z1bgGUsCDLJA+gyyQNjgUlwowcDB5bT9egyy/37jFeENq5aE7/ngA3N0zz3nrPDxH/2a8Av/+2D4w/uOzJ23/oZB1tpAXvW1n9+87r78bhlkgY4ZZIGwwaW4UIKBg8tp+/UYZHd891g42fks7Pt+/0CF7se2vCH83j8cDv/9k09WzlseMMha0s+vtvbzmx+BsjtmkAX6ZZAFwgaX4kIJBg4up+3XY5D90LtfFx4+8nz4D3/6aIXu7/3g2vCpR46HX/iLg5XzlgcMspb086ut/fzmR6DsjhlkgX4ZZIGwwaW4UIKBg8tp+/UYZD/wrmvCI8+8EP7Tn1WD7Effszbc1/kLXz+z+4tg6s3lGGSb2fDKmQS0n98zK/CMJQEGWSB9BlkgbHApLpRg4OBy2n49Btlf/I7XhrM6v0D2X//PL1To/nnnowWTnz8a/uvHD1XOWx4wyFrSz6+29vObH4GyO2aQBfplkAXCBpfiQgkGDi6n7ddjkJVftXXtJYvD9//2g3N0z+kk27963xtnfh3X7/794bnz1t8wyFobyKu+9vOb192X3y2DLNAxgywQNrgUF0owcHA5bb8eg+z6tReF//zW14S37vhseObEizOEb3jtBeGXv/Pq8K7f/H/hwaenwdSbyzHINrPhlTMJaD+/Z1bgGUsCDLJA+gyyQNjgUlwowcDB5bT9egyy8tPXP/qh14fPHDox83nYC849O/z8t782fO6JE2Hbx/x8PlbUM8iCH4DMy2k/v5njKK59BlmgUgZZIGxwKS6UYODgctp+PQZZQbr21Ys7/yjCVWH1hYvCCy++HD75hePhZ/d8MXxp+iUw8d7lGGR78+HVKgHt57c6Oo+sCTDIAg0wyAJhg0txoQQDB5fT9us1yM5iveSCheHY8y+F50+9PHvK1X8ZZF3pcN+M9vPr/oZHrEEGWaBwBlkgbHApLpRg4OBy2n69B1kw3r7LMcj2jWyk36D9/I40TIc3zyALlMIgC4QNLsWFEgwcXE7bL4PscAIZZIfjN2rv1n5+R42f9/tlkAUaYpAFwgaX4kIJBg4up+1XguzU1FRYOrYOfCchXHD1urB6w2aVugd33xmOH9inMlY/gxzbvy9MTEyEyck9/byt8bXafhsL8YIJAfo1wQ4rKn4XTE+/cBpWcYQLMciWK58LZblu5c60/W7bdnvYu3cqObTp6elw9OjRsHDhorBixYpw9917Z8Lz2s07VWrLT0YlVN5003g4cuRIOHXqZFi2bFlYvHixyvi9Bhkfnwhbt97W6yWtr2n7bV2YL4QQoF8IZrMi4pdBFoSfQRYE2qAMF0oD6MCSOfp96KEHw549u+coXXrpqrBjx45wX+fXa2kG2TetWhxuvfXW8PjjX/2Xv9av3xDWrLlmrrb3b3L0652pp/7o15MN/V7EL4OsPtfaERlka7EUcZILZREaG28iN7/dIXb2xu66a2c4eHKJapBdvehEuOWWm2dLzP03pzCbm985yPymFQH6bYUp2xeJXwZZkD4GWRBogzJcKA2gA0vm5LcpxAqu7du3h6dOX6QaZC9Z8GzYsmVLrY1cwmxOfmtB82RPAvTbE0/2F8UvgyxII4MsCLRBGS6UBtCBJXPx2yvECq5du3aFB545rRpkr12+IGzatKnRRg5hNhe/jZB5oScB+u2JJ/uL4pdBFqSRQRYE2qAMF0oD6MCSOfiNhdgNGzZ2fnL63nDvQd3PyF6/ekm4447tlc/jdqvxHmZz8NvNlMftCdBve1Y5vlL8MsiCzDHIgkAblOFCaQAdWNK73zYhdmxsTdD+/bXzf59rrAfPYda7X+BUL7IU/Rapde6mxC+D7ByOtN8wyKblazk6F0pL+ulre/YbC5Dyk1gJsfKVMsjK+LFevIZZz36FK7+GI0C/w/Hz/m7xyyALssQgCwJtUIYLpQF0YEmvfmPBcX6IFVypg6zUiPXkMcx69Ss8+TU8AfodnqHnEcQvgyzIEIMsCLRBGS6UBtCBJT36jQXG7hAruBBBVurEevMWZj36FY780iFAvzocvY4ifhlkQXYYZEGgDcpwoTSADizpzW8sKNaFWMGFCrJSK9ajpzDrza/w45ceAfrVY+lxJPHLIAsywyALAm1QhgulAXRgSU9+YwGxKcQKLmSQlXqxXr2EWU9+hRu/dAnQry5Pb6OJXwZZkBUGWRBogzJcKA2gA0t68RsLhr1CrOBCB1mpGevZQ5j14ld48UufAP3qM/U0ovhlkAUZYZAFgTYow4XSADqwpAe/sUAYC7GCyyLISt1Y79Zh1oNf4cSvNAToNw1XL6OKXwZZkA0GWRBogzJcKA2gA0ta+40FwTYhVnBZBVmpHbsHyzBr7Vf48CsdAfpNx9bDyOKXQRZkgkEWBNqgDBdKA+jAkpZ+YwGwbYgVXJZBVurH7sUqzFr6FS78SkuAftPytR5d/DLIgiwwyIJAG5ThQmkAHVjSym8s+PUTYgWXdZCVHmL3ZBFmrfwKD36lJ0C/6RlbVhC/DLIgAwyyINAGZbhQGkAHlrTwGwt8/YZYweUhyEofsXtDh1kLv8KBXxgC9IvhbFVF/DLIgugzyIJAG5ThQmkAHVgS7TcW9AYJsYLLS5CVXmL3iAyzaL9y//zCEaBfHGuLSuKXQRZEnkEWBNqgDBdKA+jAkki/sYA3aIgVXJ6CrPQTu1dUmEX6lfvmF5YA/WJ5o6uJXwZZEHUGWRBogzJcKA2gA0ui/MaC3TAhVnB5C7LSU+yeEWEW5Vful194AvSLZ46sKH4ZZEHEGWRBoA3KcKE0gA4sifAbC3TDhljB5THISl+xe08dZhF+5T75ZUOAfm24o6qKXwZZEG0GWRBogzJcKA2gA0um9hsLchohVnB5DbLSW4xByjCb2q/cH7/sCNCvHXtEZfHLIIsg3anBIAsCbVCGC6UBdGDJlH5jAU4rxAouz0FW+ouxSBVmU/qV++KXLQH6teWfurr4ZZBNTfmV8RlkQaANynChNIAOLJnKbyy4aYZYweU9yEqPMSYpwmwqv3I//LInQL/2DlJ2IH4ZZFMSnjc2g+w8GIV9y4WyMKFdt5PCbyywaYdYuaUcgqz0GWOjHWZT+JX74JcPAvTrw0OqLsQvg2wqul3jMsh2ASnokAtlQTJrbkXbbyyopQixclu5BFnpNcZIM8xq+5X++eWHAP36cZGiE/HLIJuCbM2YDLI1UAo5xYWyEJENt6HpNxbQUoVYubWcgqz0G2OlFWY1/Urf/PJFgH59+dDuRvwyyGpTbRiPQbYBTAGnuVAWILHHLWj5jQWzlCFWbi+3ICs9x5hphFktv9Ivv/wRoF9/TjQ7Er8MsppEe4zFINsDTuaXuFBmLjDSvobfWCBLHWLlFiXITk1NhaVj6yJ33O7ysf37wsTERJic3NPuDQO+KsZu2DCr4XfAW+PbAAToFwDZsIT4ZZAFCWCQBYE2KMOF0gA6sOSwfmNBDBFiBde2bbeHvXunVMmNj0+ErVtvUx2zbrAYw2HC7LB+6/rlOT8E6NePixSdiF8G2RRka8ZkkK2BUsgpLpSFiGy4jWH8xgIYKsQ23FpWp2MsBw2zw/jNCuCINku/ZYsXvwyyIMcMsiDQBmW4UBpAB5Yc1G8seDHE9i8xxnSQMDuo3/675zssCNCvBXVcTfHLIAvizSALAm1QhgulAXRgyUH8xgIXQ+zgAmNs+w2zg/gdvHu+E02AftHEsfXEL4MsiDmDLAi0QRkulAbQgSX79RsLWgyxw8uLMe4nzPbrd/juOQKSAP0iaeNriV8GWRB3BlkQaIMyXCgNoANL9uM3FrAYYvXExVi3DbP9+NXrniOhCNAvirRNHfHLIAtizyALAm1QhgulAXRgybZ+Y8GKIVZfWox5mzDb1q9+9xwRQYB+EZTtaohfBlkQfwZZEGiDMlwoDaADS7bxGwtUDLHphMXYx8JsG7/puufIqQnQb2rCtuOLXwZZkAMGWRBogzJcKA2gA0vG/MaCFENselkxB73CbMxv+u5ZISUB+k1J135s8csgC/LAIAsCbVCGC6UBdGDJXn5jAYohFicq5qIpzPbyi+uelVIRoN9UZH2MK34ZZEEuGGRBoA3KcKE0gA4s2eQ3FpwYYoGSXikVc1IXZpv84rtnxRQE6DcFVT9jil8GWZAPBlkQaIMyXCgNoANL1vmNBSaGWKCgrlIxN91hts5v15A8zJgA/WYsr0Xr4pdBtgUojZcwyGpQ9DkGF0qfXrS66vYbC0oMsVrkBx8n5mh+mO32O3hVvtMjAfr1aEWvJ/HLIKvHs+dIDLI98WR9kQtl1vqizc/3GwtIDLFRnLAXxFzNhtn5fmHNsRCMAP3CUJsUEr8MsiD0DLIg0AZluFAaQAeWnPV75MiRsGfP7sbKDLGNaMwutAmzK1euDKdPnw7Lli0365OF0xGYfX7pNx1jy5EZZIH0GWSBsMGluFCCgYPLid9HHnk43HPPPY2VGWIb0ZhfiIXZG2+8MVxxxZUMsuam0jTA9TkNVy+jMsgCTTDIAmGDS3GhBAMHl/v0p+8Nn/jEJxqrMsQ2onFzIRZmb7jhhnDddW920y8b0SPA9VmPpceRGGSBVhhkgbDBpbhQgoEDy8UCEEMsUMaQpWIuZz8zO2QZvt0ZAa7PzoQot8Mgqwy013AMsr3o5H2NC2Xe/pq6jwUfhtgmcn7Px5wyzPp1N2hnXJ8HJZfH+xhkgZ4ee+zRcN555wMrshSKwHPPfXmmFP2iiKev8+ijj/T8TOyNr3yuMn0nrKBNIOZWPmZw5ZWv0S7L8YwIcH02Ag8qK375WwtAsBlkQaANynChNICesGQs6DDEJoQPGjrmmGEWJAJQhuszALJhCQZZIHx+tAAIG1yKf3QFBp6wXOyPnvlxgoTwwUPHXPNjBmAhicpxfU4E1smw/GgBUASDLBA2uBQXSjDwROViwYYhNhF4w2FjzhlmDeUoleb6rATS6TAMskAxDLJA2OBSXCjBwBOUiwWaGzufiX3Tm65PUJlDWhOI/Xo1hllrQ8PV5/o8HD/v72aQBRpikAXCBpfiQgkGrlwuFmJvuummcPnlV/AX5itz9zKcPL+xf/CCYdaLrf774PrcP7Oc3sEgC7TFIAuEDS7FhRIMXLFcLMTKxwlWrFjBf8JUkbm3oWaf39g/Qcww681cu35m/fKfqG3HK7dXMcgCjTHIAmGDS3GhBANXKtcmxI6NrQn0qwTc6TDz/cbmBMOsU4k92prvt8fLeClTAuKXv34LJI9BFgTaoAwXSgPoQ5aMBZb5f7GLfoeE7fzt3X5jc4Nh1rnQrva6/XZd5mHmBMQvgyxIIoMsCLRBGS6UBtCHKBkLKvNDrJSh3yFgZ/DWOr+xOcIwm4HYV1qs85tP9+w0RkD8MsjGKCldZ5BVAulwGC6UDqU0tBQLKN0hVoah3waYhZxu8hubKwyzeUyAJr95dM8uYwTEL4NsjJLSdQZZJZAOh+FC6VBKTUuxYFIXYmUY+q2BWdCpXn5jc4Zh1v9E6OXXf/fsMEZA/DLIxigpXWeQVQLpcBgulA6ldLUUCyRNIVaGod8umIUdxvzG5g7DrO8JEfPru3t2FyMgfhlkY5SUrjPIKoF0OAwXSodS5rUUCyK9QqwMQ7/zYBb4bRu/sTnEMOt3YrTx67d7dhYjIH4ZZGOUlK4zyCqBdDgMF0qHUl5pKRZAYiFWhqFfv341OmvrNzaXGGY1bOiP0davfmWOiCAgfhlkEaQ7NRhkQaANynChNIDeomQseLQJsVKGflvAzvgl/fiNzSmGWX8ToR+//rpnRzEC4pdBNkZJ6TqDrBJIh8NwofQnJRY42oZYuTP69edXs6N+/cbmFsOspp3hx+rX7/AVOQKSgPhlkAURZ5AFgTYow4XSAHqPkrGg0U+IlTL02wN2AZcG8RubYwyzfibGIH79dM9OYgTEL4NsjJLSdQZZJZAOh+FC6UdKLGD0G2LlzujXj98UnQzqNzbXGGZT2Op/zEH99l+J77AgIH4ZZEHkGWRBoA3KcKE0gF5TMhYsBgmxUoZ+a2AXdGoYv7E5xzBrP1GG8WvfPTuIERC/DLIxSkrXGWSVQDocppSFctu228PevVOqhMfHJ8LWrbepjlk32P79D4XduyfrLs2cGzTEyptL8dsIZ8QvDOvXS5jN+flNOQWH9ZuyN449PAHxyyA7PMdWIzDItsKU5YtKWSg3blwfpqamwtKxdSoeju3fFyYmJsLk5B6V8ZoGSRlipWYpfpv4jfp5Db8ewmyuz2/q+afhN3WPHH9wAuKXQXZwfn29k0G2L1xZvbiUhVI2wnsPnghrN+9U4X//nTeH61cvSRpkU4dYAVGKXxWpBQ6i5dc6zOb4/CKmk5ZfRK+s0T8B8csg2z+3gd7BIDsQtizeVMpCmdtGiAixMgFL8ZvFw2TQpKZfyzCb2/OLUq3pF9Uz67QnIH4ZZNvzGuqVDLJD4XP95lIWypw2QlSIlYlXil/XD5Fhc9p+rcJsTs8vUre2X2TvrBUnIH4ZZOOcVF7BIKuC0eUgpSyUuWyEyBArE64Uvy4fHgdNpfBrEWZzeX7RylP4Rd8D6zUTEL8Mss18VK8wyKridDVYKQtlDhshOsTKRCvFr6uHxlEzqfyiw2wOz6+F9lR+Le6FNc8kIH4ZZM/kkuQMg2wSrC4GLWWh9L4RWoRYmWCl+HXxsDhsIqVfZJj1/vxaqU/p1+qeWPerBMQvg+xXeST9jkE2KV7TwUtZKD1vhFYhViZWKX5NHxLHxVP7RYVZz8+vpf7Ufi3vjbW/sj4zyIJmAoMsCLRBmVIWSq8boWWIlelUil+DRyOLkgi/iDDr9fm1ngQIv9b3OMr1xS+DLGgGMMiCQBuUKWWh9LgRWodYmU6l+DV4NLIoifKbOsx6fH49TACUXw/3Ooo9iF8GWZB5BlkQaIMypSyU3jZCDyFWplMpfg0ejSxKIv2mDLPenl8v8pF+vdzzKPUhfhlkQcYZZEGgDcqUslB62gi9hFiZTqX4NXg0siiJ9psqzHp6fj2JR/v1dO+j0Iv4ZZAFmWaQBYE2KFPKQullI/QUYmU6leLX4NHIoqSF3xRh1svz6026hV9vDEruR/wyyIIMM8iCQBuUKWWh9LAReguxMp1K8WvwaGRR0sqvdpj18Px6FG7l1yOLEnsSvwyyILMMsiDQBmVKWSitN0KPIVamUyl+DR6NLEpa+tUMs9bPr1fZln69MimpL/HLIAsyyiALAm1QppSF0nIj9BpiZTqV4tfg0ciipLVfrTBr+fx6Fm3t1zObEnoTvwyyIJMMsiDQBmVKWSitNkLPIVamUyl+DR6NLEp68KsRZq2eX++SPfj1zijn/sQvgyzIIIMsCLRBmVIWSouN0HuIlelUil+DRyOLkl78DhtmLZ7fHAR78ZsDqxx7FL8MsiBzDLIg0AZlSlko0RthDiFWplMpfg0ejSxKevI7TJhFP79ZyOXzm4umgftkkB0YXf9vZJDtn1ku7/C0EQ7DDLkR5hJihWcpfoeZGyW/15vfQcMs8vnNaT5485sTuxx6Fb/8iSzIFIMsCLRBmVIWStRGmFOIlelUil+DRyOLkh79DhJmUc9vFlLnNenR77z2+O2QBMQvg+yQENu+nUG2Lan8XlfKQonYCHMLsTIbS/Gb35OF6dir337DLOL5xRjRreLVr+5dju5o4pdBFuSfQRYE2qBMKQtl6o0wxxAr06kUvwaPRhYlPfvtJ8ymfn6zkFnTpGe/Ne3yVJ8ExC+DbJ/QBn05g+yg5Py/r5SFMuVGmGuIldlXil//T5JNh979tg2zKZ9fGzM6Vb371bnL0R1F/DLIgvwzyIJAG5QpZaFMtRFu374j7N492Whmw4aNYWxsTeN16wul+LXm6LV+Dn7bhNlbb90S7j14IqzdvFMF9f133hyuX70kTE7uURnPapAc/FqxKaGu+GWQBZlkkAWBNihTykKZIsheu3xB2LRpU6MV7yFWGi/Fb6OEEb+Qi99YmN21a1d44JnTDLJd8zkXv11t87AlAfHLINsS1rAvY5AdlqDf95eyUKYIspcseDZs2bKlVl4OIVYaL8VvrQSezMpvrzC7ffv28NTpixhku+Y0n98uIIUdMsgChTLIAmGDS5WyUKYIsqsXnQi33HLzGUZyCbHSeCl+z5DAEzMEcvPbFGbvumtnOHhyCYNs17zOzW9X+zyMEBC//IlsBJLWZQZZLZL+xilloUwRZK+7bMnMT2Qff/zQnLicQqw0XYrfOQH8pkIgR7/dYXbVqsuC/ET2vkP8jGxFbucgR7/d98DjZgLil0G2mY/qFQZZVZyuBtNeKLdtuz3s3TsFv8epqamwdGyd6k90ju3fF8bHJ8Lhw4fDqVMnw7Jly8LixYuT35vU3Lr1NpU62n5VmuIgagS0/aKe3+np6XD06NGwcOGisHLlypk1I8XzOzExoca67UB8ftuS4usYZIFzgEEWCBtcSnsjlJ+MzoZK8K2EC65eF1Zv2KxS9uDuO8PxA/tUxupnEAnPsvlq/W1rbb/93Atfm56Atl8+v8M54/M7HL9RezeDLNA4gywQNrhUio1Q89fogHGYl9P+tUHafs0BsYEKAW2/2h/RqTQ7Agd8fkdAsuItMsgqwowNxSAbI5TvdW6EvtxxI/Tlw3s3fH59GeLz68uH924YZIGGGGSBsMGluBGCgUfKcSOMAOLlCoFRe34XdO7+dIWArwM+v758eO+GQRZoiEEWCBtcatQ2QsH79utWhJ9Yf3nYeMdnw7PTL4KJ9y7HjbA3H16tEhiV53ftqxeHd1y/MnzjNReG4y+8FD7+4JfCHVOPh5de9hVr+fxW5yePehNgkO3NR/Uqg6wqTleDjcpGOAt91YWLwke+/9qwZOFZDLKzUPjfbAmMwvO76JwF4Q9+8PXh/idPhN/+u6fDFcvODT88sSrcfeBY2PaxL7pyxyDrSof7ZhhkgYoYZIGwwaVGYSOcRSp/LHnHd42FZUvOCVevfBWD7CwY/jdbAqPw/G76uovDe8cvDW/79c+FL02/NOPqX914afiedReH9b/2mXDqJT8/lWWQzfZRMmmcQRaInUEWCBtcahQ2wlmk73jzyvDOzv994JNPhp9+65Vhwx2fmdsYZ19j/V9uhNYG8qo/Cs/v2WctCBefvzA8cezknJyf2nB5WL/2ok6Q/ayrjxfw+Z1TxG9aEGCQbQFJ6yUMslok/Y0zChuhUL/8okXht959bfixPzgQlp93Tvi5b72KQdbfdGRHfRIYled3Fsvyzp+m3DS2NPy7b748fPT/PB1+rfM5WU9fDLKebPjvhUEW6IhBFggbXGoUNkL5SMGOf7EmPPjUdPilvzwY3vK6CxlkwfOM5dIQGIXndz65v37fG8OrOp9vP3D4+fCeDz8Ypk+9PP+y+fcMsuYKsmqAQRaoi0EWCBtcahQ2wu/+2pVBPme36YMPzGx8DLLgScZyyQiMwvM7C6/zCYNwzSWLw2uXvyp87z+5JCzuBNpbdj0Yjjzn5zePMMjO2uJ/2xBgkG1DSek1DLJKIB0OU/pGeFnntxT8zg9cGz74N0+FTz1yfMbA1115ftgyviq87/cPhMeefaHzf1/97J21Im6E1gbyql/689tk49pOoP3Qu18Xfnb3Y+F/ffpI08vg5/n8wpFnXZBBFqiPQRYIG1yq9I3wxquXhv/y9tc2Uv2TzzwTbnf0K3y4ETaq4oUaAqU/v3LLVy0/N5zb+enrA09OVwh8bMsbwt37O7+Ca9LPr+Di81tRxIMIAQbZCCDNywyymjR9jVX6Rih//Hjp0kUV6F9/1QXhx99yWbjlIw+FQ52/CX34y6cq1y0PuBFa0s+vdunPrxj5mbe9JnztFeeHb/2Nz4WTL37lV229rvMT2d/q/ET2zrufCB/4myfdiOPz60ZFFo0wyAI1McgCYYNLjcJG2I2Un5HtJsLjXAmMwvMr/8PzV77z6vC7/3A4/ObfPhmu7PyDCJtvWjXzu6A3feCBcPg5/g/RXOfvqPfNIAucAQyyQNjgUqOwEXYjZZDtJsLjXAmMyvP7rW9cHn70Gy4L5597dljQ+UtfDz49Hd4/+Vj4/BMnXKnjT2Rd6XDfDIMsUBGDLBA2uNSobIRgrAOX40Y4MLqRfOMoPb9ndRLs6s7vg/7yCy+Foyf8/KaC+ROPz+98Gvw+RoBBNkZI8TqDrCJMZ0ON0kboDH1tO9wIa7HwZAMBPr8NYIxO8/k1Ap9pWQZZoDgGWSBscCluhGDgkXLcCCOAeLlCgM9vBYf5AZ9fcwVZNcAgC9TFIAuEDS6VYiOcmpoKS8fWge8khAuuXhdWb9isUvfg7jvD8QP7VMbqZ5Bj+/eFiYmJMDm5p5+3Nb5W229jIV4wIaDtd+PG9YHP7+Aq+fwOzm4U38kgC7TOIAuEDS6lvRFu23Z72Lt3KvldTE9Ph6NHj4aFCxeFFStWhLvv3jsTntdu3qlSW36yMrspqQzYxyDj4xNh69bb+nhH80u1/TZX4hULAtp+Uc9vN6vZ8Kz9/N5003g4cuRIOHXqZFi2bFlYvHhxd2n1Yz6/6kiLHZBBFqiWQRYIG1xKeyNEtP/QQw+GPXt2z5W69NJVYceOHeG+QyeC5kZ4/eolaj8ZnWsW/E2OfsGIsi5Xil/5SfC9B3Wf3zetWhxuvfXW8Pjjh+Ycr1+/IaxZc83csfdvSvHrnbNVf+J3wfT0C1/57chWXYxIXQbZckXntlB2h9hZM3fdtTMcPLmEQXYWyCv/zc1vV/s8jBAoxW+KILt60Ylwyy03n0EwpzBbit8zJPDEDAHxyyALmgwMsiDQBmVyWiibQqxg2759e3jq9EUMsl1zKCe/Xa3zsAWBUvymCLKXLHg2bNmypZZiLmG2FL+1EngyiF8GWdBEYJAFgTYok8tC2SvECrZdu3aFB545zSDbNYdy8dvVNg9bEijFb4oge+3yBWHTpk2NJHMIs6X4bZQw4hfEL4MsaBIwyIJAG5TJYaGMhdgNGzZ2fvLyXvXP2PEzsgYTkiX7IpDD89vmhlIEWXl+77hje+Xz9N29eA+zpfjt5s7jrxBgkAXOBAZZIGxwKe8LZZsQOza2JqTaCLV+DRZY61w5737nGuU3AxEoxW/K5ze2hngOs6X4HWhyj8CbxC9/IgsSzSALAm1QxvNCGduA5CexEmLlK+VGaKBFraRnv2o3OcIDleI39fMbW0u8htlS/I7wI9rz1sUvg2xPRHoXGWT1WHobyetCGdt45odYYZp6I/TmrW0/Xv227Z+v602gFL+I5ze2pngMs6X47T2LR/eq+GWQBflnkAWBNijjcaGMbTjdIVawITZCAz1Dl/Tod+ib4gBzBErxi3p+Y2uLtzBbit+5CctvKgTEL4NsBUm6AwbZdGytR/a2UMY2mroQKwxRG6G1r37re/Pbb/98fW8CpfhFPr+xNcZTmC3Fb+9ZPLpXxS+DLMg/gywItEEZTwtlbINpCrGCDbkRGmgauKQnvwPfBN/YSKAUv+jnN7bWeAmzpfhtnMAjfkH8MsiCJgGDLAi0QRkvC2VsY+kVYgUbeiM0UDVQSS9+B2qeb4oSKMWvxfMbW3M8hNlS/EYn8oi+QPwyyILkM8iCQBuU8bBQxjaUWIgVbBYboYGuvkt68Nt303xDawKl+LV6fmNrj3WYLcVv6wk9Yi8UvwyyIOkMsiDQBmWsF8rYRtImxAo2q43QQFlfJa399tUsX9w3gVL8Wj6/sTXIMsyW4rfviT0ibxC/DLIg2QyyINAGZSwXytgG0jbECjbLjdBAW+uSln5bN8kXDkygFL/Wz29sLbIKs6X4HXiCF/5G8csgC5LMIAsCbVDGaqGMbRz9hFjBZr0RGqhrVdLKb6vm+KKhCZTi18PzG1uTLMJsKX6HnuiFDiB+GWRBchlkQaANylgslLENo98QK9g8bIQG+qIlLfxGm+IL1AiU4tfL8xtbm9BhthS/ahO+sIHEL4MsSCqDLAi0QRn0QhnbKAYJsYLNy0ZooLBnSbTfns3wojqBUvx6en5jaxQyzJbiV33iFzKg+GWQBclkkAWBNiiDXChjG8SgIVawedoIDTQ2lkT6bWyCF5IRKMWvt+c3tlahwmwpfpM9AJkPLH4ZZEESGWRBoA3KoBbK2MYwTIgVbN42QgOVtSVRfmuL82RyAqX49fj8xtYsRJgtxW/yByHTAuKXQRYkj0EWBNqgDGKhjG0Iw4ZYweZxIzTQeUZJhN8zivIEjEApfr0+v7G1K3WYLcUv7IHIrJD4ZZAFSWOQBYE2KJN6oYxtBBohVrB53QgNlFZKpvZbKcYDOIFS/Hp+fmNrWMowW4pf+IORSUHxyyALksUgCwJtUCblQhnbALRCrGDzvBEaaJ0rmdLvXBF+Y0agFL/en9/YWpYqzJbi1+wBcV5Y/DLIgiQxyIJAG5RJtVDGFn7NECvYvG+EBmpnSqbya3U/rFslUIrfHJ7f2JqWIsyW4rc6a3k0S0D8MsjO0kj8XwbZxIANh0+xUMYWfO0QK/hy2AgtNKfwa3EfrFlPoBS/uTy/sbVNO8yW4rd+9vKs+GWQBc0DBlkQaIMy2gtlbKFPEWIFWy4bIVqxtl90/6zXm0ApfnN6fmNrnGaYLcVv71k8ulfFL4MsyD+DLAi0QRnNhTK2wKcKsYItp40QqVnTL7Jv1mpHoBS/uT2/sbVOK8yW4rfdbB69V4lfBlmQdwZZEGiDMloLZWxhTxliBVtuGyFKtZZfVL+s0x+BUvzm+PzG1jyNMFuK3/5m9ei8WvwyyIJ8M8iCQBuU0VgoYwt66hAr2GQjnJqaCkvH1qlQPLZ/X5iYmAiTk3tUxrMaRMOvVe+sGydQit9cn9/Y2jdsmC3Fb3wmj+YrxC+DLMg9gywItEGZYRfK2EKOCLGCbdu228PevVOqBMfHJ8LWrbepjokebFi/6H5Zrz8CpfjN+fmNrYHDhNlS/PY3q0fn1eKXQRbkm0EWBNqgzDALZWwBR4VYA2zZlBzGbzY3OcKN0q8P+bG1cNAwS78+/KbqQvwyyKai2zUug2wXkIIOB10oYws3Q6yPSTKoXx/ds4sYAfqNEcJdj62Jg4RZ+sX5s6gkfhlkQeQZZEGgDcoMslDGFmyGWAORDSUH8dswFE87JEC/vqTE1sZ+wyz9+vKr3Y34ZZDVptowHoNsA5gCTve7UMYWaoZYX5OiX7++umc3MQL0GyOEvx5bI/sJs/SL94esKH4ZZEHEGWRBoA3K9LNQxhZohlgDgZGS/fiNDMXLDgnQr0MpnZZia2XbMEu/Pv1qdSV+GWS1aEbGYZCNAMr4ctuFMrYwM8T6nARt/frsnl3FCNBvjJDd9dia2SbM0q+dP0Rl8csgiyDdqcEgCwJtUKbNQhlbkBliDcS1LNnGb8uh+DKHBOjXoZR5LcXWzliYpd95MAv8VvwyyILEMsiCQBuUiS2UsYWYIdZAWh8lY377GIovdUiAfh1K6Woptob2CrP02wWzsEPxyyALksogCwJtUKbXQhlbgBliDYT1WbKX3z6H4ssdEqBfh1JqWoqtpU1hln5rYBZ0SvwyyIKEMsiCQBuUaVooYwsvQ6yBrAFKNvkdYCi+xSEB+nUopaGl2JpaF2bptwFmIafFL4MsSCaDLAi0QZm6hTK24DLEGogasGSd3wGH4tscEqBfh1J6tBRbW7vDLP32gFnAJfHLIAsSySALAm1QpnuhjC20DLEGkoYo2e13iKH4VocE6NehlEhLsTV2fpil3wjMzC+LXwZZkEQGWRBogzLzF8rYAssQayBoyJLz/Q45FN/ukAD9OpTSoqXYWjsbZum3BcyMXyJ+GWRBAhlkQaANyswulEeOHAl79uxu7IAhthGN6wuzfpctW+66TzY3GAH6HYybh3e1CbMrV64Mp0+fDnx+PRjT74FBVp9p44gMso1osr8gD9Ijjzwc7rnnnsZ7YYhtROP+AoOOe0VDNUi/Q+Ezf3MszN54443hiiuuZJA1N5WmAQbZNFxrR2WQrcVSxMlPf/re8IlPfKLxXhhiG9FkcYFBJwtNAzdJvwOjc/PGWJi94YYbwnXXvdlNv2xEjwCDrB7L6EgMslFEWb4gtoAyxGaptdI0g04FR3EH9FuG0thaPPuZ2TLulncxS4BBdpYE4L8MsgDI4BKxhZMhFiwkUTkGnURgnQxLv05EKLQRW5MZZhUgOxuCQRYo5LHHHg3nnXc+sCJLpSTw6KOP9PxM7I2vfC4rZQ8cG0Pguee+PFOIzy+GN7oK/aKJp60XW5vlYwZXXvmatE1wdBgBeX75WwtAuBlkQaABZWILJUMsQAKwBIMOELZBKfo1gJ64ZGyNZphNLAA4PIMsEDY/WgCEnbBU7I+u+HGChPCNhuYfPRuBB5WlXxBocJnYWs2PGYCFJCrHjxYkAls3LINsHZW8zsUWRobYvHy27ZZBpy2pPF9Hv3l6a9N1bM1mmG1D0fdrGGSBfhhkgbATlIotiDd2PhP7pjddn6Ayh7QmwKBjbSBtffpNy9d69NivR2SYtTY0XH0G2eH49fVuBtm+cLl6cSzE3nTTTeHyy6/gL9x2ZU2vGQYdPZYeR6Jfj1b0ehK/sX+whmFWjzd6JAZZIHEGWSBsxVKxECsfJ1ixYgX/CURF5t6GYtDxZkS3H/rV5elttFm/sX9CnGHWm7l2/TDItuOk8ioGWRWM0EHahNixsTVhdqHkv+UN1QMrRr8w1CaF6NcEO6zofL+xNZ1hFqZFrZD45a/fUsPZeyAG2d58vF2NLXjz/2LX/IXS232wn+EJ0O/wDD2PQL+e7QzfW7ff2NrOMDs8c+QI4pdBFkScQRYEWqFMbKGbH2KlXPdCqdACh3BEgH4dyUjQCv0mgOpoyDq/sTWeYdaRwEgr4pdBNgJJ6zKDrBbJtOPEFrjuECvd1C2Uabvk6EgC9Iukja9Fv3jmyIpNfmNrPcMs0tLgtcQvg+zg/Pp6J4NsX7hMXhxb2OpCrDTatFCa3ASLqhOgX3WkrgakX1c61Jvp5Te25jPMqutQH1D8MsiqY60fkEG2nouXs7EFrSnESv+9Fkov98c+BidAv4Ozy+Gd9JuDpcF7jPmNrf0Ms4OzR7xT/DLIIkh3ajDIgkAPUCa2kPUKsVIutlAO0BLf4ogA/TqSkaAV+k0A1dGQbfzG9gCGWUdCu1oRvwyyXVBSHTLIpiI73LixBSwWYqV6m4VyuC75bksC9GtJP31t+k3P2LJCW7+xvYBh1tJic23xyyDbzEf1CoOsKk6VwWILV5sQK42IW/ni75GdwVDc/6Pf4pRWboh+KziKO+jHb2xPYJj1Nz3EL4MsyIvAZtABwW5RJrZgtQ2xUqqfhbJFa3yJMwL060yIcjv0qwzU2XD9+o3tDQyzvgSLXwZZkBOBzSALgh0pE1uo+gmxUqrfhTLSHi87I0C/zoQot0O/ykCdDTeI39gewTDrR7L4ZZAF+RDYDLIg2D3KxBaofkOslBpkoezRIi85I0C/zoQot0O/ykCdDTeo39hewTDrQ7T4ZZAFuRDYDLIg2A1lYgvTICFWSg26UDa0ydPOCNCvMyHK7dCvMlBnww3jN7ZnMMzayxa/DLIgDwI79yC7bdvtYe/eKVVi4+MTYevW21THrBts//6Hwu7dk3WXZs4NGmLlzcMslI0N8YIbAvTrRkWSRug3CVY3gw7r10uYzXn/TTkZxC+DbErC88YW2LkH2Y0b14epqamwdGzdvDsb/Ntj+/eFiYmJMDm5Z/BBWrwzZYiV8sMulC1ugS8xJEC/hvABpekXANmwhIZfD2E21/03tXrxyyCbmvIr4wvsEoLsvQdPhLWbd6pQu//Om8P1q5ckDbKpQ6yA0FgoVYBykCQE6DcJVjeD0q8bFUka0fJrHWYlyOa2/yYR2jWo+GWQ7YKS6lBgM8hW6aYOsogQK3ektVBW6fDICwH69WIiTR/0m4arl1E1/VqGWQbZ+hklfhlk69monxXYDLJVrCmDLCrEyh1pLpRVQjzyQIB+PVhI1wP9pmPrYWRtv1ZhlkG2fjaJXwbZejbqZwU2g2wVa6ogiwyxckfaC2WVEo+sCdCvtYG09ek3LV/r0VP4tQizDLL1M0n8MsjWs1E/K7AZZKtYUwRZdIiVO0qxUFZJ8ciSAP1a0k9fm37TM7askMovOswyyNbPIvHLIFvPRv2swGaQrWLVDrIWIVbuKNVCWaXFIysC9GtFHlOXfjGcraqk9IsMswyy9TNI/DLI1rNRPyuwGWSrWDWDrFWIlTtKuVBWifHIggD9WlDH1aRfHGuLSqn9osIsg2z97BG/DLL1bNTPCmwG2SpWrSBrGWLljlIvlFVqPEIToF80cWw9+sXyRldD+EWEWQbZ+pkjfhlk69monxXYDLJVrBpB1jrEyh0hFsoqOR4hCdAvkja+Fv3imSMrovymDrMMsvWzRvwyyNazUT8rsBlkq1iHDbIeQqzcEWqhrNLjEYoA/aJI29ShXxvuqKpIvynDLINs/YwRvwyy9WzUzwpsBtkq1mGCrJcQK3eEXCirBHmEIEC/CMp2NejXjj2iMtpvqjDLIFs/W8Qvg2w9G/WzAptBtop10CDrKcTKHaEXyipFHqUmQL+pCduOT7+2/FNXt/CbIswyyNbPFPHLIFvPRv2swGaQrWIdJMh6C7FyRxYLZZUkj1ISoN+UdO3Hpl97Byk7sPKrHWYZZOtnifhlkK1no35WYDPIVrH2G2Q9hli5I6uFskqTR6kI0G8qsj7GpV8fHlJ1YelXM8wyyNbPEPHLIFvPRv2swGaQrWLtJ8h6DbFyR5YLZZUoj1IQoN8UVP2MSb9+XKToxNqvVphlkK2fHeKXQbaejfpZgc0gW8XaNsh6DrFyR9YLZZUqj7QJ0K82UV/j0a8vH9rdePCrEWYZZOtnhvhlkK1no35WYDPIVrG2CbLeQ6zckYeFskqWR5oE6FeTpr+x6NefE82OvPgdNswyyNbPCvHLIFvPRv2swGaQrWKNBdkcQqzckZeFskqXR1oE6FeLpM9x6NenF62uPPkdJswyyNbPCPHLIFvPRv2swGaQrWLtFWRzCbFyR54WyiphHmkQoF8Nin7HoF+/bjQ68+Z30DDLIFs/G8Qvg2w9G/WzAptBtoq1KcjmFGLljrwtlFXKPBqWAP0OS9D3++nXt59hu/Pod5AwyyBbPxPEL4NsPRv1swKbQbaKtS7I5hZi5Y48LpRV0jwahgD9DkPP/3vp17+jYTr06rffMMsgWz8LxC+DbD0b9bMCm0G2irU7yOYYYuWOvC6UVdo8GpQA/Q5KLo/30W8engbt0rPffsIsg2z9DBC/DLL1bNTPCmwG2SrW+UE21xArd+R5oawS59EgBOh3EGr5vId+83E1SKfe/bYNswyy9fbFL4NsPRv1swKbQbaKdTbIbt++I+zePVm9OO9ow4aNYWxszbwzvr71vlD6opVfN/Sbn7N+Oqbffmjl99oc/LYJs7feuiXce/BEWLt5p4qE2f13cnKPynhWg4hfBlkQfYHNIFuFLQ/StcsXhE2bNlUvzDvyHmKl1RwWynlI+W2fBOi3T2CZvZx+MxPWZ7u5+I2F2V27doUHnjnNINvlX/wyyHZBSXUosBlkq3QlyF6y4NmwZcuW6oVXjnIIsdJqLgtlLWSejBKg3yiirF9Av1nrizafk99eYXb79u3hqdMXMch2GRe/DLJdUFIdCmwG2SpdCbKrF50It9xyc/VC5yiXECuN57RQngGaJ6IE6DeKKOsX0G/W+qLN5+a3KczeddfOcPDkEgbZLuPil0G2C0qqQ4HNIFulK0H2usuWzPxE9vHHD81dzCnEStO5LZRzoPlNKwL02wpTti+i32zVtWo8R7/dYXbVqsuC/ET2vkP8jGy3dPHLINtNJdGxwNYKstu23R727p1K1GnzsFNTU2Hp2DrV/0V4bP++MD4+EQ4fPhxOnTrZYbQsLF68uLkJpStSc+vW21RGy3GhVLnxERmEfssWTb/02w8B1P47PT3d+SHJ0bBw4aKwcuXKmT0/xf47MTHRz+2rvFZ7/2WQVdESH0QzyMqv4ZgNlfHKuq+44Op1YfWGzSqDHtx9Zzh+YJ/KWP0MIuFZHl6tv63JjbAf+vm9ln7zc9ZPx/TbD638Xqvtl/vvcHMgxf7LIDuck9bvlodJ6yey2r9PrvVNFPJC+UjD9auXMMgW4jP1bWhvhKn75fj9EaDf/njl9mptv9x/h5sBKfZfBtnhnLR+N4Nsa1TJX5jiQZKmtf6HSnIALNAXAe2NsK/ifHFyAvSbHLFpAW2/DLLD6Uyx/zLIDuek9btHKcietSCEl0+3RgN/YYoHSW6CQRauElJQeyOENM0irQnQb2tUWb5Q2y+D7HDTIMX+yyA7nJPW7x6FILvm4leFf/NNq8PXrDovnHr55XDPgePhlz9+MBx57sXWnBAvTPEgSd8Msgh7+BraGyH+DlixFwH67UUn/2vafj0G2f/4LVeGN3Z+A1Dd1ye/cDz80l8erLtkci7F/ssgC1JZepC94Nyzw++859rwxLFT4dfvfiJcuPjscOv4qvD0c6fCLR95CES5XZkUD5JUZpBtxz+3V2lvhLndf+n90m/ZhrX9egyyb33DsnDZhedWRF6xbFHY+Ppl4Vf+6lD4yL6nK9csD1LsvwyyIKOlB9nxsaXhF7/jteE9H34wfPbxEzNU337divAT6y8Pb7/r8+Hgl06CSMfLpHiQpCqDbJx9jq/Q3ghzZFByz/Rbsl393/PtMch2G+x8ui/8+qY14fjzL4V/+4dfCJ4+6Zdi/2WQ7Z4BiY5LD7LXrT4v/EbnwfmR3zsQPvXI8RmK73zzypmPGnzLjs+Goyf8fLwgxYMkN8wgm+jhMR6WQcdYQOLy9JsYsPHw2n5zCLLv6Oy9PzKxKnzX/7g/PHn8lLGBavkU+y+DbJVxsqPSg+zZnb/hdVcnyC48e0HYec+T4fxzzwo/dNOqcN/B58Jtf/JIMq6DDJziQZI+GGQHseH/Pdobof87Hq0O6bds39p+vQfZFeedE37/B18ffufvn575mJ83uyn2XwZZkOXSg6xgvPj8heHD3/e6zudjz5mh+vCR58O7f+vB8MKLL4MotyuT4kGSygyy7fjn9irtjTC3+y+9X/ot27C2X+9B9vu+/pKwufNDpG/7jc+Fp5z9NFZmWor9l0EW9AyXHmSvuXhx+G/vvDo88NR0+PDfPR2WLTknvOsfXxwWdD6s88O/eyA8O82PFoCmGssoE9DeCJXb43BDEqDfIQE6f7u2X+9B9qM/cG041PlL1z/+BwdcmmGQdamlXVOlB9kfe8tl4dveuCLI52GfP/WVn8Betfzc8NH3rA3vn/xi+OP/+0w7UIBXpXiQpG3+RBYgz6CE9kZocAss2YMA/faAU8Albb+eg+zrL10SPviua8JP/tHD4eMPfsmlvRT7L38iC1JdepD9QOfhebLzvwJ/8o8frhCVIPu5zm8x+Ok/f7Ry3vIgxYMk98Mga2k1XW3tjTBdpxx5EAL0Owi1fN6j7ddzkH3fN14W/nnnV3G9dcfnwotO/1WiFPsvgyzoeSw9yP78t18VVnd+j92//M0H5ojKxwv+dPM/Ch/u/A67O6Yenztv/U2KB0nuiUHW2mya+tobYZouOeqgBOiTWOOcAAAKcUlEQVR3UHJ5vE/br+cgu/27x8LJF0+HH3P6sQKZMSn2XwZZ0LNYepD9+qsuCL/6jqtnPh/7oU89FVaef064+Z9dGm68emn43g89EB5+5gUQ6XiZFA+SVGWQjbPP8RXaG2GODErumX5Ltjtav0f2z977hjD5+aMz/wiCV6sp9l8GWZDt0oOsYJR/XeRHO3+0ceGrzpn5S16HOv8Iws/teSz87cNf+b2yINTRMikeJCnKIBtFn+ULGHSy1Na6afptjSrLF2r79foTWfnXNf/iR77G3d9J6Z40KfZfBtluyomORyHICjr5F0VevXRRePGl0+Fw55+n9fiV4kGS+2SQ9Wh7+J60N8LhO+IImgToV5Omv7G0/XoNsv7I13eUYv9lkK1nrX52VIKsOrgEA6Z4kKRNBtkEshwMqb0ROrgltjCPAP3Og1Hgt9p+GWSHmyQp9l8G2eGctH43g2xrVMlfmOJBkqYZZJOrMymgvRGa3ASLNhKg30Y0RVzQ9ssgO9y0SLH/MsgO56T1u7WD7NTUVFg6tq51fa0XXnD1urB6w2aV4Q7uvjMcP7BPZax+Bjm2f1+YmJgIk5N7+nlb42u1F8rGQrxgQoB+TbDDitIvDLVJIW2/EmS5/w6uMsX+yyA7uI++3ikPk9ZP7LZtuz3s3TvVV32NF88+vGs379QYbubXcMxOapUB+xhkfHwibN16Wx/vaH6p9kLZXIlXLAjQrwV1XE36xbG2qKTtl/vv8Ba1918G2eGdtBpBHiatINuqYIIXaf+RivYfMSS45VZDai+UrYryRTAC9AtDbVKIfk2ww4qW4pf7b/2UEb8MsvVs1M8KbAbZKlYG2SoPHvkkUMpG6JOufVf0a+8gZQel+GWQrZ8l4pdBtp6N+lmBzSBbxcogW+XBI58EStkIfdK174p+7R2k7KAUvwyy9bNE/DLI1rNRPyuwGWSrWBlkqzx45JNAKRuhT7r2XdGvvYOUHZTil0G2fpaIXwbZejbqZwU2g2wVK4NslQePfBIoZSP0Sde+K/q1d5Cyg1L8MsjWzxLxyyBbz0b9rMBmkK1iZZCt8uCRTwKlbIQ+6dp3Rb/2DlJ2UIpfBtn6WSJ+GWTr2aifFdgMslWsDLJVHjzySaCUjdAnXfuu6NfeQcoOSvHLIFs/S8Qvg2w9G/WzAptBtoqVQbbKg0c+CZSyEfqka98V/do7SNlBKX4ZZOtnifhlkK1no35WYDPIVrEyyFZ58MgngVI2Qp907buiX3sHKTsoxS+DbP0sEb8MsvVs1M8KbAbZKlYG2SoPHvkkUMpG6JOufVf0a+8gZQel+GWQrZ8l4pdBtp6N+lmBzSBbxcogW+XBI58EStkIfdK174p+7R2k7KAUvwyy9bNE/DLI1rNRPyuwGWSrWBlkqzx45JNAKRuhT7r2XdGvvYOUHZTil0G2fpaIXwbZejbqZwU2g2wVK4NslQePfBIoZSP0Sde+K/q1d5Cyg1L8MsjWzxLxyyBbz0b9rMBmkK1iZZCt8uCRTwKlbIQ+6dp3Rb/2DlJ2UIpfBtn6WSJ+GWTr2aifFdgMslWsDLJVHjzySaCUjdAnXfuu6NfeQcoOSvHLIFs/S8Qvg2w9G/WzAptBtoqVQbbKg0c+CZSyEfqka98V/do7SNlBKX4ZZOtnifhlkK1no35WYDPIVrEyyFZ58MgngVI2Qp907buiX3sHKTsoxS+DbP0sEb8MsvVs1M8KbAbZKlYG2SoPHvkkUMpG6JOufVf0a+8gZQel+GWQrZ8l4pdBtp6N+lmBzSBbxcogW+XBI58EStkIfdK174p+7R2k7KAUvwyy9bNE/DLI1rNRPyuwGWSrWBlkqzx45JNAKRuhT7r2XdGvvYOUHZTil0G2fpaIXwbZejbqZwU2g2wVK4NslQePfBIoZSP0Sde+K/q1d5Cyg1L8MsjWzxLxyyBbz0b9rMBmkK1iZZCt8uCRTwKlbIQ+6dp3Rb/2DlJ2UIpfBtn6WSJ+GWTr2aifFdgMslWsDLJVHjzySaCUjdAnXfuu6NfeQcoOSvHLIFs/S8Qvg2w9G/WzAptBtoqVQbbKg0c+CZSyEfqka98V/do7SNlBKX4ZZOtnifhlkK1no35WYDPIVrEyyFZ58MgngVI2Qp907buiX3sHKTsoxS+DbP0sEb8MsvVs1M8KbAbZKlYG2SoPHvkkUMpG6JOufVf0a+8gZQel+GWQrZ8l4pdBtp6N+lmBzSBbxcogW+XBI58EStkIfdK174p+7R2k7KAUvwyy9bNE/DLI1rNRPyuwGWSrWBlkqzx45JNAKRuhT7r2XdGvvYOUHZTil0G2fpaIXwbZejbqZwV2CUF2amoqLB1bp8Ln2P59YWJiIkxO7lEZz2qQUhZKK37e69Kvd0PD9Ue/w/Hz/u5S/EqQ5f575mwTvwyyZ3JJckZg5x5kt227PezdO6XKZ3x8ImzdepvqmOjBSlko0dxyqUe/uZgarE/6HYxbLu8qxS/33/oZJ34ZZOvZqJ8V2LkHWXUohQxYykJZiA7126BfdaSuBqRfVzrUm6FfdaSuBhS/DLIgJQKbQRYEG1yGCyUYOLgc/YKBg8vRLxg4uBz9goGDy4lfBlkQdIHNIAuCDS7DhRIMHFyOfsHAweXoFwwcXI5+wcDB5cQvgywIusBmkAXBBpfhQgkGDi5Hv2Dg4HL0CwYOLke/YODgcuKXQRYEXWAzyIJgg8twoQQDB5ejXzBwcDn6BQMHl6NfMHBwOfHLIAuCLrAZZEGwwWW4UIKBg8vRLxg4uBz9goGDy9EvGDi4nPhlkAVBF9gMsiDY4DJcKMHAweXoFwwcXI5+wcDB5egXDBxcTvwyyIKgC2wGWRBscBkulGDg4HL0CwYOLke/YODgcvQLBg4uJ34ZZEHQBTaDLAg2uAwXSjBwcDn6BQMHl6NfMHBwOfoFAweXE78MsiDoAptBFgQbXIYLJRg4uBz9goGDy9EvGDi4HP2CgYPLiV8GWRB0gc0gC4INLsOFEgwcXI5+wcDB5egXDBxcjn7BwMHlxC+DLAi6wGaQBcEGl+FCCQYOLke/YODgcvQLBg4uR79g4OBy4pdBFgRdYDPIgmCDy3ChBAMHl6NfMHBwOfoFAweXo18wcHA58csgC4IusBlkQbDBZbhQgoGDy9EvGDi4HP2CgYPL0S8YOLic+GWQBUEX2AyyINjgMlwowcDB5egXDBxcjn7BwMHl6BcMHFxO/DLIgqALbAZZEGxwGS6UYODgcvQLBg4uR79g4OBy9AsGDi4nfhlkQdAFNoMsCDa4DBdKMHBwOfoFAweXo18wcHA5+gUDB5cTvwyyIOgCm0EWBBtchgslGDi4HP2CgYPL0S8YOLgc/YKBg8uJXwZZEPTHHns0nHfe+aBqLIMk8NxzX54pR79I6rha9ItjbVGJfi2o42rSL461RSXxyyBrQZ41SYAESIAESIAESIAEhibAIDs0Qg5AAiRAAiRAAiRAAiRgQYBB1oI6a5IACZAACZAACZAACQxNgEF2aIQcgARIgARIgARIgARIwIIAg6wFddYkARIgARIgARIgARIYmsD/B/HhDhUDgs84AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import Image\n", "\n", "Image(filename=\"../statics/tianxuan_s1.png\")" ] }, { "cell_type": "code", "execution_count": 11, "id": "0461fc24", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'id': 'tianxuan_s1',\n", " 'type': 'CHIP',\n", " 'qubits': 9,\n", " 'T1': 30.593555450439453,\n", " 'T2': 12.94344425201416,\n", " 'Err': {'SQ': 0.0008366666666666665,\n", " 'CZ': 0.01615125,\n", " 'Readout': {'F0': 0.0209, 'F1': 0.0849111111111111}},\n", " 'report': {'at': 1683908208,\n", " 'consumed': 181292436838,\n", " 'done': 32164,\n", " 'total': 32175,\n", " 'waiting': 5039},\n", " 'at': 1685496713,\n", " 'state': 'on',\n", " 'links': {(0, 1): {'A': 0, 'B': 1, 'CZErrRate': 0.0135, 'GateLenInNs': 75.56},\n", " (0, 2): {'A': 0, 'B': 2, 'CZErrRate': 0.02358, 'GateLenInNs': 78.74},\n", " (0, 3): {'A': 0, 'B': 3, 'CZErrRate': 0.01899, 'GateLenInNs': 79.94},\n", " (0, 4): {'A': 0, 'B': 4, 'CZErrRate': 0.03357, 'GateLenInNs': 79.93},\n", " (1, 5): {'A': 1, 'B': 5, 'CZErrRate': 0.00552, 'GateLenInNs': 74.94},\n", " (2, 6): {'A': 2, 'B': 6, 'CZErrRate': 0.01951, 'GateLenInNs': 79.71},\n", " (3, 7): {'A': 3, 'B': 7, 'CZErrRate': 0.00422, 'GateLenInNs': 65.04},\n", " (4, 8): {'A': 4, 'B': 8, 'CZErrRate': 0.01032, 'GateLenInNs': 76.07}},\n", " 'bits': {0: {'Freqency': 3974.78,\n", " 'Qubit': 0,\n", " 'ReadoutF0Err': 0.035,\n", " 'ReadoutF1Err': 0.0876,\n", " 'SingleQubitErrRate': 0.00079,\n", " 'SingleQubitGateLenInNs': 40,\n", " 'T1': 34.524,\n", " 'T2': 9.62},\n", " 1: {'Freqency': 4180.96,\n", " 'Qubit': 1,\n", " 'ReadoutF0Err': 0.0308,\n", " 'ReadoutF1Err': 0.0732,\n", " 'SingleQubitErrRate': 0.00064,\n", " 'SingleQubitGateLenInNs': 40,\n", " 'T1': 34.459,\n", " 'T2': 8.321},\n", " 2: {'Freqency': 4106.44,\n", " 'Qubit': 2,\n", " 'ReadoutF0Err': 0.0192,\n", " 'ReadoutF1Err': 0.0728,\n", " 'SingleQubitErrRate': 0.00085,\n", " 'SingleQubitGateLenInNs': 40,\n", " 'T1': 18.917,\n", " 'T2': 5.222},\n", " 3: {'Freqency': 4657.5,\n", " 'Qubit': 3,\n", " 'ReadoutF0Err': 0.0073,\n", " 'ReadoutF1Err': 0.1156,\n", " 'SingleQubitErrRate': 0.00124,\n", " 'SingleQubitGateLenInNs': 40,\n", " 'T1': 31.079,\n", " 'T2': 42.79},\n", " 4: {'Freqency': 4405.96,\n", " 'Qubit': 4,\n", " 'ReadoutF0Err': 0.0117,\n", " 'ReadoutF1Err': 0.0483,\n", " 'SingleQubitErrRate': 0.0006,\n", " 'SingleQubitGateLenInNs': 40,\n", " 'T1': 32.353,\n", " 'T2': 9.3},\n", " 5: {'Freqency': 4371.74,\n", " 'Qubit': 5,\n", " 'ReadoutF0Err': 0.0125,\n", " 'ReadoutF1Err': 0.0604,\n", " 'SingleQubitErrRate': 0.00058,\n", " 'SingleQubitGateLenInNs': 40,\n", " 'T1': 30.132,\n", " 'T2': 6.954},\n", " 6: {'Freqency': 4247.08,\n", " 'Qubit': 6,\n", " 'ReadoutF0Err': 0.0465,\n", " 'ReadoutF1Err': 0.1351,\n", " 'SingleQubitErrRate': 0.00102,\n", " 'SingleQubitGateLenInNs': 40,\n", " 'T1': 34.827,\n", " 'T2': 4.462},\n", " 7: {'Freqency': 4462.26,\n", " 'Qubit': 7,\n", " 'ReadoutF0Err': 0.0096,\n", " 'ReadoutF1Err': 0.0525,\n", " 'SingleQubitErrRate': 0.0006,\n", " 'SingleQubitGateLenInNs': 40,\n", " 'T1': 28.269,\n", " 'T2': 13.429},\n", " 8: {'Freqency': 4335.34,\n", " 'Qubit': 8,\n", " 'ReadoutF0Err': 0.0155,\n", " 'ReadoutF1Err': 0.1187,\n", " 'SingleQubitErrRate': 0.00121,\n", " 'SingleQubitGateLenInNs': 40,\n", " 'T1': 30.782,\n", " 'T2': 16.393}},\n", " 'langs': ['tQASM', 'eQASM'],\n", " 'memo': 'tQLab 9Gmon',\n", " 'usage': '9gmon?o=0 \\nthe o(ptimized) to specify optimization level bits: both = 3 (bits 11) = gate decomposition = 2 (bit 10) | qubit mapping = 1 (bit 01)',\n", " 'native_gates': ['h', 'rz', 'x', 'y', 'z', 'cz', 'cx']}" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d.list_properties()" ] }, { "cell_type": "code", "execution_count": 12, "id": "b44f1844", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Freqency': 4106.44,\n", " 'Qubit': 2,\n", " 'ReadoutF0Err': 0.0192,\n", " 'ReadoutF1Err': 0.0728,\n", " 'SingleQubitErrRate': 0.00085,\n", " 'SingleQubitGateLenInNs': 40,\n", " 'T1': 18.917,\n", " 'T2': 5.222}" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d.list_properties()[\"bits\"][2]" ] }, { "cell_type": "code", "execution_count": 13, "id": "ae4798dc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(['h', 'rz', 'x', 'y', 'z', 'cz', 'cx'],\n", " 'tianxuan_s1',\n", " tencent,\n", " [[0, 1],\n", " [6, 2],\n", " [4, 0],\n", " [0, 4],\n", " [8, 4],\n", " [1, 5],\n", " [3, 7],\n", " [0, 3],\n", " [2, 0],\n", " [5, 1],\n", " [3, 0],\n", " [7, 3],\n", " [0, 2],\n", " [2, 6],\n", " [4, 8],\n", " [1, 0]])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# some meta data for the device\n", "\n", "d.native_gates(), d.name, d.provider, d.topology()" ] }, { "cell_type": "markdown", "id": "ccd597ae", "metadata": {}, "source": [ "The native gate set and the coupling map information is essential for TC to transpile the circuits so that they conform the standard of the corresponding devices." ] }, { "cell_type": "markdown", "id": "dcea5cfe", "metadata": {}, "source": [ "## Tasks" ] }, { "cell_type": "markdown", "id": "3ad38549", "metadata": {}, "source": [ "Submit a simple two-qubit task.\n", "\n", "Note that there is no need to explicitly add any measurement operations to the circuit. By default, t.results will return the number of (Z-basis) measurement outcomes for all (in this case 2) qubits in the specified circuit" ] }, { "cell_type": "code", "execution_count": 14, "id": "01a0fb92", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'00': 494, '11': 391, '10': 80, '01': 59}" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c = tc.Circuit(2)\n", "c.H(0)\n", "c.cx(0, 1)\n", "\n", "t = tc.cloud.apis.submit_task(device=d, circuit=c, shots=1024)\n", "\n", "t.results() # this will wait until the result is return" ] }, { "cell_type": "code", "execution_count": 15, "id": "33b9eb5a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
     ┌───┐     \n",
       "q_0: ┤ H ├──■──\n",
       "     └───┘┌─┴─┐\n",
       "q_1: ─────┤ X ├\n",
       "          └───┘
" ], "text/plain": [ " ┌───┐ \n", "q_0: ┤ H ├──■──\n", " └───┘┌─┴─┐\n", "q_1: ─────┤ X ├\n", " └───┘" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c.draw()" ] }, { "cell_type": "code", "execution_count": 16, "id": "88cfc4ad", "metadata": {}, "outputs": [ { "data": { "image/png": "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4oUXXmDNmjVMmTKFE044gQsvvJAXX3yx7DLVSxiQknqE9evXc/3119PU1MTy5ctpa2tj9uzZXHnllVxxxRX85je/YdCgQXzzm98su1T1EgakpB6jtbWVHTt20NrayvPPP88xxxzDvHnzuOCCCwCYMWMGt956a7lFqtcwICX1CCNGjOCTn/wkxx57LMcccwyHH344kyZN4ogjjqC2thaAkSNHsn79+pIrVW9hQErqEbZs2cJtt93GmjVreOqpp3juuee48847yy5LvVht2QVI0v645557OP744zn66KMBeNe73sUDDzzAs88+S2trK7W1taxbt44RI0aUXKl6C0eQknqEY489ll/84hc8//zzZCY///nPGTduHGeddRZz5swB4Oabb+Yd73hHyZWqtzAgJfUIU6ZM4YILLqC+vp5TTz2VnTt3cumll3L11Vfzla98hRNOOIHNmzfz4Q9/uOxS1Us4xSqpx7jqqqu46qqrXrZszJgxPPTQQyVVpN7MEaQkSQUMSEmSCjjFKu3F6NGjGTBgADU1NdTW1tLU1MSyZcu47LLL2L59O6NHj+Z73/seAwcOLLvUbumSWWVX0Hlumll2BSqDI0hpH+69914efvhhmpqaALj44ov58pe/zCOPPML555/PtddeW3KFkg4WA1LqgFWrVjFt2jQApk+fzi233FJyRZIOFgNS2ouI4JxzzmHSpEnceOONAIwfP57bbrsNgB/+8IesXbu2zBIlHUQGpLQXCxcuZOnSpfz0pz/la1/7GgsWLOBb3/oWX//615k0aRLbtm3jsMMOK7tMSQeJASntxa5Llg0ZMoTzzz+fhx56iJNPPpm77rqLJUuWcNFFF/G6172u5ColHSwGpFTgueeeY9u2bbu/vuuuu5gwYQLNzc0A7Ny5ky984QtcdtllZZYp6SAyIKUCmzZtYurUqUycOJHJkyfztre9jbe+9a18//vfZ+zYsZx88skMHz6cD33oQ2WXKukg8TxIqcCYMWNYtmzZHyz/xCc+wSc+8YkSKpLU1RxBSpJUwICUJKmAU6zqFbysmaTO5ghSkqQCBqQkSQUMSEmSChiQkiQVMCAlSSpgQEqSVMCAlCSpgAEpSVIBA1KSpAIGpCRJBQxISZIKGJCSJBUwICVJKmBASpJUwICUJKmAASlJUgEDUpKkAgakJEkFDEhJkgoYkJIkFTAg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\n", "text/plain": [ "
" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tc.results.counts.plot_histogram(t.results())" ] }, { "cell_type": "markdown", "id": "0596e9f1", "metadata": {}, "source": [ "Check with the analytical exact result is easy, just use tensorcircuit's sota tensornetwork based simulation engine. The answer is a quantum state as $\\vert 00\\rangle + \\vert 11\\rangle$" ] }, { "cell_type": "code", "execution_count": 17, "id": "dd798dd7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.49999997 0. 0. 0.49999997]\n", "{'00': 0.4999999701976776, '11': 0.4999999701976776}\n" ] } ], "source": [ "p = c.probability()\n", "print(p)\n", "exact_result = tc.results.counts.vec2count(p, prune=True)\n", "print(exact_result)" ] }, { "cell_type": "code", "execution_count": 18, "id": "0d5ca58d", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tc.results.counts.plot_histogram([t.results(), exact_result])\n", "# experiment vs exact" ] }, { "cell_type": "markdown", "id": "d48cb1c1", "metadata": {}, "source": [ "Let us further investigate the Task object ``t`` returned by ``submit_task``, it contains enriched information on manager, compiling, etc." ] }, { "cell_type": "code", "execution_count": 19, "id": "598448da", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'id': '3a8840fa-1831-48c3-85fd-67a66523ed8f',\n", " 'queue': 'txq.low',\n", " 'device': 'tianxuan_s1?o=3',\n", " 'qubits': 2,\n", " 'depth': 3,\n", " 'state': 'completed',\n", " 'shots': 1024,\n", " 'prior': 1,\n", " 'at': datetime.datetime(2023, 5, 31, 11, 45, 7, 695261),\n", " 'ts': {'completed': datetime.datetime(2023, 5, 31, 11, 45, 7, 695261),\n", " 'pending': datetime.datetime(2023, 5, 31, 11, 45, 6, 364959),\n", " 'scheduled': datetime.datetime(2023, 5, 31, 11, 45, 6, 359719)},\n", " 'md5': '9cb407b41938a256ec15dfec163dca1d',\n", " 'runAt': 1685504730279662,\n", " 'runDur': 1016276,\n", " 'source': 'OPENQASM 2.0;\\ninclude \"qelib1.inc\";\\nqreg q[2];\\nh q[0];\\ncx q[0],q[1];',\n", " 'version': '1',\n", " 'lang': 'OPENQASM',\n", " 'result': {'00': 494, '01': 59, '10': 80, '11': 391},\n", " 'optimization': {'progs': [{'code': 'Tencent Quantum Program\\nversion 1.0\\nqubit involved: q0,q1,q2,q3,q4,q5,q6,q7,q8\\n# section: eqasm\\n# section lines 3\\neqasm program\\nbs 1 H q0\\nbs 1 CX (q0, q1)\\nMEASZ q0,q1\\n# section: end\\n',\n", " 'lang': 'QEXE'},\n", " {'code': 'Tencent Quantum Program\\nversion 1.0\\nqubit involved: q0,q1,q2,q3,q4,q5,q6,q7,q8\\n# section: eqasm\\n# section lines 3\\neqasm program\\nbs 1 H q0\\nbs 1 CX (q0, q1)\\nMEASZ q0,q1\\n# section: end\\n',\n", " 'lang': 'QEXE_COMPACT'}],\n", " 'pairs': {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8}},\n", " 'results': {'00': 494, '01': 59, '10': 80, '11': 391},\n", " 'frontend': ,\n", " 'backend': }" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t.details(prettify=True)" ] }, { "cell_type": "code", "execution_count": 20, "id": "c6a539ab", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'completed'" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t.status()" ] }, { "cell_type": "code", "execution_count": 21, "id": "b3fcd4ec", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'3a8840fa-1831-48c3-85fd-67a66523ed8f'" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t.id_" ] }, { "cell_type": "markdown", "id": "f951f18c", "metadata": {}, "source": [ "The task can be retrieved from cloud with the id without task object `t`" ] }, { "cell_type": "code", "execution_count": 22, "id": "00e6c83d", "metadata": {}, "outputs": [], "source": [ "t1 = tc.cloud.apis.get_task(t.id_)" ] }, { "cell_type": "code", "execution_count": 23, "id": "19a5e66b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
     ┌───┐     \n",
       "q_0: ┤ H ├──■──\n",
       "     └───┘┌─┴─┐\n",
       "q_1: ─────┤ X ├\n",
       "          └───┘
" ], "text/plain": [ " ┌───┐ \n", "q_0: ┤ H ├──■──\n", " └───┘┌─┴─┐\n", "q_1: ─────┤ X ├\n", " └───┘" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t1.details(prettify=True)[\"frontend\"].draw()\n", "# exactly the task we submitted" ] }, { "cell_type": "code", "execution_count": 24, "id": "1e7520af", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'00': 494, '11': 391, '10': 80, '01': 59}" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t1.results()" ] }, { "cell_type": "markdown", "id": "303cf6c3", "metadata": {}, "source": [ "Task group management is also possible but not shown here. Try using ``group`` argument when ``submit_task`` and ``list_task`` when retrieving." ] }, { "cell_type": "markdown", "id": "ce9f8313", "metadata": {}, "source": [ "## Cloud simulator\n", "\n", "We can also submit tasks to run on tc simulators on the cloud, the only thing you need to change is the device name, and now the result becomes exact." ] }, { "cell_type": "code", "execution_count": 25, "id": "adadefd1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'11': 546, '00': 478}" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c = tc.Circuit(2)\n", "c.H(0)\n", "c.cx(0, 1)\n", "\n", "t = tc.cloud.apis.submit_task(device=\"simulator:tc\", circuit=c, shots=1024)\n", "\n", "t.results() # this will wait until the result is return\n", "# instead, using wait=False for t.results(wait=False), the task objects can be returned in async mode" ] }, { "cell_type": "markdown", "id": "c00c7dde", "metadata": {}, "source": [ "**Batch submission:** Tasks can also submitted in batch, either on real devices or on simulators, a list of task object is returned by ``submit_task``, if the circuit submitted is in a list. In this way, the joint tasks are executed on the QPU at the same time so that the noise profile remains consistent." ] }, { "cell_type": "code", "execution_count": 26, "id": "7f57f4e2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'10': 524, '00': 500}\n", "{'00': 519, '01': 505}\n" ] } ], "source": [ "c1 = tc.Circuit(2)\n", "c1.h(0)\n", "\n", "c2 = tc.Circuit(2)\n", "c2.h(1)\n", "\n", "ts = tc.cloud.apis.submit_task(device=\"simulator:tc\", circuit=[c1, c2], shots=1024)\n", "for t in ts:\n", " print(t.results())" ] }, { "cell_type": "markdown", "id": "1e72f1ab", "metadata": {}, "source": [ "## Compling: gate decomposition and qubit mapping" ] }, { "cell_type": "markdown", "id": "7bea5aba", "metadata": {}, "source": [ "Say we want to simulate the following logic circuit, however, the gate set and the coupling for two-qubit gates are both incompatible with our real device" ] }, { "cell_type": "code", "execution_count": 27, "id": "2fc080c9", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c = tc.Circuit(5)\n", "c.rx(0, theta=1.5708)\n", "for i in range(4):\n", " c.cx(i, i + 1)\n", "c.measure_instruction(*range(5))\n", "# note for tasks involving qubit mapping, we recommend you add the measure instruction explicitly\n", "c.draw(output=\"mpl\")" ] }, { "cell_type": "code", "execution_count": 28, "id": "ea2b3692", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'00000': 4014, '11111': 4178}" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# the ideal answer with shot noise\n", "c.sample(allow_state=True, batch=8192, format=\"count_dict_bin\")" ] }, { "cell_type": "markdown", "id": "79349e8e", "metadata": {}, "source": [ "The target state we prepare is the so called GHZ state (here is GHZ-5), which is also famuous as Schordinger cat state, as it is a superposition of two very different (macroscopic) quantum states: $\\vert 00000\\rangle + \\vert 11111\\rangle$. GHZ state is also a great measure to determine the quality of the quantum hardware.\n", "\n", "\n", "By default the **backend compiler** options are both enabled which we write expicitly below" ] }, { "cell_type": "code", "execution_count": 29, "id": "f381a9f7", "metadata": {}, "outputs": [], "source": [ "t = tc.cloud.apis.submit_task(\n", " circuit=c,\n", " shots=8192,\n", " device=d,\n", " enable_qos_gate_decomposition=True,\n", " enable_qos_qubit_mapping=True,\n", ")" ] }, { "cell_type": "code", "execution_count": 30, "id": "0704b37f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'00000': 3794,\n", " '11111': 862,\n", " '00010': 584,\n", " '10000': 311,\n", " '00011': 258,\n", " '01111': 254,\n", " '00110': 221,\n", " '10111': 188,\n", " '00111': 176,\n", " '11101': 169,\n", " '11000': 128,\n", " '00100': 113,\n", " '11100': 104,\n", " '10010': 102,\n", " '01010': 89,\n", " '00001': 87,\n", " '10100': 84,\n", " '11110': 79,\n", " '11011': 78,\n", " '01011': 71,\n", " '01000': 66,\n", " '01101': 63,\n", " '01110': 63,\n", " '10110': 49,\n", " '01100': 43,\n", " '10011': 42,\n", " '00101': 26,\n", " '10101': 25,\n", " '10001': 18,\n", " '01001': 15,\n", " '11001': 15,\n", " '11010': 15}" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rb = t.results()\n", "rb" ] }, { "cell_type": "markdown", "id": "9847ccaa", "metadata": {}, "source": [ "We can inspect the circuit compiled after the backend server compiling:" ] }, { "cell_type": "code", "execution_count": 31, "id": "24748fe7", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t.details(prettify=True)[\"backend\"].draw(idle_wires=False, output=\"mpl\")" ] }, { "cell_type": "code", "execution_count": 29, "id": "5f0ad718", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{0: 1, 1: 3, 2: 2, 3: 0, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8}" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t.get_logical_physical_mapping() # the logical qubit - physical qubit mapping is also returned by the server" ] }, { "cell_type": "markdown", "id": "98b2b053", "metadata": {}, "source": [ "To better customize and use the advanced compiling system, we strongly recommend the users to compile the circuit before task submission as **frontend compiling**" ] }, { "cell_type": "code", "execution_count": 32, "id": "4debc9ad", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'logical_physical_mapping': {0: 6, 1: 2, 2: 0, 3: 4, 4: 8}, 'positional_logical_mapping': {0: 0, 1: 1, 2: 2, 3: 3, 4: 4}}\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c1, info = tc.compiler.default_compile(\n", " c, compiled_options={\"coupling_map\": d.topology()}\n", ")\n", "print(info)\n", "c1.draw(idle_wires=False, output=\"mpl\")" ] }, { "cell_type": "markdown", "id": "258236df", "metadata": {}, "source": [ "We now submit the compiled circuit ``c1`` for the qcloud, with now the ``logical_physical_mapping`` in ``info``, the result is improved with tc built in compiler" ] }, { "cell_type": "code", "execution_count": 33, "id": "3a165a8c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'00000': 3506,\n", " '11111': 1962,\n", " '01111': 523,\n", " '11011': 279,\n", " '10000': 262,\n", " '11110': 257,\n", " '10111': 174,\n", " '11000': 167,\n", " '00111': 148,\n", " '11101': 109,\n", " '01000': 92,\n", " '01011': 90,\n", " '00001': 87,\n", " '01110': 85,\n", " '00011': 80,\n", " '11100': 72,\n", " '11010': 45,\n", " '00100': 42,\n", " '10011': 31,\n", " '00110': 24,\n", " '01101': 24,\n", " '00010': 22,\n", " '10110': 18,\n", " '11001': 17,\n", " '01100': 16,\n", " '01010': 15,\n", " '10100': 11,\n", " '00101': 10,\n", " '10001': 10,\n", " '10101': 8,\n", " '01001': 4,\n", " '10010': 2}" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t = tc.cloud.apis.submit_task(\n", " circuit=c1,\n", " shots=8192,\n", " device=d,\n", " enable_qos_gate_decomposition=False,\n", " enable_qos_qubit_mapping=False,\n", ")\n", "rf = t.results()\n", "rf" ] }, { "cell_type": "code", "execution_count": 34, "id": "22d46c41", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdEAAAFTCAYAAABmuzZIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAybElEQVR4nO3deXwV5dn/8c8FgSxCBFQIAWRfwxqjNDaCyw+xLn1cqlal7mL1UYs7LlXE+qitUitqpVo3HmvrUvcNN5ZoHjSgKIugsmiQTdmChGDI9ftjJukhBiFjOCfL9/16nRcnM/eZXOOJ53vmnnvuMXdHREREaq5JogsQERGprxSiIiIiESlERUREIlKIioiIRKQQFRERiUghKiIiElFSoguoS/bee2/v0qVLossQEZE6ZNasWd+4+z7VrVOIxujSpQuFhYWJLkNEROoQM1u2o3XqzhUREYlIIZpA69evp0WLFqSmppKSksLw4cMB2HPPPUlNTSU1NZWmTZvSvn17AJYsWUJmZiapqam0aNGCZ599drvtbd26lbS0NNq1axf3fRERaYwUogmUnp7O559/TklJCWvXrmXWrFk8+OCDbNiwgZKSEkpKSsjIyOCYY44B4KSTTqJ3796UlJTw5JNPcs4552y3vRNPPJG2bdsmYldERBolhWgCNWnShIyMDAA2b95MeXk5Zla5vqioiBUrVnDDDTcAsGzZMk444QQAjjzySIqLi5k7dy4AH3zwATNmzODiiy+O816IiDReCtEE27p1K6mpqeyzzz4MGDBgu6PL8ePHk5mZSceOHQHo0aMHDz30EAAPP/wwZWVlfPTRRwAcd9xx3H333TRt2jTu+yAi0lglLETN7BozczO7J2aZmdk4M/vazErMbKqZZVV5XWszm2xmG8LHZDNrVaXNADObFm5juZndYLGHeHVI8+bNKSkpYenSpSxatGi785zPPvssp5xySuXPTz75JMXFxaSmpnLzzTeTlpZGs2bNuOGGG2jVqhWjRo1KxC6IiDRalohboZnZz4AngI3ADHe/KFx+NXA9cCawELgByAN6u3tx2OZVYF/g3HBzDwKL3f2YcH06sAiYDowH+gAPA+Pc/c4fqysnJ8cTeYnLoYceSlpaGi+99BILFy6kb9++rF27llatWv2gbXl5Oc2bN2fp0qWceOKJvP/++5gZ7k55eTldunRh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UjjmmGOYNWtWAvai4VCISo01bdqUjz76iKKiIt5//33mzp3LrbfeyqeffsoHH3zA2rVruf322390G2VlZcyYMYM77riDDz74gMWLF+vbsMgOLFiwgGXLlgFUDizKzs6uHHtQXl7Oo48+SteuXQF46623KC8vB+Dxxx+nvLycnj17cvrpp1NaWsqCBQsq2/Xt2zf+O9SAKEQlslatWnHIIYfw2muv0b59e8yM5ORkzjrrLN5//30guIdfxX0GAYqKiirv6zd48GC6detGUlISxx577HaDjkTkP+bNm0ffvn1JTU0lMzOT/fbbj/Hjx3PIIYeQkpJCWloa69evr7wP8R133EFaWhqpqan89re/ZeLEiTRp0oTmzZtz4403kp2dTUpKCu7OQw89lNidq+cUolIja9asYf369UBwA/E33niDPn36sGLFCiAYqPbcc8/Rv39/AH75y1/y2GOP4e783//9H3vuuSft27dn//33Z/369axZswaAt99+m379+iVkn0Tqul/96lds3ryZkpIStmzZUnnec926dWzZsoUtW7awZMmSyhG8r776Klu2bKGkpITi4mIuvPDCym2NHTu2cjuff/65xiP8RBpYJDWyYsUKzjjjDLZt20Z5eTknnXQSRx99NIceeihr1qzB3Rk8eDD3338/AEceeSSvvPIKPXr0IC0tjYcffhgIuoTvuOMODjvssIqR0Zx33nmJ3DURkRrTBPQxamsC+oY8OldEpLHRBPQiIiK7gUJUREQkIoWoiIhIRApRERGRiBSiIiIiESlERUREIlKIioiIRKQQFRERiUghKiIiEpFCVEREJCLNnSsikgD1bXpQ0BSh1dGRqIiISEQ6EhW+6D0u0SXUWPeF4xJdgoiIjkRFRESiUoiKiIhEpBAVERGJSCEqIiISkUJUREQkIoWoiIhIRApRERGRiBSiIiIiESlERUREIlKIioiIRKQQFRERiUghKiIiEpFCVEREJCKFqIiISEQKURERkYgUoiIiIhEpREVERCJSiIqIiESkEBUREYlIISoiIhKRQlRERCQihaiIiEhEClEREZGIFKIiIiIRKURFREQiUoiKiIhEpBAVERGJSCEqIiISUdxC1Mz+28w+NrON4aPAzI6KWW9mNs7MvjazEjObamZZVbbR2swmm9mG8DHZzFpVaTPAzKaF21huZjeYmcVpN0VEpBGJ55FoEXA1kA3kAG8Dz5nZwHD9VcDlwMXA/sBq4A0zaxmzjX+Erz8ifGQDkytWmlk68AawKtzG74Argct2216JiEijlRSvX+Tuz1dZdJ2ZXQDkmtknwBjgNnd/BsDMziAI0lOBSWbWlyA489y9IGxzPjDDzHq7+0LgNCANOMPdS4C5ZtYHuMzMJri77/49FRGRxiIh50TNrKmZ/RpoAbwHdAUygCkVbcIQnA4cGC7KBTaF7Su8C3xXpc2M8LUVXgcygS61viMiItKoxe1IFILzlUABkEIQiMe5+ydmVhGCq6q8ZBXQIXyeAayJPZp0dzez1eG6ijZF1WyjYt2SamoaDYwGyMzMZOrUqQB069aNli1bMmfOHAD22msvsrKymD59OgBJSUnk5eUxe/ZsNm7cCEBOTg6rVq0Cuu/afxCJrDbep6+++gqAnj17kpyczNy5cwFo27YtvXr1Ij8/H4Dk5GRyc3MpLCxk06ZNAAwdOpSioiKWL18OQO/evWnatCnz588HICMjg65du1JQUABAamoqQ4cOZebMmZSUBN/xcnNzWbJkCStXrgSgX79+bNu2jYULFwLQoUMHOnbsyMyZMwFo0aIFOTk5FBQUUFpaCkBeXh6LFi1i9erVAPTv35/S0lI+++wzADp16kS7du0oLCwEID09nezsbPLz8ykrKwNg2LBhzJs3j2+//RaAQYMGUVxczOLFiwHo0qULbdq0Yfbs2QC0bt2aQYMGMW3aNNwdM2P48OHMmTOHdevWAZCdnc3atWtZunSp3qcdvE+wN/VNfn7+Lr1P33zzDWeeeSbr1q0jKSmJCy+8kOzsbG666SaWL19OWloaq1evJi0tjQcffJBNmzYxduxYNm/eTFJSErfccgvDhw/f7n264oormDdvHg8//HDc/3/6MRbPHk4zaw7sC+wJ/Ao4DzgYSCc4quzs7l/GtH8I6ODuI83sWuBcd+9WZZuLgQfc/VYzmwIUufvZMev3BZYBB1Z0A+9ITk6OV3zY/BTn3fWTNxFXY/86LtEl1Fj3heMSXYLIT1LfPicAHhiza+1WrFjBihUryM7Opri4mP3224/nnnuOfv36Vba5/PLL2XPPPbnhhhv48MMPadeuHZmZmcydO5eRI0dWfvEB+Pe//83TTz/Nxx9/XPklKp7MbJa751S3Lq7due6+1d0/d/dZ7n4N8BFwKbAybNKuykvaxaxbCewTO9I2fN62SpvqtkFMGxER2Y3at29PdnY2AC1btqRv377bhaK78+STT3LKKacAMGTIEDIzMwHIysqipKSk8ghw06ZNTJgwgeuvvz7Oe7FrEn2daBMgmaCbdSUwomKFmaUAB/Gfc6AFBOdQc2NenwvsUaXNQeFrK4wAvgaW1n75IiLyY5YuXcqHH37I0KFDK5fNmDGDdu3a0bNnzx+0f+aZZ8jOziY5ORmA3//+91x++eWkpaXFreaaiOd1oreZ2UFm1iW8lvNWgq7cx8PznHcBV5vZ8WbWH3iE4LzpPwDcfQHwGsFI3VwzywUmAS+FI3MJ224GHjGz/mZ2PDAW0MhcEZE427RpEyeccAJ33XUX6enplcufeOKJyqPQWPPmzePqq69m0qRJAHz00Ud88cUXHHfccXGruabiObAoA/jf8N8NwMfAL9z99XD9H4FU4F6gNTATONzdi2O2cSowkWDELcALwEUVK919g5mNCLdRCKwD7gQm7KZ9EhGRanz//feccMIJnHbaaRx//PGVy8vKyvj3v//NrFmztmtfVFTEcccdx2OPPUb37sHgzIKCAgoLC+nSpQtlZWWsXr2agw8+uHJgYV0Qz+tEz9zJegfGhY8dtVkHjNrJdj4BhtW4QBERqRXuzjnnnEPfvn257LLt57p588036dOnDx07dqxctn79eo466ihuu+02fv7zn1cuv+CCC7jggguAoFv46KOPrlMBCok/JyoiIg3Mu+++y+TJk3n77bcZPHgwgwcP5pVXXgHgn//85w+6cu+55x4+//xzxo8fX9m+4jKTui6u14mKiEjDl5eXx46GoTzyyCM/WHb99dfvdPRtly5dEnJ5y87oSFRERCQihaiIiEhEClEREZGIFKIiIiIRKURFREQiUoiKiIhEpBAVERGJSCEqIiISkUJUREQkIs1YJCIiu+SL3uMSXUKNdF84brf/Dh2JioiIRKQQFRERiUghKiIiEpFCVEREJCKFqIiISEQKURERkYgUoiIiIhEpREVERCJSiIqIiESkEBUREYlIISoiIhKRQlRERCQihaiIiEhEClEREZGIFKIiIiIRKURFREQiUoiKiIhEpBAVERGJSCEqIiISkUJUREQkIoWoiIhIRApRERGRiHY5RM1smJklVbM8ycyG1W5ZIiIidV9NjkTfAdpUs3zP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VUyaNIkNGzZUvm7ChAlcc801zJ07l549e0b63V/0HldLexEf9e1vor59TkD9+6yorb8JM5vl7jnVratL3bkrw3/bVVneLmbdSmCf2JG24fO2VdpUt43Y3yFSL0ycOJF99tmHvn37kpaWxjHHHMOMGTNo3rw5V155JQC33XZb5VE2wNNPP83VV1/NCy+8EDlARWTX1KUQXUIQciMqFphZCnAQ/zkHWkAwwjc35nW5wB5V2hwUvrbCCOBrYOnuKFxkd8nKyuLLL7/km2++oby8nLfeeos+ffowZMgQHn74YQDuvvtu0tLSgKBL85RTTuGee+5h5MiRiSxdpFGI6zlRM2sB9Ah/bALsa2aDgbXu/qWZ3QVca2afAouA6wkGEv0DwN0XmNlrBCN1R4fbmQS8FI7MJWx7I/CImf0B6AWMBW7SyFypb8455xwee+wxOnTogJmRmZnJQw89xLp169h///1JSUmhWbNmlYF65plnsm3bNsaMGcOYMWNo0qQJ3333XYL3QqThivfAohzgnZifbwofjwJnAn8EUoF7gdbATOBwd48d5XAqMJFgxC3AC8BFFSvdfYOZjQi3UQisA+4EJtT+7ojsftOmTfvBsvT09MrBD7EqBlGISHzE+zrRqcAOZw4KjxTHhY8dtVkHjNrJ7/kEGBalRhERkV1Vl86JioiI1CsKURERkYjq0mQLIg1WvbwmMNEFiNQDOhIVERGJSCEqIiISkUJUREQkIoWoiIhIRApRERGRiBSiIiIiESlERUREIlKIioiIRKQQFRERiUghKiIiEpFCVEREJCKFqIiISEQKURERkYgUoiIiIhEpREVERCJSiIqIiESkEBUREYlIISoiIhKRQlRERCQihaiIiEhEClEREZGIFKIiIiIRKURFREQiUoiKiIhEpBAVERGJSCEqIiISkUJUREQkIoWoiIhIRApRERGRiBSiIiIiESlERUREIlKIioiIRKQQFRERiUghKiIiEpFCVEREJCKFqIiISEQKURERkYgUoiIiIhEpREVERCJSiIqIiESkEBUREYlIISoiIhKRQlRERCQihaiIiEhEClEREZGIFKIiIiIRKURFREQiUoiKiIhEpBAVERGJSCEqIiISkUJUREQkogYbomZ2oZktMbMtZjbLzA5KdE0iItKwNMgQNbOTgb8A/wMMAd4DXjWzfRNamIiINCgN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\n", "text/plain": [ "
" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tc.results.counts.plot_histogram([rb, rf], number_to_keep=2)\n", "# backend compiling vs frontend compiling" ] }, { "cell_type": "markdown", "id": "60ba2314", "metadata": {}, "source": [ "## Readout Error Mitigation" ] }, { "cell_type": "markdown", "id": "acc9f9ab", "metadata": {}, "source": [ "The above results can be further improved via readout error mitigation (a classical algorithmic postprocessing on the measurement results)" ] }, { "cell_type": "code", "execution_count": 35, "id": "da287ca9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'00000': 3931.5654653719635,\n", " '11111': 3736.9302177814375,\n", " '11000': 156.2388037789295,\n", " '00111': 139.79207327296174,\n", " '10000': 82.70413218088015,\n", " '10111': 62.54914892519676,\n", " '11100': 40.2309011836783,\n", " '00011': 34.01063384376864,\n", " '01111': 5.923071025515406,\n", " '00001': 2.0555526356691276}" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mit = tc.results.rem.ReadoutMit(d.name + \"?o=0\")\n", "mit.cals_from_system(9)\n", "mr = mit.apply_correction(t.results(), qubits=5, **info)\n", "mr" ] }, { "cell_type": "code", "execution_count": 36, "id": "1cbf19de", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tc.results.counts.plot_histogram([t.results(), mr], number_to_keep=2)\n", "# raw vs mitigated" ] }, { "cell_type": "markdown", "id": "73a6c287", "metadata": {}, "source": [ "We can also collect the readout calibriation from the API, but the results can be wrose since it is not up to date" ] }, { "cell_type": "code", "execution_count": 37, "id": "43ea80ec", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mit1 = tc.results.rem.ReadoutMit(d.name + \"?o=0\")\n", "mit1.cals_from_api(9)\n", "mr1 = mit1.apply_correction(t.results(), qubits=5, **info)\n", "tc.results.counts.plot_histogram([mr, mr1], number_to_keep=2)\n", "\n", "# mitigated via real time calibriation vs. mitigated via api calibriation data" ] }, { "cell_type": "markdown", "id": "8ec8d9c8", "metadata": {}, "source": [ "Readout error mitigation in tc supports many other options for subset measurement, scalable mitigation for hundereds of qubits, customized calibriation in local and global mode and native error mitigated expectations, please refer to the API documentation for more interesting usages. For example, we can directly compute the expectation $$ (ideal value should be 1) as" ] }, { "cell_type": "code", "execution_count": 38, "id": "77e7d8e1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array(1.+0.j, dtype=complex64), 0.9584156264735034)" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c.expectation_ps(z=[0, 1]), mit.expectation(t.results(), [0, 1])" ] }, { "cell_type": "markdown", "id": "7b156c6f", "metadata": {}, "source": [ "## High level API\n", "\n", "Ultimately, for near term quantum computing tasks, the users only want to evaluate some given observable expectation for a circuit without worrying too much details above: compilation, error mitigation, subset measruement, positional/logical/physical mapping etc. Therefore, for most of the applications, `batch_expectation_ps` method is all you need." ] }, { "cell_type": "code", "execution_count": 39, "id": "f07070b5", "metadata": {}, "outputs": [], "source": [ "import logging\n", "\n", "logger = logging.getLogger(\"tensorcircuit.cloud\")\n", "logger.setLevel(logging.INFO)\n", "# ch = logging.StreamHandler()\n", "# ch.setLevel(logging.INFO)\n", "# logger.addHandler(ch)\n", "\n", "# we enable log for the high level API to see what happen behind the scene" ] }, { "cell_type": "markdown", "id": "4f50a8f1", "metadata": {}, "source": [ "$\\langle Z_0Z_1\\rangle$" ] }, { "cell_type": "code", "execution_count": 40, "id": "2100ff5d", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorcircuit.cloud.wrapper:submit task on tencent::tianxuan_s1 for 1 circuits\n", "INFO:tensorcircuit.cloud.wrapper:finished collecting count results of 1 tasks in 4.873 seconds\n", "INFO:tensorcircuit.cloud.wrapper:submit task on tencent::tianxuan_s1 for 2 circuits\n", "INFO:tensorcircuit.cloud.wrapper:finished collecting count results of 2 tasks in 7.6044 seconds\n" ] }, { "data": { "text/plain": [ "array([0.82589585])" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tc.cloud.wrapper.batch_expectation_ps(c, pss=[[3, 3, 0, 0, 0]], device=d)\n", "# compute Z0Z1" ] }, { "cell_type": "markdown", "id": "630b8791", "metadata": {}, "source": [ "$\\langle Z_0Z_1\\rangle+0.5\\langle Z_1Z_2\\rangle$" ] }, { "cell_type": "code", "execution_count": 41, "id": "c405123f", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorcircuit.cloud.wrapper:submit task on tencent::tianxuan_s1 for 1 circuits\n", "INFO:tensorcircuit.cloud.wrapper:finished collecting count results of 1 tasks in 4.9699 seconds\n" ] }, { "data": { "text/plain": [ "array(1.54442738)" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tc.cloud.wrapper.batch_expectation_ps(\n", " c, pss=[[3, 3, 0, 0, 0], [0, 3, 3, 0, 0]], device=d, ws=[1, 0.5]\n", ")\n", "# compute Z0Z1 + 0.5*Z1Z2" ] }, { "cell_type": "markdown", "id": "0965380b", "metadata": {}, "source": [ "The interface is also unifying the numerical simulation (exact) interface with QPU experiments, by spcifying the device as ``None``, we can obtain the expected result from tc simulator" ] }, { "cell_type": "code", "execution_count": 42, "id": "5744293b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(1.5+0.j)" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tc.cloud.wrapper.batch_expectation_ps(\n", " c, pss=[[3, 3, 0, 0, 0], [0, 3, 3, 0, 0]], device=None, ws=[1, 0.5]\n", ")" ] }, { "cell_type": "markdown", "id": "300cff3a", "metadata": {}, "source": [ "The results with readout error mitigation disabled can become worse. Note how we cache the readout error calibriation within tc, so that REM is effcient to use." ] }, { "cell_type": "code", "execution_count": 8, "id": "0e49467d", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorcircuit.cloud.wrapper:submit task on tencent::tianxuan_s1 for 1 circuits\n", "INFO:tensorcircuit.cloud.wrapper:finished collecting count results of 1 tasks in 3.6587 seconds\n" ] }, { "data": { "text/plain": [ "array(0.8828125)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tc.cloud.wrapper.batch_expectation_ps(\n", " c,\n", " pss=[[3, 3, 0, 0, 0], [0, 3, 3, 0, 0]],\n", " device=d,\n", " ws=[1, 0.5],\n", " with_rem=False,\n", " shots=1024,\n", ")" ] }, { "cell_type": "markdown", "id": "da002ef1", "metadata": {}, "source": [ "**QPU support for tf/torch ML:** Above this API, we also have corresponding keras and torch layers for hybrid deployment" ] }, { "cell_type": "code", "execution_count": 9, "id": "718d7215", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Z_i: [[3, 0, 0, 0, 0], [0, 3, 0, 0, 0], [0, 0, 3, 0, 0], [0, 0, 0, 3, 0], [0, 0, 0, 0, 3]]\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import tensorflow as tf\n", "from functools import partial\n", "\n", "tc.set_backend(\"tensorflow\")\n", "\n", "pss = []\n", "for i in range(5):\n", " ps = [0 for _ in range(5)]\n", " ps[i] = 3 # Z_i\n", " pss.append(ps)\n", "print(\"Z_i:\", pss)\n", "\n", "\n", "def quantum_func(inputs, weights, device=None):\n", " c = tc.Circuit(5)\n", " for i in range(5):\n", " c.rx(i, theta=inputs[i])\n", " for i in range(5):\n", " c.rz(i, theta=weights[0, i])\n", " for i in range(5):\n", " c.rx(i, theta=weights[1, i])\n", " return tc.cloud.wrapper.batch_expectation_ps(c, pss=pss, device=device)\n", "\n", "\n", "qlayer = tc.KerasLayer(quantum_func, [2, 5])\n", "model = tf.keras.Sequential([qlayer, tf.keras.layers.Dense(1)])\n", "inputs = tf.stack([0.1 * tf.ones([5]), 0.2 * tf.ones([5])])\n", "model(inputs)" ] }, { "cell_type": "markdown", "id": "f2b675fa", "metadata": {}, "source": [ "``model`` is a model with quantum layer simulated using CPU/GPU and a classical layer on CPU/GPU while ``model1`` shares exactly the same architecture but is with quantum layer on real QPU while classical layer still live on CPU/GPU, namely, TC is powerful enough to handle these quantum-classical hybrid tasks with an interface familiar to any ML engineers." ] }, { "cell_type": "code", "execution_count": 10, "id": "0ec02dac", "metadata": { "collapsed": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorcircuit.cloud.wrapper:submit task on tencent::tianxuan_s1 for 1 circuits\n", "INFO:tensorcircuit.cloud.wrapper:finished collecting count results of 1 tasks in 5.2411 seconds\n", "INFO:tensorcircuit.cloud.wrapper:submit task on tencent::tianxuan_s1 for 1 circuits\n", "INFO:tensorcircuit.cloud.wrapper:finished collecting count results of 1 tasks in 5.3121 seconds\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qlayer1 = tc.KerasHardwareLayer(partial(quantum_func, device=d), [2, 5])\n", "model1 = tf.keras.Sequential([qlayer1, tf.keras.layers.Dense(1)])\n", "model1(inputs)" ] }, { "cell_type": "code", "execution_count": 11, "id": "51620507", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " quantum_layer (QuantumLayer (2, 5) 10 \n", " ) \n", " \n", " dense (Dense) (2, 1) 6 \n", " \n", "=================================================================\n", "Total params: 16\n", "Trainable params: 16\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "\n", "\n", "Model: \"sequential_1\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " hardware_layer (HardwareLay multiple 10 \n", " er) \n", " \n", " dense_1 (Dense) multiple 6 \n", " \n", "=================================================================\n", "Total params: 16\n", "Trainable params: 16\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "model.summary()\n", "print(\"\\n\")\n", "model1.summary()" ] }, { "cell_type": "markdown", "id": "3b5423ca", "metadata": {}, "source": [ "we align the weights between the two models (numerical one vs hybrid one)" ] }, { "cell_type": "code", "execution_count": 12, "id": "ab5ca8a5", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorcircuit.cloud.wrapper:submit task on tencent::tianxuan_s1 for 1 circuits\n", "INFO:tensorcircuit.cloud.wrapper:finished collecting count results of 1 tasks in 5.5113 seconds\n", "INFO:tensorcircuit.cloud.wrapper:submit task on tencent::tianxuan_s1 for 1 circuits\n", "INFO:tensorcircuit.cloud.wrapper:finished collecting count results of 1 tasks in 5.2209 seconds\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model1.set_weights(model.get_weights())\n", "model1(inputs)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.0" } }, "nbformat": 4, "nbformat_minor": 5 }