@forgesworn/moneyer 0.1.0-next.0

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 (118) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/LICENSE +21 -0
  3. package/README.md +133 -0
  4. package/SECURITY.md +29 -0
  5. package/THREAT-MODEL.md +104 -0
  6. package/dist/backends/cln.d.ts +5 -0
  7. package/dist/backends/cln.js +130 -0
  8. package/dist/backends/fake-bolt11.d.ts +6 -0
  9. package/dist/backends/fake-bolt11.js +60 -0
  10. package/dist/backends/fake.d.ts +17 -0
  11. package/dist/backends/fake.js +104 -0
  12. package/dist/backends/lnd.d.ts +5 -0
  13. package/dist/backends/lnd.js +191 -0
  14. package/dist/backends/types.d.ts +38 -0
  15. package/dist/backends/types.js +25 -0
  16. package/dist/cli.d.ts +2 -0
  17. package/dist/cli.js +61 -0
  18. package/dist/config.d.ts +44 -0
  19. package/dist/config.js +100 -0
  20. package/dist/index.d.ts +10 -0
  21. package/dist/index.js +23 -0
  22. package/dist/landing.d.ts +8 -0
  23. package/dist/landing.js +63 -0
  24. package/dist/melt.d.ts +17 -0
  25. package/dist/melt.js +91 -0
  26. package/dist/server.d.ts +24 -0
  27. package/dist/server.js +502 -0
  28. package/dist/signing.d.ts +6 -0
  29. package/dist/signing.js +37 -0
  30. package/dist/store.d.ts +53 -0
  31. package/dist/store.js +245 -0
  32. package/dist/web-assets.d.ts +12 -0
  33. package/dist/web-assets.js +51 -0
  34. package/llms.txt +64 -0
  35. package/package.json +76 -0
  36. package/web/dist/art/plate-l.webp +0 -0
  37. package/web/dist/art/plate-p.webp +0 -0
  38. package/web/dist/assets/cinzel-latin-400-normal-C8jUSQqm.woff +0 -0
  39. package/web/dist/assets/cinzel-latin-400-normal-DnUIPmzd.woff2 +0 -0
  40. package/web/dist/assets/cinzel-latin-700-normal-C-gK7hA8.woff +0 -0
  41. package/web/dist/assets/cinzel-latin-700-normal-Dkw14w9r.woff2 +0 -0
  42. package/web/dist/assets/cinzel-latin-ext-400-normal-DJ0Lq8y-.woff +0 -0
  43. package/web/dist/assets/cinzel-latin-ext-400-normal-XQK_CSAr.woff2 +0 -0
  44. package/web/dist/assets/cinzel-latin-ext-700-normal-C24KFjuG.woff2 +0 -0
  45. package/web/dist/assets/cinzel-latin-ext-700-normal-CORa-yIv.woff +0 -0
  46. package/web/dist/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2 +0 -0
  47. package/web/dist/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff +0 -0
  48. package/web/dist/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff +0 -0
  49. package/web/dist/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2 +0 -0
  50. package/web/dist/assets/ibm-plex-mono-cyrillic-600-normal-CTOM6hUh.woff2 +0 -0
  51. package/web/dist/assets/ibm-plex-mono-cyrillic-600-normal-fLZuRloM.woff +0 -0
  52. package/web/dist/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff +0 -0
  53. package/web/dist/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2 +0 -0
  54. package/web/dist/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff +0 -0
  55. package/web/dist/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2 +0 -0
  56. package/web/dist/assets/ibm-plex-mono-cyrillic-ext-600-normal-9HEixskS.woff +0 -0
  57. package/web/dist/assets/ibm-plex-mono-cyrillic-ext-600-normal-V-xxqcpd.woff2 +0 -0
  58. package/web/dist/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
  59. package/web/dist/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
  60. package/web/dist/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
  61. package/web/dist/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
  62. package/web/dist/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2 +0 -0
  63. package/web/dist/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff +0 -0
  64. package/web/dist/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2 +0 -0
  65. package/web/dist/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff +0 -0
  66. package/web/dist/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2 +0 -0
  67. package/web/dist/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff +0 -0
  68. package/web/dist/assets/ibm-plex-mono-latin-ext-600-normal-D38SheWl.woff2 +0 -0
  69. package/web/dist/assets/ibm-plex-mono-latin-ext-600-normal-DmB0ttJJ.woff +0 -0
  70. package/web/dist/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2 +0 -0
  71. package/web/dist/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff +0 -0
  72. package/web/dist/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff +0 -0
  73. package/web/dist/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2 +0 -0
  74. package/web/dist/assets/ibm-plex-mono-vietnamese-600-normal-D2EvbN8M.woff2 +0 -0
  75. package/web/dist/assets/ibm-plex-mono-vietnamese-600-normal-iLQfcSjf.woff +0 -0
  76. package/web/dist/assets/index-BGYBQuiQ.css +1 -0
  77. package/web/dist/assets/index-CIuRQd9k.js +130 -0
  78. package/web/dist/assets/spectral-cyrillic-400-italic-C6o5RXh-.woff2 +0 -0
  79. package/web/dist/assets/spectral-cyrillic-400-italic-C95RxGpc.woff +0 -0
  80. package/web/dist/assets/spectral-cyrillic-400-normal-Bx9Tn3WZ.woff2 +0 -0
  81. package/web/dist/assets/spectral-cyrillic-400-normal-X3p2PSzL.woff +0 -0
  82. package/web/dist/assets/spectral-cyrillic-500-italic-BLpmaxIM.woff +0 -0
  83. package/web/dist/assets/spectral-cyrillic-500-italic-D14WfPba.woff2 +0 -0
  84. package/web/dist/assets/spectral-cyrillic-600-normal-Dl75bDKp.woff2 +0 -0
  85. package/web/dist/assets/spectral-cyrillic-600-normal-veT-ELBO.woff +0 -0
  86. package/web/dist/assets/spectral-cyrillic-ext-400-italic-C6Gmo4JY.woff +0 -0
  87. package/web/dist/assets/spectral-cyrillic-ext-400-italic-CZOVIkJA.woff2 +0 -0
  88. package/web/dist/assets/spectral-cyrillic-ext-400-normal--n_iQ4wr.woff +0 -0
  89. package/web/dist/assets/spectral-cyrillic-ext-400-normal-B4-YHs9i.woff2 +0 -0
  90. package/web/dist/assets/spectral-cyrillic-ext-500-italic-CxkamsWL.woff +0 -0
  91. package/web/dist/assets/spectral-cyrillic-ext-500-italic-DGZ5KH5h.woff2 +0 -0
  92. package/web/dist/assets/spectral-cyrillic-ext-600-normal-BVATWin6.woff +0 -0
  93. package/web/dist/assets/spectral-cyrillic-ext-600-normal-CvRHnPuy.woff2 +0 -0
  94. package/web/dist/assets/spectral-latin-400-italic-CDO25mTW.woff2 +0 -0
  95. package/web/dist/assets/spectral-latin-400-italic-Ds-NcNVC.woff +0 -0
  96. package/web/dist/assets/spectral-latin-400-normal-CTVgUekv.woff2 +0 -0
  97. package/web/dist/assets/spectral-latin-400-normal-D34IWA1h.woff +0 -0
  98. package/web/dist/assets/spectral-latin-500-italic-CqeZqSS8.woff2 +0 -0
  99. package/web/dist/assets/spectral-latin-500-italic-DxwFSvPk.woff +0 -0
  100. package/web/dist/assets/spectral-latin-600-normal-DE3OxvnQ.woff2 +0 -0
  101. package/web/dist/assets/spectral-latin-600-normal-DXnQJnYb.woff +0 -0
  102. package/web/dist/assets/spectral-latin-ext-400-italic-BcKU4A_a.woff +0 -0
  103. package/web/dist/assets/spectral-latin-ext-400-italic-BgTM1Mst.woff2 +0 -0
  104. package/web/dist/assets/spectral-latin-ext-400-normal-BHbqXr-7.woff +0 -0
  105. package/web/dist/assets/spectral-latin-ext-400-normal-XDLFwhqg.woff2 +0 -0
  106. package/web/dist/assets/spectral-latin-ext-500-italic-DMigwuN9.woff2 +0 -0
  107. package/web/dist/assets/spectral-latin-ext-500-italic-UnF3HUpx.woff +0 -0
  108. package/web/dist/assets/spectral-latin-ext-600-normal-DKlDBbgb.woff2 +0 -0
  109. package/web/dist/assets/spectral-latin-ext-600-normal-DnKmvInL.woff +0 -0
  110. package/web/dist/assets/spectral-vietnamese-400-italic-D8dhja4j.woff +0 -0
  111. package/web/dist/assets/spectral-vietnamese-400-italic-DO3bsfcj.woff2 +0 -0
  112. package/web/dist/assets/spectral-vietnamese-400-normal-C7CRHYqk.woff2 +0 -0
  113. package/web/dist/assets/spectral-vietnamese-400-normal-CWkMWCzb.woff +0 -0
  114. package/web/dist/assets/spectral-vietnamese-500-italic-e7VYE3f9.woff2 +0 -0
  115. package/web/dist/assets/spectral-vietnamese-500-italic-q7ilnnst.woff +0 -0
  116. package/web/dist/assets/spectral-vietnamese-600-normal-ZNiwCzjU.woff2 +0 -0
  117. package/web/dist/assets/spectral-vietnamese-600-normal-esmjhrFa.woff +0 -0
  118. package/web/dist/index.html +19 -0
