claude-mux 0.30.13 → 0.30.14

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 (361) hide show
  1. package/CLAUDE.md +14 -3
  2. package/dist/fleet-places.d.ts +7 -1
  3. package/dist/fleet-places.d.ts.map +1 -1
  4. package/dist/fleet-places.js +14 -1
  5. package/dist/fleet-places.js.map +1 -1
  6. package/dist/server/dictation-marks.d.ts.map +1 -1
  7. package/dist/server/dictation-marks.js +23 -1
  8. package/dist/server/dictation-marks.js.map +1 -1
  9. package/dist/transcript/parser.d.ts +7 -0
  10. package/dist/transcript/parser.d.ts.map +1 -1
  11. package/dist/transcript/parser.js +19 -3
  12. package/dist/transcript/parser.js.map +1 -1
  13. package/dist/transcript/past-sessions.d.ts.map +1 -1
  14. package/dist/transcript/past-sessions.js +4 -1
  15. package/dist/transcript/past-sessions.js.map +1 -1
  16. package/dist/utils/version.d.ts +1 -1
  17. package/dist/utils/version.js +1 -1
  18. package/dist/web/client/_app/immutable/chunks/{sULMfRFG.js → B4FaHfAQ.js} +2 -2
  19. package/dist/web/client/_app/immutable/chunks/{sULMfRFG.js.map → B4FaHfAQ.js.map} +1 -1
  20. package/dist/web/client/_app/immutable/chunks/{W5_HMZ5E.js → B5Hkb2u5.js} +2 -2
  21. package/dist/web/client/_app/immutable/chunks/{W5_HMZ5E.js.map → B5Hkb2u5.js.map} +1 -1
  22. package/{web/.svelte-kit/output/client/_app/immutable/chunks/BQzv8cqz.js → dist/web/client/_app/immutable/chunks/BOpEbBRb.js} +2 -2
  23. package/{web/.svelte-kit/output/client/_app/immutable/chunks/BQzv8cqz.js.map → dist/web/client/_app/immutable/chunks/BOpEbBRb.js.map} +1 -1
  24. package/dist/web/client/_app/immutable/chunks/{Q5yhzux8.js → BeYjnogg.js} +2 -2
  25. package/{web/.svelte-kit/output/client/_app/immutable/chunks/Q5yhzux8.js.map → dist/web/client/_app/immutable/chunks/BeYjnogg.js.map} +1 -1
  26. package/dist/web/client/_app/immutable/chunks/{VceCNUd7.js → C00rm3mY.js} +2 -2
  27. package/{web/.svelte-kit/output/client/_app/immutable/chunks/VceCNUd7.js.map → dist/web/client/_app/immutable/chunks/C00rm3mY.js.map} +1 -1
  28. package/dist/web/client/_app/immutable/chunks/{CtjkAirr.js → CKg7gbPm.js} +9 -9
  29. package/dist/web/client/_app/immutable/chunks/CKg7gbPm.js.map +1 -0
  30. package/dist/web/client/_app/immutable/chunks/CPEphjdk.js +4 -0
  31. package/dist/web/client/_app/immutable/chunks/CPEphjdk.js.map +1 -0
  32. package/dist/web/client/_app/immutable/chunks/{BQQ3-rqs.js → CPlFo88J.js} +2 -2
  33. package/dist/web/client/_app/immutable/chunks/{BQQ3-rqs.js.map → CPlFo88J.js.map} +1 -1
  34. package/dist/web/client/_app/immutable/chunks/{BvX4FYxp.js → CtnjySwS.js} +2 -2
  35. package/dist/web/client/_app/immutable/chunks/{BvX4FYxp.js.map → CtnjySwS.js.map} +1 -1
  36. package/dist/web/client/_app/immutable/chunks/{XgSsj0QY.js → D3EW0jRH.js} +2 -2
  37. package/{web/.svelte-kit/output/client/_app/immutable/chunks/XgSsj0QY.js.map → dist/web/client/_app/immutable/chunks/D3EW0jRH.js.map} +1 -1
  38. package/dist/web/client/_app/immutable/chunks/{CtlIfY1C.js → D3umr-Qr.js} +2 -2
  39. package/{web/.svelte-kit/output/client/_app/immutable/chunks/CtlIfY1C.js.map → dist/web/client/_app/immutable/chunks/D3umr-Qr.js.map} +1 -1
  40. package/dist/web/client/_app/immutable/chunks/{CM0CI9GL.js → D8-_Y-M6.js} +3 -3
  41. package/dist/web/client/_app/immutable/chunks/{CM0CI9GL.js.map → D8-_Y-M6.js.map} +1 -1
  42. package/dist/web/client/_app/immutable/chunks/{cvsGFvDx.js → DDvK7Qo9.js} +2 -2
  43. package/{web/.svelte-kit/output/client/_app/immutable/chunks/cvsGFvDx.js.map → dist/web/client/_app/immutable/chunks/DDvK7Qo9.js.map} +1 -1
  44. package/dist/web/client/_app/immutable/chunks/{CiU8KBun.js → _VFi-7U7.js} +2 -2
  45. package/dist/web/client/_app/immutable/chunks/{CiU8KBun.js.map → _VFi-7U7.js.map} +1 -1
  46. package/dist/web/client/_app/immutable/chunks/{DlENCZqZ.js → mQ6hkLuy.js} +2 -2
  47. package/dist/web/client/_app/immutable/chunks/{DlENCZqZ.js.map → mQ6hkLuy.js.map} +1 -1
  48. package/dist/web/client/_app/immutable/entry/{app.BwTbN8wB.js → app.CTFza_OS.js} +3 -3
  49. package/{web/.svelte-kit/output/client/_app/immutable/entry/app.BwTbN8wB.js.map → dist/web/client/_app/immutable/entry/app.CTFza_OS.js.map} +1 -1
  50. package/dist/web/client/_app/immutable/entry/start.B-zlkyrt.js +2 -0
  51. package/dist/web/client/_app/immutable/entry/start.B-zlkyrt.js.map +1 -0
  52. package/{web/.svelte-kit/output/client/_app/immutable/nodes/0.BnHV-ElR.js → dist/web/client/_app/immutable/nodes/0.Cztuq8Ih.js} +2 -2
  53. package/dist/web/client/_app/immutable/nodes/{0.BnHV-ElR.js.map → 0.Cztuq8Ih.js.map} +1 -1
  54. package/dist/web/client/_app/immutable/nodes/{1.Dc3ryOCf.js → 1.BOOL0V7K.js} +2 -2
  55. package/dist/web/client/_app/immutable/nodes/{1.Dc3ryOCf.js.map → 1.BOOL0V7K.js.map} +1 -1
  56. package/dist/web/client/_app/immutable/nodes/{2.DUrpAceY.js → 2.CArUpZNe.js} +2 -2
  57. package/dist/web/client/_app/immutable/nodes/{2.DUrpAceY.js.map → 2.CArUpZNe.js.map} +1 -1
  58. package/dist/web/client/_app/immutable/nodes/{3.BaCofjAn.js → 3.DSvIWalA.js} +2 -2
  59. package/dist/web/client/_app/immutable/nodes/{3.BaCofjAn.js.map → 3.DSvIWalA.js.map} +1 -1
  60. package/dist/web/client/_app/immutable/nodes/{4.v1wYkrvS.js → 4.H6RMG_cy.js} +2 -2
  61. package/dist/web/client/_app/immutable/nodes/{4.v1wYkrvS.js.map → 4.H6RMG_cy.js.map} +1 -1
  62. package/dist/web/client/_app/immutable/nodes/{5.Bn4A77jK.js → 5.BHSt0Suo.js} +2 -2
  63. package/dist/web/client/_app/immutable/nodes/{5.Bn4A77jK.js.map → 5.BHSt0Suo.js.map} +1 -1
  64. package/dist/web/client/_app/immutable/nodes/{6.C2hEoITj.js → 6.CzLoA0w7.js} +2 -2
  65. package/dist/web/client/_app/immutable/nodes/{6.C2hEoITj.js.map → 6.CzLoA0w7.js.map} +1 -1
  66. package/dist/web/client/_app/immutable/nodes/{7.BcHOjWdp.js → 7.fqq2vVa9.js} +2 -2
  67. package/dist/web/client/_app/immutable/nodes/{7.BcHOjWdp.js.map → 7.fqq2vVa9.js.map} +1 -1
  68. package/dist/web/client/_app/immutable/nodes/{8.D7NtqIYy.js → 8.DNFFjTla.js} +2 -2
  69. package/dist/web/client/_app/immutable/nodes/{8.D7NtqIYy.js.map → 8.DNFFjTla.js.map} +1 -1
  70. package/dist/web/client/_app/immutable/nodes/{9.D-211z9-.js → 9.0kMPrp2-.js} +2 -2
  71. package/dist/web/client/_app/immutable/nodes/{9.D-211z9-.js.map → 9.0kMPrp2-.js.map} +1 -1
  72. package/dist/web/client/_app/version.json +1 -1
  73. package/dist/web/server/chunks/{0-CvglVGCY.js → 0-B_KxXX-N.js} +14 -14
  74. package/dist/web/server/chunks/{0-CvglVGCY.js.map → 0-B_KxXX-N.js.map} +1 -1
  75. package/dist/web/server/chunks/{1-D-gJDFrG.js → 1-BmEKuUDK.js} +4 -4
  76. package/dist/web/server/chunks/{1-D-gJDFrG.js.map → 1-BmEKuUDK.js.map} +1 -1
  77. package/dist/web/server/chunks/{2-BCmEU5Qq.js → 2-BJ3dzws2.js} +13 -13
  78. package/dist/web/server/chunks/{2-BCmEU5Qq.js.map → 2-BJ3dzws2.js.map} +1 -1
  79. package/dist/web/server/chunks/{3-CHn5Kw-T.js → 3-CLYKGzT3.js} +10 -10
  80. package/dist/web/server/chunks/{3-CHn5Kw-T.js.map → 3-CLYKGzT3.js.map} +1 -1
  81. package/dist/web/server/chunks/{4-Cxg7VcZ7.js → 4-CsoWHVgX.js} +12 -12
  82. package/dist/web/server/chunks/{4-Cxg7VcZ7.js.map → 4-CsoWHVgX.js.map} +1 -1
  83. package/dist/web/server/chunks/{5-DSgvnHF_.js → 5-oPM6ncgT.js} +9 -9
  84. package/dist/web/server/chunks/{5-DSgvnHF_.js.map → 5-oPM6ncgT.js.map} +1 -1
  85. package/dist/web/server/chunks/{6-B0rymWRR.js → 6-gvgju2ZN.js} +5 -5
  86. package/dist/web/server/chunks/{6-B0rymWRR.js.map → 6-gvgju2ZN.js.map} +1 -1
  87. package/dist/web/server/chunks/{7-CNomBJux.js → 7-D8hylKrz.js} +10 -10
  88. package/dist/web/server/chunks/{7-CNomBJux.js.map → 7-D8hylKrz.js.map} +1 -1
  89. package/dist/web/server/chunks/{8-TYbX-1bO.js → 8-Br4hTtby.js} +12 -12
  90. package/dist/web/server/chunks/{8-TYbX-1bO.js.map → 8-Br4hTtby.js.map} +1 -1
  91. package/dist/web/server/chunks/{9-XGQQvTLc.js → 9-9uvmfsEs.js} +9 -9
  92. package/dist/web/server/chunks/{9-XGQQvTLc.js.map → 9-9uvmfsEs.js.map} +1 -1
  93. package/dist/web/server/chunks/{_layout.svelte-yrPX5VFm.js → _layout.svelte-DamAAFpK.js} +58 -37
  94. package/dist/web/server/chunks/_layout.svelte-DamAAFpK.js.map +1 -0
  95. package/dist/web/server/chunks/{_page.svelte-C_kFA0Lq.js → _page.svelte-DFE4jmT9.js} +4 -4
  96. package/dist/web/server/chunks/{_page.svelte-C_kFA0Lq.js.map → _page.svelte-DFE4jmT9.js.map} +1 -1
  97. package/dist/web/server/chunks/{_page.svelte-DvxpwsgS.js → _page.svelte-DHPGbCS1.js} +6 -6
  98. package/dist/web/server/chunks/{_page.svelte-DvxpwsgS.js.map → _page.svelte-DHPGbCS1.js.map} +1 -1
  99. package/dist/web/server/chunks/{_server.ts-Dz01Gvhk.js → _server.ts-0RT4n9LX.js} +2 -2
  100. package/dist/web/server/chunks/{_server.ts-Dz01Gvhk.js.map → _server.ts-0RT4n9LX.js.map} +1 -1
  101. package/dist/web/server/chunks/{_server.ts-D2Tvcncu.js → _server.ts-3kbpguQ1.js} +3 -3
  102. package/dist/web/server/chunks/{_server.ts-D2Tvcncu.js.map → _server.ts-3kbpguQ1.js.map} +1 -1
  103. package/dist/web/server/chunks/{_server.ts-TN_Ka6cR.js → _server.ts-4m17ESHV.js} +2 -2
  104. package/dist/web/server/chunks/{_server.ts-TN_Ka6cR.js.map → _server.ts-4m17ESHV.js.map} +1 -1
  105. package/dist/web/server/chunks/{_server.ts-Bj1Eewby.js → _server.ts-8Bs2jUgD.js} +2 -2
  106. package/dist/web/server/chunks/{_server.ts-Bj1Eewby.js.map → _server.ts-8Bs2jUgD.js.map} +1 -1
  107. package/dist/web/server/chunks/{_server.ts-BWVtnpJh.js → _server.ts-95cbXKdT.js} +3 -3
  108. package/dist/web/server/chunks/{_server.ts-BWVtnpJh.js.map → _server.ts-95cbXKdT.js.map} +1 -1
  109. package/dist/web/server/chunks/{_server.ts-CyOA1rOq.js → _server.ts-B56-XF-Z.js} +3 -3
  110. package/dist/web/server/chunks/{_server.ts-CyOA1rOq.js.map → _server.ts-B56-XF-Z.js.map} +1 -1
  111. package/dist/web/server/chunks/{_server.ts-1ZhqL5o8.js → _server.ts-BAC_No-1.js} +2 -2
  112. package/dist/web/server/chunks/{_server.ts-1ZhqL5o8.js.map → _server.ts-BAC_No-1.js.map} +1 -1
  113. package/dist/web/server/chunks/{_server.ts-ji7L8HUR.js → _server.ts-BCpfYsYw.js} +3 -3
  114. package/dist/web/server/chunks/{_server.ts-ji7L8HUR.js.map → _server.ts-BCpfYsYw.js.map} +1 -1
  115. package/dist/web/server/chunks/{_server.ts-9iRpDv9e.js → _server.ts-BGToJuLp.js} +2 -2
  116. package/dist/web/server/chunks/{_server.ts-9iRpDv9e.js.map → _server.ts-BGToJuLp.js.map} +1 -1
  117. package/dist/web/server/chunks/{_server.ts-DQJ-tygD.js → _server.ts-BW87LYkE.js} +2 -2
  118. package/dist/web/server/chunks/{_server.ts-DQJ-tygD.js.map → _server.ts-BW87LYkE.js.map} +1 -1
  119. package/dist/web/server/chunks/{_server.ts-VgbTPrqV.js → _server.ts-BXjUy61V.js} +2 -2
  120. package/dist/web/server/chunks/{_server.ts-VgbTPrqV.js.map → _server.ts-BXjUy61V.js.map} +1 -1
  121. package/dist/web/server/chunks/{_server.ts-FoPsfjo3.js → _server.ts-BYyaN7ik.js} +2 -2
  122. package/dist/web/server/chunks/{_server.ts-FoPsfjo3.js.map → _server.ts-BYyaN7ik.js.map} +1 -1
  123. package/dist/web/server/chunks/{_server.ts-CNBy2p2U.js → _server.ts-Bjzi1JAu.js} +2 -2
  124. package/dist/web/server/chunks/{_server.ts-CNBy2p2U.js.map → _server.ts-Bjzi1JAu.js.map} +1 -1
  125. package/dist/web/server/chunks/{_server.ts-CSK1ReRS.js → _server.ts-CBU5vhD8.js} +2 -2
  126. package/dist/web/server/chunks/{_server.ts-CSK1ReRS.js.map → _server.ts-CBU5vhD8.js.map} +1 -1
  127. package/dist/web/server/chunks/{_server.ts-Cv8SUkC5.js → _server.ts-CG-7TORV.js} +3 -3
  128. package/dist/web/server/chunks/{_server.ts-Cv8SUkC5.js.map → _server.ts-CG-7TORV.js.map} +1 -1
  129. package/dist/web/server/chunks/{_server.ts-DPctaiWC.js → _server.ts-COCrEIiW.js} +2 -2
  130. package/dist/web/server/chunks/{_server.ts-DPctaiWC.js.map → _server.ts-COCrEIiW.js.map} +1 -1
  131. package/dist/web/server/chunks/{_server.ts-C7uhdF7Y.js → _server.ts-CPCsEz_B.js} +4 -4
  132. package/dist/web/server/chunks/{_server.ts-C7uhdF7Y.js.map → _server.ts-CPCsEz_B.js.map} +1 -1
  133. package/dist/web/server/chunks/{_server.ts-DsyqZudf.js → _server.ts-CPGa_LDW.js} +2 -2
  134. package/dist/web/server/chunks/{_server.ts-DsyqZudf.js.map → _server.ts-CPGa_LDW.js.map} +1 -1
  135. package/dist/web/server/chunks/{_server.ts-B9RfKfyc.js → _server.ts-CT1m86tm.js} +2 -2
  136. package/dist/web/server/chunks/{_server.ts-B9RfKfyc.js.map → _server.ts-CT1m86tm.js.map} +1 -1
  137. package/dist/web/server/chunks/{_server.ts-CwFbAWCg.js → _server.ts-CXzAFIps.js} +2 -2
  138. package/dist/web/server/chunks/{_server.ts-CwFbAWCg.js.map → _server.ts-CXzAFIps.js.map} +1 -1
  139. package/dist/web/server/chunks/{_server.ts-DHuyjZQx.js → _server.ts-C_H2gKKu.js} +2 -2
  140. package/dist/web/server/chunks/{_server.ts-DHuyjZQx.js.map → _server.ts-C_H2gKKu.js.map} +1 -1
  141. package/dist/web/server/chunks/{_server.ts-DVgdt6Zu.js → _server.ts-CjH9MxGk.js} +3 -3
  142. package/dist/web/server/chunks/{_server.ts-DVgdt6Zu.js.map → _server.ts-CjH9MxGk.js.map} +1 -1
  143. package/dist/web/server/chunks/{_server.ts-DrFiP32b.js → _server.ts-CrQk3PtI.js} +3 -3
  144. package/dist/web/server/chunks/{_server.ts-DrFiP32b.js.map → _server.ts-CrQk3PtI.js.map} +1 -1
  145. package/dist/web/server/chunks/{_server.ts-CA8nszPb.js → _server.ts-Cy5Matw4.js} +3 -3
  146. package/dist/web/server/chunks/{_server.ts-CA8nszPb.js.map → _server.ts-Cy5Matw4.js.map} +1 -1
  147. package/dist/web/server/chunks/{_server.ts-CovkmnvY.js → _server.ts-D9PPu5p4.js} +3 -3
  148. package/dist/web/server/chunks/{_server.ts-CovkmnvY.js.map → _server.ts-D9PPu5p4.js.map} +1 -1
  149. package/dist/web/server/chunks/{_server.ts-vhti5VvF.js → _server.ts-DGvNQ4Mq.js} +3 -3
  150. package/dist/web/server/chunks/{_server.ts-vhti5VvF.js.map → _server.ts-DGvNQ4Mq.js.map} +1 -1
  151. package/dist/web/server/chunks/{_server.ts-iK8ih9Bi.js → _server.ts-DJOSnwXV.js} +2 -2
  152. package/dist/web/server/chunks/{_server.ts-iK8ih9Bi.js.map → _server.ts-DJOSnwXV.js.map} +1 -1
  153. package/dist/web/server/chunks/{_server.ts-DK-6ddNq.js → _server.ts-DPoluZc6.js} +3 -3
  154. package/dist/web/server/chunks/{_server.ts-DK-6ddNq.js.map → _server.ts-DPoluZc6.js.map} +1 -1
  155. package/dist/web/server/chunks/{_server.ts-BozsVs8t.js → _server.ts-DS6kibxL.js} +2 -2
  156. package/dist/web/server/chunks/{_server.ts-BozsVs8t.js.map → _server.ts-DS6kibxL.js.map} +1 -1
  157. package/dist/web/server/chunks/{_server.ts-DozhhYwq.js → _server.ts-DUl0ucUP.js} +3 -3
  158. package/dist/web/server/chunks/{_server.ts-DozhhYwq.js.map → _server.ts-DUl0ucUP.js.map} +1 -1
  159. package/dist/web/server/chunks/{_server.ts-78nODRDJ.js → _server.ts-DWj22oj9.js} +2 -2
  160. package/dist/web/server/chunks/{_server.ts-78nODRDJ.js.map → _server.ts-DWj22oj9.js.map} +1 -1
  161. package/dist/web/server/chunks/{_server.ts-CA1j9wWk.js → _server.ts-DZrVaelC.js} +2 -2
  162. package/dist/web/server/chunks/{_server.ts-CA1j9wWk.js.map → _server.ts-DZrVaelC.js.map} +1 -1
  163. package/dist/web/server/chunks/{_server.ts-CzcknkWq.js → _server.ts-DrG3j6Ao.js} +2 -2
  164. package/dist/web/server/chunks/{_server.ts-CzcknkWq.js.map → _server.ts-DrG3j6Ao.js.map} +1 -1
  165. package/dist/web/server/chunks/{_server.ts-AAllMdwT.js → _server.ts-Dwy38J9J.js} +2 -2
  166. package/dist/web/server/chunks/{_server.ts-AAllMdwT.js.map → _server.ts-Dwy38J9J.js.map} +1 -1
  167. package/dist/web/server/chunks/{_server.ts-CgChlIKq.js → _server.ts-DxGjRezI.js} +2 -2
  168. package/dist/web/server/chunks/{_server.ts-CgChlIKq.js.map → _server.ts-DxGjRezI.js.map} +1 -1
  169. package/dist/web/server/chunks/{_server.ts-KbQyErIR.js → _server.ts-XMUjHO61.js} +2 -2
  170. package/dist/web/server/chunks/{_server.ts-KbQyErIR.js.map → _server.ts-XMUjHO61.js.map} +1 -1
  171. package/dist/web/server/chunks/{_server.ts-DGTSZoLn.js → _server.ts-dvT2bXEB.js} +2 -2
  172. package/dist/web/server/chunks/{_server.ts-DGTSZoLn.js.map → _server.ts-dvT2bXEB.js.map} +1 -1
  173. package/dist/web/server/chunks/{_server.ts-BxscGs8D.js → _server.ts-m835uDm6.js} +2 -2
  174. package/dist/web/server/chunks/{_server.ts-BxscGs8D.js.map → _server.ts-m835uDm6.js.map} +1 -1
  175. package/dist/web/server/chunks/{checkbox-DiJTAtHi.js → checkbox-BYzlWW56.js} +2 -2
  176. package/dist/web/server/chunks/{checkbox-DiJTAtHi.js.map → checkbox-BYzlWW56.js.map} +1 -1
  177. package/dist/web/server/chunks/{create-id-DpoSQWrl.js → create-id-s6T_m-1j.js} +3 -3
  178. package/dist/web/server/chunks/{create-id-DpoSQWrl.js.map → create-id-s6T_m-1j.js.map} +1 -1
  179. package/dist/web/server/chunks/{discover-DjR28OqK.js → discover-DykzHz0t.js} +2 -2
  180. package/dist/web/server/chunks/{discover-DjR28OqK.js.map → discover-DykzHz0t.js.map} +1 -1
  181. package/dist/web/server/chunks/{drafts.svelte-DsFAtH-s.js → drafts.svelte-c94J-DBB.js} +3 -3
  182. package/dist/web/server/chunks/{drafts.svelte-DsFAtH-s.js.map → drafts.svelte-c94J-DBB.js.map} +1 -1
  183. package/dist/web/server/chunks/{end-session-BbBa9yD0.js → end-session-Czy_WW42.js} +2 -2
  184. package/dist/web/server/chunks/{end-session-BbBa9yD0.js.map → end-session-Czy_WW42.js.map} +1 -1
  185. package/dist/web/server/chunks/{files-4i3igWea.js → files-DNH191y7.js} +2 -2
  186. package/dist/web/server/chunks/{files-4i3igWea.js.map → files-DNH191y7.js.map} +1 -1
  187. package/dist/web/server/chunks/{fleet-DZJSFWuH.js → fleet-CWHlZjSd.js} +4 -4
  188. package/dist/web/server/chunks/{fleet-DZJSFWuH.js.map → fleet-CWHlZjSd.js.map} +1 -1
  189. package/dist/web/server/chunks/{git-D9dLEKUF.js → git-CHO9UIOQ.js} +13 -5
  190. package/dist/web/server/chunks/git-CHO9UIOQ.js.map +1 -0
  191. package/dist/web/server/chunks/{git-history-De9t0yF-.js → git-history-CxyH4jQb.js} +2 -2
  192. package/dist/web/server/chunks/{git-history-De9t0yF-.js.map → git-history-CxyH4jQb.js.map} +1 -1
  193. package/dist/web/server/chunks/{hooks.server-C3Uglne7.js → hooks.server-DgHxEf6H.js} +6 -6
  194. package/dist/web/server/chunks/{hooks.server-C3Uglne7.js.map → hooks.server-DgHxEf6H.js.map} +1 -1
  195. package/dist/web/server/chunks/{message-queue-sFcJCRjz.js → message-queue-DhLshpoF.js} +13 -2
  196. package/dist/web/server/chunks/message-queue-DhLshpoF.js.map +1 -0
  197. package/dist/web/server/chunks/{project-CbPa8Mu7.js → project-CBPdIh2n.js} +2 -2
  198. package/dist/web/server/chunks/{project-CbPa8Mu7.js.map → project-CBPdIh2n.js.map} +1 -1
  199. package/dist/web/server/chunks/{project-icons-CSb1bfT9.js → project-icons-bWhaFSVy.js} +4 -4
  200. package/dist/web/server/chunks/{project-icons-CSb1bfT9.js.map → project-icons-bWhaFSVy.js.map} +1 -1
  201. package/dist/web/server/chunks/{push-BJ7P9DGd.js → push-LMlCp4Lc.js} +5 -5
  202. package/dist/web/server/chunks/{push-BJ7P9DGd.js.map → push-LMlCp4Lc.js.map} +1 -1
  203. package/dist/web/server/chunks/{remote-control-C1d9R3w4.js → remote-control-BvYkVDhx.js} +2 -2
  204. package/dist/web/server/chunks/{remote-control-C1d9R3w4.js.map → remote-control-BvYkVDhx.js.map} +1 -1
  205. package/dist/web/server/chunks/{start-session-CKbupnLS.js → start-session-HljgutDe.js} +3 -3
  206. package/dist/web/server/chunks/{start-session-CKbupnLS.js.map → start-session-HljgutDe.js.map} +1 -1
  207. package/dist/web/server/chunks/{version-BqEJmw2g.js → version-ox9yLZ0P.js} +2 -2
  208. package/dist/web/server/chunks/version-ox9yLZ0P.js.map +1 -0
  209. package/dist/web/server/chunks/{web-preview-Bi5fjydK.js → web-preview-H5eiWlBD.js} +2 -2
  210. package/dist/web/server/chunks/{web-preview-Bi5fjydK.js.map → web-preview-H5eiWlBD.js.map} +1 -1
  211. package/dist/web/server/chunks/{ws-handlers-zemeJ8Si.js → ws-handlers-k_sOue-0.js} +6 -5
  212. package/dist/web/server/chunks/ws-handlers-k_sOue-0.js.map +1 -0
  213. package/dist/web/server/chunks/{ws-managers-C5VXKb_r.js → ws-managers-D2qC6Gla.js} +2 -2
  214. package/dist/web/server/chunks/{ws-managers-C5VXKb_r.js.map → ws-managers-D2qC6Gla.js.map} +1 -1
  215. package/dist/web/server/chunks/{ws-messages-jOSwT1Yq.js → ws-messages-B81v2RXg.js} +7 -2
  216. package/dist/web/server/chunks/ws-messages-B81v2RXg.js.map +1 -0
  217. package/dist/web/server/index.js +2 -2
  218. package/dist/web/server/index.js.map +1 -1
  219. package/dist/web/server/manifest.js +53 -53
  220. package/dist/web/server/manifest.js.map +1 -1
  221. package/package.json +1 -1
  222. package/src/fleet-places.ts +17 -1
  223. package/src/server/dictation-marks.ts +24 -1
  224. package/src/transcript/parser.ts +20 -3
  225. package/src/transcript/past-sessions.ts +3 -1
  226. package/src/utils/version.ts +1 -1
  227. package/tests/fleet-places.test.ts +20 -0
  228. package/tests/server/dictation-marks.test.ts +16 -0
  229. package/tests/transcript/parser.test.ts +34 -0
  230. package/tests/transcript/past-sessions.test.ts +5 -0
  231. package/web/.svelte-kit/adapter-bun/chunks/git.js +13 -4
  232. package/web/.svelte-kit/adapter-bun/chunks/git.js.map +1 -1
  233. package/web/.svelte-kit/adapter-bun/chunks/internal2.js +1 -1
  234. package/web/.svelte-kit/adapter-bun/chunks/internal2.js.map +1 -1
  235. package/web/.svelte-kit/adapter-bun/chunks/message-queue.js +14 -1
  236. package/web/.svelte-kit/adapter-bun/chunks/message-queue.js.map +1 -1
  237. package/web/.svelte-kit/adapter-bun/chunks/version.js +1 -1
  238. package/web/.svelte-kit/adapter-bun/chunks/version.js.map +1 -1
  239. package/web/.svelte-kit/adapter-bun/chunks/ws-handlers.js +2 -1
  240. package/web/.svelte-kit/adapter-bun/chunks/ws-handlers.js.map +1 -1
  241. package/web/.svelte-kit/adapter-bun/chunks/ws-messages.js +6 -1
  242. package/web/.svelte-kit/adapter-bun/chunks/ws-messages.js.map +1 -1
  243. package/web/.svelte-kit/adapter-bun/entries/pages/_layout.svelte.js +72 -45
  244. package/web/.svelte-kit/adapter-bun/entries/pages/_layout.svelte.js.map +1 -1
  245. package/web/.svelte-kit/adapter-bun/manifest-full.js +1 -1
  246. package/web/.svelte-kit/adapter-bun/manifest.js +1 -1
  247. package/web/.svelte-kit/adapter-bun/nodes/0.js +1 -1
  248. package/web/.svelte-kit/adapter-bun/nodes/1.js +1 -1
  249. package/web/.svelte-kit/adapter-bun/nodes/2.js +1 -1
  250. package/web/.svelte-kit/adapter-bun/nodes/3.js +1 -1
  251. package/web/.svelte-kit/adapter-bun/nodes/4.js +1 -1
  252. package/web/.svelte-kit/adapter-bun/nodes/5.js +1 -1
  253. package/web/.svelte-kit/adapter-bun/nodes/6.js +1 -1
  254. package/web/.svelte-kit/adapter-bun/nodes/7.js +1 -1
  255. package/web/.svelte-kit/adapter-bun/nodes/8.js +1 -1
  256. package/web/.svelte-kit/adapter-bun/nodes/9.js +1 -1
  257. package/web/.svelte-kit/generated/server/internal.js +1 -1
  258. package/web/.svelte-kit/output/client/.vite/manifest.json +237 -237
  259. package/web/.svelte-kit/output/client/_app/immutable/chunks/{sULMfRFG.js → B4FaHfAQ.js} +2 -2
  260. package/web/.svelte-kit/output/client/_app/immutable/chunks/{sULMfRFG.js.map → B4FaHfAQ.js.map} +1 -1
  261. package/web/.svelte-kit/output/client/_app/immutable/chunks/{W5_HMZ5E.js → B5Hkb2u5.js} +2 -2
  262. package/web/.svelte-kit/output/client/_app/immutable/chunks/{W5_HMZ5E.js.map → B5Hkb2u5.js.map} +1 -1
  263. package/{dist/web/client/_app/immutable/chunks/BQzv8cqz.js → web/.svelte-kit/output/client/_app/immutable/chunks/BOpEbBRb.js} +2 -2
  264. package/{dist/web/client/_app/immutable/chunks/BQzv8cqz.js.map → web/.svelte-kit/output/client/_app/immutable/chunks/BOpEbBRb.js.map} +1 -1
  265. package/web/.svelte-kit/output/client/_app/immutable/chunks/{Q5yhzux8.js → BeYjnogg.js} +2 -2
  266. package/{dist/web/client/_app/immutable/chunks/Q5yhzux8.js.map → web/.svelte-kit/output/client/_app/immutable/chunks/BeYjnogg.js.map} +1 -1
  267. package/web/.svelte-kit/output/client/_app/immutable/chunks/{VceCNUd7.js → C00rm3mY.js} +2 -2
  268. package/{dist/web/client/_app/immutable/chunks/VceCNUd7.js.map → web/.svelte-kit/output/client/_app/immutable/chunks/C00rm3mY.js.map} +1 -1
  269. package/web/.svelte-kit/output/client/_app/immutable/chunks/{CtjkAirr.js → CKg7gbPm.js} +9 -9
  270. package/web/.svelte-kit/output/client/_app/immutable/chunks/CKg7gbPm.js.map +1 -0
  271. package/web/.svelte-kit/output/client/_app/immutable/chunks/CPEphjdk.js +4 -0
  272. package/web/.svelte-kit/output/client/_app/immutable/chunks/CPEphjdk.js.map +1 -0
  273. package/web/.svelte-kit/output/client/_app/immutable/chunks/{BQQ3-rqs.js → CPlFo88J.js} +2 -2
  274. package/web/.svelte-kit/output/client/_app/immutable/chunks/{BQQ3-rqs.js.map → CPlFo88J.js.map} +1 -1
  275. package/web/.svelte-kit/output/client/_app/immutable/chunks/{BvX4FYxp.js → CtnjySwS.js} +2 -2
  276. package/web/.svelte-kit/output/client/_app/immutable/chunks/{BvX4FYxp.js.map → CtnjySwS.js.map} +1 -1
  277. package/web/.svelte-kit/output/client/_app/immutable/chunks/{XgSsj0QY.js → D3EW0jRH.js} +2 -2
  278. package/{dist/web/client/_app/immutable/chunks/XgSsj0QY.js.map → web/.svelte-kit/output/client/_app/immutable/chunks/D3EW0jRH.js.map} +1 -1
  279. package/web/.svelte-kit/output/client/_app/immutable/chunks/{CtlIfY1C.js → D3umr-Qr.js} +2 -2
  280. package/{dist/web/client/_app/immutable/chunks/CtlIfY1C.js.map → web/.svelte-kit/output/client/_app/immutable/chunks/D3umr-Qr.js.map} +1 -1
  281. package/web/.svelte-kit/output/client/_app/immutable/chunks/{CM0CI9GL.js → D8-_Y-M6.js} +3 -3
  282. package/web/.svelte-kit/output/client/_app/immutable/chunks/{CM0CI9GL.js.map → D8-_Y-M6.js.map} +1 -1
  283. package/web/.svelte-kit/output/client/_app/immutable/chunks/{cvsGFvDx.js → DDvK7Qo9.js} +2 -2
  284. package/{dist/web/client/_app/immutable/chunks/cvsGFvDx.js.map → web/.svelte-kit/output/client/_app/immutable/chunks/DDvK7Qo9.js.map} +1 -1
  285. package/web/.svelte-kit/output/client/_app/immutable/chunks/{CiU8KBun.js → _VFi-7U7.js} +2 -2
  286. package/web/.svelte-kit/output/client/_app/immutable/chunks/{CiU8KBun.js.map → _VFi-7U7.js.map} +1 -1
  287. package/web/.svelte-kit/output/client/_app/immutable/chunks/{DlENCZqZ.js → mQ6hkLuy.js} +2 -2
  288. package/web/.svelte-kit/output/client/_app/immutable/chunks/{DlENCZqZ.js.map → mQ6hkLuy.js.map} +1 -1
  289. package/web/.svelte-kit/output/client/_app/immutable/entry/{app.BwTbN8wB.js → app.CTFza_OS.js} +3 -3
  290. package/{dist/web/client/_app/immutable/entry/app.BwTbN8wB.js.map → web/.svelte-kit/output/client/_app/immutable/entry/app.CTFza_OS.js.map} +1 -1
  291. package/web/.svelte-kit/output/client/_app/immutable/entry/start.B-zlkyrt.js +2 -0
  292. package/web/.svelte-kit/output/client/_app/immutable/entry/start.B-zlkyrt.js.map +1 -0
  293. package/{dist/web/client/_app/immutable/nodes/0.BnHV-ElR.js → web/.svelte-kit/output/client/_app/immutable/nodes/0.Cztuq8Ih.js} +2 -2
  294. package/web/.svelte-kit/output/client/_app/immutable/nodes/{0.BnHV-ElR.js.map → 0.Cztuq8Ih.js.map} +1 -1
  295. package/web/.svelte-kit/output/client/_app/immutable/nodes/{1.Dc3ryOCf.js → 1.BOOL0V7K.js} +2 -2
  296. package/web/.svelte-kit/output/client/_app/immutable/nodes/{1.Dc3ryOCf.js.map → 1.BOOL0V7K.js.map} +1 -1
  297. package/web/.svelte-kit/output/client/_app/immutable/nodes/{2.DUrpAceY.js → 2.CArUpZNe.js} +2 -2
  298. package/web/.svelte-kit/output/client/_app/immutable/nodes/{2.DUrpAceY.js.map → 2.CArUpZNe.js.map} +1 -1
  299. package/web/.svelte-kit/output/client/_app/immutable/nodes/{3.BaCofjAn.js → 3.DSvIWalA.js} +2 -2
  300. package/web/.svelte-kit/output/client/_app/immutable/nodes/{3.BaCofjAn.js.map → 3.DSvIWalA.js.map} +1 -1
  301. package/web/.svelte-kit/output/client/_app/immutable/nodes/4.H6RMG_cy.js +2 -0
  302. package/web/.svelte-kit/output/client/_app/immutable/nodes/{4.v1wYkrvS.js.map → 4.H6RMG_cy.js.map} +1 -1
  303. package/web/.svelte-kit/output/client/_app/immutable/nodes/5.BHSt0Suo.js +2 -0
  304. package/web/.svelte-kit/output/client/_app/immutable/nodes/{5.Bn4A77jK.js.map → 5.BHSt0Suo.js.map} +1 -1
  305. package/web/.svelte-kit/output/client/_app/immutable/nodes/{6.C2hEoITj.js → 6.CzLoA0w7.js} +2 -2
  306. package/web/.svelte-kit/output/client/_app/immutable/nodes/{6.C2hEoITj.js.map → 6.CzLoA0w7.js.map} +1 -1
  307. package/web/.svelte-kit/output/client/_app/immutable/nodes/{7.BcHOjWdp.js → 7.fqq2vVa9.js} +2 -2
  308. package/web/.svelte-kit/output/client/_app/immutable/nodes/{7.BcHOjWdp.js.map → 7.fqq2vVa9.js.map} +1 -1
  309. package/web/.svelte-kit/output/client/_app/immutable/nodes/8.DNFFjTla.js +2 -0
  310. package/web/.svelte-kit/output/client/_app/immutable/nodes/{8.D7NtqIYy.js.map → 8.DNFFjTla.js.map} +1 -1
  311. package/web/.svelte-kit/output/client/_app/immutable/nodes/9.0kMPrp2-.js +2 -0
  312. package/web/.svelte-kit/output/client/_app/immutable/nodes/{9.D-211z9-.js.map → 9.0kMPrp2-.js.map} +1 -1
  313. package/web/.svelte-kit/output/client/_app/version.json +1 -1
  314. package/web/.svelte-kit/output/server/chunks/git.js +13 -4
  315. package/web/.svelte-kit/output/server/chunks/git.js.map +1 -1
  316. package/web/.svelte-kit/output/server/chunks/internal2.js +1 -1
  317. package/web/.svelte-kit/output/server/chunks/internal2.js.map +1 -1
  318. package/web/.svelte-kit/output/server/chunks/message-queue.js +14 -1
  319. package/web/.svelte-kit/output/server/chunks/message-queue.js.map +1 -1
  320. package/web/.svelte-kit/output/server/chunks/version.js +1 -1
  321. package/web/.svelte-kit/output/server/chunks/version.js.map +1 -1
  322. package/web/.svelte-kit/output/server/chunks/ws-handlers.js +2 -1
  323. package/web/.svelte-kit/output/server/chunks/ws-handlers.js.map +1 -1
  324. package/web/.svelte-kit/output/server/chunks/ws-messages.js +6 -1
  325. package/web/.svelte-kit/output/server/chunks/ws-messages.js.map +1 -1
  326. package/web/.svelte-kit/output/server/entries/pages/_layout.svelte.js +72 -45
  327. package/web/.svelte-kit/output/server/entries/pages/_layout.svelte.js.map +1 -1
  328. package/web/.svelte-kit/output/server/manifest-full.js +1 -1
  329. package/web/.svelte-kit/output/server/manifest.js +1 -1
  330. package/web/.svelte-kit/output/server/nodes/0.js +1 -1
  331. package/web/.svelte-kit/output/server/nodes/1.js +1 -1
  332. package/web/.svelte-kit/output/server/nodes/2.js +1 -1
  333. package/web/.svelte-kit/output/server/nodes/3.js +1 -1
  334. package/web/.svelte-kit/output/server/nodes/4.js +1 -1
  335. package/web/.svelte-kit/output/server/nodes/5.js +1 -1
  336. package/web/.svelte-kit/output/server/nodes/6.js +1 -1
  337. package/web/.svelte-kit/output/server/nodes/7.js +1 -1
  338. package/web/.svelte-kit/output/server/nodes/8.js +1 -1
  339. package/web/.svelte-kit/output/server/nodes/9.js +1 -1
  340. package/web/src/lib/components/AllSessionsPanel.svelte +9 -1
  341. package/web/src/lib/components/FolderPicker.svelte +49 -21
  342. package/dist/web/client/_app/immutable/chunks/CtjkAirr.js.map +0 -1
  343. package/dist/web/client/_app/immutable/chunks/Dck--FBb.js +0 -4
  344. package/dist/web/client/_app/immutable/chunks/Dck--FBb.js.map +0 -1
  345. package/dist/web/client/_app/immutable/entry/start.B2ZPizAt.js +0 -2
  346. package/dist/web/client/_app/immutable/entry/start.B2ZPizAt.js.map +0 -1
  347. package/dist/web/server/chunks/_layout.svelte-yrPX5VFm.js.map +0 -1
  348. package/dist/web/server/chunks/git-D9dLEKUF.js.map +0 -1
  349. package/dist/web/server/chunks/message-queue-sFcJCRjz.js.map +0 -1
  350. package/dist/web/server/chunks/version-BqEJmw2g.js.map +0 -1
  351. package/dist/web/server/chunks/ws-handlers-zemeJ8Si.js.map +0 -1
  352. package/dist/web/server/chunks/ws-messages-jOSwT1Yq.js.map +0 -1
  353. package/web/.svelte-kit/output/client/_app/immutable/chunks/CtjkAirr.js.map +0 -1
  354. package/web/.svelte-kit/output/client/_app/immutable/chunks/Dck--FBb.js +0 -4
  355. package/web/.svelte-kit/output/client/_app/immutable/chunks/Dck--FBb.js.map +0 -1
  356. package/web/.svelte-kit/output/client/_app/immutable/entry/start.B2ZPizAt.js +0 -2
  357. package/web/.svelte-kit/output/client/_app/immutable/entry/start.B2ZPizAt.js.map +0 -1
  358. package/web/.svelte-kit/output/client/_app/immutable/nodes/4.v1wYkrvS.js +0 -2
  359. package/web/.svelte-kit/output/client/_app/immutable/nodes/5.Bn4A77jK.js +0 -2
  360. package/web/.svelte-kit/output/client/_app/immutable/nodes/8.D7NtqIYy.js +0 -2
  361. package/web/.svelte-kit/output/client/_app/immutable/nodes/9.D-211z9-.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"push-BJ7P9DGd.js","names":["z.object","z.string","z.boolean","z.number","webpush"],"sources":["../../../../node_modules/.bun/bn.js@4.12.5/node_modules/bn.js/lib/bn.js","../../../../node_modules/.bun/inherits@2.0.4/node_modules/inherits/inherits_browser.js","../../../../node_modules/.bun/safer-buffer@2.1.2/node_modules/safer-buffer/safer.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/reporter.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/buffer.js","../../../../node_modules/.bun/minimalistic-assert@1.0.1/node_modules/minimalistic-assert/index.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/node.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/constants/der.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/encoders/der.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/encoders/pem.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/encoders/index.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/decoders/der.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/decoders/pem.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/decoders/index.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/api.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/index.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/constants/index.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1.js","../../../../node_modules/.bun/safe-buffer@5.2.1/node_modules/safe-buffer/index.js","../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/lib/data-stream.js","../../../../node_modules/.bun/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js","../../../../node_modules/.bun/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js","../../../../node_modules/.bun/buffer-equal-constant-time@1.0.1/node_modules/buffer-equal-constant-time/index.js","../../../../node_modules/.bun/jwa@2.0.1/node_modules/jwa/index.js","../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/lib/tostring.js","../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/lib/sign-stream.js","../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/lib/verify-stream.js","../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/index.js","../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/web-push-constants.js","../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/urlsafe-base64-helper.js","../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/vapid-helper.js","../../../../node_modules/.bun/http_ece@1.2.0/node_modules/http_ece/ece.js","../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/encryption-helper.js","../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/web-push-error.js","../../../../node_modules/.bun/ms@2.1.3/node_modules/ms/index.js","../../../../node_modules/.bun/debug@4.4.3/node_modules/debug/src/common.js","../../../../node_modules/.bun/debug@4.4.3/node_modules/debug/src/browser.js","../../../../node_modules/.bun/agent-base@7.1.4/node_modules/agent-base/dist/helpers.js","../../../../node_modules/.bun/agent-base@7.1.4/node_modules/agent-base/dist/index.js","../../../../node_modules/.bun/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/parse-proxy-response.js","../../../../node_modules/.bun/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/index.js","../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/web-push-lib.js","../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/index.js","../../../../web/.svelte-kit/adapter-bun/chunks/push.js"],"sourcesContent":["(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n i++;\n }\n\n // Clear words above the requested width so the result stays below 2 ** width\n for (; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n if (num === 0) {\n this.length = 1;\n this._normSign();\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.mod.abs();\n\n var half = num.abs().iushrn(1);\n var r2 = num.words[0] & 1;\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up, away from zero\n var up = new BN(1);\n up.negative = this.negative ^ num.negative;\n return dm.div.iadd(up);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/*global module, process*/\nvar Buffer = require('safe-buffer').Buffer;\nvar Stream = require('stream');\nvar util = require('util');\n\nfunction DataStream(data) {\n this.buffer = null;\n this.writable = true;\n this.readable = true;\n\n // No input\n if (!data) {\n this.buffer = Buffer.alloc(0);\n return this;\n }\n\n // Stream\n if (typeof data.pipe === 'function') {\n this.buffer = Buffer.alloc(0);\n data.pipe(this);\n return this;\n }\n\n // Buffer or String\n // or Object (assumedly a passworded key)\n if (data.length || typeof data === 'object') {\n this.buffer = data;\n this.writable = false;\n process.nextTick(function () {\n this.emit('end', data);\n this.readable = false;\n this.emit('close');\n }.bind(this));\n return this;\n }\n\n throw new TypeError('Unexpected data type ('+ typeof data + ')');\n}\nutil.inherits(DataStream, Stream);\n\nDataStream.prototype.write = function write(data) {\n this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]);\n this.emit('data', data);\n};\n\nDataStream.prototype.end = function end(data) {\n if (data)\n this.write(data);\n this.emit('end', data);\n this.emit('close');\n this.writable = false;\n this.readable = false;\n};\n\nmodule.exports = DataStream;\n","'use strict';\n\nfunction getParamSize(keySize) {\n\tvar result = ((keySize / 8) | 0) + (keySize % 8 === 0 ? 0 : 1);\n\treturn result;\n}\n\nvar paramBytesForAlg = {\n\tES256: getParamSize(256),\n\tES384: getParamSize(384),\n\tES512: getParamSize(521)\n};\n\nfunction getParamBytesForAlg(alg) {\n\tvar paramBytes = paramBytesForAlg[alg];\n\tif (paramBytes) {\n\t\treturn paramBytes;\n\t}\n\n\tthrow new Error('Unknown algorithm \"' + alg + '\"');\n}\n\nmodule.exports = getParamBytesForAlg;\n","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar getParamBytesForAlg = require('./param-bytes-for-alg');\n\nvar MAX_OCTET = 0x80,\n\tCLASS_UNIVERSAL = 0,\n\tPRIMITIVE_BIT = 0x20,\n\tTAG_SEQ = 0x10,\n\tTAG_INT = 0x02,\n\tENCODED_TAG_SEQ = (TAG_SEQ | PRIMITIVE_BIT) | (CLASS_UNIVERSAL << 6),\n\tENCODED_TAG_INT = TAG_INT | (CLASS_UNIVERSAL << 6);\n\nfunction base64Url(base64) {\n\treturn base64\n\t\t.replace(/=/g, '')\n\t\t.replace(/\\+/g, '-')\n\t\t.replace(/\\//g, '_');\n}\n\nfunction signatureAsBuffer(signature) {\n\tif (Buffer.isBuffer(signature)) {\n\t\treturn signature;\n\t} else if ('string' === typeof signature) {\n\t\treturn Buffer.from(signature, 'base64');\n\t}\n\n\tthrow new TypeError('ECDSA signature must be a Base64 string or a Buffer');\n}\n\nfunction derToJose(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\t// the DER encoded param should at most be the param size, plus a padding\n\t// zero, since due to being a signed integer\n\tvar maxEncodedParamLength = paramBytes + 1;\n\n\tvar inputLength = signature.length;\n\n\tvar offset = 0;\n\tif (signature[offset++] !== ENCODED_TAG_SEQ) {\n\t\tthrow new Error('Could not find expected \"seq\"');\n\t}\n\n\tvar seqLength = signature[offset++];\n\tif (seqLength === (MAX_OCTET | 1)) {\n\t\tseqLength = signature[offset++];\n\t}\n\n\tif (inputLength - offset < seqLength) {\n\t\tthrow new Error('\"seq\" specified length of \"' + seqLength + '\", only \"' + (inputLength - offset) + '\" remaining');\n\t}\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"r\"');\n\t}\n\n\tvar rLength = signature[offset++];\n\n\tif (inputLength - offset - 2 < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", only \"' + (inputLength - offset - 2) + '\" available');\n\t}\n\n\tif (maxEncodedParamLength < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar rOffset = offset;\n\toffset += rLength;\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"s\"');\n\t}\n\n\tvar sLength = signature[offset++];\n\n\tif (inputLength - offset !== sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", expected \"' + (inputLength - offset) + '\"');\n\t}\n\n\tif (maxEncodedParamLength < sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar sOffset = offset;\n\toffset += sLength;\n\n\tif (offset !== inputLength) {\n\t\tthrow new Error('Expected to consume entire buffer, but \"' + (inputLength - offset) + '\" bytes remain');\n\t}\n\n\tvar rPadding = paramBytes - rLength,\n\t\tsPadding = paramBytes - sLength;\n\n\tvar dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength);\n\n\tfor (offset = 0; offset < rPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength);\n\n\toffset = paramBytes;\n\n\tfor (var o = offset; offset < o + sPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength);\n\n\tdst = dst.toString('base64');\n\tdst = base64Url(dst);\n\n\treturn dst;\n}\n\nfunction countPadding(buf, start, stop) {\n\tvar padding = 0;\n\twhile (start + padding < stop && buf[start + padding] === 0) {\n\t\t++padding;\n\t}\n\n\tvar needsSign = buf[start + padding] >= MAX_OCTET;\n\tif (needsSign) {\n\t\t--padding;\n\t}\n\n\treturn padding;\n}\n\nfunction joseToDer(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\tvar signatureBytes = signature.length;\n\tif (signatureBytes !== paramBytes * 2) {\n\t\tthrow new TypeError('\"' + alg + '\" signatures must be \"' + paramBytes * 2 + '\" bytes, saw \"' + signatureBytes + '\"');\n\t}\n\n\tvar rPadding = countPadding(signature, 0, paramBytes);\n\tvar sPadding = countPadding(signature, paramBytes, signature.length);\n\tvar rLength = paramBytes - rPadding;\n\tvar sLength = paramBytes - sPadding;\n\n\tvar rsBytes = 1 + 1 + rLength + 1 + 1 + sLength;\n\n\tvar shortLength = rsBytes < MAX_OCTET;\n\n\tvar dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes);\n\n\tvar offset = 0;\n\tdst[offset++] = ENCODED_TAG_SEQ;\n\tif (shortLength) {\n\t\t// Bit 8 has value \"0\"\n\t\t// bits 7-1 give the length.\n\t\tdst[offset++] = rsBytes;\n\t} else {\n\t\t// Bit 8 of first octet has value \"1\"\n\t\t// bits 7-1 give the number of additional length octets.\n\t\tdst[offset++] = MAX_OCTET\t| 1;\n\t\t// length, base 256\n\t\tdst[offset++] = rsBytes & 0xff;\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = rLength;\n\tif (rPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\toffset += signature.copy(dst, offset, 0, paramBytes);\n\t} else {\n\t\toffset += signature.copy(dst, offset, rPadding, paramBytes);\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = sLength;\n\tif (sPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\tsignature.copy(dst, offset, paramBytes);\n\t} else {\n\t\tsignature.copy(dst, offset, paramBytes + sPadding);\n\t}\n\n\treturn dst;\n}\n\nmodule.exports = {\n\tderToJose: derToJose,\n\tjoseToDer: joseToDer\n};\n","/*jshint node:true */\n'use strict';\nvar Buffer = require('buffer').Buffer; // browserify\nvar SlowBuffer = require('buffer').SlowBuffer;\n\nmodule.exports = bufferEq;\n\nfunction bufferEq(a, b) {\n\n // shortcutting on type is necessary for correctness\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n return false;\n }\n\n // buffer sizes should be well-known information, so despite this\n // shortcutting, it doesn't leak any information about the *contents* of the\n // buffers.\n if (a.length !== b.length) {\n return false;\n }\n\n var c = 0;\n for (var i = 0; i < a.length; i++) {\n /*jshint bitwise:false */\n c |= a[i] ^ b[i]; // XOR\n }\n return c === 0;\n}\n\nbufferEq.install = function() {\n Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {\n return bufferEq(this, that);\n };\n};\n\nvar origBufEqual = Buffer.prototype.equal;\nvar origSlowBufEqual = SlowBuffer.prototype.equal;\nbufferEq.restore = function() {\n Buffer.prototype.equal = origBufEqual;\n SlowBuffer.prototype.equal = origSlowBufEqual;\n};\n","var Buffer = require('safe-buffer').Buffer;\nvar crypto = require('crypto');\nvar formatEcdsa = require('ecdsa-sig-formatter');\nvar util = require('util');\n\nvar MSG_INVALID_ALGORITHM = '\"%s\" is not a valid algorithm.\\n Supported algorithms are:\\n \"HS256\", \"HS384\", \"HS512\", \"RS256\", \"RS384\", \"RS512\", \"PS256\", \"PS384\", \"PS512\", \"ES256\", \"ES384\", \"ES512\" and \"none\".'\nvar MSG_INVALID_SECRET = 'secret must be a string or buffer';\nvar MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer';\nvar MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object';\n\nvar supportsKeyObjects = typeof crypto.createPublicKey === 'function';\nif (supportsKeyObjects) {\n MSG_INVALID_VERIFIER_KEY += ' or a KeyObject';\n MSG_INVALID_SECRET += 'or a KeyObject';\n}\n\nfunction checkIsPublicKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.type !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.asymmetricKeyType !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n};\n\nfunction checkIsPrivateKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (typeof key === 'object') {\n return;\n }\n\n throw typeError(MSG_INVALID_SIGNER_KEY);\n};\n\nfunction checkIsSecretKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return key;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (key.type !== 'secret') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_SECRET);\n }\n}\n\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n}\n\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n\n var padding = 4 - base64url.length % 4;\n if (padding !== 4) {\n for (var i = 0; i < padding; ++i) {\n base64url += '=';\n }\n }\n\n return base64url\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n}\n\nfunction typeError(template) {\n var args = [].slice.call(arguments, 1);\n var errMsg = util.format.bind(util, template).apply(null, args);\n return new TypeError(errMsg);\n}\n\nfunction bufferOrString(obj) {\n return Buffer.isBuffer(obj) || typeof obj === 'string';\n}\n\nfunction normalizeInput(thing) {\n if (!bufferOrString(thing))\n thing = JSON.stringify(thing);\n return thing;\n}\n\nfunction createHmacSigner(bits) {\n return function sign(thing, secret) {\n checkIsSecretKey(secret);\n thing = normalizeInput(thing);\n var hmac = crypto.createHmac('sha' + bits, secret);\n var sig = (hmac.update(thing), hmac.digest('base64'))\n return fromBase64(sig);\n }\n}\n\nvar bufferEqual;\nvar timingSafeEqual = 'timingSafeEqual' in crypto ? function timingSafeEqual(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n return crypto.timingSafeEqual(a, b)\n} : function timingSafeEqual(a, b) {\n if (!bufferEqual) {\n bufferEqual = require('buffer-equal-constant-time');\n }\n\n return bufferEqual(a, b)\n}\n\nfunction createHmacVerifier(bits) {\n return function verify(thing, signature, secret) {\n var computedSig = createHmacSigner(bits)(thing, secret);\n return timingSafeEqual(Buffer.from(signature), Buffer.from(computedSig));\n }\n}\n\nfunction createKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n // Even though we are specifying \"RSA\" here, this works with ECDSA\n // keys as well.\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign(privateKey, 'base64'));\n return fromBase64(sig);\n }\n}\n\nfunction createKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify(publicKey, signature, 'base64');\n }\n}\n\nfunction createPSSKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign({\n key: privateKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, 'base64'));\n return fromBase64(sig);\n }\n}\n\nfunction createPSSKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify({\n key: publicKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, signature, 'base64');\n }\n}\n\nfunction createECDSASigner(bits) {\n var inner = createKeySigner(bits);\n return function sign() {\n var signature = inner.apply(null, arguments);\n signature = formatEcdsa.derToJose(signature, 'ES' + bits);\n return signature;\n };\n}\n\nfunction createECDSAVerifer(bits) {\n var inner = createKeyVerifier(bits);\n return function verify(thing, signature, publicKey) {\n signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64');\n var result = inner(thing, signature, publicKey);\n return result;\n };\n}\n\nfunction createNoneSigner() {\n return function sign() {\n return '';\n }\n}\n\nfunction createNoneVerifier() {\n return function verify(thing, signature) {\n return signature === '';\n }\n}\n\nmodule.exports = function jwa(algorithm) {\n var signerFactories = {\n hs: createHmacSigner,\n rs: createKeySigner,\n ps: createPSSKeySigner,\n es: createECDSASigner,\n none: createNoneSigner,\n }\n var verifierFactories = {\n hs: createHmacVerifier,\n rs: createKeyVerifier,\n ps: createPSSKeyVerifier,\n es: createECDSAVerifer,\n none: createNoneVerifier,\n }\n var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/);\n if (!match)\n throw typeError(MSG_INVALID_ALGORITHM, algorithm);\n var algo = (match[1] || match[3]).toLowerCase();\n var bits = match[2];\n\n return {\n sign: signerFactories[algo](bits),\n verify: verifierFactories[algo](bits),\n }\n};\n","/*global module*/\nvar Buffer = require('buffer').Buffer;\n\nmodule.exports = function toString(obj) {\n if (typeof obj === 'string')\n return obj;\n if (typeof obj === 'number' || Buffer.isBuffer(obj))\n return obj.toString();\n return JSON.stringify(obj);\n};\n","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\n\nfunction base64url(string, encoding) {\n return Buffer\n .from(string, encoding)\n .toString('base64')\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n}\n\nfunction jwsSecuredInput(header, payload, encoding) {\n encoding = encoding || 'utf8';\n var encodedHeader = base64url(toString(header), 'binary');\n var encodedPayload = base64url(toString(payload), encoding);\n return util.format('%s.%s', encodedHeader, encodedPayload);\n}\n\nfunction jwsSign(opts) {\n var header = opts.header;\n var payload = opts.payload;\n var secretOrKey = opts.secret || opts.privateKey;\n var encoding = opts.encoding;\n var algo = jwa(header.alg);\n var securedInput = jwsSecuredInput(header, payload, encoding);\n var signature = algo.sign(securedInput, secretOrKey);\n return util.format('%s.%s', securedInput, signature);\n}\n\nfunction SignStream(opts) {\n var secret = opts.secret;\n secret = secret == null ? opts.privateKey : secret;\n secret = secret == null ? opts.key : secret;\n if (/^hs/i.test(opts.header.alg) === true && secret == null) {\n throw new TypeError('secret must be a string or buffer or a KeyObject')\n }\n var secretStream = new DataStream(secret);\n this.readable = true;\n this.header = opts.header;\n this.encoding = opts.encoding;\n this.secret = this.privateKey = this.key = secretStream;\n this.payload = new DataStream(opts.payload);\n this.secret.once('close', function () {\n if (!this.payload.writable && this.readable)\n this.sign();\n }.bind(this));\n\n this.payload.once('close', function () {\n if (!this.secret.writable && this.readable)\n this.sign();\n }.bind(this));\n}\nutil.inherits(SignStream, Stream);\n\nSignStream.prototype.sign = function sign() {\n try {\n var signature = jwsSign({\n header: this.header,\n payload: this.payload.buffer,\n secret: this.secret.buffer,\n encoding: this.encoding\n });\n this.emit('done', signature);\n this.emit('data', signature);\n this.emit('end');\n this.readable = false;\n return signature;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\n\nSignStream.sign = jwsSign;\n\nmodule.exports = SignStream;\n","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\nvar JWS_REGEX = /^[a-zA-Z0-9\\-_]+?\\.[a-zA-Z0-9\\-_]+?\\.([a-zA-Z0-9\\-_]+)?$/;\n\nfunction isObject(thing) {\n return Object.prototype.toString.call(thing) === '[object Object]';\n}\n\nfunction safeJsonParse(thing) {\n if (isObject(thing))\n return thing;\n try { return JSON.parse(thing); }\n catch (e) { return undefined; }\n}\n\nfunction headerFromJWS(jwsSig) {\n var encodedHeader = jwsSig.split('.', 1)[0];\n return safeJsonParse(Buffer.from(encodedHeader, 'base64').toString('binary'));\n}\n\nfunction securedInputFromJWS(jwsSig) {\n return jwsSig.split('.', 2).join('.');\n}\n\nfunction signatureFromJWS(jwsSig) {\n return jwsSig.split('.')[2];\n}\n\nfunction payloadFromJWS(jwsSig, encoding) {\n encoding = encoding || 'utf8';\n var payload = jwsSig.split('.')[1];\n return Buffer.from(payload, 'base64').toString(encoding);\n}\n\nfunction isValidJws(string) {\n return JWS_REGEX.test(string) && !!headerFromJWS(string);\n}\n\nfunction jwsVerify(jwsSig, algorithm, secretOrKey) {\n if (!algorithm) {\n var err = new Error(\"Missing algorithm parameter for jws.verify\");\n err.code = \"MISSING_ALGORITHM\";\n throw err;\n }\n jwsSig = toString(jwsSig);\n var signature = signatureFromJWS(jwsSig);\n var securedInput = securedInputFromJWS(jwsSig);\n var algo = jwa(algorithm);\n return algo.verify(securedInput, signature, secretOrKey);\n}\n\nfunction jwsDecode(jwsSig, opts) {\n opts = opts || {};\n jwsSig = toString(jwsSig);\n\n if (!isValidJws(jwsSig))\n return null;\n\n var header = headerFromJWS(jwsSig);\n\n if (!header)\n return null;\n\n var payload = payloadFromJWS(jwsSig);\n if (header.typ === 'JWT' || opts.json)\n payload = JSON.parse(payload, opts.encoding);\n\n return {\n header: header,\n payload: payload,\n signature: signatureFromJWS(jwsSig)\n };\n}\n\nfunction VerifyStream(opts) {\n opts = opts || {};\n var secretOrKey = opts.secret;\n secretOrKey = secretOrKey == null ? opts.publicKey : secretOrKey;\n secretOrKey = secretOrKey == null ? opts.key : secretOrKey;\n if (/^hs/i.test(opts.algorithm) === true && secretOrKey == null) {\n throw new TypeError('secret must be a string or buffer or a KeyObject')\n }\n var secretStream = new DataStream(secretOrKey);\n this.readable = true;\n this.algorithm = opts.algorithm;\n this.encoding = opts.encoding;\n this.secret = this.publicKey = this.key = secretStream;\n this.signature = new DataStream(opts.signature);\n this.secret.once('close', function () {\n if (!this.signature.writable && this.readable)\n this.verify();\n }.bind(this));\n\n this.signature.once('close', function () {\n if (!this.secret.writable && this.readable)\n this.verify();\n }.bind(this));\n}\nutil.inherits(VerifyStream, Stream);\nVerifyStream.prototype.verify = function verify() {\n try {\n var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer);\n var obj = jwsDecode(this.signature.buffer, this.encoding);\n this.emit('done', valid, obj);\n this.emit('data', valid);\n this.emit('end');\n this.readable = false;\n return valid;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\n\nVerifyStream.decode = jwsDecode;\nVerifyStream.isValid = isValidJws;\nVerifyStream.verify = jwsVerify;\n\nmodule.exports = VerifyStream;\n","/*global exports*/\nvar SignStream = require('./lib/sign-stream');\nvar VerifyStream = require('./lib/verify-stream');\n\nvar ALGORITHMS = [\n 'HS256', 'HS384', 'HS512',\n 'RS256', 'RS384', 'RS512',\n 'PS256', 'PS384', 'PS512',\n 'ES256', 'ES384', 'ES512'\n];\n\nexports.ALGORITHMS = ALGORITHMS;\nexports.sign = SignStream.sign;\nexports.verify = VerifyStream.verify;\nexports.decode = VerifyStream.decode;\nexports.isValid = VerifyStream.isValid;\nexports.createSign = function createSign(opts) {\n return new SignStream(opts);\n};\nexports.createVerify = function createVerify(opts) {\n return new VerifyStream(opts);\n};\n","'use strict';\n\nconst WebPushConstants = {};\n\nWebPushConstants.supportedContentEncodings = {\n AES_GCM: 'aesgcm',\n AES_128_GCM: 'aes128gcm'\n};\n\nWebPushConstants.supportedUrgency = {\n VERY_LOW: 'very-low',\n LOW: 'low',\n NORMAL: 'normal',\n HIGH: 'high'\n};\n\nmodule.exports = WebPushConstants;\n","'use strict';\n\n/**\n * @param {string} base64\n * @returns {boolean}\n */\nfunction validate(base64) {\n return /^[A-Za-z0-9\\-_]+$/.test(base64);\n}\n\nmodule.exports = {\n validate: validate\n};\n","'use strict';\n\nconst crypto = require('crypto');\nconst asn1 = require('asn1.js');\nconst jws = require('jws');\nconst { URL } = require('url');\n\nconst WebPushConstants = require('./web-push-constants.js');\nconst urlBase64Helper = require('./urlsafe-base64-helper');\n\n/**\n * DEFAULT_EXPIRATION is set to seconds in 12 hours\n */\nconst DEFAULT_EXPIRATION_SECONDS = 12 * 60 * 60;\n\n// Maximum expiration is 24 hours according. (See VAPID spec)\nconst MAX_EXPIRATION_SECONDS = 24 * 60 * 60;\n\nconst ECPrivateKeyASN = asn1.define('ECPrivateKey', function() {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').explicit(0).objid()\n .optional(),\n this.key('publicKey').explicit(1).bitstr()\n .optional()\n );\n});\n\nfunction toPEM(key) {\n return ECPrivateKeyASN.encode({\n version: 1,\n privateKey: key,\n parameters: [1, 2, 840, 10045, 3, 1, 7] // prime256v1\n }, 'pem', {\n label: 'EC PRIVATE KEY'\n });\n}\n\nfunction generateVAPIDKeys() {\n const curve = crypto.createECDH('prime256v1');\n curve.generateKeys();\n\n let publicKeyBuffer = curve.getPublicKey();\n let privateKeyBuffer = curve.getPrivateKey();\n\n // Occassionally the keys will not be padded to the correct lengh resulting\n // in errors, hence this padding.\n // See https://github.com/web-push-libs/web-push/issues/295 for history.\n if (privateKeyBuffer.length < 32) {\n const padding = Buffer.alloc(32 - privateKeyBuffer.length);\n padding.fill(0);\n privateKeyBuffer = Buffer.concat([padding, privateKeyBuffer]);\n }\n\n if (publicKeyBuffer.length < 65) {\n const padding = Buffer.alloc(65 - publicKeyBuffer.length);\n padding.fill(0);\n publicKeyBuffer = Buffer.concat([padding, publicKeyBuffer]);\n }\n\n return {\n publicKey: publicKeyBuffer.toString('base64url'),\n privateKey: privateKeyBuffer.toString('base64url')\n };\n}\n\nfunction validateSubject(subject) {\n if (!subject) {\n throw new Error('No subject set in vapidDetails.subject.');\n }\n\n if (typeof subject !== 'string' || subject.length === 0) {\n throw new Error('The subject value must be a string containing an https: URL or '\n + 'mailto: address. ' + subject);\n }\n\n let subjectParseResult = null;\n try {\n subjectParseResult = new URL(subject);\n } catch (err) {\n throw new Error('Vapid subject is not a valid URL. ' + subject);\n }\n if (!['https:', 'mailto:'].includes(subjectParseResult.protocol)) {\n throw new Error('Vapid subject is not an https: or mailto: URL. ' + subject);\n }\n if (subjectParseResult.hostname === 'localhost') {\n console.warn('Vapid subject points to a localhost web URI, which is unsupported by '\n + 'Apple\\'s push notification server and will result in a BadJwtToken error when '\n + 'sending notifications.');\n }\n}\n\nfunction validatePublicKey(publicKey) {\n if (!publicKey) {\n throw new Error('No key set vapidDetails.publicKey');\n }\n\n if (typeof publicKey !== 'string') {\n throw new Error('Vapid public key is must be a URL safe Base 64 '\n + 'encoded string.');\n }\n\n if (!urlBase64Helper.validate(publicKey)) {\n throw new Error('Vapid public key must be a URL safe Base 64 (without \"=\")');\n }\n\n publicKey = Buffer.from(publicKey, 'base64url');\n\n if (publicKey.length !== 65) {\n throw new Error('Vapid public key should be 65 bytes long when decoded.');\n }\n}\n\nfunction validatePrivateKey(privateKey) {\n if (!privateKey) {\n throw new Error('No key set in vapidDetails.privateKey');\n }\n\n if (typeof privateKey !== 'string') {\n throw new Error('Vapid private key must be a URL safe Base 64 '\n + 'encoded string.');\n }\n\n if (!urlBase64Helper.validate(privateKey)) {\n throw new Error('Vapid private key must be a URL safe Base 64 (without \"=\")');\n }\n\n privateKey = Buffer.from(privateKey, 'base64url');\n\n if (privateKey.length !== 32) {\n throw new Error('Vapid private key should be 32 bytes long when decoded.');\n }\n}\n\n/**\n * Given the number of seconds calculates\n * the expiration in the future by adding the passed `numSeconds`\n * with the current seconds from Unix Epoch\n *\n * @param {Number} numSeconds Number of seconds to be added\n * @return {Number} Future expiration in seconds\n */\nfunction getFutureExpirationTimestamp(numSeconds) {\n const futureExp = new Date();\n futureExp.setSeconds(futureExp.getSeconds() + numSeconds);\n return Math.floor(futureExp.getTime() / 1000);\n}\n\n/**\n * Validates the Expiration Header based on the VAPID Spec\n * Throws error of type `Error` if the expiration is not validated\n *\n * @param {Number} expiration Expiration seconds from Epoch to be validated\n */\nfunction validateExpiration(expiration) {\n if (!Number.isInteger(expiration)) {\n throw new Error('`expiration` value must be a number');\n }\n\n if (expiration < 0) {\n throw new Error('`expiration` must be a positive integer');\n }\n\n // Roughly checks the time of expiration, since the max expiration can be ahead\n // of the time than at the moment the expiration was generated\n const maxExpirationTimestamp = getFutureExpirationTimestamp(MAX_EXPIRATION_SECONDS);\n\n if (expiration >= maxExpirationTimestamp) {\n throw new Error('`expiration` value is greater than maximum of 24 hours');\n }\n}\n\n/**\n * This method takes the required VAPID parameters and returns the required\n * header to be added to a Web Push Protocol Request.\n * @param {string} audience This must be the origin of the push service.\n * @param {string} subject This should be a URL or a 'mailto:' email\n * address.\n * @param {string} publicKey The VAPID public key.\n * @param {string} privateKey The VAPID private key.\n * @param {string} contentEncoding The contentEncoding type.\n * @param {integer} [expiration] The expiration of the VAPID JWT.\n * @return {Object} Returns an Object with the Authorization and\n * 'Crypto-Key' values to be used as headers.\n */\nfunction getVapidHeaders(audience, subject, publicKey, privateKey, contentEncoding, expiration) {\n if (!audience) {\n throw new Error('No audience could be generated for VAPID.');\n }\n\n if (typeof audience !== 'string' || audience.length === 0) {\n throw new Error('The audience value must be a string containing the '\n + 'origin of a push service. ' + audience);\n }\n\n try {\n new URL(audience); // eslint-disable-line no-new\n } catch (err) {\n throw new Error('VAPID audience is not a url. ' + audience);\n }\n\n validateSubject(subject);\n validatePublicKey(publicKey);\n validatePrivateKey(privateKey);\n\n privateKey = Buffer.from(privateKey, 'base64url');\n\n if (expiration) {\n validateExpiration(expiration);\n } else {\n expiration = getFutureExpirationTimestamp(DEFAULT_EXPIRATION_SECONDS);\n }\n\n const header = {\n typ: 'JWT',\n alg: 'ES256'\n };\n\n const jwtPayload = {\n aud: audience,\n exp: expiration,\n sub: subject\n };\n\n const jwt = jws.sign({\n header: header,\n payload: jwtPayload,\n privateKey: toPEM(privateKey)\n });\n\n if (contentEncoding === WebPushConstants.supportedContentEncodings.AES_128_GCM) {\n return {\n Authorization: 'vapid t=' + jwt + ', k=' + publicKey\n };\n }\n if (contentEncoding === WebPushConstants.supportedContentEncodings.AES_GCM) {\n return {\n Authorization: 'WebPush ' + jwt,\n 'Crypto-Key': 'p256ecdsa=' + publicKey\n };\n }\n\n throw new Error('Unsupported encoding type specified.');\n}\n\nmodule.exports = {\n generateVAPIDKeys: generateVAPIDKeys,\n getFutureExpirationTimestamp: getFutureExpirationTimestamp,\n getVapidHeaders: getVapidHeaders,\n validateSubject: validateSubject,\n validatePublicKey: validatePublicKey,\n validatePrivateKey: validatePrivateKey,\n validateExpiration: validateExpiration\n};\n","'use strict';\n/*\n * Encrypted content coding\n *\n * === Note about versions ===\n *\n * This code supports multiple versions of the draft. This is selected using\n * the |version| parameter.\n *\n * aes128gcm: The most recent version, the salt, record size and key identifier\n * are included in a header that is part of the encrypted content coding.\n *\n * aesgcm: The version that is widely deployed with WebPush (as of 2016-11).\n * This version is selected by default, unless you specify a |padSize| of 1.\n */\n\nvar crypto = require('crypto');\n\nvar AES_GCM = 'aes-128-gcm';\nvar PAD_SIZE = { 'aes128gcm': 1, 'aesgcm': 2 };\nvar TAG_LENGTH = 16;\nvar KEY_LENGTH = 16;\nvar NONCE_LENGTH = 12;\nvar SHA_256_LENGTH = 32;\nvar MODE_ENCRYPT = 'encrypt';\nvar MODE_DECRYPT = 'decrypt';\n\nvar keylog;\nif (process.env.ECE_KEYLOG === '1') {\n keylog = function(m, k) {\n console.warn(m + ' [' + k.length + ']: ' + k.toString('base64url'));\n return k;\n };\n} else {\n keylog = function(m, k) { return k; };\n}\n\n/* Optionally base64 decode something. */\nfunction decode(b) {\n if (typeof b === 'string') {\n return Buffer.from(b, 'base64url');\n }\n return b;\n}\n\nfunction HMAC_hash(key, input) {\n var hmac = crypto.createHmac('sha256', key);\n hmac.update(input);\n return hmac.digest();\n}\n\n/* HKDF as defined in RFC5869, using SHA-256 */\nfunction HKDF_extract(salt, ikm) {\n keylog('salt', salt);\n keylog('ikm', ikm);\n return keylog('extract', HMAC_hash(salt, ikm));\n}\n\nfunction HKDF_expand(prk, info, l) {\n keylog('prk', prk);\n keylog('info', info);\n var output = Buffer.alloc(0);\n var T = Buffer.alloc(0);\n info = Buffer.from(info, 'ascii');\n var counter = 0;\n var cbuf = Buffer.alloc(1);\n while (output.length < l) {\n cbuf.writeUIntBE(++counter, 0, 1);\n T = HMAC_hash(prk, Buffer.concat([T, info, cbuf]));\n output = Buffer.concat([output, T]);\n }\n\n return keylog('expand', output.slice(0, l));\n}\n\nfunction HKDF(salt, ikm, info, len) {\n return HKDF_expand(HKDF_extract(salt, ikm), info, len);\n}\n\nfunction info(base, context) {\n var result = Buffer.concat([\n Buffer.from('Content-Encoding: ' + base + '\\0', 'ascii'),\n context\n ]);\n keylog('info ' + base, result);\n return result;\n}\n\nfunction lengthPrefix(buffer) {\n var b = Buffer.concat([Buffer.alloc(2), buffer]);\n b.writeUIntBE(buffer.length, 0, 2);\n return b;\n}\n\nfunction extractDH(header, mode) {\n var key = header.privateKey;\n var senderPubKey, receiverPubKey;\n if (mode === MODE_ENCRYPT) {\n senderPubKey = key.getPublicKey();\n receiverPubKey = header.dh;\n } else if (mode === MODE_DECRYPT) {\n senderPubKey = header.dh;\n receiverPubKey = key.getPublicKey();\n } else {\n throw new Error('Unknown mode only ' + MODE_ENCRYPT +\n ' and ' + MODE_DECRYPT + ' supported');\n }\n return {\n secret: key.computeSecret(header.dh),\n context: Buffer.concat([\n Buffer.from(header.keylabel, 'ascii'),\n Buffer.from([0]),\n lengthPrefix(receiverPubKey), // user agent\n lengthPrefix(senderPubKey) // application server\n ])\n };\n}\n\nfunction extractSecretAndContext(header, mode) {\n var result = { secret: null, context: Buffer.alloc(0) };\n if (header.key) {\n result.secret = header.key;\n if (result.secret.length !== KEY_LENGTH) {\n throw new Error('An explicit key must be ' + KEY_LENGTH + ' bytes');\n }\n } else if (header.dh) { // receiver/decrypt\n result = extractDH(header, mode);\n } else if (typeof header.keyid !== undefined) {\n result.secret = header.keymap[header.keyid];\n }\n if (!result.secret) {\n throw new Error('Unable to determine key');\n }\n keylog('secret', result.secret);\n keylog('context', result.context);\n if (header.authSecret) {\n result.secret = HKDF(header.authSecret, result.secret,\n info('auth', Buffer.alloc(0)), SHA_256_LENGTH);\n keylog('authsecret', result.secret);\n }\n return result;\n}\n\nfunction webpushSecret(header, mode) {\n if (!header.authSecret) {\n throw new Error('No authentication secret for webpush');\n }\n keylog('authsecret', header.authSecret);\n\n var remotePubKey, senderPubKey, receiverPubKey;\n if (mode === MODE_ENCRYPT) {\n senderPubKey = header.privateKey.getPublicKey();\n remotePubKey = receiverPubKey = header.dh;\n } else if (mode === MODE_DECRYPT) {\n remotePubKey = senderPubKey = header.keyid;\n receiverPubKey = header.privateKey.getPublicKey();\n } else {\n throw new Error('Unknown mode only ' + MODE_ENCRYPT +\n ' and ' + MODE_DECRYPT + ' supported');\n }\n keylog('remote pubkey', remotePubKey);\n keylog('sender pubkey', senderPubKey);\n keylog('receiver pubkey', receiverPubKey);\n return keylog('secret dh',\n HKDF(header.authSecret,\n header.privateKey.computeSecret(remotePubKey),\n Buffer.concat([\n Buffer.from('WebPush: info\\0'),\n receiverPubKey,\n senderPubKey\n ]),\n SHA_256_LENGTH));\n}\n\nfunction extractSecret(header, mode, keyLookupCallback) {\n if (keyLookupCallback) {\n if (!isFunction(keyLookupCallback)) {\n throw new Error('Callback is not a function')\n }\n }\n\n if (header.key) {\n if (header.key.length !== KEY_LENGTH) {\n throw new Error('An explicit key must be ' + KEY_LENGTH + ' bytes');\n }\n return keylog('secret key', header.key);\n }\n\n if (!header.privateKey) {\n // Lookup based on keyid\n if (!keyLookupCallback) {\n var key = header.keymap && header.keymap[header.keyid];\n } else {\n var key = keyLookupCallback(header.keyid)\n }\n if (!key) {\n throw new Error('No saved key (keyid: \"' + header.keyid + '\")');\n }\n return key;\n }\n\n return webpushSecret(header, mode);\n}\n\nfunction deriveKeyAndNonce(header, mode, lookupKeyCallback) {\n if (!header.salt) {\n throw new Error('must include a salt parameter for ' + header.version);\n }\n var keyInfo;\n var nonceInfo;\n var secret;\n if (header.version === 'aesgcm') {\n // old\n var s = extractSecretAndContext(header, mode, lookupKeyCallback);\n keyInfo = info('aesgcm', s.context);\n nonceInfo = info('nonce', s.context);\n secret = s.secret;\n } else if (header.version === 'aes128gcm') {\n // latest\n keyInfo = Buffer.from('Content-Encoding: aes128gcm\\0');\n nonceInfo = Buffer.from('Content-Encoding: nonce\\0');\n secret = extractSecret(header, mode, lookupKeyCallback);\n } else {\n throw new Error('Unable to set context for mode ' + header.version);\n }\n var prk = HKDF_extract(header.salt, secret);\n var result = {\n key: HKDF_expand(prk, keyInfo, KEY_LENGTH),\n nonce: HKDF_expand(prk, nonceInfo, NONCE_LENGTH)\n };\n keylog('key', result.key);\n keylog('nonce base', result.nonce);\n return result;\n}\n\n/* Parse command-line arguments. */\nfunction parseParams(params) {\n var header = {};\n\n header.version = params.version || 'aes128gcm';\n header.rs = parseInt(params.rs, 10);\n if (isNaN(header.rs)) {\n header.rs = 4096;\n }\n var overhead = PAD_SIZE[header.version];\n if (header.version === 'aes128gcm') {\n overhead += TAG_LENGTH;\n }\n if (header.rs <= overhead) {\n throw new Error('The rs parameter has to be greater than ' + overhead);\n }\n\n if (params.salt) {\n header.salt = decode(params.salt);\n if (header.salt.length !== KEY_LENGTH) {\n throw new Error('The salt parameter must be ' + KEY_LENGTH + ' bytes');\n }\n }\n header.keyid = params.keyid;\n if (params.key) {\n header.key = decode(params.key);\n } else {\n header.privateKey = params.privateKey;\n if (!header.privateKey) {\n header.keymap = params.keymap;\n }\n if (header.version !== 'aes128gcm') {\n header.keylabel = params.keylabel || 'P-256';\n }\n if (params.dh) {\n header.dh = decode(params.dh);\n }\n }\n if (params.authSecret) {\n header.authSecret = decode(params.authSecret);\n }\n return header;\n}\n\nfunction generateNonce(base, counter) {\n var nonce = Buffer.from(base);\n var m = nonce.readUIntBE(nonce.length - 6, 6);\n var x = ((m ^ counter) & 0xffffff) +\n ((((m / 0x1000000) ^ (counter / 0x1000000)) & 0xffffff) * 0x1000000);\n nonce.writeUIntBE(x, nonce.length - 6, 6);\n keylog('nonce' + counter, nonce);\n return nonce;\n}\n\n/* Used when decrypting aes128gcm to populate the header values. Modifies the\n * header values in place and returns the size of the header. */\nfunction readHeader(buffer, header) {\n var idsz = buffer.readUIntBE(20, 1);\n header.salt = buffer.slice(0, KEY_LENGTH);\n header.rs = buffer.readUIntBE(KEY_LENGTH, 4);\n header.keyid = buffer.slice(21, 21 + idsz);\n return 21 + idsz;\n}\n\nfunction unpadLegacy(data, version) {\n var padSize = PAD_SIZE[version];\n var pad = data.readUIntBE(0, padSize);\n if (pad + padSize > data.length) {\n throw new Error('padding exceeds block size');\n }\n keylog('padding', data.slice(0, padSize + pad));\n var padCheck = Buffer.alloc(pad);\n padCheck.fill(0);\n if (padCheck.compare(data.slice(padSize, padSize + pad)) !== 0) {\n throw new Error('invalid padding');\n }\n return data.slice(padSize + pad);\n}\n\nfunction unpad(data, last) {\n var i = data.length - 1;\n while(i >= 0) {\n if (data[i]) {\n if (last) {\n if (data[i] !== 2) {\n throw new Error('last record needs to start padding with a 2');\n }\n } else {\n if (data[i] !== 1) {\n throw new Error('last record needs to start padding with a 2');\n }\n }\n return data.slice(0, i);\n }\n --i;\n }\n throw new Error('all zero plaintext');\n}\n\nfunction decryptRecord(key, counter, buffer, header, last) {\n keylog('decrypt', buffer);\n var nonce = generateNonce(key.nonce, counter);\n var gcm = crypto.createDecipheriv(AES_GCM, key.key, nonce);\n gcm.setAuthTag(buffer.slice(buffer.length - TAG_LENGTH));\n var data = gcm.update(buffer.slice(0, buffer.length - TAG_LENGTH));\n data = Buffer.concat([data, gcm.final()]);\n keylog('decrypted', data);\n if (header.version !== 'aes128gcm') {\n return unpadLegacy(data, header.version);\n }\n return unpad(data, last);\n}\n\n/**\n * Decrypt some bytes. This uses the parameters to determine the key and block\n * size, which are described in the draft. Binary values are base64url encoded.\n *\n * |params.version| contains the version of encoding to use: aes128gcm is the latest,\n * but aesgcm is also accepted (though the latter might\n * disappear in a future release). If omitted, assume aes128gcm.\n *\n * If |params.key| is specified, that value is used as the key.\n *\n * If the version is aes128gcm, the keyid is extracted from the header and used\n * as the ECDH public key of the sender. For version aesgcm ,\n * |params.dh| needs to be provided with the public key of the sender.\n *\n * The |params.privateKey| includes the private key of the receiver.\n */\nfunction decrypt(buffer, params, keyLookupCallback) {\n var header = parseParams(params);\n if (header.version === 'aes128gcm') {\n var headerLength = readHeader(buffer, header);\n buffer = buffer.slice(headerLength);\n }\n var key = deriveKeyAndNonce(header, MODE_DECRYPT, keyLookupCallback);\n var start = 0;\n var result = Buffer.alloc(0);\n\n var chunkSize = header.rs;\n if (header.version !== 'aes128gcm') {\n chunkSize += TAG_LENGTH;\n }\n\n for (var i = 0; start < buffer.length; ++i) {\n var end = start + chunkSize;\n if (header.version !== 'aes128gcm' && end === buffer.length) {\n throw new Error('Truncated payload');\n }\n end = Math.min(end, buffer.length);\n if (end - start <= TAG_LENGTH) {\n throw new Error('Invalid block: too small at ' + i);\n }\n var block = decryptRecord(key, i, buffer.slice(start, end),\n header, end >= buffer.length);\n result = Buffer.concat([result, block]);\n start = end;\n }\n return result;\n}\n\nfunction encryptRecord(key, counter, buffer, pad, header, last) {\n keylog('encrypt', buffer);\n pad = pad || 0;\n var nonce = generateNonce(key.nonce, counter);\n var gcm = crypto.createCipheriv(AES_GCM, key.key, nonce);\n\n var ciphertext = [];\n var padSize = PAD_SIZE[header.version];\n var padding = Buffer.alloc(pad + padSize);\n padding.fill(0);\n\n if (header.version !== 'aes128gcm') {\n padding.writeUIntBE(pad, 0, padSize);\n keylog('padding', padding);\n ciphertext.push(gcm.update(padding));\n ciphertext.push(gcm.update(buffer));\n\n if (!last && padding.length + buffer.length < header.rs) {\n throw new Error('Unable to pad to record size');\n }\n } else {\n ciphertext.push(gcm.update(buffer));\n padding.writeUIntBE(last ? 2 : 1, 0, 1);\n keylog('padding', padding);\n ciphertext.push(gcm.update(padding));\n }\n\n gcm.final();\n var tag = gcm.getAuthTag();\n if (tag.length !== TAG_LENGTH) {\n throw new Error('invalid tag generated');\n }\n ciphertext.push(tag);\n return keylog('encrypted', Buffer.concat(ciphertext));\n}\n\nfunction writeHeader(header) {\n var ints = Buffer.alloc(5);\n var keyid = Buffer.from(header.keyid || []);\n if (keyid.length > 255) {\n throw new Error('keyid is too large');\n }\n ints.writeUIntBE(header.rs, 0, 4);\n ints.writeUIntBE(keyid.length, 4, 1);\n return Buffer.concat([header.salt, ints, keyid]);\n}\n\n/**\n * Encrypt some bytes. This uses the parameters to determine the key and block\n * size, which are described in the draft.\n *\n * |params.version| contains the version of encoding to use: aes128gcm is the latest,\n * but aesgcm is also accepted (though the latter two might\n * disappear in a future release). If omitted, assume aes128gcm.\n *\n * If |params.key| is specified, that value is used as the key.\n *\n * For Diffie-Hellman (WebPush), |params.dh| includes the public key of the\n * receiver. |params.privateKey| is used to establish a shared secret. Key\n * pairs can be created using |crypto.createECDH()|.\n */\nfunction encrypt(buffer, params, keyLookupCallback) { \n if (!Buffer.isBuffer(buffer)) {\n throw new Error('buffer argument must be a Buffer');\n }\n var header = parseParams(params);\n if (!header.salt) {\n header.salt = crypto.randomBytes(KEY_LENGTH);\n }\n\n var result;\n if (header.version === 'aes128gcm') {\n // Save the DH public key in the header unless keyid is set.\n if (header.privateKey && !header.keyid) {\n header.keyid = header.privateKey.getPublicKey();\n }\n result = writeHeader(header);\n } else {\n // No header on other versions\n result = Buffer.alloc(0);\n }\n\n var key = deriveKeyAndNonce(header, MODE_ENCRYPT, keyLookupCallback);\n var start = 0;\n var padSize = PAD_SIZE[header.version];\n var overhead = padSize;\n if (header.version === 'aes128gcm') {\n overhead += TAG_LENGTH;\n }\n var pad = isNaN(parseInt(params.pad, 10)) ? 0 : parseInt(params.pad, 10);\n\n var counter = 0;\n var last = false;\n while (!last) {\n // Pad so that at least one data byte is in a block.\n var recordPad = Math.min(header.rs - overhead - 1, pad);\n if (header.version !== 'aes128gcm') {\n recordPad = Math.min((1 << (padSize * 8)) - 1, recordPad);\n }\n if (pad > 0 && recordPad === 0) {\n ++recordPad; // Deal with perverse case of rs=overhead+1 with padding.\n }\n pad -= recordPad;\n\n var end = start + header.rs - overhead - recordPad;\n if (header.version !== 'aes128gcm') {\n // The > here ensures that we write out a padding-only block at the end\n // of a buffer.\n last = end > buffer.length;\n } else {\n last = end >= buffer.length;\n }\n last = last && pad <= 0;\n var block = encryptRecord(key, counter, buffer.slice(start, end),\n recordPad, header, last);\n result = Buffer.concat([result, block]);\n\n start = end;\n ++counter;\n }\n return result;\n}\n\n\nfunction isFunction(object) {\n return typeof(object) === 'function';\n }\n\nmodule.exports = {\n decrypt: decrypt,\n encrypt: encrypt\n};\n","'use strict';\n\nconst crypto = require('crypto');\nconst ece = require('http_ece');\n\nconst encrypt = function(userPublicKey, userAuth, payload, contentEncoding) {\n if (!userPublicKey) {\n throw new Error('No user public key provided for encryption.');\n }\n\n if (typeof userPublicKey !== 'string') {\n throw new Error('The subscription p256dh value must be a string.');\n }\n\n if (Buffer.from(userPublicKey, 'base64url').length !== 65) {\n throw new Error('The subscription p256dh value should be 65 bytes long.');\n }\n\n if (!userAuth) {\n throw new Error('No user auth provided for encryption.');\n }\n\n if (typeof userAuth !== 'string') {\n throw new Error('The subscription auth key must be a string.');\n }\n\n if (Buffer.from(userAuth, 'base64url').length < 16) {\n throw new Error('The subscription auth key should be at least 16 '\n + 'bytes long');\n }\n\n if (typeof payload !== 'string' && !Buffer.isBuffer(payload)) {\n throw new Error('Payload must be either a string or a Node Buffer.');\n }\n\n if (typeof payload === 'string' || payload instanceof String) {\n payload = Buffer.from(payload);\n }\n\n const localCurve = crypto.createECDH('prime256v1');\n const localPublicKey = localCurve.generateKeys();\n\n const salt = crypto.randomBytes(16).toString('base64url');\n\n const cipherText = ece.encrypt(payload, {\n version: contentEncoding,\n dh: userPublicKey,\n privateKey: localCurve,\n salt: salt,\n authSecret: userAuth\n });\n\n return {\n localPublicKey: localPublicKey,\n salt: salt,\n cipherText: cipherText\n };\n};\n\nmodule.exports = {\n encrypt: encrypt\n};\n","'use strict';\n\nfunction WebPushError(message, statusCode, headers, body, endpoint) {\n Error.captureStackTrace(this, this.constructor);\n\n this.name = this.constructor.name;\n this.message = message;\n this.statusCode = statusCode;\n this.headers = headers;\n this.body = body;\n this.endpoint = endpoint;\n}\n\nrequire('util').inherits(WebPushError, Error);\n\nmodule.exports = WebPushError;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.req = exports.json = exports.toBuffer = void 0;\nconst http = __importStar(require(\"http\"));\nconst https = __importStar(require(\"https\"));\nasync function toBuffer(stream) {\n let length = 0;\n const chunks = [];\n for await (const chunk of stream) {\n length += chunk.length;\n chunks.push(chunk);\n }\n return Buffer.concat(chunks, length);\n}\nexports.toBuffer = toBuffer;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nasync function json(stream) {\n const buf = await toBuffer(stream);\n const str = buf.toString('utf8');\n try {\n return JSON.parse(str);\n }\n catch (_err) {\n const err = _err;\n err.message += ` (input: ${str})`;\n throw err;\n }\n}\nexports.json = json;\nfunction req(url, opts = {}) {\n const href = typeof url === 'string' ? url : url.href;\n const req = (href.startsWith('https:') ? https : http).request(url, opts);\n const promise = new Promise((resolve, reject) => {\n req\n .once('response', resolve)\n .once('error', reject)\n .end();\n });\n req.then = promise.then.bind(promise);\n return req;\n}\nexports.req = req;\n//# sourceMappingURL=helpers.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Agent = void 0;\nconst net = __importStar(require(\"net\"));\nconst http = __importStar(require(\"http\"));\nconst https_1 = require(\"https\");\n__exportStar(require(\"./helpers\"), exports);\nconst INTERNAL = Symbol('AgentBaseInternalState');\nclass Agent extends http.Agent {\n constructor(opts) {\n super(opts);\n this[INTERNAL] = {};\n }\n /**\n * Determine whether this is an `http` or `https` request.\n */\n isSecureEndpoint(options) {\n if (options) {\n // First check the `secureEndpoint` property explicitly, since this\n // means that a parent `Agent` is \"passing through\" to this instance.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (typeof options.secureEndpoint === 'boolean') {\n return options.secureEndpoint;\n }\n // If no explicit `secure` endpoint, check if `protocol` property is\n // set. This will usually be the case since using a full string URL\n // or `URL` instance should be the most common usage.\n if (typeof options.protocol === 'string') {\n return options.protocol === 'https:';\n }\n }\n // Finally, if no `protocol` property was set, then fall back to\n // checking the stack trace of the current call stack, and try to\n // detect the \"https\" module.\n const { stack } = new Error();\n if (typeof stack !== 'string')\n return false;\n return stack\n .split('\\n')\n .some((l) => l.indexOf('(https.js:') !== -1 ||\n l.indexOf('node:https:') !== -1);\n }\n // In order to support async signatures in `connect()` and Node's native\n // connection pooling in `http.Agent`, the array of sockets for each origin\n // has to be updated synchronously. This is so the length of the array is\n // accurate when `addRequest()` is next called. We achieve this by creating a\n // fake socket and adding it to `sockets[origin]` and incrementing\n // `totalSocketCount`.\n incrementSockets(name) {\n // If `maxSockets` and `maxTotalSockets` are both Infinity then there is no\n // need to create a fake socket because Node.js native connection pooling\n // will never be invoked.\n if (this.maxSockets === Infinity && this.maxTotalSockets === Infinity) {\n return null;\n }\n // All instances of `sockets` are expected TypeScript errors. The\n // alternative is to add it as a private property of this class but that\n // will break TypeScript subclassing.\n if (!this.sockets[name]) {\n // @ts-expect-error `sockets` is readonly in `@types/node`\n this.sockets[name] = [];\n }\n const fakeSocket = new net.Socket({ writable: false });\n this.sockets[name].push(fakeSocket);\n // @ts-expect-error `totalSocketCount` isn't defined in `@types/node`\n this.totalSocketCount++;\n return fakeSocket;\n }\n decrementSockets(name, socket) {\n if (!this.sockets[name] || socket === null) {\n return;\n }\n const sockets = this.sockets[name];\n const index = sockets.indexOf(socket);\n if (index !== -1) {\n sockets.splice(index, 1);\n // @ts-expect-error `totalSocketCount` isn't defined in `@types/node`\n this.totalSocketCount--;\n if (sockets.length === 0) {\n // @ts-expect-error `sockets` is readonly in `@types/node`\n delete this.sockets[name];\n }\n }\n }\n // In order to properly update the socket pool, we need to call `getName()` on\n // the core `https.Agent` if it is a secureEndpoint.\n getName(options) {\n const secureEndpoint = this.isSecureEndpoint(options);\n if (secureEndpoint) {\n // @ts-expect-error `getName()` isn't defined in `@types/node`\n return https_1.Agent.prototype.getName.call(this, options);\n }\n // @ts-expect-error `getName()` isn't defined in `@types/node`\n return super.getName(options);\n }\n createSocket(req, options, cb) {\n const connectOpts = {\n ...options,\n secureEndpoint: this.isSecureEndpoint(options),\n };\n const name = this.getName(connectOpts);\n const fakeSocket = this.incrementSockets(name);\n Promise.resolve()\n .then(() => this.connect(req, connectOpts))\n .then((socket) => {\n this.decrementSockets(name, fakeSocket);\n if (socket instanceof http.Agent) {\n try {\n // @ts-expect-error `addRequest()` isn't defined in `@types/node`\n return socket.addRequest(req, connectOpts);\n }\n catch (err) {\n return cb(err);\n }\n }\n this[INTERNAL].currentSocket = socket;\n // @ts-expect-error `createSocket()` isn't defined in `@types/node`\n super.createSocket(req, options, cb);\n }, (err) => {\n this.decrementSockets(name, fakeSocket);\n cb(err);\n });\n }\n createConnection() {\n const socket = this[INTERNAL].currentSocket;\n this[INTERNAL].currentSocket = undefined;\n if (!socket) {\n throw new Error('No socket was returned in the `connect()` function');\n }\n return socket;\n }\n get defaultPort() {\n return (this[INTERNAL].defaultPort ??\n (this.protocol === 'https:' ? 443 : 80));\n }\n set defaultPort(v) {\n if (this[INTERNAL]) {\n this[INTERNAL].defaultPort = v;\n }\n }\n get protocol() {\n return (this[INTERNAL].protocol ??\n (this.isSecureEndpoint() ? 'https:' : 'http:'));\n }\n set protocol(v) {\n if (this[INTERNAL]) {\n this[INTERNAL].protocol = v;\n }\n }\n}\nexports.Agent = Agent;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseProxyResponse = void 0;\nconst debug_1 = __importDefault(require(\"debug\"));\nconst debug = (0, debug_1.default)('https-proxy-agent:parse-proxy-response');\nfunction parseProxyResponse(socket) {\n return new Promise((resolve, reject) => {\n // we need to buffer any HTTP traffic that happens with the proxy before we get\n // the CONNECT response, so that if the response is anything other than an \"200\"\n // response code, then we can re-play the \"data\" events on the socket once the\n // HTTP parser is hooked up...\n let buffersLength = 0;\n const buffers = [];\n function read() {\n const b = socket.read();\n if (b)\n ondata(b);\n else\n socket.once('readable', read);\n }\n function cleanup() {\n socket.removeListener('end', onend);\n socket.removeListener('error', onerror);\n socket.removeListener('readable', read);\n }\n function onend() {\n cleanup();\n debug('onend');\n reject(new Error('Proxy connection ended before receiving CONNECT response'));\n }\n function onerror(err) {\n cleanup();\n debug('onerror %o', err);\n reject(err);\n }\n function ondata(b) {\n buffers.push(b);\n buffersLength += b.length;\n const buffered = Buffer.concat(buffers, buffersLength);\n const endOfHeaders = buffered.indexOf('\\r\\n\\r\\n');\n if (endOfHeaders === -1) {\n // keep buffering\n debug('have not received end of HTTP headers yet...');\n read();\n return;\n }\n const headerParts = buffered\n .slice(0, endOfHeaders)\n .toString('ascii')\n .split('\\r\\n');\n const firstLine = headerParts.shift();\n if (!firstLine) {\n socket.destroy();\n return reject(new Error('No header received from proxy CONNECT response'));\n }\n const firstLineParts = firstLine.split(' ');\n const statusCode = +firstLineParts[1];\n const statusText = firstLineParts.slice(2).join(' ');\n const headers = {};\n for (const header of headerParts) {\n if (!header)\n continue;\n const firstColon = header.indexOf(':');\n if (firstColon === -1) {\n socket.destroy();\n return reject(new Error(`Invalid header from proxy CONNECT response: \"${header}\"`));\n }\n const key = header.slice(0, firstColon).toLowerCase();\n const value = header.slice(firstColon + 1).trimStart();\n const current = headers[key];\n if (typeof current === 'string') {\n headers[key] = [current, value];\n }\n else if (Array.isArray(current)) {\n current.push(value);\n }\n else {\n headers[key] = value;\n }\n }\n debug('got proxy server response: %o %o', firstLine, headers);\n cleanup();\n resolve({\n connect: {\n statusCode,\n statusText,\n headers,\n },\n buffered,\n });\n }\n socket.on('error', onerror);\n socket.on('end', onend);\n read();\n });\n}\nexports.parseProxyResponse = parseProxyResponse;\n//# sourceMappingURL=parse-proxy-response.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpsProxyAgent = void 0;\nconst net = __importStar(require(\"net\"));\nconst tls = __importStar(require(\"tls\"));\nconst assert_1 = __importDefault(require(\"assert\"));\nconst debug_1 = __importDefault(require(\"debug\"));\nconst agent_base_1 = require(\"agent-base\");\nconst url_1 = require(\"url\");\nconst parse_proxy_response_1 = require(\"./parse-proxy-response\");\nconst debug = (0, debug_1.default)('https-proxy-agent');\nconst setServernameFromNonIpHost = (options) => {\n if (options.servername === undefined &&\n options.host &&\n !net.isIP(options.host)) {\n return {\n ...options,\n servername: options.host,\n };\n }\n return options;\n};\n/**\n * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to\n * the specified \"HTTP(s) proxy server\" in order to proxy HTTPS requests.\n *\n * Outgoing HTTP requests are first tunneled through the proxy server using the\n * `CONNECT` HTTP request method to establish a connection to the proxy server,\n * and then the proxy server connects to the destination target and issues the\n * HTTP request from the proxy server.\n *\n * `https:` requests have their socket connection upgraded to TLS once\n * the connection to the proxy server has been established.\n */\nclass HttpsProxyAgent extends agent_base_1.Agent {\n constructor(proxy, opts) {\n super(opts);\n this.options = { path: undefined };\n this.proxy = typeof proxy === 'string' ? new url_1.URL(proxy) : proxy;\n this.proxyHeaders = opts?.headers ?? {};\n debug('Creating new HttpsProxyAgent instance: %o', this.proxy.href);\n // Trim off the brackets from IPv6 addresses\n const host = (this.proxy.hostname || this.proxy.host).replace(/^\\[|\\]$/g, '');\n const port = this.proxy.port\n ? parseInt(this.proxy.port, 10)\n : this.proxy.protocol === 'https:'\n ? 443\n : 80;\n this.connectOpts = {\n // Attempt to negotiate http/1.1 for proxy servers that support http/2\n ALPNProtocols: ['http/1.1'],\n ...(opts ? omit(opts, 'headers') : null),\n host,\n port,\n };\n }\n /**\n * Called when the node-core HTTP client library is creating a\n * new HTTP request.\n */\n async connect(req, opts) {\n const { proxy } = this;\n if (!opts.host) {\n throw new TypeError('No \"host\" provided');\n }\n // Create a socket connection to the proxy server.\n let socket;\n if (proxy.protocol === 'https:') {\n debug('Creating `tls.Socket`: %o', this.connectOpts);\n socket = tls.connect(setServernameFromNonIpHost(this.connectOpts));\n }\n else {\n debug('Creating `net.Socket`: %o', this.connectOpts);\n socket = net.connect(this.connectOpts);\n }\n const headers = typeof this.proxyHeaders === 'function'\n ? this.proxyHeaders()\n : { ...this.proxyHeaders };\n const host = net.isIPv6(opts.host) ? `[${opts.host}]` : opts.host;\n let payload = `CONNECT ${host}:${opts.port} HTTP/1.1\\r\\n`;\n // Inject the `Proxy-Authorization` header if necessary.\n if (proxy.username || proxy.password) {\n const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(auth).toString('base64')}`;\n }\n headers.Host = `${host}:${opts.port}`;\n if (!headers['Proxy-Connection']) {\n headers['Proxy-Connection'] = this.keepAlive\n ? 'Keep-Alive'\n : 'close';\n }\n for (const name of Object.keys(headers)) {\n payload += `${name}: ${headers[name]}\\r\\n`;\n }\n const proxyResponsePromise = (0, parse_proxy_response_1.parseProxyResponse)(socket);\n socket.write(`${payload}\\r\\n`);\n const { connect, buffered } = await proxyResponsePromise;\n req.emit('proxyConnect', connect);\n this.emit('proxyConnect', connect, req);\n if (connect.statusCode === 200) {\n req.once('socket', resume);\n if (opts.secureEndpoint) {\n // The proxy is connecting to a TLS server, so upgrade\n // this socket connection to a TLS connection.\n debug('Upgrading socket connection to TLS');\n return tls.connect({\n ...omit(setServernameFromNonIpHost(opts), 'host', 'path', 'port'),\n socket,\n });\n }\n return socket;\n }\n // Some other status code that's not 200... need to re-play the HTTP\n // header \"data\" events onto the socket once the HTTP machinery is\n // attached so that the node core `http` can parse and handle the\n // error status code.\n // Close the original socket, and a new \"fake\" socket is returned\n // instead, so that the proxy doesn't get the HTTP request\n // written to it (which may contain `Authorization` headers or other\n // sensitive data).\n //\n // See: https://hackerone.com/reports/541502\n socket.destroy();\n const fakeSocket = new net.Socket({ writable: false });\n fakeSocket.readable = true;\n // Need to wait for the \"socket\" event to re-play the \"data\" events.\n req.once('socket', (s) => {\n debug('Replaying proxy buffer for failed request');\n (0, assert_1.default)(s.listenerCount('data') > 0);\n // Replay the \"buffered\" Buffer onto the fake `socket`, since at\n // this point the HTTP module machinery has been hooked up for\n // the user.\n s.push(buffered);\n s.push(null);\n });\n return fakeSocket;\n }\n}\nHttpsProxyAgent.protocols = ['http', 'https'];\nexports.HttpsProxyAgent = HttpsProxyAgent;\nfunction resume(socket) {\n socket.resume();\n}\nfunction omit(obj, ...keys) {\n const ret = {};\n let key;\n for (key in obj) {\n if (!keys.includes(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n//# sourceMappingURL=index.js.map","'use strict';\n\nconst url = require('url');\nconst https = require('https');\n\nconst WebPushError = require('./web-push-error.js');\nconst vapidHelper = require('./vapid-helper.js');\nconst encryptionHelper = require('./encryption-helper.js');\nconst webPushConstants = require('./web-push-constants.js');\nconst urlBase64Helper = require('./urlsafe-base64-helper');\n\n// Default TTL is four weeks.\nconst DEFAULT_TTL = 2419200;\n\nlet gcmAPIKey = '';\nlet vapidDetails;\n\nfunction WebPushLib() {\n\n}\n\n/**\n * When sending messages to a GCM endpoint you need to set the GCM API key\n * by either calling setGMAPIKey() or passing in the API key as an option\n * to sendNotification().\n * @param {string} apiKey The API key to send with the GCM request.\n */\nWebPushLib.prototype.setGCMAPIKey = function(apiKey) {\n if (apiKey === null) {\n gcmAPIKey = null;\n return;\n }\n\n if (typeof apiKey === 'undefined'\n || typeof apiKey !== 'string'\n || apiKey.length === 0) {\n throw new Error('The GCM API Key should be a non-empty string or null.');\n }\n\n gcmAPIKey = apiKey;\n};\n\n/**\n * When making requests where you want to define VAPID details, call this\n * method before sendNotification() or pass in the details and options to\n * sendNotification.\n * @param {string} subject This must be either a URL or a 'mailto:'\n * address. For example: 'https://my-site.com/contact' or\n * 'mailto: contact@my-site.com'\n * @param {string} publicKey The public VAPID key, a URL safe, base64 encoded string\n * @param {string} privateKey The private VAPID key, a URL safe, base64 encoded string.\n */\nWebPushLib.prototype.setVapidDetails = function(subject, publicKey, privateKey) {\n if (arguments.length === 1 && arguments[0] === null) {\n vapidDetails = null;\n return;\n }\n\n vapidHelper.validateSubject(subject);\n vapidHelper.validatePublicKey(publicKey);\n vapidHelper.validatePrivateKey(privateKey);\n\n vapidDetails = {\n subject: subject,\n publicKey: publicKey,\n privateKey: privateKey\n };\n };\n\n /**\n * To get the details of a request to trigger a push message, without sending\n * a push notification call this method.\n *\n * This method will throw an error if there is an issue with the input.\n * @param {PushSubscription} subscription The PushSubscription you wish to\n * send the notification to.\n * @param {string|Buffer} [payload] The payload you wish to send to the\n * the user.\n * @param {Object} [options] Options for the GCM API key and\n * vapid keys can be passed in if they are unique for each notification you\n * wish to send.\n * @return {Object} This method returns an Object which\n * contains 'endpoint', 'method', 'headers' and 'payload'.\n */\nWebPushLib.prototype.generateRequestDetails = function(subscription, payload, options) {\n if (!subscription || !subscription.endpoint) {\n throw new Error('You must pass in a subscription with at least '\n + 'an endpoint.');\n }\n\n if (typeof subscription.endpoint !== 'string'\n || subscription.endpoint.length === 0) {\n throw new Error('The subscription endpoint must be a string with '\n + 'a valid URL.');\n }\n\n if (payload) {\n // Validate the subscription keys\n if (typeof subscription !== 'object' || !subscription.keys\n || !subscription.keys.p256dh\n || !subscription.keys.auth) {\n throw new Error('To send a message with a payload, the '\n + 'subscription must have \\'auth\\' and \\'p256dh\\' keys.');\n }\n }\n\n let currentGCMAPIKey = gcmAPIKey;\n let currentVapidDetails = vapidDetails;\n let timeToLive = DEFAULT_TTL;\n let extraHeaders = {};\n let contentEncoding = webPushConstants.supportedContentEncodings.AES_128_GCM;\n let urgency = webPushConstants.supportedUrgency.NORMAL;\n let topic;\n let proxy;\n let agent;\n let timeout;\n\n if (options) {\n const validOptionKeys = [\n 'headers',\n 'gcmAPIKey',\n 'vapidDetails',\n 'TTL',\n 'contentEncoding',\n 'urgency',\n 'topic',\n 'proxy',\n 'agent',\n 'timeout'\n ];\n const optionKeys = Object.keys(options);\n for (let i = 0; i < optionKeys.length; i += 1) {\n const optionKey = optionKeys[i];\n if (!validOptionKeys.includes(optionKey)) {\n throw new Error('\\'' + optionKey + '\\' is an invalid option. '\n + 'The valid options are [\\'' + validOptionKeys.join('\\', \\'')\n + '\\'].');\n }\n }\n\n if (options.headers) {\n extraHeaders = options.headers;\n let duplicates = Object.keys(extraHeaders)\n .filter(function (header) {\n return typeof options[header] !== 'undefined';\n });\n\n if (duplicates.length > 0) {\n throw new Error('Duplicated headers defined ['\n + duplicates.join(',') + ']. Please either define the header in the'\n + 'top level options OR in the \\'headers\\' key.');\n }\n }\n\n if (options.gcmAPIKey) {\n currentGCMAPIKey = options.gcmAPIKey;\n }\n\n // Falsy values are allowed here so one can skip Vapid `else if` below and use FCM\n if (options.vapidDetails !== undefined) {\n currentVapidDetails = options.vapidDetails;\n }\n\n if (options.TTL !== undefined) {\n timeToLive = Number(options.TTL);\n if (timeToLive < 0) {\n throw new Error('TTL should be a number and should be at least 0');\n }\n }\n\n if (options.contentEncoding) {\n if ((options.contentEncoding === webPushConstants.supportedContentEncodings.AES_128_GCM\n || options.contentEncoding === webPushConstants.supportedContentEncodings.AES_GCM)) {\n contentEncoding = options.contentEncoding;\n } else {\n throw new Error('Unsupported content encoding specified.');\n }\n }\n\n if (options.urgency) {\n if ((options.urgency === webPushConstants.supportedUrgency.VERY_LOW\n || options.urgency === webPushConstants.supportedUrgency.LOW\n || options.urgency === webPushConstants.supportedUrgency.NORMAL\n || options.urgency === webPushConstants.supportedUrgency.HIGH)) {\n urgency = options.urgency;\n } else {\n throw new Error('Unsupported urgency specified.');\n }\n }\n\n if (options.topic) {\n if (!urlBase64Helper.validate(options.topic)) {\n throw new Error('Unsupported characters set use the URL or filename-safe Base64 characters set');\n }\n if (options.topic.length > 32) {\n throw new Error('use maximum of 32 characters from the URL or filename-safe Base64 characters set');\n }\n topic = options.topic;\n }\n\n if (options.proxy) {\n if (typeof options.proxy === 'string'\n || typeof options.proxy.host === 'string') {\n proxy = options.proxy;\n } else {\n console.warn('Attempt to use proxy option, but invalid type it should be a string or proxy options object.');\n }\n }\n\n if (options.agent) {\n if (options.agent instanceof https.Agent) {\n if (proxy) {\n console.warn('Agent option will be ignored because proxy option is defined.');\n }\n\n agent = options.agent;\n } else {\n console.warn('Wrong type for the agent option, it should be an instance of https.Agent.');\n }\n }\n\n if (typeof options.timeout === 'number') {\n timeout = options.timeout;\n }\n }\n\n if (typeof timeToLive === 'undefined') {\n timeToLive = DEFAULT_TTL;\n }\n\n const requestDetails = {\n method: 'POST',\n headers: {\n TTL: timeToLive\n }\n };\n Object.keys(extraHeaders).forEach(function (header) {\n requestDetails.headers[header] = extraHeaders[header];\n });\n let requestPayload = null;\n\n if (payload) {\n const encrypted = encryptionHelper\n .encrypt(subscription.keys.p256dh, subscription.keys.auth, payload, contentEncoding);\n\n requestDetails.headers['Content-Length'] = encrypted.cipherText.length;\n requestDetails.headers['Content-Type'] = 'application/octet-stream';\n\n if (contentEncoding === webPushConstants.supportedContentEncodings.AES_128_GCM) {\n requestDetails.headers['Content-Encoding'] = webPushConstants.supportedContentEncodings.AES_128_GCM;\n } else if (contentEncoding === webPushConstants.supportedContentEncodings.AES_GCM) {\n requestDetails.headers['Content-Encoding'] = webPushConstants.supportedContentEncodings.AES_GCM;\n requestDetails.headers.Encryption = 'salt=' + encrypted.salt;\n requestDetails.headers['Crypto-Key'] = 'dh=' + encrypted.localPublicKey.toString('base64url');\n }\n\n requestPayload = encrypted.cipherText;\n } else {\n requestDetails.headers['Content-Length'] = 0;\n }\n\n const isGCM = subscription.endpoint.startsWith('https://android.googleapis.com/gcm/send');\n const isFCM = subscription.endpoint.startsWith('https://fcm.googleapis.com/fcm/send');\n // VAPID isn't supported by GCM hence the if, else if.\n if (isGCM) {\n if (!currentGCMAPIKey) {\n console.warn('Attempt to send push notification to GCM endpoint, '\n + 'but no GCM key is defined. Please use setGCMApiKey() or add '\n + '\\'gcmAPIKey\\' as an option.');\n } else {\n requestDetails.headers.Authorization = 'key=' + currentGCMAPIKey;\n }\n } else if (currentVapidDetails) {\n const parsedUrl = url.parse(subscription.endpoint);\n const audience = parsedUrl.protocol + '//'\n + parsedUrl.host;\n\n const vapidHeaders = vapidHelper.getVapidHeaders(\n audience,\n currentVapidDetails.subject,\n currentVapidDetails.publicKey,\n currentVapidDetails.privateKey,\n contentEncoding\n );\n\n requestDetails.headers.Authorization = vapidHeaders.Authorization;\n\n if (contentEncoding === webPushConstants.supportedContentEncodings.AES_GCM) {\n if (requestDetails.headers['Crypto-Key']) {\n requestDetails.headers['Crypto-Key'] += ';'\n + vapidHeaders['Crypto-Key'];\n } else {\n requestDetails.headers['Crypto-Key'] = vapidHeaders['Crypto-Key'];\n }\n }\n } else if (isFCM && currentGCMAPIKey) {\n requestDetails.headers.Authorization = 'key=' + currentGCMAPIKey;\n }\n\n requestDetails.headers.Urgency = urgency;\n\n if (topic) {\n requestDetails.headers.Topic = topic;\n }\n\n requestDetails.body = requestPayload;\n requestDetails.endpoint = subscription.endpoint;\n\n if (proxy) {\n requestDetails.proxy = proxy;\n }\n\n if (agent) {\n requestDetails.agent = agent;\n }\n\n if (timeout) {\n requestDetails.timeout = timeout;\n }\n\n return requestDetails;\n };\n\n/**\n * To send a push notification call this method with a subscription, optional\n * payload and any options.\n * @param {PushSubscription} subscription The PushSubscription you wish to\n * send the notification to.\n * @param {string|Buffer} [payload] The payload you wish to send to the\n * the user.\n * @param {Object} [options] Options for the GCM API key and\n * vapid keys can be passed in if they are unique for each notification you\n * wish to send.\n * @return {Promise} This method returns a Promise which\n * resolves if the sending of the notification was successful, otherwise it\n * rejects.\n */\nWebPushLib.prototype.sendNotification = function(subscription, payload, options) {\n let requestDetails;\n try {\n requestDetails = this.generateRequestDetails(subscription, payload, options);\n } catch (err) {\n return Promise.reject(err);\n }\n\n return new Promise(function(resolve, reject) {\n const httpsOptions = {};\n const urlParts = url.parse(requestDetails.endpoint);\n httpsOptions.hostname = urlParts.hostname;\n httpsOptions.port = urlParts.port;\n httpsOptions.path = urlParts.path;\n\n httpsOptions.headers = requestDetails.headers;\n httpsOptions.method = requestDetails.method;\n\n if (requestDetails.timeout) {\n httpsOptions.timeout = requestDetails.timeout;\n }\n\n if (requestDetails.agent) {\n httpsOptions.agent = requestDetails.agent;\n }\n\n if (requestDetails.proxy) {\n const { HttpsProxyAgent } = require('https-proxy-agent'); // eslint-disable-line global-require\n httpsOptions.agent = new HttpsProxyAgent(requestDetails.proxy);\n }\n\n const pushRequest = https.request(httpsOptions, function(pushResponse) {\n let responseText = '';\n\n pushResponse.on('data', function(chunk) {\n responseText += chunk;\n });\n\n pushResponse.on('end', function() {\n if (pushResponse.statusCode < 200 || pushResponse.statusCode > 299) {\n reject(new WebPushError(\n 'Received unexpected response code',\n pushResponse.statusCode,\n pushResponse.headers,\n responseText,\n requestDetails.endpoint\n ));\n } else {\n resolve({\n statusCode: pushResponse.statusCode,\n body: responseText,\n headers: pushResponse.headers\n });\n }\n });\n });\n\n if (requestDetails.timeout) {\n pushRequest.on('timeout', function() {\n pushRequest.destroy(new Error('Socket timeout'));\n });\n }\n\n pushRequest.on('error', function(e) {\n reject(e);\n });\n\n if (requestDetails.body) {\n pushRequest.write(requestDetails.body);\n }\n\n pushRequest.end();\n });\n };\n\nmodule.exports = WebPushLib;\n","'use strict';\n\nconst vapidHelper = require('./vapid-helper.js');\nconst encryptionHelper = require('./encryption-helper.js');\nconst WebPushLib = require('./web-push-lib.js');\nconst WebPushError = require('./web-push-error.js');\nconst WebPushConstants = require('./web-push-constants.js');\n\nconst webPush = new WebPushLib();\n\nmodule.exports = {\n WebPushError: WebPushError,\n supportedContentEncodings: WebPushConstants.supportedContentEncodings,\n encrypt: encryptionHelper.encrypt,\n getVapidHeaders: vapidHelper.getVapidHeaders,\n generateVAPIDKeys: vapidHelper.generateVAPIDKeys,\n setGCMAPIKey: webPush.setGCMAPIKey,\n setVapidDetails: webPush.setVapidDetails,\n generateRequestDetails: webPush.generateRequestDetails,\n sendNotification: webPush.sendNotification.bind(webPush)\n};\n","import { dirname, join } from \"path\";\nimport webpush from \"web-push\";\nimport { g as getSession, a as getAllSessions, b as getSessionsDir } from \"./sessions-json.js\";\nimport { d as detectNotifications, n as notificationText } from \"./session-notifications.js\";\nimport { c as capturePaneContentAsync, r as readPromptOptions } from \"./pane.js\";\nimport { w as watchSessionRepos, i as issueFor } from \"./github.js\";\nimport { s as sessionWatcher } from \"./git.js\";\nimport { readFileSync, statSync } from \"node:fs\";\nimport { P as PUSH_VAPID, d as SERVER_ONLY_PREFIX } from \"./ws-messages.js\";\nimport { z } from \"zod/v4\";\nimport { M as MACHINE_ID } from \"./instance.js\";\nimport { s as selfName } from \"./discover.js\";\nimport { c as ensureFleetPrefs } from \"./fleet.js\";\nfunction isGone(err) {\n const status = err?.statusCode;\n return status === 404 || status === 410;\n}\nfunction wantsEvent(events, kind) {\n return kind === \"completion\" ? events.done : events.needsYou;\n}\nfunction pushMessageFor(session, kind, machine, question = null) {\n const issue = issueFor(session.git_root, session.maestro_issue);\n return {\n ...notificationText({ ...session, issue, pane_choice: { question } }, kind, machine),\n tag: session.id,\n url: `/m/${encodeURIComponent(machine)}/session/${encodeURIComponent(session.tmux_target ?? session.id)}`,\n kind\n };\n}\nasync function deliverPush(message, send, devices, subscriptions = devices.subscriptions()) {\n const targets = subscriptions.filter((s) => wantsEvent(s.events, message.kind));\n const results = await Promise.allSettled(targets.map((s) => send(s, message)));\n const gone = [];\n results.forEach((result, i) => {\n if (result.status === \"fulfilled\") return;\n if (isGone(result.reason)) gone.push(targets[i].endpoint);\n else console.warn(\"[push] Send failed\", { endpoint: targets[i].endpoint, error: String(result.reason) });\n });\n return gone.length > 0 ? devices.forget(gone) : 0;\n}\nconst ISSUE_WATCH_MS = 60 * 1e3;\nconst DIALOG_DRAW_MS = 500;\nasync function dialogQuestion(session) {\n if (!session.tmux_target) return null;\n await new Promise((resolve) => setTimeout(resolve, DIALOG_DRAW_MS));\n const content = await capturePaneContentAsync(session.tmux_target).catch(() => null);\n return content ? readPromptOptions(content)?.question ?? null : null;\n}\nfunction startPushMonitor(send, devices, machine) {\n let seen = /* @__PURE__ */ new Map();\n let issuesWatchedAt = 0;\n const keepIssuesWarm = () => {\n if (Date.now() - issuesWatchedAt < ISSUE_WATCH_MS) return;\n issuesWatchedAt = Date.now();\n watchSessionRepos(getAllSessions());\n };\n const check = (changed) => {\n const sessions = changed ? [...changed].map(getSession).filter((s) => s !== null) : getAllSessions();\n const out = detectNotifications(seen, sessions);\n if (changed) {\n for (const id of changed) seen.delete(id);\n for (const [id, s] of out.seen) seen.set(id, s);\n } else {\n seen = out.seen;\n }\n keepIssuesWarm();\n if (out.events.length === 0) return;\n const subscriptions = devices.subscriptions();\n for (const { session, kind } of out.events) {\n if (!subscriptions.some((s) => wantsEvent(s.events, kind))) continue;\n void (async () => {\n const question = kind === \"completion\" ? null : await dialogQuestion(session);\n await deliverPush(pushMessageFor(session, kind, machine(), question), send, devices, subscriptions);\n })().catch((err) => console.warn(\"[push] Delivery failed\", String(err)));\n }\n };\n check();\n return sessionWatcher.subscribe(check);\n}\nconst VapidKeysSchema = z.object({ publicKey: z.string().min(1), privateKey: z.string().min(1) });\nconst SubscriptionValueSchema = z.object({\n keys: z.object({ p256dh: z.string(), auth: z.string() }),\n events: z.object({ needsYou: z.boolean(), done: z.boolean() }),\n created_at: z.number(),\n vapid: z.string()\n});\nconst SUBSCRIPTION_PREFIX = `${SERVER_ONLY_PREFIX}sub:`;\nfunction subscriptionKey(endpoint) {\n return SUBSCRIPTION_PREFIX + endpoint;\n}\nfunction subscriptionValue({ endpoint: _, ...value }) {\n return value;\n}\nfunction fleetVapid(prefs) {\n const parsed = VapidKeysSchema.safeParse(prefs[PUSH_VAPID]?.value);\n return parsed.success ? parsed.data : null;\n}\nfunction subscriptionIn(prefs, endpoint) {\n const parsed = SubscriptionValueSchema.safeParse(prefs[subscriptionKey(endpoint)]?.value);\n return parsed.success ? { endpoint, ...parsed.data } : null;\n}\nfunction subscriptionsIn(prefs, publicKey) {\n return Object.keys(prefs).filter((key) => key.startsWith(SUBSCRIPTION_PREFIX)).map((key) => subscriptionIn(prefs, key.slice(SUBSCRIPTION_PREFIX.length))).filter((s) => s !== null && s.vapid === publicKey);\n}\nclass FleetPush {\n constructor(prefs, selfId, now = Date.now) {\n this.prefs = prefs;\n this.selfId = selfId;\n this.now = now;\n }\n prefs;\n selfId;\n now;\n /** The fleet's key pair, or null while no machine has made one. */\n keys() {\n return fleetVapid(this.prefs.all());\n }\n /**\n * Put forward a key pair made at `at`. The fleet keeps the earliest made,\n * so this one stands only if no machine holds an older one.\n */\n offerKeys(keys, at) {\n this.prefs.merge({ [PUSH_VAPID]: { value: keys, at, by: this.selfId } });\n }\n /** The fleet's key pair, made now by `generate` when no machine has one yet. */\n ensureKeys(generate) {\n const held = this.keys();\n if (held) return held;\n this.offerKeys(generate(), this.now());\n return this.keys();\n }\n /** The devices a push signed with the fleet's key reaches. */\n subscriptions() {\n const keys = this.keys();\n return keys ? subscriptionsIn(this.prefs.all(), keys.publicKey) : [];\n }\n /** One device, under whichever key it subscribed, or null. */\n get(endpoint) {\n return subscriptionIn(this.prefs.all(), endpoint);\n }\n /** Add a device, or replace its keys and events if it subscribed before. */\n save(subscription) {\n const record = {\n ...subscription,\n created_at: this.get(subscription.endpoint)?.created_at ?? this.now()\n };\n this.prefs.set(subscriptionKey(record.endpoint), subscriptionValue(record));\n return record;\n }\n /** Forget the given devices on every machine. Returns how many were there to forget. */\n forget(endpoints) {\n const known = [...new Set(endpoints)].filter((endpoint) => this.get(endpoint));\n this.prefs.setAll(Object.fromEntries(known.map((endpoint) => [subscriptionKey(endpoint), null])));\n return known.length;\n }\n /**\n * Bring in what this machine kept before push spread across the fleet: its\n * own key pair in `vapid.json`, put forward with the time the file was\n * written, and the devices in `push-subscriptions.json`, bound to that key.\n * A device the fleet already knows of, or forgot, is left as the fleet has it.\n */\n importLocal(vapidPath, subscriptionsPath) {\n const local = readLocalKeys(vapidPath);\n if (!local) return;\n this.offerKeys(local.keys, local.at);\n const held = this.prefs.all();\n const fresh = readLocalSubscriptions(subscriptionsPath).filter((old) => !(subscriptionKey(old.endpoint) in held));\n this.prefs.setAll(\n Object.fromEntries(\n fresh.map((old) => [subscriptionKey(old.endpoint), subscriptionValue({ ...old, vapid: local.keys.publicKey })])\n )\n );\n }\n}\nconst LocalSubscriptionSchema = SubscriptionValueSchema.omit({ vapid: true }).extend({ endpoint: z.string() });\nfunction readLocalKeys(path) {\n try {\n const parsed = VapidKeysSchema.safeParse(JSON.parse(readFileSync(path, \"utf-8\")));\n return parsed.success ? { keys: parsed.data, at: statSync(path).mtimeMs } : null;\n } catch {\n return null;\n }\n}\nfunction readLocalSubscriptions(path) {\n let parsed;\n try {\n parsed = JSON.parse(readFileSync(path, \"utf-8\"));\n } catch {\n return [];\n }\n if (!Array.isArray(parsed)) return [];\n return parsed.flatMap((v) => {\n const row = LocalSubscriptionSchema.safeParse(v);\n return row.success ? [row.data] : [];\n });\n}\nconst VAPID_SUBJECT = \"https://github.com/christinoleo/claude-mux\";\nconst TTL_SECONDS = 60 * 60;\nfunction fleetPush() {\n const g = globalThis;\n if (g.__claudeMuxFleetPush) return g.__claudeMuxFleetPush;\n const push = new FleetPush(ensureFleetPrefs(), MACHINE_ID);\n const dir = dirname(getSessionsDir());\n push.importLocal(join(dir, \"vapid.json\"), join(dir, \"push-subscriptions.json\"));\n g.__claudeMuxFleetPush = push;\n return push;\n}\nfunction vapidKeys() {\n return fleetPush().ensureKeys(() => webpush.generateVAPIDKeys());\n}\nfunction sendPush(subscription, message) {\n const { publicKey, privateKey } = vapidKeys();\n return webpush.sendNotification(subscription, JSON.stringify(message), {\n vapidDetails: { subject: VAPID_SUBJECT, publicKey, privateKey },\n TTL: TTL_SECONDS,\n // A finished turn can wait for the phone's next wake; a waiting session cannot.\n urgency: message.kind === \"completion\" ? \"normal\" : \"high\"\n });\n}\nfunction ensurePushMonitor() {\n const g = globalThis;\n if (g.__claudeMuxPushMonitor) return;\n g.__claudeMuxPushMonitor = startPushMonitor(sendPush, fleetPush(), selfName);\n}\nexport {\n ensurePushMonitor as e,\n fleetPush as f,\n isGone as i,\n sendPush as s,\n vapidKeys as v\n};\n//# sourceMappingURL=push.js.map\n"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"mappings":"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,KAAK,KAAK,GAAG,IAAK;GACpC,KAAK,KAAK,KAAK,KAAK,GAAG;GACvB,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;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AAK,GAAG,IAAK;GACpC,KAAK,KAAK,KAAK,KAAK,GAAG;GACvB,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,I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"}
