@bgord/bun 0.30.0 → 0.30.1

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.
@@ -5,6 +5,7 @@ type Dependencies = {
5
5
  };
6
6
  export declare class CertificateInspectorTLSAdapter implements CertificateInspectorPort {
7
7
  private readonly deps;
8
+ private static readonly ROUNDING;
8
9
  constructor(deps: Dependencies);
9
10
  inspect(hostname: string): Promise<CertificateInspection>;
10
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"certificate-inspector-tls.adapter.d.ts","sourceRoot":"","sources":["../src/certificate-inspector-tls.adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,KAAK,YAAY,GAAG;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC;AAEzC,qBAAa,8BAA+B,YAAW,wBAAwB;IACjE,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,YAAY;IAEzC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA2BhE"}
1
+ {"version":3,"file":"certificate-inspector-tls.adapter.d.ts","sourceRoot":"","sources":["../src/certificate-inspector-tls.adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,KAAK,YAAY,GAAG;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC;AAEzC,qBAAa,8BAA+B,YAAW,wBAAwB;IAGjE,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAA8B;gBAEjC,IAAI,EAAE,YAAY;IAEzC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA8BhE"}
@@ -2,6 +2,7 @@ import tls from "node:tls";
2
2
  import * as tools from "@bgord/tools";
3
3
  export class CertificateInspectorTLSAdapter {
4
4
  deps;
5
+ static ROUNDING = new tools.RoundToNearest();
5
6
  constructor(deps) {
6
7
  this.deps = deps;
7
8
  }
@@ -22,7 +23,10 @@ export class CertificateInspectorTLSAdapter {
22
23
  return settle({ success: false });
23
24
  const validToMs = new Date(certificate.valid_to).getTime();
24
25
  const daysRemaining = tools.Duration.Ms(validToMs - this.deps.Clock.nowMs()).days;
25
- settle({ success: true, daysRemaining });
26
+ settle({
27
+ success: true,
28
+ daysRemaining: CertificateInspectorTLSAdapter.ROUNDING.round(daysRemaining),
29
+ });
26
30
  });
27
31
  socket.once("error", () => settle({ success: false }));
28
32
  });
