@dbx-tools/shared-email-template 0.9.154 → 0.9.158

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.
@@ -2,5 +2,5 @@
2
2
  // Regenerated from the exporting modules in ./src.
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
- export * as assets from "./assets.ts";
6
- export { dbxToolsEmailAssetDataUrls } from "./assets.ts";
5
+ export * as assets from "./src/generated/assets.ts";
6
+ export { dbxToolsEmailAssetDataUrls } from "./src/generated/assets.ts";
package/index.ts CHANGED
@@ -3,9 +3,7 @@
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
5
  export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-email-template";
6
- export const PACKAGE_VERSION = "0.9.154";
7
- export * as generatedAssets from "./src/generated/assets.ts";
6
+ export const PACKAGE_VERSION = "0.9.158";
8
7
  export * as template from "./src/template.tsx";
9
- export { dbxToolsEmailAssetDataUrls } from "./src/generated/assets.ts";
10
8
  export { emailBrandFromContext, defaultEmailBrand, resolveEmailBrand, normalizeEmailMarkdown, EmailBody, EmailCard, EmailDocument } from "./src/template.tsx";
11
9
  export type { EmailBrand, ResolvedEmailBrand, EmailBodyProps, EmailDocumentProps } from "./src/template.tsx";
package/lib/index.d.ts CHANGED
@@ -1,7 +1,5 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/shared-email-template";
2
- export declare const PACKAGE_VERSION = "0.9.154";
3
- export * as generatedAssets from "./src/generated/assets.ts";
2
+ export declare const PACKAGE_VERSION = "0.9.158";
4
3
  export * as template from "./src/template.tsx";
5
- export { dbxToolsEmailAssetDataUrls } from "./src/generated/assets.ts";
6
4
  export { emailBrandFromContext, defaultEmailBrand, resolveEmailBrand, normalizeEmailMarkdown, EmailBody, EmailCard, EmailDocument } from "./src/template.tsx";
7
5
  export type { EmailBrand, ResolvedEmailBrand, EmailBodyProps, EmailDocumentProps } from "./src/template.tsx";
@@ -0,0 +1,2 @@
1
+ export * as assets from "./src/generated/assets.ts";
2
+ export { dbxToolsEmailAssetDataUrls } from "./src/generated/assets.ts";
@@ -0,0 +1,6 @@
1
+ // GENERATED by projen watch - DO NOT EDIT.
2
+ // Regenerated from the exporting modules in ./src.
3
+ // Hand edits are overwritten on the next watch; this file is read-only.
4
+ export * as assets from "./src/generated/assets.js";
5
+ export { dbxToolsEmailAssetDataUrls } from "./src/generated/assets.js";
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vaW5kZXguZ2VuZXJhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxtREFBbUQ7QUFDbkQsd0VBQXdFO0FBRXhFLE9BQU8sS0FBSyxNQUFNLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgKiBhcyBhc3NldHMgZnJvbSBcIi4vc3JjL2dlbmVyYXRlZC9hc3NldHMudHNcIjtcbmV4cG9ydCB7IGRieFRvb2xzRW1haWxBc3NldERhdGFVcmxzIH0gZnJvbSBcIi4vc3JjL2dlbmVyYXRlZC9hc3NldHMudHNcIjtcbiJdfQ==
package/lib/index.js CHANGED
@@ -2,9 +2,7 @@
2
2
  // Regenerated from the exporting modules in ./src.
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
  export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-email-template";
5
- export const PACKAGE_VERSION = "0.9.154";
6
- export * as generatedAssets from "./src/generated/assets.js";
5
+ export const PACKAGE_VERSION = "0.9.158";
7
6
  export * as template from "./src/template.js";
8
- export { dbxToolsEmailAssetDataUrls } from "./src/generated/assets.js";
9
7
  export { emailBrandFromContext, defaultEmailBrand, resolveEmailBrand, normalizeEmailMarkdown, EmailBody, EmailCard, EmailDocument } from "./src/template.js";
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxrQ0FBa0MsQ0FBQztBQUNyRSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxlQUFlLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvc2hhcmVkLWVtYWlsLXRlbXBsYXRlXCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9WRVJTSU9OID0gXCIwLjkuMTU0XCI7XG5leHBvcnQgKiBhcyBnZW5lcmF0ZWRBc3NldHMgZnJvbSBcIi4vc3JjL2dlbmVyYXRlZC9hc3NldHMudHNcIjtcbmV4cG9ydCAqIGFzIHRlbXBsYXRlIGZyb20gXCIuL3NyYy90ZW1wbGF0ZS50c3hcIjtcbmV4cG9ydCB7IGRieFRvb2xzRW1haWxBc3NldERhdGFVcmxzIH0gZnJvbSBcIi4vc3JjL2dlbmVyYXRlZC9hc3NldHMudHNcIjtcbmV4cG9ydCB7IGVtYWlsQnJhbmRGcm9tQ29udGV4dCwgZGVmYXVsdEVtYWlsQnJhbmQsIHJlc29sdmVFbWFpbEJyYW5kLCBub3JtYWxpemVFbWFpbE1hcmtkb3duLCBFbWFpbEJvZHksIEVtYWlsQ2FyZCwgRW1haWxEb2N1bWVudCB9IGZyb20gXCIuL3NyYy90ZW1wbGF0ZS50c3hcIjtcbmV4cG9ydCB0eXBlIHsgRW1haWxCcmFuZCwgUmVzb2x2ZWRFbWFpbEJyYW5kLCBFbWFpbEJvZHlQcm9wcywgRW1haWxEb2N1bWVudFByb3BzIH0gZnJvbSBcIi4vc3JjL3RlbXBsYXRlLnRzeFwiO1xuIl19
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxrQ0FBa0MsQ0FBQztBQUNyRSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL3NoYXJlZC1lbWFpbC10ZW1wbGF0ZVwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjE1OFwiO1xuZXhwb3J0ICogYXMgdGVtcGxhdGUgZnJvbSBcIi4vc3JjL3RlbXBsYXRlLnRzeFwiO1xuZXhwb3J0IHsgZW1haWxCcmFuZEZyb21Db250ZXh0LCBkZWZhdWx0RW1haWxCcmFuZCwgcmVzb2x2ZUVtYWlsQnJhbmQsIG5vcm1hbGl6ZUVtYWlsTWFya2Rvd24sIEVtYWlsQm9keSwgRW1haWxDYXJkLCBFbWFpbERvY3VtZW50IH0gZnJvbSBcIi4vc3JjL3RlbXBsYXRlLnRzeFwiO1xuZXhwb3J0IHR5cGUgeyBFbWFpbEJyYW5kLCBSZXNvbHZlZEVtYWlsQnJhbmQsIEVtYWlsQm9keVByb3BzLCBFbWFpbERvY3VtZW50UHJvcHMgfSBmcm9tIFwiLi9zcmMvdGVtcGxhdGUudHN4XCI7XG4iXX0=
@@ -8,7 +8,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
8
  *
9
9
  * @module
10
10
  */
11
- import { brandUtils } from "@dbx-tools/shared-core";
11
+ import { defaultBrandContext } from "@dbx-tools/shared-core";
12
12
  import { Body, Column, Container, Head, Heading, Hr, Html, Img, Link, Markdown, Preview, Row, Section, Text, } from "@react-email/components";
13
13
  import { dbxToolsEmailAssetDataUrls } from "./generated/assets.js";
