const __vite_ssr_import_0__ = await __vite_ssr_import__("/node_modules/vitest/dist/index.js", {"importedNames":["describe","expect","it","vi"]});
const __vite_ssr_import_1__ = await __vite_ssr_import__("/app/lib/firstpromoter.server.ts", {"importedNames":["track","verifyCredentials"]});
const __vite_ssr_import_2__ = await __vite_ssr_import__("/node_modules/vitest/dist/index.js", {"importedNames":["beforeEach"]});
const __vite_ssr_import_3__ = await __vite_ssr_import__("/app/lib/firstpromoter.server.ts", {"importedNames":["buildCodeIndex","clearCodeCache","lookupPromoCode"]});


const creds = { accountId: "acc1", apiKey: "secret-key-123" };
const reply = (status, body = {}) => __vite_ssr_import_0__.vi.fn().mockResolvedValue(new Response(JSON.stringify(body), { status }));
(0,__vite_ssr_import_0__.describe)("track", () => {
  (0,__vite_ssr_import_0__.it)("posts to the sale endpoint with the documented headers", async () => {
    const fetchImpl = reply(200);
    await (0,__vite_ssr_import_1__.track)("sale", creds, { uid: "1" }, { fetchImpl });
    const [url, init] = fetchImpl.mock.calls[0];
    (0,__vite_ssr_import_0__.expect)(url).toBe("https://api.firstpromoter.com/api/v2/track/sale");
    (0,__vite_ssr_import_0__.expect)(init.method).toBe("POST");
    (0,__vite_ssr_import_0__.expect)(init.headers).toMatchObject({
      Authorization: "Bearer secret-key-123",
      "Account-ID": "acc1",
      "Content-Type": "application/json"
    });
    (0,__vite_ssr_import_0__.expect)(JSON.parse(init.body)).toEqual({ uid: "1" });
  });
  (0,__vite_ssr_import_0__.it)("uses the refund endpoint", async () => {
    const fetchImpl = reply(200);
    await (0,__vite_ssr_import_1__.track)("refund", creds, {}, { fetchImpl });
    (0,__vite_ssr_import_0__.expect)(fetchImpl.mock.calls[0][0]).toBe(
      "https://api.firstpromoter.com/api/v2/track/refund"
    );
  });
  __vite_ssr_import_0__.it.each([
    [200, "tracked"],
    [404, "no_referral"],
    [409, "duplicate"],
    [422, "error"],
    [429, "retry"],
    [502, "retry"],
    [400, "error"],
    [401, "error"]
  ])("maps HTTP %i to %s", async (status, outcome) => {
    const result = await (0,__vite_ssr_import_1__.track)("sale", creds, {}, { fetchImpl: reply(status) });
    (0,__vite_ssr_import_0__.expect)(result.outcome).toBe(outcome);
    (0,__vite_ssr_import_0__.expect)(result.status).toBe(status);
  });
  (0,__vite_ssr_import_0__.it)("surfaces the API message for errors", async () => {
    const result = await (0,__vite_ssr_import_1__.track)("sale", creds, {}, {
      fetchImpl: reply(400, { message: "Error. Amount blank or invalid." })
    });
    (0,__vite_ssr_import_0__.expect)(result.message).toBe("Error. Amount blank or invalid.");
  });
  (0,__vite_ssr_import_0__.it)("retries on network errors and timeouts", async () => {
    const boom = __vite_ssr_import_0__.vi.fn().mockRejectedValue(new Error("down"));
    (0,__vite_ssr_import_0__.expect)((await (0,__vite_ssr_import_1__.track)("sale", creds, {}, { fetchImpl: boom })).outcome).toBe("retry");
    const hang = __vite_ssr_import_0__.vi.fn(
      (_url, init) => new Promise(
        (_, reject) => init.signal.addEventListener(
          "abort",
          () => reject(Object.assign(new Error("aborted"), { name: "AbortError" }))
        )
      )
    );
    const result = await (0,__vite_ssr_import_1__.track)("sale", creds, {}, { fetchImpl: hang, timeoutMs: 20 });
    (0,__vite_ssr_import_0__.expect)(result.outcome).toBe("retry");
  });
});
(0,__vite_ssr_import_0__.describe)("verifyCredentials", () => {
  (0,__vite_ssr_import_0__.it)("is valid on 200, invalid on 401/403/404, unknown otherwise", async () => {
    (0,__vite_ssr_import_0__.expect)((await (0,__vite_ssr_import_1__.verifyCredentials)(creds, { fetchImpl: reply(200) })).valid).toBe(true);
    (0,__vite_ssr_import_0__.expect)((await (0,__vite_ssr_import_1__.verifyCredentials)(creds, { fetchImpl: reply(401) })).valid).toBe(false);
    (0,__vite_ssr_import_0__.expect)((await (0,__vite_ssr_import_1__.verifyCredentials)(creds, { fetchImpl: reply(403) })).valid).toBe(false);
    (0,__vite_ssr_import_0__.expect)((await (0,__vite_ssr_import_1__.verifyCredentials)(creds, { fetchImpl: reply(404) })).valid).toBe(false);
    (0,__vite_ssr_import_0__.expect)((await (0,__vite_ssr_import_1__.verifyCredentials)(creds, { fetchImpl: reply(500) })).valid).toBeNull();
    const down = __vite_ssr_import_0__.vi.fn().mockRejectedValue(new Error("x"));
    (0,__vite_ssr_import_0__.expect)((await (0,__vite_ssr_import_1__.verifyCredentials)(creds, { fetchImpl: down })).valid).toBeNull();
  });
});