@@ -0,0 +1 @@
1
+ @font-face{font-family:Cinzel;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/cinzel-latin-ext-400-normal-XQK_CSAr.woff2) format("woff2"),url(/assets/cinzel-latin-ext-400-normal-DJ0Lq8y-.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cinzel;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/cinzel-latin-400-normal-DnUIPmzd.woff2) format("woff2"),url(/assets/cinzel-latin-400-normal-C8jUSQqm.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cinzel;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/cinzel-latin-ext-700-normal-C24KFjuG.woff2) format("woff2"),url(/assets/cinzel-latin-ext-700-normal-CORa-yIv.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cinzel;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/cinzel-latin-700-normal-Dkw14w9r.woff2) format("woff2"),url(/assets/cinzel-latin-700-normal-C-gK7hA8.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Spectral;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/spectral-cyrillic-ext-400-normal-B4-YHs9i.woff2) format("woff2"),url(/assets/spectral-cyrillic-ext-400-normal--n_iQ4wr.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Spectral;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/spectral-cyrillic-400-normal-Bx9Tn3WZ.woff2) format("woff2"),url(/assets/spectral-cyrillic-400-normal-X3p2PSzL.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Spectral;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/spectral-vietnamese-400-normal-C7CRHYqk.woff2) format("woff2"),url(/assets/spectral-vietnamese-400-normal-CWkMWCzb.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Spectral;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/spectral-latin-ext-400-normal-XDLFwhqg.woff2) format("woff2"),url(/assets/spectral-latin-ext-400-normal-BHbqXr-7.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Spectral;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/spectral-latin-400-normal-CTVgUekv.woff2) format("woff2"),url(/assets/spectral-latin-400-normal-D34IWA1h.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Spectral;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/spectral-cyrillic-ext-400-italic-CZOVIkJA.woff2) format("woff2"),url(/assets/spectral-cyrillic-ext-400-italic-C6Gmo4JY.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Spectral;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/spectral-cyrillic-400-italic-C6o5RXh-.woff2) format("woff2"),url(/assets/spectral-cyrillic-400-italic-C95RxGpc.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Spectral;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/spectral-vietnamese-400-italic-DO3bsfcj.woff2) format("woff2"),url(/assets/spectral-vietnamese-400-italic-D8dhja4j.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Spectral;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/spectral-latin-ext-400-italic-BgTM1Mst.woff2) format("woff2"),url(/assets/spectral-latin-ext-400-italic-BcKU4A_a.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Spectral;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/spectral-latin-400-italic-CDO25mTW.woff2) format("woff2"),url(/assets/spectral-latin-400-italic-Ds-NcNVC.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Spectral;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/spectral-cyrillic-ext-500-italic-DGZ5KH5h.woff2) format("woff2"),url(/assets/spectral-cyrillic-ext-500-italic-CxkamsWL.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Spectral;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/spectral-cyrillic-500-italic-D14WfPba.woff2) format("woff2"),url(/assets/spectral-cyrillic-500-italic-BLpmaxIM.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Spectral;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/spectral-vietnamese-500-italic-e7VYE3f9.woff2) format("woff2"),url(/assets/spectral-vietnamese-500-italic-q7ilnnst.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Spectral;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/spectral-latin-ext-500-italic-DMigwuN9.woff2) format("woff2"),url(/assets/spectral-latin-ext-500-italic-UnF3HUpx.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Spectral;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/spectral-latin-500-italic-CqeZqSS8.woff2) format("woff2"),url(/assets/spectral-latin-500-italic-DxwFSvPk.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Spectral;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/spectral-cyrillic-ext-600-normal-CvRHnPuy.woff2) format("woff2"),url(/assets/spectral-cyrillic-ext-600-normal-BVATWin6.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Spectral;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/spectral-cyrillic-600-normal-Dl75bDKp.woff2) format("woff2"),url(/assets/spectral-cyrillic-600-normal-veT-ELBO.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Spectral;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/spectral-vietnamese-600-normal-ZNiwCzjU.woff2) format("woff2"),url(/assets/spectral-vietnamese-600-normal-esmjhrFa.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Spectral;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/spectral-latin-ext-600-normal-DKlDBbgb.woff2) format("woff2"),url(/assets/spectral-latin-ext-600-normal-DnKmvInL.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Spectral;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/spectral-latin-600-normal-DE3OxvnQ.woff2) format("woff2"),url(/assets/spectral-latin-600-normal-DXnQJnYb.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-V-xxqcpd.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-9HEixskS.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-600-normal-CTOM6hUh.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-600-normal-fLZuRloM.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-vietnamese-600-normal-D2EvbN8M.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-600-normal-iLQfcSjf.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-ext-600-normal-D38SheWl.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-600-normal-DmB0ttJJ.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper: #0f1013;--paper-2: #15171c;--paper-3: #1b1e24;--ink: #e9e7e0;--dim: #b0afa7;--silver: #c9ced8;--silver-deep: #8f97a4;--on-plate: #14161b;--hair: rgba(233, 231, 224, .16);--hair-strong: rgba(233, 231, 224, .34);--ok: #86b893;--bad: #c9705f;--warn: #c4a35e;--radius: 3px;--pad: clamp(14px, 4vw, 30px);--tap: 54px;--display: "Cinzel", "Times New Roman", serif;--body: "Spectral", Georgia, "Times New Roman", serif;--mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace}@media(prefers-color-scheme:light){:root{--paper: #efece2;--paper-2: #f6f4ec;--paper-3: #e7e3d6;--ink: #23262b;--dim: #565851;--silver: #59626c;--silver-deep: #3a424b;--on-plate: #f4f3ee;--hair: rgba(35, 38, 43, .28);--hair-strong: rgba(35, 38, 43, .55);--ok: #3e7a4f;--bad: #a04432;--warn: #8a6a25}}*{box-sizing:border-box;margin:0;-webkit-tap-highlight-color:transparent}html,body{height:100%}body{background:var(--paper);color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;overscroll-behavior:none}@media(prefers-color-scheme:dark){body{background-image:radial-gradient(1000px 500px at 50% -220px,rgba(201,206,216,.07),transparent 70%)}}#app{max-width:760px;margin:0 auto;min-height:100dvh;padding:calc(env(safe-area-inset-top) + 10px) 10px calc(env(safe-area-inset-bottom) + 14px);display:flex;flex-direction:column}.view{position:relative;flex:1;display:flex;flex-direction:column;gap:26px;border:1px solid var(--hair-strong);padding:var(--pad);background:linear-gradient(180deg,var(--paper-2),var(--paper) 220px)}.view:before{content:"";position:absolute;inset:5px;border:1px solid var(--hair);pointer-events:none}.view>*{position:relative}.masthead{text-align:center;padding-top:8px}.wordmark{display:flex;align-items:center;gap:18px;font-family:var(--display);font-weight:700;font-size:clamp(26px,7vw,38px);letter-spacing:.22em;text-indent:.22em;justify-content:center;color:var(--ink)}.wordmark:before,.wordmark:after{content:"";flex:1;height:1px;background:var(--hair-strong);max-width:120px}.tagline{margin-top:10px;font-family:var(--mono);font-size:11.5px;letter-spacing:.28em;text-transform:uppercase;color:var(--dim)}.top{display:flex;align-items:center;gap:14px;min-height:44px}.brand{font-family:var(--display);font-weight:700;font-size:17px;letter-spacing:.16em;text-transform:uppercase}.top .spacer{flex:1}.hero{text-align:center;padding:4px 0 0}.hero .mark{display:inline-block;color:var(--silver);line-height:0}.hero .mark svg{animation:turn 240s linear infinite}@keyframes turn{to{transform:rotate(360deg)}}.hero .mark .bolt{position:absolute;inset:0;display:grid;place-items:center;animation:none}.hero .mark .bolt svg{width:34px;height:34px;animation:none}.medallion{position:relative;display:inline-block}.promise{margin:18px auto 0;font-size:clamp(18px,4.8vw,22px);font-style:italic;line-height:1.65;color:var(--ink)}.promise em{font-style:normal;font-weight:600}.fineline{margin-top:12px;font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--dim);text-transform:uppercase}.amount{font-family:var(--display);font-weight:700;font-size:clamp(46px,13vw,72px);line-height:1;letter-spacing:.02em;font-variant-numeric:lining-nums;text-align:center}.amount .unit{font-family:var(--mono);font-size:.24em;font-weight:500;letter-spacing:.3em;text-transform:uppercase;color:var(--dim);margin-left:10px;vertical-align:18%}.plate{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;min-height:var(--tap);background:linear-gradient(180deg,var(--silver),var(--silver-deep));color:var(--on-plate);border:none;border-radius:var(--radius);font-family:var(--mono);font-weight:600;font-size:clamp(15px,4.2vw,18px);letter-spacing:.04em;word-break:break-all;padding:14px 18px;box-shadow:inset 0 1px #ffffff59,inset 0 -1px #00000040,0 1px 0 var(--hair);cursor:pointer;transition:transform .06s ease}.plate:active{transform:translateY(1px)}.plate svg{width:20px;height:20px;flex:none}button{font:inherit;color:inherit;border:none;background:none;cursor:pointer;touch-action:manipulation}.btn{min-height:var(--tap);width:100%;padding:0 20px;border-radius:var(--radius);display:inline-flex;align-items:center;justify-content:center;gap:10px;font-family:var(--mono);font-size:14px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;text-indent:.18em;background:var(--paper-2);border:1px solid var(--hair-strong);color:var(--ink);transition:transform .06s ease,background .15s ease}.btn:active{transform:translateY(1px);background:var(--paper-3)}.btn svg{width:17px;height:17px;flex:none}.btn-silver{background:linear-gradient(180deg,var(--silver),var(--silver-deep));color:var(--on-plate);border:none;box-shadow:inset 0 1px #ffffff59,inset 0 -1px #00000040}.btn-ghost{background:none}.btn-icon{width:44px;min-height:44px;border-radius:var(--radius);display:inline-flex;align-items:center;justify-content:center;background:none;border:1px solid var(--hair-strong)}.btn-icon svg{width:18px;height:18px}.btn[disabled]{opacity:.4;pointer-events:none}.actions{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--hair-strong)}.tile{padding:26px 14px 22px;display:flex;flex-direction:column;align-items:center;gap:10px;background:var(--paper-2);transition:background .15s ease}.tile:first-child{border-right:1px solid var(--hair-strong)}.tile:active{background:var(--paper-3)}.tile svg{width:30px;height:30px;color:var(--silver);stroke-width:1.6}.tile b{font-family:var(--display);font-weight:700;font-size:15.5px;letter-spacing:.14em;text-transform:uppercase}.tile small{font-family:var(--body);color:var(--dim);font-size:15px;font-style:italic;text-align:center;line-height:1.5}.tile[disabled]{opacity:.45;pointer-events:none}.rubric{display:flex;align-items:center;gap:16px;font-family:var(--mono);font-size:11.5px;font-weight:600;letter-spacing:.3em;text-transform:uppercase;color:var(--dim);text-indent:.3em}.rubric:before,.rubric:after{content:"";flex:1;height:1px;background:var(--hair)}.grid2{display:grid;gap:26px}@media(min-width:700px){.grid2{grid-template-columns:1fr 1fr;gap:34px}}.card{display:flex;flex-direction:column}.card h3{font-family:var(--mono);font-size:11.5px;font-weight:600;letter-spacing:.3em;text-transform:uppercase;color:var(--dim);padding-bottom:10px;border-bottom:1px solid var(--hair-strong)}.kv{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:11px 0;border-bottom:1px solid var(--hair);font-size:16.5px}.kv span{color:var(--dim);font-style:italic;flex:none;font-size:15.5px}.kv b{font-weight:600;text-align:right}.kv code{font-family:var(--mono);font-size:11px;word-break:break-all;text-align:right;color:var(--ink);max-width:30ch}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--silver);margin-right:7px}.card .row{border-top:1px solid var(--hair);padding-top:12px;margin-top:2px}.steps{display:grid;gap:0;border:1px solid var(--hair)}@media(min-width:640px){.steps{grid-template-columns:repeat(3,1fr)}}.step{padding:20px 18px;display:flex;flex-direction:column;gap:8px}.step+.step{border-top:1px solid var(--hair)}@media(min-width:640px){.step+.step{border-top:none;border-left:1px solid var(--hair)}}.step .n{font-family:var(--display);font-weight:700;font-size:20px;color:var(--silver);letter-spacing:.1em}.step b{font-family:var(--display);font-size:15.5px;letter-spacing:.08em;text-transform:uppercase}.step p{color:var(--dim);font-size:15.5px;line-height:1.65}.field{display:flex;flex-direction:column;gap:8px}.field label{font-family:var(--mono);font-size:11.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--dim)}input,textarea{font-family:var(--mono);font-size:15px;color:var(--ink);background:var(--paper-2);border:1px solid var(--hair-strong);border-radius:var(--radius);padding:14px 16px;min-height:var(--tap);width:100%}textarea{min-height:108px;resize:vertical;word-break:break-all;line-height:1.6}input:focus,textarea:focus{outline:1px solid var(--silver);outline-offset:1px}.amount-input{display:flex;align-items:baseline;justify-content:center;gap:12px;border:none;border-top:1px solid var(--hair-strong);border-bottom:1px solid var(--hair-strong);padding:10px 12px;background:none}.amount-input input{background:none;border:none;padding:6px 0;min-height:0;width:auto;max-width:60%;font-family:var(--display);font-weight:700;font-size:clamp(40px,11vw,58px);text-align:center;letter-spacing:.02em}.amount-input input:focus{outline:none}.amount-input .unit{font-family:var(--mono);color:var(--dim);font-size:13px;letter-spacing:.3em;text-transform:uppercase}.presets{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--hair)}.presets button{min-height:46px;font-family:var(--mono);font-size:13px;font-weight:600;letter-spacing:.06em;background:var(--paper-2)}.presets button+button{border-left:1px solid var(--hair)}.presets button:active{background:var(--paper-3)}.qr{background:#fff;border-radius:2px;padding:14px;max-width:300px;margin:0 auto;width:100%;display:block;border:1px solid var(--hair-strong);box-shadow:0 0 0 5px #fff,0 0 0 6px var(--hair-strong)}.qr svg{display:block;width:100%;height:auto}a.qr{line-height:0}.covered{position:relative;max-width:300px;margin:6px auto;width:calc(100% - 12px)}.covered .qr{filter:blur(14px);transform:scale(.985)}.cover{position:absolute;inset:-6px;border-radius:2px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:color-mix(in srgb,var(--paper) 62%,transparent);border:1px dashed var(--hair-strong);color:var(--ink);font-family:var(--mono);font-size:12px;letter-spacing:.22em;text-transform:uppercase;cursor:pointer;text-align:center;padding:18px}.cover svg{width:30px;height:30px;color:var(--silver)}.cover small{font-family:var(--body);font-style:italic;letter-spacing:0;text-transform:none;color:var(--dim);font-size:13px;line-height:1.5}.banknote{position:relative;border:1px solid var(--hair-strong);background:var(--paper-2);padding:26px 18px 20px;overflow:hidden}.banknote:before{content:"";position:absolute;inset:5px;border:1px solid var(--hair);pointer-events:none}.banknote .lathe{position:absolute;left:0;right:0;bottom:6px;height:26px;color:var(--silver);opacity:.5;pointer-events:none}.banknote .lathe svg{width:100%;height:100%}.banknote .corner{position:absolute;font-family:var(--display);font-weight:700;font-size:19px;color:var(--silver)}.banknote .corner.tl{top:12px;left:16px}.banknote .corner.tr{top:12px;right:16px}.banknote .serial{text-align:center;font-family:var(--mono);font-size:10.5px;letter-spacing:.3em;color:var(--dim);text-transform:uppercase;margin-bottom:12px}.banknote .issuer{text-align:center;font-family:var(--mono);font-size:10px;letter-spacing:.3em;color:var(--dim);text-transform:uppercase;margin-top:16px}.nb{--nb-ink: #23262b;--nb-blue: #33597d;position:relative;container-type:inline-size;width:100%;background-color:#edeff0;background-size:100% 100%;background-repeat:no-repeat;border-radius:4px;box-shadow:0 22px 50px -24px #0009;color:var(--nb-ink);overflow:hidden}.nb--p{aspect-ratio:1024 / 1536;max-width:440px;margin:0 auto;background-image:url(/art/plate-p.webp)}.nb--l{aspect-ratio:1536 / 1024;background-image:url(/art/plate-l.webp)}.nb-specimen-pair .nb--l{display:none}@media(min-width:700px){.nb-specimen-pair .nb--l{display:block}.nb-specimen-pair .nb--p{display:none}}.nb-corner{position:absolute;z-index:2;transform:translate(-50%,-50%);font-family:var(--display);font-weight:700;letter-spacing:0}.nb--p .nb-corner.tl{left:16%;top:9.9%}.nb--p .nb-corner.tr{left:84%;top:9.9%}.nb--l .nb-corner.tl{left:11.1%;top:16.6%}.nb--l .nb-corner.tr{left:88.9%;top:16.6%}.nb-cartouche{position:absolute;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.nb--p .nb-cartouche{left:17%;right:17%;top:18%;height:21%;gap:1cqw}.nb--l .nb-cartouche{left:44%;right:15%;top:23.5%;height:52%;gap:1.1cqw}.nb-title{font-family:var(--display);font-weight:700;line-height:1.45;letter-spacing:.3em;text-indent:.3em}.nb--p .nb-title{font-size:2.15cqw;letter-spacing:.26em;text-indent:.26em}.nb--p .nb-title br{display:none}.nb--p .nb-title:after{content:""}.nb--l .nb-title{font-size:2cqw}.nb-words{font-family:var(--display);font-weight:700;line-height:1.08;letter-spacing:.03em;text-wrap:balance}.nb--p .nb-words{font-size:7.2cqw;margin-top:.6cqw}.nb--p .nb-words.long{font-size:5.6cqw}.nb--l .nb-words{font-size:5.4cqw}.nb--l .nb-words.long{font-size:4cqw}.nb-sats{font-family:var(--display);font-weight:400;letter-spacing:.55em;text-indent:.55em}.nb--p .nb-sats{font-size:3cqw}.nb--l .nb-sats{font-size:2.4cqw}.nb-promise{font-family:var(--body);font-style:italic;font-weight:500;line-height:1.5}.nb--p .nb-promise{font-size:2.9cqw;margin-top:.6cqw}.nb--l .nb-promise{font-size:2.2cqw}.nb-foot{font-family:var(--mono);font-weight:600;letter-spacing:.2em;line-height:1.9}.nb--l .nb-cartouche .nb-foot{font-size:1.25cqw;margin-top:.8cqw;letter-spacing:.14em}.nb-panel{position:absolute;z-index:2;left:30%;top:53.4%;width:40.5%;aspect-ratio:1}.nb-panel .covered{position:absolute;inset:2%}.nb-panel--captioned .covered{inset:2.5% 2.5% 15%;display:flex;justify-content:center}.nb-panel--captioned .qr{height:100%;width:auto;aspect-ratio:1}.nb-panelfoot{position:absolute;left:3%;right:3%;bottom:2.6%;font-family:var(--mono);font-weight:600;font-size:1.45cqw;letter-spacing:.1em;line-height:1.6;text-align:center;color:var(--nb-ink)}.nb-panelfoot span{white-space:nowrap}.nb-panel .covered{max-width:none;width:auto;margin:0}.nb-qr{width:100%;height:100%;padding:4%;border:none;box-shadow:none;background:#fff;border-radius:2px;max-width:none}.nb .cover{inset:0;background:#edeff0c7;color:var(--nb-ink);border-color:#23262b59;padding:8%;gap:5%}.nb .cover span{font-size:3.2cqw}.nb .cover small{color:var(--nb-ink);opacity:.75;font-size:2.6cqw}.nb-foot--panel{position:absolute;inset:6%;display:flex;align-items:center;justify-content:center;text-align:center;font-size:2.7cqw;color:var(--nb-ink)}.nb-serial{text-align:center;font-family:var(--mono);font-weight:600;color:var(--nb-blue);letter-spacing:.18em;white-space:nowrap}.nb--p .nb-serial{font-size:2.2cqw;margin-top:.6cqw;letter-spacing:.14em}.nb--l .nb-serial{font-size:1.45cqw;margin-top:.8cqw}.nb-seal{position:absolute;z-index:2;right:5%;top:84%;width:15cqw;height:auto;color:var(--nb-blue);opacity:.8;transform:rotate(8deg);pointer-events:none}.nb-overstamp{position:absolute;z-index:1;inset:0;display:grid;place-items:center;pointer-events:none;font-family:var(--display);font-weight:700;white-space:nowrap;letter-spacing:.2em;text-indent:.2em;color:var(--nb-blue);opacity:.3;transform:rotate(-14deg)}.nb--p .nb-overstamp{inset:9% 0 auto;height:36%;font-size:9.5cqw}.nb--l .nb-overstamp{font-size:7.5cqw}.nb .covered .qr{filter:none;transform:none}.scratch-foil{position:absolute;inset:0;z-index:3;border-radius:2px;touch-action:none;cursor:pointer;display:block;width:100%;height:100%;background:linear-gradient(135deg,#cfd4db,#eef1f5 25%,#a7b0bc 45%,#dfe3e9 60%,#98a1ad 80%,#d5dae1)}.scratch-foil:focus-visible{outline:2px solid var(--nb-blue);outline-offset:2px}.foil-flake{position:absolute;z-index:4;width:7px;height:7px;pointer-events:none;background:linear-gradient(135deg,#e9ecf0,#99a2ae);border-radius:1px;box-shadow:0 0 2px #00000040}.glint:after{content:"";position:absolute;inset:-20%;z-index:6;pointer-events:none;background:linear-gradient(105deg,transparent 42%,rgba(255,255,255,.55) 50%,transparent 58%);transform:translate(-130%);animation:glint 1.15s ease-out forwards}@keyframes glint{to{transform:translate(130%)}}.nb .spark{background:var(--nb-blue)}.badges{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.badge{display:inline-flex;align-items:center;gap:8px;padding:7px 14px;font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;border:1px solid var(--hair-strong);border-radius:2px;color:var(--dim);background:var(--paper-2)}.badge svg{width:13px;height:13px}.badge.good{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 45%,transparent)}.badge.bad{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 45%,transparent)}.badge.wait{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 45%,transparent)}.stamp{display:inline-block;transform:rotate(-6deg);font-family:var(--display);font-weight:700;font-size:clamp(20px,6vw,26px);letter-spacing:.24em;text-transform:uppercase;text-indent:.24em;padding:10px 22px 8px;border:3px double currentColor;border-radius:4px}.result{border:1px solid var(--hair-strong);background:var(--paper-2);padding:30px 22px 24px;text-align:center;display:flex;flex-direction:column;gap:16px;align-items:center}.result.good .stamp{color:var(--ok)}.result.bad .stamp{color:var(--bad)}.result.wait .stamp{color:var(--warn)}.result b{font-family:var(--display);font-size:20px;letter-spacing:.06em}.result p{color:var(--dim);font-size:16px;line-height:1.7}.result svg{display:none}.warn{color:var(--dim);font-size:16px;font-style:italic;line-height:1.7;text-align:center}.warn strong{color:var(--warn);font-weight:600;font-style:normal}.pulse{animation:pulse 1.8s ease-in-out infinite}@keyframes pulse{50%{opacity:.45}}.mono{font-family:var(--mono);font-size:11.5px;color:var(--dim);word-break:break-all;border:1px solid var(--hair);border-radius:2px;padding:12px 14px;background:var(--paper-2);text-align:left;line-height:1.7}footer{margin-top:auto;display:flex;flex-direction:column;gap:16px;text-align:center;padding-top:8px}.microprint{overflow:hidden;white-space:nowrap;-webkit-user-select:none;user-select:none;font-family:var(--mono);font-size:6.5px;letter-spacing:.34em;color:var(--dim);opacity:.55;border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);padding:3px 0}.luds{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.luds a{color:var(--dim);text-decoration:none;font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.14em;padding:5px 10px;border:1px solid var(--hair);border-radius:2px}.luds a:hover{color:var(--silver);border-color:var(--silver)}footer p{color:var(--dim);font-size:14px;font-style:italic;line-height:1.85}footer a{color:inherit;text-decoration-color:var(--hair-strong);text-underline-offset:3px}footer a:hover{color:var(--silver)}.stack{display:flex;flex-direction:column;gap:16px}.center{text-align:center}.row{display:flex;gap:12px}.row>*{flex:1}#toasts{position:fixed;left:0;right:0;bottom:calc(env(safe-area-inset-bottom) + 18px);display:flex;flex-direction:column;align-items:center;gap:10px;pointer-events:none;z-index:40}.toast{background:var(--paper-3);color:var(--ink);border:1px solid var(--hair-strong);border-radius:2px;padding:14px 20px;font-size:16px;max-width:min(520px,92vw);box-shadow:0 12px 40px -12px #00000080}.toast.err{border-color:color-mix(in srgb,var(--bad) 55%,transparent);color:var(--bad)}.toast.ok{border-color:color-mix(in srgb,var(--silver) 60%,transparent)}.spark{position:absolute;width:7px;height:7px;border-radius:50%;background:var(--silver);pointer-events:none}.burst-host{position:relative}.skel{color:transparent!important;background:linear-gradient(90deg,var(--paper-2),var(--paper-3),var(--paper-2));background-size:200% 100%;animation:skel 1.2s linear infinite;-webkit-user-select:none;user-select:none}@keyframes skel{to{background-position:-200% 0}}
@@ -0,0 +1,130 @@
1
+ (function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();const gt=typeof window<"u",sr=gt?window:null,sn=gt?document:null,de={OBJECT:0,ATTRIBUTE:1,CSS:2,TRANSFORM:3,CSS_VAR:4},z={NUMBER:0,UNIT:1,COLOR:2,COMPLEX:3},ze={NONE:0,AUTO:1,FORCE:2},ke={replace:0,none:1,blend:2},ds=Symbol(),Vt=Symbol(),eo=Symbol(),Vn=Symbol(),to=Symbol(),ne=1e-11,yr=1e12,_t=1e3,vr=240,Tt="",Bi="var(",mn=[],no=(()=>{const t=new Map;return t.set("x","translateX"),t.set("y","translateY"),t.set("z","translateZ"),t})(),Cn=["perspective","translateX","translateY","translateZ","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY"],$i=Cn.reduce((t,e)=>({...t,[e]:e+"("}),{}),He=()=>{},Ni=t=>t,Ci=/\)\s*[-.\d]/,Li=/(^#([\da-f]{3}){1,2}$)|(^#([\da-f]{4}){1,2}$)/i,Ii=/rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i,Mi=/rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(-?\d+|-?\d*.\d+)\s*\)/i,ki=/hsl\(\s*(-?\d+|-?\d*.\d+)\s*,\s*(-?\d+|-?\d*.\d+)%\s*,\s*(-?\d+|-?\d*.\d+)%\s*\)/i,Oi=/hsla\(\s*(-?\d+|-?\d*.\d+)\s*,\s*(-?\d+|-?\d*.\d+)%\s*,\s*(-?\d+|-?\d*.\d+)%\s*,\s*(-?\d+|-?\d*.\d+)\s*\)/i,fs=/[-+]?\d*\.?\d+(?:e[-+]?\d)?/gi,ro=/^([-+]?\d*\.?\d+(?:e[-+]?\d+)?)([a-z]+|%)$/i,Ui=/([a-z])([A-Z])/g,Pi=/(\*=|\+=|-=)/,Fi=/var\(\s*(--[\w-]+)(?:\s*,\s*([^)]+))?\s*\)/;const Ln={id:null,keyframes:null,playbackEase:null,playbackRate:1,frameRate:vr,loop:0,reversed:!1,alternate:!1,autoplay:!0,persist:!1,duration:_t,delay:0,loopDelay:0,ease:"out(2)",composition:ke.replace,modifier:Ni,onBegin:He,onBeforeUpdate:He,onUpdate:He,onLoop:He,onPause:He,onComplete:He,onRender:He},Di={root:sn},Ae={defaults:Ln,precision:4,timeScale:1,tickThreshold:200},so={version:"4.5.0",engine:null};gt&&(sr.AnimeJS||(sr.AnimeJS=[]),sr.AnimeJS.push(so));const oo=t=>t.replace(Ui,"$1-$2").toLowerCase(),st=(t,e)=>t.indexOf(e)===0,Yt=Date.now,ot=Array.isArray,or=t=>t&&t.constructor===Object,et=t=>typeof t=="number"&&!isNaN(t),xt=t=>typeof t=="string",ht=t=>typeof t=="function",Y=t=>typeof t>"u",Dt=t=>Y(t)||t===null,io=t=>gt&&t instanceof SVGElement,ao=t=>Li.test(t),co=t=>st(t,"rgb"),lo=t=>st(t,"hsl"),qi=t=>ao(t)||(co(t)||lo(t))&&(t[t.length-1]===")"||!Ci.test(t)),xn=t=>!Ae.defaults.hasOwnProperty(t),Hi=["opacity","rotate","overflow","color"],zi=(t,e)=>{if(Hi.includes(e))return!1;if(t.getAttribute(e)||e in t){if(e==="scale"){const n=t.parentNode;return n&&n.tagName==="filter"}return!0}},ir=t=>xt(t)?parseFloat(t):t,kt=Math.pow,on=Math.sqrt,Vi=Math.sin,Yi=Math.cos,gn=Math.abs,Qt=Math.floor,Wi=Math.asin,Fr=Math.PI,hs=Math.round,Ze=(t,e,n)=>t<e?e:t>n?n:t,ie=(t,e)=>{if(e<0)return t;if(!e)return hs(t);const n=10**e;return hs(t*n)/n},Rn=(t,e,n)=>n===1?e:n===0?t:t+(e-t)*n,Dr=t=>t===1/0?yr:t===-1/0?-yr:t,tn=t=>t<=ne?ne:Dr(ie(t,11)),Ne=t=>ot(t)?[...t]:t,Zi=(t,e)=>{const n={...t};for(let r in e){const s=t[r];n[r]=Y(s)?e[r]:s}return n},ve=(t,e,n,r="_prev",s="_next")=>{let o=t._head,i=s;for(n&&(o=t._tail,i=r);o;){const c=o[i];e(o),o=c}},en=(t,e,n="_prev",r="_next")=>{const s=e[n],o=e[r];s?s[r]=o:t._head=o,o?o[n]=s:t._tail=s,e[n]=null,e[r]=null},Ft=(t,e,n,r="_prev",s="_next")=>{let o=t._tail;for(;o&&n&&n(o,e);)o=o[r];const i=o?o[s]:t._head;o?o[s]=e:t._head=e,i?i[r]=e:t._tail=e,e[r]=o,e[s]=i};const ji=(t,e,n)=>{const r=t.style.transform;if(r){const s=t[Vn];let o=0;const i=r.length;let c;for(;o<i;){for(;o<i&&r.charCodeAt(o)===32;)o++;if(o>=i)break;const l=o;for(;o<i&&r.charCodeAt(o)!==40;)o++;if(o>=i)break;const u=r.substring(l,o);let d=1;const f=o+1;let h=-1,g=-1;for(o++;o<i&&d>0;){const E=r.charCodeAt(o);E===40?d++:E===41?d--:E===44&&d===1&&(h===-1?h=o:g===-1&&(g=o)),o++}const b=o-1;u==="translate"||u==="translate3d"?(h===-1?s.translateX=r.substring(f,b).trim():(s.translateX=r.substring(f,h).trim(),g===-1?s.translateY=r.substring(h+1,b).trim():(s.translateY=r.substring(h+1,g).trim(),s.translateZ=r.substring(g+1,b).trim())),c=r.substring(f,b)):u==="scale"||u==="scale3d"?h===-1?s.scale=r.substring(f,b).trim():(s.scaleX=r.substring(f,h).trim(),g===-1?s.scaleY=r.substring(h+1,b).trim():(s.scaleY=r.substring(h+1,g).trim(),s.scaleZ=r.substring(g+1,b).trim())):s[u]=r.substring(f,b)}if(e==="translate3d"&&c)return n&&(n[e]=c),c;const a=s[e];if(!Y(a))return n&&(n[e]=a),a}return e==="translate3d"?"0px, 0px, 0px":e==="rotate3d"?"0, 0, 0, 0deg":st(e,"scale")?"1":st(e,"rotate")||st(e,"skew")?"0deg":"0px"},uo=t=>{let e=Tt;for(let n=0,r=Cn.length;n<r;n++){const s=Cn[n],o=t[s];if(o!==void 0){if(s==="translateX"){const i=t.translateY;if(i!==void 0){const c=t.translateZ;c!==void 0?(e+=`translate3d(${o},${i},${c}) `,n+=2):(e+=`translate(${o},${i}) `,n+=1);continue}}if(s==="scaleX"&&t.scale===void 0){const i=t.scaleY;if(i!==void 0){const c=t.scaleZ;c!==void 0?(e+=`scale3d(${o},${i},${c}) `,n+=2):(e+=`scale(${o},${i}) `,n+=1);continue}}e+=`${$i[s]}${o}) `}s==="rotateZ"&&t.rotate3d!==void 0&&(e+=`rotate3d(${t.rotate3d}) `)}return t.matrix!==void 0&&(e+=`matrix(${t.matrix}) `),t.matrix3d!==void 0&&(e+=`matrix3d(${t.matrix3d}) `),e};const ar=[];function fo(t,e){if(!t)return null;const n=ar.length;e:for(let r=0;r<n;r++){const s=ar[r];if(s.detect&&!s.detect(t))continue;const o=s.targetAdapters;for(let i=0,c=o.length;i<c;i++){const a=o[i];if(a.detect(t)){const l=a.props[e];if(l&&(!l.gate||l.gate(t)))return l;break e}}}for(let r=0;r<n;r++){const s=ar[r];if(s.detect&&!s.detect(t))continue;const o=s.propertyResolvers;for(let i=0,c=o.length;i<c;i++){const a=o[i](t,e);if(a)return a}}return null}const Xi=t=>{const e=Ii.exec(t)||Mi.exec(t),n=Y(e[4])?1:+e[4];return[+e[1],+e[2],+e[3],n]},Gi=t=>{const e=t.length,n=e===4||e===5;return[+("0x"+t[1]+t[n?1:2]),+("0x"+t[n?2:3]+t[n?2:4]),+("0x"+t[n?3:5]+t[n?3:6]),e===5||e===9?+(+("0x"+t[n?4:7]+t[n?4:8])/255).toFixed(3):1]},cr=(t,e,n)=>(n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+(e-t)*6*n:n<1/2?e:n<2/3?t+(e-t)*(2/3-n)*6:t),Ki=t=>{const e=ki.exec(t)||Oi.exec(t),n=+e[1]/360,r=+e[2]/100,s=+e[3]/100,o=Y(e[4])?1:+e[4];let i,c,a;if(r===0)i=c=a=s;else{const l=s<.5?s*(1+r):s+r-s*r,u=2*s-l;i=ie(cr(u,l,n+1/3)*255,0),c=ie(cr(u,l,n)*255,0),a=ie(cr(u,l,n-1/3)*255,0)}return[i,c,a,o]},Ji=t=>co(t)?Xi(t):ao(t)?Gi(t):lo(t)?Ki(t):[0,0,0,1];const Be=(t,e)=>Y(t)?e:t,ps=(t,e)=>{const n=t.match(Fi),r=e[Vt]?e:document.documentElement;let s=getComputedStyle(r)?.getPropertyValue(n[1]);return(!s||s.trim()===Tt)&&n[2]&&(s=n[2].trim()),s||0},Je=(t,e,n,r,s,o)=>{if(ht(t)){if(!s){const c=t(e,n,r,o);return isNaN(+c)?c||0:+c}const i=()=>{const c=t(e,n,r,o);return isNaN(+c)?c||0:+c};return s.func=i,i()}if(xt(t)&&st(t,Bi)){if(!s)return ps(t,e);const i=()=>ps(t,e);return s.func=i,i()}return t},ho=(t,e)=>t[Vt]?t[eo]&&zi(t,e)?de.ATTRIBUTE:Cn.includes(e)||no.get(e)?de.TRANSFORM:st(e,"--")?de.CSS_VAR:e in t.style?de.CSS:e in t?de.OBJECT:de.ATTRIBUTE:de.OBJECT,ms=(t,e,n)=>{const r=t.style[e];r&&n&&(n[e]=r);const s=r||getComputedStyle(t[to]||t).getPropertyValue(e);return s==="auto"?"0":s},Ot=(t,e,n,r)=>{const s=Y(n)?ho(t,e):n,o=fo(t,e);if(o){const i=o.get(t);return i&&r&&(r[e]=i),i??0}if(s===de.OBJECT){const i=t[e];return i&&r&&(r[e]=i),i||0}if(s===de.ATTRIBUTE){const i=t.getAttribute(e);return i&&r&&(r[e]=i),i}return s===de.TRANSFORM?ji(t,e,r):s===de.CSS_VAR?ms(t,e,r).trimStart():ms(t,e,r)},Sn=(t,e,n)=>n==="-"?t-e:n==="+"?t+e:t*e,qr=()=>({t:z.NUMBER,n:0,u:null,o:null,d:null,s:null}),qe=(t,e)=>{if(e.t=z.NUMBER,e.n=0,e.u=null,e.o=null,e.d=null,e.s=null,!t)return e;const n=+t;if(!isNaN(n))return e.n=n,e;let r=t;r[1]==="="&&(e.o=r[0],r=r.slice(2));const s=r.includes(" ")?!1:ro.exec(r);if(s)return e.t=z.UNIT,e.n=+s[1],e.u=s[2],e;if(e.o)return e.n=+r,e;if(qi(r))return e.t=z.COLOR,e.d=Ji(r),e;{const o=r.match(fs);return e.t=z.COMPLEX,e.d=o?o.map(Number):[],e.s=r.split(fs)||[],e}},gs=(t,e)=>(e.t=t._valueType,e.n=t._toNumber,e.u=t._unit,e.o=null,e.d=Ne(t._toNumbers),e.s=Ne(t._strings),e),We=qr(),po=(t,e,n)=>{const r=t._modifier,s=t._fromNumbers,o=t._toNumbers,i=t._strings;let c=i[0];for(let a=0,l=o.length;a<l;a++){const u=r(ie(Rn(s[a],o[a],e),n)),d=i[a+1];c+=`${d?u+d:u}`,t._numbers[a]=u}return c};const An=(t,e,n,r,s)=>{const o=t.parent,i=t.duration,c=t.completed,a=t.iterationDuration,l=t.iterationCount,u=t._currentIteration,d=t._loopDelay,f=t._reversed,h=t._alternate,g=t._hasChildren,b=t._delay,E=t._currentTime,A=b+a,$=e-b,K=Ze(E,-b,i),X=Ze($,-b,i),Q=$-E,q=X>0,fe=X>=i,we=i<=ne,Se=s===ze.FORCE;let ee=0,ye=$,k=0;if(l>1){const _=a+(fe?0:d),T=~~(X/_);t._currentIteration=Ze(T,0,l),fe&&t._currentIteration--,ee=t._currentIteration%2,ye=X-T*_||0}const Ie=f^(h&&ee),le=t._ease;let B=fe?Ie?0:i:Ie?a-ye:ye;le&&(B=a*le(B/a)||0);const y=(o?o.backwards:$<E)?!Ie:!!Ie;if(t._currentTime=$,t._iterationTime=B,t.backwards=y,q&&!t.began?(t.began=!0,!n&&!(o&&(y||!o.began))&&t.onBegin(t)):$<=0&&(t.began=!1),!n&&!g&&q&&t._currentIteration!==u&&t.onLoop(t),Se||s===ze.AUTO&&(e>=(o&&b>0?0:b)&&e<=A||e<=b&&K>b||e>=A&&K!==i)||B>=A&&K!==i||B<=b&&K>0&&!fe||e<=K&&K===i&&c||fe&&!c&&we){if(q&&(t.computeDeltaTime(K),n||t.onBeforeUpdate(t)),!g){const _=Se||(y?Q*-1:Q)>=Ae.tickThreshold,T=ie(t._offset+(o?o._offset:0)+b+B,12);let m=t._head,w,p,v,x,N=0;for(;m;){const S=m._composition,R=m._currentTime,M=m._changeDuration,F=m._absoluteStartTime+m._changeDuration,L=m._nextRep,U=m._prevRep,V=S!==ke.none,C=U?U._absoluteStartTime+U._changeDuration:0,H=U&&U.parent!==m.parent,ce=!L||L._isOverridden?F:L.parent===m.parent?F+L._delay:L._absoluteStartTime<L._absoluteUpdateStartTime?L._absoluteStartTime:L._absoluteUpdateStartTime;if((_||(R!==M||T<=ce||U&&!H&&(!L||L.parent!==m.parent))&&(R!==0||T>=m._absoluteStartTime||H&&!m._hasFromValue&&!U._isOverridden&&T>=C||L&&!L._isOverridden&&L.parent===m.parent&&L._currentTime!==0&&B<L._startTime))&&(!U||H||B>=m._startTime)&&(!V||!m._isOverridden&&(!m._isOverlapped||T<=F)&&(!L||L._isOverridden||T<=ce)&&(!U||U._isOverridden||(H?T>=m._absoluteStartTime||!m._hasFromValue&&T>=C:T>=C+m._delay)))){const re=m._currentTime=Ze(B-m._startTime,0,M),P=m._ease(re/m._updateDuration),se=m._modifier,he=m._valueType,oe=m._tweenType,$e=oe===de.OBJECT,ue=he===z.NUMBER,me=ue&&$e||P===0||P===1?-1:Ae.precision;let D,ae;if(ue)D=ae=se(ie(Rn(m._fromNumber,m._toNumber,P),me));else if(he===z.UNIT)ae=se(ie(Rn(m._fromNumber,m._toNumber,P),me)),D=`${ae}${m._unit}`;else if(he===z.COLOR){const G=m._numbers,pe=m._fromNumbers,j=m._toNumbers,_e=1-P,ge=pe[0],it=pe[1],Ye=pe[2],Ct=j[0],bt=j[1],Xt=j[2];G[0]=se(Math.sqrt(ge*ge*_e+Ct*Ct*P)),G[1]=se(Math.sqrt(it*it*_e+bt*bt*P)),G[2]=se(Math.sqrt(Ye*Ye*_e+Xt*Xt*P)),G[3]=se(Rn(pe[3],j[3],P)),(!m._setter||r)&&(D=`rgba(${ie(G[0],0)},${ie(G[1],0)},${ie(G[2],0)},${G[3]})`)}else he===z.COMPLEX&&(D=po(m,P,me));if(V&&(m._number=ae),!r&&S!==ke.blend){const G=m.property;w=m.target,m._setter?m._setter(w,ae,m):$e?w[G]=D:oe===de.ATTRIBUTE?w.setAttribute(G,D):(p=w.style,oe===de.TRANSFORM?(w!==v&&(v=w,x=w[Vn]),x[G]=D,N=1):oe===de.CSS?p[G]=D:oe===de.CSS_VAR&&p.setProperty(G,D)),q&&(k=1)}else m._value=D}else R&&U&&!H&&B<m._startTime&&(m._currentTime=0);N&&m._renderTransforms&&(p.transform=uo(x),N=0),m=m._next}!n&&k&&t.onRender(t)}!n&&q&&t.onUpdate(t)}return o&&we?!n&&(o.began&&!y&&$>0&&!c||y&&$<=ne&&c)&&(t.onComplete(t),t.completed=!y):q&&fe?l===1/0?t._startTime+=t.duration:t._currentIteration>=l-1&&(t.paused=!0,!c&&!g&&(t.completed=!0,!n&&!(o&&(y||!o.began))&&(t.onComplete(t),t._resolve(t)))):t.completed=!1,k},Ut=(t,e,n,r,s)=>{const o=t._currentIteration;if(An(t,e,n,r,s),t._hasChildren){const i=t,c=i.backwards,a=r?e:i._iterationTime,l=Yt();let u=0,d=!0;if(!r&&i._currentIteration!==o){const f=i.iterationDuration;ve(i,h=>{if(!c)!h.completed&&!h.backwards&&h._currentTime<h.iterationDuration&&An(h,f,n,1,ze.FORCE),h.began=!1,h.completed=!1;else{const g=h.duration,b=h._offset+h._delay,E=b+g;!n&&g<=ne&&(!b||E===f)&&h.onComplete(h)}}),n||i.onLoop(i)}ve(i,f=>{const h=ie((a-f._offset)*f._speed,12);if(c&&h>f._delay+f.duration)return;const g=f._fps<i._fps?f.requestTick(l):s;u+=An(f,h,n,r,g),!f.completed&&d&&(d=!1)},c),!n&&u&&i.onRender(i),(d||c)&&i._currentTime>=i.duration&&(i.paused=!0,i.completed||(i.completed=!0,n||(i.onComplete(i),i._resolve(i))))}};const bs={},Qi=(t,e,n)=>{if(n===de.TRANSFORM){const r=no.get(t);return r||t}else if(n===de.CSS||n===de.ATTRIBUTE&&io(e)&&t in e.style){const r=bs[t];if(r)return r;{const s=t&&oo(t);return bs[t]=s,s}}else return t},mo=(t,e=!1)=>{if(t._hasChildren)ve(t,n=>mo(n,e),!0);else{const n=t;n.pause(),ve(n,r=>{const s=r.property,o=r.target,i=r._tweenType,c=r._inlineValue,a=Dt(c)||c===Tt;if(r._setter){if(!e&&!a){if(qe(c,We),We.d){const l=We.d,u=r._numbers;for(let d=0,f=l.length;d<f;d++)u[d]=l[d]}else r._number=We.n;r._setter(r.target,r._number,r)}}else if(i===de.OBJECT)!e&&!a&&(o[s]=c);else if(o[Vt])if(i===de.ATTRIBUTE)e||(a?o.removeAttribute(s):o.setAttribute(s,c));else{const l=o.style;if(i===de.TRANSFORM){const u=o[Vn];a?delete u[s]:u[s]=c,r._renderTransforms&&(Object.keys(u).length?l.transform=uo(u):l.removeProperty("transform"))}else a?l.removeProperty(oo(s)):l[s]=c}o[Vt]&&n._tail===r&&n.targets.forEach(l=>{l.getAttribute&&l.getAttribute("style")===Tt&&l.removeAttribute("style")})})}return t};class go{constructor(e=0){this.deltaTime=0,this._currentTime=e,this._lastTickTime=e,this._startTime=e,this._lastTime=e,this._frameDuration=_t/vr,this._fps=vr,this._speed=1,this._hasChildren=!1,this._head=null,this._tail=null}get fps(){return this._fps}set fps(e){const n=+e,r=n<ne?ne:n,s=_t/r;r>Ln.frameRate&&(Ln.frameRate=r),this._fps=r,this._frameDuration=s}get speed(){return this._speed}set speed(e){const n=+e;this._speed=n<ne?ne:n}requestTick(e){const n=this._frameDuration,r=e-this._lastTickTime,s=n*.25,o=s<4?s:4;return r+o<n?ze.NONE:(this._lastTickTime=r>=n?e-r%n:e,ze.AUTO)}computeDeltaTime(e){const n=e-this._lastTime;return this.deltaTime=n,this._lastTime=e,n}}const qt={animation:null,update:He},ea=t=>{let e=qt.animation;return e||(e={duration:ne,computeDeltaTime:He,_offset:0,_delay:0,_head:null,_tail:null},qt.animation=e,qt.update=()=>{t.forEach(n=>{for(let r in n){const s=n[r],o=s._head;if(o){const i=o._valueType,c=i===z.COMPLEX||i===z.COLOR?Ne(o._fromNumbers):null;let a=o._fromNumber,l=s._tail;for(;l&&l!==o;){if(c)for(let u=0,d=l._numbers.length;u<d;u++)c[u]+=l._numbers[u];else a+=l._number;l=l._prevAdd}o._toNumber=a,o._toNumbers=c}}}),An(e,1,1,0,ze.FORCE)}),e};const bo=gt?requestAnimationFrame:setImmediate,ta=gt?cancelAnimationFrame:clearImmediate;class na extends go{constructor(e){super(e),this.useDefaultMainLoop=!0,this.pauseOnDocumentHidden=!0,this.defaults=Ln,this.paused=!0,this.reqId=0}update(){const e=this._currentTime=Yt();if(this.requestTick(e)){this.computeDeltaTime(e);const n=this._speed,r=this._fps;let s=this._head;for(;s;){const o=s._next;s.paused?(en(this,s),this._hasChildren=!!this._tail,s._running=!1,s.completed&&!s._cancelled&&s.cancel()):Ut(s,(e-s._startTime)*s._speed*n,0,0,s._fps<r?s.requestTick(e):ze.AUTO),s=o}qt.update()}}wake(){return this.useDefaultMainLoop&&!this.reqId&&(this.requestTick(Yt()),this.reqId=bo(wo)),this}pause(){if(this.reqId)return this.paused=!0,ra()}resume(){if(this.paused)return this.paused=!1,ve(this,e=>e.resetTime()),this.wake()}get speed(){return this._speed*(Ae.timeScale===1?1:_t)}set speed(e){const n=e*Ae.timeScale;this._speed!==n&&(this._speed=n,ve(this,r=>r.speed=r._speed))}get timeUnit(){return Ae.timeScale===1?"ms":"s"}set timeUnit(e){const r=e==="s",s=r?.001:1;if(Ae.timeScale!==s){Ae.timeScale=s,Ae.tickThreshold=200*s;const o=r?.001:_t;this.defaults.duration*=o,this._speed*=o}}get precision(){return Ae.precision}set precision(e){Ae.precision=e}}const Ce=(()=>{const t=new na(Yt());return gt&&(so.engine=t,sn.addEventListener("visibilitychange",()=>{t.pauseOnDocumentHidden&&(sn.hidden?t.pause():t.resume())})),t})(),wo=()=>{Ce._head?(Ce.reqId=bo(wo),Ce.update()):Ce.reqId=0},ra=()=>(ta(Ce.reqId),Ce.reqId=0,Ce);const In={_rep:new WeakMap,_add:new Map},Hr=(t,e,n="_rep")=>{const r=In[n];let s=r.get(t);return s||(s={},r.set(t,s)),s[e]?s[e]:s[e]={_head:null,_tail:null}},sa=(t,e)=>t._isOverridden||t._absoluteStartTime>e._absoluteStartTime,Bn=t=>{t._isOverlapped=1,t._isOverridden=1,t._changeDuration=ne,t._currentTime=ne},yo=(t,e)=>{const n=t._composition;if(n===ke.replace){const r=t._absoluteStartTime;Ft(e,t,sa,"_prevRep","_nextRep");const s=t._prevRep;if(s){const o=s.parent,i=s._absoluteEndTime;if(t.parent.id!==o.id&&o.iterationCount>1&&i+(o.duration-o.iterationDuration)>r){Bn(s);let l=s._prevRep;for(;l&&l.parent.id===o.id;)Bn(l),l=l._prevRep}const c=t._absoluteUpdateStartTime;if(i>c){const l=s._startTime,u=i-(l+s._updateDuration),d=ie(c-u-l,12);s._changeDuration=d,s._currentTime=d,s._isOverlapped=1,d<ne&&Bn(s)}const a=t.parent.parent;if(!a||a!==o.parent){let l=!0;if(ve(o,u=>{u._isOverlapped||(l=!1)}),l){const u=o.parent;if(u){let d=!0;ve(u,f=>{f!==o&&ve(f,h=>{h._isOverlapped||(d=!1)})}),d&&u.cancel()}else o.cancel()}}}}else if(n===ke.blend){const r=Hr(t.target,t.property,"_add"),s=ea(In._add);let o=r._head;o||(o={...t},o._composition=ke.replace,o._updateDuration=ne,o._startTime=0,o._numbers=Ne(t._fromNumbers),o._number=0,o._next=null,o._prev=null,Ft(r,o),Ft(s,o));const i=t._toNumber;if(t._fromNumber=o._fromNumber-i,t._toNumber=0,t._numbers=Ne(t._fromNumbers),t._number=0,o._fromNumber=i,t._toNumbers.length){const c=Ne(t._toNumbers);c.forEach((a,l)=>{t._fromNumbers[l]=o._fromNumbers[l]-a,t._toNumbers[l]=0}),o._fromNumbers=c}Ft(r,t,null,"_prevAdd","_nextAdd")}return t},oa=t=>{const e=t._composition;if(e!==ke.none){const n=t.target,r=t.property,i=In._rep.get(n)[r];if(en(i,t,"_prevRep","_nextRep"),e===ke.blend){const c=In._add,a=c.get(n);if(!a)return;const l=a[r],u=qt.animation;en(l,t,"_prevAdd","_nextAdd");const d=l._head;if(d&&d===l._tail){en(l,d,"_prevAdd","_nextAdd"),en(u,d);let f=!0;for(let h in a)if(a[h]._head){f=!1;break}f&&c.delete(n)}}}return t};const ws=t=>(t.paused=!0,t.began=!1,t.completed=!1,t),Er=t=>(t._cancelled&&(t._hasChildren?ve(t,Er):ve(t,e=>{e._composition!==ke.none&&yo(e,Hr(e.target,e.property))}),t._cancelled=0),t);let ys=0;const ia=(t,e)=>t._priority>e._priority;class aa extends go{constructor(e={},n=null,r=0){super(0),++ys;const{id:s,delay:o,duration:i,reversed:c,alternate:a,loop:l,loopDelay:u,autoplay:d,frameRate:f,playbackRate:h,priority:g,onComplete:b,onLoop:E,onPause:A,onBegin:$,onBeforeUpdate:K,onUpdate:X}=e,Q=n?0:Ce._lastTickTime,q=n?n.defaults:Ae.defaults,fe=ht(o)||Y(o)?q.delay:+o,we=ht(i)||Y(i)?1/0:+i,Se=Be(l,q.loop),ee=Be(u,q.loopDelay);let ye=Se===!0||Se===1/0||Se<0?1/0:Se+1,k=0;n?k=r:(Ce.reqId||Ce.requestTick(Yt()),k=(Ce._lastTickTime-Ce._startTime)*Ae.timeScale),this.id=Y(s)?ys:s,this.parent=n,this.duration=Dr((we+ee)*ye-ee)||ne,this.backwards=!1,this.paused=!0,this.began=!1,this.completed=!1,this.onBegin=$||q.onBegin,this.onBeforeUpdate=K||q.onBeforeUpdate,this.onUpdate=X||q.onUpdate,this.onLoop=E||q.onLoop,this.onPause=A||q.onPause,this.onComplete=b||q.onComplete,this.iterationDuration=we,this.iterationCount=ye,this._autoplay=n?!1:Be(d,q.autoplay),this._offset=k,this._delay=fe,this._loopDelay=ee,this._iterationTime=0,this._currentIteration=0,this._resolve=He,this._running=!1,this._reversed=+Be(c,q.reversed),this._reverse=this._reversed,this._cancelled=0,this._alternate=Be(a,q.alternate),this._prev=null,this._next=null,this._lastTickTime=Q,this._startTime=Q,this._lastTime=Q,this._fps=Be(f,q.frameRate),this._speed=Be(h,q.playbackRate),this._priority=+Be(g,1)}get cancelled(){return!!this._cancelled}set cancelled(e){e?this.cancel():this.reset(!0).play()}get currentTime(){return Ze(ie(this._currentTime,Ae.precision),-this._delay,this.duration)}set currentTime(e){const n=this.paused;this.pause().seek(+e),n||this.resume()}get iterationCurrentTime(){return Ze(ie(this._iterationTime,Ae.precision),0,this.iterationDuration)}set iterationCurrentTime(e){this.currentTime=this.iterationDuration*this._currentIteration+e}get progress(){return Ze(ie(this._currentTime/this.duration,10),0,1)}set progress(e){this.currentTime=this.duration*e}get iterationProgress(){return Ze(ie(this._iterationTime/this.iterationDuration,10),0,1)}set iterationProgress(e){const n=this.iterationDuration;this.currentTime=n*this._currentIteration+n*e}get currentIteration(){return this._currentIteration}set currentIteration(e){this.currentTime=this.iterationDuration*Ze(+e,0,this.iterationCount-1)}get reversed(){return!!this._reversed}set reversed(e){e?this.reverse():this.play()}get speed(){return super.speed}set speed(e){super.speed=e,this.resetTime()}reset(e=!1){return Er(this),this._reversed&&!this._reverse&&(this.reversed=!1),this._iterationTime=this.iterationDuration,Ut(this,0,1,~~e,ze.FORCE),ws(this),this._hasChildren&&ve(this,ws),this}init(e=!1){this.fps=this._fps,this.speed=this._speed,!e&&this._hasChildren&&Ut(this,this.duration,1,~~e,ze.FORCE),this.reset(e);const n=this._autoplay;return n===!0?this.resume():n&&!Y(n.linked)&&n.link(this),this}resetTime(){const e=1/(this._speed*Ce._speed);return this._startTime=Yt()-(this._currentTime+this._delay)*e,this}pause(){return this.paused?this:(this.paused=!0,this.onPause(this),this)}resume(){return this.paused?(this.paused=!1,this.duration<=ne&&!this._hasChildren?Ut(this,ne,0,0,ze.FORCE):(this._running||(Ft(Ce,this,ia),Ce._hasChildren=!0,this._running=!0),this.resetTime(),this._startTime-=12,Ce.wake()),this):this}restart(){return this.reset().resume()}seek(e,n=0,r=0){Er(this),this.completed=!1;const s=this.paused;return this.paused=!0,Ut(this,e+this._delay,~~n,~~r,ze.AUTO),s?this:this.resume()}alternate(){const e=this._reversed,n=this.iterationCount,r=this.iterationDuration,s=n===1/0?Qt(yr/r):n;return this._reversed=+(this._alternate&&!(s%2)?e:!e),n===1/0?this.iterationProgress=this._reversed?1-this.iterationProgress:this.iterationProgress:this.seek(r*s-this._currentTime),this.resetTime(),this}play(){return this._reversed&&this.alternate(),this.resume()}reverse(){return this._reversed||this.alternate(),this.resume()}cancel(){return this._hasChildren?ve(this,e=>e.cancel(),!0):ve(this,oa),this._cancelled=1,this.pause()}stretch(e){const n=this.duration,r=tn(e);if(n===r)return this;const s=e/n,o=e<=ne;return this.duration=o?ne:r,this.iterationDuration=o?ne:tn(this.iterationDuration*s),this._offset*=s,this._delay*=s,this._loopDelay*=s,this}revert(){Ut(this,0,1,0,ze.AUTO);const e=this._autoplay;return e&&e.linked&&e.linked===this&&e.revert(),this.cancel()}complete(e=0){return this.seek(this.duration,e).cancel()}then(e=He){const n=this.then,r=()=>{this.then=null,e(this),this.then=n,this._resolve=He};return new Promise(s=>(this._resolve=()=>s(r()),this.completed&&this._resolve(),this))}}function vs(t){const e=xt(t)?Di.root.querySelectorAll(t):t;if(e instanceof NodeList||e instanceof HTMLCollection)return e}function vo(t){if(Dt(t))return[];if(!gt)return ot(t)&&t.flat(1/0)||[t];if(ot(t)){const n=t.flat(1/0),r=[];for(let s=0,o=n.length;s<o;s++){const i=n[s];if(!Dt(i)){const c=vs(i);if(c)for(let a=0,l=c.length;a<l;a++){const u=c[a];if(!Dt(u)){let d=!1;for(let f=0,h=r.length;f<h;f++)if(r[f]===u){d=!0;break}d||r.push(u)}}else{let a=!1;for(let l=0,u=r.length;l<u;l++)if(r[l]===i){a=!0;break}a||r.push(i)}}}return r}const e=vs(t);return e?Array.from(e):[t]}function Eo(t){const e=vo(t),n=e.length;for(let r=0;r<n;r++){const s=e[r];if(!s[ds]){s[ds]=!0;const o=io(s);(s.nodeType||o)&&(s[Vt]=!0,s[eo]=o,s[Vn]={})}}return e}const lr={deg:1,rad:180/Fr,turn:360},Es={},_s=(t,e,n,r=!1)=>{const s=e.u,o=e.n;if(e.t===z.UNIT&&s===n)return e;const i=o+s+n,c=Es[i];if(!Y(c)&&!r)e.n=c;else{let a;if(s in lr)a=o*lr[s]/lr[n];else{const u=t.cloneNode(),d=t.parentNode,f=d&&d!==sn?d:sn.body;f.appendChild(u);const h=u.style;h.width=100+s;const g=u.offsetWidth||100;h.width=100+n;const b=u.offsetWidth||100,E=g/b;f.removeChild(u),a=E*o}e.n=a,Es[i]=a}return e.t,z.UNIT,e.u=n,e};const pt=t=>t;const Kt=(t=1.68)=>e=>kt(e,+t),_r={in:t=>e=>t(e),out:t=>e=>1-t(1-e),inOut:t=>e=>e<.5?t(e*2)/2:1-t(e*-2+2)/2,outIn:t=>e=>e<.5?(1-t(1-e*2))/2:(t(e*2-1)+1)/2},ca=Fr/2,Ts=Fr*2,xs={[Tt]:Kt,Quad:Kt(2),Cubic:Kt(3),Quart:Kt(4),Quint:Kt(5),Sine:t=>1-Yi(t*ca),Circ:t=>1-on(1-t*t),Expo:t=>t?kt(2,10*t-10):0,Bounce:t=>{let e,n=4;for(;t<((e=kt(2,--n))-1)/11;);return 1/kt(4,3-n)-7.5625*kt((e*3-2)/22-t,2)},Back:(t=1.7)=>e=>(+t+1)*e*e*e-+t*e*e,Elastic:(t=1,e=.3)=>{const n=Ze(+t,1,10),r=Ze(+e,ne,2),s=r/Ts*Wi(1/n),o=Ts/r;return i=>i===0||i===1?i:-n*kt(2,-10*(1-i))*Vi((1-i-s)*o)}},ur=(()=>{const t={linear:pt,none:pt};for(let e in _r)for(let n in xs){const r=xs[n],s=_r[e];t[e+n]=n===Tt||n==="Back"||n==="Elastic"?(o,i)=>s(r(o,i)):s(r)}return t})(),bn={linear:pt,none:pt},la=t=>{if(bn[t])return bn[t];if(t.indexOf("(")<=-1){const n=_r[t]||t.includes("Back")||t.includes("Elastic")?ur[t]():ur[t];return n?bn[t]=n:pt}else{const e=t.slice(0,-1).split("("),n=ur[e[0]];return n?bn[t]=n(...e[1].split(",")):pt}},Rs=["steps(","irregular(","linear(","cubicBezier("],Tr=t=>{if(xt(t)){for(let n=0,r=Rs.length;n<r;n++)if(st(t,Rs[n]))return console.warn(`String syntax for \`ease: "${t}"\` has been removed from the core and replaced by importing and passing the easing function directly: \`ease: ${t}\``),pt}return ht(t)?t:xt(t)?la(t):pt};const I=qr(),O=qr(),Lt={},wn={func:null},yn={func:null},vn=[null],It=[null,null],En={to:null};let ua=0,Ss=0,at,Xe;const da=(t,e)=>{const n={};if(ot(t)){const r=[].concat(...t.map(s=>Object.keys(s))).filter(xn);for(let s=0,o=r.length;s<o;s++){const i=r[s],c=t.map(a=>{const l={};for(let u in a){const d=a[u];xn(u)?u===i&&(l.to=d):l[u]=d}return l});n[i]=c}}else{const r=Be(e.duration,Ae.defaults.duration);Object.keys(t).map(o=>({o:parseFloat(o)/100,p:t[o]})).sort((o,i)=>o.o-i.o).forEach(o=>{const i=o.o,c=o.p;for(let a in c)if(xn(a)){let l=n[a];l||(l=n[a]=[]);const u=i*r;let d=l.length,f=l[d-1];const h={to:c[a]};let g=0;for(let b=0;b<d;b++)g+=l[b].duration;d===1&&(h.from=f.to),c.ease&&(h.ease=c.ease),h.duration=u-(d?g:0),l.push(h)}return o});for(let o in n){const i=n[o];let c;for(let a=0,l=i.length;a<l;a++){const u=i[a],d=u.ease;u.ease=c||void 0,c=d}i[0].duration||i.shift()}}return n};class fa extends aa{constructor(e,n,r,s,o=!1,i=0,c){super(n,r,s),this._head,this._tail,++Ss;const a=Eo(e),l=a.length,u=n.keyframes,d=u?Zi(da(u,n),n):n,{id:f,delay:h,duration:g,ease:b,playbackEase:E,modifier:A,composition:$,onRender:K}=d,X=r?r.defaults:Ae.defaults,Q=Be(b,X.ease),q=Be(E,X.playbackEase),fe=q?Tr(q):null,we=!Y(Q.ease),Se=we?Q.ease:Be(b,fe?"linear":X.ease),ee=we?Q.settlingDuration:Be(g,X.duration),ye=Be(h,X.delay),k=A||X.modifier,Ie=Y($)&&l>=_t?ke.none:Y($)?X.composition:$,le=this._offset+(r?r._offset:0);we&&(Q.parent=this);let B=NaN,y=NaN,_=0,T=0;for(let m=0;m<l;m++){const w=a[m],p=i||m,v=c||a;let x=NaN,N=NaN;for(let S in d)if(xn(S)){const R=ho(w,S),M=fo(w,S),F=Qi(S,w,R);let L=d[S];const U=ot(L);if(o&&!U&&(It[0]=L,It[1]=L,L=It),U){const P=L.length,se=!or(L[0]);P===2&&se?(En.to=L,vn[0]=En,at=vn):P>2&&se?(at=[],L.forEach((he,oe)=>{oe?oe===1?(It[1]=he,at.push(It)):at.push(he):It[0]=he})):at=L}else vn[0]=L,at=vn;let V=null,C=null,H=NaN,ce=0,re=0;for(let P=at.length;re<P;re++){const se=at[re];or(se)?Xe=se:(En.to=se,Xe=En),wn.func=null,yn.func=null;const he=Je(Be(Xe.composition,Ie),w,p,v,null,null),oe=et(he)?he:ke[he];!V&&oe!==ke.none&&(V=Hr(w,F));const $e=V?V._tail:null,ue=r&&$e&&$e.parent.parent===r?$e:C,me=Je(Xe.to,w,p,v,wn,ue);let D;or(me)&&!Y(me.to)?(Xe=me,D=me.to):D=me;const ae=Je(Xe.from,w,p,v,yn,ue),G=Xe.ease||Se,pe=Je(G,w,p,v,null,ue),j=ht(pe)||xt(pe)?pe:G,_e=!Y(j)&&!Y(j.ease),ge=_e?j.ease:j,it=_e?j.settlingDuration:Je(Be(Xe.duration,P>1?Je(ee,w,p,v,null,ue)/P:ee),w,p,v,null,ue),Ye=Je(Be(Xe.delay,re?0:ye),w,p,v,null,ue),Ct=Xe.modifier||k,bt=!Y(ae),Xt=!Y(D),Gt=ot(D),xi=Gt||bt&&Xt,Ri=C?ce:0,er=C?ce+Ye:Ye,tr=ie(le+er,12),Si=ie(le+Ri,12);!T&&(bt||Gt)&&(T=1);let Fe=C;if(oe!==ke.none){let Z=V._head;for(;Z&&Z._absoluteStartTime<=tr;)if(Z._isOverridden||(Fe=Z),Z=Z._nextRep,Z&&Z._absoluteStartTime>=tr)for(;Z;)Bn(Z),Z=Z._nextRep}if(xi){qe(Gt?Je(D[0],w,p,v,yn,ue):ae,I),qe(Gt?Je(D[1],w,p,v,wn,ue):D,O);const Z=Ot(w,F,R,Lt);I.t===z.NUMBER&&(Fe?Fe._valueType===z.UNIT&&(I.t=z.UNIT,I.u=Fe._unit):(qe(Z,We),We.t===z.UNIT&&(I.t=z.UNIT,I.u=We.u)))}else Xt?qe(D,O):C?gs(C,O):qe(r&&Fe&&Fe.parent.parent===r?Fe._value:Ot(w,F,R,Lt),O),bt?qe(ae,I):C?gs(C,I):qe(r&&Fe&&Fe.parent.parent===r?Fe._value:Ot(w,F,R,Lt),I);if(I.o&&(I.n=Sn(Fe?Fe._toNumber:qe(Ot(w,F,R,Lt),We).n,I.n,I.o)),O.o&&(O.n=Sn(I.n,O.n,O.o)),I.t!==O.t){if(I.t===z.COMPLEX||O.t===z.COMPLEX){const Z=I.t===z.COMPLEX?I:O,Me=I.t===z.COMPLEX?O:I;Me.t=z.COMPLEX,Me.s=Ne(Z.s),Me.d=Z.d.map(()=>Me.n)}else if(I.t===z.UNIT||O.t===z.UNIT){const Z=I.t===z.UNIT?I:O,Me=I.t===z.UNIT?O:I;Me.t=z.UNIT,Me.u=Z.u}else if(I.t===z.COLOR||O.t===z.COLOR){const Z=I.t===z.COLOR?I:O,Me=I.t===z.COLOR?O:I;Me.t=z.COLOR,Me.d=Z.d.map(()=>0)}}if(I.u!==O.u){let Z=O.u?I:O;Z=_s(w,Z,O.u?O.u:I.u,!1)}if(O.d&&I.d&&O.d.length!==I.d.length){const Z=I.d.length>O.d.length?I:O,Me=Z===I?O:I;Me.d=Z.d.map((Hl,us)=>Y(Me.d[us])?0:Me.d[us]),Me.s=Ne(Z.s)}const nr=ie(+it||ne,12);let as=Lt[F];Dt(as)||(Lt[F]=null);const Ai=M?M.set:null;ce=ie(er+nr,12);const pn=I.d,cs=O.d,ls=O.s,Oe={parent:this,id:ua++,property:F,target:w,_value:null,_toFunc:wn.func,_fromFunc:yn.func,_ease:Tr(ge),_fromNumbers:pn?Ne(pn):mn,_toNumbers:cs?Ne(cs):mn,_strings:ls?Ne(ls):mn,_fromNumber:I.n,_toNumber:O.n,_numbers:pn?Ne(pn):mn,_number:I.n,_unit:O.u,_modifier:Ct,_currentTime:0,_startTime:er,_delay:+Ye,_updateDuration:nr,_changeDuration:nr,_absoluteStartTime:tr,_absoluteUpdateStartTime:Si,_absoluteEndTime:ie(le+ce,12),_hasFromValue:bt||Gt?1:0,_tweenType:R,_setter:Ai,_valueType:O.t,_composition:oe,_isOverlapped:0,_isOverridden:0,_renderTransforms:0,_inlineValue:as,_prevRep:null,_nextRep:null,_prevAdd:null,_nextAdd:null,_prev:null,_next:null};oe!==ke.none&&yo(Oe,V);const rr=Oe._valueType;if(rr===z.COMPLEX)Oe._value=po(Oe,1,-1);else if(rr===z.UNIT)Oe._value=`${Ct(Oe._toNumber)}${Oe._unit}`;else if(rr===z.COLOR){const Z=O.d;Oe._value=`rgba(${ie(Z[0],0)},${ie(Z[1],0)},${ie(Z[2],0)},${Z[3]})`}else Oe._value=Ct(Oe._toNumber);isNaN(H)&&(H=Oe._startTime),C=Oe,_++,Ft(this,Oe)}(isNaN(y)||H<y)&&(y=H),(isNaN(B)||ce>B)&&(B=ce),R===de.TRANSFORM&&(x=_-re,N=_)}if(!isNaN(x)){let S=0;ve(this,R=>{S>=x&&S<N&&(R._renderTransforms=1,R._composition===ke.blend&&ve(qt.animation,M=>{M.id===R.id&&(M._renderTransforms=1)})),S++})}}l||console.warn("No target found. Make sure the element you're trying to animate is accessible before creating your animation."),y?(ve(this,m=>{m._startTime-m._delay||(m._delay-=y),m._startTime-=y}),B-=y):y=0,B||(B=ne,this.iterationCount=0),this.targets=a,this.id=Y(f)?Ss:f,this.duration=B===ne?ne:Dr((B+this._loopDelay)*this.iterationCount-this._loopDelay)||ne,this.onRender=K||X.onRender,this._ease=fe,this._delay=y,this.iterationDuration=B,!this._autoplay&&T&&this.onRender(this)}stretch(e){const n=this.duration;if(n===tn(e))return this;const r=e/n;return ve(this,s=>{s._updateDuration=tn(s._updateDuration*r),s._changeDuration=tn(s._changeDuration*r),s._currentTime*=r,s._delay*=r,s._startTime*=r,s._absoluteStartTime*=r,s._absoluteUpdateStartTime*=r,s._absoluteEndTime*=r}),super.stretch(e)}refresh(){return ve(this,e=>{const n=e._toFunc,r=e._fromFunc;(n||r)&&(r?(qe(r(),I),I.u!==e._unit&&e.target[Vt]&&_s(e.target,I,e._unit,!0),e._fromNumbers=Ne(I.d),e._fromNumber=I.n):n&&(qe(Ot(e.target,e.property,e._tweenType),We),e._fromNumbers=Ne(We.d),e._fromNumber=We.n),n&&(qe(n(),O),e._toNumbers=Ne(O.d),e._strings=Ne(O.s),e._toNumber=O.o?Sn(e._fromNumber,O.n,O.o):O.n))}),this.duration===ne&&this.restart(),this}revert(){return super.revert(),mo(this)}then(e){return super.then(e)}}const Re=(t,e)=>new fa(t,e,null,0,!1).init();const ha=(t,e)=>{if(st(e,"<")){const n=e[1]==="<",r=t._tail,s=r?r._offset+r._delay:0;return n?s:s+r.duration}},pa=(t,e)=>{let n=t.iterationDuration;if(n===ne&&(n=0),Y(e))return n;if(et(+e))return+e;const r=e,s=t?t.labels:null,o=!Dt(s),i=ha(t,r),c=!Y(i),a=Pi.exec(r);if(a){const l=a[0],u=r.split(l),d=o&&u[0]?s[u[0]]:n,f=c?i:o?d:n,h=+u[1];return Sn(f,h,l[0])}else return c?i:o?Y(s[r])?n:s[r]:n};const lt=(t=0,e=1,n=0)=>{const r=10**n;return Math.floor((Math.random()*(e-t+1/r)+t)*r)/r};let ma=0;const ga=(t,e=0,n=1,r=0)=>{let s=t===void 0?ma++:t;return(o=e,i=n,c=r)=>{s+=1831565813,s=Math.imul(s^s>>>15,s|1),s^=s+Math.imul(s^s>>>7,s|61);const a=10**c;return Math.floor((((s^s>>>14)>>>0)/4294967296*(i-o+1/a)+o)*a)/a}},ba=(t,e=lt)=>{let n=t.length,r,s;for(;n;)s=e(0,--n),r=t[n],t[n]=t[s],t[s]=r;return t};const Yn=(t,e={})=>{let n=[],r=0,s,o=null;const i=e.from,c=e.reversed,a=e.ease,l=!Y(a),d=l&&!Y(a.ease)?a.ease:l?Tr(a):null,f=e.grid,h=f===!0,g=e.axis,b=e.total,E=Y(i)||i===0||i==="first",A=i==="center",$=i==="last",K=i==="random",X=ot(i),Q=ot(t),q=e.use,fe=ir(Q?t[0]:t),we=Q?ir(t[1]):0,Se=ro.exec((Q?t[1]:t)+Tt),ee=e.start||0+(Q?fe:0),ye=e.seed,Ie=!Y(ye)&&ye!==!1?ga(ye===!0?0:ye):lt,le=e.jitter,B=!Y(le),y=ot(le),_=y?le[0]:le||0,T=y?le[1]:le||0;let m=E?0:et(i)?i:0;return(w,p,v,x,N)=>{const[S]=Eo(w),R=Y(b)?v.length:b,M=Y(q)?!1:ht(q)?q(S,p,R):Ot(S,q),F=et(M)||xt(M)&&et(+M)?+M:p,L=F>=0&&F<R?F:p;if(A&&(m=(R-1)/2),$&&(m=R-1),!n.length){if(h){let C=!0,H=!1,ce=1/0,re=1/0,P=1/0,se=-1/0,he=-1/0,oe=-1/0;const $e=[],ue=[],me=[];for(let D=0;D<R;D++){const ae=v[D];let G=0,pe=0,j=0,_e=!1;if(ae&&ht(ae.getBoundingClientRect)){const ge=ae.getBoundingClientRect();G=ge.left+ge.width/2,pe=ge.top+ge.height/2,_e=!0}else{const ge=ae;ge&&et(ge.x)&&et(ge.y)&&(G=ge.x,pe=ge.y,et(ge.z)&&(j=ge.z,H=!0),_e=!0)}if(!_e){C=!1;break}$e.push(G),ue.push(pe),me.push(j),G<ce&&(ce=G),pe<re&&(re=pe),j<P&&(P=j),G>se&&(se=G),pe>he&&(he=pe),j>oe&&(oe=j)}if(C){let D=$e[0],ae=ue[0],G=me[0];X?(D=ce+i[0]*(se-ce),ae=re+i[1]*(he-re),G=H?P+(i.length>=3?i[2]:.5)*(oe-P):0):A?(D=(ce+se)/2,ae=(re+he)/2,G=(P+oe)/2):$?(D=$e[R-1],ae=ue[R-1],G=me[R-1]):et(i)&&(D=$e[i],ae=ue[i],G=me[i]);for(let j=0;j<R;j++){const _e=D-$e[j],ge=ae-ue[j],it=G-me[j];let Ye=on(_e*_e+ge*ge+(H?it*it:0));g==="x"&&(Ye=-_e),g==="y"&&(Ye=-ge),g==="z"&&(Ye=-it),n.push(Ye)}let pe=1/0;for(let j=0;j<R;j++){const _e=gn(n[j]);_e>0&&_e<pe&&(pe=_e)}if(pe>0&&pe<1/0)for(let j=0;j<R;j++)n[j]=n[j]/pe}else for(let D=0;D<R;D++)n.push(gn(m-D))}else for(let C=0;C<R;C++)if(!f)n.push(gn(m-C));else{const H=f.length,ce=f[0]*f[1];let re,P,se;X?(re=i[0]*(f[0]-1),P=i[1]*(f[1]-1),se=H===3?(i.length>=3?i[2]:.5)*(f[2]-1):0):A?(re=(f[0]-1)/2,P=(f[1]-1)/2,se=H===3?(f[2]-1)/2:0):(re=m%f[0],P=Qt(m/f[0])%f[1],se=H===3?Qt(m/ce):0);const he=C%f[0],oe=Qt(C/f[0])%f[1],$e=H===3?Qt(C/ce):0,ue=re-he,me=P-oe,D=se-$e;let ae=on(ue*ue+me*me+(H===3?D*D:0));g==="x"&&(ae=-ue),g==="y"&&(ae=-me),g==="z"&&(ae=-D),n.push(ae)}r=n[0];for(let C=1;C<R;C++)n[C]>r&&(r=n[C]);if(d||c)for(let C=0;C<R;C++){let H=n[C];d&&(H=d(H/r)*r),c&&(H=g?-H:gn(r-H)),n[C]=H}if(B){o=new Array(R);for(let C=0;C<R;C++)o[C]=Ie(-1,1,4)}K&&(n=ba(n,Ie))}const U=Q?(we-fe)/r:fe;Y(s)&&(s=N?pa(N,Y(e.start)?N.iterationDuration:ee):ee);let V=s+(U*ie(n[L],2)||0);if(B){const C=r?n[L]/r:0,H=_+(T-_)*C;V=V+o[L]*H}return e.modifier&&(V=e.modifier(V)),Se&&(V=`${V}${Se[2]}`),V}};const wa=t=>{let e=1;if(t&&t.getCTM){const n=t.getCTM();if(n){const r=on(n.a*n.a+n.b*n.b),s=on(n.c*n.c+n.d*n.d);e=(r+s)/2}}return e},ya=(t,e,n)=>{const r=_t,s=getComputedStyle(t),o=s.strokeLinecap,i=s.vectorEffect==="non-scaling-stroke"?t:null;let c=o;const a=new Proxy(t,{get(l,u){const d=l[u];return u===to?l:u==="setAttribute"?(...f)=>{if(f[0]==="draw"){const g=f[1].split(" "),b=+g[0],E=+g[1],A=wa(i),$=b*-r*A,K=E*r*A+$,X=r*A+(b===0&&E===1||b===1&&E===0?0:10*A)-K;if(o!=="butt"){const Q=b===E?"butt":o;c!==Q&&(l.style.strokeLinecap=`${Q}`,c=Q)}l.setAttribute("stroke-dashoffset",`${$}`),l.setAttribute("stroke-dasharray",`${K} ${X}`)}return Reflect.apply(d,l,f)}:ht(d)?(...f)=>Reflect.apply(d,l,f):d}});return t.getAttribute("pathLength")!==`${r}`&&(t.setAttribute("pathLength",`${r}`),a.setAttribute("draw",`${e} ${n}`)),a},va=(t,e=0,n=0)=>vo(t).map(s=>ya(s,e,n));var wt=(t=>(t[t.Border=-1]="Border",t[t.Data=0]="Data",t[t.Function=1]="Function",t[t.Position=2]="Position",t[t.Timing=3]="Timing",t[t.Alignment=4]="Alignment",t))(wt||{});const Ea=[0,1],_o=[1,0],To=[2,3],xo=[3,2],_a={L:Ea,M:_o,Q:To,H:xo},Ta=/^\d*$/,xa=/^[A-Z0-9 $%*+./:-]*$/,dr="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",zr=1,Vr=40,As=3,Ra=3,_n=40,Sa=10,Ro=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],So=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]];class Aa{constructor(e,n,r,s){if(this.version=e,this.ecc=n,e<zr||e>Vr)throw new RangeError("Version value out of range");if(s<-1||s>7)throw new RangeError("Mask value out of range");this.size=e*4+17;const o=Array.from({length:this.size}).fill(!1);for(let c=0;c<this.size;c++)this.modules.push(o.slice()),this.types.push(o.map(()=>0));this.drawFunctionPatterns();const i=this.addEccAndInterleave(r);if(this.drawCodewords(i),s===-1){let c=1e9;for(let a=0;a<8;a++){this.applyMask(a),this.drawFormatBits(a);const l=this.getPenaltyScore();l<c&&(s=a,c=l),this.applyMask(a)}}this.mask=s,this.applyMask(s),this.drawFormatBits(s)}size;mask;modules=[];types=[];getModule(e,n){return e>=0&&e<this.size&&n>=0&&n<this.size&&this.modules[n][e]}drawFunctionPatterns(){for(let r=0;r<this.size;r++)this.setFunctionModule(6,r,r%2===0,wt.Timing),this.setFunctionModule(r,6,r%2===0,wt.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);const e=this.getAlignmentPatternPositions(),n=e.length;for(let r=0;r<n;r++)for(let s=0;s<n;s++)r===0&&s===0||r===0&&s===n-1||r===n-1&&s===0||this.drawAlignmentPattern(e[r],e[s]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(e){const n=this.ecc[1]<<3|e;let r=n;for(let o=0;o<10;o++)r=r<<1^(r>>>9)*1335;const s=(n<<10|r)^21522;for(let o=0;o<=5;o++)this.setFunctionModule(8,o,Qe(s,o));this.setFunctionModule(8,7,Qe(s,6)),this.setFunctionModule(8,8,Qe(s,7)),this.setFunctionModule(7,8,Qe(s,8));for(let o=9;o<15;o++)this.setFunctionModule(14-o,8,Qe(s,o));for(let o=0;o<8;o++)this.setFunctionModule(this.size-1-o,8,Qe(s,o));for(let o=8;o<15;o++)this.setFunctionModule(8,this.size-15+o,Qe(s,o));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let r=0;r<12;r++)e=e<<1^(e>>>11)*7973;const n=this.version<<12|e;for(let r=0;r<18;r++){const s=Qe(n,r),o=this.size-11+r%3,i=Math.floor(r/3);this.setFunctionModule(o,i,s),this.setFunctionModule(i,o,s)}}drawFinderPattern(e,n){for(let r=-4;r<=4;r++)for(let s=-4;s<=4;s++){const o=Math.max(Math.abs(s),Math.abs(r)),i=e+s,c=n+r;i>=0&&i<this.size&&c>=0&&c<this.size&&this.setFunctionModule(i,c,o!==2&&o!==4,wt.Position)}}drawAlignmentPattern(e,n){for(let r=-2;r<=2;r++)for(let s=-2;s<=2;s++)this.setFunctionModule(e+s,n+r,Math.max(Math.abs(s),Math.abs(r))!==1,wt.Alignment)}setFunctionModule(e,n,r,s=wt.Function){this.modules[n][e]=r,this.types[n][e]=s}addEccAndInterleave(e){const n=this.version,r=this.ecc;if(e.length!==$n(n,r))throw new RangeError("Invalid argument");const s=So[r[0]][n],o=Ro[r[0]][n],i=Math.floor(xr(n)/8),c=s-i%s,a=Math.floor(i/s),l=[],u=Oa(o);for(let f=0,h=0;f<s;f++){const g=e.slice(h,h+a-o+(f<c?0:1));h+=g.length;const b=Ua(g,u);f<c&&g.push(0),l.push(g.concat(b))}const d=[];for(let f=0;f<l[0].length;f++)l.forEach((h,g)=>{(f!==a-o||g>=c)&&d.push(h[f])});return d}drawCodewords(e){if(e.length!==Math.floor(xr(this.version)/8))throw new RangeError("Invalid argument");let n=0;for(let r=this.size-1;r>=1;r-=2){r===6&&(r=5);for(let s=0;s<this.size;s++)for(let o=0;o<2;o++){const i=r-o,a=(r+1&2)===0?this.size-1-s:s;!this.types[a][i]&&n<e.length*8&&(this.modules[a][i]=Qe(e[n>>>3],7-(n&7)),n++)}}}applyMask(e){if(e<0||e>7)throw new RangeError("Mask value out of range");for(let n=0;n<this.size;n++)for(let r=0;r<this.size;r++){let s;switch(e){case 0:s=(r+n)%2===0;break;case 1:s=n%2===0;break;case 2:s=r%3===0;break;case 3:s=(r+n)%3===0;break;case 4:s=(Math.floor(r/3)+Math.floor(n/2))%2===0;break;case 5:s=r*n%2+r*n%3===0;break;case 6:s=(r*n%2+r*n%3)%2===0;break;case 7:s=((r+n)%2+r*n%3)%2===0;break;default:throw new Error("Unreachable")}!this.types[n][r]&&s&&(this.modules[n][r]=!this.modules[n][r])}}getPenaltyScore(){let e=0;for(let o=0;o<this.size;o++){let i=!1,c=0;const a=[0,0,0,0,0,0,0];for(let l=0;l<this.size;l++)this.modules[o][l]===i?(c++,c===5?e+=As:c>5&&e++):(this.finderPenaltyAddHistory(c,a),i||(e+=this.finderPenaltyCountPatterns(a)*_n),i=this.modules[o][l],c=1);e+=this.finderPenaltyTerminateAndCount(i,c,a)*_n}for(let o=0;o<this.size;o++){let i=!1,c=0;const a=[0,0,0,0,0,0,0];for(let l=0;l<this.size;l++)this.modules[l][o]===i?(c++,c===5?e+=As:c>5&&e++):(this.finderPenaltyAddHistory(c,a),i||(e+=this.finderPenaltyCountPatterns(a)*_n),i=this.modules[l][o],c=1);e+=this.finderPenaltyTerminateAndCount(i,c,a)*_n}for(let o=0;o<this.size-1;o++)for(let i=0;i<this.size-1;i++){const c=this.modules[o][i];c===this.modules[o][i+1]&&c===this.modules[o+1][i]&&c===this.modules[o+1][i+1]&&(e+=Ra)}let n=0;for(const o of this.modules)n=o.reduce((i,c)=>i+(c?1:0),n);const r=this.size*this.size,s=Math.ceil(Math.abs(n*20-r*10)/r)-1;return e+=s*Sa,e}getAlignmentPatternPositions(){if(this.version===1)return[];{const e=Math.floor(this.version/7)+2,n=this.version===32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,r=[6];for(let s=this.size-7;r.length<e;s-=n)r.splice(1,0,s);return r}}finderPenaltyCountPatterns(e){const n=e[1],r=n>0&&e[2]===n&&e[3]===n*3&&e[4]===n&&e[5]===n;return(r&&e[0]>=n*4&&e[6]>=n?1:0)+(r&&e[6]>=n*4&&e[0]>=n?1:0)}finderPenaltyTerminateAndCount(e,n,r){return e&&(this.finderPenaltyAddHistory(n,r),n=0),n+=this.size,this.finderPenaltyAddHistory(n,r),this.finderPenaltyCountPatterns(r)}finderPenaltyAddHistory(e,n){n[0]===0&&(e+=this.size),n.pop(),n.unshift(e)}}function nt(t,e,n){if(e<0||e>31||t>>>e)throw new RangeError("Value out of range");for(let r=e-1;r>=0;r--)n.push(t>>>r&1)}function Qe(t,e){return(t>>>e&1)!==0}class Yr{constructor(e,n,r){if(this.mode=e,this.numChars=n,this.bitData=r,n<0)throw new RangeError("Invalid argument");this.bitData=r.slice()}getData(){return this.bitData.slice()}}const Ba=[1,10,12,14],$a=[2,9,11,13],Na=[4,8,16,16];function Ao(t,e){return t[Math.floor((e+7)/17)+1]}function Bo(t){const e=[];for(const n of t)nt(n,8,e);return new Yr(Na,t.length,e)}function Ca(t){if(!$o(t))throw new RangeError("String contains non-numeric characters");const e=[];for(let n=0;n<t.length;){const r=Math.min(t.length-n,3);nt(Number.parseInt(t.substring(n,n+r),10),r*3+1,e),n+=r}return new Yr(Ba,t.length,e)}function La(t){if(!No(t))throw new RangeError("String contains unencodable characters in alphanumeric mode");const e=[];let n;for(n=0;n+2<=t.length;n+=2){let r=dr.indexOf(t.charAt(n))*45;r+=dr.indexOf(t.charAt(n+1)),nt(r,11,e)}return n<t.length&&nt(dr.indexOf(t.charAt(n)),6,e),new Yr($a,t.length,e)}function Ia(t){return t===""?[]:$o(t)?[Ca(t)]:No(t)?[La(t)]:[Bo(ka(t))]}function $o(t){return Ta.test(t)}function No(t){return xa.test(t)}function Ma(t,e){let n=0;for(const r of t){const s=Ao(r.mode,e);if(r.numChars>=1<<s)return Number.POSITIVE_INFINITY;n+=4+s+r.bitData.length}return n}function ka(t){t=encodeURI(t);const e=[];for(let n=0;n<t.length;n++)t.charAt(n)!=="%"?e.push(t.charCodeAt(n)):(e.push(Number.parseInt(t.substring(n+1,n+3),16)),n+=2);return e}function xr(t){if(t<zr||t>Vr)throw new RangeError("Version number out of range");let e=(16*t+128)*t+64;if(t>=2){const n=Math.floor(t/7)+2;e-=(25*n-10)*n-55,t>=7&&(e-=36)}return e}function $n(t,e){return Math.floor(xr(t)/8)-Ro[e[0]][t]*So[e[0]][t]}function Oa(t){if(t<1||t>255)throw new RangeError("Degree out of range");const e=[];for(let r=0;r<t-1;r++)e.push(0);e.push(1);let n=1;for(let r=0;r<t;r++){for(let s=0;s<e.length;s++)e[s]=Rr(e[s],n),s+1<e.length&&(e[s]^=e[s+1]);n=Rr(n,2)}return e}function Ua(t,e){const n=e.map(r=>0);for(const r of t){const s=r^n.shift();n.push(0),e.forEach((o,i)=>n[i]^=Rr(o,s))}return n}function Rr(t,e){if(t>>>8||e>>>8)throw new RangeError("Byte out of range");let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(e>>>r&1)*t;return n}function Pa(t,e,n=1,r=40,s=-1,o=!0){if(!(zr<=n&&n<=r&&r<=Vr)||s<-1||s>7)throw new RangeError("Invalid value");let i,c;for(i=n;;i++){const d=$n(i,e)*8,f=Ma(t,i);if(f<=d){c=f;break}if(i>=r)throw new RangeError("Data too long")}for(const d of[_o,To,xo])o&&c<=$n(i,d)*8&&(e=d);const a=[];for(const d of t){nt(d.mode[0],4,a),nt(d.numChars,Ao(d.mode,i),a);for(const f of d.getData())a.push(f)}const l=$n(i,e)*8;nt(0,Math.min(4,l-a.length),a),nt(0,(8-a.length%8)%8,a);for(let d=236;a.length<l;d^=253)nt(d,8,a);const u=Array.from({length:Math.ceil(a.length/8)},()=>0);return a.forEach((d,f)=>u[f>>>3]|=d<<7-(f&7)),new Aa(i,e,u,s)}function Fa(t,e){const{ecc:n="L",boostEcc:r=!1,minVersion:s=1,maxVersion:o=40,maskPattern:i=-1,border:c=1}=e||{},a=typeof t=="string"?Ia(t):Array.isArray(t)?[Bo(t)]:void 0;if(!a)throw new Error(`uqr only supports encoding string and binary data, but got: ${typeof t}`);const l=Pa(a,_a[n],s,o,i,r),u=Da({version:l.version,maskPattern:l.mask,size:l.size,data:l.modules,types:l.types},c);return e?.invert&&(u.data=u.data.map(d=>d.map(f=>!f))),e?.onEncoded?.(u),u}function Da(t,e=1){if(!e)return t;const{size:n}=t,r=n+e*2;t.size=r,t.data.forEach(o=>{for(let i=0;i<e;i++)o.unshift(!1),o.push(!1)});for(let o=0;o<e;o++)t.data.unshift(Array.from({length:r},i=>!1)),t.data.push(Array.from({length:r},i=>!1));const s=wt.Border;t.types.forEach(o=>{for(let i=0;i<e;i++)o.unshift(s),o.push(s)});for(let o=0;o<e;o++)t.types.unshift(Array.from({length:r},i=>s)),t.types.push(Array.from({length:r},i=>s));return t}function Bs(t){return t.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Co(t,e={}){const n=Fa(t,e),{pixelSize:r=10,whiteColor:s="white",blackColor:o="black"}=e,i=n.size*r,c=n.size*r;let a=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${c} ${i}">`;const l=[];for(let u=0;u<n.size;u++)for(let d=0;d<n.size;d++){const f=d*r,h=u*r;n.data[u][d]&&l.push(`M${f},${h}h${r}v${r}h-${r}z`)}return a+=`<rect fill="${Bs(s)}" width="${c}" height="${i}"/>`,a+=`<path fill="${Bs(o)}" d="${l.join("")}"/>`,a+="</svg>",a}function Lo(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function Io(t,e){return Array.isArray(e)?e.length===0?!0:t?e.every(n=>typeof n=="string"):e.every(n=>Number.isSafeInteger(n)):!1}function qa(t){if(typeof t!="function")throw new Error("function expected");return!0}function an(t,e){if(typeof e!="string")throw new Error(`${t}: string expected`);return!0}function Mo(t){if(!Number.isSafeInteger(t))throw new Error(`invalid integer: ${t}`)}function Sr(t){if(!Array.isArray(t))throw new Error("array expected")}function ko(t,e){if(!Io(!0,e))throw new Error(`${t}: array of strings expected`)}function Oo(t,e){if(!Io(!1,e))throw new Error(`${t}: array of numbers expected`)}function Ha(...t){const e=o=>o,n=(o,i)=>c=>o(i(c)),r=t.map(o=>o.encode).reduceRight(n,e),s=t.map(o=>o.decode).reduce(n,e);return{encode:r,decode:s}}function za(t){const e=typeof t=="string"?t.split(""):t,n=e.length;ko("alphabet",e);const r=new Map(e.map((s,o)=>[s,o]));return{encode:s=>(Sr(s),s.map(o=>{if(!Number.isSafeInteger(o)||o<0||o>=n)throw new Error(`alphabet.encode: digit index outside alphabet "${o}". Allowed: ${t}`);return e[o]})),decode:s=>(Sr(s),s.map(o=>{an("alphabet.decode",o);const i=r.get(o);if(i===void 0)throw new Error(`Unknown letter: "${o}". Allowed: ${t}`);return i}))}}function Va(t=""){return an("join",t),{encode:e=>(ko("join.decode",e),e.join(t)),decode:e=>(an("join.decode",e),e.split(t))}}const Uo=(t,e)=>e===0?t:Uo(e,t%e),Mn=(t,e)=>t+(e-Uo(t,e)),Nn=(()=>{let t=[];for(let e=0;e<40;e++)t.push(2**e);return t})();function Ar(t,e,n,r){if(Sr(t),e<=0||e>32)throw new Error(`convertRadix2: wrong from=${e}`);if(n<=0||n>32)throw new Error(`convertRadix2: wrong to=${n}`);if(Mn(e,n)>32)throw new Error(`convertRadix2: carry overflow from=${e} to=${n} carryBits=${Mn(e,n)}`);let s=0,o=0;const i=Nn[e],c=Nn[n]-1,a=[];for(const l of t){if(Mo(l),l>=i)throw new Error(`convertRadix2: invalid data word=${l} from=${e}`);if(s=s<<e|l,o+e>32)throw new Error(`convertRadix2: carry overflow pos=${o} from=${e}`);for(o+=e;o>=n;o-=n)a.push((s>>o-n&c)>>>0);const u=Nn[o];if(u===void 0)throw new Error("invalid carry");s&=u-1}if(s=s<<n-o&c,!r&&o>=e)throw new Error("Excess padding");if(!r&&s>0)throw new Error(`Non-zero padding: ${s}`);return r&&o>0&&a.push(s>>>0),a}function Ya(t,e=!1){if(Mo(t),t<=0||t>32)throw new Error("radix2: bits should be in (0..32]");if(Mn(8,t)>32||Mn(t,8)>32)throw new Error("radix2: carry overflow");return{encode:n=>{if(!Lo(n))throw new Error("radix2.encode input should be Uint8Array");return Ar(Array.from(n),8,t,!e)},decode:n=>(Oo("radix2.decode",n),Uint8Array.from(Ar(n,t,8,e)))}}function $s(t){return qa(t),function(...e){try{return t.apply(null,e)}catch{}}}const Br=Ha(za("qpzry9x8gf2tvdw0s3jn54khce6mua7l"),Va("")),Ns=[996825010,642813549,513874426,1027748829,705979059];function Jt(t){const e=t>>25;let n=(t&33554431)<<5;for(let r=0;r<Ns.length;r++)(e>>r&1)===1&&(n^=Ns[r]);return n}function Cs(t,e,n=1){const r=t.length;let s=1;for(let o=0;o<r;o++){const i=t.charCodeAt(o);if(i<33||i>126)throw new Error(`Invalid prefix (${t})`);s=Jt(s)^i>>5}s=Jt(s);for(let o=0;o<r;o++)s=Jt(s)^t.charCodeAt(o)&31;for(let o of e)s=Jt(s)^o;for(let o=0;o<6;o++)s=Jt(s);return s^=n,Br.encode(Ar([s%Nn[30]],30,5,!1))}function Wa(t){const e=t==="bech32"?1:734539939,n=Ya(5),r=n.decode,s=n.encode,o=$s(r);function i(d,f,h=90){an("bech32.encode prefix",d),Lo(f)&&(f=Array.from(f)),Oo("bech32.encode",f);const g=d.length;if(g===0)throw new TypeError(`Invalid prefix length ${g}`);const b=g+7+f.length;if(h!==!1&&b>h)throw new TypeError(`Length ${b} exceeds limit ${h}`);const E=d.toLowerCase(),A=Cs(E,f,e);return`${E}1${Br.encode(f)}${A}`}function c(d,f=90){an("bech32.decode input",d);const h=d.length;if(h<8||f!==!1&&h>f)throw new TypeError(`invalid string length: ${h} (${d}). Expected (8..${f})`);const g=d.toLowerCase();if(d!==g&&d!==d.toUpperCase())throw new Error("String must be lowercase or uppercase");const b=g.lastIndexOf("1");if(b===0||b===-1)throw new Error('Letter "1" must be present between prefix and data only');const E=g.slice(0,b),A=g.slice(b+1);if(A.length<6)throw new Error("Data must be at least 6 characters long");const $=Br.decode(A).slice(0,-6),K=Cs(E,$,e);if(!A.endsWith(K))throw new Error(`Invalid checksum in ${d}: expected "${K}"`);return{prefix:E,words:$}}const a=$s(c);function l(d){const{prefix:f,words:h}=c(d,!1);return{prefix:f,words:h,bytes:r(h)}}function u(d,f){return i(d,s(f))}return{encode:i,decode:c,encodeFromBytes:u,decodeToBytes:l,decodeUnsafe:a,fromWords:r,fromWordsUnsafe:o,toWords:s}}const kn=Wa("bech32"),Za=t=>t/2**32|0,ja=t=>t>>>0;function Xa(t,e,n,r){const s=Za(n),o=ja(n);t.setUint32(e,r?o:s,r),t.setUint32(e+4,r?s:o,r)}function $r(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}const Nr=t=>t?`"${t}" `:"";function mt(t,e=""){if(typeof t!="number")throw new TypeError(Nr(e)+"expected number, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(Nr(e)+"expected integer >= 0, got "+t);return t}function Bt(t,e,n=""){if($r(t)&&(e===void 0||t.length===e))return t;e!==void 0&&mt(e,"length");const r=$r(t),s=e!==void 0?` of length ${e}`:"",o=r?`length=${t.length}`:`type=${typeof t}`,i=Nr(n)+"expected Uint8Array"+s+", got "+o;throw r?new RangeError(i):new TypeError(i)}function Po(t){if(typeof t!="function"||typeof t.create!="function")throw new TypeError("expected hash wrapped by utils.createHasher");if(mt(t.outputLen),mt(t.blockLen),t.outputLen<1||t.blockLen<1)throw new Error("hash blockLen / outputLen must be >= 1")}const Ls=(t,e)=>{if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError((e==="object"?"":`"${e}" `)+"expected object, got type="+typeof t)};function On(t,e=!0){if(t.destroyed)throw new Error("hash was destroyed");if(e&&t.finished)throw new Error("digest() was already called")}function Fo(t,e){Bt(t,void 0,"output");const n=e.outputLen;if(!(t.length>=n))throw new RangeError('"output" expected length >= '+n)}function Cr(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function fr(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function Ge(t,e){return t<<32-e|t>>>e}const Do=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Ga=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function Zt(t){if(Bt(t),Do)return t.toHex();let e="";for(let n=0;n<t.length;n++)e+=Ga[t[n]];return e}function Is(t){return t>=48&&t<=57?t-48:t>=65&&t<=70?t-55:t>=97&&t<=102?t-87:void 0}function Wn(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);if(Do)try{return Uint8Array.fromHex(t)}catch(s){throw s instanceof SyntaxError?new RangeError(s.message):s}const e=t.length,n=e/2;if(e%2)throw new RangeError("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(n);for(let s=0,o=0;s<n;s++,o+=2){const i=Is(t.charCodeAt(o)),c=Is(t.charCodeAt(o+1));if(i===void 0||c===void 0){const a=t[o]+t[o+1];throw new RangeError('hex string expected, got non-hex character "'+a+'" at index '+o)}r[s]=i*16+c}return r}function qo(t){if(typeof t!="string")throw new TypeError("string expected");return new Uint8Array(new TextEncoder().encode(t))}function Ka(...t){let e=0;for(let r=0;r<t.length;r++){const s=t[r];Bt(s),e+=s.length}const n=new Uint8Array(e);for(let r=0,s=0;r<t.length;r++){const o=t[r];n.set(o,s),s+=o.length}return n}function Ja(t,e,n="opts"){return Ls(t,"defaults"),e!==void 0&&Ls(e,n),Object.assign(t,e)}function Qa(t,e={}){if(typeof t!="function")throw new TypeError('"hashCons" expected function, got type='+typeof t);e=Ja({},e,"info");const n=(s,o)=>t(o).update(s).digest(),r=t(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.canXOF=r.canXOF,n.create=s=>t(s),Object.assign(n,e),Object.freeze(n)}function ec(t=32){mt(t,"bytesLength");const e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");if(t>65536)throw new RangeError(`"bytesLength" expected <= 65536, got ${t}`);return e.getRandomValues(new Uint8Array(t))}const tc=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});function nc(t,e,n){return t&e^~t&n}function rc(t,e,n){return t&e^t&n^e&n}class sc{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,n,r,s){this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=s,this.buffer=new Uint8Array(e),this.view=fr(this.buffer)}update(e){On(this),Bt(e);const{view:n,buffer:r,blockLen:s}=this,o=e.length;let i=!1;for(let c=0;c<o;){const a=Math.min(s-this.pos,o-c);if(a===s){const l=fr(e);for(;s<=o-c;c+=s)this.process(l,c);i=!0;continue}r.set(c===0&&a===o?e:e.subarray(c,c+a),this.pos),this.pos+=a,c+=a,this.pos===s&&(this.process(n,0),this.pos=0,i=!0)}return this.length+=e.length,i&&this.roundClean(),this}digestInto(e){On(this),Fo(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:s,isLE:o}=this;let{pos:i}=this;n[i++]=128,n.fill(0,i),this.padOffset>s-i&&(this.process(r,0),n.fill(0)),Xa(r,s-8,this.length*8,o),this.process(r,0),this.roundClean();const c=e===n?r:fr(e),a=this.outputLen,l=a/4,u=this.get();if(a%4||l>u.length)throw new Error("invalid outputLen");for(let d=0;d<l;d++)c.setUint32(4*d,u[d],o)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneIntoMeta(e){const{buffer:n,length:r,finished:s,destroyed:o,pos:i}=this;return e.destroyed=o,e.finished=s,e.length=r,e.pos=i,i&&e.buffer.set(n),e}clone(){return this._cloneInto()}}const oc=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ic=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),ct=new Uint32Array(64);class ac extends sc{A=0;B=0;C=0;D=0;E=0;F=0;G=0;H=0;constructor(e,n){super(64,e,8,!1),this.A=n[0]|0,this.B=n[1]|0,this.C=n[2]|0,this.D=n[3]|0,this.E=n[4]|0,this.F=n[5]|0,this.G=n[6]|0,this.H=n[7]|0}get(){const{A:e,B:n,C:r,D:s,E:o,F:i,G:c,H:a}=this;return[e,n,r,s,o,i,c,a]}set(e,n,r,s,o,i,c,a){this.A=e|0,this.B=n|0,this.C=r|0,this.D=s|0,this.E=o|0,this.F=i|0,this.G=c|0,this.H=a|0}_cloneInto(e){return(e||=new this.constructor).set(...this.get()),this._cloneIntoMeta(e)}process(e,n){for(let d=0;d<16;d++,n+=4)ct[d]=e.getUint32(n,!1);for(let d=16;d<64;d++){const f=ct[d-15],h=ct[d-2],g=Ge(f,7)^Ge(f,18)^f>>>3,b=Ge(h,17)^Ge(h,19)^h>>>10;ct[d]=b+ct[d-7]+g+ct[d-16]|0}let{A:r,B:s,C:o,D:i,E:c,F:a,G:l,H:u}=this;for(let d=0;d<64;d++){const f=Ge(c,6)^Ge(c,11)^Ge(c,25),h=u+f+nc(c,a,l)+ic[d]+ct[d]|0,b=(Ge(r,2)^Ge(r,13)^Ge(r,22))+rc(r,s,o)|0;u=l,l=a,a=c,c=i+h|0,i=o,o=s,s=r,r=h+b|0}r=r+this.A|0,s=s+this.B|0,o=o+this.C|0,i=i+this.D|0,c=c+this.E|0,a=a+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(r,s,o,i,c,a,l,u)}roundClean(){Cr(ct)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),Cr(this.buffer)}}class cc extends ac{constructor(){super(32,oc)}}const Un=Qa(()=>new cc,tc(1));function Ho(t,e,n=()=>{}){if(!Array.isArray(t))throw new TypeError(`"${e}" expected array, got type=${typeof t}`);for(let r=0;r<t.length;r++)n(t[r],`${e}[${r}]`);return t}const Le=(t,e,n)=>Bt(t,e,n),zo=mt;function lc(t,e=""){if(typeof t!="string"){const n=e&&`"${e}" `;throw new TypeError(n+"expected string, got type="+typeof t)}return t}function Ht(t,e="object"){if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError(e==="object"?"expected valid options object":`"${e}" expected object, got type=${typeof t}`);return t}function nn(t,e){if(typeof t!="function")throw new TypeError(`"${e}" is invalid: expected function, got ${typeof t}`);return t}const Vo=Zt,ut=(...t)=>Ka(...t),Lr=t=>Wn(t),Zn=$r,Wr=t=>ec(t),Pn=BigInt(0),Ms=BigInt(1),uc=t=>t?`"${t}" `:"";function Rt(t,e=""){if(typeof t!="boolean")throw new TypeError(uc(e)+"expected boolean, got type="+typeof t);return t}function Zr(t){if(typeof t=="bigint"){if(!Et(t))throw new RangeError("positive bigint expected, got "+t)}else zo(t);return t}function Fn(t,e=""){if(typeof t!="number"){const n=e&&`"${e}" `;throw new TypeError(n+"expected number, got type="+typeof t)}if(!Number.isSafeInteger(t)){const n=e&&`"${e}" `;throw new RangeError(n+"expected safe integer, got "+t)}}function Tn(t){const e=Zr(t).toString(16);return e.length&1?"0"+e:e}function Yo(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);return t===""?Pn:BigInt("0x"+t)}function Wt(t){return Yo(Zt(t))}function Wo(t){return Yo(Zt(dc(Bt(t)).reverse()))}function jr(t,e){if(mt(e),e===0)throw new Error("zero output length is invalid");t=Zr(t);const n=e*2,r=t.toString(16);if(r.length>n)throw new RangeError("number is too large");return Wn(r.padStart(n,"0"))}function Zo(t,e){return jr(t,e).reverse()}function dc(t){return Uint8Array.from(Le(t))}function Et(t){return typeof t=="bigint"&&Pn<=t}function jo(t,e,n){return Et(t)&&Et(e)&&Et(n)&&e<=t&&t<n}function Xo(t,e,n,r){if(!jo(e,n,r))throw new RangeError("expected valid "+t+": "+n+" <= n < "+r+", got "+e)}function Xr(t){if(t<Pn)throw new Error("expected non-negative bigint, got "+t);return t===Pn?0:t.toString(2).length}const Gr=t=>(Fn(t,"n"),(Ms<<BigInt(t))-Ms);function fc(t,e,n){if(mt(t,"hashLen"),mt(e,"qByteLen"),typeof n!="function")throw new TypeError("hmacFn must be a function");const r=E=>new Uint8Array(E),s=Uint8Array.of(),o=Uint8Array.of(0),i=Uint8Array.of(1),c=1e3;let a=r(t),l=r(t),u=0;const d=()=>{a.fill(1),l.fill(0),u=0},f=(...E)=>n(l,ut(a,...E)),h=(E=s)=>{l=f(o,E),a=f(),E.length!==0&&(l=f(i,E),a=f())},g=()=>{if(u++>=c)throw new Error("drbg: tried max amount of iterations");let E=0;const A=[];for(;E<e;){a=f();const $=a.slice();A.push($),E+=a.length}return ut(...A)};return(E,A)=>{d(),h(E);let $;for(;($=A(g()))===void 0;)h();return d(),$}}function dn(t,e={},n={},r="object"){Ht(t,r),Ht(e,"fields"),Ht(n,"optFields");function s(i,c,a){const l=r==="object"?`param "${String(i)}"`:`"${r}.${String(i)}"`,u=t[i];if(!Object.hasOwn(t,i)&&(a?u!==void 0:c!=="function"))throw new TypeError(`${l} is invalid: expected own property`);if(a&&u===void 0)return;const d=typeof u;if(d!==c||u===null)throw new TypeError(`${l} is invalid: expected ${c}, got ${d}`)}const o=(i,c)=>Object.entries(i).forEach(([a,l])=>s(a,l,c));o(e,!1),o(n,!0)}const Ee=BigInt(0),te=BigInt(1),dt=BigInt(2),Go=BigInt(3),Kr=BigInt(4),Ko=BigInt(5),hc=BigInt(7),Jo=BigInt(8),pc=BigInt(9),mc=BigInt(15),Qo=BigInt(16),gc=BigInt("0x10000000000000000");function Ue(t,e){if(e<=Ee)throw new Error("mod: expected positive modulus, got "+e);const n=t%e;return n>=Ee?n:e+n}function ei(t,e,n){if(n<=te)throw new Error("pow: expected modulus > 1, got "+n);if(typeof e!="bigint")throw new TypeError("invalid exponent: expected bigint, got "+typeof e);if(e<Ee)throw new Error("invalid exponent, negatives unsupported");if(e===Ee)return te;if(e===te)return t;let r=t%n;if(r<Ee&&(r+=n),e<gc){let c=te;for(;e>Ee;)e&te&&(c=c*r%n),r=r*r%n,e>>=te;return c}const s=[];for(;e>Ee;)s.push(Number(e&mc)),e>>=Kr;const o=new Array(16);o[0]=te,o[1]=r;for(let c=2;c<16;c++)o[c]=o[c-1]*r%n;let i=o[s[s.length-1]];for(let c=s.length-2;c>=0;c--){i=i*i%n,i=i*i%n,i=i*i%n,i=i*i%n;const a=s[c];a!==0&&(i=i*o[a]%n)}return i}function De(t,e,n){if(n<=te)throw new Error("pow2: expected modulus > 1, got "+n);if(e<Ee)throw new Error("pow2: expected non-negative exponent, got "+e);let r=t;for(;e-- >Ee;)r*=r,r%=n;return r}function ks(t,e){if(t===Ee)throw new Error("invert: expected non-zero number");if(e<=te)throw new Error("invert: expected modulus > 1, got "+e);let n=Ue(t,e),r=e,s=Ee,o=te;for(;n!==Ee;){const c=r/n,a=r-n*c,l=s-o*c;r=n,n=a,s=o,o=l}if(r!==te)throw new Error("invert: does not exist");return Ue(s,e)}function bc(t,e){if(e<=te)throw new Error("invertCt: expected prime modulus > 1, got "+e);const n=Ue(t,e);if(n===Ee)throw new Error("invertCt: expected non-zero number");const r=ei(n,e-dt,e);if(Ue(n*r,e)!==te)throw new Error("invertCt: does not exist");return r}function Jr(t,e,n){const r=t;if(!r.eql(r.sqr(e),n))throw new Error("Cannot find square root")}function Qr(t,e){if((t&te)===Ee)throw new Error(e+": expected odd modulus, got "+t)}function ti(t,e){const n=t,r=(n.ORDER+te)/Kr,s=n.pow(e,r);return Jr(n,s,e),s}function wc(t,e){const n=t,r=(n.ORDER-Ko)/Jo,s=n.mul(e,dt),o=n.pow(s,r),i=n.mul(e,o),c=n.mul(n.mul(i,dt),o),a=n.mul(i,n.sub(c,n.ONE));return Jr(n,a,e),a}function yc(t){const e=jn(t),n=ni(t),r=n(e,e.neg(e.ONE)),s=n(e,r),o=n(e,e.neg(r)),i=(t+hc)/Qo;return((c,a)=>{const l=c;let u=l.pow(a,i),d=l.mul(u,r);const f=l.mul(u,s),h=l.mul(u,o),g=l.eql(l.sqr(d),a),b=l.eql(l.sqr(f),a);u=l.cmov(u,d,g),d=l.cmov(h,f,b);const E=l.eql(l.sqr(d),a),A=l.cmov(u,d,E);return Jr(l,A,a),A})}function ni(t){if(t<Go)throw new Error("sqrt is not defined for small field");Qr(t,"tonelliShanks");let e=t-te,n=0;for(;e%dt===Ee;)e/=dt,n++;let r=dt;const s=jn(t);for(;Os(s,r)===1;)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return ti;let o=s.pow(r,e);const i=(e+te)/dt;return function(a,l){const u=a;if(u.is0(l))return l;if(Os(u,l)!==1)throw new Error("Cannot find square root");let d=n,f=u.mul(u.ONE,o),h=u.pow(l,e),g=u.pow(l,i);for(;!u.eql(h,u.ONE);){if(u.is0(h))throw new Error("Cannot find square root: probably non-prime P");let b=1,E=u.sqr(h);for(;!u.eql(E,u.ONE);)if(b++,E=u.sqr(E),b===d)throw new Error("Cannot find square root");const A=te<<BigInt(d-b-1),$=u.pow(f,A);d=b,f=u.sqr($),h=u.mul(h,f),g=u.mul(g,$)}return g}}function vc(t){return Qr(t,"Fp.sqrt"),t%Kr===Go?ti:t%Jo===Ko?wc:t%Qo===pc?yc(t):ni(t)}const Ec=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function cn(t){if(Ht(t,"field"),typeof t.ORDER!="bigint")throw new TypeError('param "ORDER" is invalid: expected bigint, got '+typeof t.ORDER);Fn(t.BYTES,"BYTES"),Fn(t.BITS,"BITS");for(const e of Ec)nn(t[e],"field."+e);if(t.BYTES<1||t.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(t.ORDER<=te)throw new Error("invalid field: expected ORDER > 1, got "+t.ORDER);return t}function ri(t,e,n=!1){cn(t),Ho(e,"nums"),Rt(n,"passZero");const r=t,s=new Array(e.length).fill(n?r.ZERO:void 0),o=e.reduce((c,a,l)=>r.is0(a)?c:(s[l]=c,r.mul(c,a)),r.ONE),i=r.inv(o);return e.reduceRight((c,a,l)=>r.is0(a)?c:(s[l]=r.mul(c,s[l]),r.mul(c,a)),i),s}function Os(t,e){cn(t);const n=t;Qr(n.ORDER,"FpLegendre");const r=(n.ORDER-te)/dt,s=n.pow(e,r),o=n.eql(s,n.ONE),i=n.eql(s,n.ZERO),c=n.eql(s,n.neg(n.ONE));if(!o&&!i&&!c)throw new Error("invalid Legendre symbol result");return o?1:i?0:-1}function _c(t,e){if(e!==void 0&&zo(e),t<=Ee)throw new Error("invalid n length: expected positive n, got "+t);if(e!==void 0&&e<1)throw new Error("invalid n length: expected positive bit length, got "+e);const n=Xr(t);if(e!==void 0&&e<n)throw new Error(`invalid n length: expected nBitLength (${e}) >= bitLen(n) (${n})`);const r=e!==void 0?e:n,s=Math.ceil(r/8);return{nBitLength:r,nByteLength:s}}const Us=new WeakMap;class Ps{ORDER;BITS;BYTES;isLE;ZERO=Ee;ONE=te;_lengths;_mod;constructor(e,n={}){if(e<=te)throw new Error("invalid field: expected ORDER > 1, got "+e);let r;this.isLE=!1,n!=null&&typeof n=="object"&&(typeof n.BITS=="number"&&(r=n.BITS),typeof n.sqrt=="function"&&Object.defineProperty(this,"sqrt",{value:n.sqrt,enumerable:!0}),typeof n.isLE=="boolean"&&(this.isLE=n.isLE),n.allowedLengths&&(this._lengths=Object.freeze(n.allowedLengths.slice())),typeof n.modFromBytes=="boolean"&&(this._mod=n.modFromBytes));const{nBitLength:s,nByteLength:o}=_c(e,r);if(o>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=s,this.BYTES=o,Object.freeze(this)}create(e){return Ue(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new TypeError("invalid field element: expected bigint, got "+typeof e);return Ee<=e&&e<this.ORDER}is0(e){return e===Ee}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&te)===te}neg(e){return Ue(-e,this.ORDER)}eql(e,n){return e===n}sqr(e){return Ue(e*e,this.ORDER)}add(e,n){return Ue(e+n,this.ORDER)}sub(e,n){return Ue(e-n,this.ORDER)}mul(e,n){return Ue(e*n,this.ORDER)}pow(e,n){return ei(e,n,this.ORDER)}div(e,n){return Ue(e*ks(n,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,n){return e+n}subN(e,n){return e-n}mulN(e,n){return e*n}inv(e){return ks(e,this.ORDER)}sqrt(e){let n=Us.get(this);return n||Us.set(this,n=vc(this.ORDER)),n(this,e)}toBytes(e){return this.isLE?Zo(e,this.BYTES):jr(e,this.BYTES)}fromBytes(e,n=!1){Le(e);const{_lengths:r,BYTES:s,isLE:o,ORDER:i,_mod:c}=this;if(r){if(e.length<1||!r.includes(e.length)||e.length>s)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+e.length);const l=new Uint8Array(s);l.set(e,o?0:l.length-e.length),e=l}if(e.length!==s)throw new Error("Field.fromBytes: expected "+s+" bytes, got "+e.length);let a=o?Wo(e):Wt(e);if(c&&(a=Ue(a,i)),!n&&!this.isValid(a))throw new Error("invalid field element: outside of range 0..ORDER");return a}invertBatch(e){return ri(this,e,!0)}cmov(e,n,r){return Rt(r,"condition"),r?n:e}}function jn(t,e={}){return Object.freeze(Ps.prototype),new Ps(t,e)}function si(t){if(typeof t!="bigint")throw new Error("field order must be bigint");if(t<=te)throw new Error("field order must be greater than 1");const e=Xr(t-te);return Math.ceil(e/8)}function es(t){const e=si(t);return e+Math.ceil(e/2)}function oi(t,e,n=!1){Le(t);const r=t.length,s=si(e),o=Math.max(es(e),16);if(r<o||r>1024)throw new Error("expected "+o+"-1024 bytes of input, got "+r);const i=n?Wo(t):Wt(t),c=Ue(i,e-te)+te;return n?Zo(c,s):jr(c,s)}const ts=BigInt(0),ln=BigInt(1),Tc=BigInt(4),hr=16,Fs=128,xc=5,Ds=2**31;function fn(t){const e=t;if(typeof e!="function")throw new TypeError('"Point" expected constructor, got type='+typeof t);nn(e.fromAffine,"Point.fromAffine"),nn(e.fromBytes,"Point.fromBytes"),nn(e.fromHex,"Point.fromHex"),Ht(e.BASE,"Point.BASE"),Ht(e.ZERO,"Point.ZERO"),cn(e.Fp),cn(e.Fn)}function Rc(t,e){fn(t),ai(e,t);const n=ri(t.Fp,e.map(r=>r.Z));return e.map((r,s)=>t.fromAffine(r.toAffine(n[s])))}function Sc(t,e,n=1){if(!Number.isSafeInteger(t)||t<n||t>e)throw new Error("invalid window size, expected ["+n+".."+e+"], got W="+t)}function Ac(t,e){const n=t*(4*e+128);if(n>Ds)throw new Error("invalid window size: table would need ~"+Math.ceil(n/2**20)+" MiB, max "+Ds/2**20+" MiB")}function ii(t,e){if(t!==void 0){nn(t,"randomBytes");try{const n=t(e);if(!Zn(n)||n.length!==e)return}catch{return}return t}}function ai(t,e){Ho(t,"points"),t.forEach((n,r)=>{if(!(n instanceof e))throw new Error("invalid point at index "+r)})}function Bc(t,e,n){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((r,s)=>{if(!(n===void 0?e.isValid(r):Et(r)&&r<n))throw new Error("invalid scalar at index "+s)})}const ci=new WeakMap;function pr(t){return ci.get(t)||1}function $c(t,e){const n=t.double(),r=[t];for(let s=1;s<e;s++)r.push(r[s-1].add(n));return r}function Nc(t,e){const n=2**e,r=n/2,s=BigInt(n-1),o=[];for(;t>ts;){let i=0;t&ln&&(i=Number(t&s),i>=r&&(i-=n),t-=BigInt(i)),o.push(i),t>>=ln}return o}function Cc(t,e,n){const r=2**e,s=r/2,o=BigInt(r-1),i=BigInt(e),c=[];for(let a=0;a<n;a++){let l=Number(t&o);t>>=i,l>s&&(l-=r,t+=ln),c.push(l)}if(t!==ts)throw new Error("invalid wnaf");return c}function Lc(t,e,n){let r=0;for(const o of n)r=Math.max(r,o.length);let s=t;for(let o=r-1;o>=0;o--){o!==r-1&&(s=s.double());for(let i=0;i<n.length;i++){const c=n[i][o];if(c){const a=e[i][Math.abs(c)-1>>1];s=s.add(c<0?a.negate():a)}}}return s}class Ic{Point;BASE;ZERO;randomBytes;wnafPrecomputes=new WeakMap;baseCanBeBlinded;bits;constructor(e,n){fn(e),this.randomBytes=ii(n,hr),this.Point=e,this.BASE=e.BASE,this.ZERO=e.ZERO,this.bits=e.Fn.BITS}buildWnafTable(e,n,r){const s=Math.ceil(r/n)+1,o=2**(n-1),i=[];let c=e;for(let a=0;a<s;a++){let l=c;for(let u=0;u<o;u++)i.push(l),l=l.add(c);c=i[i.length-1].double()}return{W:n,bits:r,windows:s,comp:i}}wnafCachedCT(e,n){const{W:r,windows:s,comp:o}=e,i=2**(r-1),c=Cc(n,r,s);let a=this.ZERO,l=this.BASE;for(let u=0;u<s;u++){const d=c[u],f=u*i,h=Math.abs(d)-1;let g=o[f];for(let E=1;E<i;E++)g=E===h?o[f+E]:g;const b=g.negate();d===0?l=l.add(o[f]):a=a.add(d<0?b:g)}return{p:a,f:l}}getWnafPrecomputes(e,n,r,s){let o=this.wnafPrecomputes.get(n),i=o?.find(c=>c.W===e&&c.bits===r);return i||(i=this.buildWnafTable(n,e,r),typeof s=="function"&&(i={...i,comp:s(i.comp)}),o||(o=[],this.wnafPrecomputes.set(n,o)),o.push(i)),i}assertPoint(e){if(!(e instanceof this.Point))throw new TypeError('"point" expected Point instance, got type='+typeof e)}validateMulInput(e,n){if(this.assertPoint(e),!jo(n,ln,this.Point.Fn.ORDER))throw new Error("invalid scalar")}runCT(e,n,r,s){const o=pr(e);return o===1?this.fixedWindowCT(e,n,r):this.wnafCachedCT(this.getWnafPrecomputes(o,e,r,s),n)}mulCT(e,n,r){return this.validateMulInput(e,n),this.runCT(e,n,this.bits,r)}mulCTBlinded(e,n,r){if(this.validateMulInput(e,n),this.randomBytes===void 0)throw new Error("randomBytes is required for scalar blinding");const s=this.Point.Fn.BITS+Fs,o=this.randomBytes(hr);if(!Zn(o)||o.length!==hr)throw new Error("randomBytes returned invalid byte array");o[0]=o[0]&63|128;const i=n+Wt(o)*this.Point.Fn.ORDER;return this.runCT(e,i,s,r)}fixedWindowCT(e,n,r){const s=xc,o=1<<s,i=Gr(s),c=new Array(o);c[0]=this.ZERO;for(let u=1;u<o;u++)c[u]=c[u-1].add(e);const a=Math.ceil(r/s);let l=this.ZERO;for(let u=a-1;u>=0;u--){if(u!==a-1)for(let h=0;h<s;h++)l=l.double();const d=Number(n>>BigInt(u*s)&i);let f=c[0];for(let h=1;h<o;h++)f=h===d?c[h]:f;l=l.add(f)}return{p:l,f:l}}shouldBlind(e,n){return this.randomBytes===void 0?!1:n===ln?!0:e!==this.BASE?!1:(this.baseCanBeBlinded===void 0&&(this.baseCanBeBlinded=this.mulUnsafe(this.BASE,this.Point.Fn.ORDER).is0()),this.baseCanBeBlinded)}mulSecret(e,n,r,s){return this.shouldBlind(e,r)?this.mulCTBlinded(e,n,s):this.mulCT(e,n,s)}mulUnsafe(e,n,r){if(this.assertPoint(e),!Et(n))throw new Error("invalid scalar");const s=pr(e);if(s===1||n>=this.Point.Fn.ORDER)return Ir(this.Point,[e],[n],!0);const o=this.getWnafPrecomputes(s,e,this.bits,r);return this.wnafCachedCT(o,n).p}setWindowSize(e,n){this.assertPoint(e),Sc(n,this.bits);const r=Math.ceil((this.bits+Fs)/n)+1;Ac(r*2**(n-1),this.Point.Fp.BYTES),ci.set(e,n),this.wnafPrecomputes.delete(e)}hasWindowSize(e){return pr(e)!==1}}function Ir(t,e,n,r=!1){if(fn(t),ai(e,t),Rt(r,"allowOversized"),Bc(n,t.Fn,r?t.Fn.ORDER**Tc:void 0),e.length!==n.length)throw new Error("arrays of points and scalars must have equal length");const s=e.map(i=>$c(i,4)),o=n.map(i=>Nc(i,4));return Lc(t.ZERO,s,o)}function qs(t,e,n){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return cn(e),e}else return jn(t,{isLE:n})}function Mc(t,e,n={},r){if(r===void 0&&(r=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);dn(n);for(const a of["p","n","h"]){const l=e[a];if(!(Et(l)&&l!==ts))throw new Error(`CURVE.${a} must be positive bigint`)}const s=qs(e.p,n.Fp,r),o=qs(e.n,n.Fn,r),c=["Gx","Gy","a","b"];for(const a of c)if(!s.isValid(e[a]))throw new Error(`CURVE.${a} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:s,Fn:o}}function kc(t,e){return function(r){const s=t(r);return{secretKey:s,publicKey:e(s)}}}class Hs{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,n){if(Po(e),Bt(n,void 0,"key"),this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("expected Hash instance");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const r=this.blockLen,s=new Uint8Array(r);s.set(n.length>r?e.create().update(n).digest():n);for(let o=0;o<s.length;o++)s[o]^=54;this.iHash.update(s),this.oHash=e.create();for(let o=0;o<s.length;o++)s[o]^=106;this.oHash.update(s),Cr(s)}update(e){return On(this),this.iHash.update(e),this}digestInto(e){On(this),Fo(e,this),this.finished=!0;const n=e.subarray(0,this.outputLen);this.iHash.digestInto(n),this.oHash.update(n),this.oHash.digestInto(n),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});const{oHash:n,iHash:r,finished:s,destroyed:o,blockLen:i,outputLen:c,canXOF:a}=this;return e=e,e.finished=s,e.destroyed=o,e.blockLen=i,e.outputLen=c,e.canXOF=a,e.oHash=n._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const Oc=(()=>{const t=((e,n,r)=>new Hs(e,n).update(r).digest());return t.create=(e,n)=>new Hs(e,n),t})();const Uc=BigInt(0);class Pc extends Error{constructor(e=""){super(e)}}const tt={Err:Pc,_tlv:{encode:(t,e)=>{const{Err:n}=tt;if(Fn(t,"tag"),t<0||t>255)throw new n("tlv.encode: wrong tag");if(lc(e,"data"),e.length&1)throw new n("tlv.encode: unpadded data");const r=e.length/2,s=Tn(r);if(s.length/2&128)throw new n("tlv.encode: long form length too big");const o=r>127?Tn(s.length/2|128):"";return Tn(t)+o+s+e},decode(t,e){const{Err:n}=tt;e=Le(e,void 0,"DER data");let r=0;if(t<0||t>255)throw new n("tlv.decode: wrong tag");if(e.length<2||e[r++]!==t)throw new n("tlv.decode: wrong tlv");const s=e[r++],o=!!(s&128);let i=0;if(!o)i=s;else{const a=s&127;if(!a)throw new n("tlv.decode(long): indefinite length not supported");if(a>4)throw new n("tlv.decode(long): byte length is too big");const l=e.subarray(r,r+a);if(l.length!==a)throw new n("tlv.decode: length bytes not complete");if(l[0]===0)throw new n("tlv.decode(long): zero leftmost byte");for(const u of l)i=i<<8|u;if(r+=a,i<128)throw new n("tlv.decode(long): not minimal encoding")}const c=e.subarray(r,r+i);if(c.length!==i)throw new n("tlv.decode: wrong value length");return{v:c,l:e.subarray(r+i)}}},_int:{encode(t){const{Err:e}=tt;if(Zr(t),t<Uc)throw new e("integer: negative integers are not allowed");let n=Tn(t);if(Number.parseInt(n[0],16)&8&&(n="00"+n),n.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return n},decode(t){const{Err:e}=tt;if(t.length<1)throw new e("invalid signature integer: empty");if(t[0]&128)throw new e("invalid signature integer: negative");if(t.length>1&&t[0]===0&&!(t[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return Wt(t)}},toSig(t){const{Err:e,_int:n,_tlv:r}=tt,s=Le(t,void 0,"signature"),{v:o,l:i}=r.decode(48,s);if(i.length)throw new e("invalid signature: left bytes after parsing");const{v:c,l:a}=r.decode(2,o),{v:l,l:u}=r.decode(2,a);if(u.length)throw new e("invalid signature: left bytes after parsing");return{r:n.decode(c),s:n.decode(l)}},hexFromSig(t){const{_tlv:e,_int:n}=tt;dn(t,{r:"bigint",s:"bigint"},{},"sig");const r=e.encode(2,n.encode(t.r)),s=e.encode(2,n.encode(t.s)),o=r+s;return e.encode(48,o)}},zs=(Object.freeze(tt._tlv),Object.freeze(tt._int),Object.freeze(tt));const Vs=(t,e)=>(t+(t>=0?e:-e)/li)/e;function Fc(t,e,n){Xo("scalar",t,rt,n);const[[r,s],[o,i]]=e,c=Vs(i*t,n),a=Vs(-s*t,n);let l=t-c*r-a*o,u=-c*s-a*i;const d=l<rt,f=u<rt;d&&(l=-l),f&&(u=-u);const h=Gr(Math.ceil(Xr(n)/2))+yt;if(l<rt||l>=h||u<rt||u>=h)throw new Error("splitScalar (endomorphism): failed for k");return{k1neg:d,k1:l,k2neg:f,k2:u}}function Mr(t){if(!["compact","recovered","der"].includes(t))throw new Error('Signature format must be "compact", "recovered", or "der"');return t}function mr(t,e){dn(t);const n={};for(let r of Object.keys(e))n[r]=t[r]===void 0?e[r]:t[r];return Rt(n.lowS,"lowS"),Rt(n.prehash,"prehash"),n.format!==void 0&&Mr(n.format),n}const rt=BigInt(0),yt=BigInt(1),li=BigInt(2),gr=BigInt(3),Dc=BigInt(4);function qc(t,e={}){const n=Mc("weierstrass",t,e),r=n.Fp,s=n.Fn;let o=n.CURVE;const{h:i,n:c}=o;dn(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",randomBytes:"function"});const{endo:a,allowInfinityPoint:l}=e,u=e.randomBytes===void 0?Wr:e.randomBytes;if(a&&(!r.is0(o.a)||typeof a.beta!="bigint"||!Array.isArray(a.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');const d=di(r,s);function f(){if(!r.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function h(B,y,_){if(l&&y.is0())return Uint8Array.of(0);const{x:T,y:m}=y.toAffine(),w=r.toBytes(T);if(Rt(_,"isCompressed"),_){f();const p=!r.isOdd(m);return ut(ui(p),w)}else return ut(Uint8Array.of(4),w,r.toBytes(m))}function g(B){Le(B,void 0,"Point");const{publicKey:y,publicKeyUncompressed:_}=d,T=B.length,m=B[0],w=B.subarray(1);if(l&&T===1&&m===0)return{x:r.ZERO,y:r.ZERO};if(T===y&&(m===2||m===3)){const p=r.fromBytes(w);if(!r.isValid(p))throw new Error("bad point: is not on curve, wrong x");const v=K(p);let x;try{x=r.sqrt(v)}catch(R){const M=R instanceof Error?": "+R.message:"";throw new Error("bad point: is not on curve, sqrt error"+M)}f();const N=r.isOdd(x);return(m&1)===1!==N&&(x=r.neg(x)),{x:p,y:x}}else if(T===_&&m===4){const p=r.BYTES,v=r.fromBytes(w.subarray(0,p)),x=r.fromBytes(w.subarray(p,p*2));if(!X(v,x))throw new Error("bad point: is not on curve");return{x:v,y:x}}else throw new Error(`bad point: got length ${T}, expected compressed=${y} or uncompressed=${_}`)}const b=e.toBytes===void 0?h:e.toBytes,E=e.fromBytes===void 0?g:e.fromBytes,A=r.mul(o.b,gr),$=r.is0(o.a)?B=>r.ZERO:B=>r.mul(o.a,B);function K(B){const y=r.sqr(B),_=r.mul(y,B);return r.add(r.add(_,r.mul(B,o.a)),o.b)}function X(B,y){const _=r.sqr(y),T=K(B);return r.eql(_,T)}if(!X(o.Gx,o.Gy))throw new Error("bad curve params: generator point");const Q=r.mul(r.pow(o.a,gr),Dc),q=r.mul(r.sqr(o.b),BigInt(27));if(r.is0(r.add(Q,q)))throw new Error("bad curve params: a or b");function fe(B,y,_=!1){if(!r.isValid(y)||_&&r.is0(y))throw new Error(`bad point coordinate ${B}`);return y}function we(B){if(!(B instanceof k))throw new Error("Weierstrass Point expected")}function Se(B){if(!a||!a.basises)throw new Error("no endo");return Fc(B,a.basises,s.ORDER)}function ee(B,y,_,T){if(!s.isValid(T))throw new RangeError("invalid scalar: out of range");if(a){const{k1neg:m,k1:w,k2neg:p,k2:v}=Se(T),x=new k(r.mul(_.X,a.beta),_.Y,_.Z);B.push(m?_.negate():_,p?x.negate():x),y.push(w,v)}else B.push(_),y.push(T)}const ye=new WeakSet;class k{static BASE=new k(o.Gx,o.Gy,r.ONE);static ZERO=new k(r.ZERO,r.ONE,r.ZERO);static Fp=r;static Fn=s;X;Y;Z;constructor(y,_,T){this.X=fe("x",y),this.Y=fe("y",_,!0),this.Z=fe("z",T),Object.freeze(this)}static CURVE(){return o}static fromAffine(y){const{x:_,y:T}=y||{};if(!y||!r.isValid(_)||!r.isValid(T))throw new Error("invalid affine point");if(y instanceof k)throw new Error("projective point not allowed");return r.is0(_)&&r.is0(T)?k.ZERO:new k(_,T,r.ONE)}static fromBytes(y){const _=k.fromAffine(E(Le(y,void 0,"point")));return _.assertValidity(),_}static fromHex(y){return k.fromBytes(Lr(y))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(y=6,_=!0){return le.setWindowSize(this,y),_||this.multiply(gr),this}assertValidity(){const y=this;if(y.is0()){if(e.allowInfinityPoint&&r.is0(y.X)&&r.eql(y.Y,r.ONE)&&r.is0(y.Z))return;throw new Error("bad point: ZERO")}if(ye.has(y))return;const{x:_,y:T}=y.toAffine();if(!r.isValid(_)||!r.isValid(T))throw new Error("bad point: x or y not field elements");if(!X(_,T))throw new Error("bad point: equation left != right");if(!y.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");ye.add(y)}hasEvenY(){const{y}=this.toAffine();if(!r.isOdd)throw new Error("Field doesn't support isOdd");return!r.isOdd(y)}equals(y){we(y);const{X:_,Y:T,Z:m}=this,{X:w,Y:p,Z:v}=y,x=r.eql(r.mul(_,v),r.mul(w,m)),N=r.eql(r.mul(T,v),r.mul(p,m));return x&&N}negate(){return new k(this.X,r.neg(this.Y),this.Z)}double(){const{X:y,Y:_,Z:T}=this;let m=r.ZERO,w=r.ZERO,p=r.ZERO,v=r.mul(y,y),x=r.mul(_,_),N=r.mul(T,T),S=r.mul(y,_);return S=r.add(S,S),p=r.mul(y,T),p=r.add(p,p),m=$(p),w=r.mul(A,N),w=r.add(m,w),m=r.sub(x,w),w=r.add(x,w),w=r.mul(m,w),m=r.mul(S,m),p=r.mul(A,p),N=$(N),S=r.sub(v,N),S=$(S),S=r.add(S,p),p=r.add(v,v),v=r.add(p,v),v=r.add(v,N),v=r.mul(v,S),w=r.add(w,v),N=r.mul(_,T),N=r.add(N,N),v=r.mul(N,S),m=r.sub(m,v),p=r.mul(N,x),p=r.add(p,p),p=r.add(p,p),new k(m,w,p)}add(y){we(y);const{X:_,Y:T,Z:m}=this,{X:w,Y:p,Z:v}=y;let x=r.ZERO,N=r.ZERO,S=r.ZERO,R=r.mul(_,w),M=r.mul(T,p),F=r.mul(m,v),L=r.add(_,T),U=r.add(w,p);L=r.mul(L,U),U=r.add(R,M),L=r.sub(L,U),U=r.add(_,m);let V=r.add(w,v);return U=r.mul(U,V),V=r.add(R,F),U=r.sub(U,V),V=r.add(T,m),x=r.add(p,v),V=r.mul(V,x),x=r.add(M,F),V=r.sub(V,x),S=$(U),x=r.mul(A,F),S=r.add(x,S),x=r.sub(M,S),S=r.add(M,S),N=r.mul(x,S),M=r.add(R,R),M=r.add(M,R),F=$(F),U=r.mul(A,U),M=r.add(M,F),F=r.sub(R,F),F=$(F),U=r.add(U,F),R=r.mul(M,U),N=r.add(N,R),R=r.mul(V,U),x=r.mul(L,x),x=r.sub(x,R),R=r.mul(L,M),S=r.mul(V,S),S=r.add(S,R),new k(x,N,S)}subtract(y){return we(y),this.add(y.negate())}is0(){return this.equals(k.ZERO)}multiply(y){if(!s.isValidNot0(y))throw new RangeError("invalid scalar: out of range");const{p:_,f:T}=le.mulSecret(this,y,i,Ie);return Ie([_,T])[0]}multiplyUnsafe(y){const _=this,T=y;if(!s.isValid(T))throw new RangeError("invalid scalar: out of range");if(T===rt||_.is0())return k.ZERO;if(T===yt)return _;if(le.hasWindowSize(this))return le.mulUnsafe(_,T,Ie);const m=[],w=[];return ee(m,w,_,T),Ir(k,m,w)}mulAddUnsafe(y,_,T){we(_);const m=[],w=[];return ee(m,w,this,y),ee(m,w,_,T),Ir(k,m,w)}toAffine(y){const _=this;let T=y;if(T!=null&&!r.isValid(T))throw new RangeError('"invertedZ" expected valid field element');const{X:m,Y:w,Z:p}=_;if(r.eql(p,r.ONE))return{x:m,y:w};const v=_.is0();T==null&&(T=v?r.ONE:r.inv(p));const x=r.mul(m,T),N=r.mul(w,T),S=r.mul(p,T);if(v)return{x:r.ZERO,y:r.ZERO};if(!r.eql(S,r.ONE))throw new Error("invZ was invalid");return{x,y:N}}isTorsionFree(){const{isTorsionFree:y}=e;return i===yt?!0:y?y(k,this):le.mulUnsafe(this,c).is0()}clearCofactor(){const{clearCofactor:y}=e;return i===yt?this:y?y(k,this):this.multiplyUnsafe(i)}isSmallOrder(){return i===yt?this.is0():this.clearCofactor().is0()}toBytes(y=!0){return Rt(y,"isCompressed"),this.assertValidity(),b(k,this,y)}toHex(y=!0){return Vo(this.toBytes(y))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}const Ie=B=>Rc(k,B),le=new Ic(k,u);return le.bits>=6&&k.BASE.precompute(6),Object.freeze(k.prototype),Object.freeze(k),k}function ui(t){return Uint8Array.of(t?2:3)}function di(t,e){return{secretKey:e.BYTES,publicKey:1+t.BYTES,publicKeyUncompressed:1+2*t.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function Hc(t,e={}){fn(t);const{Fn:n}=t,r=e.randomBytes===void 0?Wr:e.randomBytes,s=Object.assign(di(t.Fp,n),{seed:Math.max(es(n.ORDER),16)});function o(h){try{const g=n.fromBytes(h);return n.isValidNot0(g)}catch{return!1}}function i(h,g){const{publicKey:b,publicKeyUncompressed:E}=s;try{const A=h.length;return g===!0&&A!==b||g===!1&&A!==E?!1:!!t.fromBytes(h)}catch{return!1}}function c(h){return h=h===void 0?r(s.seed):h,oi(Le(h,s.seed,"seed"),n.ORDER)}function a(h,g=!0){return t.BASE.multiply(n.fromBytes(h)).toBytes(g)}function l(h){const{secretKey:g,publicKey:b,publicKeyUncompressed:E}=s,A=n._lengths;if(!Zn(h))return;const $=Le(h,void 0,"key").length,K=$===b||$===E,X=$===g||!!A?.includes($);if(!(K&&X))return K}function u(h,g,b=!0){if(l(h)===!0)throw new Error("first arg must be private key");if(l(g)===!1)throw new Error("second arg must be public key");const E=n.fromBytes(h);return t.fromBytes(g).multiply(E).toBytes(b)}const d={isValidSecretKey:o,isValidPublicKey:i,randomSecretKey:c},f=kc(c,a);return Object.freeze(d),Object.freeze(s),Object.freeze({getPublicKey:a,getSharedSecret:u,keygen:f,Point:t,utils:d,lengths:s})}function zc(t,e,n={}){fn(t);const r=e;Po(r),dn(n,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});const s=Object.assign({},n),o=s.randomBytes===void 0?Wr:s.randomBytes,i=s.hmac===void 0?(w,p)=>Oc(r,w,p):s.hmac,{Fp:c,Fn:a}=t,{ORDER:l,BITS:u}=a,d=es(l),f=ii(o,d),{keygen:h,getPublicKey:g,getSharedSecret:b,utils:E,lengths:A}=Hc(t,s),$={prehash:!0,lowS:typeof s.lowS=="boolean"?s.lowS:!0,format:"compact",extraEntropy:!1},K=l*li+yt<c.ORDER;function X(w){const p=l>>yt;return w>p}function Q(w,p){if(!a.isValidNot0(p))throw new Error(`invalid signature ${w}: out of range 1..Point.Fn.ORDER`);return p}function q(){if(!c.isOdd)throw new Error("Field doesn't support isOdd")}function fe(w,p,v){return q(),(w===v?0:2)|Number(c.isOdd(p))}function we(){if(K)throw new Error('"recovered" sig type is not supported for cofactor >2 curves')}function Se(w,p){Mr(p);const v=A.signature,x=p==="compact"?v:p==="recovered"?v+1:void 0;return Le(w,x)}class ee{r;s;recovery;constructor(p,v,x){if(this.r=Q("r",p),this.s=Q("s",v),x!=null){if(we(),![0,1,2,3].includes(x))throw new Error("invalid recovery id");this.recovery=x}Object.freeze(this)}static fromBytes(p,v=$.format){Se(p,v);let x;if(v==="der"){const{r:M,s:F}=zs.toSig(Le(p));return new ee(M,F)}v==="recovered"&&(x=p[0],v="compact",p=p.subarray(1));const N=A.signature/2,S=p.subarray(0,N),R=p.subarray(N,N*2);return new ee(a.fromBytes(S),a.fromBytes(R),x)}static fromHex(p,v){return this.fromBytes(Lr(p),v)}assertRecovery(){const{recovery:p}=this;if(p==null)throw new Error("invalid recovery id: must be present");return p}addRecoveryBit(p){return new ee(this.r,this.s,p)}recoverPublicKey(p){const{r:v,s:x}=this,N=this.assertRecovery(),S=N===2||N===3?v+l:v;if(!c.isValid(S))throw new Error("invalid recovery id: sig.r+curve.n != R.x");const R=c.toBytes(S),M=t.fromBytes(ut(ui((N&1)===0),R)),F=a.inv(S),L=k(Le(p,void 0,"msgHash")),U=a.create(-L*F),V=a.create(x*F),C=t.BASE.mulAddUnsafe(U,M,V);if(C.is0())throw new Error("invalid recovery: point at infinify");return C.assertValidity(),C}hasHighS(){return X(this.s)}toBytes(p=$.format){if(Mr(p),p==="der")return Lr(zs.hexFromSig(this));const{r:v,s:x}=this,N=a.toBytes(v),S=a.toBytes(x);return p==="recovered"?(we(),ut(Uint8Array.of(this.assertRecovery()),N,S)):ut(N,S)}toHex(p){return Vo(this.toBytes(p))}}Object.freeze(ee.prototype),Object.freeze(ee);const ye=s.bits2int===void 0?function(p){if(p.length>8192)throw new Error("input is too large");const v=Wt(p),x=p.length*8-u;return x>0?v>>BigInt(x):v}:s.bits2int,k=s.bits2int_modN===void 0?function(p){return a.create(ye(p))}:s.bits2int_modN,Ie=Gr(u);function le(w){return Xo("num < 2^"+u,w,rt,Ie),a.toBytes(w)}function B(w,p){return Le(w,void 0,"message"),p?Le(r(w),void 0,"prehashed message"):w}function y(w,p,v){const{lowS:x,prehash:N,extraEntropy:S}=mr(v,$);w=B(w,N);const R=k(w),M=a.fromBytes(p);if(!a.isValidNot0(M))throw new Error("invalid private key");const F=[le(M),le(R)];if(S!=null&&S!==!1){const C=S===!0?o(A.secretKey):S;F.push(Le(C,void 0,"extraEntropy"))}const L=ut(...F),U=R;function V(C){const H=ye(C);if(!a.isValidNot0(H))return;const ce=t.BASE.multiply(H).toAffine(),re=a.create(ce.x);if(re===rt)return;let P;if(f!==void 0){const oe=Wt(oi(f(d),l)),$e=a.inv(a.mul(oe,H)),ue=a.mul(oe,U),me=a.mul(oe,M);P=a.create($e*a.create(ue+me*re))}else{const oe=bc(H,l);P=a.create(oe*a.create(U+re*M))}if(P===rt)return;let se=fe(ce.x,ce.y,re),he=P;return x&&X(P)&&(he=a.neg(P),se^=1),new ee(re,he,K?void 0:se)}return{seed:L,k2sig:V}}function _(w,p,v={}){const{seed:x,k2sig:N}=y(w,p,v);return fc(r.outputLen,a.BYTES,i)(x,N).toBytes(v.format)}function T(w,p,v,x={}){const{lowS:N,prehash:S,format:R}=mr(x,$);if(v=Le(v,void 0,"publicKey"),p=B(p,S),!Zn(w)){const M=w instanceof ee?", use sig.toBytes()":"";throw new Error("verify expects Uint8Array signature"+M)}Se(w,R);try{const M=ee.fromBytes(w,R),F=t.fromBytes(v);if(N&&M.hasHighS())return!1;const{r:L,s:U}=M,V=k(p),C=a.inv(U),H=a.create(V*C),ce=a.create(L*C),re=t.BASE.mulAddUnsafe(H,F,ce);if(re.is0())return!1;const P=re.toAffine();return!(a.create(P.x)!==L||R==="recovered"&&M.recovery!==fe(P.x,P.y,L))}catch{return!1}}function m(w,p,v={}){const{prehash:x}=mr(v,$);return p=B(p,x),ee.fromBytes(w,"recovered").recoverPublicKey(p).toBytes()}return Object.freeze({keygen:h,getPublicKey:g,getSharedSecret:b,utils:E,lengths:A,Point:t,sign:_,verify:T,recoverPublicKey:m,Signature:ee,hash:r})}const ns={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},Vc={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},Ys=BigInt(2);function Yc(t){const e=ns.p,n=BigInt(3),r=BigInt(6),s=BigInt(11),o=BigInt(22),i=BigInt(23),c=BigInt(44),a=BigInt(88),l=t*t*t%e,u=l*l*t%e,d=De(u,n,e)*u%e,f=De(d,n,e)*u%e,h=De(f,Ys,e)*l%e,g=De(h,s,e)*h%e,b=De(g,o,e)*g%e,E=De(b,c,e)*b%e,A=De(E,a,e)*E%e,$=De(A,c,e)*b%e,K=De($,n,e)*u%e,X=De(K,i,e)*g%e,Q=De(X,r,e)*l%e,q=De(Q,Ys,e);if(!kr.eql(kr.sqr(q),t))throw new Error("Cannot find square root");return q}const kr=jn(ns.p,{sqrt:Yc}),Wc=qc(ns,{Fp:kr,endo:Vc}),Zc=zc(Wc,Un);var jc=t=>t.trim().toUpperCase().startsWith("LNURL1"),fi=t=>{const e=new TextEncoder().encode(t);return kn.encode("lnurl",kn.toWords(e),2048).toUpperCase()},Xc=t=>{const e=t.trim().toUpperCase();if(!e.startsWith("LNURL1"))return null;try{const n=kn.decode(`LNURL1${e.slice(6)}`,2048);return new TextDecoder().decode(kn.fromWords(n.words))}catch{return null}},Gc=["127.0.0.1","0.0.0.0","localhost"],Xn=t=>Gc.includes(t)||t.endsWith(".onion"),rn=t=>{let e;try{e=new URL(t)}catch{return!1}return e.protocol==="https:"?!0:e.protocol==="http:"?Xn(e.hostname):!1},hi=t=>{const e=t.match(/^(?:lnurlw|lnurlp|lnurlc|keyauth):\/\/([^/]+)/i);if(!e)return t;const n=e[1].split(":")[0],r=Xn(n)?"http":"https";return t.replace(/^[a-z]+:\/\//i,`${r}://`)},Kc=t=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t.trim()),Ws=t=>{const[e,n]=t.trim().split("@");return`${Xn(n.split(":")[0])?"http":"https"}://${n}/.well-known/lnurlp/${e}`},Jc=t=>{const e=t.trim().split("@");if(e.length!==2)return!1;const[n,r]=e;return!n||!r?!1:Xn(r.split(":")[0])},Qc=t=>{const e=t.trim();if(!e)return null;if(jc(e)){const n=Xc(e);return n&&rn(n)?n:null}if(/^(lnurlw|lnurlp|lnurlc|keyauth):\/\//i.test(e)){const n=hi(e);return rn(n)?n:null}return Kc(e)||Jc(e)?Ws(e):/^https?:\/\//i.test(e)&&rn(e)?e:null},rs=t=>Zt(Un(Wn(t))),el=()=>Zt(crypto.getRandomValues(new Uint8Array(32))),tl=t=>/^[0-9a-fA-F]{64}$/.test(t.trim()),Gn=t=>{try{return new URL(t).searchParams.get("k1")?.toLowerCase()??null}catch{return null}},nl=t=>{try{return new URL(t).searchParams.get("sig")}catch{return null}},rl=t=>{const e=Qc(t),n=e?Gn(e):null;return!e||!n||!tl(n)?null:e},pi=(t,e,n)=>{const r=new URL(hi(t.trim()));return r.searchParams.set("k1",e.trim().toLowerCase()),n!==void 0&&r.searchParams.set("amount",String(n)),r.toString()},br=(t,e,n,r)=>{const s=new URL(t);return s.searchParams.set("k1",e.toLowerCase()),s.searchParams.set("amount",String(n)),r?s.searchParams.set("sig",r):s.searchParams.delete("sig"),s.toString()},sl=qo("Lightning Signed Message:"),ol=(t,e)=>`LNURLcash:${e}:${rs(t)}`,il=(t,e)=>Un(Un(new Uint8Array([...sl,...qo(ol(t,e))]))),mi=(t,e,n,r)=>{let s;try{s=Wn(n)}catch{return!1}if(s.length!==65)return!1;let o;try{o=il(t,e)}catch{return!1}const i=r.trim().toLowerCase(),c=new Uint8Array([s[64],...s.subarray(0,64)]);for(const a of[c,s])try{const l=Zc.recoverPublicKey(a,o,{prehash:!1});if(Zt(l)===i)return!0}catch{}return!1},al=t=>{let e;try{e=JSON.parse(t)}catch{return null}if(!Array.isArray(e))return null;for(const n of e){if(!Array.isArray(n)||n[0]!=="text/plain")continue;const r=typeof n[1]=="string"&&n[1].match(/^Mint fees:\s*(\d+)\s*,\s*(\d+)\s*$/);if(!r)continue;const s=Number(r[1]),o=Number(r[2]);if(!(!Number.isSafeInteger(s)||!Number.isSafeInteger(o))&&!(o>=1e6))return s===0&&o===0?null:{baseFeeMsat:s,feePpm:o}}return null},cl=(t,e)=>Math.floor(t/1e6)*e+Math.floor(t%1e6*e/1e6),Or=(t,e)=>Math.max(0,t-e.baseFeeMsat-cl(t,e.feePpm)),ll=(t,e)=>{if(t<=0)return 0;let n=t+e.baseFeeMsat;for(;Or(n,e)<t;)n*=2;let r=0;for(;r<n;){const s=Math.floor((r+n)/2);Or(s,e)>=t?n=s:r=s+1}return r},ul=t=>(t/1e4).toFixed(4).replace(/\.?0+$/,""),dl={"":1e11,m:1e8,u:1e5,n:100,p:.1},fl=t=>{const e=t.trim().toLowerCase(),n=e.lastIndexOf("1");if(n<2)return null;const s=e.slice(0,n).match(/^ln(?:bc|tb|bcrt|tbs|sb)(\d+)?([munp])?$/);if(!s)return null;const[,o,i]=s;if(!o)return null;const c=Number(o)*dl[i||""];return Number.isInteger(c)?c:null},Kn=class extends Error{constructor(t){super(t),this.name=new.target.name}},Dn=class extends Kn{},St=class extends Kn{},$t=class extends Kn{reason;constructor(t){super(t||"The service rejected the request."),this.reason=t}},gi=class extends $t{constructor(t="pending"){super(t),this.message="This note has another operation in progress - try again in a moment."}},ss=class extends $t{constructor(t){super(t),this.message=`This note has already been spent (service says: "${t}").`}},os=class extends $t{constructor(t){super(t),this.message=`The service doesn't recognise this note (service says: "${t}").`}},Ke=class extends Kn{},bi=class extends Ke{newSecrets;constructor(t,e){super(t),this.newSecrets=e}},wi=t=>/spent/i.test(t)?new ss(t):/unknown|not found/i.test(t)?new os(t):new $t(t),Nt=(t={})=>({fetch:t.fetch??((...e)=>globalThis.fetch(...e)),timeoutMs:t.timeoutMs??3e4,offline:t.offline??!1,randomSecret:t.randomSecret??el}),hl=new Set([301,302,303,307,308]),pl=5,Zs=1048576,ml=async(t,e)=>{let n=t;for(let r=0;;r++){let s;try{s=await e.fetch(n,{signal:AbortSignal.timeout(e.timeoutMs),redirect:"manual"})}catch(c){throw c.name==="TimeoutError"?new Ke("The service took too long to respond - its answer, if any, was lost."):new Ke("Failed to reach the service - it may be offline, or may not allow cross-origin requests.")}const o=s.headers.get("location");if(!hl.has(s.status)||!o)return s;if(r>=pl)throw new Ke("The service redirected too many times.");let i;try{i=new URL(o,n).toString()}catch{i=null}if(!i||!rn(i))throw new Ke("The service tried to redirect somewhere this library will not fetch - the original request may already have been processed.");n=i}},gl=async t=>{const e=Number(t.headers.get("content-length"));if(Number.isFinite(e)&&e>Zs)throw new Ke("The service returned an oversized response.");if(!t.body)return"";const n=t.body.getReader(),r=[];let s=0;for(;;){const{done:c,value:a}=await n.read();if(c)break;if(s+=a.byteLength,s>Zs)throw await n.cancel().catch(()=>{}),new Ke("The service returned an oversized response.");r.push(a)}const o=new Uint8Array(s);let i=0;for(const c of r)o.set(c,i),i+=c.byteLength;return new TextDecoder().decode(o)},jt=async(t,e)=>{if(e.offline)throw new Dn("Offline mode is on - no request was made.");if(!rn(t.toString()))throw new Dn("Refusing to fetch that URL - only https, or http to a loopback or .onion host, is allowed.");const n=await ml(t.toString(),e),r=await gl(n);let s;try{s=JSON.parse(r)}catch{throw new Ke("The service returned an unreadable response.")}if(s?.status==="ERROR")throw new $t(typeof s.reason=="string"?s.reason:"");return s},Ur=async(t,e={})=>{const n=Nt(e),r=new URL(t);r.searchParams.delete("sig");let s;try{s=await jt(r,n)}catch(i){throw i instanceof $t?wi(i.reason):i}if(s?.tag!=="withdrawRequest"||typeof s.callback!="string"||typeof s.k1!="string"||typeof s.maxWithdrawable!="number"||!Number.isSafeInteger(s.maxWithdrawable)||s.maxWithdrawable<0||s.minWithdrawable!==void 0&&(typeof s.minWithdrawable!="number"||!Number.isSafeInteger(s.minWithdrawable)||s.minWithdrawable<0||s.minWithdrawable>s.maxWithdrawable))throw new St("Not a withdrawRequest (unexpected response).");const o=Gn(t);if(o&&s.k1.toLowerCase()!==o)throw new St("The service echoed back a different k1 than was queried - the note may have been redeemed elsewhere, or the service isn't spec-compliant.");return s},bl=async(t,e={})=>{const n=await jt(t,Nt(e));if(n?.tag!=="withdrawRequest"||typeof n.callback!="string"||typeof n.payLink!="string"||typeof n.maxWithdrawable!="number")throw new St("Not a mint address response (unexpected shape).");const{mintPubkey:r,...s}=n;return{...s,nodePubkey:r}},wl=async(t,e,n)=>{const r=Nt(n);let s;try{s=new URL(t)}catch{throw new Dn("The service provided an invalid callback URL.")}if(!e.some(([i])=>i==="k1"))throw new Dn("At least one k1 is required - there is no note to operate on.");for(const[i,c]of e)s.searchParams.append(i,c);let o;try{o=await jt(s,r)}catch(i){throw i instanceof $t?i.reason==="pending"?new gi(i.reason):wi(i.reason):i}if(o?.status!=="OK")throw new Ke("The service did not confirm the operation - it may still have been applied.");return o},yl=async(t,e,n,r={})=>({signature:(await wl(t,[["k1",e],["h",n]],r)).sig}),vl=async(t,e,n={})=>{const s=Nt(n).randomSecret();try{const o=await yl(t,e,rs(s),n);return{k1:s,signature:o.signature}}catch(o){throw o instanceof Ke?new bi(o.message,[s]):o}},El=async(t,e={})=>{const n=await jt(t,Nt(e));if(n?.tag!=="payRequest"||typeof n.callback!="string")throw new St("Not a payRequest (unexpected response).");const r=typeof n.metadata=="string"?al(n.metadata):null;return{...n,mintFee:r??void 0}},_l=async(t,e,n={})=>{const r=new URL(t);r.searchParams.set("amount",String(e));const s=await jt(r,Nt(n));if(typeof s?.pr!="string")throw new St("The service did not return an invoice.");const o=fl(s.pr);if(o!==null&&o!==e)throw new St(`The service returned an invoice for ${o} msat, not the ${e} requested.`);return{pr:s.pr,verify:typeof s.verify=="string"?s.verify:void 0,disposable:s.disposable!==!1}},Tl=async(t,e={})=>{const n=await jt(t,Nt(e));if(typeof n?.settled!="boolean"||typeof n?.pr!="string")throw new St("The service returned an unexpected verify response.");return{settled:n.settled,preimage:typeof n.preimage=="string"?n.preimage:null,pr:n.pr}};const Te=(t,e="0 0 24 24")=>`<svg viewBox="${e}" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${t}</svg>`,J={logo:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="9"/><path d="M12 7.6v8.8"/><path d="M15.4 9.4c-.7-1.1-1.9-1.8-3.4-1.8-2 0-3.6 1.1-3.6 2.7 0 3.4 7.2 1.8 7.2 5 0 1.6-1.6 2.7-3.6 2.7-1.5 0-2.7-.7-3.4-1.8"/></svg>',bolt:Te('<path d="M13 2 4.5 13.5H11L9.5 22 18 10.5h-6.5L13 2z"/>'),mint:Te('<circle cx="12" cy="12" r="8"/><path d="M12 8.2v7.6"/><path d="M15 9.8c-.6-1-1.7-1.6-3-1.6-1.8 0-3.2 1-3.2 2.4 0 3 6.4 1.6 6.4 4.4 0 1.4-1.4 2.4-3.2 2.4-1.3 0-2.4-.6-3-1.6"/>'),check:Te('<path d="m4.5 12.5 5 5 10-11"/>'),shield:Te('<path d="M12 2.5 4.5 5.5v6c0 4.6 3.2 8 7.5 10 4.3-2 7.5-5.4 7.5-10v-6L12 2.5z"/><path d="m8.8 12 2.2 2.2 4.2-4.6"/>'),search:Te('<circle cx="11" cy="11" r="6.5"/><path d="m20 20-4.4-4.4"/>'),qr:Te('<rect x="3.5" y="3.5" width="7" height="7" rx="1.5"/><rect x="13.5" y="3.5" width="7" height="7" rx="1.5"/><rect x="3.5" y="13.5" width="7" height="7" rx="1.5"/><path d="M13.5 13.5h3v3h-3z"/><path d="M20.5 13.5v3"/><path d="M13.5 20.5h3"/><path d="M20.5 20.5v.01"/>'),copy:Te('<rect x="9" y="9" width="12" height="12" rx="2.5"/><path d="M5 15H4.5A1.5 1.5 0 0 1 3 13.5v-9A1.5 1.5 0 0 1 4.5 3h9A1.5 1.5 0 0 1 15 4.5V5"/>'),paste:Te('<rect x="5" y="4" width="14" height="17" rx="2.5"/><path d="M9 4a3 3 0 0 1 6 0"/><path d="M9 12h6"/><path d="M9 16h4"/>'),back:Te('<path d="m14.5 5.5-6.5 6.5 6.5 6.5"/>'),note:Te('<rect x="2.5" y="6" width="19" height="12" rx="3"/><circle cx="12" cy="12" r="2.6"/><path d="M6 9.5v.01"/><path d="M18 14.5v.01"/>'),eye:Te('<path d="M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12z"/><circle cx="12" cy="12" r="3"/>'),x:Te('<path d="m6 6 12 12"/><path d="m18 6-12 12"/>'),hourglass:Te('<path d="M7 3h10"/><path d="M7 21h10"/><path d="M8 3c0 4 3 5 3 7s-3 3-3 7"/><path d="M16 3c0 4-3 5-3 7s3 3 3 7"/>'),refresh:Te('<path d="M20 11.5A8 8 0 1 0 18.4 17"/><path d="M20 5v6.5h-6.5"/>'),wallet:Te('<rect x="2.5" y="6" width="19" height="13" rx="3.5"/><path d="M2.5 10h12"/><rect x="15" y="11.5" width="4.5" height="3.5" rx="1.75" fill="currentColor" stroke="none"/>'),globe:Te('<circle cx="12" cy="12" r="9"/><path d="M3 12h18"/><path d="M12 3c2.6 2.5 4 5.6 4 9s-1.4 6.5-4 9c-2.6-2.5-4-5.6-4-9s1.4-6.5 4-9z"/>'),external:Te('<path d="M14 4h6v6"/><path d="m20 4-9 9"/><path d="M19 13.5V18a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h4.5"/>'),scale:Te('<path d="M12 4v16"/><path d="M7 20h10"/><path d="M4 7l16 0"/><path d="m6.5 7-2.5 5.5a2.6 2.6 0 0 0 5 0L6.5 7z"/><path d="m17.5 7-2.5 5.5a2.6 2.6 0 0 0 5 0L17.5 7z"/>')},xl=(t,e=360)=>{const n=[];for(let r=0;r<=e;r++){const s=r/e*Math.PI*2,o=t.radius+t.amplitude*Math.sin(t.lobes*s+t.phase),i=(o*Math.cos(s)).toFixed(2),c=(o*Math.sin(s)).toFixed(2);n.push(`${r===0?"M":"L"}${i} ${c}`)}return n.join("")+"Z"},is=(t,e="")=>{const n=[];for(let o=0;o<9;o++)n.push({radius:34+o*5.2,amplitude:7+o%3*4,lobes:o%2===0?9:12,phase:o*Math.PI/9,opacity:.5-o*.035});const s=n.map(o=>`<path d="${xl(o)}" opacity="${o.opacity.toFixed(3)}"/>`).join("");return`<svg class="${e}" width="${t}" height="${t}" viewBox="-92 -92 184 184" fill="none" stroke="currentColor" stroke-width="0.55" aria-hidden="true">${s}</svg>`},js=["","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE"],Rl=["TEN","ELEVEN","TWELVE","THIRTEEN","FOURTEEN","FIFTEEN","SIXTEEN","SEVENTEEN","EIGHTEEN","NINETEEN"],Sl=["","","TWENTY","THIRTY","FORTY","FIFTY","SIXTY","SEVENTY","EIGHTY","NINETY"],Xs=t=>{const e=[],n=Math.floor(t/100),r=t%100;if(n&&e.push(`${js[n]} HUNDRED`),r>=10&&r<20)e.push(Rl[r-10]);else{const s=Math.floor(r/10),o=r%10;s&&e.push(Sl[s]),o&&e.push(js[o])}return e.join(" ")},Al=t=>{if(!Number.isSafeInteger(t)||t<1||t>999999999999)return t.toLocaleString("en-GB").replace(/,/g," ");const e=[],n=[[1e9,"BILLION"],[1e6,"MILLION"],[1e3,"THOUSAND"]];let r=t;for(const[s,o]of n){const i=Math.floor(r/s);i&&e.push(`${Xs(i)} ${o}`),r%=s}return r&&e.push(Xs(r)),e.join(" ")},wr=t=>t.replace(/[&<>"']/g,e=>`&#${e.charCodeAt(0)};`),Gs=()=>`<svg class="nb-seal" viewBox="0 0 120 120" aria-hidden="true">
2
+ <defs><path id="sealring" d="M60 14a46 46 0 1 1-.01 0z"/></defs>
3
+ <circle cx="60" cy="60" r="57" fill="none" stroke="currentColor" stroke-width="1.4"/>
4
+ <circle cx="60" cy="60" r="44" fill="none" stroke="currentColor" stroke-width="0.8"/>
5
+ <text font-size="9.5" letter-spacing="2.2" fill="currentColor" font-family="IBM Plex Mono, monospace">
6
+ <textPath href="#sealring" startOffset="0">MONEYER · STRUCK ON LIGHTNING ·</textPath>
7
+ </text>
8
+ ${is(64).replace("<svg ",'<svg x="28" y="28" ')}
9
+ </svg>`,Bl=t=>{const e=(n,r)=>`${n>=100?String(Math.round(n)):String(Math.round(n*10)/10)}${r}`;return t>=1e9?e(t/1e9,"B"):t>=1e6?e(t/1e6,"M"):t.toLocaleString("en-GB").replace(/,/g," ")},Mt=(t,e,n)=>{const r=Bl(t),s=Math.min(4.6,26/Math.max(r.length,2));return`<b class="nb-corner ${e}" style="font-size:${s.toFixed(2)}cqw"${n?" data-value":""}>${r}</b>`},yi=t=>{const e=`${t.serialHex.slice(0,4)}…${t.serialHex.slice(-4)}`.toUpperCase(),n=Al(t.sats),r=t.variant.kind==="live",s=(i,c)=>`
10
+ <div class="nb-cartouche">
11
+ <div class="nb-title">LNURLCASH<br/> BEARER NOTE</div>
12
+ <div class="nb-words${n.length>14?" long":""}">${wr(n)}</div>
13
+ <div class="nb-sats">SATS</div>
14
+ <div class="nb-promise">Pays the bearer on demand,<br/>no questions asked</div>
15
+ ${i?'<div class="nb-foot">32 BYTES · A CLAIM ON A VERY SMALL NODE<br/>NOT LEGAL TENDER</div>':""}
16
+ <div class="nb-serial">Nº ${wr(e)} · SERIES 2026${c?` · ${wr(t.host)}`:""}</div>
17
+ </div>`,o=document.createElement("template");if(r){const i=Co(t.variant.qrText,{border:1});o.innerHTML=`
18
+ <div class="nb nb--p" role="img" aria-label="A bearer note for ${t.sats} sats">
19
+ ${Mt(t.sats,"tl",!0)}${Mt(t.sats,"tr",!1)}
20
+ ${s(!1,!1)}
21
+ <div class="nb-panel nb-panel--captioned">
22
+ <div class="covered">
23
+ <div class="qr nb-qr" role="img" aria-label="The note itself">${i}</div>
24
+ <canvas class="scratch-foil" tabindex="0" role="button" aria-label="Scratch away the silver to reveal the code. Press Enter to reveal it at once."></canvas>
25
+ </div>
26
+ <div class="nb-panelfoot"><span>32 BYTES · A CLAIM ON A VERY SMALL NODE</span><br/><span>· NOT LEGAL TENDER ·</span></div>
27
+ </div>
28
+ ${Gs()}
29
+ </div>`}else o.innerHTML=`
30
+ <div class="nb-specimen-pair" aria-label="A specimen bearer note">
31
+ <div class="nb nb--l" role="img">
32
+ ${Mt(t.sats,"tl",!1)}${Mt(t.sats,"tr",!1)}
33
+ ${s(!0,!0)}
34
+ <div class="nb-overstamp">SPECIMEN</div>
35
+ </div>
36
+ <div class="nb nb--p" role="img">
37
+ ${Mt(t.sats,"tl",!1)}${Mt(t.sats,"tr",!1)}
38
+ ${s(!1,!1)}
39
+ <div class="nb-panel"><div class="nb-foot nb-foot--panel">32 BYTES<br/>A CLAIM ON A<br/>VERY SMALL NODE<br/>· NOT LEGAL TENDER ·</div></div>
40
+ ${Gs()}
41
+ <div class="nb-overstamp">SPECIMEN</div>
42
+ </div>
43
+ </div>`;return o.content.firstElementChild},je=window.__MINT__??{username:"mint"},qn=je.origin??(location.port==="5173"?"http://127.0.0.1:3737":location.origin),ft=new URL(qn).host,Ks=document.getElementById("app");let zt=0,Jn=null,be=null,Ve=null;const W=t=>{const e=document.createElement("template");return e.innerHTML=t.trim(),e.content.firstElementChild},Pe=t=>t.replace(/[&<>"']/g,e=>`&#${e.charCodeAt(0)};`),xe=t=>{const e=t/1e3;return(Number.isInteger(e)?e.toLocaleString("en-GB"):e.toFixed(3)).replace(/,/g," ")},Hn=(t,e="")=>{const n=W(`<div class="toast ${e}"></div>`);n.textContent=t,document.getElementById("toasts").append(n),Re(n,{opacity:[0,1],y:[16,0],duration:320,ease:"outCubic"}),setTimeout(()=>{Re(n,{opacity:0,y:10,duration:280,ease:"inCubic",onComplete:()=>n.remove()})},3600)},un=async(t,e)=>{try{await navigator.clipboard.writeText(t),Hn(`${e} copied`,"ok")}catch{Hn("Copying is blocked here - long-press to copy instead.","err")}},zn=t=>{t.classList.add("burst-host");const e=[];for(let n=0;n<18;n++){const r=W('<i class="spark"></i>');r.style.left="50%",r.style.top="40%",t.append(r),e.push(r)}Re(e,{x:()=>lt(-150,150),y:()=>lt(-120,90),scale:[1,0],opacity:[1,0],duration:900,delay:Yn(12),ease:"outExpo",onComplete:()=>e.forEach(n=>n.remove())})},$l=(t,e)=>{const n={value:0};Re(n,{value:e/1e3,duration:1100,ease:"outExpo",onUpdate:()=>t.textContent=xe(Math.round(n.value)*1e3)})},Nl=(t,e=1600)=>{const n=t.querySelectorAll("path");if(n.length)try{const r=va(n);Re(r,{draw:["0 0","0 1"],duration:e,delay:Yn(90),ease:"inOutQuad"})}catch{}},vi=t=>{Re(t,{scale:[2.2,1],opacity:[0,1],rotate:["-2deg",t.style.getPropertyValue("--tilt")||"-6deg"],duration:480,ease:"outBack(2.2)"}),navigator.vibrate&&navigator.vibrate(20)},Cl=t=>{const e=t.textContent??"";t.textContent="";const n=[...e].map(r=>{const s=W(`<b style="display:inline-block">${r===" "?"&nbsp;":Pe(r)}</b>`);return t.append(s),s});Re(n,{opacity:[0,1],y:[14,0],delay:Yn(55,{start:120}),duration:500,ease:"outCubic"})},At=t=>{zt+=1,Ks.replaceChildren(t());const e=Ks.firstElementChild;Re(e,{opacity:[0,1],y:[10,0],duration:320,ease:"outCubic"});const n=e.querySelectorAll(".tile, .step, .kv, .result");n.length&&Re(n,{opacity:[0,1],y:[14,0],delay:Yn(40),duration:360,ease:"outCubic"})},Ei=async(t,e)=>{const n=t.innerHTML;t.disabled=!0,t.innerHTML=`${J.refresh} <span>Working…</span>`,t.classList.add("pulse");try{return await e()}catch(r){Hn(r.message||"Something went wrong.","err");return}finally{t.disabled=!1,t.classList.remove("pulse"),t.innerHTML=n}},Qn=(t,e)=>{const n=W(`<div class="top">
44
+ <button class="btn-icon" data-back aria-label="Back">${J.back}</button>
45
+ <div class="brand">${t}</div>
46
+ <span class="spacer"></span>
47
+ </div>`);return n.querySelector("[data-back]").addEventListener("click",e),n},_i=(t,e)=>{const n=W(e?`<a class="qr" href="${e}" role="img" aria-label="QR code"></a>`:'<div class="qr" role="img" aria-label="QR code"></div>');return n.innerHTML=Co(t,{border:1}),n},Js=t=>{const e=t.clientWidth,n=t.clientHeight;if(!e||!n)return;const r=Math.min(window.devicePixelRatio||1,3);t.width=Math.round(e*r),t.height=Math.round(n*r);const s=t.getContext("2d",{willReadFrequently:!0});if(!s)return;s.scale(r,r);const o=s.createLinearGradient(0,0,e,n);for(const[c,a]of[[0,"#cfd4db"],[.22,"#eef1f5"],[.42,"#a7b0bc"],[.58,"#dfe3e9"],[.78,"#98a1ad"],[1,"#d5dae1"]])o.addColorStop(c,a);s.fillStyle=o,s.fillRect(0,0,e,n);for(let c=0;c<900;c++){const a=Math.random()>.5;s.fillStyle=a?`rgba(255,255,255,${Math.random()*.1})`:`rgba(40,46,54,${Math.random()*.07})`,s.fillRect(Math.random()*e,Math.random()*n,2+Math.random()*10,1)}s.fillStyle="rgba(255,255,255,0.14)",s.beginPath(),s.moveTo(e*.15,0),s.lineTo(e*.38,0),s.lineTo(e*.12,n),s.lineTo(-e*.1,n),s.closePath(),s.fill();const i=Math.max(11,e*.055);s.textAlign="center",s.font=`600 ${i}px 'IBM Plex Mono', monospace`,s.fillStyle="rgba(255,255,255,0.55)",s.fillText("SCRATCH TO REVEAL",e/2,n/2+1),s.fillStyle="rgba(44,50,58,0.72)",s.fillText("SCRATCH TO REVEAL",e/2,n/2),s.font=`500 ${Math.max(8.5,e*.032)}px 'IBM Plex Mono', monospace`,s.fillStyle="rgba(44,50,58,0.6)",s.fillText("THE CODE BENEATH IS THE MONEY",e/2,n/2+i*1.5),s.strokeStyle="rgba(44,50,58,0.4)",s.lineWidth=1,s.strokeRect(3.5,3.5,e-7,n-7),t.style.background="none"},Ll=(t,e,n)=>{const r=W('<i class="foil-flake" aria-hidden="true"></i>');r.style.left=`${e}px`,r.style.top=`${n}px`,t.append(r),Re(r,{x:lt(-22,22),y:lt(18,60),rotate:`${lt(-200,200)}deg`,opacity:[1,0],duration:lt(400,750),ease:"inQuad",onComplete:()=>r.remove()})},Il=(t,e)=>{navigator.vibrate&&navigator.vibrate([12,30,20]),Re(e,{opacity:[1,0],scale:[1,1.05],duration:380,ease:"outCubic",onComplete:()=>e.remove()});const n=t.querySelector(".covered .qr");n&&Re(n,{scale:[.985,1.02,1],duration:480,ease:"outBack(1.6)"});const r=t.querySelector(".nb-panel");zn(r??t);const s=t.querySelector(".nb-seal");s&&Re(s,{scale:[1.9,1],opacity:[0,.8],rotate:["-6deg","8deg"],duration:520,delay:260,ease:"outBack(2)"});const o=t.querySelector(".nb-serial");o&&Re(o,{opacity:[0,1],y:[4,0],duration:420,delay:380,ease:"outCubic"}),setTimeout(()=>{t.classList.add("glint"),setTimeout(()=>t.classList.remove("glint"),1500)},320)},Ml=t=>{const e=t.querySelector("canvas.scratch-foil");if(!e)return;const n=e.parentElement;let r=!1,s=!1,o=0,i=0,c=0,a=!1;if("ResizeObserver"in window){const h=new ResizeObserver(()=>{!s&&e.clientWidth>0&&(s=!0,Js(e),h.disconnect())});h.observe(e)}else Js(e);const l=()=>{r||(r=!0,Il(t,e))},u=()=>{const h=e.getContext("2d",{willReadFrequently:!0});if(!h||!e.width)return!1;const g=h.getImageData(0,0,e.width,e.height).data;let b=0,E=0;for(let A=3;A<g.length;A+=92)E++,g[A]<40&&b++;return E>0&&b/E>.45},d=(h,g)=>{const b=e.getContext("2d",{willReadFrequently:!0});if(!b)return;const E=e.width/e.clientWidth,A=Math.max(16,e.clientWidth*.09);b.save(),b.setTransform(E,0,0,E,0,0),b.globalCompositeOperation="destination-out",b.lineWidth=A,b.lineCap="round",b.lineJoin="round",b.beginPath(),b.moveTo(i,c),b.lineTo(h,g),b.stroke(),b.restore(),o++,o%4===0&&Ll(n,h,g),navigator.vibrate&&o%7===0&&navigator.vibrate(4),o%10===0&&u()&&l()},f=h=>{const g=e.getBoundingClientRect();return{x:h.clientX-g.left,y:h.clientY-g.top}};e.addEventListener("pointerdown",h=>{if(r)return;h.preventDefault(),e.setPointerCapture(h.pointerId),a=!0;const{x:g,y:b}=f(h);i=g,c=b,d(g,b)}),e.addEventListener("pointermove",h=>{if(!a||r)return;const{x:g,y:b}=f(h);d(g,b),i=g,c=b});for(const h of["pointerup","pointercancel"])e.addEventListener(h,()=>{a=!1,!r&&u()&&l()});e.addEventListener("keydown",h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),l())})},vt=t=>Ve?Or(t,Ve):t,Qs=t=>Ve?Math.ceil(ll(t,Ve)/1e3)*1e3:t,Ti=()=>{if(!Ve)return"none - notes hold exactly what you pay";const t=[];return Ve.baseFeeMsat>0&&t.push(`${xe(Ve.baseFeeMsat)} sat flat`),Ve.feePpm>0&&t.push(`${ul(Ve.feePpm)}%`),t.join(" + ")},Pr=async()=>{At(()=>W(`<div class="view center" style="justify-content:center">
48
+ <div class="hero"><span class="mark pulse">${is(120)}</span></div>
49
+ </div>`));try{const[t,e]=await Promise.all([El(`${qn}/.well-known/lnurlp/${je.username}`),bl(`${qn}/.well-known/lnurlw/${je.username}`).catch(()=>null)]);if(Jn=t,be=e,Ve=t.mintFee??null,be?.nodeColor&&/^#[0-9a-fA-F]{6}$/.test(be.nodeColor)&&document.querySelector('meta[name="theme-color"]')?.setAttribute("content",be.nodeColor),location.hash==="#/proof"){Pt({url:pi(t.withdrawLink??`lnurlw://${ft}/w`,"11".repeat(32),6e14),amountMsat:6e14,verified:!0,secured:!0});return}hn()}catch(t){At(()=>{const n=W(`<div class="view center" style="justify-content:center">
50
+ <div class="result bad"><span class="stamp" style="--tilt:-6deg">Held</span><b>The mint is not answering</b><p></p>
51
+ <p class="pulse" style="color:var(--dim);font-size:13px;font-style:italic">retrying on its own…</p>
52
+ <button class="btn">${J.refresh}<span>Try again now</span></button></div>
53
+ </div>`);return n.querySelector("p").textContent=t.message||"Could not reach the mint.",n.querySelector("button").addEventListener("click",()=>{Pr()}),vi(n.querySelector(".stamp")),n});const e=zt;setTimeout(()=>{zt===e&&Pr()},6e3)}},kl=[["01","https://github.com/lnurl/luds/blob/luds/01.md"],["03","https://github.com/lnurl/luds/blob/luds/03.md"],["06","https://github.com/lnurl/luds/blob/luds/06.md"],["11","https://github.com/lnurl/luds/blob/luds/11.md"],["16","https://github.com/lnurl/luds/blob/luds/16.md"],["17","https://github.com/lnurl/luds/blob/luds/17.md"],["21","https://github.com/lnurl/luds/blob/luds/21.md"],["25","https://github.com/lnurl/luds/pull/301"]],hn=()=>{const t=`${je.username}@${ft}`,e=fi(`${qn}/.well-known/lnurlp/${je.username}`);At(()=>{const n=W(`<div class="view">
54
+ <header class="masthead">
55
+ <h1 class="wordmark" data-wordmark>MONEYER</h1>
56
+ <div class="tagline">An LNURLcash mint · strikes Lightning bearer notes</div>
57
+ </header>
58
+ <div class="hero">
59
+ <span class="medallion"><span class="mark" data-rosette>${is(176)}</span></span>
60
+ <p class="promise">Pay a Lightning invoice, and its payment preimage <em>is</em> your note - <em>money as a secret you hold</em>.</p>
61
+ <div class="fineline">No account · no custodian's ledger · whoever holds the string holds the money</div>
62
+ </div>
63
+ <button class="plate" data-copy-address>${J.bolt}<span>${Pe(t)}</span></button>
64
+ ${je.sunset?`<div class="badges"><span class="badge wait">${J.hourglass}<span>sunsetting - existing notes redeem, new ones are not struck</span></span></div>`:""}
65
+ <div class="actions">
66
+ <button class="tile" data-go-mint ${je.sunset?"disabled":""}>${J.mint}<b>Mint a note</b><small>Pay an invoice, walk away with a bearer note</small></button>
67
+ <button class="tile" data-go-check>${J.search}<b>Check a note</b><small>Is it real, is it unspent, what is it worth</small></button>
68
+ </div>
69
+ <div class="stack" data-qr-slot></div>
70
+ <button class="btn btn-ghost" data-show-qr>${J.qr}<span>Show address QR</span></button>
71
+ <div class="rubric">The note</div>
72
+ <div data-specimen></div>
73
+ <p class="warn">Every note this mint strikes is a 32-byte secret. This is what one looks like when a wallet prints it - yours arrives with a live QR where the specimen mark sits.</p>
74
+ <div class="rubric">How it works</div>
75
+ <div class="steps" data-steps>
76
+ <div class="step"><span class="n">I</span><b>Pay the invoice</b><p>From any Lightning wallet. The mint writes your note's secret into the invoice itself.</p></div>
77
+ <div class="step"><span class="n">II</span><b>The preimage is the note</b><p>Your wallet's payment receipt - the preimage - is the bearer secret. Whoever holds it, holds the money.</p></div>
78
+ <div class="step"><span class="n">III</span><b>Spend it anywhere</b><p>Hand it to anyone, split it, merge it, or melt it back onto Lightning. No account, ever.</p></div>
79
+ </div>
80
+ <div class="grid2" data-cards></div>
81
+ <footer>
82
+ <div class="microprint">${Array(8).fill("MONEYER · PAYS THE BEARER ON DEMAND · LNURLCASH · NOT LEGAL TENDER · ").join("")}</div>
83
+ <div class="luds">${kl.map(([a,l])=>`<a href="${l}" target="_blank" rel="noopener" title="LUD-${a}">LUD-${a}</a>`).join("")}</div>
84
+ <p>An independent implementation of the <a href="https://github.com/lnurl/luds/pull/301" target="_blank" rel="noopener">LNURLcash draft</a>, graded by <a href="https://github.com/TheCryptoDonkey/lnurlcash-conformance" target="_blank" rel="noopener">lnurlcash-conformance</a>.<br/>
85
+ Source: <a href="https://github.com/forgesworn/moneyer" target="_blank" rel="noopener">forgesworn/moneyer</a> · a companion wallet: <a href="https://github.com/forgesworn/notecase" target="_blank" rel="noopener">forgesworn/notecase</a></p>
86
+ </footer>
87
+ </div>`);n.querySelector("[data-copy-address]").addEventListener("click",()=>{un(t,"Lightning address")}),n.querySelector("[data-go-mint]").addEventListener("click",()=>Pl()),n.querySelector("[data-go-check]").addEventListener("click",()=>ql());const r=yi({sats:21,serialHex:"b0171f0000000000000000000000000000000000000000000000000000000011fd",host:ft.toUpperCase(),variant:{kind:"specimen"}});n.querySelector("[data-specimen]").append(r);const s=n.querySelector("[data-qr-slot]"),o=n.querySelector("[data-show-qr]");o.addEventListener("click",()=>{if(s.childElementCount){s.replaceChildren(),o.innerHTML=`${J.qr}<span>Show address QR</span>`;return}const a=_i(e.toUpperCase(),`lightning:${e}`);s.append(a),Re(a,{opacity:[0,1],scale:[.94,1],duration:320,ease:"outCubic"}),o.innerHTML=`${J.qr}<span>Hide address QR</span>`}),n.querySelector("[data-cards]").append(Ol(),Ul()),Cl(n.querySelector("[data-wordmark]")),Nl(n.querySelector("[data-rosette]"));const c=[...r.querySelectorAll(".nb-overstamp")];if(c.length&&"IntersectionObserver"in window){c.forEach(l=>l.style.opacity="0");const a=new IntersectionObserver(l=>{if(l.some(u=>u.isIntersecting)){a.disconnect();for(const u of c)u.style.removeProperty("opacity"),Re(u,{scale:[2.4,1],opacity:[0,.3],rotate:["-4deg","-14deg"],duration:520,ease:"outBack(2)"})}},{threshold:.4});a.observe(r)}return n})},Ol=()=>{const t=Jn,e=vt(t.minSendable),n=vt(t.maxSendable);return W(`<div class="card">
88
+ <h3>Schedule of terms</h3>
89
+ <div class="kv"><span>mints</span><b>${xe(t.minSendable)} to ${xe(t.maxSendable)} sat</b></div>
90
+ <div class="kv"><span>mint fee</span><b>${Pe(Ti())}</b></div>
91
+ <div class="kv"><span>note values</span><b>${xe(e)} to ${xe(n)} sat</b></div>
92
+ <div class="kv"><span>the fee falls</span><b>once, at the striking - mutations free, merges refund</b></div>
93
+ ${be?.nodePubkey?`<div class="kv"><span>notes signed by</span><code>${Pe(be.nodePubkey)}</code></div>`:'<div class="kv"><span>note signatures</span><b>not offered</b></div>'}
94
+ </div>`)},Ul=()=>{const t=be?.nodeUri?.split("@")[0],e=W(`<div class="card">
95
+ <h3>The funding node</h3>
96
+ ${be?.nodeAlias?`<div class="kv"><span>alias</span><b>${be.nodeColor?`<span class="dot" style="background:${Pe(be.nodeColor)}"></span>`:""}${Pe(be.nodeAlias)}</b></div>`:""}
97
+ ${be?.nodeCapacityMsat?`<div class="kv"><span>capacity</span><b>${xe(be.nodeCapacityMsat)} sat</b></div>`:""}
98
+ ${be?.nodeNumChannels!==void 0?`<div class="kv"><span>channels · peers</span><b>${be.nodeNumChannels}${be.nodeNumPeers!==void 0?` · ${be.nodeNumPeers}`:""}</b></div>`:""}
99
+ ${be?.nodeUri?`<div class="kv"><span>node URI</span><code>${Pe(be.nodeUri)}</code></div>`:""}
100
+ <div class="row" data-links></div>
101
+ </div>`),n=e.querySelector("[data-links]");if(be?.nodeUri){const r=W(`<button class="btn btn-ghost" style="min-height:46px">${J.copy}<span>Copy URI</span></button>`);r.addEventListener("click",()=>{un(be.nodeUri,"Node URI")}),n.append(r)}return t&&/^[0-9a-f]{66}$/i.test(t)&&n.append(W(`<a class="btn btn-ghost" style="min-height:46px;text-decoration:none" href="https://mempool.space/lightning/node/${t}" target="_blank" rel="noopener">${J.external}<span>mempool</span></a>`),W(`<a class="btn btn-ghost" style="min-height:46px;text-decoration:none" href="https://amboss.space/node/${t}" target="_blank" rel="noopener">${J.external}<span>amboss</span></a>`)),n.childElementCount||n.remove(),e},Pl=()=>{const t=Jn,e=vt(t.minSendable),n=vt(t.maxSendable);At(()=>{const r=W('<div class="view"></div>');r.append(Qn("Mint a note",hn));const s=W(`<div class="stack">
102
+ <div class="rubric">To be struck</div>
103
+ <div class="amount-input"><input data-amount inputmode="numeric" pattern="[0-9]*" placeholder="0" autofocus /><span class="unit">sat</span></div>
104
+ <div class="presets" data-presets></div>
105
+ <p class="warn" data-feenote>&nbsp;</p>
106
+ <button class="btn btn-silver" data-create>${J.bolt}<span>Create the invoice</span></button>
107
+ <p class="warn">Notes hold between ${xe(e)} and ${xe(n)} sat here.</p>
108
+ </div>`);r.append(s);const o=s.querySelector("[data-amount]"),i=s.querySelector("[data-feenote]"),c=[21e3,1e5,5e5,1e6].filter(d=>d>=e&&d<=n),a=s.querySelector("[data-presets]");if(c.length>=2)for(const d of c){const f=W(`<button>${xe(d)}</button>`);f.addEventListener("click",()=>{o.value=String(d/1e3),Re(o,{scale:[1.06,1],duration:260,ease:"outCubic"}),l()}),a.append(f)}else a.remove();const l=()=>{const d=Number(o.value)*1e3;if(!Number.isSafeInteger(d)||d<=0){i.innerHTML=Ve?`Mint fee: <strong>${Pe(Ti())}</strong>, charged once, now.`:"No mint fee - you pay exactly what the note holds.";return}const f=Qs(d);i.innerHTML=Ve?`You pay <strong>${xe(f)} sat</strong> - the note holds ${xe(vt(f))} sat after the ${xe(f-vt(f))} sat mint fee.`:`You pay exactly <strong>${xe(d)} sat</strong>.`};o.addEventListener("input",l),l();const u=s.querySelector("[data-create]");return u.addEventListener("click",()=>Ei(u,async()=>{const d=Number(o.value)*1e3;if(!Number.isSafeInteger(d)||d<=0)throw new Error("Give an amount in whole sats.");if(d<e)throw new Error(`The smallest note here holds ${xe(e)} sat.`);if(d>n)throw new Error(`The largest note here holds ${xe(n)} sat.`);const f=Math.min(Math.max(Qs(d),t.minSendable),t.maxSendable),h=await _l(t.callback,f);if(!h.verify)throw new Error("This mint offers no payment verification, so the page cannot claim the note for you.");Fl({pr:h.pr,verifyUrl:h.verify,grossMsat:f})})),r})},Fl=t=>{const e=zt+1;At(()=>{const n=W('<div class="view"></div>');n.append(Qn("Pay to mint",hn));const r=W(`<div class="stack center">
109
+ <div class="rubric">The invoice</div>
110
+ <div class="amount"><span>${xe(t.grossMsat)}</span><span class="unit">sat</span></div>
111
+ <p class="warn">Pay from any Lightning wallet - tap the QR to open one on this device. Your note is struck here the moment it settles.</p>
112
+ <button class="btn" data-copy>${J.copy}<span>Copy invoice</span></button>
113
+ <button class="btn btn-ghost" data-check-now>${J.refresh}<span>Checking payment…</span></button>
114
+ </div>`);r.insertBefore(_i(t.pr.toUpperCase(),`lightning:${t.pr}`),r.querySelector("p")),n.append(r),r.querySelector("[data-copy]").addEventListener("click",()=>{un(t.pr,"Invoice")});const s=r.querySelector("[data-check-now]");let o=4,i=!1,c=!1,a;const l=async()=>{if(!(i||c)){i=!0,s.innerHTML=`${J.refresh}<span>Checking…</span>`;try{const u=await Tl(t.verifyUrl);if(zt!==e)return;if(u.settled&&u.preimage){c=!0,a&&clearInterval(a),await Dl(u.preimage,t.grossMsat);return}}catch{}finally{i=!1}o=4}};return a=setInterval(()=>{if(zt!==e){clearInterval(a);return}i||c||(o-=1,o<=0?l():s.innerHTML=`${J.refresh}<span>Checking payment (${o}s)</span>`)},1e3),s.addEventListener("click",()=>{l()}),n})},Dl=async(t,e)=>{const n=vt(e),r=pi(Jn.withdrawLink??`lnurlw://${ft}/w`,t,n);try{const s=await Ur(r),o=await vl(s.callback,t),i=br(r,o.k1,s.maxWithdrawable,o.signature),c=!!(o.signature&&s.mintPubkey&&mi(o.k1,s.maxWithdrawable,o.signature,s.mintPubkey));Pt({url:i,amountMsat:s.maxWithdrawable,verified:c,secured:!0})}catch(s){if(s instanceof bi){const o=s.newSecrets[0];try{await Ur(r),Pt({url:r,amountMsat:n,verified:!1,secured:!1});return}catch(i){if((i instanceof ss||i instanceof os)&&o){Pt({url:br(r,o,n),amountMsat:n,verified:!1,secured:!0});return}}Pt({url:r,amountMsat:n,verified:!1,secured:!1,alsoUrl:o?br(r,o,n):void 0});return}Hn(`Could not re-secure the note here: ${s.message}`,"err"),Pt({url:r,amountMsat:n,verified:!1,secured:!1})}},Pt=t=>{const e=fi(t.url),n=Gn(t.url),r=je.walletUrl?`${je.walletUrl}/#/claim?u=${encodeURIComponent(t.url)}`:null;At(()=>{const s=W('<div class="view"></div>');s.append(Qn("Your note",hn));const o=W('<div class="stack center"></div>'),i=yi({sats:Math.round(t.amountMsat/1e3),serialHex:n?rs(n):"0000000000000000",host:ft.toUpperCase(),variant:{kind:"live",qrText:r??e.toUpperCase()}});Ml(i),o.append(i),o.append(W(`<div class="badges">
115
+ ${t.verified?`<span class="badge good">${J.shield}<span>signature verified</span></span>`:""}
116
+ ${t.secured?`<span class="badge good">${J.check}<span>freshly rotated - only you hold it</span></span>`:`<span class="badge wait">${J.hourglass}<span>not re-secured - receive it into a wallet soon</span></span>`}
117
+ </div>`),W('<p class="warn"><strong>This note is the money.</strong> Whoever sees it owns it - save it somewhere private, or open it in a wallet now.</p>')),r&&o.append(W(`<a class="btn btn-silver" style="text-decoration:none" href="${r}">${J.wallet}<span>Open in the wallet</span></a>`));const c=W(`<button class="btn">${J.copy}<span>Copy note URL</span></button>`);c.addEventListener("click",()=>{un(t.url,"Note URL")});const a=W(`<button class="btn btn-ghost">${J.copy}<span>Copy LNURL</span></button>`);a.addEventListener("click",()=>{un(e,"LNURL")}),o.append(c,a),t.alsoUrl&&o.append(W(`<p class="warn"><strong>Keep both of these.</strong> A network hiccup hid which secret ended up holding the money - one of the two below is your note. A wallet's reconcile sorts it out.</p>`),W(`<div class="mono">${Pe(t.url)}</div>`),W(`<div class="mono">${Pe(t.alsoUrl)}</div>`)),s.append(o),Re(i,{scale:[.96,1],y:[10,0],duration:600,ease:"outBack(1.4)"});const l=i.querySelector("[data-value]");return l&&t.amountMsat<1e12?setTimeout(()=>{$l(l,t.amountMsat),zn(o)},250):setTimeout(()=>zn(o),300),s})},ql=()=>{At(()=>{const t=W('<div class="view"></div>');t.append(Qn("Check a note",hn));const e=W(`<div class="stack">
118
+ <div class="field">
119
+ <label>Present the note</label>
120
+ <textarea data-input placeholder="lnurlw://… or LNURL1…" autocomplete="off" spellcheck="false"></textarea>
121
+ </div>
122
+ <button class="btn btn-ghost" data-paste>${J.paste}<span>Paste from clipboard</span></button>
123
+ <button class="btn btn-silver" data-check>${J.search}<span>Check it</span></button>
124
+ <div data-result></div>
125
+ <p class="warn">Checking asks the mint what the note is worth and whether it is still live. It never spends, burns or alters the note - but it does show the mint (and this page) the secret, so rotate the note in a wallet afterwards if you go on holding it.</p>
126
+ </div>`);t.append(e);const n=e.querySelector("[data-input]");e.querySelector("[data-paste]").addEventListener("click",async()=>{n.value=await navigator.clipboard.readText().catch(()=>n.value)});const r=e.querySelector("[data-result]"),s=(i,c,a,l)=>{const u=W(`<div class="result ${i}"><span class="stamp" style="--tilt:${i==="good"?"-5deg":"-7deg"}">${Pe(c)}</span><b>${Pe(a)}</b><p>${Pe(l)}</p></div>`);return r.replaceChildren(u),vi(u.querySelector(".stamp")),u},o=e.querySelector("[data-check]");return o.addEventListener("click",()=>Ei(o,async()=>{const i=rl(n.value.trim());if(!i){s("bad","Refused","Not a bearer note","That does not decode to a note URL. A note looks like lnurlw://… with a k1 secret, or its LNURL1… encoding.");return}const c=new URL(i).host;try{const a=await Ur(i),l=Gn(i),u=nl(i),d=!!(u&&a.mintPubkey&&mi(l,a.maxWithdrawable,u,a.mintPubkey)),f=s("good","Live",`Good for ${xe(a.maxWithdrawable)} sat`,c===ft?"This mint recognises the note and will honour it.":`Recognised and honoured by ${c}.`),h=W(`<div class="badges">
127
+ ${d?`<span class="badge good">${J.shield}<span>signature verified offline</span></span>`:""}
128
+ ${!d&&u?`<span class="badge wait">${J.shield}<span>signature present but did not verify</span></span>`:""}
129
+ ${u?"":`<span class="badge">${J.shield}<span>carries no signature</span></span>`}
130
+ </div>`);f.append(h),je.walletUrl&&f.append(W(`<a class="btn" style="text-decoration:none" href="${je.walletUrl}/#/claim?u=${encodeURIComponent(i)}">${J.wallet}<span>Receive it into the wallet</span></a>`)),zn(f)}catch(a){a instanceof ss?s("bad","Spent","Already spent","The mint knows this note and reports it burned. Whatever it was worth has already been redeemed."):a instanceof os?s("bad","Unknown","Unknown note",`${c===ft?"This mint":c} has never issued a note with this id. Either it was minted elsewhere, or it never existed.`):a instanceof gi?s("wait","In flight","Locked mid-payment","A melt is in flight on this note. It resolves shortly - either spent, or restored untouched."):s("wait","Held","Could not reach the mint",c===ft?"The mint did not answer. Try again shortly.":`${c} did not answer from this page - check it in a wallet instead.`)}})),t})};Pr();