14
14
  function isRenderableImageUrl(value) {
@@ -34,7 +34,7 @@ export const emailBrandFromContext = (context) => {
34
34
  };
35
35
  /** The repository brand used by every email unless explicitly overridden. */
36
36
  export const defaultEmailBrand = {
37
- ...emailBrandFromContext(brandUtils.defaultBrandContext),
37
+ ...emailBrandFromContext(defaultBrandContext),
38
38
  logoUrl: dbxToolsEmailAssetDataUrls.logo,
39
39
  };
40
40
  /** Merge a partial consumer brand over the repository default. */
@@ -45,12 +45,12 @@ export const resolveEmailBrand = (input) => {
45
45
  accent: merged.accent,
46
46
  onAccent: merged.onAccent ?? "#ffffff",
47
47
  fontFamily: merged.fontFamily,
48
- name: merged.name ?? brandUtils.defaultBrandContext.name,
49
- background: merged.background ?? brandUtils.defaultBrandContext.colors.surface,
50
- surface: merged.surface ?? brandUtils.defaultBrandContext.colors.background,
51
- foreground: merged.foreground ?? brandUtils.defaultBrandContext.colors.foreground,
52
- muted: merged.muted ?? brandUtils.defaultBrandContext.colors.muted,
53
- border: merged.border ?? brandUtils.defaultBrandContext.colors.border,
48
+ name: merged.name ?? defaultBrandContext.name,
49
+ background: merged.background ?? defaultBrandContext.colors.surface,
50
+ surface: merged.surface ?? defaultBrandContext.colors.background,
51
+ foreground: merged.foreground ?? defaultBrandContext.colors.foreground,
52
+ muted: merged.muted ?? defaultBrandContext.colors.muted,
53
+ border: merged.border ?? defaultBrandContext.colors.border,
54
54
  ...(tagline ? { tagline } : {}),
55
55
  ...(merged.logoUrl ? { logoUrl: merged.logoUrl } : {}),
56
56
  ...(merged.website ? { website: merged.website } : {}),
@@ -98,7 +98,7 @@ export const EmailBody = ({ body, brand: brandInput }) => {
98
98
  backgroundColor: theme.background,
99
99
  borderRadius: "5px",
100
100
  color: theme.foreground,
101
- fontFamily: brandUtils.defaultBrandContext.typography.mono,
101
+ fontFamily: defaultBrandContext.typography.mono,
102
102
  fontSize: "13px",
103
103
  padding: "2px 5px",
104
104
  },
@@ -106,7 +106,7 @@ export const EmailBody = ({ body, brand: brandInput }) => {
106
106
  backgroundColor: theme.foreground,
107
107
  borderRadius: "10px",
108
108
  color: theme.surface,
109
- fontFamily: brandUtils.defaultBrandContext.typography.mono,
109
+ fontFamily: defaultBrandContext.typography.mono,
110
110
  fontSize: "13px",
111
111
  lineHeight: "1.55",
112
112
  margin: "20px 0",
@@ -207,4 +207,4 @@ export const EmailDocument = (props) => {
207
207
  };
208
208
  return (_jsxs(Html, { lang: "en", children: [_jsx(Head, {}), _jsx(Preview, { children: props.preview ?? props.subject ?? "Message" }), _jsx(Body, { style: pageStyle, children: _jsx(EmailCard, { ...props }) })] }));
209
209
  };
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBRSxVQUFVLEVBQXFCLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUNMLElBQUksRUFDSixNQUFNLEVBQ04sU0FBUyxFQUNULElBQUksRUFDSixPQUFPLEVBQ1AsRUFBRSxFQUNGLElBQUksRUFDSixHQUFHLEVBQ0gsSUFBSSxFQUNKLFFBQVEsRUFDUixPQUFPLEVBQ1AsR0FBRyxFQUNILE9BQU8sRUFDUCxJQUFJLEdBQ0wsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQW1DbkUsU0FBUyxvQkFBb0IsQ0FBQyxLQUF5QjtJQUNyRCxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0UsQ0FBQztBQUVELCtEQUErRDtBQUMvRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLE9BQXFCLEVBQWMsRUFBRTtJQUN6RSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ25FLE9BQU87UUFDTCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPO1FBQzlCLFFBQVEsRUFBRSxTQUFTO1FBQ25CLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUk7UUFDbkMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1FBQ2xCLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU87UUFDbEMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVTtRQUNs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RUFDUixLQUFDLE9BQU8sY0FBRSxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksU0FBUyxHQUFXLEVBQ2hFLEtBQUMsSUFBSSxJQUFDLEtBQUssRUFBRSxTQUFTLFlBQ3BCLEtBQUMsU0FBUyxPQUFLLEtBQUssR0FBSSxHQUNuQixJQUNGLENBQ1IsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVW5pdmVyc2FsIFJlYWN0IEVtYWlsIHByZXNlbnRhdGlvbiBmb3IgZGJ4LXRvb2xzIGVtYWlsIGZsb3dzLlxuICpcbiAqIFRoZSBkb2N1bWVudCBjb21wb25lbnQgcmVuZGVycyBvbiB0aGUgc2VydmVyIHRocm91Z2ggYEByZWFjdC1lbWFpbC9yZW5kZXJgO1xuICogdGhlIGJvZHkgY29tcG9uZW50IGlzIHJldXNlZCBkaXJlY3RseSBieSBicm93c2VyIGFwcHJvdmFsIGFuZCBjb21wb3NlIHZpZXdzLlxuICogQm90aCBkZWZhdWx0IHRvIHRoZSByZXBvc2l0b3J5IGJyYW5kIHdoaWxlIGFjY2VwdGluZyBhIGNvbnN1bWVyIG92ZXJyaWRlLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuaW1wb3J0IHsgYnJhbmRVdGlscywgdHlwZSBCcmFuZENvbnRleHQgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHtcbiAgQm9keSxcbiAgQ29sdW1uLFxuICBDb250YWluZXIsXG4gIEhlYWQsXG4gIEhlYWRpbmcsXG4gIEhyLFxuICBIdG1sLFxuICBJbWcsXG4gIExpbmssXG4gIE1hcmtkb3duLFxuICBQcmV2aWV3LFxuICBSb3csXG4gIFNlY3Rpb24sXG4gIFRleHQsXG59IGZyb20gXCJAcmVhY3QtZW1haWwvY29tcG9uZW50c1wiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBkYnhUb29sc0VtYWlsQXNzZXREYXRhVXJscyB9IGZyb20gXCIuL2dlbmVyYXRlZC9hc3NldHMudHNcIjtcblxuLyoqIEVtYWlsLXNhZmUgYnJhbmQgdmFsdWVzIHVzZWQgYnkgdGhlIFJlYWN0IEVtYWlsIHRlbXBsYXRlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWFpbEJyYW5kIHtcbiAgYWNjZW50OiBzdHJpbmc7XG4gIG9uQWNjZW50Pzogc3RyaW5nO1xuICBmb250RmFtaWx5OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGxvZ29Vcmw/OiBzdHJpbmc7XG4gIGJhY2tncm91bmQ/OiBzdHJpbmc7XG4gIHN1cmZhY2U/OiBzdHJpbmc7XG4gIGZvcmVncm91bmQ/OiBzdHJpbmc7XG4gIG11dGVkPzogc3RyaW5nO1xuICBib3JkZXI/OiBzdHJpbmc7XG4gIHRhZ2xpbmU/OiBzdHJpbmc7XG4gIHdlYnNpdGU/OiBzdHJpbmc7XG59XG5cbi8qKiBDb21wbGV0ZSB2YWx1ZXMgYWZ0ZXIgYXBwbHlpbmcgdGhlIGRieC10b29scyBkZWZhdWx0IGJyYW5kLiAqL1xuZXhwb3J0IHR5cGUgUmVzb2x2ZWRFbWFpbEJyYW5kID0gUmVxdWlyZWQ8XG4gIFBpY2s8XG4gICAgRW1haWxCcmFuZCxcbiAgICB8IFwiYWNjZW50XCJcbiAgICB8IFwib25BY2NlbnRcIlxuICAgIHwgXCJmb250RmFtaWx5XCJcbiAgICB8IFwibmFtZVwiXG4gICAgfCBcImJhY2tncm91bmRcIlxuICAgIHwgXCJzdXJmYWNlXCJcbiAgICB8IFwiZm9yZWdyb3VuZFwiXG4gICAgfCBcIm11dGVkXCJcbiAgICB8IFwiYm9yZGVyXCJcbiAgPlxuPiAmXG4gIFBpY2s8RW1haWxCcmFuZCwgXCJsb2dvVXJsXCIgfCBcInRhZ2xpbmVcIiB8IFwid2Vic2l0ZVwiPjtcblxuZnVuY3Rpb24gaXNSZW5kZXJhYmxlSW1hZ2VVcmwodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZhbHVlIGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgL14oPzpodHRwcz86fGRhdGE6fGNpZDopL2kudGVzdCh2YWx1ZSk7XG59XG5cbi8qKiBQcm9qZWN0IGEgcG9ydGFibGUgYnJhbmQgY29udGV4dCBpbnRvIGVtYWlsLXNhZmUgdmFsdWVzLiAqL1xuZXhwb3J0IGNvbnN0IGVtYWlsQnJhbmRGcm9tQ29udGV4dCA9IChjb250ZXh0OiBCcmFuZENvbnRleHQpOiBFbWFpbEJyYW5kID0+IHtcbiAgY29uc3QgbG9nbyA9IGNvbnRleHQuYXNzZXRzLmxvZ28uZGFyayA/PyBjb250ZXh0LmFzc2V0cy5sb2dvLmxpZ2h0O1xuICByZXR1cm4ge1xuICAgIGFjY2VudDogY29udGV4dC5jb2xvcnMucHJpbWFyeSxcbiAgICBvbkFjY2VudDogXCIjZmZmZmZmXCIsXG4gICAgZm9udEZhbWlseTogY29udGV4dC50eXBvZ3JhcGh5LnNhbnMsXG4gICAgbmFtZTogY29udGV4dC5uYW1lLFxuICAgIGJhY2tncm91bmQ6IGNvbnRleHQuY29sb3JzLnN1cmZhY2UsXG4gICAgc3VyZmFjZTogY29udGV4dC5jb2xvcnMuYmFja2dyb3VuZCxcbiAgICBmb3JlZ3JvdW5kOiBjb250ZXh0LmNvbG9ycy5mb3JlZ3JvdW5kLFxuICAgIG11dGVkOiBjb250ZXh0LmNvbG9ycy5tdXRlZCxcbiAgICBib3JkZXI6IGNvbnRleHQuY29sb3JzLmJvcmRlcixcbiAgICAuLi4oY29udGV4dC50YWdsaW5lID8geyB0YWdsaW5lOiBjb250ZXh0LnRhZ2xpbmUgfSA6IHt9KSxcbiAgICB3ZWJzaXRlOiBjb250ZXh0LmxpbmtzLndlYnNpdGUsXG4gICAgLi4uKGlzUmVuZGVyYWJsZUltYWdlVXJsKGxvZ28pID8geyBsb2dvVXJsOiBsb2dvIH0gOiB7fSksXG4gIH07XG59O1xuXG4vKiogVGhlIHJlcG9zaXRvcnkgYnJhbmQgdXNlZCBieSBldmVyeSBlbWFpbCB1bmxlc3MgZXhwbGljaXRseSBvdmVycmlkZGVuLiAqL1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRFbWFpbEJyYW5kOiBFbWFpbEJyYW5kID0ge1xuICAuLi5lbWFpbEJyYW5kRnJvbUNvbnRleHQoYnJhbmRVdGlscy5kZWZhdWx0QnJhbmRDb250ZXh0KSxcbiAgbG9nb1VybDogZGJ4VG9vbHNFbWFpbEFzc2V0RGF0YVVybHMubG9nbyxcbn07XG5cbi8qKiBNZXJnZSBhIHBhcnRpYWwgY29uc3VtZXIgYnJhbmQgb3ZlciB0aGUgcmVwb3NpdG9yeSBkZWZhdWx0LiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVFbWFpbEJyYW5kID0gKGlucHV0PzogRW1haWxCcmFuZCk6IFJlc29sdmVkRW1haWxCcmFuZCA9PiB7XG4gIGNvbnN0IG1lcmdlZCA9IHsgLi4uZGVmYXVsdEVtYWlsQnJhbmQsIC4uLmlucHV0IH07XG4gIGNvbnN0IHRhZ2xpbmUgPSBpbnB1dCA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdEVtYWlsQnJhbmQudGFnbGluZSA6IGlucHV0LnRhZ2xpbmU7XG4gIHJldHVybiB7XG4gICAgYWNjZW50OiBtZXJnZWQuYWNjZW50LFxuICAgIG9uQWNjZW50OiBtZXJnZWQub25BY2NlbnQgPz8gXCIjZmZmZmZmXCIsXG4gICAgZm9udEZhbWlseTogbWVyZ2VkLmZvbnRGYW1pbHksXG4gICAgbmFtZTogbWVyZ2VkLm5hbWUgPz8gYnJhbmRVdGlscy5kZWZhdWx0QnJhbmRDb250ZXh0Lm5hbWUsXG4gICAgYmFja2dyb3VuZDogbWVyZ2VkLmJhY2tncm91bmQgPz8gYnJhbmRVdGlscy5kZWZhdWx0QnJhbmRDb250ZXh0LmNvbG9ycy5zdXJmYWNlLFxuICAgIHN1cmZhY2U6IG1lcmdlZC5zdXJmYWNlID8/IGJyYW5kVXRpbHMuZGVmYXVsdEJyYW5kQ29udGV4dC5jb2xvcnMuYmFja2dyb3VuZCxcbiAgICBmb3JlZ3JvdW5kOiBtZXJnZWQuZm9yZWdyb3VuZCA/PyBicmFuZFV0aWxzLmRlZmF1bHRCcmFuZENvbnRleHQuY29sb3JzLmZvcmVncm91bmQsXG4gICAgbXV0ZWQ6IG1lcmdlZC5tdXRlZCA/PyBicmFuZFV0aWxzLmRlZmF1bHRCcmFuZENvbnRleHQuY29sb3JzLm11dGVkLFxuICAgIGJvcmRlcjogbWVyZ2VkLmJvcmRlciA/PyBicmFuZFV0aWxzLmRlZmF1bHRCcmFuZENvbnRleHQuY29sb3JzLmJvcmRlcixcbiAgICAuLi4odGFnbGluZSA/IHsgdGFnbGluZSB9IDoge30pLFxuICAgIC4uLihtZXJnZWQubG9nb1VybCA/IHsgbG9nb1VybDogbWVyZ2VkLmxvZ29VcmwgfSA6IHt9KSxcbiAgICAuLi4obWVyZ2VkLndlYnNpdGUgPyB7IHdlYnNpdGU6IG1lcmdlZC53ZWJzaXRlIH0gOiB7fSksXG4gIH07XG59O1xuXG4vKiogTm9ybWFsaXplIGluZGVudGF0aW9uIGluIGF1dGhvcmVkIGNvbnRlbnQgd2l0aG91dCBjb25zdHJhaW5pbmcgaXRzIHN0cnVjdHVyZS4gKi9cbmV4cG9ydCBjb25zdCBub3JtYWxpemVFbWFpbE1hcmtkb3duID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBsaW5lcyA9IHZhbHVlLnJlcGxhY2UoL1xcclxcbj8vZywgXCJcXG5cIikuc3BsaXQoXCJcXG5cIik7XG4gIHdoaWxlIChsaW5lc1swXT8udHJpbSgpID09PSBcIlwiKSBsaW5lcy5zaGlmdCgpO1xuICB3aGlsZSAobGluZXMuYXQoLTEpPy50cmltKCkgPT09IFwiXCIpIGxpbmVzLnBvcCgpO1xuICBjb25zdCBub25CbGFuayA9IGxpbmVzLmZpbHRlcigobGluZSkgPT4gbGluZS50cmltKCkubGVuZ3RoID4gMCk7XG4gIGNvbnN0IGluZGVudCA9IG5vbkJsYW5rLnJlZHVjZSgobWluaW11bSwgbGluZSkgPT4ge1xuICAgIGNvbnN0IHdpZHRoID0gbGluZS5tYXRjaCgvXlxccyovKT8uWzBdLmxlbmd0aCA/PyAwO1xuICAgIHJldHVybiBNYXRoLm1pbihtaW5pbXVtLCB3aWR0aCk7XG4gIH0sIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKGluZGVudCkgfHwgaW5kZW50ID09PSAwKSByZXR1cm4gbGluZXMuam9pbihcIlxcblwiKTtcbiAgcmV0dXJuIGxpbmVzLm1hcCgobGluZSkgPT4gbGluZS5zbGljZShNYXRoLm1pbihpbmRlbnQsIGxpbmUubGVuZ3RoKSkpLmpvaW4oXCJcXG5cIik7XG59O1xuXG4vKiogUHJvcHMgZm9yIHRoZSByZXVzYWJsZSBtZXNzYWdlLWJvZHkgY29tcG9uZW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWFpbEJvZHlQcm9wcyB7XG4gIGJvZHk6IHN0cmluZztcbiAgYnJhbmQ/OiBFbWFpbEJyYW5kO1xufVxuXG4vKiogUmVuZGVyIHJpY2ggbWVzc2FnZSBjb250ZW50IHdpdGggZW1haWwtY2xpZW50LXNhZmUgaW5saW5lIHN0eWxlcy4gKi9cbmV4cG9ydCBjb25zdCBFbWFpbEJvZHkgPSAoeyBib2R5LCBicmFuZDogYnJhbmRJbnB1dCB9OiBFbWFpbEJvZHlQcm9wcykgPT4ge1xuICBjb25zdCB0aGVtZSA9IHJlc29sdmVFbWFpbEJyYW5kKGJyYW5kSW5wdXQpO1xuICByZXR1cm4gKFxuICAgIDxNYXJrZG93blxuICAgICAgbWFya2Rvd25Db250YWluZXJTdHlsZXM9e3tcbiAgICAgICAgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsXG4gICAgICAgIGZvbnRGYW1pbHk6IHRoZW1lLmZvbnRGYW1pbHksXG4gICAgICAgIGZvbnRTaXplOiBcIjE1cHhcIixcbiAgICAgICAgbGluZUhlaWdodDogXCIxLjY1XCIsXG4gICAgICB9fVxuICAgICAgbWFya2Rvd25DdXN0b21TdHlsZXM9e3tcbiAgICAgICAgaDE6IHsgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsIGZvbnRTaXplOiBcIjMwcHhcIiwgbGluZUhlaWdodDogXCIxLjJcIiwgbWFyZ2luOiBcIjAgMCAyMHB4XCIgfSxcbiAgICAgICAgaDI6IHsgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsIGZvbnRTaXplOiBcIjIzcHhcIiwgbGluZUhlaWdodDogXCIxLjNcIiwgbWFyZ2luOiBcIjI4cHggMCAxMnB4XCIgfSxcbiAgICAgICAgaDM6IHsgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsIGZvbnRTaXplOiBcIjE4cHhcIiwgbGluZUhlaWdodDogXCIxLjRcIiwgbWFyZ2luOiBcIjI0cHggMCAxMHB4XCIgfSxcbiAgICAgICAgcDogeyBtYXJnaW46IFwiMCAwIDE2cHhcIiB9LFxuICAgICAgICBsaW5rOiB7IGNvbG9yOiB0aGVtZS5hY2NlbnQsIGZvbnRXZWlnaHQ6IDYwMCwgdGV4dERlY29yYXRpb246IFwidW5kZXJsaW5lXCIgfSxcbiAgICAgICAgYmxvY2tRdW90ZToge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICAgICAgICBib3JkZXJMZWZ0OiBgNHB4IHNvbGlkICR7dGhlbWUuYWNjZW50fWAsXG4gICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjAgMTBweCAxMHB4IDBcIixcbiAgICAgICAgICBjb2xvcjogdGhlbWUuZm9yZWdyb3VuZCxcbiAgICAgICAgICBtYXJnaW46IFwiMjBweCAwXCIsXG4gICAgICAgICAgcGFkZGluZzogXCIxNHB4IDE4cHhcIixcbiAgICAgICAgfSxcbiAgICAgICAgY29kZUlubGluZToge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICAgICAgICBib3JkZXJSYWRpdXM6IFwiNXB4XCIsXG4gICAgICAgICAgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsXG4gICAgICAgICAgZm9udEZhbWlseTogYnJhbmRVdGlscy5kZWZhdWx0QnJhbmRDb250ZXh0LnR5cG9ncmFwaHkubW9ubyxcbiAgICAgICAgICBmb250U2l6ZTogXCIxM3B4XCIsXG4gICAgICAgICAgcGFkZGluZzogXCIycHggNXB4XCIsXG4gICAgICAgIH0sXG4gICAgICAgIGNvZGVCbG9jazoge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuZm9yZWdyb3VuZCxcbiAgICAgICAgICBib3JkZXJSYWRpdXM6IFwiMTBweFwiLFxuICAgICAgICAgIGNvbG9yOiB0aGVtZS5zdXJmYWNlLFxuICAgICAgICAgIGZvbnRGYW1pbHk6IGJyYW5kVXRpbHMuZGVmYXVsdEJyYW5kQ29udGV4dC50eXBvZ3JhcGh5Lm1vbm8sXG4gICAgICAgICAgZm9udFNpemU6IFwiMTNweFwiLFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IFwiMS41NVwiLFxuICAgICAgICAgIG1hcmdpbjogXCIyMHB4IDBcIixcbiAgICAgICAgICBwYWRkaW5nOiBcIjE2cHhcIixcbiAgICAgICAgfSxcbiAgICAgICAgaHI6IHsgYm9yZGVyQ29sb3I6IHRoZW1lLmJvcmRlciwgbWFyZ2luOiBcIjI4cHggMFwiIH0sXG4gICAgICAgIGltYWdlOiB7IGJvcmRlclJhZGl1czogXCIxMHB4XCIsIGhlaWdodDogXCJhdXRvXCIsIG1heFdpZHRoOiBcIjEwMCVcIiB9LFxuICAgICAgICBsaTogeyBtYXJnaW46IFwiNnB4IDBcIiB9LFxuICAgICAgICB0YWJsZTogeyBib3JkZXJDb2xsYXBzZTogXCJjb2xsYXBzZVwiLCBtYXJnaW46IFwiMjBweCAwXCIsIHdpZHRoOiBcIjEwMCVcIiB9LFxuICAgICAgICB0aDoge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICAgICAgICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS5ib3JkZXJ9YCxcbiAgICAgICAgICBwYWRkaW5nOiBcIjlweCAxMnB4XCIsXG4gICAgICAgICAgdGV4dEFsaWduOiBcImxlZnRcIixcbiAgICAgICAgfSxcbiAgICAgICAgdGQ6IHtcbiAgICAgICAgICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS5ib3JkZXJ9YCxcbiAgICAgICAgICBwYWRkaW5nOiBcIjlweCAxMnB4XCIsXG4gICAgICAgICAgdGV4dEFsaWduOiBcImxlZnRcIixcbiAgICAgICAgfSxcbiAgICAgIH19XG4gICAgPlxuICAgICAge25vcm1hbGl6ZUVtYWlsTWFya2Rvd24oYm9keSl9XG4gICAgPC9NYXJrZG93bj5cbiAgKTtcbn07XG5cbi8qKiBQcm9wcyBmb3IgdGhlIGNvbXBsZXRlIFJlYWN0IEVtYWlsIGRvY3VtZW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWFpbERvY3VtZW50UHJvcHMgZXh0ZW5kcyBFbWFpbEJvZHlQcm9wcyB7XG4gIHN1YmplY3Q/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBWaXNpYmxlIGhlYWRpbmcgaW5zaWRlIHRoZSBlbWFpbCBjYXJkLiBEZWZhdWx0cyB0byB0aGUgdHJhbnNwb3J0IHN1YmplY3QuXG4gICAqIFBhc3MgYSBzaG9ydGVyIGhlYWRpbmcgd2hlbiB0aGUgc3ViamVjdCBjYXJyaWVzIG5vdGlmaWNhdGlvbi1zcGVjaWZpY1xuICAgKiBkZXRhaWxzLCBzdWNoIGFzIGEgb25lLXRpbWUgY29kZS5cbiAgICovXG4gIGhlYWRpbmc/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBlbnZlbG9wZSByb3dzIHJlbmRlcmVkIGFib3ZlIHRoZSBib2R5IChGcm9tIC8gVG8gLyBDYyAvIOKApikuIEtlcHQgZm9yXG4gICAqIGxvY2FsIG91dGJveCBwcmV2aWV3cyB0aGF0IGRlbGliZXJhdGVseSBzaG93IHRoZSB3aXJlIGVudmVsb3BlOyBkZWxpdmVyZWRcbiAgICogU01UUCBtYWlsIGFuZCBicm93c2VyIGFwcHJvdmFsL2NvbXBvc2UgcHJldmlld3MgbGVhdmUgdGhpcyB1bnNldCDigJQgdGhvc2VcbiAgICogc3VyZmFjZXMgcHV0IHJlY2lwaWVudHMgYW5kIGF0dGFjaG1lbnRzIGluIGNsaWVudCBjaHJvbWUgaW5zdGVhZC5cbiAgICovXG4gIGhlYWRlcnM/OiBSZWFkb25seUFycmF5PHJlYWRvbmx5IFtzdHJpbmcsIHN0cmluZ10+O1xuICBmb290ZXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEcmF3IHRoZSBjYXJkJ3Mgb3duIGZyYW1lOiByb3VuZGVkIGNvcm5lcnMsIGJvcmRlciwgZHJvcCBzaGFkb3csIGFuZCB0aGVcbiAgICogNjIwcHggcmVhZGluZyB3aWR0aC4gRGVsaXZlcmVkIG1haWwga2VlcHMgaXQsIGJlY2F1c2UgdGhlIGNhcmQgZmxvYXRzIG9uIHRoZVxuICAgKiBjbGllbnQncyBwYWdlIGJhY2tncm91bmQgYW5kIHRoZSBmcmFtZSBpcyB3aGF0IHNlcGFyYXRlcyB0aGUgdHdvLlxuICAgKlxuICAgKiBUdXJuIGl0IG9mZiB3aGVuIHRoZSBjYXJkIGFscmVhZHkgc2l0cyBpbnNpZGUgYSBzdXJmYWNlIHRoYXQgZnJhbWVzIGl0IC0gYVxuICAgKiBicm93c2VyIHByZXZpZXcncyByZWFkaW5nIHBhbmUgLSBzbyB0aGUgdHdvIGZyYW1lcyBkbyBub3QgbmVzdCBpbnRvIGEgcm91bmRlZFxuICAgKiBjYXJkIGluc2lkZSBhIHJvdW5kZWQgY2FyZC5cbiAgICovXG4gIGZyYW1lZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQcmVoZWFkZXIgdGV4dDogdGhlIHNuaXBwZXQgYSBjbGllbnQgc2hvd3MgbmV4dCB0byB0aGUgc3ViamVjdCBpbiBhIGxpc3QsIGFuZFxuICAgKiAtIHRoZSByZWFzb24gdGhpcyBpcyBhIHByb3AgLSB0aGUgdGV4dCBhIG1vYmlsZSBPUyBwdXRzIGluIHRoZSBQVVNIXG4gICAqIE5PVElGSUNBVElPTiBib2R5LlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byB0aGUgc3ViamVjdC4gU2V0IGl0IHdoZW4gdGhlIG5vdGlmaWNhdGlvbiBzaG91bGQgc2F5IHNvbWV0aGluZyB0aGVcbiAgICogc3ViamVjdCBkb2VzIG5vdC4gT25lLXRpbWUtY29kZSBtYWlsIGlzIHRoZSBjYXNlIHRoYXQgbW90aXZhdGVkIGl0OiBpT1MgcmVhZHNcbiAgICogYW4gaW5jb21pbmcgbm90aWZpY2F0aW9uJ3MgdGV4dCB0byBvZmZlciBhbiBhdXRvZmlsbCBjb2RlIChuYXRpdmVseSBmb3IgTWFpbFxuICAgKiBhbmQgTWVzc2FnZXMsIGFuZCBzaW5jZSBpT1MgMjYgZm9yIGFueSBhcHAncyBub3RpZmljYXRpb24sIEdtYWlsIGluY2x1ZGVkKSwgc29cbiAgICogYSBjb2RlIHRoYXQgYXBwZWFycyBvbmx5IGluIHRoZSBCT0RZIGlzIG5ldmVyIHNlZW4gLSB0aGUgbm90aWZpY2F0aW9uIGNhcnJpZXNcbiAgICogdGhlIHN1YmplY3QgYW5kIHRoaXMgc25pcHBldCwgbm90aGluZyBtb3JlLlxuICAgKi9cbiAgcHJldmlldz86IHN0cmluZztcbn1cblxuZnVuY3Rpb24gQnJhbmRNYXJrKHsgdGhlbWUgfTogeyB0aGVtZTogUmVzb2x2ZWRFbWFpbEJyYW5kIH0pOiBSZWFjdC5SZWFjdE5vZGUge1xuICBpZiAodGhlbWUubG9nb1VybCkge1xuICAgIHJldHVybiAoXG4gICAgICA8SW1nXG4gICAgICAgIHNyYz17dGhlbWUubG9nb1VybH1cbiAgICAgICAgYWx0PXt0aGVtZS5uYW1lfVxuICAgICAgICBoZWlnaHQ9XCIzNFwiXG4gICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IFwiYmxvY2tcIiwgaGVpZ2h0OiBcIjM0cHhcIiwgd2lkdGg6IFwiYXV0b1wiIH19XG4gICAgICAvPlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIChcbiAgICA8VGV4dFxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgY29sb3I6IHRoZW1lLm9uQWNjZW50LFxuICAgICAgICBmb250U2l6ZTogXCIyMHB4XCIsXG4gICAgICAgIGZvbnRXZWlnaHQ6IDgwMCxcbiAgICAgICAgbGV0dGVyU3BhY2luZzogXCItMC4zcHhcIixcbiAgICAgICAgbWFyZ2luOiAwLFxuICAgICAgfX1cbiAgICA+XG4gICAgICB7dGhlbWUubmFtZX1cbiAgICA8L1RleHQ+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEVudmVsb3BlSGVhZGVycyh7XG4gIGhlYWRlcnMsXG4gIHRoZW1lLFxufToge1xuICBoZWFkZXJzOiBFbWFpbERvY3VtZW50UHJvcHNbXCJoZWFkZXJzXCJdO1xuICB0aGVtZTogUmVzb2x2ZWRFbWFpbEJyYW5kO1xufSkge1xuICBpZiAoIWhlYWRlcnM/Lmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiAoXG4gICAgPFNlY3Rpb25cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjEwcHhcIixcbiAgICAgICAgbWFyZ2luOiBcIjAgMCAyNHB4XCIsXG4gICAgICAgIHBhZGRpbmc6IFwiMTRweCAxNnB4XCIsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtoZWFkZXJzLm1hcCgoW2xhYmVsLCB2YWx1ZV0pID0+IChcbiAgICAgICAgPFJvdyBrZXk9e2Ake2xhYmVsfToke3ZhbHVlfWB9PlxuICAgICAgICAgIDxDb2x1bW5cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGNvbG9yOiB0aGVtZS5tdXRlZCxcbiAgICAgICAgICAgICAgZm9udFNpemU6IFwiMTJweFwiLFxuICAgICAgICAgICAgICBmb250V2VpZ2h0OiA3MDAsXG4gICAgICAgICAgICAgIHBhZGRpbmc6IFwiM3B4IDEycHggM3B4IDBcIixcbiAgICAgICAgICAgICAgd2lkdGg6IFwiNzBweFwiLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgPC9Db2x1bW4+XG4gICAgICAgICAgPENvbHVtbiBzdHlsZT17eyBjb2xvcjogdGhlbWUuZm9yZWdyb3VuZCwgZm9udFNpemU6IFwiMTNweFwiLCBwYWRkaW5nOiBcIjNweCAwXCIgfX0+XG4gICAgICAgICAgICB7dmFsdWV9XG4gICAgICAgICAgPC9Db2x1bW4+XG4gICAgICAgIDwvUm93PlxuICAgICAgKSl9XG4gICAgPC9TZWN0aW9uPlxuICApO1xufVxuXG4vKiogQnJhbmRlZCBtZXNzYWdlIGNhcmQgc2hhcmVkIGJ5IHRoZSBmdWxsIGRvY3VtZW50IGFuZCBicm93c2VyIHByZXZpZXdzLiAqL1xuZXhwb3J0IGNvbnN0IEVtYWlsQ2FyZCA9ICh7XG4gIGJvZHksXG4gIGhlYWRpbmcsXG4gIGhlYWRlcnMsXG4gIHN1YmplY3QsXG4gIGZvb3RlcixcbiAgZnJhbWVkID0gdHJ1ZSxcbiAgYnJhbmQ6IGJyYW5kSW5wdXQsXG59OiBFbWFpbERvY3VtZW50UHJvcHMpID0+IHtcbiAgY29uc3QgdGhlbWUgPSByZXNvbHZlRW1haWxCcmFuZChicmFuZElucHV0KTtcbiAgY29uc3QgdmlzaWJsZUhlYWRpbmcgPSBoZWFkaW5nID8/IHN1YmplY3Q7XG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lclxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5zdXJmYWNlLFxuICAgICAgICBmb250RmFtaWx5OiB0aGVtZS5mb250RmFtaWx5LFxuICAgICAgICBtYXJnaW46IFwiMCBhdXRvXCIsXG4gICAgICAgIC4uLihmcmFtZWRcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgYm9yZGVyOiBgMXB4IHNvbGlkICR7dGhlbWUuYm9yZGVyfWAsXG4gICAgICAgICAgICAgIGJvcmRlclJhZGl1czogXCIxNnB4XCIsXG4gICAgICAgICAgICAgIGJveFNoYWRvdzogXCIwIDhweCAzMHB4IHJnYmEoMjcsNDksNTcsMC4wOClcIixcbiAgICAgICAgICAgICAgbWF4V2lkdGg6IFwiNjIwcHhcIixcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHsgbWF4V2lkdGg6IFwiMTAwJVwiIH0pLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8U2VjdGlvblxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYWNjZW50LFxuICAgICAgICAgIC8vIFRoZSBjb3JuZXJzIGFyZSBzZXQgb24gdGhlIGJhbmQgaXRzZWxmIHJhdGhlciB0aGFuIGNsaXBwZWQgYnkgdGhlXG4gICAgICAgICAgLy8gY29udGFpbmVyOiBSZWFjdCBFbWFpbCByZW5kZXJzIHRoZSBjb250YWluZXIgYXMgYSA8dGFibGU+LCB3aGljaFxuICAgICAgICAgIC8vIGBvdmVyZmxvdzogaGlkZGVuYCBkb2VzIG5vdCByZWxpYWJseSBjbGlwLCBzbyB0aGUgYmFuZCBuZWVkcyBpdHMgb3duXG4gICAgICAgICAgLy8gcm91bmRlZCBjb3JuZXJzIHRvIHN0YXkgaW5zaWRlIHRoZSBjb250YWluZXIgZWRnZS5cbiAgICAgICAgICAuLi4oZnJhbWVkID8geyBib3JkZXJSYWRpdXM6IFwiMTVweCAxNXB4IDAgMFwiIH0gOiB7fSksXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxSb3c+XG4gICAgICAgICAgPENvbHVtbiBzdHlsZT17eyBwYWRkaW5nOiBcIjI2cHggMzZweFwiIH19PlxuICAgICAgICAgICAgPEJyYW5kTWFyayB0aGVtZT17dGhlbWV9IC8+XG4gICAgICAgICAgPC9Db2x1bW4+XG4gICAgICAgIDwvUm93PlxuICAgICAgPC9TZWN0aW9uPlxuICAgICAgPFNlY3Rpb24+XG4gICAgICAgIDxSb3c+XG4gICAgICAgICAgPENvbHVtbiBzdHlsZT17eyBwYWRkaW5nOiBcIjM4cHggMzhweCAyOHB4XCIgfX0+XG4gICAgICAgICAgICB7dmlzaWJsZUhlYWRpbmcgPyAoXG4gICAgICAgICAgICAgIDxIZWFkaW5nXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiB0aGVtZS5mb3JlZ3JvdW5kLFxuICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMjhweFwiLFxuICAgICAgICAgICAgICAgICAgbGV0dGVyU3BhY2luZzogXCItMC41cHhcIixcbiAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IFwiMS4yXCIsXG4gICAgICAgICAgICAgICAgICBtYXJnaW46IFwiMCAwIDI0cHhcIixcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3Zpc2libGVIZWFkaW5nfVxuICAgICAgICAgICAgICA8L0hlYWRpbmc+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDxFbnZlbG9wZUhlYWRlcnMgaGVhZGVycz17aGVhZGVyc30gdGhlbWU9e3RoZW1lfSAvPlxuICAgICAgICAgICAgPEVtYWlsQm9keSBib2R5PXtib2R5fSBicmFuZD17dGhlbWV9IC8+XG4gICAgICAgICAgPC9Db2x1bW4+XG4gICAgICAgIDwvUm93PlxuICAgICAgPC9TZWN0aW9uPlxuICAgICAgPEhyIHN0eWxlPXt7IGJvcmRlckNvbG9yOiB0aGVtZS5ib3JkZXIsIG1hcmdpbjogMCB9fSAvPlxuICAgICAgPFNlY3Rpb24+XG4gICAgICAgIDxSb3c+XG4gICAgICAgICAgPENvbHVtbiBzdHlsZT17eyBwYWRkaW5nOiBcIjI0cHggMzhweCAzMHB4XCIgfX0+XG4gICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGVtZS5tdXRlZCxcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxMnB4XCIsXG4gICAgICAgICAgICAgICAgbGluZUhlaWdodDogXCIxLjU1XCIsXG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7Zm9vdGVyID8/IHRoZW1lLnRhZ2xpbmV9e1wiIFwifVxuICAgICAgICAgICAgICB7dGhlbWUud2Vic2l0ZSA/IChcbiAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgaHJlZj17dGhlbWUud2Vic2l0ZX1cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiB0aGVtZS5hY2NlbnQsXG4gICAgICAgICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uOiBcIm5vbmVcIixcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3RoZW1lLm5hbWV9XG4gICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L0NvbHVtbj5cbiAgICAgICAgPC9Sb3c+XG4gICAgICA8L1NlY3Rpb24+XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuXG4vKiogQ29tcGxldGUgcmVzcG9uc2l2ZSwgYnJhbmRlZCBSZWFjdCBFbWFpbCBkb2N1bWVudC4gKi9cbmV4cG9ydCBjb25zdCBFbWFpbERvY3VtZW50ID0gKHByb3BzOiBFbWFpbERvY3VtZW50UHJvcHMpID0+IHtcbiAgY29uc3QgdGhlbWUgPSByZXNvbHZlRW1haWxCcmFuZChwcm9wcy5icmFuZCk7XG4gIGNvbnN0IHBhZ2VTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQsXG4gICAgZm9udEZhbWlseTogdGhlbWUuZm9udEZhbWlseSxcbiAgICBtYXJnaW46IDAsXG4gICAgcGFkZGluZzogXCIyOHB4IDEycHhcIixcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8SHRtbCBsYW5nPVwiZW5cIj5cbiAgICAgIDxIZWFkIC8+XG4gICAgICA8UHJldmlldz57cHJvcHMucHJldmlldyA/PyBwcm9wcy5zdWJqZWN0ID8/IFwiTWVzc2FnZVwifTwvUHJldmlldz5cbiAgICAgIDxCb2R5IHN0eWxlPXtwYWdlU3R5bGV9PlxuICAgICAgICA8RW1haWxDYXJkIHsuLi5wcm9wc30gLz5cbiAgICAgIDwvQm9keT5cbiAgICA8L0h0bWw+XG4gICk7XG59O1xuIl19
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBcUIsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRixPQUFPLEVBQ0wsSUFBSSxFQUNKLE1BQU0sRUFDTixTQUFTLEVBQ1QsSUFBSSxFQUNKLE9BQU8sRUFDUCxFQUFFLEVBQ0YsSUFBSSxFQUNKLEdBQUcsRUFDSCxJQUFJLEVBQ0osUUFBUSxFQUNSLE9BQU8sRUFDUCxHQUFHLEVBQ0gsT0FBTyxFQUNQLElBQUksR0FDTCxNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBbUNuRSxTQUFTLG9CQUFvQixDQUFDLEtBQXlCO0lBQ3JELE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3RSxDQUFDO0FBRUQsK0RBQStEO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsT0FBcUIsRUFBYyxFQUFFO0lBQ3pFLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDbkUsT0FBTztRQUNMLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU87UUFDOUIsUUFBUSxFQUFFLFNBQVM7UUFDbkIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSTtRQUNuQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7UUFDbEIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTztRQUNsQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVO1FB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QUMsS0FBSyxFQUFFLFNBQVMsWUFDcEIsS0FBQyxTQUFTLE9BQUssS0FBSyxHQUFJLEdBQ25CLElBQ0YsQ0FDUixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVbml2ZXJzYWwgUmVhY3QgRW1haWwgcHJlc2VudGF0aW9uIGZvciBkYngtdG9vbHMgZW1haWwgZmxvd3MuXG4gKlxuICogVGhlIGRvY3VtZW50IGNvbXBvbmVudCByZW5kZXJzIG9uIHRoZSBzZXJ2ZXIgdGhyb3VnaCBgQHJlYWN0LWVtYWlsL3JlbmRlcmA7XG4gKiB0aGUgYm9keSBjb21wb25lbnQgaXMgcmV1c2VkIGRpcmVjdGx5IGJ5IGJyb3dzZXIgYXBwcm92YWwgYW5kIGNvbXBvc2Ugdmlld3MuXG4gKiBCb3RoIGRlZmF1bHQgdG8gdGhlIHJlcG9zaXRvcnkgYnJhbmQgd2hpbGUgYWNjZXB0aW5nIGEgY29uc3VtZXIgb3ZlcnJpZGUuXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyB0eXBlIEJyYW5kQ29udGV4dCwgZGVmYXVsdEJyYW5kQ29udGV4dCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQge1xuICBCb2R5LFxuICBDb2x1bW4sXG4gIENvbnRhaW5lcixcbiAgSGVhZCxcbiAgSGVhZGluZyxcbiAgSHIsXG4gIEh0bWwsXG4gIEltZyxcbiAgTGluayxcbiAgTWFya2Rvd24sXG4gIFByZXZpZXcsXG4gIFJvdyxcbiAgU2VjdGlvbixcbiAgVGV4dCxcbn0gZnJvbSBcIkByZWFjdC1lbWFpbC9jb21wb25lbnRzXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGRieFRvb2xzRW1haWxBc3NldERhdGFVcmxzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkL2Fzc2V0cy50c1wiO1xuXG4vKiogRW1haWwtc2FmZSBicmFuZCB2YWx1ZXMgdXNlZCBieSB0aGUgUmVhY3QgRW1haWwgdGVtcGxhdGUuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtYWlsQnJhbmQge1xuICBhY2NlbnQ6IHN0cmluZztcbiAgb25BY2NlbnQ/OiBzdHJpbmc7XG4gIGZvbnRGYW1pbHk6IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgbG9nb1VybD86IHN0cmluZztcbiAgYmFja2dyb3VuZD86IHN0cmluZztcbiAgc3VyZmFjZT86IHN0cmluZztcbiAgZm9yZWdyb3VuZD86IHN0cmluZztcbiAgbXV0ZWQ/OiBzdHJpbmc7XG4gIGJvcmRlcj86IHN0cmluZztcbiAgdGFnbGluZT86IHN0cmluZztcbiAgd2Vic2l0ZT86IHN0cmluZztcbn1cblxuLyoqIENvbXBsZXRlIHZhbHVlcyBhZnRlciBhcHBseWluZyB0aGUgZGJ4LXRvb2xzIGRlZmF1bHQgYnJhbmQuICovXG5leHBvcnQgdHlwZSBSZXNvbHZlZEVtYWlsQnJhbmQgPSBSZXF1aXJlZDxcbiAgUGljazxcbiAgICBFbWFpbEJyYW5kLFxuICAgIHwgXCJhY2NlbnRcIlxuICAgIHwgXCJvbkFjY2VudFwiXG4gICAgfCBcImZvbnRGYW1pbHlcIlxuICAgIHwgXCJuYW1lXCJcbiAgICB8IFwiYmFja2dyb3VuZFwiXG4gICAgfCBcInN1cmZhY2VcIlxuICAgIHwgXCJmb3JlZ3JvdW5kXCJcbiAgICB8IFwibXV0ZWRcIlxuICAgIHwgXCJib3JkZXJcIlxuICA+XG4+ICZcbiAgUGljazxFbWFpbEJyYW5kLCBcImxvZ29VcmxcIiB8IFwidGFnbGluZVwiIHwgXCJ3ZWJzaXRlXCI+O1xuXG5mdW5jdGlvbiBpc1JlbmRlcmFibGVJbWFnZVVybCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAvXig/Omh0dHBzPzp8ZGF0YTp8Y2lkOikvaS50ZXN0KHZhbHVlKTtcbn1cblxuLyoqIFByb2plY3QgYSBwb3J0YWJsZSBicmFuZCBjb250ZXh0IGludG8gZW1haWwtc2FmZSB2YWx1ZXMuICovXG5leHBvcnQgY29uc3QgZW1haWxCcmFuZEZyb21Db250ZXh0ID0gKGNvbnRleHQ6IEJyYW5kQ29udGV4dCk6IEVtYWlsQnJhbmQgPT4ge1xuICBjb25zdCBsb2dvID0gY29udGV4dC5hc3NldHMubG9nby5kYXJrID8/IGNvbnRleHQuYXNzZXRzLmxvZ28ubGlnaHQ7XG4gIHJldHVybiB7XG4gICAgYWNjZW50OiBjb250ZXh0LmNvbG9ycy5wcmltYXJ5LFxuICAgIG9uQWNjZW50OiBcIiNmZmZmZmZcIixcbiAgICBmb250RmFtaWx5OiBjb250ZXh0LnR5cG9ncmFwaHkuc2FucyxcbiAgICBuYW1lOiBjb250ZXh0Lm5hbWUsXG4gICAgYmFja2dyb3VuZDogY29udGV4dC5jb2xvcnMuc3VyZmFjZSxcbiAgICBzdXJmYWNlOiBjb250ZXh0LmNvbG9ycy5iYWNrZ3JvdW5kLFxuICAgIGZvcmVncm91bmQ6IGNvbnRleHQuY29sb3JzLmZvcmVncm91bmQsXG4gICAgbXV0ZWQ6IGNvbnRleHQuY29sb3JzLm11dGVkLFxuICAgIGJvcmRlcjogY29udGV4dC5jb2xvcnMuYm9yZGVyLFxuICAgIC4uLihjb250ZXh0LnRhZ2xpbmUgPyB7IHRhZ2xpbmU6IGNvbnRleHQudGFnbGluZSB9IDoge30pLFxuICAgIHdlYnNpdGU6IGNvbnRleHQubGlua3Mud2Vic2l0ZSxcbiAgICAuLi4oaXNSZW5kZXJhYmxlSW1hZ2VVcmwobG9nbykgPyB7IGxvZ29Vcmw6IGxvZ28gfSA6IHt9KSxcbiAgfTtcbn07XG5cbi8qKiBUaGUgcmVwb3NpdG9yeSBicmFuZCB1c2VkIGJ5IGV2ZXJ5IGVtYWlsIHVubGVzcyBleHBsaWNpdGx5IG92ZXJyaWRkZW4uICovXG5leHBvcnQgY29uc3QgZGVmYXVsdEVtYWlsQnJhbmQ6IEVtYWlsQnJhbmQgPSB7XG4gIC4uLmVtYWlsQnJhbmRGcm9tQ29udGV4dChkZWZhdWx0QnJhbmRDb250ZXh0KSxcbiAgbG9nb1VybDogZGJ4VG9vbHNFbWFpbEFzc2V0RGF0YVVybHMubG9nbyxcbn07XG5cbi8qKiBNZXJnZSBhIHBhcnRpYWwgY29uc3VtZXIgYnJhbmQgb3ZlciB0aGUgcmVwb3NpdG9yeSBkZWZhdWx0LiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVFbWFpbEJyYW5kID0gKGlucHV0PzogRW1haWxCcmFuZCk6IFJlc29sdmVkRW1haWxCcmFuZCA9PiB7XG4gIGNvbnN0IG1lcmdlZCA9IHsgLi4uZGVmYXVsdEVtYWlsQnJhbmQsIC4uLmlucHV0IH07XG4gIGNvbnN0IHRhZ2xpbmUgPSBpbnB1dCA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdEVtYWlsQnJhbmQudGFnbGluZSA6IGlucHV0LnRhZ2xpbmU7XG4gIHJldHVybiB7XG4gICAgYWNjZW50OiBtZXJnZWQuYWNjZW50LFxuICAgIG9uQWNjZW50OiBtZXJnZWQub25BY2NlbnQgPz8gXCIjZmZmZmZmXCIsXG4gICAgZm9udEZhbWlseTogbWVyZ2VkLmZvbnRGYW1pbHksXG4gICAgbmFtZTogbWVyZ2VkLm5hbWUgPz8gZGVmYXVsdEJyYW5kQ29udGV4dC5uYW1lLFxuICAgIGJhY2tncm91bmQ6IG1lcmdlZC5iYWNrZ3JvdW5kID8/IGRlZmF1bHRCcmFuZENvbnRleHQuY29sb3JzLnN1cmZhY2UsXG4gICAgc3VyZmFjZTogbWVyZ2VkLnN1cmZhY2UgPz8gZGVmYXVsdEJyYW5kQ29udGV4dC5jb2xvcnMuYmFja2dyb3VuZCxcbiAgICBmb3JlZ3JvdW5kOiBtZXJnZWQuZm9yZWdyb3VuZCA/PyBkZWZhdWx0QnJhbmRDb250ZXh0LmNvbG9ycy5mb3JlZ3JvdW5kLFxuICAgIG11dGVkOiBtZXJnZWQubXV0ZWQgPz8gZGVmYXVsdEJyYW5kQ29udGV4dC5jb2xvcnMubXV0ZWQsXG4gICAgYm9yZGVyOiBtZXJnZWQuYm9yZGVyID8/IGRlZmF1bHRCcmFuZENvbnRleHQuY29sb3JzLmJvcmRlcixcbiAgICAuLi4odGFnbGluZSA/IHsgdGFnbGluZSB9IDoge30pLFxuICAgIC4uLihtZXJnZWQubG9nb1VybCA/IHsgbG9nb1VybDogbWVyZ2VkLmxvZ29VcmwgfSA6IHt9KSxcbiAgICAuLi4obWVyZ2VkLndlYnNpdGUgPyB7IHdlYnNpdGU6IG1lcmdlZC53ZWJzaXRlIH0gOiB7fSksXG4gIH07XG59O1xuXG4vKiogTm9ybWFsaXplIGluZGVudGF0aW9uIGluIGF1dGhvcmVkIGNvbnRlbnQgd2l0aG91dCBjb25zdHJhaW5pbmcgaXRzIHN0cnVjdHVyZS4gKi9cbmV4cG9ydCBjb25zdCBub3JtYWxpemVFbWFpbE1hcmtkb3duID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBsaW5lcyA9IHZhbHVlLnJlcGxhY2UoL1xcclxcbj8vZywgXCJcXG5cIikuc3BsaXQoXCJcXG5cIik7XG4gIHdoaWxlIChsaW5lc1swXT8udHJpbSgpID09PSBcIlwiKSBsaW5lcy5zaGlmdCgpO1xuICB3aGlsZSAobGluZXMuYXQoLTEpPy50cmltKCkgPT09IFwiXCIpIGxpbmVzLnBvcCgpO1xuICBjb25zdCBub25CbGFuayA9IGxpbmVzLmZpbHRlcigobGluZSkgPT4gbGluZS50cmltKCkubGVuZ3RoID4gMCk7XG4gIGNvbnN0IGluZGVudCA9IG5vbkJsYW5rLnJlZHVjZSgobWluaW11bSwgbGluZSkgPT4ge1xuICAgIGNvbnN0IHdpZHRoID0gbGluZS5tYXRjaCgvXlxccyovKT8uWzBdLmxlbmd0aCA/PyAwO1xuICAgIHJldHVybiBNYXRoLm1pbihtaW5pbXVtLCB3aWR0aCk7XG4gIH0sIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKGluZGVudCkgfHwgaW5kZW50ID09PSAwKSByZXR1cm4gbGluZXMuam9pbihcIlxcblwiKTtcbiAgcmV0dXJuIGxpbmVzLm1hcCgobGluZSkgPT4gbGluZS5zbGljZShNYXRoLm1pbihpbmRlbnQsIGxpbmUubGVuZ3RoKSkpLmpvaW4oXCJcXG5cIik7XG59O1xuXG4vKiogUHJvcHMgZm9yIHRoZSByZXVzYWJsZSBtZXNzYWdlLWJvZHkgY29tcG9uZW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWFpbEJvZHlQcm9wcyB7XG4gIGJvZHk6IHN0cmluZztcbiAgYnJhbmQ/OiBFbWFpbEJyYW5kO1xufVxuXG4vKiogUmVuZGVyIHJpY2ggbWVzc2FnZSBjb250ZW50IHdpdGggZW1haWwtY2xpZW50LXNhZmUgaW5saW5lIHN0eWxlcy4gKi9cbmV4cG9ydCBjb25zdCBFbWFpbEJvZHkgPSAoeyBib2R5LCBicmFuZDogYnJhbmRJbnB1dCB9OiBFbWFpbEJvZHlQcm9wcykgPT4ge1xuICBjb25zdCB0aGVtZSA9IHJlc29sdmVFbWFpbEJyYW5kKGJyYW5kSW5wdXQpO1xuICByZXR1cm4gKFxuICAgIDxNYXJrZG93blxuICAgICAgbWFya2Rvd25Db250YWluZXJTdHlsZXM9e3tcbiAgICAgICAgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsXG4gICAgICAgIGZvbnRGYW1pbHk6IHRoZW1lLmZvbnRGYW1pbHksXG4gICAgICAgIGZvbnRTaXplOiBcIjE1cHhcIixcbiAgICAgICAgbGluZUhlaWdodDogXCIxLjY1XCIsXG4gICAgICB9fVxuICAgICAgbWFya2Rvd25DdXN0b21TdHlsZXM9e3tcbiAgICAgICAgaDE6IHsgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsIGZvbnRTaXplOiBcIjMwcHhcIiwgbGluZUhlaWdodDogXCIxLjJcIiwgbWFyZ2luOiBcIjAgMCAyMHB4XCIgfSxcbiAgICAgICAgaDI6IHsgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsIGZvbnRTaXplOiBcIjIzcHhcIiwgbGluZUhlaWdodDogXCIxLjNcIiwgbWFyZ2luOiBcIjI4cHggMCAxMnB4XCIgfSxcbiAgICAgICAgaDM6IHsgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsIGZvbnRTaXplOiBcIjE4cHhcIiwgbGluZUhlaWdodDogXCIxLjRcIiwgbWFyZ2luOiBcIjI0cHggMCAxMHB4XCIgfSxcbiAgICAgICAgcDogeyBtYXJnaW46IFwiMCAwIDE2cHhcIiB9LFxuICAgICAgICBsaW5rOiB7IGNvbG9yOiB0aGVtZS5hY2NlbnQsIGZvbnRXZWlnaHQ6IDYwMCwgdGV4dERlY29yYXRpb246IFwidW5kZXJsaW5lXCIgfSxcbiAgICAgICAgYmxvY2tRdW90ZToge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICAgICAgICBib3JkZXJMZWZ0OiBgNHB4IHNvbGlkICR7dGhlbWUuYWNjZW50fWAsXG4gICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjAgMTBweCAxMHB4IDBcIixcbiAgICAgICAgICBjb2xvcjogdGhlbWUuZm9yZWdyb3VuZCxcbiAgICAgICAgICBtYXJnaW46IFwiMjBweCAwXCIsXG4gICAgICAgICAgcGFkZGluZzogXCIxNHB4IDE4cHhcIixcbiAgICAgICAgfSxcbiAgICAgICAgY29kZUlubGluZToge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICAgICAgICBib3JkZXJSYWRpdXM6IFwiNXB4XCIsXG4gICAgICAgICAgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsXG4gICAgICAgICAgZm9udEZhbWlseTogZGVmYXVsdEJyYW5kQ29udGV4dC50eXBvZ3JhcGh5Lm1vbm8sXG4gICAgICAgICAgZm9udFNpemU6IFwiMTNweFwiLFxuICAgICAgICAgIHBhZGRpbmc6IFwiMnB4IDVweFwiLFxuICAgICAgICB9LFxuICAgICAgICBjb2RlQmxvY2s6IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmZvcmVncm91bmQsXG4gICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjEwcHhcIixcbiAgICAgICAgICBjb2xvcjogdGhlbWUuc3VyZmFjZSxcbiAgICAgICAgICBmb250RmFtaWx5OiBkZWZhdWx0QnJhbmRDb250ZXh0LnR5cG9ncmFwaHkubW9ubyxcbiAgICAgICAgICBmb250U2l6ZTogXCIxM3B4XCIsXG4gICAgICAgICAgbGluZUhlaWdodDogXCIxLjU1XCIsXG4gICAgICAgICAgbWFyZ2luOiBcIjIwcHggMFwiLFxuICAgICAgICAgIHBhZGRpbmc6IFwiMTZweFwiLFxuICAgICAgICB9LFxuICAgICAgICBocjogeyBib3JkZXJDb2xvcjogdGhlbWUuYm9yZGVyLCBtYXJnaW46IFwiMjhweCAwXCIgfSxcbiAgICAgICAgaW1hZ2U6IHsgYm9yZGVyUmFkaXVzOiBcIjEwcHhcIiwgaGVpZ2h0OiBcImF1dG9cIiwgbWF4V2lkdGg6IFwiMTAwJVwiIH0sXG4gICAgICAgIGxpOiB7IG1hcmdpbjogXCI2cHggMFwiIH0sXG4gICAgICAgIHRhYmxlOiB7IGJvcmRlckNvbGxhcHNlOiBcImNvbGxhcHNlXCIsIG1hcmdpbjogXCIyMHB4IDBcIiwgd2lkdGg6IFwiMTAwJVwiIH0sXG4gICAgICAgIHRoOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5iYWNrZ3JvdW5kLFxuICAgICAgICAgIGJvcmRlcjogYDFweCBzb2xpZCAke3RoZW1lLmJvcmRlcn1gLFxuICAgICAgICAgIHBhZGRpbmc6IFwiOXB4IDEycHhcIixcbiAgICAgICAgICB0ZXh0QWxpZ246IFwibGVmdFwiLFxuICAgICAgICB9LFxuICAgICAgICB0ZDoge1xuICAgICAgICAgIGJvcmRlcjogYDFweCBzb2xpZCAke3RoZW1lLmJvcmRlcn1gLFxuICAgICAgICAgIHBhZGRpbmc6IFwiOXB4IDEycHhcIixcbiAgICAgICAgICB0ZXh0QWxpZ246IFwibGVmdFwiLFxuICAgICAgICB9LFxuICAgICAgfX1cbiAgICA+XG4gICAgICB7bm9ybWFsaXplRW1haWxNYXJrZG93bihib2R5KX1cbiAgICA8L01hcmtkb3duPlxuICApO1xufTtcblxuLyoqIFByb3BzIGZvciB0aGUgY29tcGxldGUgUmVhY3QgRW1haWwgZG9jdW1lbnQuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtYWlsRG9jdW1lbnRQcm9wcyBleHRlbmRzIEVtYWlsQm9keVByb3BzIHtcbiAgc3ViamVjdD86IHN0cmluZztcbiAgLyoqXG4gICAqIFZpc2libGUgaGVhZGluZyBpbnNpZGUgdGhlIGVtYWlsIGNhcmQuIERlZmF1bHRzIHRvIHRoZSB0cmFuc3BvcnQgc3ViamVjdC5cbiAgICogUGFzcyBhIHNob3J0ZXIgaGVhZGluZyB3aGVuIHRoZSBzdWJqZWN0IGNhcnJpZXMgbm90aWZpY2F0aW9uLXNwZWNpZmljXG4gICAqIGRldGFpbHMsIHN1Y2ggYXMgYSBvbmUtdGltZSBjb2RlLlxuICAgKi9cbiAgaGVhZGluZz86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGVudmVsb3BlIHJvd3MgcmVuZGVyZWQgYWJvdmUgdGhlIGJvZHkgKEZyb20gLyBUbyAvIENjIC8g4oCmKS4gS2VwdCBmb3JcbiAgICogbG9jYWwgb3V0Ym94IHByZXZpZXdzIHRoYXQgZGVsaWJlcmF0ZWx5IHNob3cgdGhlIHdpcmUgZW52ZWxvcGU7IGRlbGl2ZXJlZFxuICAgKiBTTVRQIG1haWwgYW5kIGJyb3dzZXIgYXBwcm92YWwvY29tcG9zZSBwcmV2aWV3cyBsZWF2ZSB0aGlzIHVuc2V0IOKAlCB0aG9zZVxuICAgKiBzdXJmYWNlcyBwdXQgcmVjaXBpZW50cyBhbmQgYXR0YWNobWVudHMgaW4gY2xpZW50IGNocm9tZSBpbnN0ZWFkLlxuICAgKi9cbiAgaGVhZGVycz86IFJlYWRvbmx5QXJyYXk8cmVhZG9ubHkgW3N0cmluZywgc3RyaW5nXT47XG4gIGZvb3Rlcj86IHN0cmluZztcbiAgLyoqXG4gICAqIERyYXcgdGhlIGNhcmQncyBvd24gZnJhbWU6IHJvdW5kZWQgY29ybmVycywgYm9yZGVyLCBkcm9wIHNoYWRvdywgYW5kIHRoZVxuICAgKiA2MjBweCByZWFkaW5nIHdpZHRoLiBEZWxpdmVyZWQgbWFpbCBrZWVwcyBpdCwgYmVjYXVzZSB0aGUgY2FyZCBmbG9hdHMgb24gdGhlXG4gICAqIGNsaWVudCdzIHBhZ2UgYmFja2dyb3VuZCBhbmQgdGhlIGZyYW1lIGlzIHdoYXQgc2VwYXJhdGVzIHRoZSB0d28uXG4gICAqXG4gICAqIFR1cm4gaXQgb2ZmIHdoZW4gdGhlIGNhcmQgYWxyZWFkeSBzaXRzIGluc2lkZSBhIHN1cmZhY2UgdGhhdCBmcmFtZXMgaXQgLSBhXG4gICAqIGJyb3dzZXIgcHJldmlldydzIHJlYWRpbmcgcGFuZSAtIHNvIHRoZSB0d28gZnJhbWVzIGRvIG5vdCBuZXN0IGludG8gYSByb3VuZGVkXG4gICAqIGNhcmQgaW5zaWRlIGEgcm91bmRlZCBjYXJkLlxuICAgKi9cbiAgZnJhbWVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFByZWhlYWRlciB0ZXh0OiB0aGUgc25pcHBldCBhIGNsaWVudCBzaG93cyBuZXh0IHRvIHRoZSBzdWJqZWN0IGluIGEgbGlzdCwgYW5kXG4gICAqIC0gdGhlIHJlYXNvbiB0aGlzIGlzIGEgcHJvcCAtIHRoZSB0ZXh0IGEgbW9iaWxlIE9TIHB1dHMgaW4gdGhlIFBVU0hcbiAgICogTk9USUZJQ0FUSU9OIGJvZHkuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIHRoZSBzdWJqZWN0LiBTZXQgaXQgd2hlbiB0aGUgbm90aWZpY2F0aW9uIHNob3VsZCBzYXkgc29tZXRoaW5nIHRoZVxuICAgKiBzdWJqZWN0IGRvZXMgbm90LiBPbmUtdGltZS1jb2RlIG1haWwgaXMgdGhlIGNhc2UgdGhhdCBtb3RpdmF0ZWQgaXQ6IGlPUyByZWFkc1xuICAgKiBhbiBpbmNvbWluZyBub3RpZmljYXRpb24ncyB0ZXh0IHRvIG9mZmVyIGFuIGF1dG9maWxsIGNvZGUgKG5hdGl2ZWx5IGZvciBNYWlsXG4gICAqIGFuZCBNZXNzYWdlcywgYW5kIHNpbmNlIGlPUyAyNiBmb3IgYW55IGFwcCdzIG5vdGlmaWNhdGlvbiwgR21haWwgaW5jbHVkZWQpLCBzb1xuICAgKiBhIGNvZGUgdGhhdCBhcHBlYXJzIG9ubHkgaW4gdGhlIEJPRFkgaXMgbmV2ZXIgc2VlbiAtIHRoZSBub3RpZmljYXRpb24gY2Fycmllc1xuICAgKiB0aGUgc3ViamVjdCBhbmQgdGhpcyBzbmlwcGV0LCBub3RoaW5nIG1vcmUuXG4gICAqL1xuICBwcmV2aWV3Pzogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBCcmFuZE1hcmsoeyB0aGVtZSB9OiB7IHRoZW1lOiBSZXNvbHZlZEVtYWlsQnJhbmQgfSk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGlmICh0aGVtZS5sb2dvVXJsKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxJbWdcbiAgICAgICAgc3JjPXt0aGVtZS5sb2dvVXJsfVxuICAgICAgICBhbHQ9e3RoZW1lLm5hbWV9XG4gICAgICAgIGhlaWdodD1cIjM0XCJcbiAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogXCJibG9ja1wiLCBoZWlnaHQ6IFwiMzRweFwiLCB3aWR0aDogXCJhdXRvXCIgfX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxuICByZXR1cm4gKFxuICAgIDxUZXh0XG4gICAgICBzdHlsZT17e1xuICAgICAgICBjb2xvcjogdGhlbWUub25BY2NlbnQsXG4gICAgICAgIGZvbnRTaXplOiBcIjIwcHhcIixcbiAgICAgICAgZm9udFdlaWdodDogODAwLFxuICAgICAgICBsZXR0ZXJTcGFjaW5nOiBcIi0wLjNweFwiLFxuICAgICAgICBtYXJnaW46IDAsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHt0aGVtZS5uYW1lfVxuICAgIDwvVGV4dD5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRW52ZWxvcGVIZWFkZXJzKHtcbiAgaGVhZGVycyxcbiAgdGhlbWUsXG59OiB7XG4gIGhlYWRlcnM6IEVtYWlsRG9jdW1lbnRQcm9wc1tcImhlYWRlcnNcIl07XG4gIHRoZW1lOiBSZXNvbHZlZEVtYWlsQnJhbmQ7XG59KSB7XG4gIGlmICghaGVhZGVycz8ubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIChcbiAgICA8U2VjdGlvblxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5iYWNrZ3JvdW5kLFxuICAgICAgICBib3JkZXJSYWRpdXM6IFwiMTBweFwiLFxuICAgICAgICBtYXJnaW46IFwiMCAwIDI0cHhcIixcbiAgICAgICAgcGFkZGluZzogXCIxNHB4IDE2cHhcIixcbiAgICAgIH19XG4gICAgPlxuICAgICAge2hlYWRlcnMubWFwKChbbGFiZWwsIHZhbHVlXSkgPT4gKFxuICAgICAgICA8Um93IGtleT17YCR7bGFiZWx9OiR7dmFsdWV9YH0+XG4gICAgICAgICAgPENvbHVtblxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgY29sb3I6IHRoZW1lLm11dGVkLFxuICAgICAgICAgICAgICBmb250U2l6ZTogXCIxMnB4XCIsXG4gICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDcwMCxcbiAgICAgICAgICAgICAgcGFkZGluZzogXCIzcHggMTJweCAzcHggMFwiLFxuICAgICAgICAgICAgICB3aWR0aDogXCI3MHB4XCIsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgICA8L0NvbHVtbj5cbiAgICAgICAgICA8Q29sdW1uIHN0eWxlPXt7IGNvbG9yOiB0aGVtZS5mb3JlZ3JvdW5kLCBmb250U2l6ZTogXCIxM3B4XCIsIHBhZGRpbmc6IFwiM3B4IDBcIiB9fT5cbiAgICAgICAgICAgIHt2YWx1ZX1cbiAgICAgICAgICA8L0NvbHVtbj5cbiAgICAgICAgPC9Sb3c+XG4gICAgICApKX1cbiAgICA8L1NlY3Rpb24+XG4gICk7XG59XG5cbi8qKiBCcmFuZGVkIG1lc3NhZ2UgY2FyZCBzaGFyZWQgYnkgdGhlIGZ1bGwgZG9jdW1lbnQgYW5kIGJyb3dzZXIgcHJldmlld3MuICovXG5leHBvcnQgY29uc3QgRW1haWxDYXJkID0gKHtcbiAgYm9keSxcbiAgaGVhZGluZyxcbiAgaGVhZGVycyxcbiAgc3ViamVjdCxcbiAgZm9vdGVyLFxuICBmcmFtZWQgPSB0cnVlLFxuICBicmFuZDogYnJhbmRJbnB1dCxcbn06IEVtYWlsRG9jdW1lbnRQcm9wcykgPT4ge1xuICBjb25zdCB0aGVtZSA9IHJlc29sdmVFbWFpbEJyYW5kKGJyYW5kSW5wdXQpO1xuICBjb25zdCB2aXNpYmxlSGVhZGluZyA9IGhlYWRpbmcgPz8gc3ViamVjdDtcbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyXG4gICAgICBzdHlsZT17e1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnN1cmZhY2UsXG4gICAgICAgIGZvbnRGYW1pbHk6IHRoZW1lLmZvbnRGYW1pbHksXG4gICAgICAgIG1hcmdpbjogXCIwIGF1dG9cIixcbiAgICAgICAgLi4uKGZyYW1lZFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS5ib3JkZXJ9YCxcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjE2cHhcIixcbiAgICAgICAgICAgICAgYm94U2hhZG93OiBcIjAgOHB4IDMwcHggcmdiYSgyNyw0OSw1NywwLjA4KVwiLFxuICAgICAgICAgICAgICBtYXhXaWR0aDogXCI2MjBweFwiLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogeyBtYXhXaWR0aDogXCIxMDAlXCIgfSksXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxTZWN0aW9uXG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5hY2NlbnQsXG4gICAgICAgICAgLy8gVGhlIGNvcm5lcnMgYXJlIHNldCBvbiB0aGUgYmFuZCBpdHNlbGYgcmF0aGVyIHRoYW4gY2xpcHBlZCBieSB0aGVcbiAgICAgICAgICAvLyBjb250YWluZXI6IFJlYWN0IEVtYWlsIHJlbmRlcnMgdGhlIGNvbnRhaW5lciBhcyBhIDx0YWJsZT4sIHdoaWNoXG4gICAgICAgICAgLy8gYG92ZXJmbG93OiBoaWRkZW5gIGRvZXMgbm90IHJlbGlhYmx5IGNsaXAsIHNvIHRoZSBiYW5kIG5lZWRzIGl0cyBvd25cbiAgICAgICAgICAvLyByb3VuZGVkIGNvcm5lcnMgdG8gc3RheSBpbnNpZGUgdGhlIGNvbnRhaW5lciBlZGdlLlxuICAgICAgICAgIC4uLihmcmFtZWQgPyB7IGJvcmRlclJhZGl1czogXCIxNXB4IDE1cHggMCAwXCIgfSA6IHt9KSxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPFJvdz5cbiAgICAgICAgICA8Q29sdW1uIHN0eWxlPXt7IHBhZGRpbmc6IFwiMjZweCAzNnB4XCIgfX0+XG4gICAgICAgICAgICA8QnJhbmRNYXJrIHRoZW1lPXt0aGVtZX0gLz5cbiAgICAgICAgICA8L0NvbHVtbj5cbiAgICAgICAgPC9Sb3c+XG4gICAgICA8L1NlY3Rpb24+XG4gICAgICA8U2VjdGlvbj5cbiAgICAgICAgPFJvdz5cbiAgICAgICAgICA8Q29sdW1uIHN0eWxlPXt7IHBhZGRpbmc6IFwiMzhweCAzOHB4IDI4cHhcIiB9fT5cbiAgICAgICAgICAgIHt2aXNpYmxlSGVhZGluZyA/IChcbiAgICAgICAgICAgICAgPEhlYWRpbmdcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsXG4gICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIyOHB4XCIsXG4gICAgICAgICAgICAgICAgICBsZXR0ZXJTcGFjaW5nOiBcIi0wLjVweFwiLFxuICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogXCIxLjJcIixcbiAgICAgICAgICAgICAgICAgIG1hcmdpbjogXCIwIDAgMjRweFwiLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dmlzaWJsZUhlYWRpbmd9XG4gICAgICAgICAgICAgIDwvSGVhZGluZz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPEVudmVsb3BlSGVhZGVycyBoZWFkZXJzPXtoZWFkZXJzfSB0aGVtZT17dGhlbWV9IC8+XG4gICAgICAgICAgICA8RW1haWxCb2R5IGJvZHk9e2JvZHl9IGJyYW5kPXt0aGVtZX0gLz5cbiAgICAgICAgICA8L0NvbHVtbj5cbiAgICAgICAgPC9Sb3c+XG4gICAgICA8L1NlY3Rpb24+XG4gICAgICA8SHIgc3R5bGU9e3sgYm9yZGVyQ29sb3I6IHRoZW1lLmJvcmRlciwgbWFyZ2luOiAwIH19IC8+XG4gICAgICA8U2VjdGlvbj5cbiAgICAgICAgPFJvdz5cbiAgICAgICAgICA8Q29sdW1uIHN0eWxlPXt7IHBhZGRpbmc6IFwiMjRweCAzOHB4IDMwcHhcIiB9fT5cbiAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgY29sb3I6IHRoZW1lLm11dGVkLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjEycHhcIixcbiAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiBcIjEuNTVcIixcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtmb290ZXIgPz8gdGhlbWUudGFnbGluZX17XCIgXCJ9XG4gICAgICAgICAgICAgIHt0aGVtZS53ZWJzaXRlID8gKFxuICAgICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgICBocmVmPXt0aGVtZS53ZWJzaXRlfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHRoZW1lLmFjY2VudCxcbiAgICAgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb246IFwibm9uZVwiLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7dGhlbWUubmFtZX1cbiAgICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgIDwvQ29sdW1uPlxuICAgICAgICA8L1Jvdz5cbiAgICAgIDwvU2VjdGlvbj5cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cbi8qKiBDb21wbGV0ZSByZXNwb25zaXZlLCBicmFuZGVkIFJlYWN0IEVtYWlsIGRvY3VtZW50LiAqL1xuZXhwb3J0IGNvbnN0IEVtYWlsRG9jdW1lbnQgPSAocHJvcHM6IEVtYWlsRG9jdW1lbnRQcm9wcykgPT4ge1xuICBjb25zdCB0aGVtZSA9IHJlc29sdmVFbWFpbEJyYW5kKHByb3BzLmJyYW5kKTtcbiAgY29uc3QgcGFnZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICBmb250RmFtaWx5OiB0aGVtZS5mb250RmFtaWx5LFxuICAgIG1hcmdpbjogMCxcbiAgICBwYWRkaW5nOiBcIjI4cHggMTJweFwiLFxuICB9O1xuICByZXR1cm4gKFxuICAgIDxIdG1sIGxhbmc9XCJlblwiPlxuICAgICAgPEhlYWQgLz5cbiAgICAgIDxQcmV2aWV3Pntwcm9wcy5wcmV2aWV3ID8/IHByb3BzLnN1YmplY3QgPz8gXCJNZXNzYWdlXCJ9PC9QcmV2aWV3PlxuICAgICAgPEJvZHkgc3R5bGU9e3BhZ2VTdHlsZX0+XG4gICAgICAgIDxFbWFpbENhcmQgey4uLnByb3BzfSAvPlxuICAgICAgPC9Cb2R5PlxuICAgIDwvSHRtbD5cbiAgKTtcbn07XG4iXX0=
@@ -1 +1 @@
1
- {"root":["../src/generated/assets.ts","../src/generated/index.ts","../src/template.tsx","../index.ts"],"version":"5.9.3"}
1
+ {"root":["../src/generated/assets.ts","../src/template.tsx","../index.generated.ts","../index.ts"],"version":"5.9.3"}
package/package.json CHANGED
@@ -23,7 +23,7 @@
23
23
  "typescript": "^5.9.3"
24
24
  },
25
25
  "dependencies": {
26
- "@dbx-tools/shared-core": "^0.9.154",
26
+ "@dbx-tools/shared-core": "^0.9.158",
27
27
  "@react-email/components": "^1.0.12",
28
28
  "react": "~19.2.4"
29
29
  },
@@ -38,18 +38,14 @@
38
38
  "types": "./lib/index.d.ts",
39
39
  "default": "./lib/index.js"
40
40
  },