(0,__vite_ssr_import_0__.describe)("lookupPromoCode", () => {
  (0,__vite_ssr_import_2__.beforeEach)(() => (0,__vite_ssr_import_3__.clearCodeCache)());
  const campaigns = [
    { id: 1, state: "accepted", ref_token: "ynmf2k", promo_codes: ["Ben10", "Ben25"] },
    { id: 2, state: "accepted", ref_token: "changedtoken", promo_codes: [] },
    { id: 3, state: "blocked", ref_token: "bad", promo_codes: ["Bad10"] }
  ];
  const creds2 = { accountId: "acc", apiKey: "k" };
  (0,__vite_ssr_import_0__.it)("indexes codes of accepted promoters only, case-insensitively", () => {
    const index = (0,__vite_ssr_import_3__.buildCodeIndex)(campaigns);
    (0,__vite_ssr_import_0__.expect)(index.get("ben10")).toBe("ynmf2k");
    (0,__vite_ssr_import_0__.expect)(index.has("bad10")).toBe(false);
  });
  (0,__vite_ssr_import_0__.it)("resolves a code to the ref token", async () => {
    const fetchImpl = __vite_ssr_import_0__.vi.fn().mockResolvedValue({ ok: true, status: 200, json: async () => campaigns });
    (0,__vite_ssr_import_0__.expect)(await (0,__vite_ssr_import_3__.lookupPromoCode)(creds2, "BEN10", { fetchImpl })).toEqual({
      status: "found",
      refId: "ynmf2k"
    });
  });
  (0,__vite_ssr_import_0__.it)("answers unknown for a code nobody owns and caches the list", async () => {
    const fetchImpl = __vite_ssr_import_0__.vi.fn().mockResolvedValue({ ok: true, status: 200, json: async () => campaigns });
    (0,__vite_ssr_import_0__.expect)(await (0,__vite_ssr_import_3__.lookupPromoCode)(creds2, "PLAIN10", { fetchImpl })).toEqual({ status: "unknown" });
    await (0,__vite_ssr_import_3__.lookupPromoCode)(creds2, "Ben10", { fetchImpl });
    (0,__vite_ssr_import_0__.expect)(fetchImpl).toHaveBeenCalledTimes(1);
  });
  (0,__vite_ssr_import_0__.it)("reports an error when FirstPromoter fails", async () => {
    const fetchImpl = __vite_ssr_import_0__.vi.fn().mockResolvedValue({ ok: false, status: 500, json: async () => ({}) });
    const result = await (0,__vite_ssr_import_3__.lookupPromoCode)(creds2, "Ben10", { fetchImpl });
    (0,__vite_ssr_import_0__.expect)(result.status).toBe("error");
  });
});
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,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LFlBQVk7QUFDMUQsVUFBTSxZQUFZLHlCQUFHLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLE9BQU8sUUFBUSxLQUFLLE1BQU0sYUFBYSxDQUFDLEdBQUcsQ0FBQztBQUM5RixVQUFNLFNBQVMsU0FBTSx1Q0FBZ0JBLFFBQU8sU0FBUyxFQUFFLFVBQThCLENBQUM7QUFDdEYscUNBQU8sT0FBTyxNQUFNLEVBQUUsS0FBSyxPQUFPO0FBQUEsRUFDcEMsQ0FBQztBQUNILENBQUMiLCJuYW1lcyI6WyJjcmVkcyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJmaXJzdHByb21vdGVyLnRlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQsIHZpIH0gZnJvbSBcInZpdGVzdFwiO1xuaW1wb3J0IHsgdHJhY2ssIHZlcmlmeUNyZWRlbnRpYWxzIH0gZnJvbSBcIi4uL2FwcC9saWIvZmlyc3Rwcm9tb3Rlci5zZXJ2ZXJcIjtcblxuY29uc3QgY3JlZHMgPSB7IGFjY291bnRJZDogXCJhY2MxXCIsIGFwaUtleTogXCJzZWNyZXQta2V5LTEyM1wiIH07XG5jb25zdCByZXBseSA9IChzdGF0dXM6IG51bWJlciwgYm9keTogdW5rbm93biA9IHt9KSA9PlxuICB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeShib2R5KSwgeyBzdGF0dXMgfSkpO1xuXG5kZXNjcmliZShcInRyYWNrXCIsICgpID0+IHtcbiAgaXQoXCJwb3N0cyB0byB0aGUgc2FsZSBlbmRwb2ludCB3aXRoIHRoZSBkb2N1bWVudGVkIGhlYWRlcnNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGZldGNoSW1wbCA9IHJlcGx5KDIwMCk7XG4gICAgYXdhaXQgdHJhY2soXCJzYWxlXCIsIGNyZWRzLCB7IHVpZDogXCIxXCIgfSwgeyBmZXRjaEltcGwgfSk7XG4gICAgY29uc3QgW3VybCwgaW5pdF0gPSBmZXRjaEltcGwubW9jay5jYWxsc1swXTtcbiAgICBleHBlY3QodXJsKS50b0JlKFwiaHR0cHM6Ly9hcGkuZmlyc3Rwcm9tb3Rlci5jb20vYXBpL3YyL3RyYWNrL3NhbGVcIik7XG4gICAgZXhwZWN0KGluaXQubWV0aG9kKS50b0JlKFwiUE9TVFwiKTtcbiAgICBleHBlY3QoaW5pdC5oZWFkZXJzKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIEF1dGhvcml6YXRpb246IFwiQmVhcmVyIHNlY3JldC1rZXktMTIzXCIsXG4gICAgICBcIkFjY291bnQtSURcIjogXCJhY2MxXCIsXG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICB9KTtcbiAgICBleHBlY3QoSlNPTi5wYXJzZShpbml0LmJvZHkpKS50b0VxdWFsKHsgdWlkOiBcIjFcIiB9KTtcbiAgfSk7XG4gIGl0KFwidXNlcyB0aGUgcmVmdW5kIGVuZHBvaW50XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBmZXRjaEltcGwgPSByZXBseSgyMDApO1xuICAgIGF3YWl0IHRyYWNrKFwicmVmdW5kXCIsIGNyZWRzLCB7fSwgeyBmZXRjaEltcGwgfSk7XG4gICAgZXhwZWN0KGZldGNoSW1wbC5tb2NrLmNhbGxzWzBdWzBdKS50b0JlKFxuICAgICAgXCJodHRwczovL2FwaS5maXJzdHByb21vdGVyLmNvbS9hcGkvdjIvdHJhY2svcmVmdW5kXCIsXG4gICAgKTtcbiAgfSk7XG4gIGl0LmVhY2goW1xuICAgIFsyMDAsIFwidHJhY2tlZFwiXSxcbiAgICBbNDA0LCBcIm5vX3JlZmVycmFsXCJdLFxuICAgIFs0MDksIFwiZHVwbGljYXRlXCJdLFxuICAgIFs0MjIsIFwiZXJyb3JcIl0sXG4gICAgWzQyOSwgXCJyZXRyeVwiXSxcbiAgICBbNTAyLCBcInJldHJ5XCJdLFxuICAgIFs0MDAsIFwiZXJyb3JcIl0sXG4gICAgWzQwMSwgXCJlcnJvclwiXSxcbiAgXSkoXCJtYXBzIEhUVFAgJWkgdG8gJXNcIiwgYXN5bmMgKHN0YXR1cywgb3V0Y29tZSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYWNrKFwic2FsZVwiLCBjcmVkcywge30sIHsgZmV0Y2hJbXBsOiByZXBseShzdGF0dXMpIH0pO1xuICAgIGV4cGVjdChyZXN1bHQub3V0Y29tZSkudG9CZShvdXRjb21lKTtcbiAgICBleHBlY3QocmVzdWx0LnN0YXR1cykudG9CZShzdGF0dXMpO1xuICB9KTtcbiAgaXQoXCJzdXJmYWNlcyB0aGUgQVBJIG1lc3NhZ2UgZm9yIGVycm9yc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdHJhY2soXCJzYWxlXCIsIGNyZWRzLCB7fSwge1xuICAgICAgZmV0Y2hJbXBsOiByZXBseSg0MDAsIHsgbWVzc2FnZTogXCJFcnJvci4gQW1vdW50IGJsYW5rIG9yIGludmFsaWQuXCIgfSksXG4gICAgfSk7XG4gICAgZXhwZWN0KHJlc3VsdC5tZXNzYWdlKS50b0JlKFwiRXJyb3IuIEFtb3VudCBibGFuayBvciBpbnZhbGlkLlwiKTtcbiAgfSk7XG4gIGl0KFwicmV0cmllcyBvbiBuZXR3b3JrIGVycm9ycyBhbmQgdGltZW91dHNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGJvb20gPSB2aS5mbigpLm1vY2tSZWplY3RlZFZhbHVlKG5ldyBFcnJvcihcImRvd25cIikpO1xuICAgIGV4cGVjdCgoYXdhaXQgdHJhY2soXCJzYWxlXCIsIGNyZWRzLCB7fSwgeyBmZXRjaEltcGw6IGJvb20gfSkpLm91dGNvbWUpLnRvQmUoXCJyZXRyeVwiKTtcblxuICAgIGNvbnN0IGhhbmcgPSB2aS5mbigoX3VybDogc3RyaW5nLCBpbml0OiBSZXF1ZXN0SW5pdCkgPT5cbiAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPigoXywgcmVqZWN0KSA9PlxuICAgICAgICBpbml0LnNpZ25hbCEuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsICgpID0+XG4gICAgICAgICAgcmVqZWN0KE9iamVjdC5hc3NpZ24obmV3IEVycm9yKFwiYWJvcnRlZFwiKSwgeyBuYW1lOiBcIkFib3J0RXJyb3JcIiB9KSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdHJhY2soXCJzYWxlXCIsIGNyZWRzLCB7fSwgeyBmZXRjaEltcGw6IGhhbmcgYXMgbmV2ZXIsIHRpbWVvdXRNczogMjAgfSk7XG4gICAgZXhwZWN0KHJlc3VsdC5vdXRjb21lKS50b0JlKFwicmV0cnlcIik7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwidmVyaWZ5Q3JlZGVudGlhbHNcIiwgKCkgPT4ge1xuICBpdChcImlzIHZhbGlkIG9uIDIwMCwgaW52YWxpZCBvbiA0MDEvNDAzLzQwNCwgdW5rbm93biBvdGhlcndpc2VcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGV4cGVjdCgoYXdhaXQgdmVyaWZ5Q3JlZGVudGlhbHMoY3JlZHMsIHsgZmV0Y2hJbXBsOiByZXBseSgyMDApIH0pKS52YWxpZCkudG9CZSh0cnVlKTtcbiAgICBleHBlY3QoKGF3YWl0IHZlcmlmeUNyZWRlbnRpYWxzKGNyZWRzLCB7IGZldGNoSW1wbDogcmVwbHkoNDAxKSB9KSkudmFsaWQpLnRvQmUoZmFsc2UpO1xuICAgIGV4cGVjdCgoYXdhaXQgdmVyaWZ5Q3JlZGVudGlhbHMoY3JlZHMsIHsgZmV0Y2hJbXBsOiByZXBseSg0MDMpIH0pKS52YWxpZCkudG9CZShmYWxzZSk7XG4gICAgLy8gRmlyc3RQcm9tb3RlciBhbnN3ZXJzIDQwNCBmb3IgYW4gdW5rbm93biBBY2NvdW50IElELlxuICAgIGV4cGVjdCgoYXdhaXQgdmVyaWZ5Q3JlZGVudGlhbHMoY3JlZHMsIHsgZmV0Y2hJbXBsOiByZXBseSg0MDQpIH0pKS52YWxpZCkudG9CZShmYWxzZSk7XG4gICAgZXhwZWN0KChhd2FpdCB2ZXJpZnlDcmVkZW50aWFscyhjcmVkcywgeyBmZXRjaEltcGw6IHJlcGx5KDUwMCkgfSkpLnZhbGlkKS50b0JlTnVsbCgpO1xuICAgIGNvbnN0IGRvd24gPSB2aS5mbigpLm1vY2tSZWplY3RlZFZhbHVlKG5ldyBFcnJvcihcInhcIikpO1xuICAgIGV4cGVjdCgoYXdhaXQgdmVyaWZ5Q3JlZGVudGlhbHMoY3JlZHMsIHsgZmV0Y2hJbXBsOiBkb3duIH0pKS52YWxpZCkudG9CZU51bGwoKTtcbiAgfSk7XG59KTtcblxuaW1wb3J0IHsgYmVmb3JlRWFjaCB9IGZyb20gXCJ2aXRlc3RcIjtcbmltcG9ydCB7IGJ1aWxkQ29kZUluZGV4LCBjbGVhckNvZGVDYWNoZSwgbG9va3VwUHJvbW9Db2RlIH0gZnJvbSBcIi4uL2FwcC9saWIvZmlyc3Rwcm9tb3Rlci5zZXJ2ZXJcIjtcblxuZGVzY3JpYmUoXCJsb29rdXBQcm9tb0NvZGVcIiwgKCkgPT4ge1xuICBiZWZvcmVFYWNoKCgpID0+IGNsZWFyQ29kZUNhY2hlKCkpO1xuICBjb25zdCBjYW1wYWlnbnMgPSBbXG4gICAgeyBpZDogMSwgc3RhdGU6IFwiYWNjZXB0ZWRcIiwgcmVmX3Rva2VuOiBcInlubWYya1wiLCBwcm9tb19jb2RlczogW1wiQmVuMTBcIiwgXCJCZW4yNVwiXSB9LFxuICAgIHsgaWQ6IDIsIHN0YXRlOiBcImFjY2VwdGVkXCIsIHJlZl90b2tlbjogXCJjaGFuZ2VkdG9rZW5cIiwgcHJvbW9fY29kZXM6IFtdIH0sXG4gICAgeyBpZDogMywgc3RhdGU6IFwiYmxvY2tlZFwiLCByZWZfdG9rZW46IFwiYmFkXCIsIHByb21vX2NvZGVzOiBbXCJCYWQxMFwiXSB9LFxuICBdO1xuICBjb25zdCBjcmVkcyA9IHsgYWNjb3VudElkOiBcImFjY1wiLCBhcGlLZXk6IFwia1wiIH07XG5cbiAgaXQoXCJpbmRleGVzIGNvZGVzIG9mIGFjY2VwdGVkIHByb21vdGVycyBvbmx5LCBjYXNlLWluc2Vuc2l0aXZlbHlcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGluZGV4ID0gYnVpbGRDb2RlSW5kZXgoY2FtcGFpZ25zKTtcbiAgICBleHBlY3QoaW5kZXguZ2V0KFwiYmVuMTBcIikpLnRvQmUoXCJ5bm1mMmtcIik7XG4gICAgZXhwZWN0KGluZGV4LmhhcyhcImJhZDEwXCIpKS50b0JlKGZhbHNlKTtcbiAgfSk7XG4gIGl0KFwicmVzb2x2ZXMgYSBjb2RlIHRvIHRoZSByZWYgdG9rZW5cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGZldGNoSW1wbCA9IHZpLmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoeyBvazogdHJ1ZSwgc3RhdHVzOiAyMDAsIGpzb246IGFzeW5jICgpID0+IGNhbXBhaWducyB9KTtcbiAgICBleHBlY3QoYXdhaXQgbG9va3VwUHJvbW9Db2RlKGNyZWRzLCBcIkJFTjEwXCIsIHsgZmV0Y2hJbXBsOiBmZXRjaEltcGwgYXMgbmV2ZXIgfSkpLnRvRXF1YWwoe1xuICAgICAgc3RhdHVzOiBcImZvdW5kXCIsXG4gICAgICByZWZJZDogXCJ5bm1mMmtcIixcbiAgICB9KTtcbiAgfSk7XG4gIGl0KFwiYW5zd2VycyB1bmtub3duIGZvciBhIGNvZGUgbm9ib2R5IG93bnMgYW5kIGNhY2hlcyB0aGUgbGlzdFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZmV0Y2hJbXBsID0gdmkuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh7IG9rOiB0cnVlLCBzdGF0dXM6IDIwMCwganNvbjogYXN5bmMgKCkgPT4gY2FtcGFpZ25zIH0pO1xuICAgIGV4cGVjdChhd2FpdCBsb29rdXBQcm9tb0NvZGUoY3JlZHMsIFwiUExBSU4xMFwiLCB7IGZldGNoSW1wbDogZmV0Y2hJbXBsIGFzIG5ldmVyIH0pKS50b0VxdWFsKHsgc3RhdHVzOiBcInVua25vd25cIiB9KTtcbiAgICBhd2FpdCBsb29rdXBQcm9tb0NvZGUoY3JlZHMsIFwiQmVuMTBcIiwgeyBmZXRjaEltcGw6IGZldGNoSW1wbCBhcyBuZXZlciB9KTtcbiAgICBleHBlY3QoZmV0Y2hJbXBsKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gIH0pO1xuICBpdChcInJlcG9ydHMgYW4gZXJyb3Igd2hlbiBGaXJzdFByb21vdGVyIGZhaWxzXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBmZXRjaEltcGwgPSB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHsgb2s6IGZhbHNlLCBzdGF0dXM6IDUwMCwganNvbjogYXN5bmMgKCkgPT4gKHt9KSB9KTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBsb29rdXBQcm9tb0NvZGUoY3JlZHMsIFwiQmVuMTBcIiwgeyBmZXRjaEltcGw6IGZldGNoSW1wbCBhcyBuZXZlciB9KTtcbiAgICBleHBlY3QocmVzdWx0LnN0YXR1cykudG9CZShcImVycm9yXCIpO1xuICB9KTtcbn0pO1xuIl0sImZpbGUiOiIvdGVzdHMvZmlyc3Rwcm9tb3Rlci50ZXN0LnRzIn0=

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJ1cmwiOiIyIiwiaW1wb3J0cyI6IjMiLCJtYXBwaW5ncyI6ZmFsc2UsImRlcHMiOiI0IiwiZHluYW1pY0RlcHMiOiI1Iiwic3RhdGljTW9ja3MiOm51bGx9LCIvVXNlcnMvZGF3aWQvRGVza3RvcC9maXJzdHByb21vdGVyLXNob3BpZnktYXBwL3Rlc3RzL2ZpcnN0cHJvbW90ZXIudGVzdC50cyIsIi90ZXN0cy9maXJzdHByb21vdGVyLnRlc3QudHMiLHsidXJscyI6IjYiLCJpZHMiOiI3In0sWyI4IiwiOSJdLFtdLFsiOCIsIjkiXSx7fSwiL25vZGVfbW9kdWxlcy92aXRlc3QvZGlzdC9pbmRleC5qcyIsIi9hcHAvbGliL2ZpcnN0cHJvbW90ZXIuc2VydmVyLnRzIl0=