@githolon/dsl 0.108.0 → 0.108.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dart/CHANGELOG.md +5 -0
  2. package/dart/lib/src/application_framework_calls.dart +299 -0
  3. package/dart/lib/src/generated_call.dart +96 -0
  4. package/dart/lib/src/nms_generated_runtime.dart +29 -0
  5. package/dart/lib/src/node_runner_transport.dart +77 -1
  6. package/dart/lib/src/result_usda.dart +487 -0
  7. package/dart/lib/src/runner/node-entry.mjs +6401 -2102
  8. package/dart/lib/src/runner/offline-install.mjs +1538 -163
  9. package/dart/lib/src/runtime_v2_gateway.dart +54 -0
  10. package/dart/lib/src/runtime_v2_transport.dart +117 -0
  11. package/dart/lib/src/session_bound.dart +7 -2
  12. package/dart/lib/src/test_harness.dart +193 -112
  13. package/dart/lib/src/webview_bridge.dart +2120 -569
  14. package/dart/pubspec.yaml +2 -2
  15. package/dart/test/acquire_session_credentials_test.dart +1 -1
  16. package/dart/test/acquire_session_test.dart +68 -14
  17. package/dart/test/adv_realm_interference_test.dart +6 -4
  18. package/dart/test/cluster_births_test.dart +11 -8
  19. package/dart/test/cluster_local_autosync_test.dart +1 -1
  20. package/dart/test/cluster_scale_test.dart +3 -2
  21. package/dart/test/dlq_session_surface_test.dart +52 -35
  22. package/dart/test/first_app_gauntlet_test.dart +1 -1
  23. package/dart/test/local_sync_inert_test.dart +23 -26
  24. package/dart/test/offer_authentication_proof_test.dart +193 -0
  25. package/dart/test/result_usda_test.dart +49 -0
  26. package/dart/test/session_bound_test.dart +8 -11
  27. package/dart/test/stale_bundle_test.dart +18 -3
  28. package/dart/test/test_harness_test.dart +14 -27
  29. package/dart/test/webview_bridge_test.dart +504 -83
  30. package/dart_types/CHANGELOG.md +7 -0
  31. package/dart_types/lib/nomos_kernel_protocol.dart +3 -2
  32. package/dart_types/lib/src/custody.dart +64 -19
  33. package/dart_types/lib/src/local_work_rejected.dart +30 -45
  34. package/dart_types/lib/src/proto/nomos/custody/v1/snapshot.pb.dart +169 -0
  35. package/dart_types/lib/src/proto/nomos/custody/v1/snapshot.pbenum.dart +11 -0
  36. package/dart_types/lib/src/proto/nomos/kernel/v1/kernel.pb.dart +2021 -234
  37. package/dart_types/lib/src/proto/nomos/kernel/v1/kernel.pbenum.dart +175 -8
  38. package/dart_types/lib/src/proto/nomos/runtime/v2/runtime.pb.dart +8664 -0
  39. package/dart_types/lib/src/proto/nomos/runtime/v2/runtime.pbenum.dart +369 -0
  40. package/dart_types/lib/src/surfaced.dart +30 -25
  41. package/dart_types/pubspec.yaml +1 -1
  42. package/dart_types/test/surfaced_test.dart +2 -1
  43. package/package.json +1 -1
  44. package/runtime/generated-application-host.js +5736 -2047
  45. package/src/authoring.ts +3 -2
  46. package/src/births.ts +21 -0
  47. package/src/build_package.ts +30 -0
  48. package/src/business_birth.ts +39 -35
  49. package/src/codegen_call_usda.ts +1111 -0
  50. package/src/codegen_dart.ts +207 -282
  51. package/src/codegen_dart_application.ts +195 -252
  52. package/src/codegen_dart_client.ts +1978 -593
  53. package/src/codegen_dart_framework_calls.ts +291 -0
  54. package/src/codegen_dart_scenario.ts +7 -0
  55. package/src/codegen_proof.ts +3 -4
  56. package/src/codegen_provider_dart.ts +21 -7
  57. package/src/codegen_query_usda.ts +214 -0
  58. package/src/codegen_result_usda.ts +685 -0
  59. package/src/codegen_ts.ts +3945 -1111
  60. package/src/compile_package_main.ts +360 -32
  61. package/src/directive.ts +19 -4
  62. package/src/engine_entry.ts +45 -4
  63. package/src/framework/application_home.ts +2 -0
  64. package/src/framework/auth_provider_law.ts +262 -20
  65. package/src/framework/home.ts +32 -28
  66. package/src/framework/owned_custody.ts +19 -11
  67. package/src/framework/owned_custody_value.ts +51 -0
  68. package/src/framework/relations.ts +47 -21
  69. package/src/framework/signing_identity.ts +34 -0
  70. package/src/framework/workspaces.ts +31 -9
  71. package/src/framework_call_definitions.ts +53 -0
  72. package/src/framework_read_definitions.ts +45 -0
  73. package/src/identity_frontier.ts +58 -0
  74. package/src/index.ts +20 -1
  75. package/src/intent.ts +216 -16
  76. package/src/law_check.ts +19 -1
  77. package/src/law_graph.ts +57 -8
  78. package/src/law_graph_usda.ts +73 -5
  79. package/src/law_value_type.ts +106 -19
  80. package/src/read.ts +47 -0
  81. package/src/read_projection_namespace.ts +7 -0
  82. package/src/shape_compat.ts +38 -39
  83. package/src/stable_ids.ts +37 -2
  84. package/src/test_call_usda.ts +83 -0
  85. package/src/wire.ts +36 -2
  86. package/src/wire_encode.ts +45 -1
  87. package/src/workspace_sharing.ts +27 -10
  88. package/dart_types/lib/src/proto/nomos/kernel/v1/kernel.pbjson.dart +0 -6096
  89. package/dart_types/lib/src/proto/nomos/kernel/v1/kernel.pbserver.dart +0 -50
  90. package/dart_types/lib/src/proto/nomos/kernel/v1/progress.pbjson.dart +0 -178
  91. package/dart_types/lib/src/proto/nomos/runtime/v1/runtime.pb.dart +0 -828
  92. package/dart_types/lib/src/proto/nomos/runtime/v1/runtime.pbenum.dart +0 -465
  93. package/dart_types/lib/src/proto/nomos/runtime/v1/runtime.pbjson.dart +0 -573
  94. package/dart_types/lib/src/proto/nomos/runtime/v1/runtime.pbserver.dart +0 -50
@@ -4092,6 +4092,13 @@ function capabilityByNamespace(capabilities, namespace) {
4092
4092
  }
4093
4093
  return matches[0];
4094
4094
  }
4095
+ function optionalCapabilityByNamespace(capabilities, namespace) {
4096
+ const matches = capabilities.filter((capability) => capability.namespace === namespace);
4097
+ if (matches.length > 1) {
4098
+ throw new Error(`OSGi resource needs at most one ${namespace} capability`);
4099
+ }
4100
+ return matches[0];
4101
+ }
4095
4102
  function required(attributes2, name) {
4096
4103
  const value = attributes2.get(name)?.value;
4097
4104
  if (value === void 0 || value.length === 0) throw new Error(`OSGi capability has no ${name} attribute`);
@@ -4119,6 +4126,35 @@ function parseOsgiRepository(xml) {
4119
4126
  const contentSize = Number(sizeText);
4120
4127
  if (!Number.isSafeInteger(contentSize) || contentSize < 1) throw new Error("osgi.content size is invalid");
4121
4128
  const contentMime = required(contentAttributes, "mime");
4129
+ const companion = optionalCapabilityByNamespace(capabilities, "nomos.kernel.companion");
4130
+ let stageZeroLaw;
4131
+ if (companion !== void 0) {
4132
+ const companionAttributes = attributes(companion);
4133
+ const companionKind = required(companionAttributes, "nomos.kernel.companion");
4134
+ const companionSha256 = required(companionAttributes, "osgi.content");
4135
+ const companionUrl = required(companionAttributes, "url");
4136
+ const companionSize = Number(required(companionAttributes, "size"));
4137
+ const companionMime = required(companionAttributes, "mime");
4138
+ if (companionKind !== "stage-zero-law") {
4139
+ throw new Error(`unsupported kernel companion ${companionKind}`);
4140
+ }
4141
+ if (!SHA256.test(companionSha256)) {
4142
+ throw new Error("kernel companion osgi.content is not a lowercase SHA-256");
4143
+ }
4144
+ if (!Number.isSafeInteger(companionSize) || companionSize < 1) {
4145
+ throw new Error("kernel companion size is invalid");
4146
+ }
4147
+ if (companionMime !== "model/vnd.usdz+zip") {
4148
+ throw new Error(`stage-zero law companion declares ${companionMime}`);
4149
+ }
4150
+ stageZeroLaw = {
4151
+ kind: "stage-zero-law",
4152
+ contentSha256: companionSha256,
4153
+ contentUrl: companionUrl,
4154
+ contentSize: companionSize,
4155
+ contentMime: "model/vnd.usdz+zip"
4156
+ };
4157
+ }
4122
4158
  const contracts = capabilities.filter((capability) => capability.namespace === "osgi.contract").map((capability) => {
4123
4159
  const values = attributes(capability);
4124
4160
  const name = required(values, "osgi.contract");
@@ -4141,6 +4177,7 @@ function parseOsgiRepository(xml) {
4141
4177
  contentUrl,
4142
4178
  contentSize,
4143
4179
  contentMime,
4180
+ ...stageZeroLaw === void 0 ? {} : { stageZeroLaw },
4144
4181
  contracts
4145
4182
  };
4146
4183
  });
@@ -4193,6 +4230,7 @@ function readSelectedResource(dir, repositoryFile, identityType) {
4193
4230
  return resource;
4194
4231
  }
4195
4232
  function runtimeCompatibilityMismatch(dir, requirements = NOMOS_KERNEL_REQUIREMENTS) {
4233
+ let selectedStageZeroLaw;
4196
4234
  for (const [label, repositoryFile, identityType, artifactFile] of [
4197
4235
  ["production", PRODUCTION_REPOSITORY, "nomos.kernel.production", "holon.wasm"],
4198
4236
  ["test-mint", TEST_MINT_REPOSITORY, "nomos.kernel.test-mint", "holon-testmint.wasm"]
@@ -4213,10 +4251,32 @@ function runtimeCompatibilityMismatch(dir, requirements = NOMOS_KERNEL_REQUIREME
4213
4251
  if (actual !== resource.contentSha256) {
4214
4252
  return `${label} kernel ${actual.slice(0, 12)}\u2026 does not match OSGi content ${resource.contentSha256.slice(0, 12)}\u2026`;
4215
4253
  }
4254
+ const resourceStageZeroLaw = resource.stageZeroLaw;
4255
+ if (resourceStageZeroLaw === void 0) {
4256
+ return `${label} OSGi resource has no stage-zero law companion`;
4257
+ }
4258
+ if (selectedStageZeroLaw !== void 0 && selectedStageZeroLaw.contentSha256 !== resourceStageZeroLaw.contentSha256) {
4259
+ return `${label} OSGi resource selects a different stage-zero law companion`;
4260
+ }
4261
+ selectedStageZeroLaw = resourceStageZeroLaw;
4216
4262
  } catch (error) {
4217
4263
  return `${label} runtime custody is incomplete (${error.message})`;
4218
4264
  }
4219
4265
  }
4266
+ try {
4267
+ const companion = selectedStageZeroLaw;
4268
+ if (companion === void 0) return "runtime has no selected stage-zero law companion";
4269
+ const bytes = readFileSync(join(dir, "bootstrap.law.usdz"));
4270
+ if (bytes.byteLength !== companion.contentSize) {
4271
+ return `stage-zero law has ${bytes.byteLength} bytes; OSGi companion declares ${companion.contentSize}`;
4272
+ }
4273
+ const actual = sha256(bytes);
4274
+ if (actual !== companion.contentSha256) {
4275
+ return `stage-zero law ${actual.slice(0, 12)}\u2026 does not match OSGi companion ${companion.contentSha256.slice(0, 12)}\u2026`;
4276
+ }
4277
+ } catch (error) {
4278
+ return `stage-zero law custody is incomplete (${error.message})`;
4279
+ }
4220
4280
  return void 0;
4221
4281
  }
4222
4282
  async function fetchSelectedResource(fetchImpl, repositoryUrl, identityType, requirements) {
@@ -4278,18 +4338,27 @@ async function refreshRuntimeDir(cloud, dir, {
4278
4338
  "nomos.kernel.test-mint",
4279
4339
  requirements
4280
4340
  );
4281
- const [productionBytes, testMintBytes, bootstrapResponse, nomosResponse] = await Promise.all([
4341
+ const productionCompanion = production.resource.stageZeroLaw;
4342
+ const testMintCompanion = testMint.resource.stageZeroLaw;
4343
+ if (productionCompanion === void 0 || testMintCompanion === void 0) {
4344
+ throw new Error("selected kernel resource has no stage-zero law companion");
4345
+ }
4346
+ if (productionCompanion.contentSha256 !== testMintCompanion.contentSha256) {
4347
+ throw new Error("production and test-mint resources select different stage-zero law companions");
4348
+ }
4349
+ const companion = productionCompanion;
4350
+ const [productionBytes, testMintBytes, bootstrapBytes, nomosResponse] = await Promise.all([
4282
4351
  fetchVerifiedBytes(fetchImpl, productionUrl, production.resource),
4283
4352
  fetchVerifiedBytes(fetchImpl, testMintUrl, testMint.resource),
4284
- fetchImpl(`${base}/v1/runtime/bootstrap.law.usdz`),
4353
+ fetchVerifiedBytes(fetchImpl, productionUrl, {
4354
+ contentUrl: companion.contentUrl,
4355
+ contentSize: companion.contentSize,
4356
+ contentSha256: companion.contentSha256
4357
+ }),
4285
4358
  fetchImpl(`${base}/v1/runtime/nomos.law.usdz`)
4286
4359
  ]);
4287
- if (!bootstrapResponse.ok) throw new Error(`bootstrap law \u2192 ${bootstrapResponse.status}`);
4288
4360
  if (!nomosResponse.ok) throw new Error(`Nomos law \u2192 ${nomosResponse.status}`);
4289
- const [bootstrapBytes, nomosBytes] = await Promise.all([
4290
- bootstrapResponse.arrayBuffer().then((bytes) => new Uint8Array(bytes)),
4291
- nomosResponse.arrayBuffer().then((bytes) => new Uint8Array(bytes))
4292
- ]);
4361
+ const nomosBytes = new Uint8Array(await nomosResponse.arrayBuffer());
4293
4362
  mkdirSync(dir, { recursive: true });
4294
4363
  atomicWrite(join(dir, "holon.wasm"), productionBytes);
4295
4364
  atomicWrite(join(dir, "holon-testmint.wasm"), testMintBytes);
@@ -4315,16 +4384,19 @@ __export(engine_exports, {
4315
4384
  admitAll: () => admitAll,
4316
4385
  admitIntentOffers: () => admitIntentOffers,
4317
4386
  applyIntentBytes: () => applyIntentBytes,
4387
+ applyWorkspaceEffect: () => applyWorkspaceEffect,
4318
4388
  archiveRefusedMain: () => archiveRefusedMain,
4319
4389
  attestationSign: () => attestationSign,
4320
4390
  author: () => author,
4321
4391
  authorEphemeral: () => authorEphemeral,
4322
4392
  authorKeygen: () => authorKeygen,
4323
4393
  authorOn: () => authorOn,
4394
+ authorOperatorCall: () => authorOperatorCall,
4324
4395
  backupHead: () => backupHead,
4325
4396
  backupToCustody: () => backupToCustody,
4326
4397
  birthCertificateLawPayload: () => birthCertificateLawPayload,
4327
4398
  boot: () => boot2,
4399
+ callKernel: () => callKernel,
4328
4400
  certSign: () => certSign,
4329
4401
  check: () => check,
4330
4402
  checkpointStateHash: () => checkpointStateHash,
@@ -4346,6 +4418,7 @@ __export(engine_exports, {
4346
4418
  cryptoSealField: () => cryptoSealField,
4347
4419
  cryptoUnwrapKey: () => cryptoUnwrapKey,
4348
4420
  cryptoWrapKey: () => cryptoWrapKey,
4421
+ currentControllerLawHash: () => currentControllerLawHash,
4349
4422
  currentLaw: () => currentLaw,
4350
4423
  custodyConfirmedMain: () => custodyConfirmedMain,
4351
4424
  custodyFetch: () => custodyFetch,
@@ -4376,6 +4449,7 @@ __export(engine_exports, {
4376
4449
  importCheckpoint: () => importCheckpoint,
4377
4450
  importCustodyObjects: () => importCustodyObjects,
4378
4451
  ingestPackAsCustody: () => ingestPackAsCustody,
4452
+ initializeWorkspace: () => initializeWorkspace,
4379
4453
  installedLaw: () => installedLaw,
4380
4454
  intentOfferResidencies: () => intentOfferResidencies,
4381
4455
  intentOfferSizeRefusal: () => intentOfferSizeRefusal,
@@ -4398,11 +4472,12 @@ __export(engine_exports, {
4398
4472
  offerAdmit: () => offerAdmit,
4399
4473
  offerIntent: () => offerIntent,
4400
4474
  offerRequest: () => offerRequest,
4475
+ offerRequestResponse: () => offerRequestResponse,
4401
4476
  outboundOffers: () => outboundOffers,
4402
4477
  packBornChildren: () => packBornChildren,
4403
4478
  packDelta: () => packDelta,
4404
- pendingConflictSummary: () => pendingConflictSummary,
4405
- pendingConflicts: () => pendingConflicts,
4479
+ pendingConflictSummaryUsda: () => pendingConflictSummaryUsda,
4480
+ pendingConflictsUsda: () => pendingConflictsUsda,
4406
4481
  placementDirectives: () => placementDirectives,
4407
4482
  prepareRemoteOffer: () => prepareRemoteOffer,
4408
4483
  projectionStats: () => projectionStats,
@@ -4414,7 +4489,10 @@ __export(engine_exports, {
4414
4489
  pushStagedCheckpoint: () => pushStagedCheckpoint,
4415
4490
  qById: () => qById,
4416
4491
  query: () => query,
4492
+ queryByIdUsda: () => queryByIdUsda,
4493
+ queryByTypeUsda: () => queryByTypeUsda,
4417
4494
  queryEphemeral: () => queryEphemeral,
4495
+ queryGeneratedUsda: () => queryGeneratedUsda,
4418
4496
  queryPage: () => queryPage,
4419
4497
  queryProfile: () => queryProfile,
4420
4498
  queryStructured: () => queryStructured,
@@ -6262,6 +6340,1067 @@ function prepareManagedRestoration(report, currentHash, priorHash, domain, opts
6262
6340
  };
6263
6341
  }
6264
6342
 
6343
+ // src/_adapter/lifecycle-calls.ts
6344
+ var lifecycle_calls_exports = {};
6345
+ __export(lifecycle_calls_exports, {
6346
+ bootstrapInstallCall: () => bootstrapInstallCall,
6347
+ installDomainCall: () => installDomainCall,
6348
+ promoteDomainCall: () => promoteDomainCall,
6349
+ rollbackDomainCall: () => rollbackDomainCall,
6350
+ stageDomainCall: () => stageDomainCall
6351
+ });
6352
+
6353
+ // src/_adapter/generated/domain_bootstrap.operator.mjs
6354
+ var _nmsGeneratedCall = (domain, directive, canonicalUsda, routingCandidates) => ({ domain, directive, canonicalUsda, routingCandidates: [...new Set(routingCandidates)] });
6355
+ var _nmsUsdaUtf8 = (value) => {
6356
+ const bytes = [];
6357
+ for (let index = 0; index < value.length; index += 1) {
6358
+ let point = value.charCodeAt(index);
6359
+ if (point >= 55296 && point <= 56319 && index + 1 < value.length) {
6360
+ const low = value.charCodeAt(index + 1);
6361
+ if (low >= 56320 && low <= 57343) {
6362
+ point = 65536 + (point - 55296 << 10) + (low - 56320);
6363
+ index += 1;
6364
+ }
6365
+ }
6366
+ if (point <= 127) bytes.push(point);
6367
+ else if (point <= 2047) bytes.push(192 | point >> 6, 128 | point & 63);
6368
+ else if (point <= 65535) bytes.push(224 | point >> 12, 128 | point >> 6 & 63, 128 | point & 63);
6369
+ else bytes.push(240 | point >> 18, 128 | point >> 12 & 63, 128 | point >> 6 & 63, 128 | point & 63);
6370
+ }
6371
+ return Uint8Array.from(bytes);
6372
+ };
6373
+ var _nmsUsdaQuote = (value) => {
6374
+ let out = '"';
6375
+ for (const character of value) {
6376
+ const point = character.codePointAt(0);
6377
+ if (character === '"') out += '\\"';
6378
+ else if (character === "\\") out += "\\\\";
6379
+ else if (character === "\n") out += "\\n";
6380
+ else if (character === "\r") out += "\\r";
6381
+ else if (character === " ") out += "\\t";
6382
+ else if (character === "\b") out += "\\b";
6383
+ else if (character === "\f") out += "\\f";
6384
+ else if (point < 32 || point >= 127 && point <= 159) out += "\\u" + point.toString(16).padStart(4, "0");
6385
+ else out += character;
6386
+ }
6387
+ return out + '"';
6388
+ };
6389
+ var _nmsUsdaLine = (out, depth, value) => {
6390
+ out.push(" ".repeat(depth) + value);
6391
+ };
6392
+ var _nmsUsdaBegin = (out, depth, type, path) => {
6393
+ const name = path.slice(path.lastIndexOf("/") + 1);
6394
+ _nmsUsdaLine(out, depth, "def " + type + " " + _nmsUsdaQuote(name));
6395
+ _nmsUsdaLine(out, depth, "{");
6396
+ };
6397
+ var _nmsUsdaRel = (out, depth, name, target) => _nmsUsdaLine(out, depth, "custom rel " + name + " = <" + target + ">");
6398
+ var _nmsUsdaString = (out, depth, type, name, value) => _nmsUsdaLine(out, depth, "custom uniform " + type + " " + name + " = " + _nmsUsdaQuote(value));
6399
+ var _nmsUsdaClose = (out, depth) => _nmsUsdaLine(out, depth, "}");
6400
+ var _nmsUsdaChildren = (out, children2) => {
6401
+ if (children2.length > 0) {
6402
+ out.push("");
6403
+ out.push(...children2);
6404
+ }
6405
+ };
6406
+ var sha256Digest = (value) => {
6407
+ if (!/^[0-9a-f]{64}$/.test(value)) throw new TypeError("expected a 64-character lowercase hexadecimal SHA-256 digest");
6408
+ return value;
6409
+ };
6410
+ function _nmsCallUsda_bootstrap_installDomain(payload, nmsInternalWorkspace) {
6411
+ const _nmsRoutingCandidates = [];
6412
+ const out = [
6413
+ "#usda 1.0",
6414
+ "(",
6415
+ ' defaultPrim = "Change"',
6416
+ ")",
6417
+ "",
6418
+ 'def NomosChange "Change"',
6419
+ "{",
6420
+ " custom rel nomos:directive = </Nomos/Domains/d_c7835210310784d1/Intents/i_e1c3bae0bfc84298>",
6421
+ "",
6422
+ ' def NomosCall "Call"',
6423
+ " {",
6424
+ " custom rel nomos:contract = </Nomos/Domains/d_c7835210310784d1/Contracts/c_8ca67a115267b806>",
6425
+ "",
6426
+ ' def NomosRecordValue "Payload"',
6427
+ " {",
6428
+ " custom rel nomos:type = </Nomos/Domains/d_c7835210310784d1/Contracts/c_8ca67a115267b806>"
6429
+ ];
6430
+ const _payloadChildren0 = [];
6431
+ {
6432
+ const _out1 = _payloadChildren0;
6433
+ _nmsRoutingCandidates.push(payload["installedBy"]);
6434
+ _nmsUsdaBegin(_out1, 3, "NomosStringValue", "/Change/Call/Payload/f_28a9cce94405c516");
6435
+ _nmsUsdaRel(_out1, 4, "nomos:field", "/Nomos/Domains/d_c7835210310784d1/Contracts/c_8ca67a115267b806/Fields/f_28a9cce94405c516");
6436
+ _nmsUsdaRel(_out1, 4, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
6437
+ _nmsUsdaString(_out1, 4, "string", "nomos:value", payload["installedBy"]);
6438
+ _nmsUsdaClose(_out1, 3);
6439
+ }
6440
+ {
6441
+ const _out2 = _payloadChildren0;
6442
+ _nmsRoutingCandidates.push(payload["lawClosureIdentity"]);
6443
+ _nmsUsdaBegin(_out2, 3, "NomosStringValue", "/Change/Call/Payload/f_2fee70506458fe3d");
6444
+ _nmsUsdaRel(_out2, 4, "nomos:field", "/Nomos/Domains/d_c7835210310784d1/Contracts/c_8ca67a115267b806/Fields/f_2fee70506458fe3d");
6445
+ _nmsUsdaRel(_out2, 4, "nomos:type", "/Nomos/Domains/d_c7835210310784d1/Types/t_0102ed3ff09dbe61");
6446
+ _nmsUsdaString(_out2, 4, "string", "nomos:value", payload["lawClosureIdentity"]);
6447
+ _nmsUsdaClose(_out2, 3);
6448
+ }
6449
+ if (payload["authorityScope"] !== void 0) {
6450
+ const _optional3 = payload["authorityScope"];
6451
+ {
6452
+ const _out4 = _payloadChildren0;
6453
+ {
6454
+ const _out5 = _payloadChildren0;
6455
+ _nmsRoutingCandidates.push(_optional3);
6456
+ _nmsUsdaBegin(_out5, 3, "NomosStringValue", "/Change/Call/Payload/f_5e8eb1e0ff2cc489");
6457
+ _nmsUsdaRel(_out5, 4, "nomos:field", "/Nomos/Domains/d_c7835210310784d1/Contracts/c_8ca67a115267b806/Fields/f_5e8eb1e0ff2cc489");
6458
+ _nmsUsdaRel(_out5, 4, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
6459
+ _nmsUsdaString(_out5, 4, "string", "nomos:value", _optional3);
6460
+ _nmsUsdaClose(_out5, 3);
6461
+ }
6462
+ }
6463
+ }
6464
+ {
6465
+ const _out6 = _payloadChildren0;
6466
+ _nmsRoutingCandidates.push(payload["domainHash"]);
6467
+ _nmsUsdaBegin(_out6, 3, "NomosStringValue", "/Change/Call/Payload/f_9e8f11531dc7caee");
6468
+ _nmsUsdaRel(_out6, 4, "nomos:field", "/Nomos/Domains/d_c7835210310784d1/Contracts/c_8ca67a115267b806/Fields/f_9e8f11531dc7caee");
6469
+ _nmsUsdaRel(_out6, 4, "nomos:type", "/Nomos/Domains/d_c7835210310784d1/Types/t_0102ed3ff09dbe61");
6470
+ _nmsUsdaString(_out6, 4, "string", "nomos:value", payload["domainHash"]);
6471
+ _nmsUsdaClose(_out6, 3);
6472
+ }
6473
+ if (payload["dependencies"] !== void 0) {
6474
+ const _optional7 = payload["dependencies"];
6475
+ {
6476
+ const _out8 = _payloadChildren0;
6477
+ _nmsUsdaBegin(_out8, 3, "NomosListValue", "/Change/Call/Payload/f_a5a0e42489a6fcbd");
6478
+ _nmsUsdaRel(_out8, 4, "nomos:field", "/Nomos/Domains/d_c7835210310784d1/Contracts/c_8ca67a115267b806/Fields/f_a5a0e42489a6fcbd");
6479
+ _nmsUsdaRel(_out8, 4, "nomos:type", "/Nomos/Domains/d_c7835210310784d1/Types/t_0e8d650bd2880938");
6480
+ const _children9 = [];
6481
+ for (let _index10 = 0; _index10 < _optional7.length; _index10++) {
6482
+ {
6483
+ const _out11 = _children9;
6484
+ _nmsRoutingCandidates.push(_optional7[_index10]);
6485
+ _nmsUsdaBegin(_out11, 4, "NomosStringValue", "/Change/Call/Payload/f_a5a0e42489a6fcbd/i_" + String(_index10).padStart(8, "0"));
6486
+ _nmsUsdaRel(_out11, 5, "nomos:type", "/Nomos/Domains/d_c7835210310784d1/Types/t_0102ed3ff09dbe61");
6487
+ _nmsUsdaString(_out11, 5, "string", "nomos:value", _optional7[_index10]);
6488
+ _nmsUsdaClose(_out11, 4);
6489
+ }
6490
+ }
6491
+ _nmsUsdaChildren(_out8, _children9);
6492
+ _nmsUsdaClose(_out8, 3);
6493
+ }
6494
+ }
6495
+ if (payload["finalizers"] !== void 0) {
6496
+ const _optional12 = payload["finalizers"];
6497
+ {
6498
+ const _out13 = _payloadChildren0;
6499
+ _nmsUsdaBegin(_out13, 3, "NomosListValue", "/Change/Call/Payload/f_c7c8d352a3a2e55e");
6500
+ _nmsUsdaRel(_out13, 4, "nomos:field", "/Nomos/Domains/d_c7835210310784d1/Contracts/c_8ca67a115267b806/Fields/f_c7c8d352a3a2e55e");
6501
+ _nmsUsdaRel(_out13, 4, "nomos:type", "/Nomos/Domains/d_c7835210310784d1/Types/t_0e8d650bd2880938");
6502
+ const _children14 = [];
6503
+ for (let _index15 = 0; _index15 < _optional12.length; _index15++) {
6504
+ {
6505
+ const _out16 = _children14;
6506
+ _nmsRoutingCandidates.push(_optional12[_index15]);
6507
+ _nmsUsdaBegin(_out16, 4, "NomosStringValue", "/Change/Call/Payload/f_c7c8d352a3a2e55e/i_" + String(_index15).padStart(8, "0"));
6508
+ _nmsUsdaRel(_out16, 5, "nomos:type", "/Nomos/Domains/d_c7835210310784d1/Types/t_0102ed3ff09dbe61");
6509
+ _nmsUsdaString(_out16, 5, "string", "nomos:value", _optional12[_index15]);
6510
+ _nmsUsdaClose(_out16, 4);
6511
+ }
6512
+ }
6513
+ _nmsUsdaChildren(_out13, _children14);
6514
+ _nmsUsdaClose(_out13, 3);
6515
+ }
6516
+ }
6517
+ _nmsUsdaChildren(out, _payloadChildren0);
6518
+ _nmsUsdaClose(out, 2);
6519
+ _nmsUsdaClose(out, 1);
6520
+ _nmsUsdaClose(out, 0);
6521
+ return _nmsGeneratedCall("bootstrap", "installDomain", _nmsUsdaUtf8(out.join("\n") + "\n"), _nmsRoutingCandidates);
6522
+ }
6523
+ var nomosOperatorCalls = {
6524
+ installDomain(input) {
6525
+ const { domain, workspace: workspace2, ...payload } = input;
6526
+ switch (domain) {
6527
+ case "bootstrap":
6528
+ return _nmsCallUsda_bootstrap_installDomain(payload, workspace2);
6529
+ default:
6530
+ throw new Error("This law package has no 'installDomain' call in domain '" + domain + "'.");
6531
+ }
6532
+ }
6533
+ };
6534
+
6535
+ // src/_adapter/generated/nomos.operator.mjs
6536
+ var _nmsGeneratedCall2 = (domain, directive, canonicalUsda, routingCandidates) => ({ domain, directive, canonicalUsda, routingCandidates: [...new Set(routingCandidates)] });
6537
+ var _nmsUsdaUtf82 = (value) => {
6538
+ const bytes = [];
6539
+ for (let index = 0; index < value.length; index += 1) {
6540
+ let point = value.charCodeAt(index);
6541
+ if (point >= 55296 && point <= 56319 && index + 1 < value.length) {
6542
+ const low = value.charCodeAt(index + 1);
6543
+ if (low >= 56320 && low <= 57343) {
6544
+ point = 65536 + (point - 55296 << 10) + (low - 56320);
6545
+ index += 1;
6546
+ }
6547
+ }
6548
+ if (point <= 127) bytes.push(point);
6549
+ else if (point <= 2047) bytes.push(192 | point >> 6, 128 | point & 63);
6550
+ else if (point <= 65535) bytes.push(224 | point >> 12, 128 | point >> 6 & 63, 128 | point & 63);
6551
+ else bytes.push(240 | point >> 18, 128 | point >> 12 & 63, 128 | point >> 6 & 63, 128 | point & 63);
6552
+ }
6553
+ return Uint8Array.from(bytes);
6554
+ };
6555
+ var _nmsUsdaQuote2 = (value) => {
6556
+ let out = '"';
6557
+ for (const character of value) {
6558
+ const point = character.codePointAt(0);
6559
+ if (character === '"') out += '\\"';
6560
+ else if (character === "\\") out += "\\\\";
6561
+ else if (character === "\n") out += "\\n";
6562
+ else if (character === "\r") out += "\\r";
6563
+ else if (character === " ") out += "\\t";
6564
+ else if (character === "\b") out += "\\b";
6565
+ else if (character === "\f") out += "\\f";
6566
+ else if (point < 32 || point >= 127 && point <= 159) out += "\\u" + point.toString(16).padStart(4, "0");
6567
+ else out += character;
6568
+ }
6569
+ return out + '"';
6570
+ };
6571
+ var _nmsUsdaLine2 = (out, depth, value) => {
6572
+ out.push(" ".repeat(depth) + value);
6573
+ };
6574
+ var _nmsUsdaBegin2 = (out, depth, type, path) => {
6575
+ const name = path.slice(path.lastIndexOf("/") + 1);
6576
+ _nmsUsdaLine2(out, depth, "def " + type + " " + _nmsUsdaQuote2(name));
6577
+ _nmsUsdaLine2(out, depth, "{");
6578
+ };
6579
+ var _nmsUsdaRel2 = (out, depth, name, target) => _nmsUsdaLine2(out, depth, "custom rel " + name + " = <" + target + ">");
6580
+ var _nmsUsdaString2 = (out, depth, type, name, value) => _nmsUsdaLine2(out, depth, "custom uniform " + type + " " + name + " = " + _nmsUsdaQuote2(value));
6581
+ var _nmsUsdaScalar = (out, depth, type, name, value) => _nmsUsdaLine2(out, depth, "custom uniform " + type + " " + name + " = " + value);
6582
+ var _nmsUsdaClose2 = (out, depth) => _nmsUsdaLine2(out, depth, "}");
6583
+ var _nmsUsdaChildren2 = (out, children2) => {
6584
+ if (children2.length > 0) {
6585
+ out.push("");
6586
+ out.push(...children2);
6587
+ }
6588
+ };
6589
+ var sha256Digest2 = (value) => {
6590
+ if (!/^[0-9a-f]{64}$/.test(value)) throw new TypeError("expected a 64-character lowercase hexadecimal SHA-256 digest");
6591
+ return value;
6592
+ };
6593
+ var gitObjectId = (value) => {
6594
+ if (!/^[0-9a-f]{40}$/.test(value)) throw new TypeError("expected a 40-character lowercase hexadecimal Git object id");
6595
+ return value;
6596
+ };
6597
+ function _nmsCallUsda_nomos_installDomain(payload, nmsInternalWorkspace) {
6598
+ const _nmsRoutingCandidates = [];
6599
+ const out = [
6600
+ "#usda 1.0",
6601
+ "(",
6602
+ ' defaultPrim = "Change"',
6603
+ ")",
6604
+ "",
6605
+ 'def NomosChange "Change"',
6606
+ "{",
6607
+ " custom rel nomos:directive = </Nomos/Domains/d_a0c452a9439bb87f/Intents/i_5c39a2e2d3e58351>",
6608
+ "",
6609
+ ' def NomosCall "Call"',
6610
+ " {",
6611
+ " custom rel nomos:contract = </Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_451b564e4c35465a>",
6612
+ "",
6613
+ ' def NomosRecordValue "Payload"',
6614
+ " {",
6615
+ " custom rel nomos:type = </Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_451b564e4c35465a>"
6616
+ ];
6617
+ const _payloadChildren0 = [];
6618
+ if (payload["finalizers"] !== void 0) {
6619
+ const _optional1 = payload["finalizers"];
6620
+ {
6621
+ const _out2 = _payloadChildren0;
6622
+ _nmsUsdaBegin2(_out2, 3, "NomosListValue", "/Change/Call/Payload/f_05bb8d9567092cad");
6623
+ _nmsUsdaRel2(_out2, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_451b564e4c35465a/Fields/f_05bb8d9567092cad");
6624
+ _nmsUsdaRel2(_out2, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_8f49dab37fd06574");
6625
+ const _children3 = [];
6626
+ for (let _index4 = 0; _index4 < _optional1.length; _index4++) {
6627
+ {
6628
+ const _out5 = _children3;
6629
+ _nmsRoutingCandidates.push(_optional1[_index4]);
6630
+ _nmsUsdaBegin2(_out5, 4, "NomosStringValue", "/Change/Call/Payload/f_05bb8d9567092cad/i_" + String(_index4).padStart(8, "0"));
6631
+ _nmsUsdaRel2(_out5, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
6632
+ _nmsUsdaString2(_out5, 5, "string", "nomos:value", _optional1[_index4]);
6633
+ _nmsUsdaClose2(_out5, 4);
6634
+ }
6635
+ }
6636
+ _nmsUsdaChildren2(_out2, _children3);
6637
+ _nmsUsdaClose2(_out2, 3);
6638
+ }
6639
+ }
6640
+ {
6641
+ const _out6 = _payloadChildren0;
6642
+ _nmsRoutingCandidates.push(payload["installedBy"]);
6643
+ _nmsUsdaBegin2(_out6, 3, "NomosStringValue", "/Change/Call/Payload/f_0958548a07a18849");
6644
+ _nmsUsdaRel2(_out6, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_451b564e4c35465a/Fields/f_0958548a07a18849");
6645
+ _nmsUsdaRel2(_out6, 4, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
6646
+ _nmsUsdaString2(_out6, 4, "string", "nomos:value", payload["installedBy"]);
6647
+ _nmsUsdaClose2(_out6, 3);
6648
+ }
6649
+ if (payload["dependencies"] !== void 0) {
6650
+ const _optional7 = payload["dependencies"];
6651
+ {
6652
+ const _out8 = _payloadChildren0;
6653
+ _nmsUsdaBegin2(_out8, 3, "NomosListValue", "/Change/Call/Payload/f_3b9973d06216a427");
6654
+ _nmsUsdaRel2(_out8, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_451b564e4c35465a/Fields/f_3b9973d06216a427");
6655
+ _nmsUsdaRel2(_out8, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_8f49dab37fd06574");
6656
+ const _children9 = [];
6657
+ for (let _index10 = 0; _index10 < _optional7.length; _index10++) {
6658
+ {
6659
+ const _out11 = _children9;
6660
+ _nmsRoutingCandidates.push(_optional7[_index10]);
6661
+ _nmsUsdaBegin2(_out11, 4, "NomosStringValue", "/Change/Call/Payload/f_3b9973d06216a427/i_" + String(_index10).padStart(8, "0"));
6662
+ _nmsUsdaRel2(_out11, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
6663
+ _nmsUsdaString2(_out11, 5, "string", "nomos:value", _optional7[_index10]);
6664
+ _nmsUsdaClose2(_out11, 4);
6665
+ }
6666
+ }
6667
+ _nmsUsdaChildren2(_out8, _children9);
6668
+ _nmsUsdaClose2(_out8, 3);
6669
+ }
6670
+ }
6671
+ {
6672
+ const _out12 = _payloadChildren0;
6673
+ _nmsRoutingCandidates.push(payload["lawClosureIdentity"]);
6674
+ _nmsUsdaBegin2(_out12, 3, "NomosStringValue", "/Change/Call/Payload/f_3d0a30b32a3bf736");
6675
+ _nmsUsdaRel2(_out12, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_451b564e4c35465a/Fields/f_3d0a30b32a3bf736");
6676
+ _nmsUsdaRel2(_out12, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
6677
+ _nmsUsdaString2(_out12, 4, "string", "nomos:value", payload["lawClosureIdentity"]);
6678
+ _nmsUsdaClose2(_out12, 3);
6679
+ }
6680
+ if (payload["authorityScope"] !== void 0) {
6681
+ const _optional13 = payload["authorityScope"];
6682
+ {
6683
+ const _out14 = _payloadChildren0;
6684
+ {
6685
+ const _out15 = _payloadChildren0;
6686
+ _nmsRoutingCandidates.push(_optional13);
6687
+ _nmsUsdaBegin2(_out15, 3, "NomosStringValue", "/Change/Call/Payload/f_8c175f0470bde233");
6688
+ _nmsUsdaRel2(_out15, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_451b564e4c35465a/Fields/f_8c175f0470bde233");
6689
+ _nmsUsdaRel2(_out15, 4, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
6690
+ _nmsUsdaString2(_out15, 4, "string", "nomos:value", _optional13);
6691
+ _nmsUsdaClose2(_out15, 3);
6692
+ }
6693
+ }
6694
+ }
6695
+ {
6696
+ const _out16 = _payloadChildren0;
6697
+ _nmsRoutingCandidates.push(payload["domainHash"]);
6698
+ _nmsUsdaBegin2(_out16, 3, "NomosStringValue", "/Change/Call/Payload/f_ecdc06bc9b8ae826");
6699
+ _nmsUsdaRel2(_out16, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_451b564e4c35465a/Fields/f_ecdc06bc9b8ae826");
6700
+ _nmsUsdaRel2(_out16, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
6701
+ _nmsUsdaString2(_out16, 4, "string", "nomos:value", payload["domainHash"]);
6702
+ _nmsUsdaClose2(_out16, 3);
6703
+ }
6704
+ _nmsUsdaChildren2(out, _payloadChildren0);
6705
+ _nmsUsdaClose2(out, 2);
6706
+ _nmsUsdaClose2(out, 1);
6707
+ _nmsUsdaClose2(out, 0);
6708
+ return _nmsGeneratedCall2("nomos", "installDomain", _nmsUsdaUtf82(out.join("\n") + "\n"), _nmsRoutingCandidates);
6709
+ }
6710
+ function _nmsCallUsda_nomos_stageDomain(payload, nmsInternalWorkspace) {
6711
+ const _nmsRoutingCandidates = [];
6712
+ const out = [
6713
+ "#usda 1.0",
6714
+ "(",
6715
+ ' defaultPrim = "Change"',
6716
+ ")",
6717
+ "",
6718
+ 'def NomosChange "Change"',
6719
+ "{",
6720
+ " custom rel nomos:directive = </Nomos/Domains/d_a0c452a9439bb87f/Intents/i_d1e20244ccbcde0e>",
6721
+ "",
6722
+ ' def NomosCall "Call"',
6723
+ " {",
6724
+ " custom rel nomos:contract = </Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_29921c75db70745b>",
6725
+ "",
6726
+ ' def NomosRecordValue "Payload"',
6727
+ " {",
6728
+ " custom rel nomos:type = </Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_29921c75db70745b>"
6729
+ ];
6730
+ const _payloadChildren0 = [];
6731
+ if (payload["supersedes"] !== void 0) {
6732
+ const _optional1 = payload["supersedes"];
6733
+ {
6734
+ const _out2 = _payloadChildren0;
6735
+ _nmsRoutingCandidates.push(_optional1);
6736
+ _nmsUsdaBegin2(_out2, 3, "NomosStringValue", "/Change/Call/Payload/f_7299aada560ca0fe");
6737
+ _nmsUsdaRel2(_out2, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_29921c75db70745b/Fields/f_7299aada560ca0fe");
6738
+ _nmsUsdaRel2(_out2, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
6739
+ _nmsUsdaString2(_out2, 4, "string", "nomos:value", _optional1);
6740
+ _nmsUsdaClose2(_out2, 3);
6741
+ }
6742
+ }
6743
+ {
6744
+ const _out3 = _payloadChildren0;
6745
+ _nmsRoutingCandidates.push(payload["installedBy"]);
6746
+ _nmsUsdaBegin2(_out3, 3, "NomosStringValue", "/Change/Call/Payload/f_8ae27ff159721deb");
6747
+ _nmsUsdaRel2(_out3, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_29921c75db70745b/Fields/f_8ae27ff159721deb");
6748
+ _nmsUsdaRel2(_out3, 4, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
6749
+ _nmsUsdaString2(_out3, 4, "string", "nomos:value", payload["installedBy"]);
6750
+ _nmsUsdaClose2(_out3, 3);
6751
+ }
6752
+ {
6753
+ const _out4 = _payloadChildren0;
6754
+ _nmsRoutingCandidates.push(payload["domainHash"]);
6755
+ _nmsUsdaBegin2(_out4, 3, "NomosStringValue", "/Change/Call/Payload/f_8fa1bfa0d6235238");
6756
+ _nmsUsdaRel2(_out4, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_29921c75db70745b/Fields/f_8fa1bfa0d6235238");
6757
+ _nmsUsdaRel2(_out4, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
6758
+ _nmsUsdaString2(_out4, 4, "string", "nomos:value", payload["domainHash"]);
6759
+ _nmsUsdaClose2(_out4, 3);
6760
+ }
6761
+ if (payload["dependencies"] !== void 0) {
6762
+ const _optional5 = payload["dependencies"];
6763
+ {
6764
+ const _out6 = _payloadChildren0;
6765
+ _nmsUsdaBegin2(_out6, 3, "NomosListValue", "/Change/Call/Payload/f_90c6d0512feef3c5");
6766
+ _nmsUsdaRel2(_out6, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_29921c75db70745b/Fields/f_90c6d0512feef3c5");
6767
+ _nmsUsdaRel2(_out6, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_8f49dab37fd06574");
6768
+ const _children7 = [];
6769
+ for (let _index8 = 0; _index8 < _optional5.length; _index8++) {
6770
+ {
6771
+ const _out9 = _children7;
6772
+ _nmsRoutingCandidates.push(_optional5[_index8]);
6773
+ _nmsUsdaBegin2(_out9, 4, "NomosStringValue", "/Change/Call/Payload/f_90c6d0512feef3c5/i_" + String(_index8).padStart(8, "0"));
6774
+ _nmsUsdaRel2(_out9, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
6775
+ _nmsUsdaString2(_out9, 5, "string", "nomos:value", _optional5[_index8]);
6776
+ _nmsUsdaClose2(_out9, 4);
6777
+ }
6778
+ }
6779
+ _nmsUsdaChildren2(_out6, _children7);
6780
+ _nmsUsdaClose2(_out6, 3);
6781
+ }
6782
+ }
6783
+ if (payload["authorityScope"] !== void 0) {
6784
+ const _optional10 = payload["authorityScope"];
6785
+ {
6786
+ const _out11 = _payloadChildren0;
6787
+ {
6788
+ const _out12 = _payloadChildren0;
6789
+ _nmsRoutingCandidates.push(_optional10);
6790
+ _nmsUsdaBegin2(_out12, 3, "NomosStringValue", "/Change/Call/Payload/f_973daecb96bc05df");
6791
+ _nmsUsdaRel2(_out12, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_29921c75db70745b/Fields/f_973daecb96bc05df");
6792
+ _nmsUsdaRel2(_out12, 4, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
6793
+ _nmsUsdaString2(_out12, 4, "string", "nomos:value", _optional10);
6794
+ _nmsUsdaClose2(_out12, 3);
6795
+ }
6796
+ }
6797
+ }
6798
+ {
6799
+ const _out13 = _payloadChildren0;
6800
+ _nmsRoutingCandidates.push(payload["lawClosureIdentity"]);
6801
+ _nmsUsdaBegin2(_out13, 3, "NomosStringValue", "/Change/Call/Payload/f_b89e206d03838b3f");
6802
+ _nmsUsdaRel2(_out13, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_29921c75db70745b/Fields/f_b89e206d03838b3f");
6803
+ _nmsUsdaRel2(_out13, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
6804
+ _nmsUsdaString2(_out13, 4, "string", "nomos:value", payload["lawClosureIdentity"]);
6805
+ _nmsUsdaClose2(_out13, 3);
6806
+ }
6807
+ if (payload["finalizers"] !== void 0) {
6808
+ const _optional14 = payload["finalizers"];
6809
+ {
6810
+ const _out15 = _payloadChildren0;
6811
+ _nmsUsdaBegin2(_out15, 3, "NomosListValue", "/Change/Call/Payload/f_ba5c0ccfec7ef978");
6812
+ _nmsUsdaRel2(_out15, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_29921c75db70745b/Fields/f_ba5c0ccfec7ef978");
6813
+ _nmsUsdaRel2(_out15, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_8f49dab37fd06574");
6814
+ const _children16 = [];
6815
+ for (let _index17 = 0; _index17 < _optional14.length; _index17++) {
6816
+ {
6817
+ const _out18 = _children16;
6818
+ _nmsRoutingCandidates.push(_optional14[_index17]);
6819
+ _nmsUsdaBegin2(_out18, 4, "NomosStringValue", "/Change/Call/Payload/f_ba5c0ccfec7ef978/i_" + String(_index17).padStart(8, "0"));
6820
+ _nmsUsdaRel2(_out18, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
6821
+ _nmsUsdaString2(_out18, 5, "string", "nomos:value", _optional14[_index17]);
6822
+ _nmsUsdaClose2(_out18, 4);
6823
+ }
6824
+ }
6825
+ _nmsUsdaChildren2(_out15, _children16);
6826
+ _nmsUsdaClose2(_out15, 3);
6827
+ }
6828
+ }
6829
+ _nmsUsdaChildren2(out, _payloadChildren0);
6830
+ _nmsUsdaClose2(out, 2);
6831
+ _nmsUsdaClose2(out, 1);
6832
+ _nmsUsdaClose2(out, 0);
6833
+ return _nmsGeneratedCall2("nomos", "stageDomain", _nmsUsdaUtf82(out.join("\n") + "\n"), _nmsRoutingCandidates);
6834
+ }
6835
+ function _nmsCallUsda_nomos_promoteDomain(payload, nmsInternalWorkspace) {
6836
+ const _nmsRoutingCandidates = [];
6837
+ const out = [
6838
+ "#usda 1.0",
6839
+ "(",
6840
+ ' defaultPrim = "Change"',
6841
+ ")",
6842
+ "",
6843
+ 'def NomosChange "Change"',
6844
+ "{",
6845
+ " custom rel nomos:directive = </Nomos/Domains/d_a0c452a9439bb87f/Intents/i_19fadc014ad1a29f>",
6846
+ "",
6847
+ ' def NomosCall "Call"',
6848
+ " {",
6849
+ " custom rel nomos:contract = </Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_bfad0dec92aee2f1>",
6850
+ "",
6851
+ ' def NomosRecordValue "Payload"',
6852
+ " {",
6853
+ " custom rel nomos:type = </Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_bfad0dec92aee2f1>"
6854
+ ];
6855
+ const _payloadChildren0 = [];
6856
+ {
6857
+ const _out1 = _payloadChildren0;
6858
+ _nmsUsdaBegin2(_out1, 3, "NomosRecordValue", "/Change/Call/Payload/f_2b09f552be69963e");
6859
+ _nmsUsdaRel2(_out1, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_bfad0dec92aee2f1/Fields/f_2b09f552be69963e");
6860
+ _nmsUsdaRel2(_out1, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce");
6861
+ const _children2 = [];
6862
+ {
6863
+ const _out3 = _children2;
6864
+ _nmsRoutingCandidates.push(payload["preflight"]["atHash"]);
6865
+ _nmsUsdaBegin2(_out3, 4, "NomosStringValue", "/Change/Call/Payload/f_2b09f552be69963e/f_bcd35c7741e77072");
6866
+ _nmsUsdaRel2(_out3, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_bcd35c7741e77072");
6867
+ _nmsUsdaRel2(_out3, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_2cb4f34cab8c95cb");
6868
+ _nmsUsdaString2(_out3, 5, "string", "nomos:value", payload["preflight"]["atHash"]);
6869
+ _nmsUsdaClose2(_out3, 4);
6870
+ }
6871
+ {
6872
+ const _out4 = _children2;
6873
+ _nmsUsdaBegin2(_out4, 4, "NomosBoolValue", "/Change/Call/Payload/f_2b09f552be69963e/f_7dc8402a5b449a87");
6874
+ _nmsUsdaRel2(_out4, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_7dc8402a5b449a87");
6875
+ _nmsUsdaRel2(_out4, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_7e69f1a92bd07181");
6876
+ _nmsUsdaScalar(_out4, 5, "bool", "nomos:value", "true");
6877
+ _nmsUsdaClose2(_out4, 4);
6878
+ }
6879
+ {
6880
+ const _out5 = _children2;
6881
+ _nmsRoutingCandidates.push(payload["preflight"]["atStateRoot"]);
6882
+ _nmsUsdaBegin2(_out5, 4, "NomosStringValue", "/Change/Call/Payload/f_2b09f552be69963e/f_2e3db9abeea3b26d");
6883
+ _nmsUsdaRel2(_out5, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_2e3db9abeea3b26d");
6884
+ _nmsUsdaRel2(_out5, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_2cb4f34cab8c95cb");
6885
+ _nmsUsdaString2(_out5, 5, "string", "nomos:value", payload["preflight"]["atStateRoot"]);
6886
+ _nmsUsdaClose2(_out5, 4);
6887
+ }
6888
+ {
6889
+ const _out6 = _children2;
6890
+ _nmsRoutingCandidates.push(payload["preflight"]["domain"]);
6891
+ _nmsUsdaBegin2(_out6, 4, "NomosStringValue", "/Change/Call/Payload/f_2b09f552be69963e/f_d9e172710a2c05dd");
6892
+ _nmsUsdaRel2(_out6, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_d9e172710a2c05dd");
6893
+ _nmsUsdaRel2(_out6, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_1f5af3cc2413c969");
6894
+ _nmsUsdaString2(_out6, 5, "string", "nomos:value", payload["preflight"]["domain"]);
6895
+ _nmsUsdaClose2(_out6, 4);
6896
+ }
6897
+ const _optional7 = payload["preflight"]["acceptanceReason"];
6898
+ if (_optional7 !== void 0) {
6899
+ {
6900
+ const _out8 = _children2;
6901
+ _nmsRoutingCandidates.push(_optional7);
6902
+ _nmsUsdaBegin2(_out8, 4, "NomosStringValue", "/Change/Call/Payload/f_2b09f552be69963e/f_c35bafa9ae6c1ea6");
6903
+ _nmsUsdaRel2(_out8, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_c35bafa9ae6c1ea6");
6904
+ _nmsUsdaRel2(_out8, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_1f5af3cc2413c969");
6905
+ _nmsUsdaString2(_out8, 5, "string", "nomos:value", _optional7);
6906
+ _nmsUsdaClose2(_out8, 4);
6907
+ }
6908
+ }
6909
+ {
6910
+ const _out9 = _children2;
6911
+ _nmsRoutingCandidates.push(payload["preflight"]["candidateHash"]);
6912
+ _nmsUsdaBegin2(_out9, 4, "NomosStringValue", "/Change/Call/Payload/f_2b09f552be69963e/f_a45372ee1ddb7298");
6913
+ _nmsUsdaRel2(_out9, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_a45372ee1ddb7298");
6914
+ _nmsUsdaRel2(_out9, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
6915
+ _nmsUsdaString2(_out9, 5, "string", "nomos:value", payload["preflight"]["candidateHash"]);
6916
+ _nmsUsdaClose2(_out9, 4);
6917
+ }
6918
+ _nmsUsdaChildren2(_out1, _children2);
6919
+ _nmsUsdaClose2(_out1, 3);
6920
+ }
6921
+ if (payload["replaces"] !== void 0) {
6922
+ const _optional10 = payload["replaces"];
6923
+ {
6924
+ const _out11 = _payloadChildren0;
6925
+ _nmsRoutingCandidates.push(_optional10);
6926
+ _nmsUsdaBegin2(_out11, 3, "NomosStringValue", "/Change/Call/Payload/f_2cbeb64696e8e239");
6927
+ _nmsUsdaRel2(_out11, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_bfad0dec92aee2f1/Fields/f_2cbeb64696e8e239");
6928
+ _nmsUsdaRel2(_out11, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
6929
+ _nmsUsdaString2(_out11, 4, "string", "nomos:value", _optional10);
6930
+ _nmsUsdaClose2(_out11, 3);
6931
+ }
6932
+ }
6933
+ if (payload["dispositions"] !== void 0) {
6934
+ const _optional12 = payload["dispositions"];
6935
+ {
6936
+ const _out13 = _payloadChildren0;
6937
+ _nmsUsdaBegin2(_out13, 3, "NomosRecordValue", "/Change/Call/Payload/f_71c39cf1862f933f");
6938
+ _nmsUsdaRel2(_out13, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_bfad0dec92aee2f1/Fields/f_71c39cf1862f933f");
6939
+ _nmsUsdaRel2(_out13, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a");
6940
+ const _children14 = [];
6941
+ const _optional15 = _optional12["ackBy"];
6942
+ if (_optional15 !== void 0) {
6943
+ {
6944
+ const _out16 = _children14;
6945
+ _nmsRoutingCandidates.push(_optional15);
6946
+ _nmsUsdaBegin2(_out16, 4, "NomosStringValue", "/Change/Call/Payload/f_71c39cf1862f933f/f_1e5bbaa9f06e7ee0");
6947
+ _nmsUsdaRel2(_out16, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a/Fields/f_1e5bbaa9f06e7ee0");
6948
+ _nmsUsdaRel2(_out16, 5, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
6949
+ _nmsUsdaString2(_out16, 5, "string", "nomos:value", _optional15);
6950
+ _nmsUsdaClose2(_out16, 4);
6951
+ }
6952
+ }
6953
+ const _optional17 = _optional12["rebinds"];
6954
+ if (_optional17 !== void 0) {
6955
+ {
6956
+ const _out18 = _children14;
6957
+ _nmsUsdaBegin2(_out18, 4, "NomosMapValue", "/Change/Call/Payload/f_71c39cf1862f933f/f_b01f60d0e2740d56");
6958
+ _nmsUsdaRel2(_out18, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a/Fields/f_b01f60d0e2740d56");
6959
+ _nmsUsdaRel2(_out18, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_045984fbf3b46411");
6960
+ const _children19 = [];
6961
+ const _entries20 = Object.entries(_optional17).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0);
6962
+ for (let _index21 = 0; _index21 < _entries20.length; _index21++) {
6963
+ const [_key22, _value23] = _entries20[_index21];
6964
+ _nmsRoutingCandidates.push(_key22);
6965
+ const _entryPath24 = "/Change/Call/Payload/f_71c39cf1862f933f/f_b01f60d0e2740d56/e_" + String(_index21).padStart(8, "0");
6966
+ _nmsUsdaBegin2(_children19, 5, "NomosMapEntry", _entryPath24);
6967
+ _nmsUsdaString2(_children19, 6, "string", "nomos:key", _key22);
6968
+ if (7 > 0) _children19.push("");
6969
+ {
6970
+ const _out25 = _children19;
6971
+ _nmsRoutingCandidates.push(_value23);
6972
+ _nmsUsdaBegin2(_out25, 6, "NomosStringValue", _entryPath24 + "/Value");
6973
+ _nmsUsdaRel2(_out25, 7, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
6974
+ _nmsUsdaString2(_out25, 7, "string", "nomos:value", _value23);
6975
+ _nmsUsdaClose2(_out25, 6);
6976
+ }
6977
+ _nmsUsdaClose2(_children19, 5);
6978
+ }
6979
+ _nmsUsdaChildren2(_out18, _children19);
6980
+ _nmsUsdaClose2(_out18, 4);
6981
+ }
6982
+ }
6983
+ const _optional26 = _optional12["retired"];
6984
+ if (_optional26 !== void 0) {
6985
+ {
6986
+ const _out27 = _children14;
6987
+ _nmsUsdaBegin2(_out27, 4, "NomosListValue", "/Change/Call/Payload/f_71c39cf1862f933f/f_cb7f3511be108b94");
6988
+ _nmsUsdaRel2(_out27, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a/Fields/f_cb7f3511be108b94");
6989
+ _nmsUsdaRel2(_out27, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_4ac964a743207b02");
6990
+ const _children28 = [];
6991
+ for (let _index29 = 0; _index29 < _optional26.length; _index29++) {
6992
+ {
6993
+ const _out30 = _children28;
6994
+ _nmsRoutingCandidates.push(_optional26[_index29]);
6995
+ _nmsUsdaBegin2(_out30, 5, "NomosStringValue", "/Change/Call/Payload/f_71c39cf1862f933f/f_cb7f3511be108b94/i_" + String(_index29).padStart(8, "0"));
6996
+ _nmsUsdaRel2(_out30, 6, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
6997
+ _nmsUsdaString2(_out30, 6, "string", "nomos:value", _optional26[_index29]);
6998
+ _nmsUsdaClose2(_out30, 5);
6999
+ }
7000
+ }
7001
+ _nmsUsdaChildren2(_out27, _children28);
7002
+ _nmsUsdaClose2(_out27, 4);
7003
+ }
7004
+ }
7005
+ const _optional31 = _optional12["retyped"];
7006
+ if (_optional31 !== void 0) {
7007
+ {
7008
+ const _out32 = _children14;
7009
+ _nmsUsdaBegin2(_out32, 4, "NomosMapValue", "/Change/Call/Payload/f_71c39cf1862f933f/f_e22ae9fd11240338");
7010
+ _nmsUsdaRel2(_out32, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a/Fields/f_e22ae9fd11240338");
7011
+ _nmsUsdaRel2(_out32, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_045984fbf3b46411");
7012
+ const _children33 = [];
7013
+ const _entries34 = Object.entries(_optional31).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0);
7014
+ for (let _index35 = 0; _index35 < _entries34.length; _index35++) {
7015
+ const [_key36, _value37] = _entries34[_index35];
7016
+ _nmsRoutingCandidates.push(_key36);
7017
+ const _entryPath38 = "/Change/Call/Payload/f_71c39cf1862f933f/f_e22ae9fd11240338/e_" + String(_index35).padStart(8, "0");
7018
+ _nmsUsdaBegin2(_children33, 5, "NomosMapEntry", _entryPath38);
7019
+ _nmsUsdaString2(_children33, 6, "string", "nomos:key", _key36);
7020
+ if (7 > 0) _children33.push("");
7021
+ {
7022
+ const _out39 = _children33;
7023
+ _nmsRoutingCandidates.push(_value37);
7024
+ _nmsUsdaBegin2(_out39, 6, "NomosStringValue", _entryPath38 + "/Value");
7025
+ _nmsUsdaRel2(_out39, 7, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
7026
+ _nmsUsdaString2(_out39, 7, "string", "nomos:value", _value37);
7027
+ _nmsUsdaClose2(_out39, 6);
7028
+ }
7029
+ _nmsUsdaClose2(_children33, 5);
7030
+ }
7031
+ _nmsUsdaChildren2(_out32, _children33);
7032
+ _nmsUsdaClose2(_out32, 4);
7033
+ }
7034
+ }
7035
+ _nmsUsdaChildren2(_out13, _children14);
7036
+ _nmsUsdaClose2(_out13, 3);
7037
+ }
7038
+ }
7039
+ if (payload["retireReplaced"] !== void 0) {
7040
+ const _optional40 = payload["retireReplaced"];
7041
+ {
7042
+ const _out41 = _payloadChildren0;
7043
+ {
7044
+ const _out42 = _payloadChildren0;
7045
+ _nmsUsdaBegin2(_out42, 3, "NomosBoolValue", "/Change/Call/Payload/f_866a5da30aaeaa59");
7046
+ _nmsUsdaRel2(_out42, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_bfad0dec92aee2f1/Fields/f_866a5da30aaeaa59");
7047
+ _nmsUsdaRel2(_out42, 4, "nomos:type", "/Nomos/Framework/Types/t_0000000000000004");
7048
+ _nmsUsdaScalar(_out42, 4, "bool", "nomos:value", _optional40 ? "true" : "false");
7049
+ _nmsUsdaClose2(_out42, 3);
7050
+ }
7051
+ }
7052
+ }
7053
+ {
7054
+ const _out43 = _payloadChildren0;
7055
+ _nmsRoutingCandidates.push(payload["domainHash"]);
7056
+ _nmsUsdaBegin2(_out43, 3, "NomosStringValue", "/Change/Call/Payload/f_8f7ab82f65eec9b4");
7057
+ _nmsUsdaRel2(_out43, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_bfad0dec92aee2f1/Fields/f_8f7ab82f65eec9b4");
7058
+ _nmsUsdaRel2(_out43, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
7059
+ _nmsUsdaString2(_out43, 4, "string", "nomos:value", payload["domainHash"]);
7060
+ _nmsUsdaClose2(_out43, 3);
7061
+ }
7062
+ _nmsUsdaChildren2(out, _payloadChildren0);
7063
+ _nmsUsdaClose2(out, 2);
7064
+ _nmsUsdaClose2(out, 1);
7065
+ _nmsUsdaClose2(out, 0);
7066
+ return _nmsGeneratedCall2("nomos", "promoteDomain", _nmsUsdaUtf82(out.join("\n") + "\n"), _nmsRoutingCandidates);
7067
+ }
7068
+ function _nmsCallUsda_nomos_rollbackDomain(payload, nmsInternalWorkspace) {
7069
+ const _nmsRoutingCandidates = [];
7070
+ const out = [
7071
+ "#usda 1.0",
7072
+ "(",
7073
+ ' defaultPrim = "Change"',
7074
+ ")",
7075
+ "",
7076
+ 'def NomosChange "Change"',
7077
+ "{",
7078
+ " custom rel nomos:directive = </Nomos/Domains/d_a0c452a9439bb87f/Intents/i_4425c0a08f105321>",
7079
+ "",
7080
+ ' def NomosCall "Call"',
7081
+ " {",
7082
+ " custom rel nomos:contract = </Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_2d8585a3a3734daa>",
7083
+ "",
7084
+ ' def NomosRecordValue "Payload"',
7085
+ " {",
7086
+ " custom rel nomos:type = </Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_2d8585a3a3734daa>"
7087
+ ];
7088
+ const _payloadChildren0 = [];
7089
+ {
7090
+ const _out1 = _payloadChildren0;
7091
+ _nmsUsdaBegin2(_out1, 3, "NomosRecordValue", "/Change/Call/Payload/f_143aee879824faff");
7092
+ _nmsUsdaRel2(_out1, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_2d8585a3a3734daa/Fields/f_143aee879824faff");
7093
+ _nmsUsdaRel2(_out1, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce");
7094
+ const _children2 = [];
7095
+ {
7096
+ const _out3 = _children2;
7097
+ _nmsRoutingCandidates.push(payload["preflight"]["atStateRoot"]);
7098
+ _nmsUsdaBegin2(_out3, 4, "NomosStringValue", "/Change/Call/Payload/f_143aee879824faff/f_2e3db9abeea3b26d");
7099
+ _nmsUsdaRel2(_out3, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_2e3db9abeea3b26d");
7100
+ _nmsUsdaRel2(_out3, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_2cb4f34cab8c95cb");
7101
+ _nmsUsdaString2(_out3, 5, "string", "nomos:value", payload["preflight"]["atStateRoot"]);
7102
+ _nmsUsdaClose2(_out3, 4);
7103
+ }
7104
+ {
7105
+ const _out4 = _children2;
7106
+ _nmsUsdaBegin2(_out4, 4, "NomosBoolValue", "/Change/Call/Payload/f_143aee879824faff/f_7dc8402a5b449a87");
7107
+ _nmsUsdaRel2(_out4, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_7dc8402a5b449a87");
7108
+ _nmsUsdaRel2(_out4, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_7e69f1a92bd07181");
7109
+ _nmsUsdaScalar(_out4, 5, "bool", "nomos:value", "true");
7110
+ _nmsUsdaClose2(_out4, 4);
7111
+ }
7112
+ {
7113
+ const _out5 = _children2;
7114
+ _nmsRoutingCandidates.push(payload["preflight"]["candidateHash"]);
7115
+ _nmsUsdaBegin2(_out5, 4, "NomosStringValue", "/Change/Call/Payload/f_143aee879824faff/f_a45372ee1ddb7298");
7116
+ _nmsUsdaRel2(_out5, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_a45372ee1ddb7298");
7117
+ _nmsUsdaRel2(_out5, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
7118
+ _nmsUsdaString2(_out5, 5, "string", "nomos:value", payload["preflight"]["candidateHash"]);
7119
+ _nmsUsdaClose2(_out5, 4);
7120
+ }
7121
+ {
7122
+ const _out6 = _children2;
7123
+ _nmsRoutingCandidates.push(payload["preflight"]["atHash"]);
7124
+ _nmsUsdaBegin2(_out6, 4, "NomosStringValue", "/Change/Call/Payload/f_143aee879824faff/f_bcd35c7741e77072");
7125
+ _nmsUsdaRel2(_out6, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_bcd35c7741e77072");
7126
+ _nmsUsdaRel2(_out6, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_2cb4f34cab8c95cb");
7127
+ _nmsUsdaString2(_out6, 5, "string", "nomos:value", payload["preflight"]["atHash"]);
7128
+ _nmsUsdaClose2(_out6, 4);
7129
+ }
7130
+ const _optional7 = payload["preflight"]["acceptanceReason"];
7131
+ if (_optional7 !== void 0) {
7132
+ {
7133
+ const _out8 = _children2;
7134
+ _nmsRoutingCandidates.push(_optional7);
7135
+ _nmsUsdaBegin2(_out8, 4, "NomosStringValue", "/Change/Call/Payload/f_143aee879824faff/f_c35bafa9ae6c1ea6");
7136
+ _nmsUsdaRel2(_out8, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_c35bafa9ae6c1ea6");
7137
+ _nmsUsdaRel2(_out8, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_1f5af3cc2413c969");
7138
+ _nmsUsdaString2(_out8, 5, "string", "nomos:value", _optional7);
7139
+ _nmsUsdaClose2(_out8, 4);
7140
+ }
7141
+ }
7142
+ {
7143
+ const _out9 = _children2;
7144
+ _nmsRoutingCandidates.push(payload["preflight"]["domain"]);
7145
+ _nmsUsdaBegin2(_out9, 4, "NomosStringValue", "/Change/Call/Payload/f_143aee879824faff/f_d9e172710a2c05dd");
7146
+ _nmsUsdaRel2(_out9, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_d9e172710a2c05dd");
7147
+ _nmsUsdaRel2(_out9, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_1f5af3cc2413c969");
7148
+ _nmsUsdaString2(_out9, 5, "string", "nomos:value", payload["preflight"]["domain"]);
7149
+ _nmsUsdaClose2(_out9, 4);
7150
+ }
7151
+ _nmsUsdaChildren2(_out1, _children2);
7152
+ _nmsUsdaClose2(_out1, 3);
7153
+ }
7154
+ {
7155
+ const _out10 = _payloadChildren0;
7156
+ _nmsRoutingCandidates.push(payload["priorHash"]);
7157
+ _nmsUsdaBegin2(_out10, 3, "NomosStringValue", "/Change/Call/Payload/f_63bbe900a232095c");
7158
+ _nmsUsdaRel2(_out10, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_2d8585a3a3734daa/Fields/f_63bbe900a232095c");
7159
+ _nmsUsdaRel2(_out10, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
7160
+ _nmsUsdaString2(_out10, 4, "string", "nomos:value", payload["priorHash"]);
7161
+ _nmsUsdaClose2(_out10, 3);
7162
+ }
7163
+ {
7164
+ const _out11 = _payloadChildren0;
7165
+ _nmsRoutingCandidates.push(payload["candidateHash"]);
7166
+ _nmsUsdaBegin2(_out11, 3, "NomosStringValue", "/Change/Call/Payload/f_d10378a500b26e97");
7167
+ _nmsUsdaRel2(_out11, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_2d8585a3a3734daa/Fields/f_d10378a500b26e97");
7168
+ _nmsUsdaRel2(_out11, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
7169
+ _nmsUsdaString2(_out11, 4, "string", "nomos:value", payload["candidateHash"]);
7170
+ _nmsUsdaClose2(_out11, 3);
7171
+ }
7172
+ if (payload["dispositions"] !== void 0) {
7173
+ const _optional12 = payload["dispositions"];
7174
+ {
7175
+ const _out13 = _payloadChildren0;
7176
+ _nmsUsdaBegin2(_out13, 3, "NomosRecordValue", "/Change/Call/Payload/f_e015910b0a119d84");
7177
+ _nmsUsdaRel2(_out13, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_2d8585a3a3734daa/Fields/f_e015910b0a119d84");
7178
+ _nmsUsdaRel2(_out13, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a");
7179
+ const _children14 = [];
7180
+ const _optional15 = _optional12["retyped"];
7181
+ if (_optional15 !== void 0) {
7182
+ {
7183
+ const _out16 = _children14;
7184
+ _nmsUsdaBegin2(_out16, 4, "NomosMapValue", "/Change/Call/Payload/f_e015910b0a119d84/f_e22ae9fd11240338");
7185
+ _nmsUsdaRel2(_out16, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a/Fields/f_e22ae9fd11240338");
7186
+ _nmsUsdaRel2(_out16, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_045984fbf3b46411");
7187
+ const _children17 = [];
7188
+ const _entries18 = Object.entries(_optional15).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0);
7189
+ for (let _index19 = 0; _index19 < _entries18.length; _index19++) {
7190
+ const [_key20, _value21] = _entries18[_index19];
7191
+ _nmsRoutingCandidates.push(_key20);
7192
+ const _entryPath22 = "/Change/Call/Payload/f_e015910b0a119d84/f_e22ae9fd11240338/e_" + String(_index19).padStart(8, "0");
7193
+ _nmsUsdaBegin2(_children17, 5, "NomosMapEntry", _entryPath22);
7194
+ _nmsUsdaString2(_children17, 6, "string", "nomos:key", _key20);
7195
+ if (7 > 0) _children17.push("");
7196
+ {
7197
+ const _out23 = _children17;
7198
+ _nmsRoutingCandidates.push(_value21);
7199
+ _nmsUsdaBegin2(_out23, 6, "NomosStringValue", _entryPath22 + "/Value");
7200
+ _nmsUsdaRel2(_out23, 7, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
7201
+ _nmsUsdaString2(_out23, 7, "string", "nomos:value", _value21);
7202
+ _nmsUsdaClose2(_out23, 6);
7203
+ }
7204
+ _nmsUsdaClose2(_children17, 5);
7205
+ }
7206
+ _nmsUsdaChildren2(_out16, _children17);
7207
+ _nmsUsdaClose2(_out16, 4);
7208
+ }
7209
+ }
7210
+ const _optional24 = _optional12["rebinds"];
7211
+ if (_optional24 !== void 0) {
7212
+ {
7213
+ const _out25 = _children14;
7214
+ _nmsUsdaBegin2(_out25, 4, "NomosMapValue", "/Change/Call/Payload/f_e015910b0a119d84/f_b01f60d0e2740d56");
7215
+ _nmsUsdaRel2(_out25, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a/Fields/f_b01f60d0e2740d56");
7216
+ _nmsUsdaRel2(_out25, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_045984fbf3b46411");
7217
+ const _children26 = [];
7218
+ const _entries27 = Object.entries(_optional24).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0);
7219
+ for (let _index28 = 0; _index28 < _entries27.length; _index28++) {
7220
+ const [_key29, _value30] = _entries27[_index28];
7221
+ _nmsRoutingCandidates.push(_key29);
7222
+ const _entryPath31 = "/Change/Call/Payload/f_e015910b0a119d84/f_b01f60d0e2740d56/e_" + String(_index28).padStart(8, "0");
7223
+ _nmsUsdaBegin2(_children26, 5, "NomosMapEntry", _entryPath31);
7224
+ _nmsUsdaString2(_children26, 6, "string", "nomos:key", _key29);
7225
+ if (7 > 0) _children26.push("");
7226
+ {
7227
+ const _out32 = _children26;
7228
+ _nmsRoutingCandidates.push(_value30);
7229
+ _nmsUsdaBegin2(_out32, 6, "NomosStringValue", _entryPath31 + "/Value");
7230
+ _nmsUsdaRel2(_out32, 7, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
7231
+ _nmsUsdaString2(_out32, 7, "string", "nomos:value", _value30);
7232
+ _nmsUsdaClose2(_out32, 6);
7233
+ }
7234
+ _nmsUsdaClose2(_children26, 5);
7235
+ }
7236
+ _nmsUsdaChildren2(_out25, _children26);
7237
+ _nmsUsdaClose2(_out25, 4);
7238
+ }
7239
+ }
7240
+ const _optional33 = _optional12["retired"];
7241
+ if (_optional33 !== void 0) {
7242
+ {
7243
+ const _out34 = _children14;
7244
+ _nmsUsdaBegin2(_out34, 4, "NomosListValue", "/Change/Call/Payload/f_e015910b0a119d84/f_cb7f3511be108b94");
7245
+ _nmsUsdaRel2(_out34, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a/Fields/f_cb7f3511be108b94");
7246
+ _nmsUsdaRel2(_out34, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_4ac964a743207b02");
7247
+ const _children35 = [];
7248
+ for (let _index36 = 0; _index36 < _optional33.length; _index36++) {
7249
+ {
7250
+ const _out37 = _children35;
7251
+ _nmsRoutingCandidates.push(_optional33[_index36]);
7252
+ _nmsUsdaBegin2(_out37, 5, "NomosStringValue", "/Change/Call/Payload/f_e015910b0a119d84/f_cb7f3511be108b94/i_" + String(_index36).padStart(8, "0"));
7253
+ _nmsUsdaRel2(_out37, 6, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
7254
+ _nmsUsdaString2(_out37, 6, "string", "nomos:value", _optional33[_index36]);
7255
+ _nmsUsdaClose2(_out37, 5);
7256
+ }
7257
+ }
7258
+ _nmsUsdaChildren2(_out34, _children35);
7259
+ _nmsUsdaClose2(_out34, 4);
7260
+ }
7261
+ }
7262
+ const _optional38 = _optional12["ackBy"];
7263
+ if (_optional38 !== void 0) {
7264
+ {
7265
+ const _out39 = _children14;
7266
+ _nmsRoutingCandidates.push(_optional38);
7267
+ _nmsUsdaBegin2(_out39, 4, "NomosStringValue", "/Change/Call/Payload/f_e015910b0a119d84/f_1e5bbaa9f06e7ee0");
7268
+ _nmsUsdaRel2(_out39, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a/Fields/f_1e5bbaa9f06e7ee0");
7269
+ _nmsUsdaRel2(_out39, 5, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
7270
+ _nmsUsdaString2(_out39, 5, "string", "nomos:value", _optional38);
7271
+ _nmsUsdaClose2(_out39, 4);
7272
+ }
7273
+ }
7274
+ _nmsUsdaChildren2(_out13, _children14);
7275
+ _nmsUsdaClose2(_out13, 3);
7276
+ }
7277
+ }
7278
+ _nmsUsdaChildren2(out, _payloadChildren0);
7279
+ _nmsUsdaClose2(out, 2);
7280
+ _nmsUsdaClose2(out, 1);
7281
+ _nmsUsdaClose2(out, 0);
7282
+ return _nmsGeneratedCall2("nomos", "rollbackDomain", _nmsUsdaUtf82(out.join("\n") + "\n"), _nmsRoutingCandidates);
7283
+ }
7284
+ var nomosOperatorCalls2 = {
7285
+ installDomain(input) {
7286
+ const { domain, workspace: workspace2, ...payload } = input;
7287
+ switch (domain) {
7288
+ case "nomos":
7289
+ return _nmsCallUsda_nomos_installDomain(payload, workspace2);
7290
+ default:
7291
+ throw new Error("This law package has no 'installDomain' call in domain '" + domain + "'.");
7292
+ }
7293
+ },
7294
+ stageDomain(input) {
7295
+ const { domain, workspace: workspace2, ...payload } = input;
7296
+ switch (domain) {
7297
+ case "nomos":
7298
+ return _nmsCallUsda_nomos_stageDomain(payload, workspace2);
7299
+ default:
7300
+ throw new Error("This law package has no 'stageDomain' call in domain '" + domain + "'.");
7301
+ }
7302
+ },
7303
+ promoteDomain(input) {
7304
+ const { domain, workspace: workspace2, ...payload } = input;
7305
+ switch (domain) {
7306
+ case "nomos":
7307
+ return _nmsCallUsda_nomos_promoteDomain(payload, workspace2);
7308
+ default:
7309
+ throw new Error("This law package has no 'promoteDomain' call in domain '" + domain + "'.");
7310
+ }
7311
+ },
7312
+ rollbackDomain(input) {
7313
+ const { domain, workspace: workspace2, ...payload } = input;
7314
+ switch (domain) {
7315
+ case "nomos":
7316
+ return _nmsCallUsda_nomos_rollbackDomain(payload, workspace2);
7317
+ default:
7318
+ throw new Error("This law package has no 'rollbackDomain' call in domain '" + domain + "'.");
7319
+ }
7320
+ }
7321
+ };
7322
+
7323
+ // src/_adapter/lifecycle-calls.ts
7324
+ var digestList = (values) => values?.map(sha256Digest2);
7325
+ var generatedDispositions = (value) => value === void 0 ? void 0 : {
7326
+ retired: [...value.retired],
7327
+ retyped: { ...value.retyped },
7328
+ rebinds: { ...value.rebinds },
7329
+ ...value.ackBy === void 0 ? {} : { ackBy: value.ackBy }
7330
+ };
7331
+ function bootstrapInstallCall(workspace2, payload) {
7332
+ return nomosOperatorCalls.installDomain({
7333
+ domain: "bootstrap",
7334
+ workspace: workspace2,
7335
+ domainHash: sha256Digest(payload.domainHash),
7336
+ installedBy: payload.installedBy,
7337
+ lawClosureIdentity: sha256Digest(payload.lawClosureIdentity),
7338
+ ...payload.authorityScope === void 0 ? {} : { authorityScope: payload.authorityScope },
7339
+ ...payload.dependencies === void 0 ? {} : { dependencies: payload.dependencies.map(sha256Digest) },
7340
+ ...payload.finalizers === void 0 ? {} : { finalizers: payload.finalizers.map(sha256Digest) }
7341
+ });
7342
+ }
7343
+ function installDomainCall(workspace2, payload) {
7344
+ return nomosOperatorCalls2.installDomain({
7345
+ domain: "nomos",
7346
+ workspace: workspace2,
7347
+ domainHash: sha256Digest2(payload.domainHash),
7348
+ installedBy: payload.installedBy,
7349
+ lawClosureIdentity: sha256Digest2(payload.lawClosureIdentity),
7350
+ ...payload.authorityScope === void 0 ? {} : { authorityScope: payload.authorityScope },
7351
+ ...payload.dependencies === void 0 ? {} : { dependencies: digestList(payload.dependencies) },
7352
+ ...payload.finalizers === void 0 ? {} : { finalizers: digestList(payload.finalizers) }
7353
+ });
7354
+ }
7355
+ function stageDomainCall(workspace2, payload) {
7356
+ return nomosOperatorCalls2.stageDomain({
7357
+ domain: "nomos",
7358
+ workspace: workspace2,
7359
+ domainHash: sha256Digest2(payload.domainHash),
7360
+ installedBy: payload.installedBy,
7361
+ lawClosureIdentity: sha256Digest2(payload.lawClosureIdentity),
7362
+ ...payload.authorityScope === void 0 ? {} : { authorityScope: payload.authorityScope },
7363
+ ...payload.dependencies === void 0 ? {} : { dependencies: digestList(payload.dependencies) },
7364
+ ...payload.finalizers === void 0 ? {} : { finalizers: digestList(payload.finalizers) },
7365
+ ...payload.supersedes === void 0 ? {} : { supersedes: sha256Digest2(payload.supersedes) }
7366
+ });
7367
+ }
7368
+ function promoteDomainCall(workspace2, payload) {
7369
+ return nomosOperatorCalls2.promoteDomain({
7370
+ domain: "nomos",
7371
+ workspace: workspace2,
7372
+ domainHash: sha256Digest2(payload.domainHash),
7373
+ ...payload.replaces === void 0 ? {} : { replaces: sha256Digest2(payload.replaces) },
7374
+ retireReplaced: payload.retireReplaced,
7375
+ dispositions: generatedDispositions(payload.dispositions),
7376
+ preflight: {
7377
+ candidateHash: sha256Digest2(payload.preflight.candidateHash),
7378
+ domain: payload.preflight.domain,
7379
+ atHash: gitObjectId(payload.preflight.atHash),
7380
+ atStateRoot: gitObjectId(payload.preflight.atStateRoot),
7381
+ evolveOk: true,
7382
+ ...payload.preflight.acceptanceReason === void 0 ? {} : { acceptanceReason: payload.preflight.acceptanceReason }
7383
+ }
7384
+ });
7385
+ }
7386
+ function rollbackDomainCall(workspace2, payload) {
7387
+ return nomosOperatorCalls2.rollbackDomain({
7388
+ domain: "nomos",
7389
+ workspace: workspace2,
7390
+ candidateHash: sha256Digest2(payload.candidateHash),
7391
+ priorHash: sha256Digest2(payload.priorHash),
7392
+ dispositions: generatedDispositions(payload.dispositions),
7393
+ preflight: {
7394
+ candidateHash: sha256Digest2(payload.preflight.candidateHash),
7395
+ domain: payload.preflight.domain,
7396
+ atHash: gitObjectId(payload.preflight.atHash),
7397
+ atStateRoot: gitObjectId(payload.preflight.atStateRoot),
7398
+ evolveOk: true,
7399
+ ...payload.preflight.acceptanceReason === void 0 ? {} : { acceptanceReason: payload.preflight.acceptanceReason }
7400
+ }
7401
+ });
7402
+ }
7403
+
6265
7404
  // ../../node_modules/@bufbuild/protobuf/dist/esm/reflect/names.js
6266
7405
  function protoCamelCase(snakeCase) {
6267
7406
  let capNext = false;
@@ -9745,79 +10884,87 @@ function fileDesc(b64, imports) {
9745
10884
  }
9746
10885
 
9747
10886
  // src/_adapter/proto/nomos/kernel/v1/kernel_pb.js
9748
- var file_nomos_kernel_v1_kernel = /* @__PURE__ */ fileDesc("Chxub21vcy9rZXJuZWwvdjEva2VybmVsLnByb3RvEg9ub21vcy5rZXJuZWwudjEizgUKC0NhbGxSZXF1ZXN0EhgKEHByb3RvY29sX3ZlcnNpb24YASABKA0SEgoKcmVxdWVzdF9pZBgCIAEoCRIsCgRvcGVuGAogASgLMhwubm9tb3Mua2VybmVsLnYxLk9wZW5SZXF1ZXN0SAASLgoFb2ZmZXIYCyABKAsyHS5ub21vcy5rZXJuZWwudjEuT2ZmZXJSZXF1ZXN0SAASLgoFcXVlcnkYDCABKAsyHS5ub21vcy5rZXJuZWwudjEuUXVlcnlSZXF1ZXN0SAASMAoGb3V0Ym94GA0gASgLMh4ubm9tb3Mua2VybmVsLnYxLk91dGJveFJlcXVlc3RIABIsCgRzeW5jGA4gASgLMhwubm9tb3Mua2VybmVsLnYxLlN5bmNSZXF1ZXN0SAASMgoHY3VzdG9keRgPIAEoCzIfLm5vbW9zLmtlcm5lbC52MS5DdXN0b2R5UmVxdWVzdEgAEiwKBHRlc3QYECABKAsyHC5ub21vcy5rZXJuZWwudjEuVGVzdFJlcXVlc3RIABJIChNzaWduX3ByZXBhcmVkX29mZmVyGBEgASgLMikubm9tb3Mua2VybmVsLnYxLlNpZ25QcmVwYXJlZE9mZmVyUmVxdWVzdEgAEkoKFHByZXBhcmVfcmVtb3RlX29mZmVyGBIgASgLMioubm9tb3Mua2VybmVsLnYxLlByZXBhcmVSZW1vdGVPZmZlclJlcXVlc3RIABJOChZzaWduX29mZmVyX3ByZXBhcmF0aW9uGBMgASgLMiwubm9tb3Mua2VybmVsLnYxLlNpZ25PZmZlclByZXBhcmF0aW9uUmVxdWVzdEgAEk4KFnNpZ25fYmlydGhfY2VydGlmaWNhdGUYFCABKAsyLC5ub21vcy5rZXJuZWwudjEuU2lnbkJpcnRoQ2VydGlmaWNhdGVSZXF1ZXN0SABCCwoJb3BlcmF0aW9uIoUGCgxDYWxsUmVzcG9uc2USGAoQcHJvdG9jb2xfdmVyc2lvbhgBIAEoDRISCgpyZXF1ZXN0X2lkGAIgASgJEisKB2ZhaWx1cmUYCiABKAsyGC5ub21vcy5rZXJuZWwudjEuRmFpbHVyZUgAEi0KBG9wZW4YCyABKAsyHS5ub21vcy5rZXJuZWwudjEuT3BlblJlc3BvbnNlSAASLwoFb2ZmZXIYDCABKAsyHi5ub21vcy5rZXJuZWwudjEuT2ZmZXJSZXNwb25zZUgAEi8KBXF1ZXJ5GA0gASgLMh4ubm9tb3Mua2VybmVsLnYxLlF1ZXJ5UmVzcG9uc2VIABIxCgZvdXRib3gYDiABKAsyHy5ub21vcy5rZXJuZWwudjEuT3V0Ym94UmVzcG9uc2VIABItCgRzeW5jGA8gASgLMh0ubm9tb3Mua2VybmVsLnYxLlN5bmNSZXNwb25zZUgAEjMKB2N1c3RvZHkYECABKAsyIC5ub21vcy5rZXJuZWwudjEuQ3VzdG9keVJlc3BvbnNlSAASLQoEdGVzdBgRIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5UZXN0UmVzcG9uc2VIABJJChNzaWduX3ByZXBhcmVkX29mZmVyGBIgASgLMioubm9tb3Mua2VybmVsLnYxLlNpZ25QcmVwYXJlZE9mZmVyUmVzcG9uc2VIABJLChRwcmVwYXJlX3JlbW90ZV9vZmZlchgTIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5QcmVwYXJlUmVtb3RlT2ZmZXJSZXNwb25zZUgAEk8KFnNpZ25fb2ZmZXJfcHJlcGFyYXRpb24YFCABKAsyLS5ub21vcy5rZXJuZWwudjEuU2lnbk9mZmVyUHJlcGFyYXRpb25SZXNwb25zZUgAEk8KFnNpZ25fYmlydGhfY2VydGlmaWNhdGUYFSABKAsyLS5ub21vcy5rZXJuZWwudjEuU2lnbkJpcnRoQ2VydGlmaWNhdGVSZXNwb25zZUgAQgkKB291dGNvbWUiVwoHRmFpbHVyZRIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSLQoHZGV0YWlscxgDIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdCI8CgxPcGVuUmVzcG9uc2USLAoGcmVzdWx0GAEgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0IvcCCg1PZmZlclJlc3BvbnNlEjIKCGFkbWl0dGVkGAEgASgLMh4ubm9tb3Mua2VybmVsLnYxLk9mZmVyQWRtaXR0ZWRIABIwCgdyZWZ1c2VkGAIgASgLMh0ubm9tb3Mua2VybmVsLnYxLk9mZmVyUmVmdXNlZEgAEjsKDWRlYWRfbGV0dGVyZWQYAyABKAsyIi5ub21vcy5rZXJuZWwudjEuT2ZmZXJEZWFkTGV0dGVyZWRIABI4CgtxdWFyYW50aW5lZBgEIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5PZmZlclF1YXJhbnRpbmVkSAASSgoVYmxvY2tlZF9vbl9kZXBlbmRlbmN5GAUgASgLMikubm9tb3Mua2VybmVsLnYxLk9mZmVyQmxvY2tlZE9uRGVwZW5kZW5jeUgAEjIKCHByZXBhcmVkGAYgASgLMh4ubm9tb3Mua2VybmVsLnYxLk9mZmVyUHJlcGFyZWRIAEIJCgdvdXRjb21lIoMDCg1PZmZlckFkbWl0dGVkEgwKBGhlYWQYASABKAkSEQoJaW50ZW50X2lkGAIgASgJEhcKCmludGVudF9vdXQYAyABKAlIAIgBARIzCgdjcmVhdGVkGAQgAygLMiIubm9tb3Mua2VybmVsLnYxLk9mZmVyQWdncmVnYXRlUmVmEjQKCGFmZmVjdGVkGAUgAygLMiIubm9tb3Mua2VybmVsLnYxLk9mZmVyQWdncmVnYXRlUmVmEiwKBGJvcm4YBiADKAsyHi5ub21vcy5rZXJuZWwudjEuQm9ybldvcmtzcGFjZRI1Cg5iaXJ0aF9vdXRjb21lcxgHIAMoCzIdLm5vbW9zLmtlcm5lbC52MS5CaXJ0aE91dGNvbWUSNwoMa2VybmVsX3NwYW5zGAggASgLMhwubm9tb3Mua2VybmVsLnYxLktlcm5lbFNwYW5zSAGIAQESDwoHZHJ5X3J1bhgJIAEoCEINCgtfaW50ZW50X291dEIPCg1fa2VybmVsX3NwYW5zIi0KEU9mZmVyQWdncmVnYXRlUmVmEgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkiMAoNQm9ybldvcmtzcGFjZRIRCgl3b3Jrc3BhY2UYASABKAkSDAoEaGVhZBgCIAEoCSKJAwoMQmlydGhPdXRjb21lEhYKCXdvcmtzcGFjZRgBIAEoCUgAiAEBEjMKBnN0YXR1cxgCIAEoDjIjLm5vbW9zLmtlcm5lbC52MS5CaXJ0aE91dGNvbWVTdGF0dXMSEwoGcmVhc29uGAMgASgJSAGIAQESEQoEY29kZRgEIAEoCUgCiAEBEhAKCHJlcGxheWVkGAUgASgIEhUKCGxhd19oYXNoGAYgASgJSAOIAQESHQoQcGFyZW50X3dvcmtzcGFjZRgHIAEoCUgEiAEBEhwKD2NoaWxkX3dvcmtzcGFjZRgIIAEoCUgFiAEBEicKGmNlcnRpZmljYXRlX3JlZnVzYWxfcmVhc29uGAkgASgJSAaIAQFCDAoKX3dvcmtzcGFjZUIJCgdfcmVhc29uQgcKBV9jb2RlQgsKCV9sYXdfaGFzaEITChFfcGFyZW50X3dvcmtzcGFjZUISChBfY2hpbGRfd29ya3NwYWNlQh0KG19jZXJ0aWZpY2F0ZV9yZWZ1c2FsX3JlYXNvbiIvChBLZXJuZWxTcGFuTWV0cmljEgwKBG5hbWUYASABKAkSDQoFdmFsdWUYAiABKAQiowEKCktlcm5lbFNwYW4SDQoFbGFiZWwYASABKAkSEAoIdG90YWxfdXMYAiABKAQSDwoHcmVjb3JkcxgDIAEoBBIxCgZwaGFzZXMYBCADKAsyIS5ub21vcy5rZXJuZWwudjEuS2VybmVsU3Bhbk1ldHJpYxIwCgVub3RlcxgFIAMoCzIhLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxTcGFuTWV0cmljInEKC0tlcm5lbFNwYW5zEi8KCm9wZXJhdGlvbnMYASADKAsyGy5ub21vcy5rZXJuZWwudjEuS2VybmVsU3BhbhIxCgZlbmdpbmUYAiADKAsyIS5ub21vcy5rZXJuZWwudjEuS2VybmVsU3Bhbk1ldHJpYyKWAQoMT2ZmZXJSZWZ1c2VkEhUKCG9mZmVyX2lkGAEgASgJSACIAQESLwoHcmVmdXNhbBgCIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxSZWZ1c2FsEjEKC2RpYWdub3N0aWNzGAMgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0QgsKCV9vZmZlcl9pZCJ6ChFPZmZlckRlYWRMZXR0ZXJlZBIVCghvZmZlcl9pZBgBIAEoCUgAiAEBEg4KBnJlYXNvbhgCIAEoCRIxCgtkaWFnbm9zdGljcxgDIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdEILCglfb2ZmZXJfaWQirgEKEE9mZmVyUXVhcmFudGluZWQSFQoIb2ZmZXJfaWQYASABKAlIAIgBARIZChFhdXRob3JlZF9sYXdfaGFzaBgCIAEoCRIYChBjdXJyZW50X2xhd19oYXNoGAMgASgJEg4KBnJlYXNvbhgEIAEoCRIxCgtkaWFnbm9zdGljcxgFIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdEILCglfb2ZmZXJfaWQigQEKGE9mZmVyQmxvY2tlZE9uRGVwZW5kZW5jeRIVCghvZmZlcl9pZBgBIAEoCUgAiAEBEg4KBmRldGFpbBgCIAEoCRIxCgtkaWFnbm9zdGljcxgDIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdEILCglfb2ZmZXJfaWQihQEKDU9mZmVyUHJlcGFyZWQSHAoUYXV0aG9yZWRfY2hhbmdlX3VzZGEYASABKAwSGQoRd29ya3NwYWNlX2JpbmRpbmcYAiABKAkSGAoQcHJlcGFyZWRfYXRfaGVhZBgDIAEoCRIhChlhdXRob3Jfc2lnbmF0dXJlX3JlcXVpcmVkGAQgASgIImoKGFNpZ25QcmVwYXJlZE9mZmVyUmVxdWVzdBIcChRhdXRob3JlZF9jaGFuZ2VfdXNkYRgBIAEoDBIZChF3b3Jrc3BhY2VfYmluZGluZxgCIAEoCRIVCg1hdXRob3Jfc2VjcmV0GAMgASgMIjcKGVNpZ25QcmVwYXJlZE9mZmVyUmVzcG9uc2USGgoSc2lnbmVkX2NoYW5nZV91c2RhGAEgASgMIq0BChlQcmVwYXJlUmVtb3RlT2ZmZXJSZXF1ZXN0EhUKDW9mZmVyX3JlcXVlc3QYASABKAwSGQoRd29ya3NwYWNlX2JpbmRpbmcYAiABKAkSGAoQcHJlcGFyZWRfYXRfaGVhZBgDIAEoCRISCgpwdWJsaWNfa2V5GAQgASgMEhEKCXNpZ25hdHVyZRgFIAEoDBIdChVyZXF1aXJlZF9jdXN0b2R5X2hlYWQYBiABKAkiUAoZT2ZmZXJQcmVwYXJhdGlvbkNoYWxsZW5nZRIZChF3b3Jrc3BhY2VfYmluZGluZxgBIAEoCRIYChBwcmVwYXJlZF9hdF9oZWFkGAIgASgJIpkBChpQcmVwYXJlUmVtb3RlT2ZmZXJSZXNwb25zZRI/CgljaGFsbGVuZ2UYASABKAsyKi5ub21vcy5rZXJuZWwudjEuT2ZmZXJQcmVwYXJhdGlvbkNoYWxsZW5nZUgAEi8KBW9mZmVyGAIgASgLMh4ubm9tb3Mua2VybmVsLnYxLk9mZmVyUmVzcG9uc2VIAEIJCgdvdXRjb21lIoABChtTaWduT2ZmZXJQcmVwYXJhdGlvblJlcXVlc3QSFQoNb2ZmZXJfcmVxdWVzdBgBIAEoDBIZChF3b3Jrc3BhY2VfYmluZGluZxgCIAEoCRIYChBwcmVwYXJlZF9hdF9oZWFkGAMgASgJEhUKDWF1dGhvcl9zZWNyZXQYBCABKAwiRQocU2lnbk9mZmVyUHJlcGFyYXRpb25SZXNwb25zZRISCgpwdWJsaWNfa2V5GAEgASgMEhEKCXNpZ25hdHVyZRgCIAEoDCKBAQoNS2VybmVsUmVmdXNhbBIwCgRjb2RlGAEgASgOMiIubm9tb3Mua2VybmVsLnYxLktlcm5lbFJlZnVzYWxDb2RlEg8KB21lc3NhZ2UYAiABKAkSLQoHZGV0YWlscxgDIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdCK4AwoNUXVlcnlSZXNwb25zZRIsCgV2YWx1ZRgBIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5Ob21vc1ZhbHVlSAASSgoTYXV0aG9yaXphdGlvbl9jaGVjaxgKIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uQ2hlY2tSZXNwb25zZUgAEkwKFGF1dGhvcml6YXRpb25fZXhwYW5kGAsgASgLMiwubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25FeHBhbmRSZXNwb25zZUgAEj4KDW9zZ2lfcmVzb3VyY2UYDCABKAsyJS5ub21vcy5rZXJuZWwudjEuT3NnaVJlc291cmNlUmVzcG9uc2VIABJKChNmcm9udGllcl90cmFuc2l0aW9uGA0gASgLMisubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvblJlc3BvbnNlSAASSQoYdmVyaWZ5X2NoYWluX2RpYWdub3N0aWNzGBQgASgLMicubm9tb3Mua2VybmVsLnYxLlZlcmlmeUNoYWluRGlhZ25vc3RpY3NCCAoGcmVzdWx0IkgKDU9zZ2lBdHRyaWJ1dGUSDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCRIRCgR0eXBlGAMgASgJSACIAQFCBwoFX3R5cGUiLAoNT3NnaURpcmVjdGl2ZRIMCgRuYW1lGAEgASgJEg0KBXZhbHVlGAIgASgJIosBCg5Pc2dpQ2FwYWJpbGl0eRIRCgluYW1lc3BhY2UYASABKAkSMgoKYXR0cmlidXRlcxgCIAMoCzIeLm5vbW9zLmtlcm5lbC52MS5Pc2dpQXR0cmlidXRlEjIKCmRpcmVjdGl2ZXMYAyADKAsyHi5ub21vcy5rZXJuZWwudjEuT3NnaURpcmVjdGl2ZSKMAQoPT3NnaVJlcXVpcmVtZW50EhEKCW5hbWVzcGFjZRgBIAEoCRIyCgphdHRyaWJ1dGVzGAIgAygLMh4ubm9tb3Mua2VybmVsLnYxLk9zZ2lBdHRyaWJ1dGUSMgoKZGlyZWN0aXZlcxgDIAMoCzIeLm5vbW9zLmtlcm5lbC52MS5Pc2dpRGlyZWN0aXZlIpoBChRPc2dpUmVzb3VyY2VSZXNwb25zZRITCgtzb3VyY2VfdXNkYRgBIAEoDBI1CgxjYXBhYmlsaXRpZXMYAiADKAsyHy5ub21vcy5rZXJuZWwudjEuT3NnaUNhcGFiaWxpdHkSNgoMcmVxdWlyZW1lbnRzGAMgAygLMiAubm9tb3Mua2VybmVsLnYxLk9zZ2lSZXF1aXJlbWVudCLnAQoTVmVyaWZ5Q2hhaW5TdGVwU3BhbhINCgVpbmRleBgBIAEoBBISCgpjb21taXRfb2lkGAIgASgJEg4KBmRvbWFpbhgDIAEoCRIRCglkaXJlY3RpdmUYBCABKAkSEAoIdG90YWxfdXMYBSABKAQSNgoGcGhhc2VzGAYgASgLMiYubm9tb3Mua2VybmVsLnYxLlZlcmlmeUNoYWluU3RlcFBoYXNlcxJACg5lbmdpbmVfdGltaW5ncxgHIAMoCzIoLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpbkVuZ2luZVRpbWluZyKYAgoVVmVyaWZ5Q2hhaW5TdGVwUGhhc2VzEh4KFnJ1bnRpbWVfbGF3X3JlZnJlc2hfdXMYASABKAQSEwoLbWFuaWZlc3RfdXMYAiABKAQSGQoRbGF3X3Jlc29sdXRpb25fdXMYAyABKAQSHQoVbWFuYWdlZF90cmFuc2l0aW9uX3VzGAQgASgEEhQKDHByaW5jaXBhbF91cxgFIAEoBBIUCgxldm9sdXRpb25fdXMYBiABKAQSGgoSY29sb2NhdGVkX3JlYWRzX3VzGAcgASgEEiEKGXR5cGVkX2luc3RhbGxfdmVyaWZpZXJfdXMYCCABKAQSFAoMYWRtaXNzaW9uX3VzGAkgASgEEg8KB2ZvbGRfdXMYCiABKAQi2gUKFlZlcmlmeUNoYWluRGlhZ25vc3RpY3MSLgoEd2FsaxgBIAEoDjIgLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpbldhbGsSEAoIdG90YWxfdXMYAiABKAQSGwoTcmVmZXJlbmNlX2xvb2t1cF91cxgDIAEoBBIaChJyZXBvc2l0b3J5X29wZW5fdXMYBCABKAQSFQoNY2hhaW5fcmVhZF91cxgFIAEoBBIWCg5lbmdpbmVfaW5pdF91cxgGIAEoBBIYChB0aW1lbGluZV9yZWFkX3VzGAcgASgEEhgKEGxhd19oeWRyYXRpb25fdXMYCCABKAQSGwoTcmVjb3ZlcnlfcHJlc2Nhbl91cxgJIAEoBBIYChBmb2xkX2Zyb250aWVyX3VzGAogASgEEjMKBXN0ZXBzGAsgAygLMiQubm9tb3Mua2VybmVsLnYxLlZlcmlmeUNoYWluU3RlcFNwYW4SQAoOZW5naW5lX3RpbWluZ3MYDCADKAsyKC5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5FbmdpbmVUaW1pbmcSTQoVbGF3X2h5ZHJhdGlvbl90aW1pbmdzGA0gAygLMi4ubm9tb3Mua2VybmVsLnYxLlZlcmlmeUNoYWluTGF3SHlkcmF0aW9uVGltaW5nEhkKEWxhd19jbG9zdXJlX2NvdW50GA4gASgEEh4KFmxhd19jbG9zdXJlX2NhY2hlX2hpdHMYDyABKAQSIAoYbGF3X2Nsb3N1cmVfY2FjaGVfbWlzc2VzGBAgASgEEhIKCnN0ZXBfY291bnQYESABKAQSFQoNc3RlcF90b3RhbF91cxgSIAEoBBJBChFzdGVwX3BoYXNlX3RvdGFscxgTIAEoCzImLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpblN0ZXBQaGFzZXMSGgoSb21pdHRlZF9zdGVwX2NvdW50GBQgASgEIjoKF1ZlcmlmeUNoYWluRW5naW5lVGltaW5nEg0KBXBoYXNlGAEgASgJEhAKCHRvdGFsX3VzGAIgASgEIkAKHVZlcmlmeUNoYWluTGF3SHlkcmF0aW9uVGltaW5nEg0KBXBoYXNlGAEgASgJEhAKCHRvdGFsX3VzGAIgASgEIrYCCg1PdXRib3VuZE9mZmVyEgoKAmlkGAEgASgJEhMKC2Rlc3RpbmF0aW9uGAIgASgJEhQKDHNlYWxlZF9vZmZlchgDIAEoDBIUCgxjb250ZW50X3R5cGUYBCABKAkSGAoQc291cmNlX3dvcmtzcGFjZRgFIAEoCRIUCgxjdXN0b2R5X2hlYWQYBiABKAkSFwoPY2F1c2VkX2J5X29mZmVyGAcgASgJEhsKE3NjaGVkdWxlZF9hdF9taWxsaXMYCCABKAQSGgoSZGVhZGxpbmVfYXRfbWlsbGlzGAkgASgEEhQKDGN1c3RvZHlfcGF0aBgKIAEoCRITCgtjdXN0b2R5X29pZBgLIAEoCRIUCgxkZWxpdmVyeV9yZWYYDCABKAkSFQoNb2JsaWdhdGlvbl9pZBgNIAEoCSJ4Cg5PdXRib3hSZXNwb25zZRIuCgZvZmZlcnMYASADKAsyHi5ub21vcy5rZXJuZWwudjEuT3V0Ym91bmRPZmZlchIfChJuZXh0X2R1ZV9hdF9taWxsaXMYAiABKARIAIgBAUIVChNfbmV4dF9kdWVfYXRfbWlsbGlzIjwKDFN5bmNSZXNwb25zZRIsCgZyZXN1bHQYASABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QiQgoPV29ya3NwYWNlVGFyZ2V0EgwKBHJlcG8YASABKAkSEQoJd29ya3NwYWNlGAIgASgJEg4KBmJyYW5jaBgDIAEoCSJOCgtPcGVuUmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0Eg0KBXNwYW5zGAIgASgIImEKDURpcmVjdGl2ZUNhbGwSDgoGZG9tYWluGAEgASgJEhEKCWRpcmVjdGl2ZRgCIAEoCRItCgdwYXlsb2FkGAMgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0ItYCChBBdXRob3JpbmdPcHRpb25zEg0KBWFjdG9yGAEgASgJEhIKCmF1dGhfdG9rZW4YAiABKAwSFQoNYXV0aG9yX3NlY3JldBgDIAEoDBIdChB2YWxpZF9mcm9tX2Vwb2NoGAQgASgESACIAQESHwoScHJpbmNpcGFsX3ZlcmlmaWVkGAUgASgISAGIAQESCwoDcm5nGAYgAygBEhgKEGRlZmVyX3Byb2plY3Rpb24YByABKAgSDQoFc3BhbnMYCCABKAgSDwoHZHJ5X3J1bhgJIAEoCBIQCghzZXF1ZW5jZRgKIAEoBBItCgVjbG9jaxgLIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5DYXB0dXJlZENsb2NrEhQKDHByZXBhcmVfb25seRgMIAEoCEITChFfdmFsaWRfZnJvbV9lcG9jaEIVChNfcHJpbmNpcGFsX3ZlcmlmaWVkIkoKDUNhcHR1cmVkQ2xvY2sSFwoPcGh5c2ljYWxfbWlsbGlzGAEgASgEEg8KB2xvZ2ljYWwYAiABKA0SDwoHcmVwbGljYRgDIAEoBCLDAwoQQmlydGhDZXJ0aWZpY2F0ZRINCgVjaGlsZBgBIAEoCRIPCgdmb3VuZGVyGAIgASgJEhAKCHZlcmlmaWVkGAMgASgIEhIKCnBhcmVudF9rZXkYBCABKAwSEQoJcGFyZW50X2lkGAUgASgJEg0KBWVwb2NoGAYgASgDEhEKCXNpZ25hdHVyZRgHIAEoDBIZCgx2ZXJpZmllZF92aWEYCCABKAlIAIgBARIWCglpZHBfdG9rZW4YCSABKAlIAYgBARIbCg5jYXB0dXJlZF9jbG9jaxgKIAEoA0gCiAEBEiEKFGF1dGhfcHJvdmlkZXJfaXNzdWVyGAsgASgJSAOIAQESHwoSYXV0aF9wcm92aWRlcl9qd2tzGAwgASgJSASIAQESIwoWYXV0aF9wcm92aWRlcl9hdWRpZW5jZRgNIAEoCUgFiAEBQg8KDV92ZXJpZmllZF92aWFCDAoKX2lkcF90b2tlbkIRCg9fY2FwdHVyZWRfY2xvY2tCFwoVX2F1dGhfcHJvdmlkZXJfaXNzdWVyQhUKE19hdXRoX3Byb3ZpZGVyX2p3a3NCGQoXX2F1dGhfcHJvdmlkZXJfYXVkaWVuY2UibAobU2lnbkJpcnRoQ2VydGlmaWNhdGVSZXF1ZXN0EjYKC2NlcnRpZmljYXRlGAEgASgLMiEubm9tb3Mua2VybmVsLnYxLkJpcnRoQ2VydGlmaWNhdGUSFQoNc2lnbmVyX3NlY3JldBgCIAEoDCJWChxTaWduQmlydGhDZXJ0aWZpY2F0ZVJlc3BvbnNlEjYKC2NlcnRpZmljYXRlGAEgASgLMiEubm9tb3Mua2VybmVsLnYxLkJpcnRoQ2VydGlmaWNhdGUinAQKDE9mZmVyUmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0Ei4KBGNhbGwYAiABKAsyHi5ub21vcy5rZXJuZWwudjEuRGlyZWN0aXZlQ2FsbEgAEhwKEnNlYWxlZF9jaGFuZ2VfdXNkYRgHIAEoDEgAEjQKCWF1dGhvcmluZxgDIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpbmdPcHRpb25zEhAKCGxhd191c2R6GAQgASgMEjMKDGF0dGVzdGF0aW9ucxgFIAMoCzIdLm5vbW9zLmtlcm5lbC52MS5BdHRlc3RlZFJlYWQSPQoSY29uZmxpY3Rfc25hcHNob3RzGAYgAygLMiEubm9tb3Mua2VybmVsLnYxLkNvbmZsaWN0U25hcHNob3QSGgoSZXhlY3V0aW9uX2xhd191c2R6GAggASgMEiAKE2NvbnRyb2xsZXJfbGF3X2hhc2gYCSABKAlIAYgBARIdChBjYW5kaWRhdGVfY29tbWl0GAogASgJSAKIAQESPAoRYmlydGhfY2VydGlmaWNhdGUYCyABKAsyIS5ub21vcy5rZXJuZWwudjEuQmlydGhDZXJ0aWZpY2F0ZUIICgZpbnRlbnRCFgoUX2NvbnRyb2xsZXJfbGF3X2hhc2hCEwoRX2NhbmRpZGF0ZV9jb21taXQikwEKDEF0dGVzdGVkUmVhZBIQCghxdWVyeV9pZBgBIAEoCRIvCglhcmd1bWVudHMYAiABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSKwoGcmVzdWx0GAMgASgLMhsubm9tb3Mua2VybmVsLnYxLk5vbW9zVmFsdWUSEwoLYXR0ZXN0YXRpb24YBCABKAwidQoQQ29uZmxpY3RTbmFwc2hvdBIWCg5hZ2dyZWdhdGVfdHlwZRgBIAEoCRIUCgxhZ2dyZWdhdGVfaWQYAiABKAkSDQoFZmllbGQYAyABKAkSFQoNdGFyZ2V0X3NjaGVtYRgEIAEoCRINCgV0b2tlbhgFIAEoCSKwBgoMUXVlcnlSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSMgoJYXV0aG9yaXR5GAIgASgLMh8ubm9tb3Mua2VybmVsLnYxLlF1ZXJ5QXV0aG9yaXR5Eg0KBXNwYW5zGAMgASgIEioKBHJvd3MYCiABKAsyGi5ub21vcy5rZXJuZWwudjEuUm93c1F1ZXJ5SAASKgoEcGFnZRgLIAEoCzIaLm5vbW9zLmtlcm5lbC52MS5QYWdlUXVlcnlIABIrCgVieV9pZBgMIAEoCzIaLm5vbW9zLmtlcm5lbC52MS5CeUlkUXVlcnlIABI5CgxyZXNvbHZlX3JlZnMYDSABKAsyIS5ub21vcy5rZXJuZWwudjEuUmVzb2x2ZVJlZnNRdWVyeUgAEkUKEnJlZmVyZW5jZV92ZXJzaW9ucxgOIAEoCzInLm5vbW9zLmtlcm5lbC52MS5SZWZlcmVuY2VWZXJzaW9uc1F1ZXJ5SAASLAoFY291bnQYDyABKAsyGy5ub21vcy5rZXJuZWwudjEuVGFsbHlRdWVyeUgAEioKA3N1bRgQIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5UYWxseVF1ZXJ5SAASMAoHc3BhdGlhbBgRIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5TcGF0aWFsUXVlcnlIABIsCgVuYW1lZBgSIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5OYW1lZFF1ZXJ5SAASSQoTYXV0aG9yaXphdGlvbl9jaGVjaxgTIAEoCzIqLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uQ2hlY2tSZXF1ZXN0SAASSwoUYXV0aG9yaXphdGlvbl9leHBhbmQYFCABKAsyKy5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkV4cGFuZFJlcXVlc3RIABJJChNmcm9udGllcl90cmFuc2l0aW9uGBUgASgLMioubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvblJlcXVlc3RIAEIHCgVxdWVyeSKSAQoOUXVlcnlBdXRob3JpdHkSFwoPcHJpbmNpcGFsX2NsYWltGAEgASgJEhIKCmF1dGhfdG9rZW4YAiABKAwSEAoIbm93X3VuaXgYAyABKAQSFQoNYXV0aG9yX3NlY3JldBgEIAEoDBIqCgRrZXlzGAUgAygLMhwubm9tb3Mua2VybmVsLnYxLkluamVjdGVkS2V5IjgKC0luamVjdGVkS2V5Eg0KBXNjb3BlGAEgASgJEg0KBWVwb2NoGAIgASgEEgsKA2tleRgDIAEoDCJbCglSb3dzUXVlcnkSCgoCaWQYASABKAkSLwoJYXJndW1lbnRzGAIgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0EhEKCXByaW5jaXBhbBgDIAEoCSJ5CglQYWdlUXVlcnkSCgoCaWQYASABKAkSLwoJYXJndW1lbnRzGAIgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0Eg0KBWxpbWl0GAMgASgNEg0KBWFmdGVyGAQgASgJEhEKCXByaW5jaXBhbBgFIAEoCSJMCglCeUlkUXVlcnkSFgoOYWdncmVnYXRlX3R5cGUYASABKAkSFAoMYWdncmVnYXRlX2lkGAIgASgJEhEKCXByaW5jaXBhbBgDIAEoCSJcCghOb21vc1JlZhIRCgl3b3Jrc3BhY2UYASABKAkSFgoOYWdncmVnYXRlX3R5cGUYAiABKAkSFAoMYWdncmVnYXRlX2lkGAMgASgJEg8KB3ZlcnNpb24YBCABKAkiTgoQUmVzb2x2ZVJlZnNRdWVyeRInCgRyZWZzGAEgAygLMhkubm9tb3Mua2VybmVsLnYxLk5vbW9zUmVmEhEKCXByaW5jaXBhbBgCIAEoCSJOChZSZWZlcmVuY2VWZXJzaW9uc1F1ZXJ5EjQKBHJlZnMYASADKAsyJi5ub21vcy5rZXJuZWwudjEuUmVmZXJlbmNlVmVyc2lvbkNoZWNrIoQBChVSZWZlcmVuY2VWZXJzaW9uQ2hlY2sSKQoGcGlubmVkGAEgASgLMhkubm9tb3Mua2VybmVsLnYxLk5vbW9zUmVmEikKBnNlcmllcxgCIAEoCzIZLm5vbW9zLmtlcm5lbC52MS5Ob21vc1JlZhIVCg1jdXJyZW50X2ZpZWxkGAMgASgJIlwKClRhbGx5UXVlcnkSCgoCaWQYASABKAkSLwoJYXJndW1lbnRzGAIgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0EhEKCXByaW5jaXBhbBgDIAEoCSJeCgxTcGF0aWFsUXVlcnkSCgoCaWQYASABKAkSLwoJYXJndW1lbnRzGAIgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0EhEKCXByaW5jaXBhbBgDIAEoCSJxCgpOYW1lZFF1ZXJ5EjIKCW9wZXJhdGlvbhgBIAEoDjIfLm5vbW9zLmtlcm5lbC52MS5RdWVyeU9wZXJhdGlvbhIvCglhcmd1bWVudHMYAiABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QisQEKGUZyb250aWVyVHJhbnNpdGlvblJlcXVlc3QSDgoGZG9tYWluGAEgASgJEhYKDmNhbmRpZGF0ZV9oYXNoGAIgASgJEg8KB2F0X2hhc2gYAyABKAkSIQoZYWNrbm93bGVkZ2VtZW50X3ByaW5jaXBhbBgEIAEoCRIgChNyZXN0b3JlX3ByZXZpb3VzX29mGAUgASgJSACIAQFCFgoUX3Jlc3RvcmVfcHJldmlvdXNfb2YiWgolRnJvbnRpZXJUcmFuc2l0aW9uRGlzcG9zaXRpb25NYXBFbnRyeRIYChBzb3VyY2Vfc3RhYmxlX2lkGAEgASgJEhcKD2Fja25vd2xlZGdlbWVudBgCIAEoCSL1AQoeRnJvbnRpZXJUcmFuc2l0aW9uRGlzcG9zaXRpb25zEg8KB3JldGlyZWQYASADKAkSRwoHcmV0eXBlZBgCIAMoCzI2Lm5vbW9zLmtlcm5lbC52MS5Gcm9udGllclRyYW5zaXRpb25EaXNwb3NpdGlvbk1hcEVudHJ5EkcKB3JlYmluZHMYAyADKAsyNi5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJUcmFuc2l0aW9uRGlzcG9zaXRpb25NYXBFbnRyeRIcCg9hY2tub3dsZWRnZWRfYnkYBCABKAlIAIgBAUISChBfYWNrbm93bGVkZ2VkX2J5Ij0KG0Zyb250aWVyVHJhbnNpdGlvblZpb2xhdGlvbhIOCgZkb21haW4YASABKAkSDgoGZGV0YWlsGAIgASgJItcCChpGcm9udGllclRyYW5zaXRpb25SZXNwb25zZRIPCgdhdF9oYXNoGAEgASgJEhkKDGN1cnJlbnRfaGFzaBgCIAEoCUgAiAEBEhUKDWF0X3N0YXRlX3Jvb3QYAyABKAkSFgoOY2FuZGlkYXRlX2hhc2gYBCABKAkSDgoGZG9tYWluGAUgASgJEg8KB2RvbWFpbnMYBiADKAkSDQoFcmVhZHkYByABKAgSQAoKdmlvbGF0aW9ucxgIIAMoCzIsLm5vbW9zLmtlcm5lbC52MS5Gcm9udGllclRyYW5zaXRpb25WaW9sYXRpb24SSgoMZGlzcG9zaXRpb25zGAkgASgLMi8ubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvbkRpc3Bvc2l0aW9uc0gBiAEBQg8KDV9jdXJyZW50X2hhc2hCDwoNX2Rpc3Bvc2l0aW9ucyIvChNBdXRob3JpemF0aW9uT2JqZWN0EgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkiVAoUQXV0aG9yaXphdGlvblN1YmplY3QSDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCRIVCghyZWxhdGlvbhgDIAEoCUgAiAEBQgsKCV9yZWxhdGlvbiKcAQoYUmVsYXRpb25zaGlwVHVwbGVBZGRyZXNzEjYKCHJlc291cmNlGAEgASgLMiQubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25PYmplY3QSEAoIcmVsYXRpb24YAiABKAkSNgoHc3ViamVjdBgDIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uU3ViamVjdCKBAQoYQXV0aG9yaXphdGlvbkNvbnNpc3RlbmN5EiMKGWN1cnJlbnRfdmVyaWZpZWRfZnJvbnRpZXIYASABKAhIABIZCg9hdF9sZWFzdF9jb21taXQYAiABKAlIABIWCgxleGFjdF9jb21taXQYAyABKAlIAEINCgtyZXF1aXJlbWVudCJmCh1BdXRob3JpemF0aW9uQ29uZGl0aW9uQ29udGV4dBIUCgxjb25kaXRpb25faWQYASABKAkSLwoJYXJndW1lbnRzGAIgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0IvcCChlBdXRob3JpemF0aW9uQ2hlY2tSZXF1ZXN0EjYKCHJlc291cmNlGAEgASgLMiQubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25PYmplY3QSEgoKcGVybWlzc2lvbhgCIAEoCRI2CgdzdWJqZWN0GAMgASgLMiUubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25TdWJqZWN0Ej4KC2NvbnNpc3RlbmN5GAQgASgLMikubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25Db25zaXN0ZW5jeRI/Cgdjb250ZXh0GAUgAygLMi4ubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25Db25kaXRpb25Db250ZXh0EiAKE2V4cGVjdGVkX21vZGVsX2hhc2gYBiABKAlIAIgBARIbChNpbmNsdWRlX2V4cGxhbmF0aW9uGAcgASgIQhYKFF9leHBlY3RlZF9tb2RlbF9oYXNoIu0CChpBdXRob3JpemF0aW9uRXhwYW5kUmVxdWVzdBI2CghyZXNvdXJjZRgBIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uT2JqZWN0EhIKCnBlcm1pc3Npb24YAiABKAkSPgoLY29uc2lzdGVuY3kYAyABKAsyKS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkNvbnNpc3RlbmN5Ej8KB2NvbnRleHQYBCADKAsyLi5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkNvbmRpdGlvbkNvbnRleHQSIAoTZXhwZWN0ZWRfbW9kZWxfaGFzaBgFIAEoCUgAiAEBEg0KBWxpbWl0GAYgASgNEhIKBWFmdGVyGAcgASgJSAGIAQESGwoTaW5jbHVkZV9leHBsYW5hdGlvbhgIIAEoCEIWChRfZXhwZWN0ZWRfbW9kZWxfaGFzaEIICgZfYWZ0ZXIivQEKGVJlbGF0aW9uc2hpcFR1cGxlRXZpZGVuY2USOAoFdHVwbGUYASABKAsyKS5ub21vcy5rZXJuZWwudjEuUmVsYXRpb25zaGlwVHVwbGVBZGRyZXNzEhAKCHR1cGxlX2lkGAIgASgJEhoKEmFzc2VydGlvbl9ldmVudF9pZBgDIAEoCRIgChNyZXZvY2F0aW9uX2V2ZW50X2lkGAQgASgJSACIAQFCFgoUX3Jldm9jYXRpb25fZXZlbnRfaWQi4QMKGEF1dGhvcml6YXRpb25FeHBsYW5hdGlvbhJGCglvcGVyYXRpb24YASABKA4yMy5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkV4cGxhbmF0aW9uLk9wZXJhdGlvbhIQCghyZWxhdGlvbhgCIAEoCRIOCgZyZXN1bHQYAyABKAgSPAoIZXZpZGVuY2UYBCADKAsyKi5ub21vcy5rZXJuZWwudjEuUmVsYXRpb25zaGlwVHVwbGVFdmlkZW5jZRI7CghjaGlsZHJlbhgFIAMoCzIpLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uRXhwbGFuYXRpb24i3wEKCU9wZXJhdGlvbhIZChVPUEVSQVRJT05fVU5TUEVDSUZJRUQQABIUChBPUEVSQVRJT05fRElSRUNUEAESHgoaT1BFUkFUSU9OX0NPTVBVVEVEX1VTRVJTRVQQAhIeChpPUEVSQVRJT05fVFVQTEVfVE9fVVNFUlNFVBADEhMKD09QRVJBVElPTl9VTklPThAEEhoKFk9QRVJBVElPTl9JTlRFUlNFQ1RJT04QBRIXChNPUEVSQVRJT05fRVhDTFVTSU9OEAYSFwoTT1BFUkFUSU9OX0NPTkRJVElPThAHIncKGkF1dGhvcml6YXRpb25EZWNpc2lvbkJhc2lzEiAKGGF1dGhvcml6YXRpb25fbW9kZWxfaGFzaBgBIAEoCRIhChlyZWxhdGlvbnNoaXBfc3RhdGVfY29tbWl0GAIgASgJEhQKDGNvbnRleHRfaGFzaBgDIAEoDCK+AQoaQXV0aG9yaXphdGlvbkNoZWNrUmVzcG9uc2USDwoHYWxsb3dlZBgBIAEoCBI6CgViYXNpcxgCIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uRGVjaXNpb25CYXNpcxJDCgtleHBsYW5hdGlvbhgDIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uRXhwbGFuYXRpb25IAIgBAUIOCgxfZXhwbGFuYXRpb24igwIKG0F1dGhvcml6YXRpb25FeHBhbmRSZXNwb25zZRI3CghzdWJqZWN0cxgBIAMoCzIlLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uU3ViamVjdBI6CgViYXNpcxgCIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uRGVjaXNpb25CYXNpcxIRCgRuZXh0GAMgASgJSACIAQESQwoLZXhwbGFuYXRpb24YBCABKAsyKS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkV4cGxhbmF0aW9uSAGIAQFCBwoFX25leHRCDgoMX2V4cGxhbmF0aW9uInAKDU91dGJveFJlcXVlc3QSMAoGdGFyZ2V0GAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBItCgVjbG9jaxgCIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5DYXB0dXJlZENsb2NrImMKC1N5bmNSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSEQoJZnJvbV9iYXNlGAIgASgJEg8KB3RvX2hlYWQYAyABKAkiUwoLVGVzdFJlcXVlc3QSNwoIc2V0X3Jvb3QYASABKAsyIy5ub21vcy5rZXJuZWwudjEuU2V0VGVzdFJvb3RSZXF1ZXN0SABCCwoJb3BlcmF0aW9uIigKElNldFRlc3RSb290UmVxdWVzdBISCgpwdWJsaWNfa2V5GAEgASgMIj0KDFRlc3RSZXNwb25zZRItCgZyZXN1bHQYASABKAsyHS5ub21vcy5rZXJuZWwudjEuQWNrbm93bGVkZ2VkItULCg5DdXN0b2R5UmVxdWVzdBI3CgpwYWNrX2RlbHRhGAogASgLMiEubm9tb3Mua2VybmVsLnYxLlBhY2tEZWx0YVJlcXVlc3RIABI3CgphcHBseV9wYWNrGAsgASgLMiEubm9tb3Mua2VybmVsLnYxLkFwcGx5UGFja1JlcXVlc3RIABI3CgpyZXBvX3N0YXRzGAwgASgLMiEubm9tb3Mua2VybmVsLnYxLlJlcG9TdGF0c1JlcXVlc3RIABI9Cg1pbnRlbnRzX2Fib3ZlGA0gASgLMiQubm9tb3Mua2VybmVsLnYxLkludGVudHNBYm92ZVJlcXVlc3RIABI/Cg5pbnNwZWN0X2NoYW5nZRgOIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5JbnNwZWN0Q2hhbmdlUmVxdWVzdEgAEk4KFmVuY29kZV9yZWZ1c2FsX3ZlcmRpY3QYDyABKAsyLC5ub21vcy5rZXJuZWwudjEuRW5jb2RlUmVmdXNhbFZlcmRpY3RSZXF1ZXN0SAASUAoXaW5zcGVjdF9yZWZ1c2FsX3ZlcmRpY3QYECABKAsyLS5ub21vcy5rZXJuZWwudjEuSW5zcGVjdFJlZnVzYWxWZXJkaWN0UmVxdWVzdEgAEjUKCXJlYWRfYmxvYhgRIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5SZWFkQmxvYlJlcXVlc3RIABI5CgtyZXNvbHZlX3JlZhgSIAEoCzIiLm5vbW9zLmtlcm5lbC52MS5SZXNvbHZlUmVmUmVxdWVzdEgAEjUKCWxpc3RfcmVmcxgTIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5MaXN0UmVmc1JlcXVlc3RIABI1Cgl3cml0ZV9yZWYYFCABKAsyIC5ub21vcy5rZXJuZWwudjEuV3JpdGVSZWZSZXF1ZXN0SAASNwoKZGVsZXRlX3JlZhgVIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5EZWxldGVSZWZSZXF1ZXN0SAASRAoRd3JpdGVfbWV0YV9jb21taXQYFiABKAsyJy5ub21vcy5rZXJuZWwudjEuV3JpdGVNZXRhQ29tbWl0UmVxdWVzdEgAEkIKEGxhd19jbG9zdXJlX2luZm8YFyABKAsyJi5ub21vcy5rZXJuZWwudjEuTGF3Q2xvc3VyZUluZm9SZXF1ZXN0SAASRQoRY2hlY2twb2ludF9leHBvcnQYGCABKAsyKC5ub21vcy5rZXJuZWwudjEuQ2hlY2twb2ludEV4cG9ydFJlcXVlc3RIABJFChFjaGVja3BvaW50X2ltcG9ydBgZIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5DaGVja3BvaW50SW1wb3J0UmVxdWVzdEgAEkMKEGNhcGFjaXR5X3Jlc2VydmUYGiABKAsyJy5ub21vcy5rZXJuZWwudjEuQ2FwYWNpdHlSZXNlcnZlUmVxdWVzdEgAEjsKDHJlc3RvcmVfbWFpbhgbIAEoCzIjLm5vbW9zLmtlcm5lbC52MS5SZXN0b3JlTWFpblJlcXVlc3RIABJOChZyZXNvbHZlX3N0YXRlX3Bvc2l0aW9uGBwgASgLMiwubm9tb3Mua2VybmVsLnYxLlJlc29sdmVTdGF0ZVBvc2l0aW9uUmVxdWVzdEgAEkcKEnJlc2lkZW50X2Zvb3RwcmludBgdIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5SZXNpZGVudEZvb3RwcmludFJlcXVlc3RIABJBCg9oaXN0b3J5X3N1bW1hcnkYHiABKAsyJi5ub21vcy5rZXJuZWwudjEuSGlzdG9yeVN1bW1hcnlSZXF1ZXN0SAASWgoccHJvdmVfY29tcGFjdGlvbl9lcXVpdmFsZW5jZRgfIAEoCzIyLm5vbW9zLmtlcm5lbC52MS5Qcm92ZUNvbXBhY3Rpb25FcXVpdmFsZW5jZVJlcXVlc3RIAEILCglvcGVyYXRpb24iKAoYUmVzaWRlbnRGb290cHJpbnRSZXF1ZXN0EgwKBGRlZXAYASABKAginwIKEVJlc2lkZW50Rm9vdHByaW50EhEKCXdvcmtzcGFjZRgBIAEoCRIOCgZicmFuY2gYAiABKAkSGAoQcmVhZF9tb2RlbF9ieXRlcxgDIAEoBBIdChVyZWFkX21vZGVsX3J1c3RfYnl0ZXMYBCABKAQSGAoQZm9sZF9zdGF0ZV9ieXRlcxgFIAEoBBITCgtmb2xkX2ltYWdlcxgGIAEoDRIfChdzaGFyZWRfYXR0cmlidXRlZF9ieXRlcxgHIAEoBBISCgphZ2dyZWdhdGVzGAggASgEEjYKCmNvbXBvbmVudHMYCSADKAsyIi5ub21vcy5rZXJuZWwudjEuUmVzaWRlbnRDb21wb25lbnQSEgoKY29tcHV0ZV91cxgKIAEoBCJpChFSZXNpZGVudENvbXBvbmVudBI0CgRraW5kGAEgASgOMiYubm9tb3Mua2VybmVsLnYxLlJlc2lkZW50Q29tcG9uZW50S2luZBINCgVieXRlcxgCIAEoBBIPCgdjZWlsaW5nGAMgASgIIsoBChlSZXNpZGVudEZvb3RwcmludFJlc3BvbnNlEjUKCXJlc2lkZW50cxgBIAMoCzIiLm5vbW9zLmtlcm5lbC52MS5SZXNpZGVudEZvb3RwcmludBIcChRhbGxvY2F0b3JfbGl2ZV9ieXRlcxgCIAEoBBIYChBhdHRyaWJ1dGVkX2J5dGVzGAMgASgEEhkKEXVuYWNjb3VudGVkX2J5dGVzGAQgASgEEhUKDWFjY291bnRpbmdfdXMYBSABKAQSDAoEZGVlcBgGIAEoCCKcAQoQUGFja0RlbHRhUmVxdWVzdBIMCgRyZXBvGAEgASgJEhEKBGhlYWQYAiABKAlIAIgBARIRCgRiYXNlGAMgASgJSAGIAQESDgoGYnJhbmNoGAQgASgJEh0KEHN0YWdlZF9wYWNrX2ZpbGUYBSABKAlIAogBAUIHCgVfaGVhZEIHCgVfYmFzZUITChFfc3RhZ2VkX3BhY2tfZmlsZSJyChBBcHBseVBhY2tSZXF1ZXN0EgwKBHJlcG8YASABKAkSDgoEcGFjaxgCIAEoDEgAEhoKEHN0YWdlZF9wYWNrX2ZpbGUYBCABKAlIABIRCgRoZWFkGAMgASgJSAGIAQFCCAoGc291cmNlQgcKBV9oZWFkIiAKEFJlcG9TdGF0c1JlcXVlc3QSDAoEcmVwbxgBIAEoCSKsAQoTSW50ZW50c0Fib3ZlUmVxdWVzdBIMCgRyZXBvGAEgASgJEhEKBGhlYWQYAiABKAlIAIgBARIRCgRiYXNlGAMgASgJSAGIAQESDgoGYnJhbmNoGAQgASgJEg0KBWxpbWl0GAUgASgEEhgKEGNvbXBsZXRlX2xvZ2ljYWwYBiABKAgSFgoOY29tcGFjdF9zdG9yZWQYByABKAhCBwoFX2hlYWRCBwoFX2Jhc2UibQoVSGlzdG9yeVN1bW1hcnlSZXF1ZXN0EgwKBHJlcG8YASABKAkSEQoEaGVhZBgCIAEoCUgAiAEBEg4KBmJyYW5jaBgDIAEoCRIRCgRiYXNlGAQgASgJSAGIAQFCBwoFX2hlYWRCBwoFX2Jhc2UiKwoUSW5zcGVjdENoYW5nZVJlcXVlc3QSEwoLY2hhbmdlX3VzZGEYASABKAwi3wEKDlJlZnVzYWxWZXJkaWN0EhUKCG9mZmVyX2lkGAEgASgJSACIAQESEAoDb2lkGAIgASgJSAGIAQESEwoGZG9tYWluGAMgASgJSAKIAQESGQoMZGlyZWN0aXZlX2lkGAQgASgJSAOIAQESFAoHc2Vzc2lvbhgFIAEoCUgEiAEBEhEKCXBhcmtlZF9hdBgGIAEoCRIOCgZyZWFzb24YByABKAlCCwoJX29mZmVyX2lkQgYKBF9vaWRCCQoHX2RvbWFpbkIPCg1fZGlyZWN0aXZlX2lkQgoKCF9zZXNzaW9uIk8KG0VuY29kZVJlZnVzYWxWZXJkaWN0UmVxdWVzdBIwCgd2ZXJkaWN0GAEgASgLMh8ubm9tb3Mua2VybmVsLnYxLlJlZnVzYWxWZXJkaWN0IjQKHEluc3BlY3RSZWZ1c2FsVmVyZGljdFJlcXVlc3QSFAoMdmVyZGljdF91c2RhGAEgASgMItQBChVDb21wYWN0aW9uRXF1aXZhbGVuY2USEwoLc291cmNlX2hlYWQYASABKAkSFgoOc291cmNlX2dlbmVzaXMYAiABKAkSFgoOY2FuZGlkYXRlX2hlYWQYAyABKAkSGQoRY2FuZGlkYXRlX2dlbmVzaXMYBCABKAkSFgoOc291cmNlX2ludGVudHMYBSABKAQSFwoPY2FycmllZF9pbnRlbnRzGAYgASgEEhYKDnBhcmtlZF9pbnRlbnRzGAcgASgEEhIKCmVxdWl2YWxlbnQYCCABKAgifQohUHJvdmVDb21wYWN0aW9uRXF1aXZhbGVuY2VSZXF1ZXN0EhMKC3NvdXJjZV9yZXBvGAEgASgJEhMKC3NvdXJjZV9oZWFkGAIgASgJEhYKDmNhbmRpZGF0ZV9yZXBvGAMgASgJEhYKDmNhbmRpZGF0ZV9oZWFkGAQgASgJIjoKD1JlYWRCbG9iUmVxdWVzdBIMCgRyZXBvGAEgASgJEgsKA29pZBgCIAEoCRIMCgRwYXRoGAMgASgJIjQKEVJlc29sdmVSZWZSZXF1ZXN0EgwKBHJlcG8YASABKAkSEQoJcmVmZXJlbmNlGAIgASgJIi8KD0xpc3RSZWZzUmVxdWVzdBIMCgRyZXBvGAEgASgJEg4KBnByZWZpeBgCIAEoCSJCCg9Xcml0ZVJlZlJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCglyZWZlcmVuY2UYAiABKAkSDgoGdGFyZ2V0GAMgASgJIjMKEERlbGV0ZVJlZlJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCglyZWZlcmVuY2UYAiABKAkiKQoITWV0YUZpbGUSDAoEcGF0aBgBIAEoCRIPCgdjb250ZW50GAIgASgMIq4BChZXcml0ZU1ldGFDb21taXRSZXF1ZXN0EgwKBHJlcG8YASABKAkSDwoHcGFyZW50cxgCIAMoCRIoCgVmaWxlcxgDIAMoCzIZLm5vbW9zLmtlcm5lbC52MS5NZXRhRmlsZRIPCgdtZXNzYWdlGAQgASgJEhQKDHRpbWVfc2Vjb25kcxgFIAEoEhIWCglyZWZlcmVuY2UYBiABKAlIAIgBAUIMCgpfcmVmZXJlbmNlImcKFUxhd0Nsb3N1cmVJbmZvUmVxdWVzdBIUCgxjbG9zdXJlX2ZpbGUYASABKAkSOAoKY2FwYWJpbGl0eRgCIAEoDjIkLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxMYXdDYXBhYmlsaXR5IocBChdDaGVja3BvaW50RXhwb3J0UmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0EiEKFHN0YWdlZF9mcm9udGllcl9maWxlGAIgASgJSACIAQFCFwoVX3N0YWdlZF9mcm9udGllcl9maWxlIkEKC0Zyb250aWVySGxjEhAKCHBoeXNpY2FsGAEgASgEEg8KB2xvZ2ljYWwYAiABKA0SDwoHcmVwbGljYRgDIAEoBCLdBAoXVmVyaWZpZWRGcm9udGllclJlY2VpcHQSFgoOZm9ybWF0X3ZlcnNpb24YASABKA0SCwoDb2lkGAIgASgJEg8KB2ludGVudHMYAyABKAQSEwoLcGxhbnNfcmVydW4YBCABKAQSHAoPY29udHJvbGxlcl9oYXNoGAUgASgJSACIAQESGQoRaW5zdGFsbGVkX2RvbWFpbnMYBiADKAkSDgoGbGluZWFyGAcgASgIEjMKCGxhc3RfaGxjGAggASgLMhwubm9tb3Mua2VybmVsLnYxLkZyb250aWVySGxjSAGIAQESFAoHbGFzdF9pZBgJIAEoCUgCiAEBEhEKCXN0YXRlX29pZBgKIAEoCRIUCgxzdGF0ZV9zaGEyNTYYCyABKAkSOQoOc3RhdGVfbGFzdF9obGMYDCABKAsyHC5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJIbGNIA4gBARIaCg1zdGF0ZV9sYXN0X2lkGA0gASgJSASIAQESFwoPbWFuaWZlc3Rfc2hhMjU2GA4gASgJEh4KFmxhd19jbG9zdXJlX2lkZW50aXRpZXMYDyADKAkSGgoScmVzb2x2YWJsZV9kb21haW5zGBAgAygJEiIKFXByb2plY3Rpb25fc3RhdGVfcm9vdBgRIAEoCUgFiAEBQhIKEF9jb250cm9sbGVyX2hhc2hCCwoJX2xhc3RfaGxjQgoKCF9sYXN0X2lkQhEKD19zdGF0ZV9sYXN0X2hsY0IQCg5fc3RhdGVfbGFzdF9pZEIYChZfcHJvamVjdGlvbl9zdGF0ZV9yb290IkUKFUZvbGRGcm9udGllckFnZ3JlZ2F0ZRIUCgxhZ2dyZWdhdGVfaWQYASABKAkSFgoOYWdncmVnYXRlX3VzZGEYAiABKAwiQQoXRm9sZEZyb250aWVyRmluZ2VycHJpbnQSEQoJaW50ZW50X2lkGAEgASgJEhMKC2ZpbmdlcnByaW50GAIgASgJItYDChRGb2xkRnJvbnRpZXJTbmFwc2hvdBIWCg5mb3JtYXRfdmVyc2lvbhgBIAEoDRILCgN0aXAYAiABKAkSDwoHZ2VuZXNpcxgDIAEoCRIVCg1oaXN0b3J5X2RlcHRoGAQgASgEEjoKCmFnZ3JlZ2F0ZXMYBSADKAsyJi5ub21vcy5rZXJuZWwudjEuRm9sZEZyb250aWVyQWdncmVnYXRlEjgKDWhsY193YXRlcm1hcmsYBiABKAsyHC5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJIbGNIAIgBARIzCghsYXN0X2hsYxgHIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Gcm9udGllckhsY0gBiAEBEhQKB2xhc3RfaWQYCCABKAlIAogBARIWCg5zdHJpa2VfdGFyZ2V0cxgJIAMoCRJFChNpbnRlbnRfZmluZ2VycHJpbnRzGAogAygLMigubm9tb3Mua2VybmVsLnYxLkZvbGRGcm9udGllckZpbmdlcnByaW50EhcKCnN0YXRlX3Jvb3QYCyABKAlIA4gBAUIQCg5faGxjX3dhdGVybWFya0ILCglfbGFzdF9obGNCCgoIX2xhc3RfaWRCDQoLX3N0YXRlX3Jvb3QimwMKGFN0b3JlZENoZWNrcG9pbnRNYW5pZmVzdBIWCg5mb3JtYXRfdmVyc2lvbhgBIAEoDRITCgZjdXJzb3IYAiABKAlIAIgBARIYChBjaGVja3BvaW50X2J5dGVzGAMgASgEEhAKCGxhd19oYXNoGAQgASgJEjsKC2NvbXByZXNzaW9uGAUgASgOMiYubm9tb3Mua2VybmVsLnYxLkNoZWNrcG9pbnRDb21wcmVzc2lvbhIRCglyYXdfYnl0ZXMYBiABKAQSFAoMc3RvcmVkX2J5dGVzGAcgASgEEh0KFWZyb250aWVyX3N0b3JlZF9ieXRlcxgIIAEoBBIXCgpzdGF0ZV9yb290GAkgASgJSAGIAQESUAoZdmVyaWZpZWRfZnJvbnRpZXJfcmVjZWlwdBgKIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5WZXJpZmllZEZyb250aWVyUmVjZWlwdEgCiAEBQgkKB19jdXJzb3JCDQoLX3N0YXRlX3Jvb3RCHAoaX3ZlcmlmaWVkX2Zyb250aWVyX3JlY2VpcHQiwQMKF0NoZWNrcG9pbnRJbXBvcnRSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSEgoIZnJvbnRpZXIYAiABKAxIABIeChRzdGFnZWRfZnJvbnRpZXJfZmlsZRgGIAEoCUgAEhMKBmN1cnNvchgDIAEoCUgBiAEBEhcKCnN0YXRlX3Jvb3QYBCABKAlIAogBARINCgVzcGFucxgFIAEoCBIRCgRoZWFkGAcgASgJSAOIAQESUAoZdmVyaWZpZWRfZnJvbnRpZXJfcmVjZWlwdBgIIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5WZXJpZmllZEZyb250aWVyUmVjZWlwdEgEiAEBEkoKE3ZlcmlmaWNhdGlvbl9wb2xpY3kYCSABKA4yLS5ub21vcy5rZXJuZWwudjEuQ2hlY2twb2ludFZlcmlmaWNhdGlvblBvbGljeUIRCg9mcm9udGllcl9zb3VyY2VCCQoHX2N1cnNvckINCgtfc3RhdGVfcm9vdEIHCgVfaGVhZEIcChpfdmVyaWZpZWRfZnJvbnRpZXJfcmVjZWlwdCIxChZDYXBhY2l0eVJlc2VydmVSZXF1ZXN0EhcKD2FnZ3JlZ2F0ZV9jb3VudBgBIAEoBCJpChJSZXN0b3JlTWFpblJlcXVlc3QSMAoGdGFyZ2V0GAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBIMCgRoZWFkGAIgASgJEhMKC2RpYWdub3N0aWNzGAMgASgIImkKG1Jlc29sdmVTdGF0ZVBvc2l0aW9uUmVxdWVzdBIMCgRyZXBvGAEgASgJEhEKCW1haW5faGVhZBgCIAEoCRIVCg1oaW50ZWRfY29tbWl0GAMgASgJEhIKCnN0YXRlX3Jvb3QYBCABKAki4wsKD0N1c3RvZHlSZXNwb25zZRI4CgpwYWNrX2RlbHRhGAogASgLMiIubm9tb3Mua2VybmVsLnYxLlBhY2tEZWx0YVJlc3BvbnNlSAASOAoKYXBwbHlfcGFjaxgLIAEoCzIiLm5vbW9zLmtlcm5lbC52MS5BcHBseVBhY2tSZXNwb25zZUgAEjgKCnJlcG9fc3RhdHMYDCABKAsyIi5ub21vcy5rZXJuZWwudjEuUmVwb1N0YXRzUmVzcG9uc2VIABI+Cg1pbnRlbnRzX2Fib3ZlGA0gASgLMiUubm9tb3Mua2VybmVsLnYxLkludGVudHNBYm92ZVJlc3BvbnNlSAASQAoOaW5zcGVjdF9jaGFuZ2UYDiABKAsyJi5ub21vcy5rZXJuZWwudjEuSW5zcGVjdENoYW5nZVJlc3BvbnNlSAASTwoWZW5jb2RlX3JlZnVzYWxfdmVyZGljdBgPIAEoCzItLm5vbW9zLmtlcm5lbC52MS5FbmNvZGVSZWZ1c2FsVmVyZGljdFJlc3BvbnNlSAASUQoXaW5zcGVjdF9yZWZ1c2FsX3ZlcmRpY3QYECABKAsyLi5ub21vcy5rZXJuZWwudjEuSW5zcGVjdFJlZnVzYWxWZXJkaWN0UmVzcG9uc2VIABI2CglyZWFkX2Jsb2IYESABKAsyIS5ub21vcy5rZXJuZWwudjEuUmVhZEJsb2JSZXNwb25zZUgAEjoKC3Jlc29sdmVfcmVmGBIgASgLMiMubm9tb3Mua2VybmVsLnYxLlJlc29sdmVSZWZSZXNwb25zZUgAEjYKCWxpc3RfcmVmcxgTIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5MaXN0UmVmc1Jlc3BvbnNlSAASMgoJd3JpdGVfcmVmGBQgASgLMh0ubm9tb3Mua2VybmVsLnYxLkFja25vd2xlZGdlZEgAEjMKCmRlbGV0ZV9yZWYYFSABKAsyHS5ub21vcy5rZXJuZWwudjEuQWNrbm93bGVkZ2VkSAASRQoRd3JpdGVfbWV0YV9jb21taXQYFiABKAsyKC5ub21vcy5rZXJuZWwudjEuV3JpdGVNZXRhQ29tbWl0UmVzcG9uc2VIABJDChBsYXdfY2xvc3VyZV9pbmZvGBcgASgLMicubm9tb3Mua2VybmVsLnYxLkxhd0Nsb3N1cmVJbmZvUmVzcG9uc2VIABJGChFjaGVja3BvaW50X2V4cG9ydBgYIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5DaGVja3BvaW50RXhwb3J0UmVzcG9uc2VIABJGChFjaGVja3BvaW50X2ltcG9ydBgZIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5DaGVja3BvaW50SW1wb3J0UmVzcG9uc2VIABJEChBjYXBhY2l0eV9yZXNlcnZlGBogASgLMigubm9tb3Mua2VybmVsLnYxLkNhcGFjaXR5UmVzZXJ2ZVJlc3BvbnNlSAASPAoMcmVzdG9yZV9tYWluGBsgASgLMiQubm9tb3Mua2VybmVsLnYxLlJlc3RvcmVNYWluUmVzcG9uc2VIABJPChZyZXNvbHZlX3N0YXRlX3Bvc2l0aW9uGBwgASgLMi0ubm9tb3Mua2VybmVsLnYxLlJlc29sdmVTdGF0ZVBvc2l0aW9uUmVzcG9uc2VIABJIChJyZXNpZGVudF9mb290cHJpbnQYHSABKAsyKi5ub21vcy5rZXJuZWwudjEuUmVzaWRlbnRGb290cHJpbnRSZXNwb25zZUgAEkIKD2hpc3Rvcnlfc3VtbWFyeRgeIAEoCzInLm5vbW9zLmtlcm5lbC52MS5IaXN0b3J5U3VtbWFyeVJlc3BvbnNlSAASWwoccHJvdmVfY29tcGFjdGlvbl9lcXVpdmFsZW5jZRgfIAEoCzIzLm5vbW9zLmtlcm5lbC52MS5Qcm92ZUNvbXBhY3Rpb25FcXVpdmFsZW5jZVJlc3BvbnNlSABCCwoJb3BlcmF0aW9uIjAKEVBhY2tEZWx0YVJlc3BvbnNlEgwKBHBhY2sYASABKAwSDQoFYnl0ZXMYAiABKAQiPAoRQXBwbHlQYWNrUmVzcG9uc2USFAoMb2JqZWN0X2NvdW50GAEgASgEEhEKCXBhY2tfaGFzaBgCIAEoCSKnAQoRUmVwb1N0YXRzUmVzcG9uc2USEwoLdG90YWxfYnl0ZXMYASABKAQSFAoMb2JqZWN0X2J5dGVzGAIgASgEEhUKDWxvb3NlX29iamVjdHMYAyABKAQSEwoLbG9vc2VfYnl0ZXMYBCABKAQSEgoKcGFja19maWxlcxgFIAEoBBISCgpwYWNrX2J5dGVzGAYgASgEEhMKC2luZGV4X2J5dGVzGAcgASgEIuIBCgxJbnRlbnRSZWNvcmQSCwoDb2lkGAEgASgJEhEKCWludGVudF9pZBgCIAEoCRIOCgZkb21haW4YAyABKAkSEQoJZGlyZWN0aXZlGAQgASgJEhMKC2NoYW5nZV91c2RhGAUgASgMEi4KCHNlbWFudGljGAYgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0EkoKFXRyYW5zcG9ydF9yZXF1aXJlbWVudBgHIAEoDjIrLm5vbW9zLmtlcm5lbC52MS5JbnRlbnRUcmFuc3BvcnRSZXF1aXJlbWVudCJGChRJbnRlbnRzQWJvdmVSZXNwb25zZRIuCgdpbnRlbnRzGAEgAygLMh0ubm9tb3Mua2VybmVsLnYxLkludGVudFJlY29yZCJ0ChZIaXN0b3J5U3VtbWFyeVJlc3BvbnNlEgwKBGhlYWQYASABKAkSDgoGb2xkZXN0GAIgASgJEhQKDGNvbW1pdF9jb3VudBgDIAEoBBIQCghjb21wbGV0ZRgEIAEoCBIUCgxyZWFjaGVkX2Jhc2UYBSABKAgiQgoTTm9taW5hbENhbGxJZGVudGl0eRITCgtkb21haW5fcGF0aBgBIAEoCRIWCg5kaXJlY3RpdmVfcGF0aBgCIAEoCSKIAQoYTGlmZWN5Y2xlSW5zdGFsbElkZW50aXR5Eh8KF3RhcmdldF9jbG9zdXJlX2lkZW50aXR5GAEgASgJEhQKDGluc3RhbGxlZF9ieRgCIAEoCRI1CgVwaGFzZRgDIAEoDjImLm5vbW9zLmtlcm5lbC52MS5MaWZlY3ljbGVJbnN0YWxsUGhhc2UiWgodV29ya3NwYWNlUmVzaWRlbmN5UmVxdWlyZW1lbnQSEQoJd29ya3NwYWNlGAEgASgJEhMKC3NvdXJjZV9oZWFkGAIgASgJEhEKCWZvbGRfcm9vdBgDIAEoCSK0AgoVSW5zcGVjdENoYW5nZVJlc3BvbnNlEi4KCHNlbWFudGljGAEgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0EhEKCWludGVudF9pZBgCIAEoCRIyCgRjYWxsGAMgASgLMiQubm9tb3Mua2VybmVsLnYxLk5vbWluYWxDYWxsSWRlbnRpdHkSEAoIYXV0aG9yZWQYBCABKAgSRAoRbGlmZWN5Y2xlX2luc3RhbGwYBSABKAsyKS5ub21vcy5rZXJuZWwudjEuTGlmZWN5Y2xlSW5zdGFsbElkZW50aXR5EkwKFHJlcXVpcmVkX3Jlc2lkZW5jaWVzGAYgAygLMi4ubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVJlc2lkZW5jeVJlcXVpcmVtZW50IkwKHFJlc29sdmVTdGF0ZVBvc2l0aW9uUmVzcG9uc2USGgoNcmVzb2x2ZWRfaGVhZBgBIAEoCUgAiAEBQhAKDl9yZXNvbHZlZF9oZWFkIjQKHEVuY29kZVJlZnVzYWxWZXJkaWN0UmVzcG9uc2USFAoMdmVyZGljdF91c2RhGAEgASgMIlEKHUluc3BlY3RSZWZ1c2FsVmVyZGljdFJlc3BvbnNlEjAKB3ZlcmRpY3QYASABKAsyHy5ub21vcy5rZXJuZWwudjEuUmVmdXNhbFZlcmRpY3QidQoiUHJvdmVDb21wYWN0aW9uRXF1aXZhbGVuY2VSZXNwb25zZRI4CghldmlkZW5jZRgBIAEoCzImLm5vbW9zLmtlcm5lbC52MS5Db21wYWN0aW9uRXF1aXZhbGVuY2USFQoNZXZpZGVuY2VfdXNkYRgCIAEoDCIvChBSZWFkQmxvYlJlc3BvbnNlEg0KBWZvdW5kGAEgASgIEgwKBGJsb2IYAiABKAwiLgoSUmVzb2x2ZVJlZlJlc3BvbnNlEhAKA29pZBgBIAEoCUgAiAEBQgYKBF9vaWQiKwoJUmVmUmVjb3JkEhEKCXJlZmVyZW5jZRgBIAEoCRILCgNvaWQYAiABKAkiPAoQTGlzdFJlZnNSZXNwb25zZRIoCgRyZWZzGAEgAygLMhoubm9tb3Mua2VybmVsLnYxLlJlZlJlY29yZCIOCgxBY2tub3dsZWRnZWQiJgoXV3JpdGVNZXRhQ29tbWl0UmVzcG9uc2USCwoDb2lkGAEgASgJIoMBChZMYXdDbG9zdXJlSW5mb1Jlc3BvbnNlEhAKCGlkZW50aXR5GAEgASgJEhkKEXJvb3RfbG9naWNhbF9wYXRoGAIgASgJEhMKC2Fzc2V0X2NvdW50GAMgASgEEhIKCnByaW1fY291bnQYBCABKAQSEwoLZG9tYWluX2tleXMYBSADKAki3wMKGENoZWNrcG9pbnRFeHBvcnRSZXNwb25zZRINCgVlbXB0eRgBIAEoCBITCgZjdXJzb3IYAiABKAlIAIgBARIQCghmcm9udGllchgDIAEoDBIXCgpzdGF0ZV9yb290GAQgASgJSAGIAQESEgoKc3RhdGVfdHJlZRgFIAEoCBIOCgZwaW5uZWQYBiABKAgSGwoTcmVhZF9pbmRleF9zbmFwc2hvdBgHIAEoCBIjChtyZWFkX2luZGV4X3NuYXBzaG90X3BlbmRpbmcYCCABKAgSJAoXcmVhZF9pbmRleF9zcWxpdGVfYnl0ZXMYCSABKARIAogBARIlChhyZWFkX2luZGV4X2N1c3RvZHlfYnl0ZXMYCiABKARIA4gBARJQChl2ZXJpZmllZF9mcm9udGllcl9yZWNlaXB0GAsgASgLMigubm9tb3Mua2VybmVsLnYxLlZlcmlmaWVkRnJvbnRpZXJSZWNlaXB0SASIAQFCCQoHX2N1cnNvckINCgtfc3RhdGVfcm9vdEIaChhfcmVhZF9pbmRleF9zcWxpdGVfYnl0ZXNCGwoZX3JlYWRfaW5kZXhfY3VzdG9keV9ieXRlc0IcChpfdmVyaWZpZWRfZnJvbnRpZXJfcmVjZWlwdCLXAgoYQ2hlY2twb2ludEltcG9ydFJlc3BvbnNlEhAKCHJlc3RvcmVkGAEgASgIEhMKBnJlYXNvbhgCIAEoCUgAiAEBEhcKD2Zyb250aWVyX3NlZWRlZBgDIAEoCBIlCh1mcm9udGllcl92ZXJpZmljYXRpb25fcGVuZGluZxgEIAEoCBIXCg9hZ2dyZWdhdGVfY291bnQYBSABKAQSKwoFc3BhbnMYBiABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSEwoGY3Vyc29yGAcgASgJSAGIAQESEQoJcmVhZF9vbmx5GAggASgIEhcKD2xhenlfcmVhZF9pbmRleBgJIAEoCBI3Cglhc3N1cmFuY2UYCiABKA4yJC5ub21vcy5rZXJuZWwudjEuQ2hlY2twb2ludEFzc3VyYW5jZUIJCgdfcmVhc29uQgkKB19jdXJzb3IiSgoXQ2FwYWNpdHlSZXNlcnZlUmVzcG9uc2USFwoPYWdncmVnYXRlX2NvdW50GAEgASgEEhYKDnJlc2VydmVkX2J5dGVzGAIgASgEIvkCChBSZXN0b3JlTWFpblNwYW5zEhAKCHRvdGFsX3VzGAEgASgEEhoKEmxpdmVfcmVmX2xvb2t1cF91cxgCIAEoBBIYChB0YXJnZXRfZGVjb2RlX3VzGAMgASgEEiQKHGN1c3RvZHlfY29tcGxldGVuZXNzX3JlYWRfdXMYBCABKAQSGQoRcXVhcmFudGluZV9yZWZfdXMYBSABKAQSJQodY2hhaW5fc2lnbmF0dXJlX2xhd19yZXBsYXlfdXMYBiABKAQSGQoRdmVyZGljdF9kZWNvZGVfdXMYByABKAQSIwobcHJvbW90ZV9hbmRfY2xlYW51cF9yZWZzX3VzGAggASgEEhsKE2Zyb250aWVyX3JlYnVpbGRfdXMYCSABKAQSGQoRZnJvbnRpZXJfc3RvcmVfdXMYCiABKAQSPQoMdmVyaWZpY2F0aW9uGAsgASgLMicubm9tb3Mua2VybmVsLnYxLlZlcmlmeUNoYWluRGlhZ25vc3RpY3Mi7wEKE1Jlc3RvcmVNYWluUmVzcG9uc2USDAoEaGVhZBgBIAEoCRIQCgh2ZXJpZmllZBgCIAEoCBIMCgR3YWxrGAMgASgJEjAKBXNwYW5zGAQgASgLMiEubm9tb3Mua2VybmVsLnYxLlJlc3RvcmVNYWluU3BhbnMSLQoHdmVyZGljdBgFIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdBI3Cglhc3N1cmFuY2UYBiABKA4yJC5ub21vcy5rZXJuZWwudjEuQ2hlY2twb2ludEFzc3VyYW5jZRIQCghhY2NlcHRlZBgHIAEoCCKbAgoKTm9tb3NWYWx1ZRIlCgRudWxsGAEgASgLMhUubm9tb3Mua2VybmVsLnYxLk51bGxIABIRCgdib29sZWFuGAIgASgISAASGAoOc2lnbmVkX2ludGVnZXIYAyABKBJIABIaChB1bnNpZ25lZF9pbnRlZ2VyGAQgASgESAASGAoOZmxvYXRpbmdfcG9pbnQYBSABKAFIABIOCgR0ZXh0GAYgASgJSAASDwoFYnl0ZXMYByABKAxIABIqCgRsaXN0GAggASgLMhoubm9tb3Mua2VybmVsLnYxLk5vbW9zTGlzdEgAEi4KBm9iamVjdBgJIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdEgAQgYKBGtpbmQiBgoETnVsbCI4CglOb21vc0xpc3QSKwoGdmFsdWVzGAEgAygLMhsubm9tb3Mua2VybmVsLnYxLk5vbW9zVmFsdWUikwEKC05vbW9zU3RydWN0EjgKBmZpZWxkcxgBIAMoCzIoLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdC5GaWVsZHNFbnRyeRpKCgtGaWVsZHNFbnRyeRILCgNrZXkYASABKAkSKgoFdmFsdWUYAiABKAsyGy5ub21vcy5rZXJuZWwudjEuTm9tb3NWYWx1ZToCOAEq6gEKEkJpcnRoT3V0Y29tZVN0YXR1cxIkCiBCSVJUSF9PVVRDT01FX1NUQVRVU19VTlNQRUNJRklFRBAAEh0KGUJJUlRIX09VVENPTUVfU1RBVFVTX0JPUk4QARIhCh1CSVJUSF9PVVRDT01FX1NUQVRVU19ERUZFUlJFRBACEh8KG0JJUlRIX09VVENPTUVfU1RBVFVTX0ZBSUxFRBADEiAKHEJJUlRIX09VVENPTUVfU1RBVFVTX1JFRlVTRUQQBBIpCiVCSVJUSF9PVVRDT01FX1NUQVRVU19VTldBUlJBTlRFRF9DRVJUEAUq6RIKEUtlcm5lbFJlZnVzYWxDb2RlEiMKH0tFUk5FTF9SRUZVU0FMX0NPREVfVU5TUEVDSUZJRUQQABIlCiFLRVJORUxfUkVGVVNBTF9DT0RFX0JBRF9TSUdOQVRVUkUQARIkCiBLRVJORUxfUkVGVVNBTF9DT0RFX1VOQVVUSE9SSVpFRBACEicKI0tFUk5FTF9SRUZVU0FMX0NPREVfUE9MSUNZX0RJU0FCTEVEEAMSKgomS0VSTkVMX1JFRlVTQUxfQ09ERV9VTkNFUlRJRklFRF9QT0xJQ1kQBBIjCh9LRVJORUxfUkVGVVNBTF9DT0RFX1JFRkVSRU5USUFMEAUSLworS0VSTkVMX1JFRlVTQUxfQ09ERV9QT0lOVF9TVEFURV9VTkFWQUlMQUJMRRAGEiQKIEtFUk5FTF9SRUZVU0FMX0NPREVfQ0FQX0VYQ0VFREVEEAcSLQopS0VSTkVMX1JFRlVTQUxfQ09ERV9DQVBfQ09VTlRfVU5BVkFJTEFCTEUQCBIpCiVLRVJORUxfUkVGVVNBTF9DT0RFX0VWSURFTkNFX1VOQkFDS0VEEAkSJgoiS0VSTkVMX1JFRlVTQUxfQ09ERV9PUlBIQU5fUkVDRUlQVBAKEjYKMktFUk5FTF9SRUZVU0FMX0NPREVfUkVDRUlQVF9PTl9URVJNSU5BTF9PQkxJR0FUSU9OEAsSIgoeS0VSTkVMX1JFRlVTQUxfQ09ERV9OT1RfTUlOVEVEEAwSKAokS0VSTkVMX1JFRlVTQUxfQ09ERV9ET01BSU5fTElGRUNZQ0xFEA0SKQolS0VSTkVMX1JFRlVTQUxfQ09ERV9UWVBFX1RBR19NSVNNQVRDSBAOEiwKKEtFUk5FTF9SRUZVU0FMX0NPREVfUkVUSVJFRF9SRUFEX1NVUkZBQ0UQDxIwCixLRVJORUxfUkVGVVNBTF9DT0RFX0NST1NTX1dPUktTUEFDRV9ERUNMSU5FRBAQEisKJ0tFUk5FTF9SRUZVU0FMX0NPREVfQUdHUkVHQVRFX0lOVkFSSUFOVBAREisKJ0tFUk5FTF9SRUZVU0FMX0NPREVfV09SS1NQQUNFX0lOVkFSSUFOVBASEi4KKktFUk5FTF9SRUZVU0FMX0NPREVfQ0FQVFVSRURfUkVBRF9DT05GTElDVBATEjIKLktFUk5FTF9SRUZVU0FMX0NPREVfQ09ORkxJQ1RfU05BUFNIT1RfUkVRVUlSRUQQFBI0CjBLRVJORUxfUkVGVVNBTF9DT0RFX0NPTkZMSUNUX1NOQVBTSE9UX1VOREVDTEFSRUQQFRIxCi1LRVJORUxfUkVGVVNBTF9DT0RFX0NPTkZMSUNUX1NOQVBTSE9UX0lOVkFMSUQQFhIvCitLRVJORUxfUkVGVVNBTF9DT0RFX0NPTkZMSUNUX1NOQVBTSE9UX1NUQUxFEBcSMAosS0VSTkVMX1JFRlVTQUxfQ09ERV9DQVBUVVJFRF9SRUFEX1VOREVDTEFSRUQQGBItCilLRVJORUxfUkVGVVNBTF9DT0RFX0NBUFRVUkVEX1JFQURfUFJJVkFURRAZEjAKLEtFUk5FTF9SRUZVU0FMX0NPREVfQVRURVNURURfUkVBRF9VTkRFQ0xBUkVEEBoSMwovS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RFRF9SRUFEX1VOVFJVU1RFRF9LRVkQGxI2CjJLRVJORUxfUkVGVVNBTF9DT0RFX0FUVEVTVEVEX1JFQURfVU5UUlVTVEVEX1NPVVJDRRAcEiwKKEtFUk5FTF9SRUZVU0FMX0NPREVfQVRURVNURURfUkVBRF9GT1JHRUQQHRIrCidLRVJORUxfUkVGVVNBTF9DT0RFX0FUVEVTVEVEX1JFQURfU1RBTEUQHhIuCipLRVJORUxfUkVGVVNBTF9DT0RFX0FUVEVTVEVEX1JFQURfT1ZFUlNJWkUQHxI3CjNLRVJORUxfUkVGVVNBTF9DT0RFX0FUVEVTVEVEX1JFQURfRElTSE9OT1JFRF9TT1VSQ0UQIBI1CjFLRVJORUxfUkVGVVNBTF9DT0RFX0VRVUlWT0NBVElPTl9FVklERU5DRV9JTlZBTElEECESMwovS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RBVElPTl9SRUNFSVBUX0lOVkFMSUQQIhIrCidLRVJORUxfUkVGVVNBTF9DT0RFX0tFWV9ST1NURVJfTUlTTUFUQ0gQIxIvCitLRVJORUxfUkVGVVNBTF9DT0RFX0tFWV9FUE9DSF9OT1RfTU9OT1RPTklDECQSKQolS0VSTkVMX1JFRlVTQUxfQ09ERV9XUklURV9FUE9DSF9TVEFMRRAlEi0KKUtFUk5FTF9SRUZVU0FMX0NPREVfRU5WRUxPUEVfU0lEX01JU01BVENIECYSMgouS0VSTkVMX1JFRlVTQUxfQ09ERV9SRVZPS0VEX01FTUJFUl9SRVNVUlJFQ1RFRBAnEigKJEtFUk5FTF9SRUZVU0FMX0NPREVfRk9SR0VEX1BSSU5DSVBBTBAoEigKJEtFUk5FTF9SRUZVU0FMX0NPREVfT1dORURfS0VZX0FOQ0hPUhApEiYKIktFUk5FTF9SRUZVU0FMX0NPREVfT1dORURfUkVDT1ZFUlkQKhIsCihLRVJORUxfUkVGVVNBTF9DT0RFX1NVUkZBQ0VEX0JBU0lTX0FIRUFEECsSMgouS0VSTkVMX1JFRlVTQUxfQ09ERV9TSUdORVJfRVBPQ0hfT1VUX09GX1dJTkRPVxAsEiYKIktFUk5FTF9SRUZVU0FMX0NPREVfRVZPTFZFX1JFRlVTRUQQLRIrCidLRVJORUxfUkVGVVNBTF9DT0RFX0FUVEVTVEFUSU9OX0lOVkFMSUQQLhItCilLRVJORUxfUkVGVVNBTF9DT0RFX1BBUkVOVF9ESURfTk9UX0FUVEVTVBAvEikKJUtFUk5FTF9SRUZVU0FMX0NPREVfQ0VSVF9DSEFJTl9CUk9LRU4QMBIqCiZLRVJORUxfUkVGVVNBTF9DT0RFX05PVF9ST09URURfQVRfUk9PVBAxEioKJktFUk5FTF9SRUZVU0FMX0NPREVfREVMRUdBVElPTl9JTlZBTElEEDISJQohS0VSTkVMX1JFRlVTQUxfQ09ERV9QTEFOX1JFSkVDVEVEEDMqigEKD1ZlcmlmeUNoYWluV2FsaxIhCh1WRVJJRllfQ0hBSU5fV0FMS19VTlNQRUNJRklFRBAAEhoKFlZFUklGWV9DSEFJTl9XQUxLX0ZVTEwQARIcChhWRVJJRllfQ0hBSU5fV0FMS19TVUZGSVgQAhIaChZWRVJJRllfQ0hBSU5fV0FMS19NRU1PEAMqiAwKDlF1ZXJ5T3BlcmF0aW9uEh8KG1FVRVJZX09QRVJBVElPTl9VTlNQRUNJRklFRBAAEhwKGFFVRVJZX09QRVJBVElPTl9FWFRSRU1VTRABEiUKIVFVRVJZX09QRVJBVElPTl9QRU5ESU5HX0NPTkZMSUNUUxACEiwKKFFVRVJZX09QRVJBVElPTl9QRU5ESU5HX0NPTkZMSUNUX1NVTU1BUlkQAxIgChxRVUVSWV9PUEVSQVRJT05fUkVBRF9QT1NUVVJFEAQSHwobUVVFUllfT1BFUkFUSU9OX0NVUlJFTlRfTEFXEAUSIwofUVVFUllfT1BFUkFUSU9OX0lOVEVSRkFDRV9PRkZFUhAGEicKI1FVRVJZX09QRVJBVElPTl9SRUxBVElPTl9HQVRFX09GRkVSEAcSHQoZUVVFUllfT1BFUkFUSU9OX1NDRU5FX0xBVxAIEiEKHVFVRVJZX09QRVJBVElPTl9JTlNUQUxMRURfTEFXEAkSHAoYUVVFUllfT1BFUkFUSU9OX0RFU0NSSUJFEAoSIwofUVVFUllfT1BFUkFUSU9OX0tFUk5FTF9SRVNPVVJDRRALEiMKH1FVRVJZX09QRVJBVElPTl9ERVZFTE9QRVJfU1BBTlMQDBIpCiVRVUVSWV9PUEVSQVRJT05fREVDTEFSRURfQ0FQQUJJTElUSUVTEA0SHQoZUVVFUllfT1BFUkFUSU9OX1JFQURJTkVTUxAOEiQKIFFVRVJZX09QRVJBVElPTl9QUk9KRUNUSU9OX1NUQVRTEA8SJQohUVVFUllfT1BFUkFUSU9OX01FTU9SWV9EUk9QX1BST0JFEBASGAoUUVVFUllfT1BFUkFUSU9OX1dBUk0QERIbChdRVUVSWV9PUEVSQVRJT05fUkVGUkVTSBASEiAKHFFVRVJZX09QRVJBVElPTl9WRVJJRllfQ0hBSU4QExIlCiFRVUVSWV9PUEVSQVRJT05fSElTVE9SWV9QUkVGTElHSFQQFBIZChVRVUVSWV9PUEVSQVRJT05fUk9VVEUQFRIYChRRVUVSWV9PUEVSQVRJT05fTUlOVBAWEiEKHVFVRVJZX09QRVJBVElPTl9DUllQVE9fS0VZR0VOEBcSJQohUVVFUllfT1BFUkFUSU9OX0NSWVBUT19TRUFMX0ZJRUxEEBgSLAooUVVFUllfT1BFUkFUSU9OX0NSWVBUT19CTElORF9JTkRFWF9UT0tFThAZEioKJlFVRVJZX09QRVJBVElPTl9DUllQVE9fT1dORURfU0NPUEVfS0VZEBoSLworUVVFUllfT1BFUkFUSU9OX0NSWVBUT19PV05FRF9ERVZJQ0VfUkVRVUVTVBAbEjEKLVFVRVJZX09QRVJBVElPTl9DUllQVE9fT1dORURfUFJFUEFSRV9BUFBST1ZBTBAcEjEKLVFVRVJZX09QRVJBVElPTl9DUllQVE9fT1dORURfUFJFUEFSRV9SRUNPVkVSWRAdEiMKH1FVRVJZX09QRVJBVElPTl9DUllQVE9fV1JBUF9LRVkQHhIlCiFRVUVSWV9PUEVSQVRJT05fQ1JZUFRPX1VOV1JBUF9LRVkQHxIhCh1RVUVSWV9PUEVSQVRJT05fQVVUSE9SX0tFWUdFThAgEiQKIFFVRVJZX09QRVJBVElPTl9BVFRFU1RBVElPTl9TSUdOECESIAocUVVFUllfT1BFUkFUSU9OX1JFQ0VJUFRfUEFUSBAiEh0KGVFVRVJZX09QRVJBVElPTl9DRVJUX1NJR04QIxIlCiFRVUVSWV9PUEVSQVRJT05fQklSVEhfVFJVU1RfU1RBVEUQJBIhCh1RVUVSWV9PUEVSQVRJT05fRVJBX0NFUlRfU0lHThAlEigKJFFVRVJZX09QRVJBVElPTl9ERUxFR0FUSU9OX0NFUlRfU0lHThAmEikKJVFVRVJZX09QRVJBVElPTl9DQU5PTklDQUxJWkVfRlJPTlRJRVIQJxIrCidRVUVSWV9PUEVSQVRJT05fQ0FOT05JQ0FMSVpFX1BST0pFQ1RJT04QKCrSAgoVUmVzaWRlbnRDb21wb25lbnRLaW5kEicKI1JFU0lERU5UX0NPTVBPTkVOVF9LSU5EX1VOU1BFQ0lGSUVEEAASJgoiUkVTSURFTlRfQ09NUE9ORU5UX0tJTkRfRk9MRF9TVEFURRABEi0KKVJFU0lERU5UX0NPTVBPTkVOVF9LSU5EX1JFQURfTU9ERUxfU1FMSVRFEAISLgoqUkVTSURFTlRfQ09NUE9ORU5UX0tJTkRfUkVBRF9NT0RFTF9JTkRFWEVTEAMSLQopUkVTSURFTlRfQ09NUE9ORU5UX0tJTkRfU0hBUkVEX0FUVFJJQlVURUQQBBIsCihSRVNJREVOVF9DT01QT05FTlRfS0lORF9XT1JLU1BBQ0VfQ0FDSEVTEAUSLAooUkVTSURFTlRfQ09NUE9ORU5UX0tJTkRfR0lUX09CSkVDVF9DQUNIRRAGKmwKE0tlcm5lbExhd0NhcGFiaWxpdHkSJQohS0VSTkVMX0xBV19DQVBBQklMSVRZX1VOU1BFQ0lGSUVEEAASLgoqS0VSTkVMX0xBV19DQVBBQklMSVRZX1NUQUdFX1pFUk9fQk9PVFNUUkFQEAEqWQoVQ2hlY2twb2ludENvbXByZXNzaW9uEh8KG0NIRUNLUE9JTlRfQ09NUFJFU1NJT05fTk9ORRAAEh8KG0NIRUNLUE9JTlRfQ09NUFJFU1NJT05fR1pJUBABKpEBChxDaGVja3BvaW50VmVyaWZpY2F0aW9uUG9saWN5EjMKL0NIRUNLUE9JTlRfVkVSSUZJQ0FUSU9OX1BPTElDWV9WRVJJRllfQ0FOT05JQ0FMEAASPAo4Q0hFQ0tQT0lOVF9WRVJJRklDQVRJT05fUE9MSUNZX1RSVVNUX1BSRVZJT1VTTFlfVkVSSUZJRUQQASqAAQoTQ2hlY2twb2ludEFzc3VyYW5jZRIkCiBDSEVDS1BPSU5UX0FTU1VSQU5DRV9VTlNQRUNJRklFRBAAEiAKHENIRUNLUE9JTlRfQVNTVVJBTkNFX1RSVVNURUQQARIhCh1DSEVDS1BPSU5UX0FTU1VSQU5DRV9WRVJJRklFRBACKqgBChpJbnRlbnRUcmFuc3BvcnRSZXF1aXJlbWVudBIsCihJTlRFTlRfVFJBTlNQT1JUX1JFUVVJUkVNRU5UX1VOU1BFQ0lGSUVEEAASLgoqSU5URU5UX1RSQU5TUE9SVF9SRVFVSVJFTUVOVF9TRUFMRURfQ0hBTkdFEAESLAooSU5URU5UX1RSQU5TUE9SVF9SRVFVSVJFTUVOVF9DT01NSVRfVFJFRRACKokBChVMaWZlY3ljbGVJbnN0YWxsUGhhc2USJwojTElGRUNZQ0xFX0lOU1RBTExfUEhBU0VfVU5TUEVDSUZJRUQQABIiCh5MSUZFQ1lDTEVfSU5TVEFMTF9QSEFTRV9BQ1RJVkUQARIjCh9MSUZFQ1lDTEVfSU5TVEFMTF9QSEFTRV9QRU5ESU5HEAIyWQoSTm9tb3NLZXJuZWxTZXJ2aWNlEkMKBENhbGwSHC5ub21vcy5rZXJuZWwudjEuQ2FsbFJlcXVlc3QaHS5ub21vcy5rZXJuZWwudjEuQ2FsbFJlc3BvbnNlYgZwcm90bzM");
10887
+ var file_nomos_kernel_v1_kernel = /* @__PURE__ */ fileDesc("Chxub21vcy9rZXJuZWwvdjEva2VybmVsLnByb3RvEg9ub21vcy5rZXJuZWwudjEi6wYKC0NhbGxSZXF1ZXN0EhgKEHByb3RvY29sX3ZlcnNpb24YASABKA0SEgoKcmVxdWVzdF9pZBgCIAEoCRIsCgRvcGVuGAogASgLMhwubm9tb3Mua2VybmVsLnYxLk9wZW5SZXF1ZXN0SAASLgoFb2ZmZXIYCyABKAsyHS5ub21vcy5rZXJuZWwudjEuT2ZmZXJSZXF1ZXN0SAASLgoFcXVlcnkYDCABKAsyHS5ub21vcy5rZXJuZWwudjEuUXVlcnlSZXF1ZXN0SAASMAoGb3V0Ym94GA0gASgLMh4ubm9tb3Mua2VybmVsLnYxLk91dGJveFJlcXVlc3RIABIsCgRzeW5jGA4gASgLMhwubm9tb3Mua2VybmVsLnYxLlN5bmNSZXF1ZXN0SAASMgoHY3VzdG9keRgPIAEoCzIfLm5vbW9zLmtlcm5lbC52MS5DdXN0b2R5UmVxdWVzdEgAEiwKBHRlc3QYECABKAsyHC5ub21vcy5rZXJuZWwudjEuVGVzdFJlcXVlc3RIABJIChNzaWduX3ByZXBhcmVkX29mZmVyGBEgASgLMikubm9tb3Mua2VybmVsLnYxLlNpZ25QcmVwYXJlZE9mZmVyUmVxdWVzdEgAEkoKFHByZXBhcmVfcmVtb3RlX29mZmVyGBIgASgLMioubm9tb3Mua2VybmVsLnYxLlByZXBhcmVSZW1vdGVPZmZlclJlcXVlc3RIABJOChZzaWduX29mZmVyX3ByZXBhcmF0aW9uGBMgASgLMiwubm9tb3Mua2VybmVsLnYxLlNpZ25PZmZlclByZXBhcmF0aW9uUmVxdWVzdEgAEk4KFnNpZ25fYmlydGhfY2VydGlmaWNhdGUYFCABKAsyLC5ub21vcy5rZXJuZWwudjEuU2lnbkJpcnRoQ2VydGlmaWNhdGVSZXF1ZXN0SAASSwoUaW5pdGlhbGl6ZV93b3Jrc3BhY2UYFSABKAsyKy5ub21vcy5rZXJuZWwudjEuSW5pdGlhbGl6ZVdvcmtzcGFjZVJlcXVlc3RIABJOChZhcHBseV93b3Jrc3BhY2VfZWZmZWN0GBYgASgLMiwubm9tb3Mua2VybmVsLnYxLkFwcGx5V29ya3NwYWNlRWZmZWN0UmVxdWVzdEgAQgsKCW9wZXJhdGlvbiKkBwoMQ2FsbFJlc3BvbnNlEhgKEHByb3RvY29sX3ZlcnNpb24YASABKA0SEgoKcmVxdWVzdF9pZBgCIAEoCRIrCgdmYWlsdXJlGAogASgLMhgubm9tb3Mua2VybmVsLnYxLkZhaWx1cmVIABItCgRvcGVuGAsgASgLMh0ubm9tb3Mua2VybmVsLnYxLk9wZW5SZXNwb25zZUgAEi8KBW9mZmVyGAwgASgLMh4ubm9tb3Mua2VybmVsLnYxLk9mZmVyUmVzcG9uc2VIABIvCgVxdWVyeRgNIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5RdWVyeVJlc3BvbnNlSAASMQoGb3V0Ym94GA4gASgLMh8ubm9tb3Mua2VybmVsLnYxLk91dGJveFJlc3BvbnNlSAASLQoEc3luYxgPIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5TeW5jUmVzcG9uc2VIABIzCgdjdXN0b2R5GBAgASgLMiAubm9tb3Mua2VybmVsLnYxLkN1c3RvZHlSZXNwb25zZUgAEi0KBHRlc3QYESABKAsyHS5ub21vcy5rZXJuZWwudjEuVGVzdFJlc3BvbnNlSAASSQoTc2lnbl9wcmVwYXJlZF9vZmZlchgSIAEoCzIqLm5vbW9zLmtlcm5lbC52MS5TaWduUHJlcGFyZWRPZmZlclJlc3BvbnNlSAASSwoUcHJlcGFyZV9yZW1vdGVfb2ZmZXIYEyABKAsyKy5ub21vcy5rZXJuZWwudjEuUHJlcGFyZVJlbW90ZU9mZmVyUmVzcG9uc2VIABJPChZzaWduX29mZmVyX3ByZXBhcmF0aW9uGBQgASgLMi0ubm9tb3Mua2VybmVsLnYxLlNpZ25PZmZlclByZXBhcmF0aW9uUmVzcG9uc2VIABJPChZzaWduX2JpcnRoX2NlcnRpZmljYXRlGBUgASgLMi0ubm9tb3Mua2VybmVsLnYxLlNpZ25CaXJ0aENlcnRpZmljYXRlUmVzcG9uc2VIABJMChRpbml0aWFsaXplX3dvcmtzcGFjZRgWIAEoCzIsLm5vbW9zLmtlcm5lbC52MS5Jbml0aWFsaXplV29ya3NwYWNlUmVzcG9uc2VIABJPChZhcHBseV93b3Jrc3BhY2VfZWZmZWN0GBcgASgLMi0ubm9tb3Mua2VybmVsLnYxLkFwcGx5V29ya3NwYWNlRWZmZWN0UmVzcG9uc2VIAEIJCgdvdXRjb21lIlcKB0ZhaWx1cmUSDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEi0KB2RldGFpbHMYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QiPAoMT3BlblJlc3BvbnNlEiwKBnJlc3VsdBgBIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdCL3AgoNT2ZmZXJSZXNwb25zZRIyCghhZG1pdHRlZBgBIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5PZmZlckFkbWl0dGVkSAASMAoHcmVmdXNlZBgCIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5PZmZlclJlZnVzZWRIABI7Cg1kZWFkX2xldHRlcmVkGAMgASgLMiIubm9tb3Mua2VybmVsLnYxLk9mZmVyRGVhZExldHRlcmVkSAASOAoLcXVhcmFudGluZWQYBCABKAsyIS5ub21vcy5rZXJuZWwudjEuT2ZmZXJRdWFyYW50aW5lZEgAEkoKFWJsb2NrZWRfb25fZGVwZW5kZW5jeRgFIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5PZmZlckJsb2NrZWRPbkRlcGVuZGVuY3lIABIyCghwcmVwYXJlZBgGIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5PZmZlclByZXBhcmVkSABCCQoHb3V0Y29tZSKDAwoNT2ZmZXJBZG1pdHRlZBIMCgRoZWFkGAEgASgJEhEKCWludGVudF9pZBgCIAEoCRIXCgppbnRlbnRfb3V0GAMgASgJSACIAQESMwoHY3JlYXRlZBgEIAMoCzIiLm5vbW9zLmtlcm5lbC52MS5PZmZlckFnZ3JlZ2F0ZVJlZhI0CghhZmZlY3RlZBgFIAMoCzIiLm5vbW9zLmtlcm5lbC52MS5PZmZlckFnZ3JlZ2F0ZVJlZhIsCgRib3JuGAYgAygLMh4ubm9tb3Mua2VybmVsLnYxLkJvcm5Xb3Jrc3BhY2USNQoOYmlydGhfb3V0Y29tZXMYByADKAsyHS5ub21vcy5rZXJuZWwudjEuQmlydGhPdXRjb21lEjcKDGtlcm5lbF9zcGFucxgIIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxTcGFuc0gBiAEBEg8KB2RyeV9ydW4YCSABKAhCDQoLX2ludGVudF9vdXRCDwoNX2tlcm5lbF9zcGFucyItChFPZmZlckFnZ3JlZ2F0ZVJlZhIMCgR0eXBlGAEgASgJEgoKAmlkGAIgASgJIjAKDUJvcm5Xb3Jrc3BhY2USEQoJd29ya3NwYWNlGAEgASgJEgwKBGhlYWQYAiABKAkiiQMKDEJpcnRoT3V0Y29tZRIWCgl3b3Jrc3BhY2UYASABKAlIAIgBARIzCgZzdGF0dXMYAiABKA4yIy5ub21vcy5rZXJuZWwudjEuQmlydGhPdXRjb21lU3RhdHVzEhMKBnJlYXNvbhgDIAEoCUgBiAEBEhEKBGNvZGUYBCABKAlIAogBARIQCghyZXBsYXllZBgFIAEoCBIVCghsYXdfaGFzaBgGIAEoCUgDiAEBEh0KEHBhcmVudF93b3Jrc3BhY2UYByABKAlIBIgBARIcCg9jaGlsZF93b3Jrc3BhY2UYCCABKAlIBYgBARInChpjZXJ0aWZpY2F0ZV9yZWZ1c2FsX3JlYXNvbhgJIAEoCUgGiAEBQgwKCl93b3Jrc3BhY2VCCQoHX3JlYXNvbkIHCgVfY29kZUILCglfbGF3X2hhc2hCEwoRX3BhcmVudF93b3Jrc3BhY2VCEgoQX2NoaWxkX3dvcmtzcGFjZUIdChtfY2VydGlmaWNhdGVfcmVmdXNhbF9yZWFzb24iLwoQS2VybmVsU3Bhbk1ldHJpYxIMCgRuYW1lGAEgASgJEg0KBXZhbHVlGAIgASgEIqMBCgpLZXJuZWxTcGFuEg0KBWxhYmVsGAEgASgJEhAKCHRvdGFsX3VzGAIgASgEEg8KB3JlY29yZHMYAyABKAQSMQoGcGhhc2VzGAQgAygLMiEubm9tb3Mua2VybmVsLnYxLktlcm5lbFNwYW5NZXRyaWMSMAoFbm90ZXMYBSADKAsyIS5ub21vcy5rZXJuZWwudjEuS2VybmVsU3Bhbk1ldHJpYyJxCgtLZXJuZWxTcGFucxIvCgpvcGVyYXRpb25zGAEgAygLMhsubm9tb3Mua2VybmVsLnYxLktlcm5lbFNwYW4SMQoGZW5naW5lGAIgAygLMiEubm9tb3Mua2VybmVsLnYxLktlcm5lbFNwYW5NZXRyaWMilgEKDE9mZmVyUmVmdXNlZBIVCghvZmZlcl9pZBgBIAEoCUgAiAEBEi8KB3JlZnVzYWwYAiABKAsyHi5ub21vcy5rZXJuZWwudjEuS2VybmVsUmVmdXNhbBIxCgtkaWFnbm9zdGljcxgDIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdEILCglfb2ZmZXJfaWQiegoRT2ZmZXJEZWFkTGV0dGVyZWQSFQoIb2ZmZXJfaWQYASABKAlIAIgBARIOCgZyZWFzb24YAiABKAkSMQoLZGlhZ25vc3RpY3MYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3RCCwoJX29mZmVyX2lkIq4BChBPZmZlclF1YXJhbnRpbmVkEhUKCG9mZmVyX2lkGAEgASgJSACIAQESGQoRYXV0aG9yZWRfbGF3X2hhc2gYAiABKAkSGAoQY3VycmVudF9sYXdfaGFzaBgDIAEoCRIOCgZyZWFzb24YBCABKAkSMQoLZGlhZ25vc3RpY3MYBSABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3RCCwoJX29mZmVyX2lkIoEBChhPZmZlckJsb2NrZWRPbkRlcGVuZGVuY3kSFQoIb2ZmZXJfaWQYASABKAlIAIgBARIOCgZkZXRhaWwYAiABKAkSMQoLZGlhZ25vc3RpY3MYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3RCCwoJX29mZmVyX2lkIoUBCg1PZmZlclByZXBhcmVkEhwKFGF1dGhvcmVkX2NoYW5nZV91c2RhGAEgASgMEhkKEXdvcmtzcGFjZV9iaW5kaW5nGAIgASgJEhgKEHByZXBhcmVkX2F0X2hlYWQYAyABKAkSIQoZYXV0aG9yX3NpZ25hdHVyZV9yZXF1aXJlZBgEIAEoCCJqChhTaWduUHJlcGFyZWRPZmZlclJlcXVlc3QSHAoUYXV0aG9yZWRfY2hhbmdlX3VzZGEYASABKAwSGQoRd29ya3NwYWNlX2JpbmRpbmcYAiABKAkSFQoNYXV0aG9yX3NlY3JldBgDIAEoDCI3ChlTaWduUHJlcGFyZWRPZmZlclJlc3BvbnNlEhoKEnNpZ25lZF9jaGFuZ2VfdXNkYRgBIAEoDCKtAQoZUHJlcGFyZVJlbW90ZU9mZmVyUmVxdWVzdBIVCg1vZmZlcl9yZXF1ZXN0GAEgASgMEhkKEXdvcmtzcGFjZV9iaW5kaW5nGAIgASgJEhgKEHByZXBhcmVkX2F0X2hlYWQYAyABKAkSEgoKcHVibGljX2tleRgEIAEoDBIRCglzaWduYXR1cmUYBSABKAwSHQoVcmVxdWlyZWRfY3VzdG9keV9oZWFkGAYgASgJIlAKGU9mZmVyUHJlcGFyYXRpb25DaGFsbGVuZ2USGQoRd29ya3NwYWNlX2JpbmRpbmcYASABKAkSGAoQcHJlcGFyZWRfYXRfaGVhZBgCIAEoCSKZAQoaUHJlcGFyZVJlbW90ZU9mZmVyUmVzcG9uc2USPwoJY2hhbGxlbmdlGAEgASgLMioubm9tb3Mua2VybmVsLnYxLk9mZmVyUHJlcGFyYXRpb25DaGFsbGVuZ2VIABIvCgVvZmZlchgCIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5PZmZlclJlc3BvbnNlSABCCQoHb3V0Y29tZSKAAQobU2lnbk9mZmVyUHJlcGFyYXRpb25SZXF1ZXN0EhUKDW9mZmVyX3JlcXVlc3QYASABKAwSGQoRd29ya3NwYWNlX2JpbmRpbmcYAiABKAkSGAoQcHJlcGFyZWRfYXRfaGVhZBgDIAEoCRIVCg1hdXRob3Jfc2VjcmV0GAQgASgMIkUKHFNpZ25PZmZlclByZXBhcmF0aW9uUmVzcG9uc2USEgoKcHVibGljX2tleRgBIAEoDBIRCglzaWduYXR1cmUYAiABKAwigQEKDUtlcm5lbFJlZnVzYWwSMAoEY29kZRgBIAEoDjIiLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxSZWZ1c2FsQ29kZRIPCgdtZXNzYWdlGAIgASgJEi0KB2RldGFpbHMYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3Qi2AUKDVF1ZXJ5UmVzcG9uc2USFQoLcmVzdWx0X3VzZGEYAiABKAxIABIsCgV2YWx1ZRgBIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5Ob21vc1ZhbHVlSAASSgoTYXV0aG9yaXphdGlvbl9jaGVjaxgKIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uQ2hlY2tSZXNwb25zZUgAEkwKFGF1dGhvcml6YXRpb25fZXhwYW5kGAsgASgLMiwubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25FeHBhbmRSZXNwb25zZUgAEj4KDW9zZ2lfcmVzb3VyY2UYDCABKAsyJS5ub21vcy5rZXJuZWwudjEuT3NnaVJlc291cmNlUmVzcG9uc2VIABJKChNmcm9udGllcl90cmFuc2l0aW9uGA0gASgLMisubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvblJlc3BvbnNlSAASSwoUb3duZWRfZGV2aWNlX3JlcXVlc3QYDiABKAsyKy5ub21vcy5rZXJuZWwudjEuT3duZWREZXZpY2VSZXF1ZXN0UmVzcG9uc2VIABJPChZvd25lZF9wcmVwYXJlX2FwcHJvdmFsGA8gASgLMi0ubm9tb3Mua2VybmVsLnYxLk93bmVkUHJlcGFyZUFwcHJvdmFsUmVzcG9uc2VIABIXCg1pbnRlZ2VyX3ZhbHVlGBAgASgSSAASUAoWYXV0aGVudGljYXRpb25fcG9zdHVyZRgRIAEoCzIuLm5vbW9zLmtlcm5lbC52MS5BdXRoZW50aWNhdGlvblBvc3R1cmVSZXNwb25zZUgAEkkKGHZlcmlmeV9jaGFpbl9kaWFnbm9zdGljcxgUIAEoCzInLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpbkRpYWdub3N0aWNzQggKBnJlc3VsdCJICg1Pc2dpQXR0cmlidXRlEgwKBG5hbWUYASABKAkSDQoFdmFsdWUYAiABKAkSEQoEdHlwZRgDIAEoCUgAiAEBQgcKBV90eXBlIiwKDU9zZ2lEaXJlY3RpdmUSDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCSKLAQoOT3NnaUNhcGFiaWxpdHkSEQoJbmFtZXNwYWNlGAEgASgJEjIKCmF0dHJpYnV0ZXMYAiADKAsyHi5ub21vcy5rZXJuZWwudjEuT3NnaUF0dHJpYnV0ZRIyCgpkaXJlY3RpdmVzGAMgAygLMh4ubm9tb3Mua2VybmVsLnYxLk9zZ2lEaXJlY3RpdmUijAEKD09zZ2lSZXF1aXJlbWVudBIRCgluYW1lc3BhY2UYASABKAkSMgoKYXR0cmlidXRlcxgCIAMoCzIeLm5vbW9zLmtlcm5lbC52MS5Pc2dpQXR0cmlidXRlEjIKCmRpcmVjdGl2ZXMYAyADKAsyHi5ub21vcy5rZXJuZWwudjEuT3NnaURpcmVjdGl2ZSKaAQoUT3NnaVJlc291cmNlUmVzcG9uc2USEwoLc291cmNlX3VzZGEYASABKAwSNQoMY2FwYWJpbGl0aWVzGAIgAygLMh8ubm9tb3Mua2VybmVsLnYxLk9zZ2lDYXBhYmlsaXR5EjYKDHJlcXVpcmVtZW50cxgDIAMoCzIgLm5vbW9zLmtlcm5lbC52MS5Pc2dpUmVxdWlyZW1lbnQi5wEKE1ZlcmlmeUNoYWluU3RlcFNwYW4SDQoFaW5kZXgYASABKAQSEgoKY29tbWl0X29pZBgCIAEoCRIOCgZkb21haW4YAyABKAkSEQoJZGlyZWN0aXZlGAQgASgJEhAKCHRvdGFsX3VzGAUgASgEEjYKBnBoYXNlcxgGIAEoCzImLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpblN0ZXBQaGFzZXMSQAoOZW5naW5lX3RpbWluZ3MYByADKAsyKC5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5FbmdpbmVUaW1pbmcimAIKFVZlcmlmeUNoYWluU3RlcFBoYXNlcxIeChZydW50aW1lX2xhd19yZWZyZXNoX3VzGAEgASgEEhMKC21hbmlmZXN0X3VzGAIgASgEEhkKEWxhd19yZXNvbHV0aW9uX3VzGAMgASgEEh0KFW1hbmFnZWRfdHJhbnNpdGlvbl91cxgEIAEoBBIUCgxwcmluY2lwYWxfdXMYBSABKAQSFAoMZXZvbHV0aW9uX3VzGAYgASgEEhoKEmNvbG9jYXRlZF9yZWFkc191cxgHIAEoBBIhChl0eXBlZF9pbnN0YWxsX3ZlcmlmaWVyX3VzGAggASgEEhQKDGFkbWlzc2lvbl91cxgJIAEoBBIPCgdmb2xkX3VzGAogASgEItoFChZWZXJpZnlDaGFpbkRpYWdub3N0aWNzEi4KBHdhbGsYASABKA4yIC5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5XYWxrEhAKCHRvdGFsX3VzGAIgASgEEhsKE3JlZmVyZW5jZV9sb29rdXBfdXMYAyABKAQSGgoScmVwb3NpdG9yeV9vcGVuX3VzGAQgASgEEhUKDWNoYWluX3JlYWRfdXMYBSABKAQSFgoOZW5naW5lX2luaXRfdXMYBiABKAQSGAoQdGltZWxpbmVfcmVhZF91cxgHIAEoBBIYChBsYXdfaHlkcmF0aW9uX3VzGAggASgEEhsKE3JlY292ZXJ5X3ByZXNjYW5fdXMYCSABKAQSGAoQZm9sZF9mcm9udGllcl91cxgKIAEoBBIzCgVzdGVwcxgLIAMoCzIkLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpblN0ZXBTcGFuEkAKDmVuZ2luZV90aW1pbmdzGAwgAygLMigubm9tb3Mua2VybmVsLnYxLlZlcmlmeUNoYWluRW5naW5lVGltaW5nEk0KFWxhd19oeWRyYXRpb25fdGltaW5ncxgNIAMoCzIuLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpbkxhd0h5ZHJhdGlvblRpbWluZxIZChFsYXdfY2xvc3VyZV9jb3VudBgOIAEoBBIeChZsYXdfY2xvc3VyZV9jYWNoZV9oaXRzGA8gASgEEiAKGGxhd19jbG9zdXJlX2NhY2hlX21pc3NlcxgQIAEoBBISCgpzdGVwX2NvdW50GBEgASgEEhUKDXN0ZXBfdG90YWxfdXMYEiABKAQSQQoRc3RlcF9waGFzZV90b3RhbHMYEyABKAsyJi5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5TdGVwUGhhc2VzEhoKEm9taXR0ZWRfc3RlcF9jb3VudBgUIAEoBCI6ChdWZXJpZnlDaGFpbkVuZ2luZVRpbWluZxINCgVwaGFzZRgBIAEoCRIQCgh0b3RhbF91cxgCIAEoBCJACh1WZXJpZnlDaGFpbkxhd0h5ZHJhdGlvblRpbWluZxINCgVwaGFzZRgBIAEoCRIQCgh0b3RhbF91cxgCIAEoBCIhChJIdHRwc091dGJvdW5kUm91dGUSCwoDdXJsGAEgASgJIisKFldvcmtzcGFjZU91dGJvdW5kUm91dGUSEQoJd29ya3NwYWNlGAEgASgJIvYBChtBcHBseVdvcmtzcGFjZUVmZmVjdFJlcXVlc3QSMAoGc291cmNlGAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBIVCg1zb3VyY2VfY29tbWl0GAIgASgJEhkKEXNvdXJjZV9vZmZlcl9wYXRoGAMgASgJEjAKBnRhcmdldBgEIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSHAoUc291cmNlX2V2aWRlbmNlX3BhY2sYBSABKAwSIwobYWRtaXNzaW9uX2NoZWNrcG9pbnRfc2VjcmV0GAYgASgMImcKHEFwcGx5V29ya3NwYWNlRWZmZWN0UmVzcG9uc2USLgoGcmVzdWx0GAEgASgLMh4ubm9tb3Mua2VybmVsLnYxLk9mZmVyUmVzcG9uc2USFwoPYWxyZWFkeV9hcHBsaWVkGAIgASgIIpMECg1PdXRib3VuZE9mZmVyEgoKAmlkGAEgASgJEhcKC2Rlc3RpbmF0aW9uGAIgASgJQgIYARIUCgxzZWFsZWRfb2ZmZXIYAyABKAwSFAoMY29udGVudF90eXBlGAQgASgJEhgKEHNvdXJjZV93b3Jrc3BhY2UYBSABKAkSFAoMY3VzdG9keV9oZWFkGAYgASgJEhcKD2NhdXNlZF9ieV9vZmZlchgHIAEoCRIbChNzY2hlZHVsZWRfYXRfbWlsbGlzGAggASgEEhoKEmRlYWRsaW5lX2F0X21pbGxpcxgJIAEoBBIUCgxjdXN0b2R5X3BhdGgYCiABKAkSEwoLY3VzdG9keV9vaWQYCyABKAkSFAoMZGVsaXZlcnlfcmVmGAwgASgJEhUKDW9ibGlnYXRpb25faWQYDSABKAkSOgoLaHR0cHNfcm91dGUYDiABKAsyIy5ub21vcy5rZXJuZWwudjEuSHR0cHNPdXRib3VuZFJvdXRlSAASQgoPd29ya3NwYWNlX3JvdXRlGA8gASgLMicubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZU91dGJvdW5kUm91dGVIABIVCg1zb3VyY2VfY29tbWl0GBAgASgJEhwKFHNvdXJjZV9ldmlkZW5jZV9wYWNrGBEgASgMEhkKEXNvdXJjZV9vZmZlcl9wYXRoGBIgASgJQgcKBXJvdXRlIngKDk91dGJveFJlc3BvbnNlEi4KBm9mZmVycxgBIAMoCzIeLm5vbW9zLmtlcm5lbC52MS5PdXRib3VuZE9mZmVyEh8KEm5leHRfZHVlX2F0X21pbGxpcxgCIAEoBEgAiAEBQhUKE19uZXh0X2R1ZV9hdF9taWxsaXMiPAoMU3luY1Jlc3BvbnNlEiwKBnJlc3VsdBgBIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdCJCCg9Xb3Jrc3BhY2VUYXJnZXQSDAoEcmVwbxgBIAEoCRIRCgl3b3Jrc3BhY2UYAiABKAkSDgoGYnJhbmNoGAMgASgJIk4KC09wZW5SZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSDQoFc3BhbnMYAiABKAgioQEKGkluaXRpYWxpemVXb3Jrc3BhY2VSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSGwoTY29udHJvbGxlcl9sYXdfdXNkehgCIAEoDBI0CglhdXRob3JpbmcYAyABKAsyIS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaW5nT3B0aW9ucyJIChtJbml0aWFsaXplV29ya3NwYWNlUmVzcG9uc2USDAoEaGVhZBgBIAEoCRIbChNjb250cm9sbGVyX2xhd19oYXNoGAIgASgJIm4KDURpcmVjdGl2ZUNhbGwSDgoGZG9tYWluGAEgASgJEhEKCWRpcmVjdGl2ZRgCIAEoCRITCgljYWxsX3VzZGEYAyABKAxIAEIGCgRib2R5SgQIBBAFUgdwYXlsb2FkUg5sZWdhY3lfcGF5bG9hZCLWAgoQQXV0aG9yaW5nT3B0aW9ucxINCgVhY3RvchgBIAEoCRISCgphdXRoX3Rva2VuGAIgASgMEhUKDWF1dGhvcl9zZWNyZXQYAyABKAwSHQoQdmFsaWRfZnJvbV9lcG9jaBgEIAEoBEgAiAEBEh8KEnByaW5jaXBhbF92ZXJpZmllZBgFIAEoCEgBiAEBEgsKA3JuZxgGIAMoARIYChBkZWZlcl9wcm9qZWN0aW9uGAcgASgIEg0KBXNwYW5zGAggASgIEg8KB2RyeV9ydW4YCSABKAgSEAoIc2VxdWVuY2UYCiABKAQSLQoFY2xvY2sYCyABKAsyHi5ub21vcy5rZXJuZWwudjEuQ2FwdHVyZWRDbG9jaxIUCgxwcmVwYXJlX29ubHkYDCABKAhCEwoRX3ZhbGlkX2Zyb21fZXBvY2hCFQoTX3ByaW5jaXBhbF92ZXJpZmllZCJKCg1DYXB0dXJlZENsb2NrEhcKD3BoeXNpY2FsX21pbGxpcxgBIAEoBBIPCgdsb2dpY2FsGAIgASgNEg8KB3JlcGxpY2EYAyABKAQiwwMKEEJpcnRoQ2VydGlmaWNhdGUSDQoFY2hpbGQYASABKAkSDwoHZm91bmRlchgCIAEoCRIQCgh2ZXJpZmllZBgDIAEoCBISCgpwYXJlbnRfa2V5GAQgASgMEhEKCXBhcmVudF9pZBgFIAEoCRINCgVlcG9jaBgGIAEoAxIRCglzaWduYXR1cmUYByABKAwSGQoMdmVyaWZpZWRfdmlhGAggASgJSACIAQESFgoJaWRwX3Rva2VuGAkgASgJSAGIAQESGwoOY2FwdHVyZWRfY2xvY2sYCiABKANIAogBARIhChRhdXRoX3Byb3ZpZGVyX2lzc3VlchgLIAEoCUgDiAEBEh8KEmF1dGhfcHJvdmlkZXJfandrcxgMIAEoCUgEiAEBEiMKFmF1dGhfcHJvdmlkZXJfYXVkaWVuY2UYDSABKAlIBYgBAUIPCg1fdmVyaWZpZWRfdmlhQgwKCl9pZHBfdG9rZW5CEQoPX2NhcHR1cmVkX2Nsb2NrQhcKFV9hdXRoX3Byb3ZpZGVyX2lzc3VlckIVChNfYXV0aF9wcm92aWRlcl9qd2tzQhkKF19hdXRoX3Byb3ZpZGVyX2F1ZGllbmNlImwKG1NpZ25CaXJ0aENlcnRpZmljYXRlUmVxdWVzdBI2CgtjZXJ0aWZpY2F0ZRgBIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5CaXJ0aENlcnRpZmljYXRlEhUKDXNpZ25lcl9zZWNyZXQYAiABKAwiVgocU2lnbkJpcnRoQ2VydGlmaWNhdGVSZXNwb25zZRI2CgtjZXJ0aWZpY2F0ZRgBIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5CaXJ0aENlcnRpZmljYXRlIsACChRNb2RlbExpZmVjeWNsZUludGVudBI7CglvcGVyYXRpb24YASABKA4yKC5ub21vcy5rZXJuZWwudjEuTW9kZWxMaWZlY3ljbGVPcGVyYXRpb24SFAoMaW5zdGFsbGVkX2J5GAIgASgJEhcKCnN1cGVyc2VkZXMYAyABKAlIAIgBARJECgp0cmFuc2l0aW9uGAQgASgLMisubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvblJlc3BvbnNlSAGIAQESFQoIcmVwbGFjZXMYBSABKAlIAogBARIeChFhY2NlcHRhbmNlX3JlYXNvbhgGIAEoCUgDiAEBQg0KC19zdXBlcnNlZGVzQg0KC190cmFuc2l0aW9uQgsKCV9yZXBsYWNlc0IUChJfYWNjZXB0YW5jZV9yZWFzb24i3gQKDE9mZmVyUmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0Ei4KBGNhbGwYAiABKAsyHi5ub21vcy5rZXJuZWwudjEuRGlyZWN0aXZlQ2FsbEgAEhwKEnNlYWxlZF9jaGFuZ2VfdXNkYRgHIAEoDEgAEkAKD21vZGVsX2xpZmVjeWNsZRgMIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5Nb2RlbExpZmVjeWNsZUludGVudEgAEjQKCWF1dGhvcmluZxgDIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpbmdPcHRpb25zEhAKCGxhd191c2R6GAQgASgMEjMKDGF0dGVzdGF0aW9ucxgFIAMoCzIdLm5vbW9zLmtlcm5lbC52MS5BdHRlc3RlZFJlYWQSPQoSY29uZmxpY3Rfc25hcHNob3RzGAYgAygLMiEubm9tb3Mua2VybmVsLnYxLkNvbmZsaWN0U25hcHNob3QSGgoSZXhlY3V0aW9uX2xhd191c2R6GAggASgMEiAKE2NvbnRyb2xsZXJfbGF3X2hhc2gYCSABKAlIAYgBARIdChBjYW5kaWRhdGVfY29tbWl0GAogASgJSAKIAQESPAoRYmlydGhfY2VydGlmaWNhdGUYCyABKAsyIS5ub21vcy5rZXJuZWwudjEuQmlydGhDZXJ0aWZpY2F0ZUIICgZpbnRlbnRCFgoUX2NvbnRyb2xsZXJfbGF3X2hhc2hCEwoRX2NhbmRpZGF0ZV9jb21taXQikwEKDEF0dGVzdGVkUmVhZBIQCghxdWVyeV9pZBgBIAEoCRIvCglhcmd1bWVudHMYAiABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSKwoGcmVzdWx0GAMgASgLMhsubm9tb3Mua2VybmVsLnYxLk5vbW9zVmFsdWUSEwoLYXR0ZXN0YXRpb24YBCABKAwidQoQQ29uZmxpY3RTbmFwc2hvdBIWCg5hZ2dyZWdhdGVfdHlwZRgBIAEoCRIUCgxhZ2dyZWdhdGVfaWQYAiABKAkSDQoFZmllbGQYAyABKAkSFQoNdGFyZ2V0X3NjaGVtYRgEIAEoCRINCgV0b2tlbhgFIAEoCSKaCgoMUXVlcnlSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSMgoJYXV0aG9yaXR5GAIgASgLMh8ubm9tb3Mua2VybmVsLnYxLlF1ZXJ5QXV0aG9yaXR5Eg0KBXNwYW5zGAMgASgIEjkKDXJlc3VsdF9mb3JtYXQYBCABKA4yIi5ub21vcy5rZXJuZWwudjEuUXVlcnlSZXN1bHRGb3JtYXQSKgoEcm93cxgKIAEoCzIaLm5vbW9zLmtlcm5lbC52MS5Sb3dzUXVlcnlIABIqCgRwYWdlGAsgASgLMhoubm9tb3Mua2VybmVsLnYxLlBhZ2VRdWVyeUgAEisKBWJ5X2lkGAwgASgLMhoubm9tb3Mua2VybmVsLnYxLkJ5SWRRdWVyeUgAEjkKDHJlc29sdmVfcmVmcxgNIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5SZXNvbHZlUmVmc1F1ZXJ5SAASRQoScmVmZXJlbmNlX3ZlcnNpb25zGA4gASgLMicubm9tb3Mua2VybmVsLnYxLlJlZmVyZW5jZVZlcnNpb25zUXVlcnlIABIsCgVjb3VudBgPIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5UYWxseVF1ZXJ5SAASKgoDc3VtGBAgASgLMhsubm9tb3Mua2VybmVsLnYxLlRhbGx5UXVlcnlIABIwCgdzcGF0aWFsGBEgASgLMh0ubm9tb3Mua2VybmVsLnYxLlNwYXRpYWxRdWVyeUgAEiwKBW5hbWVkGBIgASgLMhsubm9tb3Mua2VybmVsLnYxLk5hbWVkUXVlcnlIABJJChNhdXRob3JpemF0aW9uX2NoZWNrGBMgASgLMioubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25DaGVja1JlcXVlc3RIABJLChRhdXRob3JpemF0aW9uX2V4cGFuZBgUIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uRXhwYW5kUmVxdWVzdEgAEkkKE2Zyb250aWVyX3RyYW5zaXRpb24YFSABKAsyKi5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJUcmFuc2l0aW9uUmVxdWVzdEgAEi8KB2J5X3R5cGUYFiABKAsyHC5ub21vcy5rZXJuZWwudjEuQnlUeXBlUXVlcnlIABJIChRvd25lZF9kZXZpY2VfcmVxdWVzdBgXIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5Pd25lZERldmljZVJlcXVlc3RRdWVyeUgAEkwKFm93bmVkX3ByZXBhcmVfYXBwcm92YWwYGCABKAsyKi5ub21vcy5rZXJuZWwudjEuT3duZWRQcmVwYXJlQXBwcm92YWxRdWVyeUgAEkMKEXBlbmRpbmdfY29uZmxpY3RzGBkgASgLMiYubm9tb3Mua2VybmVsLnYxLlBlbmRpbmdDb25mbGljdHNRdWVyeUgAElAKGHBlbmRpbmdfY29uZmxpY3Rfc3VtbWFyeRgaIAEoCzIsLm5vbW9zLmtlcm5lbC52MS5QZW5kaW5nQ29uZmxpY3RTdW1tYXJ5UXVlcnlIABJNChZhdXRoZW50aWNhdGlvbl9wb3N0dXJlGBsgASgLMisubm9tb3Mua2VybmVsLnYxLkF1dGhlbnRpY2F0aW9uUG9zdHVyZVF1ZXJ5SABCBwoFcXVlcnkiHAoaQXV0aGVudGljYXRpb25Qb3N0dXJlUXVlcnkingEKHUF1dGhlbnRpY2F0aW9uUG9zdHVyZVJlc3BvbnNlEkgKDnByb3ZpZGVyX3Rva2VuGAEgASgOMjAubm9tb3Mua2VybmVsLnYxLlByb3ZpZGVyVG9rZW5WZXJpZmljYXRpb25TdGF0dXMSFwoPZW5yb2xsZWRfZGV2aWNlGAIgASgIEhoKEnJlc29sdmVkX3ByaW5jaXBhbBgDIAEoCSIoChdPd25lZERldmljZVJlcXVlc3RRdWVyeRINCgVzY29wZRgBIAEoCSIyChpPd25lZERldmljZVJlcXVlc3RSZXNwb25zZRIUCgxyZXF1ZXN0X3VzZGEYASABKAwiQAoZT3duZWRQcmVwYXJlQXBwcm92YWxRdWVyeRINCgVzY29wZRgBIAEoCRIUCgxyZXF1ZXN0X3VzZGEYAiABKAwivwEKHE93bmVkUHJlcGFyZUFwcHJvdmFsUmVzcG9uc2USFwoPbmV3X2tleV9zdWJqZWN0GAEgASgJEhoKEm93bmVkX2N1c3RvZHlfdXNkYRgCIAEoDBIUCgx2ZXJpZmllZF92aWEYAyABKAkSGAoQdmFsaWRfZnJvbV9lcG9jaBgEIAEoBBIfChdhcHByb3ZlZF9hdF91bml4X21pbGxpcxgFIAEoBBIZChFvd25lZF9rZXlfc3ViamVjdBgGIAEoCSKSAQoOUXVlcnlBdXRob3JpdHkSFwoPcHJpbmNpcGFsX2NsYWltGAEgASgJEhIKCmF1dGhfdG9rZW4YAiABKAwSEAoIbm93X3VuaXgYAyABKAQSFQoNYXV0aG9yX3NlY3JldBgEIAEoDBIqCgRrZXlzGAUgAygLMhwubm9tb3Mua2VybmVsLnYxLkluamVjdGVkS2V5IjgKC0luamVjdGVkS2V5Eg0KBXNjb3BlGAEgASgJEg0KBWVwb2NoGAIgASgEEgsKA2tleRgDIAEoDCJzCglSb3dzUXVlcnkSCgoCaWQYASABKAkSLwoJYXJndW1lbnRzGAIgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0EhEKCXByaW5jaXBhbBgDIAEoCRIWCg5hcmd1bWVudHNfdXNkYRgEIAEoDCKRAQoJUGFnZVF1ZXJ5EgoKAmlkGAEgASgJEi8KCWFyZ3VtZW50cxgCIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdBINCgVsaW1pdBgDIAEoDRINCgVhZnRlchgEIAEoCRIRCglwcmluY2lwYWwYBSABKAkSFgoOYXJndW1lbnRzX3VzZGEYBiABKAwiTAoJQnlJZFF1ZXJ5EhYKDmFnZ3JlZ2F0ZV90eXBlGAEgASgJEhQKDGFnZ3JlZ2F0ZV9pZBgCIAEoCRIRCglwcmluY2lwYWwYAyABKAkiOAoLQnlUeXBlUXVlcnkSFgoOYWdncmVnYXRlX3R5cGUYASABKAkSEQoJcHJpbmNpcGFsGAIgASgJIlwKCE5vbW9zUmVmEhEKCXdvcmtzcGFjZRgBIAEoCRIWCg5hZ2dyZWdhdGVfdHlwZRgCIAEoCRIUCgxhZ2dyZWdhdGVfaWQYAyABKAkSDwoHdmVyc2lvbhgEIAEoCSJOChBSZXNvbHZlUmVmc1F1ZXJ5EicKBHJlZnMYASADKAsyGS5ub21vcy5rZXJuZWwudjEuTm9tb3NSZWYSEQoJcHJpbmNpcGFsGAIgASgJIk4KFlJlZmVyZW5jZVZlcnNpb25zUXVlcnkSNAoEcmVmcxgBIAMoCzImLm5vbW9zLmtlcm5lbC52MS5SZWZlcmVuY2VWZXJzaW9uQ2hlY2sihAEKFVJlZmVyZW5jZVZlcnNpb25DaGVjaxIpCgZwaW5uZWQYASABKAsyGS5ub21vcy5rZXJuZWwudjEuTm9tb3NSZWYSKQoGc2VyaWVzGAIgASgLMhkubm9tb3Mua2VybmVsLnYxLk5vbW9zUmVmEhUKDWN1cnJlbnRfZmllbGQYAyABKAkiYgoKVGFsbHlRdWVyeRIKCgJpZBgBIAEoCRIRCglwcmluY2lwYWwYAyABKAkSFgoJZ3JvdXBfa2V5GAQgASgJSACIAQFCDAoKX2dyb3VwX2tleUoECAIQA1IJYXJndW1lbnRzInoKDFNwYXRpYWxRdWVyeRIKCgJpZBgBIAEoCRIRCglwcmluY2lwYWwYAyABKAkSDQoFbWluX3gYBCABKAESDQoFbWluX3kYBSABKAESDQoFbWF4X3gYBiABKAESDQoFbWF4X3kYByABKAFKBAgCEANSCWFyZ3VtZW50cyJaChVQZW5kaW5nQ29uZmxpY3RzUXVlcnkSGwoOYWdncmVnYXRlX3R5cGUYASABKAlIAIgBARIRCglwcmluY2lwYWwYAiABKAlCEQoPX2FnZ3JlZ2F0ZV90eXBlIjAKG1BlbmRpbmdDb25mbGljdFN1bW1hcnlRdWVyeRIRCglwcmluY2lwYWwYASABKAkicQoKTmFtZWRRdWVyeRIyCglvcGVyYXRpb24YASABKA4yHy5ub21vcy5rZXJuZWwudjEuUXVlcnlPcGVyYXRpb24SLwoJYXJndW1lbnRzGAIgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0IrEBChlGcm9udGllclRyYW5zaXRpb25SZXF1ZXN0Eg4KBmRvbWFpbhgBIAEoCRIWCg5jYW5kaWRhdGVfaGFzaBgCIAEoCRIPCgdhdF9oYXNoGAMgASgJEiEKGWFja25vd2xlZGdlbWVudF9wcmluY2lwYWwYBCABKAkSIAoTcmVzdG9yZV9wcmV2aW91c19vZhgFIAEoCUgAiAEBQhYKFF9yZXN0b3JlX3ByZXZpb3VzX29mIloKJUZyb250aWVyVHJhbnNpdGlvbkRpc3Bvc2l0aW9uTWFwRW50cnkSGAoQc291cmNlX3N0YWJsZV9pZBgBIAEoCRIXCg9hY2tub3dsZWRnZW1lbnQYAiABKAki9QEKHkZyb250aWVyVHJhbnNpdGlvbkRpc3Bvc2l0aW9ucxIPCgdyZXRpcmVkGAEgAygJEkcKB3JldHlwZWQYAiADKAsyNi5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJUcmFuc2l0aW9uRGlzcG9zaXRpb25NYXBFbnRyeRJHCgdyZWJpbmRzGAMgAygLMjYubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvbkRpc3Bvc2l0aW9uTWFwRW50cnkSHAoPYWNrbm93bGVkZ2VkX2J5GAQgASgJSACIAQFCEgoQX2Fja25vd2xlZGdlZF9ieSI9ChtGcm9udGllclRyYW5zaXRpb25WaW9sYXRpb24SDgoGZG9tYWluGAEgASgJEg4KBmRldGFpbBgCIAEoCSLXAgoaRnJvbnRpZXJUcmFuc2l0aW9uUmVzcG9uc2USDwoHYXRfaGFzaBgBIAEoCRIZCgxjdXJyZW50X2hhc2gYAiABKAlIAIgBARIVCg1hdF9zdGF0ZV9yb290GAMgASgJEhYKDmNhbmRpZGF0ZV9oYXNoGAQgASgJEg4KBmRvbWFpbhgFIAEoCRIPCgdkb21haW5zGAYgAygJEg0KBXJlYWR5GAcgASgIEkAKCnZpb2xhdGlvbnMYCCADKAsyLC5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJUcmFuc2l0aW9uVmlvbGF0aW9uEkoKDGRpc3Bvc2l0aW9ucxgJIAEoCzIvLm5vbW9zLmtlcm5lbC52MS5Gcm9udGllclRyYW5zaXRpb25EaXNwb3NpdGlvbnNIAYgBAUIPCg1fY3VycmVudF9oYXNoQg8KDV9kaXNwb3NpdGlvbnMiLwoTQXV0aG9yaXphdGlvbk9iamVjdBIMCgR0eXBlGAEgASgJEgoKAmlkGAIgASgJIlQKFEF1dGhvcml6YXRpb25TdWJqZWN0EgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkSFQoIcmVsYXRpb24YAyABKAlIAIgBAUILCglfcmVsYXRpb24inAEKGFJlbGF0aW9uc2hpcFR1cGxlQWRkcmVzcxI2CghyZXNvdXJjZRgBIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uT2JqZWN0EhAKCHJlbGF0aW9uGAIgASgJEjYKB3N1YmplY3QYAyABKAsyJS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvblN1YmplY3QigQEKGEF1dGhvcml6YXRpb25Db25zaXN0ZW5jeRIjChljdXJyZW50X3ZlcmlmaWVkX2Zyb250aWVyGAEgASgISAASGQoPYXRfbGVhc3RfY29tbWl0GAIgASgJSAASFgoMZXhhY3RfY29tbWl0GAMgASgJSABCDQoLcmVxdWlyZW1lbnQiZgodQXV0aG9yaXphdGlvbkNvbmRpdGlvbkNvbnRleHQSFAoMY29uZGl0aW9uX2lkGAEgASgJEi8KCWFyZ3VtZW50cxgCIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdCL3AgoZQXV0aG9yaXphdGlvbkNoZWNrUmVxdWVzdBI2CghyZXNvdXJjZRgBIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uT2JqZWN0EhIKCnBlcm1pc3Npb24YAiABKAkSNgoHc3ViamVjdBgDIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uU3ViamVjdBI+Cgtjb25zaXN0ZW5jeRgEIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uQ29uc2lzdGVuY3kSPwoHY29udGV4dBgFIAMoCzIuLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uQ29uZGl0aW9uQ29udGV4dBIgChNleHBlY3RlZF9tb2RlbF9oYXNoGAYgASgJSACIAQESGwoTaW5jbHVkZV9leHBsYW5hdGlvbhgHIAEoCEIWChRfZXhwZWN0ZWRfbW9kZWxfaGFzaCLtAgoaQXV0aG9yaXphdGlvbkV4cGFuZFJlcXVlc3QSNgoIcmVzb3VyY2UYASABKAsyJC5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbk9iamVjdBISCgpwZXJtaXNzaW9uGAIgASgJEj4KC2NvbnNpc3RlbmN5GAMgASgLMikubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25Db25zaXN0ZW5jeRI/Cgdjb250ZXh0GAQgAygLMi4ubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25Db25kaXRpb25Db250ZXh0EiAKE2V4cGVjdGVkX21vZGVsX2hhc2gYBSABKAlIAIgBARINCgVsaW1pdBgGIAEoDRISCgVhZnRlchgHIAEoCUgBiAEBEhsKE2luY2x1ZGVfZXhwbGFuYXRpb24YCCABKAhCFgoUX2V4cGVjdGVkX21vZGVsX2hhc2hCCAoGX2FmdGVyIr0BChlSZWxhdGlvbnNoaXBUdXBsZUV2aWRlbmNlEjgKBXR1cGxlGAEgASgLMikubm9tb3Mua2VybmVsLnYxLlJlbGF0aW9uc2hpcFR1cGxlQWRkcmVzcxIQCgh0dXBsZV9pZBgCIAEoCRIaChJhc3NlcnRpb25fZXZlbnRfaWQYAyABKAkSIAoTcmV2b2NhdGlvbl9ldmVudF9pZBgEIAEoCUgAiAEBQhYKFF9yZXZvY2F0aW9uX2V2ZW50X2lkIuEDChhBdXRob3JpemF0aW9uRXhwbGFuYXRpb24SRgoJb3BlcmF0aW9uGAEgASgOMjMubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25FeHBsYW5hdGlvbi5PcGVyYXRpb24SEAoIcmVsYXRpb24YAiABKAkSDgoGcmVzdWx0GAMgASgIEjwKCGV2aWRlbmNlGAQgAygLMioubm9tb3Mua2VybmVsLnYxLlJlbGF0aW9uc2hpcFR1cGxlRXZpZGVuY2USOwoIY2hpbGRyZW4YBSADKAsyKS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkV4cGxhbmF0aW9uIt8BCglPcGVyYXRpb24SGQoVT1BFUkFUSU9OX1VOU1BFQ0lGSUVEEAASFAoQT1BFUkFUSU9OX0RJUkVDVBABEh4KGk9QRVJBVElPTl9DT01QVVRFRF9VU0VSU0VUEAISHgoaT1BFUkFUSU9OX1RVUExFX1RPX1VTRVJTRVQQAxITCg9PUEVSQVRJT05fVU5JT04QBBIaChZPUEVSQVRJT05fSU5URVJTRUNUSU9OEAUSFwoTT1BFUkFUSU9OX0VYQ0xVU0lPThAGEhcKE09QRVJBVElPTl9DT05ESVRJT04QByJ3ChpBdXRob3JpemF0aW9uRGVjaXNpb25CYXNpcxIgChhhdXRob3JpemF0aW9uX21vZGVsX2hhc2gYASABKAkSIQoZcmVsYXRpb25zaGlwX3N0YXRlX2NvbW1pdBgCIAEoCRIUCgxjb250ZXh0X2hhc2gYAyABKAwivgEKGkF1dGhvcml6YXRpb25DaGVja1Jlc3BvbnNlEg8KB2FsbG93ZWQYASABKAgSOgoFYmFzaXMYAiABKAsyKy5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkRlY2lzaW9uQmFzaXMSQwoLZXhwbGFuYXRpb24YAyABKAsyKS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkV4cGxhbmF0aW9uSACIAQFCDgoMX2V4cGxhbmF0aW9uIoMCChtBdXRob3JpemF0aW9uRXhwYW5kUmVzcG9uc2USNwoIc3ViamVjdHMYASADKAsyJS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvblN1YmplY3QSOgoFYmFzaXMYAiABKAsyKy5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkRlY2lzaW9uQmFzaXMSEQoEbmV4dBgDIAEoCUgAiAEBEkMKC2V4cGxhbmF0aW9uGAQgASgLMikubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25FeHBsYW5hdGlvbkgBiAEBQgcKBV9uZXh0Qg4KDF9leHBsYW5hdGlvbiJwCg1PdXRib3hSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSLQoFY2xvY2sYAiABKAsyHi5ub21vcy5rZXJuZWwudjEuQ2FwdHVyZWRDbG9jayJjCgtTeW5jUmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0EhEKCWZyb21fYmFzZRgCIAEoCRIPCgd0b19oZWFkGAMgASgJIlMKC1Rlc3RSZXF1ZXN0EjcKCHNldF9yb290GAEgASgLMiMubm9tb3Mua2VybmVsLnYxLlNldFRlc3RSb290UmVxdWVzdEgAQgsKCW9wZXJhdGlvbiIoChJTZXRUZXN0Um9vdFJlcXVlc3QSEgoKcHVibGljX2tleRgBIAEoDCI9CgxUZXN0UmVzcG9uc2USLQoGcmVzdWx0GAEgASgLMh0ubm9tb3Mua2VybmVsLnYxLkFja25vd2xlZGdlZCLVCwoOQ3VzdG9keVJlcXVlc3QSNwoKcGFja19kZWx0YRgKIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5QYWNrRGVsdGFSZXF1ZXN0SAASNwoKYXBwbHlfcGFjaxgLIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5BcHBseVBhY2tSZXF1ZXN0SAASNwoKcmVwb19zdGF0cxgMIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5SZXBvU3RhdHNSZXF1ZXN0SAASPQoNaW50ZW50c19hYm92ZRgNIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5JbnRlbnRzQWJvdmVSZXF1ZXN0SAASPwoOaW5zcGVjdF9jaGFuZ2UYDiABKAsyJS5ub21vcy5rZXJuZWwudjEuSW5zcGVjdENoYW5nZVJlcXVlc3RIABJOChZlbmNvZGVfcmVmdXNhbF92ZXJkaWN0GA8gASgLMiwubm9tb3Mua2VybmVsLnYxLkVuY29kZVJlZnVzYWxWZXJkaWN0UmVxdWVzdEgAElAKF2luc3BlY3RfcmVmdXNhbF92ZXJkaWN0GBAgASgLMi0ubm9tb3Mua2VybmVsLnYxLkluc3BlY3RSZWZ1c2FsVmVyZGljdFJlcXVlc3RIABI1CglyZWFkX2Jsb2IYESABKAsyIC5ub21vcy5rZXJuZWwudjEuUmVhZEJsb2JSZXF1ZXN0SAASOQoLcmVzb2x2ZV9yZWYYEiABKAsyIi5ub21vcy5rZXJuZWwudjEuUmVzb2x2ZVJlZlJlcXVlc3RIABI1CglsaXN0X3JlZnMYEyABKAsyIC5ub21vcy5rZXJuZWwudjEuTGlzdFJlZnNSZXF1ZXN0SAASNQoJd3JpdGVfcmVmGBQgASgLMiAubm9tb3Mua2VybmVsLnYxLldyaXRlUmVmUmVxdWVzdEgAEjcKCmRlbGV0ZV9yZWYYFSABKAsyIS5ub21vcy5rZXJuZWwudjEuRGVsZXRlUmVmUmVxdWVzdEgAEkQKEXdyaXRlX21ldGFfY29tbWl0GBYgASgLMicubm9tb3Mua2VybmVsLnYxLldyaXRlTWV0YUNvbW1pdFJlcXVlc3RIABJCChBsYXdfY2xvc3VyZV9pbmZvGBcgASgLMiYubm9tb3Mua2VybmVsLnYxLkxhd0Nsb3N1cmVJbmZvUmVxdWVzdEgAEkUKEWNoZWNrcG9pbnRfZXhwb3J0GBggASgLMigubm9tb3Mua2VybmVsLnYxLkNoZWNrcG9pbnRFeHBvcnRSZXF1ZXN0SAASRQoRY2hlY2twb2ludF9pbXBvcnQYGSABKAsyKC5ub21vcy5rZXJuZWwudjEuQ2hlY2twb2ludEltcG9ydFJlcXVlc3RIABJDChBjYXBhY2l0eV9yZXNlcnZlGBogASgLMicubm9tb3Mua2VybmVsLnYxLkNhcGFjaXR5UmVzZXJ2ZVJlcXVlc3RIABI7CgxyZXN0b3JlX21haW4YGyABKAsyIy5ub21vcy5rZXJuZWwudjEuUmVzdG9yZU1haW5SZXF1ZXN0SAASTgoWcmVzb2x2ZV9zdGF0ZV9wb3NpdGlvbhgcIAEoCzIsLm5vbW9zLmtlcm5lbC52MS5SZXNvbHZlU3RhdGVQb3NpdGlvblJlcXVlc3RIABJHChJyZXNpZGVudF9mb290cHJpbnQYHSABKAsyKS5ub21vcy5rZXJuZWwudjEuUmVzaWRlbnRGb290cHJpbnRSZXF1ZXN0SAASQQoPaGlzdG9yeV9zdW1tYXJ5GB4gASgLMiYubm9tb3Mua2VybmVsLnYxLkhpc3RvcnlTdW1tYXJ5UmVxdWVzdEgAEloKHHByb3ZlX2NvbXBhY3Rpb25fZXF1aXZhbGVuY2UYHyABKAsyMi5ub21vcy5rZXJuZWwudjEuUHJvdmVDb21wYWN0aW9uRXF1aXZhbGVuY2VSZXF1ZXN0SABCCwoJb3BlcmF0aW9uIigKGFJlc2lkZW50Rm9vdHByaW50UmVxdWVzdBIMCgRkZWVwGAEgASgIIp8CChFSZXNpZGVudEZvb3RwcmludBIRCgl3b3Jrc3BhY2UYASABKAkSDgoGYnJhbmNoGAIgASgJEhgKEHJlYWRfbW9kZWxfYnl0ZXMYAyABKAQSHQoVcmVhZF9tb2RlbF9ydXN0X2J5dGVzGAQgASgEEhgKEGZvbGRfc3RhdGVfYnl0ZXMYBSABKAQSEwoLZm9sZF9pbWFnZXMYBiABKA0SHwoXc2hhcmVkX2F0dHJpYnV0ZWRfYnl0ZXMYByABKAQSEgoKYWdncmVnYXRlcxgIIAEoBBI2Cgpjb21wb25lbnRzGAkgAygLMiIubm9tb3Mua2VybmVsLnYxLlJlc2lkZW50Q29tcG9uZW50EhIKCmNvbXB1dGVfdXMYCiABKAQiaQoRUmVzaWRlbnRDb21wb25lbnQSNAoEa2luZBgBIAEoDjImLm5vbW9zLmtlcm5lbC52MS5SZXNpZGVudENvbXBvbmVudEtpbmQSDQoFYnl0ZXMYAiABKAQSDwoHY2VpbGluZxgDIAEoCCLKAQoZUmVzaWRlbnRGb290cHJpbnRSZXNwb25zZRI1CglyZXNpZGVudHMYASADKAsyIi5ub21vcy5rZXJuZWwudjEuUmVzaWRlbnRGb290cHJpbnQSHAoUYWxsb2NhdG9yX2xpdmVfYnl0ZXMYAiABKAQSGAoQYXR0cmlidXRlZF9ieXRlcxgDIAEoBBIZChF1bmFjY291bnRlZF9ieXRlcxgEIAEoBBIVCg1hY2NvdW50aW5nX3VzGAUgASgEEgwKBGRlZXAYBiABKAginAEKEFBhY2tEZWx0YVJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCgRoZWFkGAIgASgJSACIAQESEQoEYmFzZRgDIAEoCUgBiAEBEg4KBmJyYW5jaBgEIAEoCRIdChBzdGFnZWRfcGFja19maWxlGAUgASgJSAKIAQFCBwoFX2hlYWRCBwoFX2Jhc2VCEwoRX3N0YWdlZF9wYWNrX2ZpbGUicgoQQXBwbHlQYWNrUmVxdWVzdBIMCgRyZXBvGAEgASgJEg4KBHBhY2sYAiABKAxIABIaChBzdGFnZWRfcGFja19maWxlGAQgASgJSAASEQoEaGVhZBgDIAEoCUgBiAEBQggKBnNvdXJjZUIHCgVfaGVhZCIgChBSZXBvU3RhdHNSZXF1ZXN0EgwKBHJlcG8YASABKAkirAEKE0ludGVudHNBYm92ZVJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCgRoZWFkGAIgASgJSACIAQESEQoEYmFzZRgDIAEoCUgBiAEBEg4KBmJyYW5jaBgEIAEoCRINCgVsaW1pdBgFIAEoBBIYChBjb21wbGV0ZV9sb2dpY2FsGAYgASgIEhYKDmNvbXBhY3Rfc3RvcmVkGAcgASgIQgcKBV9oZWFkQgcKBV9iYXNlIm0KFUhpc3RvcnlTdW1tYXJ5UmVxdWVzdBIMCgRyZXBvGAEgASgJEhEKBGhlYWQYAiABKAlIAIgBARIOCgZicmFuY2gYAyABKAkSEQoEYmFzZRgEIAEoCUgBiAEBQgcKBV9oZWFkQgcKBV9iYXNlIisKFEluc3BlY3RDaGFuZ2VSZXF1ZXN0EhMKC2NoYW5nZV91c2RhGAEgASgMIt8BCg5SZWZ1c2FsVmVyZGljdBIVCghvZmZlcl9pZBgBIAEoCUgAiAEBEhAKA29pZBgCIAEoCUgBiAEBEhMKBmRvbWFpbhgDIAEoCUgCiAEBEhkKDGRpcmVjdGl2ZV9pZBgEIAEoCUgDiAEBEhQKB3Nlc3Npb24YBSABKAlIBIgBARIRCglwYXJrZWRfYXQYBiABKAkSDgoGcmVhc29uGAcgASgJQgsKCV9vZmZlcl9pZEIGCgRfb2lkQgkKB19kb21haW5CDwoNX2RpcmVjdGl2ZV9pZEIKCghfc2Vzc2lvbiJPChtFbmNvZGVSZWZ1c2FsVmVyZGljdFJlcXVlc3QSMAoHdmVyZGljdBgBIAEoCzIfLm5vbW9zLmtlcm5lbC52MS5SZWZ1c2FsVmVyZGljdCI0ChxJbnNwZWN0UmVmdXNhbFZlcmRpY3RSZXF1ZXN0EhQKDHZlcmRpY3RfdXNkYRgBIAEoDCLUAQoVQ29tcGFjdGlvbkVxdWl2YWxlbmNlEhMKC3NvdXJjZV9oZWFkGAEgASgJEhYKDnNvdXJjZV9nZW5lc2lzGAIgASgJEhYKDmNhbmRpZGF0ZV9oZWFkGAMgASgJEhkKEWNhbmRpZGF0ZV9nZW5lc2lzGAQgASgJEhYKDnNvdXJjZV9pbnRlbnRzGAUgASgEEhcKD2NhcnJpZWRfaW50ZW50cxgGIAEoBBIWCg5wYXJrZWRfaW50ZW50cxgHIAEoBBISCgplcXVpdmFsZW50GAggASgIIn0KIVByb3ZlQ29tcGFjdGlvbkVxdWl2YWxlbmNlUmVxdWVzdBITCgtzb3VyY2VfcmVwbxgBIAEoCRITCgtzb3VyY2VfaGVhZBgCIAEoCRIWCg5jYW5kaWRhdGVfcmVwbxgDIAEoCRIWCg5jYW5kaWRhdGVfaGVhZBgEIAEoCSI6Cg9SZWFkQmxvYlJlcXVlc3QSDAoEcmVwbxgBIAEoCRILCgNvaWQYAiABKAkSDAoEcGF0aBgDIAEoCSI0ChFSZXNvbHZlUmVmUmVxdWVzdBIMCgRyZXBvGAEgASgJEhEKCXJlZmVyZW5jZRgCIAEoCSIvCg9MaXN0UmVmc1JlcXVlc3QSDAoEcmVwbxgBIAEoCRIOCgZwcmVmaXgYAiABKAkiQgoPV3JpdGVSZWZSZXF1ZXN0EgwKBHJlcG8YASABKAkSEQoJcmVmZXJlbmNlGAIgASgJEg4KBnRhcmdldBgDIAEoCSIzChBEZWxldGVSZWZSZXF1ZXN0EgwKBHJlcG8YASABKAkSEQoJcmVmZXJlbmNlGAIgASgJIikKCE1ldGFGaWxlEgwKBHBhdGgYASABKAkSDwoHY29udGVudBgCIAEoDCKuAQoWV3JpdGVNZXRhQ29tbWl0UmVxdWVzdBIMCgRyZXBvGAEgASgJEg8KB3BhcmVudHMYAiADKAkSKAoFZmlsZXMYAyADKAsyGS5ub21vcy5rZXJuZWwudjEuTWV0YUZpbGUSDwoHbWVzc2FnZRgEIAEoCRIUCgx0aW1lX3NlY29uZHMYBSABKBISFgoJcmVmZXJlbmNlGAYgASgJSACIAQFCDAoKX3JlZmVyZW5jZSJnChVMYXdDbG9zdXJlSW5mb1JlcXVlc3QSFAoMY2xvc3VyZV9maWxlGAEgASgJEjgKCmNhcGFiaWxpdHkYAiABKA4yJC5ub21vcy5rZXJuZWwudjEuS2VybmVsTGF3Q2FwYWJpbGl0eSKHAQoXQ2hlY2twb2ludEV4cG9ydFJlcXVlc3QSMAoGdGFyZ2V0GAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBIhChRzdGFnZWRfZnJvbnRpZXJfZmlsZRgCIAEoCUgAiAEBQhcKFV9zdGFnZWRfZnJvbnRpZXJfZmlsZSJBCgtGcm9udGllckhsYxIQCghwaHlzaWNhbBgBIAEoBBIPCgdsb2dpY2FsGAIgASgNEg8KB3JlcGxpY2EYAyABKAQi3QQKF1ZlcmlmaWVkRnJvbnRpZXJSZWNlaXB0EhYKDmZvcm1hdF92ZXJzaW9uGAEgASgNEgsKA29pZBgCIAEoCRIPCgdpbnRlbnRzGAMgASgEEhMKC3BsYW5zX3JlcnVuGAQgASgEEhwKD2NvbnRyb2xsZXJfaGFzaBgFIAEoCUgAiAEBEhkKEWluc3RhbGxlZF9kb21haW5zGAYgAygJEg4KBmxpbmVhchgHIAEoCBIzCghsYXN0X2hsYxgIIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Gcm9udGllckhsY0gBiAEBEhQKB2xhc3RfaWQYCSABKAlIAogBARIRCglzdGF0ZV9vaWQYCiABKAkSFAoMc3RhdGVfc2hhMjU2GAsgASgJEjkKDnN0YXRlX2xhc3RfaGxjGAwgASgLMhwubm9tb3Mua2VybmVsLnYxLkZyb250aWVySGxjSAOIAQESGgoNc3RhdGVfbGFzdF9pZBgNIAEoCUgEiAEBEhcKD21hbmlmZXN0X3NoYTI1NhgOIAEoCRIeChZsYXdfY2xvc3VyZV9pZGVudGl0aWVzGA8gAygJEhoKEnJlc29sdmFibGVfZG9tYWlucxgQIAMoCRIiChVwcm9qZWN0aW9uX3N0YXRlX3Jvb3QYESABKAlIBYgBAUISChBfY29udHJvbGxlcl9oYXNoQgsKCV9sYXN0X2hsY0IKCghfbGFzdF9pZEIRCg9fc3RhdGVfbGFzdF9obGNCEAoOX3N0YXRlX2xhc3RfaWRCGAoWX3Byb2plY3Rpb25fc3RhdGVfcm9vdCJFChVGb2xkRnJvbnRpZXJBZ2dyZWdhdGUSFAoMYWdncmVnYXRlX2lkGAEgASgJEhYKDmFnZ3JlZ2F0ZV91c2RhGAIgASgMIkEKF0ZvbGRGcm9udGllckZpbmdlcnByaW50EhEKCWludGVudF9pZBgBIAEoCRITCgtmaW5nZXJwcmludBgCIAEoCSLWAwoURm9sZEZyb250aWVyU25hcHNob3QSFgoOZm9ybWF0X3ZlcnNpb24YASABKA0SCwoDdGlwGAIgASgJEg8KB2dlbmVzaXMYAyABKAkSFQoNaGlzdG9yeV9kZXB0aBgEIAEoBBI6CgphZ2dyZWdhdGVzGAUgAygLMiYubm9tb3Mua2VybmVsLnYxLkZvbGRGcm9udGllckFnZ3JlZ2F0ZRI4Cg1obGNfd2F0ZXJtYXJrGAYgASgLMhwubm9tb3Mua2VybmVsLnYxLkZyb250aWVySGxjSACIAQESMwoIbGFzdF9obGMYByABKAsyHC5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJIbGNIAYgBARIUCgdsYXN0X2lkGAggASgJSAKIAQESFgoOc3RyaWtlX3RhcmdldHMYCSADKAkSRQoTaW50ZW50X2ZpbmdlcnByaW50cxgKIAMoCzIoLm5vbW9zLmtlcm5lbC52MS5Gb2xkRnJvbnRpZXJGaW5nZXJwcmludBIXCgpzdGF0ZV9yb290GAsgASgJSAOIAQFCEAoOX2hsY193YXRlcm1hcmtCCwoJX2xhc3RfaGxjQgoKCF9sYXN0X2lkQg0KC19zdGF0ZV9yb290IpsDChhTdG9yZWRDaGVja3BvaW50TWFuaWZlc3QSFgoOZm9ybWF0X3ZlcnNpb24YASABKA0SEwoGY3Vyc29yGAIgASgJSACIAQESGAoQY2hlY2twb2ludF9ieXRlcxgDIAEoBBIQCghsYXdfaGFzaBgEIAEoCRI7Cgtjb21wcmVzc2lvbhgFIAEoDjImLm5vbW9zLmtlcm5lbC52MS5DaGVja3BvaW50Q29tcHJlc3Npb24SEQoJcmF3X2J5dGVzGAYgASgEEhQKDHN0b3JlZF9ieXRlcxgHIAEoBBIdChVmcm9udGllcl9zdG9yZWRfYnl0ZXMYCCABKAQSFwoKc3RhdGVfcm9vdBgJIAEoCUgBiAEBElAKGXZlcmlmaWVkX2Zyb250aWVyX3JlY2VpcHQYCiABKAsyKC5ub21vcy5rZXJuZWwudjEuVmVyaWZpZWRGcm9udGllclJlY2VpcHRIAogBAUIJCgdfY3Vyc29yQg0KC19zdGF0ZV9yb290QhwKGl92ZXJpZmllZF9mcm9udGllcl9yZWNlaXB0IsEDChdDaGVja3BvaW50SW1wb3J0UmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0EhIKCGZyb250aWVyGAIgASgMSAASHgoUc3RhZ2VkX2Zyb250aWVyX2ZpbGUYBiABKAlIABITCgZjdXJzb3IYAyABKAlIAYgBARIXCgpzdGF0ZV9yb290GAQgASgJSAKIAQESDQoFc3BhbnMYBSABKAgSEQoEaGVhZBgHIAEoCUgDiAEBElAKGXZlcmlmaWVkX2Zyb250aWVyX3JlY2VpcHQYCCABKAsyKC5ub21vcy5rZXJuZWwudjEuVmVyaWZpZWRGcm9udGllclJlY2VpcHRIBIgBARJKChN2ZXJpZmljYXRpb25fcG9saWN5GAkgASgOMi0ubm9tb3Mua2VybmVsLnYxLkNoZWNrcG9pbnRWZXJpZmljYXRpb25Qb2xpY3lCEQoPZnJvbnRpZXJfc291cmNlQgkKB19jdXJzb3JCDQoLX3N0YXRlX3Jvb3RCBwoFX2hlYWRCHAoaX3ZlcmlmaWVkX2Zyb250aWVyX3JlY2VpcHQiMQoWQ2FwYWNpdHlSZXNlcnZlUmVxdWVzdBIXCg9hZ2dyZWdhdGVfY291bnQYASABKAQiaQoSUmVzdG9yZU1haW5SZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSDAoEaGVhZBgCIAEoCRITCgtkaWFnbm9zdGljcxgDIAEoCCJpChtSZXNvbHZlU3RhdGVQb3NpdGlvblJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCgltYWluX2hlYWQYAiABKAkSFQoNaGludGVkX2NvbW1pdBgDIAEoCRISCgpzdGF0ZV9yb290GAQgASgJIuMLCg9DdXN0b2R5UmVzcG9uc2USOAoKcGFja19kZWx0YRgKIAEoCzIiLm5vbW9zLmtlcm5lbC52MS5QYWNrRGVsdGFSZXNwb25zZUgAEjgKCmFwcGx5X3BhY2sYCyABKAsyIi5ub21vcy5rZXJuZWwudjEuQXBwbHlQYWNrUmVzcG9uc2VIABI4CgpyZXBvX3N0YXRzGAwgASgLMiIubm9tb3Mua2VybmVsLnYxLlJlcG9TdGF0c1Jlc3BvbnNlSAASPgoNaW50ZW50c19hYm92ZRgNIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5JbnRlbnRzQWJvdmVSZXNwb25zZUgAEkAKDmluc3BlY3RfY2hhbmdlGA4gASgLMiYubm9tb3Mua2VybmVsLnYxLkluc3BlY3RDaGFuZ2VSZXNwb25zZUgAEk8KFmVuY29kZV9yZWZ1c2FsX3ZlcmRpY3QYDyABKAsyLS5ub21vcy5rZXJuZWwudjEuRW5jb2RlUmVmdXNhbFZlcmRpY3RSZXNwb25zZUgAElEKF2luc3BlY3RfcmVmdXNhbF92ZXJkaWN0GBAgASgLMi4ubm9tb3Mua2VybmVsLnYxLkluc3BlY3RSZWZ1c2FsVmVyZGljdFJlc3BvbnNlSAASNgoJcmVhZF9ibG9iGBEgASgLMiEubm9tb3Mua2VybmVsLnYxLlJlYWRCbG9iUmVzcG9uc2VIABI6CgtyZXNvbHZlX3JlZhgSIAEoCzIjLm5vbW9zLmtlcm5lbC52MS5SZXNvbHZlUmVmUmVzcG9uc2VIABI2CglsaXN0X3JlZnMYEyABKAsyIS5ub21vcy5rZXJuZWwudjEuTGlzdFJlZnNSZXNwb25zZUgAEjIKCXdyaXRlX3JlZhgUIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5BY2tub3dsZWRnZWRIABIzCgpkZWxldGVfcmVmGBUgASgLMh0ubm9tb3Mua2VybmVsLnYxLkFja25vd2xlZGdlZEgAEkUKEXdyaXRlX21ldGFfY29tbWl0GBYgASgLMigubm9tb3Mua2VybmVsLnYxLldyaXRlTWV0YUNvbW1pdFJlc3BvbnNlSAASQwoQbGF3X2Nsb3N1cmVfaW5mbxgXIAEoCzInLm5vbW9zLmtlcm5lbC52MS5MYXdDbG9zdXJlSW5mb1Jlc3BvbnNlSAASRgoRY2hlY2twb2ludF9leHBvcnQYGCABKAsyKS5ub21vcy5rZXJuZWwudjEuQ2hlY2twb2ludEV4cG9ydFJlc3BvbnNlSAASRgoRY2hlY2twb2ludF9pbXBvcnQYGSABKAsyKS5ub21vcy5rZXJuZWwudjEuQ2hlY2twb2ludEltcG9ydFJlc3BvbnNlSAASRAoQY2FwYWNpdHlfcmVzZXJ2ZRgaIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5DYXBhY2l0eVJlc2VydmVSZXNwb25zZUgAEjwKDHJlc3RvcmVfbWFpbhgbIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5SZXN0b3JlTWFpblJlc3BvbnNlSAASTwoWcmVzb2x2ZV9zdGF0ZV9wb3NpdGlvbhgcIAEoCzItLm5vbW9zLmtlcm5lbC52MS5SZXNvbHZlU3RhdGVQb3NpdGlvblJlc3BvbnNlSAASSAoScmVzaWRlbnRfZm9vdHByaW50GB0gASgLMioubm9tb3Mua2VybmVsLnYxLlJlc2lkZW50Rm9vdHByaW50UmVzcG9uc2VIABJCCg9oaXN0b3J5X3N1bW1hcnkYHiABKAsyJy5ub21vcy5rZXJuZWwudjEuSGlzdG9yeVN1bW1hcnlSZXNwb25zZUgAElsKHHByb3ZlX2NvbXBhY3Rpb25fZXF1aXZhbGVuY2UYHyABKAsyMy5ub21vcy5rZXJuZWwudjEuUHJvdmVDb21wYWN0aW9uRXF1aXZhbGVuY2VSZXNwb25zZUgAQgsKCW9wZXJhdGlvbiIwChFQYWNrRGVsdGFSZXNwb25zZRIMCgRwYWNrGAEgASgMEg0KBWJ5dGVzGAIgASgEIjwKEUFwcGx5UGFja1Jlc3BvbnNlEhQKDG9iamVjdF9jb3VudBgBIAEoBBIRCglwYWNrX2hhc2gYAiABKAkipwEKEVJlcG9TdGF0c1Jlc3BvbnNlEhMKC3RvdGFsX2J5dGVzGAEgASgEEhQKDG9iamVjdF9ieXRlcxgCIAEoBBIVCg1sb29zZV9vYmplY3RzGAMgASgEEhMKC2xvb3NlX2J5dGVzGAQgASgEEhIKCnBhY2tfZmlsZXMYBSABKAQSEgoKcGFja19ieXRlcxgGIAEoBBITCgtpbmRleF9ieXRlcxgHIAEoBCLiAQoMSW50ZW50UmVjb3JkEgsKA29pZBgBIAEoCRIRCglpbnRlbnRfaWQYAiABKAkSDgoGZG9tYWluGAMgASgJEhEKCWRpcmVjdGl2ZRgEIAEoCRITCgtjaGFuZ2VfdXNkYRgFIAEoDBIuCghzZW1hbnRpYxgGIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdBJKChV0cmFuc3BvcnRfcmVxdWlyZW1lbnQYByABKA4yKy5ub21vcy5rZXJuZWwudjEuSW50ZW50VHJhbnNwb3J0UmVxdWlyZW1lbnQiRgoUSW50ZW50c0Fib3ZlUmVzcG9uc2USLgoHaW50ZW50cxgBIAMoCzIdLm5vbW9zLmtlcm5lbC52MS5JbnRlbnRSZWNvcmQidAoWSGlzdG9yeVN1bW1hcnlSZXNwb25zZRIMCgRoZWFkGAEgASgJEg4KBm9sZGVzdBgCIAEoCRIUCgxjb21taXRfY291bnQYAyABKAQSEAoIY29tcGxldGUYBCABKAgSFAoMcmVhY2hlZF9iYXNlGAUgASgIIkIKE05vbWluYWxDYWxsSWRlbnRpdHkSEwoLZG9tYWluX3BhdGgYASABKAkSFgoOZGlyZWN0aXZlX3BhdGgYAiABKAkiiAEKGExpZmVjeWNsZUluc3RhbGxJZGVudGl0eRIfChd0YXJnZXRfY2xvc3VyZV9pZGVudGl0eRgBIAEoCRIUCgxpbnN0YWxsZWRfYnkYAiABKAkSNQoFcGhhc2UYAyABKA4yJi5ub21vcy5rZXJuZWwudjEuTGlmZWN5Y2xlSW5zdGFsbFBoYXNlIloKHVdvcmtzcGFjZVJlc2lkZW5jeVJlcXVpcmVtZW50EhEKCXdvcmtzcGFjZRgBIAEoCRITCgtzb3VyY2VfaGVhZBgCIAEoCRIRCglmb2xkX3Jvb3QYAyABKAkitAIKFUluc3BlY3RDaGFuZ2VSZXNwb25zZRIuCghzZW1hbnRpYxgBIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdBIRCglpbnRlbnRfaWQYAiABKAkSMgoEY2FsbBgDIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5Ob21pbmFsQ2FsbElkZW50aXR5EhAKCGF1dGhvcmVkGAQgASgIEkQKEWxpZmVjeWNsZV9pbnN0YWxsGAUgASgLMikubm9tb3Mua2VybmVsLnYxLkxpZmVjeWNsZUluc3RhbGxJZGVudGl0eRJMChRyZXF1aXJlZF9yZXNpZGVuY2llcxgGIAMoCzIuLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VSZXNpZGVuY3lSZXF1aXJlbWVudCJMChxSZXNvbHZlU3RhdGVQb3NpdGlvblJlc3BvbnNlEhoKDXJlc29sdmVkX2hlYWQYASABKAlIAIgBAUIQCg5fcmVzb2x2ZWRfaGVhZCI0ChxFbmNvZGVSZWZ1c2FsVmVyZGljdFJlc3BvbnNlEhQKDHZlcmRpY3RfdXNkYRgBIAEoDCJRCh1JbnNwZWN0UmVmdXNhbFZlcmRpY3RSZXNwb25zZRIwCgd2ZXJkaWN0GAEgASgLMh8ubm9tb3Mua2VybmVsLnYxLlJlZnVzYWxWZXJkaWN0InUKIlByb3ZlQ29tcGFjdGlvbkVxdWl2YWxlbmNlUmVzcG9uc2USOAoIZXZpZGVuY2UYASABKAsyJi5ub21vcy5rZXJuZWwudjEuQ29tcGFjdGlvbkVxdWl2YWxlbmNlEhUKDWV2aWRlbmNlX3VzZGEYAiABKAwiLwoQUmVhZEJsb2JSZXNwb25zZRINCgVmb3VuZBgBIAEoCBIMCgRibG9iGAIgASgMIi4KElJlc29sdmVSZWZSZXNwb25zZRIQCgNvaWQYASABKAlIAIgBAUIGCgRfb2lkIisKCVJlZlJlY29yZBIRCglyZWZlcmVuY2UYASABKAkSCwoDb2lkGAIgASgJIjwKEExpc3RSZWZzUmVzcG9uc2USKAoEcmVmcxgBIAMoCzIaLm5vbW9zLmtlcm5lbC52MS5SZWZSZWNvcmQiDgoMQWNrbm93bGVkZ2VkIiYKF1dyaXRlTWV0YUNvbW1pdFJlc3BvbnNlEgsKA29pZBgBIAEoCSKDAQoWTGF3Q2xvc3VyZUluZm9SZXNwb25zZRIQCghpZGVudGl0eRgBIAEoCRIZChFyb290X2xvZ2ljYWxfcGF0aBgCIAEoCRITCgthc3NldF9jb3VudBgDIAEoBBISCgpwcmltX2NvdW50GAQgASgEEhMKC2RvbWFpbl9rZXlzGAUgAygJIt8DChhDaGVja3BvaW50RXhwb3J0UmVzcG9uc2USDQoFZW1wdHkYASABKAgSEwoGY3Vyc29yGAIgASgJSACIAQESEAoIZnJvbnRpZXIYAyABKAwSFwoKc3RhdGVfcm9vdBgEIAEoCUgBiAEBEhIKCnN0YXRlX3RyZWUYBSABKAgSDgoGcGlubmVkGAYgASgIEhsKE3JlYWRfaW5kZXhfc25hcHNob3QYByABKAgSIwobcmVhZF9pbmRleF9zbmFwc2hvdF9wZW5kaW5nGAggASgIEiQKF3JlYWRfaW5kZXhfc3FsaXRlX2J5dGVzGAkgASgESAKIAQESJQoYcmVhZF9pbmRleF9jdXN0b2R5X2J5dGVzGAogASgESAOIAQESUAoZdmVyaWZpZWRfZnJvbnRpZXJfcmVjZWlwdBgLIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5WZXJpZmllZEZyb250aWVyUmVjZWlwdEgEiAEBQgkKB19jdXJzb3JCDQoLX3N0YXRlX3Jvb3RCGgoYX3JlYWRfaW5kZXhfc3FsaXRlX2J5dGVzQhsKGV9yZWFkX2luZGV4X2N1c3RvZHlfYnl0ZXNCHAoaX3ZlcmlmaWVkX2Zyb250aWVyX3JlY2VpcHQi1wIKGENoZWNrcG9pbnRJbXBvcnRSZXNwb25zZRIQCghyZXN0b3JlZBgBIAEoCBITCgZyZWFzb24YAiABKAlIAIgBARIXCg9mcm9udGllcl9zZWVkZWQYAyABKAgSJQodZnJvbnRpZXJfdmVyaWZpY2F0aW9uX3BlbmRpbmcYBCABKAgSFwoPYWdncmVnYXRlX2NvdW50GAUgASgEEisKBXNwYW5zGAYgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0EhMKBmN1cnNvchgHIAEoCUgBiAEBEhEKCXJlYWRfb25seRgIIAEoCBIXCg9sYXp5X3JlYWRfaW5kZXgYCSABKAgSNwoJYXNzdXJhbmNlGAogASgOMiQubm9tb3Mua2VybmVsLnYxLkNoZWNrcG9pbnRBc3N1cmFuY2VCCQoHX3JlYXNvbkIJCgdfY3Vyc29yIkoKF0NhcGFjaXR5UmVzZXJ2ZVJlc3BvbnNlEhcKD2FnZ3JlZ2F0ZV9jb3VudBgBIAEoBBIWCg5yZXNlcnZlZF9ieXRlcxgCIAEoBCL5AgoQUmVzdG9yZU1haW5TcGFucxIQCgh0b3RhbF91cxgBIAEoBBIaChJsaXZlX3JlZl9sb29rdXBfdXMYAiABKAQSGAoQdGFyZ2V0X2RlY29kZV91cxgDIAEoBBIkChxjdXN0b2R5X2NvbXBsZXRlbmVzc19yZWFkX3VzGAQgASgEEhkKEXF1YXJhbnRpbmVfcmVmX3VzGAUgASgEEiUKHWNoYWluX3NpZ25hdHVyZV9sYXdfcmVwbGF5X3VzGAYgASgEEhkKEXZlcmRpY3RfZGVjb2RlX3VzGAcgASgEEiMKG3Byb21vdGVfYW5kX2NsZWFudXBfcmVmc191cxgIIAEoBBIbChNmcm9udGllcl9yZWJ1aWxkX3VzGAkgASgEEhkKEWZyb250aWVyX3N0b3JlX3VzGAogASgEEj0KDHZlcmlmaWNhdGlvbhgLIAEoCzInLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpbkRpYWdub3N0aWNzIu8BChNSZXN0b3JlTWFpblJlc3BvbnNlEgwKBGhlYWQYASABKAkSEAoIdmVyaWZpZWQYAiABKAgSDAoEd2FsaxgDIAEoCRIwCgVzcGFucxgEIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5SZXN0b3JlTWFpblNwYW5zEi0KB3ZlcmRpY3QYBSABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSNwoJYXNzdXJhbmNlGAYgASgOMiQubm9tb3Mua2VybmVsLnYxLkNoZWNrcG9pbnRBc3N1cmFuY2USEAoIYWNjZXB0ZWQYByABKAgimwIKCk5vbW9zVmFsdWUSJQoEbnVsbBgBIAEoCzIVLm5vbW9zLmtlcm5lbC52MS5OdWxsSAASEQoHYm9vbGVhbhgCIAEoCEgAEhgKDnNpZ25lZF9pbnRlZ2VyGAMgASgSSAASGgoQdW5zaWduZWRfaW50ZWdlchgEIAEoBEgAEhgKDmZsb2F0aW5nX3BvaW50GAUgASgBSAASDgoEdGV4dBgGIAEoCUgAEg8KBWJ5dGVzGAcgASgMSAASKgoEbGlzdBgIIAEoCzIaLm5vbW9zLmtlcm5lbC52MS5Ob21vc0xpc3RIABIuCgZvYmplY3QYCSABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3RIAEIGCgRraW5kIgYKBE51bGwiOAoJTm9tb3NMaXN0EisKBnZhbHVlcxgBIAMoCzIbLm5vbW9zLmtlcm5lbC52MS5Ob21vc1ZhbHVlIpMBCgtOb21vc1N0cnVjdBI4CgZmaWVsZHMYASADKAsyKC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QuRmllbGRzRW50cnkaSgoLRmllbGRzRW50cnkSCwoDa2V5GAEgASgJEioKBXZhbHVlGAIgASgLMhsubm9tb3Mua2VybmVsLnYxLk5vbW9zVmFsdWU6AjgBKuoBChJCaXJ0aE91dGNvbWVTdGF0dXMSJAogQklSVEhfT1VUQ09NRV9TVEFUVVNfVU5TUEVDSUZJRUQQABIdChlCSVJUSF9PVVRDT01FX1NUQVRVU19CT1JOEAESIQodQklSVEhfT1VUQ09NRV9TVEFUVVNfREVGRVJSRUQQAhIfChtCSVJUSF9PVVRDT01FX1NUQVRVU19GQUlMRUQQAxIgChxCSVJUSF9PVVRDT01FX1NUQVRVU19SRUZVU0VEEAQSKQolQklSVEhfT1VUQ09NRV9TVEFUVVNfVU5XQVJSQU5URURfQ0VSVBAFKukSChFLZXJuZWxSZWZ1c2FsQ29kZRIjCh9LRVJORUxfUkVGVVNBTF9DT0RFX1VOU1BFQ0lGSUVEEAASJQohS0VSTkVMX1JFRlVTQUxfQ09ERV9CQURfU0lHTkFUVVJFEAESJAogS0VSTkVMX1JFRlVTQUxfQ09ERV9VTkFVVEhPUklaRUQQAhInCiNLRVJORUxfUkVGVVNBTF9DT0RFX1BPTElDWV9ESVNBQkxFRBADEioKJktFUk5FTF9SRUZVU0FMX0NPREVfVU5DRVJUSUZJRURfUE9MSUNZEAQSIwofS0VSTkVMX1JFRlVTQUxfQ09ERV9SRUZFUkVOVElBTBAFEi8KK0tFUk5FTF9SRUZVU0FMX0NPREVfUE9JTlRfU1RBVEVfVU5BVkFJTEFCTEUQBhIkCiBLRVJORUxfUkVGVVNBTF9DT0RFX0NBUF9FWENFRURFRBAHEi0KKUtFUk5FTF9SRUZVU0FMX0NPREVfQ0FQX0NPVU5UX1VOQVZBSUxBQkxFEAgSKQolS0VSTkVMX1JFRlVTQUxfQ09ERV9FVklERU5DRV9VTkJBQ0tFRBAJEiYKIktFUk5FTF9SRUZVU0FMX0NPREVfT1JQSEFOX1JFQ0VJUFQQChI2CjJLRVJORUxfUkVGVVNBTF9DT0RFX1JFQ0VJUFRfT05fVEVSTUlOQUxfT0JMSUdBVElPThALEiIKHktFUk5FTF9SRUZVU0FMX0NPREVfTk9UX01JTlRFRBAMEigKJEtFUk5FTF9SRUZVU0FMX0NPREVfRE9NQUlOX0xJRkVDWUNMRRANEikKJUtFUk5FTF9SRUZVU0FMX0NPREVfVFlQRV9UQUdfTUlTTUFUQ0gQDhIsCihLRVJORUxfUkVGVVNBTF9DT0RFX1JFVElSRURfUkVBRF9TVVJGQUNFEA8SMAosS0VSTkVMX1JFRlVTQUxfQ09ERV9DUk9TU19XT1JLU1BBQ0VfREVDTElORUQQEBIrCidLRVJORUxfUkVGVVNBTF9DT0RFX0FHR1JFR0FURV9JTlZBUklBTlQQERIrCidLRVJORUxfUkVGVVNBTF9DT0RFX1dPUktTUEFDRV9JTlZBUklBTlQQEhIuCipLRVJORUxfUkVGVVNBTF9DT0RFX0NBUFRVUkVEX1JFQURfQ09ORkxJQ1QQExIyCi5LRVJORUxfUkVGVVNBTF9DT0RFX0NPTkZMSUNUX1NOQVBTSE9UX1JFUVVJUkVEEBQSNAowS0VSTkVMX1JFRlVTQUxfQ09ERV9DT05GTElDVF9TTkFQU0hPVF9VTkRFQ0xBUkVEEBUSMQotS0VSTkVMX1JFRlVTQUxfQ09ERV9DT05GTElDVF9TTkFQU0hPVF9JTlZBTElEEBYSLworS0VSTkVMX1JFRlVTQUxfQ09ERV9DT05GTElDVF9TTkFQU0hPVF9TVEFMRRAXEjAKLEtFUk5FTF9SRUZVU0FMX0NPREVfQ0FQVFVSRURfUkVBRF9VTkRFQ0xBUkVEEBgSLQopS0VSTkVMX1JFRlVTQUxfQ09ERV9DQVBUVVJFRF9SRUFEX1BSSVZBVEUQGRIwCixLRVJORUxfUkVGVVNBTF9DT0RFX0FUVEVTVEVEX1JFQURfVU5ERUNMQVJFRBAaEjMKL0tFUk5FTF9SRUZVU0FMX0NPREVfQVRURVNURURfUkVBRF9VTlRSVVNURURfS0VZEBsSNgoyS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RFRF9SRUFEX1VOVFJVU1RFRF9TT1VSQ0UQHBIsCihLRVJORUxfUkVGVVNBTF9DT0RFX0FUVEVTVEVEX1JFQURfRk9SR0VEEB0SKwonS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RFRF9SRUFEX1NUQUxFEB4SLgoqS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RFRF9SRUFEX09WRVJTSVpFEB8SNwozS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RFRF9SRUFEX0RJU0hPTk9SRURfU09VUkNFECASNQoxS0VSTkVMX1JFRlVTQUxfQ09ERV9FUVVJVk9DQVRJT05fRVZJREVOQ0VfSU5WQUxJRBAhEjMKL0tFUk5FTF9SRUZVU0FMX0NPREVfQVRURVNUQVRJT05fUkVDRUlQVF9JTlZBTElEECISKwonS0VSTkVMX1JFRlVTQUxfQ09ERV9LRVlfUk9TVEVSX01JU01BVENIECMSLworS0VSTkVMX1JFRlVTQUxfQ09ERV9LRVlfRVBPQ0hfTk9UX01PTk9UT05JQxAkEikKJUtFUk5FTF9SRUZVU0FMX0NPREVfV1JJVEVfRVBPQ0hfU1RBTEUQJRItCilLRVJORUxfUkVGVVNBTF9DT0RFX0VOVkVMT1BFX1NJRF9NSVNNQVRDSBAmEjIKLktFUk5FTF9SRUZVU0FMX0NPREVfUkVWT0tFRF9NRU1CRVJfUkVTVVJSRUNURUQQJxIoCiRLRVJORUxfUkVGVVNBTF9DT0RFX0ZPUkdFRF9QUklOQ0lQQUwQKBIoCiRLRVJORUxfUkVGVVNBTF9DT0RFX09XTkVEX0tFWV9BTkNIT1IQKRImCiJLRVJORUxfUkVGVVNBTF9DT0RFX09XTkVEX1JFQ09WRVJZECoSLAooS0VSTkVMX1JFRlVTQUxfQ09ERV9TVVJGQUNFRF9CQVNJU19BSEVBRBArEjIKLktFUk5FTF9SRUZVU0FMX0NPREVfU0lHTkVSX0VQT0NIX09VVF9PRl9XSU5ET1cQLBImCiJLRVJORUxfUkVGVVNBTF9DT0RFX0VWT0xWRV9SRUZVU0VEEC0SKwonS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RBVElPTl9JTlZBTElEEC4SLQopS0VSTkVMX1JFRlVTQUxfQ09ERV9QQVJFTlRfRElEX05PVF9BVFRFU1QQLxIpCiVLRVJORUxfUkVGVVNBTF9DT0RFX0NFUlRfQ0hBSU5fQlJPS0VOEDASKgomS0VSTkVMX1JFRlVTQUxfQ09ERV9OT1RfUk9PVEVEX0FUX1JPT1QQMRIqCiZLRVJORUxfUkVGVVNBTF9DT0RFX0RFTEVHQVRJT05fSU5WQUxJRBAyEiUKIUtFUk5FTF9SRUZVU0FMX0NPREVfUExBTl9SRUpFQ1RFRBAzKooBCg9WZXJpZnlDaGFpbldhbGsSIQodVkVSSUZZX0NIQUlOX1dBTEtfVU5TUEVDSUZJRUQQABIaChZWRVJJRllfQ0hBSU5fV0FMS19GVUxMEAESHAoYVkVSSUZZX0NIQUlOX1dBTEtfU1VGRklYEAISGgoWVkVSSUZZX0NIQUlOX1dBTEtfTUVNTxADKrcBChdNb2RlbExpZmVjeWNsZU9wZXJhdGlvbhIpCiVNT0RFTF9MSUZFQ1lDTEVfT1BFUkFUSU9OX1VOU1BFQ0lGSUVEEAASJQohTU9ERUxfTElGRUNZQ0xFX09QRVJBVElPTl9JTlNUQUxMEAESIwofTU9ERUxfTElGRUNZQ0xFX09QRVJBVElPTl9TVEFHRRACEiUKIU1PREVMX0xJRkVDWUNMRV9PUEVSQVRJT05fUFJPTU9URRADKosGCh9Qcm92aWRlclRva2VuVmVyaWZpY2F0aW9uU3RhdHVzEjIKLlBST1ZJREVSX1RPS0VOX1ZFUklGSUNBVElPTl9TVEFUVVNfVU5TUEVDSUZJRUQQABIsCihQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX1ZBTElEEAESNgoyUFJPVklERVJfVE9LRU5fVkVSSUZJQ0FUSU9OX1NUQVRVU19OT19NQVRDSElOR19LRVkQAhIuCipQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX0VYUElSRUQQAxI0CjBQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX05PVF9ZRVRfVkFMSUQQBBI2CjJQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX0lTU1VFUl9NSVNNQVRDSBAFEjgKNFBST1ZJREVSX1RPS0VOX1ZFUklGSUNBVElPTl9TVEFUVVNfQVVESUVOQ0VfTUlTTUFUQ0gQBhI0CjBQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX0JBRF9TSUdOQVRVUkUQBxIwCixQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX01BTEZPUk1FRBAIEjwKOFBST1ZJREVSX1RPS0VOX1ZFUklGSUNBVElPTl9TVEFUVVNfVU5TVVBQT1JURURfQUxHT1JJVEhNEAkSLgoqUFJPVklERVJfVE9LRU5fVkVSSUZJQ0FUSU9OX1NUQVRVU19CQURfS0VZEAoSNgoyUFJPVklERVJfVE9LRU5fVkVSSUZJQ0FUSU9OX1NUQVRVU19NSVNTSU5HX1NVQkpFQ1QQCxIyCi5QUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX05PX1ZFUklGSUVSEAwSNAowUFJPVklERVJfVE9LRU5fVkVSSUZJQ0FUSU9OX1NUQVRVU19NSVNTSU5HX1RPS0VOEA0qhAEKEVF1ZXJ5UmVzdWx0Rm9ybWF0EiMKH1FVRVJZX1JFU1VMVF9GT1JNQVRfVU5TUEVDSUZJRUQQABIkCiBRVUVSWV9SRVNVTFRfRk9STUFUX0xFR0FDWV9WQUxVRRABEiQKIFFVRVJZX1JFU1VMVF9GT1JNQVRfTk9NSU5BTF9VU0RBEAIqjAwKDlF1ZXJ5T3BlcmF0aW9uEh8KG1FVRVJZX09QRVJBVElPTl9VTlNQRUNJRklFRBAAEhwKGFFVRVJZX09QRVJBVElPTl9FWFRSRU1VTRABEiAKHFFVRVJZX09QRVJBVElPTl9SRUFEX1BPU1RVUkUQBBIfChtRVUVSWV9PUEVSQVRJT05fQ1VSUkVOVF9MQVcQBRIjCh9RVUVSWV9PUEVSQVRJT05fSU5URVJGQUNFX09GRkVSEAYSJwojUVVFUllfT1BFUkFUSU9OX1JFTEFUSU9OX0dBVEVfT0ZGRVIQBxIdChlRVUVSWV9PUEVSQVRJT05fU0NFTkVfTEFXEAgSIQodUVVFUllfT1BFUkFUSU9OX0lOU1RBTExFRF9MQVcQCRIcChhRVUVSWV9PUEVSQVRJT05fREVTQ1JJQkUQChIjCh9RVUVSWV9PUEVSQVRJT05fS0VSTkVMX1JFU09VUkNFEAsSIwofUVVFUllfT1BFUkFUSU9OX0RFVkVMT1BFUl9TUEFOUxAMEikKJVFVRVJZX09QRVJBVElPTl9ERUNMQVJFRF9DQVBBQklMSVRJRVMQDRIdChlRVUVSWV9PUEVSQVRJT05fUkVBRElORVNTEA4SJAogUVVFUllfT1BFUkFUSU9OX1BST0pFQ1RJT05fU1RBVFMQDxIlCiFRVUVSWV9PUEVSQVRJT05fTUVNT1JZX0RST1BfUFJPQkUQEBIYChRRVUVSWV9PUEVSQVRJT05fV0FSTRAREhsKF1FVRVJZX09QRVJBVElPTl9SRUZSRVNIEBISIAocUVVFUllfT1BFUkFUSU9OX1ZFUklGWV9DSEFJThATEiUKIVFVRVJZX09QRVJBVElPTl9ISVNUT1JZX1BSRUZMSUdIVBAUEhkKFVFVRVJZX09QRVJBVElPTl9ST1VURRAVEhgKFFFVRVJZX09QRVJBVElPTl9NSU5UEBYSIQodUVVFUllfT1BFUkFUSU9OX0NSWVBUT19LRVlHRU4QFxIlCiFRVUVSWV9PUEVSQVRJT05fQ1JZUFRPX1NFQUxfRklFTEQQGBIsCihRVUVSWV9PUEVSQVRJT05fQ1JZUFRPX0JMSU5EX0lOREVYX1RPS0VOEBkSKgomUVVFUllfT1BFUkFUSU9OX0NSWVBUT19PV05FRF9TQ09QRV9LRVkQGhIvCitRVUVSWV9PUEVSQVRJT05fQ1JZUFRPX09XTkVEX0RFVklDRV9SRVFVRVNUEBsSMQotUVVFUllfT1BFUkFUSU9OX0NSWVBUT19PV05FRF9QUkVQQVJFX0FQUFJPVkFMEBwSMQotUVVFUllfT1BFUkFUSU9OX0NSWVBUT19PV05FRF9QUkVQQVJFX1JFQ09WRVJZEB0SIwofUVVFUllfT1BFUkFUSU9OX0NSWVBUT19XUkFQX0tFWRAeEiUKIVFVRVJZX09QRVJBVElPTl9DUllQVE9fVU5XUkFQX0tFWRAfEiEKHVFVRVJZX09QRVJBVElPTl9BVVRIT1JfS0VZR0VOECASJAogUVVFUllfT1BFUkFUSU9OX0FUVEVTVEFUSU9OX1NJR04QIRIgChxRVUVSWV9PUEVSQVRJT05fUkVDRUlQVF9QQVRIECISHQoZUVVFUllfT1BFUkFUSU9OX0NFUlRfU0lHThAjEiUKIVFVRVJZX09QRVJBVElPTl9CSVJUSF9UUlVTVF9TVEFURRAkEiEKHVFVRVJZX09QRVJBVElPTl9FUkFfQ0VSVF9TSUdOECUSKAokUVVFUllfT1BFUkFUSU9OX0RFTEVHQVRJT05fQ0VSVF9TSUdOECYSKQolUVVFUllfT1BFUkFUSU9OX0NBTk9OSUNBTElaRV9GUk9OVElFUhAnEisKJ1FVRVJZX09QRVJBVElPTl9DQU5PTklDQUxJWkVfUFJPSkVDVElPThAoIgQIAhACIgQIAxADKiFRVUVSWV9PUEVSQVRJT05fUEVORElOR19DT05GTElDVFMqKFFVRVJZX09QRVJBVElPTl9QRU5ESU5HX0NPTkZMSUNUX1NVTU1BUlkq0gIKFVJlc2lkZW50Q29tcG9uZW50S2luZBInCiNSRVNJREVOVF9DT01QT05FTlRfS0lORF9VTlNQRUNJRklFRBAAEiYKIlJFU0lERU5UX0NPTVBPTkVOVF9LSU5EX0ZPTERfU1RBVEUQARItCilSRVNJREVOVF9DT01QT05FTlRfS0lORF9SRUFEX01PREVMX1NRTElURRACEi4KKlJFU0lERU5UX0NPTVBPTkVOVF9LSU5EX1JFQURfTU9ERUxfSU5ERVhFUxADEi0KKVJFU0lERU5UX0NPTVBPTkVOVF9LSU5EX1NIQVJFRF9BVFRSSUJVVEVEEAQSLAooUkVTSURFTlRfQ09NUE9ORU5UX0tJTkRfV09SS1NQQUNFX0NBQ0hFUxAFEiwKKFJFU0lERU5UX0NPTVBPTkVOVF9LSU5EX0dJVF9PQkpFQ1RfQ0FDSEUQBipsChNLZXJuZWxMYXdDYXBhYmlsaXR5EiUKIUtFUk5FTF9MQVdfQ0FQQUJJTElUWV9VTlNQRUNJRklFRBAAEi4KKktFUk5FTF9MQVdfQ0FQQUJJTElUWV9TVEFHRV9aRVJPX0JPT1RTVFJBUBABKlkKFUNoZWNrcG9pbnRDb21wcmVzc2lvbhIfChtDSEVDS1BPSU5UX0NPTVBSRVNTSU9OX05PTkUQABIfChtDSEVDS1BPSU5UX0NPTVBSRVNTSU9OX0daSVAQASqRAQocQ2hlY2twb2ludFZlcmlmaWNhdGlvblBvbGljeRIzCi9DSEVDS1BPSU5UX1ZFUklGSUNBVElPTl9QT0xJQ1lfVkVSSUZZX0NBTk9OSUNBTBAAEjwKOENIRUNLUE9JTlRfVkVSSUZJQ0FUSU9OX1BPTElDWV9UUlVTVF9QUkVWSU9VU0xZX1ZFUklGSUVEEAEqgAEKE0NoZWNrcG9pbnRBc3N1cmFuY2USJAogQ0hFQ0tQT0lOVF9BU1NVUkFOQ0VfVU5TUEVDSUZJRUQQABIgChxDSEVDS1BPSU5UX0FTU1VSQU5DRV9UUlVTVEVEEAESIQodQ0hFQ0tQT0lOVF9BU1NVUkFOQ0VfVkVSSUZJRUQQAiqoAQoaSW50ZW50VHJhbnNwb3J0UmVxdWlyZW1lbnQSLAooSU5URU5UX1RSQU5TUE9SVF9SRVFVSVJFTUVOVF9VTlNQRUNJRklFRBAAEi4KKklOVEVOVF9UUkFOU1BPUlRfUkVRVUlSRU1FTlRfU0VBTEVEX0NIQU5HRRABEiwKKElOVEVOVF9UUkFOU1BPUlRfUkVRVUlSRU1FTlRfQ09NTUlUX1RSRUUQAiqJAQoVTGlmZWN5Y2xlSW5zdGFsbFBoYXNlEicKI0xJRkVDWUNMRV9JTlNUQUxMX1BIQVNFX1VOU1BFQ0lGSUVEEAASIgoeTElGRUNZQ0xFX0lOU1RBTExfUEhBU0VfQUNUSVZFEAESIwofTElGRUNZQ0xFX0lOU1RBTExfUEhBU0VfUEVORElORxACMlkKEk5vbW9zS2VybmVsU2VydmljZRJDCgRDYWxsEhwubm9tb3Mua2VybmVsLnYxLkNhbGxSZXF1ZXN0Gh0ubm9tb3Mua2VybmVsLnYxLkNhbGxSZXNwb25zZWIGcHJvdG8z");
9749
10888
  var CallRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 0);
9750
10889
  var CallResponseSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 1);
9751
10890
  var PrepareRemoteOfferRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 19);
9752
10891
  var PrepareRemoteOfferResponseSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 21);
9753
- var WorkspaceTargetSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 39);
9754
- var DirectiveCallSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 41);
9755
- var AuthoringOptionsSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 42);
9756
- var CapturedClockSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 43);
9757
- var BirthCertificateSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 44);
9758
- var SignBirthCertificateRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 45);
9759
- var OfferRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 47);
9760
- var QueryRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 50);
9761
- var QueryAuthoritySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 51);
9762
- var InjectedKeySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 52);
9763
- var RowsQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 53);
9764
- var PageQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 54);
9765
- var ByIdQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 55);
9766
- var TallyQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 60);
9767
- var SpatialQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 61);
9768
- var NamedQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 62);
9769
- var FrontierTransitionRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 63);
9770
- var AuthorizationObjectSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 68);
9771
- var AuthorizationSubjectSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 69);
9772
- var AuthorizationConsistencySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 71);
9773
- var AuthorizationCheckRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 73);
9774
- var AuthorizationExpandRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 74);
9775
- var OutboxRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 80);
9776
- var SyncRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 81);
9777
- var TestRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 82);
9778
- var SetTestRootRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 83);
9779
- var CustodyRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 85);
9780
- var ResidentFootprintRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 86);
9781
- var PackDeltaRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 90);
9782
- var ApplyPackRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 91);
9783
- var RepoStatsRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 92);
9784
- var IntentsAboveRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 93);
9785
- var InspectChangeRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 95);
9786
- var RefusalVerdictSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 96);
9787
- var EncodeRefusalVerdictRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 97);
9788
- var InspectRefusalVerdictRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 98);
9789
- var ProveCompactionEquivalenceRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 100);
9790
- var ReadBlobRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 101);
9791
- var ResolveRefRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 102);
9792
- var ListRefsRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 103);
9793
- var WriteRefRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 104);
9794
- var DeleteRefRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 105);
9795
- var WriteMetaCommitRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 107);
9796
- var LawClosureInfoRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 108);
9797
- var CheckpointExportRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 109);
9798
- var VerifiedFrontierReceiptSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 111);
9799
- var StoredCheckpointManifestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 115);
9800
- var CheckpointImportRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 116);
9801
- var CapacityReserveRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 117);
9802
- var RestoreMainRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 118);
9803
- var ResolveStatePositionRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 119);
9804
- var NomosValueSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 147);
9805
- var NomosStructSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 150);
10892
+ var ApplyWorkspaceEffectRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 38);
10893
+ var ApplyWorkspaceEffectResponseSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 39);
10894
+ var WorkspaceTargetSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 43);
10895
+ var InitializeWorkspaceRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 45);
10896
+ var DirectiveCallSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 47);
10897
+ var AuthoringOptionsSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 48);
10898
+ var CapturedClockSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 49);
10899
+ var BirthCertificateSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 50);
10900
+ var SignBirthCertificateRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 51);
10901
+ var OfferRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 54);
10902
+ var QueryRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 57);
10903
+ var QueryAuthoritySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 64);
10904
+ var InjectedKeySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 65);
10905
+ var RowsQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 66);
10906
+ var PageQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 67);
10907
+ var ByIdQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 68);
10908
+ var ByTypeQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 69);
10909
+ var TallyQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 74);
10910
+ var SpatialQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 75);
10911
+ var PendingConflictsQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 76);
10912
+ var PendingConflictSummaryQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 77);
10913
+ var NamedQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 78);
10914
+ var FrontierTransitionRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 79);
10915
+ var AuthorizationObjectSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 84);
10916
+ var AuthorizationSubjectSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 85);
10917
+ var AuthorizationConsistencySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 87);
10918
+ var AuthorizationCheckRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 89);
10919
+ var AuthorizationExpandRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 90);
10920
+ var OutboxRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 96);
10921
+ var SyncRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 97);
10922
+ var TestRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 98);
10923
+ var SetTestRootRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 99);
10924
+ var CustodyRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 101);
10925
+ var ResidentFootprintRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 102);
10926
+ var PackDeltaRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 106);
10927
+ var ApplyPackRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 107);
10928
+ var RepoStatsRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 108);
10929
+ var IntentsAboveRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 109);
10930
+ var InspectChangeRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 111);
10931
+ var RefusalVerdictSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 112);
10932
+ var EncodeRefusalVerdictRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 113);
10933
+ var InspectRefusalVerdictRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 114);
10934
+ var ProveCompactionEquivalenceRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 116);
10935
+ var ReadBlobRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 117);
10936
+ var ResolveRefRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 118);
10937
+ var ListRefsRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 119);
10938
+ var WriteRefRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 120);
10939
+ var DeleteRefRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 121);
10940
+ var WriteMetaCommitRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 123);
10941
+ var LawClosureInfoRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 124);
10942
+ var CheckpointExportRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 125);
10943
+ var VerifiedFrontierReceiptSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 127);
10944
+ var StoredCheckpointManifestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 131);
10945
+ var CheckpointImportRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 132);
10946
+ var CapacityReserveRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 133);
10947
+ var RestoreMainRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 134);
10948
+ var ResolveStatePositionRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 135);
10949
+ var NomosValueSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 163);
10950
+ var NomosStructSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 166);
9806
10951
  var BirthOutcomeStatusSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 0);
9807
10952
  var BirthOutcomeStatus = /* @__PURE__ */ tsEnum(BirthOutcomeStatusSchema);
9808
- var QueryOperationSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 3);
10953
+ var QueryResultFormatSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 5);
10954
+ var QueryResultFormat = /* @__PURE__ */ tsEnum(QueryResultFormatSchema);
10955
+ var QueryOperationSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 6);
9809
10956
  var QueryOperation = /* @__PURE__ */ tsEnum(QueryOperationSchema);
9810
- var KernelLawCapabilitySchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 5);
10957
+ var KernelLawCapabilitySchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 8);
9811
10958
  var KernelLawCapability = /* @__PURE__ */ tsEnum(KernelLawCapabilitySchema);
9812
- var CheckpointCompressionSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 6);
10959
+ var CheckpointCompressionSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 9);
9813
10960
  var CheckpointCompression = /* @__PURE__ */ tsEnum(CheckpointCompressionSchema);
9814
- var CheckpointVerificationPolicySchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 7);
10961
+ var CheckpointVerificationPolicySchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 10);
9815
10962
  var CheckpointVerificationPolicy = /* @__PURE__ */ tsEnum(CheckpointVerificationPolicySchema);
9816
- var CheckpointAssuranceSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 8);
10963
+ var CheckpointAssuranceSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 11);
9817
10964
  var CheckpointAssurance = /* @__PURE__ */ tsEnum(CheckpointAssuranceSchema);
9818
- var IntentTransportRequirementSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 9);
10965
+ var IntentTransportRequirementSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 12);
9819
10966
  var IntentTransportRequirement = /* @__PURE__ */ tsEnum(IntentTransportRequirementSchema);
9820
- var LifecycleInstallPhaseSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 10);
10967
+ var LifecycleInstallPhaseSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 13);
9821
10968
  var LifecycleInstallPhase = /* @__PURE__ */ tsEnum(LifecycleInstallPhaseSchema);
9822
10969
 
9823
10970
  // src/_adapter/offer-result.ts
@@ -9985,13 +11132,7 @@ function osEntropyBuffer(n) {
9985
11132
  return out;
9986
11133
  }
9987
11134
  var log = (evt, fields = {}) => console.log(JSON.stringify({ evt, t: Date.now(), ...fields }));
9988
- function callProto(ex, operation, STDERR) {
9989
- const requestId = `adapter-${++protoRequestSequence}`;
9990
- const request = create(CallRequestSchema, {
9991
- protocolVersion: PROTO_ABI_VERSION,
9992
- requestId,
9993
- operation
9994
- });
11135
+ function invokeCallRequest(ex, request, STDERR) {
9995
11136
  const bytes = toBinary(CallRequestSchema, request);
9996
11137
  const requestPtr = ex.git_holon_alloc(bytes.length) >>> 0;
9997
11138
  try {
@@ -10010,8 +11151,11 @@ function callProto(ex, operation, STDERR) {
10010
11151
  if (response.protocolVersion !== PROTO_ABI_VERSION) {
10011
11152
  throw new Error(`kernel protobuf ABI ${response.protocolVersion}; expected ${PROTO_ABI_VERSION}`);
10012
11153
  }
10013
- if (response.requestId !== requestId) {
10014
- throw new Error(`kernel protobuf response id ${response.requestId || "<empty>"}; expected ${requestId}`);
11154
+ if (response.requestId !== request.requestId) {
11155
+ const failure = response.outcome.case === "failure" ? `; kernel failure ${response.outcome.value.code}: ${response.outcome.value.message}` : "";
11156
+ throw new Error(
11157
+ `kernel protobuf response id ${response.requestId || "<empty>"}; expected ${request.requestId}${failure}`
11158
+ );
10015
11159
  }
10016
11160
  if (response.outcome.case === "failure") {
10017
11161
  throw new Error(`${response.outcome.value.code}: ${response.outcome.value.message}`);
@@ -10024,6 +11168,20 @@ function callProto(ex, operation, STDERR) {
10024
11168
  ex.git_holon_dealloc(requestPtr, bytes.length);
10025
11169
  }
10026
11170
  }
11171
+ function callKernel(eng2, request) {
11172
+ if (request.protocolVersion !== PROTO_ABI_VERSION) {
11173
+ throw new Error(`kernel protobuf ABI ${request.protocolVersion}; expected ${PROTO_ABI_VERSION}`);
11174
+ }
11175
+ if (!request.requestId) throw new Error("kernel protobuf request id is required");
11176
+ return invokeCallRequest(eng2.ex, request, eng2.STDERR);
11177
+ }
11178
+ function callProto(ex, operation, STDERR) {
11179
+ return invokeCallRequest(ex, create(CallRequestSchema, {
11180
+ protocolVersion: PROTO_ABI_VERSION,
11181
+ requestId: `adapter-${++protoRequestSequence}`,
11182
+ operation
11183
+ }), STDERR);
11184
+ }
10027
11185
  function protoValue(value) {
10028
11186
  if (value === null || value === void 0) {
10029
11187
  return create(NomosValueSchema, { kind: { case: "null", value: {} } });
@@ -10208,6 +11366,32 @@ function applicationQueryProto(eng2, ws, query2, options = {}) {
10208
11366
  if (result.case === "value") return jsValue(result.value);
10209
11367
  throw new Error(`kernel returned ${result.case || "empty"} for application query`);
10210
11368
  }
11369
+ function applicationQueryUsda(eng2, ws, query2, options = {}) {
11370
+ const response = callProto(eng2.ex, {
11371
+ case: "query",
11372
+ value: create(QueryRequestSchema, {
11373
+ target: protoTarget(ws, options.branch ?? BRANCH),
11374
+ authority: protoAuthority(
11375
+ options.principal,
11376
+ options.keys,
11377
+ options.authToken,
11378
+ options.nowUnix ?? 0,
11379
+ options.authorSecret
11380
+ ),
11381
+ spans: options.spans ?? false,
11382
+ resultFormat: QueryResultFormat.NOMINAL_USDA,
11383
+ query: query2
11384
+ })
11385
+ }, eng2.STDERR);
11386
+ if (response.outcome.case !== "query") {
11387
+ throw new Error(`kernel returned ${response.outcome.case || "empty"} for USDA query`);
11388
+ }
11389
+ const result = response.outcome.value.result;
11390
+ if (result.case !== "resultUsda") {
11391
+ throw new Error(`kernel returned ${result.case || "empty"} for USDA query`);
11392
+ }
11393
+ return result.value;
11394
+ }
10211
11395
  function namedQueryProto(eng2, ws, operation, arguments_ = {}, options = {}) {
10212
11396
  return applicationQueryProto(eng2, ws, {
10213
11397
  case: "named",
@@ -10394,11 +11578,52 @@ function workspaceGenesis(eng2, ws) {
10394
11578
  var closureInstallPayload = (hash, installedBy, options = {}) => ({
10395
11579
  domainHash: hash,
10396
11580
  installedBy,
11581
+ lawClosureIdentity: hash,
10397
11582
  dependencies: [],
10398
11583
  ...options.supersedes ? { supersedes: options.supersedes } : {},
10399
- ...options.dispositions ? { dispositions: options.dispositions } : {},
10400
11584
  finalizers: []
10401
11585
  });
11586
+ function authorOperatorCall(eng2, ws, call, controllerHash, opts = {}) {
11587
+ return author(eng2, ws, call.domain, call.directive, call.canonicalUsda, controllerHash, opts);
11588
+ }
11589
+ function initializeWorkspace(eng2, ws, installedBy = eng2.installedBy) {
11590
+ const sequence = eng2.seq++;
11591
+ const captured = {
11592
+ physical: Date.now(),
11593
+ logical: 0,
11594
+ replica: eng2.replica
11595
+ };
11596
+ const response = callProto(eng2.ex, {
11597
+ case: "initializeWorkspace",
11598
+ value: create(InitializeWorkspaceRequestSchema, {
11599
+ target: protoTarget(ws),
11600
+ controllerLawUsdz: eng2.nomosLawUsdz,
11601
+ authoring: create(AuthoringOptionsSchema, {
11602
+ actor: installedBy,
11603
+ sequence: BigInt(sequence),
11604
+ clock: create(CapturedClockSchema, {
11605
+ physicalMillis: BigInt(captured.physical),
11606
+ logical: captured.logical,
11607
+ replica: BigInt(captured.replica)
11608
+ })
11609
+ })
11610
+ })
11611
+ }, eng2.STDERR);
11612
+ if (response.outcome.case !== "initializeWorkspace") {
11613
+ throw new Error(
11614
+ `kernel returned ${response.outcome.case || "empty"} for initialize_workspace`
11615
+ );
11616
+ }
11617
+ if (response.outcome.value.controllerLawHash !== eng2.hashes.nomos) {
11618
+ throw new Error(
11619
+ `kernel initialized controller ${response.outcome.value.controllerLawHash}; expected ${eng2.hashes.nomos}`
11620
+ );
11621
+ }
11622
+ return {
11623
+ head: response.outcome.value.head,
11624
+ controllerLawHash: response.outcome.value.controllerLawHash
11625
+ };
11626
+ }
10402
11627
  async function createEngine({ wasmModule: wasmModule2, bootstrapLawUsdz: bootstrapLawUsdz2, nomosLawUsdz: nomosLawUsdz2, replica: replica2, installedBy = "nomos-cloud" }) {
10403
11628
  const assertUsdz = (name, bytes) => {
10404
11629
  if (!(bytes instanceof Uint8Array) || bytes.length < 4 || bytes[0] !== 80 || bytes[1] !== 75 || bytes[2] !== 3 || bytes[3] !== 4) {
@@ -11199,7 +12424,8 @@ async function admitIntentOffers(eng2, ws, ledger, offers, { receiptFence = null
11199
12424
  }
11200
12425
  const cap = summaryCtx ? beginSummaryCapture(eng2, ws, summaryCtx, doc) : null;
11201
12426
  const _tOffer = Date.now();
11202
- const res = offer?.sealedOffer ? offerRequest(eng2, offer.sealedOffer) : offerAdmit(eng2, ws, blob, { defer: false });
12427
+ const kernelVerdict = offer?.sealedOffer ? offerRequestResponse(eng2, offer.sealedOffer) : void 0;
12428
+ const res = kernelVerdict ? offerResult(kernelVerdict) : offerAdmit(eng2, ws, blob, { defer: false });
11203
12429
  log("offer-admit-ms", { ws, ms: Date.now() - _tOffer, deferred: false, ok: res.ok });
11204
12430
  if (res.ok) {
11205
12431
  if (intentId) main.ids.add(intentId);
@@ -11210,7 +12436,8 @@ async function admitIntentOffers(eng2, ws, ledger, offers, { receiptFence = null
11210
12436
  intent: intentId,
11211
12437
  head: res.head,
11212
12438
  created: res.created,
11213
- affected: res.affected
12439
+ affected: res.affected,
12440
+ ...kernelVerdict ? { kernelVerdict } : {}
11214
12441
  });
11215
12442
  admittedTotal += 1;
11216
12443
  if (Array.isArray(res.born) && res.born.length) born.push(...res.born);
@@ -11229,7 +12456,7 @@ async function admitIntentOffers(eng2, ws, ledger, offers, { receiptFence = null
11229
12456
  });
11230
12457
  }
11231
12458
  const error = `${String(res.error || "").slice(0, 300)} \u2014 dead-lettered; fix the law (or the payload), then POST /v1/workspaces/${ws}/dead-letters/retry`;
11232
- rec.rejected.push({ oid, error, deadLettered: true });
12459
+ rec.rejected.push({ oid, error, deadLettered: true, ...kernelVerdict ? { kernelVerdict } : {} });
11233
12460
  deadLetters.push({
11234
12461
  intentId,
11235
12462
  oid,
@@ -11506,13 +12733,19 @@ async function mountEphemeralWorkspace(eng2, ws, { domainHash = "", lawUsdz } =
11506
12733
  }
11507
12734
  if (!nomosActive(eng2, ws)) {
11508
12735
  assertAuthored(
11509
- author(eng2, ws, "bootstrap", "installDomain", closureInstallPayload(eng2.hashes.nomos, eng2.installedBy), "", { lawUsdz: eng2.nomosLawUsdz, deferProjection: false, rngDraws: 8 }),
12736
+ initializeWorkspace(eng2, ws, eng2.installedBy),
11510
12737
  `ephemeral workspace '${ws}' bootstrap`
11511
12738
  );
11512
12739
  }
11513
12740
  if (domainHash && lawUsdz && qById(eng2, ws, `domain-installation:${domainHash}`).length === 0) {
11514
12741
  assertAuthored(
11515
- author(eng2, ws, "nomos", "installDomain", closureInstallPayload(domainHash, eng2.installedBy), eng2.hashes.nomos, { lawUsdz, deferProjection: false, rngDraws: 8 }),
12742
+ authorOperatorCall(
12743
+ eng2,
12744
+ ws,
12745
+ installDomainCall(ws, closureInstallPayload(domainHash, eng2.installedBy)),
12746
+ requireCurrentControllerLawHash(eng2, ws),
12747
+ { lawUsdz, deferProjection: false, rngDraws: 8 }
12748
+ ),
11516
12749
  `ephemeral workspace '${ws}' installDomain(${domainHash.slice(0, 12)})`
11517
12750
  );
11518
12751
  }
@@ -11547,6 +12780,15 @@ function currentLaw(eng2, ws) {
11547
12780
  const out = namedQueryProto(eng2, ws, QueryOperation.CURRENT_LAW);
11548
12781
  return out.keyMap || {};
11549
12782
  }
12783
+ function currentControllerLawHash(eng2, ws) {
12784
+ const hash = currentLaw(eng2, ws).nomos;
12785
+ return typeof hash === "string" && /^[0-9a-f]{64}$/i.test(hash) ? hash : null;
12786
+ }
12787
+ function requireCurrentControllerLawHash(eng2, ws) {
12788
+ const hash = currentControllerLawHash(eng2, ws);
12789
+ if (hash) return hash;
12790
+ throw new Error(`workspace '${ws}' has no kernel-folded current Nomos controller law`);
12791
+ }
11550
12792
  function installedLaw(eng2, ws) {
11551
12793
  return namedQueryProto(eng2, ws, QueryOperation.INSTALLED_LAW);
11552
12794
  }
@@ -11594,21 +12836,49 @@ function outboundOffers(eng2, ws, nowMillis = Date.now()) {
11594
12836
  }
11595
12837
  return response.outcome.value;
11596
12838
  }
12839
+ async function applyWorkspaceEffect(eng2, ws, ledger, requestBytes, admissionCheckpointSecret) {
12840
+ const request = fromBinary(ApplyWorkspaceEffectRequestSchema, requestBytes);
12841
+ if (request.target?.workspace !== ws || request.target.repo !== repoArgOf(ws)) {
12842
+ throw new Error("workspace-effect protobuf target does not match the mounted target custody");
12843
+ }
12844
+ if (admissionCheckpointSecret.byteLength !== 32) {
12845
+ throw new Error("target runtime admission checkpoint credential is missing or malformed");
12846
+ }
12847
+ request.admissionCheckpointSecret = admissionCheckpointSecret;
12848
+ const response = callProto(eng2.ex, {
12849
+ case: "applyWorkspaceEffect",
12850
+ value: request
12851
+ }, eng2.STDERR);
12852
+ if (response.outcome.case !== "applyWorkspaceEffect") {
12853
+ throw new Error(`kernel returned ${response.outcome.case || "empty"} for workspace effect`);
12854
+ }
12855
+ const result = response.outcome.value.result;
12856
+ if (!result || result.outcome.case !== "admitted") {
12857
+ const outcome = result?.outcome.case || "empty";
12858
+ throw new Error(`target kernel ${outcome} the workspace effect`);
12859
+ }
12860
+ await custodyPush(eng2, ws, ledger, { remoteRef: "refs/heads/main", ffOnly: true });
12861
+ return toBinary(ApplyWorkspaceEffectResponseSchema, response.outcome.value);
12862
+ }
11597
12863
  function evolveDryRun(eng2, ws, lawUsdz, domainHash, dispositions = null) {
11598
12864
  const before = currentLaw(eng2, ws);
12865
+ const controllerHash = requireCurrentControllerLawHash(eng2, ws);
11599
12866
  const tenantHashes = [...new Set(Object.values(before).filter(
11600
- (hash) => typeof hash === "string" && hash !== eng2.hashes.bootstrap && hash !== eng2.hashes.nomos
12867
+ (hash) => typeof hash === "string" && hash !== eng2.hashes.bootstrap && hash !== controllerHash
11601
12868
  ))];
11602
12869
  const upgrade = tenantHashes.length > 0;
11603
12870
  const supersedes = upgrade && tenantHashes.length === 1 ? tenantHashes[0] : void 0;
11604
12871
  if (upgrade && supersedes === void 0) {
11605
12872
  return { admits: false, detail: `deploy-predecessor-ambiguous: workspace serves ${tenantHashes.length} business models` };
11606
12873
  }
12874
+ if (!upgrade && dispositions !== null) {
12875
+ return { admits: false, detail: "an initial installation cannot carry replacement dispositions" };
12876
+ }
11607
12877
  const payload = closureInstallPayload(domainHash, eng2.installedBy, {
11608
- ...supersedes ? { supersedes } : {},
11609
- ...!upgrade && dispositions ? { dispositions } : {}
12878
+ ...supersedes ? { supersedes } : {}
11610
12879
  });
11611
- const r = author(eng2, ws, "nomos", upgrade ? "stageDomain" : "installDomain", payload, eng2.hashes.nomos, {
12880
+ const call = upgrade ? stageDomainCall(ws, payload) : installDomainCall(ws, payload);
12881
+ const r = authorOperatorCall(eng2, ws, call, controllerHash, {
11612
12882
  lawUsdz,
11613
12883
  dryRun: true,
11614
12884
  deferProjection: false
@@ -11623,8 +12893,8 @@ function author(eng2, ws, domain, directiveId, payload, controllerHash, opts = {
11623
12893
  const seq = eng2.seq++;
11624
12894
  const capPorts = { clock: { physical: Date.now(), logical: 0, replica: eng2.replica }, rng: osEntropyBuffer(opts.rngDraws ?? 64) };
11625
12895
  const genesis = !controllerHash;
11626
- if (payload === null || typeof payload !== "object" || Array.isArray(payload)) {
11627
- throw new Error(`directive ${domain}/${directiveId} payload must be an object`);
12896
+ if (!(payload instanceof Uint8Array)) {
12897
+ throw new TypeError(`directive ${domain}/${directiveId} requires compiler-generated USDA bytes`);
11628
12898
  }
11629
12899
  const defer = opts.deferProjection !== false;
11630
12900
  const offerOnce = () => {
@@ -11637,7 +12907,7 @@ function author(eng2, ws, domain, directiveId, payload, controllerHash, opts = {
11637
12907
  value: create(DirectiveCallSchema, {
11638
12908
  domain,
11639
12909
  directive: directiveId,
11640
- payload: protoStruct(payload)
12910
+ body: { case: "callUsda", value: payload }
11641
12911
  })
11642
12912
  },
11643
12913
  authoring: create(AuthoringOptionsSchema, {
@@ -12201,6 +13471,33 @@ var queryStructured = (eng2, ws, queryId, arguments_, principal = "", keys = [],
12201
13471
  case: "rows",
12202
13472
  value: create(RowsQuerySchema, { id: queryId, arguments: protoStruct(arguments_), principal })
12203
13473
  }, queryAuthorityOptions(principal, keys, authToken, nowUnix, authorSecret));
13474
+ var queryGeneratedUsda = (eng2, ws, generated, principal = "") => applicationQueryUsda(eng2, ws, {
13475
+ case: "rows",
13476
+ value: create(RowsQuerySchema, {
13477
+ id: generated.query,
13478
+ argumentsUsda: generated.canonicalArgumentsUsda,
13479
+ principal
13480
+ })
13481
+ }, { principal });
13482
+ var queryByIdUsda = (eng2, ws, aggregateType, aggregateId, principal = "") => applicationQueryUsda(eng2, ws, {
13483
+ case: "byId",
13484
+ value: create(ByIdQuerySchema, { aggregateType, aggregateId, principal })
13485
+ }, { principal });
13486
+ var queryByTypeUsda = (eng2, ws, aggregateType, principal = "") => applicationQueryUsda(eng2, ws, {
13487
+ case: "byType",
13488
+ value: create(ByTypeQuerySchema, { aggregateType, principal })
13489
+ }, { principal });
13490
+ var pendingConflictsUsda = (eng2, ws, aggregateType = "", principal = "") => applicationQueryUsda(eng2, ws, {
13491
+ case: "pendingConflicts",
13492
+ value: create(PendingConflictsQuerySchema, {
13493
+ aggregateType: aggregateType || void 0,
13494
+ principal
13495
+ })
13496
+ }, { principal });
13497
+ var pendingConflictSummaryUsda = (eng2, ws, principal = "") => applicationQueryUsda(eng2, ws, {
13498
+ case: "pendingConflictSummary",
13499
+ value: create(PendingConflictSummaryQuerySchema, { principal })
13500
+ }, { principal });
12204
13501
  var queryPage = (eng2, ws, queryId, paramsJson, page = {}, principal = "", keys = [], authToken = "", nowUnix = 0, authorSecret = "") => applicationQueryProto(eng2, ws, {
12205
13502
  case: "page",
12206
13503
  value: create(PageQuerySchema, {
@@ -12443,33 +13740,26 @@ var readPosture = (eng2, ws, principal = "", authToken = "", nowUnix = 0, author
12443
13740
  );
12444
13741
  var count = (eng2, ws, countId, groupKey, principal = "", authToken = "", nowUnix = 0, authorSecret = "") => applicationQueryProto(eng2, ws, {
12445
13742
  case: "count",
12446
- value: create(TallyQuerySchema, { id: countId, arguments: protoStruct({ groupKey: groupKey ?? null }), principal })
13743
+ value: create(TallyQuerySchema, { id: countId, groupKey, principal })
12447
13744
  }, queryAuthorityOptions(principal, [], authToken, nowUnix, authorSecret));
12448
13745
  var sum = (eng2, ws, sumId, groupKey, principal = "", authToken = "", nowUnix = 0, authorSecret = "") => applicationQueryProto(eng2, ws, {
12449
13746
  case: "sum",
12450
- value: create(TallyQuerySchema, { id: sumId, arguments: protoStruct({ groupKey: groupKey ?? null }), principal })
13747
+ value: create(TallyQuerySchema, { id: sumId, groupKey, principal })
12451
13748
  }, queryAuthorityOptions(principal, [], authToken, nowUnix, authorSecret));
12452
- var pendingConflicts = (eng2, ws, principal = "", aggregateType = "", authToken = "", nowUnix = 0, authorSecret = "") => namedQueryProto(
12453
- eng2,
12454
- ws,
12455
- QueryOperation.PENDING_CONFLICTS,
12456
- { aggregateType },
12457
- queryAuthorityOptions(principal, [], authToken, nowUnix, authorSecret)
12458
- );
12459
- var pendingConflictSummary = (eng2, ws, principal = "", authToken = "", nowUnix = 0, authorSecret = "") => namedQueryProto(
12460
- eng2,
12461
- ws,
12462
- QueryOperation.PENDING_CONFLICT_SUMMARY,
12463
- {},
12464
- queryAuthorityOptions(principal, [], authToken, nowUnix, authorSecret)
12465
- );
12466
13749
  var spatialBboxParams = (bbox) => {
12467
13750
  const minX = bbox.minX ?? bbox.minLng, minY = bbox.minY ?? bbox.minLat, maxX = bbox.maxX ?? bbox.maxLng, maxY = bbox.maxY ?? bbox.maxLat;
12468
13751
  return { minX, minY, maxX, maxY, minLng: minX, minLat: minY, maxLng: maxX, maxLat: maxY };
12469
13752
  };
12470
13753
  var spatialWithin = (eng2, ws, spatialId, bbox, principal = "", authToken = "", nowUnix = 0, authorSecret = "") => applicationQueryProto(eng2, ws, {
12471
13754
  case: "spatial",
12472
- value: create(SpatialQuerySchema, { id: spatialId, arguments: protoStruct(spatialBboxParams(bbox)), principal })
13755
+ value: create(SpatialQuerySchema, {
13756
+ id: spatialId,
13757
+ minX: bbox.minX ?? bbox.minLng,
13758
+ minY: bbox.minY ?? bbox.minLat,
13759
+ maxX: bbox.maxX ?? bbox.maxLng,
13760
+ maxY: bbox.maxY ?? bbox.maxLat,
13761
+ principal
13762
+ })
12473
13763
  }, queryAuthorityOptions(principal, [], authToken, nowUnix, authorSecret));
12474
13764
  var extremum = (eng2, ws, extremumId, kind, groupKey, principal = "", authToken = "", nowUnix = 0, authorSecret = "") => namedQueryProto(
12475
13765
  eng2,
@@ -12600,13 +13890,16 @@ async function ingestPackAsCustody(eng2, ws, packBytes, head, options = {}) {
12600
13890
  spans: restored.spans
12601
13891
  };
12602
13892
  }
12603
- var nomosActive = (eng2, ws) => qById(eng2, ws, `domain-installation:${eng2.hashes.nomos}`).length > 0;
13893
+ var nomosActive = (eng2, ws) => currentControllerLawHash(eng2, ws) !== null;
12604
13894
  function offerRequest(eng2, request) {
13895
+ return offerResult(offerRequestResponse(eng2, request));
13896
+ }
13897
+ function offerRequestResponse(eng2, request) {
12605
13898
  const response = callProto(eng2.ex, { case: "offer", value: request }, eng2.STDERR);
12606
13899
  if (response.outcome.case !== "offer") {
12607
13900
  throw new Error(`kernel returned ${response.outcome.case || "empty"} for sealed offer request`);
12608
13901
  }
12609
- return offerResult(response.outcome.value);
13902
+ return response.outcome.value;
12610
13903
  }
12611
13904
  function offerIntent(eng2, ws, bytes, opts = {}) {
12612
13905
  const seq = eng2.seq++;
@@ -13164,10 +14457,16 @@ function promotePreflighted(eng2, ws, domain, candidateHash, opts = {}) {
13164
14457
  acceptanceReason: _acceptance,
13165
14458
  ...authorOpts
13166
14459
  } = opts;
13167
- const result = author(eng2, ws, "nomos", "promoteDomain", prepared.payload, eng2.hashes.nomos, {
13168
- ...authorOpts,
13169
- ...actingPrincipal ? { actor: actingPrincipal } : {}
13170
- });
14460
+ const result = authorOperatorCall(
14461
+ eng2,
14462
+ ws,
14463
+ promoteDomainCall(ws, prepared.payload),
14464
+ requireCurrentControllerLawHash(eng2, ws),
14465
+ {
14466
+ ...authorOpts,
14467
+ ...actingPrincipal ? { actor: actingPrincipal } : {}
14468
+ }
14469
+ );
13171
14470
  return result.ok ? { ...result, stage: "promoted", report, receiptId: prepared.receiptId } : { ...result, stage: "admission", report, receiptId: prepared.receiptId };
13172
14471
  }
13173
14472
  function restorePreviousPreflighted(eng2, ws, domain, currentHash, opts = {}) {
@@ -13215,10 +14514,16 @@ function restorePreviousPreflighted(eng2, ws, domain, currentHash, opts = {}) {
13215
14514
  const prepared = prepareManagedRestoration(report, currentHash, priorHash, domain, opts);
13216
14515
  if (!prepared.ok) return prepared;
13217
14516
  const { acceptanceReason: _acceptance, ...authorOpts } = opts;
13218
- const result = author(eng2, ws, "nomos", "rollbackDomain", prepared.payload, eng2.hashes.nomos, {
13219
- ...authorOpts,
13220
- ...actingPrincipal ? { actor: actingPrincipal } : {}
13221
- });
14517
+ const result = authorOperatorCall(
14518
+ eng2,
14519
+ ws,
14520
+ rollbackDomainCall(ws, prepared.payload),
14521
+ requireCurrentControllerLawHash(eng2, ws),
14522
+ {
14523
+ ...authorOpts,
14524
+ ...actingPrincipal ? { actor: actingPrincipal } : {}
14525
+ }
14526
+ );
13222
14527
  return result.ok ? { ...result, stage: "restored", report, receiptId: prepared.receiptId } : { ...result, stage: "admission", report, receiptId: prepared.receiptId };
13223
14528
  }
13224
14529
  async function rebirthCompact(eng2, ws, ledger, { reason = "", supersededAt = 0, parent = "" } = {}) {
@@ -13272,13 +14577,14 @@ async function rebirthCompact(eng2, ws, ledger, { reason = "", supersededAt = 0,
13272
14577
  }
13273
14578
  let foundation;
13274
14579
  try {
13275
- foundation = author(
14580
+ foundation = authorOperatorCall(
13276
14581
  eng2,
13277
14582
  incWs,
13278
- "nomos",
13279
- "installDomain",
13280
- closureInstallPayload(lifecycle.targetClosureIdentity, lifecycle.installedBy),
13281
- eng2.hashes.nomos,
14583
+ installDomainCall(
14584
+ incWs,
14585
+ closureInstallPayload(lifecycle.targetClosureIdentity, lifecycle.installedBy)
14586
+ ),
14587
+ requireCurrentControllerLawHash(eng2, incWs),
13282
14588
  {
13283
14589
  candidateCommit: c.oid,
13284
14590
  deferProjection: false,
@@ -13572,7 +14878,7 @@ async function deleteRefusedRef(eng2, ws, ledger, offerId) {
13572
14878
  }
13573
14879
  return ref;
13574
14880
  }
13575
- async function emitOutbox(eng2, ws, ledger) {
14881
+ async function emitOutbox(eng2, ws, ledger, workspaceEffectBase = "", admissionCheckpointSecret) {
13576
14882
  const outbox = outboundOffers(eng2, ws);
13577
14883
  const nextDueAtMillis = outbox.nextDueAtMillis === void 0 ? void 0 : Number(outbox.nextDueAtMillis);
13578
14884
  if (outbox.offers.length === 0) {
@@ -13583,24 +14889,90 @@ async function emitOutbox(eng2, ws, ledger) {
13583
14889
  let errors = 0;
13584
14890
  for (const offer of outbox.offers) {
13585
14891
  try {
13586
- const res = await fetch(offer.destination, {
13587
- method: "POST",
13588
- headers: {
13589
- "content-type": offer.contentType,
13590
- "x-nomos-offer-id": offer.id,
13591
- "x-nomos-obligation-id": offer.obligationId,
13592
- "x-nomos-source-workspace": offer.sourceWorkspace,
13593
- "x-nomos-custody-head": offer.custodyHead
13594
- },
13595
- // Fetch's DOM typing requires an ArrayBuffer-backed body; this copies opaque bytes without
13596
- // decoding or re-authoring them. The receiving kernel sees the exact sealed USDA payload.
13597
- body: Uint8Array.from(offer.sealedOffer).buffer,
13598
- signal: AbortSignal.timeout(3e4)
13599
- });
13600
- if (!res.ok) {
13601
- errors++;
13602
- log("outbox-deliver-non2xx", { ws, offerId: offer.id, destination: offer.destination, status: res.status });
13603
- continue;
14892
+ switch (offer.route.case) {
14893
+ case "httpsRoute": {
14894
+ const destination = offer.route.value.url;
14895
+ const res = await fetch(destination, {
14896
+ method: "POST",
14897
+ headers: {
14898
+ "content-type": offer.contentType,
14899
+ "x-nomos-offer-id": offer.id,
14900
+ "x-nomos-obligation-id": offer.obligationId,
14901
+ "x-nomos-source-workspace": offer.sourceWorkspace,
14902
+ "x-nomos-custody-head": offer.custodyHead
14903
+ },
14904
+ // Fetch's DOM typing requires an ArrayBuffer-backed body; this copies opaque bytes without
14905
+ // decoding or re-authoring them. The receiving kernel sees the exact sealed USDA payload.
14906
+ body: Uint8Array.from(offer.sealedOffer).buffer,
14907
+ signal: AbortSignal.timeout(3e4)
14908
+ });
14909
+ if (!res.ok) {
14910
+ throw new Error(`HTTPS capability returned ${res.status}`);
14911
+ }
14912
+ break;
14913
+ }
14914
+ case "workspaceRoute": {
14915
+ const targetWorkspace = offer.route.value.workspace;
14916
+ const request = create(ApplyWorkspaceEffectRequestSchema, {
14917
+ source: protoTarget(ws),
14918
+ sourceCommit: offer.sourceCommit,
14919
+ sourceOfferPath: offer.sourceOfferPath,
14920
+ target: protoTarget(targetWorkspace),
14921
+ sourceEvidencePack: offer.sourceEvidencePack
14922
+ });
14923
+ const response = workspaceEffectBase ? fromBinary(
14924
+ ApplyWorkspaceEffectResponseSchema,
14925
+ new Uint8Array(await (async () => {
14926
+ const remote = await fetch(
14927
+ `${workspaceEffectBase.replace(/\/+$/, "")}/v2/workspaces/${encodeURIComponent(targetWorkspace)}/workspace-effect`,
14928
+ {
14929
+ method: "POST",
14930
+ headers: { "content-type": "application/vnd.nomos.workspace-effect+protobuf" },
14931
+ body: toBinary(ApplyWorkspaceEffectRequestSchema, request),
14932
+ signal: AbortSignal.timeout(3e4)
14933
+ }
14934
+ );
14935
+ if (!remote.ok) throw new Error(`workspace-effect receiver returned ${remote.status}: ${(await remote.text()).slice(0, 200)}`);
14936
+ return remote.arrayBuffer();
14937
+ })())
14938
+ ) : (() => {
14939
+ if (admissionCheckpointSecret?.byteLength !== 32) {
14940
+ throw new Error("local target admission checkpoint credential is missing or malformed");
14941
+ }
14942
+ request.admissionCheckpointSecret = admissionCheckpointSecret;
14943
+ const local = callProto(eng2.ex, {
14944
+ case: "applyWorkspaceEffect",
14945
+ value: request
14946
+ }, eng2.STDERR);
14947
+ if (local.outcome.case !== "applyWorkspaceEffect") {
14948
+ throw new Error(`kernel returned ${local.outcome.case || "empty"} for workspace effect`);
14949
+ }
14950
+ return local.outcome.value;
14951
+ })();
14952
+ const targetResult = response.result;
14953
+ if (!targetResult || targetResult.outcome.case !== "admitted") {
14954
+ const outcome = targetResult?.outcome.case || "empty";
14955
+ throw new Error(`target kernel ${outcome} the workspace effect`);
14956
+ }
14957
+ break;
14958
+ }
14959
+ case void 0: {
14960
+ if (!offer.destination) throw new Error("legacy outbound offer has no HTTPS destination");
14961
+ const res = await fetch(offer.destination, {
14962
+ method: "POST",
14963
+ headers: {
14964
+ "content-type": offer.contentType,
14965
+ "x-nomos-offer-id": offer.id,
14966
+ "x-nomos-obligation-id": offer.obligationId,
14967
+ "x-nomos-source-workspace": offer.sourceWorkspace,
14968
+ "x-nomos-custody-head": offer.custodyHead
14969
+ },
14970
+ body: Uint8Array.from(offer.sealedOffer).buffer,
14971
+ signal: AbortSignal.timeout(3e4)
14972
+ });
14973
+ if (!res.ok) throw new Error(`legacy HTTPS capability returned ${res.status}`);
14974
+ break;
14975
+ }
13604
14976
  }
13605
14977
  kgit.writeRef(eng2, gitdir, offer.deliveryRef, offer.custodyOid);
13606
14978
  try {
@@ -13611,7 +14983,8 @@ async function emitOutbox(eng2, ws, ledger) {
13611
14983
  delivered.push(offer.id);
13612
14984
  } catch (e) {
13613
14985
  errors++;
13614
- log("outbox-deliver-failed", { ws, offerId: offer.id, destination: offer.destination, error: String(e).slice(0, 200) });
14986
+ const destination = offer.route.case === "httpsRoute" ? offer.route.value.url : offer.route.case === "workspaceRoute" ? offer.route.value.workspace : offer.destination;
14987
+ log("outbox-deliver-failed", { ws, offerId: offer.id, destination, error: String(e).slice(0, 200) });
13615
14988
  }
13616
14989
  }
13617
14990
  if (delivered.length || errors) log("outbox", { ws, delivered: delivered.length, errors });
@@ -13627,7 +15000,14 @@ async function boot2(eng2, ws, ledger) {
13627
15000
  `unwarranted-workspace: '${ws}' is booted but its genesis never landed a GenesisWarrant \u2014 an era-0 workspace is born ONLY by its parent's warranted+attested birth. This is a host-authored/legacy orphan and will not serve (author its birth on its parent to bring it into the holarchy lawfully).`
13628
15001
  );
13629
15002
  }
13630
- return { status: "already-initialized", head: m.remoteMain ?? void 0, controllerHash: eng2.hashes.nomos, rows: qById(eng2, ws, `domain-installation:${eng2.hashes.nomos}`), mount: m };
15003
+ const controllerHash = requireCurrentControllerLawHash(eng2, ws);
15004
+ return {
15005
+ status: "already-initialized",
15006
+ head: m.remoteMain ?? void 0,
15007
+ controllerHash,
15008
+ rows: qById(eng2, ws, `domain-installation:${controllerHash}`),
15009
+ mount: m
15010
+ };
13631
15011
  }
13632
15012
  throw new Error(
13633
15013
  `unborn-workspace: '${ws}' has no genesis and the host does not create workspaces \u2014 author its birth on its PARENT (birthChild/birthHome/an estate .births()); the parent's offer-effect materializes it in custody, then it serves from here. (root self-adopts via _ensureRootGenesis; this is not that path.)`
@@ -13710,8 +15090,10 @@ function warmKernelCaches(eng2, opts = {}) {
13710
15090
  var HERE = dirname(fileURLToPath(import.meta.url));
13711
15091
  var KERNEL_REQUIREMENTS = typeof define_NOMOS_KERNEL_RELEASE_default === "undefined" ? [{ name: "nomos.kernel.v1", version: "1.0.0" }] : Object.entries(define_NOMOS_KERNEL_RELEASE_default.contracts).map(([name, version]) => ({ name, version }));
13712
15092
  var engineModule = process.env["NOMOS_ADAPTER_ENGINE"] ? await import(process.env["NOMOS_ADAPTER_ENGINE"]) : engine_exports;
15093
+ var lifecycleCallsModule = process.env["NOMOS_ADAPTER_LIFECYCLE_CALLS"] ? await import(process.env["NOMOS_ADAPTER_LIFECYCLE_CALLS"]) : lifecycle_calls_exports;
13713
15094
  var treeModule = process.env["NOMOS_ADAPTER_TREE"] ? await import(process.env["NOMOS_ADAPTER_TREE"]) : { serializeTree };
13714
- var { createEngine: createEngine2, mountWorkspace: mountWorkspace2, author: author2, closureInstallPayload: closureInstallPayload2, authorKeygen: authorKeygen2, refreshProjection: refreshProjection2, currentLaw: currentLaw2, exportCheckpoint: exportCheckpoint2, stageLawClosure: stageLawClosure2 } = engineModule;
15095
+ var { createEngine: createEngine2, mountWorkspace: mountWorkspace2, initializeWorkspace: initializeWorkspace2, authorOperatorCall: authorOperatorCall2, closureInstallPayload: closureInstallPayload2, authorKeygen: authorKeygen2, refreshProjection: refreshProjection2, currentLaw: currentLaw2, exportCheckpoint: exportCheckpoint2, stageLawClosure: stageLawClosure2 } = engineModule;
15096
+ var { installDomainCall: installDomainCall2 } = lifecycleCallsModule;
13715
15097
  var { serializeTree: serializeTree2 } = treeModule;
13716
15098
  var die = (msg) => {
13717
15099
  process.stderr.write(`offline-install: ${msg}
@@ -13768,18 +15150,7 @@ var requireAdmission = (what, verdict) => {
13768
15150
  if (result?.ok === true) return;
13769
15151
  die(`${what} was refused by the candidate kernel: ${String(result?.error ?? "no admission verdict")}`);
13770
15152
  };
13771
- requireAdmission(
13772
- "framework install",
13773
- guarded(() => author2(
13774
- eng,
13775
- workspace,
13776
- "bootstrap",
13777
- "installDomain",
13778
- closureInstallPayload2(eng.hashes.nomos, "nomos-test-harness"),
13779
- "",
13780
- { lawUsdz: eng.nomosLawUsdz, deferProjection: false, rngDraws: 8 }
13781
- ))
13782
- );
15153
+ guarded(() => initializeWorkspace2(eng, workspace, "nomos-test-harness"));
13783
15154
  var lawHashes = [];
13784
15155
  var expectedDomainLaw = /* @__PURE__ */ new Map();
13785
15156
  for (const p of lawPaths) {
@@ -13790,14 +15161,18 @@ for (const p of lawPaths) {
13790
15161
  if (!/^[0-9a-f]{64}$/.test(lawHash)) die(`kernel returned invalid law identity for ${p}`);
13791
15162
  requireAdmission(
13792
15163
  `application install from ${p}`,
13793
- guarded(() => author2(
15164
+ guarded(() => authorOperatorCall2(
13794
15165
  eng,
13795
15166
  workspace,
13796
- "nomos",
13797
- "installDomain",
13798
- closureInstallPayload2(lawHash, "nomos-test-harness"),
15167
+ installDomainCall2(
15168
+ workspace,
15169
+ closureInstallPayload2(lawHash, "nomos-test-harness")
15170
+ ),
13799
15171
  eng.hashes.nomos,
13800
- { lawUsdz, deferProjection: false, rngDraws: 8 }
15172
+ // Install every package into custody first, then perform one explicit projection refresh
15173
+ // below against the complete selected graph. Refreshing after each package both duplicated
15174
+ // work and briefly interpreted a deliberately incomplete application dependency set.
15175
+ { lawUsdz, deferProjection: true, rngDraws: 8 }
13801
15176
  ))
13802
15177
  );
13803
15178
  lawHashes.push(lawHash);