redac---n 0.0.0-stage → 0.0.1

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.
Files changed (102) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +323 -2
  3. package/THIRD_PARTY_NOTICES.md +59 -0
  4. package/dist/aho.d.ts +25 -0
  5. package/dist/aho.js +116 -0
  6. package/dist/base64.d.ts +10 -0
  7. package/dist/base64.js +29 -0
  8. package/dist/bip39-data.d.ts +2 -0
  9. package/dist/bip39-data.js +2 -0
  10. package/dist/cache.d.ts +14 -0
  11. package/dist/cache.js +40 -0
  12. package/dist/calls.d.ts +64 -0
  13. package/dist/calls.js +269 -0
  14. package/dist/charlm-data.d.ts +2 -0
  15. package/dist/charlm-data.js +3 -0
  16. package/dist/charlm.d.ts +7 -0
  17. package/dist/charlm.js +65 -0
  18. package/dist/checksums.d.ts +10 -0
  19. package/dist/checksums.js +98 -0
  20. package/dist/commands.d.ts +72 -0
  21. package/dist/commands.js +784 -0
  22. package/dist/context.d.ts +98 -0
  23. package/dist/context.js +469 -0
  24. package/dist/encoded.d.ts +11 -0
  25. package/dist/encoded.js +336 -0
  26. package/dist/environment.d.ts +10 -0
  27. package/dist/environment.js +62 -0
  28. package/dist/formats-data.d.ts +2 -0
  29. package/dist/formats-data.js +405 -0
  30. package/dist/formats.d.ts +5 -0
  31. package/dist/formats.js +470 -0
  32. package/dist/hmac.d.ts +3 -0
  33. package/dist/hmac.js +87 -0
  34. package/dist/index.d.ts +101 -0
  35. package/dist/index.js +484 -0
  36. package/dist/json.d.ts +82 -0
  37. package/dist/json.js +392 -0
  38. package/dist/known.d.ts +34 -0
  39. package/dist/known.js +340 -0
  40. package/dist/lines.d.ts +28 -0
  41. package/dist/lines.js +69 -0
  42. package/dist/lookup.d.ts +5 -0
  43. package/dist/lookup.js +7 -0
  44. package/dist/model-data.d.ts +3 -0
  45. package/dist/model-data.js +4 -0
  46. package/dist/model.d.ts +2 -0
  47. package/dist/model.js +19 -0
  48. package/dist/named.d.ts +20 -0
  49. package/dist/named.js +3257 -0
  50. package/dist/names.d.ts +94 -0
  51. package/dist/names.js +1449 -0
  52. package/dist/normalize.d.ts +25 -0
  53. package/dist/normalize.js +529 -0
  54. package/dist/pem.d.ts +32 -0
  55. package/dist/pem.js +269 -0
  56. package/dist/policy.d.ts +3 -0
  57. package/dist/policy.js +470 -0
  58. package/dist/public.d.ts +44 -0
  59. package/dist/public.js +362 -0
  60. package/dist/publickeys.d.ts +41 -0
  61. package/dist/publickeys.js +232 -0
  62. package/dist/random.d.ts +29 -0
  63. package/dist/random.js +165 -0
  64. package/dist/repeats.d.ts +21 -0
  65. package/dist/repeats.js +76 -0
  66. package/dist/rules.d.ts +42 -0
  67. package/dist/rules.js +58 -0
  68. package/dist/runs.d.ts +10 -0
  69. package/dist/runs.js +36 -0
  70. package/dist/secretfile.d.ts +52 -0
  71. package/dist/secretfile.js +676 -0
  72. package/dist/shell.d.ts +127 -0
  73. package/dist/shell.js +703 -0
  74. package/dist/spans.d.ts +53 -0
  75. package/dist/spans.js +272 -0
  76. package/dist/sql.d.ts +20 -0
  77. package/dist/sql.js +66 -0
  78. package/dist/stream.d.ts +46 -0
  79. package/dist/stream.js +150 -0
  80. package/dist/structure.d.ts +24 -0
  81. package/dist/structure.js +1614 -0
  82. package/dist/syntax.d.ts +156 -0
  83. package/dist/syntax.js +446 -0
  84. package/dist/transcript.d.ts +30 -0
  85. package/dist/transcript.js +709 -0
  86. package/dist/types.d.ts +81 -0
  87. package/dist/types.js +1 -0
  88. package/dist/unnamed.d.ts +59 -0
  89. package/dist/unnamed.js +939 -0
  90. package/dist/urls.d.ts +70 -0
  91. package/dist/urls.js +303 -0
  92. package/dist/values.d.ts +178 -0
  93. package/dist/values.js +1621 -0
  94. package/dist/yaml.d.ts +40 -0
  95. package/dist/yaml.js +174 -0
  96. package/docs/creddata.svg +318 -0
  97. package/docs/guessing.md +139 -0
  98. package/docs/holdout.svg +85 -0
  99. package/docs/layers.md +80 -0
  100. package/docs/models.svg +81 -0
  101. package/docs/real-text.svg +112 -0
  102. package/package.json +57 -5
