@openhi/types 0.0.30 → 0.0.32

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.
@@ -6,3 +6,27 @@ export declare const CONTROL_PLANE_ROLE_CODE: {
6
6
  };
7
7
  export type ControlPlaneRoleCode = (typeof CONTROL_PLANE_ROLE_CODE)[keyof typeof CONTROL_PLANE_ROLE_CODE];
8
8
  export declare const controlPlaneRoleCodeSchema: z.ZodEnum<["system-admin", "tenant-admin", "tenant-user"]>;
9
+ export declare const CONTROL_PLANE_ROLE_CONCEPTS: {
10
+ readonly SYSTEM_ADMIN: {
11
+ readonly code: "system-admin";
12
+ readonly display: "System Admin";
13
+ readonly definition: "Administrative functions within control plane only; can change tenant/workspace records, assign memberships and role assignments; CANNOT view tenant-isolated data.";
14
+ };
15
+ readonly TENANT_ADMIN: {
16
+ readonly code: "tenant-admin";
17
+ readonly display: "Tenant Admin";
18
+ readonly definition: "Admin within a given tenant and optionally workspace; 100% tenant-isolated access.";
19
+ };
20
+ readonly TENANT_USER: {
21
+ readonly code: "tenant-user";
22
+ readonly display: "Tenant User";
23
+ readonly definition: "User within a given tenant and optionally workspace; 100% tenant-isolated access.";
24
+ };
25
+ };
26
+ export type ControlPlaneRoleConcept = (typeof CONTROL_PLANE_ROLE_CONCEPTS)[keyof typeof CONTROL_PLANE_ROLE_CONCEPTS];
27
+ export declare const CONTROL_PLANE_ROLE_IDS: {
28
+ readonly SYSTEM_ADMIN: "role-system-admin";
29
+ readonly TENANT_ADMIN: "role-tenant-admin";
30
+ readonly TENANT_USER: "role-tenant-user";
31
+ };
32
+ export type ControlPlaneRoleId = (typeof CONTROL_PLANE_ROLE_IDS)[keyof typeof CONTROL_PLANE_ROLE_IDS];
@@ -2,7 +2,7 @@
2
2
  // THIS FILE IS GENERATED by @openhi/types-generator.
3
3
  // Do not edit. Edit sds/ or generator-config.yaml and regenerate.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.controlPlaneRoleCodeSchema = exports.CONTROL_PLANE_ROLE_CODE = void 0;
5
+ exports.CONTROL_PLANE_ROLE_IDS = exports.CONTROL_PLANE_ROLE_CONCEPTS = exports.controlPlaneRoleCodeSchema = exports.CONTROL_PLANE_ROLE_CODE = void 0;
6
6
  const zod_1 = require("zod");