@@ -1 +1 @@
1
- {"version":3,"file":"certificate-inspector-tls.adapter.js","sourceRoot":"","sources":["../src/certificate-inspector-tls.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAMtC,MAAM,OAAO,8BAA8B;IACZ;IAA7B,YAA6B,IAAkB;QAAlB,SAAI,GAAJ,IAAI,CAAc;IAAG,CAAC;IAEnD,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,MAAM,GAAG,CAAC,KAA4B,EAAE,EAAE;gBAC9C,IAAI,CAAC;oBACH,MAAM,CAAC,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,CAAC;wBAAS,CAAC;oBACT,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC,CAAC;YAEF,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CACxB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAC9E,GAAG,EAAE;gBACH,MAAM,WAAW,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAChD,IAAI,CAAC,WAAW,EAAE,QAAQ;oBAAE,OAAO,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAE9D,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC3D,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;gBAElF,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;YAC3C,CAAC,CACF,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"certificate-inspector-tls.adapter.js","sourceRoot":"","sources":["../src/certificate-inspector-tls.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAMtC,MAAM,OAAO,8BAA8B;IAGZ;IAFrB,MAAM,CAAU,QAAQ,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;IAE9D,YAA6B,IAAkB;QAAlB,SAAI,GAAJ,IAAI,CAAc;IAAG,CAAC;IAEnD,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,MAAM,GAAG,CAAC,KAA4B,EAAE,EAAE;gBAC9C,IAAI,CAAC;oBACH,MAAM,CAAC,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,CAAC;wBAAS,CAAC;oBACT,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC,CAAC;YAEF,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CACxB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAC9E,GAAG,EAAE;gBACH,MAAM,WAAW,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAChD,IAAI,CAAC,WAAW,EAAE,QAAQ;oBAAE,OAAO,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAE9D,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC3D,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;gBAElF,MAAM,CAAC;oBACL,OAAO,EAAE,IAAI;oBACb,aAAa,EAAE,8BAA8B,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC;iBAC5E,CAAC,CAAC;YACL,CAAC,CACF,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC"}
@@ -5,11 +5,11 @@ export declare class PrerequisiteSSLCertificateExpiry implements prereqs.Prerequ
5
5
  readonly label: prereqs.PrerequisiteLabelType;
6
6
  readonly enabled?: boolean;
7
7
  private readonly host;
8
- private readonly validDaysMinimum;
8
+ private readonly days;
9
9
  private readonly inspector;
10
10
  constructor(config: prereqs.PrerequisiteConfigType & {
11
11
  host: string;
12
- validDaysMinimum: number;
12
+ days: number;
13
13
  inspector: CertificateInspectorPort;
14
14
  });
15
15
  verify(): Promise<prereqs.VerifyOutcome>;
@@ -1 +1 @@
1
- {"version":3,"file":"ssl-certificate-expiry.d.ts","sourceRoot":"","sources":["../../src/prerequisites/ssl-certificate-expiry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,qBAAa,gCAAiC,YAAW,OAAO,CAAC,YAAY;IAC3E,QAAQ,CAAC,IAAI,4BAA4B;IACzC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;gBAGnD,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QACvC,IAAI,EAAE,MAAM,CAAC;QACb,gBAAgB,EAAE,MAAM,CAAC;QACzB,SAAS,EAAE,wBAAwB,CAAC;KACrC;IAUG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAW/C"}
1
+ {"version":3,"file":"ssl-certificate-expiry.d.ts","sourceRoot":"","sources":["../../src/prerequisites/ssl-certificate-expiry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,qBAAa,gCAAiC,YAAW,OAAO,CAAC,YAAY;IAC3E,QAAQ,CAAC,IAAI,4BAA4B;IACzC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;gBAGnD,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QACvC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,wBAAwB,CAAC;KACrC;IAUG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAW/C"}
@@ -4,13 +4,13 @@ export class PrerequisiteSSLCertificateExpiry {
4
4
  label;
5
5
  enabled = true;
6
6
  host;
7
- validDaysMinimum;
7
+ days;
8
8
  inspector;
9
9
  constructor(config) {
10
10
  this.label = config.label;
11
11
  this.enabled = config.enabled === undefined ? true : config.enabled;
12
12
  this.host = config.host;
13
- this.validDaysMinimum = config.validDaysMinimum;
13
+ this.days = config.days;
14
14
  this.inspector = config.inspector;
15
15
  }
16
16
  async verify() {
@@ -19,7 +19,7 @@ export class PrerequisiteSSLCertificateExpiry {
19
19
  const result = await this.inspector.inspect(this.host);
20
20
  if (!result.success)
21
21
  return prereqs.Verification.failure({ message: "Unavailable" });
22
- if (result.daysRemaining <= this.validDaysMinimum) {
22
+ if (result.daysRemaining <= this.days) {
23
23
  return prereqs.Verification.failure({ message: `${result.daysRemaining} days remaining` });
24
24
  }
25
25
  return prereqs.Verification.success();
@@ -1 +1 @@
1
- {"version":3,"file":"ssl-certificate-expiry.js","sourceRoot":"","sources":["../../src/prerequisites/ssl-certificate-expiry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,gCAAgC;IAClC,IAAI,GAAG,wBAAwB,CAAC;IAChC,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,IAAI,CAAS;IACb,gBAAgB,CAAS;IACzB,SAAS,CAA2B;IAErD,YACE,MAIC;QAED,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEpE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QAE9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;QACrF,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAClD,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,aAAa,iBAAiB,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;CACF"}
1
+ {"version":3,"file":"ssl-certificate-expiry.js","sourceRoot":"","sources":["../../src/prerequisites/ssl-certificate-expiry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,gCAAgC;IAClC,IAAI,GAAG,wBAAwB,CAAC;IAChC,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,IAAI,CAAS;IACb,IAAI,CAAS;IACb,SAAS,CAA2B;IAErD,YACE,MAIC;QAED,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEpE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QAE9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;QACrF,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACtC,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,aAAa,iBAAiB,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;CACF"}
@@ -18,7 +18,7 @@ export const BODY_LIMIT_MAX_SIZE = tools.Size.fromKb(128).toBytes();
18
18
  export class Setup {
19
19
  static essentials(deps, overrides) {
20
20
  const corsOptions = overrides?.cors ?? { origin: "*" };
21
- const secureHeadersOptions = overrides?.secureHeaders ?? undefined;
21
+ const secureHeadersOptions = { crossOriginResourcePolicy: "cross-origin", ...overrides?.secureHeaders };
22
22
  return [
23
23
  secureHeaders(secureHeadersOptions),
24
24
  bodyLimit({ maxSize: BODY_LIMIT_MAX_SIZE }),
@@ -1 +1 @@
1
- {"version":3,"file":"setup.service.js","sourceRoot":"","sources":["../src/setup.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAA0B,MAAM,0BAA0B,CAAC;AAI9E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;AAepE,MAAM,OAAO,KAAK;IAChB,MAAM,CAAC,UAAU,CAAC,IAAkB,EAAE,SAA8B;QAClE,MAAM,WAAW,GAAG,SAAS,EAAE,IAAI,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QACvD,MAAM,oBAAoB,GAAG,SAAS,EAAE,aAAa,IAAI,SAAS,CAAC;QAEnE,OAAO;YACL,aAAa,CAAC,oBAAoB,CAAC;YACnC,SAAS,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;YAC3C,SAAS,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;YACpC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YACvC,IAAI,CAAC,WAAW,CAAC;YACjB,gBAAgB,CAAC;gBACf,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC7D,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe;gBAC3C,MAAM,EAAE,KAAK;aACd,CAAC;YACF,SAAS,CAAC;gBACR,WAAW,EAAE,EAAE;gBACf,UAAU,EAAE,kBAAkB;gBAC9B,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;aAC5C,CAAC;YACF,cAAc,CAAC,MAAM;YACrB,OAAO,CAAC,MAAM;YACd,iBAAiB,CAAC,MAAM;YACxB,aAAa,CAAC,MAAM;YACpB,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC;YAC7C,MAAM,EAAE;YACR,kBAAkB,CAAC,MAAM,EAAE;SAC5B,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"setup.service.js","sourceRoot":"","sources":["../src/setup.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAA0B,MAAM,0BAA0B,CAAC;AAI9E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;AAepE,MAAM,OAAO,KAAK;IAChB,MAAM,CAAC,UAAU,CAAC,IAAkB,EAAE,SAA8B;QAClE,MAAM,WAAW,GAAG,SAAS,EAAE,IAAI,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QACvD,MAAM,oBAAoB,GAAG,EAAE,yBAAyB,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE,aAAa,EAAE,CAAC;QAExG,OAAO;YACL,aAAa,CAAC,oBAAoB,CAAC;YACnC,SAAS,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;YAC3C,SAAS,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;YACpC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YACvC,IAAI,CAAC,WAAW,CAAC;YACjB,gBAAgB,CAAC;gBACf,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC7D,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe;gBAC3C,MAAM,EAAE,KAAK;aACd,CAAC;YACF,SAAS,CAAC;gBACR,WAAW,EAAE,EAAE;gBACf,UAAU,EAAE,kBAAkB;gBAC9B,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;aAC5C,CAAC;YACF,cAAc,CAAC,MAAM;YACrB,OAAO,CAAC,MAAM;YACd,iBAAiB,CAAC,MAAM;YACxB,aAAa,CAAC,MAAM;YACpB,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC;YAC7C,MAAM,EAAE;YACR,kBAAkB,CAAC,MAAM,EAAE;SAC5B,CAAC;IACJ,CAAC;CACF"}