@@ -0,0 +1,3 @@
1
+ // Generated by scripts/train-charlm.ts from public code. Do not edit.
2
+ /** Character trigram model of identifier parts: -log2 p(c | two previous) * 16, base64 of 37^3 bytes. */
3
+ export const CHARLM = "/0FMPURIS1VWS2RnUUpUV0FoRjxJVl5aaGtrYGFiYmVlZWVlZf9PQjU4T0xOb1hydjtXPnc/cD06SDxdW3R7bP/////////////9KkpKSjBMX3I7cnJAZG04a3Q7YWQ6enBsU2r9/f39/f39/f39/zBZWVZJWW04WIB7PGVzF2aFSV9lS3RyfG+C//////////////80UFBSHFBxaSlsc3FoZzpsbE1iYE9mdHxld///////////////Q09ERVBIZHRTeHZESS1oV1lOS11dSWwkbnf//////////////jBNTUs7SG12K3N9PWVgMWZsOVpoQHFsc25u/v7+/v7+/v7+/vM7ZE9WJmJrVj1taEFbYjtZaipUZEFhd2FwZfPz8/Pz8/Pz8/PzKF9ZVS1laWI5YlxYXGAvV2xYV0ZEXGtkSWHz8/Pz8/Pz8/Pz/lVnV0VhWVdoZ2tuXDoTWFdiXDtJc2p5Z4Jw/v7+/v7+/v7+/uU3Vl1NSVlcWkZZUmBZVC9MVVMxWThXVFpaUeXl5eXl5eXl5eXiRVtRUSNdaVI2W2FNUUZIVltbW1RBTkVdZ1ri4uLi4uLi4uLi9y9lX14yZWxrImhqWmVjJGJpY1NeUl9ta2dh9/f39/f39/f39/8iaWJcLmZoey12ZmNoaSxlb2tVWz1pcHBNb//////////////1MV1VUSxVV2hCZnBYX2QhVHZdVlRAVF9rbGr19fX19fX19fX18lg+QldfRVpkW2ZkVU9EWitsNU1NOztUYWln8vLy8vLy8vLy8v8qc25cPnFqW0ZyZUJzZzVmeh9fZUplenE9cf/////////////hUlZPUEZRSllHXVtUVVdcUlNZS0wbWlRWWFvh4eHh4eHh4eHh/ztramUMbXJmVHp3aWttP2GSc1pjR2xyfXR4//////////////9FcEFsL3p0QTt/ZlNcXUY9X2liLC9vXHtQgP//////////////OGVeZi1aaDU8cW5mYWwyYHIoWGNTbl1sSGf/////////////82FeXWRlXmpnX3FlV18Tbz1wQTlBXl5nbm1r8/Pz8/Pz8/Pz8+spW1JcKl1cYStga19UVztXY1pSWUxaZVthYuvr6+vr6+vr6+vvLWVaXy9ZXDcxc2BfaF4yVmo9VF5hYF5aYmLv7+/v7+/v7+/v4UhJQ0FGQFpJVVRcRERWT0ZWSkZMVk9WRE9P4eHh4eHh4eHh4d01VUhMPUpUTUdTXElIUz1WUlRWSU1SSFNQUd3d3d3d3d3d3d3dUk9PSjlPUk0/VV1OSEtBT1ZZQ09ISEpOUkrd3d3d3d3d3d3d6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6OjoKzI9Nzk3LDk9Oejo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6DQyNDk1OjU2NDTm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5uYtMjI5NzQ4Njo65+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fnMzU0MTc2Njg2N+Tk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5DAzOTUvPDc1OTXk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OQ0NDE4NzM4NzY15OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkMTU5MzY2NTY3NuTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5Dg0ODY3ODUyMzPk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OQyOTM4NjA2Njc35OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkODQ1Mzc4NTI3M1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1MdGkI/SERGcNhpd3ZqiFxshWJdY4HY2IPYitjY2NjY2NjY2NjYMktJSl0/W4yDO3KKEoV4UZB4gErsaJ2Z7Ijs7Ozs7Ozs7Ozs7DpWZzZoLGWkN06jJGGDoWSTYWRyJnKHo/Z1p/b29vb29vb29vYmPVNIMSxadH44VexTRexLhIhqSIF4R4egYuzs7Ozs7Ozs7OzsGzo/Pj8+OnltTVOAUFpoZWx6g1NfcX+BX89xz8/Pz8/Pz8/PzyA6NUNDMimEh1rVdNWHiGGD1Vp0O9WGctWI1dXV1dXV1dXV1dU3QpB9kxHfOYE8349wXk5ki99MQ2OPdnSKjt/f39/f39/f39/fHy2urq4vrlpdXVtcV0CuOFFVSq6uVK5MYGKurq6urq6urq6urjdOkXxWgpVl5JOSeiZLF1aIZz1LQJh75Ifk5OTk5OTk5OTk5OQbKDuxsUpgRbGxZWWxYLEusbGxR2VjXF2xZWWxsbGxsbGxsbGxIkhsd14RynrKPcp6eH19cl3KYEbKd3zKe2vKysrKysrKysrKyh1UeVuAP3Bkgyn+YyVveFhkh4NFTU57g/5kp/7+/v7+/v7+/v4uTkt5eRLmeeY95ppQT+ZbNoKJTHNs5paU5oDm5ubm5ubm5ubmL0OGMypWljiYQ55glIFHWIesljUvY5KSrFiG+/v7+/v7+/v7+xSmpitOUlBRpkumplpGpqZaWqampk6mWlOmSaampqampqampqYrUHGCdzt8mjwu545sjJpZHY9eOzzn55vnfOfn5+fn5+fn5+fnHT+3WV8pa2pBXmpnXGS3WmhGt7dLM7dnaEu3t7e3t7e3t7e3tzQ+ZEk5OXw8kjmYR1xRV29sjkc2M6iPjI1Ksv7+/v7+/v7+/v4zXHZPai6SezZKpEh7dWpZZYiVISxZjpnyVory8vLy8vLy8vLyQECmSJcdg/9HGv+5g4W0QZf/dV5CW62cqJK7/////////////0GN2lxFZHRKhoPa2jaHUI55jmU1D9qLjliL2tra2tra2tra2towMWvPzxbPb88kg4DPc4E3z8+Bg4GBz3hvas/Pz8/Pz8/Pz8/PIClcdFpFbFlwTsBKRsAywMDAZzVawMBmaFJmwMDAwMDAwMDAwBhHwGZTOmvAXSjAwEpucUdSwGZNT8BcwGVRdMDAwMDAwMDAwMARZU9dZzh3dmpPbtJNVWlRX4SFMFPS0nTSgNLS0tLS0tLS0tLSIbGxsV1LW7GxLGSxYkaxNGCxsbFaLmVisTBRsbGxsbGxsbGxsVNTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTLUxGJkpUT12RZ5RlQmk/iGlfNTJJdeSRgXV35OTk5OTk5OTk5Bs9ND9CNz+Bgk2Cz0dvgl3PWkx9gWTPz4NWz8/Pz8/Pz8/Pz88cNkNBNzhB0VdTe9FFg9FF0YRpUnB30Wl1f4TR0dHR0dHR0dHRGi86Ojs9PX7LO8vLaH59UstreXXLy8vLf8tky8vLy8vLy8vLyyg7S0Q7RkxbTG3jkjXjQZLj4ypST+OAgHBgfePj4+Pj4+Pj4+MYNjc5OTs1enhWycl2yWxcfXtjdcnJyXjJyXrJycnJycnJycnJHmFdO61JrUCtVmBGU16tS1mtL1FgYUxVWmFera2tra2tra2trRlNUFQ0RKBPUaBMUKCgoC6gP6CgoKCgoE5RoKCgoKCgoKCgoKBCS2dfUW51P2+LidkhiyFKidlPbynZ2YqGi3DZ2dnZ2dnZ2dnZGj21XrUeZrVnRWW1tWe1UrVmTENRWbW1YLVktbW1tbW1tbW1tRilpUNBKaVMpTZTpaWlVKWlpaVVUKVQpVhXV6WlpaWlpaWlpaVPS5PoiAmJloY16HDompc8mITofpVbm5noVZno6Ojo6Ojo6OjoGj9kZ01DZ2K3JWtca7dmN1a3Z0lqardft2u3t7e3t7e3t7e3txQzVqlUNFhdqUxbqalaW0NVqV2pqVtdXKmpWqmpqampqampqalCQ2F7SdqIcnN4ito/ZFMnYdoyXDg2cHQsbIna2tra2tra2traIx6xsWBVsWJjYbGxN1pjTLGxKldksWJhY2SxsbGxsbGxsbGxsRgvqV2pW6mpqaldqV2pWqmpMKmpWSRdqalaqampqampqampqalFHn5feyHMzHsvgHhszHwkzMzMeWFfzMzMdXzMzMzMzMzMzMzMHmR3L08ne81dWn3NzXxwP17NbV0uWs1nzVnNzc3Nzc3Nzc3NzSIwbGa5Nmy5Z0hWuUprTkJlZC5juWlsuWw7aLm5ubm5ubm5ublY1GBPXX42N3QqgYI/TUTU1NRVNCLU1NTUZWLU1NTU1NTU1NTUFZ2dnZ06TJ2dIZ2dnZ1QnU+dnZ0/nZ1FT52dnZ2dnZ2dnZ2dnRNOTU2amppHmpqaS5pKmk1FmppKTUaaSkiampqampqampqampoPoVVToVJRoU9SoU2hoaFRoaGhUFJTUKFST1KhoaGhoaGhoaGhG1xqb3BJvEZRvG28vGxkvEJfZUgavG9tbby8vLy8vLy8vLy8vBJSTaBRoFRUUEhUoKCgUaBUoD6gUlJSUqBUoKCgoKCgoKCgoKBTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTUz5YTz5VX2GKp4enoiNfQKM8bEI/I2CFpvWh9fX19fX19fX19fUWNjs1Nzk3yXFnycl6e8l0yXrJY8nJycnJyWnJycnJycnJycnJIz1KP0ciTNllUNmNdGaKN9nZcIZmNdls2dnZ2dnZ2dnZ2dnZ2Ro+Pjo5LzfOT11/f4J1cX9pznpcbM57fc5zgs7Ozs7Ozs7Ozs4ZWF1bPFNdjXNZ9ZJHVT2IRY8+KIL1pvWXnpj19fX19fX19fX1GThBOT04O1h7VH7LWXRhXX3LW17LfXp4e8t8y8vLy8vLy8vLyx9arGCsMl5SSU9eXE5eW1pcrCtaXGCsSltTYKysrKysrKysrKwpI6LwbRued/AynHqHXWZFe/BLg4JVmYHwfvDw8PDw8PDw8PDwNzNpeDg6N3yIV5OGUFIwSTmIUUY239/f333f39/f39/f39/f3w+jo1WjVKNUV6NVS6Ojo0gzo6NEo6Ojo0OjUqOjo6Ojo6Ojo6McQGdxeSRid3xAmJhEc1pgTHVjM1xj5WnlaeXl5eXl5eXl5eXlRx7gceAtf43gKeDg4IySJZGBfFiGM+Dgkobg4ODg4ODg4ODg4Bwtu7suPmxWu1e7bVZqu2Uwb1dcu1xtb21bu7u7u7u7u7u7u7sVRK1NrUxRWa1Wra1brVxMXq1ZXCutrV49Ya2tra2tra2tra2tXneCdDp0f2WWlf//OyMZW1apOGSOSlSN/////////////////x1EuU5nU1RPuVBmWkdta7k4uWdluSW5uWs8ubm5ubm5ubm5ubkaJKhaqKioqFRZqKhPqKhXqD5YqKgmqKioTKioqKioqKioqKioPzTcbXQdkIzcJdzcYnKJLXrc3HZzStzcjjnc3Nzc3Nzc3Nzc3AzOzn2ATnBuZUrOznp7zndgzlk4PX07gM7Ozs7Ozs7Ozs7Ozs4jVaWB8jSL8vIb8qZSh5czffJUPJFJpIxYZaHy8vLy8vLy8vLyRolQ2mpy2tpubNraMDNv2ljaGjAtdNqAitqO2tra2tra2tra2hRHqlBdP1pQqlFeqleqXapKqls0ql1QV6qqW6qqqqqqqqqqqqoXT6xbO02sQ6xETFs3V6xdVF+sSVxdrFlfrKysrKysrKysrKysDaSkpKSkpFOkWFFUpD9GpFSkpKSkVlSkRFJWpKSkpKSkpKSkpAlWZiq7u29mu2+7u2O7u7tru1S7SWy7u7u7u7u7u7u7u7u7u7sNnUmdnUWdnZ2dTk2dUVCdUVGdUZ2dnZ1RUVGdnZ2dnZ2dnZ2dU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1MwV0ZPVVRYfId46YhSZD+FTGo/SBmUW4mSR5rp6enp6enp6enpFzY/PkNAP3fQ0NBmXWZwQGGC0HxlU9B/almD0NDQ0NDQ0NDQ0BsuPzs+QT1uWV95z1NdbUyAgVlsX8/PgHh+z8/Pz8/Pz8/Pz88ePkRFRi9B1XQ6hodSdYJdgdUwYYF91YSFgobV1dXV1dXV1dXVL1NROjlZPHWVqpeRQGA5hUWFKzpRklePWf+q/////////////xk5Qz05Oj9jeVCFglhsYVdi0XdUY26DhWWFhdHR0dHR0dHR0dEoW7VXtQ9nWrViabW1T7W1V7VAtWm1tV1jYmS1tbW1tbW1tbW1F0qvQmM0X15gRK9fUWNjNF2vYmOvYmNWWq9gr6+vr6+vr6+vr1M6ojVkY0Jc85Lz85JhJV6BojIjPnpP83rzhvPz8/Pz8/Pz8/MbL2GxYEexZWFisVliS7FgsWWxOrEnZWCxZV2xsbGxsbGxsbGxFFqmWqZFWlCmQEhUpkNTpqamVlhVpqZSVEZSpqampqampqampiVjxWzFF8XFcih0xWTFxT3Fc3N1eXl5xcU2xcXFxcXFxcXFxcUfL71NvUhraL0bcL1Ma71SaWpaV25xcL1uZb29vb29vb29vb29FC5fs1s8VbNlRWdns7NGs2ezszdis7OzZ2dks7Ozs7Ozs7OzszZ7aiF6TW5gf2CO3Vw4PlpV3UhjS0RqKHeH3d3d3d3d3d3d3d0eKFBjtWRjtWdHtVlaZ7UtZWgvZGdntbW1ZGW1tbW1tbW1tbW1FjFdVak0qV2pqampR1pXqampqVZKW1haW0NaqampqampqampqSojZM3NJXbNfTDNzc18fC9/eX9JzVZzYIBYzc3Nzc3Nzc3Nzc0GUndkhV2IgVhtiopvd2tyctfXY1pigWGJgInX19fX19fX19fXJ0a5uUo7TLkmR2q5TkhnW7m5SkdoWGxsZDhsubm5ubm5ubm5uT1Mhh/UWnLUhFXUhyczVnIz1D5XU4fU1HHU1NTU1NTU1NTU1NQmLmouYS5rY202arxdvG1MWT5GvHC8aW68vG68vLy8vLy8vLy8Hi+mpqY8plJXMKamplqmO6amN1FIpllaplimpqampqampqampgisrKysrKysYFWsYKysrF2sWl5ESKysrF5bWqysrKysrKysrKwOWblJuVG5ublVa7k5Wi5oubm5ubm5bGdsbFW5ubm5ubm5ubm5EJ+fn5+fn5+fn59NU59PT1BTQZ+fTZ+fLlNQn5+fn5+fn5+fn1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTPGRNQyheXmyDf/FHPUtC8VidMjUzWWbxooel8fHx8fHx8fHx8SQrPj9IQUKDXU6JeW2DikNjd05LZD5019dei9fX19fX19fX19c4SmliXEZrllE/qkRSepUtkaxQaxlEgKmagZj4+Pj4+Pj4+Pj4BWVtdmhOdnCcQ/+lhJyPdZb/iWWOVK//l5b//////////////yBPUkwqUVCTlXLiRlhTP+I84ktKP5V2lWfiWuLi4uLi4uLi4uIkOk9WVys8Y5Yr5eVNhG5O5eVaUF4+g5PlmeXl5eXl5eXl5eXlNCV6b3QyhGSKKNaKYUyIOXrWMNaFPYPWiHCK1tbW1tbW1tbW1iUhumK6Lmy6ujC6Zmy6ui26umy6VlVtbWxburq6urq6urq6uro5P32BSzxeLX52zXZRYiZpW800bUFpOc1sf3DNzc3Nzc3Nzc3NIEyqPKolWqqqXKpHqqpcRKqqXCSqXaqqXKqqqqqqqqqqqqqqqhJFs7NDPLNmszKzs0hjUbOzY2BLZmRmXrNXs7Ozs7Ozs7Ozs7MtO3dqSydbjqEwoYc2cG5FSvCMRFZ4afCfN/Dw8PDw8PDw8PDwMS9AZH8heW2XRJ3qkmaJMy7qlESbX3WIjGvq6urq6urq6urq6jZMkzQxRW9ef1iSqXqPgVuLmoA+FmJZm6SUpv////////////8sxl1fSmk1WMZfYXBQN1bGPMYwPG4xXFTGxsbGxsbGxsbGxsbGMTOSeHM0l5RYUpfjMmzjNGyPK0YwbJCVl23j4+Pj4+Pj4+Pj4yppeV3HYnnHdsfHx1jHX8dlZntJdwpmx8fHx8fHx8fHx8fHx8cZPnFYdkFib4k9/41eT1BtXf9NLEaJUXfCWr//////////////D4SeU5hJu5djWP+Zgph/WlGQlTErarn/t3j//////////////yM6fkl3MWqERDuXoGxqglxc8zk4P0t5YPNeivPz8/Pz8/Pz8/M0xHhASy7EY8RWxMRZY2RkxMQfNy93X3NQxMTExMTExMTExMTENS6Ld9oSidqFJ4zai4VtTGzaaGJtiIvajI7a2tra2tra2tra2iA1eXNjNWh9Rzh8XExtfTxJzDxFWIBbgHfMzMzMzMzMzMzMzMwwR3o0aDOanmc4i4B0mZ51IerqciOLnOqEmerq6urq6urq6urqE8xXWlxBUFqAdH7MZFdhSUjMYy9Vdm1MfczMzMzMzMzMzMzMzAu2tli2Lra2ak+2aLZhZzq2trZTZ7a2tmi2tra2tra2tra2trZTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTUypISSRLTEfeiDl/V0FiU5GKgFtJTT1ckYqQi97e3t7e3t7e3t4XMDk4OzQ6ysp8ysp+eXlzyl/Ke3F0ysp5esrKysrKysrKysrKFzs6ODs4Ochob8jIdMhuUWd4dWV3enjIech6yMjIyMjIyMjIyBg4NTk+Mzl+ylx+ysp5fmF3XXptysrKdH7KysrKysrKysrKysonPU0zREBQ35CNgXljaEvf398fWT/fjW51hJLf39/f39/f39/fI1FVVlMtGJbkNeTkXIXka5bkj1SFe5OB5Ijk5OTk5OTk5OTk5BFcXFGoSqhXKKioXKioVqhZXFlEWaioqKioWaioqKioqKioqKgNOFShNaGhoVShoaFUoaFVoaFVSaGhUqGhUqGhoaGhoaGhoaGhT2aAMmkwazbtn56GIe0pfHyBRYBc7XjtO+157e3t7e3t7e3t7RBGS5pLS06amppOmpqaTkyamppEmkyaSZqaTJqampqampqampoOOUlKRpqampqaTJqamppJmk6ampqamkOamkyampqampqampqaQh6A0HAv0HHQMdCD0NCAIoPQ0NBoMdDQ0F9/0NDQ0NDQ0NDQ0BhEra2tSletXDtfra2tX0xGra1fIlytX62tYK2tra2tra2tra0RMmKwRmBbsGKwsLBkRF5LX7BDVLBhXGGwZGCwsLCwsLCwsLCwMY5zV93diojdet3dPItLQo/dDGd+Tt2GdN3d3d3d3d3d3d3d3RgrVKmpXKmpWqmpqTxUqalaqTRLqVSpWktLWqmpqampqampqakYnU0tL1CdnZ1RnZ1OUUWdnZ1NnZ2dSp2dUVGdnZ2dnZ2dnZ2dPxx+goIgzs7OPM6CgGaCIn56gs5/W85/fc7Ozs7Ozs7Ozs7Ozg9cblRvMXFsbVvCwnFNwmVLwmpTOMJzdMJwwsLCwsLCwsLCwsITbWtmwCfAwFpMwMDAXHFjOHNyTcBzwEzASG7AwMDAwMDAwMDAPYB/zn5dfXTOgYB8HX0Zgc5/RzdOzs59zoFFzs7Ozs7Ozs7Ozg9IWKSkQKRSRaRYpKSkWKRWVVJSWKRRpKRWVKSkpKSkpKSkpKQRQ1dBU1NXo1ejo0FXo1dUo1BUS1ejo6Ojo1ajo6Ojo6Ojo6OjDKKioqI8VFBUUlCioqKiokNWolaiU1aioqKioqKioqKioqKiogdvanFtanFvvjFxcL6+cb5vvr6+vnFsvr5wcb6+vr6+vr6+vr4OQ1NRTqBQU1SgU1OgoFKgUVOgoKCgUKCgoE+goKCgoKCgoKCgU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1M001Je04DTY4JFh9M8TTeHU4E7TRlPUoCAhnHT09PT09PT09PTGDClPk4ppaWlpaVOpVmlUVBTWaWlVaVZpVWlpaWlpaWlpaWlpSI+Z0pLW2JPRFxlaEVJajVAVlhFRFi2Zra2tra2tra2tra2trYbMEM9rFxYX2BWXVWsX6xCWlhJYKxVX05crFusrKysrKysrKysI3KAdkGJguzsn5jsX1YqRIbsMjEpf3mBYJyf7Ozs7Ozs7Ozs7B1BrV5dX1tcRCitWEJFrV+tXllfrTytXq1fYa2tra2tra2tra0lTcXFxRhfYXkyxXlGZ8VxxW4xZsXFxXJ3U8XFxcXFxcXFxcXFJ2FNZXhNbnyDV4DPOc/PV2zPz3MQ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V0zMbVE5UmbMzGs5KczMdIBnzMzMzMzMzMzMzMw5VDB1eFlSNnLExGJsMB7EYnNOT0B4d3h4xMTExMTExMTExMTEGDVUNVRVplWmRKZaplZWWFpWVqZVplemV1NXpqampqampqampg2dTE6dnZ1GnU6dnVFETU2dUZ2dnUudnZ1RnZ2dnZ2dnZ2dnZ0Lo1Sjo6OjVlOjVlWjVFZPU1WjUqOjVlSjVqOjo6Ojo6Ojo6OjFW1KuTtqubm5bbm5abloWh+5uT1Wa225a2q5ubm5ubm5ubm5uQ5WVaNUo6NUo1RVUaOjUlRSVVRSVVZWVKOjo6Ojo6Ojo6Ojo6NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTUyyLSItqYV9H5VtrhRtYLpWRhE5YLn/lhOWXl+Xl5eXl5eXl5eUgQ3JQhDyHZ4w5fdkqa2tfi4xHT2Erd4yChnbZ2dnZ2dnZ2dnZJSCRhYU2gaJRP6U3YX7yR6PyXkU2bJqmj37y8vLy8vLy8vLy8h81mW1SGXlUh0KX5muFaGN0lWROWFiRfFpu5ubm5ubm5ubm5uZAm5ZqM5BumedTgOdBcS2b55sxG2BoTEFw53nn5+fn5+fn5+fnMlOFem9MNd2NFo/djI9wZXrdgmk9cI2DgCeP3d3d3d3d3d3d3TY/jXuQTXlUID6XdHdeIXaFe05Z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bcHBwcHBVGMQbMFibMHBwcFhwXHBwcHBwcHBwcHBGEuYmJg3SZhIRkxJSJiYTJiYmJhLSEyYmD+YmJiYmJiYmJiYmCplumtQbrpRulpDujk9Krpduksha7paumK6urq6urq6urq6uroPVEVSoEtSoKCgoKCgQaBPUqCgUqBSVFRRoFCgoKCgoKCgoKCgEKBURqBOVFKgT6A3oKCgUqCgoEI8oKCgU6CgoKCgoKCgoKCgoA8+n59LT0yfn5+fQE2fnz2fn1Cfn1Cfn1Cfn5+fn5+fn5+fn58Qm0JMSptNm5tOm5ubm5tLTZubS0dOm06bTpubm5ubm5ubm5ubD0OjU0+jU1dUVKNUo1NTU1OjV6NTo6NXVKOjo6Ojo6Ojo6Ojo1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTKLw3bEC8USJVR7xgZ1w6YLy8RUFTvLxsvEy8vLy8vLy8vLy8vBpBo1FEPKNHo6Ojo06jox+jo1OjV6OjV1Gjo6Ojo6Ojo6Ojo6MWPqhaO0xaWqioWqioqForqKhYRqioqEuoXFOoqKioqKioqKioJTlLYWJYNFBfLq5Prq6uJa6uYK5HrmKurq5grq6urq6urq6uri6DjOQvT3TkiuTklFlmNORwlCpWN+RwbmYi5OTk5OTk5OTk5OQgoqKiolVVoqIkoqIoVqIzoqKiolKiVk9WUlWioqKioqKioqKiEKenp6dTQ6dWOKenp6enR1SnMkinRKenp6enp6enp6enp6enpx0hn58/n5+fn06fU5+fnzafn0pTTp9Tn1BNTp+fn5+fn5+fn583gnNuWETPg8+Cz888fRRYOWhkVC/Pz3p1fnzPz8/Pz8/Pz8/PDaFDVFGhoT6hoVJToaGhoVOhUlChoVRPoaFToaGhoaGhoaGhoQ6aR5pOOZqamjRMRZqamppMmpqaTpqampqampqampqampqampouObZqtiC2arYramplRLYutra2tmJgZmpqQ7a2tra2tra2tra2KCajV6NRVqNLNaOjLlejU6NWozVWo6NXo6NPo6Ojo6Ojo6OjoyxKrq5hSa6urjGurlquXBJdXq6urkGurleurq6urq6urq6urq4iVaqqqqpIqlxQW1o6qjVdTapFVkQ6PF5TqkqqqqqqqqqqqqqqJSurWatcq19dq1pfTl+rHVirPV+rq6tfX1Vdq6urq6urq6urqxhJmpqaSpqaMkuaTkiamppOmkuamieampqaTZqampqampqampocn0SfnyNSn588Tp+fn59LU5+fn1Azn1OfTZ+fn5+fn5+fn5+fB3rLfctey2x/YMvLVst/Z0XLy8tKRst/y319y8vLy8vLy8vLyx1OYl6uQ66uXC5erlmuTj2uriVIrmGuYmKurq6urq6urq6urq4rtBy0tGe0YrRnYrRPY7S0H2c5Q7RmtLS0tGO0tLS0tLS0tLS0F049UZ9LTp+fn5+fn008n0ifUUxCUkifU1Ofn5+fn5+fn5+fnxwlYa03ra2tWkmtYVthRi1hrV1fXa2tX62tra2tra2tra2tra0JnZ2dnZ1RnZ2dnZ2dnZ1PUZ2dnU9RnU1OUU+dnZ2dnZ2dnZ2dBqNWo6Ojo6Ojo6Ojo1ajTVejOqOjo1Kjo6Ojo6Ojo6Ojo6Ojow6ampqaQ5pNmpqamk2aTZpLmkpLmk6aSpqaPJqampqampqamppTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU0qjO0NskvNbmEzzY4VXNPNYozQvIldhenRAbPPz8/Pz8/Pz8/MdIrOzsz5ns7Ozs1JGs2A4s1A/XLM8Z7Ozs2Ozs7Ozs7Ozs7OzJk1pvr5nvnIvXVm+P1xRKFlovktrKL6+bL5yvr6+vr6+vr6+vhVLdFV+JXbPgUB/a4FwT1bPgE82z89wfXBvgc/Pz8/Pz8/Pz88XP4pBQXZtW5N/pv9zS0SQc4Y/MkV2WHtUfJ3/////////////D1q3t2VbaWhTQ7dnPGleP2m3X1hUZWdjaGlot7e3t7e3t7e3txpMra2tWK1eXVhgrUStrSBJYD5DYK1fra1gra2tra2tra2tra0POqOjo02jo1Sjo1RXo6M+U6NWQVejVqOjVFajo6Ojo6Ojo6OjWUs9N0pJWEagkfxlkk0id1p2/DQ3gWCtj605/Pz8/Pz8/Pz8/A+jVFSjo6OjP1ZTo1Wjoz2jo6NXoz5URlajo6Ojo6Ojo6Ojo6MSs7NUVjmzs2AuSWRgs7Nns7NnQUtjs7NlYWazs7Ozs7Ozs7OzJD9cbG8qk+yQM+zsmmR3MWeankWKVXqXnSmW7Ozs7Ozs7Ozs7BYttmdoOba2Z0u2Z7ZiSTi2amo7tmq2aGhkZ7a2tra2tra2trYcLE+2aDK2X7Zqtk+2tmo4ara2MWlGaLa2ZmO2tra2tra2tra2SzZUKnKepS2GeomUl6A/Q1fxPUJFS3Ezc1zx8fHx8fHx8fHx8SAlwcFrOlJdMEjBwWNaW0tuwURXTcHBwcFcccHBwcHBwcHBwcEXK6OjPVajV6NWo1SjTaOjV1RQo1Q3o6NWU6Ojo6Ojo6Ojo6OjHUxXT0EyXmCtSq2tX62tQ0StWlxgM12tW1hera2tra2tra2trQdkcmWEPoeIbWCO3GJzelNbjXyNU3+OhWxq3Nzc3Nzc3Nzc3NwiPYKKZCeGgEQe1nLWhIdZdHZQSoVw1ofWUtbW1tbW1tbW1tbWQ0FoXzwoXDp9ZdhmiTZXiVnYPyo8jNiMWNjY2NjY2NjY2NjY2C03WmtxFG5rcTFubk5ZvW1ucb1rbWJvb71vcb29vb29vb29vb0bK6JWolFWoqIkok1WoqJATqKioqJWoqJKoqKioqKioqKioqKiEJ2dRZ2dUZ2dnZ1PnTNQnUxCUVGdnZ1LUZ2dnZ2dnZ2dnZ2dnQNrloBulnpx41njln15fuNplnxnYpOS4+PjXePj4+Pj4+Pj4+MVo6OjV6NXo1c9o6OjR1VMo0dVV1NXUztXV1Sjo6Ojo6Ojo6OjU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NAmZBNb6SZTH0/b1g7mi3zPfMvRSOQhqVLe3nz8/Pz8/Pz8/PzLULJUlIeycnJKnfJPGhuOGrJU0l9WsnJyWvJycnJycnJycnJySEytDu0RGe0Q0e0aEVeZzxEWEhgW2FNtLRoZ7S0tLS0tLS0tLQbNlJPtkhhZrZAtrZFUU0/YGJhRbZBtmlWYWm2tra2tra2tra2I1GGcT9yemqRiveTXkoea4WqOjgyjZhsfpV59/f39/f39/f39xg5XGJYWWGurjRhYa5fX0ReYVpcrjdeXl5iYq6urq6urq6urq4fR1pcWjVPqalUW6mpNaldqVglTE6pqampWKmpqampqampqampDZ2dnZ0wRp2dUZ1NUJ2dnZ2dnU2dQZ2dnZ1NnZ2dnZ2dnZ2dnUmEiDtSdJZXnGWceUFYG3h/l1owKXjp6VnpRunp6enp6enp6ekNnp5Lnp6eTJ6enk1Snp6enk9PL56enlBSnp6enp6enp6enp6eFqamWCVAplqmUqZXWqZWpqampjpAplhWpqampqampqampqamphBfa2BfQ1fEbjRXbFFXYF9ycVJgxGZ3eFlnc8TExMTExMTExMQzH89czyGDz88zgc9xdc82z89tz4M2z4J5WoPPz8/Pz8/Pz8/PHDisrF5MXKxdKV5erKxeRldgWDxLXaysYF5drKysrKysrKysrEfiV00ekeKEgWNocWVgJWTikz5RPDk7luLid+Li4uLi4uLi4uIyNofna0ZreW1H55gd5+ctc5s8WDxJiZl9cufn5+fn5+fn5+fnFqKiRKJRolNRUqKiLaJTokhBoqI6olBTVqKioqKioqKioqKiohI0q6urL6tcq1Srq12rq01TW1pUS1qrVqtcq6urq6urq6urq6sKY3Vbej9vP4Fgz3twz8+BbM9RdVlaal9/Z4PPz8/Pz8/Pz8/PF1e7XGlMaWZZOLtKTWi7TTpqREdaXWi7UWltu7u7u7u7u7u7uzqDgFtxWYF/0HvQgBNVN9B50NA8J9CCfmPQ0NDQ0NDQ0NDQ0NAUPVlJqDJXW1uoWFuoqFtbVFlYqFlbWVhbqKioqKioqKioqKioFCukU1ZKpFCkM6SkV6SkUKRXpFSkVaSkpFdXpKSkpKSkpKSkpAxXpKSkpKRUVlekU6SkTaRUpFVXT0WkpFVVV6SkpKSkpKSkpKQgSEliUWpeV1dFumZMVrpNMLpEOFlaTGduaGm6urq6urq6urq6D6OjRKNVVVNDo6OjV6NBVaNXo6NVVKNQo1VRo6Ojo6Ojo6Ojo1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTQYpNVl6egkzvZp13IyJH71JtQmUqbFaBj+/v7+/v7+/v7+/v7yI/t7e3T1W3tzJhZjhPtya3Z2FNZkBmt7dSare3t7e3t7e3t7dBR35/hRiZlDY9m5dJi4YuguxJc0Fmm57sR+zs7Ozs7Ozs7OzsJDZhdIYhc56RK5DxSHqHRWehVThuY4qInHmh8fHx8fHx8fHx8SVXi0gxV3BYh2eXklV0SGGnhSwwPXV0R1Fvi/Pz8/Pz8/Pz8/M1d4fWb0aG1oca1nY8dHAch4dHeWhMitaF1tbW1tbW1tbW1tbWBYKwh3pEipSHX7H/WZGfaZGubktqYoqlp5///////////////yMmWklZHWayYk2ysrKysj5lsrKyXkqysrKysrKysrKysrKysrJGXWk6U1JFZpqammR4SSVQVVlxPiV6YOprmjzq6urq6urq6urqHzxPYVgrYmSwU2FesGJgO7CwYjxiNLCwZLBisLCwsLCwsLCwsBFSx8fHK8dmx0DHx09ZVcd6x8cuaHp6Z3dyx8fHx8fHx8fHx8czV3BSWzjEc8QjcXjExHUjXsTEa2DExHB1JnXExMTExMTExMTEKR5qXWMevLy8vGhtcGxtO068cGplWW68a7xovLy8vLy8vLy8vC4/e899Ec/PzzZ/goOAey7PgnDPaml/z4Bje8/Pz8/Pz8/Pz885amhVRGlr5Jh35HhsQzNbT34uOylAWzt/hOTk5OTk5OTk5OTkLCBwcMV3xXB0QnVbTUlhTHdvKHhqOsV1alJzxcXFxcXFxcXFxRWfn59TS1FNn1Gfnzmfn5+fn5+fnxqfn5+fn5+fn5+fn5+fn58kWW9XvBNsvLxGarxwV209Vrxsb1Bka29vb7y8vLy8vLy8vLy8E2KWZJM4W/VoM6X1XXCmTUz19XEsSaB2oYuo9fX19fX19fX19Ro8sJOLJnmkZC7//1N+lmB2sT40hnOglKltnP////////////80Pmxvf0Rnas5QgoA0G1NdWG1gPkd/zs5Bzs7Ozs7Ozs7Ozs7OJzpSgHIafG1TM4DOa3ZrLc6CzmVrzl7Ozs58zs7Ozs7Ozs7OziIjSa1gSF5cRj2tra1ZrTetXjldYVqtrWGtra2tra2tra2tra0LqKhLqFVYqKhcqFmoSExaqKioqE9ZV1ZYqFioqKioqKioqKioFFZSUGG5uWhYQWy5QzC5VGi5bGFEbGxBubm5ubm5ubm5ubm5uREvWlpSM2CsrEOsrKysrKysWmCsrEhbWqysrKysrKysrKysrKxTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTUzdod08Qas3Nf3XNW0tlgXl6zTFQP1KBzYHNgc3Nzc3Nzc3Nzc0wNk110i+E0n9DLNJAg9I9gXFqL1JOYtLSWIDS0tLS0tLS0tLSMimQSXsycORXTuQiY46RRnuWaUdFPZWWf5WV5OTk5OTk5OTk5CtIWHVfFnKPhDfk5H99h1F75HZPki2Wk5ZYleTk5OTk5OTk5OQhZ7dqUmRBt7dqt7dZZVJqZ7czIEpqZLc5WGS3t7e3t7e3t7e3HlZvesdWG3fHLXh5dXV6RsfHx1I6Y8fHx8d5x8fHx8fHx8fHxyFadWN0S1I71DrU1E1pPkhc1ChCcVzU1HBJ1NTU1NTU1NTU1NQZMbBiWkawsLA7YrBbUDtYZFKwsEFJYmBhsF+wsLCwsLCwsLCwL854QS5kf3t/gM5/VGsTf3bOVUVXznl+gc5Wzs7Ozs7Ozs7Ozhu0tLRnF7RhtES0tLS0YlJgtGZGVExktGZXZrS0tLS0tLS0tLQfVmd9yxfLy8szeWpqWcvLy8vLPWNBy2zLaMvLy8vLy8vLy8vLND11czg5iOiYQOhzJ3ZwMIHonD5aREDo6FKc6Ojo6Ojo6Ojo6DU+Tpd4L4qbijWbkVwuY1Ebf5thdZ6gnJt5muzs7Ozs7Ozs7OwXRX1WTUNGVphTe4tldlhkdf+LJjyQXKe6eYz/////////////QJFiaUPdZFvd3d0lJVRUejuRPEsrenLdjI6R3d3d3d3d3d3d3S5Ddl5oHoaIVkXjkmVrdEpHYFJDMkqWjZRLluPj4+Pj4+Pj4+MRMkiYmEtJTJiYmJiYmEyYmJiYmJg4mJiYTEmYmJiYmJiYmJiYJk95VT43glqNOZ5HczRoZV//UD0wfJdxrFWj/////////////yZQhGBnJXqWbjDlgn+RfGRRfoY/Ilt5mXZjleXl5eXl5eXl5eUmNnRsbChq5Ds0k3BcfmA0YpF0QUFy5JbkZuTk5OTk5OTk5OTkWetYZkyJnUd/kYyfVpoi6zfrLTEjmmWbn5+d6+vr6+vr6+vr6zJBhm3WDWfWeyjWd9bW1nXWioSA1oqI1nZy1tbW1tbW1tbW1tYcTHRiazBp23pIbNtMeCGB29trMmx5eIyJ29vb29vb29vb29vbEF/CcmA9b8J1N8JxaVBxVGx2wsLCWMLCZTBxwsLCwsLCwsLCwhOvYGOvKa+vrzpjX681r69Zr684r6+vY6+vY6+vr6+vr6+vr68WqKioRiNcqFg/XKioRlxYW6hYXKhYqFeoXKioqKioqKioqKioU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTnWEwV4/xRp9SjZ9ldjmgc4UaPyxqjmuLSPHx8fHx8fHx8fHxFjiwXmRLsLCwTGJXYDewMLBkYVliZLCwXUWwsLCwsLCwsLCwsBU2bFu7u1+7u09uYlVVRypku2VKR7u7u2xsu7u7u7u7u7u7u7shLEJrc3UlwcE6dVpUbnJJbHLBWWxMb8FJb8HBwcHBwcHBwcHBLk2LKz1ZcGt4hfKXY4UrdXShHUVaenqGe6Sj8vLy8vLy8vLy8h5hXrBdsGKwYCRksENZXWRkYUw2sDtesFVhYLCwsLCwsLCwsLAZsVxkYUlSZWVasbGxUERaPbEnRGKxsVBbZbGxsbGxsbGxsbGxJjCAboApgICCKs7OboB+L2xqUVJhznrObEB8zs7Ozs7Ozs7OziuAjy1KRWndfoR/YTZxIX5Ej0lIRd1lkWTdbt3d3d3d3d3d3d0WUU+fn1OfnztRn5+fUUpMTE5On09PU59MU1Gfn5+fn5+fn5+fI1+sPaw1Rx2sPaxgXWCsrF+srEZBrKysrKxfrKysrKysrKysrEQh6I/oIejo6CSZmZScfjOCmpV6fD1ul+hH6Ojo6Ojo6Ojo6OgSRWFeXjKuUa6uQ19XXq5LrmFeSq5fX65drlmurq6urq6urq6uGihdY7FRYEthXmJcWmNdXjhkWLFUYbFhY19MsbGxsbGxsbGxsUiMioBaj4OTiDiYbzmRNE1H6SQfT194X5icmenp6enp6enp6ekzRnZ2ZB95i2g0jtovhnM9hIsuW2t6cdqNUo7a2tra2tra2traEEmlUqVWpVNYRKVYVqWlpaU8P6VWTqWlpVRWpaWlpaWlpaWlpVJppZ7zGZvzojCXo6LzohGlkKKBlHKdopiYovPz8/Pz8/Pz8/MNYoKDcDhnY1VHg3LSaIBmWG5uZUtPbmyCXIDS0tLS0tLS0tLSJEaLgog2kJBQHNzccmyCO2zcXjuQSIyN3Ex13Nzc3Nzc3Nzc3DrPJoODz31yz15/zy9gW89LgjU0IHt/z4OCac/Pz8/Pz8/Pz88fYVxNWTxaW1itXlQ4rV1MXK1UNFtdQkytXlytra2tra2tra2tEz6iU0OiUlSiolOiVkZWoqKioi+iVKKiolBRoqKioqKioqKiog+oXFpUXElcqFGoV6hHXFqoqKhZVlxXWlhZWqioqKioqKioqKgeWn88OG9SUHNVb2xfTVtlPGVLTzFeXW1ha9TU1NTU1NTU1NTUEldYpFVXpFhUUVhRWFdUpFdVWFJUVVekV1OkpKSkpKSkpKSkpFNTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTDz1DX2i2aLa2SzRWQGS2arZSZ7a2ara2tra2tra2tra2tra2thVMmEeYPEuYmJhImJhJmEyYmJiYNpiYOJiYQ5iYmJiYmJiYmJgbOVNTo1ZQTaNWUVNXo0ZDo6NMV0ajVkCjo06jo6Ojo6Ojo6OjFUKkUUKkVqRTVk+kpDw8pFakR0CkpKRUpFSkpKSkpKSkpKSkpBxPL69grzWvY2FcYDxAr2OvY69cr2BBWFdYWa+vr6+vr6+vr68Snzufn59Pn0FCU5+fRlCfU5+fTZ9Qn59QUE2fn5+fn5+fn5+fFExQRE1RUU1OoqJWokVUQ6KiPlSiolOioqKioqKioqKioqKiog+enk+enp5KnktSLFKenp6eTJ6eT56enk1Qnp6enp6enp6enp4VRj5OPqlZqVhYVKlGqVypWalbVFdSqVpVWlupqampqampqampGTIyj4+Pj0GPj4+Pj4+Pj4+PQTyPj49DPkGPj4+Pj4+Pj4+PjwyYmJiYTEhIR5iYSZiYmJhMTJiYmJiYmJhKTJiYmJiYmJiYmJgOPLpVVLpES2dNurpOurpuRbpYulhUurppum66urq6urq6urq6Fk9RoaGhoaGhoVWhoSqhU0uhUqFSU1JRREFRoaGhoaGhoaGhoQ5DnJycnJxNSFCcnJxQTkacnJycRE6cnE6cTpycnJycnJycnJwPk5OTk5OTQkOTR5OTk0STPZOTNZOTRJOTk5OTk5OTk5OTk5OTF5tPT09Lm0KbS0mbRZtLm5ubS0WbRps+m06bm5ubm5ubm5ubmxNEq6swq05Pq11YP0hOW6urXFyrq6urX1qrXKurq6urq6urq6sVUZ2dnZ2dnVFNnZ2dnVGdnZ0/OD9OUZ1KOlCdnZ2dnZ2dnZ2dEVJHOFemWEpTVqamTKampqamplc/plhGpqampqampqampqamphU8WKSkUFekTT1VpKRXVaRUWE+kPqRYVKRQWKSkpKSkpKSkpKRSIXPa2hVx2own2tra2nQ2etp0jNp62oR9hYfa2tra2tra2traFkdDlZVFlZVFlUeVlUeVlUGVNZWVP5WVlZVFlZWVlZWVlZWVlRWXQpdJMZc2l5dLS0iXl5eXl5dLl5dJS5eXl5eXl5eXl5eXl5cUlUWVSZVJRUiVlZWVlZVDSEmVlUaVO5VGlZWVlZWVlZWVlZWVF1FTnzCfNp9TRTWfn0mfn5+fn5+fn59QT59Ln5+fn5+fn5+fnw1Ll5eXl5dHSkZLl5eXRpeXS5eXSkeXl5eXl5eXl5eXl5eXl5dTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU0yMTzNKhF9OmkWNi0Q8K6o9pFlYJXRgYaBXiPv7+/v7+/v7+/seMr1xZj5vU70tvb1Scb0qbb1SWr1bvXFxTG+9vb29vb29vb29MzeJbIIdZNkhR9nZTWWHP3HZ2Vd9TtmGi4XZ2dnZ2dnZ2dnZ2RdddmN4KmuJbyqNb1Nw2WNeh2UxjWmDZ4xwjdnZ2dnZ2dnZ2dk3N3Q3N09DTntwg5VKTUF6P1tdK0uDT2qDk4r/////////////JC2/SWk1c79sQHFuNlS/MW2/VExdSb+/b3O/v7+/v7+/v7+/vzE3T1rPHHt1zz2Cz89jWElOz30qdE1qe3lsgM/Pz8/Pz8/Pz88lQ0msRjOsrKxCrKxdrFcoW2BcSlpHXKxaSFysrKysrKysrKysVDlCO002VUz5q6SHa1AoSUOqq0g1rUz5dZBJ+fn5+fn5+fn5+Rg+UJycPZycnE1QnJycTlCcnJwonEGcnEqcTJycnJycnJycnJwdXFZ5QylRe2o5f39Qy8vLfMtyKlhUy1tff3XLy8vLy8vLy8vLIzV/YEY3aoLOLmjOZ86CPU98cEbOV3yAzi2Azs7Ozs7Ozs7OziYdhGNrOFrdcyiPb3CR3UV03Y47c1t7et3dkd3d3d3d3d3d3d0gHm9kfS/RZYIvg4WFaoVIaNGCRHPRgoCFZIPR0dHR0dHR0dHRSlpFP0d+XVWSbVZpRj1BUjqaS0lDMUJIWXZt9/f39/f39/f39ycxVjpaUsrKQGbKclVheyx9fStjRWp7fX1pysrKysrKysrKysoNQpSUlJSUlJSUlJQqlJSUlJSUlJQplJSUlJSUlJSUlJSUlJSUNi+MhXYe2ojaMNp+jH52JNqMiW9zRIt42kSE2tra2tra2tra2gxSo2uHKvCjUjuf8I2hmVNigYmGTXyRiqCAoPDw8PDw8PDw8PAfQmhmeS10mUYl6OhjZVxeho58NoFNmomVTXXo6Ojo6Ojo6OjoRGRNJF1ZaWSIXYnYQzok2EDYdDFJW9jYidiI2NjY2NjY2NjY2C8odsh2FcjIyCZ3yHp4Z8h8fGtrc3p5ech5dsjIyMjIyMjIyMghILW1ZU5ntWkttbVRYLVptbUutbW1tWM8YbW1tbW1tbW1tbW1C1KhoaGhTqFTVaFToTyhoVWhoVNSoVOhoaFVoaGhoaGhoaGhoQdbdYFkc4qD2E/YinvYjHI02HdYbIJ7f4qIidjY2NjY2NjY2NgPm5tOmzybTktPm0+bTptKm5ubm5ubm09OTE+bm5ubm5ubm5ubU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1MzXDxRY2lBRoxigmo4NzdrTNxATTV7RWSHYdzc3Nzc3Nzc3NzcGkNMPEZmtrZqNrZqtlNIRmq2tmRmNWS2VVC2tra2tra2tra2tjsolH+URZJ/NUHhjVdtlSl84SFiXE95iuHh4eHh4eHh4eHh4eEbQktrXThGvr4yW09XXWtHSr5eWldcWb5qvnK+vr6+vr6+vr6+JVGLQjpZem+cirCZRVU+iF9bKDczcXGGeqaF/Pz8/Pz8/Pz8/CFka7e3Nmu3XTO3a7dotyS3Z0xVSTa3Z2VXa7e3t7e3t7e3t7cUVbZIVVJpWGMwZrZWX2lfV7Y8RVe2tmK2aLa2tra2tra2tra2IyZklmcqa4XiK5TiaVpyL5DiZ45kWI3ijpSU4uLi4uLi4uLi4kxrRlRCY2Ay8qak8lxCLSqMo28+MJVO8mvyR/Ly8vLy8vLy8vIXn5+fUE6fUJ82U59Rn58nn5+fNp+fSlOfn5+fn5+fn5+fn5+fGXFvab8qv2ttInO/bG2/v2e/vzRTY3NtcV2/v7+/v7+/v7+/vycifmXPRHnPbieBbWl5bDBog89jdkvPz888z8/Pz8/Pz8/Pz88fJ3JVw0DDw3Qow8Now3M1UsNaUkfDZcNxw3TDw8PDw8PDw8PDHiC/v79Kv2+/Nm+/c1xwLW1iv2lOSXNkv2htv7+/v7+/v7+/v0J9ez9rkFCJkmji4i1CIHJw4iZxZzGOgojiluLi4uLi4uLi4uI+I314aByKl01M4+M2k4Yqlo9XcpZq4+N+eePj4+Pj4+Pj4+PjPFm5ubm5ubm5aLlrD2S5bbm5S2BoH225ubm5ubm5ubm5ubm5uR46uSlpPEtouT5tuWlquUZeuWtdZko/bWu5Yrm5ubm5ubm5ubkbSXaAcStshV8jgpRVb3ZGZJJ6aGpCe2Psh4bs7Ozs7Ozs7OzsJyR/ZlwzeHZ6OqOZeWxxP3D/JkyRWo6es2P//////////////1dRGU5tVFlZ6EyE6Ek1Vegy6DBQZ5ma6JeYnOjo6Ojo6Ojo6OgWSbU3tUZUL7VpWFJWZF61WLViQLVpZLW1aGO1tbW1tbW1tbW1JiO/Yk4vbmtuIb+/YFy/Pmq/a3O/v3O/v7+/v7+/v7+/v7+/vwxYp6dYV1dap6enp1RbWKdbp1enp1dXRFZbV6enp6enp6enp6cxy2dmfX3Lf8t5y8vLKxrLf39wG3/Ly314fHzLy8vLy8vLy8vLDKFVoaFUoaFVUU+hoaFUoaFRoVJOUlGhUlGhoaGhoaGhoaGhoVNTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTOZMxO2mhckqCO4liNV42pmaVO0snenukXX/4+Pj4+Pj4+Pj4+CxWaWdgPFVftTVkaS5laSy1Z1RNtTZptbVBtbW1tbW1tbW1tbU7UNVsWHB2hA6JdYdSgmwwWNWGXGRUhmqJhoTV1dXV1dXV1dXVIjlSVl41ar9xJ2RuRW6/ML9wa1hwbFW/bm+/v7+/v7+/v7+/vyhsjFsndn1it5m5nldEPJFx/yAycoaCmlD/i/////////////8eUsJVTWJywm4nwsJUa1I1SG1MRFhLU3RywnTCwsLCwsLCwsLCIV6tXK2trV9ePlteYVxfQK1eH1NVX19eWlhIra2tra2tra2trR5J6oJ1I+qIfjuE6mJabiuD6jlUe06Xiupmfurq6urq6urq6uphS3I8bldRbZ+puKtDQCoWYJWBZ1K2QP+cu23/////////////E6NVV05FVFdXVUWjo1dXo1ejozmjo1NXo1NUo6Ojo6Ojo6OjoxpVql2qI1tdqjxcXaqqVapcXapdqj9bU1xcWKqqqqqqqqqqqqozQ4HRdyV90YUqf37Rb1lJcdF5RtHRftF3HNHR0dHR0dHR0dHRJynFdcUxaMV3cXd4M3TFMTxVWlxIUXh4xWhxxcXFxcXFxcXFxSQcV7xvK2tuZUu8vLxsbUS8vF5KVElvvG+8XLy8vLy8vLy8vLw+g1xTWIFpUHhukEpUOEVCR/EWUFhVg214mfHx8fHx8fHx8fHxJDhbWkpfZ3h1X3rINW15PmHIKVFUOsh7YE92yMjIyMjIyMjIyBNHnp43nlGeUFFPnlA6UJ6enp6enkSeTJ5Qnp6enp6enp6enp4/G/VsnTiBm/Ugpal7m4Y5hvWTeYc0i6f1R6n19fX19fX19fX1BHqDaHJX7Ozsbp+faZqIcGF9oJJLaIh6i56c7Ozs7Ozs7Ozs7Dg9jd6LGIqBaS/eiETeb1o83jRmed6QkIFJkN7e3t7e3t7e3t5GNkdsQ2Jwbtpk2tqGV0aBNoMVVTpvZ9qL2oza2tra2tra2traGxuqqqo/XKpeRapcqqpYSVSqXqqqW1xbXqpZqqqqqqqqqqqqqjE/t2ZiKFpcZihot2u3tx9bt1C3t7e3a2dra7e3t7e3t7e3t7cLsLCwsLCwsGJgU7BcV1VhsGKwXTNfZF5gVrCwsLCwsLCwsLCwDnWSZ3OQkuDgkX3gRuDg4BjgkXZw4JLgkuCN4ODg4ODg4ODg4A2vWE5LYa+vYUyvr0pgRkWvr69iXWCvYV5gYq+vr6+vr6+vr69TU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU0FhY4FqfYFM0XLR0RdeNoHR0S1PKYSCgtF90dHR0dHR0dHR0dEvWVRFRDhjVoBmYV4xRGhcQWJlKzxij5CNaNzc3Nzc3Nzc3NzcQF5+OIAqhNE5P2s5cdF50dGE0XYXbYR/hH6E0dHR0dHR0dHR0SJKdsVkH0lOxSvFxW9xcT1OxVtSxWR5xXhUxcXFxcXFxcXFxcUZbWxwSnDYhXlzh9hMcDKKbdgtKGdAitjYiIrY2NjY2NjY2NjYH01Vu2dmE227Yru7VVq7u7tlW0lpX2praLtsu7u7u7u7u7u7uyJMXHh3RFkpJTV6yFFUyFfIe8hMe1XIcsjIe8jIyMjIyMjIyMgcPkBBU1FToVJQVTWhUzxMoaGhoaGhoVFTU6GhoaGhoaGhoaGhN2rRQS9g0dHR0YLRJIU+0WCFNjos0UbRgtFr0dHR0dHR0dHR0RWenp6eSp6enp6ePp5Lnk6eTp6eniRMTU+eUZ6enp6enp6enp4VL6BBU1KgUVM4oFKgoE6goKCgoKBQQ6BSoKCgoKCgoKCgoKCgNiF6llQydIKTSeJ/MOJXcGWLgGogZeKSk3Li4uLi4uLi4uLi4iJLN3zaHnOKjkyOimc+WY0xjtpL2lNwh43ajtra2tra2tra2tpGTGUtKktobWgx8U9ZXFJwR3FMQTJ0imCfjoLx8fHx8fHx8fHxLrFbsWKxsbGxZGRlsVxlsbFlRrESJbFlsWKxsbGxsbGxsbGxsR9icF9GMXZUiFTb2zHbZl0u2289O49ye9th29vb29vb29vb29sSly6Xl5eXl0pJl5dKl5eXl0iXNJdJl5eXl0qXl5eXl5eXl5eXNzZqPHQgZ2rpQumFOIVDaV2aOj1gmlaMl3Dp6enp6enp6enp6SFOb+SHIOTkSzjk5E2Kk5NXkm9TJGaNl5FzleTk5OTk5OTk5OQuRXdeai9fjjEgnetbfp8tZetvUFZi6+vrgZ/r6+vr6+vr6+vrF6mpW1lWW1qpKqmpqUxaqV2pqVtHWy6pRqmpqampqampqampqSBIXqysIl2srDSsXzZerKysrFxUX15bRlpeXqysrKysrKysrKwUmZmZmT+ZTUpCmZmZmZlNTEmZO02ZSplKmUqZmZmZmZmZmZmZCkayV0ZMsmVlVGSyZLJlS7KysrJOW7KyYbKysrKysrKysrKyshCZmZmZM0uZmUpJmU2ZS5lISk2ZSJmZmZmZmZmZmZmZmZmZmZkZpaVZWaVYVVilWValVqWlR6WlpaWlpaWlpRWlpaWlpaWlpaWlU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1ND21ZfiIvbjo5O24MV20DbiNsjXTBbiYuJ29vb29vb29vb29vbEy9ZqalaqampPqlUV1k8VampqalbWkdbWKmpqampqampqampqRRKY2ZiskCyVk9SsmROslBHZkNTPWOysmRkYrKysrKysrKysrIRnFBKnJxLnJwuOZycnJycnJycTEtHnJxNnJycnJycnJycnJycIWfzXEaliYOSp6ekO2s483bzFT9/joKhjH578/Pz8/Pz8/Pz8w9ZWKWlPVelWFClpVhYpVhTpVNPpaVQpUBUpaWlpaWlpaWlpaUQV6amWkKmWlZFpqZXWKZFWKZSU6ZaWkJVpqampqampqampqamEqGhoT5AoaGhoUlDoaGhRqE7SD+hoVKhoaFRoaGhoaGhoaGhoVFJcjoyM3JRkpHeklV0M0R53kAjPd5m3t7eYd7e3t7e3t7e3t4PTp1BRJ2dnZ2dUZ2dTZ1PT09MT1GdnZ1LnZ2dnZ2dnZ2dnZ2dDkiampo1mpqaNzyampqampqampqamppOmk5HmpqampqampqamhooWVZVS1anpzKnVKenpy6np1hVp6enp6enV6enp6enp6enp6cTNEOmplSmplhYWqZPUKZLWqZYTaZapkxUplqmpqampqampqamEVJcqEdbXKhcqKhcqFVCVFhcPFioR6ioVqhXqKioqKioqKioqDluczh2xMTEeCjENSLEdnBueEFdO0jEVXRUeMTExMTExMTExMQPPltLUKioqFpYqFqoWEmoWaioUltbVKioTFqoqKioqKioqKioGZxMnE2cT01PnJxQnE+cnFAcnFBNnJycnJycnJycnJycnJycnA5KUqqqTFmqqlqqXldeTk9dqqqqS0OqqltbXaqqqqqqqqqqqqoVXlw/XFewsGFdsLCwX1hMUF9hMj+wsLBhRFuwsLCwsLCwsLCwElSkpFRSpKSkpKQ7VEBXPaSkVqRDpFikVkxUpKSkpKSkpKSkpBxYXVlMPqldqV2pWR5cXKldqVlOqVypqaldSKmpqampqampqakOQVmrX1pJXKurq6urq1urW6tbX6tbLFxfq6urq6urq6urq6urD0ecnE2cnE+cUJycnJycTU2cnEtMnJxPNpxNnJycnJycnJycnA5UoaFKU6GhT6GhVDuhVKFQoaFSU6GhoVFUU6GhoaGhoaGhoaEKT0lMMJ+fn06fU5+fn5+fn1Ofn5+fn5+fn5+fn5+fn5+fn5+fC02cnECcTpycnJycnEtOnJycSU6cnEucTpycnJycnJycnJycnFNTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTTXdlhIXUf2LUONRkNNRC1Ep/Gko3hlKBbTaF1NTU1NTU1NTU1BY4SlNPPE+fnzxRnz9Dn0yfn5+fn0ifn5+fn5+fn5+fn5+fn58YUahVqE+oV0CoqEdaTVoxqKhYTEGoW1pQWluoqKioqKioqKioEE6rX6s6W6urSVyrTVxfR1Srq0NaUlyrW6urq6urq6urq6urqztAJGo3PoNphEGE0ELQUdDQ0CNCbNBhg37Q0NDQ0NDQ0NDQ0NAXQlelVFFWWaU5SKU8U6WlpaVEVqVWV6VRVVOlpaWlpaWlpaWlD6ioV1lJqC1cVlmoXFioqFmoqDyoqKhcqFqoqKioqKioqKioqDY1vmRyG3JvciW+vky+vjK+vmpdaly+vm5aX76+vr6+vr6+vr5A0IFmLoNScIHQhEs7cB7QV9BNNyvQfoCEgWLQ0NDQ0NDQ0NDQEUVEk5OTk0NDk5OTk5OTk5OTkyqTRZNHk5OTk5OTk5OTk5OTkxOkSKSkN6SkpERYpKSkVKSkpFYyOKSkSVSkpKSkpKSkpKSkpKQdYbBcsCOwYrAtT7BdX2Q+U7CwYmRZsLCwQGSwsLCwsLCwsLCwETlTUZ+fUJ+fn5+fSp+fNZ+fTVNKn02fTp+fn5+fn5+fn5+fnxBbw11eNnVnd0dxwzR1d8N0dXdBbHNjYFnDdMPDw8PDw8PDw8M5yspresp3eGpua35sXEdgfMoIaGhTynd8fnzKysrKysrKysrKITioQqioV1VHVaioRlxZOltMPFNDqKhcXEhcqKioqKioqKioqBFGkpKSQ0KSkkOSQ0aSkkaSkpKSkpKSkkSSRJKSkpKSkpKSkpI/G3G/bWBzv78Tv79rcG88v79ucHG/v79xc7+/v7+/v7+/v7+/DHK+X2E7bEBNWr5sTr5yb1W+XV9Par6+cb6+vr6+vr6+vr6+vhSmVaZXWkpYTVhYWqamVi1UUVSmWqZaWqZOpqampqampqampqYVnp5SSlKeUD9Qnk+enkyeOU9PT0+enp5LnlKenp6enp6enp6eFy5JUp5Pnp5PUp5SnjpSnlCenp5SUkqeTp6enp6enp6enp6eng5WoqJUP6JLokOiU6KiVqJToqKiU6JUOqKioqKioqKioqKioqIVplqmpqZWplSmWFFMWFlYUKY0UKZZVKZVOk6mpqampqampqamEpycQ5xInE6cnJycnJycPE2cTJw/nE5KUE5OnJycnJycnJycnBKZTZlNmUuZmUmZTZlLS5lKmZmZSplJR0lKmZmZmZmZmZmZmZlTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTUypZNjVETVxKtk+2tmAhSba2tjy2YLZpalK2tra2tra2tra2trYkOEVEREZFoKBDUKBPTqA3UVGgR0+goKCgSaCgoKCgoKCgoKCgOGRlZFUWY09CS3NwKb+/SL+/cVpcYnFwcL9wv7+/v7+/v7+/vyAzQVJROVNUVTRhra2tra2trWFZOExdrVphWq2tra2tra2tra01YWwhMW1qx8fHx3pTPGPHdMcrKHF7esdnx3jHx8fHx8fHx8fHHDZEUVIxOl+rS6urq1leq6urQFSrV19fq1lbq6urq6urq6urqxGaTk6aSJpGTJpLmppGTJqami+ampqaTpqampqampqampqampoYKFtaq6tdq0c4WqurX1+rWF1SXEtfq11WWl+rq6urq6urq6urNcNTQ11MUHDDdnTDZTQsXsPDXiEsd3fDw3PDw8PDw8PDw8PDww9ST5+fn59Nn59Qn1JQn59On1FNn1KfUVBCUZ+fn5+fn5+fn58OnVA6nT09nU6dnZ2dnZ2dnVCdUJ2dnUtMnZ2dnZ2dnZ2dnZ2d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XV2qqqqqqqqqqqqqqg9Rnp6enp5Snk5InjaeRp6enk2enp5NnlJRUp6enp6enp6enp4RQ6NXo6NVo6Ojo1JUo1c9VaNXo6Ojo1ejLFKjo6Ojo6Ojo6OjFKenVFYjW1tDS6enWKenp1inp1unp6enVVZJp6enp6enp6enp1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTLL9JTnO/br+/Zr+/UnO/v2K/Rr8Lc7+/v79bv7+/v7+/v7+/vxacRUhMnJycnEacnJycSEZMTUycRDpMnJycUJycnJycnJycnJwUPkmdT51OnZ1KnZ0/S0+dnVGdnZ1OTj+dT52dnZ2dnZ2dnZ2dEECjo1NPUqNUVqOjVlNUo6NSV1NXT1Kjo1ZWo6Ojo6Ojo6OjoxVy2HUgf3pziYbYh3mMSXWG2Co7doGI2NjYidjY2NjY2NjY2NgPU5+fn59Tn1I7U1NNTFKfTZ9PSZ+fTJ+fn5+fn5+fn5+fn5+fD5qamppKSJqaS5qamk6amppKmppNS01OSUtOmpqampqampqamhI3RFNQoFSgTVBRoKA8oKBToKCgoFCgoFGgUKCgoKCgoKCgoKAuubliuVO5Urm5bLlGSRe5ILlpubm5arltbFi5ubm5ubm5ubm5DkeaSk6amppOmppMmpqaR5qamppOS0iamktMmpqampqampqamgqVR5WVSJWVlZVHlZWVlZWVR5VIlZWVlUhGlZWVlZWVlZWVlZUWUFA2UECenp49T55QnlBFnk9Qnp5RnlCenp6enp6enp6enp6eFzOkpFZUUqRUVaRVS1akQ1ikV1dTpFKkVlVDpKSkpKSkpKSkpBBIU1dYRKampqZZWFhVWaZSWVZTVVdYpqamVqampqampqampqYmr69eU69ar2GvY6+vrxI0TK9Zr2Ovr05hr2Ovr6+vr6+vr6+vDp9TOZ+fn59Tn5+fSlBRUJ+fT5+fTZ+fTlNTn5+fn5+fn5+fnw1OmkuamkuamktLmk6aTj6aSZpOmpqampqampqampqampqampoNmZlNmUyZmZlGmZmZmZlMmUqZTJlETUxKmZmZmZmZmZmZmZmZGFZKSlZWpaVFU6WlpVelV0JWpUcxpVdTU1SlpaWlpaWlpaWlpRFJnp6enp6enlCeUJ5QT56eUDWeS02enk86np6enp6enp6enp4TWampXFpdqalcWaktTUWpVlwwqV2pqampWqmpqampqampqampE6FLQ1FKTqFRUVWhUKFPoVGhVVOhoVWhTlFPoaGhoaGhoaGhoRI+U1dDo1Ojo6Ojo6NWSaNWVkijo1RWVFFRVqOjo6Ojo6Ojo6MUVKCgoKBNoFJQKaCgUT+goE+gU6CgVFRUoFKgoKCgoKCgoKCgDVZWVqWlpVilWFWlpaVYUkNXPVmlpaWlV6VZpaWlpaWlpaWlpRNIUa+vMGCvr1Rdr0evYk2vX69iYl9fYGJAVa+vr6+vr6+vr69TU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTIt/f39/f39/f39/f39/f39/f39/f39/f39/fEkhFTlBVUk9QThrMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzDU5Q0I4QkNCRjsWycnJycnJycnJycnJycnJycnJycnJycnJyck6OkNAP0ZFQj9HGsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjINUlFQz5ERzk6ORfIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyDw+PkM7QEtEQjwZyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMg5QUA8QEM/SDs9Hc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OSUQ3NjVBPT0+QxbIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyDY+SkU7REVCP0gYyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgzQD5CPEZAQz9MGMrKysrKysrKysrKysrKysrKysrKysrKysrKOz9AOUlDOjpKRVNTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTUxrLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyzQ+PEVCRDpHPT4bysrKysrKysrKysrKysrKysrKysrKysrKyspEOTw8PD08O0VFGsvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLSD1GNkQ3P0M4QBnHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx0A8P0JBPzc+REAYycnJycnJycnJycnJycnJycnJycnJycnJyclFQEA+OkJAPkE9F8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjITj0/OUFBOUBFPxnJycnJycnJycnJycnJycnJycnJycnJycnJyT89RT1BREE8OjscyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMg+Oj08O0c/PTs7GcjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIO0E/Nz8+Pj9HRBjJycnJycnJycnJycnJycnJycnJycnJycnJyUFEPDxAOT5KPkFTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1MZzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMw4OT1BPEJDQkJFGMnJycnJycnJycnJycnJycnJycnJycnJycnJOUQ5PEc8QT1ESxnJycnJycnJycnJycnJycnJycnJycnJycnJyT9AO0I+QT04R0IXx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8dBPj9GP0NJOT1AGMbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGREI8QTw9P0E+QRnLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyzZBPj47Pj9GQU4WyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMg4N0NLRDs+T0FGGcjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIQkI9RDxASDg6PhXHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHxzdHQkRDSUFGQzoWxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsZLQEc+O0Y8RT49U1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTGsnJycnJycnJycnJycnJycnJycnJycnJycnJN0NFSkRDO0A1OBfIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyD9FPUU9PEBAP0EZyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMg7OzlMR0A8Pz5AHMrKysrKysrKysrKysrKysrKysrKysrKysrKRz84ODs6QD4/RBnIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyDw/QT1CNj5DRj4WyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMhIPUJFPj8/RD09GcjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIQz89Qjw6QzxCPxnHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHxz5BQ0FCPEc7OD0aycnJycnJycnJycnJycnJycnJycnJycnJyclGPkI5PD5DO0Y5F8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHNkU9TEM+Rz49P1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTUxzJycnJycnJycnJycnJycnJycnJycnJycnJyT03OT08P0JEQjsZyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMg+Oj1APUI/Q0BAFMfHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHSTxGSEI7Q0BDQBbIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyEFIOT8+Rz1AQ0IaysrKysrKysrKysrKysrKysrKysrKysrKyspAOj49PUI9Qj9AFMbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGQEM+SEM9N1RIQBfHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHxzw9P0I8PkxARkAYxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsY/Rz9DPj1AQTlAFcTExMTExMTExMTExMTExMTExMTExMTExMTEN1ZBQUBCR0A6QRjHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx0JDOz1JNkM+RD5TU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1MZycnJycnJycnJycnJycnJycnJycnJycnJyck3RDtPQj09PUQ8GMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIPD45PkI6TkpCPBjJycnJycnJycnJycnJycnJycnJycnJycnJyUNBQ0E+PTxFQDsVxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcU+RUA8REc/Rj9DGMfHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHQUA6PUI/PDxHQRXJycnJycnJycnJycnJycnJycnJycnJycnJyT9DTUI+PDxBQkQZycnJycnJycnJycnJycnJycnJycnJycnJyclCPUZBQz1EODo+FsTExMTExMTExMTExMTExMTExMTExMTExMTEQUQ5QlJEPEE/OhXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxT4+QUE9QkpNP0AYx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8dBNkI8TEA9RkE7U1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTFsnJycnJycnJycnJycnJycnJycnJycnJycnJOUJLPU47PEBJQRXJycnJycnJycnJycnJycnJycnJycnJycnJyUZBQERARzs5TEIXxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsY9R0FASztCPjs+G8nJycnJycnJycnJycnJycnJycnJycnJycnJQTxGPT4/Pj41QRnIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyEQ4Pz9COD9JQEAbx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8c5QjpEQTk5OUhIGcfHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHPjw8Oz1DO0c9TBXIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyDpLTz47Rj5HO0QZxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsZDQEBAO0M+PDpEE8bGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGPUlCQUlJRjxAQVNTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTUxnHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHxzlAPD9BRzs8Q0QXxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsZASDo/QkM6QzxEGMXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFOEU4PD44RERSQhjGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxjk9P0M5QEFETDwXyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMhHSENASz88Ozw6GMXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFODs7RDw+QkhOPhnGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxj07PztQOkM+QUAYycnJycnJycnJycnJycnJycnJycnJycnJyclBQzlGQzo/N0VEGcrKysrKysrKysrKysrKysrKysrKysrKysrKQT1EQTw9QjpIORvIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyD5DQjhCPT07OUdTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1MVysrKysrKysrKysrKysrKysrKysrKysrKysoxQ0NJRUtFRTtFFsTExMTExMTExMTExMTExMTExMTExMTExMTEQUY6Sj49R0RAOxvHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHxzhHQj9APj4+OjwUxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsY/O0hJQUJBSD9FF8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIQEhAPTY/REJAQRzHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHxzw8PEhBNz88QzoXxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcVDRkA3PEJFQUk5FsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGREBLRTlBSEE2QBbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxjtAQ0c4Qj9FP0cVxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsZDOUBCR0dGSD46U1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTGcbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGQUc/QTxFQkE4NxjHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHxztBQT1JPEA9QkAWx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8dAQD9DRjw/QD1NFsnJycnJycnJycnJycnJycnJycnJycnJycnJTDxMPj83REU8QhfDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwzc9NzVLQzxFUFQax8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8c8PkI9P0E1RkFAGMfHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHQTtEP0BEOjZJRxjHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx0JISDg4Q0Q6QzoXxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsY+Qz5EPUJCST06GMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIRz1BQUI0PkVIOg==";
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Mean log2-likelihood ratio per scored term under the identifier model versus uniform over 36 characters: each
3
+ * letter and digit (lowercased), and each camelCase break (how likely the word was to end there), so `fooBar` has
4
+ * seven terms and `foo_bar` six. (The model was trained on this mean: the rule is not changed.) A symbol only resets
5
+ * the context, unscored.
6
+ */
7
+ export declare function naturalness(token: string): number;
package/dist/charlm.js ADDED
@@ -0,0 +1,65 @@
1
+ /**
2
+ * How much more likely a string is under a model of ordinary identifiers and words than as random
3
+ * characters. Names, words and their abbreviations score well above zero; random strings score near
4
+ * or below it.
5
+ */
6
+ import { CHARLM } from "./charlm-data.js";
7
+ const A = 37;
8
+ let table;
9
+ function load() {
10
+ if (table)
11
+ return table;
12
+ const bin = atob(CHARLM);
13
+ table = new Uint8Array(bin.length);
14
+ for (let i = 0; i < bin.length; i++)
15
+ table[i] = bin.charCodeAt(i);
16
+ return table;
17
+ }
18
+ function idx(k) {
19
+ if (k >= 97 && k <= 122)
20
+ return k - 96;
21
+ if (k >= 65 && k <= 90)
22
+ return k - 64;
23
+ if (k >= 48 && k <= 57)
24
+ return k - 48 + 27;
25
+ return 0;
26
+ }
27
+ /**
28
+ * Mean log2-likelihood ratio per scored term under the identifier model versus uniform over 36 characters: each
29
+ * letter and digit (lowercased), and each camelCase break (how likely the word was to end there), so `fooBar` has
30
+ * seven terms and `foo_bar` six. (The model was trained on this mean: the rule is not changed.) A symbol only resets
31
+ * the context, unscored.
32
+ */
33
+ export function naturalness(token) {
34
+ const t = load();
35
+ let a = 0;
36
+ let b = 0;
37
+ let sum = 0;
38
+ let n = 0;
39
+ const uniform = Math.log2(36);
40
+ for (let i = 0; i < token.length; i++) {
41
+ const code = token.charCodeAt(i);
42
+ // camelCase: an upper-case letter after a lower-case one starts a new word.
43
+ if (code >= 65 && code <= 90) {
44
+ // (Before the first, `charCodeAt(-1)` is NaN: no letter.)
45
+ const p = token.charCodeAt(i - 1);
46
+ if (p >= 97 && p <= 122) {
47
+ sum += uniform - t[a * A * A + b * A] / 16;
48
+ n++;
49
+ a = 0;
50
+ b = 0;
51
+ }
52
+ }
53
+ const c = idx(code);
54
+ if (c === 0) {
55
+ a = 0;
56
+ b = 0;
57
+ continue;
58
+ }
59
+ sum += uniform - t[a * A * A + b * A + c] / 16;
60
+ n++;
61
+ a = b;
62
+ b = c;
63
+ }
64
+ return n ? sum / n : 0;
65
+ }
@@ -0,0 +1,10 @@
1
+ /** A Bitcoin-style address: Base58Check of 21 bytes with a P2PKH or P2SH version (mainnet or testnet) and a valid checksum. */
2
+ export declare function isBase58Address(t: string): boolean;
3
+ /** An XRP Ledger account address (`rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh`): Base58Check, in its own alphabet, of version 0 and a 20-byte account ID. (Never a seed, `s…`: version 33.) */
4
+ export declare function isXrpAddress(t: string): boolean;
5
+ /** A bech32 or bech32m address (`bc1…`, `cosmos1…`, `npub1…`) whose checksum verifies; never a secret's prefix (`nsec1`). All lower case or all upper case (BIP-173); not mixed. */
6
+ export declare function isBech32Address(address: string): boolean;
7
+ /** A Stellar public key (`G…`, 56 base32 characters): version byte, 32 key bytes and a CRC-16 that checks out. */
8
+ export declare function isStellarPublicKey(t: string): boolean;
9
+ /** A NATS public nkey: base32 of a prefix byte, 32 key bytes and a CRC-16 (XMODEM) that checks out. */
10
+ export declare function isNatsPublicKey(t: string): boolean;
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Public identifiers whose last characters check the rest: crypto addresses (Base58Check, bech32) and base32 keys
3
+ * with a CRC-16 (Stellar, NATS). A random string passes one by chance with odds of 2^-16 or less, so a value that
4
+ * verifies is the public identifier it claims to be.
5
+ */
6
+ import { sha256 } from "./hmac.js";
7
+ const BASE58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
8
+ /** The XRP Ledger's base58 alphabet: Bitcoin's characters in another order, so that its version bytes lead with `r` (an account) or `s` (a seed). */
9
+ const XRP_BASE58 = "rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz";
10
+ /** A Bitcoin-style address: Base58Check of 21 bytes with a P2PKH or P2SH version (mainnet or testnet) and a valid checksum. */
11
+ export function isBase58Address(t) {
12
+ if (t.length < 26 || t.length > 35 || !/^[123mnT][1-9A-HJ-NP-Za-km-z]+$/.test(t))
13
+ return false;
14
+ const bytes = base58Check(t, BASE58);
15
+ return bytes?.length === 21 && [0x00, 0x05, 0x6f, 0xc4, 0x41].includes(bytes[0]); // (0x41: TRON)
16
+ }
17
+ /** An XRP Ledger account address (`rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh`): Base58Check, in its own alphabet, of version 0 and a 20-byte account ID. (Never a seed, `s…`: version 33.) */
18
+ export function isXrpAddress(t) {
19
+ if (t.length < 25 || t.length > 35 || !/^r[1-9A-HJ-NP-Za-km-z]+$/.test(t))
20
+ return false;
21
+ const bytes = base58Check(t, XRP_BASE58);
22
+ return bytes?.length === 21 && bytes[0] === 0;
23
+ }
24
+ /** The payload of Base58Check text in `alphabet` (version byte first) if its last 4 bytes are the double SHA-256 of the rest, else undefined. */
25
+ function base58Check(t, alphabet) {
26
+ let n = 0n;
27
+ for (const c of t)
28
+ n = n * 58n + BigInt(alphabet.indexOf(c));
29
+ const bytes = [];
30
+ while (n > 0n) {
31
+ bytes.unshift(Number(n & 255n));
32
+ n >>= 8n;
33
+ }
34
+ for (let i = 0; i < t.length && t[i] === alphabet[0]; i++)
35
+ bytes.unshift(0);
36
+ if (bytes.length < 5)
37
+ return undefined;
38
+ const payload = bytes.slice(0, -4);
39
+ const check = sha256(sha256(Uint8Array.from(payload)));
40
+ return check.slice(0, 4).every((b, i) => b === bytes[payload.length + i]) ? payload : undefined;
41
+ }
42
+ /**
43
+ * The human-readable parts that name a secret, not an address: Nostr's `nsec` and `ncryptsec`, and the `sk`, `sec` and
44
+ * `priv` that chains and tools give a private key (`sk1…`, `priv1…`), whose checksum would verify as well.
45
+ */
46
+ const SECRET_HRP = /^(?:nsec|ncryptsec|sk|sec|priv)$/;
47
+ /** A bech32 or bech32m address (`bc1…`, `cosmos1…`, `npub1…`) whose checksum verifies; never a secret's prefix (`nsec1`). All lower case or all upper case (BIP-173); not mixed. */
48
+ export function isBech32Address(address) {
49
+ const t = address === address.toUpperCase() ? address.toLowerCase() : address;
50
+ const m = /^([a-z]{2,16})1([02-9ac-hj-np-z]{30,90})$/.exec(t);
51
+ if (!m || SECRET_HRP.test(m[1]))
52
+ return false;
53
+ const CHARSET = "qpzry9x8gf2tvdw0s3jn54khce6mua7l";
54
+ const GEN = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];
55
+ const values = [...m[1]]
56
+ .map((c) => c.charCodeAt(0) >> 5)
57
+ .concat([0], [...m[1]].map((c) => c.charCodeAt(0) & 31), [...m[2]].map((c) => CHARSET.indexOf(c)));
58
+ let chk = 1;
59
+ for (const v of values) {
60
+ const top = chk >>> 25;
61
+ chk = ((chk & 0x1ffffff) << 5) ^ v;
62
+ for (let i = 0; i < 5; i++)
63
+ if ((top >>> i) & 1)
64
+ chk ^= GEN[i];
65
+ }
66
+ return chk === 1 || chk === 0x2bc830a3; // bech32, bech32m
67
+ }
68
+ /** A Stellar public key (`G…`, 56 base32 characters): version byte, 32 key bytes and a CRC-16 that checks out. */
69
+ export function isStellarPublicKey(t) {
70
+ return /^G[A-Z2-7]{55}$/.test(t) && crc16Ok(t);
71
+ }
72
+ /** A NATS public nkey: base32 of a prefix byte, 32 key bytes and a CRC-16 (XMODEM) that checks out. */
73
+ export function isNatsPublicKey(t) {
74
+ return /^[ACNOUX][A-Z2-7]{55}$/.test(t) && crc16Ok(t); // (`P` is a private key's prefix, and `S` a seed's)
75
+ }
76
+ /** Base32 of 33 bytes and their CRC-16 (XMODEM), as NATS nkeys and Stellar strkeys are. */
77
+ function crc16Ok(t) {
78
+ const bytes = [];
79
+ let bits = 0;
80
+ let acc = 0;
81
+ for (const c of t) {
82
+ acc = ((acc << 5) | "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567".indexOf(c)) & 0xfff; // (only the bits not yet emitted)
83
+ bits += 5;
84
+ if (bits >= 8) {
85
+ bytes.push((acc >> (bits - 8)) & 255);
86
+ bits -= 8;
87
+ }
88
+ }
89
+ if (bytes.length !== 35)
90
+ return false;
91
+ let crc = 0;
92
+ for (const b of bytes.slice(0, 33)) {
93
+ crc ^= b << 8;
94
+ for (let i = 0; i < 8; i++)
95
+ crc = crc & 0x8000 ? ((crc << 1) ^ 0x1021) & 0xffff : (crc << 1) & 0xffff;
96
+ }
97
+ return crc === (bytes[33] | (bytes[34] << 8));
98
+ }
@@ -0,0 +1,72 @@
1
+ import { type LineIndex, type ShellCommand, type ShellWord } from "./shell.ts";
2
+ /** Whether a path names a file whose whole content is secret material (`.env`, `id_rsa`, `credentials.json`). */
3
+ export declare function isSecretFile(path: string): boolean;
4
+ /**
5
+ * Whether a value is the name of a file that is a secret file or its template, not a password: `.env.example`, `.env.local`,
6
+ * `.npmrc` (a dotfile, or a template's name, in lower case; `Env.Local9` is a password).
7
+ */
8
+ export declare function isConfigFileName(value: string): boolean;
9
+ /** Whether a path names a file that holds nothing but secrets, by its name or its directory's: `config/secrets.staging.yml`, `credentials.json`, `secrets/db`; not `.env`, which holds settings too. */
10
+ export declare function holdsOnlySecrets(path: string): boolean;
11
+ /** A shell's name: `bash`, `sh`, `zsh`. */
12
+ export declare const SHELL: RegExp;
13
+ /** A command a line runs. One that a substitution runs has its `host`: the command whose words take its output. */
14
+ export interface CommandRun extends ShellCommand {
15
+ host?: ShellCommand;
16
+ }
17
+ /**
18
+ * The simple commands a command line runs, in order, read through what runs a command of its own: a shell (`bash -lc
19
+ * "cat .env"`, `sudo sh -c '…'`, a heredoc or here-string fed to one: `ssh host <<'EOF'`), PowerShell (`pwsh -Command
20
+ * …`) and cmd (`cmd /c …`), a container (`docker exec app cat .env`, `docker compose exec`, `kubectl exec pod -- cat
21
+ * .env`), a remote host (`ssh host -- cat .env`), and substitutions (`echo "$(cat .env)"`), nested ones too. A prompt
22
+ * before the line (a pasted session's `$ `, a notebook's `!`, a trace's `+ `, a quote's `> `) is left out. Positions are in `text`, however deep the
23
+ * command was; an unwrapped command takes the wrapper's place in its pipeline and its redirections as a group's.
24
+ */
25
+ export declare function commandsRun(text: string, { at, oneLine, lines, depth, }?: {
26
+ at?: number;
27
+ oneLine?: boolean;
28
+ lines?: LineIndex;
29
+ depth?: number;
30
+ }): CommandRun[];
31
+ /** Whether a command prints the contents of a secret file (`cat .env`, `grep KEY .env.local`, `cat < .env`, `git show HEAD:.env`). */
32
+ export declare function printsSecretFile(command: string): boolean;
33
+ /**
34
+ * Whether a command reads a secret file but cuts what it prints to the names (`cat .env | cut -d= -f1`): its output
35
+ * holds a value only where the cut didn't happen, a `NAME=value` line in it.
36
+ */
37
+ export declare function printsSecretFileNames(command: string): boolean;
38
+ /** Whether a command prints a credential: any of its pipelines (`openssl rand -hex 32 && echo ok`) whose stage that makes one reaches its output. */
39
+ export declare function printsSecret(command: string): boolean;
40
+ /** How a command-line tool takes a password. */
41
+ export interface ToolSpec {
42
+ /** Options whose value is a password: `-p pw`, `--password pw`, `--password=pw`. */
43
+ flags: Set<string>;
44
+ /**
45
+ * How an option takes its value when it isn't attached: the next word, whatever it is (getopt's required argument:
46
+ * `-a '-Xk9…'`); the next word unless it is an option (an optional one: `mongosh -p` alone prompts); or never
47
+ * (mysql's `--password` alone prompts, and the next word is the database).
48
+ */
49
+ next: "always" | "unless an option" | "never";
50
+ /** Whether a one-letter option may carry its value attached (`-pPW`); not for tools with one-dash long options (`influx -precision`). */
51
+ attached: boolean;
52
+ /** Whether only a subcommand takes it (`docker login -p pw`; `docker run -p 443:443` is a port). */
53
+ subcommand?: string;
54
+ /** A wrapper that runs another command after its own options (`sshpass -p pw ssh -p 2222 host`). */
55
+ wraps?: boolean;
56
+ }
57
+ /** How the tool a program names takes a password, if it takes one by an option. */
58
+ export declare function passwordOptions(program: string): ToolSpec | undefined;
59
+ /**
60
+ * The simple command (shell.ts simpleCommand: past wrappers and assignments) whose words hold `at`, and the word at
61
+ * `at`: among the commands its line runs (`mysql` in `docker exec db mysql --password …`), or else among the line's
62
+ * commands as written (`docker` in `docker exec -u www-data:www-data app …`, which runs `app …`'s command).
63
+ */
64
+ export declare function commandAt(text: string, at: number): {
65
+ command: ShellWord[];
66
+ word: ShellWord;
67
+ } | undefined;
68
+ /**
69
+ * Whether the word after the option at `at` is not its value, because the option takes one only attached:
70
+ * `mysql -u root --password mydb` prompts, and `mydb` is the database.
71
+ */
72
+ export declare function promptsForValue(text: string, at: number): boolean;