7
7
  exports.CONTROL_PLANE_ROLE_CODE = {
8
8
  SYSTEM_ADMIN: "system-admin",
@@ -14,4 +14,26 @@ exports.controlPlaneRoleCodeSchema = zod_1.z.enum([
14
14
  "tenant-admin",
15
15
  "tenant-user",
16
16
  ]);
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2wvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxREFBcUQ7QUFDckQsa0VBQWtFOzs7QUFFbEUsNkJBQXdCO0FBRVgsUUFBQSx1QkFBdUIsR0FBRztJQUNyQyxZQUFZLEVBQUUsY0FBYztJQUM1QixZQUFZLEVBQUUsY0FBYztJQUM1QixXQUFXLEVBQUUsYUFBYTtDQUNsQixDQUFDO0FBR0UsUUFBQSwwQkFBMEIsR0FBRyxPQUFDLENBQUMsSUFBSSxDQUFDO0lBQy9DLGNBQWM7SUFDZCxjQUFjO0lBQ2QsYUFBYTtDQUNkLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRISVMgRklMRSBJUyBHRU5FUkFURUQgYnkgQG9wZW5oaS90eXBlcy1nZW5lcmF0b3IuXG4vLyBEbyBub3QgZWRpdC4gRWRpdCBzZHMvIG9yIGdlbmVyYXRvci1jb25maWcueWFtbCBhbmQgcmVnZW5lcmF0ZS5cblxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuZXhwb3J0IGNvbnN0IENPTlRST0xfUExBTkVfUk9MRV9DT0RFID0ge1xuICBTWVNURU1fQURNSU46IFwic3lzdGVtLWFkbWluXCIsXG4gIFRFTkFOVF9BRE1JTjogXCJ0ZW5hbnQtYWRtaW5cIixcbiAgVEVOQU5UX1VTRVI6IFwidGVuYW50LXVzZXJcIixcbn0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBDb250cm9sUGxhbmVSb2xlQ29kZSA9XG4gICh0eXBlb2YgQ09OVFJPTF9QTEFORV9ST0xFX0NPREUpW2tleW9mIHR5cGVvZiBDT05UUk9MX1BMQU5FX1JPTEVfQ09ERV07XG5leHBvcnQgY29uc3QgY29udHJvbFBsYW5lUm9sZUNvZGVTY2hlbWEgPSB6LmVudW0oW1xuICBcInN5c3RlbS1hZG1pblwiLFxuICBcInRlbmFudC1hZG1pblwiLFxuICBcInRlbmFudC11c2VyXCIsXG5dKTtcbiJdfQ==
17
+ exports.CONTROL_PLANE_ROLE_CONCEPTS = {
18
+ SYSTEM_ADMIN: {
19
+ code: "system-admin",
20
+ display: "System Admin",
21
+ definition: "Administrative functions within control plane only; can change tenant/workspace records, assign memberships and role assignments; CANNOT view tenant-isolated data.",
22
+ },
23
+ TENANT_ADMIN: {
24
+ code: "tenant-admin",
25
+ display: "Tenant Admin",
26
+ definition: "Admin within a given tenant and optionally workspace; 100% tenant-isolated access.",
27
+ },
28
+ TENANT_USER: {
29
+ code: "tenant-user",
30
+ display: "Tenant User",
31
+ definition: "User within a given tenant and optionally workspace; 100% tenant-isolated access.",
32
+ },
33
+ };
34
+ exports.CONTROL_PLANE_ROLE_IDS = {
35
+ SYSTEM_ADMIN: "role-system-admin",
36
+ TENANT_ADMIN: "role-tenant-admin",
37
+ TENANT_USER: "role-tenant-user",
38
+ };
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2wvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxREFBcUQ7QUFDckQsa0VBQWtFOzs7QUFFbEUsNkJBQXdCO0FBRVgsUUFBQSx1QkFBdUIsR0FBRztJQUNyQyxZQUFZLEVBQUUsY0FBYztJQUM1QixZQUFZLEVBQUUsY0FBYztJQUM1QixXQUFXLEVBQUUsYUFBYTtDQUNsQixDQUFDO0FBR0UsUUFBQSwwQkFBMEIsR0FBRyxPQUFDLENBQUMsSUFBSSxDQUFDO0lBQy9DLGNBQWM7SUFDZCxjQUFjO0lBQ2QsYUFBYTtDQUNkLENBQUMsQ0FBQztBQUVVLFFBQUEsMkJBQTJCLEdBQUc7SUFDekMsWUFBWSxFQUFFO1FBQ1osSUFBSSxFQUFFLGNBQWM7UUFDcEIsT0FBTyxFQUFFLGNBQWM7UUFDdkIsVUFBVSxFQUNSLHFLQUFxSztLQUN4SztJQUNELFlBQVksRUFBRTtRQUNaLElBQUksRUFBRSxjQUFjO1FBQ3BCLE9BQU8sRUFBRSxjQUFjO1FBQ3ZCLFVBQVUsRUFDUixvRkFBb0Y7S0FDdkY7SUFDRCxXQUFXLEVBQUU7UUFDWCxJQUFJLEVBQUUsYUFBYTtRQUNuQixPQUFPLEVBQUUsYUFBYTtRQUN0QixVQUFVLEVBQ1IsbUZBQW1GO0tBQ3RGO0NBQ08sQ0FBQztBQUlFLFFBQUEsc0JBQXNCLEdBQUc7SUFDcEMsWUFBWSxFQUFFLG1CQUFtQjtJQUNqQyxZQUFZLEVBQUUsbUJBQW1CO0lBQ2pDLFdBQVcsRUFBRSxrQkFBa0I7Q0FDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRISVMgRklMRSBJUyBHRU5FUkFURUQgYnkgQG9wZW5oaS90eXBlcy1nZW5lcmF0b3IuXG4vLyBEbyBub3QgZWRpdC4gRWRpdCBzZHMvIG9yIGdlbmVyYXRvci1jb25maWcueWFtbCBhbmQgcmVnZW5lcmF0ZS5cblxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuZXhwb3J0IGNvbnN0IENPTlRST0xfUExBTkVfUk9MRV9DT0RFID0ge1xuICBTWVNURU1fQURNSU46IFwic3lzdGVtLWFkbWluXCIsXG4gIFRFTkFOVF9BRE1JTjogXCJ0ZW5hbnQtYWRtaW5cIixcbiAgVEVOQU5UX1VTRVI6IFwidGVuYW50LXVzZXJcIixcbn0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBDb250cm9sUGxhbmVSb2xlQ29kZSA9XG4gICh0eXBlb2YgQ09OVFJPTF9QTEFORV9ST0xFX0NPREUpW2tleW9mIHR5cGVvZiBDT05UUk9MX1BMQU5FX1JPTEVfQ09ERV07XG5leHBvcnQgY29uc3QgY29udHJvbFBsYW5lUm9sZUNvZGVTY2hlbWEgPSB6LmVudW0oW1xuICBcInN5c3RlbS1hZG1pblwiLFxuICBcInRlbmFudC1hZG1pblwiLFxuICBcInRlbmFudC11c2VyXCIsXG5dKTtcblxuZXhwb3J0IGNvbnN0IENPTlRST0xfUExBTkVfUk9MRV9DT05DRVBUUyA9IHtcbiAgU1lTVEVNX0FETUlOOiB7XG4gICAgY29kZTogXCJzeXN0ZW0tYWRtaW5cIixcbiAgICBkaXNwbGF5OiBcIlN5c3RlbSBBZG1pblwiLFxuICAgIGRlZmluaXRpb246XG4gICAgICBcIkFkbWluaXN0cmF0aXZlIGZ1bmN0aW9ucyB3aXRoaW4gY29udHJvbCBwbGFuZSBvbmx5OyBjYW4gY2hhbmdlIHRlbmFudC93b3Jrc3BhY2UgcmVjb3JkcywgYXNzaWduIG1lbWJlcnNoaXBzIGFuZCByb2xlIGFzc2lnbm1lbnRzOyBDQU5OT1QgdmlldyB0ZW5hbnQtaXNvbGF0ZWQgZGF0YS5cIixcbiAgfSxcbiAgVEVOQU5UX0FETUlOOiB7XG4gICAgY29kZTogXCJ0ZW5hbnQtYWRtaW5cIixcbiAgICBkaXNwbGF5OiBcIlRlbmFudCBBZG1pblwiLFxuICAgIGRlZmluaXRpb246XG4gICAgICBcIkFkbWluIHdpdGhpbiBhIGdpdmVuIHRlbmFudCBhbmQgb3B0aW9uYWxseSB3b3Jrc3BhY2U7IDEwMCUgdGVuYW50LWlzb2xhdGVkIGFjY2Vzcy5cIixcbiAgfSxcbiAgVEVOQU5UX1VTRVI6IHtcbiAgICBjb2RlOiBcInRlbmFudC11c2VyXCIsXG4gICAgZGlzcGxheTogXCJUZW5hbnQgVXNlclwiLFxuICAgIGRlZmluaXRpb246XG4gICAgICBcIlVzZXIgd2l0aGluIGEgZ2l2ZW4gdGVuYW50IGFuZCBvcHRpb25hbGx5IHdvcmtzcGFjZTsgMTAwJSB0ZW5hbnQtaXNvbGF0ZWQgYWNjZXNzLlwiLFxuICB9LFxufSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIENvbnRyb2xQbGFuZVJvbGVDb25jZXB0ID1cbiAgKHR5cGVvZiBDT05UUk9MX1BMQU5FX1JPTEVfQ09OQ0VQVFMpW2tleW9mIHR5cGVvZiBDT05UUk9MX1BMQU5FX1JPTEVfQ09OQ0VQVFNdO1xuXG5leHBvcnQgY29uc3QgQ09OVFJPTF9QTEFORV9ST0xFX0lEUyA9IHtcbiAgU1lTVEVNX0FETUlOOiBcInJvbGUtc3lzdGVtLWFkbWluXCIsXG4gIFRFTkFOVF9BRE1JTjogXCJyb2xlLXRlbmFudC1hZG1pblwiLFxuICBURU5BTlRfVVNFUjogXCJyb2xlLXRlbmFudC11c2VyXCIsXG59IGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQ29udHJvbFBsYW5lUm9sZUlkID1cbiAgKHR5cGVvZiBDT05UUk9MX1BMQU5FX1JPTEVfSURTKVtrZXlvZiB0eXBlb2YgQ09OVFJPTF9QTEFORV9ST0xFX0lEU107XG4iXX0=
@@ -29,6 +29,18 @@ import type { FhirResourceLike } from "../summary/extract-summary";
29
29
  * 3. Unlabeled fallback — `<ISO-8601 lastUpdated>#<id>`.
30
30
  */
31
31
  export declare function extractSortKey(resource: FhirResourceLike): string;
32
+ /**
33
+ * Returns the normalized natural label for `resource`, or `undefined` when
34
+ * no label can be extracted. Used directly by control-plane writers that
35
+ * compose their own `<label>#<id>` vs `<entity.lastUpdated>#<id>` fallback,
36
+ * and indirectly by `extractSortKey` for the data plane.
37
+ *
38
+ * Resolution order matches `extractSortKey`:
39
+ * 1. `LABEL_PATHS[resourceType]` — curated, type-aware extraction.
40
+ * 2. Introspection fallback — `resource.name` (string), then `resource.title`.
41
+ * 3. Returns `undefined` so the caller can decide on its own fallback.
42
+ */
43
+ export declare function extractLabel(resource: FhirResourceLike): string | undefined;
32
44
  /**
33
45
  * Normalize a natural-language label per DR-004:
34
46
  * 1. ASCII-fold common Latin diacritics (ñ→n, é→e, ø→o, …).
@@ -14,6 +14,7 @@
14
14
  */
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.extractSortKey = extractSortKey;
17
+ exports.extractLabel = extractLabel;
17
18
  exports.normalizeLabel = normalizeLabel;
18
19
  const label_paths_1 = require("./label-paths");
19
20
  /**
@@ -34,23 +35,39 @@ const label_paths_1 = require("./label-paths");
34
35
  */
35
36
  function extractSortKey(resource) {
36
37
  const id = typeof resource.id === "string" ? resource.id : "";
37
- const source = label_paths_1.LABEL_PATHS[resource.resourceType];
38
- if (source) {
39
- const label = extractLabel(resource, source);
40
- if (label.length > 0) {
41
- return `${normalizeLabel(label)}#${id}`;
42
- }
43
- }
44
- const introspected = introspectStringField(resource, "name") ??
45
- introspectStringField(resource, "title");
46
- if (introspected !== undefined) {
47
- return `${normalizeLabel(introspected)}#${id}`;
38
+ const label = extractLabel(resource);
39
+ if (label !== undefined) {
40
+ return `${label}#${id}`;
48
41
  }
49
42
  const lastUpdated = typeof resource.meta?.lastUpdated === "string"
50
43
  ? resource.meta.lastUpdated
51
44
  : "";
52
45
  return `${lastUpdated}#${id}`;
53
46
  }
47
+ /**
48
+ * Returns the normalized natural label for `resource`, or `undefined` when
49
+ * no label can be extracted. Used directly by control-plane writers that
50
+ * compose their own `<label>#<id>` vs `<entity.lastUpdated>#<id>` fallback,
51
+ * and indirectly by `extractSortKey` for the data plane.
52
+ *
53
+ * Resolution order matches `extractSortKey`:
54
+ * 1. `LABEL_PATHS[resourceType]` — curated, type-aware extraction.
55
+ * 2. Introspection fallback — `resource.name` (string), then `resource.title`.
56
+ * 3. Returns `undefined` so the caller can decide on its own fallback.
57
+ */
58
+ function extractLabel(resource) {
59
+ const source = label_paths_1.LABEL_PATHS[resource.resourceType];
60
+ if (source) {
61
+ const raw = extractLabelBySource(resource, source);
62
+ if (raw.length > 0)
63
+ return normalizeLabel(raw);
64
+ }
65
+ const introspected = introspectStringField(resource, "name") ??
66
+ introspectStringField(resource, "title");
67
+ if (introspected !== undefined)
68
+ return normalizeLabel(introspected);
69
+ return undefined;
70
+ }
54
71
  /**
55
72
  * Returns the value of `field` on `resource` only if it's a non-empty string.
56
73
  * Guards against HumanName arrays (Patient.name) and other non-string shapes
@@ -63,7 +80,7 @@ function introspectStringField(resource, field) {
63
80
  return value;
64
81
  return undefined;
65
82
  }
66
- function extractLabel(resource, source) {
83
+ function extractLabelBySource(resource, source) {
67
84
  if (source.kind === "humanName") {
68
85
  const names = resource[source.path];
69
86
  if (!Array.isArray(names))
@@ -99,6 +116,29 @@ function extractLabel(resource, source) {
99
116
  }
100
117
  return typeof cc.text === "string" ? cc.text : "";
101
118
  }
119
+ if (source.kind === "identifier") {
120
+ return extractIdentifierValue(resource[source.path]);
121
+ }
122
+ return "";
123
+ }
124
+ /**
125
+ * Reads `Identifier.value` from a FHIR `Identifier` or `Identifier[]` field.
126
+ * Most FHIR R4 resources expose `identifier` as an array; a few (Bundle,
127
+ * QuestionnaireResponse) use a singular `Identifier`. Returns empty when no
128
+ * usable value is present so the caller's empty-label fallthrough kicks in.
129
+ */
130
+ function extractIdentifierValue(field) {
131
+ if (Array.isArray(field)) {
132
+ const first = field[0];
133
+ if (!first || typeof first !== "object")
134
+ return "";
135
+ const value = first.value;
136
+ return typeof value === "string" ? value : "";
137
+ }
138
+ if (field && typeof field === "object") {
139
+ const value = field.value;
140
+ return typeof value === "string" ? value : "";
141
+ }
102
142
  return "";
103
143
  }
104
144
  /**
@@ -127,4 +167,4 @@ function asciiFold(input) {
127
167
  // diacritics (é, ñ, ü, …). Non-Latin scripts are unaffected.
128
168
  return input.normalize("NFKD").replace(/\p{M}+/gu, "");
129
169
  }
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdC1zb3J0LWtleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zb3J0LWtleS9leHRyYWN0LXNvcnQta2V5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7O0dBWUc7O0FBcUJILHdDQXVCQztBQXNFRCx3Q0FRQztBQXhIRCwrQ0FBOEQ7QUFHOUQ7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLFFBQTBCO0lBQ3ZELE1BQU0sRUFBRSxHQUFHLE9BQU8sUUFBUSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUU5RCxNQUFNLE1BQU0sR0FBRyx5QkFBVyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckIsT0FBTyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUNoQixxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO1FBQ3ZDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzQyxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMvQixPQUFPLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxNQUFNLFdBQVcsR0FDZixPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxLQUFLLFFBQVE7UUFDNUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJ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QyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLEtBQWE7SUFDMUMsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDO1NBQ3BCLFdBQVcsRUFBRTtTQUNiLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1NBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1NBQ2xCLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUM7U0FDbEMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUM7U0FDcEIsSUFBSSxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsS0FBYTtJQUM5Qix1RUFBdUU7SUFDdkUsNkRBQTZEO0lBQzdELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFB1cmUgcHJvamVjdGlvbiBvZiBhIEZISVIgUjQgcmVzb3VyY2UgaW50byBpdHMgR1NJMSBzb3J0IGtleSBwZXIgRFItMDA0LlxuICpcbiAqIC0gTGFiZWxlZCB0eXBlcyAoZW50cmllcyBpbiBgTEFCRUxfUEFUSFNgKTogYDxub3JtYWxpemVkTGFiZWw+IzxpZD5gXG4gKiAgIHNvIGxpc3QgZW5kcG9pbnRzIHNvcnQgYWxwaGFiZXRpY2FsbHkgYW5kIGBCRUdJTlNfV0lUSGAgc2VydmVzXG4gKiAgIHByZWZpeCBxdWVyaWVzIGxpa2UgYD9uYW1lPVNtYC5cbiAqIC0gVW5sYWJlbGVkIHR5cGVzOiBgPElTTy04NjAxIGxhc3RVcGRhdGVkPiM8aWQ+YCBzbyBsaXN0IGVuZHBvaW50c1xuICogICBzZXJ2ZSByZXZlcnNlLWNocm9ub2xvZ2ljYWwgd2l0aCBgU2NhbkluZGV4Rm9yd2FyZD1mYWxzZWAuXG4gKlxuICogUHVyZTogbm8gSS9PLCBubyBEeW5hbW9EQiBhY2Nlc3MsIGRldGVybWluaXN0aWMgb3ZlciB0aGUgcmVzb3VyY2UgYW5kXG4gKiB0aGUgY29tbWl0dGVkIGBMQUJFTF9QQVRIU2AgdGFibGUuIENvbnN1bWVkIGJ5IHRoZSBkYXRhLXBsYW5lIHdyaXRlclxuICogYmVmb3JlIGVhY2ggYFB1dEl0ZW1gIC8gYFVwZGF0ZUl0ZW1gLlxuICovXG5cbmltcG9ydCB7IExBQkVMX1BBVEhTLCB0eXBlIExhYmVsU291cmNlIH0gZnJvbSBcIi4vbGFiZWwtcGF0aHNcIjtcbmltcG9ydCB0eXBlIHsgRmhpclJlc291cmNlTGlrZSB9IGZyb20gXCIuLi9zdW1tYXJ5L2V4dHJhY3Qtc3VtbWFyeVwiO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIEdTSTEgc29ydC1rZXkgdmFsdWUgZm9yIGByZXNvdXJjZWAuIFRoZSBpZCBpcyB0aGVcbiAqIHRpZS1icmVha2VyIHN1ZmZpeDsgY2FsbGVycyBtdXN0IHBhc3MgYSByZXNvdXJjZSB0aGF0IGNhcnJpZXMgYW4gYGlkYFxuICogZm9yIGFuIGA8aWQ+YCBzZWdtZW50IHRvIGJlIHByZXNlbnQsIGJ1dCBgZXh0cmFjdFNvcnRLZXlgIHJldHVybnNcbiAqIGA8bGFiZWw+I2AgKG9yIGA8bGFzdFVwZGF0ZWQ+I2ApIHdpdGggYW4gZW1wdHkgdHJhaWxpbmcgc2VnbWVudCB3aGVuIGlkXG4gKiBpcyBtaXNzaW5nIHJhdGhlciB0aGFuIHRocm93aW5nIOKAlCB0aGUgY2FsbGVyIHZhbGlkYXRlcyBpZCBhdCB0aGVcbiAqIHdyaXRlLXBhdGggZW50cnkuXG4gKlxuICogUmVzb2x1dGlvbiBvcmRlcjpcbiAqIDEuIGBMQUJFTF9QQVRIU1tyZXNvdXJjZVR5cGVdYCDigJQgdGhlIGN1cmF0ZWQsIHR5cGUtYXdhcmUgZXh0cmFjdGlvbi5cbiAqIDIuIEludHJvc3BlY3Rpb24gZmFsbGJhY2sgcGVyIEFEUi0wMTEgLyBEUi0wMDQ6IHRyeSBgcmVzb3VyY2UubmFtZWBcbiAqICAgICh3aGVuIGl0J3MgYSBub24tZW1wdHkgc3RyaW5nKSwgdGhlbiBgcmVzb3VyY2UudGl0bGVgIChzYW1lKSwgc29cbiAqICAgIHNwZWMgdHlwZXMgd2l0aCBhIHN0cmluZyBgbmFtZWAvYHRpdGxlYCBwYXJ0aWNpcGF0ZSBpbiBhbHBoYWJldGljYWxcbiAqICAgIHNvcnQgYW5kIGBCRUdJTlNfV0lUSGAgZXZlbiBpZiB0aGV5IGFyZW4ndCBpbiBgTEFCRUxfUEFUSFNgIHlldC5cbiAqIDMuIFVubGFiZWxlZCBmYWxsYmFjayDigJQgYDxJU08tODYwMSBsYXN0VXBkYXRlZD4jPGlkPmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0U29ydEtleShyZXNvdXJjZTogRmhpclJlc291cmNlTGlrZSk6IHN0cmluZyB7XG4gIGNvbnN0IGlkID0gdHlwZW9mIHJlc291cmNlLmlkID09PSBcInN0cmluZ1wiID8gcmVzb3VyY2UuaWQgOiBcIlwiO1xuXG4gIGNvbnN0IHNvdXJjZSA9IExBQkVMX1BBVEhTW3Jlc291cmNlLnJlc291cmNlVHlwZV07XG4gIGlmIChzb3VyY2UpIHtcbiAgICBjb25zdCBsYWJlbCA9IGV4dHJhY3RMYWJlbChyZXNvdXJjZSwgc291cmNlKTtcbiAgICBpZiAobGFiZWwubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGAke25vcm1hbGl6ZUxhYmVsKGxhYmVsKX0jJHtpZH1gO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGludHJvc3BlY3RlZCA9XG4gICAgaW50cm9zcGVjdFN0cmluZ0ZpZWxkKHJlc291cmNlLCBcIm5hbWVcIikgPz9cbiAgICBpbnRyb3NwZWN0U3RyaW5nRmllbGQocmVzb3VyY2UsIFwidGl0bGVcIik7XG4gIGlmIChpbnRyb3NwZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBgJHtub3JtYWxpemVMYWJlbChpbnRyb3NwZWN0ZWQpfSMke2lkfWA7XG4gIH1cblxuICBjb25zdCBsYXN0VXBkYXRlZCA9XG4gICAgdHlwZW9mIHJlc291cmNlLm1ldGE/Lmxhc3RVcGRhdGVkID09PSBcInN0cmluZ1wiXG4gICAgICA/IHJlc291cmNlLm1ldGEubGFzdFVwZGF0ZWRcbiAgICAgIDogXCJcIjtcbiAgcmV0dXJuIGAke2xhc3RVcGRhdGVkfSMke2lkfWA7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdmFsdWUgb2YgYGZpZWxkYCBvbiBgcmVzb3VyY2VgIG9ubHkgaWYgaXQncyBhIG5vbi1lbXB0eSBzdHJpbmcuXG4gKiBHdWFyZHMgYWdhaW5zdCBIdW1hbk5hbWUgYXJyYXlzIChQYXRpZW50Lm5hbWUpIGFuZCBvdGhlciBub24tc3RyaW5nIHNoYXBlc1xuICogc28gdGhlIGludHJvc3BlY3Rpb24gZmFsbGJhY2sgbmV2ZXIgcHJvZHVjZXMgYSBrZXkgZnJvbSBhIHR5cGVkIGZpZWxkIGl0XG4gKiBkb2Vzbid0IHVuZGVyc3RhbmQg4oCUIHRoYXQgY2FzZSBzdGF5cyBvbiB0aGUgbGFzdFVwZGF0ZWQgZmFsbGJhY2suXG4gKi9cbmZ1bmN0aW9uIGludHJvc3BlY3RTdHJpbmdGaWVsZChcbiAgcmVzb3VyY2U6IEZoaXJSZXNvdXJjZUxpa2UsXG4gIGZpZWxkOiBzdHJpbmcsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCB2YWx1ZSA9IHJlc291cmNlW2ZpZWxkXTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS5sZW5ndGggPiAwKSByZXR1cm4gdmFsdWU7XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RMYWJlbChyZXNvdXJjZTogRmhpclJlc291cmNlTGlrZSwgc291cmNlOiBMYWJlbFNvdXJjZSk6IHN0cmluZyB7XG4gIGlmIChzb3VyY2Uua2luZCA9PT0gXCJodW1hbk5hbWVcIikge1xuICAgIGNvbnN0IG5hbWVzID0gcmVzb3VyY2Vbc291cmNlLnBhdGhdO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShuYW1lcykpIHJldHVybiBcIlwiO1xuICAgIGNvbnN0IGZpcnN0ID0gbmFtZXNbMF07XG4gICAgaWYgKCFmaXJzdCB8fCB0eXBlb2YgZmlyc3QgIT09IFwib2JqZWN0XCIpIHJldHVybiBcIlwiO1xuICAgIGNvbnN0IG5hbWUgPSBmaXJzdCBhcyB7IGZhbWlseT86IHVua25vd247IGdpdmVuPzogdW5rbm93biB9O1xuICAgIGNvbnN0IGZhbWlseSA9IHR5cGVvZiBuYW1lLmZhbWlseSA9PT0gXCJzdHJpbmdcIiA/IG5hbWUuZmFtaWx5IDogXCJcIjtcbiAgICBjb25zdCBnaXZlbiA9XG4gICAgICBBcnJheS5pc0FycmF5KG5hbWUuZ2l2ZW4pICYmIHR5cGVvZiBuYW1lLmdpdmVuWzBdID09PSBcInN0cmluZ1wiXG4gICAgICAgID8gbmFtZS5naXZlblswXVxuICAgICAgICA6IFwiXCI7XG4gICAgaWYgKGZhbWlseS5sZW5ndGggPT09IDAgJiYgZ2l2ZW4ubGVuZ3RoID09PSAwKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gYCR7ZmFtaWx5fSwke2dpdmVufWA7XG4gIH1cblxuICBpZiAoc291cmNlLmtpbmQgPT09IFwic3RyaW5nXCIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHJlc291cmNlW3NvdXJjZS5wYXRoXTtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUgOiBcIlwiO1xuICB9XG5cbiAgaWYgKHNvdXJjZS5raW5kID09PSBcImNvZGVEaXNwbGF5XCIpIHtcbiAgICBjb25zdCBjb2RlID0gcmVzb3VyY2Vbc291cmNlLnBhdGhdO1xuICAgIGlmICghY29kZSB8fCB0eXBlb2YgY29kZSAhPT0gXCJvYmplY3RcIikgcmV0dXJuIFwiXCI7XG4gICAgY29uc3QgY2MgPSBjb2RlIGFzIHtcbiAgICAgIGNvZGluZz86IHVua25vd247XG4gICAgICB0ZXh0PzogdW5rbm93bjtcbiAgICB9O1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNjLmNvZGluZykpIHtcbiAgICAgIGNvbnN0IGZpcnN0ID0gY2MuY29kaW5nWzBdO1xuICAgICAgaWYgKGZpcnN0ICYmIHR5cGVvZiBmaXJzdCA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBjb25zdCBkaXNwbGF5ID0gKGZpcnN0IGFzIHsgZGlzcGxheT86IHVua25vd24gfSkuZGlzcGxheTtcbiAgICAgICAgaWYgKHR5cGVvZiBkaXNwbGF5ID09PSBcInN0cmluZ1wiICYmIGRpc3BsYXkubGVuZ3RoID4gMCkgcmV0dXJuIGRpc3BsYXk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgY2MudGV4dCA9PT0gXCJzdHJpbmdcIiA/IGNjLnRleHQgOiBcIlwiO1xuICB9XG5cbiAgcmV0dXJuIFwiXCI7XG59XG5cbi8qKlxuICogTm9ybWFsaXplIGEgbmF0dXJhbC1sYW5ndWFnZSBsYWJlbCBwZXIgRFItMDA0OlxuICogMS4gQVNDSUktZm9sZCBjb21tb24gTGF0aW4gZGlhY3JpdGljcyAow7HihpJuLCDDqeKGkmUsIMO44oaSbywg4oCmKS5cbiAqIDIuIExvd2VyY2FzZSAoRHluYW1vREIgYnl0ZS1vcmRlciBzb3J0KS5cbiAqIDMuIFN0cmlwIGFwb3N0cm9waGVzIGFuZCBwZXJpb2RzIChzbyBgTydDb25ub3JgIOKGkiBgb2Nvbm5vcmApLlxuICogNC4gUmVwbGFjZSBoeXBoZW5zIHdpdGggc3BhY2VzIChzbyBgR2FyY8OtYS1Mw7NwZXpgIOKGkiBgZ2FyY2lhIGxvcGV6YCkuXG4gKiA1LiBTdHJpcCBvdGhlciBwdW5jdHVhdGlvbiwgY29sbGFwc2UgcnVucyBvZiB3aGl0ZXNwYWNlLCB0cmltLlxuICpcbiAqIE5vbi1MYXRpbiBzY3JpcHRzIHBhc3MgdGhyb3VnaCB1bmNoYW5nZWQgYWZ0ZXIgQVNDSUktZm9sZCBzbyBzYW1lLXNjcmlwdFxuICogaXRlbXMgc29ydCB0b2dldGhlci4gTG9jYWxlLWF3YXJlIGNvbGxhdGlvbiBpcyBhIGRvd25zdHJlYW0gY2xpZW50XG4gKiBjb25jZXJuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplTGFiZWwoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBhc2NpaUZvbGQoaW5wdXQpXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAucmVwbGFjZSgvWyfigJkuXS9nLCBcIlwiKVxuICAgIC5yZXBsYWNlKC8tL2csIFwiIFwiKVxuICAgIC5yZXBsYWNlKC9bXlxccHtMfVxccHtOfSxcXHNdL2d1LCBcIiBcIilcbiAgICAucmVwbGFjZSgvXFxzKy9nLCBcIiBcIilcbiAgICAudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBhc2NpaUZvbGQoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIERlY29tcG9zZSBhY2NlbnRzIGFuZCBzdHJpcCBjb21iaW5pbmcgbWFya3M7IGNvdmVycyB0aGUgY29tbW9uIExhdGluXG4gIC8vIGRpYWNyaXRpY3MgKMOpLCDDsSwgw7wsIOKApikuIE5vbi1MYXRpbiBzY3JpcHRzIGFyZSB1bmFmZmVjdGVkLlxuICByZXR1cm4gaW5wdXQubm9ybWFsaXplKFwiTkZLRFwiKS5yZXBsYWNlKC9cXHB7TX0rL2d1LCBcIlwiKTtcbn1cbiJdfQ==
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdC1zb3J0LWtleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zb3J0LWtleS9leHRyYWN0LXNvcnQta2V5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7O0dBWUc7O0FBcUJILHdDQWFDO0FBYUQsb0NBYUM7QUFpR0Qsd0NBUUM7QUFuS0QsK0NBQThEO0FBRzlEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxRQUEwQjtJQUN2RCxNQUFNLEVBQUUsR0FBRyxPQUFPLFFBQVEsQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFOUQsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sR0FBRyxLQUFLLElBQUksRUFBRSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUNmLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxXQUFXLEtBQUssUUFBUTtRQUM1QyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXO1FBQzNCLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDVCxPQUFPLEdBQUcsV0FBVyxJQUFJLEVBQUUsRUFBRSxDQUFDO0FBQ2hDLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLFFBQTBCO0lBQ3JELE1BQU0sTUFBTSxHQUFHLHlCQUFXLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xELElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkQsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUM7WUFB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QUFFLENBQUM7QUFDWixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQixjQUFjLENBQUMsS0FBYTtJQUMxQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUM7U0FDcEIsV0FBVyxFQUFFO1NBQ2IsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7U0FDckIsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7U0FDbEIsT0FBTyxDQUFDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQztTQUNsQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQztTQUNwQixJQUFJLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxLQUFhO0lBQzlCLHVFQUF1RTtJQUN2RSw2REFBNkQ7SUFDN0QsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDekQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHVyZSBwcm9qZWN0aW9uIG9mIGEgRkhJUiBSNCByZXNvdXJjZSBpbnRvIGl0cyBHU0kxIHNvcnQga2V5IHBlciBEUi0wMDQuXG4gKlxuICogLSBMYWJlbGVkIHR5cGVzIChlbnRyaWVzIGluIGBMQUJFTF9QQVRIU2ApOiBgPG5vcm1hbGl6ZWRMYWJlbD4jPGlkPmBcbiAqICAgc28gbGlzdCBlbmRwb2ludHMgc29ydCBhbHBoYWJldGljYWxseSBhbmQgYEJFR0lOU19XSVRIYCBzZXJ2ZXNcbiAqICAgcHJlZml4IHF1ZXJpZXMgbGlrZSBgP25hbWU9U21gLlxuICogLSBVbmxhYmVsZWQgdHlwZXM6IGA8SVNPLTg2MDEgbGFzdFVwZGF0ZWQ+IzxpZD5gIHNvIGxpc3QgZW5kcG9pbnRzXG4gKiAgIHNlcnZlIHJldmVyc2UtY2hyb25vbG9naWNhbCB3aXRoIGBTY2FuSW5kZXhGb3J3YXJkPWZhbHNlYC5cbiAqXG4gKiBQdXJlOiBubyBJL08sIG5vIER5bmFtb0RCIGFjY2VzcywgZGV0ZXJtaW5pc3RpYyBvdmVyIHRoZSByZXNvdXJjZSBhbmRcbiAqIHRoZSBjb21taXR0ZWQgYExBQkVMX1BBVEhTYCB0YWJsZS4gQ29uc3VtZWQgYnkgdGhlIGRhdGEtcGxhbmUgd3JpdGVyXG4gKiBiZWZvcmUgZWFjaCBgUHV0SXRlbWAgLyBgVXBkYXRlSXRlbWAuXG4gKi9cblxuaW1wb3J0IHsgTEFCRUxfUEFUSFMsIHR5cGUgTGFiZWxTb3VyY2UgfSBmcm9tIFwiLi9sYWJlbC1wYXRoc1wiO1xuaW1wb3J0IHR5cGUgeyBGaGlyUmVzb3VyY2VMaWtlIH0gZnJvbSBcIi4uL3N1bW1hcnkvZXh0cmFjdC1zdW1tYXJ5XCI7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgR1NJMSBzb3J0LWtleSB2YWx1ZSBmb3IgYHJlc291cmNlYC4gVGhlIGlkIGlzIHRoZVxuICogdGllLWJyZWFrZXIgc3VmZml4OyBjYWxsZXJzIG11c3QgcGFzcyBhIHJlc291cmNlIHRoYXQgY2FycmllcyBhbiBgaWRgXG4gKiBmb3IgYW4gYDxpZD5gIHNlZ21lbnQgdG8gYmUgcHJlc2VudCwgYnV0IGBleHRyYWN0U29ydEtleWAgcmV0dXJuc1xuICogYDxsYWJlbD4jYCAob3IgYDxsYXN0VXBkYXRlZD4jYCkgd2l0aCBhbiBlbXB0eSB0cmFpbGluZyBzZWdtZW50IHdoZW4gaWRcbiAqIGlzIG1pc3NpbmcgcmF0aGVyIHRoYW4gdGhyb3dpbmcg4oCUIHRoZSBjYWxsZXIgdmFsaWRhdGVzIGlkIGF0IHRoZVxuICogd3JpdGUtcGF0aCBlbnRyeS5cbiAqXG4gKiBSZXNvbHV0aW9uIG9yZGVyOlxuICogMS4gYExBQkVMX1BBVEhTW3Jlc291cmNlVHlwZV1gIOKAlCB0aGUgY3VyYXRlZCwgdHlwZS1hd2FyZSBleHRyYWN0aW9uLlxuICogMi4gSW50cm9zcGVjdGlvbiBmYWxsYmFjayBwZXIgQURSLTAxMSAvIERSLTAwNDogdHJ5IGByZXNvdXJjZS5uYW1lYFxuICogICAgKHdoZW4gaXQncyBhIG5vbi1lbXB0eSBzdHJpbmcpLCB0aGVuIGByZXNvdXJjZS50aXRsZWAgKHNhbWUpLCBzb1xuICogICAgc3BlYyB0eXBlcyB3aXRoIGEgc3RyaW5nIGBuYW1lYC9gdGl0bGVgIHBhcnRpY2lwYXRlIGluIGFscGhhYmV0aWNhbFxuICogICAgc29ydCBhbmQgYEJFR0lOU19XSVRIYCBldmVuIGlmIHRoZXkgYXJlbid0IGluIGBMQUJFTF9QQVRIU2AgeWV0LlxuICogMy4gVW5sYWJlbGVkIGZhbGxiYWNrIOKAlCBgPElTTy04NjAxIGxhc3RVcGRhdGVkPiM8aWQ+YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RTb3J0S2V5KHJlc291cmNlOiBGaGlyUmVzb3VyY2VMaWtlKTogc3RyaW5nIHtcbiAgY29uc3QgaWQgPSB0eXBlb2YgcmVzb3VyY2UuaWQgPT09IFwic3RyaW5nXCIgPyByZXNvdXJjZS5pZCA6IFwiXCI7XG5cbiAgY29uc3QgbGFiZWwgPSBleHRyYWN0TGFiZWwocmVzb3VyY2UpO1xuICBpZiAobGFiZWwgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBgJHtsYWJlbH0jJHtpZH1gO1xuICB9XG5cbiAgY29uc3QgbGFzdFVwZGF0ZWQgPVxuICAgIHR5cGVvZiByZXNvdXJjZS5tZXRhPy5sYXN0VXBkYXRlZCA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyByZXNvdXJjZS5tZXRhLmxhc3RVcGRhdGVkXG4gICAgICA6IFwiXCI7XG4gIHJldHVybiBgJHtsYXN0VXBkYXRlZH0jJHtpZH1gO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIG5vcm1hbGl6ZWQgbmF0dXJhbCBsYWJlbCBmb3IgYHJlc291cmNlYCwgb3IgYHVuZGVmaW5lZGAgd2hlblxuICogbm8gbGFiZWwgY2FuIGJlIGV4dHJhY3RlZC4gVXNlZCBkaXJlY3RseSBieSBjb250cm9sLXBsYW5lIHdyaXRlcnMgdGhhdFxuICogY29tcG9zZSB0aGVpciBvd24gYDxsYWJlbD4jPGlkPmAgdnMgYDxlbnRpdHkubGFzdFVwZGF0ZWQ+IzxpZD5gIGZhbGxiYWNrLFxuICogYW5kIGluZGlyZWN0bHkgYnkgYGV4dHJhY3RTb3J0S2V5YCBmb3IgdGhlIGRhdGEgcGxhbmUuXG4gKlxuICogUmVzb2x1dGlvbiBvcmRlciBtYXRjaGVzIGBleHRyYWN0U29ydEtleWA6XG4gKiAxLiBgTEFCRUxfUEFUSFNbcmVzb3VyY2VUeXBlXWAg4oCUIGN1cmF0ZWQsIHR5cGUtYXdhcmUgZXh0cmFjdGlvbi5cbiAqIDIuIEludHJvc3BlY3Rpb24gZmFsbGJhY2sg4oCUIGByZXNvdXJjZS5uYW1lYCAoc3RyaW5nKSwgdGhlbiBgcmVzb3VyY2UudGl0bGVgLlxuICogMy4gUmV0dXJucyBgdW5kZWZpbmVkYCBzbyB0aGUgY2FsbGVyIGNhbiBkZWNpZGUgb24gaXRzIG93biBmYWxsYmFjay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RMYWJlbChyZXNvdXJjZTogRmhpclJlc291cmNlTGlrZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHNvdXJjZSA9IExBQkVMX1BBVEhTW3Jlc291cmNlLnJlc291cmNlVHlwZV07XG4gIGlmIChzb3VyY2UpIHtcbiAgICBjb25zdCByYXcgPSBleHRyYWN0TGFiZWxCeVNvdXJjZShyZXNvdXJjZSwgc291cmNlKTtcbiAgICBpZiAocmF3Lmxlbmd0aCA+IDApIHJldHVybiBub3JtYWxpemVMYWJlbChyYXcpO1xuICB9XG5cbiAgY29uc3QgaW50cm9zcGVjdGVkID1cbiAgICBpbnRyb3NwZWN0U3RyaW5nRmllbGQocmVzb3VyY2UsIFwibmFtZVwiKSA/P1xuICAgIGludHJvc3BlY3RTdHJpbmdGaWVsZChyZXNvdXJjZSwgXCJ0aXRsZVwiKTtcbiAgaWYgKGludHJvc3BlY3RlZCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gbm9ybWFsaXplTGFiZWwoaW50cm9zcGVjdGVkKTtcblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHZhbHVlIG9mIGBmaWVsZGAgb24gYHJlc291cmNlYCBvbmx5IGlmIGl0J3MgYSBub24tZW1wdHkgc3RyaW5nLlxuICogR3VhcmRzIGFnYWluc3QgSHVtYW5OYW1lIGFycmF5cyAoUGF0aWVudC5uYW1lKSBhbmQgb3RoZXIgbm9uLXN0cmluZyBzaGFwZXNcbiAqIHNvIHRoZSBpbnRyb3NwZWN0aW9uIGZhbGxiYWNrIG5ldmVyIHByb2R1Y2VzIGEga2V5IGZyb20gYSB0eXBlZCBmaWVsZCBpdFxuICogZG9lc24ndCB1bmRlcnN0YW5kIOKAlCB0aGF0IGNhc2Ugc3RheXMgb24gdGhlIGxhc3RVcGRhdGVkIGZhbGxiYWNrLlxuICovXG5mdW5jdGlvbiBpbnRyb3NwZWN0U3RyaW5nRmllbGQoXG4gIHJlc291cmNlOiBGaGlyUmVzb3VyY2VMaWtlLFxuICBmaWVsZDogc3RyaW5nLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdmFsdWUgPSByZXNvdXJjZVtmaWVsZF07XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUubGVuZ3RoID4gMCkgcmV0dXJuIHZhbHVlO1xuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0TGFiZWxCeVNvdXJjZShcbiAgcmVzb3VyY2U6IEZoaXJSZXNvdXJjZUxpa2UsXG4gIHNvdXJjZTogTGFiZWxTb3VyY2UsXG4pOiBzdHJpbmcge1xuICBpZiAoc291cmNlLmtpbmQgPT09IFwiaHVtYW5OYW1lXCIpIHtcbiAgICBjb25zdCBuYW1lcyA9IHJlc291cmNlW3NvdXJjZS5wYXRoXTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobmFtZXMpKSByZXR1cm4gXCJcIjtcbiAgICBjb25zdCBmaXJzdCA9IG5hbWVzWzBdO1xuICAgIGlmICghZmlyc3QgfHwgdHlwZW9mIGZpcnN0ICE9PSBcIm9iamVjdFwiKSByZXR1cm4gXCJcIjtcbiAgICBjb25zdCBuYW1lID0gZmlyc3QgYXMgeyBmYW1pbHk/OiB1bmtub3duOyBnaXZlbj86IHVua25vd24gfTtcbiAgICBjb25zdCBmYW1pbHkgPSB0eXBlb2YgbmFtZS5mYW1pbHkgPT09IFwic3RyaW5nXCIgPyBuYW1lLmZhbWlseSA6IFwiXCI7XG4gICAgY29uc3QgZ2l2ZW4gPVxuICAgICAgQXJyYXkuaXNBcnJheShuYW1lLmdpdmVuKSAmJiB0eXBlb2YgbmFtZS5naXZlblswXSA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IG5hbWUuZ2l2ZW5bMF1cbiAgICAgICAgOiBcIlwiO1xuICAgIGlmIChmYW1pbHkubGVuZ3RoID09PSAwICYmIGdpdmVuLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiXCI7XG4gICAgcmV0dXJuIGAke2ZhbWlseX0sJHtnaXZlbn1gO1xuICB9XG5cbiAgaWYgKHNvdXJjZS5raW5kID09PSBcInN0cmluZ1wiKSB7XG4gICAgY29uc3QgdmFsdWUgPSByZXNvdXJjZVtzb3VyY2UucGF0aF07XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogXCJcIjtcbiAgfVxuXG4gIGlmIChzb3VyY2Uua2luZCA9PT0gXCJjb2RlRGlzcGxheVwiKSB7XG4gICAgY29uc3QgY29kZSA9IHJlc291cmNlW3NvdXJjZS5wYXRoXTtcbiAgICBpZiAoIWNvZGUgfHwgdHlwZW9mIGNvZGUgIT09IFwib2JqZWN0XCIpIHJldHVybiBcIlwiO1xuICAgIGNvbnN0IGNjID0gY29kZSBhcyB7XG4gICAgICBjb2Rpbmc/OiB1bmtub3duO1xuICAgICAgdGV4dD86IHVua25vd247XG4gICAgfTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjYy5jb2RpbmcpKSB7XG4gICAgICBjb25zdCBmaXJzdCA9IGNjLmNvZGluZ1swXTtcbiAgICAgIGlmIChmaXJzdCAmJiB0eXBlb2YgZmlyc3QgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgY29uc3QgZGlzcGxheSA9IChmaXJzdCBhcyB7IGRpc3BsYXk/OiB1bmtub3duIH0pLmRpc3BsYXk7XG4gICAgICAgIGlmICh0eXBlb2YgZGlzcGxheSA9PT0gXCJzdHJpbmdcIiAmJiBkaXNwbGF5Lmxlbmd0aCA+IDApIHJldHVybiBkaXNwbGF5O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIGNjLnRleHQgPT09IFwic3RyaW5nXCIgPyBjYy50ZXh0IDogXCJcIjtcbiAgfVxuXG4gIGlmIChzb3VyY2Uua2luZCA9PT0gXCJpZGVudGlmaWVyXCIpIHtcbiAgICByZXR1cm4gZXh0cmFjdElkZW50aWZpZXJWYWx1ZShyZXNvdXJjZVtzb3VyY2UucGF0aF0pO1xuICB9XG5cbiAgcmV0dXJuIFwiXCI7XG59XG5cbi8qKlxuICogUmVhZHMgYElkZW50aWZpZXIudmFsdWVgIGZyb20gYSBGSElSIGBJZGVudGlmaWVyYCBvciBgSWRlbnRpZmllcltdYCBmaWVsZC5cbiAqIE1vc3QgRkhJUiBSNCByZXNvdXJjZXMgZXhwb3NlIGBpZGVudGlmaWVyYCBhcyBhbiBhcnJheTsgYSBmZXcgKEJ1bmRsZSxcbiAqIFF1ZXN0aW9ubmFpcmVSZXNwb25zZSkgdXNlIGEgc2luZ3VsYXIgYElkZW50aWZpZXJgLiBSZXR1cm5zIGVtcHR5IHdoZW4gbm9cbiAqIHVzYWJsZSB2YWx1ZSBpcyBwcmVzZW50IHNvIHRoZSBjYWxsZXIncyBlbXB0eS1sYWJlbCBmYWxsdGhyb3VnaCBraWNrcyBpbi5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdElkZW50aWZpZXJWYWx1ZShmaWVsZDogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmIChBcnJheS5pc0FycmF5KGZpZWxkKSkge1xuICAgIGNvbnN0IGZpcnN0ID0gZmllbGRbMF07XG4gICAgaWYgKCFmaXJzdCB8fCB0eXBlb2YgZmlyc3QgIT09IFwib2JqZWN0XCIpIHJldHVybiBcIlwiO1xuICAgIGNvbnN0IHZhbHVlID0gKGZpcnN0IGFzIHsgdmFsdWU/OiB1bmtub3duIH0pLnZhbHVlO1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZSA6IFwiXCI7XG4gIH1cbiAgaWYgKGZpZWxkICYmIHR5cGVvZiBmaWVsZCA9PT0gXCJvYmplY3RcIikge1xuICAgIGNvbnN0IHZhbHVlID0gKGZpZWxkIGFzIHsgdmFsdWU/OiB1bmtub3duIH0pLnZhbHVlO1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZSA6IFwiXCI7XG4gIH1cbiAgcmV0dXJuIFwiXCI7XG59XG5cbi8qKlxuICogTm9ybWFsaXplIGEgbmF0dXJhbC1sYW5ndWFnZSBsYWJlbCBwZXIgRFItMDA0OlxuICogMS4gQVNDSUktZm9sZCBjb21tb24gTGF0aW4gZGlhY3JpdGljcyAow7HihpJuLCDDqeKGkmUsIMO44oaSbywg4oCmKS5cbiAqIDIuIExvd2VyY2FzZSAoRHluYW1vREIgYnl0ZS1vcmRlciBzb3J0KS5cbiAqIDMuIFN0cmlwIGFwb3N0cm9waGVzIGFuZCBwZXJpb2RzIChzbyBgTydDb25ub3JgIOKGkiBgb2Nvbm5vcmApLlxuICogNC4gUmVwbGFjZSBoeXBoZW5zIHdpdGggc3BhY2VzIChzbyBgR2FyY8OtYS1Mw7NwZXpgIOKGkiBgZ2FyY2lhIGxvcGV6YCkuXG4gKiA1LiBTdHJpcCBvdGhlciBwdW5jdHVhdGlvbiwgY29sbGFwc2UgcnVucyBvZiB3aGl0ZXNwYWNlLCB0cmltLlxuICpcbiAqIE5vbi1MYXRpbiBzY3JpcHRzIHBhc3MgdGhyb3VnaCB1bmNoYW5nZWQgYWZ0ZXIgQVNDSUktZm9sZCBzbyBzYW1lLXNjcmlwdFxuICogaXRlbXMgc29ydCB0b2dldGhlci4gTG9jYWxlLWF3YXJlIGNvbGxhdGlvbiBpcyBhIGRvd25zdHJlYW0gY2xpZW50XG4gKiBjb25jZXJuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplTGFiZWwoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBhc2NpaUZvbGQoaW5wdXQpXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAucmVwbGFjZSgvWyfigJkuXS9nLCBcIlwiKVxuICAgIC5yZXBsYWNlKC8tL2csIFwiIFwiKVxuICAgIC5yZXBsYWNlKC9bXlxccHtMfVxccHtOfSxcXHNdL2d1LCBcIiBcIilcbiAgICAucmVwbGFjZSgvXFxzKy9nLCBcIiBcIilcbiAgICAudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBhc2NpaUZvbGQoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIERlY29tcG9zZSBhY2NlbnRzIGFuZCBzdHJpcCBjb21iaW5pbmcgbWFya3M7IGNvdmVycyB0aGUgY29tbW9uIExhdGluXG4gIC8vIGRpYWNyaXRpY3MgKMOpLCDDsSwgw7wsIOKApikuIE5vbi1MYXRpbiBzY3JpcHRzIGFyZSB1bmFmZmVjdGVkLlxuICByZXR1cm4gaW5wdXQubm9ybWFsaXplKFwiTkZLRFwiKS5yZXBsYWNlKC9cXHB7TX0rL2d1LCBcIlwiKTtcbn1cbiJdfQ==
@@ -1,29 +1,52 @@
1
1
  /**
2
2
  * `LABEL_PATHS` — per-resource-type label-extraction rule for `extractSortKey`.
3
- * Hand-curated platform-tier table per DR-004.
3
+ * Hand-curated table per DR-004.
4
4
  *
5
5
  * Resource types listed here emit GSI1 sort keys of the form
6
6
  * `<normalizedLabel>#<id>` so list endpoints return alphabetically sorted by
7
7
  * natural label and `BEGINS_WITH` queries serve prefix searches like
8
- * `?name=Sm`. Resource types absent from this map fall back to
9
- * `<ISO-8601 lastUpdated>#<id>`.
8
+ * `?name=Sm` or `?identifier=INV-2024`. Resource types absent from this map
9
+ * fall back to `<ISO-8601 lastUpdated>#<id>`.
10
10
  *
11
- * The minimum platform-curated set per DR-004 is Patient, Practitioner,
12
- * Organization, Location, Medication. New entries here are one-line additions
13
- * reviewed at PR time no engine change required.
11
+ * Five buckets cover the FHIR R4 surface:
12
+ *
13
+ * - **humanName** `name: HumanName[]` (Patient, Practitioner, Person,
14
+ * RelatedPerson). Label is `family,given`.
15
+ * - **string** with `path: "name"` — plain string `name` fields on
16
+ * directory-style resources (Organization, Location, Account, …) and
17
+ * on conformance resources (StructureDefinition, ValueSet, …).
18
+ * - **string** with `path: "title"` — title-keyed resources where the
19
+ * business label is `title` rather than `name` (CarePlan, Composition,
20
+ * Contract, List, ResearchStudy, …).
21
+ * - **codeDisplay** — primary CodeableConcept on the resource
22
+ * (Condition.code, Observation.code, Immunization.vaccineCode,
23
+ * BodyStructure.morphology, …). Label is `coding[0].display` with
24
+ * `text` fallback.
25
+ * - **identifier** — business identifier on transactional / financial /
26
+ * scheduling resources (Claim.identifier, Invoice.identifier,
27
+ * Encounter.identifier, …). Label is `identifier[0].value`.
28
+ *
29
+ * Resource types not in this table fall through to `<lastUpdated>#<id>` —
30
+ * intentional for event-log and metadata resources (AuditEvent, Bundle,
31
+ * Provenance, Linkage, MessageHeader, VerificationResult) and for the
32
+ * substance / medicinal-product detail families (SubstanceNucleicAcid,
33
+ * MedicinalProductIngredient, …) that are not list-by-name resources.
14
34
  *
15
35
  * @see openhi-planning DR-004 — FHIR Summary-Attribute and Sort-Key Projection Strategy
16
36
  */
17
37
  /** Source of the natural label for a labeled resource type. */
18
38
  export type LabelSource = {
19
39
  kind: "humanName";
20
- path: "name";
40
+ path: string;
21
41
  } | {
22
42
  kind: "string";
23
- path: "name";
43
+ path: string;
24
44
  } | {
25
45
  kind: "codeDisplay";
26
- path: "code";
46
+ path: string;
47
+ } | {
48
+ kind: "identifier";
49
+ path: string;
27
50
  };
28
- /** Resource types with curated natural labels (DR-004 Tier 1). */
51
+ /** Resource types with curated natural labels. */
29
52
  export declare const LABEL_PATHS: Record<string, LabelSource>;
@@ -1,28 +1,169 @@
1
1
  "use strict";
2
2
  /**
3
3
  * `LABEL_PATHS` — per-resource-type label-extraction rule for `extractSortKey`.
4
- * Hand-curated platform-tier table per DR-004.
4
+ * Hand-curated table per DR-004.
5
5
  *
6
6
  * Resource types listed here emit GSI1 sort keys of the form
7
7
  * `<normalizedLabel>#<id>` so list endpoints return alphabetically sorted by
8
8
  * natural label and `BEGINS_WITH` queries serve prefix searches like
9
- * `?name=Sm`. Resource types absent from this map fall back to
10
- * `<ISO-8601 lastUpdated>#<id>`.
9
+ * `?name=Sm` or `?identifier=INV-2024`. Resource types absent from this map
10
+ * fall back to `<ISO-8601 lastUpdated>#<id>`.
11
11
  *
12
- * The minimum platform-curated set per DR-004 is Patient, Practitioner,
13
- * Organization, Location, Medication. New entries here are one-line additions
14
- * reviewed at PR time no engine change required.
12
+ * Five buckets cover the FHIR R4 surface:
13
+ *
14
+ * - **humanName** `name: HumanName[]` (Patient, Practitioner, Person,
15
+ * RelatedPerson). Label is `family,given`.
16
+ * - **string** with `path: "name"` — plain string `name` fields on
17
+ * directory-style resources (Organization, Location, Account, …) and
18
+ * on conformance resources (StructureDefinition, ValueSet, …).
19
+ * - **string** with `path: "title"` — title-keyed resources where the
20
+ * business label is `title` rather than `name` (CarePlan, Composition,
21
+ * Contract, List, ResearchStudy, …).
22
+ * - **codeDisplay** — primary CodeableConcept on the resource
23
+ * (Condition.code, Observation.code, Immunization.vaccineCode,
24
+ * BodyStructure.morphology, …). Label is `coding[0].display` with
25
+ * `text` fallback.
26
+ * - **identifier** — business identifier on transactional / financial /
27
+ * scheduling resources (Claim.identifier, Invoice.identifier,
28
+ * Encounter.identifier, …). Label is `identifier[0].value`.
29
+ *
30
+ * Resource types not in this table fall through to `<lastUpdated>#<id>` —
31
+ * intentional for event-log and metadata resources (AuditEvent, Bundle,
32
+ * Provenance, Linkage, MessageHeader, VerificationResult) and for the
33
+ * substance / medicinal-product detail families (SubstanceNucleicAcid,
34
+ * MedicinalProductIngredient, …) that are not list-by-name resources.
15
35
  *
16
36
  * @see openhi-planning DR-004 — FHIR Summary-Attribute and Sort-Key Projection Strategy
17
37
  */
18
38
  Object.defineProperty(exports, "__esModule", { value: true });
19
39
  exports.LABEL_PATHS = void 0;
20
- /** Resource types with curated natural labels (DR-004 Tier 1). */
40
+ /** Resource types with curated natural labels. */
21
41
  exports.LABEL_PATHS = {
42
+ // HumanName arrays
22
43
  Patient: { kind: "humanName", path: "name" },
44
+ Person: { kind: "humanName", path: "name" },
23
45
  Practitioner: { kind: "humanName", path: "name" },
24
- Organization: { kind: "string", path: "name" },
46
+ RelatedPerson: { kind: "humanName", path: "name" },
47
+ // Plain string `name` (directory-style resources)
48
+ Account: { kind: "string", path: "name" },
49
+ CareTeam: { kind: "string", path: "name" },
50
+ Endpoint: { kind: "string", path: "name" },
51
+ Group: { kind: "string", path: "name" },
52
+ HealthcareService: { kind: "string", path: "name" },
53
+ InsurancePlan: { kind: "string", path: "name" },
25
54
  Location: { kind: "string", path: "name" },
55
+ Organization: { kind: "string", path: "name" },
56
+ // Control-plane FHIR types (ADR-2026-03-13-01 — Tenant/Workspace as FHIR types)
57
+ Tenant: { kind: "string", path: "name" },
58
+ Workspace: { kind: "string", path: "name" },
59
+ // `title`-keyed (title is the only or primary human label)
60
+ CarePlan: { kind: "string", path: "title" },
61
+ ChargeItemDefinition: { kind: "string", path: "title" },
62
+ Composition: { kind: "string", path: "title" },
63
+ Contract: { kind: "string", path: "title" },
64
+ List: { kind: "string", path: "title" },
65
+ ResearchStudy: { kind: "string", path: "title" },
66
+ // Conformance resources (string `name` is required; `title` is optional)
67
+ ActivityDefinition: { kind: "string", path: "name" },
68
+ CapabilityStatement: { kind: "string", path: "name" },
69
+ CodeSystem: { kind: "string", path: "name" },
70
+ CompartmentDefinition: { kind: "string", path: "name" },
71
+ ConceptMap: { kind: "string", path: "name" },
72
+ EffectEvidenceSynthesis: { kind: "string", path: "name" },
73
+ EventDefinition: { kind: "string", path: "name" },
74
+ Evidence: { kind: "string", path: "name" },
75
+ EvidenceVariable: { kind: "string", path: "name" },
76
+ ExampleScenario: { kind: "string", path: "name" },
77
+ GraphDefinition: { kind: "string", path: "name" },
78
+ ImplementationGuide: { kind: "string", path: "name" },
79
+ Library: { kind: "string", path: "name" },
80
+ Measure: { kind: "string", path: "name" },
81
+ MessageDefinition: { kind: "string", path: "name" },
82
+ NamingSystem: { kind: "string", path: "name" },
83
+ OperationDefinition: { kind: "string", path: "name" },
84
+ PlanDefinition: { kind: "string", path: "name" },
85
+ Questionnaire: { kind: "string", path: "name" },
86
+ ResearchDefinition: { kind: "string", path: "name" },
87
+ ResearchElementDefinition: { kind: "string", path: "name" },
88
+ RiskEvidenceSynthesis: { kind: "string", path: "name" },
89
+ SearchParameter: { kind: "string", path: "name" },
90
+ StructureDefinition: { kind: "string", path: "name" },
91
+ StructureMap: { kind: "string", path: "name" },
92
+ TerminologyCapabilities: { kind: "string", path: "name" },
93
+ TestReport: { kind: "string", path: "name" },
94
+ TestScript: { kind: "string", path: "name" },
95
+ ValueSet: { kind: "string", path: "name" },
96
+ // Primary CodeableConcept (codeDisplay reads `coding[0].display` with `text` fallback)
97
+ AdverseEvent: { kind: "codeDisplay", path: "event" },
98
+ AllergyIntolerance: { kind: "codeDisplay", path: "code" },
99
+ Basic: { kind: "codeDisplay", path: "code" },
100
+ BodyStructure: { kind: "codeDisplay", path: "morphology" },
101
+ ChargeItem: { kind: "codeDisplay", path: "code" },
102
+ Communication: { kind: "codeDisplay", path: "topic" },
103
+ Condition: { kind: "codeDisplay", path: "code" },
104
+ DetectedIssue: { kind: "codeDisplay", path: "code" },
105
+ DeviceMetric: { kind: "codeDisplay", path: "type" },
106
+ DiagnosticReport: { kind: "codeDisplay", path: "code" },
107
+ DocumentManifest: { kind: "codeDisplay", path: "type" },
108
+ DocumentReference: { kind: "codeDisplay", path: "type" },
109
+ FamilyMemberHistory: { kind: "codeDisplay", path: "relationship" },
110
+ Flag: { kind: "codeDisplay", path: "code" },
111
+ Goal: { kind: "codeDisplay", path: "description" },
112
+ Immunization: { kind: "codeDisplay", path: "vaccineCode" },
113
+ ImmunizationEvaluation: { kind: "codeDisplay", path: "vaccineCode" },
26
114
  Medication: { kind: "codeDisplay", path: "code" },
115
+ MedicationKnowledge: { kind: "codeDisplay", path: "code" },
116
+ Observation: { kind: "codeDisplay", path: "code" },
117
+ ObservationDefinition: { kind: "codeDisplay", path: "code" },
118
+ Procedure: { kind: "codeDisplay", path: "code" },
119
+ ServiceRequest: { kind: "codeDisplay", path: "code" },
120
+ Specimen: { kind: "codeDisplay", path: "type" },
121
+ SpecimenDefinition: { kind: "codeDisplay", path: "typeCollected" },
122
+ Substance: { kind: "codeDisplay", path: "code" },
123
+ Task: { kind: "codeDisplay", path: "code" },
124
+ // Business identifier — `identifier[0].value` (singular `Identifier` also supported)
125
+ Appointment: { kind: "identifier", path: "identifier" },
126
+ AppointmentResponse: { kind: "identifier", path: "identifier" },
127
+ CatalogEntry: { kind: "identifier", path: "identifier" },
128
+ Claim: { kind: "identifier", path: "identifier" },
129
+ ClaimResponse: { kind: "identifier", path: "identifier" },
130
+ ClinicalImpression: { kind: "identifier", path: "identifier" },
131
+ CommunicationRequest: { kind: "identifier", path: "identifier" },
132
+ Consent: { kind: "identifier", path: "identifier" },
133
+ Coverage: { kind: "identifier", path: "identifier" },
134
+ CoverageEligibilityRequest: { kind: "identifier", path: "identifier" },
135
+ CoverageEligibilityResponse: { kind: "identifier", path: "identifier" },
136
+ DeviceRequest: { kind: "identifier", path: "identifier" },
137
+ DeviceUseStatement: { kind: "identifier", path: "identifier" },
138
+ Encounter: { kind: "identifier", path: "identifier" },
139
+ EnrollmentRequest: { kind: "identifier", path: "identifier" },
140
+ EnrollmentResponse: { kind: "identifier", path: "identifier" },
141
+ EpisodeOfCare: { kind: "identifier", path: "identifier" },
142
+ ExplanationOfBenefit: { kind: "identifier", path: "identifier" },
143
+ GuidanceResponse: { kind: "identifier", path: "identifier" },
144
+ ImagingStudy: { kind: "identifier", path: "identifier" },
145
+ ImmunizationRecommendation: { kind: "identifier", path: "identifier" },
146
+ Invoice: { kind: "identifier", path: "identifier" },
147
+ MeasureReport: { kind: "identifier", path: "identifier" },
148
+ Media: { kind: "identifier", path: "identifier" },
149
+ MedicationAdministration: { kind: "identifier", path: "identifier" },
150
+ MedicationDispense: { kind: "identifier", path: "identifier" },
151
+ MedicationRequest: { kind: "identifier", path: "identifier" },
152
+ MedicationStatement: { kind: "identifier", path: "identifier" },
153
+ MolecularSequence: { kind: "identifier", path: "identifier" },
154
+ NutritionOrder: { kind: "identifier", path: "identifier" },
155
+ OrganizationAffiliation: { kind: "identifier", path: "identifier" },
156
+ PaymentNotice: { kind: "identifier", path: "identifier" },
157
+ PaymentReconciliation: { kind: "identifier", path: "identifier" },
158
+ PractitionerRole: { kind: "identifier", path: "identifier" },
159
+ QuestionnaireResponse: { kind: "identifier", path: "identifier" },
160
+ RequestGroup: { kind: "identifier", path: "identifier" },
161
+ ResearchSubject: { kind: "identifier", path: "identifier" },
162
+ RiskAssessment: { kind: "identifier", path: "identifier" },
163
+ Schedule: { kind: "identifier", path: "identifier" },
164
+ Slot: { kind: "identifier", path: "identifier" },
165
+ SupplyDelivery: { kind: "identifier", path: "identifier" },
166
+ SupplyRequest: { kind: "identifier", path: "identifier" },
167
+ VisionPrescription: { kind: "identifier", path: "identifier" },
27
168
  };
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwtcGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc29ydC1rZXkvbGFiZWwtcGF0aHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRzs7O0FBUUgsa0VBQWtFO0FBQ3JELFFBQUEsV0FBVyxHQUFnQztJQUN0RCxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDNUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQ2pELFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtJQUM5QyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDMUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0NBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGBMQUJFTF9QQVRIU2Ag4oCUIHBlci1yZXNvdXJjZS10eXBlIGxhYmVsLWV4dHJhY3Rpb24gcnVsZSBmb3IgYGV4dHJhY3RTb3J0S2V5YC5cbiAqIEhhbmQtY3VyYXRlZCBwbGF0Zm9ybS10aWVyIHRhYmxlIHBlciBEUi0wMDQuXG4gKlxuICogUmVzb3VyY2UgdHlwZXMgbGlzdGVkIGhlcmUgZW1pdCBHU0kxIHNvcnQga2V5cyBvZiB0aGUgZm9ybVxuICogYDxub3JtYWxpemVkTGFiZWw+IzxpZD5gIHNvIGxpc3QgZW5kcG9pbnRzIHJldHVybiBhbHBoYWJldGljYWxseSBzb3J0ZWQgYnlcbiAqIG5hdHVyYWwgbGFiZWwgYW5kIGBCRUdJTlNfV0lUSGAgcXVlcmllcyBzZXJ2ZSBwcmVmaXggc2VhcmNoZXMgbGlrZVxuICogYD9uYW1lPVNtYC4gUmVzb3VyY2UgdHlwZXMgYWJzZW50IGZyb20gdGhpcyBtYXAgZmFsbCBiYWNrIHRvXG4gKiBgPElTTy04NjAxIGxhc3RVcGRhdGVkPiM8aWQ+YC5cbiAqXG4gKiBUaGUgbWluaW11bSBwbGF0Zm9ybS1jdXJhdGVkIHNldCBwZXIgRFItMDA0IGlzIFBhdGllbnQsIFByYWN0aXRpb25lcixcbiAqIE9yZ2FuaXphdGlvbiwgTG9jYXRpb24sIE1lZGljYXRpb24uIE5ldyBlbnRyaWVzIGhlcmUgYXJlIG9uZS1saW5lIGFkZGl0aW9uc1xuICogcmV2aWV3ZWQgYXQgUFIgdGltZSDigJQgbm8gZW5naW5lIGNoYW5nZSByZXF1aXJlZC5cbiAqXG4gKiBAc2VlIG9wZW5oaS1wbGFubmluZyBEUi0wMDQg4oCUIEZISVIgU3VtbWFyeS1BdHRyaWJ1dGUgYW5kIFNvcnQtS2V5IFByb2plY3Rpb24gU3RyYXRlZ3lcbiAqL1xuXG4vKiogU291cmNlIG9mIHRoZSBuYXR1cmFsIGxhYmVsIGZvciBhIGxhYmVsZWQgcmVzb3VyY2UgdHlwZS4gKi9cbmV4cG9ydCB0eXBlIExhYmVsU291cmNlID1cbiAgfCB7IGtpbmQ6IFwiaHVtYW5OYW1lXCI7IHBhdGg6IFwibmFtZVwiIH1cbiAgfCB7IGtpbmQ6IFwic3RyaW5nXCI7IHBhdGg6IFwibmFtZVwiIH1cbiAgfCB7IGtpbmQ6IFwiY29kZURpc3BsYXlcIjsgcGF0aDogXCJjb2RlXCIgfTtcblxuLyoqIFJlc291cmNlIHR5cGVzIHdpdGggY3VyYXRlZCBuYXR1cmFsIGxhYmVscyAoRFItMDA0IFRpZXIgMSkuICovXG5leHBvcnQgY29uc3QgTEFCRUxfUEFUSFM6IFJlY29yZDxzdHJpbmcsIExhYmVsU291cmNlPiA9IHtcbiAgUGF0aWVudDogeyBraW5kOiBcImh1bWFuTmFtZVwiLCBwYXRoOiBcIm5hbWVcIiB9LFxuICBQcmFjdGl0aW9uZXI6IHsga2luZDogXCJodW1hbk5hbWVcIiwgcGF0aDogXCJuYW1lXCIgfSxcbiAgT3JnYW5pemF0aW9uOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIExvY2F0aW9uOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIE1lZGljYXRpb246IHsga2luZDogXCJjb2RlRGlzcGxheVwiLCBwYXRoOiBcImNvZGVcIiB9LFxufTtcbiJdfQ==
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwtcGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc29ydC1rZXkvbGFiZWwtcGF0aHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1DRzs7O0FBU0gsa0RBQWtEO0FBQ3JDLFFBQUEsV0FBVyxHQUFnQztJQUN0RCxtQkFBbUI7SUFDbkIsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQzVDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtJQUMzQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDakQsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBRWxELGtEQUFrRDtJQUNsRCxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDekMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQzFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtJQUMxQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDdkMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDbkQsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQy9DLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0s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SSxFQUFFLFlBQVksRUFBRTtJQUN4RCxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7SUFDM0QsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO0lBQzFELFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRTtJQUNwRCxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7SUFDaEQsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO0lBQzFELGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRTtJQUN6RCxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRTtDQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBgTEFCRUxfUEFUSFNgIOKAlCBwZXItcmVzb3VyY2UtdHlwZSBsYWJlbC1leHRyYWN0aW9uIHJ1bGUgZm9yIGBleHRyYWN0U29ydEtleWAuXG4gKiBIYW5kLWN1cmF0ZWQgdGFibGUgcGVyIERSLTAwNC5cbiAqXG4gKiBSZXNvdXJjZSB0eXBlcyBsaXN0ZWQgaGVyZSBlbWl0IEdTSTEgc29ydCBrZXlzIG9mIHRoZSBmb3JtXG4gKiBgPG5vcm1hbGl6ZWRMYWJlbD4jPGlkPmAgc28gbGlzdCBlbmRwb2ludHMgcmV0dXJuIGFscGhhYmV0aWNhbGx5IHNvcnRlZCBieVxuICogbmF0dXJhbCBsYWJlbCBhbmQgYEJFR0lOU19XSVRIYCBxdWVyaWVzIHNlcnZlIHByZWZpeCBzZWFyY2hlcyBsaWtlXG4gKiBgP25hbWU9U21gIG9yIGA/aWRlbnRpZmllcj1JTlYtMjAyNGAuIFJlc291cmNlIHR5cGVzIGFic2VudCBmcm9tIHRoaXMgbWFwXG4gKiBmYWxsIGJhY2sgdG8gYDxJU08tODYwMSBsYXN0VXBkYXRlZD4jPGlkPmAuXG4gKlxuICogRml2ZSBidWNrZXRzIGNvdmVyIHRoZSBGSElSIFI0IHN1cmZhY2U6XG4gKlxuICogLSAqKmh1bWFuTmFtZSoqIOKAlCBgbmFtZTogSHVtYW5OYW1lW11gIChQYXRpZW50LCBQcmFjdGl0aW9uZXIsIFBlcnNvbixcbiAqICAgUmVsYXRlZFBlcnNvbikuIExhYmVsIGlzIGBmYW1pbHksZ2l2ZW5gLlxuICogLSAqKnN0cmluZyoqIHdpdGggYHBhdGg6IFwibmFtZVwiYCDigJQgcGxhaW4gc3RyaW5nIGBuYW1lYCBmaWVsZHMgb25cbiAqICAgZGlyZWN0b3J5LXN0eWxlIHJlc291cmNlcyAoT3JnYW5pemF0aW9uLCBMb2NhdGlvbiwgQWNjb3VudCwg4oCmKSBhbmRcbiAqICAgb24gY29uZm9ybWFuY2UgcmVzb3VyY2VzIChTdHJ1Y3R1cmVEZWZpbml0aW9uLCBWYWx1ZVNldCwg4oCmKS5cbiAqIC0gKipzdHJpbmcqKiB3aXRoIGBwYXRoOiBcInRpdGxlXCJgIOKAlCB0aXRsZS1rZXllZCByZXNvdXJjZXMgd2hlcmUgdGhlXG4gKiAgIGJ1c2luZXNzIGxhYmVsIGlzIGB0aXRsZWAgcmF0aGVyIHRoYW4gYG5hbWVgIChDYXJlUGxhbiwgQ29tcG9zaXRpb24sXG4gKiAgIENvbnRyYWN0LCBMaXN0LCBSZXNlYXJjaFN0dWR5LCDigKYpLlxuICogLSAqKmNvZGVEaXNwbGF5Kiog4oCUIHByaW1hcnkgQ29kZWFibGVDb25jZXB0IG9uIHRoZSByZXNvdXJjZVxuICogICAoQ29uZGl0aW9uLmNvZGUsIE9ic2VydmF0aW9uLmNvZGUsIEltbXVuaXphdGlvbi52YWNjaW5lQ29kZSxcbiAqICAgQm9keVN0cnVjdHVyZS5tb3JwaG9sb2d5LCDigKYpLiBMYWJlbCBpcyBgY29kaW5nWzBdLmRpc3BsYXlgIHdpdGhcbiAqICAgYHRleHRgIGZhbGxiYWNrLlxuICogLSAqKmlkZW50aWZpZXIqKiDigJQgYnVzaW5lc3MgaWRlbnRpZmllciBvbiB0cmFuc2FjdGlvbmFsIC8gZmluYW5jaWFsIC9cbiAqICAgc2NoZWR1bGluZyByZXNvdXJjZXMgKENsYWltLmlkZW50aWZpZXIsIEludm9pY2UuaWRlbnRpZmllcixcbiAqICAgRW5jb3VudGVyLmlkZW50aWZpZXIsIOKApikuIExhYmVsIGlzIGBpZGVudGlmaWVyWzBdLnZhbHVlYC5cbiAqXG4gKiBSZXNvdXJjZSB0eXBlcyBub3QgaW4gdGhpcyB0YWJsZSBmYWxsIHRocm91Z2ggdG8gYDxsYXN0VXBkYXRlZD4jPGlkPmAg4oCUXG4gKiBpbnRlbnRpb25hbCBmb3IgZXZlbnQtbG9nIGFuZCBtZXRhZGF0YSByZXNvdXJjZXMgKEF1ZGl0RXZlbnQsIEJ1bmRsZSxcbiAqIFByb3ZlbmFuY2UsIExpbmthZ2UsIE1lc3NhZ2VIZWFkZXIsIFZlcmlmaWNhdGlvblJlc3VsdCkgYW5kIGZvciB0aGVcbiAqIHN1YnN0YW5jZSAvIG1lZGljaW5hbC1wcm9kdWN0IGRldGFpbCBmYW1pbGllcyAoU3Vic3RhbmNlTnVjbGVpY0FjaWQsXG4gKiBNZWRpY2luYWxQcm9kdWN0SW5ncmVkaWVudCwg4oCmKSB0aGF0IGFyZSBub3QgbGlzdC1ieS1uYW1lIHJlc291cmNlcy5cbiAqXG4gKiBAc2VlIG9wZW5oaS1wbGFubmluZyBEUi0wMDQg4oCUIEZISVIgU3VtbWFyeS1BdHRyaWJ1dGUgYW5kIFNvcnQtS2V5IFByb2plY3Rpb24gU3RyYXRlZ3lcbiAqL1xuXG4vKiogU291cmNlIG9mIHRoZSBuYXR1cmFsIGxhYmVsIGZvciBhIGxhYmVsZWQgcmVzb3VyY2UgdHlwZS4gKi9cbmV4cG9ydCB0eXBlIExhYmVsU291cmNlID1cbiAgfCB7IGtpbmQ6IFwiaHVtYW5OYW1lXCI7IHBhdGg6IHN0cmluZyB9XG4gIHwgeyBraW5kOiBcInN0cmluZ1wiOyBwYXRoOiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJjb2RlRGlzcGxheVwiOyBwYXRoOiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJpZGVudGlmaWVyXCI7IHBhdGg6IHN0cmluZyB9O1xuXG4vKiogUmVzb3VyY2UgdHlwZXMgd2l0aCBjdXJhdGVkIG5hdHVyYWwgbGFiZWxzLiAqL1xuZXhwb3J0IGNvbnN0IExBQkVMX1BBVEhTOiBSZWNvcmQ8c3RyaW5nLCBMYWJlbFNvdXJjZT4gPSB7XG4gIC8vIEh1bWFuTmFtZSBhcnJheXNcbiAgUGF0aWVudDogeyBraW5kOiBcImh1bWFuTmFtZVwiLCBwYXRoOiBcIm5hbWVcIiB9LFxuICBQZXJzb246IHsga2luZDogXCJodW1hbk5hbWVcIiwgcGF0aDogXCJuYW1lXCIgfSxcbiAgUHJhY3RpdGlvbmVyOiB7IGtpbmQ6IFwiaHVtYW5OYW1lXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIFJlbGF0ZWRQZXJzb246IHsga2luZDogXCJodW1hbk5hbWVcIiwgcGF0aDogXCJuYW1lXCIgfSxcblxuICAvLyBQbGFpbiBzdHJpbmcgYG5hbWVgIChkaXJlY3Rvcnktc3R5bGUgcmVzb3VyY2VzKVxuICBBY2NvdW50OiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIENhcmVUZWFtOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIEVuZHBvaW50OiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIEdyb3VwOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIEhlYWx0aGNhcmVTZXJ2aWNlOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIEluc3VyYW5jZVBsYW46IHsga2luZDogXCJzdHJpbmdcIiwgcGF0aDogXCJuYW1lXCIgfSxcbiAgTG9jYXRpb246IHsga2luZDogXCJzdHJpbmdcIiwgcGF0aDogXCJuYW1lXCIgfSxcbiAgT3JnYW5pemF0aW9uOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG5cbiAgLy8gQ29udHJvbC1wbGFuZSBGSElSIHR5cGVzIChBRFItMjAyNi0wMy0xMy0wMSDigJQgVGVuYW50L1dvcmtzcGFjZSBhcyBGSElSIHR5cGVzKVxuICBUZW5hbnQ6IHsga2luZDogXCJzdHJpbmdcIiwgcGF0aDogXCJuYW1lXCIgfSxcbiAgV29ya3NwYWNlOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG5cbiAgLy8gYHRpdGxlYC1rZXllZCAodGl0bGUgaXMgdGhlIG9ubHkgb3IgcHJpbWFyeSBodW1hbiBsYWJlbClcbiAgQ2FyZVBsYW46IHsga2luZDogXCJzdHJpbmdcIiwgcGF0aDogXCJ0aXRsZVwiIH0sXG4gIENoYXJnZUl0ZW1EZWZpbml0aW9uOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwidGl0bGVcIiB9LFxuICBDb21wb3NpdGlvbjogeyBraW5kOiBcInN0cmluZ1wiLCBwYXRoOiBcInRpdGxlXCIgfSxcbiAgQ29udHJhY3Q6IHsga2luZDogXCJzdHJpbmdcIiwgcGF0aDogXCJ0aXRsZVwiIH0sXG4gIExpc3Q6IHsga2luZDogXCJzdHJpbmdcIiwgcGF0aDogXCJ0aXRsZVwiIH0sXG4gIFJlc2VhcmNoU3R1ZHk6IHsga2luZDogXCJzdHJpbmdcIiwgcGF0aDogXCJ0aXRsZVwiIH0sXG5cbiAgLy8gQ29uZm9ybWFuY2UgcmVzb3VyY2VzIChzdHJpbmcgYG5hbWVgIGlzIHJlcXVpcmVkOyBgdGl0bGVgIGlzIG9wdGlvbmFsKVxuICBBY3Rpdml0eURlZmluaXRpb246IHsga2luZDogXCJzdHJpbmdcIiwgcGF0aDogXCJuYW1lXCIgfSxcbiAgQ2FwYWJpbGl0eVN0YXRlbWVudDogeyBraW5kOiBcInN0cmluZ1wiLCBwYXRoOiBcIm5hbWVcIiB9LFxuICBDb2RlU3lzdGVtOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIENvbXBhcnRtZW50RGVmaW5pdGlvbjogeyBraW5kOiBcInN0cmluZ1wiLCBwYXRoOiBcIm5hbWVcIiB9LFxuICBDb25jZXB0TWFwOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIEVmZmVjdEV2aWRlbmNlU3ludGhlc2lzOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIEV2ZW50RGVmaW5pdGlvbjogeyBraW5kOiBcInN0cmluZ1wiLCBwYXRoOiBcIm5hbWVcIiB9LFxuICBFdmlkZW5jZTogeyBraW5kOiBcInN0cmluZ1wiLCBwYXRoOiBcIm5hbWVcIiB9LFxuICBFdmlkZW5jZVZhcmlhYmxlOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIEV4YW1wbGVTY2VuYXJpbzogeyBraW5kOiBcInN0cmluZ1wiLCBwYXRoOiBcIm5hbWVcIiB9LFxuICBHcmFwaERlZmluaXRpb246IHsga2luZDogXCJzdHJpbmdcIiwgcGF0aDogXCJuYW1lXCIgfSxcbiAgSW1wbGVtZW50YXRpb25HdWlkZTogeyBraW5kOiBcInN0cmluZ1wiLCBwYXRoOiBcIm5hbWVcIiB9LFxuICBMaWJyYXJ5OiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIE1lYXN1cmU6IHsga2luZDogXCJzdHJpbmdcIiwgcGF0aDogXCJuYW1lXCIgfSxcbiAgTWVzc2FnZURlZmluaXRpb246IHsga2luZDogXCJzdHJpbmdcIiwgcGF0aDogXCJuYW1lXCIgfSxcbiAgTmFtaW5nU3lzdGVtOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIE9wZXJhdGlvbkRlZmluaXRpb246IHsga2luZDogXCJzdHJpbmdcIiwgcGF0aDogXCJuYW1lXCIgfSxcbiAgUGxhbkRlZmluaXRpb246IHsga2luZDogXCJzdHJpbmdcIiwgcGF0aDogXCJuYW1lXCIgfSxcbiAgUXVlc3Rpb25uYWlyZTogeyBraW5kOiBcInN0cmluZ1wiLCBwYXRoOiBcIm5hbWVcIiB9LFxuICBSZXNlYXJjaERlZmluaXRpb246IHsga2luZDogXCJzdHJpbmdcIiwgcGF0aDogXCJuYW1lXCIgfSxcbiAgUmVzZWFyY2hFbGVtZW50RGVmaW5pdGlvbjogeyBraW5kOiBcInN0cmluZ1wiLCBwYXRoOiBcIm5hbWVcIiB9LFxuICBSaXNrRXZpZGVuY2VTeW50aGVzaXM6IHsga2luZDogXCJzdHJpbmdcIiwgcGF0aDogXCJuYW1lXCIgfSxcbiAgU2VhcmNoUGFyYW1ldGVyOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIFN0cnVjdHVyZURlZmluaXRpb246IHsga2luZDogXCJzdHJpbmdcIiwgcGF0aDogXCJuYW1lXCIgfSxcbiAgU3RydWN0dXJlTWFwOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIFRlcm1pbm9sb2d5Q2FwYWJpbGl0aWVzOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIFRlc3RSZXBvcnQ6IHsga2luZDogXCJzdHJpbmdcIiwgcGF0aDogXCJuYW1lXCIgfSxcbiAgVGVzdFNjcmlwdDogeyBraW5kOiBcInN0cmluZ1wiLCBwYXRoOiBcIm5hbWVcIiB9LFxuICBWYWx1ZVNldDogeyBraW5kOiBcInN0cmluZ1wiLCBwYXRoOiBcIm5hbWVcIiB9LFxuXG4gIC8vIFByaW1hcnkgQ29kZWFibGVDb25jZXB0IChjb2RlRGlzcGxheSByZWFkcyBgY29kaW5nWzBdLmRpc3BsYXlgIHdpdGggYHRleHRgIGZhbGxiYWNrKVxuICBBZHZlcnNlRXZlbnQ6IHsga2luZDogXCJjb2RlRGlzcGxheVwiLCBwYXRoOiBcImV2ZW50XCIgfSxcbiAgQWxsZXJneUludG9sZXJhbmNlOiB7IGtpbmQ6IFwiY29kZURpc3BsYXlcIiwgcGF0aDogXCJjb2RlXCIgfSxcbiAgQmFzaWM6IHsga2luZDogXCJjb2RlRGlzcGxheVwiLCBwYXRoOiBcImNvZGVcIiB9LFxuICBCb2R5U3RydWN0dXJlOiB7IGtpbmQ6IFwiY29kZURpc3BsYXlcIiwgcGF0aDogXCJtb3JwaG9sb2d5XCIgfSxcbiAgQ2hhcmdlSXRlbTogeyBraW5kOiBcImNvZGVEaXNwbGF5XCIsIHBhdGg6IFwiY29kZVwiIH0sXG4gIENvbW11bmljYXRpb246IHsga2luZDogXCJjb2RlRGlzcGxheVwiLCBwYXRoOiBcInRvcGljXCIgfSxcbiAgQ29uZGl0aW9uOiB7IGtpbmQ6IFwiY29kZURpc3BsYXlcIiwgcGF0aDogXCJjb2RlXCIgfSxcbiAgRGV0ZWN0ZWRJc3N1ZTogeyBraW5kOiBcImNvZGVEaXNwbGF5XCIsIHBhdGg6IFwiY29kZVwiIH0sXG4gIERldmljZU1ldHJpYzogeyBraW5kOiBcImNvZGVEaXNwbGF5XCIsIHBhdGg6IFwidHlwZVwiIH0sXG4gIERpYWdub3N0aWNSZXBvcnQ6IHsga2luZDogXCJjb2RlRGlzcGxheVwiLCBwYXRoOiBcImNvZGVcIiB9LFxuICBEb2N1bWVudE1hbmlmZXN0OiB7IGtpbmQ6IFwiY29kZURpc3BsYXlcIiwgcGF0aDogXCJ0eXBlXCIgfSxcbiAgRG9jdW1lbnRSZWZlcmVuY2U6IHsga2luZDogXCJjb2RlRGlzcGxheVwiLCBwYXRoOiBcInR5cGVcIiB9LFxuICBGYW1pbHlNZW1iZXJIaXN0b3J5OiB7IGtpbmQ6IFwiY29kZURpc3BsYXlcIiwgcGF0aDogXCJyZWxhdGlvbnNoaXBcIiB9LFxuICBGbGFnOiB7IGtpbmQ6IFwiY29kZURpc3BsYXlcIiwgcGF0aDogXCJjb2RlXCIgfSxcbiAgR29hbDogeyBraW5kOiBcImNvZGVEaXNwbGF5XCIsIHBhdGg6IFwiZGVzY3JpcHRpb25cIiB9LFxuICBJbW11bml6YXRpb246IHsga2luZDogXCJjb2RlRGlzcGxheVwiLCBwYXRoOiBcInZhY2NpbmVDb2RlXCIgfSxcbiAgSW1tdW5pemF0aW9uRXZhbHVhdGlvbjogeyBraW5kOiBcImNvZGVEaXNwbGF5XCIsIHBhdGg6IFwidmFjY2luZUNvZGVcIiB9LFxuICBNZWRpY2F0aW9uOiB7IGtpbmQ6IFwiY29kZURpc3BsYXlcIiwgcGF0aDogXCJjb2RlXCIgfSxcbiAgTWVkaWNhdGlvbktub3dsZWRnZTogeyBraW5kOiBcImNvZGVEaXNwbGF5XCIsIHBhdGg6IFwiY29kZVwiIH0sXG4gIE9ic2VydmF0aW9uOiB7IGtpbmQ6IFwiY29kZURpc3BsYXlcIiwgcGF0aDogXCJjb2RlXCIgfSxcbiAgT2JzZXJ2YXRpb25EZWZpbml0aW9uOiB7IGtpbmQ6IFwiY29kZURpc3BsYXlcIiwgcGF0aDogXCJjb2RlXCIgfSxcbiAgUHJvY2VkdXJlOiB7IGtpbmQ6IFwiY29kZURpc3BsYXlcIiwgcGF0aDogXCJjb2RlXCIgfSxcbiAgU2VydmljZVJlcXVlc3Q6IHsga2luZDogXCJjb2RlRGlzcGxheVwiLCBwYXRoOiBcImNvZGVcIiB9LFxuICBTcGVjaW1lbjogeyBraW5kOiBcImNvZGVEaXNwbGF5XCIsIHBhdGg6IFwidHlwZVwiIH0sXG4gIFNwZWNpbWVuRGVmaW5pdGlvbjogeyBraW5kOiBcImNvZGVEaXNwbGF5XCIsIHBhdGg6IFwidHlwZUNvbGxlY3RlZFwiIH0sXG4gIFN1YnN0YW5jZTogeyBraW5kOiBcImNvZGVEaXNwbGF5XCIsIHBhdGg6IFwiY29kZVwiIH0sXG4gIFRhc2s6IHsga2luZDogXCJjb2RlRGlzcGxheVwiLCBwYXRoOiBcImNvZGVcIiB9LFxuXG4gIC8vIEJ1c2luZXNzIGlkZW50aWZpZXIg4oCUIGBpZGVudGlmaWVyWzBdLnZhbHVlYCAoc2luZ3VsYXIgYElkZW50aWZpZXJgIGFsc28gc3VwcG9ydGVkKVxuICBBcHBvaW50bWVudDogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgQXBwb2ludG1lbnRSZXNwb25zZTogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgQ2F0YWxvZ0VudHJ5OiB7IGtpbmQ6IFwiaWRlbnRpZmllclwiLCBwYXRoOiBcImlkZW50aWZpZXJcIiB9LFxuICBDbGFpbTogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgQ2xhaW1SZXNwb25zZTogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgQ2xpbmljYWxJbXByZXNzaW9uOiB7IGtpbmQ6IFwiaWRlbnRpZmllclwiLCBwYXRoOiBcImlkZW50aWZpZXJcIiB9LFxuICBDb21tdW5pY2F0aW9uUmVxdWVzdDogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgQ29uc2VudDogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgQ292ZXJhZ2U6IHsga2luZDogXCJpZGVudGlmaWVyXCIsIHBhdGg6IFwiaWRlbnRpZmllclwiIH0sXG4gIENvdmVyYWdlRWxpZ2liaWxpdHlSZXF1ZXN0OiB7IGtpbmQ6IFwiaWRlbnRpZmllclwiLCBwYXRoOiBcImlkZW50aWZpZXJcIiB9LFxuICBDb3ZlcmFnZUVsaWdpYmlsaXR5UmVzcG9uc2U6IHsga2luZDogXCJpZGVudGlmaWVyXCIsIHBhdGg6IFwiaWRlbnRpZmllclwiIH0sXG4gIERldmljZVJlcXVlc3Q6IHsga2luZDogXCJpZGVudGlmaWVyXCIsIHBhdGg6IFwiaWRlbnRpZmllclwiIH0sXG4gIERldmljZVVzZVN0YXRlbWVudDogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgRW5jb3VudGVyOiB7IGtpbmQ6IFwiaWRlbnRpZmllclwiLCBwYXRoOiBcImlkZW50aWZpZXJcIiB9LFxuICBFbnJvbGxtZW50UmVxdWVzdDogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgRW5yb2xsbWVudFJlc3BvbnNlOiB7IGtpbmQ6IFwiaWRlbnRpZmllclwiLCBwYXRoOiBcImlkZW50aWZpZXJcIiB9LFxuICBFcGlzb2RlT2ZDYXJlOiB7IGtpbmQ6IFwiaWRlbnRpZmllclwiLCBwYXRoOiBcImlkZW50aWZpZXJcIiB9LFxuICBFeHBsYW5hdGlvbk9mQmVuZWZpdDogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgR3VpZGFuY2VSZXNwb25zZTogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgSW1hZ2luZ1N0dWR5OiB7IGtpbmQ6IFwiaWRlbnRpZmllclwiLCBwYXRoOiBcImlkZW50aWZpZXJcIiB9LFxuICBJbW11bml6YXRpb25SZWNvbW1lbmRhdGlvbjogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgSW52b2ljZTogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgTWVhc3VyZVJlcG9ydDogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgTWVkaWE6IHsga2luZDogXCJpZGVudGlmaWVyXCIsIHBhdGg6IFwiaWRlbnRpZmllclwiIH0sXG4gIE1lZGljYXRpb25BZG1pbmlzdHJhdGlvbjogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgTWVkaWNhdGlvbkRpc3BlbnNlOiB7IGtpbmQ6IFwiaWRlbnRpZmllclwiLCBwYXRoOiBcImlkZW50aWZpZXJcIiB9LFxuICBNZWRpY2F0aW9uUmVxdWVzdDogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgTWVkaWNhdGlvblN0YXRlbWVudDogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgTW9sZWN1bGFyU2VxdWVuY2U6IHsga2luZDogXCJpZGVudGlmaWVyXCIsIHBhdGg6IFwiaWRlbnRpZmllclwiIH0sXG4gIE51dHJpdGlvbk9yZGVyOiB7IGtpbmQ6IFwiaWRlbnRpZmllclwiLCBwYXRoOiBcImlkZW50aWZpZXJcIiB9LFxuICBPcmdhbml6YXRpb25BZmZpbGlhdGlvbjogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgUGF5bWVudE5vdGljZTogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgUGF5bWVudFJlY29uY2lsaWF0aW9uOiB7IGtpbmQ6IFwiaWRlbnRpZmllclwiLCBwYXRoOiBcImlkZW50aWZpZXJcIiB9LFxuICBQcmFjdGl0aW9uZXJSb2xlOiB7IGtpbmQ6IFwiaWRlbnRpZmllclwiLCBwYXRoOiBcImlkZW50aWZpZXJcIiB9LFxuICBRdWVzdGlvbm5haXJlUmVzcG9uc2U6IHsga2luZDogXCJpZGVudGlmaWVyXCIsIHBhdGg6IFwiaWRlbnRpZmllclwiIH0sXG4gIFJlcXVlc3RHcm91cDogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgUmVzZWFyY2hTdWJqZWN0OiB7IGtpbmQ6IFwiaWRlbnRpZmllclwiLCBwYXRoOiBcImlkZW50aWZpZXJcIiB9LFxuICBSaXNrQXNzZXNzbWVudDogeyBraW5kOiBcImlkZW50aWZpZXJcIiwgcGF0aDogXCJpZGVudGlmaWVyXCIgfSxcbiAgU2NoZWR1bGU6IHsga2luZDogXCJpZGVudGlmaWVyXCIsIHBhdGg6IFwiaWRlbnRpZmllclwiIH0sXG4gIFNsb3Q6IHsga2luZDogXCJpZGVudGlmaWVyXCIsIHBhdGg6IFwiaWRlbnRpZmllclwiIH0sXG4gIFN1cHBseURlbGl2ZXJ5OiB7IGtpbmQ6IFwiaWRlbnRpZmllclwiLCBwYXRoOiBcImlkZW50aWZpZXJcIiB9LFxuICBTdXBwbHlSZXF1ZXN0OiB7IGtpbmQ6IFwiaWRlbnRpZmllclwiLCBwYXRoOiBcImlkZW50aWZpZXJcIiB9LFxuICBWaXNpb25QcmVzY3JpcHRpb246IHsga2luZDogXCJpZGVudGlmaWVyXCIsIHBhdGg6IFwiaWRlbnRpZmllclwiIH0sXG59O1xuIl19
package/package.json CHANGED
@@ -39,7 +39,7 @@
39
39
  "publishConfig": {
40
40
  "access": "public"
41
41
  },
42
- "version": "0.0.30",
42
+ "version": "0.0.32",
43
43
  "types": "lib/index.d.ts",
44
44
  "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"pnpm exec projen\".",
45
45
  "scripts": {