@serve.zone/interfaces 32.49.0 → 32.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/changelog.md +53 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/data/deploymentlegacyimport.d.ts +120 -6
- package/dist_ts/data/deploymentlegacyimport.js +289 -5
- package/dist_ts/data/index.d.ts +1 -0
- package/dist_ts/data/index.js +2 -1
- package/dist_ts/data/networkapplication.d.ts +84 -0
- package/dist_ts/data/networkapplication.js +128 -0
- package/dist_ts/data/networkprojection.d.ts +5 -3
- package/dist_ts/data/networkprojection.js +6 -4
- package/dist_ts/requests/runtimesession.d.ts +11 -0
- package/dist_ts/requests/service.d.ts +9 -5
- package/package.json +2 -2
- package/readme.md +71 -5
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/data/deploymentlegacyimport.ts +413 -13
- package/ts/data/index.ts +1 -0
- package/ts/data/networkapplication.ts +188 -0
- package/ts/data/networkprojection.ts +5 -3
- package/ts/requests/runtimesession.ts +14 -0
- package/ts/requests/service.ts +12 -5
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { normalizeSha256Digest } from './immutableimage.js';
|
|
2
|
-
import { hasExactKeys, isPlainRecord } from '../private/dataproperties.js';
|
|
2
|
+
import { hasExactKeys, isPlainRecord, readDataElements, readDataProperties, } from '../private/dataproperties.js';
|
|
3
3
|
const identifierRegex = /^[A-Za-z0-9][A-Za-z0-9:._-]{0,199}$/;
|
|
4
4
|
/** An OCI tag, the mutable `latest` included: the source tag is whatever the legacy service ran. */
|
|
5
5
|
const ociTagRegex = /^[A-Za-z0-9_][A-Za-z0-9._-]{0,127}$/;
|
|
@@ -16,6 +16,31 @@ const legacyImageImportIndexMediaTypes = [
|
|
|
16
16
|
'application/vnd.docker.distribution.manifest.list.v2+json',
|
|
17
17
|
];
|
|
18
18
|
const legacyImagePlatforms = ['linux/amd64', 'linux/arm64'];
|
|
19
|
+
const legacyHostContainerStates = [
|
|
20
|
+
'created',
|
|
21
|
+
'running',
|
|
22
|
+
'paused',
|
|
23
|
+
'restarting',
|
|
24
|
+
'removing',
|
|
25
|
+
'exited',
|
|
26
|
+
'dead',
|
|
27
|
+
];
|
|
28
|
+
const legacyHostContainerHealths = [
|
|
29
|
+
'healthy',
|
|
30
|
+
'unhealthy',
|
|
31
|
+
'starting',
|
|
32
|
+
'none',
|
|
33
|
+
];
|
|
34
|
+
/** The health states a replica may be attested in: healthy, or no healthcheck at all. */
|
|
35
|
+
const attestableLegacyHostContainerHealths = ['healthy', 'none'];
|
|
36
|
+
const legacyHostImageStores = ['containerd', 'classic'];
|
|
37
|
+
const swarmTaskIdRegex = /^[a-z0-9]{25}$/;
|
|
38
|
+
const containerIdRegex = /^[0-9a-f]{64}$/;
|
|
39
|
+
const swarmServiceNameRegex = /^[A-Za-z0-9][A-Za-z0-9_.-]{0,62}$/;
|
|
40
|
+
const nodeHostnameRegex = /^(?=.{1,253}$)[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?(?:\.[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/;
|
|
41
|
+
const imageReferenceRegex = /^\S{1,512}$/;
|
|
42
|
+
const repoDigestRegex = /^[^\s@]{1,440}@sha256:[0-9a-f]{64}$/;
|
|
43
|
+
const maximumRepoDigestCount = 32;
|
|
19
44
|
const isIdentifier = (valueArg) => (typeof valueArg === 'string' && identifierRegex.test(valueArg));
|
|
20
45
|
const isCanonicalDigest = (valueArg) => (typeof valueArg === 'string' && normalizeSha256Digest(valueArg) === valueArg);
|
|
21
46
|
const isPositiveSafeInteger = (valueArg, maximumArg) => (typeof valueArg === 'number'
|
|
@@ -44,6 +69,232 @@ export const validateLegacyImageImportReference = (referenceArg) => {
|
|
|
44
69
|
}
|
|
45
70
|
return errors;
|
|
46
71
|
};
|
|
72
|
+
const validateHostReplicaObservation = (replicaArg, labelArg) => {
|
|
73
|
+
const replica = readDataProperties(replicaArg);
|
|
74
|
+
if (replica === null)
|
|
75
|
+
return [`${labelArg} must be a plain data object`];
|
|
76
|
+
const errors = [];
|
|
77
|
+
if (!hasExactKeys(replica, [
|
|
78
|
+
'nodeHostname',
|
|
79
|
+
'swarmTaskId',
|
|
80
|
+
'containerId',
|
|
81
|
+
'imageStore',
|
|
82
|
+
'containerImageId',
|
|
83
|
+
'imageRepoDigests',
|
|
84
|
+
'state',
|
|
85
|
+
'health',
|
|
86
|
+
])) {
|
|
87
|
+
errors.push(`${labelArg} must use its exact schema`);
|
|
88
|
+
}
|
|
89
|
+
if (typeof replica.nodeHostname !== 'string' || !nodeHostnameRegex.test(replica.nodeHostname)) {
|
|
90
|
+
errors.push(`${labelArg}.nodeHostname must be a host name`);
|
|
91
|
+
}
|
|
92
|
+
if (typeof replica.swarmTaskId !== 'string' || !swarmTaskIdRegex.test(replica.swarmTaskId)) {
|
|
93
|
+
errors.push(`${labelArg}.swarmTaskId must be a Swarm task id`);
|
|
94
|
+
}
|
|
95
|
+
if (typeof replica.containerId !== 'string' || !containerIdRegex.test(replica.containerId)) {
|
|
96
|
+
errors.push(`${labelArg}.containerId must be a full container id`);
|
|
97
|
+
}
|
|
98
|
+
if (!legacyHostImageStores.some((storeArg) => storeArg === replica.imageStore)) {
|
|
99
|
+
errors.push(`${labelArg}.imageStore must be containerd or classic`);
|
|
100
|
+
}
|
|
101
|
+
if (!isCanonicalDigest(replica.containerImageId)) {
|
|
102
|
+
errors.push(`${labelArg}.containerImageId must be a canonical sha256 digest`);
|
|
103
|
+
}
|
|
104
|
+
const repoDigests = readDataElements(replica.imageRepoDigests, maximumRepoDigestCount);
|
|
105
|
+
if (repoDigests === null
|
|
106
|
+
|| repoDigests.some((entryArg) => typeof entryArg !== 'string' || !repoDigestRegex.test(entryArg))
|
|
107
|
+
|| new Set(repoDigests).size !== repoDigests.length) {
|
|
108
|
+
errors.push(`${labelArg}.imageRepoDigests must be unique digested image references`);
|
|
109
|
+
}
|
|
110
|
+
if (!legacyHostContainerStates.some((stateArg) => stateArg === replica.state)) {
|
|
111
|
+
errors.push(`${labelArg}.state must be a Docker container state`);
|
|
112
|
+
}
|
|
113
|
+
if (!legacyHostContainerHealths.some((healthArg) => healthArg === replica.health)) {
|
|
114
|
+
errors.push(`${labelArg}.health must be healthy, unhealthy, starting or none`);
|
|
115
|
+
}
|
|
116
|
+
return errors;
|
|
117
|
+
};
|
|
118
|
+
const validateHostSwarmServiceMode = (modeArg, labelArg) => {
|
|
119
|
+
const mode = readDataProperties(modeArg);
|
|
120
|
+
if (mode === null)
|
|
121
|
+
return [`${labelArg} must be a plain data object`];
|
|
122
|
+
if (mode.kind === 'global') {
|
|
123
|
+
return hasExactKeys(mode, ['kind']) ? [] : [`${labelArg} must use its exact schema`];
|
|
124
|
+
}
|
|
125
|
+
if (mode.kind !== 'replicated')
|
|
126
|
+
return [`${labelArg}.kind must be replicated or global`];
|
|
127
|
+
const errors = [];
|
|
128
|
+
if (!hasExactKeys(mode, ['kind', 'desiredReplicas'])) {
|
|
129
|
+
errors.push(`${labelArg} must use its exact schema`);
|
|
130
|
+
}
|
|
131
|
+
if (typeof mode.desiredReplicas !== 'number'
|
|
132
|
+
|| !Number.isSafeInteger(mode.desiredReplicas)
|
|
133
|
+
|| mode.desiredReplicas < 0
|
|
134
|
+
|| mode.desiredReplicas > maximumReplicaCount) {
|
|
135
|
+
errors.push(`${labelArg}.desiredReplicas must be a bounded replica count`);
|
|
136
|
+
}
|
|
137
|
+
return errors;
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* The shape of a host observation: exact keys at every level, Docker's own value sets, at most 64
|
|
141
|
+
* replicas, unique and sorted by Swarm task id, each container observed once. It judges nothing
|
|
142
|
+
* against a registry; {@link judgeLegacyServiceHostObservation} does.
|
|
143
|
+
*/
|
|
144
|
+
export const validateLegacyServiceHostObservation = (observationArg, labelArg = 'hostObservation') => {
|
|
145
|
+
const observation = readDataProperties(observationArg);
|
|
146
|
+
if (observation === null)
|
|
147
|
+
return [`${labelArg} must be a plain data object`];
|
|
148
|
+
const errors = [];
|
|
149
|
+
if (!hasExactKeys(observation, ['swarmServiceName', 'specImage', 'mode', 'observedAt', 'replicas'])) {
|
|
150
|
+
errors.push(`${labelArg} must use its exact schema`);
|
|
151
|
+
}
|
|
152
|
+
if (typeof observation.swarmServiceName !== 'string'
|
|
153
|
+
|| !swarmServiceNameRegex.test(observation.swarmServiceName)) {
|
|
154
|
+
errors.push(`${labelArg}.swarmServiceName must be a Swarm service name`);
|
|
155
|
+
}
|
|
156
|
+
if (typeof observation.specImage !== 'string' || !imageReferenceRegex.test(observation.specImage)) {
|
|
157
|
+
errors.push(`${labelArg}.specImage must be a bounded image reference`);
|
|
158
|
+
}
|
|
159
|
+
errors.push(...validateHostSwarmServiceMode(observation.mode, `${labelArg}.mode`));
|
|
160
|
+
if (!isPositiveSafeInteger(observation.observedAt, Number.MAX_SAFE_INTEGER)) {
|
|
161
|
+
errors.push(`${labelArg}.observedAt must be a positive timestamp`);
|
|
162
|
+
}
|
|
163
|
+
const replicas = readDataElements(observation.replicas, maximumReplicaCount);
|
|
164
|
+
if (replicas === null) {
|
|
165
|
+
errors.push(`${labelArg}.replicas must be a list of at most ${maximumReplicaCount} replicas`);
|
|
166
|
+
return errors;
|
|
167
|
+
}
|
|
168
|
+
replicas.forEach((replicaArg, indexArg) => {
|
|
169
|
+
errors.push(...validateHostReplicaObservation(replicaArg, `${labelArg}.replicas[${indexArg}]`));
|
|
170
|
+
});
|
|
171
|
+
const readReplicaKey = (replicaArg, keyArg) => (readDataProperties(replicaArg)?.[keyArg]);
|
|
172
|
+
const taskIds = replicas.map((replicaArg) => readReplicaKey(replicaArg, 'swarmTaskId'));
|
|
173
|
+
const sortedTaskIds = taskIds
|
|
174
|
+
.filter((idArg) => typeof idArg === 'string')
|
|
175
|
+
.sort();
|
|
176
|
+
if (new Set(taskIds).size !== taskIds.length
|
|
177
|
+
|| JSON.stringify(taskIds) !== JSON.stringify(sortedTaskIds)) {
|
|
178
|
+
errors.push(`${labelArg}.replicas must be unique and sorted by swarmTaskId`);
|
|
179
|
+
}
|
|
180
|
+
const containerIds = replicas.map((replicaArg) => readReplicaKey(replicaArg, 'containerId'));
|
|
181
|
+
if (new Set(containerIds).size !== containerIds.length) {
|
|
182
|
+
errors.push(`${labelArg}.replicas must observe each container once`);
|
|
183
|
+
}
|
|
184
|
+
return errors;
|
|
185
|
+
};
|
|
186
|
+
/** True when a value is a well-formed host observation. */
|
|
187
|
+
export const isLegacyServiceHostObservation = (valueArg) => (validateLegacyServiceHostObservation(valueArg).length === 0);
|
|
188
|
+
/**
|
|
189
|
+
* The root digest one replica was pulled as from `registryHost/repository`.
|
|
190
|
+
*
|
|
191
|
+
* On the containerd store that is the container's image id, which the image's `RepoDigests` must
|
|
192
|
+
* list for the repository. On the classic store it is the one digest `RepoDigests` lists for the
|
|
193
|
+
* repository; none, or more than one, leaves the root unknown.
|
|
194
|
+
*/
|
|
195
|
+
const selectReplicaRootDigest = (replicaArg, repositoryReferenceArg) => {
|
|
196
|
+
const prefix = `${repositoryReferenceArg}@`;
|
|
197
|
+
const repositoryDigests = replicaArg.imageRepoDigests
|
|
198
|
+
.filter((entryArg) => entryArg.startsWith(prefix))
|
|
199
|
+
.map((entryArg) => normalizeSha256Digest(entryArg.slice(prefix.length)))
|
|
200
|
+
.filter((digestArg) => digestArg !== undefined);
|
|
201
|
+
if (replicaArg.imageStore === 'containerd') {
|
|
202
|
+
return repositoryDigests.includes(replicaArg.containerImageId)
|
|
203
|
+
? replicaArg.containerImageId
|
|
204
|
+
: undefined;
|
|
205
|
+
}
|
|
206
|
+
return repositoryDigests.length === 1 ? repositoryDigests[0] : undefined;
|
|
207
|
+
};
|
|
208
|
+
/**
|
|
209
|
+
* The one root digest every observed replica runs from the legacy service's own repository, which
|
|
210
|
+
* is the digest Cloudly then inspects in its registry. Refused when a replica's root from that
|
|
211
|
+
* repository is unknown, when the replicas run more than one root, or when nothing was observed.
|
|
212
|
+
*/
|
|
213
|
+
export const selectLegacyServiceHostObservationRootDigest = (argsArg) => {
|
|
214
|
+
const repositoryReference = `${argsArg.registryHost}/${argsArg.repository}`;
|
|
215
|
+
const errors = [];
|
|
216
|
+
const roots = new Set();
|
|
217
|
+
argsArg.observation.replicas.forEach((replicaArg, indexArg) => {
|
|
218
|
+
const root = selectReplicaRootDigest(replicaArg, repositoryReference);
|
|
219
|
+
if (root === undefined) {
|
|
220
|
+
errors.push(replicaArg.imageStore === 'containerd'
|
|
221
|
+
? `hostObservation.replicas[${indexArg}] image is not listed as ${repositoryReference}@<its image id>`
|
|
222
|
+
: `hostObservation.replicas[${indexArg}] image lists not exactly one digest of ${repositoryReference}`);
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
roots.add(root);
|
|
226
|
+
});
|
|
227
|
+
if (argsArg.observation.replicas.length === 0) {
|
|
228
|
+
errors.push('hostObservation must observe at least one replica');
|
|
229
|
+
}
|
|
230
|
+
if (roots.size > 1) {
|
|
231
|
+
errors.push('hostObservation replicas run more than one root digest');
|
|
232
|
+
}
|
|
233
|
+
const [rootDigest] = [...roots];
|
|
234
|
+
return errors.length === 0 && rootDigest !== undefined ? { rootDigest, errors } : { errors };
|
|
235
|
+
};
|
|
236
|
+
/**
|
|
237
|
+
* Judges a well-formed host observation against the registry source Cloudly inspected for it.
|
|
238
|
+
* Every rule an attestation's runtime part must meet:
|
|
239
|
+
*
|
|
240
|
+
* - the Swarm service is replicated, with at least one desired replica, and exactly its desired
|
|
241
|
+
* replicas were observed;
|
|
242
|
+
* - its spec image names the source repository by the source tag, by the root digest, or by both;
|
|
243
|
+
* - every replica is `running`, and `healthy` or without a healthcheck (`none`) — `unhealthy` and
|
|
244
|
+
* `starting` are refused;
|
|
245
|
+
* - every replica runs the source root from the source repository: its image lists
|
|
246
|
+
* `registryHost/repository@rootDigest`, and its image id is the root digest on the containerd
|
|
247
|
+
* store or one of the root's platform image configuration digests on the classic store.
|
|
248
|
+
*/
|
|
249
|
+
export const judgeLegacyServiceHostObservation = (argsArg) => {
|
|
250
|
+
const label = argsArg.label ?? 'hostObservation';
|
|
251
|
+
const { observation, source } = argsArg;
|
|
252
|
+
const errors = [];
|
|
253
|
+
if (observation.mode.kind !== 'replicated') {
|
|
254
|
+
errors.push(`${label}.mode must be replicated: a legacy service runs as a replicated Swarm service`);
|
|
255
|
+
}
|
|
256
|
+
else if (observation.mode.desiredReplicas < 1) {
|
|
257
|
+
errors.push(`${label}.mode must desire at least one replica`);
|
|
258
|
+
}
|
|
259
|
+
else if (observation.replicas.length !== observation.mode.desiredReplicas) {
|
|
260
|
+
errors.push(`${label} must observe exactly the ${observation.mode.desiredReplicas} desired replicas`);
|
|
261
|
+
}
|
|
262
|
+
const repositoryReference = `${source.registryHost}/${source.repository}`;
|
|
263
|
+
const specImages = [
|
|
264
|
+
`${repositoryReference}:${source.tag}`,
|
|
265
|
+
`${repositoryReference}@${source.rootDigest}`,
|
|
266
|
+
`${repositoryReference}:${source.tag}@${source.rootDigest}`,
|
|
267
|
+
];
|
|
268
|
+
if (!specImages.includes(observation.specImage)) {
|
|
269
|
+
errors.push(`${label}.specImage must name ${repositoryReference} by its source tag or root digest`);
|
|
270
|
+
}
|
|
271
|
+
const imageConfigDigests = source.platforms.map((platformArg) => platformArg.imageConfigDigest);
|
|
272
|
+
observation.replicas.forEach((replicaArg, indexArg) => {
|
|
273
|
+
const replicaLabel = `${label}.replicas[${indexArg}]`;
|
|
274
|
+
if (replicaArg.state !== 'running') {
|
|
275
|
+
errors.push(`${replicaLabel}.state must be running`);
|
|
276
|
+
}
|
|
277
|
+
if (!attestableLegacyHostContainerHealths.includes(replicaArg.health)) {
|
|
278
|
+
errors.push(`${replicaLabel}.health must be healthy or none`);
|
|
279
|
+
}
|
|
280
|
+
if (!replicaArg.imageRepoDigests.includes(`${repositoryReference}@${source.rootDigest}`)) {
|
|
281
|
+
errors.push(`${replicaLabel} image must be ${repositoryReference}@${source.rootDigest}`);
|
|
282
|
+
}
|
|
283
|
+
if (replicaArg.imageStore === 'containerd') {
|
|
284
|
+
if (replicaArg.containerImageId !== source.rootDigest) {
|
|
285
|
+
errors.push(`${replicaLabel}.containerImageId must be the root digest on the containerd image store`);
|
|
286
|
+
}
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
if (!imageConfigDigests.includes(replicaArg.containerImageId)) {
|
|
290
|
+
errors.push(`${replicaLabel}.containerImageId must be a platform image configuration digest of the root on the classic image store`);
|
|
291
|
+
}
|
|
292
|
+
if (selectReplicaRootDigest(replicaArg, repositoryReference) === undefined) {
|
|
293
|
+
errors.push(`${replicaLabel} image must list exactly one digest of ${repositoryReference} on the classic image store`);
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
return errors;
|
|
297
|
+
};
|
|
47
298
|
const validatePlatformManifest = (manifestArg, indexArg) => {
|
|
48
299
|
const label = `source.platforms[${indexArg}]`;
|
|
49
300
|
if (!isPlainRecord(manifestArg))
|
|
@@ -137,18 +388,51 @@ const validateImageSource = (sourceArg) => {
|
|
|
137
388
|
}
|
|
138
389
|
return errors;
|
|
139
390
|
};
|
|
140
|
-
const
|
|
391
|
+
const isLegacyServiceImageSource = (valueArg) => (validateImageSource(valueArg).length === 0);
|
|
392
|
+
const validateRuntime = (runtimeArg, sourceArg) => {
|
|
141
393
|
if (!isPlainRecord(runtimeArg))
|
|
142
394
|
return ['runtime must be an object'];
|
|
395
|
+
const rootDigest = isPlainRecord(sourceArg) ? sourceArg.rootDigest : undefined;
|
|
143
396
|
const errors = [];
|
|
144
397
|
if (!hasExactKeys(runtimeArg, [
|
|
145
398
|
'requiredReplicaCount',
|
|
146
399
|
'healthyReplicaCount',
|
|
147
400
|
'runtimeDigest',
|
|
148
401
|
'tasks',
|
|
402
|
+
'evidenceSource',
|
|
403
|
+
'hostObservation',
|
|
149
404
|
])) {
|
|
150
405
|
errors.push('runtime must use its exact schema');
|
|
151
406
|
}
|
|
407
|
+
if (runtimeArg.evidenceSource !== 'administrator-host-observation') {
|
|
408
|
+
errors.push('runtime.evidenceSource must be administrator-host-observation');
|
|
409
|
+
}
|
|
410
|
+
const hostObservation = runtimeArg.hostObservation;
|
|
411
|
+
const observationErrors = validateLegacyServiceHostObservation(hostObservation, 'runtime.hostObservation');
|
|
412
|
+
errors.push(...observationErrors);
|
|
413
|
+
if (observationErrors.length === 0
|
|
414
|
+
&& isLegacyServiceHostObservation(hostObservation)
|
|
415
|
+
&& isLegacyServiceImageSource(sourceArg)) {
|
|
416
|
+
errors.push(...judgeLegacyServiceHostObservation({
|
|
417
|
+
observation: hostObservation,
|
|
418
|
+
source: sourceArg,
|
|
419
|
+
label: 'runtime.hostObservation',
|
|
420
|
+
}));
|
|
421
|
+
if (hostObservation.mode.kind === 'replicated'
|
|
422
|
+
&& runtimeArg.requiredReplicaCount !== hostObservation.mode.desiredReplicas) {
|
|
423
|
+
errors.push('runtime.requiredReplicaCount must be the observed desired replicas');
|
|
424
|
+
}
|
|
425
|
+
const recordedTasks = readDataElements(runtimeArg.tasks, maximumReplicaCount) ?? [];
|
|
426
|
+
if (recordedTasks.length !== hostObservation.replicas.length
|
|
427
|
+
|| hostObservation.replicas.some((replicaArg, indexArg) => {
|
|
428
|
+
const task = recordedTasks[indexArg];
|
|
429
|
+
return !isPlainRecord(task)
|
|
430
|
+
|| task.deploymentId !== replicaArg.swarmTaskId
|
|
431
|
+
|| task.nodeName !== replicaArg.nodeHostname;
|
|
432
|
+
})) {
|
|
433
|
+
errors.push('runtime.tasks must be the observed replicas: each Swarm task on its node');
|
|
434
|
+
}
|
|
435
|
+
}
|
|
152
436
|
if (!isPositiveSafeInteger(runtimeArg.requiredReplicaCount, maximumReplicaCount)) {
|
|
153
437
|
errors.push('runtime.requiredReplicaCount must be a positive bounded replica count');
|
|
154
438
|
}
|
|
@@ -158,7 +442,7 @@ const validateRuntime = (runtimeArg, rootDigestArg) => {
|
|
|
158
442
|
if (!isCanonicalDigest(runtimeArg.runtimeDigest)) {
|
|
159
443
|
errors.push('runtime.runtimeDigest must be a canonical sha256 digest');
|
|
160
444
|
}
|
|
161
|
-
else if (runtimeArg.runtimeDigest !==
|
|
445
|
+
else if (runtimeArg.runtimeDigest !== rootDigest) {
|
|
162
446
|
errors.push('runtime.runtimeDigest must be the attested source root digest');
|
|
163
447
|
}
|
|
164
448
|
if (!Array.isArray(runtimeArg.tasks) || runtimeArg.tasks.length !== runtimeArg.requiredReplicaCount) {
|
|
@@ -231,7 +515,7 @@ export const validateLegacyServiceRuntimeAttestation = (attestationArg) => {
|
|
|
231
515
|
errors.push('capturedAt must be a positive timestamp');
|
|
232
516
|
}
|
|
233
517
|
errors.push(...validateImageSource(data.source));
|
|
234
|
-
errors.push(...validateRuntime(data.runtime,
|
|
518
|
+
errors.push(...validateRuntime(data.runtime, data.source));
|
|
235
519
|
return errors;
|
|
236
520
|
};
|
|
237
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95bWVudGxlZ2FjeWltcG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2RhdGEvZGVwbG95bWVudGxlZ2FjeWltcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBbUczRSxNQUFNLGVBQWUsR0FBRyxxQ0FBcUMsQ0FBQztBQUM5RCxvR0FBb0c7QUFDcEcsTUFBTSxXQUFXLEdBQUcscUNBQXFDLENBQUM7QUFDMUQsTUFBTSxpQkFBaUIsR0FBRywwREFBMEQsQ0FBQztBQUNyRixNQUFNLGVBQWUsR0FBRyxxRkFBcUYsQ0FBQztBQUM5RyxNQUFNLG1CQUFtQixHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQzVDLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0FBRS9CLE1BQU0scUNBQXFDLEdBQXFEO0lBQzlGLDRDQUE0QztJQUM1QyxzREFBc0Q7Q0FDdkQsQ0FBQztBQUNGLE1BQU0sZ0NBQWdDLEdBQWdEO0lBQ3BGLHlDQUF5QztJQUN6QywyREFBMkQ7Q0FDNUQsQ0FBQztBQUNGLE1BQU0sb0JBQW9CLEdBQTJDLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBRXBHLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBaUIsRUFBc0IsRUFBRSxDQUFDLENBQzlELE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUMvRCxDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFFBQWlCLEVBQTZCLEVBQUUsQ0FBQyxDQUMxRSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUkscUJBQXFCLENBQUMsUUFBUSxDQUFDLEtBQUssUUFBUSxDQUM3RSxDQUFDO0FBRUYsTUFBTSxx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
|
|
521
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95bWVudGxlZ2FjeWltcG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2RhdGEvZGVwbG95bWVudGxlZ2FjeWltcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQ0wsWUFBWSxFQUNaLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsa0JBQWtCLEdBQ25CLE1BQU0sOEJBQThCLENBQUM7QUF5THRDLE1BQU0sZUFBZSxHQUFHLHFDQUFxQyxDQUFDO0FBQzlELG9HQUFvRztBQUNwRyxNQUFNLFdBQVcsR0FBRyxxQ0FBcUMsQ0FBQztBQUMxRCxNQUFNLGlCQUFpQixHQUFHLDBEQUEwRCxDQUFDO0FBQ3JGLE1BQU0sZUFBZSxHQUFHLHFGQUFxRixDQUFDO0FBQzlHLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDNUMsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFFL0IsTUFBTSxxQ0FBcUMsR0FBcUQ7SUFDOUYsNENBQTRDO0lBQzVDLHNEQUFzRDtDQUN2RCxDQUFDO0FBQ0YsTUFBTSxnQ0FBZ0MsR0FBZ0Q7SUFDcEYseUNBQXlDO0lBQ3pDLDJEQUEyRDtDQUM1RCxDQUFDO0FBQ0YsTUFBTSxvQkFBb0IsR0FBMkMsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDcEcsTUFBTSx5QkFBeUIsR0FBeUM7SUFDdEUsU0FBUztJQUNULFNBQVM7SUFDVCxRQUFRO0lBQ1IsWUFBWTtJQUNaLFVBQVU7SUFDVixRQUFRO0lBQ1IsTUFBTTtDQUNQLENBQUM7QUFDRixNQUFNLDBCQUEwQixHQUEwQztJQUN4RSxTQUFTO0lBQ1QsV0FBVztJQUNYLFVBQVU7SUFDVixNQUFNO0NBQ1AsQ0FBQztBQUNGLHlGQUF5RjtBQUN6RixNQUFNLG9DQUFvQyxHQUEwQyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN4RyxNQUFNLHFCQUFxQixHQUFxQyxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMxRixNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0FBQzFDLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7QUFDMUMsTUFBTSxxQkFBcUIsR0FBRyxtQ0FBbUMsQ0FBQztBQUNsRSxNQUFNLGlCQUFpQixHQUFHLGtIQUFrSCxDQUFDO0FBQzdJLE1BQU0sbUJBQW1CLEdBQUcsYUFBYSxDQUFDO0FBQzFDLE1BQU0sZUFBZSxHQUFHLHFDQUFxQyxDQUFDO0FBQzlELE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBRWxDLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBaUIsRUFBc0IsRUFBRSxDQUFDLENBQzlELE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUMvRCxDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFFBQWlCLEVBQTZCLEVBQUUsQ0FBQyxDQUMxRSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUkscUJBQXFCLENBQUMsUUFBUSxDQUFDLEtBQUssUUFBUSxDQUM3RSxDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFFBQWlCLEVBQUUsVUFBa0IsRUFBc0IsRUFBRSxDQUFDLENBQzNGLE9BQU8sUUFBUSxLQUFLLFFBQVE7T0FDekIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7T0FDOUIsUUFBUSxJQUFJLENBQUM7T0FDYixRQUFRLElBQUksVUFBVSxDQUMxQixDQUFDO0FBRUYsb0ZBQW9GO0FBQ3BGLE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFHLENBQ3BELFFBQWlCLEVBQ2tDLEVBQUUsQ0FBQyxDQUN0RCxxQ0FBcUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksS0FBSyxRQUFRLENBQUMsQ0FDeEYsQ0FBQztBQUVGLDhEQUE4RDtBQUM5RCxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRyxDQUMvQyxRQUFpQixFQUM2QixFQUFFLENBQUMsQ0FDakQsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLEtBQUssUUFBUSxDQUFDLENBQ25GLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxDQUFDLFlBQXFCLEVBQVksRUFBRTtJQUNwRixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztRQUFFLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQzVFLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMxRixNQUFNLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUNELElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7UUFDaEQsTUFBTSxDQUFDLElBQUksQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzlDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUVBQW1FLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDdEQsTUFBTSxDQUFDLElBQUksQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLDhCQUE4QixHQUFHLENBQ3JDLFVBQW1CLEVBQ25CLFFBQWdCLEVBQ04sRUFBRTtJQUNaLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9DLElBQUksT0FBTyxLQUFLLElBQUk7UUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLDhCQUE4QixDQUFDLENBQUM7SUFDekUsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFO1FBQ3pCLGNBQWM7UUFDZCxhQUFhO1FBQ2IsYUFBYTtRQUNiLFlBQVk7UUFDWixrQkFBa0I7UUFDbEIsa0JBQWtCO1FBQ2xCLE9BQU87UUFDUCxRQUFRO0tBQ1QsQ0FBQyxFQUFFLENBQUM7UUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSw0QkFBNEIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRCxJQUFJLE9BQU8sT0FBTyxDQUFDLFlBQVksS0FBSyxRQUFRLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDOUYsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsbUNBQW1DLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsSUFBSSxPQUFPLE9BQU8sQ0FBQyxXQUFXLEtBQUssUUFBUSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1FBQzNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLHNDQUFzQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUNELElBQUksT0FBTyxPQUFPLENBQUMsV0FBVyxLQUFLLFFBQVEsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUMzRixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSwwQ0FBMEMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDL0UsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsMkNBQTJDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDakQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEscURBQXFELENBQUMsQ0FBQztJQUNoRixDQUFDO0lBQ0QsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLENBQUM7SUFDdkYsSUFBSSxXQUFXLEtBQUssSUFBSTtXQUNuQixXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1dBQy9GLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdEQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsNERBQTRELENBQUMsQ0FBQztJQUN2RixDQUFDO0lBQ0QsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLHlDQUF5QyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNsRixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxzREFBc0QsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLDRCQUE0QixHQUFHLENBQUMsT0FBZ0IsRUFBRSxRQUFnQixFQUFZLEVBQUU7SUFDcEYsTUFBTSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekMsSUFBSSxJQUFJLEtBQUssSUFBSTtRQUFFLE9BQU8sQ0FBQyxHQUFHLFFBQVEsOEJBQThCLENBQUMsQ0FBQztJQUN0RSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDM0IsT0FBTyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSw0QkFBNEIsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWTtRQUFFLE9BQU8sQ0FBQyxHQUFHLFFBQVEsb0NBQW9DLENBQUMsQ0FBQztJQUN6RixNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsNEJBQTRCLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBQ0QsSUFBSSxPQUFPLElBQUksQ0FBQyxlQUFlLEtBQUssUUFBUTtXQUN2QyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztXQUMzQyxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUM7V0FDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLGtEQUFrRCxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxDQUNsRCxjQUF1QixFQUN2QixRQUFRLEdBQUcsaUJBQWlCLEVBQ2xCLEVBQUU7SUFDWixNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2RCxJQUFJLFdBQVcsS0FBSyxJQUFJO1FBQUUsT0FBTyxDQUFDLEdBQUcsUUFBUSw4QkFBOEIsQ0FBQyxDQUFDO0lBQzdFLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSw0QkFBNEIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRCxJQUFJLE9BQU8sV0FBVyxDQUFDLGdCQUFnQixLQUFLLFFBQVE7V0FDL0MsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUMvRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxnREFBZ0QsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxJQUFJLE9BQU8sV0FBVyxDQUFDLFNBQVMsS0FBSyxRQUFRLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDbEcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsOENBQThDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLDRCQUE0QixDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbkYsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUM1RSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSwwQ0FBMEMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDN0UsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDdEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsdUNBQXVDLG1CQUFtQixXQUFXLENBQUMsQ0FBQztRQUM5RixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0QsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsRUFBRTtRQUN4QyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsOEJBQThCLENBQUMsVUFBVSxFQUFFLEdBQUcsUUFBUSxhQUFhLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRyxDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sY0FBYyxHQUFHLENBQUMsVUFBbUIsRUFBRSxNQUFjLEVBQVcsRUFBRSxDQUFDLENBQ3ZFLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQ3pDLENBQUM7SUFDRixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDeEYsTUFBTSxhQUFhLEdBQUcsT0FBTztTQUMxQixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQW1CLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUM7U0FDN0QsSUFBSSxFQUFFLENBQUM7SUFDVixJQUFJLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsTUFBTTtXQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUMvRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxvREFBb0QsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFDRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDN0YsSUFBSSxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3ZELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLDRDQUE0QyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLDJEQUEyRDtBQUMzRCxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxDQUM1QyxRQUFpQixFQUMwQixFQUFFLENBQUMsQ0FDOUMsb0NBQW9DLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FDNUQsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNILE1BQU0sdUJBQXVCLEdBQUcsQ0FDOUIsVUFBeUMsRUFDekMsc0JBQThCLEVBQ0gsRUFBRTtJQUM3QixNQUFNLE1BQU0sR0FBRyxHQUFHLHNCQUFzQixHQUFHLENBQUM7SUFDNUMsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLENBQUMsZ0JBQWdCO1NBQ2xELE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNqRCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDdkUsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUE4QixFQUFFLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDO0lBQzlFLElBQUksVUFBVSxDQUFDLFVBQVUsS0FBSyxZQUFZLEVBQUUsQ0FBQztRQUMzQyxPQUFPLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUM7WUFDNUQsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0I7WUFDN0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxpQkFBaUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzNFLENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSw0Q0FBNEMsR0FBRyxDQUFDLE9BSTVELEVBQW9ELEVBQUU7SUFDckQsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzVFLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1QixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztJQUN2QyxPQUFPLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQUU7UUFDNUQsTUFBTSxJQUFJLEdBQUcsdUJBQXVCLENBQUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDdEUsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxLQUFLLFlBQVk7Z0JBQ2hELENBQUMsQ0FBQyw0QkFBNEIsUUFBUSw0QkFBNEIsbUJBQW1CLGlCQUFpQjtnQkFDdEcsQ0FBQyxDQUFDLDRCQUE0QixRQUFRLDJDQUEyQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7WUFDMUcsT0FBTztRQUNULENBQUM7UUFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDOUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFDRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksVUFBVSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDL0YsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsQ0FBQyxPQUlqRCxFQUFZLEVBQUU7SUFDYixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLGlCQUFpQixDQUFDO0lBQ2pELE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1QixJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLCtFQUErRSxDQUFDLENBQUM7SUFDdkcsQ0FBQztTQUFNLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDaEQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssd0NBQXdDLENBQUMsQ0FBQztJQUNoRSxDQUFDO1NBQU0sSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzVFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLDZCQUE2QixXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsbUJBQW1CLENBQUMsQ0FBQztJQUN4RyxDQUFDO0lBQ0QsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLE1BQU0sQ0FBQyxZQUFZLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzFFLE1BQU0sVUFBVSxHQUFHO1FBQ2pCLEdBQUcsbUJBQW1CLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUN0QyxHQUFHLG1CQUFtQixJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUU7UUFDN0MsR0FBRyxtQkFBbUIsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUU7S0FDNUQsQ0FBQztJQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLHdCQUF3QixtQkFBbUIsbUNBQW1DLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBQ0QsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDaEcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQUU7UUFDcEQsTUFBTSxZQUFZLEdBQUcsR0FBRyxLQUFLLGFBQWEsUUFBUSxHQUFHLENBQUM7UUFDdEQsSUFBSSxVQUFVLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLHdCQUF3QixDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdEUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksaUNBQWlDLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxtQkFBbUIsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3pGLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLGtCQUFrQixtQkFBbUIsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUMzRixDQUFDO1FBQ0QsSUFBSSxVQUFVLENBQUMsVUFBVSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQzNDLElBQUksVUFBVSxDQUFDLGdCQUFnQixLQUFLLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdEQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVkseUVBQXlFLENBQUMsQ0FBQztZQUN4RyxDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDOUQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksd0dBQXdHLENBQUMsQ0FBQztRQUN2SSxDQUFDO1FBQ0QsSUFBSSx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMzRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSwwQ0FBMEMsbUJBQW1CLDZCQUE2QixDQUFDLENBQUM7UUFDekgsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSx3QkFBd0IsR0FBRyxDQUMvQixXQUFvQixFQUNwQixRQUFnQixFQUNOLEVBQUU7SUFDWixNQUFNLEtBQUssR0FBRyxvQkFBb0IsUUFBUSxHQUFHLENBQUM7SUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7UUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLG9CQUFvQixDQUFDLENBQUM7SUFDdkUsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFO1FBQzdCLFVBQVU7UUFDVixnQkFBZ0I7UUFDaEIsbUJBQW1CO1FBQ25CLGNBQWM7UUFDZCxtQkFBbUI7S0FDcEIsQ0FBQyxFQUFFLENBQUM7UUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDdEYsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssOENBQThDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1FBQ25ELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLG1EQUFtRCxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUNELElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQzNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLDhEQUE4RCxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztRQUMxRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxzREFBc0QsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztRQUN0RCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxzREFBc0QsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLENBQUMsU0FBa0IsRUFBWSxFQUFFO0lBQzNELElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO1FBQUUsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDbkUsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFO1FBQzNCLGNBQWM7UUFDZCxZQUFZO1FBQ1osS0FBSztRQUNMLFlBQVk7UUFDWixlQUFlO1FBQ2YsV0FBVztLQUNaLENBQUMsRUFBRSxDQUFDO1FBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxJQUFJLE9BQU8sU0FBUyxDQUFDLFlBQVksS0FBSyxRQUFRLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDbEcsTUFBTSxDQUFDLElBQUksQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFDRCxJQUFJLE9BQU8sU0FBUyxDQUFDLFVBQVUsS0FBSyxRQUFRO1dBQ3ZDLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLEdBQUc7V0FDakMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ2pELE1BQU0sQ0FBQyxJQUFJLENBQUMsMkRBQTJELENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsSUFBSSxPQUFPLFNBQVMsQ0FBQyxHQUFHLEtBQUssUUFBUSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMxRSxNQUFNLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUM3QyxNQUFNLENBQUMsSUFBSSxDQUFDLHFEQUFxRCxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUNELE1BQU0sY0FBYyxHQUFHLHNDQUFzQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2RixNQUFNLFdBQVcsR0FBRyxpQ0FBaUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0UsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUVBQW1FLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztXQUNsQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDO1dBQzlCLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzlELE1BQU0sQ0FBQyxJQUFJLENBQUMsaUVBQWlFLENBQUMsQ0FBQztRQUMvRSxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0QsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLFNBQXNCLENBQUM7SUFDbkQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsRUFBRTtRQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsd0JBQXdCLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUNuRCxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDOUQsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxtQkFBbUIsR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQ3ZFLGFBQWEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQ3BDLENBQUMsQ0FBQztJQUNILElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztRQUMxRSxNQUFNLENBQUMsSUFBSSxDQUFDLHdEQUF3RCxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUNELElBQUksY0FBYyxFQUFFLENBQUM7UUFDbkIsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO2VBQ3JCLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztlQUM1QixZQUFZLENBQUMsY0FBYyxLQUFLLFNBQVMsQ0FBQyxVQUFVO2VBQ3BELFlBQVksQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDaEUsTUFBTSxDQUFDLElBQUksQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxXQUFXLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FDakQsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxjQUFjLEtBQUssU0FBUyxDQUFDLFVBQVUsQ0FDbEYsQ0FBQyxFQUFFLENBQUM7UUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLG1FQUFtRSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxRQUFpQixFQUF5QyxFQUFFLENBQUMsQ0FDL0YsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FDM0MsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLENBQUMsVUFBbUIsRUFBRSxTQUFrQixFQUFZLEVBQUU7SUFDNUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUM7UUFBRSxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUNyRSxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMvRSxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUU7UUFDNUIsc0JBQXNCO1FBQ3RCLHFCQUFxQjtRQUNyQixlQUFlO1FBQ2YsT0FBTztRQUNQLGdCQUFnQjtRQUNoQixpQkFBaUI7S0FDbEIsQ0FBQyxFQUFFLENBQUM7UUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLGNBQWMsS0FBSyxnQ0FBZ0MsRUFBRSxDQUFDO1FBQ25FLE1BQU0sQ0FBQyxJQUFJLENBQUMsK0RBQStELENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBQ0QsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQztJQUNuRCxNQUFNLGlCQUFpQixHQUFHLG9DQUFvQyxDQUM1RCxlQUFlLEVBQUUseUJBQXlCLENBQUMsQ0FBQztJQUM5QyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQztJQUNsQyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDO1dBQzdCLDhCQUE4QixDQUFDLGVBQWUsQ0FBQztXQUMvQywwQkFBMEIsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxpQ0FBaUMsQ0FBQztZQUMvQyxXQUFXLEVBQUUsZUFBZTtZQUM1QixNQUFNLEVBQUUsU0FBUztZQUNqQixLQUFLLEVBQUUseUJBQXlCO1NBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZO2VBQ3pDLFVBQVUsQ0FBQyxvQkFBb0IsS0FBSyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzlFLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0VBQW9FLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBQ0QsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwRixJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNO2VBQ3ZELGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUN4RCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3JDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO3VCQUN0QixJQUFJLENBQUMsWUFBWSxLQUFLLFVBQVUsQ0FBQyxXQUFXO3VCQUM1QyxJQUFJLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQyxZQUFZLENBQUM7WUFDakQsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsMEVBQTBFLENBQUMsQ0FBQztRQUMxRixDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1FBQ2pGLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUVBQXVFLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsbUJBQW1CLEtBQUssVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDdkUsTUFBTSxDQUFDLElBQUksQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7UUFDakQsTUFBTSxDQUFDLElBQUksQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7U0FBTSxJQUFJLFVBQVUsQ0FBQyxhQUFhLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDbkQsTUFBTSxDQUFDLElBQUksQ0FBQywrREFBK0QsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDcEcsTUFBTSxDQUFDLElBQUksQ0FBQywrREFBK0QsQ0FBQyxDQUFDO1FBQzdFLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBa0IsQ0FBQztJQUM1QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLGlCQUFpQixRQUFRLEdBQUcsQ0FBQztRQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssb0JBQW9CLENBQUMsQ0FBQztZQUMxQyxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMzRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLHNEQUFzRCxDQUFDLENBQUM7UUFDOUUsQ0FBQztRQUNELElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDL0YsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssNENBQTRDLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsY0FBYyxLQUFLLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4RCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxxREFBcUQsQ0FBQyxDQUFDO1FBQzdFLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQzNDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUMxRCxDQUFDLENBQUM7SUFDSCxNQUFNLG1CQUFtQixHQUFHLGFBQWE7U0FDdEMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFtQixFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDO1NBQzdELElBQUksRUFBRSxDQUFDO0lBQ1YsSUFBSSxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLE1BQU07V0FDbkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztRQUMzRSxNQUFNLENBQUMsSUFBSSxDQUFDLHlEQUF5RCxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLENBQUMsY0FBdUIsRUFBWSxFQUFFO0lBQzNGLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO1FBQUUsT0FBTyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDN0UsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxNQUFNLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUNELElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDckMsTUFBTSxDQUFDLElBQUksQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDRCxNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDO0lBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxDQUFDLEdBQUcsTUFBTSxFQUFFLHdCQUF3QixDQUFDLENBQUM7SUFDdkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUU7UUFDdEIsaUJBQWlCO1FBQ2pCLGdCQUFnQjtRQUNoQixRQUFRO1FBQ1IsU0FBUztRQUNULGtCQUFrQjtRQUNsQixZQUFZO0tBQ2IsQ0FBQyxFQUFFLENBQUM7UUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7UUFDeEMsTUFBTSxDQUFDLElBQUksQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdURBQXVELENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMseURBQXlELENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUNyRSxNQUFNLENBQUMsSUFBSSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNqRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDIn0=
|
package/dist_ts/data/index.d.ts
CHANGED
|
@@ -36,6 +36,7 @@ export * from './nodeenrollment.js';
|
|
|
36
36
|
export * from './noderuntimebinding.js';
|
|
37
37
|
export * from './noderetirement.js';
|
|
38
38
|
export * from './networkaddressplan.js';
|
|
39
|
+
export * from './networkapplication.js';
|
|
39
40
|
export * from './networkauthority.js';
|
|
40
41
|
export * from './networkcredential.js';
|
|
41
42
|
export * from './networkdelivery.js';
|
package/dist_ts/data/index.js
CHANGED
|
@@ -36,6 +36,7 @@ export * from './nodeenrollment.js';
|
|
|
36
36
|
export * from './noderuntimebinding.js';
|
|
37
37
|
export * from './noderetirement.js';
|
|
38
38
|
export * from './networkaddressplan.js';
|
|
39
|
+
export * from './networkapplication.js';
|
|
39
40
|
export * from './networkauthority.js';
|
|
40
41
|
export * from './networkcredential.js';
|
|
41
42
|
export * from './networkdelivery.js';
|
|
@@ -81,4 +82,4 @@ export * from './traffic.js';
|
|
|
81
82
|
export * from './user.js';
|
|
82
83
|
export * from './version.js';
|
|
83
84
|
export * from './webpush.js';
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9kYXRhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHdCQUF3QixDQUFDO0FBR3ZDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRzlELE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXBGLE9BQU8sRUFBRSwwQ0FBMEMsRUFBRSwwQ0FBMEMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFJLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDIn0=
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { TSha256Digest } from './immutableimage.js';
|
|
2
|
+
import type { IRuntimeAuthorityReference } from './runtimeassignment.js';
|
|
3
|
+
import type { IRuntimeNetworkNodeScope } from './networkprojection.js';
|
|
4
|
+
import type { IRuntimeSessionBinding } from './runtimesession.js';
|
|
5
|
+
/**
|
|
6
|
+
* A node's durable statement that its packet authority is bounded by one admitted projection.
|
|
7
|
+
*
|
|
8
|
+
* Every packet table the node holds was composed from `projection`, or the node holds none: the
|
|
9
|
+
* flows its kernel admits are a subset of that projection's grants. Only the node's joined native
|
|
10
|
+
* packet owner can supply it — the journaled application of the projection's policies on every
|
|
11
|
+
* role, or the release of every table — never an admission ACK, a single table inspection or a
|
|
12
|
+
* caller-selected flag. A crash, a reboot or a restored guard only removes authority, so a receipt
|
|
13
|
+
* never becomes false; applying a successor projection supersedes it.
|
|
14
|
+
*
|
|
15
|
+
* `nativeJournal` names the node-private joined packet journal that applied the projection, or is
|
|
16
|
+
* null when the node holds no packet table at all. The receipts of one node form one monotonic
|
|
17
|
+
* chain; a receipt never names an older projection than its predecessor. These portable values
|
|
18
|
+
* neither inspect a kernel nor authenticate their producer: the receiver binds the report to the
|
|
19
|
+
* current authenticated session or its own reporter history.
|
|
20
|
+
*/
|
|
21
|
+
export interface IRuntimeNetworkProjectionApplicationReceipt extends IRuntimeNetworkNodeScope {
|
|
22
|
+
id: string;
|
|
23
|
+
generation: number;
|
|
24
|
+
previous: IRuntimeAuthorityReference | null;
|
|
25
|
+
projection: IRuntimeAuthorityReference;
|
|
26
|
+
reporterSessionId: string;
|
|
27
|
+
bootId: string;
|
|
28
|
+
nativeJournal: IRuntimeAuthorityReference | null;
|
|
29
|
+
digest: TSha256Digest;
|
|
30
|
+
}
|
|
31
|
+
export interface IReportRuntimeNetworkProjectionApplicationRequest {
|
|
32
|
+
session: IRuntimeSessionBinding;
|
|
33
|
+
receipt: IRuntimeNetworkProjectionApplicationReceipt;
|
|
34
|
+
}
|
|
35
|
+
export interface IReportRuntimeNetworkProjectionApplicationResponse {
|
|
36
|
+
status: 'accepted' | 'replay';
|
|
37
|
+
receipt: IRuntimeAuthorityReference;
|
|
38
|
+
authorityUse: 'current' | 'historical';
|
|
39
|
+
}
|
|
40
|
+
export declare const runtimeNetworkProjectionApplicationContract: Readonly<{
|
|
41
|
+
readonly digestDomain: "serve.zone/runtime-network-projection-application-receipt";
|
|
42
|
+
readonly claim: "packet-authority-within-the-grants-of-the-named-projection";
|
|
43
|
+
readonly receiptSource: "joined-native-packet-journal-or-no-packet-table";
|
|
44
|
+
readonly appliedPrevious: "only-a-receipt-naming-the-exact-previous-projection";
|
|
45
|
+
readonly olderProjection: "advances-the-chain-never-applied-previous";
|
|
46
|
+
readonly acknowledgement: "an-admission-ack-is-never-an-application-receipt";
|
|
47
|
+
readonly authentication: "current-authenticated-session-or-receiver-reporter-history";
|
|
48
|
+
}>;
|
|
49
|
+
/** Exact-key structural snapshot; digest and chain rules are `admitRuntimeNetworkProjectionApplicationReceipt`'s. */
|
|
50
|
+
export declare const snapshotRuntimeNetworkProjectionApplicationReceipt: (value: unknown) => IRuntimeNetworkProjectionApplicationReceipt;
|
|
51
|
+
export declare const computeRuntimeNetworkProjectionApplicationReceiptDigest: (value: IRuntimeNetworkProjectionApplicationReceipt) => Promise<TSha256Digest>;
|
|
52
|
+
/**
|
|
53
|
+
* Pure chain binding of one reported receipt. `previousReceiptValue` is the receiver's current
|
|
54
|
+
* receipt for the node, or null while it holds none; `headValue` is the receiver's current
|
|
55
|
+
* projection for the node. The owner must authenticate the reporter and fence its writes.
|
|
56
|
+
*
|
|
57
|
+
* The receipt names the head's projection chain at a generation the head has reached: the head
|
|
58
|
+
* itself, exactly, or an older generation. An older one is a receipt minted before the node
|
|
59
|
+
* admitted the head; it advances the chain and is never usable as `appliedPrevious`.
|
|
60
|
+
*/
|
|
61
|
+
export declare const admitRuntimeNetworkProjectionApplicationReceipt: (value: unknown, previousReceiptValue: unknown | null, trustedScopeValue: unknown, headValue: unknown) => Promise<{
|
|
62
|
+
status: "accepted" | "replay";
|
|
63
|
+
receipt: IRuntimeNetworkProjectionApplicationReceipt;
|
|
64
|
+
}>;
|
|
65
|
+
/**
|
|
66
|
+
* The `appliedPrevious` argument of `admitRuntimeNetworkProjection` for the successor of
|
|
67
|
+
* `previousProjectionValue`: the receipt's projection when it is exactly that projection, else
|
|
68
|
+
* null. `receiptValue` must be the receiver's own admitted receipt for the node (a node passes its
|
|
69
|
+
* own durable receipt, a controller the latest receipt it admitted), never an ACK field.
|
|
70
|
+
*/
|
|
71
|
+
export declare const selectRuntimeNetworkProjectionAppliedPrevious: (receiptValue: unknown | null, previousProjectionValue: unknown) => Promise<IRuntimeAuthorityReference | null>;
|
|
72
|
+
export declare const snapshotReportRuntimeNetworkProjectionApplicationRequest: (value: unknown) => IReportRuntimeNetworkProjectionApplicationRequest;
|
|
73
|
+
/**
|
|
74
|
+
* Both trusted bindings come from the receiver's fenced physical-session/history owner: the
|
|
75
|
+
* current session, and the session history entry that names the receipt's reporter. A receipt
|
|
76
|
+
* minted under an earlier session of the same node still drains from its outbox as `historical`.
|
|
77
|
+
*/
|
|
78
|
+
export declare const bindReportRuntimeNetworkProjectionApplicationRequest: (value: unknown, trustedCurrentSessionValue: unknown, trustedReporterSessionValue: unknown) => {
|
|
79
|
+
request: IReportRuntimeNetworkProjectionApplicationRequest;
|
|
80
|
+
authorityUse: "current" | "historical";
|
|
81
|
+
};
|
|
82
|
+
export declare const snapshotReportRuntimeNetworkProjectionApplicationResponse: (value: unknown) => IReportRuntimeNetworkProjectionApplicationResponse;
|
|
83
|
+
/** Compare the response with the exact SENT receipt, never with a response-derived value. */
|
|
84
|
+
export declare const bindReportRuntimeNetworkProjectionApplicationResponse: (value: unknown, sentReceiptValue: unknown) => IReportRuntimeNetworkProjectionApplicationResponse;
|