@boxes-dev/dvb 1.0.31 → 1.0.33
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.
- package/dist/bin/dvb.cjs +217 -123
- package/dist/bin/dvb.cjs.map +1 -1
- package/dist/bin/dvbd.cjs +5 -5
- package/dist/devbox/commands/init/codex/index.d.ts.map +1 -1
- package/dist/devbox/commands/init/codex/index.js +8 -15
- package/dist/devbox/commands/init/codex/index.js.map +1 -1
- package/dist/devbox/commands/init/index.d.ts.map +1 -1
- package/dist/devbox/commands/init/index.js +104 -17
- package/dist/devbox/commands/init/index.js.map +1 -1
- package/dist/devbox/commands/init/remote.d.ts.map +1 -1
- package/dist/devbox/commands/init/remote.js +16 -5
- package/dist/devbox/commands/init/remote.js.map +1 -1
- package/dist/devbox/commands/init/state.d.ts +2 -1
- package/dist/devbox/commands/init/state.d.ts.map +1 -1
- package/dist/devbox/commands/init/state.js +1 -0
- package/dist/devbox/commands/init/state.js.map +1 -1
- package/dist/devbox/commands/setup.d.ts.map +1 -1
- package/dist/devbox/commands/setup.js +42 -18
- package/dist/devbox/commands/setup.js.map +1 -1
- package/dist/devbox/controlPlane.d.ts.map +1 -1
- package/dist/devbox/controlPlane.js +23 -19
- package/dist/devbox/controlPlane.js.map +1 -1
- package/dist/devbox/ui/copyableUrl.d.ts +3 -0
- package/dist/devbox/ui/copyableUrl.d.ts.map +1 -0
- package/dist/devbox/ui/copyableUrl.js +7 -0
- package/dist/devbox/ui/copyableUrl.js.map +1 -0
- package/dist/scripts/fix-bashrc.sh +33 -14
- package/dist/scripts/fix-zshrc.sh +56 -0
- package/package.json +1 -1
package/dist/bin/dvb.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
3
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="cd199da5-5299-508f-a0e3-01c6aff7017e")}catch(e){}}();
|
|
4
4
|
|
|
5
5
|
var __create = Object.create;
|
|
6
6
|
var __defProp = Object.defineProperty;
|
|
@@ -88634,8 +88634,8 @@ var init_otel = __esm({
|
|
|
88634
88634
|
return trimmed && trimmed.length > 0 ? trimmed : void 0;
|
|
88635
88635
|
};
|
|
88636
88636
|
readBuildMetadata = () => {
|
|
88637
|
-
const rawPackageVersion = "1.0.
|
|
88638
|
-
const rawGitSha = "
|
|
88637
|
+
const rawPackageVersion = "1.0.33";
|
|
88638
|
+
const rawGitSha = "fa907b87a93b04d34b7fc28eae6436ee11a6a456";
|
|
88639
88639
|
const packageVersion = typeof rawPackageVersion === "string" ? rawPackageVersion : void 0;
|
|
88640
88640
|
const gitSha = typeof rawGitSha === "string" ? rawGitSha : void 0;
|
|
88641
88641
|
return { packageVersion, gitSha };
|
|
@@ -120623,9 +120623,9 @@ var init_sentry = __esm({
|
|
|
120623
120623
|
sentryEnabled = false;
|
|
120624
120624
|
uncaughtExceptionMonitorInstalled = false;
|
|
120625
120625
|
readBuildMetadata2 = () => {
|
|
120626
|
-
const rawPackageVersion = "1.0.
|
|
120627
|
-
const rawGitSha = "
|
|
120628
|
-
const rawSentryRelease = "boxes-dev-dvb@1.0.
|
|
120626
|
+
const rawPackageVersion = "1.0.33";
|
|
120627
|
+
const rawGitSha = "fa907b87a93b04d34b7fc28eae6436ee11a6a456";
|
|
120628
|
+
const rawSentryRelease = "boxes-dev-dvb@1.0.33+fa907b87a93b04d34b7fc28eae6436ee11a6a456";
|
|
120629
120629
|
const packageVersion = typeof rawPackageVersion === "string" ? rawPackageVersion : void 0;
|
|
120630
120630
|
const gitSha = typeof rawGitSha === "string" ? rawGitSha : void 0;
|
|
120631
120631
|
const sentryRelease = typeof rawSentryRelease === "string" ? rawSentryRelease : void 0;
|
|
@@ -133137,7 +133137,7 @@ function D(t3, e2, s2) {
|
|
|
133137
133137
|
const i2 = t3 + e2, r2 = Math.max(s2.length - 1, 0), n2 = i2 < 0 ? r2 : i2 > r2 ? 0 : i2;
|
|
133138
133138
|
return s2[n2].disabled ? D(n2, e2 < 0 ? -1 : 1, s2) : n2;
|
|
133139
133139
|
}
|
|
133140
|
-
var import_node_process, k, import_node_readline2, import_sisteransi, import_node_tty, at, lt, ht, O, y, M, P, L, ct, pt, X, ft, S, W, Z, Ft, j, Q, dt, tt, U, et, mt, st, it, gt, G, vt, Et, At, _, bt, z, rt, nt, x, kt, Mt, Wt
|
|
133140
|
+
var import_node_process, k, import_node_readline2, import_sisteransi, import_node_tty, at, lt, ht, O, y, M, P, L, ct, pt, X, ft, S, W, Z, Ft, j, Q, dt, tt, U, et, mt, st, it, gt, G, vt, Et, At, _, bt, z, rt, nt, x, kt, Mt, Wt;
|
|
133141
133141
|
var init_dist2 = __esm({
|
|
133142
133142
|
"../../node_modules/@clack/core/dist/index.mjs"() {
|
|
133143
133143
|
import_node_process = require("node:process");
|
|
@@ -133522,21 +133522,6 @@ var init_dist2 = __esm({
|
|
|
133522
133522
|
});
|
|
133523
133523
|
}
|
|
133524
133524
|
};
|
|
133525
|
-
Tt = class extends x {
|
|
133526
|
-
options;
|
|
133527
|
-
cursor = 0;
|
|
133528
|
-
constructor(e2) {
|
|
133529
|
-
super(e2, false), this.options = e2.options;
|
|
133530
|
-
const s2 = e2.caseSensitive === true, i2 = this.options.map(({ value: [r2] }) => s2 ? r2 : r2?.toLowerCase());
|
|
133531
|
-
this.cursor = Math.max(i2.indexOf(e2.initialValue), 0), this.on("key", (r2, n2) => {
|
|
133532
|
-
if (!r2) return;
|
|
133533
|
-
const u2 = s2 && n2.shift ? r2.toUpperCase() : r2;
|
|
133534
|
-
if (!i2.includes(u2)) return;
|
|
133535
|
-
const a2 = this.options.find(({ value: [l2] }) => s2 ? l2 === u2 : l2?.toLowerCase() === r2);
|
|
133536
|
-
a2 && (this.value = a2.value, this.state = "submit", this.emit("submit"));
|
|
133537
|
-
});
|
|
133538
|
-
}
|
|
133539
|
-
};
|
|
133540
133525
|
}
|
|
133541
133526
|
});
|
|
133542
133527
|
|
|
@@ -133551,7 +133536,7 @@ function q2(e2, r2, s2) {
|
|
|
133551
133536
|
`).map((i2) => St(i2, r2, s2)).join(`
|
|
133552
133537
|
`);
|
|
133553
133538
|
}
|
|
133554
|
-
var import_picocolors, import_node_process2, import_sisteransi2, ee, ue, Te, w, Me, ce, de, k2, $e, h, x2, Re, Oe, Y, K2, te, G2, z2, Pe, se, he, Ne, me, pe, We, ge, fe, Fe, ye, N2, Ee, mt2, pt2, gt2, ve, re, ie, Ae, ne, ft2, Ft2, Le, yt2, M2, ae, je, Et2, Ce, Ve, vt2, ke, we, Ge, At2, He, Ue, Ct2, Se, wt, St, It2, J2, Mt2, R2, Pt, jt, Vt2, kt2, Ut, Ie, Ye, oe, qt,
|
|
133539
|
+
var import_picocolors, import_node_process2, import_sisteransi2, ee, ue, Te, w, Me, ce, de, k2, $e, h, x2, Re, Oe, Y, K2, te, G2, z2, Pe, se, he, Ne, me, pe, We, ge, fe, Fe, ye, N2, Ee, mt2, pt2, gt2, ve, re, ie, Ae, ne, ft2, Ft2, Le, yt2, M2, ae, je, Et2, Ce, Ve, vt2, ke, we, Ge, At2, He, Ue, Ct2, Se, wt, St, It2, J2, Mt2, R2, Pt, jt, Vt2, kt2, Ut, Ie, Ye, oe, qt, ze, Yt, zt;
|
|
133555
133540
|
var init_dist3 = __esm({
|
|
133556
133541
|
"../../node_modules/@clack/prompts/dist/index.mjs"() {
|
|
133557
133542
|
init_dist2();
|
|
@@ -133968,35 +133953,6 @@ ${import_picocolors.default.gray(h)}`;
|
|
|
133968
133953
|
return `${o2}${u2}${J2({ output: e2.output, cursor: this.cursor, options: this.options, maxItems: e2.maxItems, columnPadding: u2.length, rowPadding: l2 + 2, style: (a2, d2) => r2(a2, a2.disabled ? "disabled" : d2 ? "active" : "inactive") }).join(`
|
|
133969
133954
|
${u2}`)}
|
|
133970
133955
|
${import_picocolors.default.cyan(x2)}
|
|
133971
|
-
`;
|
|
133972
|
-
}
|
|
133973
|
-
}
|
|
133974
|
-
} }).prompt();
|
|
133975
|
-
};
|
|
133976
|
-
Jt = (e2) => {
|
|
133977
|
-
const r2 = (s2, i2 = "inactive") => {
|
|
133978
|
-
const n2 = s2.label ?? String(s2.value);
|
|
133979
|
-
return i2 === "selected" ? `${import_picocolors.default.dim(n2)}` : i2 === "cancelled" ? `${import_picocolors.default.strikethrough(import_picocolors.default.dim(n2))}` : i2 === "active" ? `${import_picocolors.default.bgCyan(import_picocolors.default.gray(` ${s2.value} `))} ${n2}${s2.hint ? ` ${import_picocolors.default.dim(`(${s2.hint})`)}` : ""}` : `${import_picocolors.default.gray(import_picocolors.default.bgWhite(import_picocolors.default.inverse(` ${s2.value} `)))} ${n2}${s2.hint ? ` ${import_picocolors.default.dim(`(${s2.hint})`)}` : ""}`;
|
|
133980
|
-
};
|
|
133981
|
-
return new Tt({ options: e2.options, signal: e2.signal, input: e2.input, output: e2.output, initialValue: e2.initialValue, caseSensitive: e2.caseSensitive, render() {
|
|
133982
|
-
const s2 = `${import_picocolors.default.gray(h)}
|
|
133983
|
-
${N2(this.state)} ${e2.message}
|
|
133984
|
-
`;
|
|
133985
|
-
switch (this.state) {
|
|
133986
|
-
case "submit": {
|
|
133987
|
-
const i2 = `${import_picocolors.default.gray(h)} `, n2 = this.options.find((u2) => u2.value === this.value) ?? e2.options[0], o2 = Bt(e2.output, r2(n2, "selected"), i2);
|
|
133988
|
-
return `${s2}${o2}`;
|
|
133989
|
-
}
|
|
133990
|
-
case "cancel": {
|
|
133991
|
-
const i2 = `${import_picocolors.default.gray(h)} `, n2 = Bt(e2.output, r2(this.options[0], "cancelled"), i2);
|
|
133992
|
-
return `${s2}${n2}
|
|
133993
|
-
${import_picocolors.default.gray(h)}`;
|
|
133994
|
-
}
|
|
133995
|
-
default: {
|
|
133996
|
-
const i2 = `${import_picocolors.default.cyan(h)} `, n2 = this.options.map((o2, u2) => Bt(e2.output, r2(o2, u2 === this.cursor ? "active" : "inactive"), i2)).join(`
|
|
133997
|
-
`);
|
|
133998
|
-
return `${s2}${n2}
|
|
133999
|
-
${import_picocolors.default.cyan(x2)}
|
|
134000
133956
|
`;
|
|
134001
133957
|
}
|
|
134002
133958
|
}
|
|
@@ -134089,8 +134045,21 @@ var init_logger3 = __esm({
|
|
|
134089
134045
|
}
|
|
134090
134046
|
});
|
|
134091
134047
|
|
|
134048
|
+
// src/devbox/ui/copyableUrl.ts
|
|
134049
|
+
var showCopyableUrl;
|
|
134050
|
+
var init_copyableUrl = __esm({
|
|
134051
|
+
"src/devbox/ui/copyableUrl.ts"() {
|
|
134052
|
+
"use strict";
|
|
134053
|
+
init_dist3();
|
|
134054
|
+
showCopyableUrl = (url, label) => {
|
|
134055
|
+
R2.info(`${label}:`);
|
|
134056
|
+
R2.message(url, { withGuide: false, spacing: 0 });
|
|
134057
|
+
};
|
|
134058
|
+
}
|
|
134059
|
+
});
|
|
134060
|
+
|
|
134092
134061
|
// src/devbox/controlPlane.ts
|
|
134093
|
-
var import_node_http2, import_node_crypto5, import_node_child_process2, resolveControlPlaneUrl2, resolveConvexUrl2, openBrowser, escapeHtml, CALLBACK_LOGO_MARK, renderCallbackPage, requestJson2, startCallbackServer, getControlPlaneUrl, getConvexUrl, signInWithBrowser, spriteTokenGet, spriteTokenSet, spriteDaemonReleaseGet, spriteDaemonTokenIssue, spriteDaemonSessionSummariesList, spriteDaemonSessionsList, helloViewerGet, withConvexClient, fetchViewerIdentity, storeSpriteToken, fetchSpriteDaemonRelease, issueSpriteDaemonToken, listSpriteDaemonSessionSummaries, listSpriteDaemonSessions, signOutControlPlane, refreshControlPlaneSession;
|
|
134062
|
+
var import_node_http2, import_node_crypto5, import_node_child_process2, resolveControlPlaneUrl2, resolveConvexUrl2, openBrowser, escapeHtml, CALLBACK_LOGO_MARK, CALLBACK_FULL_LOGO, renderCallbackPage, requestJson2, startCallbackServer, getControlPlaneUrl, getConvexUrl, signInWithBrowser, spriteTokenGet, spriteTokenSet, spriteDaemonReleaseGet, spriteDaemonTokenIssue, spriteDaemonSessionSummariesList, spriteDaemonSessionsList, helloViewerGet, withConvexClient, fetchViewerIdentity, storeSpriteToken, fetchSpriteDaemonRelease, issueSpriteDaemonToken, listSpriteDaemonSessionSummaries, listSpriteDaemonSessions, signOutControlPlane, refreshControlPlaneSession;
|
|
134094
134063
|
var init_controlPlane = __esm({
|
|
134095
134064
|
"src/devbox/controlPlane.ts"() {
|
|
134096
134065
|
"use strict";
|
|
@@ -134101,6 +134070,7 @@ var init_controlPlane = __esm({
|
|
|
134101
134070
|
init_index_node();
|
|
134102
134071
|
init_server();
|
|
134103
134072
|
init_logger3();
|
|
134073
|
+
init_copyableUrl();
|
|
134104
134074
|
resolveControlPlaneUrl2 = () => {
|
|
134105
134075
|
const envOverride = process.env.DEVBOX_CONTROL_PLANE_URL ?? process.env.CONVEX_SITE_URL;
|
|
134106
134076
|
if (envOverride && envOverride.trim().length > 0) {
|
|
@@ -134153,6 +134123,7 @@ var init_controlPlane = __esm({
|
|
|
134153
134123
|
<rect x="3" y="9" width="3" height="30" fill="#fff" />
|
|
134154
134124
|
<rect x="9" y="3" width="30" height="3" fill="#fff" />
|
|
134155
134125
|
</svg>`;
|
|
134126
|
+
CALLBACK_FULL_LOGO = `<svg width="3066.72" xmlns="http://www.w3.org/2000/svg" height="480" id="screenshot-2bc11706-71c4-8067-8007-89f57e8f9bba" viewBox="-168 0 3066.72 480" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1"><g id="shape-2bc11706-71c4-8067-8007-89f57e8f9bba" rx="0" ry="0"><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3cb" rx="0" ry="0"><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3cc" rx="0" ry="0"><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d0"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d0"><rect rx="0" ry="0" x="56" y="56" transform="matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)" width="368" height="368"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d46fa80c-691a92d0-935c-80e0-8007-89f2879cb3d0" class="strokes"><g class="inner-stroke-shape" transform="matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)"><defs><clipPath id="inner-stroke-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0"><use href="#stroke-shape-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0"/></clipPath><rect rx="0" ry="0" x="56" y="56" width="368" height="368" id="stroke-shape-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0" style="fill: none; stroke-width: 64; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0" clip-path="url('#inner-stroke-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0')"/></g></g></g><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d1"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d1"><path d="M480,424L448,424L448,56L480,424" style="fill: rgb(255, 255, 255); fill-opacity: 1;"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d47002d4-691a92d0-935c-80e0-8007-89f2879cb3d1" class="strokes"><g class="inner-stroke-shape"><defs><clipPath id="inner-stroke-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0"><use href="#stroke-shape-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0"/></clipPath><path d="M480,424L448,424L448,56L480,424" id="stroke-shape-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0" style="fill: none; stroke-width: 4; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0" clip-path="url('#inner-stroke-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0')"/></g></g></g><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d2"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d2"><path d="M56,480L56,448L424,448L56,480" style="fill: rgb(255, 255, 255); fill-opacity: 1;"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d4707fab-691a92d0-935c-80e0-8007-89f2879cb3d2" class="strokes"><g class="inner-stroke-shape"><defs><clipPath id="inner-stroke-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0"><use href="#stroke-shape-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0"/></clipPath><path d="M56,480L56,448L424,448L56,480" id="stroke-shape-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0" style="fill: none; stroke-width: 4; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0" clip-path="url('#inner-stroke-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0')"/></g></g></g><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d3"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d3"><path d="M0,56L32,56L32,424L0,56" style="fill: rgb(255, 255, 255); fill-opacity: 1;"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d4709315-691a92d0-935c-80e0-8007-89f2879cb3d3" class="strokes"><g class="inner-stroke-shape"><defs><clipPath id="inner-stroke-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0"><use href="#stroke-shape-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0"/></clipPath><path d="M0,56L32,56L32,424L0,56" id="stroke-shape-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0" style="fill: none; stroke-width: 4; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0" clip-path="url('#inner-stroke-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0')"/></g></g></g><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d4"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d4"><path d="M424,0L424,32L56,32L424,0" style="fill: rgb(255, 255, 255); fill-opacity: 1;"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d470e827-691a92d0-935c-80e0-8007-89f2879cb3d4" class="strokes"><g class="inner-stroke-shape"><defs><clipPath id="inner-stroke-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0"><use href="#stroke-shape-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0"/></clipPath><path d="M424,0L424,32L56,32L424,0" id="stroke-shape-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0" style="fill: none; stroke-width: 4; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0" clip-path="url('#inner-stroke-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0')"/></g></g></g></g></g><g id="shape-2bc11706-71c4-8067-8007-89f2ebcaa5b6"><g class="fills" id="fills-2bc11706-71c4-8067-8007-89f2ebcaa5b6"><path d="M644.1201171875,409.72021484375L644.1201171875,54.52001953125L705.5595703125,54.52001953125L705.5595703125,205.72021484375L708.919921875,205.72021484375C715.6396484375,190.68017578125,724.83984375,178.68017578125,736.51953125,169.72021484375C748.2001953125,160.759765625,763.6396484375,156.27978515625,782.83984375,156.27978515625L782.83984375,156.27978515625C796.919921875,156.27978515625,809.7998046875,158.919921875,821.48046875,164.2001953125C833.16015625,169.47998046875,843.16015625,177.47998046875,851.48046875,188.2001953125C859.7998046875,198.919921875,866.2001953125,212.43994140625,870.6796875,228.759765625C875.16015625,245.080078125,877.400390625,264.1201171875,877.400390625,285.8798828125L877.400390625,285.8798828125C877.400390625,307.64013671875,875.16015625,326.68017578125,870.6796875,343C866.2001953125,359.31982421875,859.7998046875,372.83984375,851.48046875,383.56005859375C843.16015625,394.27978515625,833.16015625,402.27978515625,821.48046875,407.56005859375C809.7998046875,412.83984375,796.919921875,415.47998046875,782.83984375,415.47998046875L782.83984375,415.47998046875C763.6396484375,415.47998046875,748.2001953125,411,736.51953125,402.0400390625C724.83984375,393.080078125,715.6396484375,381.080078125,708.919921875,366.0400390625L708.919921875,366.0400390625L705.5595703125,366.0400390625L705.5595703125,409.72021484375L644.1201171875,409.72021484375ZM756.919921875,366.52001953125L756.919921875,366.52001953125C774.83984375,366.52001953125,788.6796875,361.080078125,798.4404296875,350.2001953125C808.2001953125,339.31982421875,813.080078125,324.43994140625,813.080078125,305.56005859375L813.080078125,305.56005859375L813.080078125,266.2001953125C813.080078125,247.31982421875,808.2001953125,232.43994140625,798.4404296875,221.56005859375C788.6796875,210.68017578125,774.83984375,205.240234375,756.919921875,205.240234375L756.919921875,205.240234375C742.83984375,205.240234375,730.759765625,208.68017578125,720.6796875,215.56005859375C710.599609375,222.43994140625,705.5595703125,232.919921875,705.5595703125,247L705.5595703125,247L705.5595703125,324.76025390625C705.5595703125,338.83984375,710.599609375,349.31982421875,720.6796875,356.2001953125C730.759765625,363.080078125,742.83984375,366.52001953125,756.919921875,366.52001953125ZM1031,415.47998046875L1031,415.47998046875C1012.1201171875,415.47998046875,995.240234375,412.43994140625,980.3603515625,406.35986328125C965.48046875,400.27978515625,952.83984375,391.64013671875,942.4404296875,380.43994140625C932.0400390625,369.240234375,924.0400390625,355.64013671875,918.4404296875,339.64013671875C912.83984375,323.64013671875,910.0400390625,305.72021484375,910.0400390625,285.8798828125L910.0400390625,285.8798828125C910.0400390625,266.0400390625,912.83984375,248.1201171875,918.4404296875,232.1201171875C924.0400390625,216.1201171875,932.0400390625,202.52001953125,942.4404296875,191.31982421875C952.83984375,180.1201171875,965.48046875,171.47998046875,980.3603515625,165.39990234375C995.240234375,159.31982421875,1012.1201171875,156.27978515625,1031,156.27978515625L1031,156.27978515625C1049.5595703125,156.27978515625,1066.3603515625,159.31982421875,1081.400390625,165.39990234375C1096.4404296875,171.47998046875,1109.16015625,180.1201171875,1119.5595703125,191.31982421875C1129.9599609375,202.52001953125,1137.9599609375,216.1201171875,1143.5595703125,232.1201171875C1149.16015625,248.1201171875,1151.9599609375,266.0400390625,1151.9599609375,285.8798828125L1151.9599609375,285.8798828125C1151.9599609375,305.72021484375,1149.16015625,323.64013671875,1143.5595703125,339.64013671875C1137.9599609375,355.64013671875,1129.9599609375,369.240234375,1119.5595703125,380.43994140625C1109.16015625,391.64013671875,1096.4404296875,400.27978515625,1081.400390625,406.35986328125C1066.3603515625,412.43994140625,1049.5595703125,415.47998046875,1031,415.47998046875ZM1031,368.43994140625L1031,368.43994140625C1048.599609375,368.43994140625,1062.51953125,363.080078125,1072.759765625,352.35986328125C1083,341.64013671875,1088.1201171875,325.8798828125,1088.1201171875,305.080078125L1088.1201171875,305.080078125L1088.1201171875,266.68017578125C1088.1201171875,245.8798828125,1083,230.1201171875,1072.759765625,219.39990234375C1062.51953125,208.68017578125,1048.599609375,203.31982421875,1031,203.31982421875L1031,203.31982421875C1013.400390625,203.31982421875,999.48046875,208.68017578125,989.240234375,219.39990234375C979,230.1201171875,973.8798828125,245.8798828125,973.8798828125,266.68017578125L973.8798828125,266.68017578125L973.8798828125,305.080078125C973.8798828125,325.8798828125,979,341.64013671875,989.240234375,352.35986328125C999.48046875,363.080078125,1013.400390625,368.43994140625,1031,368.43994140625ZM1245.080078125,409.72021484375L1179.3203125,409.72021484375L1271.9599609375,283.9599609375L1184.599609375,162.0400390625L1255.16015625,162.0400390625L1284.919921875,205.72021484375L1307.9599609375,240.27978515625L1311.3203125,240.27978515625L1334.3603515625,205.72021484375L1364.1201171875,162.0400390625L1429.400390625,162.0400390625L1342.0400390625,281.080078125L1434.6796875,409.72021484375L1363.6396484375,409.72021484375L1329.5595703125,359.7998046875L1306.0400390625,324.76025390625L1302.6796875,324.76025390625L1279.16015625,359.7998046875L1245.080078125,409.72021484375ZM1588.759765625,415.47998046875L1588.759765625,415.47998046875C1568.919921875,415.47998046875,1551.3203125,412.43994140625,1535.9599609375,406.35986328125C1520.599609375,400.27978515625,1507.7197265625,391.64013671875,1497.3203125,380.43994140625C1486.919921875,369.240234375,1479,355.72021484375,1473.5595703125,339.8798828125C1468.1201171875,324.0400390625,1465.400390625,306.2001953125,1465.400390625,286.35986328125L1465.400390625,286.35986328125C1465.400390625,266.2001953125,1468.2001953125,248.1201171875,1473.7998046875,232.1201171875C1479.400390625,216.1201171875,1487.3203125,202.52001953125,1497.5595703125,191.31982421875C1507.7998046875,180.1201171875,1520.2001953125,171.47998046875,1534.759765625,165.39990234375C1549.3203125,159.31982421875,1565.7197265625,156.27978515625,1583.9599609375,156.27978515625L1583.9599609375,156.27978515625C1601.8798828125,156.27978515625,1618.0400390625,159.240234375,1632.4404296875,165.16015625C1646.83984375,171.080078125,1659.080078125,179.47998046875,1669.16015625,190.35986328125C1679.240234375,201.240234375,1687,214.35986328125,1692.439453125,229.72021484375C1697.8798828125,245.080078125,1700.599609375,262.0400390625,1700.599609375,280.60009765625L1700.599609375,280.60009765625L1700.599609375,300.76025390625L1526.83984375,300.76025390625L1526.83984375,307C1526.83984375,324.919921875,1532.4404296875,339.39990234375,1543.6396484375,350.43994140625C1554.83984375,361.47998046875,1570.51953125,367,1590.6796875,367L1590.6796875,367C1606.0400390625,367,1619.240234375,363.8798828125,1630.2802734375,357.64013671875C1641.3203125,351.39990234375,1650.51953125,343.16015625,1657.8798828125,332.919921875L1657.8798828125,332.919921875L1692.919921875,367.9599609375C1683.9599609375,381.080078125,1670.919921875,392.27978515625,1653.7998046875,401.56005859375C1636.6796875,410.83984375,1615,415.47998046875,1588.759765625,415.47998046875ZM1584.4404296875,201.39990234375L1584.4404296875,201.39990234375C1567.16015625,201.39990234375,1553.240234375,206.83984375,1542.6796875,217.72021484375C1532.1201171875,228.60009765625,1526.83984375,243,1526.83984375,260.919921875L1526.83984375,260.919921875L1526.83984375,264.27978515625L1639.16015625,264.27978515625L1639.16015625,259.9599609375C1639.16015625,242.0400390625,1634.2802734375,227.7998046875,1624.51953125,217.240234375C1614.759765625,206.68017578125,1601.400390625,201.39990234375,1584.4404296875,201.39990234375ZM1858.0400390625,415.47998046875L1858.0400390625,415.47998046875C1830.83984375,415.47998046875,1807.3203125,411.240234375,1787.48046875,402.759765625C1767.6396484375,394.27978515625,1752.1201171875,382.83984375,1740.919921875,368.43994140625L1740.919921875,368.43994140625L1776.919921875,335.7998046875C1787.16015625,347,1798.919921875,355.64013671875,1812.2001953125,361.72021484375C1825.48046875,367.7998046875,1840.919921875,370.83984375,1858.51953125,370.83984375L1858.51953125,370.83984375C1873.8798828125,370.83984375,1886.2001953125,368.27978515625,1895.48046875,363.16015625C1904.759765625,358.0400390625,1909.400390625,350.2001953125,1909.400390625,339.64013671875L1909.400390625,339.64013671875C1909.400390625,330.68017578125,1906.2802734375,324.60009765625,1900.0400390625,321.39990234375C1893.7998046875,318.2001953125,1885.560546875,315.7998046875,1875.3203125,314.2001953125L1875.3203125,314.2001953125L1835.48046875,307.9599609375C1825.240234375,306.35986328125,1815.240234375,304.0400390625,1805.48046875,301C1795.7197265625,297.9599609375,1787.080078125,293.72021484375,1779.560546875,288.27978515625C1772.0400390625,282.83984375,1766.0400390625,275.8798828125,1761.560546875,267.39990234375C1757.080078125,258.919921875,1754.83984375,248.60009765625,1754.83984375,236.43994140625L1754.83984375,236.43994140625C1754.83984375,210.52001953125,1764.51953125,190.68017578125,1783.8798828125,176.919921875C1803.240234375,163.16015625,1829.8798828125,156.27978515625,1863.7998046875,156.27978515625L1863.7998046875,156.27978515625C1887.7998046875,156.27978515625,1908.2001953125,159.64013671875,1925,166.35986328125C1941.7998046875,173.080078125,1955.6396484375,182.52001953125,1966.51953125,194.68017578125L1966.51953125,194.68017578125L1934.3603515625,230.2001953125C1927.3203125,222.52001953125,1917.9599609375,215.72021484375,1906.2802734375,209.7998046875C1894.599609375,203.8798828125,1879.7998046875,200.919921875,1861.8798828125,200.919921875L1861.8798828125,200.919921875C1830.51953125,200.919921875,1814.83984375,210.68017578125,1814.83984375,230.2001953125L1814.83984375,230.2001953125C1814.83984375,239.16015625,1818.0400390625,245.31982421875,1824.439453125,248.68017578125C1830.83984375,252.0400390625,1839.16015625,254.52001953125,1849.400390625,256.1201171875L1849.400390625,256.1201171875L1888.759765625,262.35986328125C1899.3203125,263.9599609375,1909.48046875,266.27978515625,1919.240234375,269.31982421875C1929,272.35986328125,1937.6396484375,276.60009765625,1945.16015625,282.0400390625C1952.6796875,287.47998046875,1958.6796875,294.35986328125,1963.16015625,302.68017578125C1967.6396484375,311,1969.8798828125,321.240234375,1969.8798828125,333.39990234375L1969.8798828125,333.39990234375C1969.8798828125,359,1960.0400390625,379.080078125,1940.3603515625,393.64013671875C1920.6796875,408.2001953125,1893.240234375,415.47998046875,1858.0400390625,415.47998046875Z" style="fill: rgb(255, 255, 255);"/></g></g><g id="shape-2bc11706-71c4-8067-8007-89f2f04df7fc"><g class="fills" id="fills-2bc11706-71c4-8067-8007-89f2f04df7fc"><path d="M2314.5595703125,409.72021484375L2314.5595703125,371.7998046875L2313.1201171875,371.7998046875C2307.3603515625,383.31982421875,2298.080078125,393.47998046875,2285.2802734375,402.27978515625C2272.48046875,411.080078125,2256,415.47998046875,2235.83984375,415.47998046875L2235.83984375,415.47998046875C2204.48046875,415.47998046875,2180,404.60009765625,2162.400390625,382.83984375C2144.7998046875,361.080078125,2136,328.76025390625,2136,285.8798828125L2136,285.8798828125C2136,243,2144.7998046875,210.68017578125,2162.400390625,188.919921875C2180,167.16015625,2204.48046875,156.27978515625,2235.83984375,156.27978515625L2235.83984375,156.27978515625C2256,156.27978515625,2272.48046875,160.68017578125,2285.2802734375,169.47998046875C2298.080078125,178.27978515625,2307.3603515625,188.43994140625,2313.1201171875,199.9599609375L2313.1201171875,199.9599609375L2314.5595703125,199.9599609375L2314.5595703125,54.52001953125L2331.3603515625,54.52001953125L2331.3603515625,409.72021484375L2314.5595703125,409.72021484375ZM2239.6796875,400.60009765625L2239.6796875,400.60009765625C2249.599609375,400.60009765625,2259.0400390625,399.16015625,2268,396.27978515625C2276.9599609375,393.39990234375,2284.8798828125,389.240234375,2291.759765625,383.7998046875C2298.6396484375,378.35986328125,2304.16015625,371.7998046875,2308.3203125,364.1201171875C2312.48046875,356.43994140625,2314.5595703125,347.9599609375,2314.5595703125,338.68017578125L2314.5595703125,338.68017578125L2314.5595703125,233.080078125C2314.5595703125,223.7998046875,2312.48046875,215.31982421875,2308.3203125,207.64013671875C2304.16015625,199.9599609375,2298.6396484375,193.39990234375,2291.759765625,187.9599609375C2284.8798828125,182.52001953125,2276.9599609375,178.35986328125,2268,175.47998046875C2259.0400390625,172.60009765625,2249.599609375,171.16015625,2239.6796875,171.16015625L2239.6796875,171.16015625C2212.16015625,171.16015625,2191.0400390625,180.2001953125,2176.3203125,198.27978515625C2161.599609375,216.35986328125,2154.240234375,240.919921875,2154.240234375,271.9599609375L2154.240234375,271.9599609375L2154.240234375,299.7998046875C2154.240234375,330.83984375,2161.599609375,355.39990234375,2176.3203125,373.47998046875C2191.0400390625,391.56005859375,2212.16015625,400.60009765625,2239.6796875,400.60009765625ZM2523.3603515625,415.47998046875L2523.3603515625,415.47998046875C2490.080078125,415.47998046875,2464.080078125,404.43994140625,2445.3603515625,382.35986328125C2426.6396484375,360.27978515625,2417.2802734375,328.1201171875,2417.2802734375,285.8798828125L2417.2802734375,285.8798828125C2417.2802734375,243.64013671875,2426.5595703125,211.47998046875,2445.1201171875,189.39990234375C2463.6796875,167.31982421875,2488.9599609375,156.27978515625,2520.9599609375,156.27978515625L2520.9599609375,156.27978515625C2537.599609375,156.27978515625,2552.3203125,159.240234375,2565.1201171875,165.16015625C2577.919921875,171.080078125,2588.6396484375,179.47998046875,2597.2802734375,190.35986328125C2605.919921875,201.240234375,2612.48046875,214.35986328125,2616.9599609375,229.72021484375C2621.4404296875,245.080078125,2623.6796875,262.0400390625,2623.6796875,280.60009765625L2623.6796875,280.60009765625L2623.6796875,287.31982421875L2435.51953125,287.31982421875L2435.51953125,299.7998046875C2435.51953125,330.83984375,2443.1201171875,355.39990234375,2458.3203125,373.47998046875C2473.51953125,391.56005859375,2495.2001953125,400.60009765625,2523.3603515625,400.60009765625L2523.3603515625,400.60009765625C2543.2001953125,400.60009765625,2560,395.9599609375,2573.759765625,386.68017578125C2587.51953125,377.39990234375,2598.080078125,363.47998046875,2605.4404296875,344.919921875L2605.4404296875,344.919921875L2618.8798828125,352.1201171875C2611.51953125,371.31982421875,2599.759765625,386.68017578125,2583.599609375,398.2001953125C2567.4404296875,409.72021484375,2547.3603515625,415.47998046875,2523.3603515625,415.47998046875ZM2520.9599609375,170.68017578125L2520.9599609375,170.68017578125C2493.759765625,170.68017578125,2472.7197265625,179.7998046875,2457.83984375,198.0400390625C2442.9599609375,216.27978515625,2435.51953125,240.919921875,2435.51953125,271.9599609375L2435.51953125,271.9599609375L2435.51953125,273.8798828125L2605.919921875,273.8798828125L2605.919921875,271.47998046875C2605.919921875,240.43994140625,2598.5595703125,215.8798828125,2583.83984375,197.7998046875C2569.1201171875,179.72021484375,2548.16015625,170.68017578125,2520.9599609375,170.68017578125ZM2806.5595703125,409.72021484375L2785.4404296875,409.72021484375L2693.2802734375,162.0400390625L2710.5595703125,162.0400390625L2795.51953125,393.39990234375L2796.9599609375,393.39990234375L2881.919921875,162.0400390625L2898.7197265625,162.0400390625L2806.5595703125,409.72021484375Z" style="fill: rgb(255, 255, 255);"/></g></g></g></svg>`.trim().length > 0 ? `<svg width="3066.72" xmlns="http://www.w3.org/2000/svg" height="480" id="screenshot-2bc11706-71c4-8067-8007-89f57e8f9bba" viewBox="-168 0 3066.72 480" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1"><g id="shape-2bc11706-71c4-8067-8007-89f57e8f9bba" rx="0" ry="0"><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3cb" rx="0" ry="0"><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3cc" rx="0" ry="0"><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d0"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d0"><rect rx="0" ry="0" x="56" y="56" transform="matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)" width="368" height="368"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d46fa80c-691a92d0-935c-80e0-8007-89f2879cb3d0" class="strokes"><g class="inner-stroke-shape" transform="matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)"><defs><clipPath id="inner-stroke-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0"><use href="#stroke-shape-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0"/></clipPath><rect rx="0" ry="0" x="56" y="56" width="368" height="368" id="stroke-shape-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0" style="fill: none; stroke-width: 64; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0" clip-path="url('#inner-stroke-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0')"/></g></g></g><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d1"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d1"><path d="M480,424L448,424L448,56L480,424" style="fill: rgb(255, 255, 255); fill-opacity: 1;"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d47002d4-691a92d0-935c-80e0-8007-89f2879cb3d1" class="strokes"><g class="inner-stroke-shape"><defs><clipPath id="inner-stroke-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0"><use href="#stroke-shape-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0"/></clipPath><path d="M480,424L448,424L448,56L480,424" id="stroke-shape-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0" style="fill: none; stroke-width: 4; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0" clip-path="url('#inner-stroke-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0')"/></g></g></g><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d2"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d2"><path d="M56,480L56,448L424,448L56,480" style="fill: rgb(255, 255, 255); fill-opacity: 1;"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d4707fab-691a92d0-935c-80e0-8007-89f2879cb3d2" class="strokes"><g class="inner-stroke-shape"><defs><clipPath id="inner-stroke-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0"><use href="#stroke-shape-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0"/></clipPath><path d="M56,480L56,448L424,448L56,480" id="stroke-shape-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0" style="fill: none; stroke-width: 4; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0" clip-path="url('#inner-stroke-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0')"/></g></g></g><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d3"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d3"><path d="M0,56L32,56L32,424L0,56" style="fill: rgb(255, 255, 255); fill-opacity: 1;"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d4709315-691a92d0-935c-80e0-8007-89f2879cb3d3" class="strokes"><g class="inner-stroke-shape"><defs><clipPath id="inner-stroke-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0"><use href="#stroke-shape-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0"/></clipPath><path d="M0,56L32,56L32,424L0,56" id="stroke-shape-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0" style="fill: none; stroke-width: 4; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0" clip-path="url('#inner-stroke-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0')"/></g></g></g><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d4"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d4"><path d="M424,0L424,32L56,32L424,0" style="fill: rgb(255, 255, 255); fill-opacity: 1;"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d470e827-691a92d0-935c-80e0-8007-89f2879cb3d4" class="strokes"><g class="inner-stroke-shape"><defs><clipPath id="inner-stroke-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0"><use href="#stroke-shape-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0"/></clipPath><path d="M424,0L424,32L56,32L424,0" id="stroke-shape-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0" style="fill: none; stroke-width: 4; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0" clip-path="url('#inner-stroke-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0')"/></g></g></g></g></g><g id="shape-2bc11706-71c4-8067-8007-89f2ebcaa5b6"><g class="fills" id="fills-2bc11706-71c4-8067-8007-89f2ebcaa5b6"><path d="M644.1201171875,409.72021484375L644.1201171875,54.52001953125L705.5595703125,54.52001953125L705.5595703125,205.72021484375L708.919921875,205.72021484375C715.6396484375,190.68017578125,724.83984375,178.68017578125,736.51953125,169.72021484375C748.2001953125,160.759765625,763.6396484375,156.27978515625,782.83984375,156.27978515625L782.83984375,156.27978515625C796.919921875,156.27978515625,809.7998046875,158.919921875,821.48046875,164.2001953125C833.16015625,169.47998046875,843.16015625,177.47998046875,851.48046875,188.2001953125C859.7998046875,198.919921875,866.2001953125,212.43994140625,870.6796875,228.759765625C875.16015625,245.080078125,877.400390625,264.1201171875,877.400390625,285.8798828125L877.400390625,285.8798828125C877.400390625,307.64013671875,875.16015625,326.68017578125,870.6796875,343C866.2001953125,359.31982421875,859.7998046875,372.83984375,851.48046875,383.56005859375C843.16015625,394.27978515625,833.16015625,402.27978515625,821.48046875,407.56005859375C809.7998046875,412.83984375,796.919921875,415.47998046875,782.83984375,415.47998046875L782.83984375,415.47998046875C763.6396484375,415.47998046875,748.2001953125,411,736.51953125,402.0400390625C724.83984375,393.080078125,715.6396484375,381.080078125,708.919921875,366.0400390625L708.919921875,366.0400390625L705.5595703125,366.0400390625L705.5595703125,409.72021484375L644.1201171875,409.72021484375ZM756.919921875,366.52001953125L756.919921875,366.52001953125C774.83984375,366.52001953125,788.6796875,361.080078125,798.4404296875,350.2001953125C808.2001953125,339.31982421875,813.080078125,324.43994140625,813.080078125,305.56005859375L813.080078125,305.56005859375L813.080078125,266.2001953125C813.080078125,247.31982421875,808.2001953125,232.43994140625,798.4404296875,221.56005859375C788.6796875,210.68017578125,774.83984375,205.240234375,756.919921875,205.240234375L756.919921875,205.240234375C742.83984375,205.240234375,730.759765625,208.68017578125,720.6796875,215.56005859375C710.599609375,222.43994140625,705.5595703125,232.919921875,705.5595703125,247L705.5595703125,247L705.5595703125,324.76025390625C705.5595703125,338.83984375,710.599609375,349.31982421875,720.6796875,356.2001953125C730.759765625,363.080078125,742.83984375,366.52001953125,756.919921875,366.52001953125ZM1031,415.47998046875L1031,415.47998046875C1012.1201171875,415.47998046875,995.240234375,412.43994140625,980.3603515625,406.35986328125C965.48046875,400.27978515625,952.83984375,391.64013671875,942.4404296875,380.43994140625C932.0400390625,369.240234375,924.0400390625,355.64013671875,918.4404296875,339.64013671875C912.83984375,323.64013671875,910.0400390625,305.72021484375,910.0400390625,285.8798828125L910.0400390625,285.8798828125C910.0400390625,266.0400390625,912.83984375,248.1201171875,918.4404296875,232.1201171875C924.0400390625,216.1201171875,932.0400390625,202.52001953125,942.4404296875,191.31982421875C952.83984375,180.1201171875,965.48046875,171.47998046875,980.3603515625,165.39990234375C995.240234375,159.31982421875,1012.1201171875,156.27978515625,1031,156.27978515625L1031,156.27978515625C1049.5595703125,156.27978515625,1066.3603515625,159.31982421875,1081.400390625,165.39990234375C1096.4404296875,171.47998046875,1109.16015625,180.1201171875,1119.5595703125,191.31982421875C1129.9599609375,202.52001953125,1137.9599609375,216.1201171875,1143.5595703125,232.1201171875C1149.16015625,248.1201171875,1151.9599609375,266.0400390625,1151.9599609375,285.8798828125L1151.9599609375,285.8798828125C1151.9599609375,305.72021484375,1149.16015625,323.64013671875,1143.5595703125,339.64013671875C1137.9599609375,355.64013671875,1129.9599609375,369.240234375,1119.5595703125,380.43994140625C1109.16015625,391.64013671875,1096.4404296875,400.27978515625,1081.400390625,406.35986328125C1066.3603515625,412.43994140625,1049.5595703125,415.47998046875,1031,415.47998046875ZM1031,368.43994140625L1031,368.43994140625C1048.599609375,368.43994140625,1062.51953125,363.080078125,1072.759765625,352.35986328125C1083,341.64013671875,1088.1201171875,325.8798828125,1088.1201171875,305.080078125L1088.1201171875,305.080078125L1088.1201171875,266.68017578125C1088.1201171875,245.8798828125,1083,230.1201171875,1072.759765625,219.39990234375C1062.51953125,208.68017578125,1048.599609375,203.31982421875,1031,203.31982421875L1031,203.31982421875C1013.400390625,203.31982421875,999.48046875,208.68017578125,989.240234375,219.39990234375C979,230.1201171875,973.8798828125,245.8798828125,973.8798828125,266.68017578125L973.8798828125,266.68017578125L973.8798828125,305.080078125C973.8798828125,325.8798828125,979,341.64013671875,989.240234375,352.35986328125C999.48046875,363.080078125,1013.400390625,368.43994140625,1031,368.43994140625ZM1245.080078125,409.72021484375L1179.3203125,409.72021484375L1271.9599609375,283.9599609375L1184.599609375,162.0400390625L1255.16015625,162.0400390625L1284.919921875,205.72021484375L1307.9599609375,240.27978515625L1311.3203125,240.27978515625L1334.3603515625,205.72021484375L1364.1201171875,162.0400390625L1429.400390625,162.0400390625L1342.0400390625,281.080078125L1434.6796875,409.72021484375L1363.6396484375,409.72021484375L1329.5595703125,359.7998046875L1306.0400390625,324.76025390625L1302.6796875,324.76025390625L1279.16015625,359.7998046875L1245.080078125,409.72021484375ZM1588.759765625,415.47998046875L1588.759765625,415.47998046875C1568.919921875,415.47998046875,1551.3203125,412.43994140625,1535.9599609375,406.35986328125C1520.599609375,400.27978515625,1507.7197265625,391.64013671875,1497.3203125,380.43994140625C1486.919921875,369.240234375,1479,355.72021484375,1473.5595703125,339.8798828125C1468.1201171875,324.0400390625,1465.400390625,306.2001953125,1465.400390625,286.35986328125L1465.400390625,286.35986328125C1465.400390625,266.2001953125,1468.2001953125,248.1201171875,1473.7998046875,232.1201171875C1479.400390625,216.1201171875,1487.3203125,202.52001953125,1497.5595703125,191.31982421875C1507.7998046875,180.1201171875,1520.2001953125,171.47998046875,1534.759765625,165.39990234375C1549.3203125,159.31982421875,1565.7197265625,156.27978515625,1583.9599609375,156.27978515625L1583.9599609375,156.27978515625C1601.8798828125,156.27978515625,1618.0400390625,159.240234375,1632.4404296875,165.16015625C1646.83984375,171.080078125,1659.080078125,179.47998046875,1669.16015625,190.35986328125C1679.240234375,201.240234375,1687,214.35986328125,1692.439453125,229.72021484375C1697.8798828125,245.080078125,1700.599609375,262.0400390625,1700.599609375,280.60009765625L1700.599609375,280.60009765625L1700.599609375,300.76025390625L1526.83984375,300.76025390625L1526.83984375,307C1526.83984375,324.919921875,1532.4404296875,339.39990234375,1543.6396484375,350.43994140625C1554.83984375,361.47998046875,1570.51953125,367,1590.6796875,367L1590.6796875,367C1606.0400390625,367,1619.240234375,363.8798828125,1630.2802734375,357.64013671875C1641.3203125,351.39990234375,1650.51953125,343.16015625,1657.8798828125,332.919921875L1657.8798828125,332.919921875L1692.919921875,367.9599609375C1683.9599609375,381.080078125,1670.919921875,392.27978515625,1653.7998046875,401.56005859375C1636.6796875,410.83984375,1615,415.47998046875,1588.759765625,415.47998046875ZM1584.4404296875,201.39990234375L1584.4404296875,201.39990234375C1567.16015625,201.39990234375,1553.240234375,206.83984375,1542.6796875,217.72021484375C1532.1201171875,228.60009765625,1526.83984375,243,1526.83984375,260.919921875L1526.83984375,260.919921875L1526.83984375,264.27978515625L1639.16015625,264.27978515625L1639.16015625,259.9599609375C1639.16015625,242.0400390625,1634.2802734375,227.7998046875,1624.51953125,217.240234375C1614.759765625,206.68017578125,1601.400390625,201.39990234375,1584.4404296875,201.39990234375ZM1858.0400390625,415.47998046875L1858.0400390625,415.47998046875C1830.83984375,415.47998046875,1807.3203125,411.240234375,1787.48046875,402.759765625C1767.6396484375,394.27978515625,1752.1201171875,382.83984375,1740.919921875,368.43994140625L1740.919921875,368.43994140625L1776.919921875,335.7998046875C1787.16015625,347,1798.919921875,355.64013671875,1812.2001953125,361.72021484375C1825.48046875,367.7998046875,1840.919921875,370.83984375,1858.51953125,370.83984375L1858.51953125,370.83984375C1873.8798828125,370.83984375,1886.2001953125,368.27978515625,1895.48046875,363.16015625C1904.759765625,358.0400390625,1909.400390625,350.2001953125,1909.400390625,339.64013671875L1909.400390625,339.64013671875C1909.400390625,330.68017578125,1906.2802734375,324.60009765625,1900.0400390625,321.39990234375C1893.7998046875,318.2001953125,1885.560546875,315.7998046875,1875.3203125,314.2001953125L1875.3203125,314.2001953125L1835.48046875,307.9599609375C1825.240234375,306.35986328125,1815.240234375,304.0400390625,1805.48046875,301C1795.7197265625,297.9599609375,1787.080078125,293.72021484375,1779.560546875,288.27978515625C1772.0400390625,282.83984375,1766.0400390625,275.8798828125,1761.560546875,267.39990234375C1757.080078125,258.919921875,1754.83984375,248.60009765625,1754.83984375,236.43994140625L1754.83984375,236.43994140625C1754.83984375,210.52001953125,1764.51953125,190.68017578125,1783.8798828125,176.919921875C1803.240234375,163.16015625,1829.8798828125,156.27978515625,1863.7998046875,156.27978515625L1863.7998046875,156.27978515625C1887.7998046875,156.27978515625,1908.2001953125,159.64013671875,1925,166.35986328125C1941.7998046875,173.080078125,1955.6396484375,182.52001953125,1966.51953125,194.68017578125L1966.51953125,194.68017578125L1934.3603515625,230.2001953125C1927.3203125,222.52001953125,1917.9599609375,215.72021484375,1906.2802734375,209.7998046875C1894.599609375,203.8798828125,1879.7998046875,200.919921875,1861.8798828125,200.919921875L1861.8798828125,200.919921875C1830.51953125,200.919921875,1814.83984375,210.68017578125,1814.83984375,230.2001953125L1814.83984375,230.2001953125C1814.83984375,239.16015625,1818.0400390625,245.31982421875,1824.439453125,248.68017578125C1830.83984375,252.0400390625,1839.16015625,254.52001953125,1849.400390625,256.1201171875L1849.400390625,256.1201171875L1888.759765625,262.35986328125C1899.3203125,263.9599609375,1909.48046875,266.27978515625,1919.240234375,269.31982421875C1929,272.35986328125,1937.6396484375,276.60009765625,1945.16015625,282.0400390625C1952.6796875,287.47998046875,1958.6796875,294.35986328125,1963.16015625,302.68017578125C1967.6396484375,311,1969.8798828125,321.240234375,1969.8798828125,333.39990234375L1969.8798828125,333.39990234375C1969.8798828125,359,1960.0400390625,379.080078125,1940.3603515625,393.64013671875C1920.6796875,408.2001953125,1893.240234375,415.47998046875,1858.0400390625,415.47998046875Z" style="fill: rgb(255, 255, 255);"/></g></g><g id="shape-2bc11706-71c4-8067-8007-89f2f04df7fc"><g class="fills" id="fills-2bc11706-71c4-8067-8007-89f2f04df7fc"><path d="M2314.5595703125,409.72021484375L2314.5595703125,371.7998046875L2313.1201171875,371.7998046875C2307.3603515625,383.31982421875,2298.080078125,393.47998046875,2285.2802734375,402.27978515625C2272.48046875,411.080078125,2256,415.47998046875,2235.83984375,415.47998046875L2235.83984375,415.47998046875C2204.48046875,415.47998046875,2180,404.60009765625,2162.400390625,382.83984375C2144.7998046875,361.080078125,2136,328.76025390625,2136,285.8798828125L2136,285.8798828125C2136,243,2144.7998046875,210.68017578125,2162.400390625,188.919921875C2180,167.16015625,2204.48046875,156.27978515625,2235.83984375,156.27978515625L2235.83984375,156.27978515625C2256,156.27978515625,2272.48046875,160.68017578125,2285.2802734375,169.47998046875C2298.080078125,178.27978515625,2307.3603515625,188.43994140625,2313.1201171875,199.9599609375L2313.1201171875,199.9599609375L2314.5595703125,199.9599609375L2314.5595703125,54.52001953125L2331.3603515625,54.52001953125L2331.3603515625,409.72021484375L2314.5595703125,409.72021484375ZM2239.6796875,400.60009765625L2239.6796875,400.60009765625C2249.599609375,400.60009765625,2259.0400390625,399.16015625,2268,396.27978515625C2276.9599609375,393.39990234375,2284.8798828125,389.240234375,2291.759765625,383.7998046875C2298.6396484375,378.35986328125,2304.16015625,371.7998046875,2308.3203125,364.1201171875C2312.48046875,356.43994140625,2314.5595703125,347.9599609375,2314.5595703125,338.68017578125L2314.5595703125,338.68017578125L2314.5595703125,233.080078125C2314.5595703125,223.7998046875,2312.48046875,215.31982421875,2308.3203125,207.64013671875C2304.16015625,199.9599609375,2298.6396484375,193.39990234375,2291.759765625,187.9599609375C2284.8798828125,182.52001953125,2276.9599609375,178.35986328125,2268,175.47998046875C2259.0400390625,172.60009765625,2249.599609375,171.16015625,2239.6796875,171.16015625L2239.6796875,171.16015625C2212.16015625,171.16015625,2191.0400390625,180.2001953125,2176.3203125,198.27978515625C2161.599609375,216.35986328125,2154.240234375,240.919921875,2154.240234375,271.9599609375L2154.240234375,271.9599609375L2154.240234375,299.7998046875C2154.240234375,330.83984375,2161.599609375,355.39990234375,2176.3203125,373.47998046875C2191.0400390625,391.56005859375,2212.16015625,400.60009765625,2239.6796875,400.60009765625ZM2523.3603515625,415.47998046875L2523.3603515625,415.47998046875C2490.080078125,415.47998046875,2464.080078125,404.43994140625,2445.3603515625,382.35986328125C2426.6396484375,360.27978515625,2417.2802734375,328.1201171875,2417.2802734375,285.8798828125L2417.2802734375,285.8798828125C2417.2802734375,243.64013671875,2426.5595703125,211.47998046875,2445.1201171875,189.39990234375C2463.6796875,167.31982421875,2488.9599609375,156.27978515625,2520.9599609375,156.27978515625L2520.9599609375,156.27978515625C2537.599609375,156.27978515625,2552.3203125,159.240234375,2565.1201171875,165.16015625C2577.919921875,171.080078125,2588.6396484375,179.47998046875,2597.2802734375,190.35986328125C2605.919921875,201.240234375,2612.48046875,214.35986328125,2616.9599609375,229.72021484375C2621.4404296875,245.080078125,2623.6796875,262.0400390625,2623.6796875,280.60009765625L2623.6796875,280.60009765625L2623.6796875,287.31982421875L2435.51953125,287.31982421875L2435.51953125,299.7998046875C2435.51953125,330.83984375,2443.1201171875,355.39990234375,2458.3203125,373.47998046875C2473.51953125,391.56005859375,2495.2001953125,400.60009765625,2523.3603515625,400.60009765625L2523.3603515625,400.60009765625C2543.2001953125,400.60009765625,2560,395.9599609375,2573.759765625,386.68017578125C2587.51953125,377.39990234375,2598.080078125,363.47998046875,2605.4404296875,344.919921875L2605.4404296875,344.919921875L2618.8798828125,352.1201171875C2611.51953125,371.31982421875,2599.759765625,386.68017578125,2583.599609375,398.2001953125C2567.4404296875,409.72021484375,2547.3603515625,415.47998046875,2523.3603515625,415.47998046875ZM2520.9599609375,170.68017578125L2520.9599609375,170.68017578125C2493.759765625,170.68017578125,2472.7197265625,179.7998046875,2457.83984375,198.0400390625C2442.9599609375,216.27978515625,2435.51953125,240.919921875,2435.51953125,271.9599609375L2435.51953125,271.9599609375L2435.51953125,273.8798828125L2605.919921875,273.8798828125L2605.919921875,271.47998046875C2605.919921875,240.43994140625,2598.5595703125,215.8798828125,2583.83984375,197.7998046875C2569.1201171875,179.72021484375,2548.16015625,170.68017578125,2520.9599609375,170.68017578125ZM2806.5595703125,409.72021484375L2785.4404296875,409.72021484375L2693.2802734375,162.0400390625L2710.5595703125,162.0400390625L2795.51953125,393.39990234375L2796.9599609375,393.39990234375L2881.919921875,162.0400390625L2898.7197265625,162.0400390625L2806.5595703125,409.72021484375Z" style="fill: rgb(255, 255, 255);"/></g></g></g></svg>` : CALLBACK_LOGO_MARK;
|
|
134156
134127
|
renderCallbackPage = (tone, title, message) => {
|
|
134157
134128
|
const isSuccess = tone === "success";
|
|
134158
134129
|
const badgeClass = isSuccess ? "badge success" : "badge error";
|
|
@@ -134223,20 +134194,20 @@ var init_controlPlane = __esm({
|
|
|
134223
134194
|
0 4px 14px rgba(0, 0, 0, 0.05);
|
|
134224
134195
|
}
|
|
134225
134196
|
.brand {
|
|
134226
|
-
display: flex;
|
|
134197
|
+
display: inline-flex;
|
|
134227
134198
|
align-items: center;
|
|
134228
|
-
|
|
134199
|
+
justify-content: center;
|
|
134200
|
+
width: min(100%, 360px);
|
|
134201
|
+
border-radius: 12px;
|
|
134202
|
+
border: 1px solid rgba(255, 255, 255, 0.08);
|
|
134203
|
+
background: #111827;
|
|
134204
|
+
padding: 12px 14px;
|
|
134229
134205
|
margin-bottom: 18px;
|
|
134230
134206
|
}
|
|
134231
134207
|
.brand svg {
|
|
134232
|
-
width:
|
|
134233
|
-
height:
|
|
134234
|
-
|
|
134235
|
-
}
|
|
134236
|
-
.wordmark {
|
|
134237
|
-
font-size: 20px;
|
|
134238
|
-
font-weight: 700;
|
|
134239
|
-
letter-spacing: 0.2px;
|
|
134208
|
+
width: 100%;
|
|
134209
|
+
height: auto;
|
|
134210
|
+
display: block;
|
|
134240
134211
|
}
|
|
134241
134212
|
.badge {
|
|
134242
134213
|
display: inline-flex;
|
|
@@ -134273,8 +134244,7 @@ var init_controlPlane = __esm({
|
|
|
134273
134244
|
<body>
|
|
134274
134245
|
<main>
|
|
134275
134246
|
<div class="brand">
|
|
134276
|
-
${
|
|
134277
|
-
<span class="wordmark">boxes.dev</span>
|
|
134247
|
+
${CALLBACK_FULL_LOGO}
|
|
134278
134248
|
</div>
|
|
134279
134249
|
<span class="${badgeClass}">${badgeLabel}</span>
|
|
134280
134250
|
<h1>${escapedTitle}</h1>
|
|
@@ -134410,20 +134380,20 @@ var init_controlPlane = __esm({
|
|
|
134410
134380
|
if (!start.redirect || !start.verifier) {
|
|
134411
134381
|
throw new Error("Control plane sign-in failed to start.");
|
|
134412
134382
|
}
|
|
134413
|
-
|
|
134414
|
-
const action = await
|
|
134383
|
+
showCopyableUrl(start.redirect, "Login URL");
|
|
134384
|
+
const action = await qt({
|
|
134415
134385
|
message: "Open the login URL in your browser?",
|
|
134416
134386
|
options: [
|
|
134417
|
-
{ value: "
|
|
134418
|
-
{ value: "
|
|
134387
|
+
{ value: "open", label: "Open in browser" },
|
|
134388
|
+
{ value: "skip", label: "Skip" }
|
|
134419
134389
|
],
|
|
134420
|
-
initialValue: "
|
|
134390
|
+
initialValue: "open"
|
|
134421
134391
|
});
|
|
134422
134392
|
if (Ct(action)) {
|
|
134423
134393
|
Pt("Sign-in canceled.");
|
|
134424
134394
|
throw new Error("Control plane sign-in cancelled.");
|
|
134425
134395
|
}
|
|
134426
|
-
if (action === "
|
|
134396
|
+
if (action === "open") {
|
|
134427
134397
|
const opened = openBrowser(start.redirect);
|
|
134428
134398
|
if (!opened) {
|
|
134429
134399
|
R2.warn("Unable to open the browser automatically.");
|
|
@@ -143474,7 +143444,7 @@ var init_weztermMux = __esm({
|
|
|
143474
143444
|
});
|
|
143475
143445
|
|
|
143476
143446
|
// src/devbox/commands/init/remote.ts
|
|
143477
|
-
var import_node_crypto9, DAEMON_DIR, DAEMON_TARBALL, DAEMON_BUNDLE_DIR, DAEMON_ENTRY, DAEMON_WRAPPER, DAEMON_SERVICE_NAME, DAEMON_CONFIG_FILE, DEFAULT_DAEMON_BASE_URL, DEFAULT_HEARTBEAT_MS, BOOTSTRAP_EXEC_TIMEOUT_MS, logger8, truncateTail, shellQuote3, expandHome2, execWithLog, writeRemoteFile, bootstrapDevbox, buildWeztermMuxConfig, buildWeztermMuxRunner, patchBashrc, writeRemoteCodexConfig, stageRemoteSetupArtifacts, resolveDaemonUrl, fetchDaemonBinary, buildDaemonConfig, isSameArgs, ensureSpriteDaemonService, installWeztermMux, ensureWeztermMuxService, hasWeztermMuxBinary, isWeztermMuxHealthy, installSpriteDaemon;
|
|
143447
|
+
var import_node_crypto9, DAEMON_DIR, DAEMON_TARBALL, DAEMON_BUNDLE_DIR, DAEMON_ENTRY, DAEMON_WRAPPER, DAEMON_SERVICE_NAME, DAEMON_CONFIG_FILE, DEFAULT_DAEMON_BASE_URL, DEFAULT_HEARTBEAT_MS, BOOTSTRAP_EXEC_TIMEOUT_MS, logger8, truncateTail, shellQuote3, expandHome2, execWithLog, writeRemoteFile, bootstrapDevbox, buildWeztermMuxConfig, buildWeztermMuxRunner, runRemoteInitScript, patchBashrc, patchZshrc, writeRemoteCodexConfig, stageRemoteSetupArtifacts, resolveDaemonUrl, fetchDaemonBinary, buildDaemonConfig, isSameArgs, ensureSpriteDaemonService, installWeztermMux, ensureWeztermMuxService, hasWeztermMuxBinary, isWeztermMuxHealthy, installSpriteDaemon;
|
|
143478
143448
|
var init_remote = __esm({
|
|
143479
143449
|
"src/devbox/commands/init/remote.ts"() {
|
|
143480
143450
|
"use strict";
|
|
@@ -143607,6 +143577,7 @@ var init_remote = __esm({
|
|
|
143607
143577
|
);
|
|
143608
143578
|
}
|
|
143609
143579
|
await patchBashrc(client, canonical);
|
|
143580
|
+
await patchZshrc(client, canonical);
|
|
143610
143581
|
};
|
|
143611
143582
|
buildWeztermMuxConfig = () => {
|
|
143612
143583
|
const lines = [
|
|
@@ -143742,9 +143713,9 @@ var init_remote = __esm({
|
|
|
143742
143713
|
'exec socat "TCP-LISTEN:${port},bind=127.0.0.1,reuseaddr,fork" "UNIX-CONNECT:${socket_path}"',
|
|
143743
143714
|
""
|
|
143744
143715
|
].join("\n");
|
|
143745
|
-
|
|
143746
|
-
const script = await loadInitScript(
|
|
143747
|
-
const remotePath =
|
|
143716
|
+
runRemoteInitScript = async (client, canonical, options) => {
|
|
143717
|
+
const script = await loadInitScript(options.scriptName);
|
|
143718
|
+
const { remotePath } = options;
|
|
143748
143719
|
const uploadId = (0, import_node_crypto9.randomUUID)();
|
|
143749
143720
|
logger8.info("sprites_request", {
|
|
143750
143721
|
requestId: uploadId,
|
|
@@ -143788,10 +143759,20 @@ var init_remote = __esm({
|
|
|
143788
143759
|
if (result.exitCode !== 0) {
|
|
143789
143760
|
const details = result.stderr || result.stdout || "";
|
|
143790
143761
|
throw new Error(
|
|
143791
|
-
details ?
|
|
143762
|
+
details ? `${options.errorLabel} patch failed: ${details}` : `${options.errorLabel} patch failed (exit ${result.exitCode})`
|
|
143792
143763
|
);
|
|
143793
143764
|
}
|
|
143794
143765
|
};
|
|
143766
|
+
patchBashrc = async (client, canonical) => await runRemoteInitScript(client, canonical, {
|
|
143767
|
+
scriptName: "fix-bashrc.sh",
|
|
143768
|
+
remotePath: "/tmp/devbox-fix-bashrc.sh",
|
|
143769
|
+
errorLabel: "bashrc"
|
|
143770
|
+
});
|
|
143771
|
+
patchZshrc = async (client, canonical) => await runRemoteInitScript(client, canonical, {
|
|
143772
|
+
scriptName: "fix-zshrc.sh",
|
|
143773
|
+
remotePath: "/tmp/devbox-fix-zshrc.sh",
|
|
143774
|
+
errorLabel: "zshrc"
|
|
143775
|
+
});
|
|
143795
143776
|
writeRemoteCodexConfig = async (client, canonical, repoName) => {
|
|
143796
143777
|
const configPath = "/home/sprite/.codex/config.toml";
|
|
143797
143778
|
const content = buildCodexConfig(repoName);
|
|
@@ -144527,6 +144508,7 @@ var init_state = __esm({
|
|
|
144527
144508
|
"setupUploaded",
|
|
144528
144509
|
"setupArtifactsStaged",
|
|
144529
144510
|
"servicesEnabled",
|
|
144511
|
+
"codexCliEnsured",
|
|
144530
144512
|
"sshdConfigured",
|
|
144531
144513
|
"sshAuthConfigured",
|
|
144532
144514
|
"weztermMuxInstalled",
|
|
@@ -146621,6 +146603,7 @@ var init_codex = __esm({
|
|
|
146621
146603
|
init_dist3();
|
|
146622
146604
|
init_src();
|
|
146623
146605
|
init_daemonClient();
|
|
146606
|
+
init_copyableUrl();
|
|
146624
146607
|
init_remote();
|
|
146625
146608
|
init_remote2();
|
|
146626
146609
|
init_plan();
|
|
@@ -146746,7 +146729,6 @@ var init_codex = __esm({
|
|
|
146746
146729
|
}) => {
|
|
146747
146730
|
status.stage("Checking Codex login");
|
|
146748
146731
|
let loggedIn = await isRemoteCodexLoggedIn(client, canonical);
|
|
146749
|
-
let upgraded = false;
|
|
146750
146732
|
if (!loggedIn) {
|
|
146751
146733
|
const synced = await syncLocalCodexAuthCacheToSprite({
|
|
146752
146734
|
client,
|
|
@@ -146758,9 +146740,6 @@ var init_codex = __esm({
|
|
|
146758
146740
|
}
|
|
146759
146741
|
}
|
|
146760
146742
|
if (!loggedIn) {
|
|
146761
|
-
status.stage("Upgrading Codex");
|
|
146762
|
-
await ensureRemoteCodexInstalled(client, canonical);
|
|
146763
|
-
upgraded = true;
|
|
146764
146743
|
await requireDaemonFeatures(socketInfo.socketPath, ["ports"]);
|
|
146765
146744
|
status.stage("Waiting for Codex login");
|
|
146766
146745
|
let openedUrl = false;
|
|
@@ -146787,20 +146766,20 @@ codex login`
|
|
|
146787
146766
|
if (openedUrl) return;
|
|
146788
146767
|
openedUrl = true;
|
|
146789
146768
|
status.stop();
|
|
146790
|
-
|
|
146791
|
-
const action = await
|
|
146769
|
+
showCopyableUrl(url, "Codex login URL");
|
|
146770
|
+
const action = await qt({
|
|
146792
146771
|
message: "Open the Codex login URL in your browser?",
|
|
146793
146772
|
options: [
|
|
146794
|
-
{ value: "
|
|
146795
|
-
{ value: "
|
|
146773
|
+
{ value: "open", label: "Open in browser" },
|
|
146774
|
+
{ value: "skip", label: "Skip" }
|
|
146796
146775
|
],
|
|
146797
|
-
initialValue: "
|
|
146776
|
+
initialValue: "open"
|
|
146798
146777
|
});
|
|
146799
146778
|
if (Ct(action)) {
|
|
146800
146779
|
Pt("Init canceled.");
|
|
146801
146780
|
throw new Error("Init canceled.");
|
|
146802
146781
|
}
|
|
146803
|
-
if (action === "
|
|
146782
|
+
if (action === "open") {
|
|
146804
146783
|
const opened = await openBrowser4(url);
|
|
146805
146784
|
if (opened) {
|
|
146806
146785
|
R2.success("Opened browser for Codex login.");
|
|
@@ -146857,10 +146836,6 @@ codex login`
|
|
|
146857
146836
|
);
|
|
146858
146837
|
}
|
|
146859
146838
|
}
|
|
146860
|
-
if (!upgraded) {
|
|
146861
|
-
status.stage("Upgrading Codex");
|
|
146862
|
-
await ensureRemoteCodexInstalled(client, canonical);
|
|
146863
|
-
}
|
|
146864
146839
|
status.stage("Applying setup plan");
|
|
146865
146840
|
const remotePrompt = await renderRemoteApplyPrompt({
|
|
146866
146841
|
setupPath: remoteSetupPath,
|
|
@@ -147950,6 +147925,7 @@ var init_init = __esm({
|
|
|
147950
147925
|
init_remote();
|
|
147951
147926
|
init_ensureMux();
|
|
147952
147927
|
init_registry2();
|
|
147928
|
+
init_copyableUrl();
|
|
147953
147929
|
init_state();
|
|
147954
147930
|
init_ssh();
|
|
147955
147931
|
init_mountSsh();
|
|
@@ -148213,19 +148189,19 @@ var init_init = __esm({
|
|
|
148213
148189
|
consequence
|
|
148214
148190
|
}) => {
|
|
148215
148191
|
if (!process.stdin.isTTY) return false;
|
|
148216
|
-
|
|
148217
|
-
const choice = await
|
|
148192
|
+
showCopyableUrl(url, title);
|
|
148193
|
+
const choice = await qt({
|
|
148218
148194
|
message: `Open ${title} in your browser?`,
|
|
148219
148195
|
options: [
|
|
148220
|
-
{ value: "
|
|
148221
|
-
{ value: "
|
|
148196
|
+
{ value: "open", label: "Open in browser" },
|
|
148197
|
+
{ value: "skip", label: "Skip" }
|
|
148222
148198
|
],
|
|
148223
|
-
initialValue: "
|
|
148199
|
+
initialValue: "open"
|
|
148224
148200
|
});
|
|
148225
148201
|
if (Ct(choice)) {
|
|
148226
148202
|
throwInitCanceled();
|
|
148227
148203
|
}
|
|
148228
|
-
if (choice === "
|
|
148204
|
+
if (choice === "skip") {
|
|
148229
148205
|
R2.warn(consequence);
|
|
148230
148206
|
return false;
|
|
148231
148207
|
}
|
|
@@ -148867,6 +148843,26 @@ var init_init = __esm({
|
|
|
148867
148843
|
});
|
|
148868
148844
|
}
|
|
148869
148845
|
});
|
|
148846
|
+
await runInitStep({
|
|
148847
|
+
enabled: progressEnabled,
|
|
148848
|
+
title: "Ensuring Codex CLI",
|
|
148849
|
+
fn: async ({ status, fail }) => {
|
|
148850
|
+
try {
|
|
148851
|
+
await retryInitStep({
|
|
148852
|
+
status,
|
|
148853
|
+
title: "Ensuring Codex CLI",
|
|
148854
|
+
fn: async () => await ensureRemoteCodexInstalled(client2, canonical2)
|
|
148855
|
+
});
|
|
148856
|
+
} catch (error2) {
|
|
148857
|
+
logger7.warn("codex_cli_ensure_failed", {
|
|
148858
|
+
box: canonical2,
|
|
148859
|
+
error: error2 instanceof Error ? error2.message : String(error2)
|
|
148860
|
+
});
|
|
148861
|
+
fail("Ensuring Codex CLI (failed)");
|
|
148862
|
+
throw error2;
|
|
148863
|
+
}
|
|
148864
|
+
}
|
|
148865
|
+
});
|
|
148870
148866
|
await runInitStep({
|
|
148871
148867
|
enabled: progressEnabled,
|
|
148872
148868
|
title: "Applying setup plan",
|
|
@@ -149010,6 +149006,11 @@ var init_init = __esm({
|
|
|
149010
149006
|
});
|
|
149011
149007
|
const username = import_node_os11.default.userInfo().username;
|
|
149012
149008
|
let canonical = (shouldResume && initState?.canonical ? initState.canonical : null) ?? canonicalHint ?? `${username}-${slug}`;
|
|
149009
|
+
const knownAssociatedCanonicals = new Set(
|
|
149010
|
+
[existingEntry?.canonical, initState?.canonical].filter(
|
|
149011
|
+
(value) => typeof value === "string" && value.length > 0
|
|
149012
|
+
)
|
|
149013
|
+
);
|
|
149013
149014
|
const createSprite = async (name) => {
|
|
149014
149015
|
try {
|
|
149015
149016
|
await client.createSprite(name);
|
|
@@ -149025,6 +149026,19 @@ var init_init = __esm({
|
|
|
149025
149026
|
}
|
|
149026
149027
|
};
|
|
149027
149028
|
const skipCreate = shouldResume && initState?.steps.spritesCreated && initState.canonical;
|
|
149029
|
+
if (!skipCreate) {
|
|
149030
|
+
const aliasLookup2 = await requestJson3(
|
|
149031
|
+
socketInfo.socketPath,
|
|
149032
|
+
"GET",
|
|
149033
|
+
`/registry/alias?alias=${encodeURIComponent(alias)}`,
|
|
149034
|
+
DAEMON_TIMEOUT_MS.registry
|
|
149035
|
+
);
|
|
149036
|
+
requireDaemonJsonOk(aliasLookup2, "Checking alias (/registry/alias)");
|
|
149037
|
+
const aliasCanonical = aliasLookup2.body.canonical;
|
|
149038
|
+
if (aliasCanonical && aliasCanonical !== canonical && !knownAssociatedCanonicals.has(aliasCanonical) && !parsed.force) {
|
|
149039
|
+
throw new Error(`Alias already in use: ${alias}`);
|
|
149040
|
+
}
|
|
149041
|
+
}
|
|
149028
149042
|
if (!skipCreate) {
|
|
149029
149043
|
canonical = await runInitStep({
|
|
149030
149044
|
enabled: progressEnabled,
|
|
@@ -149032,16 +149046,43 @@ var init_init = __esm({
|
|
|
149032
149046
|
fn: async ({ status }) => {
|
|
149033
149047
|
let nextCanonical = canonical;
|
|
149034
149048
|
const createResult = await createSprite(nextCanonical);
|
|
149035
|
-
if (createResult === "exists"
|
|
149036
|
-
|
|
149037
|
-
|
|
149038
|
-
|
|
149039
|
-
|
|
149040
|
-
|
|
149041
|
-
|
|
149042
|
-
|
|
149043
|
-
|
|
149044
|
-
|
|
149049
|
+
if (createResult === "exists") {
|
|
149050
|
+
const associatedCanonical = knownAssociatedCanonicals.has(nextCanonical);
|
|
149051
|
+
if (parsed.force) {
|
|
149052
|
+
if (!associatedCanonical) {
|
|
149053
|
+
if (!process.stdin.isTTY || parsed.json) {
|
|
149054
|
+
throw new Error(
|
|
149055
|
+
`Sprite already exists: ${nextCanonical}. Refusing to reuse an unlinked sprite in non-interactive mode.`
|
|
149056
|
+
);
|
|
149057
|
+
}
|
|
149058
|
+
status.stop();
|
|
149059
|
+
const confirmedReuse = await Mt2({
|
|
149060
|
+
message: `Sprite "${nextCanonical}" already exists but is not linked to this repo. Reuse it with --force?`,
|
|
149061
|
+
active: "Reuse existing sprite",
|
|
149062
|
+
inactive: "Abort init",
|
|
149063
|
+
initialValue: false
|
|
149064
|
+
});
|
|
149065
|
+
if (Ct(confirmedReuse)) {
|
|
149066
|
+
throwInitCanceled();
|
|
149067
|
+
}
|
|
149068
|
+
if (!confirmedReuse) {
|
|
149069
|
+
throw new Error(
|
|
149070
|
+
`Sprite reuse canceled: ${nextCanonical}. Choose a different --name.`
|
|
149071
|
+
);
|
|
149072
|
+
}
|
|
149073
|
+
status.stage("Creating devbox");
|
|
149074
|
+
}
|
|
149075
|
+
} else {
|
|
149076
|
+
if (canonicalHint) {
|
|
149077
|
+
throw new Error(`Sprite already exists: ${nextCanonical}`);
|
|
149078
|
+
}
|
|
149079
|
+
const suffix = fingerprint.slice(0, 6);
|
|
149080
|
+
nextCanonical = `${nextCanonical}-${suffix}`;
|
|
149081
|
+
status.stage("Resolving devbox name");
|
|
149082
|
+
const second = await createSprite(nextCanonical);
|
|
149083
|
+
if (second === "exists") {
|
|
149084
|
+
throw new Error(`Sprite already exists: ${nextCanonical}`);
|
|
149085
|
+
}
|
|
149045
149086
|
}
|
|
149046
149087
|
}
|
|
149047
149088
|
await updateInitState({
|
|
@@ -149243,6 +149284,7 @@ var init_init = __esm({
|
|
|
149243
149284
|
const skipServicesEnable = shouldResume && initState?.steps.servicesEnabled;
|
|
149244
149285
|
const skipSetupUpload = nonInteractive || shouldResume && initState?.steps.setupUploaded;
|
|
149245
149286
|
const skipCodexApply = nonInteractive || shouldResume && initState?.steps.codexApplied;
|
|
149287
|
+
const skipCodexCliEnsure = skipCodexApply || shouldResume && initState?.steps.codexCliEnsured;
|
|
149246
149288
|
let approvedPlan = null;
|
|
149247
149289
|
const setupTempDir = await import_promises27.default.mkdtemp(
|
|
149248
149290
|
import_node_path25.default.join(import_node_os11.default.tmpdir(), "devbox-setup-")
|
|
@@ -150222,6 +150264,9 @@ var init_init = __esm({
|
|
|
150222
150264
|
"Skipping SSH auth setup. Configure git credentials for this repo manually before pulling or pushing."
|
|
150223
150265
|
);
|
|
150224
150266
|
}
|
|
150267
|
+
await updateInitState({
|
|
150268
|
+
steps: { sshAuthConfigured: true }
|
|
150269
|
+
});
|
|
150225
150270
|
activeOrigin = "";
|
|
150226
150271
|
} else {
|
|
150227
150272
|
await runInitStep({
|
|
@@ -150453,6 +150498,30 @@ var init_init = __esm({
|
|
|
150453
150498
|
});
|
|
150454
150499
|
await updateInitState({ steps: { setupArtifactsStaged: true } });
|
|
150455
150500
|
}
|
|
150501
|
+
if (!skipCodexCliEnsure) {
|
|
150502
|
+
await runInitStep({
|
|
150503
|
+
enabled: progressEnabled,
|
|
150504
|
+
title: "Ensuring Codex CLI",
|
|
150505
|
+
fn: async ({ status, fail }) => {
|
|
150506
|
+
try {
|
|
150507
|
+
await retryInitStep({
|
|
150508
|
+
status,
|
|
150509
|
+
title: "Ensuring Codex CLI",
|
|
150510
|
+
fn: async () => await ensureRemoteCodexInstalled(client, canonical)
|
|
150511
|
+
});
|
|
150512
|
+
await updateInitState({ steps: { codexCliEnsured: true } });
|
|
150513
|
+
} catch (error2) {
|
|
150514
|
+
logger7.warn("codex_cli_ensure_failed", {
|
|
150515
|
+
box: canonical,
|
|
150516
|
+
fingerprint,
|
|
150517
|
+
error: error2 instanceof Error ? error2.message : String(error2)
|
|
150518
|
+
});
|
|
150519
|
+
fail("Ensuring Codex CLI (failed)");
|
|
150520
|
+
throw error2;
|
|
150521
|
+
}
|
|
150522
|
+
}
|
|
150523
|
+
});
|
|
150524
|
+
}
|
|
150456
150525
|
if (!skipCodexApply) {
|
|
150457
150526
|
await runInitStep({
|
|
150458
150527
|
enabled: progressEnabled,
|
|
@@ -153850,7 +153919,7 @@ var init_qr = __esm({
|
|
|
153850
153919
|
});
|
|
153851
153920
|
|
|
153852
153921
|
// src/devbox/commands/setup.ts
|
|
153853
|
-
var import_node_crypto11, import_promises31, trim, normalizeSiteUrl, resolveSiteUrl, MOBILE_DOWNLOAD_LINK, parseSetupArgs, promptForValue, splitQrLines, printMobileDownloadQr,
|
|
153922
|
+
var import_node_crypto11, import_promises31, trim, normalizeSiteUrl, resolveSiteUrl, MOBILE_DOWNLOAD_LINK, parseSetupArgs, promptForValue, splitQrLines, printMobileDownloadQr, printFirstSetupCompleteMessage, probeSpritesAccess, runSetup;
|
|
153854
153923
|
var init_setup = __esm({
|
|
153855
153924
|
"src/devbox/commands/setup.ts"() {
|
|
153856
153925
|
"use strict";
|
|
@@ -153926,6 +153995,9 @@ var init_setup = __esm({
|
|
|
153926
153995
|
}
|
|
153927
153996
|
throw new Error(`Unknown setup flag: ${arg}`);
|
|
153928
153997
|
}
|
|
153998
|
+
if (parsed.org && !parsed.token) {
|
|
153999
|
+
throw new Error("--org requires --token or --sprite-token");
|
|
154000
|
+
}
|
|
153929
154001
|
return parsed;
|
|
153930
154002
|
};
|
|
153931
154003
|
promptForValue = async (label) => {
|
|
@@ -153952,7 +154024,19 @@ var init_setup = __esm({
|
|
|
153952
154024
|
}
|
|
153953
154025
|
console.log("");
|
|
153954
154026
|
};
|
|
153955
|
-
|
|
154027
|
+
printFirstSetupCompleteMessage = () => {
|
|
154028
|
+
const isTty = process.stdout.isTTY;
|
|
154029
|
+
const heading = isTty ? `${colors.style("boxes.dev", ["bold", "cyan"])} ${colors.style(
|
|
154030
|
+
"setup complete!",
|
|
154031
|
+
["bold", "green"]
|
|
154032
|
+
)}` : "boxes.dev setup complete!";
|
|
154033
|
+
const nextStep = isTty ? `Now run ${colors.style("`dvb init`", ["bold", "cyan"])} at the root of your project's git repo to get it running on a devbox.` : "Now run `dvb init` at the root of your project's git repo to get it running on a devbox.";
|
|
154034
|
+
console.log("");
|
|
154035
|
+
console.log(heading);
|
|
154036
|
+
console.log("");
|
|
154037
|
+
console.log(nextStep);
|
|
154038
|
+
};
|
|
154039
|
+
probeSpritesAccess = async (apiBaseUrl, token) => {
|
|
153956
154040
|
const requestId = (0, import_node_crypto11.randomUUID)();
|
|
153957
154041
|
const url = new URL("/v1/sprites", apiBaseUrl);
|
|
153958
154042
|
url.searchParams.set("max_results", "1");
|
|
@@ -153977,7 +154061,9 @@ var init_setup = __esm({
|
|
|
153977
154061
|
const payload = await response.json();
|
|
153978
154062
|
const orgs = /* @__PURE__ */ new Set();
|
|
153979
154063
|
for (const sprite of payload.sprites ?? []) {
|
|
153980
|
-
if (sprite.org_slug
|
|
154064
|
+
if (typeof sprite.org_slug === "string" && sprite.org_slug.length > 0) {
|
|
154065
|
+
orgs.add(sprite.org_slug);
|
|
154066
|
+
}
|
|
153981
154067
|
}
|
|
153982
154068
|
return { orgs: [...orgs] };
|
|
153983
154069
|
};
|
|
@@ -153990,6 +154076,7 @@ var init_setup = __esm({
|
|
|
153990
154076
|
const homeDir = process.env.HOME;
|
|
153991
154077
|
const configOptions = homeDir ? { homeDir } : void 0;
|
|
153992
154078
|
const existingConfig = await loadConfig(configOptions);
|
|
154079
|
+
const isFirstSetup = existingConfig === null;
|
|
153993
154080
|
const storeOptions = homeDir ? { homeDir } : void 0;
|
|
153994
154081
|
const store = await createSecretStore(void 0, storeOptions);
|
|
153995
154082
|
const apiBaseUrl = parsed.apiBaseUrl ?? resolveSpritesApiUrl(existingConfig);
|
|
@@ -154000,19 +154087,21 @@ var init_setup = __esm({
|
|
|
154000
154087
|
);
|
|
154001
154088
|
const token = tokenResult.token;
|
|
154002
154089
|
const tokenSource = tokenResult.source;
|
|
154003
|
-
let org = parsed.org ?? existingConfig?.org;
|
|
154090
|
+
let org = tokenSource === "flag" ? parsed.org ?? existingConfig?.org : void 0;
|
|
154004
154091
|
if (parsed.verify) {
|
|
154005
154092
|
status.stage("Verifying token");
|
|
154006
|
-
const { orgs } = await
|
|
154007
|
-
if (
|
|
154008
|
-
org
|
|
154009
|
-
|
|
154010
|
-
|
|
154011
|
-
|
|
154012
|
-
|
|
154013
|
-
|
|
154014
|
-
|
|
154015
|
-
|
|
154093
|
+
const { orgs } = await probeSpritesAccess(apiBaseUrl, token);
|
|
154094
|
+
if (tokenSource === "flag") {
|
|
154095
|
+
if (!org && orgs.length === 1) {
|
|
154096
|
+
org = orgs[0];
|
|
154097
|
+
} else if (!org && orgs.length > 1) {
|
|
154098
|
+
status.stop();
|
|
154099
|
+
org = await promptForValue("Sprites org slug");
|
|
154100
|
+
} else if (!org && orgs.length === 0) {
|
|
154101
|
+
status.stop();
|
|
154102
|
+
org = await promptForValue("Sprites org slug (optional)");
|
|
154103
|
+
if (org.length === 0) org = void 0;
|
|
154104
|
+
}
|
|
154016
154105
|
}
|
|
154017
154106
|
}
|
|
154018
154107
|
status.stage("Saving config");
|
|
@@ -154022,7 +154111,7 @@ var init_setup = __esm({
|
|
|
154022
154111
|
tokenStore: store.kind,
|
|
154023
154112
|
tokenUpdatedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
154024
154113
|
lastSetupAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
154025
|
-
...org ? { org } : {}
|
|
154114
|
+
...tokenSource === "flag" && org ? { org } : {}
|
|
154026
154115
|
};
|
|
154027
154116
|
await saveConfig(config3, configOptions);
|
|
154028
154117
|
status.stage("Starting dvbd");
|
|
@@ -154050,7 +154139,9 @@ var init_setup = __esm({
|
|
|
154050
154139
|
}
|
|
154051
154140
|
console.log(`config: ${resolveConfigPath(homeDir)}`);
|
|
154052
154141
|
console.log(`secrets: ${resolveSecretsPath(homeDir)}`);
|
|
154053
|
-
if (org)
|
|
154142
|
+
if (tokenSource === "flag" && org) {
|
|
154143
|
+
console.log(`org: ${org}`);
|
|
154144
|
+
}
|
|
154054
154145
|
console.log(`token store: ${store.kind}`);
|
|
154055
154146
|
console.log(`token source: ${tokenSource}`);
|
|
154056
154147
|
console.log(`daemon: pid ${daemon.pid}`);
|
|
@@ -154059,6 +154150,9 @@ var init_setup = __esm({
|
|
|
154059
154150
|
printMobileDownloadQr();
|
|
154060
154151
|
}
|
|
154061
154152
|
await maybeOfferCompletionsInstall();
|
|
154153
|
+
if (isFirstSetup) {
|
|
154154
|
+
printFirstSetupCompleteMessage();
|
|
154155
|
+
}
|
|
154062
154156
|
};
|
|
154063
154157
|
try {
|
|
154064
154158
|
await run2();
|
|
@@ -155681,4 +155775,4 @@ smol-toml/dist/index.js:
|
|
|
155681
155775
|
*/
|
|
155682
155776
|
//# sourceMappingURL=dvb.cjs.map
|
|
155683
155777
|
|
|
155684
|
-
//# debugId=
|
|
155778
|
+
//# debugId=cd199da5-5299-508f-a0e3-01c6aff7017e
|