@aztec/accounts 4.0.0-nightly.20260107 → 4.0.0-nightly.20260108
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"transpiled": true,
|
|
3
|
-
"noir_version": "1.0.0-beta.
|
|
3
|
+
"noir_version": "1.0.0-beta.18+c9a8bf882069681672e68b2612e4119592c4485a",
|
|
4
4
|
"name": "SimulatedAccount",
|
|
5
5
|
"functions": [
|
|
6
6
|
{
|
|
@@ -1893,8 +1893,8 @@
|
|
|
1893
1893
|
}
|
|
1894
1894
|
}
|
|
1895
1895
|
},
|
|
1896
|
-
"bytecode": "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",
|
|
1897
|
-
"debug_symbols": "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LNlmyTZLtlmyzZJtlmyzZJsl2yzZZsk2S7ZZss2SbZZss2SbJdss2WbJNku2WRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmyeei4fsHgz83DT+nxbSZgun9B8r1MRVT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jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOdssabOkzZI2S9osabOkzZI2S9osabOkzZI2S9osabOkzZI2S9osabOkzZI2S9osabOkzZI2S9osabOkzZI2S9osabOkzZJjlhyz5Jglxyw5ZskxS45ZcsySY5Ycs+SYJccsOWbJMUuOWXLMkmOWHLPkmCXHLDlmyTFLjllyzJJjlhyz5Jglxyw5ZskxS45ZcsySY5Ycs+SYJccsOWbJMUuOWXLMkmOWHLPkmCXHLDlmyTFLjllyzJJjlhyz5Jglxyw5ZskxS45ZcsySY5Ycs+SYJccsOWbJMUuOWXLMkmOWHLPkmCXHLDlmiQzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVI5ueuZ35MyVRMzXSY3vcE6mO6n1O9hqhQn7ue/TFtvhZMyVRMzXSYHiY0FhofuyGfExoLjYXGQmOhsdBYaCw0NhobjY3GRmOjsdHYaGw0NhobjUAj0Ag0Ao1AI9AINAKNQCPQSDQSjUQj0Ug0Eo1EI9FINBKNQqPQKDQKjUKj0Cg0Co1Co9BoNBqNRqPRaDQajf567tbnrufnhMa7/99JHfWx6/k1Lab9yd2oj13PrymZiqmZDtPDdGd6N/3z4Yp3z39NmymY8pPeUZ8bns/HdJgepjvTx+bX5/S1oVNseBYbnsWGZ7HhWWx4FhuexYZnseH59juOF9Ni2kzBlEzF1EyH6WFCY6Gx0FhoLDQWGguNhcZCY6Gx0NhobDQ2GhuNjcZGY6Ox0dhobDQCjUAj0Ag0Ao1AI9AINAKNQCPRSDQSjUQj0Ug0Eo1EI9FINAqNQqPQKDQKjUKj0Cg0Co1Co9FoNBqNRqPRaDQajUaj0Wg0DhoHjYPGQeOgcdA4aBw0DhoHjQeNB40HjQeNB40HjQeNB40HjQeNiwY+Z8Oz2PAsNjyLDc9iw7PY8Cw2PIsNz2LDs9jwLDY8iw3PYsOz2PAsNjyLDc9iw7PY8Cw2PIsNz2LDs9jwLDY8iw3PYsOz2PAsNjyLDc9iw7PY8Cw2PIsNz2LDs9jwLDY8iw3PYsOz2PAsNjyLDc9iw7PY8Cw2PIsNz2LDs9jwLDY8iw3PYsOz2PAsNjyLDc9iw7PY8Cw2PIsNz2LDs9jwLDY8iw3PYsOz2PAsNjyLDc9iw7PotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuiAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXx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",
|
|
1896
|
+
"bytecode": "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/p+y9f+gq/7n2vof76r/ebb+J7jqf76t/4mu+n/a1v9DrvpfYOt/kqv+n7H1/7Cr/hfa+p/sqv9Ftv4fcdX/Ylv/U1z1/6yt/0dd9b/E1v9UV/0vtfU/zVX/y2z957vq/zlb/wWu+l9u67/QVf/P2/qf7qr/Fbb+Z7jq/wVb/4+56n+lrf+Zrvp/0db/4676f8nW/yxX/a+y9f+Eq/5ftvU/21X/q239P+mq/1ds/c9x1f8aW/9Puep/ra3/ua76X2frf56r/l+19T/fVf/rbf0/7ar/12z9L3DV/wZb/8+46v91W/8LXfW/0db/Ilf9v2Hrf7Gr/jfZ+n/WVf9v2vpf4qr/zbb+l7rq/y1b/8tc9b/F1v9zrvp/29b/clf9b7X1/7yr/t+x9b/CVf/bbP2/4Kr/d239r3TV/3u2/l901b/Y+n/JVf/bbf2vctX/+7b+X3bV/w5b/6td9f+Brf9XXPW/09b/Glf9f2jrf62r/nfZ+l/nqv+PbP2/6qr/3bb+17vq/2Nb/6+56n+Prf8Nrvr/xNb/6676/9TW/0ZX/X9m6/8NV/3vtfW/yVX/n9v6f9NV//ts/W921f8Xtv7fctX/flv/W1z1f8DW/9uu+v/S1v9WV/1/Zev/HVf9H7T1v81V/1/b+n/XVf+HbP2/56r/b2z9i6v+D9v63+6q/29t/b/vqv/vbP3vcNX/97b+P3DV/xFb/ztd9f+Drf8PXfV/1Nb/Llf9/2jr/yNX/R+z9b/bVf8/2fr/2FX/x23973HV/8+2/j9x1f8JW/+fuur/F1v/n7nq/1db/3td9f+brf/PXfV/0tb/Plf9/27r/wtX/Z+y9b/fVf9/2Po/4Kr/07b+v3TV/5+2/r9y1f8ZW/8HXfV/1tb/1476jy9m6/+Qq/6L2/r/xlX/JWz9H3bVf4yt/29d9R9r6/87V/17bP1/76p/r63/I676j7P1/4Or/uNt/R911X+Crf8fXfXvs/V/zFX/flv/P7nqP2Dr/7ir/hNt/f/sqv8kW/8nXPWfbOv/F1f9B239/+qq/5Ct/99c9R+29X/SVf8ptv5/d9V/qq3/U676t/2Lub4/XPVv+7c/fadd9R+x9f+nq/5t//aq74yr/o3/jONZV/3b/nVGfzFX/V9s67+4q/5L2fov4ar/S2z9x7jqv7St/1hX/V9q69/jqv8ytv69rvq/zNZ/nKv+y9r6j3fV/+W2/hNc9V/O1r/P0v/f//J/85yswYWX7C02T3x9xZctvn7iyxFff/ENEN9A8eWKb5D4BotviPiGim+Y+IaLb4T4RopvlPjuE99o8d0vvjHiGyu+PPE9IL5x4ntQfOPFN0F8E8X3kPgmie9h8U0W3yPimyK+R8U3VXzTxJcvvgLxFYpvuvhmiO8x8c0U3+PimyW+J8Q3W3xPim+O+J4S31zxaYXzxfe0+BaI7xnxLRTfIvEtFt+z4lsivqXiWya+58S3XHzPi2+F+F4Q30rxvSi+l8S3Snwvi2+1+F4R3xrxrRXfOvG9Kr714ntNfBvE97r4NorvDfFtEt+b4tssvrfEt0V8b4tvq/jeEd828b0rvvd0b1+313WHWzeZdZ9Xt1p1t1M3HHXPT7fddOdLN590/0e3YHQXRDcidC9Al+N1RVwXpXVdWJdmdXVUFyh1jVCX6XSlTBerdL1Il2x01UQXLnTtQD/f9QtaP2L1O1I/5fRrSj9o9JtCp/U6s9bJrc4vdYqnsyyd6OhcQ1/3+sbVl56+d/TRr09ffQDqM0gfA3on6s2g16NeEov+Pt9Fve48f/3zmL1s153fcN398xcnLoH+xQlL59amAkW8fy3/0GJx8fUujD6I11r/bXR/YhFv8tL/c5P/f/ImLyi0TNm76FVveQudOzCxwHYXmS7jpCI9M0qbnhnFCc+MJPw7//949gL/ZWt/soPRNg9RMq6pINER2xbnCDEdHXGOMNPRGedIYTq64hypTEd3nCON6cjEOdKZjl44R4TpyMI5MpiOvjjHRUxHP5yjJNPRH+e4mOkYiHOUYjoG4RyXMB1DcI7STMcwnONSpmMEzlGG6RiFc1zGdIzGOcoyHWNwjsuZjjycoxzTMQ7nuILpGI9zlGc6JuIcVzIdk3COCkzHZJyjItMxBeeoxHRMxTmuYjrycY7KTEchznE10zED56jCdMzEOa5hOmbhHFWZjtk4RzWmYw7OUZ3pmItz1GA65uMcNZmOBTjHtUzHQpyjFtOxGOe4julYgnPUZjqW4RzXMx3LcY46TMcKnOMGpmMlzlGX6Ih5D+e4kXk+VuEc9ZiO1TjHTUzHGpyjPtOxDudowHSsxzkaMh0bcI5GTMdGnKMx07EJ52jCdGzGOZoyHVtwjpuZjq04RzOmYxvO0ZzpAM4TWzAd23GOW5iOHThHS6ZjJ85xK9OxC+doxXTsxjluYzr24BytmY5PcY7bmY69OEcbpmMfznEH07Ef57iT6fgS52jLdBzEOe5iOg7hHHczHYdxjnZMx3c4xz1MxxGcoz3TcRTnuJfpOIZzdGA6juMcHZmOEzhHJ6bjV5yjM9NxEufownScwjm6Mh2ncY5uTMcZnKM70eEphnP0YDpK4ByZTEcsztGT6fDiHL2YjnicozfT4cM5spiOAM7Rh+lIwjn6Mh1BnCOb6QjjHP2YjlScI4fpSMc5+jMdGTjHAKajJM4xkOkohXPkMh2lcY5BTEcZnGMw01EW5xjCdJTDOYYyHeVxjmFMRwWcYzjTUQnnGMF0VMY5RjIdVXCOUUxHVZzjPqajOs4xmumoiXPcz3TUwjnGMB21cY6xTEcdnCOP6aiLczzAdNTDOcYxHfVxjgeZjoY4x3imozHOMYHpaIpzTGQ6muEcDzEdLXCOSUxHS5zjYaajFc4xmelojXM8wnS0wTmmMB134hyPMh134RxTmY52OMc0pqM9zpHPdHTAOQqYjk44RyHT0QXnmM50dMM5ZjAdPXCOx5iOnjjHTKajN87xONPRB+eYxXRk4xxPMB05OMdspmMAzvEk05GLc8xhOgbjHE8xHUNxjrlMx3CcYx7TMRLnmM903IdzPM103I9zLGA6xuIczzAdD+AcC5mOB3GORUzHBJxjMdPxEM7xLNPxMM6xhOl4BOdYynQ8inMsYzpwTfmfYzoKcI7lTMd0nON5puMxnGMF0/E4zvGCwbH0b0fznKzBhZfuLTZP/CHxh8WfIv5U8aeJP138EfFniP8i8ZcU/8XiLyX+S8RfWvyXir+M+C8Tf1nxXy7+cuK/QvzlxX+l+CuIv6L4K4n/KvFXFv/V4q8i/mvEX1X81cRfXfw1xF9T/NeKv5b4rxN/bfFfL/464r9B/HXFf6P464n/JvHXF38D8TcUfyPxNxZ/E/E3Ff/N4m8m/ubibyH+W8TfUvy3ir+V+G8Tf2vx3y7+NuK/Q/x3ir+t+O8S/93ibyf+e8TfXvz3ir+D+DuKv5P4O4u/i/i7ir+b+LuLv4f4M8XfU/y9xN9b/Fni7yP+vuLPFn8/8eeIv7/4B4h/oPhzxT9I/IPFP0T8Q8U/TPzDxT9C/CPFP0r894l/tPjvF/8Y8Y8Vf574HxD/OPE/KP7x4p8g/onif0j8k3RDXfeidRtXd0B181D33XTLSnd7dKNE9xh0eV5XtnVRWNdTdSlSV/F0AUzXjnTZRVcs9GNfv5P1E1O/zvTDRr8JdDqtM1GdxOn8R6cO+tbVF5Y+6/UxqU8YvTn1utZLYtHf5ztvaYNBgzJzB7fPzO1fWBB9Q6N4DfF10cOq9miVe6DavIprWjdZnZfXrmOFGoebjVg7IL/RgV8Kj+lxepT4gwWmyzNYYGjPv7JIN+OlppuxuPUOSsbdjBbH+SclP/pJ8ZwbbV8vw2iX0CNNo/2ig9E2D9GLuKZeuoDRjjY6MbUKDX3HGI6pZToXq4jnIrYt7ly8zHR0xDlWMx2dcY5XmI6uOMcapqM7zrGW6cjEOdYxHb1wjleZjiycYz3T0RfneI3p6IdzbGA6+uMcrzMdA3GOjUzHIJzjDaZjCM6xiekYhnO8yXSMwDk2Mx2jcI63mI7ROMcWpmMMzvE205GHc2xlOsbhHO8wHeNxjm1Mx0Sc412mYxLO8R7TMRnnEKZjCs6xnemYinO8z3Tk4xw7mI5CnOMDpmMGzrGT6ZiJc3zIdMzCOXYxHbNxjo+Yjjk4x26mYy7O8THTMR/n2MN0LMA5PmE6FuIcnzIdi3GOz5iOJTjHXqZjGc7xOdOxHOfYx3SswDm+YDpW4hz7iY4Y4J8lPsA8H6twji+ZjtU4x1dMxxqc4yDTsQ7n+JrpWI9zHGI6NuAc3zAdG3GOw0zHJpzjW6ZjM87xHdOxBef4nunYinMcYTq24Rw/MB3AeeJRpmM7zvEj07ED5zjGdOzEOX5iOnbhHMeZjt04x89Mxx6c4wTT8SnO8QvTsRfn+JXp2Idz/MZ07Mc5TjIdX+IcvzMdB3GOU0zHIZzjD6bjMM5xmun4Duf4k+k4gnOcYTqO4hxnmY5jsKYCxZiO4zhHcabjBM5Rgun4FeeIYTpO4hyxTMcpnMPDdJzGObxMxxmcI47o8BTDOeKZjhI4RwLTEYtz+JgOL87hZzricY4A0+HDORKZjgDOkcR0JOEcyUxHEOcIMh1hnCPEdKTiHGGmIx3nSGE6MnCOVKajJM6RxnSUwjnSmY7SOEeE6SiDc2QwHWVxjouYjnI4R0mmozzOcTHTUQHnKMV0VMI5LmE6KuMcpZmOKjjHpUxHVZyjDNNRHee4jOmoiXOUZTpq4RyXMx21cY5yTEcdnOMKpqMuzlGe6aiHc1zJdNTHOSowHQ1xjopMR2OcoxLT0RTnuIrpaIZzVGY6WuAcVzMdLXGOKkxHK5zjGqajNc5Rlelog3NUYzruxDmqMx134Rw1mI52OEdNpqM9znEt09EB56jFdHTCOa5jOrrgHLWZjm44x/VMRw+cow7T0RPnuIHp6I1z1GU6+uAcNzId2ThHPaYjB+e4iekYgHPUZzpycY4GTMdgnKMh0zEU52jEdAzHORozHSNxjiZMx304R1Om436c42amYyzO0YzpeADnaM50PIhztGA6JuActzAdD+EcLZmOh3GOW5mOR3COVkzHozjHbUwHrqlAa6ajAOe4nemYjnO0YToewznuYDoexzkMW1t5S/92NM/JGlxYZm+xeeJ/Wfyrxf+K+NeIf63414n/VfGvF/9r4t8g/tfFv1H8b4h/k/jfFP9m8b8l/i3if1v8W8X/jvi3if9d8b8nfhH/dvG/L/4d4v9A/DvF/6H4d4n/I/HvFv/H4t8j/k/E/6n4PxP/XvF/Lv594v9C/PvFf0D8X4r/K/EfFP/X4j8k/m/Ef1j834r/O/F/L/4j4v9B/EfF/6P4j4n/J/EfF//P4j8h/l/E/6v4fxP/SfH/Lv5T4v9D/KfF/6f4z4j/rASKSeDcP5YggRgJxErAIwGvBOIkEC+BBAn4JOCXQEACiRJIkkCyBIISCEkgLIEUCaRKIE0C6RKISCBDAhdJoKQELpZAKQlcIoHSErhUAmUkcJkEykrgcgmUk8AVEigvgSslUEECFSVQSQJXSaCyBK7WDXXdi9ZtXN0B1c1D3XfTLSvd7dGNEt1j0OV5XdnWRWFdT9WlSF3F0wUwXTvSZRddsdCPff1O1k9M/TrTDxv9JtDptM5EdRKn8x+dOuhbV19Y+qzXx6Q+YfTm1OtaL4lFf5/vvKUNBg3KzB3cPjO3f2FB4eYyVXu0yj1QbV7FNa2brM7La9exQo3DzUasHZDf6MAvhcf0QhFfF/G/VGi47M4duKrAcoH6XyowdBxoW6TbsYzpdixuvIf8L+JuR4vj/NOSH320PedG29fLMNoxeqRptO9yMNrmIQJuYt9NdMS2xTnaMR0dcY57mI7OOEd7pqMrznEv09Ed5+jAdGTiHB2Zjl44RyemIwvn6Mx09MU5ujAd/XCOrkxHf5yjG9MxEOfoznQMwjl6MB1DcI5MpmMYztGT6RiBc/RiOkbhHL2ZjtE4RxbTMQbn6MN05OEcfZmOcThHNtMxHufox3RMxDlymI5JOEd/pmMyzjGA6ZiCcwxkOqbiHLlMRz7OMYjpKMQ5BjMdM3COIUzHTJxjKNMxC+cYxnTMxjmGMx1zcI4RTMdcnGMk0zEf5xjFdCzAOe5jOhbiHKOZjsU4x/1MxxKcYwzTsQznGMt0LMc58piOFTjHA0zHSpxjHNERg/ujvoEHmedjFc4xnulYjXNMYDrW4BwTmY51OMdDTMd6nGMS07EB53iY6diIc0xmOjbhHI8wHZtxjilMxxac41GmYyvOMZXp2IZzTGM6gPPEfKZjO85RwHTswDkKmY6dOMd0pmMXzjGD6diNczzGdOzBOWYyHZ/iHI8zHXtxjllMxz6c4wmmYz/OMZvp+BLneJLpOIhzzGE6DuEcTzEdh3GOuUzHdzjHPKbjCM4xn+k4inM8zXQcwzkWMB3HcY5nmI4TOMdCpuNXnGMR03ES51jMdJzCOZ5lOk7jHEuYjjM4x1Kiw1MM51jGdJTAOZ5jOmJxjuVMhxfneJ7piMc5VjAdPpzjBaYjgHOsZDqScI4XmY4gzvES0xHGOVYxHak4x8tMRzrOsZrpyMA5XmE6SuIca5iOUjjHWqajNM6xjukog3O8ynSUxTnWMx3lcI7XmI7yOMcGpqMCzvE601EJ59jIdFTGOd5gOqrgHJuYjqo4x5tMR3WcYzPTURPneIvpqIVzbGE6auMcbzMddXCOrUxHXZzjHaajHs6xjemoj3O8y3Q0xDneYzoa4xzCdDTFObYzHc1wjveZjhY4xw6moyXO8QHT0Qrn2Ml0tMY5PmQ62uAcu5iOO3GOj5gO4N/N2M10tMM5PmY62uMce5iODjjHJ0xHJ5zjU6ajC87xGdPRDefYy3T0wDk+Zzp64hz7mI7eOMcXTEcfnGM/05GNcxxgOnJwji+ZjgE4x1dMRy7OcZDpGIxzfM10DMU5DjEdw3GOb5iOkTjHYabjPpzjW6bjfpzjO6ZjLM7xPdPxAM5xhOl4EOf4gemYgHMcZToewjl+ZDoexjmOMR2P4Bw/MR2P4hzHmQ5cU4GfmY4CnOME0zEd5/iF6XgM5/iV6Xgc5/jN4Fj6t6N5Ttbgwsv2FpsngXYSuEcC7SVwrwQ6SKCjBDpJoLMEukigqwS6SaC7BHpIIFMCPSXQSwK9JZAlgT4S6CuBbAn0k0COBPpLYIAEBkogVwKDJDBYAkMkMFQCwyQwXAIjJDBSAqMkcJ8ERkvgfgmMkcBYCeRJ4AEJjJPAgxIYL4EJEpgogYckMEkCD0tgsgQekcAUCTwqgakSmCaBfAkUSKBQAtMlMEMCj0lgpgQel8AsCTwhgdkSeFICcyTwlATmSkBp8yXwtAQWSOAZCSyUwCIJLJbAsxJYIoGlElgmgecksFwCz0tghQRekMBKCbwogZcksEoCL0tgtQRekcAaCayVwDoJvCqB9RJ4TQIbJPC6BDZK4A0JbJLAmxLYLIG3JLBFAm9LYKsE3pHANgm8K4H3JCAS2C6B9yWwQzfUdS9at3F1B1Q3D3XfTbesdLdHN0p0j0GX53VlWxeFdT1VlyJ1FU8XwHTtSJdddMVCP/b1O1k/MfXrTD9s9JtAp9M6E9VJnM5/dOqgb119YemzXh+T+oTRm1Ova70kFv19vvOWNhg0KDN3cPvM3P6FBdH/IcHi1cTXRQ+r2qNV7oFq8yquad1kdV5eu44VahxuNmLtgPxGB34pPKbH6VESuLvAdHneXWBoL3CySDfjZaabsbj1DgJuqloc55+U/OgnxXNutH29DKMdq0eaRvt3B6NtHqLfcU2dIjpi2+IcfzAdHXGO00xHZ5zjT6ajK85xhunojnOcZToyYU0lFmM6euEcxZmOLJyjBNPRF+eIYTr64RyxTEd/nMPDdAzEObxMxyCcI47pGIJzxDMdw3COBKZjBM7hYzpG4Rx+pmM0zhFgOsbgHIlMRx7OkcR0jMM5kpmO8ThHkOmYiHOEmI5JOEeY6ZiMc6QwHVNwjlSmYyrOkcZ05OMc6UxHIc4RYTpm4BwZTMdMnOMipmMWzlGS6ZiNc1zMdMzBOUoxHXNxjkuYjvk4R2mmYwHOcSnTsRDnKMN0LMY5LmM6luAcZZmOZTjH5UzHcpyjHNOxAue4gulYiXOUJzpicH/SN/FK5vlYhXNUYDpW4xwVmY41OEclpmMdznEV07Ee56jMdGzAOa5mOjbiHFWYjk04xzVMx2acoyrTsQXnqMZ0bMU5qjMd23COGkwHcJ5Yk+nYjnNcy3TswDlqMR07cY7rmI5dOEdtpmM3znE907EH56jDdHyKc9zAdOzFOeoyHftwjhuZjv04Rz2m40uc4yam4yDOUZ/pOIRzNGA6DuMcDZmO73CORkzHEZyjMdNxFOdownQcwzmaMh3HcY6bmY4TOEczpuNXnKM503ES52jBdJzCOW5hOk7jHC2ZjjM4x61Eh6cYztGK6SiBc9zGdMTiHK2ZDi/OcTvTEY9ztGE6fDjHHUxHAOe4k+lIwjnaMh1BnOMupiOMc9zNdKTiHO2YjnSc4x6mIwPnaM90lMQ57mU6SuEcHZiO0jhHR6ajDM7Riekoi3N0ZjrK4RxdmI7yOEdXpqMCztGN6aiEc3RnOirjHD2Yjio4RybTURXn6Ml0VMc5ejEdNXGO3kxHLZwji+mojXP0YTrq4Bx9mY66OEc201EP5+jHdNTHOXKYjoY4R3+mozHOMYDpaIpzDGQ6muEcuUxHC5xjENPREucYzHS0wjmGMB2tcY6hTEcbnGMY03EnzjGc6cD9lZLEEUxHO5xjJNPRHucYxXR0wDnuYzo64RyjmY4uOMf9TEc3nGMM09ED5xjLdPTEOfKYjt44xwNMRx+cYxzTkY1zPMh05OAc45mOATjHBKYjF+eYyHQMxjkeYjqG4hyTmI7hOMfDTMdInGMy03EfzvEI03E/zjGF6RiLczzKdDyAc0xlOh7EOaYxHRNwjnym4yGco4DpeBjnKGQ6HsE5pjMdj+IcM5gOXFOJjzEdBTjHTKZjOs7xONPxGM4xi+l4HOd4wuBY+rejeU7W4MKye4vNk8AfEjgtgT8lcEYCZyWxmCRqUyUkMUYSYyXRI4leSYyTxHhJTJBEnyT6JTEgiYmSmCSJyZIYlMSQJIYlMUUSUyUxTRLTJTEiiRmSeJEklpTEiyWxlCReIomlJfFSSSwjiZdJYllJvFwSy0niFZJYXhKvlMQKklhREitJ4lWSWFkSr5bEKpJ4jSRWlcRqklhdEmtIYk1JvFYSa0nidZJYWxKvl8Q6kniDJNaVxBslsZ4k3iSJ9SWxgSQ2lMRGkthYEptIYlNJvFkSm0lic0lsIYm3SGJLSbxVEltJ4m2S2FoSb5fENpJ4hyTeKYltJfEuSbxbEttJ4j2S2F4S75XEDpLYURI7SWJnSewiiV0lsZskdpfEHpKYKYk9JbGXJPaWxCxJ7COJfSUxWxL7SWKOJPaXxAGSOFAScyVxkG6o6160buPqDqhuHuq+m25Z6W6PbpToHoMuz+vKti4K63qqLkXqKp4ugOnakS676IqFfuzrd7J+YurXmX7Y6DeBTqd1JqqTOJ3/6NRB37r6wtJnvT4m9QmjN6de13pJLPr7fOctbTBoUGbu4PaZuf0LCwoNV5Ovi/i664FVe7TKPVBtXsU1rZuszstr17FCjcPNRqwdkN/owC+Fx/TIcwcGThVYLlA9zNBe4uwi3Y5lTbdjceM9FPgddztaHOeflnzraellGm1fF9NoP2mo8oWG2V27923Yf3jTITndG3XNzs5b2KZBq5ubFOQtvjtrcE7mIL22nyxT5JNiHcnYtriTMsfBxWV2dMQ5nmI6OuMcc5mOrjjHPKajO84xn+nIxDmeZjp64RwLmI4snOMZpqMvzrGQ6eiHcyxiOvrjHIuZjoE4x7NMxyCcYwnTMQTnWMp0DMM5ljEdI3CO55iOUTjHcqZjNM7xPNMxBudYwXTk4RwvMB3jcI6VTMd4nONFpmMizvES0zEJ51jFdEzGOV5mOqbgHKuZjqk4xytMRz7OsYbpKMQ51jIdM3COdUzHTJzjVaZjFs6xnumYjXO8xnTMwTk2MB1zcY7XmY75OMdGpmMBzvEG07EQ59jEdCzGOd5kOpbgHJuZjmU4x1tMx3KcYwvTsQLneJvpWIlzbCU6YoB/M/cd5vlYhXNsYzpW4xzvMh1rcI73mI51OIcwHetxju1Mxwac432mYyPOsYPp2IRzfMB0bMY5djIdW3COD5mOrTjHLqZjG87xEdMBnCfuZjq24xwfMx07cI49TMdOnOMTpmMXzvEp07Eb5/iM6diDc+xlOj7FOT5nOvbiHPuYjn04xxdMx36cYz/T8SXOcYDpOIhzfMl0HMI5vmI6DuMcB5mO73COr5mOIzjHIabjKM7xDdNxDOc4zHQcxzm+ZTpO4BzfMR2/4hzfMx0ncY4jTMcpnOMHpuM0znGU6TiDc/xIdHiK4RzHmI4SOMdPTEcsznGc6fDiHD8zHfE4xwmmw4dz/MJ0BHCOX5mOJJzjN6YjiHOcZDrCOMfvTEcqznGK6UjHOf5gOjJwjtNMR0mc40+moxTOcYbpKI1znGU6ysCaSirGdJTFOYozHeVwjhJMR3mcI4bpqIBzxDIdlXAOD9NRGefwMh1VcI44pqMqzhHPdFTHORKYjpo4h4/pqIVz+JmO2jhHgOmog3MkMh11cY4kpqMezpHMdNTHOYJMR0OcI8R0NMY5wkxHU5wjhelohnOkMh0tcI40pqMlzpHOdLTCOSJMR2ucI4PpaINzXMR03IlzlGQ67sI5LmY62uEcpZiO9jjHJUxHB5yjNNPRCee4lOnognOUYTq64RyXMR09cI6yTEdPnONypqM3zlGO6eiDc1zBdGTjHOWZjhyc40qmYwDOUYHpyMU5KjIdg3GOSkzHUJzjKqZjOM5RmekYiXNczXTch3NUYTruxzmuYTrG4hxVmY4HcI5qTMeDOEd1pmMCzlGD6XgI56jJdDyMc1zLdDyCc9RiOh7FOa5jOnBNJdVmOgpwjuuZjuk4Rx2m4zGc4wam43Gcw/CrQ//6Y+4F5j/mbjqwmx54rtCof8896cYiFmr5q/M1xdep0NB7TUuFvk4mR/TfcSpeZMe12qzh8spb1jA3Kzs7q9e5P3U/3TMjb9EdWTm9sjNt14plxlSkBqujG6xWhAbN13FX63XcfRraI37DP3xecK7NfgOyMyXppn9+rG+9/w2/cpf3QsPsrt37Nuw/vOmQnO7nrp28hW0atLq5SUHe4ruzBudkDhqkfZf599UVX1D0oe5pHeqeUYb67NmzJ/8Z6v98cPFz/3XeIDb458eGG030BsVNhzUsU+T7+u9RMT0fL3nJwfPx78G29b+qiP1Pm/6fmy049tf12cD0UG1oudYvecl01CrDtfV/HUjDY18p04o4RKYbJ768+C42HXiV+NJt79pGrgotZTqwsrnQxq4KvcR04NXmQpu4KrS06cAq5kKbuir0UtOB15gLvdlVoWVMB1Y1F9rMVaGXmQ6sZi60uatCy5oOrG4utIWLV925Qi+39X+Lq/7L2fpv6ar/K2z93+qq//K2/lu56v9KW/+3ueq/gq3/1q76r2jr/3ZX/Vey9d/GVf9X2fq/w1X/lW393+mq/6tt/bd11X8VW/93uer/Glv/d7vqv6qt/3au+q9m6/8eV/1Xt/Xf3lX/NWz93+uq/5q2/ju46v9aW/8dXfVfy9Z/J1f9X2frv7Or/mvb+u/iqv/rbf13ddV/HVv/3Vz1f4Ot/+6u+q9r67+Hq/5vtPWf6ar/erb+e7rq/yZb/71c9V/f1n9vV/03sPWf5ar/hrb++7jqv5Gt/76u+m9s6z/bVf9NbP33c9V/U1v/Oa76v9nWf39X/Tez9T/AVf/Nbf0PdNV/C1v/ua76v8XW/yBX/be09T/YVf+32vof4qr/Vrb+h7rq/zZb/8Nc9d/a1v9wV/3fbut/hKv+29j6H+mq/zts/Y9y1f+dtv7vc9V/W1v/o131f5et//td9X+3rf8xrvpvZ+t/rKv+77H1n+eq//a2/h+w9P/37142z8kaXHj53mL1JamRJDXWjXjd4tbNY92W1Q1P3UrU3TzdUNM9Ld1W0p0d3VzR/Q3dYtBVfl1o17VuXW7WFV9ddNV1T1161NU/XYDTNTBdhtKVIF2M0fUQXZLQVQH9MNdvY/081S9E/UjT7yT9VNGvBZ2w65xZp606c9TJm86fdAqjswh9keu7VF9n+kbRh7o+V/XRpk8XvcH1HtPLXK80Pdk63kpe9Lfn379CU2garnHRf+0l3vTLMfFF/y0f06k/98sx42yn3pBkOe/Xbi+H/tptEjBGM76Il3C5/00vYcvvEJy7QKy/YzW+wDb8pottQpEutnKmi6044WKbUMSb1vhcmfjf+lwpfmHPlYm258pDDk61+fwA42CTiI7YtjjHw0xHR5xjMtPRGed4hOnoinNMYTq64xyPMh2ZOMdUpqMXzjGN6cjCOfKZjr44RwHT0Q/nKGQ6+uMc05mOgTjHDKZjEM7xGNMxBOeYyXQMwzkeZzpG4ByzmI5ROMcTTMdonGM20zEG53iS6cjDOeYwHeNwjqeYjvE4x1ymYyLOMY/pmIRzzGc6JuMcTzMdU3COBUzHVJzjGaYjH+dYyHQU4hyLmI4ZOMdipmMmzvEs0zEL51jCdMzGOZYyHXNwjmVMx1yc4zmmYz7OsZzpWIBzPM90LMQ5VjAdi3GOF5iOJTjHSqZjGc7xItOxHOd4ielYgXOsYjpW4hwvEx0x7+Ecq5nnYxXO8QrTsRrnWMN0rME51jId63COdUzHepzjVaZjA86xnunYiHO8xnRswjk2MB2bcY7XmY4tOMdGpmMrzvEG07EN59jEdADniW8yHdtxjs1Mxw6c4y2mYyfOsYXp2IVzvM107MY5tjIde3COdwyO83NlV/yVK3tYkiZL0iOSNEWSHpWkqZI0TZLyJalAkgolabokzZCkxyRppiQ9LkmzJOkJSZotSU9K0hxJekqS5krSPN26111v3TDWvVbdptQdPt0c030l3ZLR3QzdCNA1dF1+1pVbXfTU9UJdatNVKl3g0bURXVbQL3L9mNXvQP2E0q8PnbjrnFenizrT0kmKvt/11ahvFX0g67NMHwN6B+nFp+dNyReaK6tRhFzZJFuubFKBpb1tRbrYrsDmyoBhI4vjAnJl70bvHJgrK3FhubJ3802W9xycavP5Ac6DhOhA5sq2Mx3AXNn7TAcwV7aD6QDmyj5gOoC5sp1MBzBX9iHTAcyV7WI6gLmyj5gOYK5sN9MBzJV9zHQAc2V7mA5gruwTpgOYK/uU6QDmyj5jOoC5sr1MBzBX9jnTAcyV7WM6gLmyL5gOYK5sP9MBzJUdYDqAubIvmQ5gruwrpgOYKzvIdABzZV8zHcBc2SGmA5gr+4bpAObKDjMdwFzZt0wHMFf2HdMBzJV9z3QAc2VHmA5gruwHpgOYKzvKdABzZT8yHcBc2TGmA5gr+4npAObKjjMdwFzZz0wHMFd2gukA5sp+YTqAubJfmQ5gruw3pgOYKzvJdABzZb8THchc2Snm+QDmyv5gOoC5stNMBzBX9ifTAcyVnWE6gLmys0wHLleWXIzpwOXKkoszHbhcWXIJpgOXK0uOYTpwubLkWKYDlytL9jAduFxZspfpwM0Tk+OYDlyuLDme6diBcyQwHTtxDh/TgcuVJfuZDlyuLDnAdOByZcmJBsf5ubLyf+XKtkvS+5K0Q5I+kKSdkvShJO2SpI8kabckfSxJeyTpE0n6VJI+k6S9kvS5JO2TpC8kab8kHZCkLyXpK0k6qFv3uuutG8a616rblLrDp5tjuq+kWzK6m6EbAbqGrsvPunKri566XqhLbbpKpQs8ujaiywr6Ra4fs/odqJ9Q+vWhE3ed8+p0UWdaOknR97u+GvWtog9kfZbpY0DvIL349Lwp+UJzZdWLkCsTW65MCgztJScV6WIrj82VAV+OFkfRc2XJydE7B+bKYi4oV5acnG+yBB2cavP5CeKaChEdwFxZcpjpwOXKklOYDlyuLDmV6cDlypLTmA5criw5nenA5cqSI0wHLleWnMF04HJlyRcxHbhcWXJJpgOXK0u+mOnA5cqSSzEduFxZ8iVMBy5Xllya6cDlypIvZTpwubLkMkwHLleWfBnTgcuVJZdlOnC5suTLmQ5criy5HNOBy5UlX8F04HJlyeWZDlyuLPlKpgOXK0uuwHTgcmXJFZkOXK4suRLTgcuVJV/FdOByZcmVmQ5criz5aqYDlytLrsJ04HJlydcwHbhcWXJVpgOXK0uuxnTgcmXJ1ZkOXK4suQbTgcuVJddkOnC5suRrmQ5criy5FtOBy5UlX8d04HJlybWZDlyuLPl6pgOXK0uuw3TgcmXJNzAduFxZcl2mA5crS76R6ADmypLrMc8HLleWfBPTgcuVJddnOnC5suQGTAcuV5bckOnA5cqSGzEdwFxZY6YDmCtrwnQAc2VNmQ5gruxmpgOYK2vGdABzZc2ZDmCurAXTAZwn3sJ0AHNlLZmOHTjHrUzHTpyjFdMBzJXdxnQAc2WtmQ5grux2g+P8XNmV53JlyWFJTpHkVElOk+R0SY5IcoYkXyTJJSX5YkkuJcmXSHJpSb5UkstI8mWSXFaSL5fkcpJ8hSSXl+QrJbmCbt3rrrduGOteq25T6g6fbo7pvpJuyehuhm4E6Bq6Lj/ryq0ueup6oS616SqVLvDo2oguK+gXuX7M6negfkLp14dO3HXOq9NFnWnpJEXf7/pq1LeKPpD1WaaPAb2D9OLT86bkC82ViX+VPVmWHDIly/QwS9yoTZEutyuhyTJk3MjiuIBk2R3ROwcmy2IvLFl2R77JcqeDU20+P3fimmpLdCCTZXcxHcBk2d1MBzBZ1o7pACbL7mE6gMmy9kwHMFl2L9MBTJZ1YDqAybKOTAcwWdaJ6QAmyzozHcBkWRemA5gs68p0AJNl3ZgOYLKsO9MBTJb1YDqAybJMpgOYLOvJdACTZb2YDmCyrDfTAUyWZTEdwGRZH6YDmCzry3QAk2XZTAcwWdaP6QAmy3KYDmCyrD/TAUyWDWA6gMmygUwHMFmWy3QAk2WDmA5gsmww0wFMlg1hOoDJsqFMBzBZNozpACbLhjMdwGTZCKYDmCwbyXQAk2WjmA5gsuw+pgOYLBvNdACTZfczHcBk2RimA5gsG8t0AJNleUQHMln2APN8AJNl45gOYLLsQaYDmCwbz3QAk2UTmA5gsmwi0wFMlj3EdACTZZOYDmCy7GGmA5gsm8x0AJNljzAdwGTZFKYDmCx7lOkAzhOnMh3AZNk0pmMHzpHPdOzEOQqYDmCyrJDpACbLpjMdwGSZYWvrX8myCn8ly+6S5LsluZ0k3yPJ7SX5XknuIMkdJbmTJHeW5C6S3FWSu0lyd0nuIcmZktxTkntJcm9JzpLkPpLcV5Kzdeted711w1j3WnWbUnf4dHNM95V0S0Z3M3QjQNfQdflZV2510VPXC3WpTVepdIFH10Z0WUG/yPVjVr8D9RNKvz504q5zXp0u6kxLJyn6ftdXo75V9IGszzJ9DOgdpBefnjclX2iyrFoRcmVtbbmytgWWsNFjRbrYKmBzZcCwkcVxAbmymdE7B+bKPBeWK5uZb7I87uBUm8/P47imZhEdyFzZE0wHMFc2m+kA5sqeZDqAubI5TAcwV/YU0wHMlc1lOoC5snlMBzBXNp/pAObKnmY6gLmyBUwHMFf2DNMBzJUtZDqAubJFTAcwV7aY6QDmyp5lOoC5siVMBzBXtpTpAObKljEdwFzZc0wHMFe2nOkA5sqeZzqAubIVTAcwV/YC0wHMla1kOoC5sheZDmCu7CWmA5grW8V0AHNlLzMdwFzZaqYDmCt7hekA5srWMB3AXNlapgOYK1vHdABzZa8yHcBc2XqmA5gre43pAObKNjAdwFzZ60wHMFe2kekA5sreYDqAubJNTAcwV/Ym0wHMlW1mOoC5sreIDmSubAvzfABzZW8zHcBc2VamA5gre4fpAObKtjEdwFzZu0wHMFf2HtMBzJUJ0wHMlW1nOoC5sveZDmCubAfTAcyVfcB0AHNlO5kO4DzxQ6YDmCvbxXTswDk+Yjp24hy7mQ5gruxjpgOYK9vDdABzZZ8YHOfnyir+lSt7QpJnS/KTkjxHkp+S5LmSPE+S50vy05K8QJKfkeSFkrxIkhdL8rOSvESSl0ryMkl+TpKXS/LzkrxCkl/QrXvd9dYNY91r1W1K3eHTzTHdV9ItGd3N0I0AXUPX5WddudVFT10v1KU2XaXSBR5dG9FlBf0i149Z/Q7UTyj9+tCJu855dbqoMy2dpOj7XV+N+lbRB7I+y/QxoHeQXnx63pR8wX+xLKmeJNW3Jstm2ZJlswoscaNPi3S5VcQmy4BxI4vjApJln0XvHJgs815YsuyzfJNlr4NTbT4/e3FNfV7EU226A31dxNfVdGA38XW3Dfg+4oAjI3BfMB3ACNx+pgMYgTvAdAAjcF8yHcAI3FdMBzACd5DpAEbgvmY6gBG4Q0wHMAL3DdMBjMAdZjqAEbhvmQ5gBO47pgMYgfue6QBG4I4wHcAI3A9MBzACd5TpAEbgfmQ6gBG4Y0wHMAL3E9MBjMAdZzqAEbifmQ5gBO4E0wGMwP3CdAAjcL8yHcAI3G9MBzACd5LpAEbgfmc6gBG4U0wHMAL3B9MBjMCdZjqAEbg/mQ5gBO4M0wGMwJ1lOnARuGAxpgMXgQsWZzpwEbhgCaYDF4ELxjAduAhcMJbpwEXggh6mAxeBC3qZDlwELhjHdOAicMF4pgMXgQsmMB24CFzQR3QAI3BBP/N84CJwwQDTgYvABROZDlwELpjEdOAicMFkpgMXgQsGmQ5cBC4YYjpwEbhgmOnAReCCKUwHLgIXTGU6cBG4YBrTgYvABdOZDlwELhhhOoDzxAymAxeBC17EdOzAOUoyHTtxjouZDlwELliK6cBF4IKXMB24CFywtMFxfgSu0l8RuC8keb8kH5DkLyX5K0k+KMlfS/IhSf5Gkg9L8reS/J0kfy/JRyT5B0k+Ksk/SvIxSf5Jko9L8s+SfEKSf9Gte9311g1j3WvVbUrd4dPNMd1X0i0Z3c3QjQBdQ9flZ1251UVPXS/UpTZdpdIFHl0b0WUF/SLXj1n9DtRPKP360Im7znl1uqgzLZ2k6PtdX436VtEHsj7L9DGgd5BefHrelPy/isCZkm2fWxNP+2wRuM8LDB0HLy3S5VYJG4HD5aJMjqJH4IJloncOjMDFXVAELlgm32S5zMGpNp+fy3BNlSU6gMmy4OVMBy5ZFizHdOCSZcErmA5csixYnunAJcuCVzIduGRZsALTgUuWBSsyHbhkWbAS04FLlgWvYjpwybJgZaYDlywLXs104JJlwSpMBy5ZFryG6cAly4JVmQ5csixYjenAJcuC1ZkOXLIsWIPpwCXLgjWZDlyyLHgt04FLlgVrMR24ZFnwOqYDlywL1mY6cMmy4PVMBy5ZFqzDdOCSZcEbmA5csixYl+nAJcuCNzIduGRZsB7TgUuWBW9iOnDJsmB9pgOXLAs2YDpwybJgQ6YDlywLNmI6gMmyxkwHMFnWhOkAJsuaMh3AZNnNTAcwWdaM6QAmy5ozHcBkWQumA5gsu4XpACbLWjIdwGTZrUwHMFnWiuhAJstuY54PYLKsNdMBTJbdznQAk2VtmA5gsuwOpgOYLLuT6QAmy9oyHcBk2V1MBzBZdjfTAUyWtWM6gMmye5gOYLKsPdMBTJbdy3QA54kdmA5gsqwj07ED5+jEdOzEOTozHcBkWRemA5gs68p0AJNl3QyO85NlV51LlgUvl2A5CV4hwfISvFKCFSRYUYKVJHiVBCtL8GoJVpHgNRKsKsFqEqwuwRoSrCnBayVYS4LXSbC2BK/XrXvd9dYNY91r1W1K3eHTzTHdV9ItGd3N0I0AXUPX5WddudVFT10v1KU2XaXSBR5dG9FlBf0i149Z/Q7UTyj9+tCJu855dbqoMy2dpOj7XV+N+lbRB7I+y/QxoHeQXnx63pT8/+iPq91kjKAFy5qSZXqYJW7UvUiX21XQZBkybmRxXECyrIelc0uyrLglWVb8wpJlPfJNFkNYIu+Fhtldu/dt2H940yE53Rt1zc7OW9imQaubmxTkLb47a3BO5qBB2k6Zf49kQYHpwjXV2LOIY2Q8jb3+W09jsQs6jUk3me5r40D2Bp3s3mUu7A/V9bD+oTrjxZtVxFE3F5ppLTTTVmgfBw9U8/sbmHvsy3QAc4/ZTAcw99iP6QDmHnOYDmDusT/TAcw9DmA6gLnHgUwHMPeYy3QAc4+DmA5g7nEw0wHMPQ5hOoC5x6FMBzD3OIzpAOYehzMdwNzjCKYDmHscyXQAc4+jmA5g7vE+pgOYexzNdABzj/czHcDc4ximA5h7HMt0AHOPeUwHMPf4ANMBzD2OYzqAuccHmQ5g7nE80wHMPU5gOoC5x4lMBzD3+BDTAcw9TmI6gLnHh5kOYO5xMtMBzD0+wnQAc49TmA5g7vFRpgOYe5zKdABzj9OYDmDuMZ/pAOYeC5gOYO6xkOkA5h6nMx3A3OMMpgOYe3yM6EDmHmcyzwcw9/g40wHMPc5iOoC5xyeYDmDucTbTAcw9Psl0AHOPc5gOYO7xKaYDmHucy3QAc4/zmA5g7nE+0wHMPT7NdABzjwuYDuA88RmmA5h7XMh07MA5FjEdO3GOxUwHMPf4LNMBzD0uYTqAucelBscFpbxs+ZNLPnPRf7DnuQyVpf/gMssoFblKa5wn8UljnCfpRtNwBp8zFLqsYW5WdnZWr3MRqulx+XmL7sjK6ZWdabtiDP9e9l8t9huQnSnB5RuLfPKu1/+V7dJ9PvqAXEjvz09zdUv0tt0SX7joP3mf3hW2/vcXsX9jqHGF6U77wnRU9BL/azY1WoV19NRbIo11TNoXnDzXVmjDtgeBYQnXFKhceSHp2eALpqNeLOJZNF5oL/23XmjFLig+H8yyvseybOd7latC+1gL7WMr9GVXL/xltktzNe+Ff244n7NynrMN5ytFfeHHToe/8IvW4HXoBvWOL0KTlldB3RjLiyDGcIzhz0BMsyov5JUSTXrDuWe1rXfT5bimqJdjfEFRT3aUK/7s2bP7/2nyP8/lip/7r4J/pqtr//lx3UbT63FtcdNh68r81xdZsejS/zzkBcf+Omqt6cSsM4xaUS8evSi0+2kuHpXnvo3mWP+pg762R+Wrrgp9ylpotq3Q9a4KnWsttJ+t0NdcFTrPWmiOrdANrgqdby20v63Q110V+rS10AG2Qje6KnSBtdCBtkLfcFXoM9ZCc22FbnJV6EJroYNshb7pqtBF1kIH2wrd7KrQxdZCh9gKfctVoc9aCx1qK3SLq0KXWAsdZiv0bVeFLrUWOtxW6FZXhS6zFjrCVug7rgp9zlroSFuh21wVutxa6Chboe+6KvR5a6H32Qp9z1WhK6yFjrYVKq4KfcFa6P22Qre7KnSltdAxtkLfd1Xoi9ZCx9oK3eGq0JeshebZCv3AVaGrrIU+YCt0p6tCX7YWOs5W6IeuCl1tLfRBW6G7XBX6irXQ8bZCP3JV6BproRNshe52Vehaa6ETbYV+7KrQddZCH7IVusdVoa9aC51kK/QTV4Wutxb6sK3QT10V+pq10Mm2Qp39kssGa6GP2Ard66rQ162FTrEV+rmrQjdaC33UVug+V4W+YS10qq3QL1wVusla6DRboftdFfqmtdB8W6EHXBW62Vpoga3QL10V+pa10EJboV+5KnSLtdDptkIPuir0bWuhM2yFfu2q0K3WQh+zFXrIVaHvWAudaSv0G1eFbrMW+rit0MOuCn3XWugsW6Hfuir0PWuhT9gK/c5VoWItdLat0O9dFbrdWuiTtkKPuCr0fWuhc2yF/uCq0B3WQp+yFXrUVaEfWAudayv0R1eF7rQWOs9W6DFXhX5oLXS+rdCfXBW6y1ro07ZCj7sq9CNroQtshf7sqtDd1kKfsRV6wlWhH1sLXWgr9BdXhe6xFrrIVuivrgr9xFroYluhv7kq9FNroc/aCj3pqtDPrIUusRX6u6tC91oLXWor9JSrQj+3FrrMVugfrgrdZy3UmAk47arQL6yFLrcV+qerQvdbC33eVugZV4UesBa6wlboWVeFfmkt1JZPCxVzVehX1kJX2got7qrQg9ZCX7QVWsJVoV9bC33JVmiMq0IPWQtdZSs01lWh31gLfdlWqMdVoYetha62Fep1Vei31kJfsRUa56rQ76yFrrEVGu+q0O+tha61FZrgqtAj1kLX2Qr1uSr0B2uhr9oK9bsq9Ki10PW2QgOuCv3RWuhrtkITXRV6zFroBluhSa4K/cla6Ou2QpNdFXrcWuhGW6FBV4X+bC30DVuhIVeFnrAWuslWaNhVob9YC33TVmiKq0J/tRa62VZoqqtCf7MW+pat0DRXhZ60FrrFVmi6q0J/txb6tq3QiKtCT1kL3WorNMNVoX9YC33HVuhFrgo9bS10m63Qkq4K/dNa6Lu2Qi92VegZa6Hv2Qot5arQs9ZCxVboJY4KTSpmLXS7rdDSrgotbi30fVuhl7oqtIS10B22Qsu4KjTGWugHtkIvc1VorLXQnbZCy7oq1GMt9ENboZe7KtRrLXSXrdByrgqNsxb6ka3QK1wVGm8tdLet0PKuCk2wFvqxrdArXRXqsxa6x1ZoBVeF+q2FfmIrtKKrQgPWQj+1FVrJVaGJ1kI/sxV6latCk6yF7rUVWtlVocnWQj+3FXq1q0KD1kL32Qqt4qrQkLXQL2yFXuOq0LC10P22Qqu6KjTFWugBW6HVXBWaai30S1uh1V0VmmYt9CtboTVcFZpuLfSgrdCargqNWAv92lbota4KzbAWeshWaC1XhV5kLfQbW6HXuSq0pLXQw7ZCa7sq9GJrod/aCr3eVaGlrIV+Zyu0jqtCL7EW+r2t0BtcFVraWugRW6F1XRV6qbXQH2yF3uiq0DLWQo/aCq3nqtDLrIX+aCv0JleFlrUWesxWaH1XhV5uLfQnW6ENXBVazlrocVuhDV0VeoW10J9thTZyVWh5a6EnbIU2dlXoldZCf7EV2sRVoRWshf5qK7Spq0IrWgv9zVboza4KrWQt9KSt0GauCr3KWujvtkKbuyq0srXQU7ZCW7gq9GproX/YCr3FVaFVrIWethXa0lWh11gL/dNW6K2uCq1qLfSMrdBWrgqtZi30rK3Q21wVWt1YqL+YrdDWrgqtYS20uK3Q210VWtNaaAlboW1cFXqttdAYW6F3uCq0lrXQWFuhd7oq9DproR5boW1dFVrbWqjXVuhdrgq93lponK3Qu10VWsdaaLyt0HauCr3BWmiCrdB7XBVa11qoz1Zoe0uhf/+l4uY5WYMLK+8tNk+Cr0pwvQRfk+AGCb4uwY0SfEOCmyT4pgQ3S/AtCW6R4NsS3CrBdyS4TYLvSvA9CYoEt0vwfQnukOAHEtwpwQ8luEuCH0lwtwQ/luAeCX4iwU8l+JkE90rwcwnuk+AXEtwvwQMS/FKCX0nwoAS/luAhCX4jwcMS/FaC30nwewkekeAPEjwqwR8leEyCP0nwuAR/luAJCf4iwV8l+JsET0rwdwmekuAfEjwtwT8leEaCZyV0LsgroRISipFQrIQ8EvJKKE5C8RJKkJBPQn4JBSSUKKEkCSVLKCihkITCEkqRUKqE0iSULqGIhDIkdJGESkroYgmVktAlEiotoUslVEZCl0morIQul1A5CV0hofISulJCFSRUUUKVJHSVbvPrBrpuTeumr26n6kalbgHq5ppuW+mGkG616CaGbg/owrsuaetisS7D6gKnLh3qopwud+lCki7R6OKHLivoB7t+CutHpn6+6YeRfnLoZF6nyToB1amdTpp0OqIven2F6stJH/v6QNVHlT4E9PbSC1cviUV/n+9/XaCGP7To+esvfhkjlPcarrt//kJ2ZehfyLZ0bm2qg4MbvbgEz/1T2NEG8Qbrn3sNdSziTX71/9zk/5+8yQsMV925mzzUwfIWOndgxwLbXWS6jDsV6ZlxtemZUZzwzOhUxGeG/dkL/GOdoc4ORts8RJ1xTXUhOmLb4hxdmY6OOEc3pgN4XXVnOrriHD2Yju44RybTkYlz9GQ6euEcvZiOLJyjN9PRF+fIYjr64Rx9mI7+OEdfpmMgzpHNdAzCOfoxHUNwjhymYxjO0Z/pGIFzDGA6RuEcA5mO0ThHLtMxBucYxHTk4RyDmY5xOMcQpmM8zjGU6ZiIcwxjOibhHMOZjsk4xwimYwrOMZLpmIpzjGI68nGO+5iOQpxjNNMxA+e4n+mYiXOMYTpm4RxjmY7ZOEce0zEH53iA6ZiLc4xjOubjHA8yHQtwjvFMx0KcYwLTsRjnmMh0LME5HmI6luEck5iO5TjHw0zHCpxjMtOxEud4hOiIeQ/nmMI8H6twjkeZjtU4x1SmYw3OMY3pWIdz5DMd63GOAqZjA85RyHRsxDmmMx2bcI4ZTMdmnOMxpmMLzjGT6diKczzOdGzDOWYxHcB54hNMx3acYzbTsQPneJLp2IlzzGE6duEcTzEdu3GOuUzHHpxjHtPxKc4xn+nYi3M8zXTswzkWMB37cY5nmI4vcY6FTMdBnGMR03EI51jMdBzGOZ5lOr7DOZYwHUdwjqVMx1GcYxnTcQzneI7pOI5zLGc6TuAczzMdv+IcK5iOkzjHC0zHKZxjJdNxGud4kek4g3O8RHR4iuEcq5iOEjjHy0xHLM6xmunw4hyvMB3xOMcapsOHc6xlOgI4xzqmIwnneJXpCOIc65mOMM7xGtORinNsYDrScY7XmY4MnGMj01ES53iD6SiFc2xiOkrjHG8yHWVwjs1MR1mc4y2moxzOsYXpKI9zvM10VMA5tjIdlXCOd5iOyjjHNqajCs7xLtNRFed4j+mojnMI01ET59jOdNTCOd5nOmrjHDuYjjo4xwdMR12cYyfTUQ/n+JDpqI9z7GI6GuIcHzEdjXGO3UxHU5zjY6ajGc6xh+logXN8wnS0xDk+ZTpa4RyfMR2tcY69TEcbnONzpuNOnGMf03EXzvEF09EO59jPdLTHOQ4wHR1wji+Zjk44x1dMRxec4yDT0Q3n+Jrp6IFzHGI6euIc3zAdvXGOw0xHH5zjW6YjG+f4junIwTm+ZzoG4BxHmI5cnOMHpmMwznGU6RiKc/zIdAzHOY4xHSNxjp+YjvtwjuNMx/04x89Mx1ic4wTT8QDO8QvT8SDO8SvTMQHn+I3peAjnOMl0PIxz/M50PIJznGI6HsU5/mA6cE2FTjMdBTjHn0zHdJzjDNPxGM5xlul4HNZU2BDVzVv6t6N5Ttbgwip7i82TUFcJdZNQdwn1kFCmhHpKqJeEeksoS0J9JNRXQtkS6iehHAn1l9AACQ2UUK6EBklosISGSGiohIZJaLiERkhopIRGSeg+CY2W0P0SGiOhsRLKk9ADEhonoQclNF5CEyQ0UUIPSWiShB6W0GQJPSKhKRJ6VEJTJTRNQvkSKpBQoYSmS2iGhB6T0EwJPS6hWRJ6QkKzJfSkhOZI6CkJzZWQ1j9fQk9LaIGEnpHQQgktktBiCT0roSUSWiqhZRJ6TkLLJfS8hFZI6AUJrZTQixJ6SUKrJPSyhFZL6BUJrZHQWgmtk9CrElovodcktEFCr0too4TekNAmCb0poc0SektCWyT0toS2SugdCW2T0LsSek9CIqHtEnpfQjsk9IGEdkroQwntktBHEtotoY8ltEdCn+iGuu5F6zau7oDq5qHuu+mWle726EaJ7jHo8ryubOuisK6n6lKkruLpApiuHemyi65Y6Me+fifrJ6Z+nemHjX4T6HRaZ6I6idP5j04d9K2rLyx91utjUp8wenPqda2XxKK/z3fe0gaDBmXmDm6fmdu/sCD6P6hb/HoJvqCHVe3RKvdAtXkV17Rusjovr13HCjUONxuxdkB+owO/FB7T4/QoCXUpMN1mXQoM7YWLF+lmrGK6GYtbnwS4Pxpvcpx/UvKjnxTPudEOvmIY7RJ6pGm0SzgYbfMQ4SL54ZgLGO1ooxNTt9DQd4zhmLqmcxFLPBexbXHnwsN0dMQ5vEwH8EkUx3R0xTnimY7uOEcC05GJc/iYjl44h5/pyMI5AkxHX5wjkenoh3MkMR39cY5kpmMgzhFkOgbhHCGmYwjOEWY6huEcKUzHCJwjlekYhXOkMR2jcY50pmMMzhFhOvJwjgymYxzOcRHTMR7nKMl0TMQ5LmY6JuEcpZiOyTjHJUzHFJyjNNMxFee4lOnIxznKMB2FOMdlTMcMnKMs0zET57ic6ZiFc5RjOmbjHFcwHXNwjvJMx1yc40qmYz7OUYHpWIBzVGQ6FuIclZiOxTjHVUzHEpyjMtOxDOe4mulYjnNUYTpW4BzXMB0rcY6qREcM7s8Sh6sxz8cqnKM607Ea56jBdKzBOWoyHetwjmuZjvU4Ry2mYwPOcR3TsRHnqM10bMI5rmc6NuMcdZiOLTjHDUzHVpyjLtOxDee4kekAzhPrMR3bcY6bmI4dOEd9pmMnztGA6diFczRkOnbjHI2Yjj04R2Om41OcownTsRfnaMp07MM5bmY69uMczZiOL3GO5kzHQZyjBdNxCOe4hek4jHO0ZDq+wzluZTqO4BytmI6jOMdtTMcxnKM103Ec57id6TiBc7RhOn7FOe5gOk7iHHcyHadwjrZMx2mc4y6m4wzOcTfR4SmGc7RjOoD/VsY9TEcsztGe6fDiHPcyHfE4Rwemw4dzdGQ6AjhHJ6YjCefozHQEcY4uTEcY5+jKdKTiHN2YjnScozvTkYFz9GA6SuIcmUxHKZyjJ9NRGufoxXSUwTl6Mx1lcY4spqMcztGH6SiPc/RlOirgHNlMRyWcox/TURnnyGE6quAc/ZmOqjjHAKajOs4xkOmoiXPkMh21cI5BTEdtnGMw01EH5xjCdNTFOYYyHfVwjmFMR32cYzjT0RDnGMF0NMY5RjIdTXGOUUxHM5zjPqajBc4xmuloiXPcz3S0wjnGMB2tcY6xTEcbnCOP6bgT53iA6bgL5xjHdLTDOR5kOtrjHOOZjg44xwSmoxPOMZHp6IJzPMR0dMM5JjEdPXCOh5mOnjjHZKajN87xCNPRB+eYwnRk4xyPMh05OMdUpmMAzjGN6cjFOfKZjsE4RwHTMRTnKGQ6huMc05mOkTjHDKbjPpzjMabjfpxjJtMxFud4nOl4AOeYxXQ8iHM8wXRMwDlmMx0P4RxPMh0P4xxzmI5HcI6nmI5HcY65TAeuqfA8pqMA55jPdEzHOZ5mOh7DORYwHY/jHM8YHEv/djTPyRpceM3eYvMk7JGwV8JxEo6XcIKEfRL2Szgg4UQJJ0k4WcJBCYckHJZwioRTJZwm4XQJRyScIeGLJFxSwhdLuJSEL5FwaQlfKuEyEr5MwmUlfLmEy0n4CgmXl/CVEq4g4YoSriThqyRcWcJXS7iKhK+RcFUJV5NwdQnXkHBNCV8r4VoSvk7CtSV8vYTrSPgGCdeV8I0SrifhmyRcX8INJNxQwo0k3FjCTSTcVMI3S7iZhJtLuIWEb5FwSwnfKuFWEr5Nwq0lfLuE20j4DgnfKeG2Er5LwndLuJ2E75FwewnfK+EOEu4o4U4S7izhLhLuKuFuEu4u4R4SzpRwTwn3knBvCWdJuI+E+0o4W8L9JJwj4f4SHiDhgRLOlfAgCQ+W8BAJD5XwMAkPl/AICY+U8CgJ3yfh0bqhrnvRuo2rO6C6eaj7brplpbs9ulGiewy6PK8r27oorOupuhSpq3i6AKZrR7rsoisW+rGv38n6ialfZ/pho98EOp3WmahO4nT+o1MHfevqC0uf9fqY1CeM3px6Xeslsejv8523tMGgQZm5g9tn5vYvLNAP7qo9WuUeqDav4prWTVbn5bXrWKHG4WYj1g7Ib3Tgl8JjeqFI8AUJxxQaLrtzB8YWmC7QmAJDx+GFRbodrzHdjsWt9xAwJm5xnH9a8qOPtufcaAdfMYx2jB5pGu1FDkbbPESLcE0tJjpi2+IczzIdHXGOJUxHZ5xjKdPRFedYxnR0xzmeYzoycY7lTEcvnON5piML51jBdPTFOV5gOvrhHCuZjv44x4tMx0Cc4yWmYxDOsYrpGIJzvMx0DMM5VjMdI3COV5iOUTjHGqZjNM6xlukYg3OsYzrycI5XmY5xOMd6pmM8zvEa0zER59jAdEzCOV5nOibjHBuZjik4xxtMx1ScYxPTkY9zvMl0FOIcm5mOGTjHW0zHTJxjC9MxC+d4m+mYjXNsZTrm4BzvMB1zcY5tTMd8nONdpmMBzvEe07EQ5xCmYzHOsZ3pWIJzvM90LMM5djAdy3GOD5iOFTjHTqZjJc7xIdERA/yjvruY52MVzvER07Ea59jNdKzBOT5mOtbhHHuYjvU4xydMxwac41OmYyPO8RnTsQnn2Mt0bMY5Pmc6tuAc+5iOrTjHF0zHNpxjP9MBnCceYDq24xxfMh07cI6vmI6dOMdBpmMXzvE107Eb5zjEdOzBOb5hOj7FOQ4zHXtxjm+Zjn04x3dMx36c43um40uc4wjTcRDn+IHpOIRzHGU6DuMcPzId3+Ecx5iOIzjHT0zHUZzjONNxDOf4mek4jnOcYDpO4By/MB2/4hy/Mh0ncY7fmI5TOMdJpuM0zvE703EG5zhFdHiK4Rx/MB3Af9XjNNMRi3P8yXR4cY4zTEc8znGW6fDBmkopxnQEcI7iTEcSzlGC6QjiHDFMRxjniGU6UnEOD9ORjnN4mY4MnCOO6SiJc8QzHaVwjgSmozTO4WM6yuAcfqajLM4RYDrK4RyJTEd5nCOJ6aiAcyQzHZVwjiDTURnnCDEdVXCOMNNRFedIYTqq4xypTEdNnCON6aiFc6QzHbVxjgjTUQfnyGA66uIcFzEd9XCOkkxHfZzjYqajIc5RiulojHNcwnQ0xTlKMx3NcI5LmY4WOEcZpqMlznEZ09EK5yjLdLTGOS5nOtrgHOWYjjtxjiuYjrtwjvJMRzuc40qmoz3OUYHp6IBzVGQ6OuEclZiOLjjHVUxHN5yjMtPRA+e4munoiXNUYTp64xzXMB19cI6qTEc2zlGN6cjBOaozHQNwjhpMRy7OUZPpGIxzXMt0DMU5ajEdw3GO65iOkThHbabjPpzjeqbjfpyjDtMxFue4gel4AOeoy3Q8iHPcyHRMwDnqMR0P4Rw3MR0P4xz1mY5HcI4GTMejOEdDpgPXVEojpqMA52jMdEzHOZowHY/hHE2ZjsdxjpsNjqV/O5rnZA0urLq32DwJPyvhJRJeKuFlEn5Owssl/LyEV0j4BQmvlPCLEn5Jwqsk/LKEV0v4FQmvkfBaCa+T8KsSXi/h1yS8QcKvS3ijhN+Q8CYJvynhzRJ+S8JbJPy2hLdK+B0Jb5PwuxJ+T8Ii4e0Sfl/COyT8gYR3SvhDCe+S8EcS3i3hjyW8R8KfSPhTCX8m4b0S/lzC+yT8hYT3S/iAhL+U8FcSPijhryV8SMLfSPiwhL+V8HcS/l7CRyT8g4SPSvhHCR+T8E8SPi7hnyV8QsK/SPhXCf8m4ZMS/l3CpyT8h4RPS/hPCZ+R8FlJKSYp57JykhIjKbGS4pEUr6TESUq8pCRIik9S/JISkJRESUmSlGRJCUpKSFLCkpIiKamSkiYp6ZISkZQMSblIUkpKysWSUkpSLpGU0pJyqaSU0Q113YvWbVzdAdXNQ9130y0r3e3RjRLdY9DleV3Z1kVhXU/VpUhdxdMFMF070mUXXbHQj339TtZPTP060w8b/SbQ6bTORHUSp/MfnTroW1dfWPqs18ekPmH05tTrWi+JRX+f77ylDQYNyswd3D4zt39hQfS/ZVT8Ogm+oIdV7dEq90C1eRXXtG6yOi+vXccKNQ43G7F2QH6jA78UHtPj9CgJLy6wXJ56mKG9lGZFuhmrmm7G4sY7KLwIdzNaHOeflPzoJ8VzbrSDrxhGO1aPNI12cwejbR6i5rimWhAdsW1xjluYjo44R0umozPOcSvT0RXnaMV0dMc5bmM6MnGO1kxHL5zjdqYjC+dow3T0xTnuYDr64Rx3Mh39cY62TMdAnOMupmMQznE30zEE52jHdAzDOe5hOkbgHO2ZjlE4x71Mx2icowPTMQbn6Mh05OEcnZiOcThHZ6ZjPM7RhemYiHN0ZTom4RzdmI7JOEd3pmMKztGD6ZiKc2QyHfk4R0+moxDn6MV0zMA5ejMdM3GOLKZjFs7Rh+mYjXP0ZTrm4BzZTMdcnKMf0zEf58hhOhbgHP2ZjoU4xwCmYzHOMZDpWIJz5DIdy3COQUzHcpxjMNOxAucYwnSsxDmGEh0xuD/pmzKMeT5W4RzDmY7VOMcIpmMNzjGS6ViHc4xiOtbjHPcxHRtwjtFMx0ac436mYxPOMYbp2IxzjGU6tuAceUzHVpzjAaZjG84xjukAzhMfZDq24xzjmY4dOMcEpmMnzjGR6diFczzEdOzGOSYxHXtwjoeZjk9xjslMx16c4xGmYx/OMYXp2I9zPMp0fIlzTGU6DuIc05iOQzhHPtNxGOcoYDq+wzkKmY4jOMd0puMozjGD6TiGczzGdBzHOWYyHSdwjseZjl9xjllMx0mc4wmm4xTOMZvpOI1zPMl0nME55hAdnmI4x1NMRwmcYy7TEYtzzGM6vDjHfKYjHud4munw4RwLmI4AzvEM05GEcyxkOoI4xyKmI4xzLGY6UnGOZ5mOdJxjCdORgXMsZTpK4hzLmI5SOMdzTEdpnGM501EG53ie6SiLc6xgOsrhHC8wHeVxjpVMRwWc40WmoxLO8RLTURnnWMV0VME5XmY6quIcq5mO6jjHK0xHTZxjDdNRC+dYy3TUxjnWMR11cI5XmY66OMd6pqMezvEa01Ef59jAdDTEOV5nOhrjHBuZjqY4xxtMRzOcYxPT0QLneJPpaIlzbGY6WuEcbzEdrXGOLUxHG5zjbabjTpxjK9NxF87xDtPRDufYxnS0xzneZTo64BzvMR2dcA5hOrrgHNuZjm44x/tMRw+cYwfT0RPn+IDp6I1z7GQ6+uAcHzId2TjHLqYjB+f4iOkYgHPsZjpycY6PmY7BOMcepmMozvEJ0zEc5/iU6RiJc3zGdNyHc+xlOu7HOT5nOsbiHPuYjgdwji+Yjgdxjv1MxwSc4wDT8RDO8SXT8TDO8RXT8QjOcZDpeBTn+JrpwDWVcojpKMA5vmE6puMch5mOx3COb5mOx3EOwz8hkrf0b0fznKzBhdX2FpsnKbdISktJuVVSWknKbZLSWlJul5Q2knKHpNwpKW0l5S5JuVtS2knKPZLSXlLulZQOktJRUjpJSmdJ6SIpXSWlm6R0l5QekpIpKT0lpZek9JaULEnpIyl9JSVbUvpJSo6k9JeUAZIyUFJyJWWQpAyWlCGSMlRShknKcEkZISkjJWWUpNwnKaMl5X5JGSMpYyUlT1IekJRxkvKgpIyXlAmSMlFSHpKUSZLysKRMlpRHJGWKpDwqKVMlZZqk5EtKgaQUSsp0SZkhKY9JykxJeVxSZknKE5IyW1KelJQ5kvKUpMyVFB2B+ZLytKQskJRnJGWhpCySlMWS8qykLJGUpZKyTFKek5TlkvK8pKyQlBckZaWkvCgpL0nKKkl5WVJWS8orkrJGUtZKyjpJeVVS1kvKa5KyQVJel5SNkvKGpGySlDd1Q133onUbV3dAdfNQ9910y0p3e3SjRPcYdHleV7Z1UVjXU3UpUlfxdAFM14502UVXLPRjX7+T9RNTv870w0a/CXQ6rTNRncTp/EenDvrW1ReWPuv1MalPGL059brWS2LR3+c7b2mDQYMycwe3z8ztX1hQaLiagi9I8CU9sGqPVrkHqs2ruKZ1k9V5ee06VqhxuNmItQPyGx34pfCYHnnuwJQWBaYLtEWBob2U74t0O1Yz3Y7FrfdQc9ztaHGcf1ryraflFdNoB18wjbbh3+vJe6FhdtfufRv2H950SE73Rl2zs/MWtmnQ6uYmBXmL784anJM5SO/lI2WKfFKsIxnbFndSfnBwcZkdHXGOo0xHZ5zjR6ajK85xjOnojnP8xHRk4hzHmY5eOMfPTEcWznGC6eiLc/zCdPTDOX5lOvrjHL8xHQNxjpNMxyCc43emYwjOcYrpGIZz/MF0jMA5TjMdo3COP5mO0TjHGaZjDM5xlunIgzWVWozpGIdzFGc6xuMcJZiOiThHDNMxCeeIZTom4xwepmMKzuFlOqbiHHFMRz7OEc90FOIcCUzHDJzDx3TMxDn8TMcsnCPAdMzGORKZjjk4RxLTMRfnSGY65uMcQaZjAc4RYjoW4hxhpmMxzpHCdCzBOVKZjmU4RxrTsRznSGc6VuAcEaZjJc6RQXTE4P5mbupFzPOxCucoyXSsxjkuZjrW4BylmI51OMclTMd6nKM007EB57iU6diIc5RhOjbhHJcxHZtxjrJMxxac43KmYyvOUY7p2IZzXMF0AOeJ5ZmO7TjHlUzHDpyjAtOxE+eoyHTswjkqMR27cY6rmI49OEdlpuNTnONqpmMvzlGF6diHc1zDdOzHOaoyHV/iHNWYjoM4R3Wm4xDOUYPpOIxz1GQ6vsM5rmU6juActZiOozjHdUzHMZyjNtNxHOe4nuk4gXPUYTp+xTluYDpO4hx1mY5TOMeNTMdpnKMe03EG57iJ6PAUwznqMx0lcI4GTEcsztGQ6fDiHI2YjnicozHT4cM5mjAdAZyjKdORhHPczHQEcY5mTEcY52jOdKTiHC2YjnSc4xamIwPnaMl0lMQ5bmU6SuEcrZiO0jjHbUxHGZyjNdNRFue4nekoh3O0YTrK4xx3MB0VcI47mY5KOEdbpqMyznEX01EF57ib6aiKc7RjOqrjHPcwHTVxjvZMRy2c416mozbO0YHpqINzdGQ66uIcnZiOejhHZ6ajPs7RheloiHN0ZToa4xzdmI6mOEd3pqMZztGD6WiBc2QyHS1xjp5MRyucoxfT0Rrn6M10tME5spiOO3GOPkzHXThHX6ajHc6RzXS0xzn6MR0dcI4cpqMTztGf6eiCcwxgOrrhHAOZjh44Ry7T0RPnGMR09MY5BjMdfXCOIUxHNs4xlOnIwTmGMR0DcI7hTEcuzjGC6RiMc4xkOobiHKOYjuE4x31Mx0icYzTTcR/OcT/TcT/OMYbpGItzjGU6HsA58piOB3GOB5iOCTjHOKbjIZzjQabjYZxjPNPxCM4xgel4FOeYyHTgmkp9iOkowDkmMR3TcY6HmY7HcI7JTMfjOIfh0fevP+ZeYP5j7qYDX9QDzxUa9e+5p04pYqGWvzpfR4LPFxp6r2OpMPi8yRH9GV28yI4btFnD5ZW3rGFuVnZ2Vq9zf+p+umdG3qI7snJ6ZWfarhXLv4BRpAZroxu8rggNmq/jldbr+KVpaI+EDcHtgnNt9huQnSmpU//5cZr1/jdMGfJeaJjdtXvfhv2HNx2S0/3ctZO3sE2DVjc3KchbfHfW4JzMQYO07zL/vrriC4o+1KutQ706ylCfPXv25D9D/Z8PLn7uv84bxPx/fizYaKLnFzcdVlCmyPf136Niej5eWsvB8/Hvwbb1f10R+582/T83W3Dsr+vT9nIosFzrl9YyHXWd4dr6vw6k4bGvlGlFHCLTjZNUT4J9TQc2kmBP23AWuio023RgY3Oh010V2s90YBNzoTNcFZpjOrCpudDHXBXa33TgzeZCZ7oqdIDpwGbmQh93VehA04HNzYXOclVorunAFuZCn3BV6CDTgbeYC53tqtDBpgNbmgt90lWhQ0wH3moudI6rQoeaDmxlLvQpV4UOMx14m7nQua4KHW46sLW50HmuCh1hOvB2c6HzXRU60nRgG3OhT7sqdJTpwDvMhS5wVeh9pgPvNBf6jKtCR5sObGsudKGrQu83HXiXudBFrgodYzrwbnOhi10VOtZ0YDtzoc+6KjTPdOA95kKXuCr0AdOB7c2FLnVV6DjTgfeaC13mqtAHTQd2MBf6nKtCx5sO7GgudLmrQieYDuxkLvR5V4VONB3Y2VzoCleFPmQ6sIu50BdcFTrJdGBXc6ErXRX6sOnAbuZCX3RV6GTTgd3Nhb7kqtBHTAf2MBe6ylWhU0wHZpoLfdlVoY+aDuxpLnS1q0Knmg7sZS70FVeFTjMd2Ntc6BpXhZp2uJKyzIWudVWo7cA+5kLXuSq00HRgX3Ohr7oqdLrpwGxzoetdFTrDdGA/c6GvuSr0MdOBOeZCN7gqdKbpwP7mQl93VejjpgMHmAvd6KrQWaYDB5oLfcNVoU+YDsw1F7rJVaGzTQcOMhf6pqtCnzQdONhc6GZXhc4xHTjEXOhbrgp9ynTgUHOhW1wVOtd04DBzoW+7KnSe6cDh5kK3uip0vunAEeZC33FV6NOmA0eaC93mqtAFpgNHmQt911Whz5gOvM9c6HuuCl1oOnC0uVBxVegi04H3mwvd7qrQxaYDx5gLfd9Voc+aDhxrLnSHq0KXmA7MMxf6gatCl5oOfMBc6E5LoX9nTprnZA0urL63WH1JLZTU6ZI6Q1Ifk9SZkvq4pM6S1CckdbakPimpcyT1KUmdK6nzJHW+pD6tm+26ja0bxLr1qpuaul2oG3G6xaWbR7otoxseupWgi/S6/K0Ly7pkq4uhusyoC3i6NKaLTrqcowslugShH/f62awfpPqppx9R+nmiE3+dUutkVaeBOsHSqYtOCvR1qy8yfUXow1cfa/rA0FtRL3K9fPTEKHnR355//+pwoWm4Poz+677xpl8Kji/6bzeb1p7O/VLwh7ZTv8vQ/z9xo+rQuJGlc2tTHxXxEq7xv+klbHmGnLtACo2/W/5RgW34TRfb7iJdbDVMF1txwsW2u4g3rfG58vF/63Ol+IU9Vz62PVf2ODjV5vOzB9fUJ0RHbFuc41OmoyPO8RnT0Rnn2Mt0dMU5Pmc6uuMc+5iOTJzjC6ajF86xn+nIwjkOMB19cY4vmY5+OMdXTEd/nOMg0zEQ5/ia6RiEcxxiOobgHN8wHcNwjsNMxwic41umYxTO8R3TMRrn+J7pGINzHGE68nCOH5iOcTjHUaZjPM7xI9MxEec4xnRMwjl+Yjom4xzHmY4pOMfPTMdUnOME05GPc/zCdBTiHL8yHTNwjt+Yjpk4x0mmYxbO8TvTMRvnOMV0zME5/mA65uIcp5mO+TjHn0zHApzjDNOxEOc4y3QshjWVVozpWIJzFGc6luEcJZiO5ThHDNOxAueIZTpW4hweoiPmPZzDyzwfq3COOKZjNc4Rz3SswTkSmI51OIeP6ViPc/iZjg04R4Dp2IhzJDIdm3COJKZjM86RzHRswTmCTMdWnCPEdGzDOcJMB3CemMJ0bMc5UpmOHThHGtOxE+dIZzpw0ZK0CNOxG+fIYDpw+Y+0iwyO83NlNf/KlX0qqZ9J6l5J/VxS90nqF5K6X1IPSOqXkvqVpB6U1K8l9ZCkfiOphyX1W0n9TlK/l9QjkvqDpB6V1B8l9Zhu3euut24Y616rblPqDp9ujum+km7J6G6GbgToGrouP+vKrS566nqhLrXpKpUu8OjaiC4r6Be5fszqd6B+QunXh07cdc6r00WdaekkRd/v+mrUt4o+kPVZpo8BvYP04tPzpuQLzZVdX4Rc2Se2XNknBYb20koW6WKric2VAS82i6PoubK0i6N3DsyVlbigXFnaxfkmSykHp9p8fkrhmrqE6ADmytJKMx24XFnapUwHLleWVobpwOXK0i5jOnC5srSyTAcuV5Z2OdOBy5WllWM6cLmytCuYDlyuLK0804HLlaVdyXTgcmVpFZgOXK4srSLTgcuVpVViOnC5srSrmA5criytMtOBy5WlXc104HJlaVWYDlyuLO0apgOXK0urynTgcmVp1ZgOXK4srTrTgcuVpdVgOnC5srSaTAcuV5Z2LdOBy5Wl1WI6cLmytOuYDlyuLK0204HLlaVdz3TgcmVpdZgOXK4s7QamA5crS6vLdOByZWk3Mh24XFlaPaYDlytLu4npwOXK0uozHbhcWVoDpgOXK0tryHTgcmVpjZgOYK6sMdMBzJU1YTqAubKmTAcwV3Yz0wHMlTVjOoC5suZEBzJX1oJ5PoC5sluYDmCurCXTAcyV3cp0AHNlrZgOYK7sNqYDmCtrzXQAc2W3Mx3AXFkbpgOYK7uD6QDmyu5kOoC5srZMBzBXdhfTAZwn3s10AHNl7ZiOHTjHPUzHTpyjPdMBzJXdy3QAc2UdmA5g1McQXfhXruzac7mytNKSdqmklZG0yyStrKRdLmnlJO0KSSsvaVdKWgVJqyhplSTtKkmrLGlXS1oVSbtG0qpKWjVJqy5pNSStpm7d6663bhjrXqtuU+oOn26O6b6SbsnoboZuBOgaui4/68qtLnrqeqEutekqlS7w6NqILivoF7l+zOp3oH5C6deHTtx1zqvTRZ1p6SRF3+/6atS3ij6Q9VmmjwG9g/Ti0/Om5AvNldW258rSLjHlyvQwS9ioU5EutmuhuTJk2MjiuIBcWefonQNzZTEXlivrnG+ydHFwqs3npwuuqa5EBzJX1o3pAObKujMdwFxZD6YDmCvLZDqAubKeTAcwV9aL6QDmynozHcBcWRbTAcyV9WE6gLmyvkwHMFeWzXQAc2X9mA5griyH6QDmyvozHcBc2QCmA5grG8h0AHNluUwHMFc2iOkA5soGMx3AXNkQpgOYKxvKdABzZcOYDmCubDjTAcyVjWA6gLmykUwHMFc2iukA5sruYzqAubLRTAcwV3Y/0wHMlY1hOoC5srFMBzBXlsd0AHNlDzAdwFzZOKYDmCt7kOkA5srGMx3AXNkEpgOYK5vIdABzZQ8xHcBc2SSmA5gre5jpAObKJjMdwFzZI0wHMFc2hehA5soeZZ4PYK5sKtMBzJVNYzqAubJ8pgOYKytgOoC5skKmA5grm850AHNlM5gOYK7sMaYDmCubyXQAc2WPMx3AXNkspgOYK3uC6QDOE2czHcBc2ZNMxw6cYw7TsRPneIrpAObK5jIdwFzZPKYDmCszLBX/K1dW669cWTdJ6y5pPSQtU9J6SlovSestaVmS1kfS+kpatqT1k7QcSesvaQMkbaCk5UraIEkbLGlDJG2opA2TtOG6da+73rphrHutuk2pO3y6Oab7Srolo7sZuhGga+i6/Kwrt7roqeuFutSmq1S6wKNrI7qsoF/k+jGr34H6CaVfHzpx1zmvThd1pqWTFH2/66tR3yr6QNZnmT4G9A7Si0/Pm5IvNFcm4dgiJMu62pJlXQsscaOni3S51cImy4BxI4vjApJlC6J3DkyWxV5YsmxBvsnyjINTbT4/z+CaWkh0IJNli5gOYLJsMdMBTJY9y3QAk2VLmA5gsmwp0wFMli1jOoDJsueYDmCybDnTAUyWPc90AJNlK5gOYLLsBaYDmCxbyXQAk2UvMh3AZNlLTAcwWbaK6QAmy15mOoDJstVMBzBZ9grTAUyWrWE6gMmytUwHMFm2jukAJsteZTqAybL1TAcwWfYa0wFMlm1gOoDJsteZDmCybCPTAUyWvcF0AJNlm5gOYLLsTaYDmCzbzHQAk2VvMR3AZNkWpgOYLHub6QAmy7YyHcBk2TtMBzBZto3pACbL3mU6gMmy95gOYLJMmA5gsmw70wFMlr3PdACTZTuYDmCy7AOiA5ks28k8H8Bk2YdMBzBZtovpACbLPmI6gMmy3UwHMFn2MdMBTJbtYTqAybJPmA5gsuxTpgOYLPuM6QAmy/YyHcBk2edMBzBZto/pAM4Tv2A6gMmy/UzHDpzjANOxE+f4kukAJsu+YjqAybKDTAcwWfa1wXF+suy6v5JliyRtsaQ9K2lLJG2ppC2TtOckbbmkPS9pKyTtBUlbKWkvStpLkrZK0l6WtNWS9oqkrZG0tZK2TtJelbT1unWvu966Yax7rbpNqTt8ujmm+0q6JaO7GboRoGvouvysK7e66KnrhbrUpqtUusCjayO6rKBf5Poxq9+B+gmlXx86cdc5r04XdaalkxR9v+urUd8q+kDWZ5k+BvQO0otPz5uSLzRZdl0RcmULbbmyhQWWsNGhIl1s12FzZcCwkcVxAbmyb6J3DsyVeS4sV/ZNvsly2MGpNp+fw7imviU6kLmy75gOYK7se6YDmCs7wnQAc2U/MB3AXNlRpgOYK/uR6QDmyo4xHcBc2U9MBzBXdpzpAObKfmY6gLmyE0wHMFf2C9MBzJX9ynQAc2W/MR3AXNlJpgOYK/ud6QDmyk4xHcBc2R9MBzBXdprpAObK/mQ6gLmyM0wHMFd2lunA5crSizEduFxZenGmA5crSy/BdOByZekxTAcuV5Yey3TgcmXpHqYDlytL9zIduFxZehzTgcuVpcczHbhcWXoC04HLlaX7mA5crizdz3TgcmXpAaYDlytLT2Q6cLmy9CSmA5crS09mOnC5svQg04HLlaWHmA5criw9zHTgcmXpKUwHLleWnsp04HJl6WlEBzBXlp7OPB+4XFl6hOnA5crSM5gOXK4s/SKmA5crSy/JdOByZekXMx24XFl6KaYDlytLv4TpwOXK0kszHbhcWfqlTAcuV5ZehunA5crSL2M6cLmy9LJMB3CeeDnTgcuVpZdjOnbgHFcwHTtxjvJMBy5Xln4l04HLlaVXYDpwubL0igbH+bmy2n/lyr6TtO8l7Yik/SBpRyXtR0k7Jmk/SdpxSftZ0k5I2i+S9quk/SZpJyXtd0k7JWl/SNppSftT0s5I2llJL6Zb97rrrRvGuteq25S6w6ebY7qvpFsyupuhGwG6hq7Lz7pyq4ueul6oS226SqULPLo2ossK+kWuH7P6HaifUPr1oRN3nfPqdFFnWjpJ0fe7vhr1raIPZH2W6WNA7yC9+PS8KfmC/2JZ6qOSOs2aLPvWliz7tsDQXnqlIl1utbHJMlzcyOQoerIs/aronQOTZd4LSpalX5VvslR2cKrN56cyrqmri3iqTXdg8AUJrjQd+KIEX7INeBXigAMjcOnXMB24CFx6VaYDF4FLr8Z04CJw6dWZDlwELr0G04GLwKXXZDpwEbj0a5kOXAQuvRbTgYvApV/HdOAicOm1mQ5cBC79eqYDF4FLr8N04CJw6TcwHbgIXHpdpgMXgUu/kenAReDS6zEduAhc+k1MBy4Cl16f6cBF4NIbMB24CFx6Q6YDF4FLb8R04CJw6Y2ZDmAErgnTAYzANWU6gBG4m5kOYASuGdMBjMA1ZzqAEbgWTAcwAncL0wGMwLVkOoARuFuZDmAErhXTAYzA3cZ0ACNwrZkOYATudqYDGIFrw3QAI3B3MB3ACNydTAcwAteW6QBG4O5iOoARuLuZDmAErh3TAYzA3cN0ACNw7YkOZATuXub5AEbgOjAdwAhcR6YDGIHrxHQAI3CdmQ5gBK4L0wGMwHVlOoARuG5MBzAC153pAEbgejAdwAhcJtMBjMD1ZDqAEbheTAdwntib6QBG4LKYjh04Rx+mYyfO0ZfpAEbgspkOYASuH9MBjMDlGBznR+CuPxeBS79G0qtKejVJry7pNSS9pqRfK+m1JP06Sa8t6ddLeh1Jv0HS60r6jZJeT9JvknT9XzWQ9IaS3kjSG0t6E926111v3TDWvVbdptQdPt0c030l3ZLR3QzdCNA1dF1+1pVbXfTU9UJdatNVKl3g0bURXVbQL3L9mNXvQP2E0q8PnbjrnFenizrT0kmKvt/11ahvFX0g67NMHwN6B+nFp+dNyf+rCJwl2ZZ+tTXxVMUUgUu/usAS0+lfpMvtemgEDpmLsjguIAI3IHrnwAhc3IVF4AbkmywDHZxq8/kB/uZzLtGBTJYNYjqAybLBTAcwWTaE6QAmy4YyHcBk2TCmA5gsG850AJNlI5gOYLJsJNMBTJaNYjqAybL7mA5gsmw00wGcX93PdACTZWOYDmCybCzTAUyW5TEdwGTZA0wHMFk2jukAJsseZDqAybLxTAcwWTaB6QAmyyYyHcBk2UNMBzBZNonpACbLHmY6gMmyyUwHMFn2CNMBTJZNYTqAybJHmQ5gsmwq0wFMlk1jOoDJsnymA5gsK2A6gMmyQqYDmCybznQAk2UzmA5gsuwxpgOYLJvJdACTZY8zHcBk2SymA5gse4LpACbLZjMdwGTZk0wHMFk2h+kAJsueIjqQybK5zPMBTJbNYzqAybL5TAcwWfY00wFMli1gOoDJsmeYDmCybCHTAUyWLWI6gMmyxUwHMFn2LNMBTJYtYTqAybKlTAcwWbaM6QDOE59jOoDJsuVMxw6c43mmYyfOsYLpACbLXmA6gMmylUwHMFn2osFxfrKszl/JskGSPljSh0j6UEkfJunDJX2EpI+U9FGSfp+kj5b0+yV9jKSPlfQ8SX9A0sdJ+oOSPl7SJ0j6REl/SNIn6da97nrrhrHuteo2pe7w6eaY7ivplozuZuhGgK6h6/KzrtzqoqeuF+pSm65S6QKPro3osoJ+kevHrH4H6ieUfn3oxF3nvDpd1JmWTlL0/a6vRn2r6ANZn2X6GNA7SC8+PW9K/n/0x9WmWiNoubZkWW6BJW70UpEutzrYZBnw12EtjgtIlq2ydG5JlhW3JMuKX1iybFW+yfKyYYheaJjdtXvfhv2HNx2S071R1+zsvIVtGrS6uUlB3uK7swbnZA7SG/TlMv8eyYIC04VrqnF1EcfIeBpf+W89jcUu6DSmTjXd18aBXAM62WvKXNgfqltl/UN1xot3bRFH3Vzoy9ZCX7YVus7BA9X8/gbmHl9lOoC5x/VMBzD3+BrTAcw9bmA6gLnH15kOYO5xI9MBzD2+wXQAc4+bmA5g7vFNpgOYe9zMdABzj28xHcAPvS1MBzD3+DbTAcw9bmU6gLnHd5gOYO5xG9MBzD2+y3QAc4/vMR3A3KMwHcDc43amA5h7fJ/pAOYedzAdwNzjB0wHMPe4k+kA5h4/ZDqAucddTAcw9/gR0wHMPe5mOoC5x4+ZDmDucQ/TAcw9fsJ0AHOPnzIdwNzjZ0wHMPe4l+kA5h4/ZzqAucd9TAcw9/gF0wHMPe5nOoC5xwNMBzD3+CXTAcw9fsV0AHOPB5kOYO7xa6YDmHs8RHQgc4/fMM8HMPd4mOkA5h6/ZTqAucfvmA5g7vF7pgOYezzCdABzjz8wHcDc41GmA5h7/JHpAOYejzEdwNzjT0wHMPd4nOkA5h5/ZjqA88QTTAcw9/gL07ED5/iV6diJc/zGdABzjyeZDmDu8XemA5h7PGVwXFDKy5Y/uXS7i/7TV5/LUFn6T//DMkpFrtIa50k5YozzpE4xDWf6aUOhyxrmZmVnZ/U6F6GaHpeft+iOrJxe2Zm2K+am6B381WK/AdmZkv7nxiKfvJv0f2W7dM9EH5AL6f3MNFe3xBrbLbHTyS1RRe8KW/8fFrF/Y6jxrOlO22k6KnqJ/zWbGq3C+nrqLZHG+hZtpJiTk3hWGzadxEhxQ/+GQGWk+IWkZyPFTEeVKOJZtF1okZj/1gut2AXF59PXWt9ja23nO9ZVoeusha6zFepx9cL/w3Zpenkv/HPDedrKOW0bzriivvBjp8Nf+EVr8EZ0g3rHF6FJy6ugYYzlRWB5zjSMXtk0q/JCXinRpA3OPattvZsux/iiXo7xBUU92VGu+LNnz+7/p8n/PJcrfu6/Cv7P6Wok4Z8ffRtNr8eE4qbDfGX+64usWHTpfx7ygmN/HZVgOjE+w6gV9eLRi0K7n+biUXnu2+gH6z918KrtUel3VehRa6HrbYUGXBX6o7XQ12yFJroq9Ji10A22QpNcFfqTtdDXbYUmuyr0uLXQjbZCg64K/dla6Bu2QkOuCj1hLXSTrdCwq0J/sRb6pq3QFFeF/motdLOt0FRXhf5mLfQtW6Fprgo9aS10i63QdFeF/m4t9G1boRFXhZ6yFrrVVmiGq0L/sBb6jq3Qi1wVetpa6DZboSVdFfqntdB3bYVe7KrQM9ZC37MVWspVoWethYqt0EscFZpazFrodluhpV0VWtxa6Pu2Qi91VWgJa6E7bIWWcVVojLXQD2yFXuaq0FhroTtthZZ1VajHWuiHtkIvd1Wo11roLluh5VwVGmct9CNboVe4KjTeWuhuW6HlXRWaYC30Y1uhV7oq1GctdI+t0AquCvVbC/3EVmhFV4UGrIV+aiu0kqtCE62FfmYr9CpXhSZZC91rK7Syq0KTrYV+biv0aleFBq2F7rMVWsVVoSFroV/YCr3GVaFha6H7bYVWdVVoirXQA7ZCq7kqNNVa6Je2Qqu7KjTNWuhXtkJruCo03VroQVuhNV0VGrEW+rWt0GtdFZphLfSQrdBargq9yFroN7ZCr3NVaElroYdthdZ2VejF1kK/tRV6vatCS1kL/c5WaB1XhV5iLfR7W6E3uCq0tLXQI7ZC67oq9FJroT/YCr3RVaFlrIUetRVaz1Whl1kL/dFW6E2uCi1rLfSYrdD6rgq93FroT7ZCG7gqtJy10OO2Qhu6KvQKa6E/2wpt5KrQ8tZCT9gKbeyq0Cuthf5iK7SJq0IrWAv91VZoU1eFVrQW+put0JtdFVrJWuhJW6HNXBV6lbXQ322FNndVaGVroadshbZwVejV1kL/sBV6i6tCq1gLNWYCWroq9BproX/aCr3VVaFVrYWesRXaylWh1ayFnrUVepurQqsbCw0Z82mtXRVaw1pocVuht7sqtKa10BK2Qtu4KvRaa6ExtkLvcFVoLWuhsbZC73RV6HXWQj22Qtu6KrS2tVCvrdC7XBV6vbXQOFuhd7sqtI610Hhboe1cFXqDtdAEW6H3uCq0rrVQn63Q9q4KvdFaqN9W6L2uCq1nLTRgK7SDq0JvshaaaCu0o6tC61sLTbIV2slVoQ2shSbbCu3sqtCG1kKDtkK7uCq0kbXQkK3Qrq4KbWwtNGwrtJurQptYC02xFdrdVaFNrYWm2grt4arQm62FptkKzXRVaDNroem2Qnu6KrS5tdCIrdBergptYS00w1Zob1eF3mIt9CJboVmuCm1pLbSkrdA+rgq91VroxbZC+7oqtJW10FK2QrNdFXqbtdBLbIX2c1Voa2uhpW2F5rgq9HZroZfaCu3vqtA21kLL2Aod4KrQO6yFXmYrdKCrQu+0FlrWVmiuq0LbWgu93FboIFeF3mUttJyt0MGuCr3bWugVtkKHuCq0nbXQ8rZCh7oq9B5roVfaCh3mqtD21kIr2Aod7qrQe62FVrQVOsJVoR2shVayFTrSVaEdrYVeZSt0lKtCO1kLrWwr9D5XhXa2Fnq1rdDRrgrtYi20iq3Q+10V2tVa6DW2Qse4KrSbtdCqtkLHuiq0u7XQarZC81wV2sNaaHVboQ+4KjTTWmgNW6HjXBXa01poTVuhD7oqtJe10GtthY53VWhva6G1bIVOcFVolrXQ62yFTnRVaB9robVthT7kqtC+1kKvtxU6yVWh2dZC69gKfdhVof2shd5gK3Syq0JzrIXWtRX6iKtC+1sLvdFW6BRXhQ6wFlrPVuijrgodaC30JluhU10VmmsttL6tUFf/6nDqIGuhDWyF5rsqdLC10Ia2QgtcFTrEWmgjW6GFrgodai20sa3Q6a4KHWYttImt0BmuCh1uLbSprdDHXBU6wlrozbZCZ7oqdKS10Ga2Qh93Vegoa6HNbYXOclXofdZCW9gKfcJVoaOthd5iK3S2q0Lvtxba0lbok64KHWMt9FZboXNcFTrWWmgrW6FPuSo0z1robbZC57oq9AFroa1thc5zVeg4a6G32wqd76rQB62FtrEV+rSrQsdbC73DVugCV4VOsBZ6p63QZ1wVOtFaaFtboQtdFfqQtdC7bIUuclXoJGuhd9sKXeyq0IethbazFfqsq0InWwu9x1boEleFPmIttL2t0KWWQv/+S8XNc7IGF96wt9g8ifglEpBIokSSJJIskaBEQhIJSyRFIqkSSZNIukQiEsmQyEUSKSmRiyVSSiKXSKS0RC6VSBmJXCaRshK5XCLlJHKFRMpL5EqJVJBIRYlUkshVEqkskaslUkUi10ikqkSqSaS6RGpIpKZErpVILYlcJ5HaErleInUkcoNE6krkRonUk8hNEqkvkQYSaSiRRhJpLJEmEmkqkZsl0kwizSXSQiK3SKSlRG6VSCuJ3CaR1hK5XSJtJHKHRO6USFuJ3CWRuyXSTiL3SKS9RO6VSAeJdJRIJ4l0lkgXiXSVSDeJdJdID4lkSqSnRHpJpLdEsiTSRyJ9JZItkX4SyZFIf4kMkMhAieRKZJBEBktkiESGSmSYRIZLZIRERkpklG7z6wa6bk3rpq9up+pGpW4B6uaablvphpButegmhm4P6MK7LmnrYrEuw+oCpy4d6qKcLnfpQpIu0ejihy4r6Ae7fgrrR6Z+vumHkX5y6GRep8k6AdWpnU6adDqiL3p9herLSR/7+kDVR5U+BPT20gtXL4lFf5/vf12ghj+06PnrL34ZI5TLDNfdP38h+wboX8i2dG5t6jkHN7o2e+6fwo42iA3Mf+51eRFv8rr/c5P/f/ImLyi0XE36n+csb6FzBy63/fnI50yX8fNFembUNT0zihOeGc8X8Zlhf/Yi/1jnCgejbR6iFbimXiA6YtviHCuZjo44x4tMR2ec4yWmoyvOsYrp6I5zvMx0ZOIcq5mOXjjHK0xHFs6xhunoi3OsZTr64RzrmI7+OMerTMdAnGM90zEI53iN6RiCc2xgOobhHK8zHSNwjo1Mxyic4w2mYzTOsYnpGINzvMl05OEcm5mOcTjHW0zHeJxjC9MxEed4m+mYhHNsZTom4xzvMB1TcI5tTMdUnONdpiMf53iP6SjEOYTpmIFzbGc6ZuIc7zMds3COHUzHbJzjA6ZjDs6xk+mYi3N8yHTMxzl2MR0LcI6PmI6FOMdupmMxzvEx07EE59jDdAB/6+ITpmM5zvEp0wH8vYzPmI6VOMdeoiPmPZzjc+b5WIVz7GM6VuMcXzAda3CO/UzHOpzjANOxHuf4kunYgHN8xXRsxDkOMh2bcI6vmY7NOMchpmMLzvEN07EV5zjMdGzDOb5lOoDzxO+Yju04x/dMxw6c4wjTsRPn+IHp2IVzHGU6duMcPzIde3COY0zHpzjHT0zHXpzjONOxD+f4menYj3OcYDq+xDl+YToO4hy/Mh2HcI7fmI7DOMdJpuM7nON3puMIznGK6TiKc/zBdBzDOU4zHcdxjj+ZjhM4xxmm41ec4yzTcRLWVEYxpuMUzlGc6TiNc5RgOs7gHDFEh6cYzhHLdJTAOTxMRyzO4WU6vDhHHNMRj3PEMx0+nCOB6QjgHD6mIwnn8DMdQZwjwHSEcY5EpiMV50hiOtJxjmSmIwPnCDIdJXGOENNRCucIMx2lcY4UpqMMzpHKdJTFOdKYjnI4RzrTUR7niDAdFXCODKajEs5xEdNRGecoyXRUwTkuZjqq4hylmI7qOMclTEdNnKM001EL57iU6aiNc5RhOurgHJcxHXVxjrJMRz2c43Kmoz7OUY7paIhzXMF0NMY5yjMdTXGOK5mOZjhHBaajBc5RkeloiXNUYjpa4RxXMR2tcY7KTEcbnONqpuNOnKMK03EXznEN09EO56jKdLTHOaoxHR1wjupMRyecowbT0QXnqMl0dMM5rmU6euActZiOnjjHdUxHb5yjNtPRB+e4nunIxjnqMB05OMcNTMcAnKMu05GLc9zIdAzGOeoxHUNxjpuYjuE4R32mYyTO0YDpuA/naMh03I9zNGI6xuIcjZmOB3COJkzHgzhHU6ZjAs5xM9PxEM7RjOl4GOdoznQ8gnO0YDoexTluYTpwTWW0ZDoKcI5bmY7pOEcrpuMxnOM2puNxnMOw1Zi39G9H85yswYU37i02TyIrJfKiRF6SyCqJvCyR1RJ5RSJrJLJWIusk8qpE1kvkNYlskMjrEtkokTckskkib0pks0TeksgWibwtka0SeUci2yTyrkTek4hIZLtE3pfIDol8IJGdEvlQIrsk8pFEdkvkY4nskcgnEvlUIp9JZK9EPpfIPol8IZH9EjkgkS8l8pVEDkrka4kcksg3EjkskW8l8p1EvpfIEYn8IJGjEvlRIsck8pNEjkvkZ4mckMgvEvlVIr9J5KREfpfIKYn8IZHTEvlTImckclYyiknGuWC4ZMRIRqxkeCTDKxlxkhEvGQmS4ZMMv2QEJCNRMpIkI1kygpIRkoywZKRIRqpkpElGumREJCNDMi6SjJKScbFklJKMSySjtGRcKhllJOMyySgrGZdLRjnJuEIyykvGlZJRQTIq6oa67kXrNq7ugOrmoe676ZaV7vboRonuMejyvK5s66KwrqfqUqSu4ukCmK4d6bKLrljox75+J+snpn6d6YeNfhPodFpnojqJ0/mPTh30rasvLH3W62NSnzB6c+p1rZfEor/Pd97SBoMGZeYObp+Z27+wIPrfMip+k0SK6WFVe7TKPVBtXsU1rZuszstr17FCjcPNRqwdkN/owC+Fx/Q4PUoiLxRYLk89zNBexu1FuhlvNN2MxY13UAT3j96bHOeflPzoJ8Xz12jHGUa7hB5pGu02DkbbPETAXym44wJGO9roxDQsNPQdYzimoelc3Ek8F7FtceeiLdPREee4i+nojHPczXR0xTnaMR3dcY57mI5MnKM909EL57iX6cjCOTowHX1xjo5MRz+coxPT0R/n6Mx0DMQ5ujAdg3COrkzHEJyjG9MxDOfoznSMwDl6MB2jcI5MpmM0ztGT6RiDc/RiOvJwjt5MxzicI4vpGI9z9GE6JuIcfZmOSThHNtMxGefox3RMwTlymI6pOEd/piMf5xjAdBTiHAOZjhk4Ry7TMRPnGMR0zMI5BjMds3GOIUzHHJxjKNMxF+cYxnTMxzmGMx0LcI4RTMdCnGMk07EY5xjFdCzBOe5jOpbhHKOZjuU4x/1MB/A3ecYwHStxjrFERwzuzxJn5DHPxyqc4wGmYzXOMY7pWINzPMh0rMM5xjMd63GOCUzHBpxjItOxEed4iOnYhHNMYjo24xwPMx1bcI7JTMdWnOMRpmMbzjGF6QDOEx9lOrbjHFOZjh04xzSmYyfOkc907MI5CpiO3ThHIdPx/2vvzON0LN/+P9d5jn3J7rrmvm4hCUm2JNkZ+5Y92QaDYcwwi30ba1GYsUQSspNQEpLspOtAkpAUSZIkUZL0Oy0Zy0yO4Tg6fs/zev75dn/HeX/Oz/taz2U+xxyg45gkyXGIjmOyJMdhOo4pkhxH6DheleT4ho5jqiTHMTqOaZIcx+k4XpPkOEHHMV2S4yQdx+uSHKfoOGZIcpym43hDkuMMHcdMSY6zdByzJDnO0XHMluQ4T8fxpiTHb3QccyQ5LtJxzJXkuETHMU+S4zIdx3xJjit0HAsEOVIF0HEslORQdByLJDkC6TgWS3KkpuNYIsmRlo7jLUmO9HQcSyU5MtJxvC3JkZmOY5kkRxY6juWSHNnoOFZIcuSg43hHkiMXHce7khw2HcdKSY4gOo73JDlcOo5Vkhx56Djel+TIS8exWpIjPx3HGkmOAnQcayU5CtJxfCDJUYiOY50kRxE6jg8lOYrScayX5ChGx/GRJEdxOo4Nkhwl6Tg2SnKUpuPYJMlRho5jsyRHWTqOLZIc5eg4tkpylKfj2CbJUZGOY7skR2U6jh2SHFXpOD6W5KhOx7FTkqMGHccnkhy16Dg8SY46dBwgyVGPjmOXJEcDOo7dkhyN6Dj2SHI0puP4VJKjKR3HXkmO5nQcn0lytKTj2CfJ0YqO43NJjtZ0HPslOdrScXwhydGejuOAJEcHOo6Dkhyd6DgOSXJ0puP4UpKjKx3HYUmObnQcX0lyhNNxHJHkiKDj+FqSoycdxzeSHFF0HEclOWLoOI5JcvSm4/hWkqMvHcdxSY7+dBzfSXIMpOM4IckxmI7je0mOoXQcJyU5htFx/CDJMYKO45Qkxyg6jh8lOV6k4zgtyTGGjuMnSY6X6TjOSHKMo+P4WZKDTso+K8mRQMfxiyTHJDqOc5IcU+g4fpXkmErHgSgtELf4OkftiLCYiRUPB8wCuxnYzcFuAXZLsJ8HuxXYL4DdGuw2YLcFux3Y7cEOAbsD2B3B7gR2KNidwe4Cdleww8DuBnZ3sMPB7gF2BNiRYPcEuxfYUWBHgx0DdizYvcHuA3ZfsPuB3R/sAWAPBHsQ2IPBHgL2ULDjwB4G9nCwR4A9EuxRYI8G+0WwXwJ7DNhjwX4Z7FfAHgf2eLAngB0PdgLYE8GeBPZksKeA/SrYU8GeBvZrYE8H+3WwZ4D9BtgzwTaMs8F+E+w5YM8Fex7Y88FeAPZCsBeBvRjsJWC/BfZSsN8GexnYy8FeAfY7YL8L9kqw3wN7Fdjvg70a7DVgrwX7A7DXgf0h2OvB/gjsDWBvBHsT2JvB3gL2VrC3gb0d7B1gfwz2TrA/AdsDG8yGutmLNtu4ZgfUbB6afTezZWV2e8xGidljMMvzZmXbLAqb9VSzFGlW8cwCmFk7MssuZsXCTPbNPNlMMc3szExszJzADKfNSNQM4sz4xwwdzFvXvLDMs948Js0Txtyc5ro2l8T86+c7bnGV6OjQqJhWoVGRExMmbslbvFODqKMlZhVe3Sh4VVxcyzaFSp2s1W9Nz/hqRy9MPGsuFMgdAHaTiYjL7mrDpgmoC7RJAqJj+0KKbseKqNvRwt5DjeluRwzHracl/t5HO9XVo507DeJoa9MSdbR/Yzja6ENEWETkd0GOwGZ0HBclOdrQcfwhydGOjuOSJEcIHcefkhwd6TguS3KE0nH8JcnRhY7jiiRHGB3H35Ic3cmknABJjh50HJYkRyQdh5Lk6EXHoSU5ouk4AiU5Yuk4Ukly9KHjSC3J0Y+OI40kxwA6jrSSHIPoONJJcgyh40gvyRFHx5FBkmM4HUdGSY6RdByZJDlG03FkluR4iY7jIUmOsXQcWSQ5XqHjyCrJMZ6OI5skRzwdR3ZJjol0HDkkOSbTceSU5HiVjiOXJMc0Oo7ckhzT6ThsSY4ZdByOJMdMOo4gSY7ZdBw+SY45dByuJMc8Og6/JMcCOo48khyL6DgeluRYQseRV5JjKR1HPkmOZXQc+SU5VtBxPCLIoen+qK9TQPJ8rKTjeFSSYxUdR0FJjtV0HI9Jcqyl4ygkybGOjqOwJMd6Oo4ikhwb6Dgel+TYRMdRVJJjCx3HE5Ic2+g4ikly7KDjeFKSYycdR3FJDsJxYglJjl10HCUlOfbQcZSS5NhLx1FakmMfHcdTkhz76TjKSHIcoON4WpLjEB1HWUmOw3Qcz0hyHKHjKCfJ8Q0dx7OSHMfoOMpLchyn46ggyXGCjqOiJMdJOo5Kkhyn6DgqS3KcpuOoIslxho6jqiTHWTqOapIc5+g4qktynKfjCJbkoMttOzUkOS7ScdSU5LhEx1FLkuMyHUdtSY4rdBx1BDlSBdBx1JXkUHQc9SQ5Auk46ktypKbjaCDJkZaOo6EkR3o6jkaSHBnpOJ6T5MhMx9FYkiMLHUcTSY5sdBxNJTly0HE0k+TIRcfRXJLDpuNoIckRRMfRUpLDpeN4XpIjDx1HK0mOvHQcL0hy5KfjaC3JUYCOo40kR0E6jraSHIXoONpJchSh42gvyVGUjiNEkqMYHUcHSY7idBwdJTlK0nF0kuQoTccRKslRho6jsyRHWTqOLpIc5eg4ukpylKfjCJPkqEjH0U2SozIdR3dJjqp0HOGSHNXpOHpIctSg44iQ5KhFxxEpyVGHjqOnJEc9Oo5ekhwN6DiiJDka0XFES3I0puOIkeRoSscRK8nRnI6jtyRHSzqOPpIcreg4+kpytKbj6CfJ0ZaOo78kR3s6jgGSHB3oOAZKcnSi4xgkydGZjmOwJEdXOo4hkhzd6DiGSnKE03HESXJE0HEMk+ToSccxXJIjio5jhCRHDB3HSEmO3nQcoyQ5+tJxjJbk6E/H8aIkx0A6jpckOQbTcYyR5BhKxzFWkmMYHcfLkhwj6DhekeQYRccxTpLjRTqO8ZIcY+g4JkhyvEzHES/JMY6OI0GSg07KmSjJkUDHMUmSYxIdx2RJjil0HFMkOabScSD+JErc4usctSPCYiZWOhwwC+yLYP8B9iWw/wT7Mth/gX0F7L/BCQDHaCpwNDiB4KQCJzU4acBJC046cNKDkwGcjOBkAiczOA+BkwWcrOBkAyc7ODnAyQlOLnByg2OD44ATBI4PHBccPzh5wHkYnLzg5AMnPziPgFMAnEfBKQjOY+AUAqcwOEXAeRycouA8AU4xcJ4Epzg4JcApCU4pcEqD8xQ4ZcB5Gpyy4DwDTjlwngWnPDgVwKkITiVwKoNTBZyq4FQDpzo4weDUAKcmOLXAqQ1OHXDqglMPnPrgNACnITiNwHkOnMbgNAGnKTjNwGkOTgtwWoLzPDitwHkBnNbgtAGnLTjtwGkPTgg4HcDpCE4ncELB6QxOF3C6ghMGTjdwuoMTDk4PcCLAiQSnp9lQN3vRZhvX7ICazUOz72a2rMxuj9koMXsMZnnerGybRWGznmqWIs0qnlkAM2tHZtnFrFiYyb6ZJ5spppmdmYmNmROY4bQZiZpBnBn/mKGDeeuaF5Z51pvHpHnCmJvTXNfmkph//XzHLa4SHR0aFdMqNCpyYsK9H6RWBcgdYJoV79Qg6miJWYVXNwpeFRfXsk2hUidr9VvTM77a0QsTz5p2phXYvydgLk/TDKHnTE3RzVgJdTNayDvIJixqgeG49aTE3/ukpLp6tHOnQRztQNMSdbSnMRxt9CEi/NNHrwlyBDaj45guydGGjuN1SY52dBwzJDlC6DjekOToSMcxU5IjlI5jliRHFzqO2ZIcYXQcb0pydKfjmCPJ0YOOY64kRyQdxzxJjl50HPMlOaLpOBZIcsTScSyU5OhDx7FIkqMfHcdiSY4BdBxLJDkG0XG8JckxhI5jqSRHHB3H25Icw+k4lklyjKTjWC7JMZqOY4Ukx0t0HO9Icoyl43hXkuMVOo6Vkhzj6Tjek+SIp+NYJckxkY7jfUmOyXQcqyU5XqXjWCPJQbj/sVaSYzodxweSHDPoONZJcsyk4/hQkmM2Hcd6SY45dBwfSXLMo+PYIMmxgI5joyTHIjqOTZIcS+g4NktyLKXj2CLJsYyOY6skxwo6jm2CHJrwT/pulzwfK+k4dkhyrKLj+FiSYzUdx05JjrV0HJ9Icqyj4/AkOdbTcYAkxwY6jl2SHJvoOHZLcmyh49gjybGNjuNTSY4ddBx7JTl20nF8JslBOE7cJ8mxi47jc0mOPXQc+yU59tJxfCHJsY+O44Akx346joOSHAfoOA5Jchyi4/hSkuMwHcdhSY4jdBxfSXJ8Q8dxRJLjGB3H15Icx+k4vpHkOEHHcVSS4yQdxzFJjlN0HN9Kcpym4zguyXGGjuM7SY6zdBwnJDnO0XF8L8lxno7jpCQHYUr+B0mOi3QcpyQ5LtFx/CjJcZmO47QkxxU6jp8EOVIF0HGckeRQdBw/S3IE0nGcleRITcfxiyRHWjqOc5Ic6ek4fpXkyEjHcV6SIzMdxwVJjix0HL9JcmSj4/hdkiMHHcdFSY5cdBx/SHLYdByXJDmC6Dj+lORw6TguS3LkoeP4S5IjLx3HFUmO/HQcf0tyFCCTCgqQ5ChIx2FJchSi41CSHEXoOLQkR1E6jkBJjmJ0HKkkOYrTcaSW5ChJx5FGkqM0HUdaSY4ydBzpJDnK0nGkl+QoR8eRQZKjPB1HRkmOinQcmSQ5KtNxZJbkqErH8ZAkR3U6jiySHDXoOLJKctSi48gmyVGHjiO7JEc9Oo4ckhwN6DhySnI0ouPIJcnRmI4jtyRHUzoOW5KjOR2HI8nRko4jSJKjFR2HT5KjNR2HK8nRlo7DL8nRno4jjyRHBzqOhyU5OtFx5JXk6EzHkU+SoysdR35Jjm50HI9IcoTTcRSQ5Iig43hUkqMnHUdBSY4oOo7HJDli6DgKSXL0puMoLMnRl46jiCRHfzqOxyU5BtJxFJXkGEzH8YQkx1A6jmKSHMPoOJ6U5BhBx1FckmMUHUcJSY4X6ThKSnKMoeMoJcnxMh1HaUmOcXQcT0ly0EkFlZHkSKDjeFqSYxIdR1lJjil0HM9Ickyl40D8ClTc4usctSPCYiZWPhwwC5zp4LwOzgxw3gBnJjjmJ7PBeROcOeDMBWceOPPBWQDOQnAWgbMYnCXgvAXOUnDeBmcZOMvBWQHOO+C8C85KcN4DZxU474OzGpw14KwF5wNw1oHzITjrwfkInA3gbARnEzibwdkCzlZwtoGzHZwd4HwMzk5wPgHHAwfA2QXObnD2gPMpOHvB+QycfeB8Ds5+cL4A5wA4B8E5BM6X4BwG5ytwjoDzNTjfgHMUnGPgfAvOcXC+A+cEON+DcxKcH8A5Bc6P4JwG5ydwzoDzMzhnwfkFnHPg/ArOeXAugPMbOL+DcxGcP8C5BM6f4FwG5y9wroDzNwQFQNDVX5WGIA1BgRCUCoJSQ1AaCEoLQekgKD0EZYCgjBCUCYIyQ9BDEJQFgrJCUDYIym421M1etNnGNTugZvPQ7LuZLSuz22M2Ssweg1meNyvbZlHYrKeapUizimcWwMzakVl2MSsWZrJv5slmimlmZ2ZiY+YEZjhtRqJmEGfGP2boYN665oVlnvXmMWmeMObmNNe1uSTmXz/fcYurREeHRsW0Co2KnJgwEXE15Q6A3No0LN6pQdTRErMKr24UvCourmWbQqVO1uq3pmd8taMXJp41La82dF5LQAUXXktA6AU9m6LbsTLqdrSw2Qq6P8eD4rj1tMRjT0sa1NHOHYA62ojfN4xbXjU8pGP3qpF9a8RGdKwWEh4eN69xlQY1gxPiFrQIi4kIjY42OnlTfFKwRzKwGd1JqcBwcaE52tBxVJTkaEfHUUmSI4SOo7IkR0c6jiqSHKF0HFUlObrQcVST5Aij46guydGdjiNYkqMHHUcNSY5IOo6akhy96DhqSXJE03HUluSIpeOoI8nRh46jriRHPzqOepIcA+g46ktyDKLjaCDJMYSOo6EkRxwdRyNJjuF0HM9Jcoyk42gsyTGajqOJJMdLdBxNJTnG0nE0k+R4hY6juSTHeDqOFpIc8XQcLSU5JtJxPC/JMZmOo5Ukx6t0HC9IchBu5rSW5JhOx9FGkmMGHUdbSY6ZdBztJDlm03G0l+SYQ8cRIskxj46jgyTHAjqOjpIci+g4OklyLKHjCJXkWErH0VmSYxkdRxdJjhV0HF0FOTTd38wNCpM8HyvpOLpJcqyi4+guybGajiNckmMtHUcPSY51dBwRkhzr6TgiJTk20HH0lOTYRMfRS5JjCx1HlCTHNjqOaEmOHXQcMZIcO+k4YiU5CMeJvSU5dtFx9JHk2EPH0VeSYy8dRz9Jjn10HP0lOfbTcQyQ5DhAxzFQkuMQHccgSY7DdByDJTmO0HEMkeT4ho5jqCTHMTqOOEmO43QcwyQ5TtBxDJfkOEnHMUKS4xQdx0hJjtN0HKMkOc7QcYyW5DhLx/GiJMc5Oo6XJDnO03GMkeT4jY5jrCTHRTqOlyU5LtFxvCLJcZmOY5wkxxU6jvGCHKkC6DgmSHIoOo54SY5AOo4ESY7UdBwTJTnS0nFMkuRIT8cxWZIjIx3HFEmOzHQcr0pyZKHjmCrJkY2OY5okRw46jtckOXLRcUyX5LDpOF6X5Aii45ghyeHScbwhyZGHjmOmJEdeOo5Zkhz56ThmS3IUoON4U5KjIB3HHEmOQnQccyU5itBxzJPkKErHMV+SoxgdxwJJjuJ0HAslOUrScSyS5ChNx7FYkqMMHccSSY6ydBxvSXKUo+NYKslRno7jbUmOinQcyyQ5KtNxLJfkqErHsUKSozodxzuSHDXoON6V5KhFx7FSkqMOHcd7khz16DhWSXI0oON4X5KjER3HakmOxnQcayQ5mtJxrJXkaE7H8YEkR0s6jnWSHK3oOD6U5GhNx7FekqMtHcdHkhzt6Tg2SHJ0oOPYKMnRiY5jkyRHZzqOzZIcXek4tkhydKPj2CrJEU7HsU2SI4KOY7skR086jh2SHFF0HB9LcsTQceyU5OhNx/GJJEdfOg5PkqM/HQdIcgyk49glyTGYjmO3JMdQOo49khzD6Dg+leQYQcexV5JjFB3HZ5IcL9Jx7JPkGEPH8bkkx8t0HPslOcbRcXwhyUEnFXRAkiOBjuOgJMckOo5DkhxT6Di+lOSYSseBKN102x9zT0D/MXdUQ2UaXjV677/n/lUKjWL+6nxlyHVlIqL3yhiHua6gOO5dY8pKMUcVI4sJSi+pGhUWHh7W5eqfup+UanLc/CZhEV3CQ3HXCuYvmqdIsCK1YIUUCKKvYwt7HesJ1DxgIzaeE65q9ugZHgpBXyd+/AZ7/yNKnsUtrxoe0rF71ci+NWIjOl69duLmNa7SoGZwQtyCFmExEaHR0abvvLdfXWkTUn6oU2MPdep7HOq///77YuKh/vfG1tX/ueUgHk38eGwDCv2ohWp2LG+K7+vrRwX1fMxXmOH5eP1g4/ovksL+J0z6d9mEs9euz6Ooh+oxzLWerzCqVRHEtXXngUQ89g3KhBQeItSNk2Mc5PoA1XAi5FqFe9d+y2V0HarhJLTR41xGP0Q1nIw2+h2X0fWohlPQRk9wGf0I1fBVtNHvuYxuQDWcijZ6ksvoRlTDaWijP3AZ3YRq+Bra6Ckuo5tRDaejjf7IZXQLquHraKOnuYxuRTWcgTb6E5fRbaiGb6CNnuEyuh3VcCba6M9cRnegGs5CGz3LZfRjVMPZaKO/cBndiWr4JtroOS6jn6AazkEb/ZXLqIdqOBdt9DyXUUA1nIc2eoHL6C5Uw/loo79xGd2NargAbfR3LqN7UA0Xoo1e5DL6KarhIrTRP7iM7kU1XIw2eonL6GeohkvQRv/kMroP1fAttNHLXEY/RzVcijb6F5fR/aiGb6ONXuEy+gWq4TK00b+5jB5ANVyONeoL4DJ6ENVwBdqoxWX0EKrhO2ijisvol6iG76KNai6jh1ENV6KNBnIZ/QrV8D200VRcRo+gGq5CG03NZfRrVMP30UbTcBn9BtVwNdpoWi6jR1EN16CNpuMyegzVcC3aaHouo9+iGn6ANpqBy+hxVMN1aKMZuYx+h2r4IdpoJi6jJ1AN16ONZuYy+j2q4Udoow9xGT2JargBbTQLl9EfUA03oo1m5TJ6CtVwE9poNi6jP6IabkYbzc5l9DSq4Ra00RxcRn9CNdyKNpqTy+gZVMNtaKO5uIz+jGq4HW00N5fRs6iGO9BGbS6jv6Aafow26nAZPYdquBNtNIjL6K+ohp+gjfq4jJ5HNfTQRl0uoxdQDQFt1M9l9DdUw11oo3m4jP6OargbbfRhLqMXUQ33oI3m5TL6B6rhp2ij+biMXkI13Is2mh9j9HrmpHZEWMzEKocDKkPQtxB0HIK+g6ATEPQ9BJ2EoB8g6BQE/QhBpyHoJwg6A0E/Q9BZCPoFgs6ZzXazjW02iM3Wq9nUNNuFZiPObHGZzSOzLWM2PMxWglmkN8vfZmHZLNmaxVCzzGgW8MzSmFl0Mss5ZqHELEGYyb2ZNpsJqZnqmUmUmZ6Ygb8ZUpvBqhkGmgGWGbqYQYF53ZoXmXlFmIeveayZB4a5Fc1Fbi4fc2IM8vzrPLf/6vBE1OF65N6/7psW9UvBaVP+282o364OOmJM4k494i8o3BI3qkIaN/LR/fkG36MpvISr/i+9hDHPkKsXyETc75b7Hk3AHX7UxVYwRRdbVdTFZglcbAVTeNMinyuP/afPFev+niuP4Z4rhRhONfr80P0ZEl9hQY7AZnQcRSQ52tBxPC7J0Y6Oo6gkRwgdxxOSHB3pOIpJcoTScTwpydGFjqO4JEcYHUcJSY7udBwlJTl60HGUkuSIpOMoLcnRi47jKUmOaDqOMpIcsXQcT0ty9KHjKCvJ0Y+O4xlJjgF0HOUkOQbRcTwryTGEjqO8JEccHUcFSY7hdBwVJTlG0nFUkuQYTcdRWZLjJTqOKpIcY+k4qkpyvELHUU2SYzwdR3VJjng6jmBJjol0HDUkOSbTcdSU5HiVjqOWJMc0Oo7akhzT6TjqSHLMoOOoK8kxk46jniTHbDqO+pIcc+g4GkhyzKPjaCjJsYCOo5EkxyI6juckOZbQcTSW5FhKx9FEkmMZHUdTSY4VdBzNBDm0R8fRXPJ8rKTjaCHJsYqOo6Ukx2o6juclOdbScbSS5FhHx/GCJMd6Oo7Wkhwb6DjaSHJsouNoK8mxhY6jnSTHNjqO9pIcO+g4QiQ5dtJxdJDkIBwndpTk2EXH0UmSYw8dR6gkx146js6SHPvoOLpIcuyn4+gqyXGAjgPxq8C35cqqXc2V+YqA73HwFQXfE+ArBr4nwVccfCXAVxJ8pcBXGnxPga8M+J4GX1nwPQO+cuB7FnzlwVcBfBXBVwl8RqSK2fU2G8Zmr9VsU5odPrM5ZvaVzJaM2c0wGwFmDd0sP5uVW7PoadYLzVKbWaUyCzxmbcQsK5gZuZnMmnmgmUKZ2YcZuJsxrxkumpGWGaSY97t5NZq3inkgm2eZeQyYO8hcfOa8GeT7zZVVSkGurDAuV3Y17HTvsFG3FF1s1WhzZYRhIwzHfeTKut+7c8Jcmbq/XFn3eBRLOMOpRp+fcDqpHoIclLmyCEkOwlxZpCQHYa6spyQHYa6slyQHYa4sSpKDMFcWLclBmCuLkeQgzJXFSnIQ5sp6S3IQ5sr6SHIQ5sr6SnIQ5sr6SXIQ5sr6S3IQ5soGSHIQ5soGSnIQ5soGSXIQ5soGS3IQ5sqGSHIQ5sqGSnIQ5sriJDkIc2XDJDkIc2XDJTkIc2UjJDkIc2UjJTkIc2WjJDkIc2WjJTkIc2UvSnIQ5spekuQgzJWNkeQgzJWNleQgzJW9LMlBmCt7RZKDMFc2TpKDMFc2XpKDMFc2QZKDMFcWL8lBmCtLkOQgzJVNlOQgzJVNkuQgzJVNluQgzJVNkeQgzJW9KslBmCubKslBmCubJshBmSt7TfJ8EObKpktyEObKXpfkIMyVzZDkIMyVvSHJQZgrmynJQZgrmyXJQZgrmy3JQZgre1OSgzBXNkeSgzBXNleSgzBXNk+SgzBXNl+Sg3CcuECSgzBXtlCSYw8dxyJJjr10HIslOQhzZUskOQhzZW9JchDmyhBLL7flyqpfy5VFgC8SfD3B1wt8UeCLBl8M+GLB1xt8fcDXF3z9wNcffAPANxB8g8A3GHxDwDcUfHHgGwa+4eAbYbbuza632TA2e61mm9Ls8JnNMbOvZLZkzG6G2Qgwa+hm+dms3JpFT7NeaJbazCqVWeAxayNmWcHMyM1k1swDzRTKzD7MwN2Mec1w0Yy0zCDFvN/Nq9G8VcwD2TzLzGPA3EHm4jPnzSDfb66sYgpyZT1wubIeCZiw0dsputiq0+bKCMNGGI77yJUtu3fnhLkyfX+5smXxKJblDKcafX6W00mtEOSgzJW9I8lBmCt7V5KDMFe2UpKDMFf2niQHYa5slSQHYa7sfUkOwlzZakkOwlzZGkkOwlzZWkkOwlzZB5IchLmydZIchLmyDyU5CHNl6yU5CHNlH0lyEObKNkhyEObKNkpyEObKNklyEObKNktyEObKtkhyEObKtkpyEObKtklyEObKtktyEObKdkhyEObKPpbkIMyV7ZTkIMyVfSLJQZgr8yQ5CHNlIMlBmCvbJclBmCvbLclBmCvbI8lBmCv7VJKDMFe2V5KDMFf2mSQHYa5snyQHYa7sc0kOwlzZfkkOwlzZF5IchLmyA5IchLmyg5IchLmyQ5IchLmyLyU5CHNlhyU5CHNlXwlyUObKjkieD8Jc2deSHIS5sm8kOQhzZUclOQhzZcckOQhzZd9KchDmyo5LchDmyr6T5CDMlZ2Q5CDMlX0vyUGYKzspyUGYK/tBkoMwV3ZKkoNwnPijJAdhruy0JMceOo6fJDn20nGckeQgzJX9LMlBmCs7K8lBmCv7BcFxa64s+Fqu7B3wvQu+leB7D3yrwPc++FaDbw341oLvA/CtA9+H4FsPvo/AtwF8G8G3CXybwbcFfFvBtw1828G3w2zdm11vs2Fs9lrNNqXZ4TObY2ZfyWzJmN0MsxFg1tDN8rNZuTWLnma90Cy1mVUqs8Bj1kbMsoKZkZvJrJkHmimUmX2YgbsZ85rhohlpmUGKeb+bV6N5q5gHsnmWmceAuYPMxWfOm0G+31wZ2E1TkCxbgUuWrUjAxI3OpehyC6ZNli2nu9wwHPeRLPv13p0TJssC7y9Z9ms8iuU8w6lGn5/zdFIXBDkok2W/SXIQJst+l+QgTJZdlOQgTJb9IclBmCy7JMlBmCz7U5KDMFl2WZKDMFn2lyQHYbLsiiQHYbLsb0kOumSZGyDJQZcscy1JDrpkmaskOeiSZa6W5KBLlrmBkhx0yTI3lSQHXbLMTS3JQZcsc9NIctAly9y0khx0yTI3nSQHXbLMTS/JQZcsczNIctAly9yMkhx0yTI3kyQHXbLMzSzJQZcscx+S5KBLlrlZJDnokmVuVkkOumSZm02Sgy5Z5maX5KBLlrk5JDnokmVuTkkOumSZm0uSgy5Z5uaW5KBLlrm2JAddssx1JDnokmVukCQHXbLM9Uly0CXLXFeSgy5Z5volOeiSZW4eSQ66ZJn7sCQHXbLMzSvJQZcsc/MJchAmy9z8kueDLlnmPiLJQZcscwtIctAly9xHJTnokmVuQUkOumSZ+5gkB12yzC0kyUGXLHMLS3LQJcvcIpIcdMky93FJDrpkmVtUkoMuWeY+IclBlyxzi0lyEI4Tn5TkoEuWucUlOfbQcZSQ5NhLx1FSkoMuWeaWkuSgS5a5pSU56JJl7lMIjluTZTWuJct+A9/v4LsIvj/Adwl8f4LvMvj+At8V8P0NbgC4V39jEFwNbiC4qcBNDW4acNOCmw7c9OBmADej2bo3u95mw9jstZptSrPDZzbHzL6S2ZIxuxlmI8CsoZvlZ7NyaxY9zXqhWWozq1RmgcesjZhlBTMjN5NZMw80Uygz+zADdzPmNcNFM9IygxTzfjevRvNWMQ9k8ywzjwFzB5mLz5w3g3y/ybIKKciVXcDlyi4kIPTcMim62GrQ5srowkYojpTnytyn7905Ya4s1X3lytyn41EsZRlONfr8lKWTekaQgzBX5paT5KDLlbnPSnLQ5crc8pIcdLkyt4IkB12uzK0oyUGXK3MrSXLQ5crcypIcdLkyt4okB12uzK0qyUGXK3OrSXIQ5sqqS3IQ5sqCJTkIc2U1JDkIc2U1JTkIc2W1JDkIc2W1JTkIc2V1JDkIc2V1JTkIc2X1JDkIc2X1JTkIc2UNJDkIc2UNJTkIc2WNJDkIc2XPSXIQ5soaS3IQ5sqaSHIQ5sqaSnIQ5sqaSXIQ5sqaS3IQ5spaSHIQ5spaSnIQ5sqel+QgzJW1kuQgzJW9IMlBmCtrLclBmCtrI8lBmCtrK8lBmCtrJ8lBmCtrL8lBmCsLkeQgzJV1kOQgzJV1lOQgzJV1kuQgzJWFCnJQ5so6S54PwlxZF0kOwlxZV0kOwlxZmCQHYa6smyQHYa6suyQHYa4sXJKDMFfWQ5KDMFcWIclBmCuLlOQgzJX1lOQgzJX1kuQgzJVFSXIQjhOjJTkIc2Uxkhx76DhiJTn20nH0luQgzJX1keQgzJX1leQgzJUhfpXrtlxZzau5MrccuM+CWx7cCuBWBLcSuOaHVcCtCm41cKuDGwxuDXBrglsL3Nrg1gG3Lrj1wK0PbgNwG4LbyGzdm11vs2Fs9lrNNqXZ4TObY2ZfyWzJmN0MsxFg1tDN8rNZuTWLnma90Cy1mVUqs8Bj1kbMsoKZkZvJrJkHmimUmX2YgbsZ85rhohlpmUGKeb+bV6N5q5gHsnmWmceAuYPMxWfOm0G+779YFnQEgr5BJsvcZ1DJMtMMEzfqn6LLrSZpsowyboThuI9k2YB7d06YLEt9f8myAfEoloEMpxp9fgbSSQ1K4alG3YG5AyC3hWqoILfGHfDBggecMgI3RJKDMAI3VJKDMAIXJ8lBGIEbJslBGIEbLslBGIEbIclBGIEbKclBGIEbJclBGIEbLclBGIF7UZKDMAL3kiQHYQRujCQHYQRurCQHYQTuZUkOwgjcK5IchBG4cZIchBG48ZIchBG4CZIchBG4eEkOwghcgiQHYQRuoiQHYQRukiQHYQRusiQHYQRuiiQHYQTuVUkOwgjcVEkOwgjcNEkOwgjca5IchBG46ZIchBG41+/ZiJGDMAI3Q5KDMAL3hiQHYQRupiQHYQRuliQHYQRutiQHYQTuTUkOwgjcHEkOwgjcXEkOwgjcPEkOwgjcfEkOwgjcAkkOwgjcQkkOwgjcIkkOwgjcYkEOygjcEsnzQRiBe0uSgzACt1SSgzAC97YkB2EEbpkkB2EEbrkkB2EEboUkB2EE7h1JDsII3LuSHIQRuJWSHIQRuPckOQgjcKskOQgjcO9LchCOE1dLchBG4NZIcuyh41grybGXjuMDSQ7CCNw6SQ7CCNyHkhyEETjEkPO2CFytaxG4IeAOBTcO3GHgDgd3BLgjwR0F7mhwXwT3JXDHgDsW3JfBfQXcceCOB3cCuPHgJoA7EdxJ4E42W/dm19tsGJu9VrNNaXb4zOaY2VcyWzJmN8NsBJg1dLP8bFZuzaKnWS80S21mlcos8Ji1EbOsYGbkZjJr5oFmCmVmH2bgbsa8ZrhoRlpmkGLe7+bVaN4q5oFsnmXmMWDuIHPxmfNmkJOLwKGSbYOwiafBuAjcoARMTOejFF1utWgjcIS5KAzHfUTgNty7c8IIXJr7i8BtiEexbGQ41ejzs5FOapMgB2WybLMkB2GybIskB2GybKskB2GybJskB2GybLskB2GybIckB2Gy7GNJDsJk2U5JDsJk2SeSHITJMk+SgzBZBpIchMmyXZIchMmy3ZIchMmyPZIchMmyTyU5CJNleyU5CJNln0lyECbL9klyECbLPpfkIEyW7ZfkIEyWfSHJQZgsOyDJQZgsOyjJQZgsOyTJQZgs+1KSgzBZdliSgzBZ9pUkB2Gy7IgkB2Gy7GtJDsJk2TeSHITJsqOSHITJsmOSHITJsm8lOQiTZcclOQiTZd9JchAmy05IchAmy76X5CBMlp2U5CBMlv0gyUGYLDslyUGYLPtRkoMwWXZakoMwWfaTJAdhsuyMIAdlsuxnyfNBmCw7K8lBmCz7RZKDMFl2TpKDMFn2qyQHYbLsvCQHYbLsgiQHYbLsN0kOwmTZ75IchMmyi5IchMmyPyQ5CJNllyQ5CJNlf0pyEI4TL0tyECbL/pLk2EPHcUWSYy8dx9+SHHTJMn+AJAddssxvSXLQJcv8CsFxa7Ks9rVk2WZwt4C7Fdxt4G4Hdwe4H4O7E9xPwPXABXB3gbsb3D3gfgruXnA/A3cfuJ+Dux/cL8A9AO5Bs3Vvdr3NhrHZazXblGaHz2yOmX0lsyVjdjPMRoBZQzfLz2bl1ix6mvVCs9RmVqnMAo9ZGzHLCmZGbiazZh5oplBm9mEG7mbMa4aLZqRlBinm/W5ejeatYh7I5llmHgPmDjIXnzlvBvmB/rja19gI2iZcsmxTAkLPr1N0udWmTZbRxY1QHClPlvkDMZ1jkmUWJllm3VeyzB8Yj2JJhThEy6uGh3TsXjWyb43YiI7VQsLD4+Y1rtKgZnBC3IIWYTERodHRRifv7UcyIQF14aI8pk7hMUKexjT/6WkMuK/TGPQ16r5GHsi0RCc7bd77+0N1gdg/VIe8eNOl8KijjabCGk2FM5qe4YGKfn/T5R79GSQ56HKP/oySHHS5R38mSQ663KM/syQHXe7R/5AkB13u0Z9FkoMu9+jPKslBl3v0Z5PkoMs9+rNLctDlHv05JDnoco/+nJIcdLlHfy5JDrrcoz+3JAdd7tFvS3LQ5R79jiQHXe7RHyTJQZd79PskOehyj35XkoMu9+j3S3LQ5R79eSQ56HKP/oclOehyj/68khx0uUd/PkkOutyjP78kB13u0f+IJAdd7tFfQJKDLvfof1SSgy736C8oyUGXe/Q/JslBl3v0F5LkoMs9+gtLctDlHv1FJDnoco/+xyU56HKP/qKSHHS5R/8Tkhx0uUd/MUkOutyj/0lJDrrco7+4JAdd7tFfQpKDLvfoLynJQZd79JeS5KDLPfpLS3LQ5R79T0ly0OUe/WUEOQhzj/6nJc8HXe7RX1aSgy736H9GkoMu9+gvJ8lBl3v0PyvJQZd79JeX5KDLPforSHLQ5R79FSU56HKP/kqSHHS5R39lSQ663KO/iiQHXe7RX1WSgy736K8myUE4TqwuyUGXe/QHS3LsoeOoIcmxl46jpiQHYe6xliQHYe6xtiQHYe6xDoLjvlJeuPxJvo0c/ftTX81QYfr318UcpRS7xMZ5gsoj4zxBX6EOp79eCo1OwMnWT1ZW3ZS9O561slFkdGhYp8iIko1Co3rExoTEhEVGJExKjGsFTr/5udotP212S6Cr/iTwNwB/Q/A3Av9zcUuqRoWFh4d1uao/KXV83PwmYRFdwkOxV3uDex+eCTitYK77Ji3uvtnK0b872Nw6uP63pfRCwyUfG6Nux62oVve2mPIAa7CxiLtlmiAOECbR2OQ+4qvBKIdNU3h8kKew2X96CgPuK73uT4d9jaTDne3mXEbTY42mxxltwfW+rYt737aUe99ePZz1sDj1cIfz+ZQ+BjFHKQBxjGpwdGwhOq7J0bFCdFyLo2ON6Lj2/XR8L9E6mMsr0Elp15ihS12OA4mpPFGPo+NUiI7rc3ScGtFxA46OMdUhGnJ0nBbRcSOOjtMhOn6Oo+P0iI4bc3ScAdFxE46OMyI6bsrRcSZEx804Os6M6Lg5R8cPITpuwdFxFkTHLTk6zoromGVElQ3RcSuOjrMjOn6Bo+MciI5bc3ScE9FxG46OcyE6bsvRcW5Ex+04OrYRHbfn6NhBdBzC0XEQouMOHB37EB135OjYRXTciaNjP6LjUI6O8yA67szR8cOIjrtwdJwX0XFXjo7zIToO4+g4P6LjbhwdP4LouHsKO05AVMI068bNMQUz/U1NQ8wkPpzHZAusyRYYkz3u5xTeSzQCtXLi57h6CiDsRfKcmCbYE9MMc2J6cqwr9eIQjeIQjeYQjeEQjeUQ7c0h2odDtC+HaD8O0f4cogM4RAdyiA7iEB3MITqEQ9QbyqIax6I6jEV1OIvqCBbVkSyqo1hUR7Oovsii+hKL6hgW1bEsqi+zqL7CojqORXU8i+oEFtV4FtUEFtWJLKqTWFQns6hOYVF9lUV1KovqNBbV11hUp7Oovs6iOoNF9Q0W1ZksqrNYVGezqL7JojqHRXUui+o8FtX5LKoLWFQXsqguYlFdzKK6hEX1LRbVpSyqb7OoLmNRXc6iuoJF9R0W1XdZVFeyqL7HorqKRfV9FtXVLKprWFTXsqh+wKK6jkX1QxbV9SyqH7GobmBR3ciiuolFdTOL6hYW1a0sqttYVLezqO5gUf2YRXUni+onLKoeiyqwqO5iUd3NorqHRfVTFtW9LKqfsajuY1H9nEV1P4vqFyyqB1hUD7KoHmJR/ZJF9TCL6lcsqkdYVL9mUf2GRfUoi+oxFtVvWVSPs6h+x6J6gkX1exbVkyyqP7ConmJR/ZFF9TSL6k8sqmdYVH9mUT3LovoLi+o5FtVfWVTPs6heYFH9jUX1dxbViyyqf7CoXmJR/ZNF9TKL6l8sqldYVP/mUAUrgEfW4pFVPLKaRzaQRzYVj2xqHtk0PLJpeWTT8cim55HNwCObkUc2E49sZh7Zh3hks/DIZuWRzcYjm51HNgePbE4e2Vw8srl5ZG0eWYdHNohH1scj6/LI+nlk8/DIPswjm5dHNh+PbH4e2Ud4ZAvwyD6aQllMEvtaEckMqIbf3qile2+jBbmMZkQ1PI42+hiX0Uyoht+hjRbiMpoZ1fAE2mhhLqMPoRp+jzZahMtoFlTDk2ijj3MZzYpq+APaaFEuo9lQDU+hjT7BZTQ7quGPaKPFuIzmQDU8jTb6JJfRnKiGP6GNFucymgvV8AzaaAkuo7lRDX9GGy3JZdRGNTyLNlqKy6iDavgL2mhpLqNBqIbn0Eaf4jLqQzX8FW20DJdRF9XwPNro01xG/aiGF9BGy3IZzYNq+Bva6DNcRh9GNfwdbbQcl9G8qIYX0Uaf5TKaD9XwD7TR8lxG86MaXkIbrcBl9BFUwz/RRityGS2AangZbbQSl9FHUQ3/QhutzGW0IKrhFbTRKlxGH0M1/BtttCqX0UKYhr4AtNFqXEYLo4xaaKPVuYwWQRlVaKPBXEYfRxnVaKM1uIwWRRkNRButyWX0CZTRVGijtbiMFkMZTY02WpvL6JMoo2nQRutwGS2OMpoWbbQul9ESKKPp0EbrcRktiTKaHm20PpfRUiijGdBGG3AZLY0ymhFttCGX0adQRjOhjTbiMloGZTQz2uhzXEafRhl9CG20MZfRsiijWdBGm3AZfQZlNCvaaFMuo+VQRrOhjTbjMvosymh2tNHmXEbLo4zmQBttwWW0AspoTrTRllxGK6KM5kIbfZ7LaCWU0dxoo624jFZGGbXRRl/gMloFZdRBG23NZbQqymgQ2mgbLqPVUEZ9aKNtuYxWRxl10UbbcRkNRhn1o4225zJaA2U0D9poCJfRmiijD6ONduAyWgtlNC/aaEcuo7VRRvOhjXbiMloHZTQ/2mgog9Fg8LfE2Lz6l3xa4mx25jieuc0hRQ3ycivInQFntAuX0YpYoxlxRrtyGa2ENZoJZzSMy2hlrNHMOKPduIxWwRp9CGe0O5fRqlijWXBGw7mMVsMazYoz2oPLaHWs0Ww4oxFcRoOxRrPjjEZyGa2BNZoDZ7Qnl9GaWKM5cUZ7cRmthTWaC2c0istobazR3Dij0VxG62CN2jijMVxG62KNOjijsVxG62GNBuGM9uYyWh9r1Icz2ofLaAOsURdntC+X0YZYo36c0X5cRhthjebBGe3PZfQ5rNGHcUYHcBltjDWaF2d0IJfRJlij+XBGB3EZbYo1mh9ndDCX0WZYo4/gjA7hMtoca7QAzuhQLqMtsEYfxRmN4zLaEmu0IM7oMC6jz2ONPoYzOpzLaCus0UI4oyO4jL6ANVoYZ3Qkl9HWWKNFcEZHcRltgzX6OM7oaC6jbbFGi+KMvshltB3W6BM4oy9xGW2PNVoMZ3QMl9EQrNEncUbHchntgDVaHGf0ZS6jHbFGS+CMvsJltBPWaEmc0XFcRkOxRkvhjI7nMtoZa7Q0zugELqNdsEafwhmN5zLaFWu0DM5oApfRMKzRp3FGJ3IZ7YY1WhZndBKX0e5Yo8/gjE7mMhqONVoOZ3QKl9EeWKPP4oy+ymU0Amu0PM7oVC6jkVijFXBGp3EZ7Yk1WhFn9DUuo72wRivhjE7nMhqFNVoZZ/R1LqPRWKNVcEZncBmNwRqtijP6BpfRWKzRajijM7mM9sYarY4zOovLaB+s0WCc0dlcRvtijdbAGX2Ty2g/rNGaOKNzuIz2xxqthTM6l8voAKzR2jij87iMDsQarYMzOp/L6CCs0bo4owu4jA7GGq2HM7qQy+gQrNH6OKOLuIwOxRptgDO6mMtoHNZoQ5zRJVxGh2GNNsIZfYvL6HCs0edwRpdyGR2BNdoYZ/RtLqMjsUab4Iwu4zI6Cmu0Kc7oci6jo7FGm+GMruAy+iLWaHOc0Xe4jL6ENdoCZ/RdLqNjsEaR6ZuVXEbHYo0+jzP6HpfRl7FGW+GMruIy+grW6As4o+9zGR2HNdoaZ3Q1l9HxWKNtcEbXcBmdgDXaFmd0LZfReKzRdjijH3AZTcAabY8zuo7L6ESs0RCc0Q+5jE7CGu2AM7qey+hkrNGOOKMfcRmdgjXaCWd0A5fRV7FGQ3FGN3IZnYo12hlndBOX0WlYo11wRjdzGX0Na7QrzugWLqPTsUbDcEa3chl9HWu0G87oNi6jM7BGu+OMbucy+gbWaDjO6A4uozOxRnvgjH7MZXQW1mgEzuhOLqOzsUYjcUY/4TL6JtZoT5xRj8voHKzRXjijwGV0LtZoFM7oLi6j87BGo3FGd3MZnY81GoMzuofL6AKs0Vic0U+5jC7EGu2NM7qXy+girNE+OKOfcRldjDXaF2d0H5fRJVij/XBGP+cy+hbWaH+c0f1cRpdijQ7AGf2Cy+jbWKMDcUYPcBldhjU6CGf0IJfR5Vijg3FGD3EZXYE1OgRn9Esuo+9gjQ7FGT3MZfRdrNE4nNGvuIyuxBodhjN6hMvoe1ijw3FGv+YyugprdATO6DdcRt/HGh2JM3qUy+hqrNFROKPHuIyuwRodjTP6LZfRtVijL+KMHucy+gHW6Es4o99xGV2HNToGZ/QEl9EPsUbH4ox+z2V0PdboyzijJ7mMfoQ1+grO6A9cRjdgjY7DGT3FZXQj1uh4nNEfuYxuwhqdgDN6msvoZqzReJzRn7iMbsEaTcAZPcNldCvW6ESc0Z+5jG7DGp2EM3qWy+h2rNHJOKO/cBndgTU6BWf0HJfRj7FGX8UZ/ZXL6E6s0ak4o+e5jH6CNToNZ/QCl1EPa/Q1nNHfuIwC1uh0nNHfuYzuwhp9HWf0IpfR3VijM3BG/+Ayugdr9A2c0UtcRj/FGp2JM/onl9G9WKOzcEYvcxn9DGt0Ns7oX1xG92GNvokzeoXL6OdYo3NwRv/mMrofa3QuyqgK4DL6BdboPJxRi8voAazR+TijisvoQazRBTijmsvoIazRhTijgVxGv8QaXYQzmorL6GGs0cU4o6kZjAaDH1Uh9+qfkcLlw1SaFNrErROptDyy6Xhk0/PIZuCRzcgjm4lHNjOP7EM8sll4ZLPyyGbjkc3OI5uDRzYnj2wuHtncPLI2j6zDIxvEI+vjkXV5ZP08snl4ZB/mkc3LI5uPRzY/j+wjPLIFeGQf5ZEtyCP7GI9sIR7ZwjyyRXhkH+eRLZpC2XjczAlXc0o9wQNVjAcKV6lGPckDVZxHtgSPbEke2VI8sqV5ZJ/ikS3DI/s0j2xZHtlneGTL8cg+yyNbnke2Ao9sRR7ZSjyylXlkq/DIVuWRrcYjW51HNphHtgaPbE0e2Vo8srV5ZOvwyNblka3HI1ufR7YBj2xDHtlGPLLP8cg25pFtwiPblEe2GY9scx7ZFjyyLXlkn+eRbcUj+wKPbOuUyiYkIGbyqK7b8BC15ZFtxyPbnkc2hEe2A49sRx7ZTjyyoTyynXlku/DIduWRDeOR7cYj251HNpxHtgePbASPbCSPbE8e2V48slE8stE8sjE8srE8sr15ZPvwyPblke3HI9ufR3YAj+xAHtlBPLKDeWSH8MgO5ZGN45EdxiM7nEd2BI/sSB7ZUTyyo3lkX+SRfYlHdgyP7Fge2Zd5ZF/hkR3HIzueR3YCj2w8j2wCj+xEHtlJPLKTeWSn8Mi+yiM7lUd2Go/sazyy03lkX+eRncEj+waP7Ewe2Vk8srN5ZN/kkZ3DIzuXR3Yej+x8HtkFPLILeWQX8cgu5pFdwiP7Fo/sUh7Zt3lkl/HILueRXcEj+w6P7Ls8sit5ZN/jkV3FI/s+j+xqHtk1PLJreWQ/4JFdxyP7IY/seh7Zj3hkN/DIbuSR3cQju5lHdguP7FYe2W08stt5ZHfwyH7MI7uTR/YTHlmPRxZ4ZHfxyO7mkd3DI/spj+xeHtnPeGT38ch+ziO7n0f2Cx7ZAzyyB3lkD/HIfskje5hH9ise2SM8sl/zyH7DI3uUR/YYj+y3PLLHeWS/45E9wSP7PY/sSR7ZH3hkT/HI/sgje5pH9ice2TM8sj/zyJ7lkf2FR/Ycj+yvPLLneWQv8Mj+xiP7O4/sRR7ZP3hkL/HI/skje5lH9i8e2Ss8sn+zyOoAHlmLR1bxyGoe2UAe2VQ8sql5ZHkq7mqeiruap+Ku5qm4q3kq7mqeiruap+Ku5qm4q3kq7mqeiruap+KuzsYjy1NxV/NU3NU8FXc1T8VdzVNxV/NU3NU8FXc1T8VdzVNxV/NU3NU8FXc1T8VdzVNxV/NU3NU8FXc1T8VdzVNxV/NU3NU8FXc1T8VdzVNxV/NU3NU8FXc1T8VdzVNxVxflkeUppauL8cjy1MjVPDVyNU+NXF2SR5anRq7mqZGreWrkap4auZqnRq7mqZGreWrkap4auZqnRq7mqZGreWrkap4auZqnRq7mqZGreWrkap4auZqnRq7mqZGreWrkap4auZqnRq7mqZGreWrkap4auZqnRq7mqZGreWrkap4auZqnRq7mqZGreWrk6sY8sjw1cjVPjVzNUyNX89TI1Tw1cjVPjVzNUyNX89TI1Tw1cnVrHlme+reap/6t5ql/q3nq32qe+reap/6t5ql/q3nq32qe+reap/6t5ql/q3nq32qe+reap/6t5ql/q3nq32qe+reap/6t5ql/q3nq32qe+rc6ikeWp/6t5ql/q3nq32qe+reap/6t5ql/q3nq32qe+reap/6t5ql/q3nq32qe+reap/6t5ql/q3nq32qe+reap/6t5ql/q3nq32qe+reap/6t5ql/q3nq32qe+reap/6t5ql/q3nq32qe+reap/6t5ql/q3nq3+oEHlme+reap/6t5ql/q3nq32qe+reap/6t5ql/q3nq32qe+reap/6t5ql/q3nq32qe+reap/6t5ql/q3nq32qe+reap/6t5ql/q3nq32qe+reap/6t5ql/q3nq32qe+reap/6t5ql/q3nq32qe+reap/6t5ql/q9/hkeWpf6t56t9qnvq3mqf+reapf6t56t9qnvq3mqf+reapf6t56t9qnvq3mqf+reapf6t56t9qnvq3mqf+reapf6t56t9qnvq3mqf+reapf6t56t9qnvq3mqf+rUbVv60f2iMyql/tiLCYieqwHlWjZq3aderWq9+gYaPnGjdp2qx5i5bPt3qhdZu27dqHdOjYKbRzl65h3bqH94iI7NkrKjomtnefvv36Dxg4aPAQb6gX5w3zhnsjvJHeKG+096L3kjfGG+u97L3ijfPGexO8eC/Bm+hN8iZ7U7xXvaneNO81b7r3ujfDe8Ob6c3yZntvenO8ud48b763wFvoLfIWe0u8t7yl3tveMm+5t8J7x3vXW+m9563y3vdWe2u8td4H3jrvQ2+995G3wdvobfI2e1u8rd42b7u3w/vY2+l94nkeeLu83d4e71Nvr/eZt8/73NvvfeEd8A56h7wvvcPeV94R72vvG++od8z71jvufeed8L73Tno/eKe8H73T3k/eGe9n76z3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",
|
|
1897
|
+
"debug_symbols": "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+7zt87bP2z5v+7zt87bP2z5v+7zt87bP2z5v+7zt87bP2z5v+7zt87bP2z5v+7zt87bP2z5v+7zt87bP2z5v+7zt87bP2z5v+7zt87bP2z5v+7zt87bP2z5v+7zt87bPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPxz4f+3zs87HPl32+7PNlny/7fNnnyz5f9vmyz5d9vuzzZZ8v+3zZ58s+X/b5ss+Xfb7s82WfL/t82efLPl/2+bLPl32+7PNlny/7fNnnyz5f9vmyz5d9vuzzZZ8v+3zZ58s+X/b5ss+Xfb7s82WfL/t82efLPl/2+bLPl32+7PNlny/7fNnnyz5f9vmyz5d9vuzzZZ8v+3zZ58s+X/b5ss+Xfb7s82WfL/t82efLPl/2+bLPl32+7PNlny/7fNnnyz5f9vmyz5d9vuzzZZ8v+3zZ58s+X/b5ss+Xfb7s82WfL/t82efLPl/2+bLPl32+7PNlny/7fNvn2z7f9vm2z7d9vu3zbZ9v+3zb59s+3/b5ts+3fb7t822fb/t82+fbPt/2+bbPt32+7fNtn2/7fNvn2z7f9vm2z7d9vu3zbZ9v+3zb59s+3/b5ts+3fb7t822fb/t82+fbPt/2+bbPt32+7fNtn2/7fNvn2z7f9vm2z7d9vu3zbZ9v+3zb59s+3/b5ts+3fb7t822fb/t82+fbPt/2+bbPt32+7fNtn2/7fNvn2z7f9vm2z7d9vu3zbZ9v+3zb59s+3/b5ts+3fb7t822fb/t82+fbPt/2+bbPt32+7fNtn2/7fNvn2z7f9vm2z499fuzzY58f+/zY58c+P/b5sc+PfX7s82OfH/v82OfHPj/2+bHPj31+7PNjnx/7/Njnxz4/9vmxz499fuzzY58f+/zY58c+P/b5sc+PfX7s82OfH/v82OfHPj/2+bHPj31+7PNjnx/7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JU+x5CmWPMWSp1jyFEueYslTLHmKJU+x5CmWPMWSp1jyFEueYslTLHmKJU+x5CmWPMWSp1jyFEueYslTLHmKJU9Rly760kVhumhMF5XpojNdlKaL1nRRmy5600VxumhOF9XpojtdlKeL9nRRny7600WBumhQFxXqokNdlKiLFnVRoy561EWRumhSF1XqoktdlKmLNnVRpy761EWhumhUF5XqolNdlKqLVnVRqy561UWxumhWF9XqoltdlKuLdnVRry761UXBumhYFxXromNdlKyLlnVRsy561kXRumhaF1XromtdlK2LtnVRty761kXhumhcF5XronNdlK6L1nVRuy5610XxumheF9XrontdlK+L9nVRvy7610UBu2hgFxXsooNdlLCLFnZRwy562EURu2hiF1XsootdlLGLNnZRxy762EUhu2hkF5XsopNdlLKLVnZRyy562UUxu2hmF9XsoptdlLOLdnZRzy762UVBu2hoFxXtoqNdlLSLlnZR0y562kVRu2hqF1XtoqtdlLWLtnZR1y762kVhu2hsF5XtorNdlLaL1nZR2y5620Vxu2huF9XtortdlLeL9nZR3y7620WBu2hwFxXuosNdlLiLFndR4y563EWRu2hyF1XuostdlLmLNndR5y763EWhu2h0F5XuotNdlLqLVndR6y563UWxu2h2F3BTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMBNxVwUwE3FXBTATcVcFMB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TYN902DfNNg3DfZNg33TYN802DcN9k2DfdNg3zTYNw32TYN902DfNNg3DfZNg33TYN802DcN9k2DfdNg3zTYNw32TYN902DfNNg3DfZNg33TYN802DcN9k2DfdNg3zTYNw32TYN902DfNNg3DfZNg33TYN802DcN9k2DfdNg3zTYNw32TYN902DfNNg3DfZNg33TYN802DcN9k2DfdNg3zTYNw32TYN902DfNNg3DfZNg33TYN802DcN9k2DfdNg3zTYNw32TYN902DfNNg3DfZNg30DN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7awE0buGkDN23gpg3ctIGbNnDTBm7a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",
|
|
1898
1898
|
"verification_key": "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"
|
|
1899
1899
|
},
|
|
1900
1900
|
{
|
|
@@ -1913,7 +1913,7 @@
|
|
|
1913
1913
|
}
|
|
1914
1914
|
}
|
|
1915
1915
|
},
|
|
1916
|
-
"bytecode": "H4sIAAAAAAAA/
|
|
1916
|
+
"bytecode": "H4sIAAAAAAAA/61UsU7DMBANLUyIgQVWBgZmQOyQCFQEQoKWNTLNUSw5TmS7VcOE/yApVHwAbalUujEwMsAvIBXxG+y4ahPaQAoReEjiXN6793Lny9aC696KaaJzAUWTMhNTAYwiwk2Te7RougxXkACTC3XVAtnZYpgQXNIRIVea7z/6agW133O8aYuyqTuUi0vZMjCDosjI25yClIDdFNZWn5a0yWsqjp9Khb8w4ngtXf5PfPsQCBK4AukUaNpXhkxahrt+BSwkkO64XmTFGNU0Qt7ofx3MDu9zf3Zg/IODxpFw3KCWoDhWI725jYFYP9LOtA5BlBkdOp2XnW2HAS7R/rbeWy4LTLDwNjkHJnTHdlW6EwIHDBUJHAPj2KGqoWV3H2yHeZuWxYDzSEUgW0fYdgkM5IyzPwzJd0AUBk/Kg4CqqMfpRiwnRTKJkWxiZDoxMlMPhY9V6ZuXG+sxixN2vh/+7Vi1plP1QtVQYwVTxDwFOnDrIUu2vadM5M8QHWgNT2uUpLVbtt3caS0CLMhujlqDUiWOiI31ZEGvz+8v97urtmzkGeo3Z4QPZ9XQ8QeMD3HZOQUAAA==",
|
|
1917
1917
|
"debug_symbols": "fZLRroMgDIbfpddcUEQnvsqyGFRcSAgapic5Mbz7YJGpF+yGUtr/42/SDQbVrc9W23F6QXPfoHPaGP1szdTLRU82vG5A44EcmoIAltBU3hNIHe3ilIoNJ0kAzdIpu0BjV2MI/Emzfppes7SfuEgXqpSAskOIAThqo+LNk0NN81JEntTIaPEFIFYXBOYRtWA7QRT8ANTiAmA/PFDE5IFWVRbxY4y6TFMIKrJD8DyA83IH8JODG7voy7y+qPiuLwQ7DETAI6Sy1+6yDT6inJadUXs6rrY/VZf/OVXSNs1u6tWwOhVJp5UK5x1vhLGHj7+9AQ=="
|
|
1918
1918
|
},
|
|
1919
1919
|
{
|
|
@@ -3714,8 +3714,8 @@
|
|
|
3714
3714
|
}
|
|
3715
3715
|
}
|
|
3716
3716
|
},
|
|
3717
|
-
"bytecode": "H4sIAAAAAAAA/+
|
|
3718
|
-
"debug_symbols": "
|
|
3717
|
+
"bytecode": "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",
|
|
3718
|
+
"debug_symbols": "rZfZbuIwFIbfJde58Fm88SoVqlKaVkgRoBQqjSrefY7BdsJItjKhN/xk+3J81vinee/fLp+v+8PH8avZvPw0b+N+GPafr8Nx1533x4Oc/WlU+AFuNnRtG7gdmGaDcoDhgGyzgbYhJ3KVk+nZ1/PY9+GGGUxecerG/nBuNofLMLTNdzdcbjd9nbrDTc/dKFdV2/SHd1EBfuyHPvy7ttPTqvyothgfNmDz42BpKQC9oUggBThDwFIEKICIAGXMhHB+KcJ6l5zgFNOEAH5AcBnhfPKEJ15jA5LxkYAMXLTB1BDMGaGmZdhHI2zNEdkIp9TkSwE/IFwFYZWNCGs1FxG+jCCdfMkw2YD6EQA1Z6LLziSFZQZU8gpMMgPA6XV2WDDJDkuqzKCKHdamEgHrK2upZKdnnbJTu1UEUIhTlVW8UclPdpDMYKdnxe6XO8OrFFjwWHZGLSbMOSZ63rX+KTTwNW/onGDiDj9F1vj/gEitZIiblZtZ3DU02uRSTaq8mBC8YrnN7CDlSJfsqEOcSwlC0pLNKggAQYaAtys8wqgSgpFd0SO1iWL8VHHzFia187CUSic101QyCmeMpUYYjymyxuvyTEJfaz8qp4e0IiimKamnpwrB82OF8Pm5QvTsYCF+frCQfn6w1CMLRuXIIkIxspUcpZzm0hLXfL1pDckIrRmLOUr+F7pPHeLc9B3pCddBpM5mLWy1JYv6YBXyC31Qc645iQ2v6YNWBlsuOeUfEVs57Hb78XH/Alpe1942LSCZBzaqi+rvirLPQWEjRJXdDcqKkaJyqC9RHTVsgoSLNqqL6u/3k7ofE0QNPJnyJDySj1USHst7SEc1oQW0t/0Uxw3VTf1dWYXpIQpRMSpFDTyxi/W9d7KJaqO6u10ceNJOtIoKUTFqXK/mqDpq5OlgX8jD727cd29DH5wc4nA57JLP5fD855SupF3laTzu+vfL2If4zLaW8vsi32gI27zBvJ3yLfI2bzPlDHJLvG3vl8VnrLfXEPW/",
|
|
3719
3719
|
"verification_key": "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"
|
|
3720
3720
|
},
|
|
3721
3721
|
{
|
|
@@ -3966,8 +3966,8 @@
|
|
|
3966
3966
|
}
|
|
3967
3967
|
}
|
|
3968
3968
|
},
|
|
3969
|
-
"bytecode": "H4sIAAAAAAAA/+29CZhdV3UuuE/dq1LdqlJdlWaVplOS5UmegYSQBDCeZPCEJ/AAWLYLYWNbsubBk8ACQvBLgMykQ9IJIS9ARjovvE4awiOkCaHDF/pL0oRAIJ2ETGCm5CVN4mbDXaq//vrPvuecu650wbW/T7qnzl77X2uvvfba49k7C98K7c7v7j277prZu/cV93/jvx07Z276xqusE9Xs/C7u/Mb3k2FuMNo8lApZBdq5iSrwyEL/eQyF/vNohP7zaIb+81gU+s9jOPSfx+LQfx4jof88WqH/PEZD/3mMhf7zGA/957Ek9J/HROg/j3boP4+loTqPOnwmw8nhs6w87Texny/eVeG3PPS/jFaE/vNYGfrPY1XoP4/Vof881oT+81gb+s9jKvSfx7rQfx7rQ/95bAj957Ex9J/HptB/HnnoP4/p0H8em0P/eWwJ/edxWug/j62h/zxOD/3ncUboP48zQ/95nBX6z+Ps0H8e20L/eZwT+s/j3NB/HueF/vM4P/SfxwWh/zwuDP3ncVHoP49nhP7zeGboP49nhf7z+K7Qfx7fHfrP49mh/zy+J/Sfx3NC/3l8b+g/j+8L/efx/aH/PJ4b+s/jeaH/PJ4f+s/j4tB/Hi8I/edxSeg/j0tD/3lcFvrP4/LQfx5XhP7z2B76z+PK0H8eLwz95/Gi0H8eV4X+87g69J/HNaH/PK4N/edxXeg/jxeH/vO4PlTnUYfPDeHk8LkxnBw+N4UafG4mhnFDQ9xwEDcExAX7uKAeF7zjgnRcMI4LunHBNS6IxgXLuKAYF/ziglxcLIsLWXFxKS7+xMWZuHgSFzfi4kNcHIiT93FyPU5+x8npOHlsk7vT3/gXJy/j5GKc/IuTc3HyLE5uxcmnODkUJ2/i5Eqc/IiTE3HyIA7u4+A7Do7j4DUOLuPgLw7O4uApDm7i4CMODmLnPXauY+c3dk5j5zF27p7/jX+xcxQ7L7FzERv/2DjHxjM2brHxiY1DdN7RuUbnF51TdB6xcsfKFytHNN5oWLHQbwrFwQq3YP/Nr2z61uuRTvQQJKuwHyQbIXbV0j/2mREGrJQ+fDN9TDNSL/3Nlr5VL/03zTeGH4D0KIvhNjq/PwVpf4p4Gs2ngOZTRGPy1tN3+IEe8zs5Hubm0TACyDZaD3sZ5slCg94hfiv0VPZZRnjGj/NndWMcaIxfRnFNIafFLYI40390fWcDHZftCMWZLDH8FMU1IO5tnV8rE5Srgo5+ukd7eX4f7eXib0d7aVKch70gBtuLYcTwKYobhri/pLjFEPdp4P0seH6o89yjTzrhw2u2Qd/sEjB/xDJ5LTToNwbTk+l+RNBbXAviUPcxjML7hsBaTOmM/pmd34nOL5aNpW8L/sPEX8mtbDMTWA3xzuijfs4FmQ3zEqDN7eGre//sFz/6xG9+6Jf2vfMdPzb5ySU/OXbO6KPHj39x3RfW/9STx3/e0l4KsmShdHkPW/rLFO/n/rfGra/69X/fNXbFa3/14Cf/n2v2L1m/44Ob3vCOW3//zZv+/hWvs7SXq7Sff9PbHm3/6lt+Nt/2sa8NX/FD//SKr1y56Nmf/NhDa//Ha77+90++1dJeodL+ya1f/8v3tt965NAT7zv67DOX73j3W//sS//wBx/9lfZXPvueB//sWZZ2O+S5Tj/rynrpl1r6F0L6KntyLf2L6qU/If9V9dIPWfqr4WVuD8d+4Zf+8uInPnbBX3999I1X73j80DN+8BMv+ecja9659W/ufc/6d09a2mtU2s/tu+TN+1bf/13/PPLHT1z4c+s2fOar73zv3/3L4Zln/9Pfff63pr9iaa8VaddcdMb37P6Jj6/41Jmb/+L5H3j3eT+y9qunfd+nfnv7zz357x/5n2FWZ9dBniuU2Yk8v7he+qalv75e+oalvwFe5uk0J5piS3tjPd4n0t9UnreFRZb2Zp02e+3mvT/eeiK7+oOvOfe946Mf/PuL3/6CSz720cffuKn97rdb2peItGd/X+vJd7zxkePhr975j//lX87+neefO7nx4snz/u+3/em6B/bctvZJS/tSYxQq5Xm9pb8F0pPsyWDpbw3zZS+b9rZ6vE/U79ur8z6R9mXV056oIy83sFBJ5yds5RX10rcs/R310o9a+h310o9Z+jvrpT/hG++ql36Zpb+7XvoVln4G0lfoC+SW/pX4MpQKZ1nanfV4X2DpX1Uv/YWW/h5IX2VsZenvrcf/Ykv/6nrpL7H099VLf6mlv79e+sst/QP10l9n6XfVS3+jpd9dL/0OS/9gvfR3Wfo99dLfben31ks/Y+n31Uv/Sku/v176nZb+QL30r7L0B+ulv8fSH6qX/j5Lf7he+vst/ZF66R+w9Efrpd9l6R+ql363pX+4Xvo9lv6Reun3WvpH66XfZ+kfq5d+v6U/Vi/9AUv/mnrpD1r619ZLf9jSP14v/VFLf7xe+oct/evgZR5KhRN99dertOk5hNdb2jeotOk5hB+JcydxDuiJzsRPXOpa00m6f989992z7/AVM/tu+tbTJbse2DdzaB/O4UX98Fxqi/4epb/H6G+eX7T3ap6yTLA5wyWEF8Ls3OAE8clDqbAhI7wQ9Byv4bdIlor8TszxThA/zh/O8ca4tpClTXExcF+lLfi0BR+FtdcR62FHrH2OWEcdsTzzeNgR66Aj1hFHrP2OWDOOWJ6696xDjwwo1m5HLE+b8NS9p33tccTyrNueNvGgI5anjz7miDWo7aP1t63vgH2NrODX+PA749MKPfWzslS+JgS/FP2SBP3SkvhjgN3pF186c+f+nVft2hkocFf10gIR1xPdjQnRGDejf/x+Pb1rCFoMMXurOs+d7F0+s++uV924Y+fOmbu/kcm9nIKRLil4nzIq64y3SdI8lApDZYwS8U+2UUatLus8d7R61a4dd1+yY/fe/ffN4NYZNFPmkhEqvlNlmoFk+G6U6C6hv7eLdEFg47avSXqfh1JhmVnFMhFpccsBewnFrYC4CYpbCVivBDoOnE/MTxwSv3V0FpfpWFYsq+UUtxTiVgBvLvO24GN5GxL0SwlLDfmsXLrxa4h0PGRNDavL1ETLRwizzdASIXMfPcaKQfcYlr+l9fgtTzVriGnymK4nRZxhWR0dLsCytE2i/3znt010MdxKPCaFvPgOt/38NcmOumU76UWPiGdy4TvEb4We7DJLlZvqxvXqf8voHeVhf826Rb83XIBlaZtE/7XObzvMbxPYTpYJefEd2smTJDvqlu2kph5Lb/k0/FboyS6zVLlh/thOltXj9/wyekd5VNuNusU2cLgAy9I2id66e22ii4HtZLmQF9+hnfwHyY66ZTupqcf1Ze3E8FuhJ7vMUuWm/KoqN0ur9M3TxmX1rbAedsQ66oj1oCPWXkesRwYU66Aj1hFHrP2OWDOOWIccsTztflD19RpHLE9bfdQR64AjlqfuPfO42xFrUG31cUesnY5YtrVBzb9wXwf7AlXHFohncuI7xG+FnvpWWUovamxg+VtRj99kRumRH2LyPNBKEWdYNvc6XIBlaZtE/8KOQttEFwP3iVcKefEd9okv6+BOCHl5fqCqPabmyjAd22PN8rqsrD0afiv0ZP9Zyj6UXix/K+vxu7RM+aI8putVIs6wVnf+Hi7AsrRNor+V7HEVyMT2uErIi+/QHm/K5sqOumU7qanHF5S1E8NvhZ7sMkuVG+aP7WRVPX4Xl9E7ymO6Xi3iDMu2ig0XYFnaJtHvJDtZDTKxnawW8uI7tJM7yW+hvDxfVdYftkV6oxsR6XJ7SH92+As9ludLLP3qeumXW/o19dJfaunX1kt/cSyv3VRe+Ck0r4fZtsJFYbZe4pqppW0S/f8+MptuH/kR3roYwmyZ1vzEfG1ZP2L4Xp+B86eznD+e6xkTsrQpLgbuy44JPmOCj8I67og144j1kCPWXkesI45YexyxDjpieeZxvyPWoNrXbkeshx2xHnXE8rQvT30dcsTytC/POnTUEcvTJjz9qs17j4s47geMw/sK7XLp3Ul4jAe3y3X6AePEr0gv1XYnYW+ItYKo+C4Lc3OPcQ16x7uTLqO/6+xOqrlrY8qsYkpEWtw6wG5R3HqIG6O4DYBVdXeS5afq7iQsq3UUh73s9cCby1zxsbwNCfolhDUu0lm5dOP3dK6lqpwsrdpFxfW07Kigjvdw2hBrIq4huu0FomUCN6N//H4NvWuEtHtKDRDLmEwM3AAh1o3EZ6EBWmiAToSFBigMVgPUEOl4eoinjWLI7SF9ItSyODX12Y7iJoS8ODWEeVvUJX9Nor8epsL+psMv0toUYqcWvmD/fa++fmbfnntmDsyovf/dqs7V9Pc1Ip0KZhL8AXEMI6En51TaGRp+K+hizkOpcMIZqlGKOtCumjNkg0CtICq+y0J9Z3gN/V3HGdb8BLqyMxyhOHSG7Ch7cYaWn6rOEMuKnSFWYnaGWOZjgo/lbUjQjxNWypF147fQZflWWOiyQFjosoTB6rJwukVhfq22tE2iXdYxzB5r85zdyyzjQlv/rbDQ1kNYaOvDYLX1ysvwOnU/p0qQd3KAlT4296s9epSbe/SEN0Xve14nkzbAwzrCddxaraK9Dpa2SfQXD82mu6jzHPO8tRPf8TY377jvnrt37Ju57IEH98/sn7n7ml37ZvZe/MDdlx2YeWBf5eHe5fT3FSKdCqbUmhsfxlRH1IKqZKMUxxtMMA67QTwVyx/5YRxuEmpSHDaHiygON78OUxxuRFwMzxyU4zLdxnTvKeG4RsOsPtDRmiPAj395ftacmG0GYxo2WqO/bGhWxh0dz68cATtQPuQghFmb2kCy56FUKN11MPxWmN/w1Ok6bCB+nD+fIwVQK4iK77A2cNzJ6Dpsovd5KBVyswpFb3HTgM1HCmyGuPUUtwWwqnYdLD9Vuw5YVtMUtxHiNgNvLvMNgo/lTR0psJGwNoh03HUo4tcQ6bhbmNF7nM9cJ3jzfObLwXPcPVWsh3WhWA/2txqIsb4tPoYe7fUlZT2N4bfC/LKv42k2ET/OXz1Pg5aCXG4mVKNBWgw3g2RIz2dIcumNiXQcTGNNkvkgdJpeRZ00zNcykltZO77jTi2mNzrFZ2mPfJYKPtyvieEWiptMxKkPg/nDlhh4XVN9AKA2lvNBA2sSmFMCM5bdqsYsXvx3OtApS7fWycpgK8iDafHvRUQbg90x0CTaN4JdPUR2hbWY7WpjF7lTdrUxFPNZ2iOfpYKPGlyz7WwSeVWtNZfzNMSx7WwW+VKtNWOeJjBj+SxpzKXj8o/BPP4Z8L7KILKsxzf8FslS1+OfQfw4f/yByZn1+N2UUXrkh5gmj+n6LBFnWHa32HABlqVtEv2PdzLVJroY+AOTs4S8+A4/MHnL0FzZUbdZwa/h8juuX5h3Kx/jg/7mRpDnp4fm5gX9VCPM92vW82Rf9TxYGX47+SpMz2Wn6knd/J8u8jgR5uuGP0BU9n1Ggk87kZ9+lScfuIR+FsvzXVSeZ0Kc8tF3dX6bRH8mlOevUHmquqj0zO1SVT0vE3z6rWduX85y5INYfFjjNsJiP2jlZHo+G9Jvo3TnQBzS4ahrG7w/R/BW+IbRzQbfP6TzpmwQeTWJfgnY4Adr2uBZFIdtBbaLKAfqAcvsrqDzNSzoU/n6CIw6d07NxbT0qCssC/a/Rv9HgHnvlJYT84XtAW/hVPawTeRL6fSc0J036nl7Ae/hkLbFJtF/QuiU2wVMr+oRf8R8dhfZuX5jer7TFNP16keUzN3q5Kcq1kn7KJNt918Wz6b7DNXJlI2gzDyOqKrnpYJPv/XMY4RzHPkgFrcL5xEW69nKyfR8LsSdR+nOhzikw3bhPHh/vuCt8Mu2C08O6bwV2aDxahL9X4ANfiUxLk7Z4DkUhzrldqGbP1xL9Cb3cEi3t02i//dEu6DqK/pabheM/j8S7YLxxXyl2gVli+eKfCmdnkdYWwUW6pnbBaVTzP9Wyv8J22nM5j/VLlh6NR9xG8XhfMSZFJdDHPdZpyHuLIrD+QieG9kCcezvToM4tBGej5hI5AfXFXm+D+ftNlEcHo6QUxweSjBNcThvt5ni8DCBLRQ3BXGnQV5t3o4Xs9d23ve4pie3IaXmRbOC3xDKtQe4dsxrzhsc+SDWZcRnoyOfjYn85IKPlRfWl36swRp+K8yvu3XmyaaJH+ev3soIehvWCqLiuyzMzT3GnYw12C30Pg+lwmlqltUCz2Qpj4QePac4nDGougZr+am6BotlxS0MevzTgTeX+bTgk3eehwQ9r+dOi3RWLt34NUQ6Xq/M6H3RGqxhNIn+OdBC3089FMUrB/m4l2CyF+0gyUkGo38uyLBjSmM2C/K1qQDzxY1ZfVzc0JhBYKp8baZ8sQzTJIPRXyZ6P40w3/6UjU3T37i+vblAPlVOLCvWp6L85JQfo39RopxyIYPJFcP2LjIwzeYCGa4VMgiPfsmu3Yc7Hj1Q4O9OeW2aNc9r1bnAKQqmjWiFZpFqZ8UmkW4T/d0SMsWc2xzEic9475vZN1OQd26tRgt4DgUduA9u6WKw1ieH9/3oN+Sd51bQXioPpULGlmv8OH+8f3BayNIWcVi+bEcpPrFMrd/fKdMb9u3aU1SkZTsUmRCL0wfCysS7GJ7OZlCt+8hGkMPfiIrvUprvVtoe3xBxc5KHUmGLWsC3oAbMvE2vTNcyhqrdR8tP1e5jDnGnUdw0xG0F3lzmueCDTpbppwkrF+msXLrxU91L3gbIXqGo+8jdLKPfD83x3VNz88k3pL0e4niLXh7mpo2hx4HoZFlPYvjfngPRpYRqNEiLAe+dQvrUFr0YrhTpOLAnOYve56FUOFstJ1iwOJzeZG+BU5M5xeG06+uAjoPyJJafaO27p2ZxmY5lxVq3jeLQus+hOPTE51IcDvLPozj0sudTHHrZCygOB/AXUhwu615Ecbgc/IzOM3uKH6bpwJrttZwONKyJMF/ffFa36oaprfptkX59gs/qHvmsFnzGRTr2jjX1WLqfxRuYe/1UQm1gVnpRrbClbYfiFtrszuxkZWec9s2tUTQt34cr5r+rrF5P9RXzk0IWddfb/UDHcQ3xbiiBddQR6zFHrCOOWHscsWYcsTzz6FmOnnl80BHLM4+HHbEecsQ65Ii11xHrUUesg45YnjbhWR8965CnTXjqa78j1iOOWJ663+eI5an7hx2xPPXl6Qt3O2J56mtQfaGnvjx9ztOhz+RpE57ttqfuX+OI5Wn3nro/4IjlqXvPPHr6Cc8+gKe+HnfEOt75tTkmnIfg1SQ15p9I8MH0EyWw1PxBKo9FR144nTRtIj6L6LYXiJYJ3Iz+8ftn0buGoEVsPBqozGLGVsLOQ6lwUUZ4IehpJcP3WsxQO4VzeMfTSmcJWdQXWK8GOo5riHepr7mOOmIddsR6yBHrkCPWXkesRx2xDjpiedrEEUesGUcsT5vw1Nd+RyxPfe1zxPLU12OOWJ62uscR6+lQjg87Ynnqy7Md2u2I5amvQW2HPPXl6e897cvT53jWR0+b8Owzeer+NY5YnnbvqfsDjlieuvfMo6efGNT+1+OOWDxNguNqniZRY9itCT6YfmsJrFxgpfLY52kSE/FCotteIFomcDP6x+8vpHfdpkl4V87xDjObFqm5q2jeVA9iTRDP+Mwfl1edqcP0kwk+y3vks1zwGRfpLN896nEM9Ydy4jvEb4X5ea4zvaR2ySm9qN1glpZ3g8XAh4Tlgk8u+CxgLWCdKqzUbk/+NT78LtWUlfEjdfkgFh/+lkN69r858emmN/WJMWPZNwwx3AE0fDghHloRBO9bIB7pf72TIO4C/4vORxLqiyg8fOU3m2lZMS3K2iT634XDV36rg6n0zL5RfSPCZYd8FSa3aRYXQrmyWy5kSGFhea0keiuL4QJ6w+Oy+wCUHR/yYjRF9pOTDFhGgTBiYPsx+g/VsJ8PN9Oysv2sDDr/bwf7+QjZD+o4ZT8rKQ7tJw9zMTGOd8hX7RNh+lTfiw/RVbJnYb6vTXXP26FYRz3uxD+Ll84w8JcwqAf1JcwaisMvYaYoDg8P4rYBDwzaTHHnQxzqg0OD/kYdRTP8NNg+0wXiiWXIh/DgASd8wBweaMPDwjUkK79LtaVrCrDwmAJ1EFeT6N/fuS0k1se/bc7NFx6UbTrp0daekRFeCLqfz199TNXjl/zqA/PH/Xz1LWg7zPex9wEdx5UZ6mPcQUesRxyxHnTEOuqIdcwRa68j1sMDKtceR6wZR6zHHbF2OmIdd8Ty1NcRRyzP+vioI5an3Xv6Qs9y3OeI5VmOnv7LU18POWLtdsTy1JdnHfLsT3jq65Aj1oJfPXV+1VP3r3HE8rR7T90fcMTy1L1nHj39xH5HLE99efZXX+WIdbzza3MPRefuYBzy2ZTgow6LU/N+OOfAY2mjiaHHy5AaGeGZPPgO8VskS0V+ycuQVPmkLidqizg+Xafu1oT4fBphlZ37yCh9tzw6bhkwES8iuusKRBsSuBn94/cX0buiLQOGbdUIp554+QjVmFKtWj4yOsVnZY98Vpbks7xHPstL8lndI5/VJfms75HPesGnj9Oh42Xd2KmaDrX8nVaP31jKpSAmH6C1VcSxCx4uwLK0vOx1dNG3flXTycvpZZvhCHlg0Vw6lDeHNHzGfQy4xPbIorky5BDHywPY1PIS7e8tmk13rPOslqnsazb1oR+fb493dLLt41n/FWyj9AFQht8K831bHdtfRfw4f9i8lT8ejz0pagVR8V0W5uYe4xr0jjdLTFC6OgdtrqH3eSgV1quNIhb4pgLUjVowW0lx6JmqHrRp+al60CaWFVs+tjx8vzWW+SrBx/I2JOhXE9Yqkc7KpRu/hki3nDAyeo9eZZ3g3ST6t3U8iTqnXfHCGsUbP032orO3WQajfzvIwOd/r4I0Kl/LQR7Uv/2N9en2Av7vBc/684s0/yD4c/7QVovOQF9FMhj9O0EHfKb7GpE+FLxj215DcWsStEsoL+pedrRFPv99qkveufyN/lcS5b9SyICfj2/vIgPTLCmQ4TeEDL2d/86enUuJS2KlwCkKpo0o9Hupn4KltlykK6oxmLbX898nC3gOBR34XiJLF4O1ajX7B6X7I4bfCtr75aFUyNhyjR/nj6cUVEvRFnFFtbQbnx7Pfy/qqChnwekDpc3EuxiiJduhB9Z9xSEAD9NTw48YUsN0o1N8VvbIZ2VJPst75LO8JJ/VPfJZXZLP+h75rBd8GEsNm2K4p/PbJPpPgGPnq/Jw2klhXk8yqFlCtavP6NVs3xkij+pjo7NK8EZdckN4dkVZU1e6In91Pey2irJed5JlVdfpqbPAucnhK5LzUCqUbnIMvyXyUKfJ6XYtb70hMO9vR60gKr7LwtzcY1yqZYnhcvq7zhCYL0LNQ6lwHu9TxaD2qfJlkBdAHO8nxW/bqg6BLT9Vh8BYVudTHO7hvQB4c5lvE3wsb0OC/hzCUhcIW7l045eq3Yah0sXwBpFGXRuXFfyGML/WxsAdt3Mcsc4VWGbTfDFvHkqFlWW9keG3Qk916IQ3Sl0sGwPn/XwhS1vE4WQnxiGf8wUfhTXtiLXZEWuLI9ZWJ6wYbl3AWsBawFrAKollcdhmn0tx2H6+vPOrRkRF3+qhfKk9NZh+a4LPVI98pgSf1J4Z/jU+/K5ojxDytPxg2816UxfEn5vgg+n5tqAc0uGi53cNa544ese0d3R++aL3X4PvmL5nuDiPqGfLF8s8Ajwsrsqifux7v2/DLB/sp5iMhltUf5B+R+dXtdlF3yYhRrcyuITKYCvEqTIwefjbzp+EMricyiAHuXA8UVRvcsGPbWRY0CMe28iLOjLh0omS74wCfqgPlPnuAn7XAr976bYutLu889yj3a1Udof1le2ubL+7jJ2iTpSd8ixVLrBQp0VnxQwLesRrEv2toszL2jmXq9G/rGS5OvkTWa6oKy5XNZuo2qGUHWB55Z3ndphf5kWzr4iVw7sy5ZoLfC7XVyXK1dJjuaJcXK5G/+qS5Wq67Ee55kBQplyRnstVtd9qn2g7zG8nVxGW8tGpWWVVrqlNWkZ/IFGuamY/5YeN/vAA+GHUVZlyVasfZcuV/TCW65kUp1YZ6vpotTEv5aON/rgoc+7zs18okk/pzXlBc1uBGCtE+kBpM3q3ogDLcOI7nJhnlVt2h4OeAjU8rhJvEipX1TQH3n08Xb70Qojht8J8k6gz9dit68lTj2cIWcpUpW7NYh9MNYbLC8TIRPpAWJl4h3E5yRHf4ZqomSpve+UW+hHaooomxCMF5flyoCmawSzqXRhek+h/JtEKdRutsbe+QNBjzzgPxfm/gOLUihLzwdYR9cWto9G/o2TraLz70Tqijrh1xNWwhqBnfV8k6C8EGp5VugjiUlX6AuLTzXWw/eeCjxp9q9642p5cxh6VfWFv4HyKU6M5ZQtG14+ZEswP20KqLsXAuknZDuqmHbrbCdbL84lPyi/FkLIFnF2w2bARwEY+iJkIZ1j6oXrp77T0jXrpz7V88lbHGAwby7aCzdyFOrGgugqG3yJZKvI70VVYRPw4f9xVGBaytCkuhnuBjuMa4t1QAmvGEeshR6zdjlgPO2I96oh10BHLU1+HHLE87euII9ZRRyxPm9jrhGXpveR6xBHL0yYedMTytInDjlieftWzbnvZagyD6lc9bcLTf3nWIU+b8NTXfkcsT33tccTytFVPuRba7VOnL8/+qqeP9uwDPOaI5em/BtUmPP3EoLZDnmMYzzy+1hFrwa9+Z/gvr3LMwvw5t0HR16D6nEHtF+5zxPKsj485YnmW4yD2V7Mwfw57UOzL068ecMTy9BODOs/kKZen7gfVT3j2yZ8O41rPdvvYgMrlOa71LEfP+ug5hvGc9/XE8rQJrkNZ529cJ70Fnm+DeKS3W6LUOnaFtdu7xyFNAAzErrkOfXdGeCHM7WsEwh8v4BdDS8Q1S8jyrpUfeNmlW566PaP0Jgu/KzM2UWvapqvFJHseSoU71R4S421xuD6/iOJQLyZD/D2b5BuuKV8Z/SF+W9DzV3Fly2IyzLUFtHe1J4y/ak6dSByfi04WHi6g55v/jP4XOopXX8/g7uPlBfxQvtRJxpj+rAIs3OOGBwbeWSD7L4PsfLaLOlNEHYtk9N1OHTB5UuefTIh06wv4YF6xrO8Ic/Nq9L8u8qrqH9Ydw7G4CnVnTO3hQh3xHi78irMh6Mvsdsd9oXyqNu5vO4viUMfbKA7rFe8jVXv90O54f9cmgRX18OHEjZmTJXgifZl6nQs5uG58sGS9Pr2AH8qXqteYvmq9fkWB7P9nxXp9upBvEOo1lvUdYW5ejf6Pn2b1OvUVS916nZMMuZChbL22tFEPfLvueRBnuHjo7drOc5PoP52w5/PDfFlT+u2275xvKcW9v6l952dTHO6n5f36Fwo9oFx8FpvR/y3o4WNgg5aXQHL1aOsXK1vHvcNs66k95jFwWTxD0OO+c9NJm+i5XPBvxEKd8idCpqNhQY94/A3El0S7YPKhf7uQZD+nouwbhezqoGisU092FGw2iJ9kcTt1ToInp0U/M1xAb3j8tff/J/SV8vmop3HCNPr/TPgD5T+rfuV7rsiX0ul5FIey4+llhs2YPdbPF5zqL9ut/Nthvj/k9gbrxrnER/Uxyto/2tCnhjTuogLcuzq/bF9LOwWj7EvVmzPhXdX2nNsbtK9zKU7179X3K9yPVO0uysXjQ6NfA3pItTdO9rzM+4SQqm0/f9uC7QH7Q2WzqFNub0xHw0H7GcNrEv0WKANub/A7LD7x7ayKstepb++n9uZMoCszLkLcM4ne/EVRe2N4TaI/V+grIx5YD1BP3N4Y/QUJf6DGU6n2ptt4yuRROuXxlLpFS9VPo+uxfi5X9RPzz/Wz7HmqKd+KtsvtDfrD1Bf8ZxOfMwWfsvaPNvQuam9OJ1zEQrtI2SPWm7HOM9vjJQl7TNWzGFjnyn7V/IayRx7zoOwpezS6Hu3xZmWPmH+2x1ReY6haV3ksjraaskdun08XfNSJEnzKDaaNef3pobl0E4CRdX5tTQDH/xV0XvpIAsNvkSwV+Z34znCS+HH+rOyqnc28BJ5ZK4iK77IwN/cYxytqo0R3Gf1d52zmmhc5TKkL2yxYHF43soTicDZpguI2ANYrgY4D5xPzU/VsZiyrdRSHqyXrgTeX+aTgY3kbEvTLCUtdHGbl0o1fQ6RTV8bge2wpxgXvJtHfCy3F3VPFehhP6MHC64WcXBYWH4PZa82LQCbLehrDb4WePNsJT7Oc+HH+fDyNcVlKqEaDtBiWgmRIP0p/c+ldKdJxYE+zgd7noVTYyP0mDGrOmK0ph7hJipsGrNcBHQflaSw/sTbsprWCILC4HUW5lafJKQ499TTF4UlimykO7wvZQnF4XsxpFJc6ORU9++kUh56d17kt76/reBKzDfZUeSgXuIVV5b/Qbxm0fsvV9HedfstGep+HUmETewwMymOwNU1DHPdbNgNW1X6L5aeXfktOcehxp4E3l3nVfssGwup3v0Wli3+3RJpx+tviY+ixJSp9H7rht0JP3u1Erd9A/Dh/Vj/VDIOlbYu4UXjGOOSjRvsKi2+1Wl1S5h4PY+OOymSBGEMifaC0XFV5AK/udkPny5O0JstwSJt5k+jfJSYdU+ljKGP2J7ux69XslZtImf1qIUtbxPFleRMl+TiaagxXF4ihWtFAWJl4h3HKVLE12V7AezjoESGbqtG/L7GeMCLSxxHnZ7O5vPlad0yrZM1JVqYZIVmN/v0g6w6SFU2V++T5rCjzqtQ0yY60iVC6Shm+11Gc08SP81ev/4glzVpBVHyXsuJuNecS+rtO/3ELvc9DqXCaOmvYgppRHaE4nNXOKQ53nlbtP1p+qvYfsax4lLcZ4k4H3lzm04JP3nkeEvSbCWtapLNy6cavIdKNEEZG79UOSMRoEv2fJ+a9kBePKZT3WCnkVOMH9jQ17fWlZT2N4bfC/LKv42m2ED/OXz1Pg5aCXF5CqEaDtBheApIhPXcnc/p7lUjHwTTWJJm/1CnuaH2f6zyrPcptkjsH7JTPbov0Rqf4LO2Rz1LBxyy5BeluobixMD+vFoce60aKw5WGWyluncgXz0cpzA0JzI0iLpbdgdZcummgywp+Y2iId6zTaSGrlR16AO7Cqtq2JcEH0/OcIKbrNT9KZtWvwptyvj4ymyb+UzcS5IBrXXs+fv3A6Gy6p6i+4RndJqPSM9fFqnpuCz791jPXqa2OfBDrRqCP/1L3DGM5pdb3Ld2ZEId02CPANXC1B0PhG0Y3G1za0nkrskHjxbcu3AY2uLw1N/9lbXArxWHvcjrMlTO19o9lwPkq+k6tKF9Tnbyocd+0SK9k52/YtiZkjyH1DRv3XPth88izm/1sIfvBfRXKfmwdpkn0l4L9nE72gz20fuQ/Va+xJ2ejr1S9Vv6D02EdXVFChjOEzG2RHvcOcbpebUPJ3M02nkm2ofZt5YDL37EY/blgG99NtoH+k/f2oszcB6yq56WCT7/1zP27sxz5IBa3b2r/FurZykl9n7aN0p0DcUW3cOP+L7WXUeGXbd+2t3TeimzQePHe9mVggy8iG8T0KRtM7VHlPY5qP6Iqg4zkHi6gL9r3e71o31L1FffgsS83+psAs8y+XzVaTtli1X2/Kd6o5+0FvIeDzn+Rrdye0Kn6NhXzwzo1+lckdKp0lNJpt/3CvD8V88zf5G0WWKkrppROMf+bKf9G/8pEP2yrSK/6DtMki+qHIf0aold1TPVNuI7dV7IPyX0bnFu4jeJwboH3s+B6Bo/FcK8L72fBuYWc4tReF7X6fibFqW8PcG6hSXk93Hnocd1B7peZJtlQv1nBbwjl2lNcoR8lPtOOfKYTfDY78kGsSzq/aszGy9BV5w0wfWpsONYjnzHBh7HMJ8eAfSL+vsXofxDq9cc3zMVUV7SNwbvtibxyfUYsK7NTdUXeafX4Ja/IU7csqlUk/m4A44rKFPmo3ahV5RoLs/NOnVn8S2fu3L/zql07A4Um/X1pgYjriG57gWiZwM3oH79fR+8aghaxT1bVO5V8lvXIZ5ng0++pzmXEJ4d0ONx5Bw13UlPKMdzZ+eUp5QDDnV+i4U7Klebwt/FLbcew9EVbHIpc73vA9e6g7vA45RnzyTIiZlPwjeGWAhl+g7oqNV2j7KoY1gTJE5+tqzFCf1fku0XZrAVuelAGtfg/RnFlFv/j8xTF4fCNP07BYch6isMhxAaKU59CYr2z0KC/UbfRzt5TYrPBRJhfJtMUh/WHt7BPCVwrZ+ye96OpN/wWyVKRX6bankaYn796C+NYE1griIrvsjC/xDOQDN/xoGCM0tXZglNzG26uvL0Fta2FaygOTrmmYa2vugUHPwipsgUHy2qa4nCAydtmsMzXCT6WtyFBz5+xrRPprFy68WuIdOOEUdQKxXebBO8m0X8SWrb7C1q2LOgaxa2ryV7UurIMRv/pROu6DtKofKEdoP7tb6xPtxfw/0qH/zc3kLQ0/yD4c/7QVocL5F1HMhj934pJm0aYX5+VPXKvG217A8VtSNDydkO13QttkQ/x29gl71z+Rv/PifKfEjKkNrGyDEwzUiDDl4QMoqW4ZNfuwwXbknmcxJ6dS4lLYkrgFAXTRrRYs17WDtcO9a7IAmLObdntxLDzvpl9RVuyuRVsFfAcCjqMF8gWwmyrVrN/ULo/YvitoL1fHkqFjC3X+HH+eOpBtRRtEVdUS7vx6XGXfVFHRTkLTh8obSbexRDNeXc2l07NbOXwrmj6AhtCxLir89sk+manY6FWPNTuD2xYyqzs4xCFh1vqBGO16o/Df8MORIcOzuIqmK883Qnzswhw4z+1Q0itbBt9t5XGvPOsTkjiGTmcDuBVghzicFriHRVXaHmXgNGvTNjLOaE4jzFUPX0s7zyfytPH7un88uljG0APJ+H0sYsXTh+bf/rYmVAG/Tx9LBeyq/qGdWp7YgdNmV0IiHsm0asVUqQv2oVwkdAX+7OquxCelfAHp2IXwik6fewFp/r0sbzz3I/Tx3J4l7J/tKFnkv1jez5NPM9I8OS0yKfI/vmUCKO/MmH/akcl6mkVYRr9VQn7V7pM2X+3PkKqj8R1A2XHHQ+GzZg92v9lyv4x/2z/qbzGUPUkuLzzrE50PZ3i0P+yb1V93hzepewfbWhLxR3f/NWB0b+8on2p1dSy9pV3nqvuqttCcarvyuWo2pkY7ur8ctv1ypL9LZOrR3s+5adJ8mn5qn+b8p+pHXfKf6r2kv3ng4n+Fo5JzibZt1aUPReyq/qGdWpp4muIaeK5NcGT02K9LntLh9EfTbQ3askY9cTtjdE/UnG8nmpvuo3X+UsR1Au3RSh7arxudD3WzxWqfmL+uX6m8hoD6yY1vlftDfrD0ygO6wb3ZcrO83Qb338dTsCKoZ5eD30mA1kMW81pNenXaN7SsU9cmrXfMrejffL3v/an733hRffzcn0MVkaRRSz/J0ZnZciA9idhW8WPwcKZyWCBvyRdBHG3hlmMX+5g2JTsMNDloVQ40/KyGHCtbALhWl7UFCdOJfPuNkzPE/7G9x2gm7fD58mIzbLF8ErCM9qfJ90sBrwK9VluzzAsKx+MGwZZ3zlajw5tgXf+sv8wjF9O8GoSBvoUw2PbtbLDs5PYF0ExnbADfMdbmjD9aAFW0S5Me9ck+vdCu8O7MMeEfCk7RZnGKA7n11kPio+aj1Z64K0zmM7K0Gy45hJI6TNBDb8V5ue5zpLLOPEr0ovlr+ZBSkszSo/81HmtpusJEWdYtstzuACLz441+g93jIi/QI+Bb3VUBzKpUw5jnfg9qt9qaa5MOSNuO8zPO9sjrjPhVsOPjs7NyxjENUTaKzu/TaK/dmo23f9Fvgfbai4ftk37tcBjC0tftBDN/sXoPwH+hRfDVV/kSsAcK5ChKfjGcEuBDH9ObVk/ThEdIXlM5jyUC2WWjOvJnX2prP8yfK8l426ni7H/qnfqafZkGX+A8piu2yLOsOzr0aJD+Sxtk+j/lvxXm/KEPCwO5cV36L8+S/5LHeBX13+lfHw//GQMfGoJ6hb9VrdyVXwwvdH1aGMn0rdrpQ+bLP3Sevyf5L5nDNiefJXak0mI474b+lY+VHI1tCf/Su0J+mOzmYlQbENq+3WRTw8h7SPUZwrjBVhFfWA+ndDon0r0gZUPS32JNC74ZQX8lY+1PBdhBfHO6LH/zSdUtYl2iaAdEbzyUCpMGhZ/0aZ8bI91aZnVhWUi0uLw1A8+zX0F0F8LdBx4fgRljrbyCZqvDgKL/TXKxpjK5m4nWsuzKsc20eJpmqyvWwtkMFz82uumzi/f87BpbBZ/Zed5hHhVLNvlXH4YuPxYdxxU+ZlcsfyyjbO4TMc8Uc98ggf6ZJ57UmdPR32ddYr0pebfLJwKffH8TDd9WZzld0ik4098+JSYPJQKr7D0K+ulf9DSr6qX/hDPyX0M6tv5pA+e48P6y+NmXJPk9DHwOMron9HhGW3hKrAFTm/2MELpK9r2czPCC0GPWwy/RbJU5Jexfowf54+3uq4RsrQpLoZdQMdxDfFuKIF1wBFrryPWjCOWZx4POmIdccR61BHLU/ePO2ItlGM1rOOOWJ42sccR66gjlqf/esQRy1P3nrbqqftB9V+etuppX4cdsTzL0dO+POuQp3097Ii12xHLM4+D2pfzzKNnf2JQy3EQ+3LxeZUTVgyD2s/x7GMu9Ce+M+qQp5/wlMvLvuLzSiesGB5zxPLUvWcfYC88o/5sDg7XIHi92Gj/kOaBa86VXcxzUYaB2GtrYmeEF4KehzP8ccHP5GqJuDL7R8+64Hv/6LPtn/zDjNKbLPyO95ipz9fVnF6PxwV9v9objYfHxIDzrmspDvcnmgxxvvVskq/m8QHfX0Z/iN8W9C8Duipl0RZ8Wo5YkzWxJsN8X2j1UO234DUeta4Wy/Hq8bl0aG9cN2uuhV5Ytm4avtccudq7kpojXy1kaVNcDLuAjuMa4t1QAuuAI9ZeR6wZR6wHHbEOOWLtdsQ66Ih12BHL0yb2OGHF5xVOWDE84ijXSiesGB52xHrUEcuzbj/uiOXpCz3r4xFHLM9yPO6I5WkTnrr3qtvBOY+eNnHUEWtQ/YSnXE+HPtNCm3bqdO9ZH/c5YnnlMT6vcsLylCsGr/6Edx6Pw3MWZseHah7Nxvj83dgLO2NttWevwvj2mTxeNQzEXlMTOyO8EPRY3fBT+8taIq7MPNp53/3J8//gEyP3ZpTeZOF3PI+m5lRS82g156kuUPNoPFeG82hrKA7n0UwGNY9Wc070gjL6Q3w1f8zzaL3M3bccsSZrYtk8mmofxzt/4zwa7/1dJvKD82i8//zG8Vmaa8fnYqFNFu3JjoFvc24n4iYFZuR91/jse/RX9o36tRDH+/dXinT2N75DW8c04xCP9LeDbm4h+cbhGfOJ8nF5YbqI+fLxYrplCTosl9Teb76dCedH+Tu+buUyEebbF3+HhHO4DfGO68uYyO+4SMdtB7ZlFfxNu2zbYfitMD/PdeZ5lxO/Ir302O5OZJQe+ak6YrpeLeLYbw0XYFnaJtHv7diN6qsU7aVHeVW/J9rjAx3ckQJ581AqXNbjdwkvVWuNFdJf02M/aIK/a3gMfNVhqrPY/+Crh9CXpPoibZGe1yfwezluL8aFDKo9w+8xn1oylw77TVnBr+WD36XWvMwPxV/rk3eOw75iZt8Nr9qxZ+buG2bu2jOzr0ES8EkZfHnKOpJIBZOSD4sfob/5tO02/T0pcLrxHC/ADqHnVbXpst6WV9VqXiaUXFXD/LG3nazHL88oPfJDTJPHdL1exBmWuioCsSwtXxXxZvK26ylPyGO9kBffobd9E3kSlJd7y0rvbYHbFulZR2zbMfRYXo2y9mj4rdCT/Wcp+1B6UfZhaVW5sv7LlmsKK+UPyuhP8TnJ5Tw96OVs+Vtfj19eprxRHtP1BhFnWOqaFnVlDF+R8h7yO3zNFPLYIOTFd+h3fol6eShvpMtDqTCidF0h/Xep67MqpP9uS4+XvlUpazXiwx7Sb47P4mJ/Q51YEcN1nV++7uhH1s6m+y3y+ThKK+MnejslpPxJYYbv1W9QJ6Sk+g01/cXSMu0lysMjdNZt/Gf9zuECLJ7xNfoPUf1ln4s8Uv2cGLD+vp9sqN8n03yn8RkX6bh+1bS/RWXrF/fLa9bnZL9c6UXZO+92wzjWf1k7/XbE6nf/7CTYX2n/fqrsr8f+59Iy5Y3ymK6nRBy360XjwqJrFP+B/DuvJCEPtbtbXZYa/fvfJMaF3DZVHReqE+K69YO+OK55lu0HGf0V0A/6col+UCqPqROu1JgoZTdjQnal+0mK8/RHrZJ8yuQnxedU5idVF7AMrk/INUVY67pgvZiwMP06ihtLyFz1BGBMnzppeKpHPlMl+Zys/KylOPxKhX2XKrt1CRkwPV8ezpd9ql/jw++Yj5K5m49ctWQ2DaYr8pFXdn6bRP8s8JFrO5hKz5z/VF+i5pdCpfsSfLF4r30JZRepvkTNuZ4TfYlucz2sa3U9sGHZ9btl53qM/oxOWXvP9WymVZ6TVU8mHPkg1o3Ep6g+nk/1cT3ElamPRr8B6uNFJeqj0s1YIj94mjTHpfxyqq5MJeiVrat2nG3dMGKweodXTffDrxh+K+g6kYdS4YRfyYlfUb0RlzFfPLP3wouefek3likP797HOjXcpcgU5Gf6QH9zuihbk2gmBI8Y2H7WER2Xu71n/DIydaPtFq/qzQairdovwfRjBVhFp+1a+fCJ9Zd26rk6bVfVT7Sh7Ym8TlC6iQLZY/xIwfs8lAojJq/V7dESfIt0hqfoF+nsqh50xmOuujrjPIwEPZ5PzTfyF+LoG9n/1duZmf1VWf9n+C2Rhzr+T+2MVb6/t52x2WcySo/8EJN1vU7Esf8aLsCytNx+v5z6VdwXRh5lxyPf3LF4knbPWPn0Nm+WfaZbf+lu6i9NQRz3l1AOXvMYhf7STuovpeoZtzfqN4Ry+sP2iMecalymxrZcZ5oCMwY+idbod3fy3uMuc3mjB57WwOWC/ntPhTGpKlOj//qa2XT7E2XK/QAs09Q4LuWf2gl65V/UmmJq7NPbGLK8Lzf8VtB+KA/lGFre1RhQ+aqqfVnD/QxkCOXv1pfldKovu7SAR1HdY7uaovfd+rJKpiLaqn1ZnOfkuQC0xZR9qraJTwiv2Q/Mue43gp6XYN23QcYy/UbeH8D4PG+Nt3so3dwI8Uj/A9DPvLaz8UOVxbIC+UIoVxbqS49+rw/yzt0xRz6IZbpVe0nivzyUCp9Va5UV0v+sunGmQvqz1M0EFdL/turHV0j/W6ptr5D+mNr/VCH9y9Q8TIX0Z44QfcX0z7D00/XSf97Sb66Xfrul31Iv/fss/Wn10r/Z0m+tl/5rlv70eunfaunPqJf+SUt/Zr30maXHG++rtE2W/px66Rsm7zZ8KWQyfPOrZwF9Fb+KvFqEVVH2LCU7ysd+fBvwwzwWYW2riDUi4uqUydmhOF+IP56QheWMYSfQ9ZLnGPY4YcXn1U5YMTzsKNeEE1YMr3KUq+2ItdQRa5kTVgwPOMq13BFrrSPW1IBirXTE2uCItckRK3fEmnbE2uyEFcNrHeXa4oQVw0OOcp3mhBXDqx3l8mo74vNWR6zTHbHOcMRqDCiW9e8nBDbPWTUEn0aCT2o9pQE4ak7IvtvheYgY8lAmZF33gfwLzYGn9q6izLx39d0wB/5vNAeO6W0+R+l6rPOsvujmkybwi26ex+Zbtk2upxJyIR7rqyHecTkreZqUj1dPzMrS7DyPAE/kn4dS4RxVvoalbjSvMFY5B2Wy0KB3iO91MrGqY0r3lvdFQpY2xcVwP9BxXEO8G0pgHXXEeswR64gj1h5HrBlHrIOOWJ76OuaItdsR65AjlqfuB9W+Djti7XXEemRAsTxtdb8jlqfuPe1rnyPWw45Ynm2aZx3y1P2jTljxeZUTlnceH3fE2umIddwJy9J7yTWofRNPX+jZz/H0E57+a1D7hVaO42Gu7QZ47nGsNoT1AeXEd4jfCvPrkddYDWWoM1aLz7xnSfFRY8KM0neTayzMzmF09n9dOnPn/p1X7doZKPDRZpcWiLiN6LYXiJYJ3Iz+8ftt9E5lDbGjSt+8epZPfG/TEQ/QFERN05NbMA1LTfPwVEvVKbVxwYexcNuUOuDP8syf8eahVLjS0o/WS/8ctW2tQvqre9yadEOPW5Ou6HFr0lVlPh+oefDpNWVdoeF7fT6gDqBNfTq2SsjSFnFso6sEn1WCT1vEHXHEOuaItdsR65Aj1kFHrD2OWDOOWIcdsfY6Yj0yoFietrrfEctL96pdGxRb9ayPjzpiDWp9fMwRy7MODaruDzhiefqJY45Ynj7aU/ee+hpU+/Lsm3iWo6funw5+4nEnrPg85oi13BFrYgCxYrjXUa62I5an7lcMqFwrnbBieMARy9MmVjthxXCfo1xe5egtl6etDqIvjGGXI5aXrcbgVY7ecg2ivrxtdakjlqeP9vRfxx2xPPtf+xyxPOcUPPvknmMFz7lH7t/b3DWua+H6DR8BYvTndjpfI2G+DVeYf78udcRMj8eLXJcRXgh6LYGPHFHH+LREXJkLPy/6wqE3P//7zvp6RulNFn7HS6Hq2J7UsUY1j4u0Ox7n6AePhowBbWSK4nD512RQF37WPBrk6jL6Q/y2oL8d6KqUhcLaXhPLLunEz9Ss7pyq9dZF8IxHyNnaa5Pon9Gp++o4NHWUMtx/Oe8IOZRpktKpKyVi4DXGGPKgw1MUDM90vljwQp+ItM+BfF+/ca6svN5pz82C/CwjORmjSDe83o95P+1P//vif/3lH2r+xp8/uevg185+6x9e8cT/8a7ve8vHzn3uYzf89Y994WrO+1BCdpWvVQX5ahTkq4xuJgQ223zV9m5cyDwu0nE7U/My4omy7Qy3JTXbzOSRd0ovPbajS8r63pNx5N31nTrYJroYbiUeVY68u7o9V/Z+HXln5dNjv2lJt0/DXtqexUXdmq/HtCgHH3n3U/Bp2G0dTPUJFpcvtzvYnsTA7SdfFss03BYZ/R3gk3dMzcVcIvKc8jNrgAfzjeGWAhlmqC9c04/IvVisV9QD98ljeGHnd5xkZFz8DSFtx+qyey9/Veaye+yfXA80XH5Tgv7GBL06LhrrE/dV0J+tL8BC3tsTvDd24c3HxuJn+hsLsJD3dQneeRfefEUFftZvaXs8Xun6Ho9XurnH45Wu5cvsb+9MjkcdHibfaWObojr3os6v6WsYZFpD8g1DuoZ4x20Hph8GOVCuX1s2K/ujFWW/qgDzg+1ZzNeQf8soT3koFW6y9EP10r/afBrvuUXZeItyHkqFNZgnC6oPZ/gtkqWuT1Rb0zF/vO9wWMjSFnFcRlXtDuOOOGGpsh8EuWI46oj1GkcszzzOOGIddsR6xBFrvyOWp74edcR6rSPWQ45Yex2xPHV/0BFrjyOWZx4fd8Ta6Yhla1BlPp/CtqFCW1r68ykez2T1+J1ou4eIH+eP2+5FQhb1+RTP0yo+qo+QUfpucjl+PmWQq4lue4FomcDN6B+/X03vVNYQGz+f4iJAOjO/YcLOQ6mwoaz5GX4r6CLPQ6mQpaql+qrR8r5YyNKmuBh4a89iwWex4KOwHnbEOuqI9aAj1l5HrEcGFOugI9YRR6z9jlgzjlgPOWJ51iHPcjzmiLXbEetRRyzPuu1pX55yeZajp1yefsLTJjzL8bAjlqe/N796sqY0q/ZpUnlUSwqOXV0TcT3R3ZgQjXEz+sfv19O7oq6uBVZ7fObdE6xOVrcq6l5n64YEr3GRzvJlXfHFJHseSoXXZYRncuI7xG+F+Xmu0xVXZqj0og65tLRtEcdfjy8RfJYIPm0Rd8QR65gj1m5HrEOOWAcdsfY4Ys04Yj3kiPWwI5an7gfVVh91xNrriOVpX55yeZajp1yeftXTJjzL8bAjlqfuHxlQLE8/sd8Ry0v38XnUCSsGT1sd1P6EJ9ZCH2ChD9BPv7rQB1joAyz0ARb6AN2wPPU1qLb6mCOWp74G1U8ccMTyrEPHHLEGta0d1L6JZx49+9Ge5eip+6eDn3jcEesBJ6z4nDtiec3fx+dpJ6wY7nXE2uWEFZ+XO2KtGFC5vMrRW67VTlgxeNqEZzmOOWJNOGK1HbG89BWDp19d6oQVg5f/8vbRg1qHPP3ESics7zx6+oncEctT954+x1Ou3BFr2hHLK48x3Ocol6ePvt9RLk9f6Glfnm2HZzl61kdP/+WlL+9y9GwfjztieY5r9zliea6Bec51eM7BeO6NsnkTPjXmvM5myB73F77B9u+14GUW5mKP1sTOCC900uM7xB8X/Eyulogrc1rdV6665n2v/4sv/F1G6U0WfjcE+PHfmKBX+yBNV+gbKujquDqtDi8gjwG/zB+lONwDazKo0+rGaspXRn+I3xb0fFpd2bJQWNtrYtlpddgvsLpzsvYLnyw+KSx1gp3Rmz6GBT3iNYn+2R2fFP/eOTWXn/pUL4h3Q0Qfww2d33ERx74Ky7WCfTfL+ir2RzX97ol91i3ix/mzck35RlU/+OSwXupaP7D62O4sqtrutEJPtpOl9IL547IcE7K0KS4G1r9qk8YEn28XLKz/qW8pypSr4oP+cDHxWezIB31Bi/i0HPkg1o3EZ9SRD2LZSXHcj4ghD6XC9/bYR1pteVwtIvl0OGVTePIc2wGe1Mhlh6ekcV8VT01De+bQoL9RD1GWmzbO4jKdhQnBp0x/NVUHh4T8ljeUGU9ifGBS88RTCdG+sP+K9D8Bp3w9OFmcx6J9uU0hewx8qqHRH6AxE851VLBDeaqhYfXYzx4oGy9rx5bXyO9NNe2Y+8ZLRD4sbkLkQ/l6Hougf15Ccdj2T1Ac+sHbgA4xY1Bjez5xcTiRL5RvqASf1KevQ4JPH/vPS8q0MYh/svvPPfYpx7Mw3xbU+Jfr1ZiIYz82HNJjafZjP9FxQJ59suiD3zo5V/Z+9FmwfHqcuxrv1k79DLVToxCn2imTg28mfx20Uz9H7RSm5/LluoRtYQxFcxjDgKtOXGX5fhHG3XxisMrz4oTMaHMhzLd5bluN/l3UtvJpyXkoF1TbalgTQddhlL/q2BTTc98O6wn7yZr5K32yl+G3wnw/UsdPjhO/Ij8Q39lpqp1jBa7atePuS3bs3rv/vpkhhA7ze2aoFUTFd1mYm3uMa9A7pruC/t4u0gWBHeN77PVV7pmxNWHPjHvaeA79K4GOg+p9WX5irX7r6Cwu07GsWFZrKA57X2uBN5e54mN5GxL0SwhrXKSzcunGryHSsWcYEelye/iTW7/+l+9tv/XIoSfed/TZZy7f8e63/tmX/uEPPvor7a989j0P/tl3scxByFy0cmHx6tdk53c8OzTuiDUhsEw3uFOrQn1YXtaTGX4r9FT/TniyNvHj/HHelwpZ2iKO/dNSwWep4KOwFjlhxXDrAtYC1gLWAtYpwOIZEPS1Foft1HWdX+upp86AVefEL0rIh+mNrswhqDXbm9J3IBm+1yGoE8SvSC89tt9LUu0pYpo8qj3l3WI2ehsuwLK0TaJvdoYcnnYddfYUzWioflCZckbcdpifdyufk233OL7CmY/xZZpn0V1JPPNh9Adh5qO9bK7MauYjFOgAbSgEnacRkCGE6vU15uF9G2b5YL4sD4bLMquZEbtXSc1gNSgObYFnW4vKaIrKqAFxqoz4PiujvwPKaEPnWd1nVebeRcWPbWi4gL5B8hn95o5MuCtEyTdawE/N1sVwVwG/04HfvR1+yu7QjxoO5iUPpcJyZXdYn9nu1Ex+6kDIbnbKtoh2yjuBhgQW6pRnJC39cND13vCaRH+hKPMydh4Dl6vRP7NkuTr5E1muqCsuV7XLCunLrOioHWFq9apJWE2BhTrlcu1Wlw2P69bzEuWK7W5DyMXlavQvKFmu9tyPckVdcbmq9hrpy+zcQ0yTW61YjlAc+kTmo/w36rtMmas7srnMrxFlzn1/9gvd2pcQ5s442478zozzDft27ZnpTDkHCqkp4vi8pECMZSJ9SGBhmpT7xEn0orshhoOermT3afQ3CZWn3G8MypQtPzZUqFllSi9aGH4r6O5BHkqFrKxb46m+VDVLdclPganGcEWBGJlIH7pg2d94RUiZ27dT3k2pynoXRS0H3s6H9DOJlqPsGr7RqxEy9nqMXuV/guIw3WgBH2zRUF/cohn9fSVbNOPdjxYNdcQtWtkZdKNXI24c1fOtfUspHxinZpLKVkNzr+zqMK0aWan8NnrIL9sX6ncpxRXNpIQw1xaMrh+jYMwP24K63V7Nphi9ug0d1+y514pNKNsJlj+vxHTrdaVsAUeOPBOi9gekRkBqbyPaMI/Kjf6NwgcY5pIueSvj77CbY/KofXXs79S3scoeja5He1xyqn0T+x+0M94fqPYA8sgP9Y17jJR+Wdaq3wFietzzirL/L2BnH98wl1+3fblFtvuzJ9F2TZ6U7S7sG58NqIey+8bZHgy3yPcpm0dbeoBm1ftwe/FpGeGZzPgO8Qf59uIYHgA6jmuId0MJrIcdsTxvCX7QEcvz5lXP23g9sTxvcT3iiDWoNw573uy72xHLsz563qrsaV+e+jrkiOVpX4N6+7qnTQzqjdaedduzPnrWoWOOWJ718elgX4cdsTz7AHwtIfaX+VrCqjtHMH2ZVa3UDdwqj32+ltBE3EJ0NyZEY9yM/vH7LfSuIWgxWDHhMINVpVYtlGrVML9oYReH8DjUe3Hnt4+3gb81I7wQ9FDM8Af5NvAszP/kaVBudD3miOV5+/AhRyzP25r3OGLNOGIt3JR96mz16XBTtqfPOeqI9XTQveft1p559Lwp2xPLs27vd8Ty0n18HnXCisHTVge1D+CJNajttqfuPfsAnj7asz8xqLa60G6fujZtoU9eDeuYI9ZCn7wa1kK/8NTZ1yD2C2Pw1Neg2upjjlie+vL0OZ66P+CI5VmHjjliDaqPHtQ2zTOPnn1fz3L01P3TwU887oj1gCPWvU5Y8Tl3wophl6NcnutDnvpa6oi1whFrtSPWZiesGDxtYrkjlpfuY/Cq25710bMOxedpJ6wYvOpjDN/p9hWfxxyxJhyx2o5Yg1ofvfx9DJ7tkGfd9mo7YhjU+rjSCcs7j55+InfE8tS9p8/xlCt3xJp2xPLKYwz3Ocrl6aPvd5TL0xd62pdn2+FZjp710dN/eY6tPMvRs3087ojlOdexzxHLcz3Nc/7Lc17Oc99j0VZ23IeMe5f5+H+jv7RTGXu80uFH+3gt3I9mhBc66fEd4o8Lfr1eR/rH133irr/4tZ/blFF6k4XfDQF+/Kc+4U0dDlrzk+m3DPh1pG8poz/Ebwt6z+tIX1wTq8x1pP3+1sDqsn3KfmWnLkc57EiBky2LfR5/zQDI0vnCPtwwALLYUQQvFbIYv25Hp5itKtlTB9lyvqp+jjQk+PTxu5XRsv7+2+G7lRj4IORe2v0FrAWsIiw+2sLw1a/x4XfMRx2T0e36rsMrZtNguqIDgV/R+eUDLK9cOZvuoQ6mOhoOZVR+IAv62zuu98OAizR8fZfRHwNfztd3DVOeMZ8sI5ZnU+QrBu6/G/3rqP9e8xpAeX0XH4uDNse+vibf0idUnqrrB6tdq8WWiFpBVHyXhbm5x7gGvWO6y+jvOtdq1ezJ52YVit7ipgGbD2faDHGLKW4LYL0S6DhwPjE/EbPKtVpYVtMUhyOTzcCby7wl+FjehgT9KGGp0YSVSzd+jVDcKzEMlS6G14s0nq1JP67Z6sMlf5NlvdGpuuRPXfNmadsiDg8ywzjkkzrIDrE2OGJtcsRqOmJNOmHFcOsC1gLW0xhLjSBSs3ov7/yq2Y0GyVd1ZgbTG12ZQxBr+vWxsu2I4XsdgqhmmVOHIKprPNsUFwPbh2qvxgWfBawFrFOFleonlqmfig/6A6tXJ9tf4RgSZ13+cYXmWXRdD8+6GP1zYNblCyvmyoxy4cyo0gGvOqk89XhI9Vgc61S5wknZFdLf0fllu8K8K1soe73bv1EZNSBOldEdnV++Z2QLlNHXaWYMZ+v5hAMcL6f4sQ0NC3rEYxvKOvLF8kldHTZcwK9opvDKAn6LgN9JuDpsUtkd1udeD21LrRZ3s0W+igh1zGOlIcEH9V3mKiKlX57JnRT2wH1Ato0i+ZTenK8iahWIsVSkDwksTJPKEk48lrmKCKd4WOVGv0aoPFVkMSxcRfRtdxXRZQViZCJ96IJlf3e7iohblZSKlarMWxW1Krx2bvRnCpMu4zFDmO9ZUjNuKE/qKiZ19cFwAZ+iy/W4RTP680u2aMa7Hy0a6ohbNDVDoHroRt/tOgmuanz5M8ahjqtcjhpD2auIuKem7KWRyG9KP8q+sNyWUJwapStbsHf96FVjftgWUmUbA+umLeixvHk0hN8MsZ1g3eMbBMterqlsAXui/1iwno24aAu8vrwYsFRvjq9zMfqrhQ8wzFaXvLHO1b427Obw/iHsYvA1RSg7rhYZNmP2aI+jyh4x/2yPqbzGUKa3zXtVY1A2t5ji1OpcWbtJXeOCeyhsf4Wqm9aGW3dtkvKRh1JhfUZ4JjO+Q/xWmF8H63TX1LVmypdY3pcJWdoUFwN/36euQ1sm+Cishx2xjjpiPeiItdcR65EBxTroiHXEEWu/I9aMI9ZDjliedcizHI85Yu12xHrUEcuzbnval2cd8vSrTwfdH3bE8vTRfM0G9mf4mg3Vd5hM8MH0kyWwUmMalcc+X7NhIq4juhsTojFuRv/4/Tp61xC0GNRtmmWmDlKbC9QnSSfr1s4+drFfmxGeyYnvEH+Qu9hZmD/cGZSm4JgjlmeTfsgRy7MLtMcRa6H7+Z1hqwvdz2pYC93Palie3c+nw9SFZ932nG7w0n18HnXCisHTVge1D+CJtdBuL7Tb3y5tx0K7vdBuL7Tb35m6H1RbfcwRy1Nfnj7HU/cHHLE869AxR6xB9dGD2p/wzKNn39ezHD11/3TwE487Ynlt+YjPuSOW1zx5fJ52worhXkesXU5Y8Xm5I9YKR6zVjlibnbBieDrofswRa8IRq+2I5aWvGDx94VInrBi8fI63X/Wq2zEMan1c6YTlnUdPP5E7Ynnq3tPneMqVO2JNO2J55TGG+xzl8vTR9zvK5ekLPe3Ls+3wLEfP+ujpv7z05V2Onu3jcUcsz7HoPkcsz7Umz/kJz3mTPY5YNtfBxyf/XudbqR6PnTyeOpCux8N/jmeEFzrp8R3ijwt+Jpc6YK7McfW/s/WSN/zcS3/kuozSmyz8bgjw0R8ivdojaLrCcU8FXb1GfTZmvNVx9fz5I+4NNRnUcfUTNeUroz/Ebwt6Pq6+bFkorOtrYtlx9epKhIkwvy6xPajPDVsJmYcEHz6u/sOduqyOZT9Zsthx9R8dAFnsuPqPn0JZ+niNR+lD0dj31fTxJ/Y7l/0cNOWHVV3kQ6t6qdcLWAtYJwPL8yDedihuU/gT5hjwIKwvrZpNg+mKDn66o/PbJPrXr5lN99UOZpkjS9inZGHuEQ/czlp6PCIeafiIeKP/N/DlfET8KOUZ88kyYnmq63ti4CPijf4/qc9c83BkeUQ8H4WiPptP+eHUNT2q/HrMQ1710HI+2G0zxPFB2Vsgjg80Pw3iMorbCnEbKO50iFN10UKD/kYdRVk+vW4Wl+kC8cQynKY4bBs3U1wfroI5p4xPQvxBvwqG56wG5cq8RxyxHnTEOuqIdcwRy/OKwYcHVK49jlie104+7oi10xFrUK/pPOKI5VkfH3XE8rR7T184qNetevocT5s47IjlqfvdAyrXQ45Ynjbh2Tc55ojlWY6D6r887cuzPg6qj/bE8rSv/Y5Ypnsbp6tLqDKKQz7DCT6YfrggXXzG+SgeNxlNDD2O8UufNMyXOC2uxy95iZMqn6qXOPGRsmXHplXlcjyaxkTcRnTbC0TLBG5G//j9NnrXELSIrU6v5CmqqjfjYvrUDbyjPfIZFXz6OO0yXrYKnapplx5vqx8r41JRHnVfDldLq7JFB7XzFLHRv7Gzl6Yd5lfXuveiRJ0dXz2XrujewG53Vjyxeq4MiyGuQWnRzfNptm9ZPZvuh+HZThqPNq6WObmOVl3mbIh8Kz6jPfJRyyCMpXQWwz2dX17eeFtHN1GHRScADxVg8hKGOg5LTb8bfbcTu1mXWDcmSvBGXXK70K4o61JBj1tS+NgwlG9pRVmvO8mytoSs44I3+37MVz+6T4bfEnmo4/tTevmmYJ3fajfy8pngqBVExXdZmJt7jGvQO6a7nP6ucyPvMnqfh1Kh8uIWH3K3GeLaFLcFsKreyGv5iV6syo28WFbTFIeLkZuBN5f5UsHH8jYk6CcJa6lIZ+XSjV+qdhuGShfDG0Sa1GGEZWptDDwImXTEWiawzKZx83EFm15Z1hsZfiv0VIdOeKPlxI/zx3lfIWRpizj2MSsEnxWCj8Ja54i1wRFrkyPWuBNWDLcuYC1gLWAtYJXEUpNxyygO20++wVjdHplRHMqXuuEU048n+Czqkc8iwUfdB5UV/Boffsd8lMyWH267MT9VPyrB9MsoPzj7c2PnN8ryn6s1Txy9Y9o7Or9Noj8EmxOzNcV5RD1bvljmHu/QGY/y8h062Mdhu1H1B+l3dH5Vm80boLCsDaNbGYytmSuPukdtsZCH71HbAWUwQWWAs3N8/nu3SfMdRG/lVHb2z+iXd2SKtHxTKqZfUsAP9YEy313AbzXwS90rZ7x7tLuVyu6wvrLdle13l7FT1ImyU56lUrPBqFOepbL0w4Ie8ZpEv1mUeVk753I1+q0ly9XJn8hyTd0XqGYTVTuUsgMsL9NJO8wv86LZV8RCnZYp18UCn8v1gkS5qllzlIvL1eifUbJcne7+k+WKuipTrmpxMdV+Y7maTtRHx3x7sfLRqVllVa5oK+yjjf65iXJVM/spP2z0Fw+AH07doafKNXWHXrdyZT+M5co3VqtVhro+Wq3KpXy00V8typz7/OwXiuRTenO+sXppgRgrRPqQwMI0qSzhxDyr3LI7HPQUKKvc6G8UKlfVFOVZ2EdSfh9J1WaxD6Yaw+UFYmQifeiClVGcMlVc4Und+Iot9BN0+zWaEI8UlOdTPX+jt+pV1LswvCbRvzLRCnUbrbG3XinosdqbPCr/KykO0y0p4IOtI+qLW0ejv79k62i8+9E6oo64dVwFcQ1Bz/peLehXAQ3PKuHxKqkqzUd4dXMdbP/KTtXoW/XGG4n8dhuVsX2p43MmRLrUTInR9WOmBPPDtpCqSzGwblK2g7pph+52gvWyzLFDZW0BZxd4Nkw1G2gLRUdUqJEP5o8/W/1B4QMMU+3RQD/f614WdbRHas+Qskej+3a/jd3y1CZ61JPaA8VtQTe7Sd1+jaMs/nR8SuCqNt/o1wFWgzDis93a2CT6n0nY43ohQ2p2Y4OgXw80Js8EyYBpJ0Q6OyZJ2aPR9WiPE8oeMT9sjxshriHoWTebBP1GoOEZflxtXkdxayGOP61GvlMg+0vbc+lwZ0ZW8Guy8juWFbH4SIZljnwQ6xbig/UdZ9zfS23+WohTwzgrEz6i6+Mw4/7faMYd03M/1+L+O9Sz/7GxOL3pcoL+Vv4c+xd8dLDKJ9KvKcjnB0DOj0F9CEHv7Omx3rVVvVsLBFzvlF9E+jI+Cf0i9z1wx0ibsFSbgjbJPtl0NBx0GRhek+g/mpilwXZ6Lck+VlH2smNISxvL4l86DeBEmO+LeOfOWsFTlVVbpF9bgKX2BbMvxXJsCN6K3myiGeb7c+TFx339OZTVhzdqzFAgQ7tA5uEC+imSweg/lRhDKz+A9r+eMI3+M4Bpx3WVxZwswPxcoq+h6ile01ymPcXy4r4G6nETxaHs3C5uAP5MO0H8MQ7tnPmGhLzcpnaTl9sbi/s3aK/+ufM8QngVfXUjVVZnCXnLllU7kT/GsnTNMN8eU3UE9fHVNRpzUUXMfxVtuuqr3Ab4/1bQH4mB+yMxsF9Gn4H18L3UJ0H5l5L8ZrdPlZyPMqze2vrsr1Rbj+O6Mm090rNPWCfo0ZZS7Q2PB7H+8Yq6GouWbUsnIK97lnTPL+LeGXR+i/wwl7vRT3QKtOyYL6VzzzGf8p/KHo2uH/aI+Wd7TOU1hqptVN0x33riU3auoNsY8W7q2yEfrgPdyr1IF8MF9OzXjX4z2Cr3bXIhQ+r432lBnwuZJ8L88pimOEy3roAP1kvU15Vhbl6N/ixRL5X9553nHsdek8r+UUds/5shriHoWd9bBD1+jWM6aRM96l756mmKQ9vkuqH8Wdm6YWmjHs4nX122DcgElpqPZF9t9N+T8NWqDqbsv5s/4jlh1CX3QTGdlY2yVaPrh61ifthWc4hrCPq6vqFN9KgnZavGs1tfYFWJvkCqbMv2faz8cL13HcWpsVxKrikhl9pVMpXgM9EjnwnBZ1ykywp+jQ+/Yz5KZtW34fyo8llXMj/rKD/rHPOjZO42p3rb2tk0Rb4N03J7Z/T7186me3nnWc2Jst2UtV3eGrIOdKB89nWQ/xD60ecMi051n5P7ldjHKTNniLaHbafRBJKxH/rC+sz6SvnBGMqMX7BOmA7U/PAkxaG9TREfr/nXL453l38ykd+qczFl+wDocw07hO+sPgDbwjTEcR8gNYel+qTKX3IZo3/FcuE1K6M/nug7KjtI2U0u6DFfJo+yjZziUPZU39HJhwy03fAYSPUdy9pNaq4Q22hrv1P9XHtWZY30jQKcTYTDdjcK7zEd9zctLgC9sjsui+ECesPjsfdPJ+YZprvIwF+Zb+4iwzTJYPQ/K2RI6T8GdTpG1vkdIfyK9aaZEZ7Jg+8QvxW0feShVMhYf8ZP2UEMfIoHpk3NKWQUh3y2CD4Ka8wRC/uWPZTXFtYHBos7DbBzitsK9NdT3OkQdwtgcGjQ35ifaNcf2TiLy3QsK5bXaYDPNjYt0k4L7FNVH6br8UvWB/ZJMVStDzk8L9SH+afxDFp9yCHO5FY6CqG0jkrVFyybCvqfLltfDN+rvijbU/XF8ndaPX55nLMdDfN9Fc7doO6Qz2aSodfy470FiH2yy6/m/oJk+an+t2f55YBRpfzUehDPo+Rhfn5ykR+1F9noUv28MuWk+ORCZjXHiHN/n6O5v80Qp+aIeO7P6L8Mc39/Q3N/OAbKw9w4tC28lovzbHQ9jh0bauyYAwGPHacxcSgua9Yf0qP/4zJDP8FzeTj/lBMfNS82BO9S80+4z+A3x7X8GeBuFGm5biP9ZiGH0VudwyvKkMbSNon+X2EsxVeUKZtFuXg+xej/PTGfYnxDCKXWRrcKevQvJs9EmK/nrRRX1Kc37BDm9xksfxZXpV1QdQLzw3UC+0oNQc+6OUPQ45VhbPdnQNxmwuL6FcOVAisl66YeZOVyxLI6g7CMFu0S88N2afTjHVvstm/AdN6P8sc2u0z5q7FAWZ3ymAb1eBrF5RC3hfgo31u0vsG2gj7kc9R+pU7tUN8cqm9alU83Oit/mytbD+XPe3UnQU7l968swNwkbCqVh9QpCt2+mzR6tb63IpEO56tHBK/cHp5KB8Oz7xUXC16Gy9/0ngF6un6jliVjeboEdZJVRvnEbyur9HkzwgtB9+kNvxXm66JOn159T6rs3vK3qh6/TdinRzvCPj3qDvlYealvl7APfCHVB1XHUt95GP13T82me2YBZgjV+2soz1dH5+J6f1Nv+VR1t8w39RNhfpnw2QKrID8NQc97p4z+eVA3U98y+Xxvn31JtYv4XTS3i6nv52Pgslgj6PGbetNJm+i5XIrsC8ua++HqfIeVAp/Pd3ghlAF/y4Tf0q4i2ccryq6+w+J6zHWD67G6ijp18tISwGoIjDs7v3wKzw2JtrXbvkK2iW7fOZs8E2G+znmtX51spOqL0fVjXRbzw/Wl7Fn6KTtR31OqvWpLKA7tkedKsI+G5wJ8tON7+SyY+Bt1lod0WPc7Mx9/3qf+4VN8RXWAvI72gP8DFzUn/8stV2/vF/7HF//jVz/64Z0/3C/8/3fkusuG/rc3beoX/k989ZpnvXbNli92w492/ATcAID2g+msb8PnEOShVBhF+S2ovpvht8L8Ol+n71b27AW178DS8txmDLcCXZEvU/V7AWsBqwoWfisYw49Dv/uNdDot1iM+6yMTsmQJWTh9DFZH8E44PstgkciDxQ0n4hYn4kYSca1EnDr7xOKwr3MjxY0LzJivt3cmUXgcG0MeSoUvmjw4LjDfFgjXdK/62mo8pcYjqwlrTRes6wgL068hrLVdsK4nLEzP38h3+w7sxYSlvnE1rG7rBXwqPKa3tDweO68TEcvrHSAspuGyjOF1hGe0/7WDYbaEe8EqtHOB23fE4nN7mA5/Q5jfHsfAfgGxXk581N7+HvM3VkZOxG+RLHX7DWq/ovrmgc/bwbS87zoGbiPUHmh1Fs8C1gLWqcJS33r06keK9lGjz40B5y7/kOYb1DfkmPaOzi/73tXgyz9GfSj0G7wvHGXm/pHyF+sT+V8i+PRbz/24tawtsG4E+vhPnTeGvvSOzq/af7+R0hXtXW4EvYbf7ZuRjYTRzQY/PaXzpmwQeTWJ/uvQj/8s2SCmZxtE++R56KKb7IrsE8vsDqJX5/kom+XvNj4v5kwzSq++BYmB1/OM/h8Tc47Kv6XmHFNn3yl9Y5753KUhgYX54TlXpVN17gDr9MuJeeiGSD8OPC1uJcXhPM5qisM5kDUUh3OQaylOfS+r5rFXURyuz3FboNZdov386LrZ993qYQx3dH65Hj6VsC3lO1LnOuWCfpPI90SYb085xaW+T8ohjtuh6c7fqIcc5HpF55e/IVncyVi39SanvWmjp/r8hrzzrPZwcz1XPiOHd1zP1XkhucDn80KWQRlwPUc/MU2yL6ko+yohO7d7XKc+negncVuzIcGT0yKf4VCtDV0v9JURj7LnmBj9JsC8t6Ctx3yl2ppu56byGULq+znVJ8L+omEzZj/OOMb8c/1M5TWGur5S7YXiPXTqe1K2A+RT1v7Rhv5wai5dv/rOLy+QBzFGgq6DeSgVSs+pGH4rzNdNnTmVbmXB/Rc1RuQyj4HHvFXHYgtYC1gnG6vf56FwHxvnbXE8ey31o9V+JUx7R+eX58c/BHMq13ee1Xi2zHkwPc4Zl15rXpgzXsBawDp187z98H0xlJl/VHMDgzT/WOSvD5aY91DjAR47/Vfw10fIX2N6nntQvjw1N1nWN95B9GquTM3N81zZsYpjwtT8o9E/nhgT9nv+EfN8quYffzAxL7FEpB/0+ccGxeH8I/ebcP4R7cfmH9WemNsIg8fKGDcMcXyGHd7/xPs2RyBuKcXhnsFJisM9MXz7Op6DwLeC4x7SFaCHt5MesMybhIFzEYsTeR2lOKxDiygOdTtCcaijMYpDHzdMcVgmLYpTt9PaNxvd/HEMd3R+2R+/O+FjVBuS2mufC3r+rj0Gz3noMucI5yBX0Tz0exfmoU/Enap56PfXnIdeV1H2hpBd1U+sUwcTY8syfQ7EXUX0qn1UfSFuHz+S6HOo8XSqz2H0f3QK+xxqDeAUnX83dqrvNrM8tcN8f8hz1Op+ALYD5FPW/tGGbL6m7ncBP/qhc7d/8cX/vLHOdwG4D9fS2VwNylOhfH8P5beg5moMv0WyVOR3Yq5G3X2I+eNvOkfr8ftARumRH2K2iN9YPX4NXp/gson/rJ85XCCLpeU7V75Mfb1xkYa/OYqB5yowriHeDZ0iLHWHKeoRv4/6PO0FZx3noVS4iPvlhoHYNW3hJWXrluG3Qk+2fqJuqW8RMX88ThwXsqjyuhfoei37RwcUa68j1mFHrIccsTz1ddAR64gj1n5HrBlHLM88Hh1QuR50xPKsj57luMcRy7MOPeKI5VmOnrZ6zBHL074edsR6rSOWp90Pqs/xzOPjjlg7HbGOO2J56suzb+JpX4PaL/S0+0Hty+12xDrkiPV06MsNqt179k0W2rRqWIPalxtUX+jZl/P0hZ7l6KmvQe1/vcoRa1D7X/scsTzrtmcd8tSXZzvkWYcGVfee/stzXm5Q54Y87cuz7zuofcxBbDvic8sJKwZrOyYKsPFZrY22EnwyIXND8ME9CuOdd7hWZDgjYb4uKqxDlb7ryPBbJEtFflmqfNS9x5b3JUIWta+Syyq1Tol8FFbTEYv3XjQFllr3yyg90it9jYXZ/Y/7991z3z37Dl86c+f+nVft2hkoNOnvSwtEvJnori8QrSFwM/rH72+mdw1Bi9gTYX7RDBfIHQAP33ExYfpmgk/WI59M8BkX6bhqo+lUqGpnla3aht8K8/Ncp2orU1V6sby3hCxtiothF9DVcb0Yd8AR66Aj1iOOWDOOWA86Yh11xDriiPWoI9bDjli7HbE8y9FTX562uscRy9NW9zpiDaqf8KyPnrofVFt9zBHL0yY8bdVTXw85Ynn6aM8+wDFHLM+2w7MODap9PR38Vz/aIevL49HU+CnucrquahHENShtBjybRP/4htl0q+hThwx42/MI4WWh0pjmnIzwQtBjKMNvkSwV+Z0YQw0RP84fj6EaQpY2xcVwP9BxXEO8S2EddcR6zBHriCPWHkesGUesY45Yux2xDjliHXTEGtRy9LRVz/roKdeDjlh7HbEeccTytIl9jlieNvGwI5anvjz9l6dcjzpieZajp1yD2nZ4lqOn7j3rtmceH3fE2umIddwR6+nQbnvW7X60tbauhuOxEeKjxj5DCT6YnsdFmC7r/I6QfPach1JhKCM8kxPfIX4rzM9zBX5ZSv9KL7ymiGnbFBcDf9qr+GSCTyawUnI5Lk2biNuIbnuBaJnAzegfv99G75QqEFvdLDYieFlIqbZdkD6G8QQfZfY2DTMadPXj5fOq1Q/TW5zik/XIJxN8WK9qOimGezq/fEPcE50pJDw5pCH4IVYZ11Jzyb70bhxesu/Vtagl+5RrGRaysD3E8DKg47iGeJeyrYYjllNTsMj0sUhEKl2xHtGurqc4PGHjFsDg0KC/MT8R/yMbZ3GZjmVFGzO5VV3mbTFV6zKmHyrAUjcnxnAbxCO9nXzTY5mercqU7WW4JnbZ+p06ZY3rPm9fykM6/K+XvK31/bftOK9qPTL6xYJebe8xXdU8febMceARiLfFqW1gFqdOu4vpzyb5FteUr4z+EF/5R+56lS2LyaDbmRjwxBrEMroAMjUhTvFpEv3vwvLL++nEOW5D7N0fJeiygl8lM8pj71qCviHojfeooLc43E2JekUa1BditSAe6T/ayTvfpI7p24I/1plQIHfRblHGaoh3Rh/z+aENc/NQs++S9XID928+65znLHnp6Y/164bvJb//29d+9n/uPr3OSV5qa2ZZey1q92K4vfPbY5sypPxYKJ8+K9Pe1fThT5Vt7wy/FbRfy0OpcKI/O0L8OH/cRrXq8fvPeJqsnWhaNKZC3SEfbssaIo1q5wwjpj9v09x81BwH/GePNvgfvAwdAy7//x0t/y+GOJ5K4j4g0v8TtD//AL7VcC296QvHvItFvP1t+h4StPis+gtKb0hv5VV0UuYw5dXovwxj0x1TGrPs9gmj/5oY7xqmOnVP1RmjT51chvKor2jGKB3Kjm06v1PlkxEtyhDD7UKmor9bAqdIhhGBo8Y3LZJV9Z+x3qROt8R683dQltZmjQj+/RzPZhSHebsZ6DioMSv2NT9BfcYgsJR+eNzk0Xbb+0Xwnvk2iHaYaPnrH5Sxl/4w9y8WCRns78UJ+TPCSZ0+zvVN/ZaVNxPyqrakVz6I9ZLOb49t3rrUXGssh/UbZ3GL2jzVZ+A2b3rjbLpNnedubZ7Fcb8thpfCO/bp3A9CjBh4ft185DDgI80I5cnoT+/kA9s25UMMK+b9TNLnCMSl2pEm0V8O+txG+kR98adg7McD/D0KsiBtDLcX6OAZIMcFG4t54Ti1KI8R41kbNR3KgHSMUbddU/0rrrtl+ldcVzGd4sH+uKjtNtsY6xKvThgO4t2QoB8pyG8QvFtdcBcLHOXfWxSXiTj2PZhf9Fvc50C/gH5rfaK+ZGFuvkYpXyOJfGUiHddzlH1xQnalP/QfdecQXv+5p/78TUfXfqFfcxTf//aDPzD+rF/99X7hv2fsT17wu28feXmVORArZ/WJLNuWmouN4RaIR/rbOuXR4xxD4Pwov5Ean/FcKMt/fYH8+8B/v4LqhRqfqDpT1P4uKimL0d8N7em90J6GoMcPPd400FQ3DaBf4/6u8rfqEwOj7za2NJ20w3z/yrzV2ibqlPs0pqPhoMf3hsf2sAvKgG8CUb7Z4tRWGNUW8jqrWh+LND9I9apm/3ax6kdY4DVKzKP6rJvXPfnUdIzDsuT5fgxqDGl5jTK/qcS6p/IPXF/VvEqqv6jqneEPWr0z22+H+eXC9lbWhov6c4of6gHbarPhojl5rNM45vohGiMMQ5ya02J/avS/CL79LeTbUcdsD8pPsCwhlNuvoMby4yKdlUuP65mLsHxRTnyH+Gr9uc5cveqbpubqa/YTmtzGIj9VDkuD1qmaz+exoprvSY2TUv5E1T+um2oeQbUhqfGc8cY58zL9JlW3MC23k78MdesDiX5TUd8oBD0OYPqU70NZle5HKU6N/e15LMFHyZU6+UjJhT4Z0zLvbnko21Y59REXqbYKy4TriNJL6kQkdRoTnoLFdUTdTlO1bRulONXGd2vbPlDQRmE+0P/x+FbVMWz76o4Pv3frf1mz7iMPjvdr/Lmoue4n81+946oq40/lV4YIF/XA8+0x3ND5LbPOXbPtLL1vk9vOXte5y7adqr/ObQHOs/C+JDUHo24AO1lYamzCZVmzn1C6H8R7FmraTnLPgmrf1PiKx43Y/rD+e/ncfxCxsP6n+sdlylXxUX36fq/dFd3468FHHdGg9hz3ykftX1brsjh++zK1jWo+DNMWzYdNbZpN97WNc2lM9n+FfugQ7aPBPFeoyy01Jreg5j7YblU/0OKwb8P2gX0b/hZkAmTAvRAc1HyK0UV+z980i8t0FlCXZb6H4X2mGeHx3LHRL6by4rX4PJQLau7YsL6TbKFOeR8sUd6qjFPfDfDYJjU2VXNyylcW+TfEVz7pNsJHfaTWyFSeLS2uvad8F9s+0m8A37Vt01wZ1ZhW+WB7320ePbXGbWl7vNV1jO0Zg7JnrgfqFF32baoetCGOfeJSiOPxDAZVR0wPVXwil6Pq62C7xmM+te6O7aXlr+4e4gwwTSbLO8rF31hgfWrSu5p7ak/oTu0twf4Wz70Z/fM2zcVRe2DUeMPo1d75huCrvrMYq4g1QliLe8DCeQumX1xTLoU1TFjqGwzVb49ld1GnbE7mOvPl1FeoOS48ZevMr4D24IXUtzrZ68zXdvgvrDOfunXmW6EMTuU68wGqV0/XdeYq/eSFdeb55XIq15kPFLRH3daZj1B/ru4685vBtz9Mvn1hnflbYWGdeWGdOYTq68w/CnXrXYl+08I683yfvLDOPEv/7brO/K6CNgrzUWed2dq+/x+pyeBEvtQEAA==",
|
|
3970
|
-
"debug_symbols": "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"
|
|
3969
|
+
"bytecode": "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",
|
|
3970
|
+
"debug_symbols": "tb3druTMcWZ9L++xDpgRmRkRvpXBwJA9siFAkAxZ/oAPhu99KoPMXNXds3NzV+33RL0kdcfiXz4kk1Hkf//2f/70L//17//857/+29/+87d/+l///du//P3Pf/nLn//9n//yt3/94z/+/Le/Pv7X//7tGP9RpP32T/qHx5/9t39q40+7/vTrzzj/1OP6s1x/yvWnXn/W6892/XnV06ueXvX0qlevevWqV6969apXr3r1qlevevWqV6969arXrnrtqteueu2q16567arXrnrtqteueu2q1696/arXr3r9qtevev2q1696/arXr3r9qmdXPbvq2VXPrnp21bOrnl317KpnVz276vlVz696ftXzq55f9fyq51c9f9Sz8adff8b5ZxzXn4965RggE3TCo2QZx0o8apb8y32CTfAJcYIcx4RR2QfIBJ1QJ7QJfYJN8AlxQTkmzMplVi6jcgyoE9qEUbkNsAk+4VFZBsgxoUyQCTqhTmgT+gSb4BNmZZ2VdVYeA0nG9hkj6YQ6oU3oE2yCT4gLxoA6oUyYleusXGflOivXWbnOynVWrrNym5XbrNxm5TYrt1m5zcptVm6z8hhiMnbBGGMJY5CdUCbIBJ1QJ7QJfYJNmJX7rGyzss3KNivbrGyzss3KNivbrGyzss3KPiv7rOyzss/KPiv7rOyzss/KPiv7rByzcszKMSvHrByzcszKMSvHrByzclyV9TgmlAkyQSfUCW1Cn2ATfMKsXGblMiuXWbnMymVWLrNymZXHGFQZ4BPigjEGTygTZIJOqBPahD5hVpZZWWblMQa1DSgTZMI1ulXrhDahT7AJPuEa3VqPCWWCTJiV66xcZ+UxBrUPsAk+IS4YY/CEMkEm6IQ6oU2Yldus3GblMQZ17IIxBk8oE6481DGa6iP5dYydOjbdGDsn1AltQp9gE3xCXDDGzgllwqzss7LPyj4r+6zss7LPyj4rx6wcs3LMyjErx6wcs3LMyjErx6wcV+V6HBPKBJmgE+qENqFPsAk+YVYus3KZlcusXGblMiuXWbnMymVWLrNymZVlVpZZWWZlmZVlVh5jp7YBfYJN8AlxwRg7J4zKfYBM0Al1QpvQJ9gEnxAXjLFzwqxcZ+UxdqoNqBNGZR/QJ9gEnxAXjLFzQpkwLpbKAJ1QJ4zrJR3QJ9iEcQk2lievEQfkRWJCmSATdMKoPJY5rxQT+gSb4BPigrxcTCgTZIJOmJVtVs6LxrGCedWY4BfkdWIdMOrEgMe/6mOVx/jq+X/ZBJ8QF4zxdUKZ8KjTx5EwxtcJdUKb0CfYBJ8QJ7Qxvk4oE2SCThiV+4A2YVSOATbBJ8QFY3ydUCY8KtsxQCfUCW1Cn2ATfEJcMMbXCWXCrCyz8hhfVga0CaOyDLAJPiEuGOPLxgqO8XWCTNAJdUKbMCrbAJvgE+KCMb5OKBNkgk6oE9qEWbnOymN8mQ+IC8b4OmFUrgNkgk7wCeNfjX0xRoqPVR4jxXVAndAm9Ak2wSfEBWOknFAmyIRZ2WZlm5XHAPGxPGOAnBAXjJPUCWXCKDhWcJykTqgT2oQ+wSaMymNNxyBKGIPohDJBJuiEOqFN6BNswqwcV+U+BlEcA8oEmfCoHGVAndAmPCqHDnhUjjrgUTn6gLhgDKITygSZoBNGnbEYY8ic4BPigjFkTigXaN5pyiBZlPeaY5HGIV2ONsgW+aKYNA7ri8qklv/bWLJWFskiXVQXtUV9kS3yRTGpL0dfjr4cfTn6cvTlyAus4zGYuuW/9UHj347b7D6O2ovqovFvy9hnI+IvskW+KCaNo/iirDe2rue/HVvX89+OZXFfFJMi/+3YkjkbcJIs0kV1UVuUjrFuOSdwUjrGWuaswCDLaYGTsl4MGv9WjkG2KP9tHTT+rTzWyPLG/6SySBaNeiKD6qK2KB06yBb5ouWQ5ZDlkOUQXVSv7WzSFvVFtsgXzX1kedyPPWParj1jedyPvWBqi3xRXNvZ6rGoLJJFuqguatf+sNoX2dwL1RetfZRjJvdMjo/cH23toxwfuWdyfOTWaGv79bX9+tp+OT5yL/S1j/raRzk+ci/0tY/62kd9Ofpy2HLYctjaR3kUjxssy6P4JFmUSzC2QR7FJ7VFfZEt8kVxkedRfFJZNBxaBumiuqgt6ots0XCMm1TPoz0pj/aTyiJZpIvqoraoL7JFy1GWI4921UFlkSxKRx1UF7VF6WiDbJEvikmajj4o641tpXVRW9QXZb0YNOqNW1HPEVDHtsoRcFJZJIuGY9zfeI6Ak9qivmg46liPPO7H/Ybn+WPcZ3ieP+pYghwLbfyLPH+cVBe1RX2RLfJFwzFuJjzHx0nDMS7fPcfHSbqoLmqL+qJ0+CBfFJNyfJxUFskiXVQXtUV90XLYcuR5ZtxFeJ5nTiqLhqOPvZXnnpPqouHoY2vk+WjcTHiej07yRTEpR/JJZVE6xnGVI/mkuqgt6otskS+KiyJH8kllkSzSRXVRW9QX2SJflI7H3oocySeVRbk/6iBdVBe1RX2RLUqHD4pJOZJPKotkkS6qi3KZY5Avikk5ak8qi2SRLqqL2qK+aDl0OXQ56nLU5ajLUZejLkddjrocdTnqctTlaMvRlqMtR1uOthxtOdpytOVoy9GWoy9HX46+HH05+nL05ejL0ZejL0dfDlsOWw5bDlsOWw5bDlsOWw5bDlsOXw5fDl8OXw5fDl8OXw5fDl8OX45YjliOWI5YjliOWI5YjliOWI6YjnIcB1hAARWsYAM7aKCD2Aq2gq1gK9gKtoKtYCvYCraCTbAJNsEm2ASbYBNsgk2wCTbFptgUm2JTbIpNsSk2xabYKrZMhDF98kABFWxXkD2wgwY6GAvbARZQQAUriK1ha9gatoatY+vYOraOrWPr2Dq2jq1j69gMm2EzbIbNsBk2w2bYDJthc2yOzbE5Nsfm2BybY3Nsji2wBbbAFtgCW2ALbIEtsMWyleMACyigghVsYAcNdBBbwVawFWwFW8FWsBVsBVvBVrAJNsEm2ASbYBNsgk2wCTbBptgUm2JTbIpNsSk2xabYFFvFVrFVbBVbxUaWFLKkkCWFLClkSSFLsv2kjInOkh0oExUctjFpW7IVZWIHs5WiJToYCzNLLiyggGmLxAo2sIMGOhgLM0suLKCA2AybYTNshs2wGTbH5tgcm2NzbI7NsTm2zBLLPZRZcmJmyYUFFFDBbFEpiQ3sYDaqSKKDMfFshLkwG1+y7epYFa5WlxMdzApjx14NLycWMJteeqKCFWxg2izRQAdjYSbBmMku2eJSxkRzySaXiQbm9j3/WSzMMX9hAQVUsILZqnMkdtBAB2NhjvkLCyigghXEVrFVbBVbxdaw5ZiP3Fk5uiP3cY7uCztooIOxMEf3hQUUUEFsHVvH1rF1bB2bYTNshs2wGTbDZtgMm2EzbI7NsTk2x+bYHJtjc2yOzbEFtsAW2AJbYAtsgS2wBbZYtmyxmVhAARWsYAM7aKCD2Aq2gq1gK9gKtoKtYCvYCraCTbAJNsEm2ASbYBNsgk2wCTbFptgUm2JTbIpNsSk2xabYKraKrWKr2Cq2iq1iq9gqtoqtYWvYGraGjSxRskTJEiVLlCxRskTJEiVL9MwSTVSwgg3soIEOxsIzS04sYNp6ooIVTFtN7KCBDsbCM0tOLKCAClYQm2M7s8QTHYyF2Zo3ni2WbDCaKKCCFWxgBw10MCZmy9HEAgqYtp7Y50LWMx/GKbSe+XDiqJD9u9leNFHBCjawg2N5xwOrkq1GE2NhtsteWEABFaxgAzuITbBlA+14VFayBWliAdOmiQpWMG01sYMGOpi23NTZ0pcdzdmGJCU3dTbxXdjADo66kpsvG2ol1yJbaiUXJ5tqJW3ZVnuhgAoOm+TiZHvthR00MG25vNldK7k42V87Oi5LdiiJ5uJkj62mIrtsL2xgBw10MBZmx63mMmTP7YW6Ds9zzJ/YQI5fM9DBNQrrOeZPLKCA2BybY3NsjPlsdxLNbZbNuCfmmL8wVyj/bo75CxWsYAM7aKCDMTHboCYWUMBhG4+2SrZDTWxgBw10cNjGQ6+SrVETCyigghVsYAcNdBCbYMt8qJoooIJpa4lp64kdTJslOpi23FCZDxcWUEAFK9jADhroILaKrWKr2Cq2iq1iq9gqtoqtYmvYGraGrWFr2Bq2hq1ha9gato6tY+vYOraOrWPr2Dq2jq1jM2yGzbAZNsOWzfvjEe0DO2igg+scm11eEwsooIIVbGAH1xk9e7weN4eJ6yydXV3SchRmPlzYQQMdjInZ4TUxW8klcW3ffqw17oeDsfAc8ydme7omCqhgBdfe7AVbMdDBtTe7HGABZS3DOeZPrGAD+1qG8wc1JzqIjTHfGfOdMd8Z850x3xnzXdex05UtqWxJZUuebf65DJUtWdmSjPnOmO+M+c6Y74z5zpjvjPne2G/nmD+RLdnYko39lmP+QrYkY74z5jtjvjPmO2O+M+Y7Y74z5ntnv3W2ZGdLdrZkZ0vmmB/Psku2wk3MLdkSFaxgA3PdchlyzF/oYCzMMX9hAQVUMG25kDnmL8zrhxNjjcIc86O3oWTD3EQBFWQPBXso2EPBsR4c62cSDLTjANceskNABSvYwA4a6OA6HrKvTkabeMnGuokVHHVHO0fJ3rrH/FSigQ7GwsyHCwsooIIVzKu2FJ+zByfGwnP24MQCCqhgBRvYQWyKTbFVbBVbxVaxVWwVW8VWsVVsFVvDxpzj2aV3IbaGrWFr2Bq2hq1h69g6to6tY+vYOraOrWPr2Do2w2bYDJthM2yGzbAZNsNm2BybY3Nsjs2xOTbH5tgcm2MLbIEtsAW2wBbYAltgC2yxbGdP4oUFFFDBCjawgwY6iK1gK9gKtoKtYCvYCraCrWAr2ASbYBNsgk2wCTbBRpY4WeJkiZMlTpY4WeJkiZMlTpY4WeJkiZMlTpY4WeJkiZMlTpY4WeJkiZMlTpY4WeJkiZMlTpY4WeJkiZMlTpY4WeJkiZMlTpY4WeJkiZMlTpY4WeJkiZMlTpY4WeJkiZMlTpY4WeJkiZMlTpY4WeJkiZMlTpY4WeJkiZMlTpY4WeJkiZMlTpY4WeJkiZMlTpY4WeJkiZMlTpY4WeJkiZMlTpYEWRJkSZAlQZYEWRJkSZAlQZYEWRJkSZAlQZYEWRJkSZAlQZYEWRJkSZAlQZYEWRJkSZAlQZYEWRJkSZAlQZYEWRJkSZAl2Ugpo4m1ZCflRAUr2MAOGuhgLMw7lAuxVWwVW8VWsVVsFVvFVrE1bJkl+dA4uytldMCWbK+cWMEGdtBAB9N2vnPiAAuYthTnHcqFFUxbT+yggQ7mU/BxmX/2W15YQAEVrGADO2igL8zUyG6A7LKUfv6vClawgR000MGxzbJJLrstJxZw2MbPDks2XE6s4LBZvvsj71AuNNDB3GYl3/hxgAUUUMEKNrCDBvrCnMEwTRRQwVyLmtjADuZatEQHc5v1fEvJARYwbfk+k7xDubCCDeyggQ6mzfNVKAdYQAEVrOD8YY6crZTjYYicrZSSmFcVFxZQQAUr2MD5axw5uyovdDAW5lVFObGAAipYwQZ20EBf2NnznT3f2fOdPd/Z850939nznT3f2fPGnjf2vLHnjT1v7Hljzxt73tjzxp439ryz55097+x5Z887e97Z886ed/Z8sOeDPR/s+WDPB3s+2PPBng/2fLDnY+35s1OynFhAARWsYAM7aODa8+Uc85EooIIVHPvCj8QOGujgWIvxI0w5eyIvLKCAClawgR20hTm6x2+JJbsfJwqoYAUbmGvREg10MBbm2f/CAgqoYAUbiK1iy7P/aCST7H68MM/+F6bNEgVUMG25h/LsH7kD8uw/mhMkux8nOhgLz1cGnVjAYYs8Ss4XB51YwQZ20EAHY+H5GqETC4jNsBk2w2bYDJthO18slNv3fLXQiQVMW26z8wVDJ1awgR008GHTIzf1yIcLRz5MLKCAClawgR00EFssW3Y/6lESCyhg2jQxbT2xgR000MFYWA6wgAKmzRIrmDZP7KCBDg5byUXPVxVdWEABFaxgAzs4bBnm2VU5MW25dfL1RRcWUEAFU1ETO2igg7GwpiI3SS2ggApWsIFpyw2VbzW60MFYmO82urCAAipYwQZia9jyXUf5zrdssLww33d04bDlKTQbLCcqOGx5LswGS81TXTZYquSGGgEy0cFYOAJkYgHzRJXUFvVFtsgXxaQcwddL5Q6wgPk8I0kX1UVtUV9kv82302XFnpibwRLr+XosyXbFi/qisQ1qki+KSTkSTyqLZFFKPLGCua0jsYO2MAecHomjwmhnkfNtYBeOCpo0CozfOMv5SrALHYyFObIuLHOTqCzSRXVRW9QXxdqIOWSul/rlguYy5ZC5MBc0t0UOmQtzSbPYfBWYrHeByXoZmKy3gcl6HZis94HJ+fqvC3Mtc0HmC79kvfFLsifwovGvcy/kwX9SW9QX2SJflJLEPO4vHJaz+DhxTlRwFK25Ny2Pm9yFfoCjQi67y9owrmAFG5hlc2+6gQ7G2uA5ki4sILbAFtgCW2ALbIEtli37+yYWcNmyv29iBRvYQbsO9XzD2Hn4ZivgheUACygL8zxVcxFyMF1Ywby+SOqLbJEvikl5uXtSWSSLdFFdtBy6HLocuhy6HHmOGi1Bkm8MmyhgrownVnBsxJpbLgfchQY6GAtzyF1YwGEbTRmS7XoTK5i2XN4cjBcaOGwt90MO0RNziF6YwZ4ki3RRXdQW9UVZMY+NHHktd2eOvJbLbxVsYAfHkrbz/aAOxsIcpRcWMC+0klKWWz5H6YUN7KCBDsbCHKUXFlBAbIEtsAW2wJajtOcmy1GamB15EwsooILDNp5QS3bkTeyggQ7GwhymFxZQQAWxFWx5qhyzsJIdeRMdTNvYr9mRN7GAaeuJClawgWk7XwabtnE4Z++djvlAyd67iQIqOOpabr68TM3Zm+y905yRyd47zbmX7L2bGAszAi5M2/kmWgEVrGDacnlz3OcsQDbcaU4uZsOdei5Ojvu8uc2Gu4kCKljBBnYwbedbcn1hDvYxZS7ZZTdRQAVTkYt+npRP7KCBPod8O4MgMU/MFxZQQAUr2MBRN2/cs5/uwgyCC/OyIrdkBsGFCo66eeOe/XQTx1rkPXH20010MG25DJkEFxZQQAUr2MC05XGWSXChgzExe+8mFjBPNSUxz8w9cV0H9MNAB2PheW18YgEFzOuAmljBBnYwrwMs0cF13dfPi+YTCyigghVsYN7i5GrmVXMk5pi/sIACKljBBua+SEWO+QsdjIU55uXEAgqoYAUb2EEDfWEO9NEZLtllN1HBXItIbGAHbbw490h0MAbmATPG/MQCysDc82PMT6xgAztooINpGwMnu+wmFlBABSuYez6XzNjzxp539ryz55097+x5Z887e97Z886ed/a8s+eDPR/s+WDPB3s+2PPBng/2fLDnY+357HDzPDNkh9vENt7oWBI7GOsvjJE1sYCyMN+IO/qDJRvNJnYwd2EuQ74Z98JYmG/HPbJYvh/3wrELc9ooG80mVnDYciooG80mGuhgLMw35l5YQAEVrCC2hq1ha9gato4tD/ucg8rmsZqv5c/msTrefyfZPDYxFuYBfmEurycKqGAFGzhsktvsfH/1iQ7GwvMt1icWUEAFK9hAbI7NsTm2883WR2IBBVSwgg1MmyQa6BP9fH31ifkXNNHB3NTjkMt+r4kFzMVpiQpWMBfHEjuYNk90cNjy9iH7vWpGUPZ71byvyX6vicOWZ97s95rYwA4a6GAszJdbX5i2XMh8wXVOZWS/V81Ji+z3qnn2z86umifs7OyaGAtz8F5YQAEVzGK51XNsXhgLc2xeWEABFcxiuQNyZOWNcTZYTWxgB/Of5crneLswFuZ4u7CAAipYwQZ2EJthM2yOzbE5Nsfm2BybY3Nsjs2xBbbAFtgCW2ALbIEtsAW2WLZssJpYQAEVrGADO2igg9gKtoKtYCvYCraCrWAr2Aq2gk2wCTbBJtgEm2ATbIJNsAk2xabYFJtiU2yKTbEpNsWm2Cq2iq1iq9gqtoqtYqvYKraKrWFr2Bq2hq1ha9gatoatYWvYOraOrWPr2Dq2jq1jI0uCLAmyJMiSIEuCLAmyJMiSIEuCLAmyJMiSIEuCLAmyJMiSIEuCLAmyJMiSIEuCLAmyJMiSIEuCLAmyJMiSIEuCLAmyJMiSWFmix8oSPVaW6LGyRI+VJXqsLNFjZYkeK0v0WFmix8oSPQ5sBVvBVrAVbAVbwVawFWxnVHiigApWsIEdNNDBWHhGxYnYFJtiU2yKTbEpNsWm2Cq2iq1iq9gqtoqtYqvYKraKrWFr2Bq2hq1ha9gatoatYWvYOraOrWPr2Dq2jq1j69g6to7NsBk2w2bYDJthM2yGzbAZNsfm2BybY3Nsjs2xOTbH5tgCW2ALbIEtsAW2wBbYAlssWzkOsIACKljBBnbQQAexFWwFW8FWsBVsBVvBVrAVbAWbYCNLCllSyJJClhSypJAlhSwpZEkhSwpZUsiSQpYUsqSQJYUsKWRJIUsKWVLIkkKWFLKkkCWFLClkSSFLsteqjoc7mr1WdTyn0uy1quNzNZpdVXU8xtFsearXd7oEVHAoxhMQzZaniR000MFYmIPswgIKqCA2x+bYcoiMZx2aDUsT28RsQqrjWYdmE9JEAbOCJY4K40mFZhPSxA4a6GAszMP+wgIKqCC2gq1gK9gKtoJNsAk2wSbYBJtgE2yCTbAJNsWm2PKwH73lmk1IEyvYwA4a6GAszMP+wgJiq9gqtjwBjidMmn1DdTxh0uwbqpa7OwfDhQY6GAvzVHdhAQVUsILYOraOrWPr2AybYTNshs2wGTbDZtgMm2FzbI7NsTk2x+bYHJtjc2yOLbAFtsCW43g819NsXJrYwA4a6GBMzJamiQUUUMEKNjBtlmigLzxHtydmhUgcFcazRc0upokGOhgLcxxfWEABFawgNsEm2HIcj6lrzZanC3McX1hAARWsYAM7aCA2xVaxVWw5jsfjVs0mqYkVbGAHbeH5hbeamBVaYlbI3ZJj/sIOGuhgLMwxf2EBBVQQW8fWseWY9zxgcsxfGAtzzF9YQAFH3ci9meM4cvPlOD4xx/GFo8J4sKrnNxYvVLCCDeyggQ7GwhzHF2ILbDmOI3dLjuMLG5i2HGQ5ji9MW65xjuPx0E3P7zBe+LC18UxNs2lqooJ1oCQ2sA/URBtYE31gS4yBQ5xdUxMLKKCCFWxgBw10EJtgE2yCTbAJtvxG95GbJD/LPR4KaTZatfH4R7PTamIFx0KW3CT5le4LDXQwFuYXuktuvvwod8nNl9/lzq+F1vw094UOxsL8RveFBRRQwQqmrSd20MC05SbJTzOemB9nvLCAacttlp9ovLCC69IyO6kmGpgXsrklc/CemIP3wgIKqGDacmflpxsv7KCBDsbC/Pr3hQUUUEFsjs2xOTbH5tgCW2ALbIEtsAW2wBbYAlssW/ZdTSyggApWsIEdNNBBbAVbwVawFWwFW8FWsBVsBVvBJtgEm2ATbIJNsAk2wSbYBJtiU2yKTbEpNsWm2BSbYlNsFVvFVrFVbBVbxVaxVWwVW8XWsDVsDVvD1rA1bA1bw9awNWwdW8fWsXVsHVvH1rHlZ1/Ho1nNHq2JsTA//nphBfOflURfmGf0PJNlW9XEBubflcRYmEP6wgIKqGAFG9hBA7HFsmUD1cQCCqhgBRvYQQMdxFawFWwFW8FWsBVsBVvBVrAVbIJNsAk2wSbYBJtgE2yCTbApNsWm2BSbYlNsik2xKTbFVrFVbBVbxVaxVWwVW8VWsVVsDVvD1rA1bA1bw9awNWwNW8PWsXVsHVvH1rF1bB1bx9axdWyGzbAZNsNm2AybYTNshs2wOTbH5tgcm2NzbI4tLw/yQ/X9zJITY+EZIJYooIKpiMQGdnAoRseHZjfWxJiY7zybWEABFaxgAztooIPYCraCrWAr2Aq2gq1gK9gKtoJNsAk2wSbYBJtgE2yCTbAJNsWm2BSbYlNsik2xKTbFptgqtoqtYqvYKraKrWKr2Cq2iq1ha9gatoatYWvYGraGrWFr2Dq2jq1j69g6to6tY+vYOraOzbAZNsNm2AybYTNshs2wGTbH5tgcm2NzbI7NsTk2x+bYAltgC2yBLbAFtsBGlhhZYmSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyVOljhZ4mSJkyV+ZklJ7KCBadPEWHhmyYlpa4kCps0TK9jADhqYtkiMidm+18ZPVzXb99poCNVs35s4bKOzU7N9b2IDh238zlKzfW+ig8M2+jI12/cmFlBABSvYwA4a6CA2wSbYBJtgE2wZFdnKk314LR87Zx9eq7nNMhQurGADx0Lmc+nsw5voYCzMULhw2Fpu1AyFlpsvQ+HCCjYwbbm8GQotlyFDoZ91Y2GGwvi1nWYfXsuHxtmHN3HY8vlx9uG1nsUyFE7M0Z0PS7OhruXTyWyom1jBsTj5zDKb5Jrl8uaIvVBABSvYwA4a6GAsdGyOzbE5Nsfm2BybY3Nsji2wBbbAFtgCW2ALbIEtsMW01WySm1hAARWsYAM7aKCD2Aq2gq1gK9gKtoKtYCvYCraCTbAJNsGWI3Y8Y63ZRTexgR000MFYmGf/8dSzZhfdRAHrdfzWbJ2b2EEDHYyFObovLKCACmKr2Cq2iq1iq9gatoatYWvYGraGrWFr2Bq2hq1j69g6to6tY+vYOraOrWPr2AybYTNshs2wGTbDZtgMm2FzbI7NsTk2x+bYHJtjc2yOLbAFtsAW2AJbBsh4Nl6zdW6igcPm59+Nidk6N3HYxk97a7bOTRy28QS6ZuvcxAamzRINdDAWZoBcWEABFaxgA7EVbAVbwSbYBJtgE2yCTbAJNsEm2ASbYlNsik2xKTbFptgUm2JTbBVbxVaxVWwVW8VWsVVsFVvF1rA1bA1bw9awNWwNW8PWsDVsHVvH1rF1bB1bx9axdWwdW8dm2AybYTNshs2wGTbDZtgMm2NzbI7NsTk2x+bYHJtjc2yBLbAFtsAW2AJbYAtsgS2WTY4DLKCAClawgR000EFsZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZ5Z4YkysZ5acOGyj57SevZYXDtto8qxnr+WFDRy20eRZz17LCx2MhZklFxZQQAUr2EBsBVvBVrAJNsGWUTHe61PPrsrRiVrzjXZtdKLWfKXdxAIKmAsZiRVsYAcNzB2Qy3CGQuIZCic+bH10rdbswJyoYAUb2EEDHYyFIxQmYmvYGraGrWFr2Bq2hq1h69g6to6tY+vYOraOrWPr2Do2w2bYLG0lUcEKNrCDBqYtDxiLhX6AacvDyAVUsIJpy8PIO2igL4ysm2MzskIeRtHADo4KJZd3DPSJMTF7Lfto763ZazlRQAWHbfT/1uy17KP/t2avZR9tuDV7LSc6GAvLARZQQAUr2EBsJW2W6GAslAMsoIAKVrCBHcQm2ASbpq0lFlBABSvYwA4a6GAsrNgqtsyH0cVcs9dyYgUb2EEDHYyFmQ8XFhBb5sNobqzZazmxgb4wx7zk0ZdjXvLgyjF/YQUbOJZX8ujLMX+hg7Ewx/yFBRRQwQo2EJthM2yGzbE5thzzkkMkx/yFacvtkGP+wg4a6GAsHBcCfTwhrdm4OVFABSvYwA4a6GBMzMbNiQVMW0lUsIJp08QOpq0nOpi2MYaycXNi2jxRQAUr2MAOGuhgLMx8uBCbYBNsgk2wCTbBJtgEm2JTbIpNsSk2xabYFJtiU2wVW8VWsVVsFVvFVrFVbBVbxdawNWwNW+bDeGJes3FzYgM7OGw1D6NMjQtjYV4/XFhAARWsYAM7iK1j69gMm2EzbIbNsBm2TI3xsL9mM2avORgyHy7MCjWxgg3soIEOxsJMgvHKp9qDvRls33PMn+hgTMxeyz6e5dfstZwooILr2LGjgR000MF17Fg5wLKW4RzzJypYwbaWIcf8hQZiY8wbY94Y88aYN8a8MeZN1pFq0kEDHYy1DMqWVLYkY94Y88aYN8a8MeaNMW+MeWPM2znmcxkqW7KyJStbsrIlc8yPfo2avZYTc0uedR2MhTnmLxy20YNRs9dyooIVbGAHDXRw2EZDR81ey4nrAM8Gyz7eb12zwXJiAzvIoXEO9BPZWcbOMnaWcdgbh72xs4ydZewsY2cZO8vYWc6B6ByIzqGRw390qNRspZxoYG6o3A45/FsuWV4eXFhAARWsYAM7aBP9vFGIxAIKmHU9sYKj7vjwdc2myYkGjrUYzTU1myYvzFC4cNjGD+9qNk1OVLCCDeyggQ7GwgyFC7Hl8M/7rGyPnJh1NdFAB2NhDv8LCyhgrkVLrGAD05Y7IIf/hQ6mbRwP2R45sYB565l76JwyOLGCDeyggQ7GwnPK4MQC5lpYYgM7aGCuRW7UHOgn5kC/sIAyp2TORsgLK9jADhroYCw8+x/yQDz7H06sYAM7aKCDsfDsfzixgNgcm2NzbI7NsTk2xxbYAltgC2yBLbAFtsAW2GLZzpbHCwsooIIVbGAHDXQQW8FWsBVsBVvBVrAVbAVbwVawCTbBJtgEm2ATbIJNsAk2wabYFJtiU2yKTbEpNsWm2BRbxVaxVWwVW8VWsVVsZy+VJDoYCzMfxltYanZKThRwpFF2pWWn5MQGjtTITrN8Y+FEB2NhpsaFBRRQwQo2EFvH1rF1bIbNsBk2w2bYDJthM2yGzbA5Nsfm2BybY3Nsjs2xOTbHFtgCW2ALbIEtsAW2wBbYYtpaNmNOLKCAClawgR000EFsBVvBVrAVbAVbwVawFWwFW8Em2ASbYBNsgk2wCTbBJtgEm2JTbIpNsSk2xabYFJtiU2wVW8VWsVVsFVvFVrFVbBVbxdawNWwNW8PWsDVsDVvD1rA1bB1bx9axdWwdW8fWsXVsHVvHZtgMm2EzbIbNsBk2w2bYDJtjc2yOzbE5Nsfm2BybY3NsgS2wBbbAFtgCW2ALbIGNLClkSSFLCllSyJJClhSypJAlhSwpZEkhSwpZUsiSQpYUsqSQJYUsKWRJIUsKWVLIkkKWFLKkkCWFLClkSSFLCllSyJJClhSypJAlhSwpZEkhSwpZUsiSQpYUsqSQJYUsKWRJIUsKWVLIkkKWFLKkkCWFLClkSSFLCllSyJJClhSypJAlhSwpZEkhSwpZUsiSQpYUsqSQJYUsKWRJIUsKWVLIkkKWFLKkkCWFLClkSSFLCllSyJJClhSypJAlhSwpZEkhSwpZUsiSQpYUsqSQJYUsKWRJIUsKWVLIkkKWFLKkkCWFLClkSSFLCllSyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBI5s6QnGuhg2nzgmSUnpi0SBVRw2MaLA1v2ZU4ctvGzjZZ9mRMdHLbxs42WfZkTh80lUUAF05YrlFlyYdos0cC05UJmliRmX+bEYRuv52vZlzlRwQo2sIMGOhgLM0suxFawFWwFW8FWsBVsBVvBJtgEm2ATbIJNsAm2TI3RPday17KPj7617LXso0erZa/lxAZ2MJe3JzoYCzMfLizgw2bjxYEtey0nVrCBHTTQB+ZajHy4cOTDxAIKqGAFG9hBA7E1bD1tufl6AQVMW26onjZLbGDaPNHAtOXx22OhHWABBVSwgg3soIHYDJtjc2yOzbE5Nsfm2BybY3NsgS2wBbbAFtgCW2ALbIEtli17LScWUEAFK9jAYStHooEOxsKRDzb6uVr2Wk4UUMEKNrCDBjoYCwWbYBNsgk2wCTbBJtgEm2BTbIpNsSk2xabYFJtiU2yKrWLL1BidcS3bLm10xrVsu5yYFVpiLMx8uLCAAipYwaw7kqt2jp0c8+c+zjF/oYIVzDW2xA4a6CBHKmO+MuYrY74y5itjvjLmK2M+WymvxTGOVONIzTF/IeuWY340nbVspZyY65Z1c8xf2EEDh01yv+WYPzHH/IUFFFDBCjZw2CQPghzzF8bcWdlraaMNrGWv5UQBFaxzB2Sv5cQOGuhgLDwH+olrZ2Wv5UQFK9jADhro4Do0sqvSxtvAWnZVTqxgbqjcDjmkJZcsh/SFDsbCHNIXFlBABSuYdT3RwViYg/fCrJtrkRcCFypYwTavS87+yQsNdDAW5o3ChQUUUMHxkGV0OrTzrZQXOhgL8+cVFxZQQAUr2EBsHVvH1rEZNsNm2AybYTNshs2wGTbD5tgcm2NzbI7NsTk2x+bYHFtgC2yBLbAFtsAW2AJbYItlO1+HeWEBBVSwgg3soIEOYivYCraCrWAr2PIR6mg1aefrMC80cIwsPf9uLMxT/oVp00QBFRwjS09sYAfTZokOxsJ8hHphAQVUsIIN7CA2xabYKraKrWKr2Cq2iq1iq9gqtoqtYWvYGraGrWFr2Bq2hq1ha9g6to6tY+vYOraOrWPr2Dq2js2wGTbDZtgMm2EzbIbNsBk2x+bYHJtjc2yOzbE5Nsfm2AJbYAtsgS2wBbbAFtgCWyzb+WbMCwsooIIVbGAHDXQQW8FWsBVsBVvBVrAVbAVbwVawCTbBJtgEm2ATbIKNLDGyxMgSI0uMLDGyxMgSI0uMLDGyxMgSI0uMLDGyxMgSI0uMLDGyxMgSI0uMLDGyxMgSI0uMLDGyxMgSI0uMLDGyxMgSI0uMLDGyxMgSI0uMLDGyxMgSI0uMLDGyxMgSI0uMLDGyxMgSI0uMLDGyxMgSI0uMLDGyxMgSI0uMLDGyxMgSI0uMLDGyxMgSI0uMLDGyxMgSI0uMLDGyxMgSI0uMLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLHGyxMkSJ0ucLAmyJMiSIEuCLAmyJMiSIEuCLAmyJMiSIEuCLAmyJNtEH2ftxAo2MG2RaGDe47TEWHje45w4bKObu51toheOdRtt5O1sE72wgcPWc8kySy5M24mxMOdALhxzFZpLlnMgFypYwQZ20EAHY2HOjFyIrWKr2Cq2iq1iq9gqtoqtYWvYGraGrWFr2Bq2hq1hy4nR8YrWlq2fNn6U1bL102rui5wCvdBAB8fy1jxKcgr0wgIKqGDaemIDO5i23LE5BXphLMwp0AsLKKCCFWxgB7E5NscW2AJbYAtsgS2wBbbAFthi2nq2fk4soIAKVrCBHTTQQWwFW8FWsBVsBVvBVrAVbAVbwSbYBJtgE2yCTbAJNsEm2ASbYlNsik2xKTbFptgUm2JTbBVbxVaxVWwVW8VWsVVsFVvF1rA1bA1bw9awNWwNW8PWsDVsHVvH1rF1bB1bx9axdWwdW8dm2AybYTNshs2wGTbDZtgMm2NzbI7NsZ1Z4okN7KCBDsbCM0tOLOCwjd/29Wz9nFjBtEViBw0ctjF52LP188Rs/Zw4bOOnZT1bPycqWMEGdtBAB2NhZsmF2Aq2gi2zZPyQrWeT57WQmQQXKljBBnbwqUIu2YmxMJPgwlyymiigghVsYAcNdDAWZhJciK1iyyQYVzY9GzcnNrCDBjqYtnHsZOPmxAIKqGAFG9hBAx3E1rFlEoyXd/ds3Jyo4LBZ7uNMgvEDmJ6NmxOHzXK3ZBJcOGyWGyqT4MICCqhgBRvYQQMdxObYHJtjc2yOzbE5Nsfm2BxbYAtsgS2wBbbAFtgCW2CLZcvGzYkFFFDBCjawgwY6iK1gK9gKtoKtYMuritEk17Nxc6KBDq7cycbNiQUUUMEKNrCDK+WyRdNGS16XMx9KYi6vJTawgwY6GAszHy7M7eCJbN/KGlfWOMf8iTnmL8ztG4kCKlhB9mbD1tibjb3Z2JudvdnZmznmz2XIMX9hBdmb55jPZTjH/IkOYmPMC2NeGPPCmBfGvDDmxTh2jC1pbEljS55jPpfB2ZLOlmTMC2NeGPPCmBfGvDDmhTEvwX47x/yJbMlgSwb77RzzJ7IlGfPCmBfGvDLmlTGvjHllzCtjXo+13/TooIEOri2ZDZY2Wkp7NlhOHLbRidqzwXJiBRs4bJ7LkGP+QgdjYY75CwsooIJpy4XMMX9hXj+cfyHmKMxXXNp4XXnPV1xOFFDBtYdUG9hBAx2MhfUA2UOVPVTZQ5U9VBvYQQMd5HjIfBgduf1ssLywgrl1cjtkPnguWebDhQ7GwsyHCwsooIIVHHUjj5JMggtjYSbBhaNu5FGSSXChghXMa+UTO2igg7HwvA84sYACKjjqjo7cfjZNXuhgLMwxP1pY+tk0eaGACo45sbwlOF9QeWEHDXQwJp4vqLywgLl1amIDO2igg7Ewx/F4DWQ/Wx5Hg3A/Wx7HWx772fJ4oYNZIZchR+yFuR0iUUAFH8vro4O4Z8vjxA4a6GAsHON4YhlYEgVUsIIN7ODY6pKYI/bcDjliL2Tr1KwriRVsYAcNzLXQxFjYDrCAuRZpawpWMG25A1oHDUxb7osWC/sBpi33fE9b7pYxjr3kRh3j2EtuknGen9jBUbfkuo1xPLGAAmbdXLccsefBlSP2QgdjYQ7TC8fAOSucn/I+sYNjF5ZcofNT3ifGwvNT3icWUEAFK9jAsVEvjInZ3DixgLnyLVHBCjZwrEXugPOj3Rc6GAtzuv/CAgqoYAUfdWsmbbYx+ujL7NnGeKEcYAFzLSxRwQo2sIMGOhhjGcaxk82NEwsooIIVbGAHDfSFNdfCEwVUsIK5FrmhcvBeaKCDYy3yAiObGycWUEAFK9jADo59IbmHcpheWEABFazgqJt3M9ncONFAB2PhGLwTx1rkfUs2N05UsIIN7GCuRe4Az+WVRAUrmBVyo3oHDXQwFsYBFlBABSuILbAFtsAWy5YNixMLKOA4dkbHc8/WxIkGOphbZ+RDtiZOLKCAClawgR1MW0t0MBbm6L4wbT1RQAUr2ObOytbEiQY6GAvz1HxhAQVUMOtaooEOZt0xTLMJ0SW3eo7uCwVUcKzFeGdnzybEiR00cNg091CemjU3VJ6aLyyggApWsIEdNNBBbDnmNVczx/yFAipYwQZ20EAHhy0vb7MJ0WuucZ6wLxRQwQo2sIMGOhgLHZunLQ+uzIcLFaxgAztooIOxMNKWB0EUUEAFK9jADho4bC0P2jz7J2YT4sQCCqhgBRuYaVQSDXQwFpYDLGDW1cSxvHnPm42FE7NC/gU5wAIKqGAFG9hBW5hjfryTr2cLoY935/VsIZyoYAUb2EEDcy0sMRZmElxYwLR5ooIVbGAHDXQwbWPPZwuh54xhthBOFFDBCjawr33R2EONPZRJcGImwYUFFFDBCo59kZmazYITY2GO+X5iAXMtskKO+QsrmGuROzbH/IUGjrXIhxbZLHhhjvkLCyjgsFlunRzzFzawgwY6GAtzzF+YdXNc5Hk+z7zZ6uf5TCJb/SYWcCxZHsrZ6jcxl6wmNrCDuWQt0cFYmOf5CwsooIJp64kN7KCBDsbCHN25xtnU53lRlk19ExvYwazriQ7GwhzdF47UyPuWbOqbqGAFG9hBA33hGBeR04TZDjcxFo5xMbGAAipYwQZ2EFvH1rEZNsNm2AybYTNshs2wGTbD5lk395srWBfm2SkvOLMVbWLWzQMxHIyJ2Yo2sYACKljBBnYwpjjOo/rEAgqYdVtiBbNuT8y6lmigg7FQDrCAAipYwQZiE2yCTbApNsWm2BSbYlNsik2xKTbFVrFVbBVbxVazridmhdzUbR2p2Ug2UcCscCRWsIEdNNDBYcvZg3zf4MRhy5vtfN/gRAVH3ZwjzUayyCnQbCSbOCqcB8w5svLQOEfWiRXk2MmRlbOW2Ug20UFGgDMCnBHg2BybY3Ns3hdGivNQzqF3oYO5mo+/a9nlNbGAuaEsUcEhHjOnll1eEzuYtkh0MBaWAyyggAo+bOUYU6eWbV6L+xPbE/sTByxzR9pxDsBc1ByAYzdYdnVN7KCBDsbCHIAXzl1mhwqoYAXbNSTsOAfgiQY6GAvPAXhiAQVUsF9RZtm/NdGvA8SOOge2He0ACyigghVsYAcNdBBbx9axdWwdW8fWsXVsHVvH1rEZNsNm2AybYTNshu0crHnsOFvd5+nVDq9gAztooIOxMA6wgAJiC2yBLbAFtsAWy1aOAyyggApWsIEzkC17siY6GAtz5F9YwBz5JyqYYzMVeSq+sINxJbZlp9Y5urNTa2K9EtuKzIi0Ih000ME1ugujOzu1Jq7RXRjdhdFdFJtiU2yK7Rzdied5ZwzTcp53Tixgrmb+3TxoL6xgbihL7KDNbC7neefEWOgrkLPVaKKAClawgR0kjbPXaDFpnN1Gi8sTyxOzI2NeS1iJFcglHFy7TI4DLKCACq5dJusq0mRdRZocBq5AlmMFspQDLKCAClawgSv+szHIc49kY9DEBnbQQAdjYd4FXVhAAbEpNsWm2BSbYlNsFVvFlnMceQxma9HECjawgwY6GAtzjuPCAmJr2Bq2hq1ha9gatoatY+vYOraOrWPr2Dq2jq1j69gMm2EzbIbNsBk2w2bYDJthc2yOzbE5Nsfm2BybY3Nsji2wBbbAFtgCW2ALbIEtsMWyZcPRxAIKqGAFG9hBAx3EVrAVbAVbwVawFWwFW8FWsBVsgk2wCTbBJtgEm2ATbIJNsCk2xabYFJtiU2yKTbEpNsVWsVVsZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJZUsqWRJJUsqWVLJkkqWVLKkkiWVLKlkSSVLKllSyZJKllSypJIllSypZEklSypZUsmSSpZUsqSeWRKJ4xomr8+yFWpiBw10MBbmJfWFBRRQQWx5ST0ajixboSYamLaSGAvzhvnCtLVEARVMmyc2sIMGOhgL8zb6wgIKqCC2hq1ha9gatoatY+vYOraOrWPr2Dq2jq1j69gMm2EzbIbNsBk2w2bYDJthc2yOzbE5Nsfm2BybY3Nsji2wBbbAFtgCW2ALbIEtsMWyZQ/WxAIKqGAFG9hBAx3EVrAVbAVbwVawFWwFW8FWsBVsgk2wCTbBJtgEm2ATbIJN1zhuZz7UxAZ20EAHY+GZDycWUEAFsVVsFVvFVrFVbA1bw9awNWwNW8PWsDVsDVvD1rF1bB1bx9axdWwdW8fWsXVshs2wGTbDZtgMm2EzbIbNsDk2x+bYHJtjc2yOzbE5NscW2AJbYAtsgS2wBbbAFthi2fpxgAUUUMEKNrCDBjqIrWAr2Aq2gq1gK9gKtoKtYCvYBJtgE2yCTbAJNsEm2M58iMRYeF5rnFhAARWs4LCNXmDLjq+JBg7b6Dy27Pi6MLPkwjozqp9RcWIHDXQwFmZUlFy3jIoLBRyLPhpfLRu6ouSiZ1Rc2EEDHYyFGRUXFlBABbFlVEhukoyKCw10MBZmVFxYQAEVXCeJzqVE51IiG7pCcpNkVFwYCzMqLiyggApWsIEdxObYHFtgC2yBLbAFtsAWy5Y9TTE6UCx7miZ2cCzO+Hmr5cvSJsbCHAEXFlBABSvYwA5iU2x5hhztLJZ9SjHaWSybk+b/OhZnNK5YNifF6FaxbE6aKKCCFWxgB8fiWG6oPKovjIV5VI9uFcvmpBhtJ5bNSWG5+fKoHp0ils1J16LnUX0hK5QHbcu6edBeKKCCFWxgBw10MBbmQdty0fOgbbnoedBeqGAF05brlgfthQY6GAvzoL2wgAJmsdxQeaIarWaWHUkxesYsO5Ji/CLVsiNpYgUb6AvzjDN6uyy7jCZmBU3Mo29sknwdWIwuLsvXgU1UMG09sYEdtFX3HC3n/xoLz9FyYgFlrXGOlgsr2EDWLc8M5wrlmeFC1jhnk/zEcefuuWQ5m3ShgQ7GwpxNyscT2U/k+Yg3+4kmNrCDBmbdXM2cNzox540uLKCAClYwbZbYQQMdjIU5b3RhAQVMhSc2sIMGOhgLc7LowgIKqCC2wJaTRfmYxnOy6EIHY2I2Mk0soMytno1MEyu4dtbZp5SPQeOc3ymJDeyggTm/o4mx8JzfObGAAipYwQamTRINdDAWnnPFJxZQwLrW7ZwgrokOxlqhcyr4xAIKmIue2+ycCj6xgbnoPdFApwK2hq1ha9jOqeAT2S2N3dLYLY3d0rB1FOdVUC7keRWUS3ZeBXmighVsYAcNdDAWnldBJxYQ23kVlEfqeRV0YgM7aKCDsfC8CjqxgAJiC2yB7bwKskQDHYwL/exeurCAAipYwQZ20BbmrdH41YVn69HjeE7soIEOxsK83bmwgAIqWMFUaGIqaqKDsTDPWRemoiUKqGAFG9hBAx2MhXkmuxBbxVaxVWwVW8WWN0HaE31hXiNq7oC8Ghy/B/Gz6+jCBmaxSDTQwViYV4MXFlBABSvYQBR5rNc8NPJYr7nf8li/UEAFKzjqjhfX+dmZU3N351GdeHbmXFhAAbNuTaxgAztooIOxMI/12hILKKCCFWxgBw1Mxdix+XXMiQUUUMEKNrCDBjqITbHluBivzPKzdedCBSvYwA7a2urqIDursrPyAB8/dPd8L1KMH+R4vhdpYgEFzEvLI7GCDeyggQ7GwjzWLyzzSM33Ik1UsIIN7KCBsdbtvB8qiQrWtUJ5orqwgwbmoktiLDzvfE7Me5HcqOedz4m6Kjg2x+bYHFueqC5ktwS7JdgtwW4JbOeIjf/5nz/89pe//esf//Hnv/31n//x9z/96bd/+u/1P/znb//0v/77t//449//9Nd//PZPf/2vv/zlD7/9f3/8y3/lX/rP//jjX/PPf/zx74//97FF//TX//P481Hw3/78lz8N+p8/8K+Pj//p4zgeZ+385w92WSUesfFDkfJxkTpGaJZ4PAhaBUx++Pfy8b/XcV+W//7x2JUF+KnAdi10zKdda/F4bvrhWtSPi8RciUcWrX9f9e4/1/zqz7kWjxkFlkDaDyX6psTog7y2g7Id7e6/72UeCY+Zx/XvVX9cB99sx9pnhUe4+IclYrcvZW2Gx/TbhyV2WzIvla7t0OuHW7JsDkmR8X6ErCESTzXaT0f17rDUthaDzflIkPsrYqyI68crsqkxPnly1RhfKVk1+k/r0XZ7dTxyv/Zqkw9LbI6sfF1YVnhMVzyN0PsVvM7V8F4+rnB3Nezj1dhtzPx04rkx7YiPSsgmaqT6OrAeT/o+LFHe3RSyOTLliBl38rg4I61+ilzdLESfsf+Yhvh4IXZ5KTK3xAM5KrTZ/RUp4/r8WpFWPlyRzYElhObxYYH9CIu+DoqiH+5Rfz/0djWqrMWoqh+fP/TY5vc6DbanrSGP4PihxubobD73yONB4FMFu39g1LYOjPY0yn4+MFR3J2OLVSM4wtV/WpPNckiXNUp6fQqM+0tx8xDf1ri7Newbtoa/uzX2A6WtgdL7h9G3qVDtWFeKjxT88BivuzO7rwNUH/MxTzXsdg09TFeN8I9r6Ntn1VrfPavuKtw7ldxejY/Pqne3Znk6wr+2R9a1qz7u+j+uEe9fvbbjGy5fd+tSuXBsm3VpmxPjuA+de/ZxH/rh9eu2hqx1eTzHKh/XqG8f5a29e5TvKtw7ym+vxsdH+X5r9rVHJF7cIy3WVdfj2e6HNfruHJ/vPjxXxZ7z7+f7krK90Zw11OvHGdrl7SOj67tHxq7CvSPj9mq8mH9e1xnJn0r8sjXt/a3pb29Nf3tr2u+8NZ+Ozecx8pWzST4Nv268y8d7xPTtG297Pzzt7fC0t8PT3g/P/cZ899KxHes+rz2m+z68dPRNdI43rM17mx8250/x65tDK8qaJnw8sPkwfbeTlXXdVTweDTT9cLJyv0WNLeqv7ZR7syHedrMhx1wKqaV+WKK/PUjc3h0kuwr3Bsnt1fh4kGw3pq6rg8fG7C+VyNf5XrNT+uFcRmxOiC27xc6jInq8VkLrjRL7A+vWNFu8HZ3xdnSGvT2/Ff7m/NZ2Ge5NFpbjeHe2sBxl93BC54qMT8lwZxXl1SLtxSL1WFNcVcqmSH132nG/Ll7Xuvir6yI6j/LxoYxXi1hbReLVXaPrvmS8oH5TZHcL/5jRWffwDy4fTpdty9ydt/ukSMz9E1rixSLajlXk6eHo14rcnEIspb4/h1h2z2BuTiJulyPf23wuhz9d/Py6HHeL9OPVIusc88D+WpHHmFiXtg+2TZntLm4r2OL58uGLB5tzsD2P468V6UGRjwfg/bP3xw8td08R8rtmWcLsw5PW/gr51nOdIv39G8ltkce13HqyU6JuiuwuA2xNKorVzdrE+w+Cd4+Ybj4J3pW4+Sj49ppsngXvt+h6WCbm9aUaWlaoPk4R9mqN4+0aT60jzyP/azXWRd6j3Mc1dg+Zbt48fFLj1t3Dfl1qXdP4tfv7NV48xlRiTQ1W/3jfbp/Q9DXxXEw2V9/bBckPbp4L8kjWjxekvb9z9zW+YedaYV02A7fuOp0OW7Poz/1eX9yo6wpRfXOUbR84rZuzx13Jx4vRNlfeJX9Qda5L2OZ+ZrcctdDDp5vNsTvPyTpFVenHx+e53ZOamzNKpX1Dw1N7v+OpfUPL0zf0PG236L1ppX2Ne/NKpZf3h/7+6Lg1LVTef+pU3n/s9IU1+Tg7en/zEnk/ZHVFaa0WL17fitka97vr2/4Nrad5sfTu0/v96uQHws7Vif5xc0gx+Y7V0d97dWKdYdpx7Fan/Z5HWqObttW+uZMy252khANtlZDHMP6xxPttUNulWFNuz6fKX5Zi9yRqPDtyniM95VD/SpH8dO9VxMxfK+LrFubBHi9tEVv7JTb7xevvWuKxDXiwdlj9eKPW79io9Rs26r7IzWNkO+zasZ5iR/XXAr4XflhQ1F4tsubJxhd6XyxSlan7/urqqM5jbXyT7+MiUb8h4HcPmL4l4MeH/Nbq2G51do0bLT8Fdq3Pc09Q/1KRp/7j5ynVn4vE7iH9ejozXsf94erI7nlVbWtOpfZN65sc2/uquk4VR/nw5l0Oeff2To7NVcAPP2Wx54cZ/lOR3eH6mJte+/fB9cNp6k/KNF3B9rhz8Q/LbA/Z8b7QuY/r0+OzX/exvT0jKoe/facouwnze/cT2xI3fxFye01ssyb29ozotsbNGdHPahxv17g34SW73yz9cMfaXtumN2dmP6lxa2ZWSrw9efdJjVt38Pt1qcc6Pp4fvv9cQ+T3Xo5bM8T3a7w45m7OEMsuTu/OEH9ysN88QPrvvGPuze6KHu/P7n6yILdmd0XfP/3vfj90d3Z3uxw3Z3c/u7irTxd3H906Z0PKu1eI2yK1rA7h+nw70r9waWd13eRZ/fhA1fefpkp9+2nqtsTNawd9/2nqJxfL6zz3uLz/+Hy7+zXT7fjYXS13X7Pd3WNztbwrYmujPrC8VqQc68duUrfX7bslaco0cX/94t87F/9PZ5mvXvwfT+9I0L4po9vnEe3/9Tzia9ulrjlnqU+XiL8WeTsVt4f947J+HSnl8JeGjpBnUjZnvN2zppsnmmbfcKJp/f1Nut21a7L5sZf11UM+m4vmJYC+fL8rlftd6S+PHFkXNaPkpkls11dtc42entT89IKSz2YUpTzNKOqL05JrDu7B7aNpSdk9uVLxdRegh71S4t5VwGez8De3x/EN28O+4XnAtsjNLbLvZjwqU+jHcyPi15oiD+1PZTZdnrLdKrd7K3dlxoe95wSpPXU09i+UcFlzrF7ttRLr8nl8GvmjEvsW64MX/Bwvd4yHUuTjPu3t71h1Xai5tvh4enX3S6qbnR7i7/8IVfztfoBtiZvX4P7+71D3W/Rep8e+xr1OD/H3uwA/qXHvXmB/hN17V0+Ut4+OeP99P/fX5OPLzHi3oXo/6tczWtfYjPro7995x/s/lpbw9/fr2z+Xvr8mm1G/3aL37rz1+IYZ1f1y3Hpcpkd99zZGj/b+bfd2OW7exuw2x907w22Ne3eGunu2dHOTluP9O8PtctzbpPu3Z6xHS96efjD3yzv9tu8wuvWz6f0b4G5dt+g3vJJP338nn77/Uj79hrfybTfozcuW4+2rFpXy9lXLJzXu5ej7Fxyf3H3d+xHl/vV+937+uK1x89eP2/en3fy94O0am58L7mvc+7Xg9lnO7Rva7Va9+VvB/ZLcPUa22+TmbwX3b/p7f23uHqv7dbl5rNo3HKv2DceqfcOxat9xrO636r2fpN5/5eqHV1K6+xHVrZuf7es56YF8TK49vf7r59dz7n799Dh3rEYO+XCS75MSd2ZOtdrbz093G4Ppvfr8WotfN8Y3vK5Pv+N9ffu3pt66hNH9axjmnNoPjel2v8K6FOtPjwd+qbB9MdxBB+dT4+QvL3/dbgphU4h+XKNtbwTzKe91vyDtpSOMt0nUpvLhEbat0dYNaW3t41dGaYvdo+BbXYba7x5gm6v9/vZl4bbEzav9/g1DZb9Fb3UZbmvc7DL8rMbxdo17XYba7850tte26c0uw09q3OoyVPuGeyh7/x5qvy73ugzV6u+9HLe6DO/XeHHM3ewy1N0vp+52GX5ysN87QLr/zjvmXpehbh/Z3Owy/GRBbnUZqr8/a7p7Y8vtKT5/e9Z0exW0XnTUf/hp3Veuo2JVqB9XsO94Bv5JlZuPwHX3JtMv3IXtytx7BL4vcesR+Ccl7jwC308o3bydrL/vpMUXjhH9lmNEv+cY0fePEX3/GNG3j5HdJaqt2YLHI5OnVNYfY6jun//cuUXeliiPJFqtzr09dVoU/elN3Ud/d8rgkxJ3pgzq4b/z9mj8sPZxq358vD12z6KkryuZB37069xtibtfSam7j0Pd+0zKtsS9SYN9iVuzBvutcXPa4JNNem/eoBZ7f97gk8PMuSrr8TSx/ethtrtJLcZLU5/ayB8P/34ssp24vPWugf1yyOoLlAd/vBzbIo129tY2RbYb1o51H/Lgp2j+ZcPuzr4382xf4laeSf998+zH7fH8PPqXfN+WUeG26vm++9fNuj1e2cXPL8Z9jKhXi8Q3FHnqhv1ikXWukGLHx0V020jeaCTvz+/G/fkrP/t7q6ePMuqmyO59mL6mZx7HbnuxSNB3EKW8XKRQRL6jiG2KbH+oo/xQ5+k1G78U2f34qdl690Gz54d2X9nFj2Njvb/oMcfx6nGy7io0ory4TZ7bGOpum2zfpLKeq1Sz8uKGPdY7S9sPtzdfKdK1068c8h2rs9nF9/NkE0q7B1Y3X6Red8+rRKihT0PnlwXZvfDPms21sfb8wq2fLrZ2zVSPG/WVa/XpkXn5aau23fupjoPPqEn9uMb+t2nrKc2De/t4bbYtROsTPKJPs2i/btZtEWff+OYg+cr5vH58Pm/+Dcfa7gFreDx1hsrmCqVvN8u6oJbnD+FKLT8VKW9fCm83yb1vKdTdi/tuvbV/v1G/sH+3ZapRppXNbcruR1Dx9Jqp50Hs9pVFacaFrJXNRMVuVr6XdVXe9el1278W2TaJrpf/1LI9YHevqaBV44HlxSWpqw2nPj9B+tqSaFvv3tNeX9ywKtzkH5sitv+MNH2v7dUith4SPDBeLeIU8VeL9HV73p7bPr5WJNakxeMsKq8OZK5PBvurZbwwCF1ejRU/1gPp4qVsNq+/P7nl709u+fuTW/vt0daNfhlfX9xsj11Hy9g96yLFPp523H1j6uYpcL8czs9Ei0t8WGT3gYdjfRchysfTJ9sSZa1KlPrh1tjvmb6uth6nq/byAe+82sBjN8se+vas1L7ErVmp3esAb85KfWF77E7mn5VplJFXw/HxT40ydTNnGPH+3ol3907b/XD2W/bOD9uj2et7pz6VefWcE8e6a3pw6KtlhCduoe3jq7a2e0p175yzLXHvnLMv8Q3nnKDvsEQ/Pt477f0HXdsSjyv74CbjeUm+VMR4c+SD48UiyleLrfaXRs9jiu2pSWV3ytj2MH7TbbGsKvKcKL/eFt8t8jQd+7Uidd3vPKYqjheL8BZZaU/toV8q8tgO63NJh+uHRbZ7Z73jQJ7fVPTz4/vdqnD/J6IfdwA00e1D4lvd6W37pOpmd/puZY5S1/aou5V590MBbffKxUfEr4tX77vF8Pc3x7ZIk/U7nfbDd9i1fKFIW70uzY72YhHeEva4HS4fF9m+IfDWtc0nJW5d2+jb/S6fbI3VyNhcY7M1tqffNcPQq+umiO2WZF0GlOOj6eT9YnDX+OMbwr+0Lq2tTqYffq78xSJ0RB7xcpH1wvNe7MWj3VeItNgV2f0M61uK3O3fadsPUd273NyVuHm5uS1x63JzvzVu9u98sknv9e+0tj113+vf+eREs+bFH9dGdXOi2RUJocjubNX0916dWHPrqsU3S7L7DvX6oUo8Tww+DrofS+x6AHU172v9oSnqK0Wi8Yzb6qaIv33C25e4dcLrb78rbbs1HnPx6wnB8cNd709bo79/+u/vn/57/X23RllDrj5/3vvXrdHf3xr9/a3xdrPrdtgrL0gbP816LcWU33Vo/WGT/lTEyu+cYtrXywIeF+7Hi6tj61W2jxXrLxaJdZVZj1dPDxrrRyKPIpslsf4NN4i7DyfdvyPa7h2eatsPU7U/r85ugtSf2txWCbP7FTofCXq66f5lTXavObu9TV2+YZvunw2ujxX98Pv2ny6HfH/zHyzH87XuTxt197use7tluxi2JlTU+m4xtieINXarHseLRXS9krfqD3eIPxd5+1nAfjnqenpV6w+PBH9ajt1L/b6lyO07mdC372R2JW7eyWxL3LuT2W6Nu3cy+016805m92a/2yfNXYSQyl4+jpC++4zV4yHpysN42qzWfqpR3n9m3HfvB7z3wHe/LtF4KvLURvbLumzfbPX0q7unSWr96deynxS595nAz4rc+kzgJ0XufSbwkyL3Xh293TlyyNPLCuPDnVN+5xrRjnWc/XAB8FML5idFKm+Uav3lIuum+/mrel8sst61HM8Tb78W2VwCxJoQief2558P+e1L+u6Om+3KcJaIrq9u1r6+2xA/fJ7jS0V4h+xj47SPi8jvXeSHF3TqZu9si8h6A5rI08+zvlbkcY25niT6x0W2pyxfaxNxfHzKku286lNTXfn4y4td3n9JcP5u4+MLgVsv3eny9kuCtyXuvXTn/prYZk3ef0lw1/dfEvzJctx6SXDXt1930be/YLr5laB9kZtfCdoWufu64v2S3PxK0L7Ize+M9t1Pfu5/Z/SzMje/WPRJmbufK/2szM0PH+038M0PH+2L3PzwUde3X9SyHcg3X2+9r3Hv9da9vv16696+4fXW2+W4uUn3u/beh48+OVbvfvjokzJ3P3z0WZmbHz765IJvNcGEPT0C++Vardm7M0eflLjzcKG3+F1L3Hs+8ckGXZOCj22rH2/Q4xs+J/VZkVufT+r9O+6Bv+Eh2HYS7Nbrqz6ZR7vz/qrtI597E/G9f8O7Wbt9w7tZ9w83Km9Y7JsHPvmDoI9PVqvdS358ea/9VGSzZx5n2/XbtHie8a3H/SKNn0S3+tyb+KUiLqs96XhuCvpKkS7M2ErbLcn7mbpfjnXm7M/v7v7ayuiar+0/fJDq5yK7L7l9x8rUFWa9Pt10/roc8vsuRyNGnm8Ifl2Ot1/V8kmJW2c7f/tVLfutYetXF92fTlO/bg3/nYvcfeDT43j3gc+2xL0HPvsStx747LfGzQc+n2zSew98erT3H/jszzJPU3DPt2a/nGW2X4S6OfW1fXx1c+pr94Opm1NfuxI3p75ur8lm6mu7Re9Nfdnum7R3p772y3Fr6st2H7e6d7dru1843Z362he5OfW1LXJ36mu/JDenvvZFbk595UuD35/6+qzMzamvT8rcnfr6rMzNqa/9Br459bUvcnPqazuCbs7T7Aby3amvbY17U1+2e+RzMwykvD/1tV2Oe5v0k117b+rrk2P17tTXJ2XuTn19Vubu1Nf2MuvWlMInV2q3phR2vfD3phRs/2mRe1MKtns78O0phW0bu6zZAJXYNG5vi9j6GdpjsLxahMuKerxapMr61kEV/7gr3/T3LnL37iZ/C/ze3c22xL27m32JW3c3+61x8+7mk0167+7G6nf8kmX3I5RYTQpF5Gn266dfoVj9nWsUXz/vkx9+aPCVIiJrs4r0V4sUXjonfbc63zDTat/xFaxPtgm/vPqhx/fn1dm9VrA0V456rx89E/isyFOQPH/A7ucidXfJyS7uz1OCv6zO7mqxrZ9e1R8awX/qZrH2fs+DbZ883bvW274/7+5NzvYdDPdvcvZlbt+dfHag1KcD5aOXKln/jqNtV+TeLOX+MLk382P9/e8KW3/7u8LbEvdmfu6vycczP58MvHszP7uHWDdnfvYj7+6Uy7bI3SmXXZHbUy7bJbk75fJJkNyd5vgkSO7OT2xX6e78xLbI3fmJZm/fTLf3W3P2NW7OT2yfY907Z7l+w/yEy/ub1L9hfmJ/rN6en9iXuT0/8UmZm/MT+xulW/MTn9xr3Zqf2L5H4V7jxf5VDHeW4pN3KJHz7YePhnzlRUydV0L10BeL+HruKnG014rosZ54PvDj1Wm7Gca7r4TaFrn3aap9iVufpvqkxJ1PU+33i62riXE+f3Hn/lCkvlpEKKIf7xc/3u4Q+KTEnQ4Bf//7VtsSN9/tuN+gPP19/j3YF/cKHwqxeDVBnpfk5SK+PtT5wJeLcOe7K7J/JeO9bN+/1fFWtu9febu+Ax2lvvjW3NXK9sCP390r726LT96qfGtb7F/hvb5E87g1e/UV3rzw+oH+apH1bYLHuffV94B7ZUn6q+9GZ97rh2mvL76RfP388YEvb5N1Y/Uostk729fft873161/QxF/9UX8PHuqvb66OvzssNruYNsWefoSjevHRXz3BMt4A7BF/fhnh777JVbl3dmPJW4fXrl/tiR9LUnbLcnuR+7Huonoz5+A0a8sx/pykh9H3yzHdtJqfTjCnt8M+2uR3STr+oX68xyAtPqFY4RfdNfd+51d4xuOkd1PL+4fI/ENx0iV94+R+IZjZPclqdvHyO428TuOkQi+rbX5UorX3Usuxf/fr0H9ae/WfUvrei+kPb3V4ecvL20/cXKsS5J22MdfL/Td86u7K9PK77wyZb2luv34ErMvffRlfR2vaakvFhGWROq3FPFXi6znrY/dZK8WWY9YHvVe37DGhtVXixSKvPx1WKk8SmvPN88/zin67pNYN2+e9yVu3fl2/V1L3Lx53m5Q5e3jasdmg+6+IHDnvb/7xajcfj+/1OnXxfD3w2x3lN4Ns/1Xf4XHNNI+XJlPijS+SNk/3iJVtp+1vPn9YdF35wD3JW7NAX5S4tYcYHn/Hr68fQ+/fVfPrc8L+u59f75u7jw+frzj219clXXnreX58jJufy+g2sqv6od8eJl7bBsA1mOZ/lyi3/7kQOl8vas/vdruKyX86ctd7bWlCH7meBzllRJyEBrH0zTGV5aCrw2ML5m9VoIPfTy/PO0rJYrz1rN4bSmU74Q8f3jvKyXqGiSPyb/2YQmP3d2+8wDz+cgocX9NVuY8TtCvbYzKL6yfv4f46vZ8sYTTU+ny3KP20/VKvP0httuvsisfLsW2RDDOniekvlDC1yzBY6jKhyXi+IY3rsbxDW9cvfsOrOc3tv+yMrvXADxOqOtdAo8z40en58+KdLL8+Qnsz0V27RO+WjD0h0+Q/rI69u519fbcuCYaHo8E7JWDrPLmjcec52a/lG9o/Y/yDa3/n+3c9ensB3/4xsUo+nsfIa1xTRyx2bC7lt1jtcfI88P1n2e0tkXG2zjXtaC0TRF7f6Iwir87UfjJctybKIzdD5ruThTGtvHh1kThNgDK42Kaixh7/s7fcfy0JJvjdV0UGodZvZ/MPPiU8nzz9tOa7Evw+o3nG5avlKArRp4eav2yPWU7Z7peTajHiyXWR/n60+XcV1bk+UT3dNb+Som+Jhh+7BD6Qglb9yuP6b3Nttg9hfqWIo8AXeeG/tw28aUiZtxyhLxYJNZPoMrzF0+/tHPXysjzNOdXSui6wn0cKeW1paD5S4+XVqQc6xL5MT3w0oFeyvpmRHl+ZfSXStCYX/y1pdA1YB/42lI04erl6ZrySyU6zewer60IR6fKayvCS3Iemf7Sitjq53n+hucXCsSa533+bO0v43T7YPPt2+FYp/fn75B8ZS3WcRnW3twMrxV4PLpYH1PRp98FPg73+yXW700e2N8u8fzm4q+UaHwgq8tLJep6Dd0D7aUSjc9jtXhtW9Q1x/LAeLtEf22n1tV/oNXba9ti3fI9rmFf26k8enhgfa3E6jF7TF69uFPresDW2ktLUZzbRffyUolYK/K4hvUPS8TumVJ5+gGvPI2Scn+SO/jBXVR5bU3WWUwOba+VYCIyXhskhdfwlXB/sUSjRLxdIl5diqfZ+pdG++PfMQWo9e2l2OzU7XOcILiiHc8/cPvpGN89T4q2oit+yOCfnuSEH7/j3O7jXtW43S0fPRkL337Dcp2Pjg8r7DeorqEWGuXDDbot8pgk4BL8wS+WeQxZPqfx/PDgS0WEj0fI8xnha0XWx9/i+VWRXyuia+LtsZX7i8eqr3uC8KcGkF+O1dtFnl5C8MUivjbs82+Xv1SkHGVdhT3YPi7zyaZ1Nu3TByS+tGkfR+rTx0oOk1dX6dD+VGazj3av472/ZbZl7jUv7Evcal74pMSHzQv/+/Ff/vivf/77P//lb//6x3/8+W9//c/Hv/ufUervf/7jv/zlT9d//bf/+uu/Pv2///j//2P+P//y9z//5S9//vd//o+//+1f//R//uvvfxqVxv/323H9x/+y8UYse0wa/e8//FYe/90PO/7gh9vjv+vjvz/uLZuM/2/85cf0SfnD4z/yL4+//fiH+a/jf//PWNz/Cw=="
|
|
3971
3971
|
},
|
|
3972
3972
|
{
|
|
3973
3973
|
"name": "public_dispatch",
|
|
@@ -4290,7 +4290,7 @@
|
|
|
4290
4290
|
},
|
|
4291
4291
|
"128": {
|
|
4292
4292
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/messages/discovery/private_events.nr",
|
|
4293
|
-
"source": "use crate::messages::{\n
|
|
4293
|
+
"source": "use crate::{\n event::event_interface::compute_private_serialized_event_commitment,\n messages::{\n encoding::MAX_MESSAGE_CONTENT_LEN, logs::event::decode_private_event_message,\n processing::enqueue_event_for_validation,\n },\n};\nuse protocol_types::{address::AztecAddress, traits::ToField};\n\npub unconstrained fn process_private_event_msg(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n msg_metadata: u64,\n msg_content: BoundedVec<Field, MAX_MESSAGE_CONTENT_LEN>,\n tx_hash: Field,\n) {\n let (event_type_id, randomness, serialized_event) =\n decode_private_event_message(msg_metadata, msg_content);\n\n let event_commitment = compute_private_serialized_event_commitment(\n serialized_event,\n randomness,\n event_type_id.to_field(),\n );\n\n enqueue_event_for_validation(\n contract_address,\n event_type_id,\n serialized_event,\n event_commitment,\n tx_hash,\n recipient,\n );\n}\n"
|
|
4294
4294
|
},
|
|
4295
4295
|
"129": {
|
|
4296
4296
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/messages/discovery/private_notes.nr",
|
|
@@ -4310,7 +4310,7 @@
|
|
|
4310
4310
|
},
|
|
4311
4311
|
"137": {
|
|
4312
4312
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/messages/logs/event.nr",
|
|
4313
|
-
"source": "use crate::{\n event::{event_interface::EventInterface, event_selector::EventSelector},\n messages::{\n encoding::{encode_message, MAX_MESSAGE_CONTENT_LEN, MESSAGE_EXPANDED_METADATA_LEN},\n msg_type::PRIVATE_EVENT_MSG_TYPE_ID,\n },\n utils::array,\n};\nuse protocol_types::
|
|
4313
|
+
"source": "use crate::{\n event::{event_interface::EventInterface, event_selector::EventSelector},\n messages::{\n encoding::{encode_message, MAX_MESSAGE_CONTENT_LEN, MESSAGE_EXPANDED_METADATA_LEN},\n msg_type::PRIVATE_EVENT_MSG_TYPE_ID,\n },\n utils::array,\n};\nuse protocol_types::traits::{FromField, Serialize, ToField};\n\n/// The number of fields in a private event message content that are not the event's serialized representation\n/// (1 field for randomness).\npub(crate) global PRIVATE_EVENT_MSG_PLAINTEXT_RESERVED_FIELDS_LEN: u32 = 1;\npub(crate) global PRIVATE_EVENT_MSG_PLAINTEXT_RANDOMNESS_INDEX: u32 = 0;\n\n/// The maximum length of the packed representation of an event's contents. This is limited by private log size,\n/// encryption overhead and extra fields in the message (e.g. message type id, randomness, etc.).\npub global MAX_EVENT_SERIALIZED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PRIVATE_EVENT_MSG_PLAINTEXT_RESERVED_FIELDS_LEN;\n\n/// Creates the plaintext for a private event message (i.e. one of type [PRIVATE_EVENT_MSG_TYPE_ID]).\n///\n/// This plaintext is meant to be decoded via [decode_private_event_message].\npub fn encode_private_event_message<Event>(\n event: Event,\n randomness: Field,\n ) -> [Field; PRIVATE_EVENT_MSG_PLAINTEXT_RESERVED_FIELDS_LEN + <Event as Serialize>::N + MESSAGE_EXPANDED_METADATA_LEN]\nwhere\n Event: EventInterface + Serialize,\n{\n // We use `Serialize` because we want for events to be processable by off-chain actors, e.g. block explorers,\n // wallets and apps, without having to rely on contract invocation. If we used `Packable` we'd need to call utility\n // functions in order to unpack events, which would introduce a level of complexity we don't currently think is\n // worth the savings in DA (for public events) and proving time (when encrypting private event messages).\n let serialized_event = event.serialize();\n\n // If PRIVATE_EVENT_MSG_PLAINTEXT_RESERVED_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // encoding below must be updated as well.\n std::static_assert(\n PRIVATE_EVENT_MSG_PLAINTEXT_RESERVED_FIELDS_LEN == 1,\n \"unexpected value for PRIVATE_EVENT_MSG_PLAINTEXT_RESERVED_FIELDS_LEN\",\n );\n\n let mut msg_plaintext =\n [0; PRIVATE_EVENT_MSG_PLAINTEXT_RESERVED_FIELDS_LEN + <Event as Serialize>::N];\n msg_plaintext[PRIVATE_EVENT_MSG_PLAINTEXT_RANDOMNESS_INDEX] = randomness;\n\n for i in 0..serialized_event.len() {\n msg_plaintext[PRIVATE_EVENT_MSG_PLAINTEXT_RESERVED_FIELDS_LEN + i] = serialized_event[i];\n }\n\n // The event type id is stored in the message metadata\n encode_message(\n PRIVATE_EVENT_MSG_TYPE_ID,\n Event::get_event_type_id().to_field() as u64,\n msg_plaintext,\n )\n}\n\n/// Decodes the plaintext from a private event message (i.e. one of type [PRIVATE_EVENT_MSG_TYPE_ID]).\n///\n/// This plaintext is meant to have originated from [encode_private_event_message].\n///\n/// Note that while [encode_private_event_message] returns a fixed-size array, this function takes a [BoundedVec]\n/// instead. This is because when decoding we're typically processing runtime-sized plaintexts, more specifically, those\n/// that originate from [crate::messages::encryption::message_encryption::MessageEncryption::decrypt].\npub(crate) unconstrained fn decode_private_event_message(\n msg_metadata: u64,\n msg_content: BoundedVec<Field, MAX_MESSAGE_CONTENT_LEN>,\n) -> (EventSelector, Field, BoundedVec<Field, MAX_EVENT_SERIALIZED_LEN>) {\n // Private event messages contain the event type id in the metadata\n let event_type_id = EventSelector::from_field(msg_metadata as Field);\n\n assert(\n msg_content.len() > PRIVATE_EVENT_MSG_PLAINTEXT_RESERVED_FIELDS_LEN,\n f\"Invalid private event message: all private event messages must have at least {PRIVATE_EVENT_MSG_PLAINTEXT_RESERVED_FIELDS_LEN} fields\",\n );\n\n // If PRIVATE_EVENT_MSG_PLAINTEXT_RESERVED_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the private event message encoding below must be updated as well.\n std::static_assert(\n PRIVATE_EVENT_MSG_PLAINTEXT_RESERVED_FIELDS_LEN == 1,\n \"unexpected value for PRIVATE_EVENT_MSG_PLAINTEXT_RESERVED_FIELDS_LEN\",\n );\n\n let randomness = msg_content.get(PRIVATE_EVENT_MSG_PLAINTEXT_RANDOMNESS_INDEX);\n let serialized_event =\n array::subbvec(msg_content, PRIVATE_EVENT_MSG_PLAINTEXT_RESERVED_FIELDS_LEN);\n\n (event_type_id, randomness, serialized_event)\n}\n\nmod test {\n use crate::{\n event::event_interface::EventInterface,\n messages::{\n encoding::decode_message,\n logs::event::{decode_private_event_message, encode_private_event_message},\n msg_type::PRIVATE_EVENT_MSG_TYPE_ID,\n },\n };\n use crate::test::mocks::mock_event::MockEvent;\n use protocol_types::traits::Serialize;\n\n global VALUE: Field = 7;\n global RANDOMNESS: Field = 10;\n\n #[test]\n unconstrained fn encode_decode() {\n let event = MockEvent::new(VALUE).build_event();\n\n let message_plaintext = encode_private_event_message(event, RANDOMNESS);\n\n let (msg_type_id, msg_metadata, msg_content) =\n decode_message(BoundedVec::from_array(message_plaintext));\n\n assert_eq(msg_type_id, PRIVATE_EVENT_MSG_TYPE_ID);\n\n let (event_type_id, randomness, serialized_event) =\n decode_private_event_message(msg_metadata, msg_content);\n\n assert_eq(event_type_id, MockEvent::get_event_type_id());\n assert_eq(randomness, RANDOMNESS);\n assert_eq(serialized_event, BoundedVec::from_array(event.serialize()));\n }\n}\n"
|
|
4314
4314
|
},
|
|
4315
4315
|
"139": {
|
|
4316
4316
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/messages/logs/note.nr",
|
|
@@ -4350,7 +4350,7 @@
|
|
|
4350
4350
|
},
|
|
4351
4351
|
"18": {
|
|
4352
4352
|
"path": "std/field/mod.nr",
|
|
4353
|
-
"source": "pub mod bn254;\nuse crate::{runtime::is_unconstrained, static_assert};\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size<let BIT_SIZE: u32>(self) {\n // docs:end:assert_max_bit_size\n static_assert(\n BIT_SIZE < modulus_num_bits() as u32,\n \"BIT_SIZE must be less than modulus_num_bits\",\n );\n __assert_max_bit_size(self, BIT_SIZE);\n }\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {\n // docs:end:to_le_bits\n let bits = __to_le_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[N - 1 - i] != p[N - 1 - i]) {\n assert(p[N - 1 - i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {\n // docs:end:to_be_bits\n let bits = __to_be_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the decomposition does not overflow the modulus\n let p = modulus_be_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[i] != p[i]) {\n assert(p[i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_le_radix(self, radix)\n }\n\n fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_be_radix(self, radix)\n }\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32 - i] as Field) * (r * self) + (1 - b[32 - i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N - 1 - i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(apply_range_constraint)]\nfn __assert_max_bit_size(value: Field, bit_size: u32) {}\n\n// `_radix` must be less than 256\n#[builtin(to_le_radix)]\nfn __to_le_radix<let N: u32>(value: Field, radix: u32) -> [u8; N] {}\n\n// `_radix` must be less than 256\n#[builtin(to_be_radix)]\nfn __to_be_radix<let N: u32>(value: Field, radix: u32) -> [u8; N] {}\n\n/// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n/// This slice will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_le_bits)]\nfn __to_le_bits<let N: u32>(value: Field) -> [u1; N] {}\n\n/// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n/// This array will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_be_bits)]\nfn __to_be_bits<let N: u32>(value: Field) -> [u1; N] {}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n/// An unconstrained only built in to efficiently compare fields.\n#[builtin(field_less_than)]\nunconstrained fn __field_less_than(x: Field, y: Field) -> bool {}\n\npub(crate) unconstrained fn field_less_than(x: Field, y: Field) -> bool {\n __field_less_than(x, y)\n}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n if is_unconstrained() {\n // Safety: unconstrained context\n unsafe {\n field_less_than(x, y)\n }\n } else {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n }\n}\n\nmod tests {\n use crate::{panic::panic, runtime, static_assert};\n use super::{\n field_less_than, modulus_be_bits, modulus_be_bytes, modulus_le_bits, modulus_le_bytes,\n };\n\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_be_bytes();\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_le_bytes();\n assert_eq(bytes, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n // 259, in base 256, big endian, is [1, 3].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_be_radix(256);\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 1, 3]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n // 259, in base 256, little endian, is [3, 1].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_le_radix(256);\n assert_eq(bytes, [3, 1, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_radix_example\n\n #[test(should_fail_with = \"radix must be greater than 1\")]\n fn test_to_le_radix_1() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(1);\n } else {\n panic(f\"radix must be greater than 1\");\n }\n }\n\n // Updated test to account for Brillig restriction that radix must be greater than 2\n #[test(should_fail_with = \"radix must be greater than 1\")]\n fn test_to_le_radix_brillig_1() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 1;\n let _: [u8; 8] = field.to_le_radix(1);\n } else {\n panic(f\"radix must be greater than 1\");\n }\n }\n\n #[test(should_fail_with = \"radix must be a power of 2\")]\n fn test_to_le_radix_3() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(3);\n } else {\n panic(f\"radix must be a power of 2\");\n }\n }\n\n #[test]\n fn test_to_le_radix_brillig_3() {\n // this test should only fail in constrained mode\n if runtime::is_unconstrained() {\n let field = 1;\n let out: [u8; 8] = field.to_le_radix(3);\n let mut expected = [0; 8];\n expected[0] = 1;\n assert(out == expected, \"unexpected result\");\n }\n }\n\n #[test(should_fail_with = \"radix must be less than or equal to 256\")]\n fn test_to_le_radix_512() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(512);\n } else {\n panic(f\"radix must be less than or equal to 256\")\n }\n }\n\n #[test(should_fail_with = \"Field failed to decompose into specified 16 limbs\")]\n unconstrained fn not_enough_limbs_brillig() {\n let _: [u8; 16] = 0x100000000000000000000000000000000.to_le_bytes();\n }\n\n #[test(should_fail_with = \"Field failed to decompose into specified 16 limbs\")]\n fn not_enough_limbs() {\n let _: [u8; 16] = 0x100000000000000000000000000000000.to_le_bytes();\n }\n\n #[test]\n unconstrained fn test_field_less_than() {\n assert(field_less_than(0, 1));\n assert(field_less_than(0, 0x100));\n assert(field_less_than(0x100, 0 - 1));\n assert(!field_less_than(0 - 1, 0));\n }\n\n #[test]\n unconstrained fn test_large_field_values_unconstrained() {\n let large_field = 0xffffffffffffffff;\n\n let bits: [u1; 64] = large_field.to_le_bits();\n assert_eq(bits[0], 1);\n\n let bytes: [u8; 8] = large_field.to_le_bytes();\n assert_eq(Field::from_le_bytes::<8>(bytes), large_field);\n\n let radix_bytes: [u8; 8] = large_field.to_le_radix(256);\n assert_eq(Field::from_le_bytes::<8>(radix_bytes), large_field);\n }\n\n #[test]\n fn test_large_field_values() {\n let large_val = 0xffffffffffffffff;\n\n let bits: [u1; 64] = large_val.to_le_bits();\n assert_eq(bits[0], 1);\n\n let bytes: [u8; 8] = large_val.to_le_bytes();\n assert_eq(Field::from_le_bytes::<8>(bytes), large_val);\n\n let radix_bytes: [u8; 8] = large_val.to_le_radix(256);\n assert_eq(Field::from_le_bytes::<8>(radix_bytes), large_val);\n }\n\n #[test]\n fn test_decomposition_edge_cases() {\n let zero_bits: [u1; 8] = 0.to_le_bits();\n assert_eq(zero_bits, [0; 8]);\n\n let zero_bytes: [u8; 8] = 0.to_le_bytes();\n assert_eq(zero_bytes, [0; 8]);\n\n let one_bits: [u1; 8] = 1.to_le_bits();\n let expected: [u1; 8] = [1, 0, 0, 0, 0, 0, 0, 0];\n assert_eq(one_bits, expected);\n\n let pow2_bits: [u1; 8] = 4.to_le_bits();\n let expected: [u1; 8] = [0, 0, 1, 0, 0, 0, 0, 0];\n assert_eq(pow2_bits, expected);\n }\n\n #[test]\n fn test_pow_32() {\n assert_eq(2.pow_32(3), 8);\n assert_eq(3.pow_32(2), 9);\n assert_eq(5.pow_32(0), 1);\n assert_eq(7.pow_32(1), 7);\n\n assert_eq(2.pow_32(10), 1024);\n\n assert_eq(0.pow_32(5), 0);\n assert_eq(0.pow_32(0), 1);\n\n assert_eq(1.pow_32(100), 1);\n }\n\n #[test]\n fn test_sgn0() {\n assert_eq(0.sgn0(), 0);\n assert_eq(2.sgn0(), 0);\n assert_eq(4.sgn0(), 0);\n assert_eq(100.sgn0(), 0);\n\n assert_eq(1.sgn0(), 1);\n assert_eq(3.sgn0(), 1);\n assert_eq(5.sgn0(), 1);\n assert_eq(101.sgn0(), 1);\n }\n\n #[test(should_fail_with = \"Field failed to decompose into specified 8 limbs\")]\n fn test_bit_decomposition_overflow() {\n // 8 bits can't represent large field values\n let large_val = 0x1000000000000000;\n let _: [u1; 8] = large_val.to_le_bits();\n }\n\n #[test(should_fail_with = \"Field failed to decompose into specified 4 limbs\")]\n fn test_byte_decomposition_overflow() {\n // 4 bytes can't represent large field values\n let large_val = 0x1000000000000000;\n let _: [u8; 4] = large_val.to_le_bytes();\n }\n\n #[test]\n fn test_to_from_be_bytes_bn254_edge_cases() {\n if crate::compat::is_bn254() {\n // checking that decrementing this byte produces the expected 32 BE bytes for (modulus - 1)\n let mut p_minus_1_bytes: [u8; 32] = modulus_be_bytes().as_array();\n assert(p_minus_1_bytes[32 - 1] > 0);\n p_minus_1_bytes[32 - 1] -= 1;\n\n let p_minus_1 = Field::from_be_bytes::<32>(p_minus_1_bytes);\n assert_eq(p_minus_1 + 1, 0);\n\n // checking that converting (modulus - 1) from and then to 32 BE bytes produces the same bytes\n let p_minus_1_converted_bytes: [u8; 32] = p_minus_1.to_be_bytes();\n assert_eq(p_minus_1_converted_bytes, p_minus_1_bytes);\n\n // checking that incrementing this byte produces 32 BE bytes for (modulus + 1)\n let mut p_plus_1_bytes: [u8; 32] = modulus_be_bytes().as_array();\n assert(p_plus_1_bytes[32 - 1] < 255);\n p_plus_1_bytes[32 - 1] += 1;\n\n let p_plus_1 = Field::from_be_bytes::<32>(p_plus_1_bytes);\n assert_eq(p_plus_1, 1);\n\n // checking that converting p_plus_1 to 32 BE bytes produces the same\n // byte set to 1 as p_plus_1_bytes and otherwise zeroes\n let mut p_plus_1_converted_bytes: [u8; 32] = p_plus_1.to_be_bytes();\n assert_eq(p_plus_1_converted_bytes[32 - 1], 1);\n p_plus_1_converted_bytes[32 - 1] = 0;\n assert_eq(p_plus_1_converted_bytes, [0; 32]);\n\n // checking that Field::from_be_bytes::<32> on the Field modulus produces 0\n assert_eq(modulus_be_bytes().len(), 32);\n let p = Field::from_be_bytes::<32>(modulus_be_bytes().as_array());\n assert_eq(p, 0);\n\n // checking that converting 0 to 32 BE bytes produces 32 zeroes\n let p_bytes: [u8; 32] = 0.to_be_bytes();\n assert_eq(p_bytes, [0; 32]);\n }\n }\n\n #[test]\n fn test_to_from_le_bytes_bn254_edge_cases() {\n if crate::compat::is_bn254() {\n // checking that decrementing this byte produces the expected 32 LE bytes for (modulus - 1)\n let mut p_minus_1_bytes: [u8; 32] = modulus_le_bytes().as_array();\n assert(p_minus_1_bytes[0] > 0);\n p_minus_1_bytes[0] -= 1;\n\n let p_minus_1 = Field::from_le_bytes::<32>(p_minus_1_bytes);\n assert_eq(p_minus_1 + 1, 0);\n\n // checking that converting (modulus - 1) from and then to 32 BE bytes produces the same bytes\n let p_minus_1_converted_bytes: [u8; 32] = p_minus_1.to_le_bytes();\n assert_eq(p_minus_1_converted_bytes, p_minus_1_bytes);\n\n // checking that incrementing this byte produces 32 LE bytes for (modulus + 1)\n let mut p_plus_1_bytes: [u8; 32] = modulus_le_bytes().as_array();\n assert(p_plus_1_bytes[0] < 255);\n p_plus_1_bytes[0] += 1;\n\n let p_plus_1 = Field::from_le_bytes::<32>(p_plus_1_bytes);\n assert_eq(p_plus_1, 1);\n\n // checking that converting p_plus_1 to 32 LE bytes produces the same\n // byte set to 1 as p_plus_1_bytes and otherwise zeroes\n let mut p_plus_1_converted_bytes: [u8; 32] = p_plus_1.to_le_bytes();\n assert_eq(p_plus_1_converted_bytes[0], 1);\n p_plus_1_converted_bytes[0] = 0;\n assert_eq(p_plus_1_converted_bytes, [0; 32]);\n\n // checking that Field::from_le_bytes::<32> on the Field modulus produces 0\n assert_eq(modulus_le_bytes().len(), 32);\n let p = Field::from_le_bytes::<32>(modulus_le_bytes().as_array());\n assert_eq(p, 0);\n\n // checking that converting 0 to 32 LE bytes produces 32 zeroes\n let p_bytes: [u8; 32] = 0.to_le_bytes();\n assert_eq(p_bytes, [0; 32]);\n }\n }\n\n /// Convert a little endian bit array to a field element.\n /// If the provided bit array overflows the field modulus then the Field will silently wrap around.\n fn from_le_bits<let N: u32>(bits: [u1; N]) -> Field {\n static_assert(\n N <= modulus_le_bits().len(),\n \"N must be less than or equal to modulus_le_bits().len()\",\n );\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bits[i] as Field) * v;\n v = v * 2;\n }\n result\n }\n\n /// Convert a big endian bit array to a field element.\n /// If the provided bit array overflows the field modulus then the Field will silently wrap around.\n fn from_be_bits<let N: u32>(bits: [u1; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bits[N - 1 - i] as Field) * v;\n v = v * 2;\n }\n result\n }\n\n #[test]\n fn test_to_from_be_bits_bn254_edge_cases() {\n if crate::compat::is_bn254() {\n // checking that decrementing this bit produces the expected 254 BE bits for (modulus - 1)\n let mut p_minus_1_bits: [u1; 254] = modulus_be_bits().as_array();\n assert(p_minus_1_bits[254 - 1] > 0);\n p_minus_1_bits[254 - 1] -= 1;\n\n let p_minus_1 = from_be_bits::<254>(p_minus_1_bits);\n assert_eq(p_minus_1 + 1, 0);\n\n // checking that converting (modulus - 1) from and then to 254 BE bits produces the same bits\n let p_minus_1_converted_bits: [u1; 254] = p_minus_1.to_be_bits();\n assert_eq(p_minus_1_converted_bits, p_minus_1_bits);\n\n // checking that incrementing this bit produces 254 BE bits for (modulus + 4)\n let mut p_plus_4_bits: [u1; 254] = modulus_be_bits().as_array();\n assert(p_plus_4_bits[254 - 3] < 1);\n p_plus_4_bits[254 - 3] += 1;\n\n let p_plus_4 = from_be_bits::<254>(p_plus_4_bits);\n assert_eq(p_plus_4, 4);\n\n // checking that converting p_plus_4 to 254 BE bits produces the same\n // bit set to 1 as p_plus_4_bits and otherwise zeroes\n let mut p_plus_4_converted_bits: [u1; 254] = p_plus_4.to_be_bits();\n assert_eq(p_plus_4_converted_bits[254 - 3], 1);\n p_plus_4_converted_bits[254 - 3] = 0;\n assert_eq(p_plus_4_converted_bits, [0; 254]);\n\n // checking that Field::from_be_bits::<254> on the Field modulus produces 0\n assert_eq(modulus_be_bits().len(), 254);\n let p = from_be_bits::<254>(modulus_be_bits().as_array());\n assert_eq(p, 0);\n\n // checking that converting 0 to 254 BE bytes produces 254 zeroes\n let p_bits: [u1; 254] = 0.to_be_bits();\n assert_eq(p_bits, [0; 254]);\n }\n }\n\n #[test]\n fn test_to_from_le_bits_bn254_edge_cases() {\n if crate::compat::is_bn254() {\n // checking that decrementing this bit produces the expected 254 LE bits for (modulus - 1)\n let mut p_minus_1_bits: [u1; 254] = modulus_le_bits().as_array();\n assert(p_minus_1_bits[0] > 0);\n p_minus_1_bits[0] -= 1;\n\n let p_minus_1 = from_le_bits::<254>(p_minus_1_bits);\n assert_eq(p_minus_1 + 1, 0);\n\n // checking that converting (modulus - 1) from and then to 254 BE bits produces the same bits\n let p_minus_1_converted_bits: [u1; 254] = p_minus_1.to_le_bits();\n assert_eq(p_minus_1_converted_bits, p_minus_1_bits);\n\n // checking that incrementing this bit produces 254 LE bits for (modulus + 4)\n let mut p_plus_4_bits: [u1; 254] = modulus_le_bits().as_array();\n assert(p_plus_4_bits[2] < 1);\n p_plus_4_bits[2] += 1;\n\n let p_plus_4 = from_le_bits::<254>(p_plus_4_bits);\n assert_eq(p_plus_4, 4);\n\n // checking that converting p_plus_4 to 254 LE bits produces the same\n // bit set to 1 as p_plus_4_bits and otherwise zeroes\n let mut p_plus_4_converted_bits: [u1; 254] = p_plus_4.to_le_bits();\n assert_eq(p_plus_4_converted_bits[2], 1);\n p_plus_4_converted_bits[2] = 0;\n assert_eq(p_plus_4_converted_bits, [0; 254]);\n\n // checking that Field::from_le_bits::<254> on the Field modulus produces 0\n assert_eq(modulus_le_bits().len(), 254);\n let p = from_le_bits::<254>(modulus_le_bits().as_array());\n assert_eq(p, 0);\n\n // checking that converting 0 to 254 LE bytes produces 254 zeroes\n let p_bits: [u1; 254] = 0.to_le_bits();\n assert_eq(p_bits, [0; 254]);\n }\n }\n}\n"
|
|
4353
|
+
"source": "pub mod bn254;\nuse crate::{runtime::is_unconstrained, static_assert};\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size<let BIT_SIZE: u32>(self) {\n // docs:end:assert_max_bit_size\n static_assert(\n BIT_SIZE < modulus_num_bits() as u32,\n \"BIT_SIZE must be less than modulus_num_bits\",\n );\n __assert_max_bit_size(self, BIT_SIZE);\n }\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting array will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {\n // docs:end:to_le_bits\n let bits = __to_le_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[N - 1 - i] != p[N - 1 - i]) {\n assert(p[N - 1 - i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting array will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {\n // docs:end:to_be_bits\n let bits = __to_be_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the decomposition does not overflow the modulus\n let p = modulus_be_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[i] != p[i]) {\n assert(p[i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_le_radix(self, radix)\n }\n\n fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_be_radix(self, radix)\n }\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32 - i] as Field) * (r * self) + (1 - b[32 - i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N - 1 - i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(apply_range_constraint)]\nfn __assert_max_bit_size(value: Field, bit_size: u32) {}\n\n// `_radix` must be less than 256\n#[builtin(to_le_radix)]\nfn __to_le_radix<let N: u32>(value: Field, radix: u32) -> [u8; N] {}\n\n// `_radix` must be less than 256\n#[builtin(to_be_radix)]\nfn __to_be_radix<let N: u32>(value: Field, radix: u32) -> [u8; N] {}\n\n/// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n/// This array will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting array will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_le_bits)]\nfn __to_le_bits<let N: u32>(value: Field) -> [u1; N] {}\n\n/// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n/// This array will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting array will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_be_bits)]\nfn __to_be_bits<let N: u32>(value: Field) -> [u1; N] {}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n/// An unconstrained only built in to efficiently compare fields.\n#[builtin(field_less_than)]\nunconstrained fn __field_less_than(x: Field, y: Field) -> bool {}\n\npub(crate) unconstrained fn field_less_than(x: Field, y: Field) -> bool {\n __field_less_than(x, y)\n}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n if is_unconstrained() {\n // Safety: unconstrained context\n unsafe {\n field_less_than(x, y)\n }\n } else {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n }\n}\n\nmod tests {\n use crate::{panic::panic, runtime, static_assert};\n use super::{\n field_less_than, modulus_be_bits, modulus_be_bytes, modulus_le_bits, modulus_le_bytes,\n };\n\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_be_bytes();\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_le_bytes();\n assert_eq(bytes, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n // 259, in base 256, big endian, is [1, 3].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_be_radix(256);\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 1, 3]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n // 259, in base 256, little endian, is [3, 1].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_le_radix(256);\n assert_eq(bytes, [3, 1, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_radix_example\n\n #[test(should_fail_with = \"radix must be greater than 1\")]\n fn test_to_le_radix_1() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(1);\n } else {\n panic(\"radix must be greater than 1\");\n }\n }\n\n // Updated test to account for Brillig restriction that radix must be greater than 2\n #[test(should_fail_with = \"radix must be greater than 1\")]\n fn test_to_le_radix_brillig_1() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 1;\n let _: [u8; 8] = field.to_le_radix(1);\n } else {\n panic(\"radix must be greater than 1\");\n }\n }\n\n #[test(should_fail_with = \"radix must be a power of 2\")]\n fn test_to_le_radix_3() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(3);\n } else {\n panic(\"radix must be a power of 2\");\n }\n }\n\n #[test]\n fn test_to_le_radix_brillig_3() {\n // this test should only fail in constrained mode\n if runtime::is_unconstrained() {\n let field = 1;\n let out: [u8; 8] = field.to_le_radix(3);\n let mut expected = [0; 8];\n expected[0] = 1;\n assert(out == expected, \"unexpected result\");\n }\n }\n\n #[test(should_fail_with = \"radix must be less than or equal to 256\")]\n fn test_to_le_radix_512() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(512);\n } else {\n panic(\"radix must be less than or equal to 256\")\n }\n }\n\n #[test(should_fail_with = \"Field failed to decompose into specified 16 limbs\")]\n unconstrained fn not_enough_limbs_brillig() {\n let _: [u8; 16] = 0x100000000000000000000000000000000.to_le_bytes();\n }\n\n #[test(should_fail_with = \"Field failed to decompose into specified 16 limbs\")]\n fn not_enough_limbs() {\n let _: [u8; 16] = 0x100000000000000000000000000000000.to_le_bytes();\n }\n\n #[test]\n unconstrained fn test_field_less_than() {\n assert(field_less_than(0, 1));\n assert(field_less_than(0, 0x100));\n assert(field_less_than(0x100, 0 - 1));\n assert(!field_less_than(0 - 1, 0));\n }\n\n #[test]\n unconstrained fn test_large_field_values_unconstrained() {\n let large_field = 0xffffffffffffffff;\n\n let bits: [u1; 64] = large_field.to_le_bits();\n assert_eq(bits[0], 1);\n\n let bytes: [u8; 8] = large_field.to_le_bytes();\n assert_eq(Field::from_le_bytes::<8>(bytes), large_field);\n\n let radix_bytes: [u8; 8] = large_field.to_le_radix(256);\n assert_eq(Field::from_le_bytes::<8>(radix_bytes), large_field);\n }\n\n #[test]\n fn test_large_field_values() {\n let large_val = 0xffffffffffffffff;\n\n let bits: [u1; 64] = large_val.to_le_bits();\n assert_eq(bits[0], 1);\n\n let bytes: [u8; 8] = large_val.to_le_bytes();\n assert_eq(Field::from_le_bytes::<8>(bytes), large_val);\n\n let radix_bytes: [u8; 8] = large_val.to_le_radix(256);\n assert_eq(Field::from_le_bytes::<8>(radix_bytes), large_val);\n }\n\n #[test]\n fn test_decomposition_edge_cases() {\n let zero_bits: [u1; 8] = 0.to_le_bits();\n assert_eq(zero_bits, [0; 8]);\n\n let zero_bytes: [u8; 8] = 0.to_le_bytes();\n assert_eq(zero_bytes, [0; 8]);\n\n let one_bits: [u1; 8] = 1.to_le_bits();\n let expected: [u1; 8] = [1, 0, 0, 0, 0, 0, 0, 0];\n assert_eq(one_bits, expected);\n\n let pow2_bits: [u1; 8] = 4.to_le_bits();\n let expected: [u1; 8] = [0, 0, 1, 0, 0, 0, 0, 0];\n assert_eq(pow2_bits, expected);\n }\n\n #[test]\n fn test_pow_32() {\n assert_eq(2.pow_32(3), 8);\n assert_eq(3.pow_32(2), 9);\n assert_eq(5.pow_32(0), 1);\n assert_eq(7.pow_32(1), 7);\n\n assert_eq(2.pow_32(10), 1024);\n\n assert_eq(0.pow_32(5), 0);\n assert_eq(0.pow_32(0), 1);\n\n assert_eq(1.pow_32(100), 1);\n }\n\n #[test]\n fn test_sgn0() {\n assert_eq(0.sgn0(), 0);\n assert_eq(2.sgn0(), 0);\n assert_eq(4.sgn0(), 0);\n assert_eq(100.sgn0(), 0);\n\n assert_eq(1.sgn0(), 1);\n assert_eq(3.sgn0(), 1);\n assert_eq(5.sgn0(), 1);\n assert_eq(101.sgn0(), 1);\n }\n\n #[test(should_fail_with = \"Field failed to decompose into specified 8 limbs\")]\n fn test_bit_decomposition_overflow() {\n // 8 bits can't represent large field values\n let large_val = 0x1000000000000000;\n let _: [u1; 8] = large_val.to_le_bits();\n }\n\n #[test(should_fail_with = \"Field failed to decompose into specified 4 limbs\")]\n fn test_byte_decomposition_overflow() {\n // 4 bytes can't represent large field values\n let large_val = 0x1000000000000000;\n let _: [u8; 4] = large_val.to_le_bytes();\n }\n\n #[test]\n fn test_to_from_be_bytes_bn254_edge_cases() {\n if crate::compat::is_bn254() {\n // checking that decrementing this byte produces the expected 32 BE bytes for (modulus - 1)\n let mut p_minus_1_bytes: [u8; 32] = modulus_be_bytes().as_array();\n assert(p_minus_1_bytes[32 - 1] > 0);\n p_minus_1_bytes[32 - 1] -= 1;\n\n let p_minus_1 = Field::from_be_bytes::<32>(p_minus_1_bytes);\n assert_eq(p_minus_1 + 1, 0);\n\n // checking that converting (modulus - 1) from and then to 32 BE bytes produces the same bytes\n let p_minus_1_converted_bytes: [u8; 32] = p_minus_1.to_be_bytes();\n assert_eq(p_minus_1_converted_bytes, p_minus_1_bytes);\n\n // checking that incrementing this byte produces 32 BE bytes for (modulus + 1)\n let mut p_plus_1_bytes: [u8; 32] = modulus_be_bytes().as_array();\n assert(p_plus_1_bytes[32 - 1] < 255);\n p_plus_1_bytes[32 - 1] += 1;\n\n let p_plus_1 = Field::from_be_bytes::<32>(p_plus_1_bytes);\n assert_eq(p_plus_1, 1);\n\n // checking that converting p_plus_1 to 32 BE bytes produces the same\n // byte set to 1 as p_plus_1_bytes and otherwise zeroes\n let mut p_plus_1_converted_bytes: [u8; 32] = p_plus_1.to_be_bytes();\n assert_eq(p_plus_1_converted_bytes[32 - 1], 1);\n p_plus_1_converted_bytes[32 - 1] = 0;\n assert_eq(p_plus_1_converted_bytes, [0; 32]);\n\n // checking that Field::from_be_bytes::<32> on the Field modulus produces 0\n assert_eq(modulus_be_bytes().len(), 32);\n let p = Field::from_be_bytes::<32>(modulus_be_bytes().as_array());\n assert_eq(p, 0);\n\n // checking that converting 0 to 32 BE bytes produces 32 zeroes\n let p_bytes: [u8; 32] = 0.to_be_bytes();\n assert_eq(p_bytes, [0; 32]);\n }\n }\n\n #[test]\n fn test_to_from_le_bytes_bn254_edge_cases() {\n if crate::compat::is_bn254() {\n // checking that decrementing this byte produces the expected 32 LE bytes for (modulus - 1)\n let mut p_minus_1_bytes: [u8; 32] = modulus_le_bytes().as_array();\n assert(p_minus_1_bytes[0] > 0);\n p_minus_1_bytes[0] -= 1;\n\n let p_minus_1 = Field::from_le_bytes::<32>(p_minus_1_bytes);\n assert_eq(p_minus_1 + 1, 0);\n\n // checking that converting (modulus - 1) from and then to 32 BE bytes produces the same bytes\n let p_minus_1_converted_bytes: [u8; 32] = p_minus_1.to_le_bytes();\n assert_eq(p_minus_1_converted_bytes, p_minus_1_bytes);\n\n // checking that incrementing this byte produces 32 LE bytes for (modulus + 1)\n let mut p_plus_1_bytes: [u8; 32] = modulus_le_bytes().as_array();\n assert(p_plus_1_bytes[0] < 255);\n p_plus_1_bytes[0] += 1;\n\n let p_plus_1 = Field::from_le_bytes::<32>(p_plus_1_bytes);\n assert_eq(p_plus_1, 1);\n\n // checking that converting p_plus_1 to 32 LE bytes produces the same\n // byte set to 1 as p_plus_1_bytes and otherwise zeroes\n let mut p_plus_1_converted_bytes: [u8; 32] = p_plus_1.to_le_bytes();\n assert_eq(p_plus_1_converted_bytes[0], 1);\n p_plus_1_converted_bytes[0] = 0;\n assert_eq(p_plus_1_converted_bytes, [0; 32]);\n\n // checking that Field::from_le_bytes::<32> on the Field modulus produces 0\n assert_eq(modulus_le_bytes().len(), 32);\n let p = Field::from_le_bytes::<32>(modulus_le_bytes().as_array());\n assert_eq(p, 0);\n\n // checking that converting 0 to 32 LE bytes produces 32 zeroes\n let p_bytes: [u8; 32] = 0.to_le_bytes();\n assert_eq(p_bytes, [0; 32]);\n }\n }\n\n /// Convert a little endian bit array to a field element.\n /// If the provided bit array overflows the field modulus then the Field will silently wrap around.\n fn from_le_bits<let N: u32>(bits: [u1; N]) -> Field {\n static_assert(\n N <= modulus_le_bits().len(),\n \"N must be less than or equal to modulus_le_bits().len()\",\n );\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bits[i] as Field) * v;\n v = v * 2;\n }\n result\n }\n\n /// Convert a big endian bit array to a field element.\n /// If the provided bit array overflows the field modulus then the Field will silently wrap around.\n fn from_be_bits<let N: u32>(bits: [u1; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bits[N - 1 - i] as Field) * v;\n v = v * 2;\n }\n result\n }\n\n #[test]\n fn test_to_from_be_bits_bn254_edge_cases() {\n if crate::compat::is_bn254() {\n // checking that decrementing this bit produces the expected 254 BE bits for (modulus - 1)\n let mut p_minus_1_bits: [u1; 254] = modulus_be_bits().as_array();\n assert(p_minus_1_bits[254 - 1] > 0);\n p_minus_1_bits[254 - 1] -= 1;\n\n let p_minus_1 = from_be_bits::<254>(p_minus_1_bits);\n assert_eq(p_minus_1 + 1, 0);\n\n // checking that converting (modulus - 1) from and then to 254 BE bits produces the same bits\n let p_minus_1_converted_bits: [u1; 254] = p_minus_1.to_be_bits();\n assert_eq(p_minus_1_converted_bits, p_minus_1_bits);\n\n // checking that incrementing this bit produces 254 BE bits for (modulus + 4)\n let mut p_plus_4_bits: [u1; 254] = modulus_be_bits().as_array();\n assert(p_plus_4_bits[254 - 3] < 1);\n p_plus_4_bits[254 - 3] += 1;\n\n let p_plus_4 = from_be_bits::<254>(p_plus_4_bits);\n assert_eq(p_plus_4, 4);\n\n // checking that converting p_plus_4 to 254 BE bits produces the same\n // bit set to 1 as p_plus_4_bits and otherwise zeroes\n let mut p_plus_4_converted_bits: [u1; 254] = p_plus_4.to_be_bits();\n assert_eq(p_plus_4_converted_bits[254 - 3], 1);\n p_plus_4_converted_bits[254 - 3] = 0;\n assert_eq(p_plus_4_converted_bits, [0; 254]);\n\n // checking that Field::from_be_bits::<254> on the Field modulus produces 0\n assert_eq(modulus_be_bits().len(), 254);\n let p = from_be_bits::<254>(modulus_be_bits().as_array());\n assert_eq(p, 0);\n\n // checking that converting 0 to 254 BE bytes produces 254 zeroes\n let p_bits: [u1; 254] = 0.to_be_bits();\n assert_eq(p_bits, [0; 254]);\n }\n }\n\n #[test]\n fn test_to_from_le_bits_bn254_edge_cases() {\n if crate::compat::is_bn254() {\n // checking that decrementing this bit produces the expected 254 LE bits for (modulus - 1)\n let mut p_minus_1_bits: [u1; 254] = modulus_le_bits().as_array();\n assert(p_minus_1_bits[0] > 0);\n p_minus_1_bits[0] -= 1;\n\n let p_minus_1 = from_le_bits::<254>(p_minus_1_bits);\n assert_eq(p_minus_1 + 1, 0);\n\n // checking that converting (modulus - 1) from and then to 254 BE bits produces the same bits\n let p_minus_1_converted_bits: [u1; 254] = p_minus_1.to_le_bits();\n assert_eq(p_minus_1_converted_bits, p_minus_1_bits);\n\n // checking that incrementing this bit produces 254 LE bits for (modulus + 4)\n let mut p_plus_4_bits: [u1; 254] = modulus_le_bits().as_array();\n assert(p_plus_4_bits[2] < 1);\n p_plus_4_bits[2] += 1;\n\n let p_plus_4 = from_le_bits::<254>(p_plus_4_bits);\n assert_eq(p_plus_4, 4);\n\n // checking that converting p_plus_4 to 254 LE bits produces the same\n // bit set to 1 as p_plus_4_bits and otherwise zeroes\n let mut p_plus_4_converted_bits: [u1; 254] = p_plus_4.to_le_bits();\n assert_eq(p_plus_4_converted_bits[2], 1);\n p_plus_4_converted_bits[2] = 0;\n assert_eq(p_plus_4_converted_bits, [0; 254]);\n\n // checking that Field::from_le_bits::<254> on the Field modulus produces 0\n assert_eq(modulus_le_bits().len(), 254);\n let p = from_le_bits::<254>(modulus_le_bits().as_array());\n assert_eq(p, 0);\n\n // checking that converting 0 to 254 LE bytes produces 254 zeroes\n let p_bits: [u1; 254] = 0.to_le_bits();\n assert_eq(p_bits, [0; 254]);\n }\n }\n}\n"
|
|
4354
4354
|
},
|
|
4355
4355
|
"182": {
|
|
4356
4356
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/oracle/message_processing.nr",
|
|
@@ -4402,7 +4402,7 @@
|
|
|
4402
4402
|
},
|
|
4403
4403
|
"3": {
|
|
4404
4404
|
"path": "std/array/mod.nr",
|
|
4405
|
-
"source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl<T, let N: u32> [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi<U, Env>(self, f: fn[Env](u32, T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each<Env>(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi<Env>(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold<U, Env>(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce<Env>(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n\n /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat<let M: u32>(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n }\n}\n\nimpl<T, let N: u32> [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the [`Self::sort_via`] function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a, b| a <= b)\n }\n}\n\nimpl<T, let N: u32> [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { quicksort::quicksort(self, ordering) };\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n}\n\nimpl<let N: u32> [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n\n global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n"
|
|
4405
|
+
"source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl<T, let N: u32> [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a vector.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let vector = array.as_vector();\n /// assert_eq(vector, &[1, 2]);\n /// ```\n #[builtin(as_vector)]\n pub fn as_vector(self) -> [T] {}\n\n /// Returns this array as a vector.\n /// This method is deprecated in favor of `as_vector`.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let vector = array.as_slice();\n /// assert_eq(vector, &[1, 2]);\n /// ```\n #[builtin(as_vector)]\n #[deprecated(\"This method has been renamed to `as_vector`\")]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi<U, Env>(self, f: fn[Env](u32, T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each<Env>(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi<Env>(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold<U, Env>(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce<Env>(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n\n /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat<let M: u32>(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n }\n}\n\nimpl<T, let N: u32> [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the [`Self::sort_via`] function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a, b| a <= b)\n }\n}\n\nimpl<T, let N: u32> [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { quicksort::quicksort(self, ordering) };\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n}\n\nimpl<let N: u32> [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n\n global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n"
|
|
4406
4406
|
},
|
|
4407
4407
|
"312": {
|
|
4408
4408
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr",
|
|
@@ -4450,7 +4450,7 @@
|
|
|
4450
4450
|
},
|
|
4451
4451
|
"43": {
|
|
4452
4452
|
"path": "std/panic.nr",
|
|
4453
|
-
"source": "pub fn panic<T, U
|
|
4453
|
+
"source": "pub fn panic<T, U>(message: T) -> U\nwhere\n T: StringLike,\n{\n assert(false, message);\n crate::mem::zeroed()\n}\n\ntrait StringLike {}\n\nimpl<let N: u32> StringLike for str<N> {}\nimpl<let N: u32, T> StringLike for fmtstr<N, T> {}\n"
|
|
4454
4454
|
},
|
|
4455
4455
|
"51": {
|
|
4456
4456
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-contracts/contracts/account/simulated_account_contract/src/main.nr",
|
|
@@ -4466,7 +4466,7 @@
|
|
|
4466
4466
|
},
|
|
4467
4467
|
"6": {
|
|
4468
4468
|
"path": "std/collections/bounded_vec.nr",
|
|
4469
|
-
"source": "use crate::{cmp::Eq, convert::From, runtime::is_unconstrained, static_assert};\n\n/// A `BoundedVec<T, MaxLen>` is a growable storage similar to a [`Vec`][crate::collections::vec::Vec]`<T>` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n///\n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n///\n/// For these reasons `BoundedVec<T, N>` should generally be preferred over `Vec<T>` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n///\n/// Example:\n///\n/// ```noir\n/// let mut vector: BoundedVec<Field, 10> = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec<Field, 10> = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec<Field, 10> {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec<Field, 3> = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a\n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn sum_of_first_three<let N: u32>(v: BoundedVec<u32, N>) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n ///\n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n ///\n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n ///\n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure.\n /// vec.set_unchecked(2, 42);\n /// println(vec);\n ///\n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n ///\n /// Panics if the new length of the vector will be greater than the max length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n ///\n /// v.push(1);\n /// v.push(2);\n ///\n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec<Field, 4> = BoundedVec::new();\n /// assert(v.len() == 0);\n ///\n /// v.push(100);\n /// assert(v.len() == 1);\n ///\n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n ///\n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n ///\n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n ///\n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n ///\n /// Note that uninitialized elements may be zeroed out!\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n ///\n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n ///\n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array<let Len: u32>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// ```noir\n /// let mut v1: BoundedVec<Field, 5> = BoundedVec::new();\n /// let mut v2: BoundedVec<Field, 7> = BoundedVec::new();\n ///\n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n ///\n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n if is_unconstrained() {\n for i in 0..append_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n } else {\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input.\n /// The maximum length of the vector is determined based on the type signature.\n ///\n /// Example:\n ///\n /// ```noir\n /// let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n static_assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n ///\n /// Panics if the vector is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n ///\n /// let two = v.pop();\n /// let one = v.pop();\n ///\n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0, \"cannot pop from an empty vector\");\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec<u32, 3> = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n ///\n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n if is_unconstrained() {\n for i in 0..self.len {\n ret |= predicate(self.storage[i]);\n }\n } else {\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element\n /// in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.mapi(|i, value| i + value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn mapi<U, Env>(self, f: fn[Env](u32, T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Calls a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::<u32, 4>::new();\n /// vec.for_each(|value| result.push(value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_each<Env>(self, f: fn[Env](T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Calls a closure on each element in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::<u32, 4>::new();\n /// vec.for_eachi(|i, value| result.push(i + value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_eachi<Env>(self, f: fn[Env](u32, T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(i, self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function will zero out any elements at or past index `len` of `array`.\n /// This incurs an extra runtime cost of O(MaxLen). If you are sure your array is\n /// zeroed after that index, you can use [`from_parts_unchecked`][Self::from_parts_unchecked] to remove the extra loop.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_parts([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n /// ```\n pub fn from_parts(mut array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n let zeroed = crate::mem::zeroed();\n\n if is_unconstrained() {\n for i in len..MaxLen {\n array[i] = zeroed;\n }\n } else {\n for i in 0..MaxLen {\n if i >= len {\n array[i] = zeroed;\n }\n }\n }\n\n BoundedVec { storage: array, len }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function is unsafe because it expects all elements past the `len` index\n /// of `array` to be zeroed, but does not check for this internally. Use `from_parts`\n /// for a safe version of this function which does zero out any indices past the\n /// given length. Invalidating this assumption can notably cause `BoundedVec::eq`\n /// to give incorrect results since it will check even elements past `len`.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n ///\n /// // invalid use!\n /// let vec1: BoundedVec<u32, 4> = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n /// let vec2: BoundedVec<u32, 4> = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n ///\n /// // both vecs have length 3 so we'd expect them to be equal, but this\n /// // fails because elements past the length are still checked in eq\n /// assert_eq(vec1, vec2); // fails\n /// ```\n pub fn from_parts_unchecked(array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n BoundedVec { storage: array, len }\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen>\nwhere\n T: Eq,\n{\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n if self.len == other.len {\n self.storage == other.storage\n } else {\n false\n }\n }\n}\n\nimpl<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n let _ = vec.get(0);\n }\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_beyond_length() {\n let vec: BoundedVec<u32, 5> = BoundedVec::from_array([1, 2, 3]);\n let _ = vec.get(3);\n }\n\n #[test]\n fn get_works_within_bounds() {\n let vec: BoundedVec<u32, 5> = BoundedVec::from_array([1, 2, 3, 4, 5]);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(2), 3);\n assert_eq(vec.get(4), 5);\n }\n\n #[test]\n fn get_unchecked_works() {\n let vec: BoundedVec<u32, 5> = BoundedVec::from_array([1, 2, 3]);\n assert_eq(vec.get_unchecked(0), 1);\n assert_eq(vec.get_unchecked(2), 3);\n }\n\n #[test]\n fn get_unchecked_works_past_len() {\n let vec: BoundedVec<u32, 5> = BoundedVec::from_array([1, 2, 3]);\n assert_eq(vec.get_unchecked(4), 0);\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_setting_beyond_length() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::from_array([1, 2, 3]);\n vec.set(3, 4);\n }\n\n #[test]\n fn set_unchecked_operations() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n\n vec.set_unchecked(0, 10);\n assert_eq(vec.get(0), 10);\n }\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn set_unchecked_operations_past_len() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n\n vec.set_unchecked(3, 40);\n assert_eq(vec.get(3), 40);\n }\n\n #[test]\n fn set_preserves_other_elements() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::from_array([1, 2, 3, 4, 5]);\n\n vec.set(2, 30);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 30);\n assert_eq(vec.get(3), 4);\n assert_eq(vec.get(4), 5);\n }\n }\n\n mod any {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn returns_false_if_predicate_not_satisfied() {\n let vec: BoundedVec<bool, 4> = BoundedVec::from_array([false, false, false, false]);\n let result = vec.any(|value| value);\n\n assert(!result);\n }\n\n #[test]\n fn returns_true_if_predicate_satisfied() {\n let vec: BoundedVec<bool, 4> = BoundedVec::from_array([false, false, true, true]);\n let result = vec.any(|value| value);\n\n assert(result);\n }\n\n #[test]\n fn returns_false_on_empty_boundedvec() {\n let vec: BoundedVec<bool, 0> = BoundedVec::new();\n let result = vec.any(|value| value);\n\n assert(!result);\n }\n\n #[test]\n fn any_with_complex_predicates() {\n let vec: BoundedVec<u32, 5> = BoundedVec::from_array([1, 2, 3, 4, 5]);\n\n assert(vec.any(|x| x > 3));\n assert(!vec.any(|x| x > 10));\n assert(vec.any(|x| x % 2 == 0)); // has a even number\n assert(vec.any(|x| x == 3)); // has a specific value\n }\n\n #[test]\n fn any_with_partial_vector() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n\n assert(vec.any(|x| x == 1));\n assert(vec.any(|x| x == 2));\n assert(!vec.any(|x| x == 3));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn map_with_conditional_logic() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n\n let result = vec.map(|x| if x % 2 == 0 { x * 2 } else { x });\n let expected = BoundedVec::from_array([1, 4, 3, 8]);\n assert_eq(result, expected);\n }\n\n #[test]\n fn map_preserves_length() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|x| x * 2);\n\n assert_eq(result.len(), vec.len());\n assert_eq(result.max_len(), vec.max_len());\n }\n\n #[test]\n fn map_on_empty_vector() {\n let vec: BoundedVec<u32, 5> = BoundedVec::new();\n let result = vec.map(|x| x * 2);\n assert_eq(result, vec);\n assert_eq(result.len(), 0);\n assert_eq(result.max_len(), 5);\n }\n }\n\n mod mapi {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-mapi-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| i + value * 2);\n // docs:end:bounded-vec-mapi-example\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| (i + value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.mapi(|_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn mapi_with_index_branching_logic() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n\n let result = vec.mapi(|i, x| if i % 2 == 0 { x * 2 } else { x });\n let expected = BoundedVec::from_array([2, 2, 6, 4]);\n assert_eq(result, expected);\n }\n }\n\n mod for_each {\n use crate::collections::bounded_vec::BoundedVec;\n\n // map in terms of for_each\n fn for_each_map<T, U, Env, let MaxLen: u32>(\n input: BoundedVec<T, MaxLen>,\n f: fn[Env](T) -> U,\n ) -> BoundedVec<U, MaxLen> {\n let mut output = BoundedVec::<U, MaxLen>::new();\n let output_ref = &mut output;\n input.for_each(|x| output_ref.push(f(x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-each-example\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([1, 2, 3]);\n vec.for_each(|value| { *acc_ref += value; });\n // docs:end:bounded-vec-for-each-example\n assert_eq(acc, 6);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| value * 2);\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = for_each_map(vec, |value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn for_each_on_empty_vector() {\n let vec: BoundedVec<u32, 5> = BoundedVec::new();\n let mut count = 0;\n let count_ref = &mut count;\n vec.for_each(|_| { *count_ref += 1; });\n assert_eq(count, 0);\n }\n\n #[test]\n fn for_each_with_side_effects() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([1, 2, 3]);\n let mut seen = BoundedVec::<u32, 3>::new();\n let seen_ref = &mut seen;\n vec.for_each(|x| seen_ref.push(x));\n assert_eq(seen, vec);\n }\n }\n\n mod for_eachi {\n use crate::collections::bounded_vec::BoundedVec;\n\n // mapi in terms of for_eachi\n fn for_eachi_mapi<T, U, Env, let MaxLen: u32>(\n input: BoundedVec<T, MaxLen>,\n f: fn[Env](u32, T) -> U,\n ) -> BoundedVec<U, MaxLen> {\n let mut output = BoundedVec::<U, MaxLen>::new();\n let output_ref = &mut output;\n input.for_eachi(|i, x| output_ref.push(f(i, x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-eachi-example\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([1, 2, 3]);\n vec.for_eachi(|i, value| { *acc_ref += i * value; });\n // docs:end:bounded-vec-for-eachi-example\n\n // 0 * 1 + 1 * 2 + 2 * 3\n assert_eq(acc, 8);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| i + value * 2);\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| (i + value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = for_eachi_mapi(vec, |_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn for_eachi_on_empty_vector() {\n let vec: BoundedVec<u32, 5> = BoundedVec::new();\n let mut count = 0;\n let count_ref = &mut count;\n vec.for_eachi(|_, _| { *count_ref += 1; });\n assert_eq(count, 0);\n }\n\n #[test]\n fn for_eachi_with_index_tracking() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([10, 20, 30]);\n let mut indices = BoundedVec::<u32, 3>::new();\n let indices_ref = &mut indices;\n vec.for_eachi(|i, _| indices_ref.push(i));\n\n let expected = BoundedVec::from_array([0, 1, 2]);\n assert_eq(indices, expected);\n }\n\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n assert_eq(bounded_vec.get(2), 3);\n }\n\n #[test(should_fail_with = \"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n\n #[test]\n fn from_array_preserves_order() {\n let array = [5, 3, 1, 4, 2];\n let vec: BoundedVec<u32, 5> = BoundedVec::from_array(array);\n for i in 0..array.len() {\n assert_eq(vec.get(i), array[i]);\n }\n }\n\n #[test]\n fn from_array_with_different_types() {\n let bool_array = [true, false, true];\n let bool_vec: BoundedVec<bool, 3> = BoundedVec::from_array(bool_array);\n assert_eq(bool_vec.len(), 3);\n assert_eq(bool_vec.get(0), true);\n assert_eq(bool_vec.get(1), false);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n use crate::convert::From;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n\n mod from_parts {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn from_parts() {\n // docs:start:from-parts\n let vec: BoundedVec<u32, 4> = BoundedVec::from_parts([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // Any elements past the given length are zeroed out, so these\n // two BoundedVecs will be completely equal\n let vec1: BoundedVec<u32, 4> = BoundedVec::from_parts([1, 2, 3, 1], 3);\n let vec2: BoundedVec<u32, 4> = BoundedVec::from_parts([1, 2, 3, 2], 3);\n assert_eq(vec1, vec2);\n // docs:end:from-parts\n }\n\n #[test]\n fn from_parts_unchecked() {\n // docs:start:from-parts-unchecked\n let vec: BoundedVec<u32, 4> = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // invalid use!\n let vec1: BoundedVec<u32, 4> = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n let vec2: BoundedVec<u32, 4> = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n\n // both vecs have length 3 so we'd expect them to be equal, but this\n // fails because elements past the length are still checked in eq\n assert(vec1 != vec2);\n // docs:end:from-parts-unchecked\n }\n }\n\n mod push_pop {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn push_and_pop_operations() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n\n assert_eq(vec.len(), 0);\n\n vec.push(1);\n assert_eq(vec.len(), 1);\n assert_eq(vec.get(0), 1);\n\n vec.push(2);\n assert_eq(vec.len(), 2);\n assert_eq(vec.get(1), 2);\n\n let popped = vec.pop();\n assert_eq(popped, 2);\n assert_eq(vec.len(), 1);\n\n let popped2 = vec.pop();\n assert_eq(popped2, 1);\n assert_eq(vec.len(), 0);\n }\n\n #[test(should_fail_with = \"push out of bounds\")]\n fn push_to_full_vector() {\n let mut vec: BoundedVec<u32, 2> = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n vec.push(3); // should panic\n }\n\n #[test(should_fail_with = \"cannot pop from an empty vector\")]\n fn pop_from_empty_vector() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n let _ = vec.pop(); // should panic\n }\n\n #[test]\n fn push_pop_cycle() {\n let mut vec: BoundedVec<u32, 3> = BoundedVec::new();\n\n // push to full\n vec.push(1);\n vec.push(2);\n vec.push(3);\n assert_eq(vec.len(), 3);\n\n // pop all\n assert_eq(vec.pop(), 3);\n assert_eq(vec.pop(), 2);\n assert_eq(vec.pop(), 1);\n assert_eq(vec.len(), 0);\n\n // push again\n vec.push(4);\n assert_eq(vec.len(), 1);\n assert_eq(vec.get(0), 4);\n }\n }\n\n mod extend {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn extend_from_array() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n vec.push(1);\n vec.extend_from_array([2, 3]);\n\n assert_eq(vec.len(), 3);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 3);\n }\n\n #[test]\n fn extend_from_slice() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n vec.push(1);\n vec.extend_from_slice(&[2, 3]);\n\n assert_eq(vec.len(), 3);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 3);\n }\n\n #[test]\n fn extend_from_bounded_vec() {\n let mut vec1: BoundedVec<u32, 5> = BoundedVec::new();\n let mut vec2: BoundedVec<u32, 3> = BoundedVec::new();\n\n vec1.push(1);\n vec2.push(2);\n vec2.push(3);\n\n vec1.extend_from_bounded_vec(vec2);\n\n assert_eq(vec1.len(), 3);\n assert_eq(vec1.get(0), 1);\n assert_eq(vec1.get(1), 2);\n assert_eq(vec1.get(2), 3);\n }\n\n #[test(should_fail_with = \"extend_from_array out of bounds\")]\n fn extend_array_beyond_max_len() {\n let mut vec: BoundedVec<u32, 3> = BoundedVec::new();\n vec.push(1);\n vec.extend_from_array([2, 3, 4]); // should panic\n }\n\n #[test(should_fail_with = \"extend_from_slice out of bounds\")]\n fn extend_slice_beyond_max_len() {\n let mut vec: BoundedVec<u32, 3> = BoundedVec::new();\n vec.push(1);\n vec.extend_from_slice(&[2, 3, 4]); // S]should panic\n }\n\n #[test(should_fail_with = \"extend_from_bounded_vec out of bounds\")]\n fn extend_bounded_vec_beyond_max_len() {\n let mut vec: BoundedVec<u32, 3> = BoundedVec::new();\n let other: BoundedVec<u32, 5> = BoundedVec::from_array([1, 2, 3, 4, 5]);\n vec.extend_from_bounded_vec(other); // should panic\n }\n\n #[test]\n fn extend_with_empty_collections() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n let original_len = vec.len();\n\n vec.extend_from_array([]);\n assert_eq(vec.len(), original_len);\n\n vec.extend_from_slice(&[]);\n assert_eq(vec.len(), original_len);\n\n let empty: BoundedVec<u32, 3> = BoundedVec::new();\n vec.extend_from_bounded_vec(empty);\n assert_eq(vec.len(), original_len);\n }\n }\n\n mod storage {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn storage_consistency() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n\n // test initial storage state\n assert_eq(vec.storage(), [0, 0, 0, 0, 0]);\n\n vec.push(1);\n vec.push(2);\n\n // test storage after modifications\n assert_eq(vec.storage(), [1, 2, 0, 0, 0]);\n\n // storage doesn't change length\n assert_eq(vec.len(), 2);\n assert_eq(vec.max_len(), 5);\n }\n\n #[test]\n fn storage_after_pop() {\n let mut vec: BoundedVec<u32, 3> = BoundedVec::from_array([1, 2, 3]);\n\n let _ = vec.pop();\n // after pop, the last element should be zeroed\n assert_eq(vec.storage(), [1, 2, 0]);\n assert_eq(vec.len(), 2);\n }\n\n #[test]\n fn vector_immutable() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([1, 2, 3]);\n let storage = vec.storage();\n\n assert_eq(storage, [1, 2, 3]);\n\n // Verify that the original vector is unchanged\n assert_eq(vec.len(), 3);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 3);\n }\n }\n}\n"
|
|
4469
|
+
"source": "use crate::{cmp::Eq, convert::From, runtime::is_unconstrained, static_assert};\n\n/// A `BoundedVec<T, MaxLen>` is a growable storage similar to a built-in vector except that it\n/// is bounded with a maximum possible length. `BoundedVec` is also not\n/// subject to the same restrictions vectors are (notably, nested vectors are disallowed).\n///\n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n///\n/// For these reasons `BoundedVec<T, N>` should generally be preferred over vectors when there\n/// is a reasonable maximum bound that can be placed on the vector.\n///\n/// Example:\n///\n/// ```noir\n/// let mut vector: BoundedVec<Field, 10> = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec<Field, 10> = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec<Field, 10> {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec<Field, 3> = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a\n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn sum_of_first_three<let N: u32>(v: BoundedVec<u32, N>) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n ///\n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n ///\n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n ///\n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure.\n /// vec.set_unchecked(2, 42);\n /// println(vec);\n ///\n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n ///\n /// Panics if the new length of the vector will be greater than the max length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n ///\n /// v.push(1);\n /// v.push(2);\n ///\n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec<Field, 4> = BoundedVec::new();\n /// assert(v.len() == 0);\n ///\n /// v.push(100);\n /// assert(v.len() == 1);\n ///\n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n ///\n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n ///\n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n ///\n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n ///\n /// Note that uninitialized elements may be zeroed out!\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n ///\n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n ///\n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array<let Len: u32>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given vector to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_vector(&[2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_vector(&mut self, vector: [T]) {\n let new_len = self.len + vector.len();\n assert(new_len <= MaxLen, \"extend_from_vector out of bounds\");\n for i in 0..vector.len() {\n self.storage[self.len + i] = vector[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// ```noir\n /// let mut v1: BoundedVec<Field, 5> = BoundedVec::new();\n /// let mut v2: BoundedVec<Field, 7> = BoundedVec::new();\n ///\n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n ///\n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n if is_unconstrained() {\n for i in 0..append_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n } else {\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input.\n /// The maximum length of the vector is determined based on the type signature.\n ///\n /// Example:\n ///\n /// ```noir\n /// let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n static_assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n ///\n /// Panics if the vector is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n ///\n /// let two = v.pop();\n /// let one = v.pop();\n ///\n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0, \"cannot pop from an empty vector\");\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec<u32, 3> = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n ///\n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n if is_unconstrained() {\n for i in 0..self.len {\n ret |= predicate(self.storage[i]);\n }\n } else {\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element\n /// in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.mapi(|i, value| i + value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn mapi<U, Env>(self, f: fn[Env](u32, T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Calls a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::<u32, 4>::new();\n /// vec.for_each(|value| result.push(value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_each<Env>(self, f: fn[Env](T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Calls a closure on each element in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::<u32, 4>::new();\n /// vec.for_eachi(|i, value| result.push(i + value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_eachi<Env>(self, f: fn[Env](u32, T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(i, self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function will zero out any elements at or past index `len` of `array`.\n /// This incurs an extra runtime cost of O(MaxLen). If you are sure your array is\n /// zeroed after that index, you can use [`from_parts_unchecked`][Self::from_parts_unchecked] to remove the extra loop.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_parts([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n /// ```\n pub fn from_parts(mut array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n let zeroed = crate::mem::zeroed();\n\n if is_unconstrained() {\n for i in len..MaxLen {\n array[i] = zeroed;\n }\n } else {\n for i in 0..MaxLen {\n if i >= len {\n array[i] = zeroed;\n }\n }\n }\n\n BoundedVec { storage: array, len }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function is unsafe because it expects all elements past the `len` index\n /// of `array` to be zeroed, but does not check for this internally. Use `from_parts`\n /// for a safe version of this function which does zero out any indices past the\n /// given length. Invalidating this assumption can notably cause `BoundedVec::eq`\n /// to give incorrect results since it will check even elements past `len`.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n ///\n /// // invalid use!\n /// let vec1: BoundedVec<u32, 4> = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n /// let vec2: BoundedVec<u32, 4> = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n ///\n /// // both vecs have length 3 so we'd expect them to be equal, but this\n /// // fails because elements past the length are still checked in eq\n /// assert_eq(vec1, vec2); // fails\n /// ```\n pub fn from_parts_unchecked(array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n BoundedVec { storage: array, len }\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen>\nwhere\n T: Eq,\n{\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n if self.len == other.len {\n self.storage == other.storage\n } else {\n false\n }\n }\n}\n\nimpl<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n let _ = vec.get(0);\n }\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_beyond_length() {\n let vec: BoundedVec<u32, 5> = BoundedVec::from_array([1, 2, 3]);\n let _ = vec.get(3);\n }\n\n #[test]\n fn get_works_within_bounds() {\n let vec: BoundedVec<u32, 5> = BoundedVec::from_array([1, 2, 3, 4, 5]);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(2), 3);\n assert_eq(vec.get(4), 5);\n }\n\n #[test]\n fn get_unchecked_works() {\n let vec: BoundedVec<u32, 5> = BoundedVec::from_array([1, 2, 3]);\n assert_eq(vec.get_unchecked(0), 1);\n assert_eq(vec.get_unchecked(2), 3);\n }\n\n #[test]\n fn get_unchecked_works_past_len() {\n let vec: BoundedVec<u32, 5> = BoundedVec::from_array([1, 2, 3]);\n assert_eq(vec.get_unchecked(4), 0);\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_setting_beyond_length() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::from_array([1, 2, 3]);\n vec.set(3, 4);\n }\n\n #[test]\n fn set_unchecked_operations() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n\n vec.set_unchecked(0, 10);\n assert_eq(vec.get(0), 10);\n }\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn set_unchecked_operations_past_len() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n\n vec.set_unchecked(3, 40);\n assert_eq(vec.get(3), 40);\n }\n\n #[test]\n fn set_preserves_other_elements() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::from_array([1, 2, 3, 4, 5]);\n\n vec.set(2, 30);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 30);\n assert_eq(vec.get(3), 4);\n assert_eq(vec.get(4), 5);\n }\n }\n\n mod any {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn returns_false_if_predicate_not_satisfied() {\n let vec: BoundedVec<bool, 4> = BoundedVec::from_array([false, false, false, false]);\n let result = vec.any(|value| value);\n\n assert(!result);\n }\n\n #[test]\n fn returns_true_if_predicate_satisfied() {\n let vec: BoundedVec<bool, 4> = BoundedVec::from_array([false, false, true, true]);\n let result = vec.any(|value| value);\n\n assert(result);\n }\n\n #[test]\n fn returns_false_on_empty_boundedvec() {\n let vec: BoundedVec<bool, 0> = BoundedVec::new();\n let result = vec.any(|value| value);\n\n assert(!result);\n }\n\n #[test]\n fn any_with_complex_predicates() {\n let vec: BoundedVec<u32, 5> = BoundedVec::from_array([1, 2, 3, 4, 5]);\n\n assert(vec.any(|x| x > 3));\n assert(!vec.any(|x| x > 10));\n assert(vec.any(|x| x % 2 == 0)); // has a even number\n assert(vec.any(|x| x == 3)); // has a specific value\n }\n\n #[test]\n fn any_with_partial_vector() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n\n assert(vec.any(|x| x == 1));\n assert(vec.any(|x| x == 2));\n assert(!vec.any(|x| x == 3));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn map_with_conditional_logic() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n\n let result = vec.map(|x| if x % 2 == 0 { x * 2 } else { x });\n let expected = BoundedVec::from_array([1, 4, 3, 8]);\n assert_eq(result, expected);\n }\n\n #[test]\n fn map_preserves_length() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|x| x * 2);\n\n assert_eq(result.len(), vec.len());\n assert_eq(result.max_len(), vec.max_len());\n }\n\n #[test]\n fn map_on_empty_vector() {\n let vec: BoundedVec<u32, 5> = BoundedVec::new();\n let result = vec.map(|x| x * 2);\n assert_eq(result, vec);\n assert_eq(result.len(), 0);\n assert_eq(result.max_len(), 5);\n }\n }\n\n mod mapi {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-mapi-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| i + value * 2);\n // docs:end:bounded-vec-mapi-example\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| (i + value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.mapi(|_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn mapi_with_index_branching_logic() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n\n let result = vec.mapi(|i, x| if i % 2 == 0 { x * 2 } else { x });\n let expected = BoundedVec::from_array([2, 2, 6, 4]);\n assert_eq(result, expected);\n }\n }\n\n mod for_each {\n use crate::collections::bounded_vec::BoundedVec;\n\n // map in terms of for_each\n fn for_each_map<T, U, Env, let MaxLen: u32>(\n input: BoundedVec<T, MaxLen>,\n f: fn[Env](T) -> U,\n ) -> BoundedVec<U, MaxLen> {\n let mut output = BoundedVec::<U, MaxLen>::new();\n let output_ref = &mut output;\n input.for_each(|x| output_ref.push(f(x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-each-example\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([1, 2, 3]);\n vec.for_each(|value| { *acc_ref += value; });\n // docs:end:bounded-vec-for-each-example\n assert_eq(acc, 6);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| value * 2);\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = for_each_map(vec, |value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn for_each_on_empty_vector() {\n let vec: BoundedVec<u32, 5> = BoundedVec::new();\n let mut count = 0;\n let count_ref = &mut count;\n vec.for_each(|_| { *count_ref += 1; });\n assert_eq(count, 0);\n }\n\n #[test]\n fn for_each_with_side_effects() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([1, 2, 3]);\n let mut seen = BoundedVec::<u32, 3>::new();\n let seen_ref = &mut seen;\n vec.for_each(|x| seen_ref.push(x));\n assert_eq(seen, vec);\n }\n }\n\n mod for_eachi {\n use crate::collections::bounded_vec::BoundedVec;\n\n // mapi in terms of for_eachi\n fn for_eachi_mapi<T, U, Env, let MaxLen: u32>(\n input: BoundedVec<T, MaxLen>,\n f: fn[Env](u32, T) -> U,\n ) -> BoundedVec<U, MaxLen> {\n let mut output = BoundedVec::<U, MaxLen>::new();\n let output_ref = &mut output;\n input.for_eachi(|i, x| output_ref.push(f(i, x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-eachi-example\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([1, 2, 3]);\n vec.for_eachi(|i, value| { *acc_ref += i * value; });\n // docs:end:bounded-vec-for-eachi-example\n\n // 0 * 1 + 1 * 2 + 2 * 3\n assert_eq(acc, 8);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| i + value * 2);\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| (i + value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = for_eachi_mapi(vec, |_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn for_eachi_on_empty_vector() {\n let vec: BoundedVec<u32, 5> = BoundedVec::new();\n let mut count = 0;\n let count_ref = &mut count;\n vec.for_eachi(|_, _| { *count_ref += 1; });\n assert_eq(count, 0);\n }\n\n #[test]\n fn for_eachi_with_index_tracking() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([10, 20, 30]);\n let mut indices = BoundedVec::<u32, 3>::new();\n let indices_ref = &mut indices;\n vec.for_eachi(|i, _| indices_ref.push(i));\n\n let expected = BoundedVec::from_array([0, 1, 2]);\n assert_eq(indices, expected);\n }\n\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n assert_eq(bounded_vec.get(2), 3);\n }\n\n #[test(should_fail_with = \"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n\n #[test]\n fn from_array_preserves_order() {\n let array = [5, 3, 1, 4, 2];\n let vec: BoundedVec<u32, 5> = BoundedVec::from_array(array);\n for i in 0..array.len() {\n assert_eq(vec.get(i), array[i]);\n }\n }\n\n #[test]\n fn from_array_with_different_types() {\n let bool_array = [true, false, true];\n let bool_vec: BoundedVec<bool, 3> = BoundedVec::from_array(bool_array);\n assert_eq(bool_vec.len(), 3);\n assert_eq(bool_vec.get(0), true);\n assert_eq(bool_vec.get(1), false);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n use crate::convert::From;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n\n mod from_parts {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn from_parts() {\n // docs:start:from-parts\n let vec: BoundedVec<u32, 4> = BoundedVec::from_parts([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // Any elements past the given length are zeroed out, so these\n // two BoundedVecs will be completely equal\n let vec1: BoundedVec<u32, 4> = BoundedVec::from_parts([1, 2, 3, 1], 3);\n let vec2: BoundedVec<u32, 4> = BoundedVec::from_parts([1, 2, 3, 2], 3);\n assert_eq(vec1, vec2);\n // docs:end:from-parts\n }\n\n #[test]\n fn from_parts_unchecked() {\n // docs:start:from-parts-unchecked\n let vec: BoundedVec<u32, 4> = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // invalid use!\n let vec1: BoundedVec<u32, 4> = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n let vec2: BoundedVec<u32, 4> = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n\n // both vecs have length 3 so we'd expect them to be equal, but this\n // fails because elements past the length are still checked in eq\n assert(vec1 != vec2);\n // docs:end:from-parts-unchecked\n }\n }\n\n mod push_pop {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn push_and_pop_operations() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n\n assert_eq(vec.len(), 0);\n\n vec.push(1);\n assert_eq(vec.len(), 1);\n assert_eq(vec.get(0), 1);\n\n vec.push(2);\n assert_eq(vec.len(), 2);\n assert_eq(vec.get(1), 2);\n\n let popped = vec.pop();\n assert_eq(popped, 2);\n assert_eq(vec.len(), 1);\n\n let popped2 = vec.pop();\n assert_eq(popped2, 1);\n assert_eq(vec.len(), 0);\n }\n\n #[test(should_fail_with = \"push out of bounds\")]\n fn push_to_full_vector() {\n let mut vec: BoundedVec<u32, 2> = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n vec.push(3); // should panic\n }\n\n #[test(should_fail_with = \"cannot pop from an empty vector\")]\n fn pop_from_empty_vector() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n let _ = vec.pop(); // should panic\n }\n\n #[test]\n fn push_pop_cycle() {\n let mut vec: BoundedVec<u32, 3> = BoundedVec::new();\n\n // push to full\n vec.push(1);\n vec.push(2);\n vec.push(3);\n assert_eq(vec.len(), 3);\n\n // pop all\n assert_eq(vec.pop(), 3);\n assert_eq(vec.pop(), 2);\n assert_eq(vec.pop(), 1);\n assert_eq(vec.len(), 0);\n\n // push again\n vec.push(4);\n assert_eq(vec.len(), 1);\n assert_eq(vec.get(0), 4);\n }\n }\n\n mod extend {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn extend_from_array() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n vec.push(1);\n vec.extend_from_array([2, 3]);\n\n assert_eq(vec.len(), 3);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 3);\n }\n\n #[test]\n fn extend_from_vector() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n vec.push(1);\n vec.extend_from_vector(&[2, 3]);\n\n assert_eq(vec.len(), 3);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 3);\n }\n\n #[test]\n fn extend_from_bounded_vec() {\n let mut vec1: BoundedVec<u32, 5> = BoundedVec::new();\n let mut vec2: BoundedVec<u32, 3> = BoundedVec::new();\n\n vec1.push(1);\n vec2.push(2);\n vec2.push(3);\n\n vec1.extend_from_bounded_vec(vec2);\n\n assert_eq(vec1.len(), 3);\n assert_eq(vec1.get(0), 1);\n assert_eq(vec1.get(1), 2);\n assert_eq(vec1.get(2), 3);\n }\n\n #[test(should_fail_with = \"extend_from_array out of bounds\")]\n fn extend_array_beyond_max_len() {\n let mut vec: BoundedVec<u32, 3> = BoundedVec::new();\n vec.push(1);\n vec.extend_from_array([2, 3, 4]); // should panic\n }\n\n #[test(should_fail_with = \"extend_from_vector out of bounds\")]\n fn extend_vector_beyond_max_len() {\n let mut vec: BoundedVec<u32, 3> = BoundedVec::new();\n vec.push(1);\n vec.extend_from_vector(&[2, 3, 4]); // S]should panic\n }\n\n #[test(should_fail_with = \"extend_from_bounded_vec out of bounds\")]\n fn extend_bounded_vec_beyond_max_len() {\n let mut vec: BoundedVec<u32, 3> = BoundedVec::new();\n let other: BoundedVec<u32, 5> = BoundedVec::from_array([1, 2, 3, 4, 5]);\n vec.extend_from_bounded_vec(other); // should panic\n }\n\n #[test]\n fn extend_with_empty_collections() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n let original_len = vec.len();\n\n vec.extend_from_array([]);\n assert_eq(vec.len(), original_len);\n\n vec.extend_from_vector(&[]);\n assert_eq(vec.len(), original_len);\n\n let empty: BoundedVec<u32, 3> = BoundedVec::new();\n vec.extend_from_bounded_vec(empty);\n assert_eq(vec.len(), original_len);\n }\n }\n\n mod storage {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn storage_consistency() {\n let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n\n // test initial storage state\n assert_eq(vec.storage(), [0, 0, 0, 0, 0]);\n\n vec.push(1);\n vec.push(2);\n\n // test storage after modifications\n assert_eq(vec.storage(), [1, 2, 0, 0, 0]);\n\n // storage doesn't change length\n assert_eq(vec.len(), 2);\n assert_eq(vec.max_len(), 5);\n }\n\n #[test]\n fn storage_after_pop() {\n let mut vec: BoundedVec<u32, 3> = BoundedVec::from_array([1, 2, 3]);\n\n let _ = vec.pop();\n // after pop, the last element should be zeroed\n assert_eq(vec.storage(), [1, 2, 0]);\n assert_eq(vec.len(), 2);\n }\n\n #[test]\n fn vector_immutable() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([1, 2, 3]);\n let storage = vec.storage();\n\n assert_eq(storage, [1, 2, 3]);\n\n // Verify that the original vector is unchanged\n assert_eq(vec.len(), 3);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 3);\n }\n }\n}\n"
|
|
4470
4470
|
},
|
|
4471
4471
|
"60": {
|
|
4472
4472
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/capsules/mod.nr",
|
|
@@ -4480,6 +4480,10 @@
|
|
|
4480
4480
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/context/utility_context.nr",
|
|
4481
4481
|
"source": "use crate::oracle::{execution::get_utility_context, storage::storage_read};\nuse protocol_types::{address::AztecAddress, traits::Packable};\n\n// If you'll modify this struct don't forget to update utility_context.ts as well.\npub struct UtilityContext {\n block_number: u32,\n timestamp: u64,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UtilityContext {\n pub unconstrained fn new() -> Self {\n get_utility_context()\n }\n\n pub unconstrained fn at(contract_address: AztecAddress) -> Self {\n // We get a context with default contract address, and then we construct the final context with the provided\n // contract address.\n let default_context = get_utility_context();\n\n Self {\n block_number: default_context.block_number,\n timestamp: default_context.timestamp,\n contract_address,\n version: default_context.version,\n chain_id: default_context.chain_id,\n }\n }\n\n pub unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n // We get a context with default contract address and block number, and then we construct the final context\n // with the provided contract address and block number.\n let default_context = get_utility_context();\n\n Self {\n block_number,\n timestamp: default_context.timestamp,\n contract_address,\n version: default_context.version,\n chain_id: default_context.chain_id,\n }\n }\n\n pub fn block_number(self) -> u32 {\n self.block_number\n }\n\n pub fn timestamp(self) -> u64 {\n self.timestamp\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n pub fn version(self) -> Field {\n self.version\n }\n\n pub fn chain_id(self) -> Field {\n self.chain_id\n }\n\n pub unconstrained fn raw_storage_read<let N: u32>(\n self: Self,\n storage_slot: Field,\n ) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n pub unconstrained fn storage_read<T>(self, storage_slot: Field) -> T\n where\n T: Packable,\n {\n T::unpack(self.raw_storage_read(storage_slot))\n }\n}\n"
|
|
4482
4482
|
},
|
|
4483
|
+
"75": {
|
|
4484
|
+
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/event/event_interface.nr",
|
|
4485
|
+
"source": "use crate::{event::event_selector::EventSelector, messages::logs::event::MAX_EVENT_SERIALIZED_LEN};\nuse protocol_types::{\n constants::DOM_SEP__EVENT_COMMITMENT,\n hash::{poseidon2_hash_with_separator, poseidon2_hash_with_separator_bounded_vec},\n traits::{Serialize, ToField},\n};\n\npub trait EventInterface {\n fn get_event_type_id() -> EventSelector;\n}\n\n/// A private event's commitment is a value stored on-chain which is used to verify that the event was indeed emitted.\n///\n/// It requires a `randomness` value that must be produced alongside the event in order to perform said validation. This\n/// random value prevents attacks in which someone guesses plausible events (e.g. 'Alice transfers to Bob an amount of\n/// 10'), since they will not be able to test for existence of their guessed events without brute-forcing the entire\n/// `Field` space by guessing `randomness` values.\npub fn compute_private_event_commitment<Event>(event: Event, randomness: Field) -> Field\nwhere\n Event: EventInterface + Serialize,\n{\n poseidon2_hash_with_separator(\n [randomness, Event::get_event_type_id().to_field()].concat(event.serialize()),\n DOM_SEP__EVENT_COMMITMENT,\n )\n}\n\n/// Unconstrained variant of [compute_private_event_commitment] which takes the event in serialized form.\n///\n/// This function is unconstrained as the mechanism it uses to compute the commitment would be very inefficient in a\n/// constrained environment (due to the hashing of a dynamically sized array). This is not an issue as it is typically\n/// invoked when processing event messages, which is an unconstrained operation.\npub unconstrained fn compute_private_serialized_event_commitment(\n serialized_event: BoundedVec<Field, MAX_EVENT_SERIALIZED_LEN>,\n randomness: Field,\n event_type_id: Field,\n) -> Field {\n let mut commitment_preimage =\n BoundedVec::<_, 1 + MAX_EVENT_SERIALIZED_LEN>::from_array([randomness, event_type_id]);\n commitment_preimage.extend_from_bounded_vec(serialized_event);\n\n poseidon2_hash_with_separator_bounded_vec(commitment_preimage, DOM_SEP__EVENT_COMMITMENT)\n}\n\nmod test {\n use crate::event::event_interface::{\n compute_private_event_commitment, compute_private_serialized_event_commitment,\n EventInterface,\n };\n use crate::test::mocks::mock_event::MockEvent;\n use protocol_types::traits::{Serialize, ToField};\n\n global VALUE: Field = 7;\n global RANDOMNESS: Field = 10;\n\n #[test]\n unconstrained fn event_commitment_equivalence() {\n let event = MockEvent::new(VALUE).build_event();\n\n assert_eq(\n compute_private_event_commitment(event, RANDOMNESS),\n compute_private_serialized_event_commitment(\n BoundedVec::from_array(event.serialize()),\n RANDOMNESS,\n MockEvent::get_event_type_id().to_field(),\n ),\n );\n }\n}\n"
|
|
4486
|
+
},
|
|
4483
4487
|
"77": {
|
|
4484
4488
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/event/event_selector.nr",
|
|
4485
4489
|
"source": "use dep::protocol_types::{\n hash::poseidon2_hash_bytes,\n traits::{Deserialize, Empty, FromField, Serialize, ToField},\n};\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct EventSelector {\n // 1st 4-bytes (big-endian leftmost) of abi-encoding of an event.\n inner: u32,\n}\n\nimpl FromField for EventSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for EventSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for EventSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl EventSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature<let N: u32>(signature: str<N>) -> Self {\n let bytes = signature.as_bytes();\n let hash = poseidon2_hash_bytes(bytes);\n\n // `hash` is automatically truncated to fit within 32 bits.\n EventSelector::from_field(hash)\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n"
|