meteor-node-stubs 1.2.16 → 1.2.18

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 (1268) hide show
  1. package/node_modules/@meteorjs/browserify-sign/LICENSE +13 -0
  2. package/node_modules/@meteorjs/browserify-sign/README.md +13 -0
  3. package/node_modules/@meteorjs/browserify-sign/algos.js +3 -0
  4. package/node_modules/@meteorjs/browserify-sign/browser/algorithms.json +152 -0
  5. package/node_modules/@meteorjs/browserify-sign/browser/curves.json +8 -0
  6. package/node_modules/@meteorjs/browserify-sign/browser/index.js +92 -0
  7. package/node_modules/@meteorjs/browserify-sign/browser/sign.js +150 -0
  8. package/node_modules/@meteorjs/browserify-sign/browser/verify.js +86 -0
  9. package/node_modules/@meteorjs/browserify-sign/index.js +9 -0
  10. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/.travis.yml +34 -0
  11. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  12. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/GOVERNANCE.md +136 -0
  13. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/LICENSE +47 -0
  14. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/README.md +58 -0
  15. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +60 -0
  16. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/duplex-browser.js +1 -0
  17. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/duplex.js +1 -0
  18. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js +131 -0
  19. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js +47 -0
  20. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js +1019 -0
  21. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js +214 -0
  22. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js +685 -0
  23. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/lib/internal/streams/BufferList.js +78 -0
  24. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js +84 -0
  25. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  26. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  27. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer/LICENSE +21 -0
  28. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer/README.md +584 -0
  29. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer/index.d.ts +187 -0
  30. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer/index.js +62 -0
  31. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer/package.json +37 -0
  32. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/package.json +52 -0
  33. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/passthrough.js +1 -0
  34. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/readable-browser.js +7 -0
  35. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/readable.js +19 -0
  36. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/transform.js +1 -0
  37. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/writable-browser.js +1 -0
  38. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/writable.js +8 -0
  39. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/.travis.yml +50 -0
  40. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/LICENSE +48 -0
  41. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/README.md +47 -0
  42. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/lib/string_decoder.js +296 -0
  43. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer/LICENSE +21 -0
  44. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer/README.md +584 -0
  45. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer/index.d.ts +187 -0
  46. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer/index.js +62 -0
  47. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer/package.json +37 -0
  48. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/package.json +31 -0
  49. package/node_modules/@meteorjs/browserify-sign/package.json +85 -0
  50. package/node_modules/@meteorjs/create-ecdh/.travis.yml +7 -0
  51. package/node_modules/@meteorjs/create-ecdh/LICENSE +21 -0
  52. package/node_modules/@meteorjs/create-ecdh/browser.js +124 -0
  53. package/node_modules/@meteorjs/create-ecdh/elliptic/README.md +238 -0
  54. package/node_modules/@meteorjs/create-ecdh/elliptic/benchmarks/deps/jodid.js +82 -0
  55. package/node_modules/@meteorjs/create-ecdh/elliptic/benchmarks/deps/secp256k1.js +41 -0
  56. package/node_modules/@meteorjs/create-ecdh/elliptic/benchmarks/index.js +153 -0
  57. package/node_modules/@meteorjs/create-ecdh/elliptic/benchmarks/package.json +21 -0
  58. package/node_modules/@meteorjs/create-ecdh/elliptic/dist/.gitkeep +0 -0
  59. package/node_modules/@meteorjs/create-ecdh/elliptic/dist/elliptic.js +8961 -0
  60. package/node_modules/@meteorjs/create-ecdh/elliptic/dist/elliptic.min.js +1 -0
  61. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/curve/base.js +381 -0
  62. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/curve/edwards.js +435 -0
  63. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/curve/index.js +8 -0
  64. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/curve/mont.js +178 -0
  65. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/curve/short.js +938 -0
  66. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/curves.js +206 -0
  67. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/ec/index.js +278 -0
  68. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/ec/key.js +121 -0
  69. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/ec/signature.js +176 -0
  70. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/eddsa/index.js +121 -0
  71. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/eddsa/key.js +95 -0
  72. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/eddsa/signature.js +66 -0
  73. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/precomputed/secp256k1.js +780 -0
  74. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/utils.js +122 -0
  75. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic.js +13 -0
  76. package/node_modules/@meteorjs/create-ecdh/elliptic/test/api-test.js +20 -0
  77. package/node_modules/@meteorjs/create-ecdh/elliptic/test/curve-test.js +357 -0
  78. package/node_modules/@meteorjs/create-ecdh/elliptic/test/ecdh-test.js +43 -0
  79. package/node_modules/@meteorjs/create-ecdh/elliptic/test/ecdsa-test.js +547 -0
  80. package/node_modules/@meteorjs/create-ecdh/elliptic/test/ed25519-test.js +138 -0
  81. package/node_modules/@meteorjs/create-ecdh/elliptic/test/fixtures/derivation-fixtures.js +3842 -0
  82. package/node_modules/@meteorjs/create-ecdh/elliptic/test/fixtures/sign.input +1024 -0
  83. package/node_modules/@meteorjs/create-ecdh/elliptic/test/index.js +10 -0
  84. package/node_modules/@meteorjs/create-ecdh/elliptic/test/unittests.html +39 -0
  85. package/node_modules/@meteorjs/create-ecdh/index.js +3 -0
  86. package/node_modules/@meteorjs/create-ecdh/node_modules/bn.js/LICENSE +19 -0
  87. package/node_modules/@meteorjs/create-ecdh/node_modules/bn.js/README.md +200 -0
  88. package/node_modules/@meteorjs/create-ecdh/node_modules/bn.js/lib/bn.js +3447 -0
  89. package/node_modules/@meteorjs/create-ecdh/node_modules/bn.js/package.json +36 -0
  90. package/node_modules/@meteorjs/create-ecdh/node_modules/bn.js/util/genCombMulTo.js +65 -0
  91. package/node_modules/@meteorjs/create-ecdh/node_modules/bn.js/util/genCombMulTo10.js +65 -0
  92. package/node_modules/@meteorjs/create-ecdh/package.json +53 -0
  93. package/node_modules/@meteorjs/create-ecdh/readme.md +4 -0
  94. package/node_modules/@meteorjs/crypto-browserify/.eslintrc +24 -0
  95. package/node_modules/@meteorjs/crypto-browserify/.github/FUNDING.yml +12 -0
  96. package/node_modules/@meteorjs/crypto-browserify/.github/workflows/node-aught.yml +12 -0
  97. package/node_modules/@meteorjs/crypto-browserify/.github/workflows/node-pretest.yml +9 -0
  98. package/node_modules/@meteorjs/crypto-browserify/.github/workflows/node-tens.yml +11 -0
  99. package/node_modules/@meteorjs/crypto-browserify/.github/workflows/rebase.yml +9 -0
  100. package/node_modules/@meteorjs/crypto-browserify/.github/workflows/require-allow-edits.yml +12 -0
  101. package/node_modules/@meteorjs/crypto-browserify/.travis.yml +18 -0
  102. package/node_modules/@meteorjs/crypto-browserify/LICENSE +24 -0
  103. package/node_modules/@meteorjs/crypto-browserify/README.md +69 -0
  104. package/node_modules/@meteorjs/crypto-browserify/example/bundle.js +605 -0
  105. package/node_modules/@meteorjs/crypto-browserify/example/index.html +12 -0
  106. package/node_modules/@meteorjs/crypto-browserify/example/test.js +6 -0
  107. package/node_modules/@meteorjs/crypto-browserify/index.js +103 -0
  108. package/node_modules/@meteorjs/crypto-browserify/package.json +64 -0
  109. package/node_modules/@meteorjs/crypto-browserify/test/aes.js +53 -0
  110. package/node_modules/@meteorjs/crypto-browserify/test/create-hash.js +51 -0
  111. package/node_modules/@meteorjs/crypto-browserify/test/create-hmac.js +54 -0
  112. package/node_modules/@meteorjs/crypto-browserify/test/dh.js +60 -0
  113. package/node_modules/@meteorjs/crypto-browserify/test/ecdh.js +62 -0
  114. package/node_modules/@meteorjs/crypto-browserify/test/index.js +22 -0
  115. package/node_modules/@meteorjs/crypto-browserify/test/node/dh.js +69 -0
  116. package/node_modules/@meteorjs/crypto-browserify/test/pbkdf2.js +23 -0
  117. package/node_modules/@meteorjs/crypto-browserify/test/public-encrypt.js +39 -0
  118. package/node_modules/@meteorjs/crypto-browserify/test/random-bytes.js +65 -0
  119. package/node_modules/@meteorjs/crypto-browserify/test/random-fill.js +55 -0
  120. package/node_modules/@meteorjs/crypto-browserify/test/sign.js +61 -0
  121. package/node_modules/asn1.js/README.md +100 -0
  122. package/node_modules/asn1.js/lib/asn1/api.js +61 -0
  123. package/node_modules/asn1.js/lib/asn1/base/buffer.js +116 -0
  124. package/node_modules/asn1.js/lib/asn1/base/index.js +6 -0
  125. package/node_modules/asn1.js/lib/asn1/base/node.js +634 -0
  126. package/node_modules/asn1.js/lib/asn1/base/reporter.js +121 -0
  127. package/node_modules/asn1.js/lib/asn1/constants/der.js +42 -0
  128. package/node_modules/asn1.js/lib/asn1/constants/index.js +19 -0
  129. package/node_modules/asn1.js/lib/asn1/decoders/der.js +324 -0
  130. package/node_modules/asn1.js/lib/asn1/decoders/index.js +4 -0
  131. package/node_modules/asn1.js/lib/asn1/decoders/pem.js +49 -0
  132. package/node_modules/asn1.js/lib/asn1/encoders/der.js +295 -0
  133. package/node_modules/asn1.js/lib/asn1/encoders/index.js +4 -0
  134. package/node_modules/asn1.js/lib/asn1/encoders/pem.js +21 -0
  135. package/node_modules/asn1.js/lib/asn1.js +9 -0
  136. package/node_modules/asn1.js/node_modules/bn.js/LICENSE +19 -0
  137. package/node_modules/asn1.js/node_modules/bn.js/README.md +200 -0
  138. package/node_modules/asn1.js/node_modules/bn.js/lib/bn.js +3447 -0
  139. package/node_modules/asn1.js/node_modules/bn.js/package.json +36 -0
  140. package/node_modules/asn1.js/node_modules/bn.js/util/genCombMulTo.js +65 -0
  141. package/node_modules/asn1.js/node_modules/bn.js/util/genCombMulTo10.js +65 -0
  142. package/node_modules/asn1.js/package.json +31 -0
  143. package/node_modules/assert/LICENSE +18 -0
  144. package/node_modules/assert/README.md +75 -0
  145. package/node_modules/assert/build/assert.js +590 -0
  146. package/node_modules/assert/build/internal/assert/assertion_error.js +445 -0
  147. package/node_modules/assert/build/internal/errors.js +171 -0
  148. package/node_modules/assert/build/internal/util/comparisons.js +575 -0
  149. package/node_modules/assert/package.json +46 -0
  150. package/node_modules/available-typed-arrays/.eslintrc +5 -0
  151. package/node_modules/available-typed-arrays/.github/FUNDING.yml +12 -0
  152. package/node_modules/available-typed-arrays/.nycrc +9 -0
  153. package/node_modules/available-typed-arrays/CHANGELOG.md +100 -0
  154. package/node_modules/available-typed-arrays/LICENSE +21 -0
  155. package/node_modules/available-typed-arrays/README.md +55 -0
  156. package/node_modules/available-typed-arrays/index.d.ts +8 -0
  157. package/node_modules/available-typed-arrays/index.js +17 -0
  158. package/node_modules/available-typed-arrays/package.json +93 -0
  159. package/node_modules/available-typed-arrays/test/index.js +18 -0
  160. package/node_modules/available-typed-arrays/tsconfig.json +49 -0
  161. package/node_modules/base64-js/LICENSE +21 -0
  162. package/node_modules/base64-js/README.md +34 -0
  163. package/node_modules/base64-js/base64js.min.js +1 -0
  164. package/node_modules/base64-js/index.d.ts +3 -0
  165. package/node_modules/base64-js/index.js +150 -0
  166. package/node_modules/base64-js/package.json +47 -0
  167. package/node_modules/bn.js/LICENSE +19 -0
  168. package/node_modules/bn.js/README.md +214 -0
  169. package/node_modules/bn.js/lib/bn.js +3548 -0
  170. package/node_modules/bn.js/package.json +39 -0
  171. package/node_modules/brorand/.npmignore +2 -0
  172. package/node_modules/brorand/README.md +26 -0
  173. package/node_modules/brorand/index.js +65 -0
  174. package/node_modules/brorand/package.json +31 -0
  175. package/node_modules/brorand/test/api-test.js +8 -0
  176. package/node_modules/browserify-aes/.travis.yml +15 -0
  177. package/node_modules/browserify-aes/LICENSE +21 -0
  178. package/node_modules/browserify-aes/README.md +19 -0
  179. package/node_modules/browserify-aes/aes.js +228 -0
  180. package/node_modules/browserify-aes/authCipher.js +117 -0
  181. package/node_modules/browserify-aes/browser.js +13 -0
  182. package/node_modules/browserify-aes/decrypter.js +124 -0
  183. package/node_modules/browserify-aes/encrypter.js +114 -0
  184. package/node_modules/browserify-aes/ghash.js +89 -0
  185. package/node_modules/browserify-aes/incr32.js +15 -0
  186. package/node_modules/browserify-aes/index.js +7 -0
  187. package/node_modules/browserify-aes/modes/cbc.js +17 -0
  188. package/node_modules/browserify-aes/modes/cfb.js +33 -0
  189. package/node_modules/browserify-aes/modes/cfb1.js +42 -0
  190. package/node_modules/browserify-aes/modes/cfb8.js +25 -0
  191. package/node_modules/browserify-aes/modes/ctr.js +30 -0
  192. package/node_modules/browserify-aes/modes/ecb.js +7 -0
  193. package/node_modules/browserify-aes/modes/index.js +18 -0
  194. package/node_modules/browserify-aes/modes/list.json +191 -0
  195. package/node_modules/browserify-aes/modes/ofb.js +16 -0
  196. package/node_modules/browserify-aes/package.json +43 -0
  197. package/node_modules/browserify-aes/streamCipher.js +27 -0
  198. package/node_modules/browserify-cipher/.travis.yml +14 -0
  199. package/node_modules/browserify-cipher/LICENSE +21 -0
  200. package/node_modules/browserify-cipher/README.md +7 -0
  201. package/node_modules/browserify-cipher/browser.js +67 -0
  202. package/node_modules/browserify-cipher/index.js +7 -0
  203. package/node_modules/browserify-cipher/package.json +26 -0
  204. package/node_modules/browserify-cipher/test.js +55 -0
  205. package/node_modules/browserify-des/.travis.yml +8 -0
  206. package/node_modules/browserify-des/index.js +50 -0
  207. package/node_modules/browserify-des/license +21 -0
  208. package/node_modules/browserify-des/modes.js +24 -0
  209. package/node_modules/browserify-des/package.json +30 -0
  210. package/node_modules/browserify-des/readme.md +6 -0
  211. package/node_modules/browserify-des/test.js +81 -0
  212. package/node_modules/browserify-rsa/CHANGELOG.md +98 -0
  213. package/node_modules/browserify-rsa/LICENSE +21 -0
  214. package/node_modules/browserify-rsa/README.md +15 -0
  215. package/node_modules/browserify-rsa/index.js +38 -0
  216. package/node_modules/browserify-rsa/package.json +66 -0
  217. package/node_modules/browserify-zlib/.npmignore +7 -0
  218. package/node_modules/browserify-zlib/.travis.yml +16 -0
  219. package/node_modules/browserify-zlib/LICENSE +70 -0
  220. package/node_modules/browserify-zlib/README.md +24 -0
  221. package/node_modules/browserify-zlib/karma.conf.js +11 -0
  222. package/node_modules/browserify-zlib/lib/binding.js +409 -0
  223. package/node_modules/browserify-zlib/lib/index.js +609 -0
  224. package/node_modules/browserify-zlib/package.json +64 -0
  225. package/node_modules/browserify-zlib/src/binding.js +432 -0
  226. package/node_modules/browserify-zlib/src/index.js +650 -0
  227. package/node_modules/buffer/AUTHORS.md +70 -0
  228. package/node_modules/buffer/LICENSE +21 -0
  229. package/node_modules/buffer/README.md +410 -0
  230. package/node_modules/buffer/index.d.ts +186 -0
  231. package/node_modules/buffer/index.js +1817 -0
  232. package/node_modules/buffer/package.json +96 -0
  233. package/node_modules/buffer-xor/.npmignore +1 -0
  234. package/node_modules/buffer-xor/.travis.yml +9 -0
  235. package/node_modules/buffer-xor/LICENSE +21 -0
  236. package/node_modules/buffer-xor/README.md +41 -0
  237. package/node_modules/buffer-xor/index.js +10 -0
  238. package/node_modules/buffer-xor/inline.js +1 -0
  239. package/node_modules/buffer-xor/inplace.js +9 -0
  240. package/node_modules/buffer-xor/package.json +37 -0
  241. package/node_modules/buffer-xor/test/fixtures.json +23 -0
  242. package/node_modules/buffer-xor/test/index.js +38 -0
  243. package/node_modules/builtin-status-codes/browser.js +64 -0
  244. package/node_modules/builtin-status-codes/build.js +8 -0
  245. package/node_modules/builtin-status-codes/index.js +3 -0
  246. package/node_modules/builtin-status-codes/license +21 -0
  247. package/node_modules/builtin-status-codes/package.json +39 -0
  248. package/node_modules/builtin-status-codes/readme.md +31 -0
  249. package/node_modules/call-bind/.eslintignore +1 -0
  250. package/node_modules/call-bind/.eslintrc +16 -0
  251. package/node_modules/call-bind/.github/FUNDING.yml +12 -0
  252. package/node_modules/call-bind/.nycrc +9 -0
  253. package/node_modules/call-bind/CHANGELOG.md +106 -0
  254. package/node_modules/call-bind/LICENSE +21 -0
  255. package/node_modules/call-bind/README.md +64 -0
  256. package/node_modules/call-bind/callBound.js +15 -0
  257. package/node_modules/call-bind/index.js +24 -0
  258. package/node_modules/call-bind/package.json +93 -0
  259. package/node_modules/call-bind/test/callBound.js +54 -0
  260. package/node_modules/call-bind/test/index.js +74 -0
  261. package/node_modules/call-bind-apply-helpers/.eslintrc +17 -0
  262. package/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
  263. package/node_modules/call-bind-apply-helpers/.nycrc +9 -0
  264. package/node_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
  265. package/node_modules/call-bind-apply-helpers/LICENSE +21 -0
  266. package/node_modules/call-bind-apply-helpers/README.md +62 -0
  267. package/node_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
  268. package/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
  269. package/node_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
  270. package/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
  271. package/node_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
  272. package/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
  273. package/node_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
  274. package/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
  275. package/node_modules/call-bind-apply-helpers/index.d.ts +64 -0
  276. package/node_modules/call-bind-apply-helpers/index.js +15 -0
  277. package/node_modules/call-bind-apply-helpers/package.json +85 -0
  278. package/node_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
  279. package/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
  280. package/node_modules/call-bind-apply-helpers/test/index.js +63 -0
  281. package/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
  282. package/node_modules/call-bound/.eslintrc +13 -0
  283. package/node_modules/call-bound/.github/FUNDING.yml +12 -0
  284. package/node_modules/call-bound/.nycrc +9 -0
  285. package/node_modules/call-bound/CHANGELOG.md +42 -0
  286. package/node_modules/call-bound/LICENSE +21 -0
  287. package/node_modules/call-bound/README.md +53 -0
  288. package/node_modules/call-bound/index.d.ts +94 -0
  289. package/node_modules/call-bound/index.js +19 -0
  290. package/node_modules/call-bound/package.json +99 -0
  291. package/node_modules/call-bound/test/index.js +61 -0
  292. package/node_modules/call-bound/tsconfig.json +10 -0
  293. package/node_modules/cipher-base/.eslintrc +26 -0
  294. package/node_modules/cipher-base/.github/FUNDING.yml +12 -0
  295. package/node_modules/cipher-base/CHANGELOG.md +66 -0
  296. package/node_modules/cipher-base/LICENSE +21 -0
  297. package/node_modules/cipher-base/README.md +17 -0
  298. package/node_modules/cipher-base/index.js +167 -0
  299. package/node_modules/cipher-base/package.json +62 -0
  300. package/node_modules/cipher-base/test/index.js +221 -0
  301. package/node_modules/console-browserify/.testem.json +14 -0
  302. package/node_modules/console-browserify/.travis.yml +11 -0
  303. package/node_modules/console-browserify/CHANGELOG.md +10 -0
  304. package/node_modules/console-browserify/LICENCE +19 -0
  305. package/node_modules/console-browserify/README.md +42 -0
  306. package/node_modules/console-browserify/index.js +87 -0
  307. package/node_modules/console-browserify/package.json +59 -0
  308. package/node_modules/console-browserify/test/index.js +67 -0
  309. package/node_modules/console-browserify/test/static/index.html +12 -0
  310. package/node_modules/console-browserify/test/static/test-adapter.js +53 -0
  311. package/node_modules/constants-browserify/README.md +54 -0
  312. package/node_modules/constants-browserify/build.sh +1 -0
  313. package/node_modules/constants-browserify/constants.json +209 -0
  314. package/node_modules/constants-browserify/package.json +34 -0
  315. package/node_modules/constants-browserify/test.js +18 -0
  316. package/node_modules/core-util-is/LICENSE +19 -0
  317. package/node_modules/core-util-is/README.md +3 -0
  318. package/node_modules/core-util-is/lib/util.js +107 -0
  319. package/node_modules/core-util-is/package.json +38 -0
  320. package/node_modules/create-hash/.travis.yml +17 -0
  321. package/node_modules/create-hash/LICENSE +21 -0
  322. package/node_modules/create-hash/README.md +19 -0
  323. package/node_modules/create-hash/browser.js +30 -0
  324. package/node_modules/create-hash/index.js +1 -0
  325. package/node_modules/create-hash/md5.js +5 -0
  326. package/node_modules/create-hash/package.json +39 -0
  327. package/node_modules/create-hash/test.js +41 -0
  328. package/node_modules/create-hmac/LICENSE +21 -0
  329. package/node_modules/create-hmac/README.md +20 -0
  330. package/node_modules/create-hmac/browser.js +62 -0
  331. package/node_modules/create-hmac/index.js +1 -0
  332. package/node_modules/create-hmac/legacy.js +46 -0
  333. package/node_modules/create-hmac/package.json +45 -0
  334. package/node_modules/define-data-property/.eslintrc +24 -0
  335. package/node_modules/define-data-property/.github/FUNDING.yml +12 -0
  336. package/node_modules/define-data-property/.nycrc +13 -0
  337. package/node_modules/define-data-property/CHANGELOG.md +70 -0
  338. package/node_modules/define-data-property/LICENSE +21 -0
  339. package/node_modules/define-data-property/README.md +67 -0
  340. package/node_modules/define-data-property/index.d.ts +12 -0
  341. package/node_modules/define-data-property/index.js +56 -0
  342. package/node_modules/define-data-property/package.json +106 -0
  343. package/node_modules/define-data-property/test/index.js +392 -0
  344. package/node_modules/define-data-property/tsconfig.json +59 -0
  345. package/node_modules/define-properties/.editorconfig +13 -0
  346. package/node_modules/define-properties/.eslintrc +19 -0
  347. package/node_modules/define-properties/.github/FUNDING.yml +12 -0
  348. package/node_modules/define-properties/.nycrc +9 -0
  349. package/node_modules/define-properties/CHANGELOG.md +91 -0
  350. package/node_modules/define-properties/LICENSE +21 -0
  351. package/node_modules/define-properties/README.md +84 -0
  352. package/node_modules/define-properties/index.js +47 -0
  353. package/node_modules/define-properties/package.json +88 -0
  354. package/node_modules/des.js/.jscsrc +46 -0
  355. package/node_modules/des.js/.jshintrc +89 -0
  356. package/node_modules/des.js/README.md +26 -0
  357. package/node_modules/des.js/lib/des/cbc.js +65 -0
  358. package/node_modules/des.js/lib/des/cipher.js +142 -0
  359. package/node_modules/des.js/lib/des/des.js +150 -0
  360. package/node_modules/des.js/lib/des/ede.js +54 -0
  361. package/node_modules/des.js/lib/des/utils.js +256 -0
  362. package/node_modules/des.js/lib/des.js +7 -0
  363. package/node_modules/des.js/package.json +33 -0
  364. package/node_modules/des.js/test/cbc-test.js +73 -0
  365. package/node_modules/des.js/test/des-test.js +139 -0
  366. package/node_modules/des.js/test/ede-test.js +106 -0
  367. package/node_modules/des.js/test/fixtures.js +5 -0
  368. package/node_modules/des.js/test/utils-test.js +169 -0
  369. package/node_modules/diffie-hellman/.travis.yml +10 -0
  370. package/node_modules/diffie-hellman/LICENSE +19 -0
  371. package/node_modules/diffie-hellman/browser.js +42 -0
  372. package/node_modules/diffie-hellman/index.js +10 -0
  373. package/node_modules/diffie-hellman/lib/dh.js +164 -0
  374. package/node_modules/diffie-hellman/lib/generatePrime.js +105 -0
  375. package/node_modules/diffie-hellman/lib/primes.json +34 -0
  376. package/node_modules/diffie-hellman/node_modules/bn.js/LICENSE +19 -0
  377. package/node_modules/diffie-hellman/node_modules/bn.js/README.md +200 -0
  378. package/node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js +3447 -0
  379. package/node_modules/diffie-hellman/node_modules/bn.js/package.json +36 -0
  380. package/node_modules/diffie-hellman/node_modules/bn.js/util/genCombMulTo.js +65 -0
  381. package/node_modules/diffie-hellman/node_modules/bn.js/util/genCombMulTo10.js +65 -0
  382. package/node_modules/diffie-hellman/package.json +35 -0
  383. package/node_modules/diffie-hellman/readme.md +4 -0
  384. package/node_modules/domain-browser/.prettierignore +57 -0
  385. package/node_modules/domain-browser/LICENSE.md +101 -0
  386. package/node_modules/domain-browser/README.md +126 -0
  387. package/node_modules/domain-browser/package.json +135 -0
  388. package/node_modules/domain-browser/source/index.js +66 -0
  389. package/node_modules/dunder-proto/.eslintrc +5 -0
  390. package/node_modules/dunder-proto/.github/FUNDING.yml +12 -0
  391. package/node_modules/dunder-proto/.nycrc +13 -0
  392. package/node_modules/dunder-proto/CHANGELOG.md +24 -0
  393. package/node_modules/dunder-proto/LICENSE +21 -0
  394. package/node_modules/dunder-proto/README.md +54 -0
  395. package/node_modules/dunder-proto/get.d.ts +5 -0
  396. package/node_modules/dunder-proto/get.js +30 -0
  397. package/node_modules/dunder-proto/package.json +76 -0
  398. package/node_modules/dunder-proto/set.d.ts +5 -0
  399. package/node_modules/dunder-proto/set.js +35 -0
  400. package/node_modules/dunder-proto/test/get.js +34 -0
  401. package/node_modules/dunder-proto/test/index.js +4 -0
  402. package/node_modules/dunder-proto/test/set.js +50 -0
  403. package/node_modules/dunder-proto/tsconfig.json +9 -0
  404. package/node_modules/es-define-property/.eslintrc +13 -0
  405. package/node_modules/es-define-property/.github/FUNDING.yml +12 -0
  406. package/node_modules/es-define-property/.nycrc +9 -0
  407. package/node_modules/es-define-property/CHANGELOG.md +29 -0
  408. package/node_modules/es-define-property/LICENSE +21 -0
  409. package/node_modules/es-define-property/README.md +49 -0
  410. package/node_modules/es-define-property/index.d.ts +3 -0
  411. package/node_modules/es-define-property/index.js +14 -0
  412. package/node_modules/es-define-property/package.json +81 -0
  413. package/node_modules/es-define-property/test/index.js +56 -0
  414. package/node_modules/es-define-property/tsconfig.json +10 -0
  415. package/node_modules/es-errors/.eslintrc +5 -0
  416. package/node_modules/es-errors/.github/FUNDING.yml +12 -0
  417. package/node_modules/es-errors/CHANGELOG.md +40 -0
  418. package/node_modules/es-errors/LICENSE +21 -0
  419. package/node_modules/es-errors/README.md +55 -0
  420. package/node_modules/es-errors/eval.d.ts +3 -0
  421. package/node_modules/es-errors/eval.js +4 -0
  422. package/node_modules/es-errors/index.d.ts +3 -0
  423. package/node_modules/es-errors/index.js +4 -0
  424. package/node_modules/es-errors/package.json +80 -0
  425. package/node_modules/es-errors/range.d.ts +3 -0
  426. package/node_modules/es-errors/range.js +4 -0
  427. package/node_modules/es-errors/ref.d.ts +3 -0
  428. package/node_modules/es-errors/ref.js +4 -0
  429. package/node_modules/es-errors/syntax.d.ts +3 -0
  430. package/node_modules/es-errors/syntax.js +4 -0
  431. package/node_modules/es-errors/test/index.js +19 -0
  432. package/node_modules/es-errors/tsconfig.json +49 -0
  433. package/node_modules/es-errors/type.d.ts +3 -0
  434. package/node_modules/es-errors/type.js +4 -0
  435. package/node_modules/es-errors/uri.d.ts +3 -0
  436. package/node_modules/es-errors/uri.js +4 -0
  437. package/node_modules/es-object-atoms/.eslintrc +16 -0
  438. package/node_modules/es-object-atoms/.github/FUNDING.yml +12 -0
  439. package/node_modules/es-object-atoms/CHANGELOG.md +37 -0
  440. package/node_modules/es-object-atoms/LICENSE +21 -0
  441. package/node_modules/es-object-atoms/README.md +63 -0
  442. package/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
  443. package/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
  444. package/node_modules/es-object-atoms/ToObject.d.ts +7 -0
  445. package/node_modules/es-object-atoms/ToObject.js +10 -0
  446. package/node_modules/es-object-atoms/index.d.ts +3 -0
  447. package/node_modules/es-object-atoms/index.js +4 -0
  448. package/node_modules/es-object-atoms/isObject.d.ts +3 -0
  449. package/node_modules/es-object-atoms/isObject.js +6 -0
  450. package/node_modules/es-object-atoms/package.json +80 -0
  451. package/node_modules/es-object-atoms/test/index.js +38 -0
  452. package/node_modules/es-object-atoms/tsconfig.json +6 -0
  453. package/node_modules/events/.airtap.yml +15 -0
  454. package/node_modules/events/.github/FUNDING.yml +12 -0
  455. package/node_modules/events/.travis.yml +18 -0
  456. package/node_modules/events/History.md +118 -0
  457. package/node_modules/events/LICENSE +22 -0
  458. package/node_modules/events/Readme.md +50 -0
  459. package/node_modules/events/events.js +497 -0
  460. package/node_modules/events/package.json +37 -0
  461. package/node_modules/events/security.md +10 -0
  462. package/node_modules/events/tests/add-listeners.js +111 -0
  463. package/node_modules/events/tests/check-listener-leaks.js +101 -0
  464. package/node_modules/events/tests/common.js +104 -0
  465. package/node_modules/events/tests/errors.js +13 -0
  466. package/node_modules/events/tests/events-list.js +28 -0
  467. package/node_modules/events/tests/events-once.js +234 -0
  468. package/node_modules/events/tests/index.js +64 -0
  469. package/node_modules/events/tests/legacy-compat.js +16 -0
  470. package/node_modules/events/tests/listener-count.js +37 -0
  471. package/node_modules/events/tests/listeners-side-effects.js +56 -0
  472. package/node_modules/events/tests/listeners.js +168 -0
  473. package/node_modules/events/tests/max-listeners.js +47 -0
  474. package/node_modules/events/tests/method-names.js +35 -0
  475. package/node_modules/events/tests/modify-in-emit.js +90 -0
  476. package/node_modules/events/tests/num-args.js +60 -0
  477. package/node_modules/events/tests/once.js +83 -0
  478. package/node_modules/events/tests/prepend.js +31 -0
  479. package/node_modules/events/tests/remove-all-listeners.js +133 -0
  480. package/node_modules/events/tests/remove-listeners.js +212 -0
  481. package/node_modules/events/tests/set-max-listeners-side-effects.js +31 -0
  482. package/node_modules/events/tests/special-event-names.js +45 -0
  483. package/node_modules/events/tests/subclass.js +66 -0
  484. package/node_modules/events/tests/symbols.js +25 -0
  485. package/node_modules/evp_bytestokey/LICENSE +21 -0
  486. package/node_modules/evp_bytestokey/README.md +51 -0
  487. package/node_modules/evp_bytestokey/index.js +45 -0
  488. package/node_modules/evp_bytestokey/package.json +45 -0
  489. package/node_modules/for-each/.editorconfig +20 -0
  490. package/node_modules/for-each/.eslintrc +30 -0
  491. package/node_modules/for-each/.github/FUNDING.yml +12 -0
  492. package/node_modules/for-each/.github/SECURITY.md +3 -0
  493. package/node_modules/for-each/.nycrc +8 -0
  494. package/node_modules/for-each/CHANGELOG.md +107 -0
  495. package/node_modules/for-each/LICENSE +22 -0
  496. package/node_modules/for-each/README.md +39 -0
  497. package/node_modules/for-each/index.d.ts +35 -0
  498. package/node_modules/for-each/index.js +69 -0
  499. package/node_modules/for-each/package.json +76 -0
  500. package/node_modules/for-each/test/test.js +224 -0
  501. package/node_modules/for-each/tsconfig.json +8 -0
  502. package/node_modules/function-bind/.eslintrc +21 -0
  503. package/node_modules/function-bind/.github/FUNDING.yml +12 -0
  504. package/node_modules/function-bind/.github/SECURITY.md +3 -0
  505. package/node_modules/function-bind/.nycrc +13 -0
  506. package/node_modules/function-bind/CHANGELOG.md +136 -0
  507. package/node_modules/function-bind/LICENSE +20 -0
  508. package/node_modules/function-bind/README.md +46 -0
  509. package/node_modules/function-bind/implementation.js +84 -0
  510. package/node_modules/function-bind/index.js +5 -0
  511. package/node_modules/function-bind/package.json +87 -0
  512. package/node_modules/function-bind/test/.eslintrc +9 -0
  513. package/node_modules/function-bind/test/index.js +252 -0
  514. package/node_modules/get-intrinsic/.eslintrc +42 -0
  515. package/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
  516. package/node_modules/get-intrinsic/.nycrc +9 -0
  517. package/node_modules/get-intrinsic/CHANGELOG.md +186 -0
  518. package/node_modules/get-intrinsic/LICENSE +21 -0
  519. package/node_modules/get-intrinsic/README.md +71 -0
  520. package/node_modules/get-intrinsic/index.js +378 -0
  521. package/node_modules/get-intrinsic/package.json +97 -0
  522. package/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
  523. package/node_modules/get-proto/.eslintrc +10 -0
  524. package/node_modules/get-proto/.github/FUNDING.yml +12 -0
  525. package/node_modules/get-proto/.nycrc +9 -0
  526. package/node_modules/get-proto/CHANGELOG.md +21 -0
  527. package/node_modules/get-proto/LICENSE +21 -0
  528. package/node_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
  529. package/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
  530. package/node_modules/get-proto/README.md +50 -0
  531. package/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
  532. package/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
  533. package/node_modules/get-proto/index.d.ts +5 -0
  534. package/node_modules/get-proto/index.js +27 -0
  535. package/node_modules/get-proto/package.json +81 -0
  536. package/node_modules/get-proto/test/index.js +68 -0
  537. package/node_modules/get-proto/tsconfig.json +9 -0
  538. package/node_modules/gopd/.eslintrc +16 -0
  539. package/node_modules/gopd/.github/FUNDING.yml +12 -0
  540. package/node_modules/gopd/CHANGELOG.md +45 -0
  541. package/node_modules/gopd/LICENSE +21 -0
  542. package/node_modules/gopd/README.md +40 -0
  543. package/node_modules/gopd/gOPD.d.ts +1 -0
  544. package/node_modules/gopd/gOPD.js +4 -0
  545. package/node_modules/gopd/index.d.ts +5 -0
  546. package/node_modules/gopd/index.js +15 -0
  547. package/node_modules/gopd/package.json +77 -0
  548. package/node_modules/gopd/test/index.js +36 -0
  549. package/node_modules/gopd/tsconfig.json +9 -0
  550. package/node_modules/has-property-descriptors/.eslintrc +13 -0
  551. package/node_modules/has-property-descriptors/.github/FUNDING.yml +12 -0
  552. package/node_modules/has-property-descriptors/.nycrc +9 -0
  553. package/node_modules/has-property-descriptors/CHANGELOG.md +35 -0
  554. package/node_modules/has-property-descriptors/LICENSE +21 -0
  555. package/node_modules/has-property-descriptors/README.md +43 -0
  556. package/node_modules/has-property-descriptors/index.js +22 -0
  557. package/node_modules/has-property-descriptors/package.json +77 -0
  558. package/node_modules/has-property-descriptors/test/index.js +57 -0
  559. package/node_modules/has-symbols/.eslintrc +11 -0
  560. package/node_modules/has-symbols/.github/FUNDING.yml +12 -0
  561. package/node_modules/has-symbols/.nycrc +9 -0
  562. package/node_modules/has-symbols/CHANGELOG.md +91 -0
  563. package/node_modules/has-symbols/LICENSE +21 -0
  564. package/node_modules/has-symbols/README.md +46 -0
  565. package/node_modules/has-symbols/index.d.ts +3 -0
  566. package/node_modules/has-symbols/index.js +14 -0
  567. package/node_modules/has-symbols/package.json +111 -0
  568. package/node_modules/has-symbols/shams.d.ts +3 -0
  569. package/node_modules/has-symbols/shams.js +45 -0
  570. package/node_modules/has-symbols/test/index.js +22 -0
  571. package/node_modules/has-symbols/test/shams/core-js.js +29 -0
  572. package/node_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
  573. package/node_modules/has-symbols/test/tests.js +58 -0
  574. package/node_modules/has-symbols/tsconfig.json +10 -0
  575. package/node_modules/has-tostringtag/.eslintrc +5 -0
  576. package/node_modules/has-tostringtag/.github/FUNDING.yml +12 -0
  577. package/node_modules/has-tostringtag/.nycrc +13 -0
  578. package/node_modules/has-tostringtag/CHANGELOG.md +42 -0
  579. package/node_modules/has-tostringtag/LICENSE +21 -0
  580. package/node_modules/has-tostringtag/README.md +46 -0
  581. package/node_modules/has-tostringtag/index.d.ts +3 -0
  582. package/node_modules/has-tostringtag/index.js +8 -0
  583. package/node_modules/has-tostringtag/package.json +108 -0
  584. package/node_modules/has-tostringtag/shams.d.ts +3 -0
  585. package/node_modules/has-tostringtag/shams.js +8 -0
  586. package/node_modules/has-tostringtag/test/index.js +21 -0
  587. package/node_modules/has-tostringtag/test/shams/core-js.js +31 -0
  588. package/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js +30 -0
  589. package/node_modules/has-tostringtag/test/tests.js +15 -0
  590. package/node_modules/has-tostringtag/tsconfig.json +49 -0
  591. package/node_modules/hash-base/LICENSE +21 -0
  592. package/node_modules/hash-base/README.md +48 -0
  593. package/node_modules/hash-base/index.js +138 -0
  594. package/node_modules/hash-base/package.json +42 -0
  595. package/node_modules/hash.js/.eslintrc.js +41 -0
  596. package/node_modules/hash.js/.travis.yml +10 -0
  597. package/node_modules/hash.js/README.md +48 -0
  598. package/node_modules/hash.js/lib/hash/common.js +92 -0
  599. package/node_modules/hash.js/lib/hash/hmac.js +47 -0
  600. package/node_modules/hash.js/lib/hash/ripemd.js +146 -0
  601. package/node_modules/hash.js/lib/hash/sha/1.js +74 -0
  602. package/node_modules/hash.js/lib/hash/sha/224.js +30 -0
  603. package/node_modules/hash.js/lib/hash/sha/256.js +105 -0
  604. package/node_modules/hash.js/lib/hash/sha/384.js +35 -0
  605. package/node_modules/hash.js/lib/hash/sha/512.js +330 -0
  606. package/node_modules/hash.js/lib/hash/sha/common.js +49 -0
  607. package/node_modules/hash.js/lib/hash/sha.js +7 -0
  608. package/node_modules/hash.js/lib/hash/utils.js +278 -0
  609. package/node_modules/hash.js/lib/hash.d.ts +106 -0
  610. package/node_modules/hash.js/lib/hash.js +15 -0
  611. package/node_modules/hash.js/package.json +35 -0
  612. package/node_modules/hash.js/test/hash-test.js +140 -0
  613. package/node_modules/hash.js/test/hmac-test.js +62 -0
  614. package/node_modules/hasown/.eslintrc +5 -0
  615. package/node_modules/hasown/.github/FUNDING.yml +12 -0
  616. package/node_modules/hasown/.nycrc +13 -0
  617. package/node_modules/hasown/CHANGELOG.md +40 -0
  618. package/node_modules/hasown/LICENSE +21 -0
  619. package/node_modules/hasown/README.md +40 -0
  620. package/node_modules/hasown/index.d.ts +3 -0
  621. package/node_modules/hasown/index.js +8 -0
  622. package/node_modules/hasown/package.json +92 -0
  623. package/node_modules/hasown/tsconfig.json +6 -0
  624. package/node_modules/hmac-drbg/.npmignore +2 -0
  625. package/node_modules/hmac-drbg/.travis.yml +11 -0
  626. package/node_modules/hmac-drbg/README.md +48 -0
  627. package/node_modules/hmac-drbg/lib/hmac-drbg.js +113 -0
  628. package/node_modules/hmac-drbg/package.json +32 -0
  629. package/node_modules/hmac-drbg/test/drbg-test.js +91 -0
  630. package/node_modules/hmac-drbg/test/fixtures/hmac-drbg-nist.json +332 -0
  631. package/node_modules/https-browserify/LICENSE +20 -0
  632. package/node_modules/https-browserify/index.js +31 -0
  633. package/node_modules/https-browserify/package.json +28 -0
  634. package/node_modules/https-browserify/readme.markdown +22 -0
  635. package/node_modules/ieee754/LICENSE +11 -0
  636. package/node_modules/ieee754/README.md +51 -0
  637. package/node_modules/ieee754/index.d.ts +10 -0
  638. package/node_modules/ieee754/index.js +85 -0
  639. package/node_modules/ieee754/package.json +52 -0
  640. package/node_modules/inherits/LICENSE +16 -0
  641. package/node_modules/inherits/README.md +42 -0
  642. package/node_modules/inherits/inherits.js +9 -0
  643. package/node_modules/inherits/inherits_browser.js +27 -0
  644. package/node_modules/inherits/package.json +29 -0
  645. package/node_modules/is-arguments/.editorconfig +20 -0
  646. package/node_modules/is-arguments/.eslintrc +9 -0
  647. package/node_modules/is-arguments/.github/FUNDING.yml +12 -0
  648. package/node_modules/is-arguments/.nycrc +9 -0
  649. package/node_modules/is-arguments/CHANGELOG.md +201 -0
  650. package/node_modules/is-arguments/LICENSE +20 -0
  651. package/node_modules/is-arguments/README.md +47 -0
  652. package/node_modules/is-arguments/index.d.ts +6 -0
  653. package/node_modules/is-arguments/index.js +44 -0
  654. package/node_modules/is-arguments/package.json +105 -0
  655. package/node_modules/is-arguments/test/index.js +47 -0
  656. package/node_modules/is-arguments/tsconfig.json +9 -0
  657. package/node_modules/is-callable/.editorconfig +31 -0
  658. package/node_modules/is-callable/.eslintrc +10 -0
  659. package/node_modules/is-callable/.github/FUNDING.yml +12 -0
  660. package/node_modules/is-callable/.nycrc +9 -0
  661. package/node_modules/is-callable/CHANGELOG.md +158 -0
  662. package/node_modules/is-callable/LICENSE +22 -0
  663. package/node_modules/is-callable/README.md +83 -0
  664. package/node_modules/is-callable/index.js +101 -0
  665. package/node_modules/is-callable/package.json +106 -0
  666. package/node_modules/is-callable/test/index.js +244 -0
  667. package/node_modules/is-generator-function/.eslintrc +9 -0
  668. package/node_modules/is-generator-function/.nvmrc +1 -0
  669. package/node_modules/is-generator-function/.nycrc +9 -0
  670. package/node_modules/is-generator-function/CHANGELOG.md +237 -0
  671. package/node_modules/is-generator-function/LICENSE +20 -0
  672. package/node_modules/is-generator-function/README.md +40 -0
  673. package/node_modules/is-generator-function/index.d.ts +3 -0
  674. package/node_modules/is-generator-function/index.js +47 -0
  675. package/node_modules/is-generator-function/package.json +106 -0
  676. package/node_modules/is-generator-function/test/corejs.js +6 -0
  677. package/node_modules/is-generator-function/test/index.js +80 -0
  678. package/node_modules/is-generator-function/test/uglified.js +9 -0
  679. package/node_modules/is-generator-function/tsconfig.json +9 -0
  680. package/node_modules/is-nan/.eslintignore +1 -0
  681. package/node_modules/is-nan/.eslintrc +5 -0
  682. package/node_modules/is-nan/.github/FUNDING.yml +12 -0
  683. package/node_modules/is-nan/.nycrc +13 -0
  684. package/node_modules/is-nan/CHANGELOG.md +56 -0
  685. package/node_modules/is-nan/LICENSE +20 -0
  686. package/node_modules/is-nan/README.md +49 -0
  687. package/node_modules/is-nan/auto.js +3 -0
  688. package/node_modules/is-nan/implementation.js +7 -0
  689. package/node_modules/is-nan/index.js +20 -0
  690. package/node_modules/is-nan/package.json +77 -0
  691. package/node_modules/is-nan/polyfill.js +10 -0
  692. package/node_modules/is-nan/shim.js +16 -0
  693. package/node_modules/is-nan/test/index.js +11 -0
  694. package/node_modules/is-nan/test/shimmed.js +30 -0
  695. package/node_modules/is-nan/test/tests.js +40 -0
  696. package/node_modules/is-regex/.editorconfig +23 -0
  697. package/node_modules/is-regex/.eslintrc +10 -0
  698. package/node_modules/is-regex/.nycrc +10 -0
  699. package/node_modules/is-regex/CHANGELOG.md +233 -0
  700. package/node_modules/is-regex/LICENSE +20 -0
  701. package/node_modules/is-regex/README.md +52 -0
  702. package/node_modules/is-regex/index.d.ts +3 -0
  703. package/node_modules/is-regex/index.js +69 -0
  704. package/node_modules/is-regex/package.json +104 -0
  705. package/node_modules/is-regex/test/index.js +121 -0
  706. package/node_modules/is-regex/tsconfig.json +9 -0
  707. package/node_modules/is-typed-array/.editorconfig +20 -0
  708. package/node_modules/is-typed-array/.eslintrc +13 -0
  709. package/node_modules/is-typed-array/.github/FUNDING.yml +12 -0
  710. package/node_modules/is-typed-array/.nycrc +9 -0
  711. package/node_modules/is-typed-array/CHANGELOG.md +166 -0
  712. package/node_modules/is-typed-array/LICENSE +22 -0
  713. package/node_modules/is-typed-array/README.md +70 -0
  714. package/node_modules/is-typed-array/index.d.ts +9 -0
  715. package/node_modules/is-typed-array/index.js +8 -0
  716. package/node_modules/is-typed-array/package.json +129 -0
  717. package/node_modules/is-typed-array/test/index.js +111 -0
  718. package/node_modules/is-typed-array/tsconfig.json +6 -0
  719. package/node_modules/isarray/.npmignore +1 -0
  720. package/node_modules/isarray/.travis.yml +4 -0
  721. package/node_modules/isarray/Makefile +6 -0
  722. package/node_modules/isarray/README.md +60 -0
  723. package/node_modules/isarray/component.json +19 -0
  724. package/node_modules/isarray/index.js +5 -0
  725. package/node_modules/isarray/package.json +45 -0
  726. package/node_modules/isarray/test.js +20 -0
  727. package/node_modules/math-intrinsics/.eslintrc +16 -0
  728. package/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
  729. package/node_modules/math-intrinsics/CHANGELOG.md +24 -0
  730. package/node_modules/math-intrinsics/LICENSE +21 -0
  731. package/node_modules/math-intrinsics/README.md +50 -0
  732. package/node_modules/math-intrinsics/abs.d.ts +1 -0
  733. package/node_modules/math-intrinsics/abs.js +4 -0
  734. package/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
  735. package/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
  736. package/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
  737. package/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
  738. package/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
  739. package/node_modules/math-intrinsics/constants/maxValue.js +5 -0
  740. package/node_modules/math-intrinsics/floor.d.ts +1 -0
  741. package/node_modules/math-intrinsics/floor.js +4 -0
  742. package/node_modules/math-intrinsics/isFinite.d.ts +3 -0
  743. package/node_modules/math-intrinsics/isFinite.js +12 -0
  744. package/node_modules/math-intrinsics/isInteger.d.ts +3 -0
  745. package/node_modules/math-intrinsics/isInteger.js +16 -0
  746. package/node_modules/math-intrinsics/isNaN.d.ts +1 -0
  747. package/node_modules/math-intrinsics/isNaN.js +6 -0
  748. package/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
  749. package/node_modules/math-intrinsics/isNegativeZero.js +6 -0
  750. package/node_modules/math-intrinsics/max.d.ts +1 -0
  751. package/node_modules/math-intrinsics/max.js +4 -0
  752. package/node_modules/math-intrinsics/min.d.ts +1 -0
  753. package/node_modules/math-intrinsics/min.js +4 -0
  754. package/node_modules/math-intrinsics/mod.d.ts +3 -0
  755. package/node_modules/math-intrinsics/mod.js +9 -0
  756. package/node_modules/math-intrinsics/package.json +86 -0
  757. package/node_modules/math-intrinsics/pow.d.ts +1 -0
  758. package/node_modules/math-intrinsics/pow.js +4 -0
  759. package/node_modules/math-intrinsics/round.d.ts +1 -0
  760. package/node_modules/math-intrinsics/round.js +4 -0
  761. package/node_modules/math-intrinsics/sign.d.ts +3 -0
  762. package/node_modules/math-intrinsics/sign.js +11 -0
  763. package/node_modules/math-intrinsics/test/index.js +192 -0
  764. package/node_modules/math-intrinsics/tsconfig.json +3 -0
  765. package/node_modules/md5.js/LICENSE +21 -0
  766. package/node_modules/md5.js/README.md +29 -0
  767. package/node_modules/md5.js/index.js +146 -0
  768. package/node_modules/md5.js/package.json +38 -0
  769. package/node_modules/miller-rabin/.npmignore +2 -0
  770. package/node_modules/miller-rabin/1.js +7 -0
  771. package/node_modules/miller-rabin/README.md +26 -0
  772. package/node_modules/miller-rabin/bin/miller-rabin +29 -0
  773. package/node_modules/miller-rabin/lib/mr.js +115 -0
  774. package/node_modules/miller-rabin/node_modules/bn.js/LICENSE +19 -0
  775. package/node_modules/miller-rabin/node_modules/bn.js/README.md +200 -0
  776. package/node_modules/miller-rabin/node_modules/bn.js/lib/bn.js +3447 -0
  777. package/node_modules/miller-rabin/node_modules/bn.js/package.json +36 -0
  778. package/node_modules/miller-rabin/node_modules/bn.js/util/genCombMulTo.js +65 -0
  779. package/node_modules/miller-rabin/node_modules/bn.js/util/genCombMulTo10.js +65 -0
  780. package/node_modules/miller-rabin/package.json +32 -0
  781. package/node_modules/miller-rabin/test/api-test.js +18 -0
  782. package/node_modules/miller-rabin/test.js +25 -0
  783. package/node_modules/minimalistic-assert/LICENSE +13 -0
  784. package/node_modules/minimalistic-assert/index.js +11 -0
  785. package/node_modules/minimalistic-assert/package.json +19 -0
  786. package/node_modules/minimalistic-assert/readme.md +4 -0
  787. package/node_modules/minimalistic-crypto-utils/.npmignore +2 -0
  788. package/node_modules/minimalistic-crypto-utils/.travis.yml +11 -0
  789. package/node_modules/minimalistic-crypto-utils/README.md +47 -0
  790. package/node_modules/minimalistic-crypto-utils/lib/utils.js +58 -0
  791. package/node_modules/minimalistic-crypto-utils/package.json +27 -0
  792. package/node_modules/minimalistic-crypto-utils/test/utils-test.js +28 -0
  793. package/node_modules/object-inspect/.eslintrc +53 -0
  794. package/node_modules/object-inspect/.github/FUNDING.yml +12 -0
  795. package/node_modules/object-inspect/.nycrc +13 -0
  796. package/node_modules/object-inspect/CHANGELOG.md +424 -0
  797. package/node_modules/object-inspect/LICENSE +21 -0
  798. package/node_modules/object-inspect/example/all.js +23 -0
  799. package/node_modules/object-inspect/example/circular.js +6 -0
  800. package/node_modules/object-inspect/example/fn.js +5 -0
  801. package/node_modules/object-inspect/example/inspect.js +10 -0
  802. package/node_modules/object-inspect/index.js +544 -0
  803. package/node_modules/object-inspect/package-support.json +20 -0
  804. package/node_modules/object-inspect/package.json +105 -0
  805. package/node_modules/object-inspect/readme.markdown +84 -0
  806. package/node_modules/object-inspect/test/bigint.js +58 -0
  807. package/node_modules/object-inspect/test/browser/dom.js +15 -0
  808. package/node_modules/object-inspect/test/circular.js +16 -0
  809. package/node_modules/object-inspect/test/deep.js +12 -0
  810. package/node_modules/object-inspect/test/element.js +53 -0
  811. package/node_modules/object-inspect/test/err.js +48 -0
  812. package/node_modules/object-inspect/test/fakes.js +29 -0
  813. package/node_modules/object-inspect/test/fn.js +76 -0
  814. package/node_modules/object-inspect/test/global.js +17 -0
  815. package/node_modules/object-inspect/test/has.js +15 -0
  816. package/node_modules/object-inspect/test/holes.js +15 -0
  817. package/node_modules/object-inspect/test/indent-option.js +271 -0
  818. package/node_modules/object-inspect/test/inspect.js +139 -0
  819. package/node_modules/object-inspect/test/lowbyte.js +12 -0
  820. package/node_modules/object-inspect/test/number.js +58 -0
  821. package/node_modules/object-inspect/test/quoteStyle.js +26 -0
  822. package/node_modules/object-inspect/test/toStringTag.js +40 -0
  823. package/node_modules/object-inspect/test/undef.js +12 -0
  824. package/node_modules/object-inspect/test/values.js +261 -0
  825. package/node_modules/object-inspect/test-core-js.js +26 -0
  826. package/node_modules/object-inspect/util.inspect.js +1 -0
  827. package/node_modules/object-is/.eslintrc +5 -0
  828. package/node_modules/object-is/.nycrc +9 -0
  829. package/node_modules/object-is/CHANGELOG.md +175 -0
  830. package/node_modules/object-is/LICENSE +20 -0
  831. package/node_modules/object-is/README.md +60 -0
  832. package/node_modules/object-is/auto.js +3 -0
  833. package/node_modules/object-is/implementation.js +19 -0
  834. package/node_modules/object-is/index.js +18 -0
  835. package/node_modules/object-is/package.json +96 -0
  836. package/node_modules/object-is/polyfill.js +7 -0
  837. package/node_modules/object-is/shim.js +14 -0
  838. package/node_modules/object-is/test/implementation.js +12 -0
  839. package/node_modules/object-is/test/index.js +12 -0
  840. package/node_modules/object-is/test/shimmed.js +28 -0
  841. package/node_modules/object-is/test/tests.js +57 -0
  842. package/node_modules/object-keys/.editorconfig +13 -0
  843. package/node_modules/object-keys/.eslintrc +17 -0
  844. package/node_modules/object-keys/.travis.yml +277 -0
  845. package/node_modules/object-keys/CHANGELOG.md +232 -0
  846. package/node_modules/object-keys/LICENSE +21 -0
  847. package/node_modules/object-keys/README.md +76 -0
  848. package/node_modules/object-keys/implementation.js +122 -0
  849. package/node_modules/object-keys/index.js +32 -0
  850. package/node_modules/object-keys/isArguments.js +17 -0
  851. package/node_modules/object-keys/package.json +88 -0
  852. package/node_modules/object-keys/test/index.js +5 -0
  853. package/node_modules/object.assign/.editorconfig +20 -0
  854. package/node_modules/object.assign/.eslintrc +28 -0
  855. package/node_modules/object.assign/.github/FUNDING.yml +12 -0
  856. package/node_modules/object.assign/.nycrc +9 -0
  857. package/node_modules/object.assign/CHANGELOG.md +246 -0
  858. package/node_modules/object.assign/LICENSE +21 -0
  859. package/node_modules/object.assign/README.md +136 -0
  860. package/node_modules/object.assign/auto.js +3 -0
  861. package/node_modules/object.assign/dist/browser.js +1304 -0
  862. package/node_modules/object.assign/hasSymbols.js +43 -0
  863. package/node_modules/object.assign/implementation.js +46 -0
  864. package/node_modules/object.assign/index.js +22 -0
  865. package/node_modules/object.assign/package.json +96 -0
  866. package/node_modules/object.assign/polyfill.js +55 -0
  867. package/node_modules/object.assign/shim.js +14 -0
  868. package/node_modules/object.assign/test/implementation.js +19 -0
  869. package/node_modules/object.assign/test/index.js +17 -0
  870. package/node_modules/object.assign/test/native.js +49 -0
  871. package/node_modules/object.assign/test/ses-compat.js +12 -0
  872. package/node_modules/object.assign/test/shimmed.js +52 -0
  873. package/node_modules/object.assign/test/tests.js +232 -0
  874. package/node_modules/os-browserify/.npmignore +14 -0
  875. package/node_modules/os-browserify/LICENSE +21 -0
  876. package/node_modules/os-browserify/README.md +5 -0
  877. package/node_modules/os-browserify/browser.js +49 -0
  878. package/node_modules/os-browserify/main.js +1 -0
  879. package/node_modules/os-browserify/package.json +20 -0
  880. package/node_modules/pako/CHANGELOG.md +164 -0
  881. package/node_modules/pako/LICENSE +21 -0
  882. package/node_modules/pako/README.md +191 -0
  883. package/node_modules/pako/dist/pako.js +6818 -0
  884. package/node_modules/pako/dist/pako.min.js +1 -0
  885. package/node_modules/pako/dist/pako_deflate.js +3997 -0
  886. package/node_modules/pako/dist/pako_deflate.min.js +1 -0
  887. package/node_modules/pako/dist/pako_inflate.js +3300 -0
  888. package/node_modules/pako/dist/pako_inflate.min.js +1 -0
  889. package/node_modules/pako/index.js +14 -0
  890. package/node_modules/pako/lib/deflate.js +400 -0
  891. package/node_modules/pako/lib/inflate.js +423 -0
  892. package/node_modules/pako/lib/utils/common.js +105 -0
  893. package/node_modules/pako/lib/utils/strings.js +187 -0
  894. package/node_modules/pako/lib/zlib/README +59 -0
  895. package/node_modules/pako/lib/zlib/adler32.js +51 -0
  896. package/node_modules/pako/lib/zlib/constants.js +68 -0
  897. package/node_modules/pako/lib/zlib/crc32.js +59 -0
  898. package/node_modules/pako/lib/zlib/deflate.js +1874 -0
  899. package/node_modules/pako/lib/zlib/gzheader.js +58 -0
  900. package/node_modules/pako/lib/zlib/inffast.js +345 -0
  901. package/node_modules/pako/lib/zlib/inflate.js +1556 -0
  902. package/node_modules/pako/lib/zlib/inftrees.js +343 -0
  903. package/node_modules/pako/lib/zlib/messages.js +32 -0
  904. package/node_modules/pako/lib/zlib/trees.js +1222 -0
  905. package/node_modules/pako/lib/zlib/zstream.js +47 -0
  906. package/node_modules/pako/package.json +44 -0
  907. package/node_modules/parse-asn1/.eslintrc +34 -0
  908. package/node_modules/parse-asn1/.github/FUNDING.yml +12 -0
  909. package/node_modules/parse-asn1/CHANGELOG.md +188 -0
  910. package/node_modules/parse-asn1/LICENSE +13 -0
  911. package/node_modules/parse-asn1/README.md +8 -0
  912. package/node_modules/parse-asn1/aesid.json +13 -0
  913. package/node_modules/parse-asn1/asn1.js +123 -0
  914. package/node_modules/parse-asn1/certificate.js +89 -0
  915. package/node_modules/parse-asn1/fixProc.js +33 -0
  916. package/node_modules/parse-asn1/index.js +111 -0
  917. package/node_modules/parse-asn1/package.json +59 -0
  918. package/node_modules/path-browserify/.github/FUNDING.yml +12 -0
  919. package/node_modules/path-browserify/.travis.yml +16 -0
  920. package/node_modules/path-browserify/CHANGELOG.md +20 -0
  921. package/node_modules/path-browserify/LICENSE +20 -0
  922. package/node_modules/path-browserify/README.md +45 -0
  923. package/node_modules/path-browserify/index.js +529 -0
  924. package/node_modules/path-browserify/package.json +30 -0
  925. package/node_modules/path-browserify/security.md +10 -0
  926. package/node_modules/path-browserify/test/index.js +9 -0
  927. package/node_modules/path-browserify/test/test-path-basename.js +79 -0
  928. package/node_modules/path-browserify/test/test-path-dirname.js +58 -0
  929. package/node_modules/path-browserify/test/test-path-extname.js +96 -0
  930. package/node_modules/path-browserify/test/test-path-isabsolute.js +33 -0
  931. package/node_modules/path-browserify/test/test-path-join.js +126 -0
  932. package/node_modules/path-browserify/test/test-path-parse-format.js +235 -0
  933. package/node_modules/path-browserify/test/test-path-relative.js +66 -0
  934. package/node_modules/path-browserify/test/test-path-resolve.js +45 -0
  935. package/node_modules/path-browserify/test/test-path-zero-length-strings.js +53 -0
  936. package/node_modules/path-browserify/test/test-path.js +107 -0
  937. package/node_modules/pbkdf2/LICENSE +21 -0
  938. package/node_modules/pbkdf2/README.md +30 -0
  939. package/node_modules/pbkdf2/browser.js +2 -0
  940. package/node_modules/pbkdf2/index.js +38 -0
  941. package/node_modules/pbkdf2/lib/async.js +118 -0
  942. package/node_modules/pbkdf2/lib/default-encoding.js +12 -0
  943. package/node_modules/pbkdf2/lib/precondition.js +19 -0
  944. package/node_modules/pbkdf2/lib/sync-browser.js +105 -0
  945. package/node_modules/pbkdf2/lib/sync.js +52 -0
  946. package/node_modules/pbkdf2/lib/to-buffer.js +13 -0
  947. package/node_modules/pbkdf2/package.json +70 -0
  948. package/node_modules/possible-typed-array-names/.eslintrc +5 -0
  949. package/node_modules/possible-typed-array-names/.github/FUNDING.yml +12 -0
  950. package/node_modules/possible-typed-array-names/CHANGELOG.md +29 -0
  951. package/node_modules/possible-typed-array-names/LICENSE +21 -0
  952. package/node_modules/possible-typed-array-names/README.md +50 -0
  953. package/node_modules/possible-typed-array-names/index.d.ts +16 -0
  954. package/node_modules/possible-typed-array-names/index.js +17 -0
  955. package/node_modules/possible-typed-array-names/package.json +84 -0
  956. package/node_modules/possible-typed-array-names/test/index.js +19 -0
  957. package/node_modules/possible-typed-array-names/tsconfig.json +9 -0
  958. package/node_modules/process/.eslintrc +21 -0
  959. package/node_modules/process/LICENSE +22 -0
  960. package/node_modules/process/README.md +26 -0
  961. package/node_modules/process/browser.js +184 -0
  962. package/node_modules/process/index.js +2 -0
  963. package/node_modules/process/package.json +27 -0
  964. package/node_modules/process/test.js +199 -0
  965. package/node_modules/process-nextick-args/index.js +45 -0
  966. package/node_modules/process-nextick-args/license.md +19 -0
  967. package/node_modules/process-nextick-args/package.json +25 -0
  968. package/node_modules/process-nextick-args/readme.md +18 -0
  969. package/node_modules/public-encrypt/.travis.yml +6 -0
  970. package/node_modules/public-encrypt/LICENSE +19 -0
  971. package/node_modules/public-encrypt/browser.js +10 -0
  972. package/node_modules/public-encrypt/index.js +18 -0
  973. package/node_modules/public-encrypt/mgf.js +19 -0
  974. package/node_modules/public-encrypt/node_modules/bn.js/LICENSE +19 -0
  975. package/node_modules/public-encrypt/node_modules/bn.js/README.md +200 -0
  976. package/node_modules/public-encrypt/node_modules/bn.js/lib/bn.js +3447 -0
  977. package/node_modules/public-encrypt/node_modules/bn.js/package.json +36 -0
  978. package/node_modules/public-encrypt/node_modules/bn.js/util/genCombMulTo.js +65 -0
  979. package/node_modules/public-encrypt/node_modules/bn.js/util/genCombMulTo10.js +65 -0
  980. package/node_modules/public-encrypt/package.json +37 -0
  981. package/node_modules/public-encrypt/privateDecrypt.js +105 -0
  982. package/node_modules/public-encrypt/publicEncrypt.js +88 -0
  983. package/node_modules/public-encrypt/readme.md +8 -0
  984. package/node_modules/public-encrypt/test/1024.priv +16 -0
  985. package/node_modules/public-encrypt/test/1024.pub +6 -0
  986. package/node_modules/public-encrypt/test/ec.pass.priv +7 -0
  987. package/node_modules/public-encrypt/test/ec.priv +5 -0
  988. package/node_modules/public-encrypt/test/ec.pub +4 -0
  989. package/node_modules/public-encrypt/test/index.js +113 -0
  990. package/node_modules/public-encrypt/test/nodeTests.js +51 -0
  991. package/node_modules/public-encrypt/test/pass.1024.priv +18 -0
  992. package/node_modules/public-encrypt/test/pass.1024.pub +6 -0
  993. package/node_modules/public-encrypt/test/rsa.1024.priv +15 -0
  994. package/node_modules/public-encrypt/test/rsa.1024.pub +5 -0
  995. package/node_modules/public-encrypt/test/rsa.2028.priv +27 -0
  996. package/node_modules/public-encrypt/test/rsa.2028.pub +8 -0
  997. package/node_modules/public-encrypt/test/rsa.pass.priv +30 -0
  998. package/node_modules/public-encrypt/test/rsa.pass.pub +9 -0
  999. package/node_modules/public-encrypt/test/test_cert.pem +20 -0
  1000. package/node_modules/public-encrypt/test/test_key.pem +15 -0
  1001. package/node_modules/public-encrypt/test/test_rsa_privkey.pem +15 -0
  1002. package/node_modules/public-encrypt/test/test_rsa_privkey_encrypted.pem +18 -0
  1003. package/node_modules/public-encrypt/test/test_rsa_pubkey.pem +6 -0
  1004. package/node_modules/public-encrypt/withPublic.js +12 -0
  1005. package/node_modules/public-encrypt/xor.js +8 -0
  1006. package/node_modules/punycode/LICENSE-MIT.txt +20 -0
  1007. package/node_modules/punycode/README.md +176 -0
  1008. package/node_modules/punycode/package.json +60 -0
  1009. package/node_modules/punycode/punycode.js +533 -0
  1010. package/node_modules/qs/.editorconfig +46 -0
  1011. package/node_modules/qs/.eslintrc +39 -0
  1012. package/node_modules/qs/.github/FUNDING.yml +12 -0
  1013. package/node_modules/qs/.nycrc +13 -0
  1014. package/node_modules/qs/CHANGELOG.md +622 -0
  1015. package/node_modules/qs/LICENSE.md +29 -0
  1016. package/node_modules/qs/README.md +733 -0
  1017. package/node_modules/qs/dist/qs.js +141 -0
  1018. package/node_modules/qs/lib/formats.js +23 -0
  1019. package/node_modules/qs/lib/index.js +11 -0
  1020. package/node_modules/qs/lib/parse.js +328 -0
  1021. package/node_modules/qs/lib/stringify.js +356 -0
  1022. package/node_modules/qs/lib/utils.js +268 -0
  1023. package/node_modules/qs/package.json +93 -0
  1024. package/node_modules/qs/test/empty-keys-cases.js +267 -0
  1025. package/node_modules/qs/test/parse.js +1276 -0
  1026. package/node_modules/qs/test/stringify.js +1306 -0
  1027. package/node_modules/qs/test/utils.js +262 -0
  1028. package/node_modules/querystring-es3/.travis.yml +4 -0
  1029. package/node_modules/querystring-es3/History.md +20 -0
  1030. package/node_modules/querystring-es3/License.md +19 -0
  1031. package/node_modules/querystring-es3/Readme.md +15 -0
  1032. package/node_modules/querystring-es3/decode.js +84 -0
  1033. package/node_modules/querystring-es3/encode.js +85 -0
  1034. package/node_modules/querystring-es3/index.js +4 -0
  1035. package/node_modules/querystring-es3/package.json +65 -0
  1036. package/node_modules/querystring-es3/test/common-index.js +3 -0
  1037. package/node_modules/querystring-es3/test/index.js +210 -0
  1038. package/node_modules/querystring-es3/test/tap-index.js +3 -0
  1039. package/node_modules/randombytes/.travis.yml +15 -0
  1040. package/node_modules/randombytes/.zuul.yml +1 -0
  1041. package/node_modules/randombytes/LICENSE +21 -0
  1042. package/node_modules/randombytes/README.md +14 -0
  1043. package/node_modules/randombytes/browser.js +50 -0
  1044. package/node_modules/randombytes/index.js +1 -0
  1045. package/node_modules/randombytes/package.json +36 -0
  1046. package/node_modules/randombytes/test.js +81 -0
  1047. package/node_modules/randomfill/.travis.yml +15 -0
  1048. package/node_modules/randomfill/.zuul.yml +1 -0
  1049. package/node_modules/randomfill/LICENSE +21 -0
  1050. package/node_modules/randomfill/README.md +15 -0
  1051. package/node_modules/randomfill/browser.js +108 -0
  1052. package/node_modules/randomfill/index.js +7 -0
  1053. package/node_modules/randomfill/package.json +37 -0
  1054. package/node_modules/randomfill/test.js +28 -0
  1055. package/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  1056. package/node_modules/readable-stream/GOVERNANCE.md +136 -0
  1057. package/node_modules/readable-stream/LICENSE +47 -0
  1058. package/node_modules/readable-stream/README.md +106 -0
  1059. package/node_modules/readable-stream/errors-browser.js +127 -0
  1060. package/node_modules/readable-stream/errors.js +116 -0
  1061. package/node_modules/readable-stream/experimentalWarning.js +17 -0
  1062. package/node_modules/readable-stream/lib/_stream_duplex.js +126 -0
  1063. package/node_modules/readable-stream/lib/_stream_passthrough.js +37 -0
  1064. package/node_modules/readable-stream/lib/_stream_readable.js +1027 -0
  1065. package/node_modules/readable-stream/lib/_stream_transform.js +190 -0
  1066. package/node_modules/readable-stream/lib/_stream_writable.js +641 -0
  1067. package/node_modules/readable-stream/lib/internal/streams/async_iterator.js +180 -0
  1068. package/node_modules/readable-stream/lib/internal/streams/buffer_list.js +183 -0
  1069. package/node_modules/readable-stream/lib/internal/streams/destroy.js +96 -0
  1070. package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +86 -0
  1071. package/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -0
  1072. package/node_modules/readable-stream/lib/internal/streams/from.js +52 -0
  1073. package/node_modules/readable-stream/lib/internal/streams/pipeline.js +86 -0
  1074. package/node_modules/readable-stream/lib/internal/streams/state.js +22 -0
  1075. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  1076. package/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  1077. package/node_modules/readable-stream/package.json +68 -0
  1078. package/node_modules/readable-stream/readable-browser.js +9 -0
  1079. package/node_modules/readable-stream/readable.js +16 -0
  1080. package/node_modules/ripemd160/CHANGELOG.md +72 -0
  1081. package/node_modules/ripemd160/LICENSE +21 -0
  1082. package/node_modules/ripemd160/README.md +27 -0
  1083. package/node_modules/ripemd160/index.js +163 -0
  1084. package/node_modules/ripemd160/package.json +37 -0
  1085. package/node_modules/safe-buffer/LICENSE +21 -0
  1086. package/node_modules/safe-buffer/README.md +584 -0
  1087. package/node_modules/safe-buffer/index.d.ts +187 -0
  1088. package/node_modules/safe-buffer/index.js +65 -0
  1089. package/node_modules/safe-buffer/package.json +51 -0
  1090. package/node_modules/safe-regex-test/.eslintrc +9 -0
  1091. package/node_modules/safe-regex-test/.github/FUNDING.yml +12 -0
  1092. package/node_modules/safe-regex-test/.nycrc +13 -0
  1093. package/node_modules/safe-regex-test/CHANGELOG.md +55 -0
  1094. package/node_modules/safe-regex-test/LICENSE +21 -0
  1095. package/node_modules/safe-regex-test/README.md +46 -0
  1096. package/node_modules/safe-regex-test/index.d.ts +3 -0
  1097. package/node_modules/safe-regex-test/index.js +17 -0
  1098. package/node_modules/safe-regex-test/package.json +87 -0
  1099. package/node_modules/safe-regex-test/test/index.js +41 -0
  1100. package/node_modules/safe-regex-test/tsconfig.json +9 -0
  1101. package/node_modules/set-function-length/.eslintrc +27 -0
  1102. package/node_modules/set-function-length/.github/FUNDING.yml +12 -0
  1103. package/node_modules/set-function-length/.nycrc +13 -0
  1104. package/node_modules/set-function-length/CHANGELOG.md +70 -0
  1105. package/node_modules/set-function-length/LICENSE +21 -0
  1106. package/node_modules/set-function-length/README.md +56 -0
  1107. package/node_modules/set-function-length/env.d.ts +9 -0
  1108. package/node_modules/set-function-length/env.js +25 -0
  1109. package/node_modules/set-function-length/index.d.ts +7 -0
  1110. package/node_modules/set-function-length/index.js +42 -0
  1111. package/node_modules/set-function-length/package.json +102 -0
  1112. package/node_modules/set-function-length/tsconfig.json +9 -0
  1113. package/node_modules/setimmediate/LICENSE.txt +20 -0
  1114. package/node_modules/setimmediate/package.json +30 -0
  1115. package/node_modules/setimmediate/setImmediate.js +186 -0
  1116. package/node_modules/sha.js/.travis.yml +17 -0
  1117. package/node_modules/sha.js/LICENSE +49 -0
  1118. package/node_modules/sha.js/README.md +44 -0
  1119. package/node_modules/sha.js/bin.js +41 -0
  1120. package/node_modules/sha.js/hash.js +81 -0
  1121. package/node_modules/sha.js/index.js +15 -0
  1122. package/node_modules/sha.js/package.json +30 -0
  1123. package/node_modules/sha.js/sha.js +94 -0
  1124. package/node_modules/sha.js/sha1.js +99 -0
  1125. package/node_modules/sha.js/sha224.js +53 -0
  1126. package/node_modules/sha.js/sha256.js +135 -0
  1127. package/node_modules/sha.js/sha384.js +57 -0
  1128. package/node_modules/sha.js/sha512.js +260 -0
  1129. package/node_modules/sha.js/test/hash.js +75 -0
  1130. package/node_modules/sha.js/test/test.js +100 -0
  1131. package/node_modules/sha.js/test/vectors.js +72 -0
  1132. package/node_modules/side-channel/.editorconfig +9 -0
  1133. package/node_modules/side-channel/.eslintrc +12 -0
  1134. package/node_modules/side-channel/.github/FUNDING.yml +12 -0
  1135. package/node_modules/side-channel/.nycrc +13 -0
  1136. package/node_modules/side-channel/CHANGELOG.md +110 -0
  1137. package/node_modules/side-channel/LICENSE +21 -0
  1138. package/node_modules/side-channel/README.md +61 -0
  1139. package/node_modules/side-channel/index.d.ts +14 -0
  1140. package/node_modules/side-channel/index.js +43 -0
  1141. package/node_modules/side-channel/package.json +85 -0
  1142. package/node_modules/side-channel/test/index.js +104 -0
  1143. package/node_modules/side-channel/tsconfig.json +9 -0
  1144. package/node_modules/side-channel-list/.editorconfig +9 -0
  1145. package/node_modules/side-channel-list/.eslintrc +11 -0
  1146. package/node_modules/side-channel-list/.github/FUNDING.yml +12 -0
  1147. package/node_modules/side-channel-list/.nycrc +13 -0
  1148. package/node_modules/side-channel-list/CHANGELOG.md +15 -0
  1149. package/node_modules/side-channel-list/LICENSE +21 -0
  1150. package/node_modules/side-channel-list/README.md +62 -0
  1151. package/node_modules/side-channel-list/index.d.ts +13 -0
  1152. package/node_modules/side-channel-list/index.js +113 -0
  1153. package/node_modules/side-channel-list/list.d.ts +14 -0
  1154. package/node_modules/side-channel-list/package.json +77 -0
  1155. package/node_modules/side-channel-list/test/index.js +104 -0
  1156. package/node_modules/side-channel-list/tsconfig.json +9 -0
  1157. package/node_modules/side-channel-map/.editorconfig +9 -0
  1158. package/node_modules/side-channel-map/.eslintrc +11 -0
  1159. package/node_modules/side-channel-map/.github/FUNDING.yml +12 -0
  1160. package/node_modules/side-channel-map/.nycrc +13 -0
  1161. package/node_modules/side-channel-map/CHANGELOG.md +22 -0
  1162. package/node_modules/side-channel-map/LICENSE +21 -0
  1163. package/node_modules/side-channel-map/README.md +62 -0
  1164. package/node_modules/side-channel-map/index.d.ts +15 -0
  1165. package/node_modules/side-channel-map/index.js +68 -0
  1166. package/node_modules/side-channel-map/package.json +80 -0
  1167. package/node_modules/side-channel-map/test/index.js +114 -0
  1168. package/node_modules/side-channel-map/tsconfig.json +9 -0
  1169. package/node_modules/side-channel-weakmap/.editorconfig +9 -0
  1170. package/node_modules/side-channel-weakmap/.eslintrc +12 -0
  1171. package/node_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
  1172. package/node_modules/side-channel-weakmap/.nycrc +13 -0
  1173. package/node_modules/side-channel-weakmap/CHANGELOG.md +28 -0
  1174. package/node_modules/side-channel-weakmap/LICENSE +21 -0
  1175. package/node_modules/side-channel-weakmap/README.md +62 -0
  1176. package/node_modules/side-channel-weakmap/index.d.ts +15 -0
  1177. package/node_modules/side-channel-weakmap/index.js +84 -0
  1178. package/node_modules/side-channel-weakmap/package.json +87 -0
  1179. package/node_modules/side-channel-weakmap/test/index.js +114 -0
  1180. package/node_modules/side-channel-weakmap/tsconfig.json +9 -0
  1181. package/node_modules/stream-browserify/.airtap.yml +20 -0
  1182. package/node_modules/stream-browserify/.github/FUNDING.yml +12 -0
  1183. package/node_modules/stream-browserify/.travis.yml +24 -0
  1184. package/node_modules/stream-browserify/CHANGELOG.md +8 -0
  1185. package/node_modules/stream-browserify/LICENSE +20 -0
  1186. package/node_modules/stream-browserify/index.js +129 -0
  1187. package/node_modules/stream-browserify/package.json +54 -0
  1188. package/node_modules/stream-browserify/readme.markdown +32 -0
  1189. package/node_modules/stream-browserify/security.md +10 -0
  1190. package/node_modules/stream-browserify/test/buf.js +33 -0
  1191. package/node_modules/stream-browserify/test/index.js +2 -0
  1192. package/node_modules/stream-browserify/test/pipeline.js +38 -0
  1193. package/node_modules/stream-browserify/test/use-stream.js +4 -0
  1194. package/node_modules/stream-http/LICENSE +24 -0
  1195. package/node_modules/stream-http/README.md +134 -0
  1196. package/node_modules/stream-http/index.js +85 -0
  1197. package/node_modules/stream-http/lib/capability.js +59 -0
  1198. package/node_modules/stream-http/lib/request.js +352 -0
  1199. package/node_modules/stream-http/lib/response.js +211 -0
  1200. package/node_modules/stream-http/package.json +47 -0
  1201. package/node_modules/string_decoder/LICENSE +48 -0
  1202. package/node_modules/string_decoder/README.md +47 -0
  1203. package/node_modules/string_decoder/lib/string_decoder.js +296 -0
  1204. package/node_modules/string_decoder/package.json +34 -0
  1205. package/node_modules/timers-browserify/CHANGELOG.md +153 -0
  1206. package/node_modules/timers-browserify/LICENSE.md +46 -0
  1207. package/node_modules/timers-browserify/README.md +40 -0
  1208. package/node_modules/timers-browserify/main.js +63 -0
  1209. package/node_modules/timers-browserify/package.json +53 -0
  1210. package/node_modules/tty-browserify/LICENSE +18 -0
  1211. package/node_modules/tty-browserify/index.js +11 -0
  1212. package/node_modules/tty-browserify/package.json +29 -0
  1213. package/node_modules/tty-browserify/readme.markdown +1 -0
  1214. package/node_modules/url/.eslintignore +1 -0
  1215. package/node_modules/url/.eslintrc +38 -0
  1216. package/node_modules/url/.nycrc +9 -0
  1217. package/node_modules/url/LICENSE +21 -0
  1218. package/node_modules/url/README.md +108 -0
  1219. package/node_modules/url/package.json +42 -0
  1220. package/node_modules/url/test/index.js +2080 -0
  1221. package/node_modules/url/test/mocha.opts +2 -0
  1222. package/node_modules/url/url.js +776 -0
  1223. package/node_modules/util/LICENSE +18 -0
  1224. package/node_modules/util/README.md +48 -0
  1225. package/node_modules/util/package.json +50 -0
  1226. package/node_modules/util/support/isBuffer.js +3 -0
  1227. package/node_modules/util/support/isBufferBrowser.js +6 -0
  1228. package/node_modules/util/support/types.js +334 -0
  1229. package/node_modules/util/util.js +715 -0
  1230. package/node_modules/util-deprecate/History.md +16 -0
  1231. package/node_modules/util-deprecate/LICENSE +24 -0
  1232. package/node_modules/util-deprecate/README.md +53 -0
  1233. package/node_modules/util-deprecate/browser.js +67 -0
  1234. package/node_modules/util-deprecate/node.js +6 -0
  1235. package/node_modules/util-deprecate/package.json +27 -0
  1236. package/node_modules/vm-browserify/.github/FUNDING.yml +12 -0
  1237. package/node_modules/vm-browserify/.travis.yml +8 -0
  1238. package/node_modules/vm-browserify/CHANGELOG.md +23 -0
  1239. package/node_modules/vm-browserify/LICENSE +18 -0
  1240. package/node_modules/vm-browserify/example/run/bundle.js +160 -0
  1241. package/node_modules/vm-browserify/example/run/entry.js +6 -0
  1242. package/node_modules/vm-browserify/example/run/index.html +8 -0
  1243. package/node_modules/vm-browserify/example/run/server.js +6 -0
  1244. package/node_modules/vm-browserify/index.js +149 -0
  1245. package/node_modules/vm-browserify/package.json +30 -0
  1246. package/node_modules/vm-browserify/readme.markdown +66 -0
  1247. package/node_modules/vm-browserify/security.md +10 -0
  1248. package/node_modules/vm-browserify/test/vm.js +35 -0
  1249. package/node_modules/which-typed-array/.editorconfig +20 -0
  1250. package/node_modules/which-typed-array/.eslintrc +10 -0
  1251. package/node_modules/which-typed-array/.github/FUNDING.yml +12 -0
  1252. package/node_modules/which-typed-array/.nycrc +13 -0
  1253. package/node_modules/which-typed-array/CHANGELOG.md +261 -0
  1254. package/node_modules/which-typed-array/LICENSE +22 -0
  1255. package/node_modules/which-typed-array/README.md +70 -0
  1256. package/node_modules/which-typed-array/index.d.ts +62 -0
  1257. package/node_modules/which-typed-array/index.js +117 -0
  1258. package/node_modules/which-typed-array/package.json +130 -0
  1259. package/node_modules/which-typed-array/test/index.js +105 -0
  1260. package/node_modules/which-typed-array/tsconfig.json +9 -0
  1261. package/node_modules/xtend/.jshintrc +30 -0
  1262. package/node_modules/xtend/LICENSE +20 -0
  1263. package/node_modules/xtend/README.md +32 -0
  1264. package/node_modules/xtend/immutable.js +19 -0
  1265. package/node_modules/xtend/mutable.js +17 -0
  1266. package/node_modules/xtend/package.json +55 -0
  1267. package/node_modules/xtend/test.js +103 -0
  1268. package/package.json +3 -4