41
- "./template": {
42
- "types": "./lib/src/template.d.ts",
43
- "default": "./lib/src/template.js"
44
- },
45
- "./*": {
46
- "types": "./lib/src/*/index.d.ts",
47
- "default": "./lib/src/*/index.js"
41
+ "./generated": {
42
+ "types": "./lib/index.generated.d.ts",
43
+ "default": "./lib/index.generated.js"
48
44
  },
49
45
  "./package.json": "./package.json"
50
46
  }
51
47
  },
52
- "version": "0.9.154",
48
+ "version": "0.9.158",
53
49
  "types": "./lib/index.d.ts",
54
50
  "dbxToolsConfig": {
55
51
  "tags": [
@@ -62,18 +58,14 @@
62
58
  "types": "./lib/index.d.ts",
63
59
  "default": "./lib/index.js"
64
60
  },
65
- "./template": {
66
- "types": "./lib/src/template.d.ts",
67
- "default": "./lib/src/template.js"
68
- },
69
- "./*": {
70
- "types": "./lib/src/*/index.d.ts",
71
- "default": "./lib/src/*/index.js"
61
+ "./generated": {
62
+ "types": "./lib/index.generated.d.ts",
63
+ "default": "./lib/index.generated.js"
72
64
  },
73
65
  "./package.json": "./package.json"
74
66
  },
75
67
  "files": [
76
- "index.ts",
68
+ "index*.ts",
77
69
  "src",
78
70
  "lib"
79
71
  ],
package/src/template.tsx CHANGED
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * @module
9
9
  */
10
- import { brandUtils, type BrandContext } from "@dbx-tools/shared-core";
10
+ import { type BrandContext, defaultBrandContext } from "@dbx-tools/shared-core";
11
11
  import {
12
12
  Body,
13
13
  Column,
@@ -85,7 +85,7 @@ export const emailBrandFromContext = (context: BrandContext): EmailBrand => {
85
85
 
86
86
  /** The repository brand used by every email unless explicitly overridden. */
87
87
  export const defaultEmailBrand: EmailBrand = {
88
- ...emailBrandFromContext(brandUtils.defaultBrandContext),
88
+ ...emailBrandFromContext(defaultBrandContext),
89
89
  logoUrl: dbxToolsEmailAssetDataUrls.logo,
90
90
  };
91
91
 
@@ -97,12 +97,12 @@ export const resolveEmailBrand = (input?: EmailBrand): ResolvedEmailBrand => {
97
97
  accent: merged.accent,
98
98
  onAccent: merged.onAccent ?? "#ffffff",
99
99
  fontFamily: merged.fontFamily,
100
- name: merged.name ?? brandUtils.defaultBrandContext.name,
101
- background: merged.background ?? brandUtils.defaultBrandContext.colors.surface,
102
- surface: merged.surface ?? brandUtils.defaultBrandContext.colors.background,
103
- foreground: merged.foreground ?? brandUtils.defaultBrandContext.colors.foreground,
104
- muted: merged.muted ?? brandUtils.defaultBrandContext.colors.muted,
105
- border: merged.border ?? brandUtils.defaultBrandContext.colors.border,
100
+ name: merged.name ?? defaultBrandContext.name,
101
+ background: merged.background ?? defaultBrandContext.colors.surface,
102
+ surface: merged.surface ?? defaultBrandContext.colors.background,
103
+ foreground: merged.foreground ?? defaultBrandContext.colors.foreground,
104
+ muted: merged.muted ?? defaultBrandContext.colors.muted,
105
+ border: merged.border ?? defaultBrandContext.colors.border,
106
106
  ...(tagline ? { tagline } : {}),
107
107
  ...(merged.logoUrl ? { logoUrl: merged.logoUrl } : {}),
108
108
  ...(merged.website ? { website: merged.website } : {}),
@@ -158,7 +158,7 @@ export const EmailBody = ({ body, brand: brandInput }: EmailBodyProps) => {
158
158
  backgroundColor: theme.background,
159
159
  borderRadius: "5px",
160
160
  color: theme.foreground,
161
- fontFamily: brandUtils.defaultBrandContext.typography.mono,
161
+ fontFamily: defaultBrandContext.typography.mono,
162
162
  fontSize: "13px",
163
163
  padding: "2px 5px",
164
164
  },
@@ -166,7 +166,7 @@ export const EmailBody = ({ body, brand: brandInput }: EmailBodyProps) => {
166
166
  backgroundColor: theme.foreground,
167
167
  borderRadius: "10px",
168
168
  color: theme.surface,
169
- fontFamily: brandUtils.defaultBrandContext.typography.mono,
169
+ fontFamily: defaultBrandContext.typography.mono,
170
170
  fontSize: "13px",
171
171
  lineHeight: "1.55",
172
172
  margin: "20px 0",
@@ -1,2 +0,0 @@
1
- export * as assets from "./assets.ts";
2
- export { dbxToolsEmailAssetDataUrls } from "./assets.ts";
@@ -1,6 +0,0 @@
1
- // GENERATED by projen watch - DO NOT EDIT.
2
- // Regenerated from the exporting modules in ./src.
3
- // Hand edits are overwritten on the next watch; this file is read-only.
4
- export * as assets from "./assets.js";
5
- export { dbxToolsEmailAssetDataUrls } from "./assets.js";
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2VuZXJhdGVkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxtREFBbUQ7QUFDbkQsd0VBQXdFO0FBRXhFLE9BQU8sS0FBSyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCAqIGFzIGFzc2V0cyBmcm9tIFwiLi9hc3NldHMudHNcIjtcbmV4cG9ydCB7IGRieFRvb2xzRW1haWxBc3NldERhdGFVcmxzIH0gZnJvbSBcIi4vYXNzZXRzLnRzXCI7XG4iXX0=