@dbx-tools/tunnel 0.6.99 → 0.6.100

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.
@@ -30,12 +30,12 @@ export function loginPageHtml(options) {
30
30
  :root {
31
31
  color-scheme: light dark;
32
32
  --bg: #ffffff; --fg: #1b1b1f; --muted: #6b7280; --border: #d9dce1;
33
- --accent: #1a73e8; --accent-fg: #ffffff; --error: #c5221f; --field: #ffffff;
33
+ --accent: #FF3621; --accent-fg: #ffffff; --error: #c5221f; --field: #ffffff;
34
34
  }
35
35
  @media (prefers-color-scheme: dark) {
36
36
  :root {
37
37
  --bg: #16181d; --fg: #e8e6df; --muted: #9aa0aa; --border: #2c2f36;
38
- --accent: #4c8dff; --accent-fg: #0b0f19; --error: #ff6b60; --field: #1e2128;
38
+ --accent: #FF5A46; --accent-fg: #0b0f19; --error: #ff6b60; --field: #1e2128;
39
39
  }
40
40
  }
41
41
  * { box-sizing: border-box; }
@@ -48,6 +48,7 @@ export function loginPageHtml(options) {
48
48
  width: 100%; max-width: 360px; border: 1px solid var(--border);
49
49
  border-radius: 14px; padding: 28px; background: var(--bg);
50
50
  }
51
+ .logo { width: 40px; height: 40px; display: block; margin: 0 0 14px; }
51
52
  h1 { font-size: 18px; margin: 0 0 4px; }
52
53
  p.sub { margin: 0 0 20px; color: var(--muted); font-size: 13px; }
53
54
  label { display: block; font-size: 12px; color: var(--muted); margin: 0 0 6px; }
@@ -70,6 +71,12 @@ export function loginPageHtml(options) {
70
71
  </head>
71
72
  <body>
72
73
  <main class="card">
74
+ <!-- dbx.tools pixel-brick "stache" mark (Lava palette), matching the Kanna UI logo. -->
75
+ <svg class="logo" viewBox="0 0 64 64" role="img" aria-label="${brand}" shape-rendering="crispEdges">
76
+ <rect x="19" y="20" width="8" height="8" rx="1" fill="#FF3621"/><rect x="37" y="20" width="8" height="8" rx="1" fill="#FF3621"/>
77
+ <rect x="1" y="29" width="8" height="8" rx="1" fill="#D92D18"/><rect x="10" y="29" width="8" height="8" rx="1" fill="#FF3621"/><rect x="19" y="29" width="8" height="8" rx="1" fill="#FF5A46"/><rect x="28" y="29" width="8" height="8" rx="1" fill="#FF8974"/><rect x="37" y="29" width="8" height="8" rx="1" fill="#FF5A46"/><rect x="46" y="29" width="8" height="8" rx="1" fill="#FF3621"/><rect x="55" y="29" width="8" height="8" rx="1" fill="#D92D18"/>
78
+ <rect x="10" y="38" width="8" height="8" rx="1" fill="#FF3621"/><rect x="46" y="38" width="8" height="8" rx="1" fill="#FF3621"/>
79
+ </svg>
73
80
  <h1>Sign in to ${brand}</h1>
74
81
  <p class="sub">Enter your email to receive a one-time code.</p>
75
82
 
@@ -200,4 +207,4 @@ const HTML_ESCAPES = {
200
207
  function escapeHtml(value) {
201
208
  return value.replace(/[&<>"']/g, (ch) => HTML_ESCAPES[ch] ?? ch);
202
209
  }
203
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tcGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dpbi1wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQU94QyxxRkFBcUY7QUFDckYsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUF5QjtJQUNyRCxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLDZFQUE2RTtJQUM3RSwwREFBMEQ7SUFDMUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxPQUFPOzs7OzttQkFLVSxLQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBNkNILEtBQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkFxQlQsTUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQWlHZixDQUFDO0FBQ1QsQ0FBQztBQUVELE1BQU0sWUFBWSxHQUEyQjtJQUMzQyxHQUFHLEVBQUUsT0FBTztJQUNaLEdBQUcsRUFBRSxNQUFNO0lBQ1gsR0FBRyxFQUFFLE1BQU07SUFDWCxHQUFHLEVBQUUsUUFBUTtJQUNiLEdBQUcsRUFBRSxPQUFPO0NBQ2IsQ0FBQztBQUVGLFNBQVMsVUFBVSxDQUFDLEtBQWE7SUFDL0IsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgc2VsZi1jb250YWluZWQgSFRNTCBsb2dpbiBwYWdlIHRoZSB0dW5uZWwgc2VydmVzIGluIGZyb250IG9mIGFuIGFwcCB0aGF0XG4gKiBkb2VzIG5vdCBlbWJlZCB0aGUgYDxBdXRoR2F0ZT5gIFJlYWN0IGNvbXBvbmVudCAoZS5nLiBhIFdlYlNvY2tldCBhcHAgZnJvbnRlZFxuICogYnkgdGhlIENMSSBwcm94eSkuXG4gKlxuICogSXQgc3BlYWtzIHRoZSBzYW1lIGNvbXBhdGliaWxpdHkgZW5kcG9pbnRzIHVuZGVyIHtAbGluayBBVVRIX1BSRUZJWH0gdGhhdCB0aGVcbiAqIFJlYWN0IGNsaWVudCB1c2VzIOKAlCBgUE9TVCAvcmVxdWVzdGAgdG8gZW1haWwgYSBjb2RlLCBgUE9TVCAvdmVyaWZ5YCB0b1xuICogZXhjaGFuZ2UgaXQgZm9yIHRoZSBgZGJ4LXRvb2xzLWF1dGhgIHNlc3Npb24gY29va2llIOKAlCB3aXRoIHBsYWluIGBmZXRjaGAsIG5vXG4gKiBidWlsZCBzdGVwIGFuZCBubyBkZXBlbmRlbmN5LiBQYXNza2V5cyBhcmUgaW50ZW50aW9uYWxseSBvbWl0dGVkOiB0aGUgV2ViQXV0aG5cbiAqIGNlcmVtb255IG5lZWRzIHRoZSBiZXR0ZXItYXV0aCBjbGllbnQgbGlicmFyeSwgc28gcGFzc2tleSBlbnJvbGxtZW50IGhhcHBlbnNcbiAqIGluc2lkZSB0aGUgYXBwIGFmdGVyIHRoaXMgZW1haWwtT1RQIHNpZ24taW4uIE9uIHN1Y2Nlc3MgdGhlIHBhZ2UgcmVsb2FkcywgYW5kXG4gKiB0aGUgbm93LWF1dGhlbnRpY2F0ZWQgcmVxdWVzdCByZWFjaGVzIHRoZSBhcHAuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IEFVVEhfUFJFRklYIH0gZnJvbSBcIi4vZ2F0ZS50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luUGFnZU9wdGlvbnMge1xuICAvKiogUHJvZHVjdC9icmFuZCBuYW1lIHNob3duIGluIHRoZSBoZWFkaW5nLiAqL1xuICBicmFuZE5hbWU6IHN0cmluZztcbn1cblxuLyoqIFRoZSBsb2dpbiBwYWdlIEhUTUwgZm9yIGEgYHRleHQvaHRtbGAgcmVxdWVzdCB0byBhIGdhdGVkIHBhdGggd2l0aCBubyBzZXNzaW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvZ2luUGFnZUh0bWwob3B0aW9uczogTG9naW5QYWdlT3B0aW9ucyk6IHN0cmluZyB7XG4gIGNvbnN0IGJyYW5kID0gZXNjYXBlSHRtbChvcHRpb25zLmJyYW5kTmFtZSk7XG4gIC8vIEFVVEhfUFJFRklYIGlzIGEgZml4ZWQgY29uc3RhbnQsIG5vdCB1c2VyIGlucHV0LCBidXQgSlNPTi1lbmNvZGUgaXQgc28gdGhlXG4gIC8vIGlubGluZWQgc2NyaXB0IGlzIGFsd2F5cyB2YWxpZCByZWdhcmRsZXNzIG9mIGl0cyB2YWx1ZS5cbiAgY29uc3QgcHJlZml4ID0gSlNPTi5zdHJpbmdpZnkoQVVUSF9QUkVGSVgpO1xuICByZXR1cm4gYDwhZG9jdHlwZSBodG1sPlxuPGh0bWwgbGFuZz1cImVuXCI+XG48aGVhZD5cbjxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiPlxuPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xXCI+XG48dGl0bGU+U2lnbiBpbiDigJQgJHticmFuZH08L3RpdGxlPlxuPHN0eWxlPlxuICA6cm9vdCB7XG4gICAgY29sb3Itc2NoZW1lOiBsaWdodCBkYXJrO1xuICAgIC0tYmc6ICNmZmZmZmY7IC0tZmc6ICMxYjFiMWY7IC0tbXV0ZWQ6ICM2YjcyODA7IC0tYm9yZGVyOiAjZDlkY2UxO1xuICAgIC0tYWNjZW50OiAjMWE3M2U4OyAtLWFjY2VudC1mZzogI2ZmZmZmZjsgLS1lcnJvcjogI2M1MjIxZjsgLS1maWVsZDogI2ZmZmZmZjtcbiAgfVxuICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gICAgOnJvb3Qge1xuICAgICAgLS1iZzogIzE2MTgxZDsgLS1mZzogI2U4ZTZkZjsgLS1tdXRlZDogIzlhYTBhYTsgLS1ib3JkZXI6ICMyYzJmMzY7XG4gICAgICAtLWFjY2VudDogIzRjOGRmZjsgLS1hY2NlbnQtZmc6ICMwYjBmMTk7IC0tZXJyb3I6ICNmZjZiNjA7IC0tZmllbGQ6ICMxZTIxMjg7XG4gICAgfVxuICB9XG4gICogeyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG4gIGJvZHkge1xuICAgIG1hcmdpbjogMDsgbWluLWhlaWdodDogMTAwdmg7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGJhY2tncm91bmQ6IHZhcigtLWJnKTsgY29sb3I6IHZhcigtLWZnKTtcbiAgICBmb250LWZhbWlseTogc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBcIlNlZ29lIFVJXCIsIHNhbnMtc2VyaWY7IHBhZGRpbmc6IDI0cHg7XG4gIH1cbiAgLmNhcmQge1xuICAgIHdpZHRoOiAxMDAlOyBtYXgtd2lkdGg6IDM2MHB4OyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7IHBhZGRpbmc6IDI4cHg7IGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgfVxuICBoMSB7IGZvbnQtc2l6ZTogMThweDsgbWFyZ2luOiAwIDAgNHB4OyB9XG4gIHAuc3ViIHsgbWFyZ2luOiAwIDAgMjBweDsgY29sb3I6IHZhcigtLW11dGVkKTsgZm9udC1zaXplOiAxM3B4OyB9XG4gIGxhYmVsIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IHZhcigtLW11dGVkKTsgbWFyZ2luOiAwIDAgNnB4OyB9XG4gIGlucHV0IHtcbiAgICB3aWR0aDogMTAwJTsgcGFkZGluZzogMTBweCAxMnB4OyBmb250LXNpemU6IDE1cHg7IGJvcmRlci1yYWRpdXM6IDlweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBiYWNrZ3JvdW5kOiB2YXIoLS1maWVsZCk7IGNvbG9yOiB2YXIoLS1mZyk7XG4gIH1cbiAgaW5wdXQ6Zm9jdXMgeyBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tYWNjZW50KTsgb3V0bGluZS1vZmZzZXQ6IC0xcHg7IH1cbiAgYnV0dG9uIHtcbiAgICB3aWR0aDogMTAwJTsgbWFyZ2luLXRvcDogMTZweDsgcGFkZGluZzogMTBweCAxMnB4OyBmb250LXNpemU6IDE1cHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDsgYm9yZGVyOiAwOyBib3JkZXItcmFkaXVzOiA5cHg7IGJhY2tncm91bmQ6IHZhcigtLWFjY2VudCk7XG4gICAgY29sb3I6IHZhcigtLWFjY2VudC1mZyk7IGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICBidXR0b246ZGlzYWJsZWQgeyBvcGFjaXR5OiAwLjY7IGN1cnNvcjogZGVmYXVsdDsgfVxuICAubXNnIHsgbWFyZ2luLXRvcDogMTRweDsgZm9udC1zaXplOiAxM3B4OyBtaW4taGVpZ2h0OiAxOHB4OyB9XG4gIC5tc2cuZXJyb3IgeyBjb2xvcjogdmFyKC0tZXJyb3IpOyB9XG4gIC5oaWRkZW4geyBkaXNwbGF5OiBub25lOyB9XG4gIC5iYWNrIHsgYmFja2dyb3VuZDogbm9uZTsgY29sb3I6IHZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6IDQwMDsgbWFyZ2luLXRvcDogOHB4OyB9XG48L3N0eWxlPlxuPC9oZWFkPlxuPGJvZHk+XG4gIDxtYWluIGNsYXNzPVwiY2FyZFwiPlxuICAgIDxoMT5TaWduIGluIHRvICR7YnJhbmR9PC9oMT5cbiAgICA8cCBjbGFzcz1cInN1YlwiPkVudGVyIHlvdXIgZW1haWwgdG8gcmVjZWl2ZSBhIG9uZS10aW1lIGNvZGUuPC9wPlxuXG4gICAgPGZvcm0gaWQ9XCJlbWFpbC1mb3JtXCI+XG4gICAgICA8bGFiZWwgZm9yPVwiZW1haWxcIj5FbWFpbDwvbGFiZWw+XG4gICAgICA8aW5wdXQgaWQ9XCJlbWFpbFwiIG5hbWU9XCJlbWFpbFwiIHR5cGU9XCJlbWFpbFwiIGF1dG9jb21wbGV0ZT1cImVtYWlsXCIgcmVxdWlyZWQgYXV0b2ZvY3VzPlxuICAgICAgPGJ1dHRvbiBpZD1cImVtYWlsLXN1Ym1pdFwiIHR5cGU9XCJzdWJtaXRcIj5TZW5kIGNvZGU8L2J1dHRvbj5cbiAgICA8L2Zvcm0+XG5cbiAgICA8Zm9ybSBpZD1cImNvZGUtZm9ybVwiIGNsYXNzPVwiaGlkZGVuXCI+XG4gICAgICA8bGFiZWwgZm9yPVwiY29kZVwiPlZlcmlmaWNhdGlvbiBjb2RlPC9sYWJlbD5cbiAgICAgIDxpbnB1dCBpZD1cImNvZGVcIiBuYW1lPVwiY29kZVwiIGlucHV0bW9kZT1cIm51bWVyaWNcIiBhdXRvY29tcGxldGU9XCJvbmUtdGltZS1jb2RlXCIgcmVxdWlyZWQ+XG4gICAgICA8YnV0dG9uIGlkPVwiY29kZS1zdWJtaXRcIiB0eXBlPVwic3VibWl0XCI+VmVyaWZ5PC9idXR0b24+XG4gICAgICA8YnV0dG9uIGlkPVwiYmFja1wiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJhY2tcIj5Vc2UgYSBkaWZmZXJlbnQgZW1haWw8L2J1dHRvbj5cbiAgICA8L2Zvcm0+XG5cbiAgICA8ZGl2IGlkPVwibXNnXCIgY2xhc3M9XCJtc2dcIiByb2xlPVwic3RhdHVzXCIgYXJpYS1saXZlPVwicG9saXRlXCI+PC9kaXY+XG4gIDwvbWFpbj5cblxuPHNjcmlwdD5cbihmdW5jdGlvbiAoKSB7XG4gIHZhciBQUkVGSVggPSAke3ByZWZpeH07XG4gIHZhciBlbWFpbEZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImVtYWlsLWZvcm1cIik7XG4gIHZhciBjb2RlRm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29kZS1mb3JtXCIpO1xuICB2YXIgZW1haWxJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZW1haWxcIik7XG4gIHZhciBjb2RlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvZGVcIik7XG4gIHZhciBiYWNrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJiYWNrXCIpO1xuICB2YXIgbXNnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtc2dcIik7XG4gIHZhciBlbWFpbCA9IFwiXCI7XG5cbiAgZnVuY3Rpb24gc2F5KHRleHQsIGlzRXJyb3IpIHtcbiAgICBtc2cudGV4dENvbnRlbnQgPSB0ZXh0IHx8IFwiXCI7XG4gICAgbXNnLmNsYXNzTmFtZSA9IFwibXNnXCIgKyAoaXNFcnJvciA/IFwiIGVycm9yXCIgOiBcIlwiKTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHBvc3QocGF0aCwgYm9keSkge1xuICAgIHZhciByZXMgPSBhd2FpdCBmZXRjaChQUkVGSVggKyBwYXRoLCB7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgY3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxuICAgICAgaGVhZGVyczogeyBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksXG4gICAgfSk7XG4gICAgdmFyIGRhdGEgPSB7fTtcbiAgICB0cnkgeyBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTsgfSBjYXRjaCAoX2UpIHsgLyogbm9uLUpTT04gKi8gfVxuICAgIHJldHVybiB7IG9rOiByZXMub2ssIHN0YXR1czogcmVzLnN0YXR1cywgZGF0YTogZGF0YSB9O1xuICB9XG5cbiAgZnVuY3Rpb24gZXJyb3JUZXh0KGRhdGEsIGZhbGxiYWNrKSB7XG4gICAgLy8gYmV0dGVyLWF1dGggZXJyb3Igc2hhcGU6IHsgbWVzc2FnZSB9IG9yIHsgZXJyb3I6IHsgbWVzc2FnZSB9IH0uXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5lcnJvciAmJiBkYXRhLmVycm9yLm1lc3NhZ2UpIHJldHVybiBkYXRhLmVycm9yLm1lc3NhZ2U7XG4gICAgaWYgKGRhdGEgJiYgZGF0YS5tZXNzYWdlKSByZXR1cm4gZGF0YS5tZXNzYWdlO1xuICAgIHJldHVybiBmYWxsYmFjaztcbiAgfVxuXG4gIGVtYWlsRm9ybS5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIGFzeW5jIGZ1bmN0aW9uIChlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGVtYWlsID0gZW1haWxJbnB1dC52YWx1ZS50cmltKCk7XG4gICAgaWYgKCFlbWFpbCkgcmV0dXJuO1xuICAgIHZhciBzdWJtaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImVtYWlsLXN1Ym1pdFwiKTtcbiAgICBzdWJtaXQuZGlzYWJsZWQgPSB0cnVlO1xuICAgIHNheShcIlNlbmRpbmfigKZcIik7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGJldHRlci1hdXRoIGVtYWlsT1RQIG5hdGl2ZSBlbmRwb2ludC5cbiAgICAgIHZhciByID0gYXdhaXQgcG9zdChcIi9lbWFpbC1vdHAvc2VuZC12ZXJpZmljYXRpb24tb3RwXCIsIHsgZW1haWw6IGVtYWlsLCB0eXBlOiBcInNpZ24taW5cIiB9KTtcbiAgICAgIGlmIChyLm9rKSB7XG4gICAgICAgIGVtYWlsRm9ybS5jbGFzc0xpc3QuYWRkKFwiaGlkZGVuXCIpO1xuICAgICAgICBjb2RlRm9ybS5jbGFzc0xpc3QucmVtb3ZlKFwiaGlkZGVuXCIpO1xuICAgICAgICBjb2RlSW5wdXQuZm9jdXMoKTtcbiAgICAgICAgc2F5KFwiV2UgZW1haWxlZCBhIGNvZGUgdG8gXCIgKyBlbWFpbCArIFwiLlwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNheShlcnJvclRleHQoci5kYXRhLCBcIkNvdWxkIG5vdCBzZW5kIGEgY29kZS4gQ2hlY2sgdGhlIGFkZHJlc3MgYW5kIHRyeSBhZ2Fpbi5cIiksIHRydWUpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKF9lKSB7XG4gICAgICBzYXkoXCJOZXR3b3JrIGVycm9yLiBUcnkgYWdhaW4uXCIsIHRydWUpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzdWJtaXQuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvZGVGb3JtLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWJtaXRcIiwgYXN5bmMgZnVuY3Rpb24gKGUpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgdmFyIGNvZGUgPSBjb2RlSW5wdXQudmFsdWUudHJpbSgpO1xuICAgIGlmICghY29kZSkgcmV0dXJuO1xuICAgIHZhciBzdWJtaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvZGUtc3VibWl0XCIpO1xuICAgIHN1Ym1pdC5kaXNhYmxlZCA9IHRydWU7XG4gICAgc2F5KFwiVmVyaWZ5aW5n4oCmXCIpO1xuICAgIHRyeSB7XG4gICAgICAvLyBiZXR0ZXItYXV0aCBzaWduLWluIHdpdGggdGhlIE9UUDsgc2V0cyB0aGUgc2Vzc2lvbiBjb29raWUgb24gc3VjY2Vzcy5cbiAgICAgIHZhciByID0gYXdhaXQgcG9zdChcIi9zaWduLWluL2VtYWlsLW90cFwiLCB7XG4gICAgICAgIGVtYWlsOiBlbWFpbCxcbiAgICAgICAgb3RwOiBjb2RlLFxuICAgICAgICBuYW1lOiBlbWFpbC5zcGxpdChcIkBcIilbMF0sXG4gICAgICB9KTtcbiAgICAgIGlmIChyLm9rKSB7XG4gICAgICAgIHNheShcIlNpZ25lZCBpbi4gTG9hZGluZ+KAplwiKTtcbiAgICAgICAgLy8gVGhlIHNlc3Npb24gY29va2llIGlzIHNldDsgcmVsb2FkIHNvIHRoZSBub3ctYXV0aGVudGljYXRlZCByZXF1ZXN0XG4gICAgICAgIC8vIHJlYWNoZXMgdGhlIGFwcC5cbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2F5KGVycm9yVGV4dChyLmRhdGEsIFwiVGhhdCBjb2RlIHdhcyBub3QgYWNjZXB0ZWQuIFRyeSBhZ2Fpbi5cIiksIHRydWUpO1xuICAgICAgICBzdWJtaXQuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChfZSkge1xuICAgICAgc2F5KFwiTmV0d29yayBlcnJvci4gVHJ5IGFnYWluLlwiLCB0cnVlKTtcbiAgICAgIHN1Ym1pdC5kaXNhYmxlZCA9IGZhbHNlO1xuICAgIH1cbiAgfSk7XG5cbiAgYmFjay5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xuICAgIGNvZGVGb3JtLmNsYXNzTGlzdC5hZGQoXCJoaWRkZW5cIik7XG4gICAgZW1haWxGb3JtLmNsYXNzTGlzdC5yZW1vdmUoXCJoaWRkZW5cIik7XG4gICAgY29kZUlucHV0LnZhbHVlID0gXCJcIjtcbiAgICBzYXkoXCJcIik7XG4gICAgZW1haWxJbnB1dC5mb2N1cygpO1xuICB9KTtcbn0pKCk7XG48L3NjcmlwdD5cbjwvYm9keT5cbjwvaHRtbD5gO1xufVxuXG5jb25zdCBIVE1MX0VTQ0FQRVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIFwiJlwiOiBcIiZhbXA7XCIsXG4gIFwiPFwiOiBcIiZsdDtcIixcbiAgXCI+XCI6IFwiJmd0O1wiLFxuICAnXCInOiBcIiZxdW90O1wiLFxuICBcIidcIjogXCImIzM5O1wiLFxufTtcblxuZnVuY3Rpb24gZXNjYXBlSHRtbCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1smPD5cIiddL2csIChjaCkgPT4gSFRNTF9FU0NBUEVTW2NoXSA/PyBjaCk7XG59XG4iXX0=
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tcGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dpbi1wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQU94QyxxRkFBcUY7QUFDckYsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUF5QjtJQUNyRCxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLDZFQUE2RTtJQUM3RSwwREFBMEQ7SUFDMUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxPQUFPOzs7OzttQkFLVSxLQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttRUErQzJDLEtBQUs7Ozs7O3FCQUtuRCxLQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBcUJULE1BQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUFpR2YsQ0FBQztBQUNULENBQUM7QUFFRCxNQUFNLFlBQVksR0FBMkI7SUFDM0MsR0FBRyxFQUFFLE9BQU87SUFDWixHQUFHLEVBQUUsTUFBTTtJQUNYLEdBQUcsRUFBRSxNQUFNO0lBQ1gsR0FBRyxFQUFFLFFBQVE7SUFDYixHQUFHLEVBQUUsT0FBTztDQUNiLENBQUM7QUFFRixTQUFTLFVBQVUsQ0FBQyxLQUFhO0lBQy9CLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNuRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIHNlbGYtY29udGFpbmVkIEhUTUwgbG9naW4gcGFnZSB0aGUgdHVubmVsIHNlcnZlcyBpbiBmcm9udCBvZiBhbiBhcHAgdGhhdFxuICogZG9lcyBub3QgZW1iZWQgdGhlIGA8QXV0aEdhdGU+YCBSZWFjdCBjb21wb25lbnQgKGUuZy4gYSBXZWJTb2NrZXQgYXBwIGZyb250ZWRcbiAqIGJ5IHRoZSBDTEkgcHJveHkpLlxuICpcbiAqIEl0IHNwZWFrcyB0aGUgc2FtZSBjb21wYXRpYmlsaXR5IGVuZHBvaW50cyB1bmRlciB7QGxpbmsgQVVUSF9QUkVGSVh9IHRoYXQgdGhlXG4gKiBSZWFjdCBjbGllbnQgdXNlcyDigJQgYFBPU1QgL3JlcXVlc3RgIHRvIGVtYWlsIGEgY29kZSwgYFBPU1QgL3ZlcmlmeWAgdG9cbiAqIGV4Y2hhbmdlIGl0IGZvciB0aGUgYGRieC10b29scy1hdXRoYCBzZXNzaW9uIGNvb2tpZSDigJQgd2l0aCBwbGFpbiBgZmV0Y2hgLCBub1xuICogYnVpbGQgc3RlcCBhbmQgbm8gZGVwZW5kZW5jeS4gUGFzc2tleXMgYXJlIGludGVudGlvbmFsbHkgb21pdHRlZDogdGhlIFdlYkF1dGhuXG4gKiBjZXJlbW9ueSBuZWVkcyB0aGUgYmV0dGVyLWF1dGggY2xpZW50IGxpYnJhcnksIHNvIHBhc3NrZXkgZW5yb2xsbWVudCBoYXBwZW5zXG4gKiBpbnNpZGUgdGhlIGFwcCBhZnRlciB0aGlzIGVtYWlsLU9UUCBzaWduLWluLiBPbiBzdWNjZXNzIHRoZSBwYWdlIHJlbG9hZHMsIGFuZFxuICogdGhlIG5vdy1hdXRoZW50aWNhdGVkIHJlcXVlc3QgcmVhY2hlcyB0aGUgYXBwLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBBVVRIX1BSRUZJWCB9IGZyb20gXCIuL2dhdGUudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMb2dpblBhZ2VPcHRpb25zIHtcbiAgLyoqIFByb2R1Y3QvYnJhbmQgbmFtZSBzaG93biBpbiB0aGUgaGVhZGluZy4gKi9cbiAgYnJhbmROYW1lOiBzdHJpbmc7XG59XG5cbi8qKiBUaGUgbG9naW4gcGFnZSBIVE1MIGZvciBhIGB0ZXh0L2h0bWxgIHJlcXVlc3QgdG8gYSBnYXRlZCBwYXRoIHdpdGggbm8gc2Vzc2lvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2dpblBhZ2VIdG1sKG9wdGlvbnM6IExvZ2luUGFnZU9wdGlvbnMpOiBzdHJpbmcge1xuICBjb25zdCBicmFuZCA9IGVzY2FwZUh0bWwob3B0aW9ucy5icmFuZE5hbWUpO1xuICAvLyBBVVRIX1BSRUZJWCBpcyBhIGZpeGVkIGNvbnN0YW50LCBub3QgdXNlciBpbnB1dCwgYnV0IEpTT04tZW5jb2RlIGl0IHNvIHRoZVxuICAvLyBpbmxpbmVkIHNjcmlwdCBpcyBhbHdheXMgdmFsaWQgcmVnYXJkbGVzcyBvZiBpdHMgdmFsdWUuXG4gIGNvbnN0IHByZWZpeCA9IEpTT04uc3RyaW5naWZ5KEFVVEhfUFJFRklYKTtcbiAgcmV0dXJuIGA8IWRvY3R5cGUgaHRtbD5cbjxodG1sIGxhbmc9XCJlblwiPlxuPGhlYWQ+XG48bWV0YSBjaGFyc2V0PVwidXRmLThcIj5cbjxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MVwiPlxuPHRpdGxlPlNpZ24gaW4g4oCUICR7YnJhbmR9PC90aXRsZT5cbjxzdHlsZT5cbiAgOnJvb3Qge1xuICAgIGNvbG9yLXNjaGVtZTogbGlnaHQgZGFyaztcbiAgICAtLWJnOiAjZmZmZmZmOyAtLWZnOiAjMWIxYjFmOyAtLW11dGVkOiAjNmI3MjgwOyAtLWJvcmRlcjogI2Q5ZGNlMTtcbiAgICAtLWFjY2VudDogI0ZGMzYyMTsgLS1hY2NlbnQtZmc6ICNmZmZmZmY7IC0tZXJyb3I6ICNjNTIyMWY7IC0tZmllbGQ6ICNmZmZmZmY7XG4gIH1cbiAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAgIDpyb290IHtcbiAgICAgIC0tYmc6ICMxNjE4MWQ7IC0tZmc6ICNlOGU2ZGY7IC0tbXV0ZWQ6ICM5YWEwYWE7IC0tYm9yZGVyOiAjMmMyZjM2O1xuICAgICAgLS1hY2NlbnQ6ICNGRjVBNDY7IC0tYWNjZW50LWZnOiAjMGIwZjE5OyAtLWVycm9yOiAjZmY2YjYwOyAtLWZpZWxkOiAjMWUyMTI4O1xuICAgIH1cbiAgfVxuICAqIHsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuICBib2R5IHtcbiAgICBtYXJnaW46IDA7IG1pbi1oZWlnaHQ6IDEwMHZoOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZyk7IGNvbG9yOiB2YXIoLS1mZyk7XG4gICAgZm9udC1mYW1pbHk6IHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgXCJTZWdvZSBVSVwiLCBzYW5zLXNlcmlmOyBwYWRkaW5nOiAyNHB4O1xuICB9XG4gIC5jYXJkIHtcbiAgICB3aWR0aDogMTAwJTsgbWF4LXdpZHRoOiAzNjBweDsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiAxNHB4OyBwYWRkaW5nOiAyOHB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1iZyk7XG4gIH1cbiAgLmxvZ28geyB3aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4OyBkaXNwbGF5OiBibG9jazsgbWFyZ2luOiAwIDAgMTRweDsgfVxuICBoMSB7IGZvbnQtc2l6ZTogMThweDsgbWFyZ2luOiAwIDAgNHB4OyB9XG4gIHAuc3ViIHsgbWFyZ2luOiAwIDAgMjBweDsgY29sb3I6IHZhcigtLW11dGVkKTsgZm9udC1zaXplOiAxM3B4OyB9XG4gIGxhYmVsIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IHZhcigtLW11dGVkKTsgbWFyZ2luOiAwIDAgNnB4OyB9XG4gIGlucHV0IHtcbiAgICB3aWR0aDogMTAwJTsgcGFkZGluZzogMTBweCAxMnB4OyBmb250LXNpemU6IDE1cHg7IGJvcmRlci1yYWRpdXM6IDlweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBiYWNrZ3JvdW5kOiB2YXIoLS1maWVsZCk7IGNvbG9yOiB2YXIoLS1mZyk7XG4gIH1cbiAgaW5wdXQ6Zm9jdXMgeyBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tYWNjZW50KTsgb3V0bGluZS1vZmZzZXQ6IC0xcHg7IH1cbiAgYnV0dG9uIHtcbiAgICB3aWR0aDogMTAwJTsgbWFyZ2luLXRvcDogMTZweDsgcGFkZGluZzogMTBweCAxMnB4OyBmb250LXNpemU6IDE1cHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDsgYm9yZGVyOiAwOyBib3JkZXItcmFkaXVzOiA5cHg7IGJhY2tncm91bmQ6IHZhcigtLWFjY2VudCk7XG4gICAgY29sb3I6IHZhcigtLWFjY2VudC1mZyk7IGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICBidXR0b246ZGlzYWJsZWQgeyBvcGFjaXR5OiAwLjY7IGN1cnNvcjogZGVmYXVsdDsgfVxuICAubXNnIHsgbWFyZ2luLXRvcDogMTRweDsgZm9udC1zaXplOiAxM3B4OyBtaW4taGVpZ2h0OiAxOHB4OyB9XG4gIC5tc2cuZXJyb3IgeyBjb2xvcjogdmFyKC0tZXJyb3IpOyB9XG4gIC5oaWRkZW4geyBkaXNwbGF5OiBub25lOyB9XG4gIC5iYWNrIHsgYmFja2dyb3VuZDogbm9uZTsgY29sb3I6IHZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6IDQwMDsgbWFyZ2luLXRvcDogOHB4OyB9XG48L3N0eWxlPlxuPC9oZWFkPlxuPGJvZHk+XG4gIDxtYWluIGNsYXNzPVwiY2FyZFwiPlxuICAgIDwhLS0gZGJ4LnRvb2xzIHBpeGVsLWJyaWNrIFwic3RhY2hlXCIgbWFyayAoTGF2YSBwYWxldHRlKSwgbWF0Y2hpbmcgdGhlIEthbm5hIFVJIGxvZ28uIC0tPlxuICAgIDxzdmcgY2xhc3M9XCJsb2dvXCIgdmlld0JveD1cIjAgMCA2NCA2NFwiIHJvbGU9XCJpbWdcIiBhcmlhLWxhYmVsPVwiJHticmFuZH1cIiBzaGFwZS1yZW5kZXJpbmc9XCJjcmlzcEVkZ2VzXCI+XG4gICAgICA8cmVjdCB4PVwiMTlcIiB5PVwiMjBcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCI4XCIgcng9XCIxXCIgZmlsbD1cIiNGRjM2MjFcIi8+PHJlY3QgeD1cIjM3XCIgeT1cIjIwXCIgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIHJ4PVwiMVwiIGZpbGw9XCIjRkYzNjIxXCIvPlxuICAgICAgPHJlY3QgeD1cIjFcIiB5PVwiMjlcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCI4XCIgcng9XCIxXCIgZmlsbD1cIiNEOTJEMThcIi8+PHJlY3QgeD1cIjEwXCIgeT1cIjI5XCIgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIHJ4PVwiMVwiIGZpbGw9XCIjRkYzNjIxXCIvPjxyZWN0IHg9XCIxOVwiIHk9XCIyOVwiIHdpZHRoPVwiOFwiIGhlaWdodD1cIjhcIiByeD1cIjFcIiBmaWxsPVwiI0ZGNUE0NlwiLz48cmVjdCB4PVwiMjhcIiB5PVwiMjlcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCI4XCIgcng9XCIxXCIgZmlsbD1cIiNGRjg5NzRcIi8+PHJlY3QgeD1cIjM3XCIgeT1cIjI5XCIgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIHJ4PVwiMVwiIGZpbGw9XCIjRkY1QTQ2XCIvPjxyZWN0IHg9XCI0NlwiIHk9XCIyOVwiIHdpZHRoPVwiOFwiIGhlaWdodD1cIjhcIiByeD1cIjFcIiBmaWxsPVwiI0ZGMzYyMVwiLz48cmVjdCB4PVwiNTVcIiB5PVwiMjlcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCI4XCIgcng9XCIxXCIgZmlsbD1cIiNEOTJEMThcIi8+XG4gICAgICA8cmVjdCB4PVwiMTBcIiB5PVwiMzhcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCI4XCIgcng9XCIxXCIgZmlsbD1cIiNGRjM2MjFcIi8+PHJlY3QgeD1cIjQ2XCIgeT1cIjM4XCIgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIHJ4PVwiMVwiIGZpbGw9XCIjRkYzNjIxXCIvPlxuICAgIDwvc3ZnPlxuICAgIDxoMT5TaWduIGluIHRvICR7YnJhbmR9PC9oMT5cbiAgICA8cCBjbGFzcz1cInN1YlwiPkVudGVyIHlvdXIgZW1haWwgdG8gcmVjZWl2ZSBhIG9uZS10aW1lIGNvZGUuPC9wPlxuXG4gICAgPGZvcm0gaWQ9XCJlbWFpbC1mb3JtXCI+XG4gICAgICA8bGFiZWwgZm9yPVwiZW1haWxcIj5FbWFpbDwvbGFiZWw+XG4gICAgICA8aW5wdXQgaWQ9XCJlbWFpbFwiIG5hbWU9XCJlbWFpbFwiIHR5cGU9XCJlbWFpbFwiIGF1dG9jb21wbGV0ZT1cImVtYWlsXCIgcmVxdWlyZWQgYXV0b2ZvY3VzPlxuICAgICAgPGJ1dHRvbiBpZD1cImVtYWlsLXN1Ym1pdFwiIHR5cGU9XCJzdWJtaXRcIj5TZW5kIGNvZGU8L2J1dHRvbj5cbiAgICA8L2Zvcm0+XG5cbiAgICA8Zm9ybSBpZD1cImNvZGUtZm9ybVwiIGNsYXNzPVwiaGlkZGVuXCI+XG4gICAgICA8bGFiZWwgZm9yPVwiY29kZVwiPlZlcmlmaWNhdGlvbiBjb2RlPC9sYWJlbD5cbiAgICAgIDxpbnB1dCBpZD1cImNvZGVcIiBuYW1lPVwiY29kZVwiIGlucHV0bW9kZT1cIm51bWVyaWNcIiBhdXRvY29tcGxldGU9XCJvbmUtdGltZS1jb2RlXCIgcmVxdWlyZWQ+XG4gICAgICA8YnV0dG9uIGlkPVwiY29kZS1zdWJtaXRcIiB0eXBlPVwic3VibWl0XCI+VmVyaWZ5PC9idXR0b24+XG4gICAgICA8YnV0dG9uIGlkPVwiYmFja1wiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJhY2tcIj5Vc2UgYSBkaWZmZXJlbnQgZW1haWw8L2J1dHRvbj5cbiAgICA8L2Zvcm0+XG5cbiAgICA8ZGl2IGlkPVwibXNnXCIgY2xhc3M9XCJtc2dcIiByb2xlPVwic3RhdHVzXCIgYXJpYS1saXZlPVwicG9saXRlXCI+PC9kaXY+XG4gIDwvbWFpbj5cblxuPHNjcmlwdD5cbihmdW5jdGlvbiAoKSB7XG4gIHZhciBQUkVGSVggPSAke3ByZWZpeH07XG4gIHZhciBlbWFpbEZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImVtYWlsLWZvcm1cIik7XG4gIHZhciBjb2RlRm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29kZS1mb3JtXCIpO1xuICB2YXIgZW1haWxJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZW1haWxcIik7XG4gIHZhciBjb2RlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvZGVcIik7XG4gIHZhciBiYWNrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJiYWNrXCIpO1xuICB2YXIgbXNnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtc2dcIik7XG4gIHZhciBlbWFpbCA9IFwiXCI7XG5cbiAgZnVuY3Rpb24gc2F5KHRleHQsIGlzRXJyb3IpIHtcbiAgICBtc2cudGV4dENvbnRlbnQgPSB0ZXh0IHx8IFwiXCI7XG4gICAgbXNnLmNsYXNzTmFtZSA9IFwibXNnXCIgKyAoaXNFcnJvciA/IFwiIGVycm9yXCIgOiBcIlwiKTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHBvc3QocGF0aCwgYm9keSkge1xuICAgIHZhciByZXMgPSBhd2FpdCBmZXRjaChQUkVGSVggKyBwYXRoLCB7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgY3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxuICAgICAgaGVhZGVyczogeyBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksXG4gICAgfSk7XG4gICAgdmFyIGRhdGEgPSB7fTtcbiAgICB0cnkgeyBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTsgfSBjYXRjaCAoX2UpIHsgLyogbm9uLUpTT04gKi8gfVxuICAgIHJldHVybiB7IG9rOiByZXMub2ssIHN0YXR1czogcmVzLnN0YXR1cywgZGF0YTogZGF0YSB9O1xuICB9XG5cbiAgZnVuY3Rpb24gZXJyb3JUZXh0KGRhdGEsIGZhbGxiYWNrKSB7XG4gICAgLy8gYmV0dGVyLWF1dGggZXJyb3Igc2hhcGU6IHsgbWVzc2FnZSB9IG9yIHsgZXJyb3I6IHsgbWVzc2FnZSB9IH0uXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5lcnJvciAmJiBkYXRhLmVycm9yLm1lc3NhZ2UpIHJldHVybiBkYXRhLmVycm9yLm1lc3NhZ2U7XG4gICAgaWYgKGRhdGEgJiYgZGF0YS5tZXNzYWdlKSByZXR1cm4gZGF0YS5tZXNzYWdlO1xuICAgIHJldHVybiBmYWxsYmFjaztcbiAgfVxuXG4gIGVtYWlsRm9ybS5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIGFzeW5jIGZ1bmN0aW9uIChlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGVtYWlsID0gZW1haWxJbnB1dC52YWx1ZS50cmltKCk7XG4gICAgaWYgKCFlbWFpbCkgcmV0dXJuO1xuICAgIHZhciBzdWJtaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImVtYWlsLXN1Ym1pdFwiKTtcbiAgICBzdWJtaXQuZGlzYWJsZWQgPSB0cnVlO1xuICAgIHNheShcIlNlbmRpbmfigKZcIik7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGJldHRlci1hdXRoIGVtYWlsT1RQIG5hdGl2ZSBlbmRwb2ludC5cbiAgICAgIHZhciByID0gYXdhaXQgcG9zdChcIi9lbWFpbC1vdHAvc2VuZC12ZXJpZmljYXRpb24tb3RwXCIsIHsgZW1haWw6IGVtYWlsLCB0eXBlOiBcInNpZ24taW5cIiB9KTtcbiAgICAgIGlmIChyLm9rKSB7XG4gICAgICAgIGVtYWlsRm9ybS5jbGFzc0xpc3QuYWRkKFwiaGlkZGVuXCIpO1xuICAgICAgICBjb2RlRm9ybS5jbGFzc0xpc3QucmVtb3ZlKFwiaGlkZGVuXCIpO1xuICAgICAgICBjb2RlSW5wdXQuZm9jdXMoKTtcbiAgICAgICAgc2F5KFwiV2UgZW1haWxlZCBhIGNvZGUgdG8gXCIgKyBlbWFpbCArIFwiLlwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNheShlcnJvclRleHQoci5kYXRhLCBcIkNvdWxkIG5vdCBzZW5kIGEgY29kZS4gQ2hlY2sgdGhlIGFkZHJlc3MgYW5kIHRyeSBhZ2Fpbi5cIiksIHRydWUpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKF9lKSB7XG4gICAgICBzYXkoXCJOZXR3b3JrIGVycm9yLiBUcnkgYWdhaW4uXCIsIHRydWUpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzdWJtaXQuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvZGVGb3JtLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWJtaXRcIiwgYXN5bmMgZnVuY3Rpb24gKGUpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgdmFyIGNvZGUgPSBjb2RlSW5wdXQudmFsdWUudHJpbSgpO1xuICAgIGlmICghY29kZSkgcmV0dXJuO1xuICAgIHZhciBzdWJtaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvZGUtc3VibWl0XCIpO1xuICAgIHN1Ym1pdC5kaXNhYmxlZCA9IHRydWU7XG4gICAgc2F5KFwiVmVyaWZ5aW5n4oCmXCIpO1xuICAgIHRyeSB7XG4gICAgICAvLyBiZXR0ZXItYXV0aCBzaWduLWluIHdpdGggdGhlIE9UUDsgc2V0cyB0aGUgc2Vzc2lvbiBjb29raWUgb24gc3VjY2Vzcy5cbiAgICAgIHZhciByID0gYXdhaXQgcG9zdChcIi9zaWduLWluL2VtYWlsLW90cFwiLCB7XG4gICAgICAgIGVtYWlsOiBlbWFpbCxcbiAgICAgICAgb3RwOiBjb2RlLFxuICAgICAgICBuYW1lOiBlbWFpbC5zcGxpdChcIkBcIilbMF0sXG4gICAgICB9KTtcbiAgICAgIGlmIChyLm9rKSB7XG4gICAgICAgIHNheShcIlNpZ25lZCBpbi4gTG9hZGluZ+KAplwiKTtcbiAgICAgICAgLy8gVGhlIHNlc3Npb24gY29va2llIGlzIHNldDsgcmVsb2FkIHNvIHRoZSBub3ctYXV0aGVudGljYXRlZCByZXF1ZXN0XG4gICAgICAgIC8vIHJlYWNoZXMgdGhlIGFwcC5cbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2F5KGVycm9yVGV4dChyLmRhdGEsIFwiVGhhdCBjb2RlIHdhcyBub3QgYWNjZXB0ZWQuIFRyeSBhZ2Fpbi5cIiksIHRydWUpO1xuICAgICAgICBzdWJtaXQuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChfZSkge1xuICAgICAgc2F5KFwiTmV0d29yayBlcnJvci4gVHJ5IGFnYWluLlwiLCB0cnVlKTtcbiAgICAgIHN1Ym1pdC5kaXNhYmxlZCA9IGZhbHNlO1xuICAgIH1cbiAgfSk7XG5cbiAgYmFjay5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xuICAgIGNvZGVGb3JtLmNsYXNzTGlzdC5hZGQoXCJoaWRkZW5cIik7XG4gICAgZW1haWxGb3JtLmNsYXNzTGlzdC5yZW1vdmUoXCJoaWRkZW5cIik7XG4gICAgY29kZUlucHV0LnZhbHVlID0gXCJcIjtcbiAgICBzYXkoXCJcIik7XG4gICAgZW1haWxJbnB1dC5mb2N1cygpO1xuICB9KTtcbn0pKCk7XG48L3NjcmlwdD5cbjwvYm9keT5cbjwvaHRtbD5gO1xufVxuXG5jb25zdCBIVE1MX0VTQ0FQRVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIFwiJlwiOiBcIiZhbXA7XCIsXG4gIFwiPFwiOiBcIiZsdDtcIixcbiAgXCI+XCI6IFwiJmd0O1wiLFxuICAnXCInOiBcIiZxdW90O1wiLFxuICBcIidcIjogXCImIzM5O1wiLFxufTtcblxuZnVuY3Rpb24gZXNjYXBlSHRtbCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1smPD5cIiddL2csIChjaCkgPT4gSFRNTF9FU0NBUEVTW2NoXSA/PyBjaCk7XG59XG4iXX0=
package/package.json CHANGED
@@ -18,21 +18,21 @@
18
18
  "projen": "projen"
19
19
  },
20
20
  "devDependencies": {
21
- "@dbx-tools/email": "0.6.99",
21
+ "@dbx-tools/email": "0.6.100",
22
22
  "@types/bun": "^1.3.14",
23
23
  "@types/node": "^24.6.0",
24
24
  "typescript": "^5.9.3"
25
25
  },
26
26
  "peerDependencies": {
27
- "@dbx-tools/email": "0.6.99"
27
+ "@dbx-tools/email": "0.6.100"
28
28
  },
29
29
  "dependencies": {
30
30
  "@databricks/appkit": "^0.43.0",
31
- "@dbx-tools/appkit": "0.6.99",
32
- "@dbx-tools/auth": "0.6.99",
33
- "@dbx-tools/core": "0.6.99",
34
- "@dbx-tools/shared-auth": "0.6.99",
35
- "@dbx-tools/shared-core": "0.6.99"
31
+ "@dbx-tools/appkit": "0.6.100",
32
+ "@dbx-tools/auth": "0.6.100",
33
+ "@dbx-tools/core": "0.6.100",
34
+ "@dbx-tools/shared-auth": "0.6.100",
35
+ "@dbx-tools/shared-core": "0.6.100"
36
36
  },
37
37
  "main": "./lib/index.js",
38
38
  "license": "UNLICENSED",
@@ -48,7 +48,7 @@
48
48
  "./package.json": "./package.json"
49
49
  }
50
50
  },
51
- "version": "0.6.99",
51
+ "version": "0.6.100",
52
52
  "types": "./lib/index.d.ts",
53
53
  "type": "module",
54
54
  "exports": {
package/src/login-page.ts CHANGED
@@ -37,12 +37,12 @@ export function loginPageHtml(options: LoginPageOptions): string {
37
37
  :root {
38
38
  color-scheme: light dark;
39
39
  --bg: #ffffff; --fg: #1b1b1f; --muted: #6b7280; --border: #d9dce1;
40
- --accent: #1a73e8; --accent-fg: #ffffff; --error: #c5221f; --field: #ffffff;
40
+ --accent: #FF3621; --accent-fg: #ffffff; --error: #c5221f; --field: #ffffff;
41
41
  }
42
42
  @media (prefers-color-scheme: dark) {
43
43
  :root {
44
44
  --bg: #16181d; --fg: #e8e6df; --muted: #9aa0aa; --border: #2c2f36;
45
- --accent: #4c8dff; --accent-fg: #0b0f19; --error: #ff6b60; --field: #1e2128;
45
+ --accent: #FF5A46; --accent-fg: #0b0f19; --error: #ff6b60; --field: #1e2128;
46
46
  }
47
47
  }
48
48
  * { box-sizing: border-box; }
@@ -55,6 +55,7 @@ export function loginPageHtml(options: LoginPageOptions): string {
55
55
  width: 100%; max-width: 360px; border: 1px solid var(--border);
56
56
  border-radius: 14px; padding: 28px; background: var(--bg);
57
57
  }
58
+ .logo { width: 40px; height: 40px; display: block; margin: 0 0 14px; }
58
59
  h1 { font-size: 18px; margin: 0 0 4px; }
59
60
  p.sub { margin: 0 0 20px; color: var(--muted); font-size: 13px; }
60
61
  label { display: block; font-size: 12px; color: var(--muted); margin: 0 0 6px; }
@@ -77,6 +78,12 @@ export function loginPageHtml(options: LoginPageOptions): string {
77
78
  </head>
78
79
  <body>
79
80
  <main class="card">
81
+ <!-- dbx.tools pixel-brick "stache" mark (Lava palette), matching the Kanna UI logo. -->
82
+ <svg class="logo" viewBox="0 0 64 64" role="img" aria-label="${brand}" shape-rendering="crispEdges">
83
+ <rect x="19" y="20" width="8" height="8" rx="1" fill="#FF3621"/><rect x="37" y="20" width="8" height="8" rx="1" fill="#FF3621"/>
84
+ <rect x="1" y="29" width="8" height="8" rx="1" fill="#D92D18"/><rect x="10" y="29" width="8" height="8" rx="1" fill="#FF3621"/><rect x="19" y="29" width="8" height="8" rx="1" fill="#FF5A46"/><rect x="28" y="29" width="8" height="8" rx="1" fill="#FF8974"/><rect x="37" y="29" width="8" height="8" rx="1" fill="#FF5A46"/><rect x="46" y="29" width="8" height="8" rx="1" fill="#FF3621"/><rect x="55" y="29" width="8" height="8" rx="1" fill="#D92D18"/>
85
+ <rect x="10" y="38" width="8" height="8" rx="1" fill="#FF3621"/><rect x="46" y="38" width="8" height="8" rx="1" fill="#FF3621"/>
86
+ </svg>
80
87
  <h1>Sign in to ${brand}</h1>
81
88
  <p class="sub">Enter your email to receive a one-time code.</p>
82
89