1
+ {"version":3,"file":"push-LMlCp4Lc.js","names":["z.object","z.string","z.boolean","z.number","webpush"],"sources":["../../../../node_modules/.bun/bn.js@4.12.5/node_modules/bn.js/lib/bn.js","../../../../node_modules/.bun/inherits@2.0.4/node_modules/inherits/inherits_browser.js","../../../../node_modules/.bun/safer-buffer@2.1.2/node_modules/safer-buffer/safer.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/reporter.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/buffer.js","../../../../node_modules/.bun/minimalistic-assert@1.0.1/node_modules/minimalistic-assert/index.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/node.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/constants/der.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/encoders/der.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/encoders/pem.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/encoders/index.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/decoders/der.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/decoders/pem.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/decoders/index.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/api.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/index.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/constants/index.js","../../../../node_modules/.bun/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1.js","../../../../node_modules/.bun/safe-buffer@5.2.1/node_modules/safe-buffer/index.js","../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/lib/data-stream.js","../../../../node_modules/.bun/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js","../../../../node_modules/.bun/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js","../../../../node_modules/.bun/buffer-equal-constant-time@1.0.1/node_modules/buffer-equal-constant-time/index.js","../../../../node_modules/.bun/jwa@2.0.1/node_modules/jwa/index.js","../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/lib/tostring.js","../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/lib/sign-stream.js","../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/lib/verify-stream.js","../../../../node_modules/.bun/jws@4.0.1/node_modules/jws/index.js","../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/web-push-constants.js","../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/urlsafe-base64-helper.js","../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/vapid-helper.js","../../../../node_modules/.bun/http_ece@1.2.0/node_modules/http_ece/ece.js","../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/encryption-helper.js","../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/web-push-error.js","../../../../node_modules/.bun/ms@2.1.3/node_modules/ms/index.js","../../../../node_modules/.bun/debug@4.4.3/node_modules/debug/src/common.js","../../../../node_modules/.bun/debug@4.4.3/node_modules/debug/src/browser.js","../../../../node_modules/.bun/agent-base@7.1.4/node_modules/agent-base/dist/helpers.js","../../../../node_modules/.bun/agent-base@7.1.4/node_modules/agent-base/dist/index.js","../../../../node_modules/.bun/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/parse-proxy-response.js","../../../../node_modules/.bun/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/index.js","../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/web-push-lib.js","../../../../node_modules/.bun/web-push@3.6.7/node_modules/web-push/src/index.js","../../../../web/.svelte-kit/adapter-bun/chunks/push.js"],"sourcesContent":["(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n i++;\n }\n\n // Clear words above the requested width so the result stays below 2 ** width\n for (; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n if (num === 0) {\n this.length = 1;\n this._normSign();\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.mod.abs();\n\n var half = num.abs().iushrn(1);\n var r2 = num.words[0] & 1;\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up, away from zero\n var up = new BN(1);\n up.negative = this.negative ^ num.negative;\n return dm.div.iadd(up);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/*global module, process*/\nvar Buffer = require('safe-buffer').Buffer;\nvar Stream = require('stream');\nvar util = require('util');\n\nfunction DataStream(data) {\n this.buffer = null;\n this.writable = true;\n this.readable = true;\n\n // No input\n if (!data) {\n this.buffer = Buffer.alloc(0);\n return this;\n }\n\n // Stream\n if (typeof data.pipe === 'function') {\n this.buffer = Buffer.alloc(0);\n data.pipe(this);\n return this;\n }\n\n // Buffer or String\n // or Object (assumedly a passworded key)\n if (data.length || typeof data === 'object') {\n this.buffer = data;\n this.writable = false;\n process.nextTick(function () {\n this.emit('end', data);\n this.readable = false;\n this.emit('close');\n }.bind(this));\n return this;\n }\n\n throw new TypeError('Unexpected data type ('+ typeof data + ')');\n}\nutil.inherits(DataStream, Stream);\n\nDataStream.prototype.write = function write(data) {\n this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]);\n this.emit('data', data);\n};\n\nDataStream.prototype.end = function end(data) {\n if (data)\n this.write(data);\n this.emit('end', data);\n this.emit('close');\n this.writable = false;\n this.readable = false;\n};\n\nmodule.exports = DataStream;\n","'use strict';\n\nfunction getParamSize(keySize) {\n\tvar result = ((keySize / 8) | 0) + (keySize % 8 === 0 ? 0 : 1);\n\treturn result;\n}\n\nvar paramBytesForAlg = {\n\tES256: getParamSize(256),\n\tES384: getParamSize(384),\n\tES512: getParamSize(521)\n};\n\nfunction getParamBytesForAlg(alg) {\n\tvar paramBytes = paramBytesForAlg[alg];\n\tif (paramBytes) {\n\t\treturn paramBytes;\n\t}\n\n\tthrow new Error('Unknown algorithm \"' + alg + '\"');\n}\n\nmodule.exports = getParamBytesForAlg;\n","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar getParamBytesForAlg = require('./param-bytes-for-alg');\n\nvar MAX_OCTET = 0x80,\n\tCLASS_UNIVERSAL = 0,\n\tPRIMITIVE_BIT = 0x20,\n\tTAG_SEQ = 0x10,\n\tTAG_INT = 0x02,\n\tENCODED_TAG_SEQ = (TAG_SEQ | PRIMITIVE_BIT) | (CLASS_UNIVERSAL << 6),\n\tENCODED_TAG_INT = TAG_INT | (CLASS_UNIVERSAL << 6);\n\nfunction base64Url(base64) {\n\treturn base64\n\t\t.replace(/=/g, '')\n\t\t.replace(/\\+/g, '-')\n\t\t.replace(/\\//g, '_');\n}\n\nfunction signatureAsBuffer(signature) {\n\tif (Buffer.isBuffer(signature)) {\n\t\treturn signature;\n\t} else if ('string' === typeof signature) {\n\t\treturn Buffer.from(signature, 'base64');\n\t}\n\n\tthrow new TypeError('ECDSA signature must be a Base64 string or a Buffer');\n}\n\nfunction derToJose(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\t// the DER encoded param should at most be the param size, plus a padding\n\t// zero, since due to being a signed integer\n\tvar maxEncodedParamLength = paramBytes + 1;\n\n\tvar inputLength = signature.length;\n\n\tvar offset = 0;\n\tif (signature[offset++] !== ENCODED_TAG_SEQ) {\n\t\tthrow new Error('Could not find expected \"seq\"');\n\t}\n\n\tvar seqLength = signature[offset++];\n\tif (seqLength === (MAX_OCTET | 1)) {\n\t\tseqLength = signature[offset++];\n\t}\n\n\tif (inputLength - offset < seqLength) {\n\t\tthrow new Error('\"seq\" specified length of \"' + seqLength + '\", only \"' + (inputLength - offset) + '\" remaining');\n\t}\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"r\"');\n\t}\n\n\tvar rLength = signature[offset++];\n\n\tif (inputLength - offset - 2 < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", only \"' + (inputLength - offset - 2) + '\" available');\n\t}\n\n\tif (maxEncodedParamLength < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar rOffset = offset;\n\toffset += rLength;\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"s\"');\n\t}\n\n\tvar sLength = signature[offset++];\n\n\tif (inputLength - offset !== sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", expected \"' + (inputLength - offset) + '\"');\n\t}\n\n\tif (maxEncodedParamLength < sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar sOffset = offset;\n\toffset += sLength;\n\n\tif (offset !== inputLength) {\n\t\tthrow new Error('Expected to consume entire buffer, but \"' + (inputLength - offset) + '\" bytes remain');\n\t}\n\n\tvar rPadding = paramBytes - rLength,\n\t\tsPadding = paramBytes - sLength;\n\n\tvar dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength);\n\n\tfor (offset = 0; offset < rPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength);\n\n\toffset = paramBytes;\n\n\tfor (var o = offset; offset < o + sPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength);\n\n\tdst = dst.toString('base64');\n\tdst = base64Url(dst);\n\n\treturn dst;\n}\n\nfunction countPadding(buf, start, stop) {\n\tvar padding = 0;\n\twhile (start + padding < stop && buf[start + padding] === 0) {\n\t\t++padding;\n\t}\n\n\tvar needsSign = buf[start + padding] >= MAX_OCTET;\n\tif (needsSign) {\n\t\t--padding;\n\t}\n\n\treturn padding;\n}\n\nfunction joseToDer(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\tvar signatureBytes = signature.length;\n\tif (signatureBytes !== paramBytes * 2) {\n\t\tthrow new TypeError('\"' + alg + '\" signatures must be \"' + paramBytes * 2 + '\" bytes, saw \"' + signatureBytes + '\"');\n\t}\n\n\tvar rPadding = countPadding(signature, 0, paramBytes);\n\tvar sPadding = countPadding(signature, paramBytes, signature.length);\n\tvar rLength = paramBytes - rPadding;\n\tvar sLength = paramBytes - sPadding;\n\n\tvar rsBytes = 1 + 1 + rLength + 1 + 1 + sLength;\n\n\tvar shortLength = rsBytes < MAX_OCTET;\n\n\tvar dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes);\n\n\tvar offset = 0;\n\tdst[offset++] = ENCODED_TAG_SEQ;\n\tif (shortLength) {\n\t\t// Bit 8 has value \"0\"\n\t\t// bits 7-1 give the length.\n\t\tdst[offset++] = rsBytes;\n\t} else {\n\t\t// Bit 8 of first octet has value \"1\"\n\t\t// bits 7-1 give the number of additional length octets.\n\t\tdst[offset++] = MAX_OCTET\t| 1;\n\t\t// length, base 256\n\t\tdst[offset++] = rsBytes & 0xff;\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = rLength;\n\tif (rPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\toffset += signature.copy(dst, offset, 0, paramBytes);\n\t} else {\n\t\toffset += signature.copy(dst, offset, rPadding, paramBytes);\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = sLength;\n\tif (sPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\tsignature.copy(dst, offset, paramBytes);\n\t} else {\n\t\tsignature.copy(dst, offset, paramBytes + sPadding);\n\t}\n\n\treturn dst;\n}\n\nmodule.exports = {\n\tderToJose: derToJose,\n\tjoseToDer: joseToDer\n};\n","/*jshint node:true */\n'use strict';\nvar Buffer = require('buffer').Buffer; // browserify\nvar SlowBuffer = require('buffer').SlowBuffer;\n\nmodule.exports = bufferEq;\n\nfunction bufferEq(a, b) {\n\n // shortcutting on type is necessary for correctness\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n return false;\n }\n\n // buffer sizes should be well-known information, so despite this\n // shortcutting, it doesn't leak any information about the *contents* of the\n // buffers.\n if (a.length !== b.length) {\n return false;\n }\n\n var c = 0;\n for (var i = 0; i < a.length; i++) {\n /*jshint bitwise:false */\n c |= a[i] ^ b[i]; // XOR\n }\n return c === 0;\n}\n\nbufferEq.install = function() {\n Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {\n return bufferEq(this, that);\n };\n};\n\nvar origBufEqual = Buffer.prototype.equal;\nvar origSlowBufEqual = SlowBuffer.prototype.equal;\nbufferEq.restore = function() {\n Buffer.prototype.equal = origBufEqual;\n SlowBuffer.prototype.equal = origSlowBufEqual;\n};\n","var Buffer = require('safe-buffer').Buffer;\nvar crypto = require('crypto');\nvar formatEcdsa = require('ecdsa-sig-formatter');\nvar util = require('util');\n\nvar MSG_INVALID_ALGORITHM = '\"%s\" is not a valid algorithm.\\n Supported algorithms are:\\n \"HS256\", \"HS384\", \"HS512\", \"RS256\", \"RS384\", \"RS512\", \"PS256\", \"PS384\", \"PS512\", \"ES256\", \"ES384\", \"ES512\" and \"none\".'\nvar MSG_INVALID_SECRET = 'secret must be a string or buffer';\nvar MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer';\nvar MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object';\n\nvar supportsKeyObjects = typeof crypto.createPublicKey === 'function';\nif (supportsKeyObjects) {\n MSG_INVALID_VERIFIER_KEY += ' or a KeyObject';\n MSG_INVALID_SECRET += 'or a KeyObject';\n}\n\nfunction checkIsPublicKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.type !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.asymmetricKeyType !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n};\n\nfunction checkIsPrivateKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (typeof key === 'object') {\n return;\n }\n\n throw typeError(MSG_INVALID_SIGNER_KEY);\n};\n\nfunction checkIsSecretKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return key;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (key.type !== 'secret') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_SECRET);\n }\n}\n\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n}\n\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n\n var padding = 4 - base64url.length % 4;\n if (padding !== 4) {\n for (var i = 0; i < padding; ++i) {\n base64url += '=';\n }\n }\n\n return base64url\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n}\n\nfunction typeError(template) {\n var args = [].slice.call(arguments, 1);\n var errMsg = util.format.bind(util, template).apply(null, args);\n return new TypeError(errMsg);\n}\n\nfunction bufferOrString(obj) {\n return Buffer.isBuffer(obj) || typeof obj === 'string';\n}\n\nfunction normalizeInput(thing) {\n if (!bufferOrString(thing))\n thing = JSON.stringify(thing);\n return thing;\n}\n\nfunction createHmacSigner(bits) {\n return function sign(thing, secret) {\n checkIsSecretKey(secret);\n thing = normalizeInput(thing);\n var hmac = crypto.createHmac('sha' + bits, secret);\n var sig = (hmac.update(thing), hmac.digest('base64'))\n return fromBase64(sig);\n }\n}\n\nvar bufferEqual;\nvar timingSafeEqual = 'timingSafeEqual' in crypto ? function timingSafeEqual(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n return crypto.timingSafeEqual(a, b)\n} : function timingSafeEqual(a, b) {\n if (!bufferEqual) {\n bufferEqual = require('buffer-equal-constant-time');\n }\n\n return bufferEqual(a, b)\n}\n\nfunction createHmacVerifier(bits) {\n return function verify(thing, signature, secret) {\n var computedSig = createHmacSigner(bits)(thing, secret);\n return timingSafeEqual(Buffer.from(signature), Buffer.from(computedSig));\n }\n}\n\nfunction createKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n // Even though we are specifying \"RSA\" here, this works with ECDSA\n // keys as well.\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign(privateKey, 'base64'));\n return fromBase64(sig);\n }\n}\n\nfunction createKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify(publicKey, signature, 'base64');\n }\n}\n\nfunction createPSSKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign({\n key: privateKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, 'base64'));\n return fromBase64(sig);\n }\n}\n\nfunction createPSSKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify({\n key: publicKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, signature, 'base64');\n }\n}\n\nfunction createECDSASigner(bits) {\n var inner = createKeySigner(bits);\n return function sign() {\n var signature = inner.apply(null, arguments);\n signature = formatEcdsa.derToJose(signature, 'ES' + bits);\n return signature;\n };\n}\n\nfunction createECDSAVerifer(bits) {\n var inner = createKeyVerifier(bits);\n return function verify(thing, signature, publicKey) {\n signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64');\n var result = inner(thing, signature, publicKey);\n return result;\n };\n}\n\nfunction createNoneSigner() {\n return function sign() {\n return '';\n }\n}\n\nfunction createNoneVerifier() {\n return function verify(thing, signature) {\n return signature === '';\n }\n}\n\nmodule.exports = function jwa(algorithm) {\n var signerFactories = {\n hs: createHmacSigner,\n rs: createKeySigner,\n ps: createPSSKeySigner,\n es: createECDSASigner,\n none: createNoneSigner,\n }\n var verifierFactories = {\n hs: createHmacVerifier,\n rs: createKeyVerifier,\n ps: createPSSKeyVerifier,\n es: createECDSAVerifer,\n none: createNoneVerifier,\n }\n var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/);\n if (!match)\n throw typeError(MSG_INVALID_ALGORITHM, algorithm);\n var algo = (match[1] || match[3]).toLowerCase();\n var bits = match[2];\n\n return {\n sign: signerFactories[algo](bits),\n verify: verifierFactories[algo](bits),\n }\n};\n","/*global module*/\nvar Buffer = require('buffer').Buffer;\n\nmodule.exports = function toString(obj) {\n if (typeof obj === 'string')\n return obj;\n if (typeof obj === 'number' || Buffer.isBuffer(obj))\n return obj.toString();\n return JSON.stringify(obj);\n};\n","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\n\nfunction base64url(string, encoding) {\n return Buffer\n .from(string, encoding)\n .toString('base64')\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n}\n\nfunction jwsSecuredInput(header, payload, encoding) {\n encoding = encoding || 'utf8';\n var encodedHeader = base64url(toString(header), 'binary');\n var encodedPayload = base64url(toString(payload), encoding);\n return util.format('%s.%s', encodedHeader, encodedPayload);\n}\n\nfunction jwsSign(opts) {\n var header = opts.header;\n var payload = opts.payload;\n var secretOrKey = opts.secret || opts.privateKey;\n var encoding = opts.encoding;\n var algo = jwa(header.alg);\n var securedInput = jwsSecuredInput(header, payload, encoding);\n var signature = algo.sign(securedInput, secretOrKey);\n return util.format('%s.%s', securedInput, signature);\n}\n\nfunction SignStream(opts) {\n var secret = opts.secret;\n secret = secret == null ? opts.privateKey : secret;\n secret = secret == null ? opts.key : secret;\n if (/^hs/i.test(opts.header.alg) === true && secret == null) {\n throw new TypeError('secret must be a string or buffer or a KeyObject')\n }\n var secretStream = new DataStream(secret);\n this.readable = true;\n this.header = opts.header;\n this.encoding = opts.encoding;\n this.secret = this.privateKey = this.key = secretStream;\n this.payload = new DataStream(opts.payload);\n this.secret.once('close', function () {\n if (!this.payload.writable && this.readable)\n this.sign();\n }.bind(this));\n\n this.payload.once('close', function () {\n if (!this.secret.writable && this.readable)\n this.sign();\n }.bind(this));\n}\nutil.inherits(SignStream, Stream);\n\nSignStream.prototype.sign = function sign() {\n try {\n var signature = jwsSign({\n header: this.header,\n payload: this.payload.buffer,\n secret: this.secret.buffer,\n encoding: this.encoding\n });\n this.emit('done', signature);\n this.emit('data', signature);\n this.emit('end');\n this.readable = false;\n return signature;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\n\nSignStream.sign = jwsSign;\n\nmodule.exports = SignStream;\n","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\nvar JWS_REGEX = /^[a-zA-Z0-9\\-_]+?\\.[a-zA-Z0-9\\-_]+?\\.([a-zA-Z0-9\\-_]+)?$/;\n\nfunction isObject(thing) {\n return Object.prototype.toString.call(thing) === '[object Object]';\n}\n\nfunction safeJsonParse(thing) {\n if (isObject(thing))\n return thing;\n try { return JSON.parse(thing); }\n catch (e) { return undefined; }\n}\n\nfunction headerFromJWS(jwsSig) {\n var encodedHeader = jwsSig.split('.', 1)[0];\n return safeJsonParse(Buffer.from(encodedHeader, 'base64').toString('binary'));\n}\n\nfunction securedInputFromJWS(jwsSig) {\n return jwsSig.split('.', 2).join('.');\n}\n\nfunction signatureFromJWS(jwsSig) {\n return jwsSig.split('.')[2];\n}\n\nfunction payloadFromJWS(jwsSig, encoding) {\n encoding = encoding || 'utf8';\n var payload = jwsSig.split('.')[1];\n return Buffer.from(payload, 'base64').toString(encoding);\n}\n\nfunction isValidJws(string) {\n return JWS_REGEX.test(string) && !!headerFromJWS(string);\n}\n\nfunction jwsVerify(jwsSig, algorithm, secretOrKey) {\n if (!algorithm) {\n var err = new Error(\"Missing algorithm parameter for jws.verify\");\n err.code = \"MISSING_ALGORITHM\";\n throw err;\n }\n jwsSig = toString(jwsSig);\n var signature = signatureFromJWS(jwsSig);\n var securedInput = securedInputFromJWS(jwsSig);\n var algo = jwa(algorithm);\n return algo.verify(securedInput, signature, secretOrKey);\n}\n\nfunction jwsDecode(jwsSig, opts) {\n opts = opts || {};\n jwsSig = toString(jwsSig);\n\n if (!isValidJws(jwsSig))\n return null;\n\n var header = headerFromJWS(jwsSig);\n\n if (!header)\n return null;\n\n var payload = payloadFromJWS(jwsSig);\n if (header.typ === 'JWT' || opts.json)\n payload = JSON.parse(payload, opts.encoding);\n\n return {\n header: header,\n payload: payload,\n signature: signatureFromJWS(jwsSig)\n };\n}\n\nfunction VerifyStream(opts) {\n opts = opts || {};\n var secretOrKey = opts.secret;\n secretOrKey = secretOrKey == null ? opts.publicKey : secretOrKey;\n secretOrKey = secretOrKey == null ? opts.key : secretOrKey;\n if (/^hs/i.test(opts.algorithm) === true && secretOrKey == null) {\n throw new TypeError('secret must be a string or buffer or a KeyObject')\n }\n var secretStream = new DataStream(secretOrKey);\n this.readable = true;\n this.algorithm = opts.algorithm;\n this.encoding = opts.encoding;\n this.secret = this.publicKey = this.key = secretStream;\n this.signature = new DataStream(opts.signature);\n this.secret.once('close', function () {\n if (!this.signature.writable && this.readable)\n this.verify();\n }.bind(this));\n\n this.signature.once('close', function () {\n if (!this.secret.writable && this.readable)\n this.verify();\n }.bind(this));\n}\nutil.inherits(VerifyStream, Stream);\nVerifyStream.prototype.verify = function verify() {\n try {\n var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer);\n var obj = jwsDecode(this.signature.buffer, this.encoding);\n this.emit('done', valid, obj);\n this.emit('data', valid);\n this.emit('end');\n this.readable = false;\n return valid;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\n\nVerifyStream.decode = jwsDecode;\nVerifyStream.isValid = isValidJws;\nVerifyStream.verify = jwsVerify;\n\nmodule.exports = VerifyStream;\n","/*global exports*/\nvar SignStream = require('./lib/sign-stream');\nvar VerifyStream = require('./lib/verify-stream');\n\nvar ALGORITHMS = [\n 'HS256', 'HS384', 'HS512',\n 'RS256', 'RS384', 'RS512',\n 'PS256', 'PS384', 'PS512',\n 'ES256', 'ES384', 'ES512'\n];\n\nexports.ALGORITHMS = ALGORITHMS;\nexports.sign = SignStream.sign;\nexports.verify = VerifyStream.verify;\nexports.decode = VerifyStream.decode;\nexports.isValid = VerifyStream.isValid;\nexports.createSign = function createSign(opts) {\n return new SignStream(opts);\n};\nexports.createVerify = function createVerify(opts) {\n return new VerifyStream(opts);\n};\n","'use strict';\n\nconst WebPushConstants = {};\n\nWebPushConstants.supportedContentEncodings = {\n AES_GCM: 'aesgcm',\n AES_128_GCM: 'aes128gcm'\n};\n\nWebPushConstants.supportedUrgency = {\n VERY_LOW: 'very-low',\n LOW: 'low',\n NORMAL: 'normal',\n HIGH: 'high'\n};\n\nmodule.exports = WebPushConstants;\n","'use strict';\n\n/**\n * @param {string} base64\n * @returns {boolean}\n */\nfunction validate(base64) {\n return /^[A-Za-z0-9\\-_]+$/.test(base64);\n}\n\nmodule.exports = {\n validate: validate\n};\n","'use strict';\n\nconst crypto = require('crypto');\nconst asn1 = require('asn1.js');\nconst jws = require('jws');\nconst { URL } = require('url');\n\nconst WebPushConstants = require('./web-push-constants.js');\nconst urlBase64Helper = require('./urlsafe-base64-helper');\n\n/**\n * DEFAULT_EXPIRATION is set to seconds in 12 hours\n */\nconst DEFAULT_EXPIRATION_SECONDS = 12 * 60 * 60;\n\n// Maximum expiration is 24 hours according. (See VAPID spec)\nconst MAX_EXPIRATION_SECONDS = 24 * 60 * 60;\n\nconst ECPrivateKeyASN = asn1.define('ECPrivateKey', function() {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').explicit(0).objid()\n .optional(),\n this.key('publicKey').explicit(1).bitstr()\n .optional()\n );\n});\n\nfunction toPEM(key) {\n return ECPrivateKeyASN.encode({\n version: 1,\n privateKey: key,\n parameters: [1, 2, 840, 10045, 3, 1, 7] // prime256v1\n }, 'pem', {\n label: 'EC PRIVATE KEY'\n });\n}\n\nfunction generateVAPIDKeys() {\n const curve = crypto.createECDH('prime256v1');\n curve.generateKeys();\n\n let publicKeyBuffer = curve.getPublicKey();\n let privateKeyBuffer = curve.getPrivateKey();\n\n // Occassionally the keys will not be padded to the correct lengh resulting\n // in errors, hence this padding.\n // See https://github.com/web-push-libs/web-push/issues/295 for history.\n if (privateKeyBuffer.length < 32) {\n const padding = Buffer.alloc(32 - privateKeyBuffer.length);\n padding.fill(0);\n privateKeyBuffer = Buffer.concat([padding, privateKeyBuffer]);\n }\n\n if (publicKeyBuffer.length < 65) {\n const padding = Buffer.alloc(65 - publicKeyBuffer.length);\n padding.fill(0);\n publicKeyBuffer = Buffer.concat([padding, publicKeyBuffer]);\n }\n\n return {\n publicKey: publicKeyBuffer.toString('base64url'),\n privateKey: privateKeyBuffer.toString('base64url')\n };\n}\n\nfunction validateSubject(subject) {\n if (!subject) {\n throw new Error('No subject set in vapidDetails.subject.');\n }\n\n if (typeof subject !== 'string' || subject.length === 0) {\n throw new Error('The subject value must be a string containing an https: URL or '\n + 'mailto: address. ' + subject);\n }\n\n let subjectParseResult = null;\n try {\n subjectParseResult = new URL(subject);\n } catch (err) {\n throw new Error('Vapid subject is not a valid URL. ' + subject);\n }\n if (!['https:', 'mailto:'].includes(subjectParseResult.protocol)) {\n throw new Error('Vapid subject is not an https: or mailto: URL. ' + subject);\n }\n if (subjectParseResult.hostname === 'localhost') {\n console.warn('Vapid subject points to a localhost web URI, which is unsupported by '\n + 'Apple\\'s push notification server and will result in a BadJwtToken error when '\n + 'sending notifications.');\n }\n}\n\nfunction validatePublicKey(publicKey) {\n if (!publicKey) {\n throw new Error('No key set vapidDetails.publicKey');\n }\n\n if (typeof publicKey !== 'string') {\n throw new Error('Vapid public key is must be a URL safe Base 64 '\n + 'encoded string.');\n }\n\n if (!urlBase64Helper.validate(publicKey)) {\n throw new Error('Vapid public key must be a URL safe Base 64 (without \"=\")');\n }\n\n publicKey = Buffer.from(publicKey, 'base64url');\n\n if (publicKey.length !== 65) {\n throw new Error('Vapid public key should be 65 bytes long when decoded.');\n }\n}\n\nfunction validatePrivateKey(privateKey) {\n if (!privateKey) {\n throw new Error('No key set in vapidDetails.privateKey');\n }\n\n if (typeof privateKey !== 'string') {\n throw new Error('Vapid private key must be a URL safe Base 64 '\n + 'encoded string.');\n }\n\n if (!urlBase64Helper.validate(privateKey)) {\n throw new Error('Vapid private key must be a URL safe Base 64 (without \"=\")');\n }\n\n privateKey = Buffer.from(privateKey, 'base64url');\n\n if (privateKey.length !== 32) {\n throw new Error('Vapid private key should be 32 bytes long when decoded.');\n }\n}\n\n/**\n * Given the number of seconds calculates\n * the expiration in the future by adding the passed `numSeconds`\n * with the current seconds from Unix Epoch\n *\n * @param {Number} numSeconds Number of seconds to be added\n * @return {Number} Future expiration in seconds\n */\nfunction getFutureExpirationTimestamp(numSeconds) {\n const futureExp = new Date();\n futureExp.setSeconds(futureExp.getSeconds() + numSeconds);\n return Math.floor(futureExp.getTime() / 1000);\n}\n\n/**\n * Validates the Expiration Header based on the VAPID Spec\n * Throws error of type `Error` if the expiration is not validated\n *\n * @param {Number} expiration Expiration seconds from Epoch to be validated\n */\nfunction validateExpiration(expiration) {\n if (!Number.isInteger(expiration)) {\n throw new Error('`expiration` value must be a number');\n }\n\n if (expiration < 0) {\n throw new Error('`expiration` must be a positive integer');\n }\n\n // Roughly checks the time of expiration, since the max expiration can be ahead\n // of the time than at the moment the expiration was generated\n const maxExpirationTimestamp = getFutureExpirationTimestamp(MAX_EXPIRATION_SECONDS);\n\n if (expiration >= maxExpirationTimestamp) {\n throw new Error('`expiration` value is greater than maximum of 24 hours');\n }\n}\n\n/**\n * This method takes the required VAPID parameters and returns the required\n * header to be added to a Web Push Protocol Request.\n * @param {string} audience This must be the origin of the push service.\n * @param {string} subject This should be a URL or a 'mailto:' email\n * address.\n * @param {string} publicKey The VAPID public key.\n * @param {string} privateKey The VAPID private key.\n * @param {string} contentEncoding The contentEncoding type.\n * @param {integer} [expiration] The expiration of the VAPID JWT.\n * @return {Object} Returns an Object with the Authorization and\n * 'Crypto-Key' values to be used as headers.\n */\nfunction getVapidHeaders(audience, subject, publicKey, privateKey, contentEncoding, expiration) {\n if (!audience) {\n throw new Error('No audience could be generated for VAPID.');\n }\n\n if (typeof audience !== 'string' || audience.length === 0) {\n throw new Error('The audience value must be a string containing the '\n + 'origin of a push service. ' + audience);\n }\n\n try {\n new URL(audience); // eslint-disable-line no-new\n } catch (err) {\n throw new Error('VAPID audience is not a url. ' + audience);\n }\n\n validateSubject(subject);\n validatePublicKey(publicKey);\n validatePrivateKey(privateKey);\n\n privateKey = Buffer.from(privateKey, 'base64url');\n\n if (expiration) {\n validateExpiration(expiration);\n } else {\n expiration = getFutureExpirationTimestamp(DEFAULT_EXPIRATION_SECONDS);\n }\n\n const header = {\n typ: 'JWT',\n alg: 'ES256'\n };\n\n const jwtPayload = {\n aud: audience,\n exp: expiration,\n sub: subject\n };\n\n const jwt = jws.sign({\n header: header,\n payload: jwtPayload,\n privateKey: toPEM(privateKey)\n });\n\n if (contentEncoding === WebPushConstants.supportedContentEncodings.AES_128_GCM) {\n return {\n Authorization: 'vapid t=' + jwt + ', k=' + publicKey\n };\n }\n if (contentEncoding === WebPushConstants.supportedContentEncodings.AES_GCM) {\n return {\n Authorization: 'WebPush ' + jwt,\n 'Crypto-Key': 'p256ecdsa=' + publicKey\n };\n }\n\n throw new Error('Unsupported encoding type specified.');\n}\n\nmodule.exports = {\n generateVAPIDKeys: generateVAPIDKeys,\n getFutureExpirationTimestamp: getFutureExpirationTimestamp,\n getVapidHeaders: getVapidHeaders,\n validateSubject: validateSubject,\n validatePublicKey: validatePublicKey,\n validatePrivateKey: validatePrivateKey,\n validateExpiration: validateExpiration\n};\n","'use strict';\n/*\n * Encrypted content coding\n *\n * === Note about versions ===\n *\n * This code supports multiple versions of the draft. This is selected using\n * the |version| parameter.\n *\n * aes128gcm: The most recent version, the salt, record size and key identifier\n * are included in a header that is part of the encrypted content coding.\n *\n * aesgcm: The version that is widely deployed with WebPush (as of 2016-11).\n * This version is selected by default, unless you specify a |padSize| of 1.\n */\n\nvar crypto = require('crypto');\n\nvar AES_GCM = 'aes-128-gcm';\nvar PAD_SIZE = { 'aes128gcm': 1, 'aesgcm': 2 };\nvar TAG_LENGTH = 16;\nvar KEY_LENGTH = 16;\nvar NONCE_LENGTH = 12;\nvar SHA_256_LENGTH = 32;\nvar MODE_ENCRYPT = 'encrypt';\nvar MODE_DECRYPT = 'decrypt';\n\nvar keylog;\nif (process.env.ECE_KEYLOG === '1') {\n keylog = function(m, k) {\n console.warn(m + ' [' + k.length + ']: ' + k.toString('base64url'));\n return k;\n };\n} else {\n keylog = function(m, k) { return k; };\n}\n\n/* Optionally base64 decode something. */\nfunction decode(b) {\n if (typeof b === 'string') {\n return Buffer.from(b, 'base64url');\n }\n return b;\n}\n\nfunction HMAC_hash(key, input) {\n var hmac = crypto.createHmac('sha256', key);\n hmac.update(input);\n return hmac.digest();\n}\n\n/* HKDF as defined in RFC5869, using SHA-256 */\nfunction HKDF_extract(salt, ikm) {\n keylog('salt', salt);\n keylog('ikm', ikm);\n return keylog('extract', HMAC_hash(salt, ikm));\n}\n\nfunction HKDF_expand(prk, info, l) {\n keylog('prk', prk);\n keylog('info', info);\n var output = Buffer.alloc(0);\n var T = Buffer.alloc(0);\n info = Buffer.from(info, 'ascii');\n var counter = 0;\n var cbuf = Buffer.alloc(1);\n while (output.length < l) {\n cbuf.writeUIntBE(++counter, 0, 1);\n T = HMAC_hash(prk, Buffer.concat([T, info, cbuf]));\n output = Buffer.concat([output, T]);\n }\n\n return keylog('expand', output.slice(0, l));\n}\n\nfunction HKDF(salt, ikm, info, len) {\n return HKDF_expand(HKDF_extract(salt, ikm), info, len);\n}\n\nfunction info(base, context) {\n var result = Buffer.concat([\n Buffer.from('Content-Encoding: ' + base + '\\0', 'ascii'),\n context\n ]);\n keylog('info ' + base, result);\n return result;\n}\n\nfunction lengthPrefix(buffer) {\n var b = Buffer.concat([Buffer.alloc(2), buffer]);\n b.writeUIntBE(buffer.length, 0, 2);\n return b;\n}\n\nfunction extractDH(header, mode) {\n var key = header.privateKey;\n var senderPubKey, receiverPubKey;\n if (mode === MODE_ENCRYPT) {\n senderPubKey = key.getPublicKey();\n receiverPubKey = header.dh;\n } else if (mode === MODE_DECRYPT) {\n senderPubKey = header.dh;\n receiverPubKey = key.getPublicKey();\n } else {\n throw new Error('Unknown mode only ' + MODE_ENCRYPT +\n ' and ' + MODE_DECRYPT + ' supported');\n }\n return {\n secret: key.computeSecret(header.dh),\n context: Buffer.concat([\n Buffer.from(header.keylabel, 'ascii'),\n Buffer.from([0]),\n lengthPrefix(receiverPubKey), // user agent\n lengthPrefix(senderPubKey) // application server\n ])\n };\n}\n\nfunction extractSecretAndContext(header, mode) {\n var result = { secret: null, context: Buffer.alloc(0) };\n if (header.key) {\n result.secret = header.key;\n if (result.secret.length !== KEY_LENGTH) {\n throw new Error('An explicit key must be ' + KEY_LENGTH + ' bytes');\n }\n } else if (header.dh) { // receiver/decrypt\n result = extractDH(header, mode);\n } else if (typeof header.keyid !== undefined) {\n result.secret = header.keymap[header.keyid];\n }\n if (!result.secret) {\n throw new Error('Unable to determine key');\n }\n keylog('secret', result.secret);\n keylog('context', result.context);\n if (header.authSecret) {\n result.secret = HKDF(header.authSecret, result.secret,\n info('auth', Buffer.alloc(0)), SHA_256_LENGTH);\n keylog('authsecret', result.secret);\n }\n return result;\n}\n\nfunction webpushSecret(header, mode) {\n if (!header.authSecret) {\n throw new Error('No authentication secret for webpush');\n }\n keylog('authsecret', header.authSecret);\n\n var remotePubKey, senderPubKey, receiverPubKey;\n if (mode === MODE_ENCRYPT) {\n senderPubKey = header.privateKey.getPublicKey();\n remotePubKey = receiverPubKey = header.dh;\n } else if (mode === MODE_DECRYPT) {\n remotePubKey = senderPubKey = header.keyid;\n receiverPubKey = header.privateKey.getPublicKey();\n } else {\n throw new Error('Unknown mode only ' + MODE_ENCRYPT +\n ' and ' + MODE_DECRYPT + ' supported');\n }\n keylog('remote pubkey', remotePubKey);\n keylog('sender pubkey', senderPubKey);\n keylog('receiver pubkey', receiverPubKey);\n return keylog('secret dh',\n HKDF(header.authSecret,\n header.privateKey.computeSecret(remotePubKey),\n Buffer.concat([\n Buffer.from('WebPush: info\\0'),\n receiverPubKey,\n senderPubKey\n ]),\n SHA_256_LENGTH));\n}\n\nfunction extractSecret(header, mode, keyLookupCallback) {\n if (keyLookupCallback) {\n if (!isFunction(keyLookupCallback)) {\n throw new Error('Callback is not a function')\n }\n }\n\n if (header.key) {\n if (header.key.length !== KEY_LENGTH) {\n throw new Error('An explicit key must be ' + KEY_LENGTH + ' bytes');\n }\n return keylog('secret key', header.key);\n }\n\n if (!header.privateKey) {\n // Lookup based on keyid\n if (!keyLookupCallback) {\n var key = header.keymap && header.keymap[header.keyid];\n } else {\n var key = keyLookupCallback(header.keyid)\n }\n if (!key) {\n throw new Error('No saved key (keyid: \"' + header.keyid + '\")');\n }\n return key;\n }\n\n return webpushSecret(header, mode);\n}\n\nfunction deriveKeyAndNonce(header, mode, lookupKeyCallback) {\n if (!header.salt) {\n throw new Error('must include a salt parameter for ' + header.version);\n }\n var keyInfo;\n var nonceInfo;\n var secret;\n if (header.version === 'aesgcm') {\n // old\n var s = extractSecretAndContext(header, mode, lookupKeyCallback);\n keyInfo = info('aesgcm', s.context);\n nonceInfo = info('nonce', s.context);\n secret = s.secret;\n } else if (header.version === 'aes128gcm') {\n // latest\n keyInfo = Buffer.from('Content-Encoding: aes128gcm\\0');\n nonceInfo = Buffer.from('Content-Encoding: nonce\\0');\n secret = extractSecret(header, mode, lookupKeyCallback);\n } else {\n throw new Error('Unable to set context for mode ' + header.version);\n }\n var prk = HKDF_extract(header.salt, secret);\n var result = {\n key: HKDF_expand(prk, keyInfo, KEY_LENGTH),\n nonce: HKDF_expand(prk, nonceInfo, NONCE_LENGTH)\n };\n keylog('key', result.key);\n keylog('nonce base', result.nonce);\n return result;\n}\n\n/* Parse command-line arguments. */\nfunction parseParams(params) {\n var header = {};\n\n header.version = params.version || 'aes128gcm';\n header.rs = parseInt(params.rs, 10);\n if (isNaN(header.rs)) {\n header.rs = 4096;\n }\n var overhead = PAD_SIZE[header.version];\n if (header.version === 'aes128gcm') {\n overhead += TAG_LENGTH;\n }\n if (header.rs <= overhead) {\n throw new Error('The rs parameter has to be greater than ' + overhead);\n }\n\n if (params.salt) {\n header.salt = decode(params.salt);\n if (header.salt.length !== KEY_LENGTH) {\n throw new Error('The salt parameter must be ' + KEY_LENGTH + ' bytes');\n }\n }\n header.keyid = params.keyid;\n if (params.key) {\n header.key = decode(params.key);\n } else {\n header.privateKey = params.privateKey;\n if (!header.privateKey) {\n header.keymap = params.keymap;\n }\n if (header.version !== 'aes128gcm') {\n header.keylabel = params.keylabel || 'P-256';\n }\n if (params.dh) {\n header.dh = decode(params.dh);\n }\n }\n if (params.authSecret) {\n header.authSecret = decode(params.authSecret);\n }\n return header;\n}\n\nfunction generateNonce(base, counter) {\n var nonce = Buffer.from(base);\n var m = nonce.readUIntBE(nonce.length - 6, 6);\n var x = ((m ^ counter) & 0xffffff) +\n ((((m / 0x1000000) ^ (counter / 0x1000000)) & 0xffffff) * 0x1000000);\n nonce.writeUIntBE(x, nonce.length - 6, 6);\n keylog('nonce' + counter, nonce);\n return nonce;\n}\n\n/* Used when decrypting aes128gcm to populate the header values. Modifies the\n * header values in place and returns the size of the header. */\nfunction readHeader(buffer, header) {\n var idsz = buffer.readUIntBE(20, 1);\n header.salt = buffer.slice(0, KEY_LENGTH);\n header.rs = buffer.readUIntBE(KEY_LENGTH, 4);\n header.keyid = buffer.slice(21, 21 + idsz);\n return 21 + idsz;\n}\n\nfunction unpadLegacy(data, version) {\n var padSize = PAD_SIZE[version];\n var pad = data.readUIntBE(0, padSize);\n if (pad + padSize > data.length) {\n throw new Error('padding exceeds block size');\n }\n keylog('padding', data.slice(0, padSize + pad));\n var padCheck = Buffer.alloc(pad);\n padCheck.fill(0);\n if (padCheck.compare(data.slice(padSize, padSize + pad)) !== 0) {\n throw new Error('invalid padding');\n }\n return data.slice(padSize + pad);\n}\n\nfunction unpad(data, last) {\n var i = data.length - 1;\n while(i >= 0) {\n if (data[i]) {\n if (last) {\n if (data[i] !== 2) {\n throw new Error('last record needs to start padding with a 2');\n }\n } else {\n if (data[i] !== 1) {\n throw new Error('last record needs to start padding with a 2');\n }\n }\n return data.slice(0, i);\n }\n --i;\n }\n throw new Error('all zero plaintext');\n}\n\nfunction decryptRecord(key, counter, buffer, header, last) {\n keylog('decrypt', buffer);\n var nonce = generateNonce(key.nonce, counter);\n var gcm = crypto.createDecipheriv(AES_GCM, key.key, nonce);\n gcm.setAuthTag(buffer.slice(buffer.length - TAG_LENGTH));\n var data = gcm.update(buffer.slice(0, buffer.length - TAG_LENGTH));\n data = Buffer.concat([data, gcm.final()]);\n keylog('decrypted', data);\n if (header.version !== 'aes128gcm') {\n return unpadLegacy(data, header.version);\n }\n return unpad(data, last);\n}\n\n/**\n * Decrypt some bytes. This uses the parameters to determine the key and block\n * size, which are described in the draft. Binary values are base64url encoded.\n *\n * |params.version| contains the version of encoding to use: aes128gcm is the latest,\n * but aesgcm is also accepted (though the latter might\n * disappear in a future release). If omitted, assume aes128gcm.\n *\n * If |params.key| is specified, that value is used as the key.\n *\n * If the version is aes128gcm, the keyid is extracted from the header and used\n * as the ECDH public key of the sender. For version aesgcm ,\n * |params.dh| needs to be provided with the public key of the sender.\n *\n * The |params.privateKey| includes the private key of the receiver.\n */\nfunction decrypt(buffer, params, keyLookupCallback) {\n var header = parseParams(params);\n if (header.version === 'aes128gcm') {\n var headerLength = readHeader(buffer, header);\n buffer = buffer.slice(headerLength);\n }\n var key = deriveKeyAndNonce(header, MODE_DECRYPT, keyLookupCallback);\n var start = 0;\n var result = Buffer.alloc(0);\n\n var chunkSize = header.rs;\n if (header.version !== 'aes128gcm') {\n chunkSize += TAG_LENGTH;\n }\n\n for (var i = 0; start < buffer.length; ++i) {\n var end = start + chunkSize;\n if (header.version !== 'aes128gcm' && end === buffer.length) {\n throw new Error('Truncated payload');\n }\n end = Math.min(end, buffer.length);\n if (end - start <= TAG_LENGTH) {\n throw new Error('Invalid block: too small at ' + i);\n }\n var block = decryptRecord(key, i, buffer.slice(start, end),\n header, end >= buffer.length);\n result = Buffer.concat([result, block]);\n start = end;\n }\n return result;\n}\n\nfunction encryptRecord(key, counter, buffer, pad, header, last) {\n keylog('encrypt', buffer);\n pad = pad || 0;\n var nonce = generateNonce(key.nonce, counter);\n var gcm = crypto.createCipheriv(AES_GCM, key.key, nonce);\n\n var ciphertext = [];\n var padSize = PAD_SIZE[header.version];\n var padding = Buffer.alloc(pad + padSize);\n padding.fill(0);\n\n if (header.version !== 'aes128gcm') {\n padding.writeUIntBE(pad, 0, padSize);\n keylog('padding', padding);\n ciphertext.push(gcm.update(padding));\n ciphertext.push(gcm.update(buffer));\n\n if (!last && padding.length + buffer.length < header.rs) {\n throw new Error('Unable to pad to record size');\n }\n } else {\n ciphertext.push(gcm.update(buffer));\n padding.writeUIntBE(last ? 2 : 1, 0, 1);\n keylog('padding', padding);\n ciphertext.push(gcm.update(padding));\n }\n\n gcm.final();\n var tag = gcm.getAuthTag();\n if (tag.length !== TAG_LENGTH) {\n throw new Error('invalid tag generated');\n }\n ciphertext.push(tag);\n return keylog('encrypted', Buffer.concat(ciphertext));\n}\n\nfunction writeHeader(header) {\n var ints = Buffer.alloc(5);\n var keyid = Buffer.from(header.keyid || []);\n if (keyid.length > 255) {\n throw new Error('keyid is too large');\n }\n ints.writeUIntBE(header.rs, 0, 4);\n ints.writeUIntBE(keyid.length, 4, 1);\n return Buffer.concat([header.salt, ints, keyid]);\n}\n\n/**\n * Encrypt some bytes. This uses the parameters to determine the key and block\n * size, which are described in the draft.\n *\n * |params.version| contains the version of encoding to use: aes128gcm is the latest,\n * but aesgcm is also accepted (though the latter two might\n * disappear in a future release). If omitted, assume aes128gcm.\n *\n * If |params.key| is specified, that value is used as the key.\n *\n * For Diffie-Hellman (WebPush), |params.dh| includes the public key of the\n * receiver. |params.privateKey| is used to establish a shared secret. Key\n * pairs can be created using |crypto.createECDH()|.\n */\nfunction encrypt(buffer, params, keyLookupCallback) { \n if (!Buffer.isBuffer(buffer)) {\n throw new Error('buffer argument must be a Buffer');\n }\n var header = parseParams(params);\n if (!header.salt) {\n header.salt = crypto.randomBytes(KEY_LENGTH);\n }\n\n var result;\n if (header.version === 'aes128gcm') {\n // Save the DH public key in the header unless keyid is set.\n if (header.privateKey && !header.keyid) {\n header.keyid = header.privateKey.getPublicKey();\n }\n result = writeHeader(header);\n } else {\n // No header on other versions\n result = Buffer.alloc(0);\n }\n\n var key = deriveKeyAndNonce(header, MODE_ENCRYPT, keyLookupCallback);\n var start = 0;\n var padSize = PAD_SIZE[header.version];\n var overhead = padSize;\n if (header.version === 'aes128gcm') {\n overhead += TAG_LENGTH;\n }\n var pad = isNaN(parseInt(params.pad, 10)) ? 0 : parseInt(params.pad, 10);\n\n var counter = 0;\n var last = false;\n while (!last) {\n // Pad so that at least one data byte is in a block.\n var recordPad = Math.min(header.rs - overhead - 1, pad);\n if (header.version !== 'aes128gcm') {\n recordPad = Math.min((1 << (padSize * 8)) - 1, recordPad);\n }\n if (pad > 0 && recordPad === 0) {\n ++recordPad; // Deal with perverse case of rs=overhead+1 with padding.\n }\n pad -= recordPad;\n\n var end = start + header.rs - overhead - recordPad;\n if (header.version !== 'aes128gcm') {\n // The > here ensures that we write out a padding-only block at the end\n // of a buffer.\n last = end > buffer.length;\n } else {\n last = end >= buffer.length;\n }\n last = last && pad <= 0;\n var block = encryptRecord(key, counter, buffer.slice(start, end),\n recordPad, header, last);\n result = Buffer.concat([result, block]);\n\n start = end;\n ++counter;\n }\n return result;\n}\n\n\nfunction isFunction(object) {\n return typeof(object) === 'function';\n }\n\nmodule.exports = {\n decrypt: decrypt,\n encrypt: encrypt\n};\n","'use strict';\n\nconst crypto = require('crypto');\nconst ece = require('http_ece');\n\nconst encrypt = function(userPublicKey, userAuth, payload, contentEncoding) {\n if (!userPublicKey) {\n throw new Error('No user public key provided for encryption.');\n }\n\n if (typeof userPublicKey !== 'string') {\n throw new Error('The subscription p256dh value must be a string.');\n }\n\n if (Buffer.from(userPublicKey, 'base64url').length !== 65) {\n throw new Error('The subscription p256dh value should be 65 bytes long.');\n }\n\n if (!userAuth) {\n throw new Error('No user auth provided for encryption.');\n }\n\n if (typeof userAuth !== 'string') {\n throw new Error('The subscription auth key must be a string.');\n }\n\n if (Buffer.from(userAuth, 'base64url').length < 16) {\n throw new Error('The subscription auth key should be at least 16 '\n + 'bytes long');\n }\n\n if (typeof payload !== 'string' && !Buffer.isBuffer(payload)) {\n throw new Error('Payload must be either a string or a Node Buffer.');\n }\n\n if (typeof payload === 'string' || payload instanceof String) {\n payload = Buffer.from(payload);\n }\n\n const localCurve = crypto.createECDH('prime256v1');\n const localPublicKey = localCurve.generateKeys();\n\n const salt = crypto.randomBytes(16).toString('base64url');\n\n const cipherText = ece.encrypt(payload, {\n version: contentEncoding,\n dh: userPublicKey,\n privateKey: localCurve,\n salt: salt,\n authSecret: userAuth\n });\n\n return {\n localPublicKey: localPublicKey,\n salt: salt,\n cipherText: cipherText\n };\n};\n\nmodule.exports = {\n encrypt: encrypt\n};\n","'use strict';\n\nfunction WebPushError(message, statusCode, headers, body, endpoint) {\n Error.captureStackTrace(this, this.constructor);\n\n this.name = this.constructor.name;\n this.message = message;\n this.statusCode = statusCode;\n this.headers = headers;\n this.body = body;\n this.endpoint = endpoint;\n}\n\nrequire('util').inherits(WebPushError, Error);\n\nmodule.exports = WebPushError;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.req = exports.json = exports.toBuffer = void 0;\nconst http = __importStar(require(\"http\"));\nconst https = __importStar(require(\"https\"));\nasync function toBuffer(stream) {\n let length = 0;\n const chunks = [];\n for await (const chunk of stream) {\n length += chunk.length;\n chunks.push(chunk);\n }\n return Buffer.concat(chunks, length);\n}\nexports.toBuffer = toBuffer;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nasync function json(stream) {\n const buf = await toBuffer(stream);\n const str = buf.toString('utf8');\n try {\n return JSON.parse(str);\n }\n catch (_err) {\n const err = _err;\n err.message += ` (input: ${str})`;\n throw err;\n }\n}\nexports.json = json;\nfunction req(url, opts = {}) {\n const href = typeof url === 'string' ? url : url.href;\n const req = (href.startsWith('https:') ? https : http).request(url, opts);\n const promise = new Promise((resolve, reject) => {\n req\n .once('response', resolve)\n .once('error', reject)\n .end();\n });\n req.then = promise.then.bind(promise);\n return req;\n}\nexports.req = req;\n//# sourceMappingURL=helpers.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Agent = void 0;\nconst net = __importStar(require(\"net\"));\nconst http = __importStar(require(\"http\"));\nconst https_1 = require(\"https\");\n__exportStar(require(\"./helpers\"), exports);\nconst INTERNAL = Symbol('AgentBaseInternalState');\nclass Agent extends http.Agent {\n constructor(opts) {\n super(opts);\n this[INTERNAL] = {};\n }\n /**\n * Determine whether this is an `http` or `https` request.\n */\n isSecureEndpoint(options) {\n if (options) {\n // First check the `secureEndpoint` property explicitly, since this\n // means that a parent `Agent` is \"passing through\" to this instance.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (typeof options.secureEndpoint === 'boolean') {\n return options.secureEndpoint;\n }\n // If no explicit `secure` endpoint, check if `protocol` property is\n // set. This will usually be the case since using a full string URL\n // or `URL` instance should be the most common usage.\n if (typeof options.protocol === 'string') {\n return options.protocol === 'https:';\n }\n }\n // Finally, if no `protocol` property was set, then fall back to\n // checking the stack trace of the current call stack, and try to\n // detect the \"https\" module.\n const { stack } = new Error();\n if (typeof stack !== 'string')\n return false;\n return stack\n .split('\\n')\n .some((l) => l.indexOf('(https.js:') !== -1 ||\n l.indexOf('node:https:') !== -1);\n }\n // In order to support async signatures in `connect()` and Node's native\n // connection pooling in `http.Agent`, the array of sockets for each origin\n // has to be updated synchronously. This is so the length of the array is\n // accurate when `addRequest()` is next called. We achieve this by creating a\n // fake socket and adding it to `sockets[origin]` and incrementing\n // `totalSocketCount`.\n incrementSockets(name) {\n // If `maxSockets` and `maxTotalSockets` are both Infinity then there is no\n // need to create a fake socket because Node.js native connection pooling\n // will never be invoked.\n if (this.maxSockets === Infinity && this.maxTotalSockets === Infinity) {\n return null;\n }\n // All instances of `sockets` are expected TypeScript errors. The\n // alternative is to add it as a private property of this class but that\n // will break TypeScript subclassing.\n if (!this.sockets[name]) {\n // @ts-expect-error `sockets` is readonly in `@types/node`\n this.sockets[name] = [];\n }\n const fakeSocket = new net.Socket({ writable: false });\n this.sockets[name].push(fakeSocket);\n // @ts-expect-error `totalSocketCount` isn't defined in `@types/node`\n this.totalSocketCount++;\n return fakeSocket;\n }\n decrementSockets(name, socket) {\n if (!this.sockets[name] || socket === null) {\n return;\n }\n const sockets = this.sockets[name];\n const index = sockets.indexOf(socket);\n if (index !== -1) {\n sockets.splice(index, 1);\n // @ts-expect-error `totalSocketCount` isn't defined in `@types/node`\n this.totalSocketCount--;\n if (sockets.length === 0) {\n // @ts-expect-error `sockets` is readonly in `@types/node`\n delete this.sockets[name];\n }\n }\n }\n // In order to properly update the socket pool, we need to call `getName()` on\n // the core `https.Agent` if it is a secureEndpoint.\n getName(options) {\n const secureEndpoint = this.isSecureEndpoint(options);\n if (secureEndpoint) {\n // @ts-expect-error `getName()` isn't defined in `@types/node`\n return https_1.Agent.prototype.getName.call(this, options);\n }\n // @ts-expect-error `getName()` isn't defined in `@types/node`\n return super.getName(options);\n }\n createSocket(req, options, cb) {\n const connectOpts = {\n ...options,\n secureEndpoint: this.isSecureEndpoint(options),\n };\n const name = this.getName(connectOpts);\n const fakeSocket = this.incrementSockets(name);\n Promise.resolve()\n .then(() => this.connect(req, connectOpts))\n .then((socket) => {\n this.decrementSockets(name, fakeSocket);\n if (socket instanceof http.Agent) {\n try {\n // @ts-expect-error `addRequest()` isn't defined in `@types/node`\n return socket.addRequest(req, connectOpts);\n }\n catch (err) {\n return cb(err);\n }\n }\n this[INTERNAL].currentSocket = socket;\n // @ts-expect-error `createSocket()` isn't defined in `@types/node`\n super.createSocket(req, options, cb);\n }, (err) => {\n this.decrementSockets(name, fakeSocket);\n cb(err);\n });\n }\n createConnection() {\n const socket = this[INTERNAL].currentSocket;\n this[INTERNAL].currentSocket = undefined;\n if (!socket) {\n throw new Error('No socket was returned in the `connect()` function');\n }\n return socket;\n }\n get defaultPort() {\n return (this[INTERNAL].defaultPort ??\n (this.protocol === 'https:' ? 443 : 80));\n }\n set defaultPort(v) {\n if (this[INTERNAL]) {\n this[INTERNAL].defaultPort = v;\n }\n }\n get protocol() {\n return (this[INTERNAL].protocol ??\n (this.isSecureEndpoint() ? 'https:' : 'http:'));\n }\n set protocol(v) {\n if (this[INTERNAL]) {\n this[INTERNAL].protocol = v;\n }\n }\n}\nexports.Agent = Agent;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseProxyResponse = void 0;\nconst debug_1 = __importDefault(require(\"debug\"));\nconst debug = (0, debug_1.default)('https-proxy-agent:parse-proxy-response');\nfunction parseProxyResponse(socket) {\n return new Promise((resolve, reject) => {\n // we need to buffer any HTTP traffic that happens with the proxy before we get\n // the CONNECT response, so that if the response is anything other than an \"200\"\n // response code, then we can re-play the \"data\" events on the socket once the\n // HTTP parser is hooked up...\n let buffersLength = 0;\n const buffers = [];\n function read() {\n const b = socket.read();\n if (b)\n ondata(b);\n else\n socket.once('readable', read);\n }\n function cleanup() {\n socket.removeListener('end', onend);\n socket.removeListener('error', onerror);\n socket.removeListener('readable', read);\n }\n function onend() {\n cleanup();\n debug('onend');\n reject(new Error('Proxy connection ended before receiving CONNECT response'));\n }\n function onerror(err) {\n cleanup();\n debug('onerror %o', err);\n reject(err);\n }\n function ondata(b) {\n buffers.push(b);\n buffersLength += b.length;\n const buffered = Buffer.concat(buffers, buffersLength);\n const endOfHeaders = buffered.indexOf('\\r\\n\\r\\n');\n if (endOfHeaders === -1) {\n // keep buffering\n debug('have not received end of HTTP headers yet...');\n read();\n return;\n }\n const headerParts = buffered\n .slice(0, endOfHeaders)\n .toString('ascii')\n .split('\\r\\n');\n const firstLine = headerParts.shift();\n if (!firstLine) {\n socket.destroy();\n return reject(new Error('No header received from proxy CONNECT response'));\n }\n const firstLineParts = firstLine.split(' ');\n const statusCode = +firstLineParts[1];\n const statusText = firstLineParts.slice(2).join(' ');\n const headers = {};\n for (const header of headerParts) {\n if (!header)\n continue;\n const firstColon = header.indexOf(':');\n if (firstColon === -1) {\n socket.destroy();\n return reject(new Error(`Invalid header from proxy CONNECT response: \"${header}\"`));\n }\n const key = header.slice(0, firstColon).toLowerCase();\n const value = header.slice(firstColon + 1).trimStart();\n const current = headers[key];\n if (typeof current === 'string') {\n headers[key] = [current, value];\n }\n else if (Array.isArray(current)) {\n current.push(value);\n }\n else {\n headers[key] = value;\n }\n }\n debug('got proxy server response: %o %o', firstLine, headers);\n cleanup();\n resolve({\n connect: {\n statusCode,\n statusText,\n headers,\n },\n buffered,\n });\n }\n socket.on('error', onerror);\n socket.on('end', onend);\n read();\n });\n}\nexports.parseProxyResponse = parseProxyResponse;\n//# sourceMappingURL=parse-proxy-response.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpsProxyAgent = void 0;\nconst net = __importStar(require(\"net\"));\nconst tls = __importStar(require(\"tls\"));\nconst assert_1 = __importDefault(require(\"assert\"));\nconst debug_1 = __importDefault(require(\"debug\"));\nconst agent_base_1 = require(\"agent-base\");\nconst url_1 = require(\"url\");\nconst parse_proxy_response_1 = require(\"./parse-proxy-response\");\nconst debug = (0, debug_1.default)('https-proxy-agent');\nconst setServernameFromNonIpHost = (options) => {\n if (options.servername === undefined &&\n options.host &&\n !net.isIP(options.host)) {\n return {\n ...options,\n servername: options.host,\n };\n }\n return options;\n};\n/**\n * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to\n * the specified \"HTTP(s) proxy server\" in order to proxy HTTPS requests.\n *\n * Outgoing HTTP requests are first tunneled through the proxy server using the\n * `CONNECT` HTTP request method to establish a connection to the proxy server,\n * and then the proxy server connects to the destination target and issues the\n * HTTP request from the proxy server.\n *\n * `https:` requests have their socket connection upgraded to TLS once\n * the connection to the proxy server has been established.\n */\nclass HttpsProxyAgent extends agent_base_1.Agent {\n constructor(proxy, opts) {\n super(opts);\n this.options = { path: undefined };\n this.proxy = typeof proxy === 'string' ? new url_1.URL(proxy) : proxy;\n this.proxyHeaders = opts?.headers ?? {};\n debug('Creating new HttpsProxyAgent instance: %o', this.proxy.href);\n // Trim off the brackets from IPv6 addresses\n const host = (this.proxy.hostname || this.proxy.host).replace(/^\\[|\\]$/g, '');\n const port = this.proxy.port\n ? parseInt(this.proxy.port, 10)\n : this.proxy.protocol === 'https:'\n ? 443\n : 80;\n this.connectOpts = {\n // Attempt to negotiate http/1.1 for proxy servers that support http/2\n ALPNProtocols: ['http/1.1'],\n ...(opts ? omit(opts, 'headers') : null),\n host,\n port,\n };\n }\n /**\n * Called when the node-core HTTP client library is creating a\n * new HTTP request.\n */\n async connect(req, opts) {\n const { proxy } = this;\n if (!opts.host) {\n throw new TypeError('No \"host\" provided');\n }\n // Create a socket connection to the proxy server.\n let socket;\n if (proxy.protocol === 'https:') {\n debug('Creating `tls.Socket`: %o', this.connectOpts);\n socket = tls.connect(setServernameFromNonIpHost(this.connectOpts));\n }\n else {\n debug('Creating `net.Socket`: %o', this.connectOpts);\n socket = net.connect(this.connectOpts);\n }\n const headers = typeof this.proxyHeaders === 'function'\n ? this.proxyHeaders()\n : { ...this.proxyHeaders };\n const host = net.isIPv6(opts.host) ? `[${opts.host}]` : opts.host;\n let payload = `CONNECT ${host}:${opts.port} HTTP/1.1\\r\\n`;\n // Inject the `Proxy-Authorization` header if necessary.\n if (proxy.username || proxy.password) {\n const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(auth).toString('base64')}`;\n }\n headers.Host = `${host}:${opts.port}`;\n if (!headers['Proxy-Connection']) {\n headers['Proxy-Connection'] = this.keepAlive\n ? 'Keep-Alive'\n : 'close';\n }\n for (const name of Object.keys(headers)) {\n payload += `${name}: ${headers[name]}\\r\\n`;\n }\n const proxyResponsePromise = (0, parse_proxy_response_1.parseProxyResponse)(socket);\n socket.write(`${payload}\\r\\n`);\n const { connect, buffered } = await proxyResponsePromise;\n req.emit('proxyConnect', connect);\n this.emit('proxyConnect', connect, req);\n if (connect.statusCode === 200) {\n req.once('socket', resume);\n if (opts.secureEndpoint) {\n // The proxy is connecting to a TLS server, so upgrade\n // this socket connection to a TLS connection.\n debug('Upgrading socket connection to TLS');\n return tls.connect({\n ...omit(setServernameFromNonIpHost(opts), 'host', 'path', 'port'),\n socket,\n });\n }\n return socket;\n }\n // Some other status code that's not 200... need to re-play the HTTP\n // header \"data\" events onto the socket once the HTTP machinery is\n // attached so that the node core `http` can parse and handle the\n // error status code.\n // Close the original socket, and a new \"fake\" socket is returned\n // instead, so that the proxy doesn't get the HTTP request\n // written to it (which may contain `Authorization` headers or other\n // sensitive data).\n //\n // See: https://hackerone.com/reports/541502\n socket.destroy();\n const fakeSocket = new net.Socket({ writable: false });\n fakeSocket.readable = true;\n // Need to wait for the \"socket\" event to re-play the \"data\" events.\n req.once('socket', (s) => {\n debug('Replaying proxy buffer for failed request');\n (0, assert_1.default)(s.listenerCount('data') > 0);\n // Replay the \"buffered\" Buffer onto the fake `socket`, since at\n // this point the HTTP module machinery has been hooked up for\n // the user.\n s.push(buffered);\n s.push(null);\n });\n return fakeSocket;\n }\n}\nHttpsProxyAgent.protocols = ['http', 'https'];\nexports.HttpsProxyAgent = HttpsProxyAgent;\nfunction resume(socket) {\n socket.resume();\n}\nfunction omit(obj, ...keys) {\n const ret = {};\n let key;\n for (key in obj) {\n if (!keys.includes(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n//# sourceMappingURL=index.js.map","'use strict';\n\nconst url = require('url');\nconst https = require('https');\n\nconst WebPushError = require('./web-push-error.js');\nconst vapidHelper = require('./vapid-helper.js');\nconst encryptionHelper = require('./encryption-helper.js');\nconst webPushConstants = require('./web-push-constants.js');\nconst urlBase64Helper = require('./urlsafe-base64-helper');\n\n// Default TTL is four weeks.\nconst DEFAULT_TTL = 2419200;\n\nlet gcmAPIKey = '';\nlet vapidDetails;\n\nfunction WebPushLib() {\n\n}\n\n/**\n * When sending messages to a GCM endpoint you need to set the GCM API key\n * by either calling setGMAPIKey() or passing in the API key as an option\n * to sendNotification().\n * @param {string} apiKey The API key to send with the GCM request.\n */\nWebPushLib.prototype.setGCMAPIKey = function(apiKey) {\n if (apiKey === null) {\n gcmAPIKey = null;\n return;\n }\n\n if (typeof apiKey === 'undefined'\n || typeof apiKey !== 'string'\n || apiKey.length === 0) {\n throw new Error('The GCM API Key should be a non-empty string or null.');\n }\n\n gcmAPIKey = apiKey;\n};\n\n/**\n * When making requests where you want to define VAPID details, call this\n * method before sendNotification() or pass in the details and options to\n * sendNotification.\n * @param {string} subject This must be either a URL or a 'mailto:'\n * address. For example: 'https://my-site.com/contact' or\n * 'mailto: contact@my-site.com'\n * @param {string} publicKey The public VAPID key, a URL safe, base64 encoded string\n * @param {string} privateKey The private VAPID key, a URL safe, base64 encoded string.\n */\nWebPushLib.prototype.setVapidDetails = function(subject, publicKey, privateKey) {\n if (arguments.length === 1 && arguments[0] === null) {\n vapidDetails = null;\n return;\n }\n\n vapidHelper.validateSubject(subject);\n vapidHelper.validatePublicKey(publicKey);\n vapidHelper.validatePrivateKey(privateKey);\n\n vapidDetails = {\n subject: subject,\n publicKey: publicKey,\n privateKey: privateKey\n };\n };\n\n /**\n * To get the details of a request to trigger a push message, without sending\n * a push notification call this method.\n *\n * This method will throw an error if there is an issue with the input.\n * @param {PushSubscription} subscription The PushSubscription you wish to\n * send the notification to.\n * @param {string|Buffer} [payload] The payload you wish to send to the\n * the user.\n * @param {Object} [options] Options for the GCM API key and\n * vapid keys can be passed in if they are unique for each notification you\n * wish to send.\n * @return {Object} This method returns an Object which\n * contains 'endpoint', 'method', 'headers' and 'payload'.\n */\nWebPushLib.prototype.generateRequestDetails = function(subscription, payload, options) {\n if (!subscription || !subscription.endpoint) {\n throw new Error('You must pass in a subscription with at least '\n + 'an endpoint.');\n }\n\n if (typeof subscription.endpoint !== 'string'\n || subscription.endpoint.length === 0) {\n throw new Error('The subscription endpoint must be a string with '\n + 'a valid URL.');\n }\n\n if (payload) {\n // Validate the subscription keys\n if (typeof subscription !== 'object' || !subscription.keys\n || !subscription.keys.p256dh\n || !subscription.keys.auth) {\n throw new Error('To send a message with a payload, the '\n + 'subscription must have \\'auth\\' and \\'p256dh\\' keys.');\n }\n }\n\n let currentGCMAPIKey = gcmAPIKey;\n let currentVapidDetails = vapidDetails;\n let timeToLive = DEFAULT_TTL;\n let extraHeaders = {};\n let contentEncoding = webPushConstants.supportedContentEncodings.AES_128_GCM;\n let urgency = webPushConstants.supportedUrgency.NORMAL;\n let topic;\n let proxy;\n let agent;\n let timeout;\n\n if (options) {\n const validOptionKeys = [\n 'headers',\n 'gcmAPIKey',\n 'vapidDetails',\n 'TTL',\n 'contentEncoding',\n 'urgency',\n 'topic',\n 'proxy',\n 'agent',\n 'timeout'\n ];\n const optionKeys = Object.keys(options);\n for (let i = 0; i < optionKeys.length; i += 1) {\n const optionKey = optionKeys[i];\n if (!validOptionKeys.includes(optionKey)) {\n throw new Error('\\'' + optionKey + '\\' is an invalid option. '\n + 'The valid options are [\\'' + validOptionKeys.join('\\', \\'')\n + '\\'].');\n }\n }\n\n if (options.headers) {\n extraHeaders = options.headers;\n let duplicates = Object.keys(extraHeaders)\n .filter(function (header) {\n return typeof options[header] !== 'undefined';\n });\n\n if (duplicates.length > 0) {\n throw new Error('Duplicated headers defined ['\n + duplicates.join(',') + ']. Please either define the header in the'\n + 'top level options OR in the \\'headers\\' key.');\n }\n }\n\n if (options.gcmAPIKey) {\n currentGCMAPIKey = options.gcmAPIKey;\n }\n\n // Falsy values are allowed here so one can skip Vapid `else if` below and use FCM\n if (options.vapidDetails !== undefined) {\n currentVapidDetails = options.vapidDetails;\n }\n\n if (options.TTL !== undefined) {\n timeToLive = Number(options.TTL);\n if (timeToLive < 0) {\n throw new Error('TTL should be a number and should be at least 0');\n }\n }\n\n if (options.contentEncoding) {\n if ((options.contentEncoding === webPushConstants.supportedContentEncodings.AES_128_GCM\n || options.contentEncoding === webPushConstants.supportedContentEncodings.AES_GCM)) {\n contentEncoding = options.contentEncoding;\n } else {\n throw new Error('Unsupported content encoding specified.');\n }\n }\n\n if (options.urgency) {\n if ((options.urgency === webPushConstants.supportedUrgency.VERY_LOW\n || options.urgency === webPushConstants.supportedUrgency.LOW\n || options.urgency === webPushConstants.supportedUrgency.NORMAL\n || options.urgency === webPushConstants.supportedUrgency.HIGH)) {\n urgency = options.urgency;\n } else {\n throw new Error('Unsupported urgency specified.');\n }\n }\n\n if (options.topic) {\n if (!urlBase64Helper.validate(options.topic)) {\n throw new Error('Unsupported characters set use the URL or filename-safe Base64 characters set');\n }\n if (options.topic.length > 32) {\n throw new Error('use maximum of 32 characters from the URL or filename-safe Base64 characters set');\n }\n topic = options.topic;\n }\n\n if (options.proxy) {\n if (typeof options.proxy === 'string'\n || typeof options.proxy.host === 'string') {\n proxy = options.proxy;\n } else {\n console.warn('Attempt to use proxy option, but invalid type it should be a string or proxy options object.');\n }\n }\n\n if (options.agent) {\n if (options.agent instanceof https.Agent) {\n if (proxy) {\n console.warn('Agent option will be ignored because proxy option is defined.');\n }\n\n agent = options.agent;\n } else {\n console.warn('Wrong type for the agent option, it should be an instance of https.Agent.');\n }\n }\n\n if (typeof options.timeout === 'number') {\n timeout = options.timeout;\n }\n }\n\n if (typeof timeToLive === 'undefined') {\n timeToLive = DEFAULT_TTL;\n }\n\n const requestDetails = {\n method: 'POST',\n headers: {\n TTL: timeToLive\n }\n };\n Object.keys(extraHeaders).forEach(function (header) {\n requestDetails.headers[header] = extraHeaders[header];\n });\n let requestPayload = null;\n\n if (payload) {\n const encrypted = encryptionHelper\n .encrypt(subscription.keys.p256dh, subscription.keys.auth, payload, contentEncoding);\n\n requestDetails.headers['Content-Length'] = encrypted.cipherText.length;\n requestDetails.headers['Content-Type'] = 'application/octet-stream';\n\n if (contentEncoding === webPushConstants.supportedContentEncodings.AES_128_GCM) {\n requestDetails.headers['Content-Encoding'] = webPushConstants.supportedContentEncodings.AES_128_GCM;\n } else if (contentEncoding === webPushConstants.supportedContentEncodings.AES_GCM) {\n requestDetails.headers['Content-Encoding'] = webPushConstants.supportedContentEncodings.AES_GCM;\n requestDetails.headers.Encryption = 'salt=' + encrypted.salt;\n requestDetails.headers['Crypto-Key'] = 'dh=' + encrypted.localPublicKey.toString('base64url');\n }\n\n requestPayload = encrypted.cipherText;\n } else {\n requestDetails.headers['Content-Length'] = 0;\n }\n\n const isGCM = subscription.endpoint.startsWith('https://android.googleapis.com/gcm/send');\n const isFCM = subscription.endpoint.startsWith('https://fcm.googleapis.com/fcm/send');\n // VAPID isn't supported by GCM hence the if, else if.\n if (isGCM) {\n if (!currentGCMAPIKey) {\n console.warn('Attempt to send push notification to GCM endpoint, '\n + 'but no GCM key is defined. Please use setGCMApiKey() or add '\n + '\\'gcmAPIKey\\' as an option.');\n } else {\n requestDetails.headers.Authorization = 'key=' + currentGCMAPIKey;\n }\n } else if (currentVapidDetails) {\n const parsedUrl = url.parse(subscription.endpoint);\n const audience = parsedUrl.protocol + '//'\n + parsedUrl.host;\n\n const vapidHeaders = vapidHelper.getVapidHeaders(\n audience,\n currentVapidDetails.subject,\n currentVapidDetails.publicKey,\n currentVapidDetails.privateKey,\n contentEncoding\n );\n\n requestDetails.headers.Authorization = vapidHeaders.Authorization;\n\n if (contentEncoding === webPushConstants.supportedContentEncodings.AES_GCM) {\n if (requestDetails.headers['Crypto-Key']) {\n requestDetails.headers['Crypto-Key'] += ';'\n + vapidHeaders['Crypto-Key'];\n } else {\n requestDetails.headers['Crypto-Key'] = vapidHeaders['Crypto-Key'];\n }\n }\n } else if (isFCM && currentGCMAPIKey) {\n requestDetails.headers.Authorization = 'key=' + currentGCMAPIKey;\n }\n\n requestDetails.headers.Urgency = urgency;\n\n if (topic) {\n requestDetails.headers.Topic = topic;\n }\n\n requestDetails.body = requestPayload;\n requestDetails.endpoint = subscription.endpoint;\n\n if (proxy) {\n requestDetails.proxy = proxy;\n }\n\n if (agent) {\n requestDetails.agent = agent;\n }\n\n if (timeout) {\n requestDetails.timeout = timeout;\n }\n\n return requestDetails;\n };\n\n/**\n * To send a push notification call this method with a subscription, optional\n * payload and any options.\n * @param {PushSubscription} subscription The PushSubscription you wish to\n * send the notification to.\n * @param {string|Buffer} [payload] The payload you wish to send to the\n * the user.\n * @param {Object} [options] Options for the GCM API key and\n * vapid keys can be passed in if they are unique for each notification you\n * wish to send.\n * @return {Promise} This method returns a Promise which\n * resolves if the sending of the notification was successful, otherwise it\n * rejects.\n */\nWebPushLib.prototype.sendNotification = function(subscription, payload, options) {\n let requestDetails;\n try {\n requestDetails = this.generateRequestDetails(subscription, payload, options);\n } catch (err) {\n return Promise.reject(err);\n }\n\n return new Promise(function(resolve, reject) {\n const httpsOptions = {};\n const urlParts = url.parse(requestDetails.endpoint);\n httpsOptions.hostname = urlParts.hostname;\n httpsOptions.port = urlParts.port;\n httpsOptions.path = urlParts.path;\n\n httpsOptions.headers = requestDetails.headers;\n httpsOptions.method = requestDetails.method;\n\n if (requestDetails.timeout) {\n httpsOptions.timeout = requestDetails.timeout;\n }\n\n if (requestDetails.agent) {\n httpsOptions.agent = requestDetails.agent;\n }\n\n if (requestDetails.proxy) {\n const { HttpsProxyAgent } = require('https-proxy-agent'); // eslint-disable-line global-require\n httpsOptions.agent = new HttpsProxyAgent(requestDetails.proxy);\n }\n\n const pushRequest = https.request(httpsOptions, function(pushResponse) {\n let responseText = '';\n\n pushResponse.on('data', function(chunk) {\n responseText += chunk;\n });\n\n pushResponse.on('end', function() {\n if (pushResponse.statusCode < 200 || pushResponse.statusCode > 299) {\n reject(new WebPushError(\n 'Received unexpected response code',\n pushResponse.statusCode,\n pushResponse.headers,\n responseText,\n requestDetails.endpoint\n ));\n } else {\n resolve({\n statusCode: pushResponse.statusCode,\n body: responseText,\n headers: pushResponse.headers\n });\n }\n });\n });\n\n if (requestDetails.timeout) {\n pushRequest.on('timeout', function() {\n pushRequest.destroy(new Error('Socket timeout'));\n });\n }\n\n pushRequest.on('error', function(e) {\n reject(e);\n });\n\n if (requestDetails.body) {\n pushRequest.write(requestDetails.body);\n }\n\n pushRequest.end();\n });\n };\n\nmodule.exports = WebPushLib;\n","'use strict';\n\nconst vapidHelper = require('./vapid-helper.js');\nconst encryptionHelper = require('./encryption-helper.js');\nconst WebPushLib = require('./web-push-lib.js');\nconst WebPushError = require('./web-push-error.js');\nconst WebPushConstants = require('./web-push-constants.js');\n\nconst webPush = new WebPushLib();\n\nmodule.exports = {\n WebPushError: WebPushError,\n supportedContentEncodings: WebPushConstants.supportedContentEncodings,\n encrypt: encryptionHelper.encrypt,\n getVapidHeaders: vapidHelper.getVapidHeaders,\n generateVAPIDKeys: vapidHelper.generateVAPIDKeys,\n setGCMAPIKey: webPush.setGCMAPIKey,\n setVapidDetails: webPush.setVapidDetails,\n generateRequestDetails: webPush.generateRequestDetails,\n sendNotification: webPush.sendNotification.bind(webPush)\n};\n","import { dirname, join } from \"path\";\nimport webpush from \"web-push\";\nimport { g as getSession, a as getAllSessions, b as getSessionsDir } from \"./sessions-json.js\";\nimport { d as detectNotifications, n as notificationText } from \"./session-notifications.js\";\nimport { c as capturePaneContentAsync, r as readPromptOptions } from \"./pane.js\";\nimport { w as watchSessionRepos, i as issueFor } from \"./github.js\";\nimport { s as sessionWatcher } from \"./git.js\";\nimport { readFileSync, statSync } from \"node:fs\";\nimport { P as PUSH_VAPID, d as SERVER_ONLY_PREFIX } from \"./ws-messages.js\";\nimport { z } from \"zod/v4\";\nimport { M as MACHINE_ID } from \"./instance.js\";\nimport { s as selfName } from \"./discover.js\";\nimport { c as ensureFleetPrefs } from \"./fleet.js\";\nfunction isGone(err) {\n const status = err?.statusCode;\n return status === 404 || status === 410;\n}\nfunction wantsEvent(events, kind) {\n return kind === \"completion\" ? events.done : events.needsYou;\n}\nfunction pushMessageFor(session, kind, machine, question = null) {\n const issue = issueFor(session.git_root, session.maestro_issue);\n return {\n ...notificationText({ ...session, issue, pane_choice: { question } }, kind, machine),\n tag: session.id,\n url: `/m/${encodeURIComponent(machine)}/session/${encodeURIComponent(session.tmux_target ?? session.id)}`,\n kind\n };\n}\nasync function deliverPush(message, send, devices, subscriptions = devices.subscriptions()) {\n const targets = subscriptions.filter((s) => wantsEvent(s.events, message.kind));\n const results = await Promise.allSettled(targets.map((s) => send(s, message)));\n const gone = [];\n results.forEach((result, i) => {\n if (result.status === \"fulfilled\") return;\n if (isGone(result.reason)) gone.push(targets[i].endpoint);\n else console.warn(\"[push] Send failed\", { endpoint: targets[i].endpoint, error: String(result.reason) });\n });\n return gone.length > 0 ? devices.forget(gone) : 0;\n}\nconst ISSUE_WATCH_MS = 60 * 1e3;\nconst DIALOG_DRAW_MS = 500;\nasync function dialogQuestion(session) {\n if (!session.tmux_target) return null;\n await new Promise((resolve) => setTimeout(resolve, DIALOG_DRAW_MS));\n const content = await capturePaneContentAsync(session.tmux_target).catch(() => null);\n return content ? readPromptOptions(content)?.question ?? null : null;\n}\nfunction startPushMonitor(send, devices, machine) {\n let seen = /* @__PURE__ */ new Map();\n let issuesWatchedAt = 0;\n const keepIssuesWarm = () => {\n if (Date.now() - issuesWatchedAt < ISSUE_WATCH_MS) return;\n issuesWatchedAt = Date.now();\n watchSessionRepos(getAllSessions());\n };\n const check = (changed) => {\n const sessions = changed ? [...changed].map(getSession).filter((s) => s !== null) : getAllSessions();\n const out = detectNotifications(seen, sessions);\n if (changed) {\n for (const id of changed) seen.delete(id);\n for (const [id, s] of out.seen) seen.set(id, s);\n } else {\n seen = out.seen;\n }\n keepIssuesWarm();\n if (out.events.length === 0) return;\n const subscriptions = devices.subscriptions();\n for (const { session, kind } of out.events) {\n if (!subscriptions.some((s) => wantsEvent(s.events, kind))) continue;\n void (async () => {\n const question = kind === \"completion\" ? null : await dialogQuestion(session);\n await deliverPush(pushMessageFor(session, kind, machine(), question), send, devices, subscriptions);\n })().catch((err) => console.warn(\"[push] Delivery failed\", String(err)));\n }\n };\n check();\n return sessionWatcher.subscribe(check);\n}\nconst VapidKeysSchema = z.object({ publicKey: z.string().min(1), privateKey: z.string().min(1) });\nconst SubscriptionValueSchema = z.object({\n keys: z.object({ p256dh: z.string(), auth: z.string() }),\n events: z.object({ needsYou: z.boolean(), done: z.boolean() }),\n created_at: z.number(),\n vapid: z.string()\n});\nconst SUBSCRIPTION_PREFIX = `${SERVER_ONLY_PREFIX}sub:`;\nfunction subscriptionKey(endpoint) {\n return SUBSCRIPTION_PREFIX + endpoint;\n}\nfunction subscriptionValue({ endpoint: _, ...value }) {\n return value;\n}\nfunction fleetVapid(prefs) {\n const parsed = VapidKeysSchema.safeParse(prefs[PUSH_VAPID]?.value);\n return parsed.success ? parsed.data : null;\n}\nfunction subscriptionIn(prefs, endpoint) {\n const parsed = SubscriptionValueSchema.safeParse(prefs[subscriptionKey(endpoint)]?.value);\n return parsed.success ? { endpoint, ...parsed.data } : null;\n}\nfunction subscriptionsIn(prefs, publicKey) {\n return Object.keys(prefs).filter((key) => key.startsWith(SUBSCRIPTION_PREFIX)).map((key) => subscriptionIn(prefs, key.slice(SUBSCRIPTION_PREFIX.length))).filter((s) => s !== null && s.vapid === publicKey);\n}\nclass FleetPush {\n constructor(prefs, selfId, now = Date.now) {\n this.prefs = prefs;\n this.selfId = selfId;\n this.now = now;\n }\n prefs;\n selfId;\n now;\n /** The fleet's key pair, or null while no machine has made one. */\n keys() {\n return fleetVapid(this.prefs.all());\n }\n /**\n * Put forward a key pair made at `at`. The fleet keeps the earliest made,\n * so this one stands only if no machine holds an older one.\n */\n offerKeys(keys, at) {\n this.prefs.merge({ [PUSH_VAPID]: { value: keys, at, by: this.selfId } });\n }\n /** The fleet's key pair, made now by `generate` when no machine has one yet. */\n ensureKeys(generate) {\n const held = this.keys();\n if (held) return held;\n this.offerKeys(generate(), this.now());\n return this.keys();\n }\n /** The devices a push signed with the fleet's key reaches. */\n subscriptions() {\n const keys = this.keys();\n return keys ? subscriptionsIn(this.prefs.all(), keys.publicKey) : [];\n }\n /** One device, under whichever key it subscribed, or null. */\n get(endpoint) {\n return subscriptionIn(this.prefs.all(), endpoint);\n }\n /** Add a device, or replace its keys and events if it subscribed before. */\n save(subscription) {\n const record = {\n ...subscription,\n created_at: this.get(subscription.endpoint)?.created_at ?? this.now()\n };\n this.prefs.set(subscriptionKey(record.endpoint), subscriptionValue(record));\n return record;\n }\n /** Forget the given devices on every machine. Returns how many were there to forget. */\n forget(endpoints) {\n const known = [...new Set(endpoints)].filter((endpoint) => this.get(endpoint));\n this.prefs.setAll(Object.fromEntries(known.map((endpoint) => [subscriptionKey(endpoint), null])));\n return known.length;\n }\n /**\n * Bring in what this machine kept before push spread across the fleet: its\n * own key pair in `vapid.json`, put forward with the time the file was\n * written, and the devices in `push-subscriptions.json`, bound to that key.\n * A device the fleet already knows of, or forgot, is left as the fleet has it.\n */\n importLocal(vapidPath, subscriptionsPath) {\n const local = readLocalKeys(vapidPath);\n if (!local) return;\n this.offerKeys(local.keys, local.at);\n const held = this.prefs.all();\n const fresh = readLocalSubscriptions(subscriptionsPath).filter((old) => !(subscriptionKey(old.endpoint) in held));\n this.prefs.setAll(\n Object.fromEntries(\n fresh.map((old) => [subscriptionKey(old.endpoint), subscriptionValue({ ...old, vapid: local.keys.publicKey })])\n )\n );\n }\n}\nconst LocalSubscriptionSchema = SubscriptionValueSchema.omit({ vapid: true }).extend({ endpoint: z.string() });\nfunction readLocalKeys(path) {\n try {\n const parsed = VapidKeysSchema.safeParse(JSON.parse(readFileSync(path, \"utf-8\")));\n return parsed.success ? { keys: parsed.data, at: statSync(path).mtimeMs } : null;\n } catch {\n return null;\n }\n}\nfunction readLocalSubscriptions(path) {\n let parsed;\n try {\n parsed = JSON.parse(readFileSync(path, \"utf-8\"));\n } catch {\n return [];\n }\n if (!Array.isArray(parsed)) return [];\n return parsed.flatMap((v) => {\n const row = LocalSubscriptionSchema.safeParse(v);\n return row.success ? [row.data] : [];\n });\n}\nconst VAPID_SUBJECT = \"https://github.com/christinoleo/claude-mux\";\nconst TTL_SECONDS = 60 * 60;\nfunction fleetPush() {\n const g = globalThis;\n if (g.__claudeMuxFleetPush) return g.__claudeMuxFleetPush;\n const push = new FleetPush(ensureFleetPrefs(), MACHINE_ID);\n const dir = dirname(getSessionsDir());\n push.importLocal(join(dir, \"vapid.json\"), join(dir, \"push-subscriptions.json\"));\n g.__claudeMuxFleetPush = push;\n return push;\n}\nfunction vapidKeys() {\n return fleetPush().ensureKeys(() => webpush.generateVAPIDKeys());\n}\nfunction sendPush(subscription, message) {\n const { publicKey, privateKey } = vapidKeys();\n return webpush.sendNotification(subscription, JSON.stringify(message), {\n vapidDetails: { subject: VAPID_SUBJECT, publicKey, privateKey },\n TTL: TTL_SECONDS,\n // A finished turn can wait for the phone's next wake; a waiting session cannot.\n urgency: message.kind === \"completion\" ? \"normal\" : \"high\"\n });\n}\nfunction ensurePushMonitor() {\n const g = globalThis;\n if (g.__claudeMuxPushMonitor) return;\n g.__claudeMuxPushMonitor = startPushMonitor(sendPush, fleetPush(), selfName);\n}\nexport {\n ensurePushMonitor as e,\n fleetPush as f,\n isGone as i,\n sendPush as s,\n vapidKeys as v\n};\n//# sourceMappingURL=push.js.map\n"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"mappings":"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,KAAK,KAAK,GAAG,IAAK;GACpC,KAAK,KAAK,KAAK,KAAK,GAAG;GACvB,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;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AAK,GAAG,IAAK;GACpC,KAAK,KAAK,KAAK,KAAK,GAAG;GACvB,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,MAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;GACpC,KAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;GAClC,I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"}