diff --git a/docs/pages/performance/fashion-mnist/plot.b64 b/docs/pages/performance/fashion-mnist/plot.b64 index 370851340..cdd7db0b9 100644 --- a/docs/pages/performance/fashion-mnist/plot.b64 +++ b/docs/pages/performance/fashion-mnist/plot.b64 @@ -1 +1 @@ -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55rXZxcvXqxt27Z5nZfJZNK+ffs0Z84cT3tx3SJT0Pw2F87tkne9WbZsme6++25Vq1ZNoaGhGjdunM91ID+bN2/WLbfcoiZNmigwMFC1atXSbbfd5jNSLO96t2fPHt1yyy0KDw9XWFiYbr31VqWlpXnFZmZm6uGHH1aNGjUUEhKiESNG6PDhw5fMZcmSJerSpYsk6dZbb/W8plOnTvXEzJgxQ5GRkQoKClL16tX1pz/96ZK3El+qb+ZZvny5unbtqsDAQDVp0kSfffaZz7EK26/yc7Gfgfzm7Nm8ebP69u2roKAg1atXTy+88II++eSTAvvZxfIv7Gtwvvze4wpzPb6YL774Qi1atFBgYKAiIyO1bNkyn5jff/9dt912m2rWrCm73a7WrVvr448/9uy/WD/p16+f5syZowMHDnjaz3/fLOx7Rd4cQ1988YXnvWD+/PmFPk8AqCz4SACowPJ+4axSpYqnbdu2berZs6fq1q2rxx9/XE6nU19//bVGjhypb775RqNGjZJ0bmLT3r17a8eOHbrtttvUqVMnnTx5UrNnz9bhw4dVvXp1JScn68MPP9QNN9ygO++8UykpKfroo480aNAgrVmzptiG+f/www8KDAwscHRS48aN1atXLyUkJCgjI6PIn+5NmzZN48eP16BBg/Tyyy8rLS1NU6ZMUa9evbRhwwavX0ZzcnI0aNAg9erVS6+99pocDkeBx7377rs1depU3XrrrXrooYe0b98+vfXWW9qwYYNWrFghq9WqxMRExcbGqkaNGnr88ccVHh6u/fv351uwyc/u3bv1xz/+Uffcc4/Gjx+vTz75RH/4wx80f/58xcTESJLS0tLUt29f/f7777r77rvVoEEDrVy5UhMmTNDRo0d95k/45JNPlJGRobvuukt2u11Vq1bN97m3bduma665Ru3atdNzzz0nu92uPXv2aMWKFZ4Yt9utESNGaPny5brrrrt09dVXa8uWLXrjjTe0a9cuff/9957YiRMn6tlnn1WPHj303HPPyWaz6eeff9aiRYsUGxsr6dwfOBMnTtTAgQN17733aufOnZoyZYrWrl3reU3znDlzRoMHD9Z1112nsWPHaubMmfrb3/6mtm3basiQIZKk9PR0RUdH6+DBg3rooYdUp04dTZs2TYsWLSrU6583X1SnTp0KFV+QY8eOacOGDZ6CZVH6RWRkpN544w1t27atwBFEffr00UMPPaR//etfeuKJJ3T11VdLkudf6dytKjfccIPuvvtu3XnnnWrRooWkc7ejtW7dWiNGjFBAQIB++OEH3XfffXK73br//vs9j3/66af1wgsvaOjQoRo6dKjWr1+v2NhYZWVleeVS2P5oGIZGjBihxYsX6/bbb1eHDh20YMECPfroo/r999/1xhtvqEaNGpo2bZpefPFFpaamavLkyZ7zmjZtmh5++GHVq1dPf/3rXyVJNWrUuJxvzxV74IEHFB4ermeffdbTZw8cOOApShUkPj5ev/32m2699VbVqlVL27Zt0/vvv69t27Zp9erVPo8dO3asGjdurMmTJ2v9+vX68MMPFRERoZdfftkTc8cdd+jzzz/XjTfeqB49emjRokWFunXw6quv1nPPPaenn35ad911l+fDhB49ekiS51rXpUsXTZ48WcePH9c///lPrVixQhs2bMh35JVUuL65Z88ejRkzRrfffrvGjx+vjz/+WLfccosiIyM9I+GKep3LT0E/Axf6/fffPUWZCRMmyOl06sMPPyxwBNCl8i/Ma3AphbkeX8zSpUv11Vdf6aGHHpLdbtc777yjwYMHa82aNZ7ryvHjx9W9e3dPsaVGjRqaN2+ebr/9diUnJ+vPf/7zRftJ3bp1lZSUpMOHD3tuuQwODpZUtPcK6dwtml9//bUeeOABVa9evUze/gcAfmcAKPc++eQTQ5KRkJBgnDhxwjh06JAxc+ZMo0aNGobdbjcOHTrkiY2Ojjbatm1rZGRkeNrcbrfRo0cPo3nz5p62p59+2pBkfPvttz7P53a7DcMwjJycHCMzM9Nr35kzZ4yaNWsat912m1e7JOOZZ57xyXnfvn2XPL/w8HCjffv2F4156KGHDEnG5s2bDcMwjGeeecbI7xJ34fOmpKQY4eHhxp133ukVd+zYMSMsLMyrffz48YYk4/HHH/c57vjx442GDRt6tn/66SdDkvHFF194xc2fP9+r/bvvvjMkGWvXrr3o+eWnYcOGhiTjm2++8bQlJSUZtWvXNjp27Ohpe/755w2n02ns2rXL6/GPP/64YbFYjIMHDxqGYRj79u0zJBmhoaFGYmLiJZ//jTfeMCQZJ06cKDBm2rRphtlsNn766Sev9nfffdeQZKxYscIwDMPYvXu3YTabjVGjRhm5ublesXn9LTEx0bDZbEZsbKxXzFtvvWVIMj7++GNPW9++fQ1JxmeffeZpy8zMNGrVqmWMHj3a0/bmm28akoyvv/7a0+ZyuYxmzZoZkozFixdf9DV46qmnDElGSkrKReNat25t9O3bt8D9H330kREUFGSkpaUZhlG0frFy5UpDkvHVV19dNG7GjBkFnlNeX5o/f77Pvryczjdo0CCjSZMmnu28782wYcM83y/DMIwnnnjCkGSMHz/e01bY/vj9998bkowXXnjBK27MmDGGyWQy9uzZ42nr27ev0bp163zPa9iwYT7tV+rC69n5z3f+ueZdbyIjI42srCxP+yuvvGJIMmbNmnXR58nvtf/Pf/5jSDKWLVvmacu73l143R01apRRrVo1z/bGjRsNScZ9993nFXfjjTcWeE7nW7t2rSHJ+OSTT7zas7KyjIiICKNNmzZGenq6p/3HH380JBlPP/30RY9bmL55/vkmJiYadrvd+Otf/+ppK2y/KsjFfgYu/L4++OCDhslkMjZs2OBpO3XqlFG1alWf97XC5n+x1yA/F77HFeZ6XBBJhiTjl19+8bQdOHDACAwMNEaNGuVpu/32243atWsbJ0+e9Hr89ddfb4SFhXn6a0H9xDAMY9iwYV7vlXkK+16Rl6/ZbDa2bdtW5HMFgMqE27iACmTgwIGqUaOG6tevrzFjxsjpdGr27NmqV6+eJOn06dNatGiRxo4dq5SUFJ08eVInT57UqVOnNGjQIO3evdsz5P6bb75R+/btPSN9zpf3abLFYvHM5eJ2u3X69Gnl5OSoc+fOWr9+fbGdV0pKikJCQi4ak7c/JSWlSMeOj4/X2bNndcMNN3hej5MnT8pisahbt2753pJWmImgZ8yYobCwMMXExHgdNzIyUsHBwZ7j5n3a/eOPPyo7O7tIuUtSnTp1vL5HebeIbNiwQceOHfPk0rt3b1WpUsUrl4EDByo3N9dnqP7o0aMLNQIiL/dZs2YVeJvEjBkzdPXVV6tly5Zez503v0ze6/D999/L7Xbr6aef9rn1Ka+/JSQkKCsrS3/+85+9Yu68806FhoZqzpw5Xo8LDg7Wn/70J8+2zWZT165d9dtvv3na5s6dq9q1a2vMmDGeNofDobvuuuuS5y+dW/48ICDA8+n05Zo7d6769+/vmSOnKP0ib+Re3u2Vl6tx48YaNGiQT/v58/YkJSXp5MmT6tu3r3777TclJSVJ+t/35sEHH/QabZLfJKyF7Y9z586VxWLRQw895PX4v/71rzIMQ/Pmzbui8y1Nd911l9eos3vvvVcBAQGaO3fuRR93/mufkZGhkydPeuYly+8ae88993ht9+7dW6dOnVJycrIkeZ7vwtf0SifL/eWXX5SYmKj77rvPa2TlsGHD1LJlS5+fzaJq1aqVZ4SIdG6EVosWLbx+lot6nctPQT8DF5o/f76ioqK8Rq9WrVrVc1vv5eR/pQpzPb6YqKgoRUZGerYbNGiga6+9VgsWLFBubq4Mw9A333yj4cOHyzAMr9d40KBBSkpKuqL3/cK+V+Tp27cv83EBwCVwGxdQgbz99tu66qqrlJSUpI8//ljLli3zGla+Z88eGYahv//97wUu15yYmKi6detq7969Gj169CWf89NPP9U//vEP/frrr15/lDZu3LhIuSclJSk9Pd2zbbPZPLcPhYSEXLKIk7c/IiKiSM+7e/duSSpwctvQ0FCv7YCAAE/x7FLHTUpKKjCfxMRESed+YR09erQmTpyoN954Q/369dPIkSN14403FmpS0GbNmvncynHVVVdJOncbX61atbR7925t3ry5wAJOXi55Cvu9++Mf/6gPP/xQd9xxhx5//HFFR0fruuuu05gxYzzFmN27d2vHjh2XfO69e/fKbDZf9Jf3AwcOSJLPrRU2m01NmjTx7M9Tr149n9emSpUq2rx5s9cx83sNC7p9oyRkZ2crPj7ecwuSVLR+Yfx3/pqL3Q5UGAV931esWKFnnnlGq1at8pn/JSkpSWFhYZ7Xvnnz5l77a9So4XUbqaRC98cDBw6oTp06PoXevFtbLvx+X4nTp0973W4WFBSksLCwYjv+ha9LcHCwateufck5hE6fPq2JEyfqyy+/9Pk5zSu0na9BgwZe23mv/ZkzZxQaGqoDBw7IbDb7zH12pf29oJ9NSWrZsqWWL19+Rce/8Lykc+d2/rxHRb3O5aew174DBw4oKirKp71Zs2b5xhcm/ytVmOvxxVzYR6Vz7yVpaWk6ceKEzGazzp49q/fff1/vv/9+vscozGtckMK+V+Qp6u8YAFAZUewBKpCuXbt6VuMaOXKkevXqpRtvvFE7d+5UcHCw59O+Rx55pMBPLwv6ZTU/n3/+uW655RaNHDlSjz76qCIiImSxWDR58mSfSaEv5f/+7/88Ey1L5/7YzZucslWrVlq/fr0yMzMLLIBs3rxZNptNdevWlVTwH765uble23mvybRp01SrVi2f+AtXO7Hb7YX6xdntdisiIkJffPFFvvvzfqE1mUyaOXOmVq9erR9++EELFizQbbfdpn/84x9avXr1FY8YycslJiZGjz32WL7784pDeQq7AlNQUJCWLVumxYsXa86cOZo/f76++uorDRgwQHFxcbJYLHK73Wrbtq1ef/31fI9Rv379op1MEVgslnzbjYtMZFxU1apVU05OTqFGnxVk+fLlSk5O1tChQz1tRekXeX8wVq9e/YrOJb/v+969exUdHa2WLVvq9ddfV/369WWz2TR37ly98cYblzWCoKj9sTRcd911Wrp0qWd7/PjxXhMPF9aF15crNXbsWK1cuVKPPvqoOnTo4LmODx48ON/XvjT6vD8U5ryKo1+V1OpzpfF9Kcz1+Erk9bc//elPGj9+fL4x7dq1u6LjF+W9orysFAgA/kSxB6ig8oou/fv311tvvaXHH39cTZo0kSRZrdZ8Vw86X9OmTbV169aLxsycOVNNmjTRt99+61VceeaZZ4qc72OPPeZ1y835owGGDx+ulStXasaMGV4xefbv36+ffvpJ1157recXwLzHnz171mti0AtHA+R9wh0REXHJ16QomjZtqoSEBPXs2bNQv5R2795d3bt314svvqjp06frpptu0pdffqk77rjjoo/LG611/uu/a9cuSfJMWNm0aVOlpqYW6/nlMZvNio6OVnR0tF5//XVNmjRJTz75pBYvXqyBAweqadOm2rRpk6Kjoy868qRp06Zyu93avn17gRN7N2zYUNK5SVTz+rJ0blW4ffv2Xdb5NWzYUFu3bvV5DXfu3Fmox7ds2VLSuVW5LvcPnTlz5qhVq1b5TjBamH6xb98+SZeezPVyRv788MMPyszM1OzZs71GJ1x4S0Xe92b37t1e35sTJ074jF4obH9s2LChEhISfAppv/76q9dzFod//OMfXnnWqVPnovFVqlTxWQEuKytLR48ezTd+9+7d6t+/v2c7NTVVR48e9SrwXejMmTNauHChJk6cqKefftrrWJerYcOGcrvd2rt3r9conML294L60Pk/mxeOkty5c+clv1dXOipNKtnr3IUaNmyoPXv2+LTn11ZYxfEaXOp6fDH59atdu3bJ4XB4PpwICQlRbm7uJY91sXMpaF9h3ysAAIXHnD1ABdavXz917dpVb775pjIyMhQREaF+/frpvffey/ePkhMnTnj+P3r0aG3atEnfffedT1zep5F5nxSe/+nkzz//rFWrVhU511atWmngwIGer/PnDrj77rtVq1YtPfrooz5zHGRkZHiWdz3/E928Is758zS4XC6v0UOSNGjQIIWGhmrSpEn5zo1y/mtSFGPHjlVubq6ef/55n305OTmePxTPnDnj8+luXrGjMMt/HzlyxOt7lJycrM8++0wdOnTwjFQaO3asVq1apQULFvg8/uzZs8rJySnsaXk5ffq0T9uFuY8dO1a///67PvjgA5/Y9PR0uVwuSedGopnNZj333HM+IxbyXp+BAwfKZrPpX//6l9dr9tFHHykpKalQKwpdaOjQoTpy5IhmzpzpaUtLSyvwNoUL5d3K8csvvxT5ufPMnTvXJ/ei9It169YpLCzMsypRQZxOpyT5FCkuJr+f8aSkJH3yySdecQMHDpTVatW///1vr9j8VkAqbH8cOnSocnNz9dZbb3nFvPHGGzKZTJ4V1YpDZGSk1/XnUnOBNG3a1GcOmPfff7/AkT3vv/++1/VlypQpysnJueg55PfaS/m/poWV93z/+te/LuuYBfWhzp07KyIiQu+++65X/5w3b5527NhxyZ/Ny+mbFyqp61x+Bg0apFWrVmnjxo2ettOnTxc4krMwrvQ1KMz1+GJWrVrlNefOoUOHNGvWLMXGxspischisWj06NH65ptv8v0g6Pz3youdi9PpzPcWxMK+VwAACo+RPUAF9+ijj+oPf/iDpk6dqnvuuUdvv/22evXqpbZt2+rOO+9UkyZNdPz4ca1atUqHDx/Wpk2bPI+bOXOm/vCHP+i2225TZGSkTp8+rdmzZ+vdd99V+/btdc011+jbb7/VqFGjNGzYMO3bt0/vvvuuWrVqpdTU1GI7hypVqmjmzJkaOnSoOnXqpDvuuEOtWrXSsWPHNHXqVP32229666231K1bN89jYmNj1aBBA91+++169NFHZbFY9PHHH6tGjRo6ePCgJy40NFRTpkzRzTffrE6dOun666/3xMyZM0c9e/b0+WOzMPr27au7775bkydP1saNGxUbGyur1ardu3drxowZ+uc//6kxY8bo008/1TvvvKNRo0apadOmSklJ0QcffKDQ0NCLfuqf56qrrtLtt9+utWvXqmbNmvr44491/Phxrz/GH330Uc2ePVvXXHONZ7lfl8ulLVu2aObMmdq/f/9l3QL03HPPadmyZRo2bJgaNmyoxMREvfPOO6pXr5569eolSbr55pv19ddf65577tHixYvVs2dP5ebm6tdff9XXX3+tBQsWqHPnzmrWrJmefPJJPf/88+rdu7euu+462e12rV27VnXq1NHkyZNVo0YNTZgwQRMnTtTgwYM1YsQI7dy5U++88466dOmS76ivS7nzzjv11ltvady4cVq3bp1q166tadOmyeFwFOrxTZo0UZs2bZSQkKDbbrvNa9+yZcs8BYETJ07I5XLphRdekHRuuek+ffpo37592rFjh6ZMmeL12KL0i/j4eA0fPvySn4Z36NBBFotFL7/8spKSkmS32zVgwICLznMVGxsrm82m4cOH6+6771Zqaqo++OADRUREeBWMa9SooUceeUSTJ0/WNddco6FDh2rDhg2aN2+eT98qbH8cPny4+vfvryeffFL79+9X+/btFRcXp1mzZunPf/6zz7wzpemOO+7QPffco9GjRysmJkabNm3SggULCvw5ysrKUnR0tMaOHevps7169dKIESMKfI7Q0FD16dNHr7zyirKzs1W3bl3FxcV5RnJdjg4dOuiGG27QO++8o6SkJPXo0UMLFy4s9IiUpk2bKjw8XO+++65CQkLkdDrVrVs3NW7cWC+//LJuvfVW9e3bVzfccINn6fVGjRrp4YcfvmReRe2bFyqp61x+HnvsMX3++eeKiYnRgw8+6Fl6vUGDBjp9+vRljUy50tegMNfji2nTpo0GDRrktfS6JE2cONET89JLL2nx4sXq1q2b7rzzTrVq1UqnT5/W+vXrlZCQ4Ck4XayfREZG6quvvtJf/vIXdenSRcHBwRo+fHih3ysAAEVQuot/ASgJecv75rdMc25urtG0aVOjadOmRk5OjmEYhrF3715j3LhxRq1atQyr1WrUrVvXuOaaa4yZM2d6PfbUqVPGAw88YNStW9ew2WxGvXr1jPHjx3uWXXW73cakSZOMhg0bGna73ejYsaPx448/+ixDbhhXtvR6nv379xt33XWX0aBBAyMgIMCzXGxCQkK+8evWrTO6detm2Gw2o0GDBsbrr79e4PMuXrzYGDRokBEWFmYEBgYaTZs2NW655RavpWjHjx9vOJ3OfJ8rv3M2DMN4//33jcjISCMoKMgICQkx2rZtazz22GPGkSNHDMMwjPXr1xs33HCD0aBBA8NutxsRERHGNddc4/W8BclbVnrBggVGu3btDLvdbrRs2dKYMWOGT2xKSooxYcIEo1mzZobNZjOqV69u9OjRw3jttdc8S0LnLb3+6quvXvK5DcMwFi5caFx77bVGnTp1DJvNZtSpU8e44YYbfJY+zsrKMl5++WWjdevWht1uN6pUqWJERkYaEydONJKSkrxiP/74Y6Njx46euL59+xrx8fFeMW+99ZbRsmVLw2q1GjVr1jTuvfde48yZM14xBS3Fnd/36cCBA8aIESMMh8NhVK9e3fi///s/Y/78+YVeBvn11183goODfZbJzlsaOb+vvJ+Ft956ywgLCzOys7O9HlvYfrFjx46L/gxc6IMPPjCaNGliWCwWr/O72BLls2fPNtq1a2cEBgYajRo1Ml5++WXj448/9vk5ys3NNSZOnGjUrl3bCAoKMvr162ds3brVZ9lqwyhcf8yLe/jhh406deoYVqvVaN68ufHqq696Le9uGKW/9Hpubq7xt7/9zahevbrhcDiMQYMGGXv27Clw6fWlS5cad911l1GlShUjODjYuOmmm4xTp05d8nkOHz5sjBo1yggPDzfCwsKMP/zhD8aRI0d8rqd5fe3CZbfzu96lp6cbDz30kFGtWjXD6XQaw4cPNw4dOlSopdcNwzBmzZpltGrVynMNPn957a+++srz81u1alXjpptuMg4fPnzJYxpG0ftm3759jb59+3q1FbZf5edifSW/Prxhwwajd+/eht1uN+rVq2dMnjzZ+Ne//mVIMo4dO3bJ4+aXf0GvQX4uXHq9sNfj/Egy7r//fuPzzz83mjdv7nk/z+/5jx8/btx///1G/fr1DavVatSqVcuIjo423n//fa+4gvpJamqqceONNxrh4eGGJK/rcWHfK/LyBQBcnMkwyvmsfQAqrYULF2ro0KHq1auX5s2b51kGvrJo1KiR2rRpox9//NHfqVRqSUlJatKkiV555RXdfvvtRXrs0KFDFRwcrK+//vqynvvPf/6zli1bpnXr1jHPRRk0depU3XrrrVq7di2jEiqBP//5z3rvvfeUmpp6xRMiAwBwpZizB0C5FR0drU8//VSLFy/WrbfeWu5XnEH5FBYWpscee0yvvvpqkVen6tev3yVvcSnIqVOn9OGH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6YMPPtDp06e1YsUKLV68WK+//rqkcwWap556SnFxcUpJSdHPP/+srl27qmPHjnr33XfVtm1bpaamKjU1VQ0aNCgwlzVr1mjAgAGaPHmyVw7Tpk3TK6+8ojNnzqhz58568MEHvR73+eef6z//+Y9OnDghp9Opv//975f1WiQmJmrHjh1q165dvvvHjx+vRx99VCkpKfrtt9908803e+2fN2+eNmzYoO3bt2vhwoX64osvLiuPPEUu9nTu3FkvvPCCpk2bpqVLl2rYsGGSpH379qlmzZpXlAwAAAAA+JM5KEhBPXp4taUtXy53RoafMgLKphMnTuibb77R22+/rfDwcDmdTj333HP66quvlJub6xXbu3dvdezYURaLRU2aNNHdd9+tJf8tolosFhmGoW3btik9PV01a9YssGBSkPnz52vkyJH67LPPNHbsWK99f/rTn9S+fXsFBARo/PjxWrdundf+++67T40bN1ZgYKBuuukmn/2FkZWVpeuvv15jx45V586d842xWq3as2ePp6jU44LrzNNPP62QkBDVqVNHgwcPvqw8zlfkYs+bb76p9evX64EHHtCTTz6pZs2aSZJmzpzpkywAAAAAlDfO/v2l81bgMtLTlf7zz37MCCh79u/fL7fbrcaNGys8PFzh4eHq0qWLzGazjl0wd9DatWs1cOBA1axZU6GhoXriiSc8dwY1bdpUn376qd566y3VrFlTsbGx2rhxY5FyefPNN9W/f38NuGCSdUmqVauW5/9Op1OpqakX3Z+SkiLp3KpfwcHBCg4O1pAhQwp87qysLI0ZM0YOh+Oiq5Z/99132rp1q1q0aKGOHTvq6/NuF71YHperyHP2tGvXzms1rjyvvvqqLBbLFSUDAAAAAP4WEBEhe5s2yjzv7x7XokVy9O4tk7nIn5cDl83sdCqiEHPuuP9bwHCnpvrM0VP1kUdk/u+cN3n/FuZ5L6V+/foym806cuSIHA6H1779+/d7bd9www269dZbNWvWLDmdTr355puaOnWqZ//YsWM1duxYpaen6+mnn9bNN9+sLVu2yFzIn7fp06frkUce0YMPPpjvnEGX44knntATTzxx0ZisrCz94Q9/UFZWlmbNmiWbzVZgbKdOnfTNN9/I7Xbr+++/19ixY9W3b99iyTU/xXalCgwMvKLJgwAAAACgrLhwGfbcY8eUtWOHn7JB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 \ No newline at end of file +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YoV27dlndl8lk0uHDh/X7779b2vNriUxe9W2urO2S/X6zevVqjRgxQuXKlZO/v78GDx5s8z6Qmx07duihhx5SnTp15OXlpUqVKumRRx6xmSmW/X534MABPfTQQwoMDFRAQIAefvhhJSYmWvVNSUnRM888owoVKsjPz099+vTRiRMnrhnLypUr1apVK0nSww8/bHlNZ8yYYekze/ZshYSEyNvbW+XLl9cDDzxwzaXE1xqb2dauXavWrVvLy8tLderU0bfffmtzLXvHVW6u9j2QW82eHTt2qFOnTvL29la1atX05ptvavr06XmOs6vFb+9rkFNuP+PseT++mu+//14333yzvLy8FBISotWrV9v0OXnypB555BFVrFhRnp6eatiwoaZNm2Y5f7Vx0rlzZ/3+++86evSopT3nz017f1Zk1xj6/vvvLT8LFi9ebPd9AkBpwUcCQAmW/QtnmTJlLG27du3SrbfeqqpVq+qll16Sj4+PfvrpJ/Xr109z585V//79JWUVNu3QoYP27NmjRx55RC1atND58+e1YMECnThxQuXLl1dsbKy+/vpr3XvvvRo+fLji4uI0depUde/eXX/++We+TfP/9ddf5eXllefspNq1a6t9+/ZaunSpkpOTHf50b+bMmRoyZIi6d++ud955R4mJiZo8ebLat2+vrVu3Wv0ymp6eru7du6t9+/Z6//33ZTab87zuiBEjNGPGDD388MMaNWqUDh8+rE8//VRbt27VunXr5O7urrNnzyo8PFwVKlTQSy+9pMDAQB05ciTXhE1u9u/fr7vvvluPPfaYhgwZounTp+uuu+7S4sWLFRYWJklKTExUp06ddPLkSY0YMUI1atTQ+vXrNXr0aEVHR9vUT5g+fbqSk5P16KOPytPTU2XLls31uXft2qU77rhDTZo00bhx4+Tp6akDBw5o3bp1lj6ZmZnq06eP1q5dq0cffVS33HKLdu7cqY8++kj79u3TL7/8Yuk7duxYvfHGG2rXrp3GjRsnDw8P/fHHH1q+fLnCw8MlZf2BM3bsWHXr1k2PP/649u7dq8mTJ2vTpk2W1zTbpUuX1KNHD915550aNGiQ5syZoxdffFGNGzfW7bffLklKSkpS165ddezYMY0aNUpVqlTRzJkztXz5crte/+x6US1atLCrf15Onz6trVu3WhKWjoyLkJAQffTRR9q1a1e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wjC1bthj33nuvUaNGDcPT09MICgoy7rjjDqvnzUv2ttJLliwxmjRpYnh6ehoNGjQwZs+ebdM3Li7OGD16tFGvXj3Dw8PDKF++vNGuXTvj/ffft2wJnb31+nvvvXfN5zYMw1i2bJnRt29fo0qVKoaHh4dRpUoV495777XZ+jg1NdV45513jIYNGxqenp5GmTJljJCQEGPs2LFGTEyMVd9p06YZzZs3t/Tr1KmTERkZadXn008/NRo0aGC4u7sbFStWNB5//HHj0qVLVn3y2oo7t6/T0aNHjT59+hhms9koX7688Z///MdYvHix3dsgf/jhh4avr6/NNtnZWyPn9i/7e+HTTz81AgICjLS0NKvH2jsu9uzZc9XvgSt99dVXRp06dQxXV1er+7vaFuULFiwwmjRpYnh5eRm1atUy3nnnHWPatGk230cZGRnG2LFjjcqVKxve3t5G586djb/++stm22rDsG88Zvd75plnjCpVqhju7u5G/fr1jffee89qe3fDKPyt1zMyMowXX3zRKF++vGE2m43u3bsbBw4cyHPr9VWrVhmPPvqoUaZMGcPX19e4//77jQsXLlzzeU6cOGH079/fCAwMNAICAoy77rrLOHXqlM37afZYu3Lb7dze75KSkoxRo0YZ5cqVM3x8fIzevXsbx48ft2vrdcMwjPnz5xvBwcGW9+Cc22v/+OOPlu/fsmXLGvfff79x4sSJa17TMBwfm506dTI6depk1WbvuMrN1cZKbmN469atRocOHQxPT0+jWrVqxsSJE41PPvnEkGScPn36mtfNLf68XoPcXLn1ur3vx7mRZIwcOdL47rvvjPr161t+nuf2/GfOnDFGjhxpVK9e3XB3dzcqVapkdO3a1ZgyZYpVv7zGSXx8vHHfffcZgYGBhiSr92N7f1ZkxwsAuDqTYRTzqn0ASq1ly5apZ8+eat++vRYtWmTZBr60qFWrlho1aqTffvvN2aGUajExMapTp47effddDR061KHH9uzZU76+vvrpp5+u67mffvpprV69WlFRUdS5KIJmzJihhx9+WJs2bWJWQinw9NNP68svv1R8fPwNF0QGAOBGUbMHQLHVtWtXffPNN1qxYoUefvjhYr/jDIqngIAAvfDCC3rvvfcc3p2qc+fO11zikpcLFy7o66+/1ptvvkmiByhkSUlJVscXLlzQzJkz1b59exI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3z/cAAQAAAJR87rVqya1aNau25PXrnRQNABRvDid7xowZo+eee061atVSmzZtFBoaKilrlk/z5s3zPUAAAAAAJZ/JZJK5fXurttTt25URG+ukiACg+HI42TNw4EAdO3ZMmzdv1uLFiy3tXbt21UcffZSvwQEAAAAoPbzbtJHc3f9tyMxUErN7AMBhdid7atSooSeffFIREREqX768mjdvLheXfx/eunVrNWjQoECCBAAAAFDyuZjN8m7Z0qotcd06CjUDgIPsTvbMnDlTnp6eGjlypMqXL6+7775b33//vS5fvlyA4QEAAAAoTa4s1Jxx9qxS9+1zUjQAUDzZnezp1KmTPvjgA+3fv1/r1q1Ts2bN9H//93+qVKmSunTpokmTJunQoUMFGSsAAACAEs69Th25Vq5s1Za4Zo2TogGA4snhmj2S1LBhQ40ePVobN27UkSNHdO+992rZsmVq1KiRGjVqpN9//z2/4wQAAABQCphMJnndeqtVW/LWrcqIi3NSRABQ/FxXsienSpUqafjw4fr11191/vx5jR8/Xp6envkRGwAAAIBSyLNVK2WaTP82ZGQoacMG5wUEAMXMDSd7sqWnp+v8+fPq37+/unXrll+XBQAAAFDKuPj46GxQkFVb4tq1MgzDSREBQPGSb8meXbt2qXbt2vl1OQAAAAClWPQVdXsyzpxR6v79TooGAIqXfEv2AAAAAEB+iQkIkGvFilZtFGoGAPu42duxRYsWVz2flJR0w8EAAAAAgCTpn0LNCT//bGlK3rJFmXffLRdfXycGBgBFn93Jnt27d+uee+7Jc6lWdHS09u3bl2+BAQAAACjdPFu3VsKCBVJ6elZDerqSNm6UDzVCAeCq7E72NGrUSG3atNHjjz+e6/lt27bpq6++yrfAAAAAAJRuLr6+8mreXMmbNlnaEteulblrV5ly7tYFALBid82eW2+9VXv37s3zvJ+fnzp27JgvQQEAAACAJJk7dLA6To+OVtrBg06KBgCKB7tn9nz88cdXPV+3bl2tWLHihgMCAAAAgGweN90k16AgZZw9a2lLXLNGHvXqOTEqACja2I0LAAAAQJFlMplkbt/eqi0pKkqZCQlOiggAij67kj3Hjh1z6KInT568rmAAAAAA4EreoaGSq+u/DWlpSvrjD+cFBABFnF3JnlatWmnEiBHalKMw2pViYmL01VdfqVGjRpo7d26+BQgAAACgdHP195dXs2ZWbYlr1sgwDOcEBABFnF01e3bv3q233npLYWFh8vLyUkhIiKpUqSIvLy9dunRJu3fv1q5du9SiRQu9++676tmzZ0HHDQAAAKAUMXfooOSoKMtx+qlTSjt0SB516zoxKgAomuya2VOuXDl9+OGHio6O1qeffqr69evr/Pnz2r9/vyTp/vvvV1RUlDZs2ECiBwAAAEC+87j5ZrmWL2/Vlrh2rZOiAYCize7duCTJ29tbAwcO1MCBAwsqHgAAAACwYXJxkblDB8XNm2dpS9q0Sf6DBsnF29uJkQFA0cNuXAAAAACKBe/QUMklx58wFGoGgFyR7AEAAABQLLgGBFCoGQDsQLIHAAAAQLFhbt/e6jj9xAmlHT3qpGgAoGgi2QMAAACg2PC45Ra5litn1Za4Zo2TogGAoolkDwAAAIBiw+TiIu8rZvckb9qkzKQkJ0UEAEWPXbtxLViwwO4L9unT57qDAQAAAIBrMbdrp/hff5UyMyVJRkqKkjZtkk/Hjk6ODACKBruSPf369bM6NplMVkXQTCaT5f8zMjLyJzIAAAAAyIVrYKA8mzRRyrZtlrbENWtI9gDAP+xaxpWZmWn5FxERoWbNmmnRokW6fPmyLl++rIULF6pFixZavHhxQccLAAAAALaFmo8do1AzAPzDrpk9OT399NP64osv1D7Hm2v37t1lNpv16KOPas+ePfkaIAAAAABcybNhQ7mUKaPMS5csbYlr1yqgZk0nRgUARYPDBZoPHjyowMBAm/aAgAAdOXIkH0ICAAAAgKszubjYzO5J+uMPZSYnOykiACg6HE72tGrVSs8++6zOnDljaTtz5oyef/55tW7dOl+DAwAAAIC8mG+9VcpRP9RISVHy5s1OjAgAigaHkz3Tpk1TdHS0atSooXr16qlevXqqUaOGTp48qalTpxZEjAAAAABgw7VMGXk2amTVlrhmjZOiAYCiw+GaPfXq1dOOHTsUGRmpv//+W5J0yy23qFu3bla7cgEAAABAQTN36KCUnTstx2lHjijt+HG5V6/uxKgAwLkcTvZIWVuth4eHKzw8PL/jAQAAAAC7eTZqJJfAQGVevmxpS1yzRgH33ee8oADAya4r2bNs2TItW7ZMZ8+eVWZmptW5adOm5UtgAAAAAHAtJldXmW+9VfG//25pS/rjD/kNGCAXT08nRgYAzuNwzZ6xY8cqPDxcy5Yt0/nz53Xp0iWrfwAAAABQmLyvLNScnKzkqCgnRgQAzuXwzJ4vvvhCM2bM0IMPPlgQ8QAAAACAQ9zKlZNnw4ZK+esvS1vimjUyt2vnxKgAwHkcntmTmpqqdrxpAgAAAChCzB06WB2nHTqktJMnnRQNADiXw8meYcOGadasWQURCwAAAABcF8/GjeUSEGDVxjbsAEorh5dxJScna8qUKVq6dKmaNGkid3d3q/MffvhhvgUHAAAAAPYwubrKu107JSxaZGlL+uMP+d95p0weHk6MDAAKn8PJnh07dqhZs2aSpL9yrImVsrZkBwAAAABnMLdvb5XsMRITlbRli8xt2zoxKgAofA4v41qxYkWe/5YvX+7QtSZPnqwmTZrI399f/v7+Cg0N1aIcb87JyckaOXKkypUrJ19fXw0YMEBnzpyxusaxY8fUq1cvmc1mBQUF6fnnn1d6erqjtwUAAACgmHMrX14ewcFWbSzlAlAaOZzsyenEiRM6ceLEdT++WrVqevvttxUVFaXNmzerS5cu6tu3r3bt2iVJeuaZZ/Trr79q9uzZWrVqlU6dOqU777zT8viMjAz16tVLqampWr9+vb755hvNmDFDY8aMuZHbAgAAAFBM2RRqPnBAaadOOSkaAHAOh5M9mZmZGjdunAICAlSzZk3VrFlTgYGBGj9+vDIzMx26Vu/evdWzZ0/Vr19fN910k9566y35+vpq48aNiomJ0dSpU/Xhhx+qS5cuCgkJ0fTp07V+/Xpt3LhRkhQREaHdu3fru+++U7NmzXT77bdr/Pjx+uyzz5SamurorQEAAAAo5ryaNJGLn59VW9LatU6KBgCcw+GaPa+88oqmTp2qt99+W7feeqskae3atXrjjTeUnJyst95667oCycjI0OzZs5WQkKDQ0FBFRUUpLS1N3bp1s/Rp0KCBatSooQ0bNqht27basGGDGjdurIoVK1r6dO/eXY8//rh27dql5s2b5/pcKSkpSklJsRzHxsZKktLS0pSWlnZd8QNFXfbYZoyjJGOcozRgnKM0uNFx7tm2rZIiIy3HiRs2yOuOO2S6YnMZwJl4H0dBcjjZ88033+jrr79Wnz59LG1NmjRR1apV9cQTTzic7Nm5c6dCQ0OVnJwsX19fzZs3T8HBwdq2bZs8PDwUGBho1b9ixYo6ffq0JOn06dNWiZ7s89nn8jJx4kSNHTvWpv3333+X2Wx2KH6guJk/f76zQwAKHOMcpQHjHKXB9Y5z78REtclxbCQmas2UKTp7xd8OgDMlJiY6OwSUYA4ney5evKgGDRrYtDdo0EAXL150OICbb75Z27ZtU0xMjObMmaMhQ4Zo1apVDl/HEaNHj9azzz5rOY6NjVX16tXVq1cvlStXrkCfG3CWtLQ0zZ8/X3379pU7n2qhhGKcozRgnKM0yI9xHhMTo7S9ey3HTdLSFDhwYH6FCNywCxcuODsElGAOJ3uaNm2qTz/9VJ988olV+6effqqmTZs6HICHh4fq1asnSQoJCdGmTZv08ccf6+6771ZqaqouX75sNbvnzJkzqlSpkiSpUqVK+vPPP62ul71bV3af3Hh6esrT09Om3d3dnV+aUOIxzlEaMM5RGjDOURrcyDj36dhRl3Mke9IPHJDp4kW5MbsHRQTv4ShIDhdofvfddzVt2jQFBwdr6NChGjp0qIKDgzVjxgy99957NxxQZmamUlJSFBISInd3dy1btsxybu/evTp27JhCQ0MlSaGhodq5c6fOnj1r6RMZGSl/f38FX7HlIgAAAIDSw6tpU7n4+lq1sQ07gNLC4WRPp06dtHfvXvXv31+XL1/W5cuXdeedd2rv3r3qcMU2h9cyevRorV69WkeOHNHOnTs1evRorVy5Uvfff78CAgI0dOhQPfvss1qxYoWioqL08MMPKzQ0VG3btpUkhYeHKzg4WA8++KC2b9+uJUuW6NVXX9XIkSNznbkDAAAAoHQwubvL+58PibMlbdggg6K4AEoBh5dxSVLVqlWve9etnM6ePavBgwcrOjpaAQEBatKkiZYsWaKwsDBJ0kcffSQXFxcNGDBAKSkp6t69uz7//HPL411dXfXbb7/p8ccfV2hoqHx8fDRkyBCNGzfuhmMDAAAAULyZO3RQQo5duTLj45W8bZu8W7VyYlQAUPAcTvZMnz5dvr6+uuuuu6zaZ8+ercTERA0ZMsTua02dOvWq5728vPTZZ5/ps88+y7NPzZo1tXDhQrufEwAAAEDp4Faxojxuukmp+/ZZ2hLXrCHZA6DEc3gZ18SJE1W+fHmb9qCgIE2YMCFfggIAAACA/GC+otRE6t69Ss9R8xMASiKHkz3Hjh1T7dq1bdpr1qypY8eO5UtQAAAAAJAfvJo3l8nHx6otce1aJ0UDAIXD4WRPUFCQduzYYdO+fft2lStXLl+CAgAAAID8YHJ3l/mfDV6yJa1fLyM93UkRAUDBczjZc++992rUqFFasWKFMjIylJGRoeXLl+s///mP7rnnnoKIEQAAAACum/cVS7ky4+KUvH27k6IBgILncIHm8ePH68iRI+ratavc3LIenpmZqcGDB1OzBwAAAECR4165stzr1VPagQOWtsS1a+UdEuLEqACg4Dic7PHw8NCPP/6o8ePHa/v27fL29lbjxo1Vs2bNgogPAAAAAG6YuUMHxeRI9qTu3q308+fllsvmMwBQ3Dm8jCtbrVq11KRJE/Xo0YNEDwAAAIAizbtFC5nMZqs2CjUDKKkcTvYkJiZq6NChMpvNatiwoWUHrqeeekpvv/12vgcIAAAAADfK5OEh7ysLNa9bJyMjw0kRAUDBcXgZ1+jRo7V9+3atXLlSPXr0sLR369ZNb7zxhl566aV8DRAAAAAA8oO5fXslLl9uOc6MjVXKzp3yatbMeUEBecjIyFBaWpqzw0AR4u7uLldXV7v6Opzs+eWXX/Tjjz+qbdu2MplMlvaGDRvq4MGDjl4OAAAAAAqFe9Wqcq9TR2mHDlnaEtesIdmDIic+Pl4nTpyQYRjODgVFiMlkUrVq1eTr63vNvg4ne86dO6egoCCb9oSEBKvkDwAAAAAUNeYOHRSTI9mTsmuX0i9ckFu5ck6MCvhXRkaGTpw4IbPZrAoVKvB3NiRJhmHo3LlzOnHihOrXr3/NGT4OJ3tatmyp33//XU899ZQkWQbe119/rdDQ0OsIGQAAAAAKh3fLlor96ScZSUlZDYahpHXr5Nenj3MDA/6RlpYmwzBUoUIFeXt7OzscFCEVKlTQkSNHlJaWlv/JngkTJuj222/X7t27lZ6ero8//li7d+/W+vXrtWrVqusOGgAAAAAKmsnDQ95t2ihx5UpLW+K6dfLt1UsmO2thAIWBGT24kiNjwuHduNq3b69t27YpPT1djRs3VkREhIKCgrRhwwaFhIQ4ejkAAAAAKFTm9u2tjjMvX1bKX385KRoAyH8Oz+yRpLp16+qrr77K71gAAAAAoMC5V68u91q1lHbkiKUtcc0aeTVt6ryggHyQERens889Z9UW9P77cvXzK9Q4jhw5otq1a+vSpUsKDAzM12tPmDBBO3fu1P/+9z9JWbNdtm7dqmaFUGj9jTfe0LZt2/TLL79cs6+9r0FBvVYOz+zZsmWLdu7caTmeP3+++vXrp5dfflmpqan5FhgAAAAAFBRzhw5Wxyl//aWMS5ecFA2A3MyYMcMmifPyyy9bEj3OdPbsWd1///2qVq2a/P391bx5cy1YsMDZYVk4nOwZMWKE9u3bJ0k6dOiQ7r77bpnNZs2ePVsvvPBCvgcIAAAAAPnNq2VLmby8/m0wDCWuW+e8gIBcGJmZyoiLu+a/tOhopUVHK/30aZtrpJ8+bTlvz7Uy4uJkZGY64W6Ll/j4eDVv3lwbN27U5cuXNW7cON17773avXu3s0OTdB3LuPbt22fJrM2ePVudOnXSrFmztG7dOt1zzz2aNGlSPocIAAAAAPnLxctL3q1bK3H1aktb4tq18u3ZUyYXhz8TBwpEZkKCzbIsR118/32HH2Pv0q/4+Hi99NJLWrBggZKTk9WjRw/93//9n02/iIgIvfzyy9q/f7/MZrP69++vDz74wLLb2IcffqhJkybp0qVLKleunF599VWFhIToscceU1pamnx9fSVJu3fv1rRp0/JcSrVv3z7dfvvteuaZZ/Tkk0+qc+fOCg0N1ZYtW7R+/XrVr19f33zzjRo3bixJqlWrlp544gn9/PPP2rVrl1q0aKHvvvtO1atXv+a916lTR8/l+Nr07t1bN998szZu3Kjg4GCb/pGRkfrvf/+rw4cPy2w2684779TkyZMt53/99VeNHTtW58+fV79+/fTVV1/J3d39mnHkxeF3McMwlPlPlm/p0qXq2bOnJKl69eo6f/78dQcCAAAAAIXpyqVcmZcuKWXXLidFAxQ/jzzyiC5evKgdO3bo8OHDSktL05NPPmnTz9vbW1999ZUuXryodevWacWKFfrwww8lZSVoXn31VUVERCguLk5//PGHWrdurebNm+uLL75Q48aNFR8fr/j4eNWoUSPPWP7880916dJFEydOtIph5syZevfdd3Xp0iW1bNlSTz31lNXjvvvuO/3vf//TuXPn5OPjo9dee+26XouzZ89qz549atKkSa7nhwwZoueff15xcXE6dOiQHnzwQavzixYt0tatW7V7924tW7ZM33///XXFkc3hZE/Lli315ptvaubMmVq1apV69eolSTp8+LAqVqx4Q8EAAAAAQGFxr1FD7lf88Zi4Zo2TogGKl3Pnzmnu3Ln67LPPFBgYKB8fH40bN04//vijMjIyrPp26NBBzZs3l6urq+rUqaMRI0Zo5cqVkiRXV1cZhqFdu3YpKSlJFStWzDNhkpfFixerX79++vbbbzVo0CCrcw888ICaNm0qNzc3DRkyRFFRUVbnn3jiCdWuXVteXl66//77bc7bIzU1Vffcc48GDRqkli1b5trH3d1dBw4csCSV2rVrZ3V+zJgx8vPzU5UqVdSjR4/riiMnh5M9kyZN0pYtW/Tkk0/qlVdeUb169SRJc+bMsQkWAAAAAIoym0LNO3cq4/Jl5wQDFCNHjhxRZmamateurcDAQAUGBqpVq1ZycXHR6StqB23atEndunVTxYoV5e/vr5dfftmyMqhu3br65ptv9Omnn6pixYoKDw/Xtm3bHIpl0qRJuu2229SlSxebc5UqVbL8v4+Pj+Lj4696Pi4uTlLWrl++vr7y9fXV7bffnudzp6amauDAgTKbzVfdtXzevHn666+/dPPNN6t58+b66aef7Irjejlcs6dJkyZWu3Fle++99+Tq6npDwQAAAABAYfJq3Vqxc+bISEnJasjMVOL69fL7p1wF4EwuPj4KsqPmTuY/CYzM+HibGj1ln3tOLv/UvMn+rz3Pey3Vq1eXi4uLTp06JbPZbHXuyJEjVsf33nuvHn74Yc2fP18+Pj6aNGmSZsyYYTk/aNAgDRo0SElJSRozZowefPBB7dy5Uy521s+aNWuWnnvuOT311FO51gy6Hi+//LJefvnlq/ZJTU3VXXfdpdTUVM2fP18eHh559m3RooXmzp2rzMxM/fLLLxo0aJA6deqUL7HmJt8qj3l5ed1Q8SAAAAAAKGwuXl7yatXKqi1p7Vp2I0KRYHJxkauf3zX/uVeuLPfKleWWY3ZINrdKlSzn7bmWq5+fXUXKK1WqpH79+unJJ5+0zNI5ffq05s2bZ9M3NjbWstRrz549VoWJ9+7dq8jISCUlJcnDw0O+vr5yc8ual1KxYkVFR0crKSnpqrGULVtWy5Yt04YNG/T444/LMIxrxn+j0tLSNGjQICUkJOiXX36Rp6dnnn1TU1M1c+ZMXbp0SS4uLgoMDJQky30WBMrMAwAAACjVrlzKlXHhglL37HFSNEDxMWPGDMvyLX9/f3Xo0CHXWjNffvml3n//ffn6+uqxxx7TPffcYzmXmpqq1157TRUrVlS5cuW0fPlyy6yfLl26qG3btqpataoCAwN17NixPGMpU6aMli5dqi1btujRRx8t8ITP+vXrNX/+fK1bt07ly5e3LPmaMGFCrv1nzZqlevXqyc/PT0899ZRmzZqlcuXKFVh8JqMwUl5FXGxsrAICAnT+/PkCfbEBZ0pLS9OcOXM0cOBAZuGhxGKcozRgnKM0KOxxbhiGzr/1ltKPH7e0eTVvrjKPPVbgz43S68KFCypfvrxiYmLk7+9vaU9OTtbhw4ctRYOBbI6MDWb2AAAAACjVTCaTzO3bW7Ulb9+ujJgYJ0UEADfGoWRPWlqa6tatqz1MaQQAAABQgni3aSPlnEWUmamkDRucFxAA3ACHkj3u7u5KTk4uqFgAAAAAwClcvL3lfUWh5sQ1ayjUDKBYcngZ18iRI/XOO+8oPT29IOIBAAAAAKewKdR8/rxS9+51UjQAcP0c3udr06ZNWrZsmSIiItS4cWP5+PhYnf/555/zLTgAAAAAKCzutWvLrWpVpZ88aWlLXLNGnrfc4sSoUFqxlxKu5MiYcDjZExgYqAEDBjj6MAAAAAAo0rILNcf++KOlLXnbNmXExso1x25JQEFydXWVlLUlube3t5OjQVGSmpoq6d8xcjUOJ3umT5/ueEQAAAAAUAx4t2mj2J9/ltLSshoyMpS0YYN8u3d3bmAoNdzc3GQ2m3Xu3Dm5u7vLxYVNtCFlZmbq3LlzMpvNcnO7dirH4WSPJKWnp2vlypU6ePCg7rvvPvn5+enUqVPy9/eXr6/v9VwSAAAAAJzOxcdH3iEhStq40dKWuHatfMLDZTKZnBgZSguTyaTKlSvr8OHDOnr0qLPDQRHi4uKiGjVq2PVe5HCy5+jRo+rRo4eOHTumlJQUhYWFyc/PT++8845SUlL0xRdfXFfQAAAAAFAUmDt0sEr2ZJw9q9R9++R5881OjAqliYeHh+rXr29ZtgNIWePC3pleDid7/vOf/6hly5bavn27ypUrZ2nv37+/hg8f7ujlAAAAAKBIca9bV26VKys9OtrSlrhmDckeFCoXFxd5eXk5OwwUUw4v/luzZo1effVVeXh4WLXXqlVLJ3NUrQcAAACA4ii7UHNOyVu3KjM+3kkRAYBjHE72ZGZmKiMjw6b9xIkT8vPzy5egAAAAAMCZvNu2lXIWQU1PV+KGDc4LCAAc4HCyJzw8XJMmTbIcm0wmxcfH6/XXX1fPnj3zMzYAAAAAcAoXX195tWhh1Za4dq0Mw3BSRABgP4eTPR988IHWrVun4OBgJScn67777rMs4XrnnXcKIkYAAAAAKHTmDh2sjjNOn1bagQNOigYA7OdwgeZq1app+/bt+uGHH7Rjxw7Fx8dr6NChuv/+++Xt7V0QMQIAAABAofOoX1+uFSsq48wZS1vimjXyqF/fiVEBwLU5nOyRJDc3Nz3wwAP5HQsAAAAAFBkmk0nmDh0UN2eOpS0pKkr+d98tFx8fJ0YGAFfn8DIuSdq7d6+efPJJde3aVV27dtWTTz6pv//+O79jAwAAAACnMoeG2hRqTvrjD+cFBAB2cDjZM3fuXDVq1EhRUVFq2rSpmjZtqi1btqhx48aaO3duQcQIAAAAAE7h4usrr2bNrNoS16yhUDOAIs3hZVwvvPCCRo8erXHjxlm1v/7663rhhRc0YMCAfAsOAAAAAJzN3KGDkjdvthynnzqltEOH5FG3rhOjAoC8OTyzJzo6WoMHD7Zpf+CBBxQdHZ0vQQEAAABAUeFx001yDQqyaktcs8ZJ0QDAtTmc7OncubPW5PLGtnbtWnW4YmtCAAAAACjuTC4uMrdvb9WWtHmzMhMTnRQRAFydw8u4+vTpoxdffFFRUVFq27atJGnjxo2aPXu2xo4dqwULFlj1BQAAAIDizjs0VHHz50sZGVkNaWlK+uMP+dx2m3MDA4BcOJzseeKJJyRJn3/+uT7//PNcz0lZ2xRmZL8RAgAAAEAx5urvL6+mTZW8ZYulLXHNGpk7d5bJZHJiZABgy+FlXJmZmXb9I9EDAAAAoCQxX1G2Iv3kSaUdOeKcYADgKhxO9gAAAABAaeTRoIFcy5e3aqNQM4CiiGQPAAAAANgh10LN69YpesQIRY8YoYy4OCdFBgDWSPYAAAAAgJ2827WTXPgzCkDRxrsUAAAAANjLxUUewcG5nsqMi1PGP/8AwJkc3o0LAAAAAEqrs889l+e582PHWv6/8pdfFkY4AJArh2f2bNmyRTt37rQcz58/X/369dPLL7+s1NTUfA0OAAAAAAAAjnE42TNixAjt27dPknTo0CHdc889MpvNmj17tl544YV8DxAAAAAAAAD2czjZs2/fPjVr1kySNHv2bHXs2FGzZs3SjBkzNHfu3PyODwAAAAAAAA5wuGaPYRjKzMyUJC1dulR33HGHJKl69eo6f/58/kYHAAAAAEVI0PvvS8oqxpyzRo8keTZvroD773dGWABgxeFkT8uWLfXmm2+qW7duWrVqlSZPnixJOnz4sCpWrJjvAQIAAABAUeHq55fnuZS//5aL2SyTq2shRgQAthxexjVp0iRt2bJFTz75pF555RXVq1dPkjRnzhy1a9cu3wMEAAAAgGIhKUkpe/Y4OwoAcHxmT5MmTax248r23nvvyZUMNgAAAIBSwNXPT5W//FLn335baYcPW9qTo6Lk1aiREyMDgOuY2SNJly9f1tdff63Ro0fr4sWLkqTdu3fr7Nmz+RocAAAAABRlXi1bWh0nb9smIz3dSdEAQBaHkz07duxQ/fr19c477+j999/X5cuXJUk///yzRo8end/xAQAAAECR5d2ihdWxkZiolL//dlI0AJDF4WTPs88+q4cfflj79++Xl5eXpb1nz55avXp1vgYHAAAAAEWZa9mycq9Tx6otOSrKSdEAQBaHkz2bNm3SiBEjbNqrVq2q06dP50tQAAAAAFBceIWEWB2zlAuAszmc7PH09FRsbKxN+759+1ShQoV8CQoAAAAAiguWcgEoahxO9vTp00fjxo1TWlqaJMlkMunYsWN68cUXNWDAgHwPEAAAAACKslyXcm3e7KRoAOA6kj0ffPCB4uPjFRQUpKSkJHXq1En16tWTn5+f3nrrrYKIEQAAAACKNJulXNu3s5QLgNO4OfqAgIAARUZGau3atdqxY4fi4+PVokULdevWrSDiAwAAAIAiz7tFC8XNnm05NhITlbJnj7waN3ZiVABKK4eTPdnat2+v9u3b52csAAAAAFAsZS/lSjt0yNKWHBVFsgeAU9iV7Pnkk0/06KOPysvLS5988slV+44aNSpfAgMAAACA4sQ7JMQ62fPPUi6T23V/xg4A18Wud52PPvpI999/v7y8vPTRRx/l2c9kMpHsAQAAAFAqeYWEKJalXACKALuSPYcPH871/wEAAAAAWVzLlJF73bpKO3jQ0sZSLgDO4NBuXGlpaapbt6727NlTUPEAAAAAQLHl3aKF1XHytm3sygWg0DmU7HF3d1dycnJBxQIAAAAAxdqVW7AbSUlK4cNyAIXMoWSPJI0cOVLvvPOO0slOAwAAAICV7KVcOSVHRTkpGgCllcPJnk2bNunnn39WjRo11L17d915551W/xwxceJEtWr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O88eOHZvLLrssixYtypFHHrnV12ltbU1ra2vH8erVq5MkbW1taWtr2+nXBT3Ba72tx6lk+pxqoM+pBvp8x9QdcsjvR7na23+/0NaW9QsXpmGL+/nQM+hvulKPCXva29vz6U9/OieccEIOPfTQjvUPf/jD2XfffbPnnnvmV7/6Va666qosXbo0P/nJT5IkLS0tZUFPko7jlpaWTr/W1KlT88UvfnGr9VmzZnWESFCpZsyYUXQJ0OX0OdVAn1MN9Pn2O2zQoAz+3//tOH72rruy6LnnCqyIN7J+/fqiS6CC9ZiwZ8KECXn66aczb968svVLL720479HjhyZ4cOH533ve1+WLVuW/ffff4e+1mc/+9lcfvnlHcerV6/OiBEjMm7cuOy22247dgHQw7W1tWXGjBk599xzU19fX3Q50CX0OdVAn1MN9PmO27DXXln7z//ccbzHqlU575xzUtPQUGBVdObll18uugQqWI8IeyZOnJiZM2fmoYceyt577/2m5x577LFJkmeeeSb7779/hg0blscff7zsnJUrVybJG97np6GhIQ2dfLOrr6/3w4SKp8+pBvqcaqDPqQb6fPvVjRqVtf/yL2WjXJuXLEm/Y44ptjC2orfpSoU+jatUKmXixIm54447Mnfu3Oy3337b/JyFCxcmSYYPH54kGT16dJ566qm8+OKLHefMmTMnAwcOzMEHH9wldQMAAPREtf37p+E97ylb2zB/fkHVAEUpNOyZMGFCfvCDH+S2225Lc3NzWlpa0tLSkldffTVJsmzZskyZMiXz58/P888/nzvvvDMXXnhhTjrppBx22GFJkjFjxuTggw/OBRdckF/+8pe55557cu2112bChAmd7t4BAACoZI1b3JB5w9NPp33DhoKqAYpQaNhz0003ZdWqVTnllFMyfPjwjo8f/vCHSZK+ffvmvvvuy5gxY3LQQQflM5/5TM4777zcddddHe9RV1eXmTNnpq6uLqNHj87555+fCy+8MF/60peKuiwAAIDCNB5xxO+fyvWatra0PvVUYfUA3a/Qe/aUSqU3fX3EiBF58MEHt/k+++67b+6+++6dVRYAAECv9dooV+uiRR1rrz7xhPv2QBUpdGcPAAAAO9+Wo1ytixYZ5YIqIuwBAACoMJ2Ocv3qV4XVA3QvYQ8AAECF6eypXK96KhdUDWEPAABABdpqlMtTuaB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TuAAAAAAqiJ09AAAAABVE2AMAAABQQYQ9AAAAABVE2AMAAABQQaoi7Jk2bVre8Y53pLGxMccee2wef/zxNz3/Rz/6UQ466KA0NjZm5MiRufvuu7upUthx29Pn3/3ud3PiiSdm1113za677prTTz99m/8uoCfY3u/nr7n99ttTU1OT8ePHd22BsBNsb5+/8sormTBhQoYPH56Ghoa8613v8v8u9Hjb2+d///d/n3e/+93p169fRowYkUmTJmXDhg3dVC1sv4ceeijnnHNO9txzz9TU1OSnP/3pNj/ngQceyFFHHZWGhoYccMABmT59epfXSeWq+LDnhz/8YS6//PJMnjw5CxYsyOGHH56xY8fmxRdf7PT8Rx55JB/60Idy8cUX58knn8z48eMzfvz4PP30091cObx129vnDzzwQD70oQ/l3//93/Poo49mxIgRGTNmTF544YVurhzeuu3t89c8//zzueKKK3LiiSd2U6Ww47a3zzdu3Jgzzjgjzz//fH784x9n6dKl+e53v5u99tqrmyuHt257+/y2227L1VdfncmTJ2fJkiW5+eab88Mf/jDXXHNNN1cOb926dety+OGHZ9q0aW/p/Oeeey7jxo3LqaeemoULF+bTn/50Lrnkktxzzz1dXCmVquIfvX7sscfmmGOOyTe+8Y0kSXt7e0aMGJFPfvKTufrqq7c6/wMf+EDWrVuXmTNndqwdd9xxOeKII/Ktb32r2+qG7bG9fb6lzZs3Z9ddd803vvGNXHjhhV1dLuyQHenzzZs356STTsrHPvax/OxnP8srr7zylv6yBkXZ3j7/1re+lb/7u7/Lr3/969TX13d3ubBDtrfPJ06cmCVLluT+++/vWPvMZz6Tn//855k3b1631Q07qqamJnfccceb7jC+6qqrMmvWrLJNBh/84AfzyiuvZPbs2d1QJZWmonf2bNy4MfPnz8/pp5/esVZbW5vTTz89jz76aKef8+ijj5adnyRjx459w/OhaDvS51tav3592traMnjw4K4qE96WHe3zL33pSxkyZEguvvji7igT3pYd6fM777wzo0ePzoQJEzJ06NAceuihuf7667N58+buKhu2y470+fHHH5/58+d3jHo9++yzufvuu3PWWWd1S83QHfweys7Wp+gCutJLL72UzZs3Z+jQoWXrQ4cOza9//etOP6elpaXT81taWrqsTng7dqTPt3TVVVdlzz333OoHDPQUO9Ln8+bNy80335yFCxd2Q4Xw9u1Inz/77LOZO3duPvKRj+Tuu+/OM888k7/6q79KW1tbJk+e3B1lw3bZkT7/8Ic/nJdeeinvfe97UyqVsmnTpnziE58wxkVFeaPfQ1evXp1XX301/fr1K6gyequK3tkDbNtXvvKV3H777bnjjjvS2NhYdDmwU6xZsyYXXHBBvvvd72b33XcvuhzoMu3t7RkyZEi+853vZNSoUfnABz6Qz33uc0bPqSgPPPBArr/++nzzm9/MggUL8pOf/CSzZs3KlClTii4NoMeq6J09u+++e+rq6rJy5cqy9ZUrV2bYsGGdfs6wYcO263wo2o70+WtuvPHGfOUrX8l9992Xww47rCvLhLdle/t82bJlef7553POOed0rLW3tydJ+vTpk6VLl2b//ffv2qJhO+3I9/Phw4envr4+dXV1HWvvec970tLSko0bN6Zv375dWjNsrx3p889//vO54IILcskllyRJRo4cmXXr1uXSSy/N5z73udTW+vs1vd8b/R46cOBAu3rYIRX9nbFv374ZNWpU2c3c2tvbc//992f06NGdfs7o0aPLzk+SOXPmvOH5ULQd6fMkueGGGzJlypTMnj07Rx99dHeUCjtse/v8oIMOylNPPZWFCxd2fLz//e/veMLFiBEjurN8eEt25Pv5CSeckGeeeaYjzEyS3/zmNxk+fLighx5pR/p8/fr1WwU6rwWcFf6sGaqI30PZ6UoV7vbbby81NDSUpk+fXlq8eHHp0ksvLe2yyy6llpaWUqlUKl1wwQWlq6++uuP8hx9+uNSnT5/SjTfeWFqyZElp8uTJpfr6+tJTTz1V1CXANm1vn3/lK18p9e3bt/TjH/+4tGLFio6PNWvWFHUJsE3b2+dbuuiii0rnnntuN1ULO2Z7+3z58uWl5ubm0sSJE0tLly4tzZw5szRkyJDS3/zN3xR1CbBN29vnkydPLjU3N5f+5V/+pfTss8+W7r333tL+++9f+vM///OiLgG2ac2aNaUnn3yy9OSTT5aSlL761a+WnnzyydJ//ud/lkqlUunqq68uXXDBBR3nP/vss6WmpqbSlVdeWVqyZElp2rRppbq6utLs2bOLugR6uYoe40p+/yj1//7v/84XvvCFtLS05Igjjsjs2bM7bn61fPnysr8UHH/88bntttty7bXX5pprrsmBBx6Yn/70pzn00EOLugTYpu3t85tuuikbN27Mn/7pn5a9z+TJk3Pdddd1Z+nwlm1vn0NvtL19PmLEiNxzzz2ZNGlSDjvssOy1117567/+61x11VVFXQJs0/b2+bXXXpuamppce+21eeGFF7LHHnvknHPOyZe//OWiLgG26Yknnsipp57acXz55ZcnSS666KJMnz49K1asyPLlyzte32+//TJr1qxMmjQpX//617P33nvne9/7XsaOHdvttVMZakolex8BAAAAKoU/gQIAAABUEGEPAAAAQAUR9gAAAABUEGEPAAAAQAUR9gAAAABUEGEPAAAAQAUR9gAAAABUEGEPAAAAQAUR9gAA3a6mpiY//elPkyTPP/98ampqsnDhwkJrAgCoFMIeAKgyH/3oR1NTU5OamprU19dnv/32y//7f/8vGzZsKLo0AAB2gj5FFwAAdL8zzzwzt9xyS9ra2jJ//vxcdNFFqampyd/+7d8WXRoAAG+TnT0AUIUaGhoybNiwjBgxIuPHj8/pp5+eOXPmJEna29szderU7LfffunXr18OP/zw/PjHPy77/EWLFuXss8/OwIED09zcnBNPPDHLli1LkvziF7/IGWeckd133z2DBg3KySefnAULFnT7NQIAVCthDwBUuaeffjqPPPJI+vbtmySZOnVq/umf/inf+ta3smjRokyaNCnnn39+HnzwwSTJCy+8kJNOOikNDQ2ZO3du5s+fn4997GPZtGlTkmTNmjW56KKLMm/evDz22GM58MADc9ZZZ2XNmjWFXSMAQDUxxgUAVWjmzJkZMGBANm3alNbW1tTW1uYb3/hGWltbc/311+e+++7L6NGjkyTvfOc7M2/evHz729/OySefnGnTpmXQoEG5/fbbU19fnyR517ve1fHep512WtnX+s53vpNddtklDz74YM4+++zuu0gAgCol7AGAKnTqqafmpptuyrp16/K1r30tffr0yXnnnZdFixZl/fr1OeOMM8rO37hxY4488sgkycKFC3PiiSd2BD1bWrlyZa699to88MADefHFF7N58+asX78+y5cv7/LrAgBA2AMAVal///454IADkiT/+I//mMMPPzw333xzDj300CTJrFmzstdee5V9TkNDQ5KkX79+b/reF110UV5++eV8/etfz7777puGhoaMHj06Gzdu7IIrAQBgS8IeAKhytbW1ueaaa3L55ZfnN7/5TRoaGrJ8+fKcfPLJnZ5/2GGH5dZbb01bW1unu3sefvjhfPOb38xZZ52VJPntb3+bl156qUuvAQCA17lBMwCQP/uzP0tdXV2+/e1v54orrsikSZNy6623ZtmyZVmwYEH+4R/+IbfeemuSZOLEiVm9enU++MEP5oknnsh//Md/5Pvf/36WLl2aJDnwwAPz/e9/P0uWLMnPf/7zfOQjH9nmbiAAAHYeO3sAgPTp0ycTJ07MDTfckOeeey577LFHpk6dmmeffTa77LJLjjrqqFxzzTVJkt122y1z587NlVdemZNPPjl1dXU54ogjcsIJJyRJbr755lx66aU56qijMmLEiFx//fW54oorirw8AICqUlMqlUpFFwEAAADAzmGMCwAAAKCCCHsAAAAAKoiwBwAAAKCCCHsAAAAAKoiwBwAAAKCCCHsAAAAAKoiwBwAAAKCCCHsAAAAAKoiwBwAAAKCCCHsAAAAAKoiwBwAAAKCC/H8RolVIIffBRwAAAABJRU5ErkJggg== \ No newline at end of file diff --git a/docs/pages/performance/fashion-mnist/plot.png b/docs/pages/performance/fashion-mnist/plot.png index 92cc5602f..3a1c933ed 100644 Binary files a/docs/pages/performance/fashion-mnist/plot.png and b/docs/pages/performance/fashion-mnist/plot.png differ diff --git a/docs/pages/performance/fashion-mnist/results.md b/docs/pages/performance/fashion-mnist/results.md index 6934ad6a5..3f98405b1 100644 --- a/docs/pages/performance/fashion-mnist/results.md +++ b/docs/pages/performance/fashion-mnist/results.md @@ -1,10 +1,10 @@ |Model|Parameters|Recall|Queries per Second| |---|---|---|---| -|eknn-l2lsh|L=100 k=4 w=1024 candidates=500 probes=0|0.378|381.122| -|eknn-l2lsh|L=100 k=4 w=1024 candidates=1000 probes=0|0.447|315.007| -|eknn-l2lsh|L=100 k=4 w=1024 candidates=500 probes=3|0.635|302.868| -|eknn-l2lsh|L=100 k=4 w=1024 candidates=1000 probes=3|0.716|258.193| -|eknn-l2lsh|L=100 k=4 w=2048 candidates=500 probes=0|0.768|335.365| -|eknn-l2lsh|L=100 k=4 w=2048 candidates=1000 probes=0|0.846|288.638| -|eknn-l2lsh|L=100 k=4 w=2048 candidates=500 probes=3|0.921|230.383| -|eknn-l2lsh|L=100 k=4 w=2048 candidates=1000 probes=3|0.960|207.293| +|eknn-l2lsh|L=100 k=4 w=1024 candidates=500 probes=0|0.378|381.926| +|eknn-l2lsh|L=100 k=4 w=1024 candidates=1000 probes=0|0.447|315.984| +|eknn-l2lsh|L=100 k=4 w=1024 candidates=500 probes=3|0.635|298.115| +|eknn-l2lsh|L=100 k=4 w=1024 candidates=1000 probes=3|0.716|258.478| +|eknn-l2lsh|L=100 k=4 w=2048 candidates=500 probes=0|0.767|335.131| +|eknn-l2lsh|L=100 k=4 w=2048 candidates=1000 probes=0|0.846|282.080| +|eknn-l2lsh|L=100 k=4 w=2048 candidates=500 probes=3|0.921|222.554| +|eknn-l2lsh|L=100 k=4 w=2048 candidates=1000 probes=3|0.960|202.313| diff --git a/elastiknn-api4s/src/main/java/com/klibisz/elastiknn/api/FloatArrayBuffer.java b/elastiknn-api4s/src/main/java/com/klibisz/elastiknn/api/FloatArrayBuffer.java new file mode 100644 index 000000000..4f672c2a4 --- /dev/null +++ b/elastiknn-api4s/src/main/java/com/klibisz/elastiknn/api/FloatArrayBuffer.java @@ -0,0 +1,44 @@ +package com.klibisz.elastiknn.api; + +import java.util.Arrays; + +public class FloatArrayBuffer { + + // Track the last final capacity to exploit the fact that the current + // vector length is probably the same as the last vector length. + // Using a non-atomic because race conditions are unlikely to hurt. + private static final int minInitialCapacity = 4; + private static final int maxInitialCapacity = 4096; + private static int nextInitialCapacity = minInitialCapacity; + + private float[] array; + + private int index = 0; + + public FloatArrayBuffer() { + this.array = new float[nextInitialCapacity]; + } + + public void append(float f) { + // I also measured a try/catch approach that attempts to set the index, + // catches an IndexOutOfBoundsException, and then expands the array. + // The if statement gets about 557013 ops/s on r6i.4xlarge. + // The try/catch gets about 523811 ops/s on r6i.4xlarge. + // Sticking with if statement because it's simpler and faster. + if (index == this.array.length) { + this.array = Arrays.copyOf(this.array, this.array.length * 2); + } + this.array[index++] = f; + } + + public float[] toArray() { + if (nextInitialCapacity != index) { + nextInitialCapacity = Math.min(maxInitialCapacity, Math.max(minInitialCapacity, index)); + } + if (this.array.length == index) { + return this.array; + } else { + return Arrays.copyOf(this.array, index); + } + } +} diff --git a/elastiknn-api4s/src/main/java/com/klibisz/elastiknn/api/IntArrayBuffer.java b/elastiknn-api4s/src/main/java/com/klibisz/elastiknn/api/IntArrayBuffer.java new file mode 100644 index 000000000..85b301482 --- /dev/null +++ b/elastiknn-api4s/src/main/java/com/klibisz/elastiknn/api/IntArrayBuffer.java @@ -0,0 +1,39 @@ +package com.klibisz.elastiknn.api; + +import java.util.Arrays; + +public class IntArrayBuffer { + + // Track the last final capacity to exploit the fact that the current + // vector length is probably the same as the last vector length. + // Using a non-atomic because race conditions are unlikely to hurt. + private static final int minInitialCapacity = 4; + private static final int maxInitialCapacity = 4096; + private static int nextInitialCapacity = minInitialCapacity; + + private int[] array; + + private int index = 0; + + public IntArrayBuffer() { + this.array = new int[nextInitialCapacity]; + } + + public void append(int i) { + if (index == this.array.length) { + this.array = Arrays.copyOf(this.array, this.array.length * 2); + } + this.array[index++] = i; + } + + public int[] toArray() { + if (nextInitialCapacity != index) { + nextInitialCapacity = Math.min(maxInitialCapacity, Math.max(minInitialCapacity, index)); + } + if (this.array.length == index) { + return this.array; + } else { + return Arrays.copyOf(this.array, index); + } + } +} \ No newline at end of file diff --git a/elastiknn-api4s/src/main/scala/com/klibisz/elastiknn/api/XContentCodec.scala b/elastiknn-api4s/src/main/scala/com/klibisz/elastiknn/api/XContentCodec.scala index 500d77fef..64e5fe2dd 100644 --- a/elastiknn-api4s/src/main/scala/com/klibisz/elastiknn/api/XContentCodec.scala +++ b/elastiknn-api4s/src/main/scala/com/klibisz/elastiknn/api/XContentCodec.scala @@ -7,7 +7,6 @@ import org.elasticsearch.xcontent._ import java.io.ByteArrayOutputStream import scala.collection.immutable.SortedSet -import scala.collection.mutable.ArrayBuffer /** JSON codec for Elastiknn API types, implemented using the Elasticsearch XContentBuilder and XContentParser. */ @@ -397,8 +396,8 @@ object XContentCodec { private def assertValue(name: String, text: String, expected: SortedSet[String]): Unit = if (expected.contains(text)) () else throw new XContentParseException(unexpectedValue(name, text, expected)) - private def parseFloatArray(p: XContentParser, expectedLength: Int): Array[Float] = { - val b = new ArrayBuffer[Float](expectedLength) + private def parseFloatArray(p: XContentParser): Array[Float] = { + val b = new FloatArrayBuffer() p.currentToken() match { case START_ARRAY => () case VALUE_NUMBER => b.append(p.floatValue()) @@ -411,8 +410,8 @@ object XContentCodec { b.toArray } - private def parseSparseBoolArray(p: XContentParser, expectedLength: Int): Array[Int] = { - val b = new ArrayBuffer[Int](expectedLength) + private def parseSparseBoolArray(p: XContentParser): Array[Int] = { + val b = new IntArrayBuffer() p.currentToken() match { case START_ARRAY => () case VALUE_NUMBER => b.append(p.intValue()) @@ -469,13 +468,13 @@ object XContentCodec { index = Some(p.text()) case n @ Names.TRUE_INDICES => assertToken(n, p.nextToken(), START_ARRAY) - trueIndices = Some(parseSparseBoolArray(p, 42)) + trueIndices = Some(parseSparseBoolArray(p)) case n @ Names.TOTAL_INDICES => assertToken(n, p.nextToken(), VALUE_NUMBER) totalIndices = Some(p.intValue()) case n @ Names.VALUES => assertToken(n, p.nextToken(), START_ARRAY) - values = Some(parseFloatArray(p, 42)) + values = Some(parseFloatArray(p)) case _ => p.nextToken() } } @@ -485,9 +484,9 @@ object XContentCodec { case END_ARRAY => values = Some(Array.empty) case VALUE_NUMBER => - values = Some(parseFloatArray(p, 42)) + values = Some(parseFloatArray(p)) case START_ARRAY => - trueIndices = Some(parseSparseBoolArray(p, 42)) + trueIndices = Some(parseSparseBoolArray(p)) assertToken(p.nextToken(), VALUE_NUMBER) totalIndices = Some(p.intValue()) case t => diff --git a/elastiknn-jmh-benchmarks/src/main/scala/com/klibisz/elastiknn/jmhbenchmarks/FloatArrayBufferBenchmarks.scala b/elastiknn-jmh-benchmarks/src/main/scala/com/klibisz/elastiknn/jmhbenchmarks/FloatArrayBufferBenchmarks.scala new file mode 100644 index 000000000..c620c4bfe --- /dev/null +++ b/elastiknn-jmh-benchmarks/src/main/scala/com/klibisz/elastiknn/jmhbenchmarks/FloatArrayBufferBenchmarks.scala @@ -0,0 +1,49 @@ +package com.klibisz.elastiknn.jmhbenchmarks + +import com.klibisz.elastiknn.api.FloatArrayBuffer +import org.openjdk.jmh.annotations._ + +import scala.collection.mutable.ArrayBuffer +import scala.util.Random + +@State(Scope.Benchmark) +class FloatArrayBufferBenchmarksState { + implicit private val rng: Random = new Random(0) + val lst768 = (0 until 768).map(_ => rng.nextFloat()).toList +} + +class FloatArrayBufferBenchmarks { + + @Benchmark + @BenchmarkMode(Array(Mode.Throughput)) + @Fork(value = 1) + @Warmup(time = 5, iterations = 1) + @Measurement(time = 5, iterations = 1) + def scalaAppendFixedInitialSize(state: FloatArrayBufferBenchmarksState): Int = { + val buf = new ArrayBuffer[Float]() + state.lst768.foreach(buf.append) + buf.toArray.length + } + + @Benchmark + @BenchmarkMode(Array(Mode.Throughput)) + @Fork(value = 1) + @Warmup(time = 5, iterations = 1) + @Measurement(time = 5, iterations = 1) + def scalaAppendKnownInitialSize(state: FloatArrayBufferBenchmarksState): Int = { + val buf = new ArrayBuffer[Float](768) + state.lst768.foreach(buf.append) + buf.toArray.length + } + + @Benchmark + @BenchmarkMode(Array(Mode.Throughput)) + @Fork(value = 1) + @Warmup(time = 5, iterations = 1) + @Measurement(time = 5, iterations = 1) + def customAppend(state: FloatArrayBufferBenchmarksState): Int = { + val buf = new FloatArrayBuffer() + state.lst768.foreach(buf.append) + buf.toArray.length + } +} diff --git a/elastiknn-plugin/src/main/java/com/klibisz/elastiknn/VectorMapperUtil.java b/elastiknn-plugin/src/main/java/com/klibisz/elastiknn/VectorMapperUtil.java new file mode 100644 index 000000000..73ea3e920 --- /dev/null +++ b/elastiknn-plugin/src/main/java/com/klibisz/elastiknn/VectorMapperUtil.java @@ -0,0 +1,9 @@ +package com.klibisz.elastiknn; + +import org.elasticsearch.index.mapper.FieldMapper; + +public class VectorMapperUtil { + + public static FieldMapper.Parameter[] EMPTY_ARRAY_FIELD_MAPPER_PARAMETER = new FieldMapper.Parameter[0]; + +} diff --git a/elastiknn-plugin/src/main/plugin-metadata/plugin-security.policy b/elastiknn-plugin/src/main/plugin-metadata/plugin-security.policy index 1d287d1d9..e89913b9f 100644 --- a/elastiknn-plugin/src/main/plugin-metadata/plugin-security.policy +++ b/elastiknn-plugin/src/main/plugin-metadata/plugin-security.policy @@ -1,3 +1,2 @@ grant { - permission java.lang.RuntimePermission "getClassLoader"; }; diff --git a/elastiknn-plugin/src/main/scala/com/klibisz/elastiknn/mapper/VectorMapper.scala b/elastiknn-plugin/src/main/scala/com/klibisz/elastiknn/mapper/VectorMapper.scala index fc22f4108..5f65c8eac 100644 --- a/elastiknn-plugin/src/main/scala/com/klibisz/elastiknn/mapper/VectorMapper.scala +++ b/elastiknn-plugin/src/main/scala/com/klibisz/elastiknn/mapper/VectorMapper.scala @@ -30,7 +30,7 @@ object VectorMapper { else { val sorted = vec.sorted() // Sort for faster intersections on the query side. mapping match { - case Mapping.SparseBool(_) => Try(ExactQuery.index(field, sorted)) + case Mapping.SparseBool(_) => Try(Seq(ExactQuery.index(field, sorted))) case m: Mapping.JaccardLsh => Try(HashingQuery.index(field, luceneFieldType, sorted, modelCache(m).hash(vec.trueIndices, vec.totalIndices))) case m: Mapping.HammingLsh => @@ -51,7 +51,7 @@ object VectorMapper { Failure(ElastiknnException.vectorDimensions(vec.values.length, mapping.dims)) else mapping match { - case Mapping.DenseFloat(_) => Try(ExactQuery.index(field, vec)) + case Mapping.DenseFloat(_) => Try(Seq(ExactQuery.index(field, vec))) case m: Mapping.CosineLsh => Try(HashingQuery.index(field, luceneFieldType, vec, modelCache(m).hash(vec.values))) case m: Mapping.L2Lsh => Try(HashingQuery.index(field, luceneFieldType, vec, modelCache(m).hash(vec.values))) case m: Mapping.PermutationLsh => Try(HashingQuery.index(field, luceneFieldType, vec, modelCache(m).hash(vec.values))) @@ -138,6 +138,9 @@ abstract class VectorMapper[V <: Vec: XContentCodec.Decoder] { self => override def getMergeBuilder: FieldMapper.Builder = new Builder(simpleName(), mapping) } - override def getParameters: Array[FieldMapper.Parameter[_]] = Array.empty + override def getParameters: Array[FieldMapper.Parameter[_]] = + // This has to be defined in Java because scala's Array wrapper uses ClassTag, + // which requires the extra permission: java.lang.RuntimePermission "getClassLoader". + VectorMapperUtil.EMPTY_ARRAY_FIELD_MAPPER_PARAMETER } } diff --git a/elastiknn-plugin/src/main/scala/com/klibisz/elastiknn/query/ExactQuery.scala b/elastiknn-plugin/src/main/scala/com/klibisz/elastiknn/query/ExactQuery.scala index 70500d979..23b90857c 100644 --- a/elastiknn-plugin/src/main/scala/com/klibisz/elastiknn/query/ExactQuery.scala +++ b/elastiknn-plugin/src/main/scala/com/klibisz/elastiknn/query/ExactQuery.scala @@ -53,8 +53,8 @@ final class ExactQuery[V <: Vec, S <: StoredVec](field: String, queryVec: V, sim } object ExactQuery { - def index[V <: Vec: StoredVec.Encoder](field: String, vec: V): Seq[IndexableField] = { + def index[V <: Vec: StoredVec.Encoder](field: String, vec: V): IndexableField = { val storedVec = implicitly[StoredVec.Encoder[V]].apply(vec) - Seq(new BinaryDocValuesField(field, new BytesRef(storedVec))) + new BinaryDocValuesField(field, new BytesRef(storedVec)) } } diff --git a/elastiknn-plugin/src/main/scala/com/klibisz/elastiknn/query/HashingQuery.scala b/elastiknn-plugin/src/main/scala/com/klibisz/elastiknn/query/HashingQuery.scala index be189ab1b..f16919da5 100644 --- a/elastiknn-plugin/src/main/scala/com/klibisz/elastiknn/query/HashingQuery.scala +++ b/elastiknn-plugin/src/main/scala/com/klibisz/elastiknn/query/HashingQuery.scala @@ -11,6 +11,7 @@ import org.apache.lucene.util.BytesRef import org.elasticsearch.common.lucene.search.function.{CombineFunction, LeafScoreFunction, ScoreFunction} import java.util.Objects +import scala.collection.mutable.ListBuffer final class HashingQuery[V <: Vec, S <: StoredVec: Decoder]( field: String, @@ -52,10 +53,15 @@ final class HashingQuery[V <: Vec, S <: StoredVec: Decoder]( private val reader = ctx.reader() private val terms = reader.terms(field) private val termsEnum = terms.iterator() - private val postings = hashes.sorted.flatMap { h => - if (termsEnum.seekExact(new BytesRef(h.hash))) Some(termsEnum.postings(null, PostingsEnum.NONE)) - else None + private val postings: Seq[PostingsEnum] = { + val buf = new ListBuffer[PostingsEnum]() + hashes.sorted.foreach { h => + if (termsEnum.seekExact(new BytesRef(h.hash))) buf.prepend(termsEnum.postings(null, PostingsEnum.NONE)) + else None + } + buf.toList.reverse } + override def score(docId: Int, subQueryScore: Float): Double = { val intersection = postings.count { p => p.docID() != DocIdSetIterator.NO_MORE_DOCS && p.advance(docId) == docId } simFunc.maxScore * (intersection * 1d / hashes.length) @@ -84,8 +90,11 @@ object HashingQuery { fieldType: FieldType, vec: V, hashes: Array[HashAndFreq] - ): Seq[IndexableField] = ExactQuery.index(field, vec) ++ hashes.flatMap { h => - val f = new Field(field, h.hash, fieldType) - (0 until h.freq).map(_ => f) + ): Seq[IndexableField] = { + val buffer = ListBuffer.empty[IndexableField] + hashes.foreach { h => + (0 until h.freq).foreach(_ => buffer.prepend(new Field(field, h.hash, fieldType))) + } + buffer.prepend(ExactQuery.index(field, vec)).toList } } diff --git a/elastiknn-plugin/src/test/scala/com/klibisz/elastiknn/models/PermutationLshModelSuite.scala b/elastiknn-plugin/src/test/scala/com/klibisz/elastiknn/models/PermutationLshModelSuite.scala index 43a2f1fb1..c10fe6d2c 100644 --- a/elastiknn-plugin/src/test/scala/com/klibisz/elastiknn/models/PermutationLshModelSuite.scala +++ b/elastiknn-plugin/src/test/scala/com/klibisz/elastiknn/models/PermutationLshModelSuite.scala @@ -15,6 +15,10 @@ import scala.util.Random class PermutationLshModelSuite extends AnyFunSuite with Matchers with LuceneSupport { + // For some unknown reason the exact score values started to slightly differ around March 2024. + def round(f: Float): Float = + BigDecimal(f).setScale(6, BigDecimal.RoundingMode.HALF_UP).floatValue + test("lucene example where counting matters") { // This example demonstrates a tricky condition: 0 appears once in the query vector and three times in corpus vector @@ -62,7 +66,7 @@ class PermutationLshModelSuite extends AnyFunSuite with Matchers with LuceneSupp } { case (r, s) => queryVecs.map { v => val q = new HashingQuery("vec", v, 200, lsh.hash(v.values), cosine) - s.search(q.toLuceneQuery(r), 100).scoreDocs.map(sd => (sd.doc, sd.score)).toVector + s.search(q.toLuceneQuery(r), 100).scoreDocs.map(sd => (sd.doc, round(sd.score))).toVector } } queryResults