@@ -0,0 +1,3447 @@
1
+ (function (module, exports) {
2
+ 'use strict';
3
+
4
+ // Utils
5
+ function assert (val, msg) {
6
+ if (!val) throw new Error(msg || 'Assertion failed');
7
+ }
8
+
9
+ // Could use `inherits` module, but don't want to move from single file
10
+ // architecture yet.
11
+ function inherits (ctor, superCtor) {
12
+ ctor.super_ = superCtor;
13
+ var TempCtor = function () {};
14
+ TempCtor.prototype = superCtor.prototype;
15
+ ctor.prototype = new TempCtor();
16
+ ctor.prototype.constructor = ctor;
17
+ }
18
+
19
+ // BN
20
+
21
+ function BN (number, base, endian) {
22
+ if (BN.isBN(number)) {
23
+ return number;
24
+ }
25
+
26
+ this.negative = 0;
27
+ this.words = null;
28
+ this.length = 0;
29
+
30
+ // Reduction context
31
+ this.red = null;
32
+
33
+ if (number !== null) {
34
+ if (base === 'le' || base === 'be') {
35
+ endian = base;
36
+ base = 10;
37
+ }
38
+
39
+ this._init(number || 0, base || 10, endian || 'be');
40
+ }
41
+ }
42
+ if (typeof module === 'object') {
43
+ module.exports = BN;
44
+ } else {
45
+ exports.BN = BN;
46
+ }
47
+
48
+ BN.BN = BN;
49
+ BN.wordSize = 26;
50
+
51
+ var Buffer;
52
+ try {
53
+ if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {
54
+ Buffer = window.Buffer;
55
+ } else {
56
+ Buffer = require('buffer').Buffer;
57
+ }
58
+ } catch (e) {
59
+ }
60
+
61
+ BN.isBN = function isBN (num) {
62
+ if (num instanceof BN) {
63
+ return true;
64
+ }
65
+
66
+ return num !== null && typeof num === 'object' &&
67
+ num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
68
+ };
69
+
70
+ BN.max = function max (left, right) {
71
+ if (left.cmp(right) > 0) return left;
72
+ return right;
73
+ };
74
+
75
+ BN.min = function min (left, right) {
76
+ if (left.cmp(right) < 0) return left;
77
+ return right;
78
+ };
79
+
80
+ BN.prototype._init = function init (number, base, endian) {
81
+ if (typeof number === 'number') {
82
+ return this._initNumber(number, base, endian);
83
+ }
84
+
85
+ if (typeof number === 'object') {
86
+ return this._initArray(number, base, endian);
87
+ }
88
+
89
+ if (base === 'hex') {
90
+ base = 16;
91
+ }
92
+ assert(base === (base | 0) && base >= 2 && base <= 36);
93
+
94
+ number = number.toString().replace(/\s+/g, '');
95
+ var start = 0;
96
+ if (number[0] === '-') {
97
+ start++;
98
+ this.negative = 1;
99
+ }
100
+
101
+ if (start < number.length) {
102
+ if (base === 16) {
103
+ this._parseHex(number, start, endian);
104
+ } else {
105
+ this._parseBase(number, base, start);
106
+ if (endian === 'le') {
107
+ this._initArray(this.toArray(), base, endian);
108
+ }
109
+ }
110
+ }
111
+ };
112
+
113
+ BN.prototype._initNumber = function _initNumber (number, base, endian) {
114
+ if (number < 0) {
115
+ this.negative = 1;
116
+ number = -number;
117
+ }
118
+ if (number < 0x4000000) {
119
+ this.words = [ number & 0x3ffffff ];
120
+ this.length = 1;
121
+ } else if (number < 0x10000000000000) {
122
+ this.words = [
123
+ number & 0x3ffffff,
124
+ (number / 0x4000000) & 0x3ffffff
125
+ ];
126
+ this.length = 2;
127
+ } else {
128
+ assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
129
+ this.words = [
130
+ number & 0x3ffffff,
131
+ (number / 0x4000000) & 0x3ffffff,
132
+ 1
133
+ ];
134
+ this.length = 3;
135
+ }
136
+
137
+ if (endian !== 'le') return;
138
+
139
+ // Reverse the bytes
140
+ this._initArray(this.toArray(), base, endian);
141
+ };
142
+
143
+ BN.prototype._initArray = function _initArray (number, base, endian) {
144
+ // Perhaps a Uint8Array
145
+ assert(typeof number.length === 'number');
146
+ if (number.length <= 0) {
147
+ this.words = [ 0 ];
148
+ this.length = 1;
149
+ return this;
150
+ }
151
+
152
+ this.length = Math.ceil(number.length / 3);
153
+ this.words = new Array(this.length);
154
+ for (var i = 0; i < this.length; i++) {
155
+ this.words[i] = 0;
156
+ }
157
+
158
+ var j, w;
159
+ var off = 0;
160
+ if (endian === 'be') {
161
+ for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
162
+ w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
163
+ this.words[j] |= (w << off) & 0x3ffffff;
164
+ this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
165
+ off += 24;
166
+ if (off >= 26) {
167
+ off -= 26;
168
+ j++;
169
+ }
170
+ }
171
+ } else if (endian === 'le') {
172
+ for (i = 0, j = 0; i < number.length; i += 3) {
173
+ w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
174
+ this.words[j] |= (w << off) & 0x3ffffff;
175
+ this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
176
+ off += 24;
177
+ if (off >= 26) {
178
+ off -= 26;
179
+ j++;
180
+ }
181
+ }
182
+ }
183
+ return this.strip();
184
+ };
185
+
186
+ function parseHex4Bits (string, index) {
187
+ var c = string.charCodeAt(index);
188
+ // 'A' - 'F'
189
+ if (c >= 65 && c <= 70) {
190
+ return c - 55;
191
+ // 'a' - 'f'
192
+ } else if (c >= 97 && c <= 102) {
193
+ return c - 87;
194
+ // '0' - '9'
195
+ } else {
196
+ return (c - 48) & 0xf;
197
+ }
198
+ }
199
+
200
+ function parseHexByte (string, lowerBound, index) {
201
+ var r = parseHex4Bits(string, index);
202
+ if (index - 1 >= lowerBound) {
203
+ r |= parseHex4Bits(string, index - 1) << 4;
204
+ }
205
+ return r;
206
+ }
207
+
208
+ BN.prototype._parseHex = function _parseHex (number, start, endian) {
209
+ // Create possibly bigger array to ensure that it fits the number
210
+ this.length = Math.ceil((number.length - start) / 6);
211
+ this.words = new Array(this.length);
212
+ for (var i = 0; i < this.length; i++) {
213
+ this.words[i] = 0;
214
+ }
215
+
216
+ // 24-bits chunks
217
+ var off = 0;
218
+ var j = 0;
219
+
220
+ var w;
221
+ if (endian === 'be') {
222
+ for (i = number.length - 1; i >= start; i -= 2) {
223
+ w = parseHexByte(number, start, i) << off;
224
+ this.words[j] |= w & 0x3ffffff;
225
+ if (off >= 18) {
226
+ off -= 18;
227
+ j += 1;
228
+ this.words[j] |= w >>> 26;
229
+ } else {
230
+ off += 8;
231
+ }
232
+ }
233
+ } else {
234
+ var parseLength = number.length - start;
235
+ for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
236
+ w = parseHexByte(number, start, i) << off;
237
+ this.words[j] |= w & 0x3ffffff;
238
+ if (off >= 18) {
239
+ off -= 18;
240
+ j += 1;
241
+ this.words[j] |= w >>> 26;
242
+ } else {
243
+ off += 8;
244
+ }
245
+ }
246
+ }
247
+
248
+ this.strip();
249
+ };
250
+
251
+ function parseBase (str, start, end, mul) {
252
+ var r = 0;
253
+ var len = Math.min(str.length, end);
254
+ for (var i = start; i < len; i++) {
255
+ var c = str.charCodeAt(i) - 48;
256
+
257
+ r *= mul;
258
+
259
+ // 'a'
260
+ if (c >= 49) {
261
+ r += c - 49 + 0xa;
262
+
263
+ // 'A'
264
+ } else if (c >= 17) {
265
+ r += c - 17 + 0xa;
266
+
267
+ // '0' - '9'
268
+ } else {
269
+ r += c;
270
+ }
271
+ }
272
+ return r;
273
+ }
274
+
275
+ BN.prototype._parseBase = function _parseBase (number, base, start) {
276
+ // Initialize as zero
277
+ this.words = [ 0 ];
278
+ this.length = 1;
279
+
280
+ // Find length of limb in base
281
+ for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
282
+ limbLen++;
283
+ }
284
+ limbLen--;
285
+ limbPow = (limbPow / base) | 0;
286
+
287
+ var total = number.length - start;
288
+ var mod = total % limbLen;
289
+ var end = Math.min(total, total - mod) + start;
290
+
291
+ var word = 0;
292
+ for (var i = start; i < end; i += limbLen) {
293
+ word = parseBase(number, i, i + limbLen, base);
294
+
295
+ this.imuln(limbPow);
296
+ if (this.words[0] + word < 0x4000000) {
297
+ this.words[0] += word;
298
+ } else {
299
+ this._iaddn(word);
300
+ }
301
+ }
302
+
303
+ if (mod !== 0) {
304
+ var pow = 1;
305
+ word = parseBase(number, i, number.length, base);
306
+
307
+ for (i = 0; i < mod; i++) {
308
+ pow *= base;
309
+ }
310
+
311
+ this.imuln(pow);
312
+ if (this.words[0] + word < 0x4000000) {
313
+ this.words[0] += word;
314
+ } else {
315
+ this._iaddn(word);
316
+ }
317
+ }
318
+
319
+ this.strip();
320
+ };
321
+
322
+ BN.prototype.copy = function copy (dest) {
323
+ dest.words = new Array(this.length);
324
+ for (var i = 0; i < this.length; i++) {
325
+ dest.words[i] = this.words[i];
326
+ }
327
+ dest.length = this.length;
328
+ dest.negative = this.negative;
329
+ dest.red = this.red;
330
+ };
331
+
332
+ BN.prototype.clone = function clone () {
333
+ var r = new BN(null);
334
+ this.copy(r);
335
+ return r;
336
+ };
337
+
338
+ BN.prototype._expand = function _expand (size) {
339
+ while (this.length < size) {
340
+ this.words[this.length++] = 0;
341
+ }
342
+ return this;
343
+ };
344
+
345
+ // Remove leading `0` from `this`
346
+ BN.prototype.strip = function strip () {
347
+ while (this.length > 1 && this.words[this.length - 1] === 0) {
348
+ this.length--;
349
+ }
350
+ return this._normSign();
351
+ };
352
+
353
+ BN.prototype._normSign = function _normSign () {
354
+ // -0 = 0
355
+ if (this.length === 1 && this.words[0] === 0) {
356
+ this.negative = 0;
357
+ }
358
+ return this;
359
+ };
360
+
361
+ BN.prototype.inspect = function inspect () {
362
+ return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
363
+ };
364
+
365
+ /*
366
+
367
+ var zeros = [];
368
+ var groupSizes = [];
369
+ var groupBases = [];
370
+
371
+ var s = '';
372
+ var i = -1;
373
+ while (++i < BN.wordSize) {
374
+ zeros[i] = s;
375
+ s += '0';
376
+ }
377
+ groupSizes[0] = 0;
378
+ groupSizes[1] = 0;
379
+ groupBases[0] = 0;
380
+ groupBases[1] = 0;
381
+ var base = 2 - 1;
382
+ while (++base < 36 + 1) {
383
+ var groupSize = 0;
384
+ var groupBase = 1;
385
+ while (groupBase < (1 << BN.wordSize) / base) {
386
+ groupBase *= base;
387
+ groupSize += 1;
388
+ }
389
+ groupSizes[base] = groupSize;
390
+ groupBases[base] = groupBase;
391
+ }
392
+
393
+ */
394
+
395
+ var zeros = [
396
+ '',
397
+ '0',
398
+ '00',
399
+ '000',
400
+ '0000',
401
+ '00000',
402
+ '000000',
403
+ '0000000',
404
+ '00000000',
405
+ '000000000',
406
+ '0000000000',
407
+ '00000000000',
408
+ '000000000000',
409
+ '0000000000000',
410
+ '00000000000000',
411
+ '000000000000000',
412
+ '0000000000000000',
413
+ '00000000000000000',
414
+ '000000000000000000',
415
+ '0000000000000000000',
416
+ '00000000000000000000',
417
+ '000000000000000000000',
418
+ '0000000000000000000000',
419
+ '00000000000000000000000',
420
+ '000000000000000000000000',
421
+ '0000000000000000000000000'
422
+ ];
423
+
424
+ var groupSizes = [
425
+ 0, 0,
426
+ 25, 16, 12, 11, 10, 9, 8,
427
+ 8, 7, 7, 7, 7, 6, 6,
428
+ 6, 6, 6, 6, 6, 5, 5,
429
+ 5, 5, 5, 5, 5, 5, 5,
430
+ 5, 5, 5, 5, 5, 5, 5
431
+ ];
432
+
433
+ var groupBases = [
434
+ 0, 0,
435
+ 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
436
+ 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
437
+ 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
438
+ 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
439
+ 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
440
+ ];
441
+
442
+ BN.prototype.toString = function toString (base, padding) {
443
+ base = base || 10;
444
+ padding = padding | 0 || 1;
445
+
446
+ var out;
447
+ if (base === 16 || base === 'hex') {
448
+ out = '';
449
+ var off = 0;
450
+ var carry = 0;
451
+ for (var i = 0; i < this.length; i++) {
452
+ var w = this.words[i];
453
+ var word = (((w << off) | carry) & 0xffffff).toString(16);
454
+ carry = (w >>> (24 - off)) & 0xffffff;
455
+ off += 2;
456
+ if (off >= 26) {
457
+ off -= 26;
458
+ i--;
459
+ }
460
+ if (carry !== 0 || i !== this.length - 1) {
461
+ out = zeros[6 - word.length] + word + out;
462
+ } else {
463
+ out = word + out;
464
+ }
465
+ }
466
+ if (carry !== 0) {
467
+ out = carry.toString(16) + out;
468
+ }
469
+ while (out.length % padding !== 0) {
470
+ out = '0' + out;
471
+ }
472
+ if (this.negative !== 0) {
473
+ out = '-' + out;
474
+ }
475
+ return out;
476
+ }
477
+
478
+ if (base === (base | 0) && base >= 2 && base <= 36) {
479
+ // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
480
+ var groupSize = groupSizes[base];
481
+ // var groupBase = Math.pow(base, groupSize);
482
+ var groupBase = groupBases[base];
483
+ out = '';
484
+ var c = this.clone();
485
+ c.negative = 0;
486
+ while (!c.isZero()) {
487
+ var r = c.modn(groupBase).toString(base);
488
+ c = c.idivn(groupBase);
489
+
490
+ if (!c.isZero()) {
491
+ out = zeros[groupSize - r.length] + r + out;
492
+ } else {
493
+ out = r + out;
494
+ }
495
+ }
496
+ if (this.isZero()) {
497
+ out = '0' + out;
498
+ }
499
+ while (out.length % padding !== 0) {
500
+ out = '0' + out;
501
+ }
502
+ if (this.negative !== 0) {
503
+ out = '-' + out;
504
+ }
505
+ return out;
506
+ }
507
+
508
+ assert(false, 'Base should be between 2 and 36');
509
+ };
510
+
511
+ BN.prototype.toNumber = function toNumber () {
512
+ var ret = this.words[0];
513
+ if (this.length === 2) {
514
+ ret += this.words[1] * 0x4000000;
515
+ } else if (this.length === 3 && this.words[2] === 0x01) {
516
+ // NOTE: at this stage it is known that the top bit is set
517
+ ret += 0x10000000000000 + (this.words[1] * 0x4000000);
518
+ } else if (this.length > 2) {
519
+ assert(false, 'Number can only safely store up to 53 bits');
520
+ }
521
+ return (this.negative !== 0) ? -ret : ret;
522
+ };
523
+
524
+ BN.prototype.toJSON = function toJSON () {
525
+ return this.toString(16);
526
+ };
527
+
528
+ BN.prototype.toBuffer = function toBuffer (endian, length) {
529
+ assert(typeof Buffer !== 'undefined');
530
+ return this.toArrayLike(Buffer, endian, length);
531
+ };
532
+
533
+ BN.prototype.toArray = function toArray (endian, length) {
534
+ return this.toArrayLike(Array, endian, length);
535
+ };
536
+
537
+ BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
538
+ var byteLength = this.byteLength();
539
+ var reqLength = length || Math.max(1, byteLength);
540
+ assert(byteLength <= reqLength, 'byte array longer than desired length');
541
+ assert(reqLength > 0, 'Requested array length <= 0');
542
+
543
+ this.strip();
544
+ var littleEndian = endian === 'le';
545
+ var res = new ArrayType(reqLength);
546
+
547
+ var b, i;
548
+ var q = this.clone();
549
+ if (!littleEndian) {
550
+ // Assume big-endian
551
+ for (i = 0; i < reqLength - byteLength; i++) {
552
+ res[i] = 0;
553
+ }
554
+
555
+ for (i = 0; !q.isZero(); i++) {
556
+ b = q.andln(0xff);
557
+ q.iushrn(8);
558
+
559
+ res[reqLength - i - 1] = b;
560
+ }
561
+ } else {
562
+ for (i = 0; !q.isZero(); i++) {
563
+ b = q.andln(0xff);
564
+ q.iushrn(8);
565
+
566
+ res[i] = b;
567
+ }
568
+
569
+ for (; i < reqLength; i++) {
570
+ res[i] = 0;
571
+ }
572
+ }
573
+
574
+ return res;
575
+ };
576
+
577
+ if (Math.clz32) {
578
+ BN.prototype._countBits = function _countBits (w) {
579
+ return 32 - Math.clz32(w);
580
+ };
581
+ } else {
582
+ BN.prototype._countBits = function _countBits (w) {
583
+ var t = w;
584
+ var r = 0;
585
+ if (t >= 0x1000) {
586
+ r += 13;
587
+ t >>>= 13;
588
+ }
589
+ if (t >= 0x40) {
590
+ r += 7;
591
+ t >>>= 7;
592
+ }
593
+ if (t >= 0x8) {
594
+ r += 4;
595
+ t >>>= 4;
596
+ }
597
+ if (t >= 0x02) {
598
+ r += 2;
599
+ t >>>= 2;
600
+ }
601
+ return r + t;
602
+ };
603
+ }
604
+
605
+ BN.prototype._zeroBits = function _zeroBits (w) {
606
+ // Short-cut
607
+ if (w === 0) return 26;
608
+
609
+ var t = w;
610
+ var r = 0;
611
+ if ((t & 0x1fff) === 0) {
612
+ r += 13;
613
+ t >>>= 13;
614
+ }
615
+ if ((t & 0x7f) === 0) {
616
+ r += 7;
617
+ t >>>= 7;
618
+ }
619
+ if ((t & 0xf) === 0) {
620
+ r += 4;
621
+ t >>>= 4;
622
+ }
623
+ if ((t & 0x3) === 0) {
624
+ r += 2;
625
+ t >>>= 2;
626
+ }
627
+ if ((t & 0x1) === 0) {
628
+ r++;
629
+ }
630
+ return r;
631
+ };
632
+
633
+ // Return number of used bits in a BN
634
+ BN.prototype.bitLength = function bitLength () {
635
+ var w = this.words[this.length - 1];
636
+ var hi = this._countBits(w);
637
+ return (this.length - 1) * 26 + hi;
638
+ };
639
+
640
+ function toBitArray (num) {
641
+ var w = new Array(num.bitLength());
642
+
643
+ for (var bit = 0; bit < w.length; bit++) {
644
+ var off = (bit / 26) | 0;
645
+ var wbit = bit % 26;
646
+
647
+ w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
648
+ }
649
+
650
+ return w;
651
+ }
652
+
653
+ // Number of trailing zero bits
654
+ BN.prototype.zeroBits = function zeroBits () {
655
+ if (this.isZero()) return 0;
656
+
657
+ var r = 0;
658
+ for (var i = 0; i < this.length; i++) {
659
+ var b = this._zeroBits(this.words[i]);
660
+ r += b;
661
+ if (b !== 26) break;
662
+ }
663
+ return r;
664
+ };
665
+
666
+ BN.prototype.byteLength = function byteLength () {
667
+ return Math.ceil(this.bitLength() / 8);
668
+ };
669
+
670
+ BN.prototype.toTwos = function toTwos (width) {
671
+ if (this.negative !== 0) {
672
+ return this.abs().inotn(width).iaddn(1);
673
+ }
674
+ return this.clone();
675
+ };
676
+
677
+ BN.prototype.fromTwos = function fromTwos (width) {
678
+ if (this.testn(width - 1)) {
679
+ return this.notn(width).iaddn(1).ineg();
680
+ }
681
+ return this.clone();
682
+ };
683
+
684
+ BN.prototype.isNeg = function isNeg () {
685
+ return this.negative !== 0;
686
+ };
687
+
688
+ // Return negative clone of `this`
689
+ BN.prototype.neg = function neg () {
690
+ return this.clone().ineg();
691
+ };
692
+
693
+ BN.prototype.ineg = function ineg () {
694
+ if (!this.isZero()) {
695
+ this.negative ^= 1;
696
+ }
697
+
698
+ return this;
699
+ };
700
+
701
+ // Or `num` with `this` in-place
702
+ BN.prototype.iuor = function iuor (num) {
703
+ while (this.length < num.length) {
704
+ this.words[this.length++] = 0;
705
+ }
706
+
707
+ for (var i = 0; i < num.length; i++) {
708
+ this.words[i] = this.words[i] | num.words[i];
709
+ }
710
+
711
+ return this.strip();
712
+ };
713
+
714
+ BN.prototype.ior = function ior (num) {
715
+ assert((this.negative | num.negative) === 0);
716
+ return this.iuor(num);
717
+ };
718
+
719
+ // Or `num` with `this`
720
+ BN.prototype.or = function or (num) {
721
+ if (this.length > num.length) return this.clone().ior(num);
722
+ return num.clone().ior(this);
723
+ };
724
+
725
+ BN.prototype.uor = function uor (num) {
726
+ if (this.length > num.length) return this.clone().iuor(num);
727
+ return num.clone().iuor(this);
728
+ };
729
+
730
+ // And `num` with `this` in-place
731
+ BN.prototype.iuand = function iuand (num) {
732
+ // b = min-length(num, this)
733
+ var b;
734
+ if (this.length > num.length) {
735
+ b = num;
736
+ } else {
737
+ b = this;
738
+ }
739
+
740
+ for (var i = 0; i < b.length; i++) {
741
+ this.words[i] = this.words[i] & num.words[i];
742
+ }
743
+
744
+ this.length = b.length;
745
+
746
+ return this.strip();
747
+ };
748
+
749
+ BN.prototype.iand = function iand (num) {
750
+ assert((this.negative | num.negative) === 0);
751
+ return this.iuand(num);
752
+ };
753
+
754
+ // And `num` with `this`
755
+ BN.prototype.and = function and (num) {
756
+ if (this.length > num.length) return this.clone().iand(num);
757
+ return num.clone().iand(this);
758
+ };
759
+
760
+ BN.prototype.uand = function uand (num) {
761
+ if (this.length > num.length) return this.clone().iuand(num);
762
+ return num.clone().iuand(this);
763
+ };
764
+
765
+ // Xor `num` with `this` in-place
766
+ BN.prototype.iuxor = function iuxor (num) {
767
+ // a.length > b.length
768
+ var a;
769
+ var b;
770
+ if (this.length > num.length) {
771
+ a = this;
772
+ b = num;
773
+ } else {
774
+ a = num;
775
+ b = this;
776
+ }
777
+
778
+ for (var i = 0; i < b.length; i++) {
779
+ this.words[i] = a.words[i] ^ b.words[i];
780
+ }
781
+
782
+ if (this !== a) {
783
+ for (; i < a.length; i++) {
784
+ this.words[i] = a.words[i];
785
+ }
786
+ }
787
+
788
+ this.length = a.length;
789
+
790
+ return this.strip();
791
+ };
792
+
793
+ BN.prototype.ixor = function ixor (num) {
794
+ assert((this.negative | num.negative) === 0);
795
+ return this.iuxor(num);
796
+ };
797
+
798
+ // Xor `num` with `this`
799
+ BN.prototype.xor = function xor (num) {
800
+ if (this.length > num.length) return this.clone().ixor(num);
801
+ return num.clone().ixor(this);
802
+ };
803
+
804
+ BN.prototype.uxor = function uxor (num) {
805
+ if (this.length > num.length) return this.clone().iuxor(num);
806
+ return num.clone().iuxor(this);
807
+ };
808
+
809
+ // Not ``this`` with ``width`` bitwidth
810
+ BN.prototype.inotn = function inotn (width) {
811
+ assert(typeof width === 'number' && width >= 0);
812
+
813
+ var bytesNeeded = Math.ceil(width / 26) | 0;
814
+ var bitsLeft = width % 26;
815
+
816
+ // Extend the buffer with leading zeroes
817
+ this._expand(bytesNeeded);
818
+
819
+ if (bitsLeft > 0) {
820
+ bytesNeeded--;
821
+ }
822
+
823
+ // Handle complete words
824
+ for (var i = 0; i < bytesNeeded; i++) {
825
+ this.words[i] = ~this.words[i] & 0x3ffffff;
826
+ }
827
+
828
+ // Handle the residue
829
+ if (bitsLeft > 0) {
830
+ this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
831
+ }
832
+
833
+ // And remove leading zeroes
834
+ return this.strip();
835
+ };
836
+
837
+ BN.prototype.notn = function notn (width) {
838
+ return this.clone().inotn(width);
839
+ };
840
+
841
+ // Set `bit` of `this`
842
+ BN.prototype.setn = function setn (bit, val) {
843
+ assert(typeof bit === 'number' && bit >= 0);
844
+
845
+ var off = (bit / 26) | 0;
846
+ var wbit = bit % 26;
847
+
848
+ this._expand(off + 1);
849
+
850
+ if (val) {
851
+ this.words[off] = this.words[off] | (1 << wbit);
852
+ } else {
853
+ this.words[off] = this.words[off] & ~(1 << wbit);
854
+ }
855
+
856
+ return this.strip();
857
+ };
858
+
859
+ // Add `num` to `this` in-place
860
+ BN.prototype.iadd = function iadd (num) {
861
+ var r;
862
+
863
+ // negative + positive
864
+ if (this.negative !== 0 && num.negative === 0) {
865
+ this.negative = 0;
866
+ r = this.isub(num);
867
+ this.negative ^= 1;
868
+ return this._normSign();
869
+
870
+ // positive + negative
871
+ } else if (this.negative === 0 && num.negative !== 0) {
872
+ num.negative = 0;
873
+ r = this.isub(num);
874
+ num.negative = 1;
875
+ return r._normSign();
876
+ }
877
+
878
+ // a.length > b.length
879
+ var a, b;
880
+ if (this.length > num.length) {
881
+ a = this;
882
+ b = num;
883
+ } else {
884
+ a = num;
885
+ b = this;
886
+ }
887
+
888
+ var carry = 0;
889
+ for (var i = 0; i < b.length; i++) {
890
+ r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
891
+ this.words[i] = r & 0x3ffffff;
892
+ carry = r >>> 26;
893
+ }
894
+ for (; carry !== 0 && i < a.length; i++) {
895
+ r = (a.words[i] | 0) + carry;
896
+ this.words[i] = r & 0x3ffffff;
897
+ carry = r >>> 26;
898
+ }
899
+
900
+ this.length = a.length;
901
+ if (carry !== 0) {
902
+ this.words[this.length] = carry;
903
+ this.length++;
904
+ // Copy the rest of the words
905
+ } else if (a !== this) {
906
+ for (; i < a.length; i++) {
907
+ this.words[i] = a.words[i];
908
+ }
909
+ }
910
+
911
+ return this;
912
+ };
913
+
914
+ // Add `num` to `this`
915
+ BN.prototype.add = function add (num) {
916
+ var res;
917
+ if (num.negative !== 0 && this.negative === 0) {
918
+ num.negative = 0;
919
+ res = this.sub(num);
920
+ num.negative ^= 1;
921
+ return res;
922
+ } else if (num.negative === 0 && this.negative !== 0) {
923
+ this.negative = 0;
924
+ res = num.sub(this);
925
+ this.negative = 1;
926
+ return res;
927
+ }
928
+
929
+ if (this.length > num.length) return this.clone().iadd(num);
930
+
931
+ return num.clone().iadd(this);
932
+ };
933
+
934
+ // Subtract `num` from `this` in-place
935
+ BN.prototype.isub = function isub (num) {
936
+ // this - (-num) = this + num
937
+ if (num.negative !== 0) {
938
+ num.negative = 0;
939
+ var r = this.iadd(num);
940
+ num.negative = 1;
941
+ return r._normSign();
942
+
943
+ // -this - num = -(this + num)
944
+ } else if (this.negative !== 0) {
945
+ this.negative = 0;
946
+ this.iadd(num);
947
+ this.negative = 1;
948
+ return this._normSign();
949
+ }
950
+
951
+ // At this point both numbers are positive
952
+ var cmp = this.cmp(num);
953
+
954
+ // Optimization - zeroify
955
+ if (cmp === 0) {
956
+ this.negative = 0;
957
+ this.length = 1;
958
+ this.words[0] = 0;
959
+ return this;
960
+ }
961
+
962
+ // a > b
963
+ var a, b;
964
+ if (cmp > 0) {
965
+ a = this;
966
+ b = num;
967
+ } else {
968
+ a = num;
969
+ b = this;
970
+ }
971
+
972
+ var carry = 0;
973
+ for (var i = 0; i < b.length; i++) {
974
+ r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
975
+ carry = r >> 26;
976
+ this.words[i] = r & 0x3ffffff;
977
+ }
978
+ for (; carry !== 0 && i < a.length; i++) {
979
+ r = (a.words[i] | 0) + carry;
980
+ carry = r >> 26;
981
+ this.words[i] = r & 0x3ffffff;
982
+ }
983
+
984
+ // Copy rest of the words
985
+ if (carry === 0 && i < a.length && a !== this) {
986
+ for (; i < a.length; i++) {
987
+ this.words[i] = a.words[i];
988
+ }
989
+ }
990
+
991
+ this.length = Math.max(this.length, i);
992
+
993
+ if (a !== this) {
994
+ this.negative = 1;
995
+ }
996
+
997
+ return this.strip();
998
+ };
999
+
1000
+ // Subtract `num` from `this`
1001
+ BN.prototype.sub = function sub (num) {
1002
+ return this.clone().isub(num);
1003
+ };
1004
+
1005
+ function smallMulTo (self, num, out) {
1006
+ out.negative = num.negative ^ self.negative;
1007
+ var len = (self.length + num.length) | 0;
1008
+ out.length = len;
1009
+ len = (len - 1) | 0;
1010
+
1011
+ // Peel one iteration (compiler can't do it, because of code complexity)
1012
+ var a = self.words[0] | 0;
1013
+ var b = num.words[0] | 0;
1014
+ var r = a * b;
1015
+
1016
+ var lo = r & 0x3ffffff;
1017
+ var carry = (r / 0x4000000) | 0;
1018
+ out.words[0] = lo;
1019
+
1020
+ for (var k = 1; k < len; k++) {
1021
+ // Sum all words with the same `i + j = k` and accumulate `ncarry`,
1022
+ // note that ncarry could be >= 0x3ffffff
1023
+ var ncarry = carry >>> 26;
1024
+ var rword = carry & 0x3ffffff;
1025
+ var maxJ = Math.min(k, num.length - 1);
1026
+ for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
1027
+ var i = (k - j) | 0;
1028
+ a = self.words[i] | 0;
1029
+ b = num.words[j] | 0;
1030
+ r = a * b + rword;
1031
+ ncarry += (r / 0x4000000) | 0;
1032
+ rword = r & 0x3ffffff;
1033
+ }
1034
+ out.words[k] = rword | 0;
1035
+ carry = ncarry | 0;
1036
+ }
1037
+ if (carry !== 0) {
1038
+ out.words[k] = carry | 0;
1039
+ } else {
1040
+ out.length--;
1041
+ }
1042
+
1043
+ return out.strip();
1044
+ }
1045
+
1046
+ // TODO(indutny): it may be reasonable to omit it for users who don't need
1047
+ // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
1048
+ // multiplication (like elliptic secp256k1).
1049
+ var comb10MulTo = function comb10MulTo (self, num, out) {
1050
+ var a = self.words;
1051
+ var b = num.words;
1052
+ var o = out.words;
1053
+ var c = 0;
1054
+ var lo;
1055
+ var mid;
1056
+ var hi;
1057
+ var a0 = a[0] | 0;
1058
+ var al0 = a0 & 0x1fff;
1059
+ var ah0 = a0 >>> 13;
1060
+ var a1 = a[1] | 0;
1061
+ var al1 = a1 & 0x1fff;
1062
+ var ah1 = a1 >>> 13;
1063
+ var a2 = a[2] | 0;
1064
+ var al2 = a2 & 0x1fff;
1065
+ var ah2 = a2 >>> 13;
1066
+ var a3 = a[3] | 0;
1067
+ var al3 = a3 & 0x1fff;
1068
+ var ah3 = a3 >>> 13;
1069
+ var a4 = a[4] | 0;
1070
+ var al4 = a4 & 0x1fff;
1071
+ var ah4 = a4 >>> 13;
1072
+ var a5 = a[5] | 0;
1073
+ var al5 = a5 & 0x1fff;
1074
+ var ah5 = a5 >>> 13;
1075
+ var a6 = a[6] | 0;
1076
+ var al6 = a6 & 0x1fff;
1077
+ var ah6 = a6 >>> 13;
1078
+ var a7 = a[7] | 0;
1079
+ var al7 = a7 & 0x1fff;
1080
+ var ah7 = a7 >>> 13;
1081
+ var a8 = a[8] | 0;
1082
+ var al8 = a8 & 0x1fff;
1083
+ var ah8 = a8 >>> 13;
1084
+ var a9 = a[9] | 0;
1085
+ var al9 = a9 & 0x1fff;
1086
+ var ah9 = a9 >>> 13;
1087
+ var b0 = b[0] | 0;
1088
+ var bl0 = b0 & 0x1fff;
1089
+ var bh0 = b0 >>> 13;
1090
+ var b1 = b[1] | 0;
1091
+ var bl1 = b1 & 0x1fff;
1092
+ var bh1 = b1 >>> 13;
1093
+ var b2 = b[2] | 0;
1094
+ var bl2 = b2 & 0x1fff;
1095
+ var bh2 = b2 >>> 13;
1096
+ var b3 = b[3] | 0;
1097
+ var bl3 = b3 & 0x1fff;
1098
+ var bh3 = b3 >>> 13;
1099
+ var b4 = b[4] | 0;
1100
+ var bl4 = b4 & 0x1fff;
1101
+ var bh4 = b4 >>> 13;
1102
+ var b5 = b[5] | 0;
1103
+ var bl5 = b5 & 0x1fff;
1104
+ var bh5 = b5 >>> 13;
1105
+ var b6 = b[6] | 0;
1106
+ var bl6 = b6 & 0x1fff;
1107
+ var bh6 = b6 >>> 13;
1108
+ var b7 = b[7] | 0;
1109
+ var bl7 = b7 & 0x1fff;
1110
+ var bh7 = b7 >>> 13;
1111
+ var b8 = b[8] | 0;
1112
+ var bl8 = b8 & 0x1fff;
1113
+ var bh8 = b8 >>> 13;
1114
+ var b9 = b[9] | 0;
1115
+ var bl9 = b9 & 0x1fff;
1116
+ var bh9 = b9 >>> 13;
1117
+
1118
+ out.negative = self.negative ^ num.negative;
1119
+ out.length = 19;
1120
+ /* k = 0 */
1121
+ lo = Math.imul(al0, bl0);
1122
+ mid = Math.imul(al0, bh0);
1123
+ mid = (mid + Math.imul(ah0, bl0)) | 0;
1124
+ hi = Math.imul(ah0, bh0);
1125
+ var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1126
+ c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
1127
+ w0 &= 0x3ffffff;
1128
+ /* k = 1 */
1129
+ lo = Math.imul(al1, bl0);
1130
+ mid = Math.imul(al1, bh0);
1131
+ mid = (mid + Math.imul(ah1, bl0)) | 0;
1132
+ hi = Math.imul(ah1, bh0);
1133
+ lo = (lo + Math.imul(al0, bl1)) | 0;
1134
+ mid = (mid + Math.imul(al0, bh1)) | 0;
1135
+ mid = (mid + Math.imul(ah0, bl1)) | 0;
1136
+ hi = (hi + Math.imul(ah0, bh1)) | 0;
1137
+ var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1138
+ c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
1139
+ w1 &= 0x3ffffff;
1140
+ /* k = 2 */
1141
+ lo = Math.imul(al2, bl0);
1142
+ mid = Math.imul(al2, bh0);
1143
+ mid = (mid + Math.imul(ah2, bl0)) | 0;
1144
+ hi = Math.imul(ah2, bh0);
1145
+ lo = (lo + Math.imul(al1, bl1)) | 0;
1146
+ mid = (mid + Math.imul(al1, bh1)) | 0;
1147
+ mid = (mid + Math.imul(ah1, bl1)) | 0;
1148
+ hi = (hi + Math.imul(ah1, bh1)) | 0;
1149
+ lo = (lo + Math.imul(al0, bl2)) | 0;
1150
+ mid = (mid + Math.imul(al0, bh2)) | 0;
1151
+ mid = (mid + Math.imul(ah0, bl2)) | 0;
1152
+ hi = (hi + Math.imul(ah0, bh2)) | 0;
1153
+ var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1154
+ c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
1155
+ w2 &= 0x3ffffff;
1156
+ /* k = 3 */
1157
+ lo = Math.imul(al3, bl0);
1158
+ mid = Math.imul(al3, bh0);
1159
+ mid = (mid + Math.imul(ah3, bl0)) | 0;
1160
+ hi = Math.imul(ah3, bh0);
1161
+ lo = (lo + Math.imul(al2, bl1)) | 0;
1162
+ mid = (mid + Math.imul(al2, bh1)) | 0;
1163
+ mid = (mid + Math.imul(ah2, bl1)) | 0;
1164
+ hi = (hi + Math.imul(ah2, bh1)) | 0;
1165
+ lo = (lo + Math.imul(al1, bl2)) | 0;
1166
+ mid = (mid + Math.imul(al1, bh2)) | 0;
1167
+ mid = (mid + Math.imul(ah1, bl2)) | 0;
1168
+ hi = (hi + Math.imul(ah1, bh2)) | 0;
1169
+ lo = (lo + Math.imul(al0, bl3)) | 0;
1170
+ mid = (mid + Math.imul(al0, bh3)) | 0;
1171
+ mid = (mid + Math.imul(ah0, bl3)) | 0;
1172
+ hi = (hi + Math.imul(ah0, bh3)) | 0;
1173
+ var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1174
+ c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
1175
+ w3 &= 0x3ffffff;
1176
+ /* k = 4 */
1177
+ lo = Math.imul(al4, bl0);
1178
+ mid = Math.imul(al4, bh0);
1179
+ mid = (mid + Math.imul(ah4, bl0)) | 0;
1180
+ hi = Math.imul(ah4, bh0);
1181
+ lo = (lo + Math.imul(al3, bl1)) | 0;
1182
+ mid = (mid + Math.imul(al3, bh1)) | 0;
1183
+ mid = (mid + Math.imul(ah3, bl1)) | 0;
1184
+ hi = (hi + Math.imul(ah3, bh1)) | 0;
1185
+ lo = (lo + Math.imul(al2, bl2)) | 0;
1186
+ mid = (mid + Math.imul(al2, bh2)) | 0;
1187
+ mid = (mid + Math.imul(ah2, bl2)) | 0;
1188
+ hi = (hi + Math.imul(ah2, bh2)) | 0;
1189
+ lo = (lo + Math.imul(al1, bl3)) | 0;
1190
+ mid = (mid + Math.imul(al1, bh3)) | 0;
1191
+ mid = (mid + Math.imul(ah1, bl3)) | 0;
1192
+ hi = (hi + Math.imul(ah1, bh3)) | 0;
1193
+ lo = (lo + Math.imul(al0, bl4)) | 0;
1194
+ mid = (mid + Math.imul(al0, bh4)) | 0;
1195
+ mid = (mid + Math.imul(ah0, bl4)) | 0;
1196
+ hi = (hi + Math.imul(ah0, bh4)) | 0;
1197
+ var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1198
+ c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
1199
+ w4 &= 0x3ffffff;
1200
+ /* k = 5 */
1201
+ lo = Math.imul(al5, bl0);
1202
+ mid = Math.imul(al5, bh0);
1203
+ mid = (mid + Math.imul(ah5, bl0)) | 0;
1204
+ hi = Math.imul(ah5, bh0);
1205
+ lo = (lo + Math.imul(al4, bl1)) | 0;
1206
+ mid = (mid + Math.imul(al4, bh1)) | 0;
1207
+ mid = (mid + Math.imul(ah4, bl1)) | 0;
1208
+ hi = (hi + Math.imul(ah4, bh1)) | 0;
1209
+ lo = (lo + Math.imul(al3, bl2)) | 0;
1210
+ mid = (mid + Math.imul(al3, bh2)) | 0;
1211
+ mid = (mid + Math.imul(ah3, bl2)) | 0;
1212
+ hi = (hi + Math.imul(ah3, bh2)) | 0;
1213
+ lo = (lo + Math.imul(al2, bl3)) | 0;
1214
+ mid = (mid + Math.imul(al2, bh3)) | 0;
1215
+ mid = (mid + Math.imul(ah2, bl3)) | 0;
1216
+ hi = (hi + Math.imul(ah2, bh3)) | 0;
1217
+ lo = (lo + Math.imul(al1, bl4)) | 0;
1218
+ mid = (mid + Math.imul(al1, bh4)) | 0;
1219
+ mid = (mid + Math.imul(ah1, bl4)) | 0;
1220
+ hi = (hi + Math.imul(ah1, bh4)) | 0;
1221
+ lo = (lo + Math.imul(al0, bl5)) | 0;
1222
+ mid = (mid + Math.imul(al0, bh5)) | 0;
1223
+ mid = (mid + Math.imul(ah0, bl5)) | 0;
1224
+ hi = (hi + Math.imul(ah0, bh5)) | 0;
1225
+ var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1226
+ c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
1227
+ w5 &= 0x3ffffff;
1228
+ /* k = 6 */
1229
+ lo = Math.imul(al6, bl0);
1230
+ mid = Math.imul(al6, bh0);
1231
+ mid = (mid + Math.imul(ah6, bl0)) | 0;
1232
+ hi = Math.imul(ah6, bh0);
1233
+ lo = (lo + Math.imul(al5, bl1)) | 0;
1234
+ mid = (mid + Math.imul(al5, bh1)) | 0;
1235
+ mid = (mid + Math.imul(ah5, bl1)) | 0;
1236
+ hi = (hi + Math.imul(ah5, bh1)) | 0;
1237
+ lo = (lo + Math.imul(al4, bl2)) | 0;
1238
+ mid = (mid + Math.imul(al4, bh2)) | 0;
1239
+ mid = (mid + Math.imul(ah4, bl2)) | 0;
1240
+ hi = (hi + Math.imul(ah4, bh2)) | 0;
1241
+ lo = (lo + Math.imul(al3, bl3)) | 0;
1242
+ mid = (mid + Math.imul(al3, bh3)) | 0;
1243
+ mid = (mid + Math.imul(ah3, bl3)) | 0;
1244
+ hi = (hi + Math.imul(ah3, bh3)) | 0;
1245
+ lo = (lo + Math.imul(al2, bl4)) | 0;
1246
+ mid = (mid + Math.imul(al2, bh4)) | 0;
1247
+ mid = (mid + Math.imul(ah2, bl4)) | 0;
1248
+ hi = (hi + Math.imul(ah2, bh4)) | 0;
1249
+ lo = (lo + Math.imul(al1, bl5)) | 0;
1250
+ mid = (mid + Math.imul(al1, bh5)) | 0;
1251
+ mid = (mid + Math.imul(ah1, bl5)) | 0;
1252
+ hi = (hi + Math.imul(ah1, bh5)) | 0;
1253
+ lo = (lo + Math.imul(al0, bl6)) | 0;
1254
+ mid = (mid + Math.imul(al0, bh6)) | 0;
1255
+ mid = (mid + Math.imul(ah0, bl6)) | 0;
1256
+ hi = (hi + Math.imul(ah0, bh6)) | 0;
1257
+ var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1258
+ c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
1259
+ w6 &= 0x3ffffff;
1260
+ /* k = 7 */
1261
+ lo = Math.imul(al7, bl0);
1262
+ mid = Math.imul(al7, bh0);
1263
+ mid = (mid + Math.imul(ah7, bl0)) | 0;
1264
+ hi = Math.imul(ah7, bh0);
1265
+ lo = (lo + Math.imul(al6, bl1)) | 0;
1266
+ mid = (mid + Math.imul(al6, bh1)) | 0;
1267
+ mid = (mid + Math.imul(ah6, bl1)) | 0;
1268
+ hi = (hi + Math.imul(ah6, bh1)) | 0;
1269
+ lo = (lo + Math.imul(al5, bl2)) | 0;
1270
+ mid = (mid + Math.imul(al5, bh2)) | 0;
1271
+ mid = (mid + Math.imul(ah5, bl2)) | 0;
1272
+ hi = (hi + Math.imul(ah5, bh2)) | 0;
1273
+ lo = (lo + Math.imul(al4, bl3)) | 0;
1274
+ mid = (mid + Math.imul(al4, bh3)) | 0;
1275
+ mid = (mid + Math.imul(ah4, bl3)) | 0;
1276
+ hi = (hi + Math.imul(ah4, bh3)) | 0;
1277
+ lo = (lo + Math.imul(al3, bl4)) | 0;
1278
+ mid = (mid + Math.imul(al3, bh4)) | 0;
1279
+ mid = (mid + Math.imul(ah3, bl4)) | 0;
1280
+ hi = (hi + Math.imul(ah3, bh4)) | 0;
1281
+ lo = (lo + Math.imul(al2, bl5)) | 0;
1282
+ mid = (mid + Math.imul(al2, bh5)) | 0;
1283
+ mid = (mid + Math.imul(ah2, bl5)) | 0;
1284
+ hi = (hi + Math.imul(ah2, bh5)) | 0;
1285
+ lo = (lo + Math.imul(al1, bl6)) | 0;
1286
+ mid = (mid + Math.imul(al1, bh6)) | 0;
1287
+ mid = (mid + Math.imul(ah1, bl6)) | 0;
1288
+ hi = (hi + Math.imul(ah1, bh6)) | 0;
1289
+ lo = (lo + Math.imul(al0, bl7)) | 0;
1290
+ mid = (mid + Math.imul(al0, bh7)) | 0;
1291
+ mid = (mid + Math.imul(ah0, bl7)) | 0;
1292
+ hi = (hi + Math.imul(ah0, bh7)) | 0;
1293
+ var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1294
+ c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
1295
+ w7 &= 0x3ffffff;
1296
+ /* k = 8 */
1297
+ lo = Math.imul(al8, bl0);
1298
+ mid = Math.imul(al8, bh0);
1299
+ mid = (mid + Math.imul(ah8, bl0)) | 0;
1300
+ hi = Math.imul(ah8, bh0);
1301
+ lo = (lo + Math.imul(al7, bl1)) | 0;
1302
+ mid = (mid + Math.imul(al7, bh1)) | 0;
1303
+ mid = (mid + Math.imul(ah7, bl1)) | 0;
1304
+ hi = (hi + Math.imul(ah7, bh1)) | 0;
1305
+ lo = (lo + Math.imul(al6, bl2)) | 0;
1306
+ mid = (mid + Math.imul(al6, bh2)) | 0;
1307
+ mid = (mid + Math.imul(ah6, bl2)) | 0;
1308
+ hi = (hi + Math.imul(ah6, bh2)) | 0;
1309
+ lo = (lo + Math.imul(al5, bl3)) | 0;
1310
+ mid = (mid + Math.imul(al5, bh3)) | 0;
1311
+ mid = (mid + Math.imul(ah5, bl3)) | 0;
1312
+ hi = (hi + Math.imul(ah5, bh3)) | 0;
1313
+ lo = (lo + Math.imul(al4, bl4)) | 0;
1314
+ mid = (mid + Math.imul(al4, bh4)) | 0;
1315
+ mid = (mid + Math.imul(ah4, bl4)) | 0;
1316
+ hi = (hi + Math.imul(ah4, bh4)) | 0;
1317
+ lo = (lo + Math.imul(al3, bl5)) | 0;
1318
+ mid = (mid + Math.imul(al3, bh5)) | 0;
1319
+ mid = (mid + Math.imul(ah3, bl5)) | 0;
1320
+ hi = (hi + Math.imul(ah3, bh5)) | 0;
1321
+ lo = (lo + Math.imul(al2, bl6)) | 0;
1322
+ mid = (mid + Math.imul(al2, bh6)) | 0;
1323
+ mid = (mid + Math.imul(ah2, bl6)) | 0;
1324
+ hi = (hi + Math.imul(ah2, bh6)) | 0;
1325
+ lo = (lo + Math.imul(al1, bl7)) | 0;
1326
+ mid = (mid + Math.imul(al1, bh7)) | 0;
1327
+ mid = (mid + Math.imul(ah1, bl7)) | 0;
1328
+ hi = (hi + Math.imul(ah1, bh7)) | 0;
1329
+ lo = (lo + Math.imul(al0, bl8)) | 0;
1330
+ mid = (mid + Math.imul(al0, bh8)) | 0;
1331
+ mid = (mid + Math.imul(ah0, bl8)) | 0;
1332
+ hi = (hi + Math.imul(ah0, bh8)) | 0;
1333
+ var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1334
+ c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
1335
+ w8 &= 0x3ffffff;
1336
+ /* k = 9 */
1337
+ lo = Math.imul(al9, bl0);
1338
+ mid = Math.imul(al9, bh0);
1339
+ mid = (mid + Math.imul(ah9, bl0)) | 0;
1340
+ hi = Math.imul(ah9, bh0);
1341
+ lo = (lo + Math.imul(al8, bl1)) | 0;
1342
+ mid = (mid + Math.imul(al8, bh1)) | 0;
1343
+ mid = (mid + Math.imul(ah8, bl1)) | 0;
1344
+ hi = (hi + Math.imul(ah8, bh1)) | 0;
1345
+ lo = (lo + Math.imul(al7, bl2)) | 0;
1346
+ mid = (mid + Math.imul(al7, bh2)) | 0;
1347
+ mid = (mid + Math.imul(ah7, bl2)) | 0;
1348
+ hi = (hi + Math.imul(ah7, bh2)) | 0;
1349
+ lo = (lo + Math.imul(al6, bl3)) | 0;
1350
+ mid = (mid + Math.imul(al6, bh3)) | 0;
1351
+ mid = (mid + Math.imul(ah6, bl3)) | 0;
1352
+ hi = (hi + Math.imul(ah6, bh3)) | 0;
1353
+ lo = (lo + Math.imul(al5, bl4)) | 0;
1354
+ mid = (mid + Math.imul(al5, bh4)) | 0;
1355
+ mid = (mid + Math.imul(ah5, bl4)) | 0;
1356
+ hi = (hi + Math.imul(ah5, bh4)) | 0;
1357
+ lo = (lo + Math.imul(al4, bl5)) | 0;
1358
+ mid = (mid + Math.imul(al4, bh5)) | 0;
1359
+ mid = (mid + Math.imul(ah4, bl5)) | 0;
1360
+ hi = (hi + Math.imul(ah4, bh5)) | 0;
1361
+ lo = (lo + Math.imul(al3, bl6)) | 0;
1362
+ mid = (mid + Math.imul(al3, bh6)) | 0;
1363
+ mid = (mid + Math.imul(ah3, bl6)) | 0;
1364
+ hi = (hi + Math.imul(ah3, bh6)) | 0;
1365
+ lo = (lo + Math.imul(al2, bl7)) | 0;
1366
+ mid = (mid + Math.imul(al2, bh7)) | 0;
1367
+ mid = (mid + Math.imul(ah2, bl7)) | 0;
1368
+ hi = (hi + Math.imul(ah2, bh7)) | 0;
1369
+ lo = (lo + Math.imul(al1, bl8)) | 0;
1370
+ mid = (mid + Math.imul(al1, bh8)) | 0;
1371
+ mid = (mid + Math.imul(ah1, bl8)) | 0;
1372
+ hi = (hi + Math.imul(ah1, bh8)) | 0;
1373
+ lo = (lo + Math.imul(al0, bl9)) | 0;
1374
+ mid = (mid + Math.imul(al0, bh9)) | 0;
1375
+ mid = (mid + Math.imul(ah0, bl9)) | 0;
1376
+ hi = (hi + Math.imul(ah0, bh9)) | 0;
1377
+ var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1378
+ c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
1379
+ w9 &= 0x3ffffff;
1380
+ /* k = 10 */
1381
+ lo = Math.imul(al9, bl1);
1382
+ mid = Math.imul(al9, bh1);
1383
+ mid = (mid + Math.imul(ah9, bl1)) | 0;
1384
+ hi = Math.imul(ah9, bh1);
1385
+ lo = (lo + Math.imul(al8, bl2)) | 0;
1386
+ mid = (mid + Math.imul(al8, bh2)) | 0;
1387
+ mid = (mid + Math.imul(ah8, bl2)) | 0;
1388
+ hi = (hi + Math.imul(ah8, bh2)) | 0;
1389
+ lo = (lo + Math.imul(al7, bl3)) | 0;
1390
+ mid = (mid + Math.imul(al7, bh3)) | 0;
1391
+ mid = (mid + Math.imul(ah7, bl3)) | 0;
1392
+ hi = (hi + Math.imul(ah7, bh3)) | 0;
1393
+ lo = (lo + Math.imul(al6, bl4)) | 0;
1394
+ mid = (mid + Math.imul(al6, bh4)) | 0;
1395
+ mid = (mid + Math.imul(ah6, bl4)) | 0;
1396
+ hi = (hi + Math.imul(ah6, bh4)) | 0;
1397
+ lo = (lo + Math.imul(al5, bl5)) | 0;
1398
+ mid = (mid + Math.imul(al5, bh5)) | 0;
1399
+ mid = (mid + Math.imul(ah5, bl5)) | 0;
1400
+ hi = (hi + Math.imul(ah5, bh5)) | 0;
1401
+ lo = (lo + Math.imul(al4, bl6)) | 0;
1402
+ mid = (mid + Math.imul(al4, bh6)) | 0;
1403
+ mid = (mid + Math.imul(ah4, bl6)) | 0;
1404
+ hi = (hi + Math.imul(ah4, bh6)) | 0;
1405
+ lo = (lo + Math.imul(al3, bl7)) | 0;
1406
+ mid = (mid + Math.imul(al3, bh7)) | 0;
1407
+ mid = (mid + Math.imul(ah3, bl7)) | 0;
1408
+ hi = (hi + Math.imul(ah3, bh7)) | 0;
1409
+ lo = (lo + Math.imul(al2, bl8)) | 0;
1410
+ mid = (mid + Math.imul(al2, bh8)) | 0;
1411
+ mid = (mid + Math.imul(ah2, bl8)) | 0;
1412
+ hi = (hi + Math.imul(ah2, bh8)) | 0;
1413
+ lo = (lo + Math.imul(al1, bl9)) | 0;
1414
+ mid = (mid + Math.imul(al1, bh9)) | 0;
1415
+ mid = (mid + Math.imul(ah1, bl9)) | 0;
1416
+ hi = (hi + Math.imul(ah1, bh9)) | 0;
1417
+ var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1418
+ c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
1419
+ w10 &= 0x3ffffff;
1420
+ /* k = 11 */
1421
+ lo = Math.imul(al9, bl2);
1422
+ mid = Math.imul(al9, bh2);
1423
+ mid = (mid + Math.imul(ah9, bl2)) | 0;
1424
+ hi = Math.imul(ah9, bh2);
1425
+ lo = (lo + Math.imul(al8, bl3)) | 0;
1426
+ mid = (mid + Math.imul(al8, bh3)) | 0;
1427
+ mid = (mid + Math.imul(ah8, bl3)) | 0;
1428
+ hi = (hi + Math.imul(ah8, bh3)) | 0;
1429
+ lo = (lo + Math.imul(al7, bl4)) | 0;
1430
+ mid = (mid + Math.imul(al7, bh4)) | 0;
1431
+ mid = (mid + Math.imul(ah7, bl4)) | 0;
1432
+ hi = (hi + Math.imul(ah7, bh4)) | 0;
1433
+ lo = (lo + Math.imul(al6, bl5)) | 0;
1434
+ mid = (mid + Math.imul(al6, bh5)) | 0;
1435
+ mid = (mid + Math.imul(ah6, bl5)) | 0;
1436
+ hi = (hi + Math.imul(ah6, bh5)) | 0;
1437
+ lo = (lo + Math.imul(al5, bl6)) | 0;
1438
+ mid = (mid + Math.imul(al5, bh6)) | 0;
1439
+ mid = (mid + Math.imul(ah5, bl6)) | 0;
1440
+ hi = (hi + Math.imul(ah5, bh6)) | 0;
1441
+ lo = (lo + Math.imul(al4, bl7)) | 0;
1442
+ mid = (mid + Math.imul(al4, bh7)) | 0;
1443
+ mid = (mid + Math.imul(ah4, bl7)) | 0;
1444
+ hi = (hi + Math.imul(ah4, bh7)) | 0;
1445
+ lo = (lo + Math.imul(al3, bl8)) | 0;
1446
+ mid = (mid + Math.imul(al3, bh8)) | 0;
1447
+ mid = (mid + Math.imul(ah3, bl8)) | 0;
1448
+ hi = (hi + Math.imul(ah3, bh8)) | 0;
1449
+ lo = (lo + Math.imul(al2, bl9)) | 0;
1450
+ mid = (mid + Math.imul(al2, bh9)) | 0;
1451
+ mid = (mid + Math.imul(ah2, bl9)) | 0;
1452
+ hi = (hi + Math.imul(ah2, bh9)) | 0;
1453
+ var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1454
+ c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
1455
+ w11 &= 0x3ffffff;
1456
+ /* k = 12 */
1457
+ lo = Math.imul(al9, bl3);
1458
+ mid = Math.imul(al9, bh3);
1459
+ mid = (mid + Math.imul(ah9, bl3)) | 0;
1460
+ hi = Math.imul(ah9, bh3);
1461
+ lo = (lo + Math.imul(al8, bl4)) | 0;
1462
+ mid = (mid + Math.imul(al8, bh4)) | 0;
1463
+ mid = (mid + Math.imul(ah8, bl4)) | 0;
1464
+ hi = (hi + Math.imul(ah8, bh4)) | 0;
1465
+ lo = (lo + Math.imul(al7, bl5)) | 0;
1466
+ mid = (mid + Math.imul(al7, bh5)) | 0;
1467
+ mid = (mid + Math.imul(ah7, bl5)) | 0;
1468
+ hi = (hi + Math.imul(ah7, bh5)) | 0;
1469
+ lo = (lo + Math.imul(al6, bl6)) | 0;
1470
+ mid = (mid + Math.imul(al6, bh6)) | 0;
1471
+ mid = (mid + Math.imul(ah6, bl6)) | 0;
1472
+ hi = (hi + Math.imul(ah6, bh6)) | 0;
1473
+ lo = (lo + Math.imul(al5, bl7)) | 0;
1474
+ mid = (mid + Math.imul(al5, bh7)) | 0;
1475
+ mid = (mid + Math.imul(ah5, bl7)) | 0;
1476
+ hi = (hi + Math.imul(ah5, bh7)) | 0;
1477
+ lo = (lo + Math.imul(al4, bl8)) | 0;
1478
+ mid = (mid + Math.imul(al4, bh8)) | 0;
1479
+ mid = (mid + Math.imul(ah4, bl8)) | 0;
1480
+ hi = (hi + Math.imul(ah4, bh8)) | 0;
1481
+ lo = (lo + Math.imul(al3, bl9)) | 0;
1482
+ mid = (mid + Math.imul(al3, bh9)) | 0;
1483
+ mid = (mid + Math.imul(ah3, bl9)) | 0;
1484
+ hi = (hi + Math.imul(ah3, bh9)) | 0;
1485
+ var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1486
+ c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
1487
+ w12 &= 0x3ffffff;
1488
+ /* k = 13 */
1489
+ lo = Math.imul(al9, bl4);
1490
+ mid = Math.imul(al9, bh4);
1491
+ mid = (mid + Math.imul(ah9, bl4)) | 0;
1492
+ hi = Math.imul(ah9, bh4);
1493
+ lo = (lo + Math.imul(al8, bl5)) | 0;
1494
+ mid = (mid + Math.imul(al8, bh5)) | 0;
1495
+ mid = (mid + Math.imul(ah8, bl5)) | 0;
1496
+ hi = (hi + Math.imul(ah8, bh5)) | 0;
1497
+ lo = (lo + Math.imul(al7, bl6)) | 0;
1498
+ mid = (mid + Math.imul(al7, bh6)) | 0;
1499
+ mid = (mid + Math.imul(ah7, bl6)) | 0;
1500
+ hi = (hi + Math.imul(ah7, bh6)) | 0;
1501
+ lo = (lo + Math.imul(al6, bl7)) | 0;
1502
+ mid = (mid + Math.imul(al6, bh7)) | 0;
1503
+ mid = (mid + Math.imul(ah6, bl7)) | 0;
1504
+ hi = (hi + Math.imul(ah6, bh7)) | 0;
1505
+ lo = (lo + Math.imul(al5, bl8)) | 0;
1506
+ mid = (mid + Math.imul(al5, bh8)) | 0;
1507
+ mid = (mid + Math.imul(ah5, bl8)) | 0;
1508
+ hi = (hi + Math.imul(ah5, bh8)) | 0;
1509
+ lo = (lo + Math.imul(al4, bl9)) | 0;
1510
+ mid = (mid + Math.imul(al4, bh9)) | 0;
1511
+ mid = (mid + Math.imul(ah4, bl9)) | 0;
1512
+ hi = (hi + Math.imul(ah4, bh9)) | 0;
1513
+ var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1514
+ c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
1515
+ w13 &= 0x3ffffff;
1516
+ /* k = 14 */
1517
+ lo = Math.imul(al9, bl5);
1518
+ mid = Math.imul(al9, bh5);
1519
+ mid = (mid + Math.imul(ah9, bl5)) | 0;
1520
+ hi = Math.imul(ah9, bh5);
1521
+ lo = (lo + Math.imul(al8, bl6)) | 0;
1522
+ mid = (mid + Math.imul(al8, bh6)) | 0;
1523
+ mid = (mid + Math.imul(ah8, bl6)) | 0;
1524
+ hi = (hi + Math.imul(ah8, bh6)) | 0;
1525
+ lo = (lo + Math.imul(al7, bl7)) | 0;
1526
+ mid = (mid + Math.imul(al7, bh7)) | 0;
1527
+ mid = (mid + Math.imul(ah7, bl7)) | 0;
1528
+ hi = (hi + Math.imul(ah7, bh7)) | 0;
1529
+ lo = (lo + Math.imul(al6, bl8)) | 0;
1530
+ mid = (mid + Math.imul(al6, bh8)) | 0;
1531
+ mid = (mid + Math.imul(ah6, bl8)) | 0;
1532
+ hi = (hi + Math.imul(ah6, bh8)) | 0;
1533
+ lo = (lo + Math.imul(al5, bl9)) | 0;
1534
+ mid = (mid + Math.imul(al5, bh9)) | 0;
1535
+ mid = (mid + Math.imul(ah5, bl9)) | 0;
1536
+ hi = (hi + Math.imul(ah5, bh9)) | 0;
1537
+ var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1538
+ c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
1539
+ w14 &= 0x3ffffff;
1540
+ /* k = 15 */
1541
+ lo = Math.imul(al9, bl6);
1542
+ mid = Math.imul(al9, bh6);
1543
+ mid = (mid + Math.imul(ah9, bl6)) | 0;
1544
+ hi = Math.imul(ah9, bh6);
1545
+ lo = (lo + Math.imul(al8, bl7)) | 0;
1546
+ mid = (mid + Math.imul(al8, bh7)) | 0;
1547
+ mid = (mid + Math.imul(ah8, bl7)) | 0;
1548
+ hi = (hi + Math.imul(ah8, bh7)) | 0;
1549
+ lo = (lo + Math.imul(al7, bl8)) | 0;
1550
+ mid = (mid + Math.imul(al7, bh8)) | 0;
1551
+ mid = (mid + Math.imul(ah7, bl8)) | 0;
1552
+ hi = (hi + Math.imul(ah7, bh8)) | 0;
1553
+ lo = (lo + Math.imul(al6, bl9)) | 0;
1554
+ mid = (mid + Math.imul(al6, bh9)) | 0;
1555
+ mid = (mid + Math.imul(ah6, bl9)) | 0;
1556
+ hi = (hi + Math.imul(ah6, bh9)) | 0;
1557
+ var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1558
+ c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
1559
+ w15 &= 0x3ffffff;
1560
+ /* k = 16 */
1561
+ lo = Math.imul(al9, bl7);
1562
+ mid = Math.imul(al9, bh7);
1563
+ mid = (mid + Math.imul(ah9, bl7)) | 0;
1564
+ hi = Math.imul(ah9, bh7);
1565
+ lo = (lo + Math.imul(al8, bl8)) | 0;
1566
+ mid = (mid + Math.imul(al8, bh8)) | 0;
1567
+ mid = (mid + Math.imul(ah8, bl8)) | 0;
1568
+ hi = (hi + Math.imul(ah8, bh8)) | 0;
1569
+ lo = (lo + Math.imul(al7, bl9)) | 0;
1570
+ mid = (mid + Math.imul(al7, bh9)) | 0;
1571
+ mid = (mid + Math.imul(ah7, bl9)) | 0;
1572
+ hi = (hi + Math.imul(ah7, bh9)) | 0;
1573
+ var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1574
+ c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
1575
+ w16 &= 0x3ffffff;
1576
+ /* k = 17 */
1577
+ lo = Math.imul(al9, bl8);
1578
+ mid = Math.imul(al9, bh8);
1579
+ mid = (mid + Math.imul(ah9, bl8)) | 0;
1580
+ hi = Math.imul(ah9, bh8);
1581
+ lo = (lo + Math.imul(al8, bl9)) | 0;
1582
+ mid = (mid + Math.imul(al8, bh9)) | 0;
1583
+ mid = (mid + Math.imul(ah8, bl9)) | 0;
1584
+ hi = (hi + Math.imul(ah8, bh9)) | 0;
1585
+ var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1586
+ c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
1587
+ w17 &= 0x3ffffff;
1588
+ /* k = 18 */
1589
+ lo = Math.imul(al9, bl9);
1590
+ mid = Math.imul(al9, bh9);
1591
+ mid = (mid + Math.imul(ah9, bl9)) | 0;
1592
+ hi = Math.imul(ah9, bh9);
1593
+ var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1594
+ c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
1595
+ w18 &= 0x3ffffff;
1596
+ o[0] = w0;
1597
+ o[1] = w1;
1598
+ o[2] = w2;
1599
+ o[3] = w3;
1600
+ o[4] = w4;
1601
+ o[5] = w5;
1602
+ o[6] = w6;
1603
+ o[7] = w7;
1604
+ o[8] = w8;
1605
+ o[9] = w9;
1606
+ o[10] = w10;
1607
+ o[11] = w11;
1608
+ o[12] = w12;
1609
+ o[13] = w13;
1610
+ o[14] = w14;
1611
+ o[15] = w15;
1612
+ o[16] = w16;
1613
+ o[17] = w17;
1614
+ o[18] = w18;
1615
+ if (c !== 0) {
1616
+ o[19] = c;
1617
+ out.length++;
1618
+ }
1619
+ return out;
1620
+ };
1621
+
1622
+ // Polyfill comb
1623
+ if (!Math.imul) {
1624
+ comb10MulTo = smallMulTo;
1625
+ }
1626
+
1627
+ function bigMulTo (self, num, out) {
1628
+ out.negative = num.negative ^ self.negative;
1629
+ out.length = self.length + num.length;
1630
+
1631
+ var carry = 0;
1632
+ var hncarry = 0;
1633
+ for (var k = 0; k < out.length - 1; k++) {
1634
+ // Sum all words with the same `i + j = k` and accumulate `ncarry`,
1635
+ // note that ncarry could be >= 0x3ffffff
1636
+ var ncarry = hncarry;
1637
+ hncarry = 0;
1638
+ var rword = carry & 0x3ffffff;
1639
+ var maxJ = Math.min(k, num.length - 1);
1640
+ for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
1641
+ var i = k - j;
1642
+ var a = self.words[i] | 0;
1643
+ var b = num.words[j] | 0;
1644
+ var r = a * b;
1645
+
1646
+ var lo = r & 0x3ffffff;
1647
+ ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
1648
+ lo = (lo + rword) | 0;
1649
+ rword = lo & 0x3ffffff;
1650
+ ncarry = (ncarry + (lo >>> 26)) | 0;
1651
+
1652
+ hncarry += ncarry >>> 26;
1653
+ ncarry &= 0x3ffffff;
1654
+ }
1655
+ out.words[k] = rword;
1656
+ carry = ncarry;
1657
+ ncarry = hncarry;
1658
+ }
1659
+ if (carry !== 0) {
1660
+ out.words[k] = carry;
1661
+ } else {
1662
+ out.length--;
1663
+ }
1664
+
1665
+ return out.strip();
1666
+ }
1667
+
1668
+ function jumboMulTo (self, num, out) {
1669
+ var fftm = new FFTM();
1670
+ return fftm.mulp(self, num, out);
1671
+ }
1672
+
1673
+ BN.prototype.mulTo = function mulTo (num, out) {
1674
+ var res;
1675
+ var len = this.length + num.length;
1676
+ if (this.length === 10 && num.length === 10) {
1677
+ res = comb10MulTo(this, num, out);
1678
+ } else if (len < 63) {
1679
+ res = smallMulTo(this, num, out);
1680
+ } else if (len < 1024) {
1681
+ res = bigMulTo(this, num, out);
1682
+ } else {
1683
+ res = jumboMulTo(this, num, out);
1684
+ }
1685
+
1686
+ return res;
1687
+ };
1688
+
1689
+ // Cooley-Tukey algorithm for FFT
1690
+ // slightly revisited to rely on looping instead of recursion
1691
+
1692
+ function FFTM (x, y) {
1693
+ this.x = x;
1694
+ this.y = y;
1695
+ }
1696
+
1697
+ FFTM.prototype.makeRBT = function makeRBT (N) {
1698
+ var t = new Array(N);
1699
+ var l = BN.prototype._countBits(N) - 1;
1700
+ for (var i = 0; i < N; i++) {
1701
+ t[i] = this.revBin(i, l, N);
1702
+ }
1703
+
1704
+ return t;
1705
+ };
1706
+
1707
+ // Returns binary-reversed representation of `x`
1708
+ FFTM.prototype.revBin = function revBin (x, l, N) {
1709
+ if (x === 0 || x === N - 1) return x;
1710
+
1711
+ var rb = 0;
1712
+ for (var i = 0; i < l; i++) {
1713
+ rb |= (x & 1) << (l - i - 1);
1714
+ x >>= 1;
1715
+ }
1716
+
1717
+ return rb;
1718
+ };
1719
+
1720
+ // Performs "tweedling" phase, therefore 'emulating'
1721
+ // behaviour of the recursive algorithm
1722
+ FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
1723
+ for (var i = 0; i < N; i++) {
1724
+ rtws[i] = rws[rbt[i]];
1725
+ itws[i] = iws[rbt[i]];
1726
+ }
1727
+ };
1728
+
1729
+ FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
1730
+ this.permute(rbt, rws, iws, rtws, itws, N);
1731
+
1732
+ for (var s = 1; s < N; s <<= 1) {
1733
+ var l = s << 1;
1734
+
1735
+ var rtwdf = Math.cos(2 * Math.PI / l);
1736
+ var itwdf = Math.sin(2 * Math.PI / l);
1737
+
1738
+ for (var p = 0; p < N; p += l) {
1739
+ var rtwdf_ = rtwdf;
1740
+ var itwdf_ = itwdf;
1741
+
1742
+ for (var j = 0; j < s; j++) {
1743
+ var re = rtws[p + j];
1744
+ var ie = itws[p + j];
1745
+
1746
+ var ro = rtws[p + j + s];
1747
+ var io = itws[p + j + s];
1748
+
1749
+ var rx = rtwdf_ * ro - itwdf_ * io;
1750
+
1751
+ io = rtwdf_ * io + itwdf_ * ro;
1752
+ ro = rx;
1753
+
1754
+ rtws[p + j] = re + ro;
1755
+ itws[p + j] = ie + io;
1756
+
1757
+ rtws[p + j + s] = re - ro;
1758
+ itws[p + j + s] = ie - io;
1759
+
1760
+ /* jshint maxdepth : false */
1761
+ if (j !== l) {
1762
+ rx = rtwdf * rtwdf_ - itwdf * itwdf_;
1763
+
1764
+ itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
1765
+ rtwdf_ = rx;
1766
+ }
1767
+ }
1768
+ }
1769
+ }
1770
+ };
1771
+
1772
+ FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
1773
+ var N = Math.max(m, n) | 1;
1774
+ var odd = N & 1;
1775
+ var i = 0;
1776
+ for (N = N / 2 | 0; N; N = N >>> 1) {
1777
+ i++;
1778
+ }
1779
+
1780
+ return 1 << i + 1 + odd;
1781
+ };
1782
+
1783
+ FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
1784
+ if (N <= 1) return;
1785
+
1786
+ for (var i = 0; i < N / 2; i++) {
1787
+ var t = rws[i];
1788
+
1789
+ rws[i] = rws[N - i - 1];
1790
+ rws[N - i - 1] = t;
1791
+
1792
+ t = iws[i];
1793
+
1794
+ iws[i] = -iws[N - i - 1];
1795
+ iws[N - i - 1] = -t;
1796
+ }
1797
+ };
1798
+
1799
+ FFTM.prototype.normalize13b = function normalize13b (ws, N) {
1800
+ var carry = 0;
1801
+ for (var i = 0; i < N / 2; i++) {
1802
+ var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
1803
+ Math.round(ws[2 * i] / N) +
1804
+ carry;
1805
+
1806
+ ws[i] = w & 0x3ffffff;
1807
+
1808
+ if (w < 0x4000000) {
1809
+ carry = 0;
1810
+ } else {
1811
+ carry = w / 0x4000000 | 0;
1812
+ }
1813
+ }
1814
+
1815
+ return ws;
1816
+ };
1817
+
1818
+ FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
1819
+ var carry = 0;
1820
+ for (var i = 0; i < len; i++) {
1821
+ carry = carry + (ws[i] | 0);
1822
+
1823
+ rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
1824
+ rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
1825
+ }
1826
+
1827
+ // Pad with zeroes
1828
+ for (i = 2 * len; i < N; ++i) {
1829
+ rws[i] = 0;
1830
+ }
1831
+
1832
+ assert(carry === 0);
1833
+ assert((carry & ~0x1fff) === 0);
1834
+ };
1835
+
1836
+ FFTM.prototype.stub = function stub (N) {
1837
+ var ph = new Array(N);
1838
+ for (var i = 0; i < N; i++) {
1839
+ ph[i] = 0;
1840
+ }
1841
+
1842
+ return ph;
1843
+ };
1844
+
1845
+ FFTM.prototype.mulp = function mulp (x, y, out) {
1846
+ var N = 2 * this.guessLen13b(x.length, y.length);
1847
+
1848
+ var rbt = this.makeRBT(N);
1849
+
1850
+ var _ = this.stub(N);
1851
+
1852
+ var rws = new Array(N);
1853
+ var rwst = new Array(N);
1854
+ var iwst = new Array(N);
1855
+
1856
+ var nrws = new Array(N);
1857
+ var nrwst = new Array(N);
1858
+ var niwst = new Array(N);
1859
+
1860
+ var rmws = out.words;
1861
+ rmws.length = N;
1862
+
1863
+ this.convert13b(x.words, x.length, rws, N);
1864
+ this.convert13b(y.words, y.length, nrws, N);
1865
+
1866
+ this.transform(rws, _, rwst, iwst, N, rbt);
1867
+ this.transform(nrws, _, nrwst, niwst, N, rbt);
1868
+
1869
+ for (var i = 0; i < N; i++) {
1870
+ var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
1871
+ iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
1872
+ rwst[i] = rx;
1873
+ }
1874
+
1875
+ this.conjugate(rwst, iwst, N);
1876
+ this.transform(rwst, iwst, rmws, _, N, rbt);
1877
+ this.conjugate(rmws, _, N);
1878
+ this.normalize13b(rmws, N);
1879
+
1880
+ out.negative = x.negative ^ y.negative;
1881
+ out.length = x.length + y.length;
1882
+ return out.strip();
1883
+ };
1884
+
1885
+ // Multiply `this` by `num`
1886
+ BN.prototype.mul = function mul (num) {
1887
+ var out = new BN(null);
1888
+ out.words = new Array(this.length + num.length);
1889
+ return this.mulTo(num, out);
1890
+ };
1891
+
1892
+ // Multiply employing FFT
1893
+ BN.prototype.mulf = function mulf (num) {
1894
+ var out = new BN(null);
1895
+ out.words = new Array(this.length + num.length);
1896
+ return jumboMulTo(this, num, out);
1897
+ };
1898
+
1899
+ // In-place Multiplication
1900
+ BN.prototype.imul = function imul (num) {
1901
+ return this.clone().mulTo(num, this);
1902
+ };
1903
+
1904
+ BN.prototype.imuln = function imuln (num) {
1905
+ assert(typeof num === 'number');
1906
+ assert(num < 0x4000000);
1907
+
1908
+ // Carry
1909
+ var carry = 0;
1910
+ for (var i = 0; i < this.length; i++) {
1911
+ var w = (this.words[i] | 0) * num;
1912
+ var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
1913
+ carry >>= 26;
1914
+ carry += (w / 0x4000000) | 0;
1915
+ // NOTE: lo is 27bit maximum
1916
+ carry += lo >>> 26;
1917
+ this.words[i] = lo & 0x3ffffff;
1918
+ }
1919
+
1920
+ if (carry !== 0) {
1921
+ this.words[i] = carry;
1922
+ this.length++;
1923
+ }
1924
+ this.length = num === 0 ? 1 : this.length;
1925
+
1926
+ return this;
1927
+ };
1928
+
1929
+ BN.prototype.muln = function muln (num) {
1930
+ return this.clone().imuln(num);
1931
+ };
1932
+
1933
+ // `this` * `this`
1934
+ BN.prototype.sqr = function sqr () {
1935
+ return this.mul(this);
1936
+ };
1937
+
1938
+ // `this` * `this` in-place
1939
+ BN.prototype.isqr = function isqr () {
1940
+ return this.imul(this.clone());
1941
+ };
1942
+
1943
+ // Math.pow(`this`, `num`)
1944
+ BN.prototype.pow = function pow (num) {
1945
+ var w = toBitArray(num);
1946
+ if (w.length === 0) return new BN(1);
1947
+
1948
+ // Skip leading zeroes
1949
+ var res = this;
1950
+ for (var i = 0; i < w.length; i++, res = res.sqr()) {
1951
+ if (w[i] !== 0) break;
1952
+ }
1953
+
1954
+ if (++i < w.length) {
1955
+ for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
1956
+ if (w[i] === 0) continue;
1957
+
1958
+ res = res.mul(q);
1959
+ }
1960
+ }
1961
+
1962
+ return res;
1963
+ };
1964
+
1965
+ // Shift-left in-place
1966
+ BN.prototype.iushln = function iushln (bits) {
1967
+ assert(typeof bits === 'number' && bits >= 0);
1968
+ var r = bits % 26;
1969
+ var s = (bits - r) / 26;
1970
+ var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
1971
+ var i;
1972
+
1973
+ if (r !== 0) {
1974
+ var carry = 0;
1975
+
1976
+ for (i = 0; i < this.length; i++) {
1977
+ var newCarry = this.words[i] & carryMask;
1978
+ var c = ((this.words[i] | 0) - newCarry) << r;
1979
+ this.words[i] = c | carry;
1980
+ carry = newCarry >>> (26 - r);
1981
+ }
1982
+
1983
+ if (carry) {
1984
+ this.words[i] = carry;
1985
+ this.length++;
1986
+ }
1987
+ }
1988
+
1989
+ if (s !== 0) {
1990
+ for (i = this.length - 1; i >= 0; i--) {
1991
+ this.words[i + s] = this.words[i];
1992
+ }
1993
+
1994
+ for (i = 0; i < s; i++) {
1995
+ this.words[i] = 0;
1996
+ }
1997
+
1998
+ this.length += s;
1999
+ }
2000
+
2001
+ return this.strip();
2002
+ };
2003
+
2004
+ BN.prototype.ishln = function ishln (bits) {
2005
+ // TODO(indutny): implement me
2006
+ assert(this.negative === 0);
2007
+ return this.iushln(bits);
2008
+ };
2009
+
2010
+ // Shift-right in-place
2011
+ // NOTE: `hint` is a lowest bit before trailing zeroes
2012
+ // NOTE: if `extended` is present - it will be filled with destroyed bits
2013
+ BN.prototype.iushrn = function iushrn (bits, hint, extended) {
2014
+ assert(typeof bits === 'number' && bits >= 0);
2015
+ var h;
2016
+ if (hint) {
2017
+ h = (hint - (hint % 26)) / 26;
2018
+ } else {
2019
+ h = 0;
2020
+ }
2021
+
2022
+ var r = bits % 26;
2023
+ var s = Math.min((bits - r) / 26, this.length);
2024
+ var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
2025
+ var maskedWords = extended;
2026
+
2027
+ h -= s;
2028
+ h = Math.max(0, h);
2029
+
2030
+ // Extended mode, copy masked part
2031
+ if (maskedWords) {
2032
+ for (var i = 0; i < s; i++) {
2033
+ maskedWords.words[i] = this.words[i];
2034
+ }
2035
+ maskedWords.length = s;
2036
+ }
2037
+
2038
+ if (s === 0) {
2039
+ // No-op, we should not move anything at all
2040
+ } else if (this.length > s) {
2041
+ this.length -= s;
2042
+ for (i = 0; i < this.length; i++) {
2043
+ this.words[i] = this.words[i + s];
2044
+ }
2045
+ } else {
2046
+ this.words[0] = 0;
2047
+ this.length = 1;
2048
+ }
2049
+
2050
+ var carry = 0;
2051
+ for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
2052
+ var word = this.words[i] | 0;
2053
+ this.words[i] = (carry << (26 - r)) | (word >>> r);
2054
+ carry = word & mask;
2055
+ }
2056
+
2057
+ // Push carried bits as a mask
2058
+ if (maskedWords && carry !== 0) {
2059
+ maskedWords.words[maskedWords.length++] = carry;
2060
+ }
2061
+
2062
+ if (this.length === 0) {
2063
+ this.words[0] = 0;
2064
+ this.length = 1;
2065
+ }
2066
+
2067
+ return this.strip();
2068
+ };
2069
+
2070
+ BN.prototype.ishrn = function ishrn (bits, hint, extended) {
2071
+ // TODO(indutny): implement me
2072
+ assert(this.negative === 0);
2073
+ return this.iushrn(bits, hint, extended);
2074
+ };
2075
+
2076
+ // Shift-left
2077
+ BN.prototype.shln = function shln (bits) {
2078
+ return this.clone().ishln(bits);
2079
+ };
2080
+
2081
+ BN.prototype.ushln = function ushln (bits) {
2082
+ return this.clone().iushln(bits);
2083
+ };
2084
+
2085
+ // Shift-right
2086
+ BN.prototype.shrn = function shrn (bits) {
2087
+ return this.clone().ishrn(bits);
2088
+ };
2089
+
2090
+ BN.prototype.ushrn = function ushrn (bits) {
2091
+ return this.clone().iushrn(bits);
2092
+ };
2093
+
2094
+ // Test if n bit is set
2095
+ BN.prototype.testn = function testn (bit) {
2096
+ assert(typeof bit === 'number' && bit >= 0);
2097
+ var r = bit % 26;
2098
+ var s = (bit - r) / 26;
2099
+ var q = 1 << r;
2100
+
2101
+ // Fast case: bit is much higher than all existing words
2102
+ if (this.length <= s) return false;
2103
+
2104
+ // Check bit and return
2105
+ var w = this.words[s];
2106
+
2107
+ return !!(w & q);
2108
+ };
2109
+
2110
+ // Return only lowers bits of number (in-place)
2111
+ BN.prototype.imaskn = function imaskn (bits) {
2112
+ assert(typeof bits === 'number' && bits >= 0);
2113
+ var r = bits % 26;
2114
+ var s = (bits - r) / 26;
2115
+
2116
+ assert(this.negative === 0, 'imaskn works only with positive numbers');
2117
+
2118
+ if (this.length <= s) {
2119
+ return this;
2120
+ }
2121
+
2122
+ if (r !== 0) {
2123
+ s++;
2124
+ }
2125
+ this.length = Math.min(s, this.length);
2126
+
2127
+ if (r !== 0) {
2128
+ var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
2129
+ this.words[this.length - 1] &= mask;
2130
+ }
2131
+
2132
+ return this.strip();
2133
+ };
2134
+
2135
+ // Return only lowers bits of number
2136
+ BN.prototype.maskn = function maskn (bits) {
2137
+ return this.clone().imaskn(bits);
2138
+ };
2139
+
2140
+ // Add plain number `num` to `this`
2141
+ BN.prototype.iaddn = function iaddn (num) {
2142
+ assert(typeof num === 'number');
2143
+ assert(num < 0x4000000);
2144
+ if (num < 0) return this.isubn(-num);
2145
+
2146
+ // Possible sign change
2147
+ if (this.negative !== 0) {
2148
+ if (this.length === 1 && (this.words[0] | 0) < num) {
2149
+ this.words[0] = num - (this.words[0] | 0);
2150
+ this.negative = 0;
2151
+ return this;
2152
+ }
2153
+
2154
+ this.negative = 0;
2155
+ this.isubn(num);
2156
+ this.negative = 1;
2157
+ return this;
2158
+ }
2159
+
2160
+ // Add without checks
2161
+ return this._iaddn(num);
2162
+ };
2163
+
2164
+ BN.prototype._iaddn = function _iaddn (num) {
2165
+ this.words[0] += num;
2166
+
2167
+ // Carry
2168
+ for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
2169
+ this.words[i] -= 0x4000000;
2170
+ if (i === this.length - 1) {
2171
+ this.words[i + 1] = 1;
2172
+ } else {
2173
+ this.words[i + 1]++;
2174
+ }
2175
+ }
2176
+ this.length = Math.max(this.length, i + 1);
2177
+
2178
+ return this;
2179
+ };
2180
+
2181
+ // Subtract plain number `num` from `this`
2182
+ BN.prototype.isubn = function isubn (num) {
2183
+ assert(typeof num === 'number');
2184
+ assert(num < 0x4000000);
2185
+ if (num < 0) return this.iaddn(-num);
2186
+
2187
+ if (this.negative !== 0) {
2188
+ this.negative = 0;
2189
+ this.iaddn(num);
2190
+ this.negative = 1;
2191
+ return this;
2192
+ }
2193
+
2194
+ this.words[0] -= num;
2195
+
2196
+ if (this.length === 1 && this.words[0] < 0) {
2197
+ this.words[0] = -this.words[0];
2198
+ this.negative = 1;
2199
+ } else {
2200
+ // Carry
2201
+ for (var i = 0; i < this.length && this.words[i] < 0; i++) {
2202
+ this.words[i] += 0x4000000;
2203
+ this.words[i + 1] -= 1;
2204
+ }
2205
+ }
2206
+
2207
+ return this.strip();
2208
+ };
2209
+
2210
+ BN.prototype.addn = function addn (num) {
2211
+ return this.clone().iaddn(num);
2212
+ };
2213
+
2214
+ BN.prototype.subn = function subn (num) {
2215
+ return this.clone().isubn(num);
2216
+ };
2217
+
2218
+ BN.prototype.iabs = function iabs () {
2219
+ this.negative = 0;
2220
+
2221
+ return this;
2222
+ };
2223
+
2224
+ BN.prototype.abs = function abs () {
2225
+ return this.clone().iabs();
2226
+ };
2227
+
2228
+ BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
2229
+ var len = num.length + shift;
2230
+ var i;
2231
+
2232
+ this._expand(len);
2233
+
2234
+ var w;
2235
+ var carry = 0;
2236
+ for (i = 0; i < num.length; i++) {
2237
+ w = (this.words[i + shift] | 0) + carry;
2238
+ var right = (num.words[i] | 0) * mul;
2239
+ w -= right & 0x3ffffff;
2240
+ carry = (w >> 26) - ((right / 0x4000000) | 0);
2241
+ this.words[i + shift] = w & 0x3ffffff;
2242
+ }
2243
+ for (; i < this.length - shift; i++) {
2244
+ w = (this.words[i + shift] | 0) + carry;
2245
+ carry = w >> 26;
2246
+ this.words[i + shift] = w & 0x3ffffff;
2247
+ }
2248
+
2249
+ if (carry === 0) return this.strip();
2250
+
2251
+ // Subtraction overflow
2252
+ assert(carry === -1);
2253
+ carry = 0;
2254
+ for (i = 0; i < this.length; i++) {
2255
+ w = -(this.words[i] | 0) + carry;
2256
+ carry = w >> 26;
2257
+ this.words[i] = w & 0x3ffffff;
2258
+ }
2259
+ this.negative = 1;
2260
+
2261
+ return this.strip();
2262
+ };
2263
+
2264
+ BN.prototype._wordDiv = function _wordDiv (num, mode) {
2265
+ var shift = this.length - num.length;
2266
+
2267
+ var a = this.clone();
2268
+ var b = num;
2269
+
2270
+ // Normalize
2271
+ var bhi = b.words[b.length - 1] | 0;
2272
+ var bhiBits = this._countBits(bhi);
2273
+ shift = 26 - bhiBits;
2274
+ if (shift !== 0) {
2275
+ b = b.ushln(shift);
2276
+ a.iushln(shift);
2277
+ bhi = b.words[b.length - 1] | 0;
2278
+ }
2279
+
2280
+ // Initialize quotient
2281
+ var m = a.length - b.length;
2282
+ var q;
2283
+
2284
+ if (mode !== 'mod') {
2285
+ q = new BN(null);
2286
+ q.length = m + 1;
2287
+ q.words = new Array(q.length);
2288
+ for (var i = 0; i < q.length; i++) {
2289
+ q.words[i] = 0;
2290
+ }
2291
+ }
2292
+
2293
+ var diff = a.clone()._ishlnsubmul(b, 1, m);
2294
+ if (diff.negative === 0) {
2295
+ a = diff;
2296
+ if (q) {
2297
+ q.words[m] = 1;
2298
+ }
2299
+ }
2300
+
2301
+ for (var j = m - 1; j >= 0; j--) {
2302
+ var qj = (a.words[b.length + j] | 0) * 0x4000000 +
2303
+ (a.words[b.length + j - 1] | 0);
2304
+
2305
+ // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
2306
+ // (0x7ffffff)
2307
+ qj = Math.min((qj / bhi) | 0, 0x3ffffff);
2308
+
2309
+ a._ishlnsubmul(b, qj, j);
2310
+ while (a.negative !== 0) {
2311
+ qj--;
2312
+ a.negative = 0;
2313
+ a._ishlnsubmul(b, 1, j);
2314
+ if (!a.isZero()) {
2315
+ a.negative ^= 1;
2316
+ }
2317
+ }
2318
+ if (q) {
2319
+ q.words[j] = qj;
2320
+ }
2321
+ }
2322
+ if (q) {
2323
+ q.strip();
2324
+ }
2325
+ a.strip();
2326
+
2327
+ // Denormalize
2328
+ if (mode !== 'div' && shift !== 0) {
2329
+ a.iushrn(shift);
2330
+ }
2331
+
2332
+ return {
2333
+ div: q || null,
2334
+ mod: a
2335
+ };
2336
+ };
2337
+
2338
+ // NOTE: 1) `mode` can be set to `mod` to request mod only,
2339
+ // to `div` to request div only, or be absent to
2340
+ // request both div & mod
2341
+ // 2) `positive` is true if unsigned mod is requested
2342
+ BN.prototype.divmod = function divmod (num, mode, positive) {
2343
+ assert(!num.isZero());
2344
+
2345
+ if (this.isZero()) {
2346
+ return {
2347
+ div: new BN(0),
2348
+ mod: new BN(0)
2349
+ };
2350
+ }
2351
+
2352
+ var div, mod, res;
2353
+ if (this.negative !== 0 && num.negative === 0) {
2354
+ res = this.neg().divmod(num, mode);
2355
+
2356
+ if (mode !== 'mod') {
2357
+ div = res.div.neg();
2358
+ }
2359
+
2360
+ if (mode !== 'div') {
2361
+ mod = res.mod.neg();
2362
+ if (positive && mod.negative !== 0) {
2363
+ mod.iadd(num);
2364
+ }
2365
+ }
2366
+
2367
+ return {
2368
+ div: div,
2369
+ mod: mod
2370
+ };
2371
+ }
2372
+
2373
+ if (this.negative === 0 && num.negative !== 0) {
2374
+ res = this.divmod(num.neg(), mode);
2375
+
2376
+ if (mode !== 'mod') {
2377
+ div = res.div.neg();
2378
+ }
2379
+
2380
+ return {
2381
+ div: div,
2382
+ mod: res.mod
2383
+ };
2384
+ }
2385
+
2386
+ if ((this.negative & num.negative) !== 0) {
2387
+ res = this.neg().divmod(num.neg(), mode);
2388
+
2389
+ if (mode !== 'div') {
2390
+ mod = res.mod.neg();
2391
+ if (positive && mod.negative !== 0) {
2392
+ mod.isub(num);
2393
+ }
2394
+ }
2395
+
2396
+ return {
2397
+ div: res.div,
2398
+ mod: mod
2399
+ };
2400
+ }
2401
+
2402
+ // Both numbers are positive at this point
2403
+
2404
+ // Strip both numbers to approximate shift value
2405
+ if (num.length > this.length || this.cmp(num) < 0) {
2406
+ return {
2407
+ div: new BN(0),
2408
+ mod: this
2409
+ };
2410
+ }
2411
+
2412
+ // Very short reduction
2413
+ if (num.length === 1) {
2414
+ if (mode === 'div') {
2415
+ return {
2416
+ div: this.divn(num.words[0]),
2417
+ mod: null
2418
+ };
2419
+ }
2420
+
2421
+ if (mode === 'mod') {
2422
+ return {
2423
+ div: null,
2424
+ mod: new BN(this.modn(num.words[0]))
2425
+ };
2426
+ }
2427
+
2428
+ return {
2429
+ div: this.divn(num.words[0]),
2430
+ mod: new BN(this.modn(num.words[0]))
2431
+ };
2432
+ }
2433
+
2434
+ return this._wordDiv(num, mode);
2435
+ };
2436
+
2437
+ // Find `this` / `num`
2438
+ BN.prototype.div = function div (num) {
2439
+ return this.divmod(num, 'div', false).div;
2440
+ };
2441
+
2442
+ // Find `this` % `num`
2443
+ BN.prototype.mod = function mod (num) {
2444
+ return this.divmod(num, 'mod', false).mod;
2445
+ };
2446
+
2447
+ BN.prototype.umod = function umod (num) {
2448
+ return this.divmod(num, 'mod', true).mod;
2449
+ };
2450
+
2451
+ // Find Round(`this` / `num`)
2452
+ BN.prototype.divRound = function divRound (num) {
2453
+ var dm = this.divmod(num);
2454
+
2455
+ // Fast case - exact division
2456
+ if (dm.mod.isZero()) return dm.div;
2457
+
2458
+ var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
2459
+
2460
+ var half = num.ushrn(1);
2461
+ var r2 = num.andln(1);
2462
+ var cmp = mod.cmp(half);
2463
+
2464
+ // Round down
2465
+ if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
2466
+
2467
+ // Round up
2468
+ return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
2469
+ };
2470
+
2471
+ BN.prototype.modn = function modn (num) {
2472
+ assert(num <= 0x3ffffff);
2473
+ var p = (1 << 26) % num;
2474
+
2475
+ var acc = 0;
2476
+ for (var i = this.length - 1; i >= 0; i--) {
2477
+ acc = (p * acc + (this.words[i] | 0)) % num;
2478
+ }
2479
+
2480
+ return acc;
2481
+ };
2482
+
2483
+ // In-place division by number
2484
+ BN.prototype.idivn = function idivn (num) {
2485
+ assert(num <= 0x3ffffff);
2486
+
2487
+ var carry = 0;
2488
+ for (var i = this.length - 1; i >= 0; i--) {
2489
+ var w = (this.words[i] | 0) + carry * 0x4000000;
2490
+ this.words[i] = (w / num) | 0;
2491
+ carry = w % num;
2492
+ }
2493
+
2494
+ return this.strip();
2495
+ };
2496
+
2497
+ BN.prototype.divn = function divn (num) {
2498
+ return this.clone().idivn(num);
2499
+ };
2500
+
2501
+ BN.prototype.egcd = function egcd (p) {
2502
+ assert(p.negative === 0);
2503
+ assert(!p.isZero());
2504
+
2505
+ var x = this;
2506
+ var y = p.clone();
2507
+
2508
+ if (x.negative !== 0) {
2509
+ x = x.umod(p);
2510
+ } else {
2511
+ x = x.clone();
2512
+ }
2513
+
2514
+ // A * x + B * y = x
2515
+ var A = new BN(1);
2516
+ var B = new BN(0);
2517
+
2518
+ // C * x + D * y = y
2519
+ var C = new BN(0);
2520
+ var D = new BN(1);
2521
+
2522
+ var g = 0;
2523
+
2524
+ while (x.isEven() && y.isEven()) {
2525
+ x.iushrn(1);
2526
+ y.iushrn(1);
2527
+ ++g;
2528
+ }
2529
+
2530
+ var yp = y.clone();
2531
+ var xp = x.clone();
2532
+
2533
+ while (!x.isZero()) {
2534
+ for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
2535
+ if (i > 0) {
2536
+ x.iushrn(i);
2537
+ while (i-- > 0) {
2538
+ if (A.isOdd() || B.isOdd()) {
2539
+ A.iadd(yp);
2540
+ B.isub(xp);
2541
+ }
2542
+
2543
+ A.iushrn(1);
2544
+ B.iushrn(1);
2545
+ }
2546
+ }
2547
+
2548
+ for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
2549
+ if (j > 0) {
2550
+ y.iushrn(j);
2551
+ while (j-- > 0) {
2552
+ if (C.isOdd() || D.isOdd()) {
2553
+ C.iadd(yp);
2554
+ D.isub(xp);
2555
+ }
2556
+
2557
+ C.iushrn(1);
2558
+ D.iushrn(1);
2559
+ }
2560
+ }
2561
+
2562
+ if (x.cmp(y) >= 0) {
2563
+ x.isub(y);
2564
+ A.isub(C);
2565
+ B.isub(D);
2566
+ } else {
2567
+ y.isub(x);
2568
+ C.isub(A);
2569
+ D.isub(B);
2570
+ }
2571
+ }
2572
+
2573
+ return {
2574
+ a: C,
2575
+ b: D,
2576
+ gcd: y.iushln(g)
2577
+ };
2578
+ };
2579
+
2580
+ // This is reduced incarnation of the binary EEA
2581
+ // above, designated to invert members of the
2582
+ // _prime_ fields F(p) at a maximal speed
2583
+ BN.prototype._invmp = function _invmp (p) {
2584
+ assert(p.negative === 0);
2585
+ assert(!p.isZero());
2586
+
2587
+ var a = this;
2588
+ var b = p.clone();
2589
+
2590
+ if (a.negative !== 0) {
2591
+ a = a.umod(p);
2592
+ } else {
2593
+ a = a.clone();
2594
+ }
2595
+
2596
+ var x1 = new BN(1);
2597
+ var x2 = new BN(0);
2598
+
2599
+ var delta = b.clone();
2600
+
2601
+ while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
2602
+ for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
2603
+ if (i > 0) {
2604
+ a.iushrn(i);
2605
+ while (i-- > 0) {
2606
+ if (x1.isOdd()) {
2607
+ x1.iadd(delta);
2608
+ }
2609
+
2610
+ x1.iushrn(1);
2611
+ }
2612
+ }
2613
+
2614
+ for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
2615
+ if (j > 0) {
2616
+ b.iushrn(j);
2617
+ while (j-- > 0) {
2618
+ if (x2.isOdd()) {
2619
+ x2.iadd(delta);
2620
+ }
2621
+
2622
+ x2.iushrn(1);
2623
+ }
2624
+ }
2625
+
2626
+ if (a.cmp(b) >= 0) {
2627
+ a.isub(b);
2628
+ x1.isub(x2);
2629
+ } else {
2630
+ b.isub(a);
2631
+ x2.isub(x1);
2632
+ }
2633
+ }
2634
+
2635
+ var res;
2636
+ if (a.cmpn(1) === 0) {
2637
+ res = x1;
2638
+ } else {
2639
+ res = x2;
2640
+ }
2641
+
2642
+ if (res.cmpn(0) < 0) {
2643
+ res.iadd(p);
2644
+ }
2645
+
2646
+ return res;
2647
+ };
2648
+
2649
+ BN.prototype.gcd = function gcd (num) {
2650
+ if (this.isZero()) return num.abs();
2651
+ if (num.isZero()) return this.abs();
2652
+
2653
+ var a = this.clone();
2654
+ var b = num.clone();
2655
+ a.negative = 0;
2656
+ b.negative = 0;
2657
+
2658
+ // Remove common factor of two
2659
+ for (var shift = 0; a.isEven() && b.isEven(); shift++) {
2660
+ a.iushrn(1);
2661
+ b.iushrn(1);
2662
+ }
2663
+
2664
+ do {
2665
+ while (a.isEven()) {
2666
+ a.iushrn(1);
2667
+ }
2668
+ while (b.isEven()) {
2669
+ b.iushrn(1);
2670
+ }
2671
+
2672
+ var r = a.cmp(b);
2673
+ if (r < 0) {
2674
+ // Swap `a` and `b` to make `a` always bigger than `b`
2675
+ var t = a;
2676
+ a = b;
2677
+ b = t;
2678
+ } else if (r === 0 || b.cmpn(1) === 0) {
2679
+ break;
2680
+ }
2681
+
2682
+ a.isub(b);
2683
+ } while (true);
2684
+
2685
+ return b.iushln(shift);
2686
+ };
2687
+
2688
+ // Invert number in the field F(num)
2689
+ BN.prototype.invm = function invm (num) {
2690
+ return this.egcd(num).a.umod(num);
2691
+ };
2692
+
2693
+ BN.prototype.isEven = function isEven () {
2694
+ return (this.words[0] & 1) === 0;
2695
+ };
2696
+
2697
+ BN.prototype.isOdd = function isOdd () {
2698
+ return (this.words[0] & 1) === 1;
2699
+ };
2700
+
2701
+ // And first word and num
2702
+ BN.prototype.andln = function andln (num) {
2703
+ return this.words[0] & num;
2704
+ };
2705
+
2706
+ // Increment at the bit position in-line
2707
+ BN.prototype.bincn = function bincn (bit) {
2708
+ assert(typeof bit === 'number');
2709
+ var r = bit % 26;
2710
+ var s = (bit - r) / 26;
2711
+ var q = 1 << r;
2712
+
2713
+ // Fast case: bit is much higher than all existing words
2714
+ if (this.length <= s) {
2715
+ this._expand(s + 1);
2716
+ this.words[s] |= q;
2717
+ return this;
2718
+ }
2719
+
2720
+ // Add bit and propagate, if needed
2721
+ var carry = q;
2722
+ for (var i = s; carry !== 0 && i < this.length; i++) {
2723
+ var w = this.words[i] | 0;
2724
+ w += carry;
2725
+ carry = w >>> 26;
2726
+ w &= 0x3ffffff;
2727
+ this.words[i] = w;
2728
+ }
2729
+ if (carry !== 0) {
2730
+ this.words[i] = carry;
2731
+ this.length++;
2732
+ }
2733
+ return this;
2734
+ };
2735
+
2736
+ BN.prototype.isZero = function isZero () {
2737
+ return this.length === 1 && this.words[0] === 0;
2738
+ };
2739
+
2740
+ BN.prototype.cmpn = function cmpn (num) {
2741
+ var negative = num < 0;
2742
+
2743
+ if (this.negative !== 0 && !negative) return -1;
2744
+ if (this.negative === 0 && negative) return 1;
2745
+
2746
+ this.strip();
2747
+
2748
+ var res;
2749
+ if (this.length > 1) {
2750
+ res = 1;
2751
+ } else {
2752
+ if (negative) {
2753
+ num = -num;
2754
+ }
2755
+
2756
+ assert(num <= 0x3ffffff, 'Number is too big');
2757
+
2758
+ var w = this.words[0] | 0;
2759
+ res = w === num ? 0 : w < num ? -1 : 1;
2760
+ }
2761
+ if (this.negative !== 0) return -res | 0;
2762
+ return res;
2763
+ };
2764
+
2765
+ // Compare two numbers and return:
2766
+ // 1 - if `this` > `num`
2767
+ // 0 - if `this` == `num`
2768
+ // -1 - if `this` < `num`
2769
+ BN.prototype.cmp = function cmp (num) {
2770
+ if (this.negative !== 0 && num.negative === 0) return -1;
2771
+ if (this.negative === 0 && num.negative !== 0) return 1;
2772
+
2773
+ var res = this.ucmp(num);
2774
+ if (this.negative !== 0) return -res | 0;
2775
+ return res;
2776
+ };
2777
+
2778
+ // Unsigned comparison
2779
+ BN.prototype.ucmp = function ucmp (num) {
2780
+ // At this point both numbers have the same sign
2781
+ if (this.length > num.length) return 1;
2782
+ if (this.length < num.length) return -1;
2783
+
2784
+ var res = 0;
2785
+ for (var i = this.length - 1; i >= 0; i--) {
2786
+ var a = this.words[i] | 0;
2787
+ var b = num.words[i] | 0;
2788
+
2789
+ if (a === b) continue;
2790
+ if (a < b) {
2791
+ res = -1;
2792
+ } else if (a > b) {
2793
+ res = 1;
2794
+ }
2795
+ break;
2796
+ }
2797
+ return res;
2798
+ };
2799
+
2800
+ BN.prototype.gtn = function gtn (num) {
2801
+ return this.cmpn(num) === 1;
2802
+ };
2803
+
2804
+ BN.prototype.gt = function gt (num) {
2805
+ return this.cmp(num) === 1;
2806
+ };
2807
+
2808
+ BN.prototype.gten = function gten (num) {
2809
+ return this.cmpn(num) >= 0;
2810
+ };
2811
+
2812
+ BN.prototype.gte = function gte (num) {
2813
+ return this.cmp(num) >= 0;
2814
+ };
2815
+
2816
+ BN.prototype.ltn = function ltn (num) {
2817
+ return this.cmpn(num) === -1;
2818
+ };
2819
+
2820
+ BN.prototype.lt = function lt (num) {
2821
+ return this.cmp(num) === -1;
2822
+ };
2823
+
2824
+ BN.prototype.lten = function lten (num) {
2825
+ return this.cmpn(num) <= 0;
2826
+ };
2827
+
2828
+ BN.prototype.lte = function lte (num) {
2829
+ return this.cmp(num) <= 0;
2830
+ };
2831
+
2832
+ BN.prototype.eqn = function eqn (num) {
2833
+ return this.cmpn(num) === 0;
2834
+ };
2835
+
2836
+ BN.prototype.eq = function eq (num) {
2837
+ return this.cmp(num) === 0;
2838
+ };
2839
+
2840
+ //
2841
+ // A reduce context, could be using montgomery or something better, depending
2842
+ // on the `m` itself.
2843
+ //
2844
+ BN.red = function red (num) {
2845
+ return new Red(num);
2846
+ };
2847
+
2848
+ BN.prototype.toRed = function toRed (ctx) {
2849
+ assert(!this.red, 'Already a number in reduction context');
2850
+ assert(this.negative === 0, 'red works only with positives');
2851
+ return ctx.convertTo(this)._forceRed(ctx);
2852
+ };
2853
+
2854
+ BN.prototype.fromRed = function fromRed () {
2855
+ assert(this.red, 'fromRed works only with numbers in reduction context');
2856
+ return this.red.convertFrom(this);
2857
+ };
2858
+
2859
+ BN.prototype._forceRed = function _forceRed (ctx) {
2860
+ this.red = ctx;
2861
+ return this;
2862
+ };
2863
+
2864
+ BN.prototype.forceRed = function forceRed (ctx) {
2865
+ assert(!this.red, 'Already a number in reduction context');
2866
+ return this._forceRed(ctx);
2867
+ };
2868
+
2869
+ BN.prototype.redAdd = function redAdd (num) {
2870
+ assert(this.red, 'redAdd works only with red numbers');
2871
+ return this.red.add(this, num);
2872
+ };
2873
+
2874
+ BN.prototype.redIAdd = function redIAdd (num) {
2875
+ assert(this.red, 'redIAdd works only with red numbers');
2876
+ return this.red.iadd(this, num);
2877
+ };
2878
+
2879
+ BN.prototype.redSub = function redSub (num) {
2880
+ assert(this.red, 'redSub works only with red numbers');
2881
+ return this.red.sub(this, num);
2882
+ };
2883
+
2884
+ BN.prototype.redISub = function redISub (num) {
2885
+ assert(this.red, 'redISub works only with red numbers');
2886
+ return this.red.isub(this, num);
2887
+ };
2888
+
2889
+ BN.prototype.redShl = function redShl (num) {
2890
+ assert(this.red, 'redShl works only with red numbers');
2891
+ return this.red.shl(this, num);
2892
+ };
2893
+
2894
+ BN.prototype.redMul = function redMul (num) {
2895
+ assert(this.red, 'redMul works only with red numbers');
2896
+ this.red._verify2(this, num);
2897
+ return this.red.mul(this, num);
2898
+ };
2899
+
2900
+ BN.prototype.redIMul = function redIMul (num) {
2901
+ assert(this.red, 'redMul works only with red numbers');
2902
+ this.red._verify2(this, num);
2903
+ return this.red.imul(this, num);
2904
+ };
2905
+
2906
+ BN.prototype.redSqr = function redSqr () {
2907
+ assert(this.red, 'redSqr works only with red numbers');
2908
+ this.red._verify1(this);
2909
+ return this.red.sqr(this);
2910
+ };
2911
+
2912
+ BN.prototype.redISqr = function redISqr () {
2913
+ assert(this.red, 'redISqr works only with red numbers');
2914
+ this.red._verify1(this);
2915
+ return this.red.isqr(this);
2916
+ };
2917
+
2918
+ // Square root over p
2919
+ BN.prototype.redSqrt = function redSqrt () {
2920
+ assert(this.red, 'redSqrt works only with red numbers');
2921
+ this.red._verify1(this);
2922
+ return this.red.sqrt(this);
2923
+ };
2924
+
2925
+ BN.prototype.redInvm = function redInvm () {
2926
+ assert(this.red, 'redInvm works only with red numbers');
2927
+ this.red._verify1(this);
2928
+ return this.red.invm(this);
2929
+ };
2930
+
2931
+ // Return negative clone of `this` % `red modulo`
2932
+ BN.prototype.redNeg = function redNeg () {
2933
+ assert(this.red, 'redNeg works only with red numbers');
2934
+ this.red._verify1(this);
2935
+ return this.red.neg(this);
2936
+ };
2937
+
2938
+ BN.prototype.redPow = function redPow (num) {
2939
+ assert(this.red && !num.red, 'redPow(normalNum)');
2940
+ this.red._verify1(this);
2941
+ return this.red.pow(this, num);
2942
+ };
2943
+
2944
+ // Prime numbers with efficient reduction
2945
+ var primes = {
2946
+ k256: null,
2947
+ p224: null,
2948
+ p192: null,
2949
+ p25519: null
2950
+ };
2951
+
2952
+ // Pseudo-Mersenne prime
2953
+ function MPrime (name, p) {
2954
+ // P = 2 ^ N - K
2955
+ this.name = name;
2956
+ this.p = new BN(p, 16);
2957
+ this.n = this.p.bitLength();
2958
+ this.k = new BN(1).iushln(this.n).isub(this.p);
2959
+
2960
+ this.tmp = this._tmp();
2961
+ }
2962
+
2963
+ MPrime.prototype._tmp = function _tmp () {
2964
+ var tmp = new BN(null);
2965
+ tmp.words = new Array(Math.ceil(this.n / 13));
2966
+ return tmp;
2967
+ };
2968
+
2969
+ MPrime.prototype.ireduce = function ireduce (num) {
2970
+ // Assumes that `num` is less than `P^2`
2971
+ // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
2972
+ var r = num;
2973
+ var rlen;
2974
+
2975
+ do {
2976
+ this.split(r, this.tmp);
2977
+ r = this.imulK(r);
2978
+ r = r.iadd(this.tmp);
2979
+ rlen = r.bitLength();
2980
+ } while (rlen > this.n);
2981
+
2982
+ var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
2983
+ if (cmp === 0) {
2984
+ r.words[0] = 0;
2985
+ r.length = 1;
2986
+ } else if (cmp > 0) {
2987
+ r.isub(this.p);
2988
+ } else {
2989
+ if (r.strip !== undefined) {
2990
+ // r is BN v4 instance
2991
+ r.strip();
2992
+ } else {
2993
+ // r is BN v5 instance
2994
+ r._strip();
2995
+ }
2996
+ }
2997
+
2998
+ return r;
2999
+ };
3000
+
3001
+ MPrime.prototype.split = function split (input, out) {
3002
+ input.iushrn(this.n, 0, out);
3003
+ };
3004
+
3005
+ MPrime.prototype.imulK = function imulK (num) {
3006
+ return num.imul(this.k);
3007
+ };
3008
+
3009
+ function K256 () {
3010
+ MPrime.call(
3011
+ this,
3012
+ 'k256',
3013
+ 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
3014
+ }
3015
+ inherits(K256, MPrime);
3016
+
3017
+ K256.prototype.split = function split (input, output) {
3018
+ // 256 = 9 * 26 + 22
3019
+ var mask = 0x3fffff;
3020
+
3021
+ var outLen = Math.min(input.length, 9);
3022
+ for (var i = 0; i < outLen; i++) {
3023
+ output.words[i] = input.words[i];
3024
+ }
3025
+ output.length = outLen;
3026
+
3027
+ if (input.length <= 9) {
3028
+ input.words[0] = 0;
3029
+ input.length = 1;
3030
+ return;
3031
+ }
3032
+
3033
+ // Shift by 9 limbs
3034
+ var prev = input.words[9];
3035
+ output.words[output.length++] = prev & mask;
3036
+
3037
+ for (i = 10; i < input.length; i++) {
3038
+ var next = input.words[i] | 0;
3039
+ input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
3040
+ prev = next;
3041
+ }
3042
+ prev >>>= 22;
3043
+ input.words[i - 10] = prev;
3044
+ if (prev === 0 && input.length > 10) {
3045
+ input.length -= 10;
3046
+ } else {
3047
+ input.length -= 9;
3048
+ }
3049
+ };
3050
+
3051
+ K256.prototype.imulK = function imulK (num) {
3052
+ // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
3053
+ num.words[num.length] = 0;
3054
+ num.words[num.length + 1] = 0;
3055
+ num.length += 2;
3056
+
3057
+ // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
3058
+ var lo = 0;
3059
+ for (var i = 0; i < num.length; i++) {
3060
+ var w = num.words[i] | 0;
3061
+ lo += w * 0x3d1;
3062
+ num.words[i] = lo & 0x3ffffff;
3063
+ lo = w * 0x40 + ((lo / 0x4000000) | 0);
3064
+ }
3065
+
3066
+ // Fast length reduction
3067
+ if (num.words[num.length - 1] === 0) {
3068
+ num.length--;
3069
+ if (num.words[num.length - 1] === 0) {
3070
+ num.length--;
3071
+ }
3072
+ }
3073
+ return num;
3074
+ };
3075
+
3076
+ function P224 () {
3077
+ MPrime.call(
3078
+ this,
3079
+ 'p224',
3080
+ 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
3081
+ }
3082
+ inherits(P224, MPrime);
3083
+
3084
+ function P192 () {
3085
+ MPrime.call(
3086
+ this,
3087
+ 'p192',
3088
+ 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
3089
+ }
3090
+ inherits(P192, MPrime);
3091
+
3092
+ function P25519 () {
3093
+ // 2 ^ 255 - 19
3094
+ MPrime.call(
3095
+ this,
3096
+ '25519',
3097
+ '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
3098
+ }
3099
+ inherits(P25519, MPrime);
3100
+
3101
+ P25519.prototype.imulK = function imulK (num) {
3102
+ // K = 0x13
3103
+ var carry = 0;
3104
+ for (var i = 0; i < num.length; i++) {
3105
+ var hi = (num.words[i] | 0) * 0x13 + carry;
3106
+ var lo = hi & 0x3ffffff;
3107
+ hi >>>= 26;
3108
+
3109
+ num.words[i] = lo;
3110
+ carry = hi;
3111
+ }
3112
+ if (carry !== 0) {
3113
+ num.words[num.length++] = carry;
3114
+ }
3115
+ return num;
3116
+ };
3117
+
3118
+ // Exported mostly for testing purposes, use plain name instead
3119
+ BN._prime = function prime (name) {
3120
+ // Cached version of prime
3121
+ if (primes[name]) return primes[name];
3122
+
3123
+ var prime;
3124
+ if (name === 'k256') {
3125
+ prime = new K256();
3126
+ } else if (name === 'p224') {
3127
+ prime = new P224();
3128
+ } else if (name === 'p192') {
3129
+ prime = new P192();
3130
+ } else if (name === 'p25519') {
3131
+ prime = new P25519();
3132
+ } else {
3133
+ throw new Error('Unknown prime ' + name);
3134
+ }
3135
+ primes[name] = prime;
3136
+
3137
+ return prime;
3138
+ };
3139
+
3140
+ //
3141
+ // Base reduction engine
3142
+ //
3143
+ function Red (m) {
3144
+ if (typeof m === 'string') {
3145
+ var prime = BN._prime(m);
3146
+ this.m = prime.p;
3147
+ this.prime = prime;
3148
+ } else {
3149
+ assert(m.gtn(1), 'modulus must be greater than 1');
3150
+ this.m = m;
3151
+ this.prime = null;
3152
+ }
3153
+ }
3154
+
3155
+ Red.prototype._verify1 = function _verify1 (a) {
3156
+ assert(a.negative === 0, 'red works only with positives');
3157
+ assert(a.red, 'red works only with red numbers');
3158
+ };
3159
+
3160
+ Red.prototype._verify2 = function _verify2 (a, b) {
3161
+ assert((a.negative | b.negative) === 0, 'red works only with positives');
3162
+ assert(a.red && a.red === b.red,
3163
+ 'red works only with red numbers');
3164
+ };
3165
+
3166
+ Red.prototype.imod = function imod (a) {
3167
+ if (this.prime) return this.prime.ireduce(a)._forceRed(this);
3168
+ return a.umod(this.m)._forceRed(this);
3169
+ };
3170
+
3171
+ Red.prototype.neg = function neg (a) {
3172
+ if (a.isZero()) {
3173
+ return a.clone();
3174
+ }
3175
+
3176
+ return this.m.sub(a)._forceRed(this);
3177
+ };
3178
+
3179
+ Red.prototype.add = function add (a, b) {
3180
+ this._verify2(a, b);
3181
+
3182
+ var res = a.add(b);
3183
+ if (res.cmp(this.m) >= 0) {
3184
+ res.isub(this.m);
3185
+ }
3186
+ return res._forceRed(this);
3187
+ };
3188
+
3189
+ Red.prototype.iadd = function iadd (a, b) {
3190
+ this._verify2(a, b);
3191
+
3192
+ var res = a.iadd(b);
3193
+ if (res.cmp(this.m) >= 0) {
3194
+ res.isub(this.m);
3195
+ }
3196
+ return res;
3197
+ };
3198
+
3199
+ Red.prototype.sub = function sub (a, b) {
3200
+ this._verify2(a, b);
3201
+
3202
+ var res = a.sub(b);
3203
+ if (res.cmpn(0) < 0) {
3204
+ res.iadd(this.m);
3205
+ }
3206
+ return res._forceRed(this);
3207
+ };
3208
+
3209
+ Red.prototype.isub = function isub (a, b) {
3210
+ this._verify2(a, b);
3211
+
3212
+ var res = a.isub(b);
3213
+ if (res.cmpn(0) < 0) {
3214
+ res.iadd(this.m);
3215
+ }
3216
+ return res;
3217
+ };
3218
+
3219
+ Red.prototype.shl = function shl (a, num) {
3220
+ this._verify1(a);
3221
+ return this.imod(a.ushln(num));
3222
+ };
3223
+
3224
+ Red.prototype.imul = function imul (a, b) {
3225
+ this._verify2(a, b);
3226
+ return this.imod(a.imul(b));
3227
+ };
3228
+
3229
+ Red.prototype.mul = function mul (a, b) {
3230
+ this._verify2(a, b);
3231
+ return this.imod(a.mul(b));
3232
+ };
3233
+
3234
+ Red.prototype.isqr = function isqr (a) {
3235
+ return this.imul(a, a.clone());
3236
+ };
3237
+
3238
+ Red.prototype.sqr = function sqr (a) {
3239
+ return this.mul(a, a);
3240
+ };
3241
+
3242
+ Red.prototype.sqrt = function sqrt (a) {
3243
+ if (a.isZero()) return a.clone();
3244
+
3245
+ var mod3 = this.m.andln(3);
3246
+ assert(mod3 % 2 === 1);
3247
+
3248
+ // Fast case
3249
+ if (mod3 === 3) {
3250
+ var pow = this.m.add(new BN(1)).iushrn(2);
3251
+ return this.pow(a, pow);
3252
+ }
3253
+
3254
+ // Tonelli-Shanks algorithm (Totally unoptimized and slow)
3255
+ //
3256
+ // Find Q and S, that Q * 2 ^ S = (P - 1)
3257
+ var q = this.m.subn(1);
3258
+ var s = 0;
3259
+ while (!q.isZero() && q.andln(1) === 0) {
3260
+ s++;
3261
+ q.iushrn(1);
3262
+ }
3263
+ assert(!q.isZero());
3264
+
3265
+ var one = new BN(1).toRed(this);
3266
+ var nOne = one.redNeg();
3267
+
3268
+ // Find quadratic non-residue
3269
+ // NOTE: Max is such because of generalized Riemann hypothesis.
3270
+ var lpow = this.m.subn(1).iushrn(1);
3271
+ var z = this.m.bitLength();
3272
+ z = new BN(2 * z * z).toRed(this);
3273
+
3274
+ while (this.pow(z, lpow).cmp(nOne) !== 0) {
3275
+ z.redIAdd(nOne);
3276
+ }
3277
+
3278
+ var c = this.pow(z, q);
3279
+ var r = this.pow(a, q.addn(1).iushrn(1));
3280
+ var t = this.pow(a, q);
3281
+ var m = s;
3282
+ while (t.cmp(one) !== 0) {
3283
+ var tmp = t;
3284
+ for (var i = 0; tmp.cmp(one) !== 0; i++) {
3285
+ tmp = tmp.redSqr();
3286
+ }
3287
+ assert(i < m);
3288
+ var b = this.pow(c, new BN(1).iushln(m - i - 1));
3289
+
3290
+ r = r.redMul(b);
3291
+ c = b.redSqr();
3292
+ t = t.redMul(c);
3293
+ m = i;
3294
+ }
3295
+
3296
+ return r;
3297
+ };
3298
+
3299
+ Red.prototype.invm = function invm (a) {
3300
+ var inv = a._invmp(this.m);
3301
+ if (inv.negative !== 0) {
3302
+ inv.negative = 0;
3303
+ return this.imod(inv).redNeg();
3304
+ } else {
3305
+ return this.imod(inv);
3306
+ }
3307
+ };
3308
+
3309
+ Red.prototype.pow = function pow (a, num) {
3310
+ if (num.isZero()) return new BN(1).toRed(this);
3311
+ if (num.cmpn(1) === 0) return a.clone();
3312
+
3313
+ var windowSize = 4;
3314
+ var wnd = new Array(1 << windowSize);
3315
+ wnd[0] = new BN(1).toRed(this);
3316
+ wnd[1] = a;
3317
+ for (var i = 2; i < wnd.length; i++) {
3318
+ wnd[i] = this.mul(wnd[i - 1], a);
3319
+ }
3320
+
3321
+ var res = wnd[0];
3322
+ var current = 0;
3323
+ var currentLen = 0;
3324
+ var start = num.bitLength() % 26;
3325
+ if (start === 0) {
3326
+ start = 26;
3327
+ }
3328
+
3329
+ for (i = num.length - 1; i >= 0; i--) {
3330
+ var word = num.words[i];
3331
+ for (var j = start - 1; j >= 0; j--) {
3332
+ var bit = (word >> j) & 1;
3333
+ if (res !== wnd[0]) {
3334
+ res = this.sqr(res);
3335
+ }
3336
+
3337
+ if (bit === 0 && current === 0) {
3338
+ currentLen = 0;
3339
+ continue;
3340
+ }
3341
+
3342
+ current <<= 1;
3343
+ current |= bit;
3344
+ currentLen++;
3345
+ if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
3346
+
3347
+ res = this.mul(res, wnd[current]);
3348
+ currentLen = 0;
3349
+ current = 0;
3350
+ }
3351
+ start = 26;
3352
+ }
3353
+
3354
+ return res;
3355
+ };
3356
+
3357
+ Red.prototype.convertTo = function convertTo (num) {
3358
+ var r = num.umod(this.m);
3359
+
3360
+ return r === num ? r.clone() : r;
3361
+ };
3362
+
3363
+ Red.prototype.convertFrom = function convertFrom (num) {
3364
+ var res = num.clone();
3365
+ res.red = null;
3366
+ return res;
3367
+ };
3368
+
3369
+ //
3370
+ // Montgomery method engine
3371
+ //
3372
+
3373
+ BN.mont = function mont (num) {
3374
+ return new Mont(num);
3375
+ };
3376
+
3377
+ function Mont (m) {
3378
+ Red.call(this, m);
3379
+
3380
+ this.shift = this.m.bitLength();
3381
+ if (this.shift % 26 !== 0) {
3382
+ this.shift += 26 - (this.shift % 26);
3383
+ }
3384
+
3385
+ this.r = new BN(1).iushln(this.shift);
3386
+ this.r2 = this.imod(this.r.sqr());
3387
+ this.rinv = this.r._invmp(this.m);
3388
+
3389
+ this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
3390
+ this.minv = this.minv.umod(this.r);
3391
+ this.minv = this.r.sub(this.minv);
3392
+ }
3393
+ inherits(Mont, Red);
3394
+
3395
+ Mont.prototype.convertTo = function convertTo (num) {
3396
+ return this.imod(num.ushln(this.shift));
3397
+ };
3398
+
3399
+ Mont.prototype.convertFrom = function convertFrom (num) {
3400
+ var r = this.imod(num.mul(this.rinv));
3401
+ r.red = null;
3402
+ return r;
3403
+ };
3404
+
3405
+ Mont.prototype.imul = function imul (a, b) {
3406
+ if (a.isZero() || b.isZero()) {
3407
+ a.words[0] = 0;
3408
+ a.length = 1;
3409
+ return a;
3410
+ }
3411
+
3412
+ var t = a.imul(b);
3413
+ var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
3414
+ var u = t.isub(c).iushrn(this.shift);
3415
+ var res = u;
3416
+
3417
+ if (u.cmp(this.m) >= 0) {
3418
+ res = u.isub(this.m);
3419
+ } else if (u.cmpn(0) < 0) {
3420
+ res = u.iadd(this.m);
3421
+ }
3422
+
3423
+ return res._forceRed(this);
3424
+ };
3425
+
3426
+ Mont.prototype.mul = function mul (a, b) {
3427
+ if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
3428
+
3429
+ var t = a.mul(b);
3430
+ var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
3431
+ var u = t.isub(c).iushrn(this.shift);
3432
+ var res = u;
3433
+ if (u.cmp(this.m) >= 0) {
3434
+ res = u.isub(this.m);
3435
+ } else if (u.cmpn(0) < 0) {
3436
+ res = u.iadd(this.m);
3437
+ }
3438
+
3439
+ return res._forceRed(this);
3440
+ };
3441
+
3442
+ Mont.prototype.invm = function invm (a) {
3443
+ // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
3444
+ var res = this.imod(a._invmp(this.m).mul(this.r2));
3445
+ return res._forceRed(this);
3446
+ };
3447
+ })(typeof module === 'undefined' || module, this);