githolon 0.107.4 → 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.
@@ -467,86 +467,1251 @@ var init_managed_promotion = __esm({
467
467
  }
468
468
  });
469
469
 
470
+ // vendor/engine/generated/domain_bootstrap.operator.mjs
471
+ function _nmsCallUsda_bootstrap_installDomain(payload, nmsInternalWorkspace) {
472
+ const _nmsRoutingCandidates = [];
473
+ const out2 = [
474
+ "#usda 1.0",
475
+ "(",
476
+ ' defaultPrim = "Change"',
477
+ ")",
478
+ "",
479
+ 'def NomosChange "Change"',
480
+ "{",
481
+ " custom rel nomos:directive = </Nomos/Domains/d_c7835210310784d1/Intents/i_e1c3bae0bfc84298>",
482
+ "",
483
+ ' def NomosCall "Call"',
484
+ " {",
485
+ " custom rel nomos:contract = </Nomos/Domains/d_c7835210310784d1/Contracts/c_8ca67a115267b806>",
486
+ "",
487
+ ' def NomosRecordValue "Payload"',
488
+ " {",
489
+ " custom rel nomos:type = </Nomos/Domains/d_c7835210310784d1/Contracts/c_8ca67a115267b806>"
490
+ ];
491
+ const _payloadChildren0 = [];
492
+ {
493
+ const _out1 = _payloadChildren0;
494
+ _nmsRoutingCandidates.push(payload["installedBy"]);
495
+ _nmsUsdaBegin(_out1, 3, "NomosStringValue", "/Change/Call/Payload/f_28a9cce94405c516");
496
+ _nmsUsdaRel(_out1, 4, "nomos:field", "/Nomos/Domains/d_c7835210310784d1/Contracts/c_8ca67a115267b806/Fields/f_28a9cce94405c516");
497
+ _nmsUsdaRel(_out1, 4, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
498
+ _nmsUsdaString(_out1, 4, "string", "nomos:value", payload["installedBy"]);
499
+ _nmsUsdaClose(_out1, 3);
500
+ }
501
+ {
502
+ const _out2 = _payloadChildren0;
503
+ _nmsRoutingCandidates.push(payload["lawClosureIdentity"]);
504
+ _nmsUsdaBegin(_out2, 3, "NomosStringValue", "/Change/Call/Payload/f_2fee70506458fe3d");
505
+ _nmsUsdaRel(_out2, 4, "nomos:field", "/Nomos/Domains/d_c7835210310784d1/Contracts/c_8ca67a115267b806/Fields/f_2fee70506458fe3d");
506
+ _nmsUsdaRel(_out2, 4, "nomos:type", "/Nomos/Domains/d_c7835210310784d1/Types/t_0102ed3ff09dbe61");
507
+ _nmsUsdaString(_out2, 4, "string", "nomos:value", payload["lawClosureIdentity"]);
508
+ _nmsUsdaClose(_out2, 3);
509
+ }
510
+ if (payload["authorityScope"] !== void 0) {
511
+ const _optional3 = payload["authorityScope"];
512
+ {
513
+ const _out4 = _payloadChildren0;
514
+ {
515
+ const _out5 = _payloadChildren0;
516
+ _nmsRoutingCandidates.push(_optional3);
517
+ _nmsUsdaBegin(_out5, 3, "NomosStringValue", "/Change/Call/Payload/f_5e8eb1e0ff2cc489");
518
+ _nmsUsdaRel(_out5, 4, "nomos:field", "/Nomos/Domains/d_c7835210310784d1/Contracts/c_8ca67a115267b806/Fields/f_5e8eb1e0ff2cc489");
519
+ _nmsUsdaRel(_out5, 4, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
520
+ _nmsUsdaString(_out5, 4, "string", "nomos:value", _optional3);
521
+ _nmsUsdaClose(_out5, 3);
522
+ }
523
+ }
524
+ }
525
+ {
526
+ const _out6 = _payloadChildren0;
527
+ _nmsRoutingCandidates.push(payload["domainHash"]);
528
+ _nmsUsdaBegin(_out6, 3, "NomosStringValue", "/Change/Call/Payload/f_9e8f11531dc7caee");
529
+ _nmsUsdaRel(_out6, 4, "nomos:field", "/Nomos/Domains/d_c7835210310784d1/Contracts/c_8ca67a115267b806/Fields/f_9e8f11531dc7caee");
530
+ _nmsUsdaRel(_out6, 4, "nomos:type", "/Nomos/Domains/d_c7835210310784d1/Types/t_0102ed3ff09dbe61");
531
+ _nmsUsdaString(_out6, 4, "string", "nomos:value", payload["domainHash"]);
532
+ _nmsUsdaClose(_out6, 3);
533
+ }
534
+ if (payload["dependencies"] !== void 0) {
535
+ const _optional7 = payload["dependencies"];
536
+ {
537
+ const _out8 = _payloadChildren0;
538
+ _nmsUsdaBegin(_out8, 3, "NomosListValue", "/Change/Call/Payload/f_a5a0e42489a6fcbd");
539
+ _nmsUsdaRel(_out8, 4, "nomos:field", "/Nomos/Domains/d_c7835210310784d1/Contracts/c_8ca67a115267b806/Fields/f_a5a0e42489a6fcbd");
540
+ _nmsUsdaRel(_out8, 4, "nomos:type", "/Nomos/Domains/d_c7835210310784d1/Types/t_0e8d650bd2880938");
541
+ const _children9 = [];
542
+ for (let _index10 = 0; _index10 < _optional7.length; _index10++) {
543
+ {
544
+ const _out11 = _children9;
545
+ _nmsRoutingCandidates.push(_optional7[_index10]);
546
+ _nmsUsdaBegin(_out11, 4, "NomosStringValue", "/Change/Call/Payload/f_a5a0e42489a6fcbd/i_" + String(_index10).padStart(8, "0"));
547
+ _nmsUsdaRel(_out11, 5, "nomos:type", "/Nomos/Domains/d_c7835210310784d1/Types/t_0102ed3ff09dbe61");
548
+ _nmsUsdaString(_out11, 5, "string", "nomos:value", _optional7[_index10]);
549
+ _nmsUsdaClose(_out11, 4);
550
+ }
551
+ }
552
+ _nmsUsdaChildren(_out8, _children9);
553
+ _nmsUsdaClose(_out8, 3);
554
+ }
555
+ }
556
+ if (payload["finalizers"] !== void 0) {
557
+ const _optional12 = payload["finalizers"];
558
+ {
559
+ const _out13 = _payloadChildren0;
560
+ _nmsUsdaBegin(_out13, 3, "NomosListValue", "/Change/Call/Payload/f_c7c8d352a3a2e55e");
561
+ _nmsUsdaRel(_out13, 4, "nomos:field", "/Nomos/Domains/d_c7835210310784d1/Contracts/c_8ca67a115267b806/Fields/f_c7c8d352a3a2e55e");
562
+ _nmsUsdaRel(_out13, 4, "nomos:type", "/Nomos/Domains/d_c7835210310784d1/Types/t_0e8d650bd2880938");
563
+ const _children14 = [];
564
+ for (let _index15 = 0; _index15 < _optional12.length; _index15++) {
565
+ {
566
+ const _out16 = _children14;
567
+ _nmsRoutingCandidates.push(_optional12[_index15]);
568
+ _nmsUsdaBegin(_out16, 4, "NomosStringValue", "/Change/Call/Payload/f_c7c8d352a3a2e55e/i_" + String(_index15).padStart(8, "0"));
569
+ _nmsUsdaRel(_out16, 5, "nomos:type", "/Nomos/Domains/d_c7835210310784d1/Types/t_0102ed3ff09dbe61");
570
+ _nmsUsdaString(_out16, 5, "string", "nomos:value", _optional12[_index15]);
571
+ _nmsUsdaClose(_out16, 4);
572
+ }
573
+ }
574
+ _nmsUsdaChildren(_out13, _children14);
575
+ _nmsUsdaClose(_out13, 3);
576
+ }
577
+ }
578
+ _nmsUsdaChildren(out2, _payloadChildren0);
579
+ _nmsUsdaClose(out2, 2);
580
+ _nmsUsdaClose(out2, 1);
581
+ _nmsUsdaClose(out2, 0);
582
+ return _nmsGeneratedCall("bootstrap", "installDomain", _nmsUsdaUtf8(out2.join("\n") + "\n"), _nmsRoutingCandidates);
583
+ }
584
+ var _nmsGeneratedCall, _nmsUsdaUtf8, _nmsUsdaQuote, _nmsUsdaLine, _nmsUsdaBegin, _nmsUsdaRel, _nmsUsdaString, _nmsUsdaClose, _nmsUsdaChildren, sha256Digest, nomosOperatorCalls;
585
+ var init_domain_bootstrap_operator = __esm({
586
+ "vendor/engine/generated/domain_bootstrap.operator.mjs"() {
587
+ "use strict";
588
+ _nmsGeneratedCall = (domain, directive, canonicalUsda, routingCandidates) => ({ domain, directive, canonicalUsda, routingCandidates: [...new Set(routingCandidates)] });
589
+ _nmsUsdaUtf8 = (value) => {
590
+ const bytes = [];
591
+ for (let index = 0; index < value.length; index += 1) {
592
+ let point = value.charCodeAt(index);
593
+ if (point >= 55296 && point <= 56319 && index + 1 < value.length) {
594
+ const low = value.charCodeAt(index + 1);
595
+ if (low >= 56320 && low <= 57343) {
596
+ point = 65536 + (point - 55296 << 10) + (low - 56320);
597
+ index += 1;
598
+ }
599
+ }
600
+ if (point <= 127) bytes.push(point);
601
+ else if (point <= 2047) bytes.push(192 | point >> 6, 128 | point & 63);
602
+ else if (point <= 65535) bytes.push(224 | point >> 12, 128 | point >> 6 & 63, 128 | point & 63);
603
+ else bytes.push(240 | point >> 18, 128 | point >> 12 & 63, 128 | point >> 6 & 63, 128 | point & 63);
604
+ }
605
+ return Uint8Array.from(bytes);
606
+ };
607
+ _nmsUsdaQuote = (value) => {
608
+ let out2 = '"';
609
+ for (const character of value) {
610
+ const point = character.codePointAt(0);
611
+ if (character === '"') out2 += '\\"';
612
+ else if (character === "\\") out2 += "\\\\";
613
+ else if (character === "\n") out2 += "\\n";
614
+ else if (character === "\r") out2 += "\\r";
615
+ else if (character === " ") out2 += "\\t";
616
+ else if (character === "\b") out2 += "\\b";
617
+ else if (character === "\f") out2 += "\\f";
618
+ else if (point < 32 || point >= 127 && point <= 159) out2 += "\\u" + point.toString(16).padStart(4, "0");
619
+ else out2 += character;
620
+ }
621
+ return out2 + '"';
622
+ };
623
+ _nmsUsdaLine = (out2, depth, value) => {
624
+ out2.push(" ".repeat(depth) + value);
625
+ };
626
+ _nmsUsdaBegin = (out2, depth, type, path) => {
627
+ const name = path.slice(path.lastIndexOf("/") + 1);
628
+ _nmsUsdaLine(out2, depth, "def " + type + " " + _nmsUsdaQuote(name));
629
+ _nmsUsdaLine(out2, depth, "{");
630
+ };
631
+ _nmsUsdaRel = (out2, depth, name, target) => _nmsUsdaLine(out2, depth, "custom rel " + name + " = <" + target + ">");
632
+ _nmsUsdaString = (out2, depth, type, name, value) => _nmsUsdaLine(out2, depth, "custom uniform " + type + " " + name + " = " + _nmsUsdaQuote(value));
633
+ _nmsUsdaClose = (out2, depth) => _nmsUsdaLine(out2, depth, "}");
634
+ _nmsUsdaChildren = (out2, children) => {
635
+ if (children.length > 0) {
636
+ out2.push("");
637
+ out2.push(...children);
638
+ }
639
+ };
640
+ sha256Digest = (value) => {
641
+ if (!/^[0-9a-f]{64}$/.test(value)) throw new TypeError("expected a 64-character lowercase hexadecimal SHA-256 digest");
642
+ return value;
643
+ };
644
+ nomosOperatorCalls = {
645
+ installDomain(input) {
646
+ const { domain, workspace, ...payload } = input;
647
+ switch (domain) {
648
+ case "bootstrap":
649
+ return _nmsCallUsda_bootstrap_installDomain(payload, workspace);
650
+ default:
651
+ throw new Error("This law package has no 'installDomain' call in domain '" + domain + "'.");
652
+ }
653
+ }
654
+ };
655
+ }
656
+ });
657
+
658
+ // vendor/engine/generated/nomos.operator.mjs
659
+ function _nmsCallUsda_nomos_installDomain(payload, nmsInternalWorkspace) {
660
+ const _nmsRoutingCandidates = [];
661
+ const out2 = [
662
+ "#usda 1.0",
663
+ "(",
664
+ ' defaultPrim = "Change"',
665
+ ")",
666
+ "",
667
+ 'def NomosChange "Change"',
668
+ "{",
669
+ " custom rel nomos:directive = </Nomos/Domains/d_a0c452a9439bb87f/Intents/i_5c39a2e2d3e58351>",
670
+ "",
671
+ ' def NomosCall "Call"',
672
+ " {",
673
+ " custom rel nomos:contract = </Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_451b564e4c35465a>",
674
+ "",
675
+ ' def NomosRecordValue "Payload"',
676
+ " {",
677
+ " custom rel nomos:type = </Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_451b564e4c35465a>"
678
+ ];
679
+ const _payloadChildren0 = [];
680
+ if (payload["finalizers"] !== void 0) {
681
+ const _optional1 = payload["finalizers"];
682
+ {
683
+ const _out2 = _payloadChildren0;
684
+ _nmsUsdaBegin2(_out2, 3, "NomosListValue", "/Change/Call/Payload/f_05bb8d9567092cad");
685
+ _nmsUsdaRel2(_out2, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_451b564e4c35465a/Fields/f_05bb8d9567092cad");
686
+ _nmsUsdaRel2(_out2, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_8f49dab37fd06574");
687
+ const _children3 = [];
688
+ for (let _index4 = 0; _index4 < _optional1.length; _index4++) {
689
+ {
690
+ const _out5 = _children3;
691
+ _nmsRoutingCandidates.push(_optional1[_index4]);
692
+ _nmsUsdaBegin2(_out5, 4, "NomosStringValue", "/Change/Call/Payload/f_05bb8d9567092cad/i_" + String(_index4).padStart(8, "0"));
693
+ _nmsUsdaRel2(_out5, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
694
+ _nmsUsdaString2(_out5, 5, "string", "nomos:value", _optional1[_index4]);
695
+ _nmsUsdaClose2(_out5, 4);
696
+ }
697
+ }
698
+ _nmsUsdaChildren2(_out2, _children3);
699
+ _nmsUsdaClose2(_out2, 3);
700
+ }
701
+ }
702
+ {
703
+ const _out6 = _payloadChildren0;
704
+ _nmsRoutingCandidates.push(payload["installedBy"]);
705
+ _nmsUsdaBegin2(_out6, 3, "NomosStringValue", "/Change/Call/Payload/f_0958548a07a18849");
706
+ _nmsUsdaRel2(_out6, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_451b564e4c35465a/Fields/f_0958548a07a18849");
707
+ _nmsUsdaRel2(_out6, 4, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
708
+ _nmsUsdaString2(_out6, 4, "string", "nomos:value", payload["installedBy"]);
709
+ _nmsUsdaClose2(_out6, 3);
710
+ }
711
+ if (payload["dependencies"] !== void 0) {
712
+ const _optional7 = payload["dependencies"];
713
+ {
714
+ const _out8 = _payloadChildren0;
715
+ _nmsUsdaBegin2(_out8, 3, "NomosListValue", "/Change/Call/Payload/f_3b9973d06216a427");
716
+ _nmsUsdaRel2(_out8, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_451b564e4c35465a/Fields/f_3b9973d06216a427");
717
+ _nmsUsdaRel2(_out8, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_8f49dab37fd06574");
718
+ const _children9 = [];
719
+ for (let _index10 = 0; _index10 < _optional7.length; _index10++) {
720
+ {
721
+ const _out11 = _children9;
722
+ _nmsRoutingCandidates.push(_optional7[_index10]);
723
+ _nmsUsdaBegin2(_out11, 4, "NomosStringValue", "/Change/Call/Payload/f_3b9973d06216a427/i_" + String(_index10).padStart(8, "0"));
724
+ _nmsUsdaRel2(_out11, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
725
+ _nmsUsdaString2(_out11, 5, "string", "nomos:value", _optional7[_index10]);
726
+ _nmsUsdaClose2(_out11, 4);
727
+ }
728
+ }
729
+ _nmsUsdaChildren2(_out8, _children9);
730
+ _nmsUsdaClose2(_out8, 3);
731
+ }
732
+ }
733
+ {
734
+ const _out12 = _payloadChildren0;
735
+ _nmsRoutingCandidates.push(payload["lawClosureIdentity"]);
736
+ _nmsUsdaBegin2(_out12, 3, "NomosStringValue", "/Change/Call/Payload/f_3d0a30b32a3bf736");
737
+ _nmsUsdaRel2(_out12, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_451b564e4c35465a/Fields/f_3d0a30b32a3bf736");
738
+ _nmsUsdaRel2(_out12, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
739
+ _nmsUsdaString2(_out12, 4, "string", "nomos:value", payload["lawClosureIdentity"]);
740
+ _nmsUsdaClose2(_out12, 3);
741
+ }
742
+ if (payload["authorityScope"] !== void 0) {
743
+ const _optional13 = payload["authorityScope"];
744
+ {
745
+ const _out14 = _payloadChildren0;
746
+ {
747
+ const _out15 = _payloadChildren0;
748
+ _nmsRoutingCandidates.push(_optional13);
749
+ _nmsUsdaBegin2(_out15, 3, "NomosStringValue", "/Change/Call/Payload/f_8c175f0470bde233");
750
+ _nmsUsdaRel2(_out15, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_451b564e4c35465a/Fields/f_8c175f0470bde233");
751
+ _nmsUsdaRel2(_out15, 4, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
752
+ _nmsUsdaString2(_out15, 4, "string", "nomos:value", _optional13);
753
+ _nmsUsdaClose2(_out15, 3);
754
+ }
755
+ }
756
+ }
757
+ {
758
+ const _out16 = _payloadChildren0;
759
+ _nmsRoutingCandidates.push(payload["domainHash"]);
760
+ _nmsUsdaBegin2(_out16, 3, "NomosStringValue", "/Change/Call/Payload/f_ecdc06bc9b8ae826");
761
+ _nmsUsdaRel2(_out16, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_451b564e4c35465a/Fields/f_ecdc06bc9b8ae826");
762
+ _nmsUsdaRel2(_out16, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
763
+ _nmsUsdaString2(_out16, 4, "string", "nomos:value", payload["domainHash"]);
764
+ _nmsUsdaClose2(_out16, 3);
765
+ }
766
+ _nmsUsdaChildren2(out2, _payloadChildren0);
767
+ _nmsUsdaClose2(out2, 2);
768
+ _nmsUsdaClose2(out2, 1);
769
+ _nmsUsdaClose2(out2, 0);
770
+ return _nmsGeneratedCall2("nomos", "installDomain", _nmsUsdaUtf82(out2.join("\n") + "\n"), _nmsRoutingCandidates);
771
+ }
772
+ function _nmsCallUsda_nomos_stageDomain(payload, nmsInternalWorkspace) {
773
+ const _nmsRoutingCandidates = [];
774
+ const out2 = [
775
+ "#usda 1.0",
776
+ "(",
777
+ ' defaultPrim = "Change"',
778
+ ")",
779
+ "",
780
+ 'def NomosChange "Change"',
781
+ "{",
782
+ " custom rel nomos:directive = </Nomos/Domains/d_a0c452a9439bb87f/Intents/i_d1e20244ccbcde0e>",
783
+ "",
784
+ ' def NomosCall "Call"',
785
+ " {",
786
+ " custom rel nomos:contract = </Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_29921c75db70745b>",
787
+ "",
788
+ ' def NomosRecordValue "Payload"',
789
+ " {",
790
+ " custom rel nomos:type = </Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_29921c75db70745b>"
791
+ ];
792
+ const _payloadChildren0 = [];
793
+ if (payload["supersedes"] !== void 0) {
794
+ const _optional1 = payload["supersedes"];
795
+ {
796
+ const _out2 = _payloadChildren0;
797
+ _nmsRoutingCandidates.push(_optional1);
798
+ _nmsUsdaBegin2(_out2, 3, "NomosStringValue", "/Change/Call/Payload/f_7299aada560ca0fe");
799
+ _nmsUsdaRel2(_out2, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_29921c75db70745b/Fields/f_7299aada560ca0fe");
800
+ _nmsUsdaRel2(_out2, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
801
+ _nmsUsdaString2(_out2, 4, "string", "nomos:value", _optional1);
802
+ _nmsUsdaClose2(_out2, 3);
803
+ }
804
+ }
805
+ {
806
+ const _out3 = _payloadChildren0;
807
+ _nmsRoutingCandidates.push(payload["installedBy"]);
808
+ _nmsUsdaBegin2(_out3, 3, "NomosStringValue", "/Change/Call/Payload/f_8ae27ff159721deb");
809
+ _nmsUsdaRel2(_out3, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_29921c75db70745b/Fields/f_8ae27ff159721deb");
810
+ _nmsUsdaRel2(_out3, 4, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
811
+ _nmsUsdaString2(_out3, 4, "string", "nomos:value", payload["installedBy"]);
812
+ _nmsUsdaClose2(_out3, 3);
813
+ }
814
+ {
815
+ const _out4 = _payloadChildren0;
816
+ _nmsRoutingCandidates.push(payload["domainHash"]);
817
+ _nmsUsdaBegin2(_out4, 3, "NomosStringValue", "/Change/Call/Payload/f_8fa1bfa0d6235238");
818
+ _nmsUsdaRel2(_out4, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_29921c75db70745b/Fields/f_8fa1bfa0d6235238");
819
+ _nmsUsdaRel2(_out4, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
820
+ _nmsUsdaString2(_out4, 4, "string", "nomos:value", payload["domainHash"]);
821
+ _nmsUsdaClose2(_out4, 3);
822
+ }
823
+ if (payload["dependencies"] !== void 0) {
824
+ const _optional5 = payload["dependencies"];
825
+ {
826
+ const _out6 = _payloadChildren0;
827
+ _nmsUsdaBegin2(_out6, 3, "NomosListValue", "/Change/Call/Payload/f_90c6d0512feef3c5");
828
+ _nmsUsdaRel2(_out6, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_29921c75db70745b/Fields/f_90c6d0512feef3c5");
829
+ _nmsUsdaRel2(_out6, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_8f49dab37fd06574");
830
+ const _children7 = [];
831
+ for (let _index8 = 0; _index8 < _optional5.length; _index8++) {
832
+ {
833
+ const _out9 = _children7;
834
+ _nmsRoutingCandidates.push(_optional5[_index8]);
835
+ _nmsUsdaBegin2(_out9, 4, "NomosStringValue", "/Change/Call/Payload/f_90c6d0512feef3c5/i_" + String(_index8).padStart(8, "0"));
836
+ _nmsUsdaRel2(_out9, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
837
+ _nmsUsdaString2(_out9, 5, "string", "nomos:value", _optional5[_index8]);
838
+ _nmsUsdaClose2(_out9, 4);
839
+ }
840
+ }
841
+ _nmsUsdaChildren2(_out6, _children7);
842
+ _nmsUsdaClose2(_out6, 3);
843
+ }
844
+ }
845
+ if (payload["authorityScope"] !== void 0) {
846
+ const _optional10 = payload["authorityScope"];
847
+ {
848
+ const _out11 = _payloadChildren0;
849
+ {
850
+ const _out12 = _payloadChildren0;
851
+ _nmsRoutingCandidates.push(_optional10);
852
+ _nmsUsdaBegin2(_out12, 3, "NomosStringValue", "/Change/Call/Payload/f_973daecb96bc05df");
853
+ _nmsUsdaRel2(_out12, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_29921c75db70745b/Fields/f_973daecb96bc05df");
854
+ _nmsUsdaRel2(_out12, 4, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
855
+ _nmsUsdaString2(_out12, 4, "string", "nomos:value", _optional10);
856
+ _nmsUsdaClose2(_out12, 3);
857
+ }
858
+ }
859
+ }
860
+ {
861
+ const _out13 = _payloadChildren0;
862
+ _nmsRoutingCandidates.push(payload["lawClosureIdentity"]);
863
+ _nmsUsdaBegin2(_out13, 3, "NomosStringValue", "/Change/Call/Payload/f_b89e206d03838b3f");
864
+ _nmsUsdaRel2(_out13, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_29921c75db70745b/Fields/f_b89e206d03838b3f");
865
+ _nmsUsdaRel2(_out13, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
866
+ _nmsUsdaString2(_out13, 4, "string", "nomos:value", payload["lawClosureIdentity"]);
867
+ _nmsUsdaClose2(_out13, 3);
868
+ }
869
+ if (payload["finalizers"] !== void 0) {
870
+ const _optional14 = payload["finalizers"];
871
+ {
872
+ const _out15 = _payloadChildren0;
873
+ _nmsUsdaBegin2(_out15, 3, "NomosListValue", "/Change/Call/Payload/f_ba5c0ccfec7ef978");
874
+ _nmsUsdaRel2(_out15, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_29921c75db70745b/Fields/f_ba5c0ccfec7ef978");
875
+ _nmsUsdaRel2(_out15, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_8f49dab37fd06574");
876
+ const _children16 = [];
877
+ for (let _index17 = 0; _index17 < _optional14.length; _index17++) {
878
+ {
879
+ const _out18 = _children16;
880
+ _nmsRoutingCandidates.push(_optional14[_index17]);
881
+ _nmsUsdaBegin2(_out18, 4, "NomosStringValue", "/Change/Call/Payload/f_ba5c0ccfec7ef978/i_" + String(_index17).padStart(8, "0"));
882
+ _nmsUsdaRel2(_out18, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
883
+ _nmsUsdaString2(_out18, 5, "string", "nomos:value", _optional14[_index17]);
884
+ _nmsUsdaClose2(_out18, 4);
885
+ }
886
+ }
887
+ _nmsUsdaChildren2(_out15, _children16);
888
+ _nmsUsdaClose2(_out15, 3);
889
+ }
890
+ }
891
+ _nmsUsdaChildren2(out2, _payloadChildren0);
892
+ _nmsUsdaClose2(out2, 2);
893
+ _nmsUsdaClose2(out2, 1);
894
+ _nmsUsdaClose2(out2, 0);
895
+ return _nmsGeneratedCall2("nomos", "stageDomain", _nmsUsdaUtf82(out2.join("\n") + "\n"), _nmsRoutingCandidates);
896
+ }
897
+ function _nmsCallUsda_nomos_promoteDomain(payload, nmsInternalWorkspace) {
898
+ const _nmsRoutingCandidates = [];
899
+ const out2 = [
900
+ "#usda 1.0",
901
+ "(",
902
+ ' defaultPrim = "Change"',
903
+ ")",
904
+ "",
905
+ 'def NomosChange "Change"',
906
+ "{",
907
+ " custom rel nomos:directive = </Nomos/Domains/d_a0c452a9439bb87f/Intents/i_19fadc014ad1a29f>",
908
+ "",
909
+ ' def NomosCall "Call"',
910
+ " {",
911
+ " custom rel nomos:contract = </Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_bfad0dec92aee2f1>",
912
+ "",
913
+ ' def NomosRecordValue "Payload"',
914
+ " {",
915
+ " custom rel nomos:type = </Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_bfad0dec92aee2f1>"
916
+ ];
917
+ const _payloadChildren0 = [];
918
+ {
919
+ const _out1 = _payloadChildren0;
920
+ _nmsUsdaBegin2(_out1, 3, "NomosRecordValue", "/Change/Call/Payload/f_2b09f552be69963e");
921
+ _nmsUsdaRel2(_out1, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_bfad0dec92aee2f1/Fields/f_2b09f552be69963e");
922
+ _nmsUsdaRel2(_out1, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce");
923
+ const _children2 = [];
924
+ {
925
+ const _out3 = _children2;
926
+ _nmsRoutingCandidates.push(payload["preflight"]["atHash"]);
927
+ _nmsUsdaBegin2(_out3, 4, "NomosStringValue", "/Change/Call/Payload/f_2b09f552be69963e/f_bcd35c7741e77072");
928
+ _nmsUsdaRel2(_out3, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_bcd35c7741e77072");
929
+ _nmsUsdaRel2(_out3, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_2cb4f34cab8c95cb");
930
+ _nmsUsdaString2(_out3, 5, "string", "nomos:value", payload["preflight"]["atHash"]);
931
+ _nmsUsdaClose2(_out3, 4);
932
+ }
933
+ {
934
+ const _out4 = _children2;
935
+ _nmsUsdaBegin2(_out4, 4, "NomosBoolValue", "/Change/Call/Payload/f_2b09f552be69963e/f_7dc8402a5b449a87");
936
+ _nmsUsdaRel2(_out4, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_7dc8402a5b449a87");
937
+ _nmsUsdaRel2(_out4, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_7e69f1a92bd07181");
938
+ _nmsUsdaScalar(_out4, 5, "bool", "nomos:value", "true");
939
+ _nmsUsdaClose2(_out4, 4);
940
+ }
941
+ {
942
+ const _out5 = _children2;
943
+ _nmsRoutingCandidates.push(payload["preflight"]["atStateRoot"]);
944
+ _nmsUsdaBegin2(_out5, 4, "NomosStringValue", "/Change/Call/Payload/f_2b09f552be69963e/f_2e3db9abeea3b26d");
945
+ _nmsUsdaRel2(_out5, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_2e3db9abeea3b26d");
946
+ _nmsUsdaRel2(_out5, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_2cb4f34cab8c95cb");
947
+ _nmsUsdaString2(_out5, 5, "string", "nomos:value", payload["preflight"]["atStateRoot"]);
948
+ _nmsUsdaClose2(_out5, 4);
949
+ }
950
+ {
951
+ const _out6 = _children2;
952
+ _nmsRoutingCandidates.push(payload["preflight"]["domain"]);
953
+ _nmsUsdaBegin2(_out6, 4, "NomosStringValue", "/Change/Call/Payload/f_2b09f552be69963e/f_d9e172710a2c05dd");
954
+ _nmsUsdaRel2(_out6, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_d9e172710a2c05dd");
955
+ _nmsUsdaRel2(_out6, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_1f5af3cc2413c969");
956
+ _nmsUsdaString2(_out6, 5, "string", "nomos:value", payload["preflight"]["domain"]);
957
+ _nmsUsdaClose2(_out6, 4);
958
+ }
959
+ const _optional7 = payload["preflight"]["acceptanceReason"];
960
+ if (_optional7 !== void 0) {
961
+ {
962
+ const _out8 = _children2;
963
+ _nmsRoutingCandidates.push(_optional7);
964
+ _nmsUsdaBegin2(_out8, 4, "NomosStringValue", "/Change/Call/Payload/f_2b09f552be69963e/f_c35bafa9ae6c1ea6");
965
+ _nmsUsdaRel2(_out8, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_c35bafa9ae6c1ea6");
966
+ _nmsUsdaRel2(_out8, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_1f5af3cc2413c969");
967
+ _nmsUsdaString2(_out8, 5, "string", "nomos:value", _optional7);
968
+ _nmsUsdaClose2(_out8, 4);
969
+ }
970
+ }
971
+ {
972
+ const _out9 = _children2;
973
+ _nmsRoutingCandidates.push(payload["preflight"]["candidateHash"]);
974
+ _nmsUsdaBegin2(_out9, 4, "NomosStringValue", "/Change/Call/Payload/f_2b09f552be69963e/f_a45372ee1ddb7298");
975
+ _nmsUsdaRel2(_out9, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_a45372ee1ddb7298");
976
+ _nmsUsdaRel2(_out9, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
977
+ _nmsUsdaString2(_out9, 5, "string", "nomos:value", payload["preflight"]["candidateHash"]);
978
+ _nmsUsdaClose2(_out9, 4);
979
+ }
980
+ _nmsUsdaChildren2(_out1, _children2);
981
+ _nmsUsdaClose2(_out1, 3);
982
+ }
983
+ if (payload["replaces"] !== void 0) {
984
+ const _optional10 = payload["replaces"];
985
+ {
986
+ const _out11 = _payloadChildren0;
987
+ _nmsRoutingCandidates.push(_optional10);
988
+ _nmsUsdaBegin2(_out11, 3, "NomosStringValue", "/Change/Call/Payload/f_2cbeb64696e8e239");
989
+ _nmsUsdaRel2(_out11, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_bfad0dec92aee2f1/Fields/f_2cbeb64696e8e239");
990
+ _nmsUsdaRel2(_out11, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
991
+ _nmsUsdaString2(_out11, 4, "string", "nomos:value", _optional10);
992
+ _nmsUsdaClose2(_out11, 3);
993
+ }
994
+ }
995
+ if (payload["dispositions"] !== void 0) {
996
+ const _optional12 = payload["dispositions"];
997
+ {
998
+ const _out13 = _payloadChildren0;
999
+ _nmsUsdaBegin2(_out13, 3, "NomosRecordValue", "/Change/Call/Payload/f_71c39cf1862f933f");
1000
+ _nmsUsdaRel2(_out13, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_bfad0dec92aee2f1/Fields/f_71c39cf1862f933f");
1001
+ _nmsUsdaRel2(_out13, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a");
1002
+ const _children14 = [];
1003
+ const _optional15 = _optional12["ackBy"];
1004
+ if (_optional15 !== void 0) {
1005
+ {
1006
+ const _out16 = _children14;
1007
+ _nmsRoutingCandidates.push(_optional15);
1008
+ _nmsUsdaBegin2(_out16, 4, "NomosStringValue", "/Change/Call/Payload/f_71c39cf1862f933f/f_1e5bbaa9f06e7ee0");
1009
+ _nmsUsdaRel2(_out16, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a/Fields/f_1e5bbaa9f06e7ee0");
1010
+ _nmsUsdaRel2(_out16, 5, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
1011
+ _nmsUsdaString2(_out16, 5, "string", "nomos:value", _optional15);
1012
+ _nmsUsdaClose2(_out16, 4);
1013
+ }
1014
+ }
1015
+ const _optional17 = _optional12["rebinds"];
1016
+ if (_optional17 !== void 0) {
1017
+ {
1018
+ const _out18 = _children14;
1019
+ _nmsUsdaBegin2(_out18, 4, "NomosMapValue", "/Change/Call/Payload/f_71c39cf1862f933f/f_b01f60d0e2740d56");
1020
+ _nmsUsdaRel2(_out18, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a/Fields/f_b01f60d0e2740d56");
1021
+ _nmsUsdaRel2(_out18, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_045984fbf3b46411");
1022
+ const _children19 = [];
1023
+ const _entries20 = Object.entries(_optional17).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0);
1024
+ for (let _index21 = 0; _index21 < _entries20.length; _index21++) {
1025
+ const [_key22, _value23] = _entries20[_index21];
1026
+ _nmsRoutingCandidates.push(_key22);
1027
+ const _entryPath24 = "/Change/Call/Payload/f_71c39cf1862f933f/f_b01f60d0e2740d56/e_" + String(_index21).padStart(8, "0");
1028
+ _nmsUsdaBegin2(_children19, 5, "NomosMapEntry", _entryPath24);
1029
+ _nmsUsdaString2(_children19, 6, "string", "nomos:key", _key22);
1030
+ if (7 > 0) _children19.push("");
1031
+ {
1032
+ const _out25 = _children19;
1033
+ _nmsRoutingCandidates.push(_value23);
1034
+ _nmsUsdaBegin2(_out25, 6, "NomosStringValue", _entryPath24 + "/Value");
1035
+ _nmsUsdaRel2(_out25, 7, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
1036
+ _nmsUsdaString2(_out25, 7, "string", "nomos:value", _value23);
1037
+ _nmsUsdaClose2(_out25, 6);
1038
+ }
1039
+ _nmsUsdaClose2(_children19, 5);
1040
+ }
1041
+ _nmsUsdaChildren2(_out18, _children19);
1042
+ _nmsUsdaClose2(_out18, 4);
1043
+ }
1044
+ }
1045
+ const _optional26 = _optional12["retired"];
1046
+ if (_optional26 !== void 0) {
1047
+ {
1048
+ const _out27 = _children14;
1049
+ _nmsUsdaBegin2(_out27, 4, "NomosListValue", "/Change/Call/Payload/f_71c39cf1862f933f/f_cb7f3511be108b94");
1050
+ _nmsUsdaRel2(_out27, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a/Fields/f_cb7f3511be108b94");
1051
+ _nmsUsdaRel2(_out27, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_4ac964a743207b02");
1052
+ const _children28 = [];
1053
+ for (let _index29 = 0; _index29 < _optional26.length; _index29++) {
1054
+ {
1055
+ const _out30 = _children28;
1056
+ _nmsRoutingCandidates.push(_optional26[_index29]);
1057
+ _nmsUsdaBegin2(_out30, 5, "NomosStringValue", "/Change/Call/Payload/f_71c39cf1862f933f/f_cb7f3511be108b94/i_" + String(_index29).padStart(8, "0"));
1058
+ _nmsUsdaRel2(_out30, 6, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
1059
+ _nmsUsdaString2(_out30, 6, "string", "nomos:value", _optional26[_index29]);
1060
+ _nmsUsdaClose2(_out30, 5);
1061
+ }
1062
+ }
1063
+ _nmsUsdaChildren2(_out27, _children28);
1064
+ _nmsUsdaClose2(_out27, 4);
1065
+ }
1066
+ }
1067
+ const _optional31 = _optional12["retyped"];
1068
+ if (_optional31 !== void 0) {
1069
+ {
1070
+ const _out32 = _children14;
1071
+ _nmsUsdaBegin2(_out32, 4, "NomosMapValue", "/Change/Call/Payload/f_71c39cf1862f933f/f_e22ae9fd11240338");
1072
+ _nmsUsdaRel2(_out32, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a/Fields/f_e22ae9fd11240338");
1073
+ _nmsUsdaRel2(_out32, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_045984fbf3b46411");
1074
+ const _children33 = [];
1075
+ const _entries34 = Object.entries(_optional31).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0);
1076
+ for (let _index35 = 0; _index35 < _entries34.length; _index35++) {
1077
+ const [_key36, _value37] = _entries34[_index35];
1078
+ _nmsRoutingCandidates.push(_key36);
1079
+ const _entryPath38 = "/Change/Call/Payload/f_71c39cf1862f933f/f_e22ae9fd11240338/e_" + String(_index35).padStart(8, "0");
1080
+ _nmsUsdaBegin2(_children33, 5, "NomosMapEntry", _entryPath38);
1081
+ _nmsUsdaString2(_children33, 6, "string", "nomos:key", _key36);
1082
+ if (7 > 0) _children33.push("");
1083
+ {
1084
+ const _out39 = _children33;
1085
+ _nmsRoutingCandidates.push(_value37);
1086
+ _nmsUsdaBegin2(_out39, 6, "NomosStringValue", _entryPath38 + "/Value");
1087
+ _nmsUsdaRel2(_out39, 7, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
1088
+ _nmsUsdaString2(_out39, 7, "string", "nomos:value", _value37);
1089
+ _nmsUsdaClose2(_out39, 6);
1090
+ }
1091
+ _nmsUsdaClose2(_children33, 5);
1092
+ }
1093
+ _nmsUsdaChildren2(_out32, _children33);
1094
+ _nmsUsdaClose2(_out32, 4);
1095
+ }
1096
+ }
1097
+ _nmsUsdaChildren2(_out13, _children14);
1098
+ _nmsUsdaClose2(_out13, 3);
1099
+ }
1100
+ }
1101
+ if (payload["retireReplaced"] !== void 0) {
1102
+ const _optional40 = payload["retireReplaced"];
1103
+ {
1104
+ const _out41 = _payloadChildren0;
1105
+ {
1106
+ const _out42 = _payloadChildren0;
1107
+ _nmsUsdaBegin2(_out42, 3, "NomosBoolValue", "/Change/Call/Payload/f_866a5da30aaeaa59");
1108
+ _nmsUsdaRel2(_out42, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_bfad0dec92aee2f1/Fields/f_866a5da30aaeaa59");
1109
+ _nmsUsdaRel2(_out42, 4, "nomos:type", "/Nomos/Framework/Types/t_0000000000000004");
1110
+ _nmsUsdaScalar(_out42, 4, "bool", "nomos:value", _optional40 ? "true" : "false");
1111
+ _nmsUsdaClose2(_out42, 3);
1112
+ }
1113
+ }
1114
+ }
1115
+ {
1116
+ const _out43 = _payloadChildren0;
1117
+ _nmsRoutingCandidates.push(payload["domainHash"]);
1118
+ _nmsUsdaBegin2(_out43, 3, "NomosStringValue", "/Change/Call/Payload/f_8f7ab82f65eec9b4");
1119
+ _nmsUsdaRel2(_out43, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_bfad0dec92aee2f1/Fields/f_8f7ab82f65eec9b4");
1120
+ _nmsUsdaRel2(_out43, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
1121
+ _nmsUsdaString2(_out43, 4, "string", "nomos:value", payload["domainHash"]);
1122
+ _nmsUsdaClose2(_out43, 3);
1123
+ }
1124
+ _nmsUsdaChildren2(out2, _payloadChildren0);
1125
+ _nmsUsdaClose2(out2, 2);
1126
+ _nmsUsdaClose2(out2, 1);
1127
+ _nmsUsdaClose2(out2, 0);
1128
+ return _nmsGeneratedCall2("nomos", "promoteDomain", _nmsUsdaUtf82(out2.join("\n") + "\n"), _nmsRoutingCandidates);
1129
+ }
1130
+ function _nmsCallUsda_nomos_rollbackDomain(payload, nmsInternalWorkspace) {
1131
+ const _nmsRoutingCandidates = [];
1132
+ const out2 = [
1133
+ "#usda 1.0",
1134
+ "(",
1135
+ ' defaultPrim = "Change"',
1136
+ ")",
1137
+ "",
1138
+ 'def NomosChange "Change"',
1139
+ "{",
1140
+ " custom rel nomos:directive = </Nomos/Domains/d_a0c452a9439bb87f/Intents/i_4425c0a08f105321>",
1141
+ "",
1142
+ ' def NomosCall "Call"',
1143
+ " {",
1144
+ " custom rel nomos:contract = </Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_2d8585a3a3734daa>",
1145
+ "",
1146
+ ' def NomosRecordValue "Payload"',
1147
+ " {",
1148
+ " custom rel nomos:type = </Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_2d8585a3a3734daa>"
1149
+ ];
1150
+ const _payloadChildren0 = [];
1151
+ {
1152
+ const _out1 = _payloadChildren0;
1153
+ _nmsUsdaBegin2(_out1, 3, "NomosRecordValue", "/Change/Call/Payload/f_143aee879824faff");
1154
+ _nmsUsdaRel2(_out1, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_2d8585a3a3734daa/Fields/f_143aee879824faff");
1155
+ _nmsUsdaRel2(_out1, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce");
1156
+ const _children2 = [];
1157
+ {
1158
+ const _out3 = _children2;
1159
+ _nmsRoutingCandidates.push(payload["preflight"]["atStateRoot"]);
1160
+ _nmsUsdaBegin2(_out3, 4, "NomosStringValue", "/Change/Call/Payload/f_143aee879824faff/f_2e3db9abeea3b26d");
1161
+ _nmsUsdaRel2(_out3, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_2e3db9abeea3b26d");
1162
+ _nmsUsdaRel2(_out3, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_2cb4f34cab8c95cb");
1163
+ _nmsUsdaString2(_out3, 5, "string", "nomos:value", payload["preflight"]["atStateRoot"]);
1164
+ _nmsUsdaClose2(_out3, 4);
1165
+ }
1166
+ {
1167
+ const _out4 = _children2;
1168
+ _nmsUsdaBegin2(_out4, 4, "NomosBoolValue", "/Change/Call/Payload/f_143aee879824faff/f_7dc8402a5b449a87");
1169
+ _nmsUsdaRel2(_out4, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_7dc8402a5b449a87");
1170
+ _nmsUsdaRel2(_out4, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_7e69f1a92bd07181");
1171
+ _nmsUsdaScalar(_out4, 5, "bool", "nomos:value", "true");
1172
+ _nmsUsdaClose2(_out4, 4);
1173
+ }
1174
+ {
1175
+ const _out5 = _children2;
1176
+ _nmsRoutingCandidates.push(payload["preflight"]["candidateHash"]);
1177
+ _nmsUsdaBegin2(_out5, 4, "NomosStringValue", "/Change/Call/Payload/f_143aee879824faff/f_a45372ee1ddb7298");
1178
+ _nmsUsdaRel2(_out5, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_a45372ee1ddb7298");
1179
+ _nmsUsdaRel2(_out5, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
1180
+ _nmsUsdaString2(_out5, 5, "string", "nomos:value", payload["preflight"]["candidateHash"]);
1181
+ _nmsUsdaClose2(_out5, 4);
1182
+ }
1183
+ {
1184
+ const _out6 = _children2;
1185
+ _nmsRoutingCandidates.push(payload["preflight"]["atHash"]);
1186
+ _nmsUsdaBegin2(_out6, 4, "NomosStringValue", "/Change/Call/Payload/f_143aee879824faff/f_bcd35c7741e77072");
1187
+ _nmsUsdaRel2(_out6, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_bcd35c7741e77072");
1188
+ _nmsUsdaRel2(_out6, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_2cb4f34cab8c95cb");
1189
+ _nmsUsdaString2(_out6, 5, "string", "nomos:value", payload["preflight"]["atHash"]);
1190
+ _nmsUsdaClose2(_out6, 4);
1191
+ }
1192
+ const _optional7 = payload["preflight"]["acceptanceReason"];
1193
+ if (_optional7 !== void 0) {
1194
+ {
1195
+ const _out8 = _children2;
1196
+ _nmsRoutingCandidates.push(_optional7);
1197
+ _nmsUsdaBegin2(_out8, 4, "NomosStringValue", "/Change/Call/Payload/f_143aee879824faff/f_c35bafa9ae6c1ea6");
1198
+ _nmsUsdaRel2(_out8, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_c35bafa9ae6c1ea6");
1199
+ _nmsUsdaRel2(_out8, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_1f5af3cc2413c969");
1200
+ _nmsUsdaString2(_out8, 5, "string", "nomos:value", _optional7);
1201
+ _nmsUsdaClose2(_out8, 4);
1202
+ }
1203
+ }
1204
+ {
1205
+ const _out9 = _children2;
1206
+ _nmsRoutingCandidates.push(payload["preflight"]["domain"]);
1207
+ _nmsUsdaBegin2(_out9, 4, "NomosStringValue", "/Change/Call/Payload/f_143aee879824faff/f_d9e172710a2c05dd");
1208
+ _nmsUsdaRel2(_out9, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_662d9d31828d00ce/Fields/f_d9e172710a2c05dd");
1209
+ _nmsUsdaRel2(_out9, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_1f5af3cc2413c969");
1210
+ _nmsUsdaString2(_out9, 5, "string", "nomos:value", payload["preflight"]["domain"]);
1211
+ _nmsUsdaClose2(_out9, 4);
1212
+ }
1213
+ _nmsUsdaChildren2(_out1, _children2);
1214
+ _nmsUsdaClose2(_out1, 3);
1215
+ }
1216
+ {
1217
+ const _out10 = _payloadChildren0;
1218
+ _nmsRoutingCandidates.push(payload["priorHash"]);
1219
+ _nmsUsdaBegin2(_out10, 3, "NomosStringValue", "/Change/Call/Payload/f_63bbe900a232095c");
1220
+ _nmsUsdaRel2(_out10, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_2d8585a3a3734daa/Fields/f_63bbe900a232095c");
1221
+ _nmsUsdaRel2(_out10, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
1222
+ _nmsUsdaString2(_out10, 4, "string", "nomos:value", payload["priorHash"]);
1223
+ _nmsUsdaClose2(_out10, 3);
1224
+ }
1225
+ {
1226
+ const _out11 = _payloadChildren0;
1227
+ _nmsRoutingCandidates.push(payload["candidateHash"]);
1228
+ _nmsUsdaBegin2(_out11, 3, "NomosStringValue", "/Change/Call/Payload/f_d10378a500b26e97");
1229
+ _nmsUsdaRel2(_out11, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_2d8585a3a3734daa/Fields/f_d10378a500b26e97");
1230
+ _nmsUsdaRel2(_out11, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_117946e676494f08");
1231
+ _nmsUsdaString2(_out11, 4, "string", "nomos:value", payload["candidateHash"]);
1232
+ _nmsUsdaClose2(_out11, 3);
1233
+ }
1234
+ if (payload["dispositions"] !== void 0) {
1235
+ const _optional12 = payload["dispositions"];
1236
+ {
1237
+ const _out13 = _payloadChildren0;
1238
+ _nmsUsdaBegin2(_out13, 3, "NomosRecordValue", "/Change/Call/Payload/f_e015910b0a119d84");
1239
+ _nmsUsdaRel2(_out13, 4, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Contracts/c_2d8585a3a3734daa/Fields/f_e015910b0a119d84");
1240
+ _nmsUsdaRel2(_out13, 4, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a");
1241
+ const _children14 = [];
1242
+ const _optional15 = _optional12["retyped"];
1243
+ if (_optional15 !== void 0) {
1244
+ {
1245
+ const _out16 = _children14;
1246
+ _nmsUsdaBegin2(_out16, 4, "NomosMapValue", "/Change/Call/Payload/f_e015910b0a119d84/f_e22ae9fd11240338");
1247
+ _nmsUsdaRel2(_out16, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a/Fields/f_e22ae9fd11240338");
1248
+ _nmsUsdaRel2(_out16, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_045984fbf3b46411");
1249
+ const _children17 = [];
1250
+ const _entries18 = Object.entries(_optional15).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0);
1251
+ for (let _index19 = 0; _index19 < _entries18.length; _index19++) {
1252
+ const [_key20, _value21] = _entries18[_index19];
1253
+ _nmsRoutingCandidates.push(_key20);
1254
+ const _entryPath22 = "/Change/Call/Payload/f_e015910b0a119d84/f_e22ae9fd11240338/e_" + String(_index19).padStart(8, "0");
1255
+ _nmsUsdaBegin2(_children17, 5, "NomosMapEntry", _entryPath22);
1256
+ _nmsUsdaString2(_children17, 6, "string", "nomos:key", _key20);
1257
+ if (7 > 0) _children17.push("");
1258
+ {
1259
+ const _out23 = _children17;
1260
+ _nmsRoutingCandidates.push(_value21);
1261
+ _nmsUsdaBegin2(_out23, 6, "NomosStringValue", _entryPath22 + "/Value");
1262
+ _nmsUsdaRel2(_out23, 7, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
1263
+ _nmsUsdaString2(_out23, 7, "string", "nomos:value", _value21);
1264
+ _nmsUsdaClose2(_out23, 6);
1265
+ }
1266
+ _nmsUsdaClose2(_children17, 5);
1267
+ }
1268
+ _nmsUsdaChildren2(_out16, _children17);
1269
+ _nmsUsdaClose2(_out16, 4);
1270
+ }
1271
+ }
1272
+ const _optional24 = _optional12["rebinds"];
1273
+ if (_optional24 !== void 0) {
1274
+ {
1275
+ const _out25 = _children14;
1276
+ _nmsUsdaBegin2(_out25, 4, "NomosMapValue", "/Change/Call/Payload/f_e015910b0a119d84/f_b01f60d0e2740d56");
1277
+ _nmsUsdaRel2(_out25, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a/Fields/f_b01f60d0e2740d56");
1278
+ _nmsUsdaRel2(_out25, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_045984fbf3b46411");
1279
+ const _children26 = [];
1280
+ const _entries27 = Object.entries(_optional24).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0);
1281
+ for (let _index28 = 0; _index28 < _entries27.length; _index28++) {
1282
+ const [_key29, _value30] = _entries27[_index28];
1283
+ _nmsRoutingCandidates.push(_key29);
1284
+ const _entryPath31 = "/Change/Call/Payload/f_e015910b0a119d84/f_b01f60d0e2740d56/e_" + String(_index28).padStart(8, "0");
1285
+ _nmsUsdaBegin2(_children26, 5, "NomosMapEntry", _entryPath31);
1286
+ _nmsUsdaString2(_children26, 6, "string", "nomos:key", _key29);
1287
+ if (7 > 0) _children26.push("");
1288
+ {
1289
+ const _out32 = _children26;
1290
+ _nmsRoutingCandidates.push(_value30);
1291
+ _nmsUsdaBegin2(_out32, 6, "NomosStringValue", _entryPath31 + "/Value");
1292
+ _nmsUsdaRel2(_out32, 7, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
1293
+ _nmsUsdaString2(_out32, 7, "string", "nomos:value", _value30);
1294
+ _nmsUsdaClose2(_out32, 6);
1295
+ }
1296
+ _nmsUsdaClose2(_children26, 5);
1297
+ }
1298
+ _nmsUsdaChildren2(_out25, _children26);
1299
+ _nmsUsdaClose2(_out25, 4);
1300
+ }
1301
+ }
1302
+ const _optional33 = _optional12["retired"];
1303
+ if (_optional33 !== void 0) {
1304
+ {
1305
+ const _out34 = _children14;
1306
+ _nmsUsdaBegin2(_out34, 4, "NomosListValue", "/Change/Call/Payload/f_e015910b0a119d84/f_cb7f3511be108b94");
1307
+ _nmsUsdaRel2(_out34, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a/Fields/f_cb7f3511be108b94");
1308
+ _nmsUsdaRel2(_out34, 5, "nomos:type", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_4ac964a743207b02");
1309
+ const _children35 = [];
1310
+ for (let _index36 = 0; _index36 < _optional33.length; _index36++) {
1311
+ {
1312
+ const _out37 = _children35;
1313
+ _nmsRoutingCandidates.push(_optional33[_index36]);
1314
+ _nmsUsdaBegin2(_out37, 5, "NomosStringValue", "/Change/Call/Payload/f_e015910b0a119d84/f_cb7f3511be108b94/i_" + String(_index36).padStart(8, "0"));
1315
+ _nmsUsdaRel2(_out37, 6, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
1316
+ _nmsUsdaString2(_out37, 6, "string", "nomos:value", _optional33[_index36]);
1317
+ _nmsUsdaClose2(_out37, 5);
1318
+ }
1319
+ }
1320
+ _nmsUsdaChildren2(_out34, _children35);
1321
+ _nmsUsdaClose2(_out34, 4);
1322
+ }
1323
+ }
1324
+ const _optional38 = _optional12["ackBy"];
1325
+ if (_optional38 !== void 0) {
1326
+ {
1327
+ const _out39 = _children14;
1328
+ _nmsRoutingCandidates.push(_optional38);
1329
+ _nmsUsdaBegin2(_out39, 4, "NomosStringValue", "/Change/Call/Payload/f_e015910b0a119d84/f_1e5bbaa9f06e7ee0");
1330
+ _nmsUsdaRel2(_out39, 5, "nomos:field", "/Nomos/Domains/d_a0c452a9439bb87f/Types/t_6f65f9b73ad7e27a/Fields/f_1e5bbaa9f06e7ee0");
1331
+ _nmsUsdaRel2(_out39, 5, "nomos:type", "/Nomos/Framework/Types/t_0000000000000001");
1332
+ _nmsUsdaString2(_out39, 5, "string", "nomos:value", _optional38);
1333
+ _nmsUsdaClose2(_out39, 4);
1334
+ }
1335
+ }
1336
+ _nmsUsdaChildren2(_out13, _children14);
1337
+ _nmsUsdaClose2(_out13, 3);
1338
+ }
1339
+ }
1340
+ _nmsUsdaChildren2(out2, _payloadChildren0);
1341
+ _nmsUsdaClose2(out2, 2);
1342
+ _nmsUsdaClose2(out2, 1);
1343
+ _nmsUsdaClose2(out2, 0);
1344
+ return _nmsGeneratedCall2("nomos", "rollbackDomain", _nmsUsdaUtf82(out2.join("\n") + "\n"), _nmsRoutingCandidates);
1345
+ }
1346
+ var _nmsGeneratedCall2, _nmsUsdaUtf82, _nmsUsdaQuote2, _nmsUsdaLine2, _nmsUsdaBegin2, _nmsUsdaRel2, _nmsUsdaString2, _nmsUsdaScalar, _nmsUsdaClose2, _nmsUsdaChildren2, sha256Digest2, gitObjectId, nomosOperatorCalls2;
1347
+ var init_nomos_operator = __esm({
1348
+ "vendor/engine/generated/nomos.operator.mjs"() {
1349
+ "use strict";
1350
+ _nmsGeneratedCall2 = (domain, directive, canonicalUsda, routingCandidates) => ({ domain, directive, canonicalUsda, routingCandidates: [...new Set(routingCandidates)] });
1351
+ _nmsUsdaUtf82 = (value) => {
1352
+ const bytes = [];
1353
+ for (let index = 0; index < value.length; index += 1) {
1354
+ let point = value.charCodeAt(index);
1355
+ if (point >= 55296 && point <= 56319 && index + 1 < value.length) {
1356
+ const low = value.charCodeAt(index + 1);
1357
+ if (low >= 56320 && low <= 57343) {
1358
+ point = 65536 + (point - 55296 << 10) + (low - 56320);
1359
+ index += 1;
1360
+ }
1361
+ }
1362
+ if (point <= 127) bytes.push(point);
1363
+ else if (point <= 2047) bytes.push(192 | point >> 6, 128 | point & 63);
1364
+ else if (point <= 65535) bytes.push(224 | point >> 12, 128 | point >> 6 & 63, 128 | point & 63);
1365
+ else bytes.push(240 | point >> 18, 128 | point >> 12 & 63, 128 | point >> 6 & 63, 128 | point & 63);
1366
+ }
1367
+ return Uint8Array.from(bytes);
1368
+ };
1369
+ _nmsUsdaQuote2 = (value) => {
1370
+ let out2 = '"';
1371
+ for (const character of value) {
1372
+ const point = character.codePointAt(0);
1373
+ if (character === '"') out2 += '\\"';
1374
+ else if (character === "\\") out2 += "\\\\";
1375
+ else if (character === "\n") out2 += "\\n";
1376
+ else if (character === "\r") out2 += "\\r";
1377
+ else if (character === " ") out2 += "\\t";
1378
+ else if (character === "\b") out2 += "\\b";
1379
+ else if (character === "\f") out2 += "\\f";
1380
+ else if (point < 32 || point >= 127 && point <= 159) out2 += "\\u" + point.toString(16).padStart(4, "0");
1381
+ else out2 += character;
1382
+ }
1383
+ return out2 + '"';
1384
+ };
1385
+ _nmsUsdaLine2 = (out2, depth, value) => {
1386
+ out2.push(" ".repeat(depth) + value);
1387
+ };
1388
+ _nmsUsdaBegin2 = (out2, depth, type, path) => {
1389
+ const name = path.slice(path.lastIndexOf("/") + 1);
1390
+ _nmsUsdaLine2(out2, depth, "def " + type + " " + _nmsUsdaQuote2(name));
1391
+ _nmsUsdaLine2(out2, depth, "{");
1392
+ };
1393
+ _nmsUsdaRel2 = (out2, depth, name, target) => _nmsUsdaLine2(out2, depth, "custom rel " + name + " = <" + target + ">");
1394
+ _nmsUsdaString2 = (out2, depth, type, name, value) => _nmsUsdaLine2(out2, depth, "custom uniform " + type + " " + name + " = " + _nmsUsdaQuote2(value));
1395
+ _nmsUsdaScalar = (out2, depth, type, name, value) => _nmsUsdaLine2(out2, depth, "custom uniform " + type + " " + name + " = " + value);
1396
+ _nmsUsdaClose2 = (out2, depth) => _nmsUsdaLine2(out2, depth, "}");
1397
+ _nmsUsdaChildren2 = (out2, children) => {
1398
+ if (children.length > 0) {
1399
+ out2.push("");
1400
+ out2.push(...children);
1401
+ }
1402
+ };
1403
+ sha256Digest2 = (value) => {
1404
+ if (!/^[0-9a-f]{64}$/.test(value)) throw new TypeError("expected a 64-character lowercase hexadecimal SHA-256 digest");
1405
+ return value;
1406
+ };
1407
+ gitObjectId = (value) => {
1408
+ if (!/^[0-9a-f]{40}$/.test(value)) throw new TypeError("expected a 40-character lowercase hexadecimal Git object id");
1409
+ return value;
1410
+ };
1411
+ nomosOperatorCalls2 = {
1412
+ installDomain(input) {
1413
+ const { domain, workspace, ...payload } = input;
1414
+ switch (domain) {
1415
+ case "nomos":
1416
+ return _nmsCallUsda_nomos_installDomain(payload, workspace);
1417
+ default:
1418
+ throw new Error("This law package has no 'installDomain' call in domain '" + domain + "'.");
1419
+ }
1420
+ },
1421
+ stageDomain(input) {
1422
+ const { domain, workspace, ...payload } = input;
1423
+ switch (domain) {
1424
+ case "nomos":
1425
+ return _nmsCallUsda_nomos_stageDomain(payload, workspace);
1426
+ default:
1427
+ throw new Error("This law package has no 'stageDomain' call in domain '" + domain + "'.");
1428
+ }
1429
+ },
1430
+ promoteDomain(input) {
1431
+ const { domain, workspace, ...payload } = input;
1432
+ switch (domain) {
1433
+ case "nomos":
1434
+ return _nmsCallUsda_nomos_promoteDomain(payload, workspace);
1435
+ default:
1436
+ throw new Error("This law package has no 'promoteDomain' call in domain '" + domain + "'.");
1437
+ }
1438
+ },
1439
+ rollbackDomain(input) {
1440
+ const { domain, workspace, ...payload } = input;
1441
+ switch (domain) {
1442
+ case "nomos":
1443
+ return _nmsCallUsda_nomos_rollbackDomain(payload, workspace);
1444
+ default:
1445
+ throw new Error("This law package has no 'rollbackDomain' call in domain '" + domain + "'.");
1446
+ }
1447
+ }
1448
+ };
1449
+ }
1450
+ });
1451
+
1452
+ // vendor/engine/lifecycle-calls.ts
1453
+ var lifecycle_calls_exports = {};
1454
+ __export(lifecycle_calls_exports, {
1455
+ bootstrapInstallCall: () => bootstrapInstallCall,
1456
+ installDomainCall: () => installDomainCall,
1457
+ promoteDomainCall: () => promoteDomainCall,
1458
+ rollbackDomainCall: () => rollbackDomainCall,
1459
+ stageDomainCall: () => stageDomainCall
1460
+ });
1461
+ function bootstrapInstallCall(workspace, payload) {
1462
+ return nomosOperatorCalls.installDomain({
1463
+ domain: "bootstrap",
1464
+ workspace,
1465
+ domainHash: sha256Digest(payload.domainHash),
1466
+ installedBy: payload.installedBy,
1467
+ lawClosureIdentity: sha256Digest(payload.lawClosureIdentity),
1468
+ ...payload.authorityScope === void 0 ? {} : { authorityScope: payload.authorityScope },
1469
+ ...payload.dependencies === void 0 ? {} : { dependencies: payload.dependencies.map(sha256Digest) },
1470
+ ...payload.finalizers === void 0 ? {} : { finalizers: payload.finalizers.map(sha256Digest) }
1471
+ });
1472
+ }
1473
+ function installDomainCall(workspace, payload) {
1474
+ return nomosOperatorCalls2.installDomain({
1475
+ domain: "nomos",
1476
+ workspace,
1477
+ domainHash: sha256Digest2(payload.domainHash),
1478
+ installedBy: payload.installedBy,
1479
+ lawClosureIdentity: sha256Digest2(payload.lawClosureIdentity),
1480
+ ...payload.authorityScope === void 0 ? {} : { authorityScope: payload.authorityScope },
1481
+ ...payload.dependencies === void 0 ? {} : { dependencies: digestList(payload.dependencies) },
1482
+ ...payload.finalizers === void 0 ? {} : { finalizers: digestList(payload.finalizers) }
1483
+ });
1484
+ }
1485
+ function stageDomainCall(workspace, payload) {
1486
+ return nomosOperatorCalls2.stageDomain({
1487
+ domain: "nomos",
1488
+ workspace,
1489
+ domainHash: sha256Digest2(payload.domainHash),
1490
+ installedBy: payload.installedBy,
1491
+ lawClosureIdentity: sha256Digest2(payload.lawClosureIdentity),
1492
+ ...payload.authorityScope === void 0 ? {} : { authorityScope: payload.authorityScope },
1493
+ ...payload.dependencies === void 0 ? {} : { dependencies: digestList(payload.dependencies) },
1494
+ ...payload.finalizers === void 0 ? {} : { finalizers: digestList(payload.finalizers) },
1495
+ ...payload.supersedes === void 0 ? {} : { supersedes: sha256Digest2(payload.supersedes) }
1496
+ });
1497
+ }
1498
+ function promoteDomainCall(workspace, payload) {
1499
+ return nomosOperatorCalls2.promoteDomain({
1500
+ domain: "nomos",
1501
+ workspace,
1502
+ domainHash: sha256Digest2(payload.domainHash),
1503
+ ...payload.replaces === void 0 ? {} : { replaces: sha256Digest2(payload.replaces) },
1504
+ retireReplaced: payload.retireReplaced,
1505
+ dispositions: generatedDispositions(payload.dispositions),
1506
+ preflight: {
1507
+ candidateHash: sha256Digest2(payload.preflight.candidateHash),
1508
+ domain: payload.preflight.domain,
1509
+ atHash: gitObjectId(payload.preflight.atHash),
1510
+ atStateRoot: gitObjectId(payload.preflight.atStateRoot),
1511
+ evolveOk: true,
1512
+ ...payload.preflight.acceptanceReason === void 0 ? {} : { acceptanceReason: payload.preflight.acceptanceReason }
1513
+ }
1514
+ });
1515
+ }
1516
+ function rollbackDomainCall(workspace, payload) {
1517
+ return nomosOperatorCalls2.rollbackDomain({
1518
+ domain: "nomos",
1519
+ workspace,
1520
+ candidateHash: sha256Digest2(payload.candidateHash),
1521
+ priorHash: sha256Digest2(payload.priorHash),
1522
+ dispositions: generatedDispositions(payload.dispositions),
1523
+ preflight: {
1524
+ candidateHash: sha256Digest2(payload.preflight.candidateHash),
1525
+ domain: payload.preflight.domain,
1526
+ atHash: gitObjectId(payload.preflight.atHash),
1527
+ atStateRoot: gitObjectId(payload.preflight.atStateRoot),
1528
+ evolveOk: true,
1529
+ ...payload.preflight.acceptanceReason === void 0 ? {} : { acceptanceReason: payload.preflight.acceptanceReason }
1530
+ }
1531
+ });
1532
+ }
1533
+ var digestList, generatedDispositions;
1534
+ var init_lifecycle_calls = __esm({
1535
+ "vendor/engine/lifecycle-calls.ts"() {
1536
+ "use strict";
1537
+ init_domain_bootstrap_operator();
1538
+ init_nomos_operator();
1539
+ digestList = (values) => values?.map(sha256Digest2);
1540
+ generatedDispositions = (value) => value === void 0 ? void 0 : {
1541
+ retired: [...value.retired],
1542
+ retyped: { ...value.retyped },
1543
+ rebinds: { ...value.rebinds },
1544
+ ...value.ackBy === void 0 ? {} : { ackBy: value.ackBy }
1545
+ };
1546
+ }
1547
+ });
1548
+
470
1549
  // vendor/engine/proto/nomos/kernel/v1/kernel_pb.js
471
1550
  import { enumDesc, fileDesc, messageDesc, serviceDesc, tsEnum } from "@bufbuild/protobuf/codegenv2";
472
- var file_nomos_kernel_v1_kernel, CallRequestSchema, CallResponseSchema, PrepareRemoteOfferRequestSchema, PrepareRemoteOfferResponseSchema, WorkspaceTargetSchema, DirectiveCallSchema, AuthoringOptionsSchema, CapturedClockSchema, BirthCertificateSchema, OfferRequestSchema, QueryRequestSchema, QueryAuthoritySchema, InjectedKeySchema, RowsQuerySchema, PageQuerySchema, ByIdQuerySchema, TallyQuerySchema, SpatialQuerySchema, NamedQuerySchema, FrontierTransitionRequestSchema, AuthorizationObjectSchema, AuthorizationSubjectSchema, AuthorizationConsistencySchema, AuthorizationCheckRequestSchema, AuthorizationExpandRequestSchema, OutboxRequestSchema, SyncRequestSchema, TestRequestSchema, SetTestRootRequestSchema, CustodyRequestSchema, ResidentFootprintRequestSchema, PackDeltaRequestSchema, ApplyPackRequestSchema, RepoStatsRequestSchema, IntentsAboveRequestSchema, InspectChangeRequestSchema, RefusalVerdictSchema, EncodeRefusalVerdictRequestSchema, InspectRefusalVerdictRequestSchema, ProveCompactionEquivalenceRequestSchema, ReadBlobRequestSchema, ResolveRefRequestSchema, ListRefsRequestSchema, WriteRefRequestSchema, DeleteRefRequestSchema, WriteMetaCommitRequestSchema, LawClosureInfoRequestSchema, CheckpointExportRequestSchema, VerifiedFrontierReceiptSchema, StoredCheckpointManifestSchema, CheckpointImportRequestSchema, CapacityReserveRequestSchema, RestoreMainRequestSchema, ResolveStatePositionRequestSchema, NomosValueSchema, NomosStructSchema, QueryOperationSchema, QueryOperation, KernelLawCapabilitySchema, KernelLawCapability, CheckpointCompressionSchema, CheckpointCompression, CheckpointVerificationPolicySchema, CheckpointVerificationPolicy, CheckpointAssuranceSchema, CheckpointAssurance, IntentTransportRequirementSchema, IntentTransportRequirement, LifecycleInstallPhaseSchema, LifecycleInstallPhase;
1551
+ var file_nomos_kernel_v1_kernel, CallRequestSchema, CallResponseSchema, PrepareRemoteOfferRequestSchema, PrepareRemoteOfferResponseSchema, ApplyWorkspaceEffectRequestSchema, ApplyWorkspaceEffectResponseSchema, WorkspaceTargetSchema, InitializeWorkspaceRequestSchema, DirectiveCallSchema, AuthoringOptionsSchema, CapturedClockSchema, BirthCertificateSchema, SignBirthCertificateRequestSchema, OfferRequestSchema, QueryRequestSchema, QueryAuthoritySchema, InjectedKeySchema, RowsQuerySchema, PageQuerySchema, ByIdQuerySchema, ByTypeQuerySchema, TallyQuerySchema, SpatialQuerySchema, PendingConflictsQuerySchema, PendingConflictSummaryQuerySchema, NamedQuerySchema, FrontierTransitionRequestSchema, AuthorizationObjectSchema, AuthorizationSubjectSchema, AuthorizationConsistencySchema, AuthorizationCheckRequestSchema, AuthorizationExpandRequestSchema, OutboxRequestSchema, SyncRequestSchema, TestRequestSchema, SetTestRootRequestSchema, CustodyRequestSchema, ResidentFootprintRequestSchema, PackDeltaRequestSchema, ApplyPackRequestSchema, RepoStatsRequestSchema, IntentsAboveRequestSchema, InspectChangeRequestSchema, RefusalVerdictSchema, EncodeRefusalVerdictRequestSchema, InspectRefusalVerdictRequestSchema, ProveCompactionEquivalenceRequestSchema, ReadBlobRequestSchema, ResolveRefRequestSchema, ListRefsRequestSchema, WriteRefRequestSchema, DeleteRefRequestSchema, WriteMetaCommitRequestSchema, LawClosureInfoRequestSchema, CheckpointExportRequestSchema, VerifiedFrontierReceiptSchema, StoredCheckpointManifestSchema, CheckpointImportRequestSchema, CapacityReserveRequestSchema, RestoreMainRequestSchema, ResolveStatePositionRequestSchema, NomosValueSchema, NomosStructSchema, BirthOutcomeStatusSchema, BirthOutcomeStatus, QueryResultFormatSchema, QueryResultFormat, QueryOperationSchema, QueryOperation, KernelLawCapabilitySchema, KernelLawCapability, CheckpointCompressionSchema, CheckpointCompression, CheckpointVerificationPolicySchema, CheckpointVerificationPolicy, CheckpointAssuranceSchema, CheckpointAssurance, IntentTransportRequirementSchema, IntentTransportRequirement, LifecycleInstallPhaseSchema, LifecycleInstallPhase;
473
1552
  var init_kernel_pb = __esm({
474
1553
  "vendor/engine/proto/nomos/kernel/v1/kernel_pb.js"() {
475
1554
  "use strict";
476
- file_nomos_kernel_v1_kernel = /* @__PURE__ */ fileDesc("Chxub21vcy9rZXJuZWwvdjEva2VybmVsLnByb3RvEg9ub21vcy5rZXJuZWwudjEi/gQKC0NhbGxSZXF1ZXN0EhgKEHByb3RvY29sX3ZlcnNpb24YASABKA0SEgoKcmVxdWVzdF9pZBgCIAEoCRIsCgRvcGVuGAogASgLMhwubm9tb3Mua2VybmVsLnYxLk9wZW5SZXF1ZXN0SAASLgoFb2ZmZXIYCyABKAsyHS5ub21vcy5rZXJuZWwudjEuT2ZmZXJSZXF1ZXN0SAASLgoFcXVlcnkYDCABKAsyHS5ub21vcy5rZXJuZWwudjEuUXVlcnlSZXF1ZXN0SAASMAoGb3V0Ym94GA0gASgLMh4ubm9tb3Mua2VybmVsLnYxLk91dGJveFJlcXVlc3RIABIsCgRzeW5jGA4gASgLMhwubm9tb3Mua2VybmVsLnYxLlN5bmNSZXF1ZXN0SAASMgoHY3VzdG9keRgPIAEoCzIfLm5vbW9zLmtlcm5lbC52MS5DdXN0b2R5UmVxdWVzdEgAEiwKBHRlc3QYECABKAsyHC5ub21vcy5rZXJuZWwudjEuVGVzdFJlcXVlc3RIABJIChNzaWduX3ByZXBhcmVkX29mZmVyGBEgASgLMikubm9tb3Mua2VybmVsLnYxLlNpZ25QcmVwYXJlZE9mZmVyUmVxdWVzdEgAEkoKFHByZXBhcmVfcmVtb3RlX29mZmVyGBIgASgLMioubm9tb3Mua2VybmVsLnYxLlByZXBhcmVSZW1vdGVPZmZlclJlcXVlc3RIABJOChZzaWduX29mZmVyX3ByZXBhcmF0aW9uGBMgASgLMiwubm9tb3Mua2VybmVsLnYxLlNpZ25PZmZlclByZXBhcmF0aW9uUmVxdWVzdEgAQgsKCW9wZXJhdGlvbiK0BQoMQ2FsbFJlc3BvbnNlEhgKEHByb3RvY29sX3ZlcnNpb24YASABKA0SEgoKcmVxdWVzdF9pZBgCIAEoCRIrCgdmYWlsdXJlGAogASgLMhgubm9tb3Mua2VybmVsLnYxLkZhaWx1cmVIABItCgRvcGVuGAsgASgLMh0ubm9tb3Mua2VybmVsLnYxLk9wZW5SZXNwb25zZUgAEi8KBW9mZmVyGAwgASgLMh4ubm9tb3Mua2VybmVsLnYxLk9mZmVyUmVzcG9uc2VIABIvCgVxdWVyeRgNIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5RdWVyeVJlc3BvbnNlSAASMQoGb3V0Ym94GA4gASgLMh8ubm9tb3Mua2VybmVsLnYxLk91dGJveFJlc3BvbnNlSAASLQoEc3luYxgPIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5TeW5jUmVzcG9uc2VIABIzCgdjdXN0b2R5GBAgASgLMiAubm9tb3Mua2VybmVsLnYxLkN1c3RvZHlSZXNwb25zZUgAEi0KBHRlc3QYESABKAsyHS5ub21vcy5rZXJuZWwudjEuVGVzdFJlc3BvbnNlSAASSQoTc2lnbl9wcmVwYXJlZF9vZmZlchgSIAEoCzIqLm5vbW9zLmtlcm5lbC52MS5TaWduUHJlcGFyZWRPZmZlclJlc3BvbnNlSAASSwoUcHJlcGFyZV9yZW1vdGVfb2ZmZXIYEyABKAsyKy5ub21vcy5rZXJuZWwudjEuUHJlcGFyZVJlbW90ZU9mZmVyUmVzcG9uc2VIABJPChZzaWduX29mZmVyX3ByZXBhcmF0aW9uGBQgASgLMi0ubm9tb3Mua2VybmVsLnYxLlNpZ25PZmZlclByZXBhcmF0aW9uUmVzcG9uc2VIAEIJCgdvdXRjb21lIlcKB0ZhaWx1cmUSDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEi0KB2RldGFpbHMYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QiPAoMT3BlblJlc3BvbnNlEiwKBnJlc3VsdBgBIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdCL3AgoNT2ZmZXJSZXNwb25zZRIyCghhZG1pdHRlZBgBIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5PZmZlckFkbWl0dGVkSAASMAoHcmVmdXNlZBgCIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5PZmZlclJlZnVzZWRIABI7Cg1kZWFkX2xldHRlcmVkGAMgASgLMiIubm9tb3Mua2VybmVsLnYxLk9mZmVyRGVhZExldHRlcmVkSAASOAoLcXVhcmFudGluZWQYBCABKAsyIS5ub21vcy5rZXJuZWwudjEuT2ZmZXJRdWFyYW50aW5lZEgAEkoKFWJsb2NrZWRfb25fZGVwZW5kZW5jeRgFIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5PZmZlckJsb2NrZWRPbkRlcGVuZGVuY3lIABIyCghwcmVwYXJlZBgGIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5PZmZlclByZXBhcmVkSABCCQoHb3V0Y29tZSI9Cg1PZmZlckFkbWl0dGVkEiwKBnJlc3VsdBgBIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdCKWAQoMT2ZmZXJSZWZ1c2VkEhUKCG9mZmVyX2lkGAEgASgJSACIAQESLwoHcmVmdXNhbBgCIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxSZWZ1c2FsEjEKC2RpYWdub3N0aWNzGAMgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0QgsKCV9vZmZlcl9pZCJ6ChFPZmZlckRlYWRMZXR0ZXJlZBIVCghvZmZlcl9pZBgBIAEoCUgAiAEBEg4KBnJlYXNvbhgCIAEoCRIxCgtkaWFnbm9zdGljcxgDIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdEILCglfb2ZmZXJfaWQirgEKEE9mZmVyUXVhcmFudGluZWQSFQoIb2ZmZXJfaWQYASABKAlIAIgBARIZChFhdXRob3JlZF9sYXdfaGFzaBgCIAEoCRIYChBjdXJyZW50X2xhd19oYXNoGAMgASgJEg4KBnJlYXNvbhgEIAEoCRIxCgtkaWFnbm9zdGljcxgFIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdEILCglfb2ZmZXJfaWQigQEKGE9mZmVyQmxvY2tlZE9uRGVwZW5kZW5jeRIVCghvZmZlcl9pZBgBIAEoCUgAiAEBEg4KBmRldGFpbBgCIAEoCRIxCgtkaWFnbm9zdGljcxgDIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdEILCglfb2ZmZXJfaWQihQEKDU9mZmVyUHJlcGFyZWQSHAoUYXV0aG9yZWRfY2hhbmdlX3VzZGEYASABKAwSGQoRd29ya3NwYWNlX2JpbmRpbmcYAiABKAkSGAoQcHJlcGFyZWRfYXRfaGVhZBgDIAEoCRIhChlhdXRob3Jfc2lnbmF0dXJlX3JlcXVpcmVkGAQgASgIImoKGFNpZ25QcmVwYXJlZE9mZmVyUmVxdWVzdBIcChRhdXRob3JlZF9jaGFuZ2VfdXNkYRgBIAEoDBIZChF3b3Jrc3BhY2VfYmluZGluZxgCIAEoCRIVCg1hdXRob3Jfc2VjcmV0GAMgASgMIjcKGVNpZ25QcmVwYXJlZE9mZmVyUmVzcG9uc2USGgoSc2lnbmVkX2NoYW5nZV91c2RhGAEgASgMIo4BChlQcmVwYXJlUmVtb3RlT2ZmZXJSZXF1ZXN0EhUKDW9mZmVyX3JlcXVlc3QYASABKAwSGQoRd29ya3NwYWNlX2JpbmRpbmcYAiABKAkSGAoQcHJlcGFyZWRfYXRfaGVhZBgDIAEoCRISCgpwdWJsaWNfa2V5GAQgASgMEhEKCXNpZ25hdHVyZRgFIAEoDCJQChlPZmZlclByZXBhcmF0aW9uQ2hhbGxlbmdlEhkKEXdvcmtzcGFjZV9iaW5kaW5nGAEgASgJEhgKEHByZXBhcmVkX2F0X2hlYWQYAiABKAkimQEKGlByZXBhcmVSZW1vdGVPZmZlclJlc3BvbnNlEj8KCWNoYWxsZW5nZRgBIAEoCzIqLm5vbW9zLmtlcm5lbC52MS5PZmZlclByZXBhcmF0aW9uQ2hhbGxlbmdlSAASLwoFb2ZmZXIYAiABKAsyHi5ub21vcy5rZXJuZWwudjEuT2ZmZXJSZXNwb25zZUgAQgkKB291dGNvbWUigAEKG1NpZ25PZmZlclByZXBhcmF0aW9uUmVxdWVzdBIVCg1vZmZlcl9yZXF1ZXN0GAEgASgMEhkKEXdvcmtzcGFjZV9iaW5kaW5nGAIgASgJEhgKEHByZXBhcmVkX2F0X2hlYWQYAyABKAkSFQoNYXV0aG9yX3NlY3JldBgEIAEoDCJFChxTaWduT2ZmZXJQcmVwYXJhdGlvblJlc3BvbnNlEhIKCnB1YmxpY19rZXkYASABKAwSEQoJc2lnbmF0dXJlGAIgASgMIoEBCg1LZXJuZWxSZWZ1c2FsEjAKBGNvZGUYASABKA4yIi5ub21vcy5rZXJuZWwudjEuS2VybmVsUmVmdXNhbENvZGUSDwoHbWVzc2FnZRgCIAEoCRItCgdkZXRhaWxzGAMgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0IrgDCg1RdWVyeVJlc3BvbnNlEiwKBXZhbHVlGAEgASgLMhsubm9tb3Mua2VybmVsLnYxLk5vbW9zVmFsdWVIABJKChNhdXRob3JpemF0aW9uX2NoZWNrGAogASgLMisubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25DaGVja1Jlc3BvbnNlSAASTAoUYXV0aG9yaXphdGlvbl9leHBhbmQYCyABKAsyLC5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkV4cGFuZFJlc3BvbnNlSAASPgoNb3NnaV9yZXNvdXJjZRgMIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5Pc2dpUmVzb3VyY2VSZXNwb25zZUgAEkoKE2Zyb250aWVyX3RyYW5zaXRpb24YDSABKAsyKy5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJUcmFuc2l0aW9uUmVzcG9uc2VIABJJChh2ZXJpZnlfY2hhaW5fZGlhZ25vc3RpY3MYFCABKAsyJy5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5EaWFnbm9zdGljc0IICgZyZXN1bHQiSAoNT3NnaUF0dHJpYnV0ZRIMCgRuYW1lGAEgASgJEg0KBXZhbHVlGAIgASgJEhEKBHR5cGUYAyABKAlIAIgBAUIHCgVfdHlwZSIsCg1Pc2dpRGlyZWN0aXZlEgwKBG5hbWUYASABKAkSDQoFdmFsdWUYAiABKAkiiwEKDk9zZ2lDYXBhYmlsaXR5EhEKCW5hbWVzcGFjZRgBIAEoCRIyCgphdHRyaWJ1dGVzGAIgAygLMh4ubm9tb3Mua2VybmVsLnYxLk9zZ2lBdHRyaWJ1dGUSMgoKZGlyZWN0aXZlcxgDIAMoCzIeLm5vbW9zLmtlcm5lbC52MS5Pc2dpRGlyZWN0aXZlIowBCg9Pc2dpUmVxdWlyZW1lbnQSEQoJbmFtZXNwYWNlGAEgASgJEjIKCmF0dHJpYnV0ZXMYAiADKAsyHi5ub21vcy5rZXJuZWwudjEuT3NnaUF0dHJpYnV0ZRIyCgpkaXJlY3RpdmVzGAMgAygLMh4ubm9tb3Mua2VybmVsLnYxLk9zZ2lEaXJlY3RpdmUimgEKFE9zZ2lSZXNvdXJjZVJlc3BvbnNlEhMKC3NvdXJjZV91c2RhGAEgASgMEjUKDGNhcGFiaWxpdGllcxgCIAMoCzIfLm5vbW9zLmtlcm5lbC52MS5Pc2dpQ2FwYWJpbGl0eRI2CgxyZXF1aXJlbWVudHMYAyADKAsyIC5ub21vcy5rZXJuZWwudjEuT3NnaVJlcXVpcmVtZW50IucBChNWZXJpZnlDaGFpblN0ZXBTcGFuEg0KBWluZGV4GAEgASgEEhIKCmNvbW1pdF9vaWQYAiABKAkSDgoGZG9tYWluGAMgASgJEhEKCWRpcmVjdGl2ZRgEIAEoCRIQCgh0b3RhbF91cxgFIAEoBBI2CgZwaGFzZXMYBiABKAsyJi5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5TdGVwUGhhc2VzEkAKDmVuZ2luZV90aW1pbmdzGAcgAygLMigubm9tb3Mua2VybmVsLnYxLlZlcmlmeUNoYWluRW5naW5lVGltaW5nIpgCChVWZXJpZnlDaGFpblN0ZXBQaGFzZXMSHgoWcnVudGltZV9sYXdfcmVmcmVzaF91cxgBIAEoBBITCgttYW5pZmVzdF91cxgCIAEoBBIZChFsYXdfcmVzb2x1dGlvbl91cxgDIAEoBBIdChVtYW5hZ2VkX3RyYW5zaXRpb25fdXMYBCABKAQSFAoMcHJpbmNpcGFsX3VzGAUgASgEEhQKDGV2b2x1dGlvbl91cxgGIAEoBBIaChJjb2xvY2F0ZWRfcmVhZHNfdXMYByABKAQSIQoZdHlwZWRfaW5zdGFsbF92ZXJpZmllcl91cxgIIAEoBBIUCgxhZG1pc3Npb25fdXMYCSABKAQSDwoHZm9sZF91cxgKIAEoBCLaBQoWVmVyaWZ5Q2hhaW5EaWFnbm9zdGljcxIuCgR3YWxrGAEgASgOMiAubm9tb3Mua2VybmVsLnYxLlZlcmlmeUNoYWluV2FsaxIQCgh0b3RhbF91cxgCIAEoBBIbChNyZWZlcmVuY2VfbG9va3VwX3VzGAMgASgEEhoKEnJlcG9zaXRvcnlfb3Blbl91cxgEIAEoBBIVCg1jaGFpbl9yZWFkX3VzGAUgASgEEhYKDmVuZ2luZV9pbml0X3VzGAYgASgEEhgKEHRpbWVsaW5lX3JlYWRfdXMYByABKAQSGAoQbGF3X2h5ZHJhdGlvbl91cxgIIAEoBBIbChNyZWNvdmVyeV9wcmVzY2FuX3VzGAkgASgEEhgKEGZvbGRfZnJvbnRpZXJfdXMYCiABKAQSMwoFc3RlcHMYCyADKAsyJC5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5TdGVwU3BhbhJACg5lbmdpbmVfdGltaW5ncxgMIAMoCzIoLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpbkVuZ2luZVRpbWluZxJNChVsYXdfaHlkcmF0aW9uX3RpbWluZ3MYDSADKAsyLi5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5MYXdIeWRyYXRpb25UaW1pbmcSGQoRbGF3X2Nsb3N1cmVfY291bnQYDiABKAQSHgoWbGF3X2Nsb3N1cmVfY2FjaGVfaGl0cxgPIAEoBBIgChhsYXdfY2xvc3VyZV9jYWNoZV9taXNzZXMYECABKAQSEgoKc3RlcF9jb3VudBgRIAEoBBIVCg1zdGVwX3RvdGFsX3VzGBIgASgEEkEKEXN0ZXBfcGhhc2VfdG90YWxzGBMgASgLMiYubm9tb3Mua2VybmVsLnYxLlZlcmlmeUNoYWluU3RlcFBoYXNlcxIaChJvbWl0dGVkX3N0ZXBfY291bnQYFCABKAQiOgoXVmVyaWZ5Q2hhaW5FbmdpbmVUaW1pbmcSDQoFcGhhc2UYASABKAkSEAoIdG90YWxfdXMYAiABKAQiQAodVmVyaWZ5Q2hhaW5MYXdIeWRyYXRpb25UaW1pbmcSDQoFcGhhc2UYASABKAkSEAoIdG90YWxfdXMYAiABKAQitgIKDU91dGJvdW5kT2ZmZXISCgoCaWQYASABKAkSEwoLZGVzdGluYXRpb24YAiABKAkSFAoMc2VhbGVkX29mZmVyGAMgASgMEhQKDGNvbnRlbnRfdHlwZRgEIAEoCRIYChBzb3VyY2Vfd29ya3NwYWNlGAUgASgJEhQKDGN1c3RvZHlfaGVhZBgGIAEoCRIXCg9jYXVzZWRfYnlfb2ZmZXIYByABKAkSGwoTc2NoZWR1bGVkX2F0X21pbGxpcxgIIAEoBBIaChJkZWFkbGluZV9hdF9taWxsaXMYCSABKAQSFAoMY3VzdG9keV9wYXRoGAogASgJEhMKC2N1c3RvZHlfb2lkGAsgASgJEhQKDGRlbGl2ZXJ5X3JlZhgMIAEoCRIVCg1vYmxpZ2F0aW9uX2lkGA0gASgJIngKDk91dGJveFJlc3BvbnNlEi4KBm9mZmVycxgBIAMoCzIeLm5vbW9zLmtlcm5lbC52MS5PdXRib3VuZE9mZmVyEh8KEm5leHRfZHVlX2F0X21pbGxpcxgCIAEoBEgAiAEBQhUKE19uZXh0X2R1ZV9hdF9taWxsaXMiPAoMU3luY1Jlc3BvbnNlEiwKBnJlc3VsdBgBIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdCJCCg9Xb3Jrc3BhY2VUYXJnZXQSDAoEcmVwbxgBIAEoCRIRCgl3b3Jrc3BhY2UYAiABKAkSDgoGYnJhbmNoGAMgASgJIk4KC09wZW5SZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSDQoFc3BhbnMYAiABKAgiYQoNRGlyZWN0aXZlQ2FsbBIOCgZkb21haW4YASABKAkSEQoJZGlyZWN0aXZlGAIgASgJEi0KB3BheWxvYWQYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3Qi1gIKEEF1dGhvcmluZ09wdGlvbnMSDQoFYWN0b3IYASABKAkSEgoKYXV0aF90b2tlbhgCIAEoDBIVCg1hdXRob3Jfc2VjcmV0GAMgASgMEh0KEHZhbGlkX2Zyb21fZXBvY2gYBCABKARIAIgBARIfChJwcmluY2lwYWxfdmVyaWZpZWQYBSABKAhIAYgBARILCgNybmcYBiADKAESGAoQZGVmZXJfcHJvamVjdGlvbhgHIAEoCBINCgVzcGFucxgIIAEoCBIPCgdkcnlfcnVuGAkgASgIEhAKCHNlcXVlbmNlGAogASgEEi0KBWNsb2NrGAsgASgLMh4ubm9tb3Mua2VybmVsLnYxLkNhcHR1cmVkQ2xvY2sSFAoMcHJlcGFyZV9vbmx5GAwgASgIQhMKEV92YWxpZF9mcm9tX2Vwb2NoQhUKE19wcmluY2lwYWxfdmVyaWZpZWQiSgoNQ2FwdHVyZWRDbG9jaxIXCg9waHlzaWNhbF9taWxsaXMYASABKAQSDwoHbG9naWNhbBgCIAEoDRIPCgdyZXBsaWNhGAMgASgEIsMDChBCaXJ0aENlcnRpZmljYXRlEg0KBWNoaWxkGAEgASgJEg8KB2ZvdW5kZXIYAiABKAkSEAoIdmVyaWZpZWQYAyABKAgSEgoKcGFyZW50X2tleRgEIAEoDBIRCglwYXJlbnRfaWQYBSABKAkSDQoFZXBvY2gYBiABKAMSEQoJc2lnbmF0dXJlGAcgASgMEhkKDHZlcmlmaWVkX3ZpYRgIIAEoCUgAiAEBEhYKCWlkcF90b2tlbhgJIAEoCUgBiAEBEhsKDmNhcHR1cmVkX2Nsb2NrGAogASgDSAKIAQESIQoUYXV0aF9wcm92aWRlcl9pc3N1ZXIYCyABKAlIA4gBARIfChJhdXRoX3Byb3ZpZGVyX2p3a3MYDCABKAlIBIgBARIjChZhdXRoX3Byb3ZpZGVyX2F1ZGllbmNlGA0gASgJSAWIAQFCDwoNX3ZlcmlmaWVkX3ZpYUIMCgpfaWRwX3Rva2VuQhEKD19jYXB0dXJlZF9jbG9ja0IXChVfYXV0aF9wcm92aWRlcl9pc3N1ZXJCFQoTX2F1dGhfcHJvdmlkZXJfandrc0IZChdfYXV0aF9wcm92aWRlcl9hdWRpZW5jZSKcBAoMT2ZmZXJSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSLgoEY2FsbBgCIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5EaXJlY3RpdmVDYWxsSAASHAoSc2VhbGVkX2NoYW5nZV91c2RhGAcgASgMSAASNAoJYXV0aG9yaW5nGAMgASgLMiEubm9tb3Mua2VybmVsLnYxLkF1dGhvcmluZ09wdGlvbnMSEAoIbGF3X3VzZHoYBCABKAwSMwoMYXR0ZXN0YXRpb25zGAUgAygLMh0ubm9tb3Mua2VybmVsLnYxLkF0dGVzdGVkUmVhZBI9ChJjb25mbGljdF9zbmFwc2hvdHMYBiADKAsyIS5ub21vcy5rZXJuZWwudjEuQ29uZmxpY3RTbmFwc2hvdBIaChJleGVjdXRpb25fbGF3X3VzZHoYCCABKAwSIAoTY29udHJvbGxlcl9sYXdfaGFzaBgJIAEoCUgBiAEBEh0KEGNhbmRpZGF0ZV9jb21taXQYCiABKAlIAogBARI8ChFiaXJ0aF9jZXJ0aWZpY2F0ZRgLIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5CaXJ0aENlcnRpZmljYXRlQggKBmludGVudEIWChRfY29udHJvbGxlcl9sYXdfaGFzaEITChFfY2FuZGlkYXRlX2NvbW1pdCKTAQoMQXR0ZXN0ZWRSZWFkEhAKCHF1ZXJ5X2lkGAEgASgJEi8KCWFyZ3VtZW50cxgCIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdBIrCgZyZXN1bHQYAyABKAsyGy5ub21vcy5rZXJuZWwudjEuTm9tb3NWYWx1ZRITCgthdHRlc3RhdGlvbhgEIAEoDCJ1ChBDb25mbGljdFNuYXBzaG90EhYKDmFnZ3JlZ2F0ZV90eXBlGAEgASgJEhQKDGFnZ3JlZ2F0ZV9pZBgCIAEoCRINCgVmaWVsZBgDIAEoCRIVCg10YXJnZXRfc2NoZW1hGAQgASgJEg0KBXRva2VuGAUgASgJIrAGCgxRdWVyeVJlcXVlc3QSMAoGdGFyZ2V0GAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBIyCglhdXRob3JpdHkYAiABKAsyHy5ub21vcy5rZXJuZWwudjEuUXVlcnlBdXRob3JpdHkSDQoFc3BhbnMYAyABKAgSKgoEcm93cxgKIAEoCzIaLm5vbW9zLmtlcm5lbC52MS5Sb3dzUXVlcnlIABIqCgRwYWdlGAsgASgLMhoubm9tb3Mua2VybmVsLnYxLlBhZ2VRdWVyeUgAEisKBWJ5X2lkGAwgASgLMhoubm9tb3Mua2VybmVsLnYxLkJ5SWRRdWVyeUgAEjkKDHJlc29sdmVfcmVmcxgNIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5SZXNvbHZlUmVmc1F1ZXJ5SAASRQoScmVmZXJlbmNlX3ZlcnNpb25zGA4gASgLMicubm9tb3Mua2VybmVsLnYxLlJlZmVyZW5jZVZlcnNpb25zUXVlcnlIABIsCgVjb3VudBgPIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5UYWxseVF1ZXJ5SAASKgoDc3VtGBAgASgLMhsubm9tb3Mua2VybmVsLnYxLlRhbGx5UXVlcnlIABIwCgdzcGF0aWFsGBEgASgLMh0ubm9tb3Mua2VybmVsLnYxLlNwYXRpYWxRdWVyeUgAEiwKBW5hbWVkGBIgASgLMhsubm9tb3Mua2VybmVsLnYxLk5hbWVkUXVlcnlIABJJChNhdXRob3JpemF0aW9uX2NoZWNrGBMgASgLMioubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25DaGVja1JlcXVlc3RIABJLChRhdXRob3JpemF0aW9uX2V4cGFuZBgUIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uRXhwYW5kUmVxdWVzdEgAEkkKE2Zyb250aWVyX3RyYW5zaXRpb24YFSABKAsyKi5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJUcmFuc2l0aW9uUmVxdWVzdEgAQgcKBXF1ZXJ5IpIBCg5RdWVyeUF1dGhvcml0eRIXCg9wcmluY2lwYWxfY2xhaW0YASABKAkSEgoKYXV0aF90b2tlbhgCIAEoDBIQCghub3dfdW5peBgDIAEoBBIVCg1hdXRob3Jfc2VjcmV0GAQgASgMEioKBGtleXMYBSADKAsyHC5ub21vcy5rZXJuZWwudjEuSW5qZWN0ZWRLZXkiOAoLSW5qZWN0ZWRLZXkSDQoFc2NvcGUYASABKAkSDQoFZXBvY2gYAiABKAQSCwoDa2V5GAMgASgMIlsKCVJvd3NRdWVyeRIKCgJpZBgBIAEoCRIvCglhcmd1bWVudHMYAiABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSEQoJcHJpbmNpcGFsGAMgASgJInkKCVBhZ2VRdWVyeRIKCgJpZBgBIAEoCRIvCglhcmd1bWVudHMYAiABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSDQoFbGltaXQYAyABKA0SDQoFYWZ0ZXIYBCABKAkSEQoJcHJpbmNpcGFsGAUgASgJIkwKCUJ5SWRRdWVyeRIWCg5hZ2dyZWdhdGVfdHlwZRgBIAEoCRIUCgxhZ2dyZWdhdGVfaWQYAiABKAkSEQoJcHJpbmNpcGFsGAMgASgJIlwKCE5vbW9zUmVmEhEKCXdvcmtzcGFjZRgBIAEoCRIWCg5hZ2dyZWdhdGVfdHlwZRgCIAEoCRIUCgxhZ2dyZWdhdGVfaWQYAyABKAkSDwoHdmVyc2lvbhgEIAEoCSJOChBSZXNvbHZlUmVmc1F1ZXJ5EicKBHJlZnMYASADKAsyGS5ub21vcy5rZXJuZWwudjEuTm9tb3NSZWYSEQoJcHJpbmNpcGFsGAIgASgJIk4KFlJlZmVyZW5jZVZlcnNpb25zUXVlcnkSNAoEcmVmcxgBIAMoCzImLm5vbW9zLmtlcm5lbC52MS5SZWZlcmVuY2VWZXJzaW9uQ2hlY2sihAEKFVJlZmVyZW5jZVZlcnNpb25DaGVjaxIpCgZwaW5uZWQYASABKAsyGS5ub21vcy5rZXJuZWwudjEuTm9tb3NSZWYSKQoGc2VyaWVzGAIgASgLMhkubm9tb3Mua2VybmVsLnYxLk5vbW9zUmVmEhUKDWN1cnJlbnRfZmllbGQYAyABKAkiXAoKVGFsbHlRdWVyeRIKCgJpZBgBIAEoCRIvCglhcmd1bWVudHMYAiABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSEQoJcHJpbmNpcGFsGAMgASgJIl4KDFNwYXRpYWxRdWVyeRIKCgJpZBgBIAEoCRIvCglhcmd1bWVudHMYAiABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSEQoJcHJpbmNpcGFsGAMgASgJInEKCk5hbWVkUXVlcnkSMgoJb3BlcmF0aW9uGAEgASgOMh8ubm9tb3Mua2VybmVsLnYxLlF1ZXJ5T3BlcmF0aW9uEi8KCWFyZ3VtZW50cxgCIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdCKxAQoZRnJvbnRpZXJUcmFuc2l0aW9uUmVxdWVzdBIOCgZkb21haW4YASABKAkSFgoOY2FuZGlkYXRlX2hhc2gYAiABKAkSDwoHYXRfaGFzaBgDIAEoCRIhChlhY2tub3dsZWRnZW1lbnRfcHJpbmNpcGFsGAQgASgJEiAKE3Jlc3RvcmVfcHJldmlvdXNfb2YYBSABKAlIAIgBAUIWChRfcmVzdG9yZV9wcmV2aW91c19vZiJaCiVGcm9udGllclRyYW5zaXRpb25EaXNwb3NpdGlvbk1hcEVudHJ5EhgKEHNvdXJjZV9zdGFibGVfaWQYASABKAkSFwoPYWNrbm93bGVkZ2VtZW50GAIgASgJIvUBCh5Gcm9udGllclRyYW5zaXRpb25EaXNwb3NpdGlvbnMSDwoHcmV0aXJlZBgBIAMoCRJHCgdyZXR5cGVkGAIgAygLMjYubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvbkRpc3Bvc2l0aW9uTWFwRW50cnkSRwoHcmViaW5kcxgDIAMoCzI2Lm5vbW9zLmtlcm5lbC52MS5Gcm9udGllclRyYW5zaXRpb25EaXNwb3NpdGlvbk1hcEVudHJ5EhwKD2Fja25vd2xlZGdlZF9ieRgEIAEoCUgAiAEBQhIKEF9hY2tub3dsZWRnZWRfYnkiPQobRnJvbnRpZXJUcmFuc2l0aW9uVmlvbGF0aW9uEg4KBmRvbWFpbhgBIAEoCRIOCgZkZXRhaWwYAiABKAki1wIKGkZyb250aWVyVHJhbnNpdGlvblJlc3BvbnNlEg8KB2F0X2hhc2gYASABKAkSGQoMY3VycmVudF9oYXNoGAIgASgJSACIAQESFQoNYXRfc3RhdGVfcm9vdBgDIAEoCRIWCg5jYW5kaWRhdGVfaGFzaBgEIAEoCRIOCgZkb21haW4YBSABKAkSDwoHZG9tYWlucxgGIAMoCRINCgVyZWFkeRgHIAEoCBJACgp2aW9sYXRpb25zGAggAygLMiwubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvblZpb2xhdGlvbhJKCgxkaXNwb3NpdGlvbnMYCSABKAsyLy5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJUcmFuc2l0aW9uRGlzcG9zaXRpb25zSAGIAQFCDwoNX2N1cnJlbnRfaGFzaEIPCg1fZGlzcG9zaXRpb25zIi8KE0F1dGhvcml6YXRpb25PYmplY3QSDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCSJUChRBdXRob3JpemF0aW9uU3ViamVjdBIMCgR0eXBlGAEgASgJEgoKAmlkGAIgASgJEhUKCHJlbGF0aW9uGAMgASgJSACIAQFCCwoJX3JlbGF0aW9uIpwBChhSZWxhdGlvbnNoaXBUdXBsZUFkZHJlc3MSNgoIcmVzb3VyY2UYASABKAsyJC5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbk9iamVjdBIQCghyZWxhdGlvbhgCIAEoCRI2CgdzdWJqZWN0GAMgASgLMiUubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25TdWJqZWN0IoEBChhBdXRob3JpemF0aW9uQ29uc2lzdGVuY3kSIwoZY3VycmVudF92ZXJpZmllZF9mcm9udGllchgBIAEoCEgAEhkKD2F0X2xlYXN0X2NvbW1pdBgCIAEoCUgAEhYKDGV4YWN0X2NvbW1pdBgDIAEoCUgAQg0KC3JlcXVpcmVtZW50ImYKHUF1dGhvcml6YXRpb25Db25kaXRpb25Db250ZXh0EhQKDGNvbmRpdGlvbl9pZBgBIAEoCRIvCglhcmd1bWVudHMYAiABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3Qi9wIKGUF1dGhvcml6YXRpb25DaGVja1JlcXVlc3QSNgoIcmVzb3VyY2UYASABKAsyJC5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbk9iamVjdBISCgpwZXJtaXNzaW9uGAIgASgJEjYKB3N1YmplY3QYAyABKAsyJS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvblN1YmplY3QSPgoLY29uc2lzdGVuY3kYBCABKAsyKS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkNvbnNpc3RlbmN5Ej8KB2NvbnRleHQYBSADKAsyLi5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkNvbmRpdGlvbkNvbnRleHQSIAoTZXhwZWN0ZWRfbW9kZWxfaGFzaBgGIAEoCUgAiAEBEhsKE2luY2x1ZGVfZXhwbGFuYXRpb24YByABKAhCFgoUX2V4cGVjdGVkX21vZGVsX2hhc2gi7QIKGkF1dGhvcml6YXRpb25FeHBhbmRSZXF1ZXN0EjYKCHJlc291cmNlGAEgASgLMiQubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25PYmplY3QSEgoKcGVybWlzc2lvbhgCIAEoCRI+Cgtjb25zaXN0ZW5jeRgDIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uQ29uc2lzdGVuY3kSPwoHY29udGV4dBgEIAMoCzIuLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uQ29uZGl0aW9uQ29udGV4dBIgChNleHBlY3RlZF9tb2RlbF9oYXNoGAUgASgJSACIAQESDQoFbGltaXQYBiABKA0SEgoFYWZ0ZXIYByABKAlIAYgBARIbChNpbmNsdWRlX2V4cGxhbmF0aW9uGAggASgIQhYKFF9leHBlY3RlZF9tb2RlbF9oYXNoQggKBl9hZnRlciK9AQoZUmVsYXRpb25zaGlwVHVwbGVFdmlkZW5jZRI4CgV0dXBsZRgBIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5SZWxhdGlvbnNoaXBUdXBsZUFkZHJlc3MSEAoIdHVwbGVfaWQYAiABKAkSGgoSYXNzZXJ0aW9uX2V2ZW50X2lkGAMgASgJEiAKE3Jldm9jYXRpb25fZXZlbnRfaWQYBCABKAlIAIgBAUIWChRfcmV2b2NhdGlvbl9ldmVudF9pZCLhAwoYQXV0aG9yaXphdGlvbkV4cGxhbmF0aW9uEkYKCW9wZXJhdGlvbhgBIAEoDjIzLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uRXhwbGFuYXRpb24uT3BlcmF0aW9uEhAKCHJlbGF0aW9uGAIgASgJEg4KBnJlc3VsdBgDIAEoCBI8CghldmlkZW5jZRgEIAMoCzIqLm5vbW9zLmtlcm5lbC52MS5SZWxhdGlvbnNoaXBUdXBsZUV2aWRlbmNlEjsKCGNoaWxkcmVuGAUgAygLMikubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25FeHBsYW5hdGlvbiLfAQoJT3BlcmF0aW9uEhkKFU9QRVJBVElPTl9VTlNQRUNJRklFRBAAEhQKEE9QRVJBVElPTl9ESVJFQ1QQARIeChpPUEVSQVRJT05fQ09NUFVURURfVVNFUlNFVBACEh4KGk9QRVJBVElPTl9UVVBMRV9UT19VU0VSU0VUEAMSEwoPT1BFUkFUSU9OX1VOSU9OEAQSGgoWT1BFUkFUSU9OX0lOVEVSU0VDVElPThAFEhcKE09QRVJBVElPTl9FWENMVVNJT04QBhIXChNPUEVSQVRJT05fQ09ORElUSU9OEAcidwoaQXV0aG9yaXphdGlvbkRlY2lzaW9uQmFzaXMSIAoYYXV0aG9yaXphdGlvbl9tb2RlbF9oYXNoGAEgASgJEiEKGXJlbGF0aW9uc2hpcF9zdGF0ZV9jb21taXQYAiABKAkSFAoMY29udGV4dF9oYXNoGAMgASgMIr4BChpBdXRob3JpemF0aW9uQ2hlY2tSZXNwb25zZRIPCgdhbGxvd2VkGAEgASgIEjoKBWJhc2lzGAIgASgLMisubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25EZWNpc2lvbkJhc2lzEkMKC2V4cGxhbmF0aW9uGAMgASgLMikubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25FeHBsYW5hdGlvbkgAiAEBQg4KDF9leHBsYW5hdGlvbiKDAgobQXV0aG9yaXphdGlvbkV4cGFuZFJlc3BvbnNlEjcKCHN1YmplY3RzGAEgAygLMiUubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25TdWJqZWN0EjoKBWJhc2lzGAIgASgLMisubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25EZWNpc2lvbkJhc2lzEhEKBG5leHQYAyABKAlIAIgBARJDCgtleHBsYW5hdGlvbhgEIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uRXhwbGFuYXRpb25IAYgBAUIHCgVfbmV4dEIOCgxfZXhwbGFuYXRpb24icAoNT3V0Ym94UmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0Ei0KBWNsb2NrGAIgASgLMh4ubm9tb3Mua2VybmVsLnYxLkNhcHR1cmVkQ2xvY2siYwoLU3luY1JlcXVlc3QSMAoGdGFyZ2V0GAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBIRCglmcm9tX2Jhc2UYAiABKAkSDwoHdG9faGVhZBgDIAEoCSJTCgtUZXN0UmVxdWVzdBI3CghzZXRfcm9vdBgBIAEoCzIjLm5vbW9zLmtlcm5lbC52MS5TZXRUZXN0Um9vdFJlcXVlc3RIAEILCglvcGVyYXRpb24iKAoSU2V0VGVzdFJvb3RSZXF1ZXN0EhIKCnB1YmxpY19rZXkYASABKAwiPQoMVGVzdFJlc3BvbnNlEi0KBnJlc3VsdBgBIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5BY2tub3dsZWRnZWQi1QsKDkN1c3RvZHlSZXF1ZXN0EjcKCnBhY2tfZGVsdGEYCiABKAsyIS5ub21vcy5rZXJuZWwudjEuUGFja0RlbHRhUmVxdWVzdEgAEjcKCmFwcGx5X3BhY2sYCyABKAsyIS5ub21vcy5rZXJuZWwudjEuQXBwbHlQYWNrUmVxdWVzdEgAEjcKCnJlcG9fc3RhdHMYDCABKAsyIS5ub21vcy5rZXJuZWwudjEuUmVwb1N0YXRzUmVxdWVzdEgAEj0KDWludGVudHNfYWJvdmUYDSABKAsyJC5ub21vcy5rZXJuZWwudjEuSW50ZW50c0Fib3ZlUmVxdWVzdEgAEj8KDmluc3BlY3RfY2hhbmdlGA4gASgLMiUubm9tb3Mua2VybmVsLnYxLkluc3BlY3RDaGFuZ2VSZXF1ZXN0SAASTgoWZW5jb2RlX3JlZnVzYWxfdmVyZGljdBgPIAEoCzIsLm5vbW9zLmtlcm5lbC52MS5FbmNvZGVSZWZ1c2FsVmVyZGljdFJlcXVlc3RIABJQChdpbnNwZWN0X3JlZnVzYWxfdmVyZGljdBgQIAEoCzItLm5vbW9zLmtlcm5lbC52MS5JbnNwZWN0UmVmdXNhbFZlcmRpY3RSZXF1ZXN0SAASNQoJcmVhZF9ibG9iGBEgASgLMiAubm9tb3Mua2VybmVsLnYxLlJlYWRCbG9iUmVxdWVzdEgAEjkKC3Jlc29sdmVfcmVmGBIgASgLMiIubm9tb3Mua2VybmVsLnYxLlJlc29sdmVSZWZSZXF1ZXN0SAASNQoJbGlzdF9yZWZzGBMgASgLMiAubm9tb3Mua2VybmVsLnYxLkxpc3RSZWZzUmVxdWVzdEgAEjUKCXdyaXRlX3JlZhgUIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xcml0ZVJlZlJlcXVlc3RIABI3CgpkZWxldGVfcmVmGBUgASgLMiEubm9tb3Mua2VybmVsLnYxLkRlbGV0ZVJlZlJlcXVlc3RIABJEChF3cml0ZV9tZXRhX2NvbW1pdBgWIAEoCzInLm5vbW9zLmtlcm5lbC52MS5Xcml0ZU1ldGFDb21taXRSZXF1ZXN0SAASQgoQbGF3X2Nsb3N1cmVfaW5mbxgXIAEoCzImLm5vbW9zLmtlcm5lbC52MS5MYXdDbG9zdXJlSW5mb1JlcXVlc3RIABJFChFjaGVja3BvaW50X2V4cG9ydBgYIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5DaGVja3BvaW50RXhwb3J0UmVxdWVzdEgAEkUKEWNoZWNrcG9pbnRfaW1wb3J0GBkgASgLMigubm9tb3Mua2VybmVsLnYxLkNoZWNrcG9pbnRJbXBvcnRSZXF1ZXN0SAASQwoQY2FwYWNpdHlfcmVzZXJ2ZRgaIAEoCzInLm5vbW9zLmtlcm5lbC52MS5DYXBhY2l0eVJlc2VydmVSZXF1ZXN0SAASOwoMcmVzdG9yZV9tYWluGBsgASgLMiMubm9tb3Mua2VybmVsLnYxLlJlc3RvcmVNYWluUmVxdWVzdEgAEk4KFnJlc29sdmVfc3RhdGVfcG9zaXRpb24YHCABKAsyLC5ub21vcy5rZXJuZWwudjEuUmVzb2x2ZVN0YXRlUG9zaXRpb25SZXF1ZXN0SAASRwoScmVzaWRlbnRfZm9vdHByaW50GB0gASgLMikubm9tb3Mua2VybmVsLnYxLlJlc2lkZW50Rm9vdHByaW50UmVxdWVzdEgAEkEKD2hpc3Rvcnlfc3VtbWFyeRgeIAEoCzImLm5vbW9zLmtlcm5lbC52MS5IaXN0b3J5U3VtbWFyeVJlcXVlc3RIABJaChxwcm92ZV9jb21wYWN0aW9uX2VxdWl2YWxlbmNlGB8gASgLMjIubm9tb3Mua2VybmVsLnYxLlByb3ZlQ29tcGFjdGlvbkVxdWl2YWxlbmNlUmVxdWVzdEgAQgsKCW9wZXJhdGlvbiIoChhSZXNpZGVudEZvb3RwcmludFJlcXVlc3QSDAoEZGVlcBgBIAEoCCKfAgoRUmVzaWRlbnRGb290cHJpbnQSEQoJd29ya3NwYWNlGAEgASgJEg4KBmJyYW5jaBgCIAEoCRIYChByZWFkX21vZGVsX2J5dGVzGAMgASgEEh0KFXJlYWRfbW9kZWxfcnVzdF9ieXRlcxgEIAEoBBIYChBmb2xkX3N0YXRlX2J5dGVzGAUgASgEEhMKC2ZvbGRfaW1hZ2VzGAYgASgNEh8KF3NoYXJlZF9hdHRyaWJ1dGVkX2J5dGVzGAcgASgEEhIKCmFnZ3JlZ2F0ZXMYCCABKAQSNgoKY29tcG9uZW50cxgJIAMoCzIiLm5vbW9zLmtlcm5lbC52MS5SZXNpZGVudENvbXBvbmVudBISCgpjb21wdXRlX3VzGAogASgEImkKEVJlc2lkZW50Q29tcG9uZW50EjQKBGtpbmQYASABKA4yJi5ub21vcy5rZXJuZWwudjEuUmVzaWRlbnRDb21wb25lbnRLaW5kEg0KBWJ5dGVzGAIgASgEEg8KB2NlaWxpbmcYAyABKAgiygEKGVJlc2lkZW50Rm9vdHByaW50UmVzcG9uc2USNQoJcmVzaWRlbnRzGAEgAygLMiIubm9tb3Mua2VybmVsLnYxLlJlc2lkZW50Rm9vdHByaW50EhwKFGFsbG9jYXRvcl9saXZlX2J5dGVzGAIgASgEEhgKEGF0dHJpYnV0ZWRfYnl0ZXMYAyABKAQSGQoRdW5hY2NvdW50ZWRfYnl0ZXMYBCABKAQSFQoNYWNjb3VudGluZ191cxgFIAEoBBIMCgRkZWVwGAYgASgIIpwBChBQYWNrRGVsdGFSZXF1ZXN0EgwKBHJlcG8YASABKAkSEQoEaGVhZBgCIAEoCUgAiAEBEhEKBGJhc2UYAyABKAlIAYgBARIOCgZicmFuY2gYBCABKAkSHQoQc3RhZ2VkX3BhY2tfZmlsZRgFIAEoCUgCiAEBQgcKBV9oZWFkQgcKBV9iYXNlQhMKEV9zdGFnZWRfcGFja19maWxlInIKEEFwcGx5UGFja1JlcXVlc3QSDAoEcmVwbxgBIAEoCRIOCgRwYWNrGAIgASgMSAASGgoQc3RhZ2VkX3BhY2tfZmlsZRgEIAEoCUgAEhEKBGhlYWQYAyABKAlIAYgBAUIICgZzb3VyY2VCBwoFX2hlYWQiIAoQUmVwb1N0YXRzUmVxdWVzdBIMCgRyZXBvGAEgASgJIqwBChNJbnRlbnRzQWJvdmVSZXF1ZXN0EgwKBHJlcG8YASABKAkSEQoEaGVhZBgCIAEoCUgAiAEBEhEKBGJhc2UYAyABKAlIAYgBARIOCgZicmFuY2gYBCABKAkSDQoFbGltaXQYBSABKAQSGAoQY29tcGxldGVfbG9naWNhbBgGIAEoCBIWCg5jb21wYWN0X3N0b3JlZBgHIAEoCEIHCgVfaGVhZEIHCgVfYmFzZSJtChVIaXN0b3J5U3VtbWFyeVJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCgRoZWFkGAIgASgJSACIAQESDgoGYnJhbmNoGAMgASgJEhEKBGJhc2UYBCABKAlIAYgBAUIHCgVfaGVhZEIHCgVfYmFzZSIrChRJbnNwZWN0Q2hhbmdlUmVxdWVzdBITCgtjaGFuZ2VfdXNkYRgBIAEoDCLfAQoOUmVmdXNhbFZlcmRpY3QSFQoIb2ZmZXJfaWQYASABKAlIAIgBARIQCgNvaWQYAiABKAlIAYgBARITCgZkb21haW4YAyABKAlIAogBARIZCgxkaXJlY3RpdmVfaWQYBCABKAlIA4gBARIUCgdzZXNzaW9uGAUgASgJSASIAQESEQoJcGFya2VkX2F0GAYgASgJEg4KBnJlYXNvbhgHIAEoCUILCglfb2ZmZXJfaWRCBgoEX29pZEIJCgdfZG9tYWluQg8KDV9kaXJlY3RpdmVfaWRCCgoIX3Nlc3Npb24iTwobRW5jb2RlUmVmdXNhbFZlcmRpY3RSZXF1ZXN0EjAKB3ZlcmRpY3QYASABKAsyHy5ub21vcy5rZXJuZWwudjEuUmVmdXNhbFZlcmRpY3QiNAocSW5zcGVjdFJlZnVzYWxWZXJkaWN0UmVxdWVzdBIUCgx2ZXJkaWN0X3VzZGEYASABKAwi1AEKFUNvbXBhY3Rpb25FcXVpdmFsZW5jZRITCgtzb3VyY2VfaGVhZBgBIAEoCRIWCg5zb3VyY2VfZ2VuZXNpcxgCIAEoCRIWCg5jYW5kaWRhdGVfaGVhZBgDIAEoCRIZChFjYW5kaWRhdGVfZ2VuZXNpcxgEIAEoCRIWCg5zb3VyY2VfaW50ZW50cxgFIAEoBBIXCg9jYXJyaWVkX2ludGVudHMYBiABKAQSFgoOcGFya2VkX2ludGVudHMYByABKAQSEgoKZXF1aXZhbGVudBgIIAEoCCJ9CiFQcm92ZUNvbXBhY3Rpb25FcXVpdmFsZW5jZVJlcXVlc3QSEwoLc291cmNlX3JlcG8YASABKAkSEwoLc291cmNlX2hlYWQYAiABKAkSFgoOY2FuZGlkYXRlX3JlcG8YAyABKAkSFgoOY2FuZGlkYXRlX2hlYWQYBCABKAkiOgoPUmVhZEJsb2JSZXF1ZXN0EgwKBHJlcG8YASABKAkSCwoDb2lkGAIgASgJEgwKBHBhdGgYAyABKAkiNAoRUmVzb2x2ZVJlZlJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCglyZWZlcmVuY2UYAiABKAkiLwoPTGlzdFJlZnNSZXF1ZXN0EgwKBHJlcG8YASABKAkSDgoGcHJlZml4GAIgASgJIkIKD1dyaXRlUmVmUmVxdWVzdBIMCgRyZXBvGAEgASgJEhEKCXJlZmVyZW5jZRgCIAEoCRIOCgZ0YXJnZXQYAyABKAkiMwoQRGVsZXRlUmVmUmVxdWVzdBIMCgRyZXBvGAEgASgJEhEKCXJlZmVyZW5jZRgCIAEoCSIpCghNZXRhRmlsZRIMCgRwYXRoGAEgASgJEg8KB2NvbnRlbnQYAiABKAwirgEKFldyaXRlTWV0YUNvbW1pdFJlcXVlc3QSDAoEcmVwbxgBIAEoCRIPCgdwYXJlbnRzGAIgAygJEigKBWZpbGVzGAMgAygLMhkubm9tb3Mua2VybmVsLnYxLk1ldGFGaWxlEg8KB21lc3NhZ2UYBCABKAkSFAoMdGltZV9zZWNvbmRzGAUgASgSEhYKCXJlZmVyZW5jZRgGIAEoCUgAiAEBQgwKCl9yZWZlcmVuY2UiZwoVTGF3Q2xvc3VyZUluZm9SZXF1ZXN0EhQKDGNsb3N1cmVfZmlsZRgBIAEoCRI4CgpjYXBhYmlsaXR5GAIgASgOMiQubm9tb3Mua2VybmVsLnYxLktlcm5lbExhd0NhcGFiaWxpdHkihwEKF0NoZWNrcG9pbnRFeHBvcnRSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSIQoUc3RhZ2VkX2Zyb250aWVyX2ZpbGUYAiABKAlIAIgBAUIXChVfc3RhZ2VkX2Zyb250aWVyX2ZpbGUiQQoLRnJvbnRpZXJIbGMSEAoIcGh5c2ljYWwYASABKAQSDwoHbG9naWNhbBgCIAEoDRIPCgdyZXBsaWNhGAMgASgEIt0EChdWZXJpZmllZEZyb250aWVyUmVjZWlwdBIWCg5mb3JtYXRfdmVyc2lvbhgBIAEoDRILCgNvaWQYAiABKAkSDwoHaW50ZW50cxgDIAEoBBITCgtwbGFuc19yZXJ1bhgEIAEoBBIcCg9jb250cm9sbGVyX2hhc2gYBSABKAlIAIgBARIZChFpbnN0YWxsZWRfZG9tYWlucxgGIAMoCRIOCgZsaW5lYXIYByABKAgSMwoIbGFzdF9obGMYCCABKAsyHC5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJIbGNIAYgBARIUCgdsYXN0X2lkGAkgASgJSAKIAQESEQoJc3RhdGVfb2lkGAogASgJEhQKDHN0YXRlX3NoYTI1NhgLIAEoCRI5Cg5zdGF0ZV9sYXN0X2hsYxgMIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Gcm9udGllckhsY0gDiAEBEhoKDXN0YXRlX2xhc3RfaWQYDSABKAlIBIgBARIXCg9tYW5pZmVzdF9zaGEyNTYYDiABKAkSHgoWbGF3X2Nsb3N1cmVfaWRlbnRpdGllcxgPIAMoCRIaChJyZXNvbHZhYmxlX2RvbWFpbnMYECADKAkSIgoVcHJvamVjdGlvbl9zdGF0ZV9yb290GBEgASgJSAWIAQFCEgoQX2NvbnRyb2xsZXJfaGFzaEILCglfbGFzdF9obGNCCgoIX2xhc3RfaWRCEQoPX3N0YXRlX2xhc3RfaGxjQhAKDl9zdGF0ZV9sYXN0X2lkQhgKFl9wcm9qZWN0aW9uX3N0YXRlX3Jvb3QiRQoVRm9sZEZyb250aWVyQWdncmVnYXRlEhQKDGFnZ3JlZ2F0ZV9pZBgBIAEoCRIWCg5hZ2dyZWdhdGVfdXNkYRgCIAEoDCJBChdGb2xkRnJvbnRpZXJGaW5nZXJwcmludBIRCglpbnRlbnRfaWQYASABKAkSEwoLZmluZ2VycHJpbnQYAiABKAki1gMKFEZvbGRGcm9udGllclNuYXBzaG90EhYKDmZvcm1hdF92ZXJzaW9uGAEgASgNEgsKA3RpcBgCIAEoCRIPCgdnZW5lc2lzGAMgASgJEhUKDWhpc3RvcnlfZGVwdGgYBCABKAQSOgoKYWdncmVnYXRlcxgFIAMoCzImLm5vbW9zLmtlcm5lbC52MS5Gb2xkRnJvbnRpZXJBZ2dyZWdhdGUSOAoNaGxjX3dhdGVybWFyaxgGIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Gcm9udGllckhsY0gAiAEBEjMKCGxhc3RfaGxjGAcgASgLMhwubm9tb3Mua2VybmVsLnYxLkZyb250aWVySGxjSAGIAQESFAoHbGFzdF9pZBgIIAEoCUgCiAEBEhYKDnN0cmlrZV90YXJnZXRzGAkgAygJEkUKE2ludGVudF9maW5nZXJwcmludHMYCiADKAsyKC5ub21vcy5rZXJuZWwudjEuRm9sZEZyb250aWVyRmluZ2VycHJpbnQSFwoKc3RhdGVfcm9vdBgLIAEoCUgDiAEBQhAKDl9obGNfd2F0ZXJtYXJrQgsKCV9sYXN0X2hsY0IKCghfbGFzdF9pZEINCgtfc3RhdGVfcm9vdCKbAwoYU3RvcmVkQ2hlY2twb2ludE1hbmlmZXN0EhYKDmZvcm1hdF92ZXJzaW9uGAEgASgNEhMKBmN1cnNvchgCIAEoCUgAiAEBEhgKEGNoZWNrcG9pbnRfYnl0ZXMYAyABKAQSEAoIbGF3X2hhc2gYBCABKAkSOwoLY29tcHJlc3Npb24YBSABKA4yJi5ub21vcy5rZXJuZWwudjEuQ2hlY2twb2ludENvbXByZXNzaW9uEhEKCXJhd19ieXRlcxgGIAEoBBIUCgxzdG9yZWRfYnl0ZXMYByABKAQSHQoVZnJvbnRpZXJfc3RvcmVkX2J5dGVzGAggASgEEhcKCnN0YXRlX3Jvb3QYCSABKAlIAYgBARJQChl2ZXJpZmllZF9mcm9udGllcl9yZWNlaXB0GAogASgLMigubm9tb3Mua2VybmVsLnYxLlZlcmlmaWVkRnJvbnRpZXJSZWNlaXB0SAKIAQFCCQoHX2N1cnNvckINCgtfc3RhdGVfcm9vdEIcChpfdmVyaWZpZWRfZnJvbnRpZXJfcmVjZWlwdCLBAwoXQ2hlY2twb2ludEltcG9ydFJlcXVlc3QSMAoGdGFyZ2V0GAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBISCghmcm9udGllchgCIAEoDEgAEh4KFHN0YWdlZF9mcm9udGllcl9maWxlGAYgASgJSAASEwoGY3Vyc29yGAMgASgJSAGIAQESFwoKc3RhdGVfcm9vdBgEIAEoCUgCiAEBEg0KBXNwYW5zGAUgASgIEhEKBGhlYWQYByABKAlIA4gBARJQChl2ZXJpZmllZF9mcm9udGllcl9yZWNlaXB0GAggASgLMigubm9tb3Mua2VybmVsLnYxLlZlcmlmaWVkRnJvbnRpZXJSZWNlaXB0SASIAQESSgoTdmVyaWZpY2F0aW9uX3BvbGljeRgJIAEoDjItLm5vbW9zLmtlcm5lbC52MS5DaGVja3BvaW50VmVyaWZpY2F0aW9uUG9saWN5QhEKD2Zyb250aWVyX3NvdXJjZUIJCgdfY3Vyc29yQg0KC19zdGF0ZV9yb290QgcKBV9oZWFkQhwKGl92ZXJpZmllZF9mcm9udGllcl9yZWNlaXB0IjEKFkNhcGFjaXR5UmVzZXJ2ZVJlcXVlc3QSFwoPYWdncmVnYXRlX2NvdW50GAEgASgEImkKElJlc3RvcmVNYWluUmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0EgwKBGhlYWQYAiABKAkSEwoLZGlhZ25vc3RpY3MYAyABKAgiaQobUmVzb2x2ZVN0YXRlUG9zaXRpb25SZXF1ZXN0EgwKBHJlcG8YASABKAkSEQoJbWFpbl9oZWFkGAIgASgJEhUKDWhpbnRlZF9jb21taXQYAyABKAkSEgoKc3RhdGVfcm9vdBgEIAEoCSLjCwoPQ3VzdG9keVJlc3BvbnNlEjgKCnBhY2tfZGVsdGEYCiABKAsyIi5ub21vcy5rZXJuZWwudjEuUGFja0RlbHRhUmVzcG9uc2VIABI4CgphcHBseV9wYWNrGAsgASgLMiIubm9tb3Mua2VybmVsLnYxLkFwcGx5UGFja1Jlc3BvbnNlSAASOAoKcmVwb19zdGF0cxgMIAEoCzIiLm5vbW9zLmtlcm5lbC52MS5SZXBvU3RhdHNSZXNwb25zZUgAEj4KDWludGVudHNfYWJvdmUYDSABKAsyJS5ub21vcy5rZXJuZWwudjEuSW50ZW50c0Fib3ZlUmVzcG9uc2VIABJACg5pbnNwZWN0X2NoYW5nZRgOIAEoCzImLm5vbW9zLmtlcm5lbC52MS5JbnNwZWN0Q2hhbmdlUmVzcG9uc2VIABJPChZlbmNvZGVfcmVmdXNhbF92ZXJkaWN0GA8gASgLMi0ubm9tb3Mua2VybmVsLnYxLkVuY29kZVJlZnVzYWxWZXJkaWN0UmVzcG9uc2VIABJRChdpbnNwZWN0X3JlZnVzYWxfdmVyZGljdBgQIAEoCzIuLm5vbW9zLmtlcm5lbC52MS5JbnNwZWN0UmVmdXNhbFZlcmRpY3RSZXNwb25zZUgAEjYKCXJlYWRfYmxvYhgRIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5SZWFkQmxvYlJlc3BvbnNlSAASOgoLcmVzb2x2ZV9yZWYYEiABKAsyIy5ub21vcy5rZXJuZWwudjEuUmVzb2x2ZVJlZlJlc3BvbnNlSAASNgoJbGlzdF9yZWZzGBMgASgLMiEubm9tb3Mua2VybmVsLnYxLkxpc3RSZWZzUmVzcG9uc2VIABIyCgl3cml0ZV9yZWYYFCABKAsyHS5ub21vcy5rZXJuZWwudjEuQWNrbm93bGVkZ2VkSAASMwoKZGVsZXRlX3JlZhgVIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5BY2tub3dsZWRnZWRIABJFChF3cml0ZV9tZXRhX2NvbW1pdBgWIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5Xcml0ZU1ldGFDb21taXRSZXNwb25zZUgAEkMKEGxhd19jbG9zdXJlX2luZm8YFyABKAsyJy5ub21vcy5rZXJuZWwudjEuTGF3Q2xvc3VyZUluZm9SZXNwb25zZUgAEkYKEWNoZWNrcG9pbnRfZXhwb3J0GBggASgLMikubm9tb3Mua2VybmVsLnYxLkNoZWNrcG9pbnRFeHBvcnRSZXNwb25zZUgAEkYKEWNoZWNrcG9pbnRfaW1wb3J0GBkgASgLMikubm9tb3Mua2VybmVsLnYxLkNoZWNrcG9pbnRJbXBvcnRSZXNwb25zZUgAEkQKEGNhcGFjaXR5X3Jlc2VydmUYGiABKAsyKC5ub21vcy5rZXJuZWwudjEuQ2FwYWNpdHlSZXNlcnZlUmVzcG9uc2VIABI8CgxyZXN0b3JlX21haW4YGyABKAsyJC5ub21vcy5rZXJuZWwudjEuUmVzdG9yZU1haW5SZXNwb25zZUgAEk8KFnJlc29sdmVfc3RhdGVfcG9zaXRpb24YHCABKAsyLS5ub21vcy5rZXJuZWwudjEuUmVzb2x2ZVN0YXRlUG9zaXRpb25SZXNwb25zZUgAEkgKEnJlc2lkZW50X2Zvb3RwcmludBgdIAEoCzIqLm5vbW9zLmtlcm5lbC52MS5SZXNpZGVudEZvb3RwcmludFJlc3BvbnNlSAASQgoPaGlzdG9yeV9zdW1tYXJ5GB4gASgLMicubm9tb3Mua2VybmVsLnYxLkhpc3RvcnlTdW1tYXJ5UmVzcG9uc2VIABJbChxwcm92ZV9jb21wYWN0aW9uX2VxdWl2YWxlbmNlGB8gASgLMjMubm9tb3Mua2VybmVsLnYxLlByb3ZlQ29tcGFjdGlvbkVxdWl2YWxlbmNlUmVzcG9uc2VIAEILCglvcGVyYXRpb24iMAoRUGFja0RlbHRhUmVzcG9uc2USDAoEcGFjaxgBIAEoDBINCgVieXRlcxgCIAEoBCI8ChFBcHBseVBhY2tSZXNwb25zZRIUCgxvYmplY3RfY291bnQYASABKAQSEQoJcGFja19oYXNoGAIgASgJIqcBChFSZXBvU3RhdHNSZXNwb25zZRITCgt0b3RhbF9ieXRlcxgBIAEoBBIUCgxvYmplY3RfYnl0ZXMYAiABKAQSFQoNbG9vc2Vfb2JqZWN0cxgDIAEoBBITCgtsb29zZV9ieXRlcxgEIAEoBBISCgpwYWNrX2ZpbGVzGAUgASgEEhIKCnBhY2tfYnl0ZXMYBiABKAQSEwoLaW5kZXhfYnl0ZXMYByABKAQi4gEKDEludGVudFJlY29yZBILCgNvaWQYASABKAkSEQoJaW50ZW50X2lkGAIgASgJEg4KBmRvbWFpbhgDIAEoCRIRCglkaXJlY3RpdmUYBCABKAkSEwoLY2hhbmdlX3VzZGEYBSABKAwSLgoIc2VtYW50aWMYBiABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSSgoVdHJhbnNwb3J0X3JlcXVpcmVtZW50GAcgASgOMisubm9tb3Mua2VybmVsLnYxLkludGVudFRyYW5zcG9ydFJlcXVpcmVtZW50IkYKFEludGVudHNBYm92ZVJlc3BvbnNlEi4KB2ludGVudHMYASADKAsyHS5ub21vcy5rZXJuZWwudjEuSW50ZW50UmVjb3JkInQKFkhpc3RvcnlTdW1tYXJ5UmVzcG9uc2USDAoEaGVhZBgBIAEoCRIOCgZvbGRlc3QYAiABKAkSFAoMY29tbWl0X2NvdW50GAMgASgEEhAKCGNvbXBsZXRlGAQgASgIEhQKDHJlYWNoZWRfYmFzZRgFIAEoCCJCChNOb21pbmFsQ2FsbElkZW50aXR5EhMKC2RvbWFpbl9wYXRoGAEgASgJEhYKDmRpcmVjdGl2ZV9wYXRoGAIgASgJIogBChhMaWZlY3ljbGVJbnN0YWxsSWRlbnRpdHkSHwoXdGFyZ2V0X2Nsb3N1cmVfaWRlbnRpdHkYASABKAkSFAoMaW5zdGFsbGVkX2J5GAIgASgJEjUKBXBoYXNlGAMgASgOMiYubm9tb3Mua2VybmVsLnYxLkxpZmVjeWNsZUluc3RhbGxQaGFzZSJaCh1Xb3Jrc3BhY2VSZXNpZGVuY3lSZXF1aXJlbWVudBIRCgl3b3Jrc3BhY2UYASABKAkSEwoLc291cmNlX2hlYWQYAiABKAkSEQoJZm9sZF9yb290GAMgASgJIrQCChVJbnNwZWN0Q2hhbmdlUmVzcG9uc2USLgoIc2VtYW50aWMYASABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSEQoJaW50ZW50X2lkGAIgASgJEjIKBGNhbGwYAyABKAsyJC5ub21vcy5rZXJuZWwudjEuTm9taW5hbENhbGxJZGVudGl0eRIQCghhdXRob3JlZBgEIAEoCBJEChFsaWZlY3ljbGVfaW5zdGFsbBgFIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5MaWZlY3ljbGVJbnN0YWxsSWRlbnRpdHkSTAoUcmVxdWlyZWRfcmVzaWRlbmNpZXMYBiADKAsyLi5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlUmVzaWRlbmN5UmVxdWlyZW1lbnQiTAocUmVzb2x2ZVN0YXRlUG9zaXRpb25SZXNwb25zZRIaCg1yZXNvbHZlZF9oZWFkGAEgASgJSACIAQFCEAoOX3Jlc29sdmVkX2hlYWQiNAocRW5jb2RlUmVmdXNhbFZlcmRpY3RSZXNwb25zZRIUCgx2ZXJkaWN0X3VzZGEYASABKAwiUQodSW5zcGVjdFJlZnVzYWxWZXJkaWN0UmVzcG9uc2USMAoHdmVyZGljdBgBIAEoCzIfLm5vbW9zLmtlcm5lbC52MS5SZWZ1c2FsVmVyZGljdCJ1CiJQcm92ZUNvbXBhY3Rpb25FcXVpdmFsZW5jZVJlc3BvbnNlEjgKCGV2aWRlbmNlGAEgASgLMiYubm9tb3Mua2VybmVsLnYxLkNvbXBhY3Rpb25FcXVpdmFsZW5jZRIVCg1ldmlkZW5jZV91c2RhGAIgASgMIi8KEFJlYWRCbG9iUmVzcG9uc2USDQoFZm91bmQYASABKAgSDAoEYmxvYhgCIAEoDCIuChJSZXNvbHZlUmVmUmVzcG9uc2USEAoDb2lkGAEgASgJSACIAQFCBgoEX29pZCIrCglSZWZSZWNvcmQSEQoJcmVmZXJlbmNlGAEgASgJEgsKA29pZBgCIAEoCSI8ChBMaXN0UmVmc1Jlc3BvbnNlEigKBHJlZnMYASADKAsyGi5ub21vcy5rZXJuZWwudjEuUmVmUmVjb3JkIg4KDEFja25vd2xlZGdlZCImChdXcml0ZU1ldGFDb21taXRSZXNwb25zZRILCgNvaWQYASABKAkigwEKFkxhd0Nsb3N1cmVJbmZvUmVzcG9uc2USEAoIaWRlbnRpdHkYASABKAkSGQoRcm9vdF9sb2dpY2FsX3BhdGgYAiABKAkSEwoLYXNzZXRfY291bnQYAyABKAQSEgoKcHJpbV9jb3VudBgEIAEoBBITCgtkb21haW5fa2V5cxgFIAMoCSLfAwoYQ2hlY2twb2ludEV4cG9ydFJlc3BvbnNlEg0KBWVtcHR5GAEgASgIEhMKBmN1cnNvchgCIAEoCUgAiAEBEhAKCGZyb250aWVyGAMgASgMEhcKCnN0YXRlX3Jvb3QYBCABKAlIAYgBARISCgpzdGF0ZV90cmVlGAUgASgIEg4KBnBpbm5lZBgGIAEoCBIbChNyZWFkX2luZGV4X3NuYXBzaG90GAcgASgIEiMKG3JlYWRfaW5kZXhfc25hcHNob3RfcGVuZGluZxgIIAEoCBIkChdyZWFkX2luZGV4X3NxbGl0ZV9ieXRlcxgJIAEoBEgCiAEBEiUKGHJlYWRfaW5kZXhfY3VzdG9keV9ieXRlcxgKIAEoBEgDiAEBElAKGXZlcmlmaWVkX2Zyb250aWVyX3JlY2VpcHQYCyABKAsyKC5ub21vcy5rZXJuZWwudjEuVmVyaWZpZWRGcm9udGllclJlY2VpcHRIBIgBAUIJCgdfY3Vyc29yQg0KC19zdGF0ZV9yb290QhoKGF9yZWFkX2luZGV4X3NxbGl0ZV9ieXRlc0IbChlfcmVhZF9pbmRleF9jdXN0b2R5X2J5dGVzQhwKGl92ZXJpZmllZF9mcm9udGllcl9yZWNlaXB0ItcCChhDaGVja3BvaW50SW1wb3J0UmVzcG9uc2USEAoIcmVzdG9yZWQYASABKAgSEwoGcmVhc29uGAIgASgJSACIAQESFwoPZnJvbnRpZXJfc2VlZGVkGAMgASgIEiUKHWZyb250aWVyX3ZlcmlmaWNhdGlvbl9wZW5kaW5nGAQgASgIEhcKD2FnZ3JlZ2F0ZV9jb3VudBgFIAEoBBIrCgVzcGFucxgGIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdBITCgZjdXJzb3IYByABKAlIAYgBARIRCglyZWFkX29ubHkYCCABKAgSFwoPbGF6eV9yZWFkX2luZGV4GAkgASgIEjcKCWFzc3VyYW5jZRgKIAEoDjIkLm5vbW9zLmtlcm5lbC52MS5DaGVja3BvaW50QXNzdXJhbmNlQgkKB19yZWFzb25CCQoHX2N1cnNvciJKChdDYXBhY2l0eVJlc2VydmVSZXNwb25zZRIXCg9hZ2dyZWdhdGVfY291bnQYASABKAQSFgoOcmVzZXJ2ZWRfYnl0ZXMYAiABKAQi+QIKEFJlc3RvcmVNYWluU3BhbnMSEAoIdG90YWxfdXMYASABKAQSGgoSbGl2ZV9yZWZfbG9va3VwX3VzGAIgASgEEhgKEHRhcmdldF9kZWNvZGVfdXMYAyABKAQSJAocY3VzdG9keV9jb21wbGV0ZW5lc3NfcmVhZF91cxgEIAEoBBIZChFxdWFyYW50aW5lX3JlZl91cxgFIAEoBBIlCh1jaGFpbl9zaWduYXR1cmVfbGF3X3JlcGxheV91cxgGIAEoBBIZChF2ZXJkaWN0X2RlY29kZV91cxgHIAEoBBIjChtwcm9tb3RlX2FuZF9jbGVhbnVwX3JlZnNfdXMYCCABKAQSGwoTZnJvbnRpZXJfcmVidWlsZF91cxgJIAEoBBIZChFmcm9udGllcl9zdG9yZV91cxgKIAEoBBI9Cgx2ZXJpZmljYXRpb24YCyABKAsyJy5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5EaWFnbm9zdGljcyLvAQoTUmVzdG9yZU1haW5SZXNwb25zZRIMCgRoZWFkGAEgASgJEhAKCHZlcmlmaWVkGAIgASgIEgwKBHdhbGsYAyABKAkSMAoFc3BhbnMYBCABKAsyIS5ub21vcy5rZXJuZWwudjEuUmVzdG9yZU1haW5TcGFucxItCgd2ZXJkaWN0GAUgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0EjcKCWFzc3VyYW5jZRgGIAEoDjIkLm5vbW9zLmtlcm5lbC52MS5DaGVja3BvaW50QXNzdXJhbmNlEhAKCGFjY2VwdGVkGAcgASgIIpsCCgpOb21vc1ZhbHVlEiUKBG51bGwYASABKAsyFS5ub21vcy5rZXJuZWwudjEuTnVsbEgAEhEKB2Jvb2xlYW4YAiABKAhIABIYCg5zaWduZWRfaW50ZWdlchgDIAEoEkgAEhoKEHVuc2lnbmVkX2ludGVnZXIYBCABKARIABIYCg5mbG9hdGluZ19wb2ludBgFIAEoAUgAEg4KBHRleHQYBiABKAlIABIPCgVieXRlcxgHIAEoDEgAEioKBGxpc3QYCCABKAsyGi5ub21vcy5rZXJuZWwudjEuTm9tb3NMaXN0SAASLgoGb2JqZWN0GAkgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0SABCBgoEa2luZCIGCgROdWxsIjgKCU5vbW9zTGlzdBIrCgZ2YWx1ZXMYASADKAsyGy5ub21vcy5rZXJuZWwudjEuTm9tb3NWYWx1ZSKTAQoLTm9tb3NTdHJ1Y3QSOAoGZmllbGRzGAEgAygLMigubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0LkZpZWxkc0VudHJ5GkoKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIqCgV2YWx1ZRgCIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5Ob21vc1ZhbHVlOgI4ASrpEgoRS2VybmVsUmVmdXNhbENvZGUSIwofS0VSTkVMX1JFRlVTQUxfQ09ERV9VTlNQRUNJRklFRBAAEiUKIUtFUk5FTF9SRUZVU0FMX0NPREVfQkFEX1NJR05BVFVSRRABEiQKIEtFUk5FTF9SRUZVU0FMX0NPREVfVU5BVVRIT1JJWkVEEAISJwojS0VSTkVMX1JFRlVTQUxfQ09ERV9QT0xJQ1lfRElTQUJMRUQQAxIqCiZLRVJORUxfUkVGVVNBTF9DT0RFX1VOQ0VSVElGSUVEX1BPTElDWRAEEiMKH0tFUk5FTF9SRUZVU0FMX0NPREVfUkVGRVJFTlRJQUwQBRIvCitLRVJORUxfUkVGVVNBTF9DT0RFX1BPSU5UX1NUQVRFX1VOQVZBSUxBQkxFEAYSJAogS0VSTkVMX1JFRlVTQUxfQ09ERV9DQVBfRVhDRUVERUQQBxItCilLRVJORUxfUkVGVVNBTF9DT0RFX0NBUF9DT1VOVF9VTkFWQUlMQUJMRRAIEikKJUtFUk5FTF9SRUZVU0FMX0NPREVfRVZJREVOQ0VfVU5CQUNLRUQQCRImCiJLRVJORUxfUkVGVVNBTF9DT0RFX09SUEhBTl9SRUNFSVBUEAoSNgoyS0VSTkVMX1JFRlVTQUxfQ09ERV9SRUNFSVBUX09OX1RFUk1JTkFMX09CTElHQVRJT04QCxIiCh5LRVJORUxfUkVGVVNBTF9DT0RFX05PVF9NSU5URUQQDBIoCiRLRVJORUxfUkVGVVNBTF9DT0RFX0RPTUFJTl9MSUZFQ1lDTEUQDRIpCiVLRVJORUxfUkVGVVNBTF9DT0RFX1RZUEVfVEFHX01JU01BVENIEA4SLAooS0VSTkVMX1JFRlVTQUxfQ09ERV9SRVRJUkVEX1JFQURfU1VSRkFDRRAPEjAKLEtFUk5FTF9SRUZVU0FMX0NPREVfQ1JPU1NfV09SS1NQQUNFX0RFQ0xJTkVEEBASKwonS0VSTkVMX1JFRlVTQUxfQ09ERV9BR0dSRUdBVEVfSU5WQVJJQU5UEBESKwonS0VSTkVMX1JFRlVTQUxfQ09ERV9XT1JLU1BBQ0VfSU5WQVJJQU5UEBISLgoqS0VSTkVMX1JFRlVTQUxfQ09ERV9DQVBUVVJFRF9SRUFEX0NPTkZMSUNUEBMSMgouS0VSTkVMX1JFRlVTQUxfQ09ERV9DT05GTElDVF9TTkFQU0hPVF9SRVFVSVJFRBAUEjQKMEtFUk5FTF9SRUZVU0FMX0NPREVfQ09ORkxJQ1RfU05BUFNIT1RfVU5ERUNMQVJFRBAVEjEKLUtFUk5FTF9SRUZVU0FMX0NPREVfQ09ORkxJQ1RfU05BUFNIT1RfSU5WQUxJRBAWEi8KK0tFUk5FTF9SRUZVU0FMX0NPREVfQ09ORkxJQ1RfU05BUFNIT1RfU1RBTEUQFxIwCixLRVJORUxfUkVGVVNBTF9DT0RFX0NBUFRVUkVEX1JFQURfVU5ERUNMQVJFRBAYEi0KKUtFUk5FTF9SRUZVU0FMX0NPREVfQ0FQVFVSRURfUkVBRF9QUklWQVRFEBkSMAosS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RFRF9SRUFEX1VOREVDTEFSRUQQGhIzCi9LRVJORUxfUkVGVVNBTF9DT0RFX0FUVEVTVEVEX1JFQURfVU5UUlVTVEVEX0tFWRAbEjYKMktFUk5FTF9SRUZVU0FMX0NPREVfQVRURVNURURfUkVBRF9VTlRSVVNURURfU09VUkNFEBwSLAooS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RFRF9SRUFEX0ZPUkdFRBAdEisKJ0tFUk5FTF9SRUZVU0FMX0NPREVfQVRURVNURURfUkVBRF9TVEFMRRAeEi4KKktFUk5FTF9SRUZVU0FMX0NPREVfQVRURVNURURfUkVBRF9PVkVSU0laRRAfEjcKM0tFUk5FTF9SRUZVU0FMX0NPREVfQVRURVNURURfUkVBRF9ESVNIT05PUkVEX1NPVVJDRRAgEjUKMUtFUk5FTF9SRUZVU0FMX0NPREVfRVFVSVZPQ0FUSU9OX0VWSURFTkNFX0lOVkFMSUQQIRIzCi9LRVJORUxfUkVGVVNBTF9DT0RFX0FUVEVTVEFUSU9OX1JFQ0VJUFRfSU5WQUxJRBAiEisKJ0tFUk5FTF9SRUZVU0FMX0NPREVfS0VZX1JPU1RFUl9NSVNNQVRDSBAjEi8KK0tFUk5FTF9SRUZVU0FMX0NPREVfS0VZX0VQT0NIX05PVF9NT05PVE9OSUMQJBIpCiVLRVJORUxfUkVGVVNBTF9DT0RFX1dSSVRFX0VQT0NIX1NUQUxFECUSLQopS0VSTkVMX1JFRlVTQUxfQ09ERV9FTlZFTE9QRV9TSURfTUlTTUFUQ0gQJhIyCi5LRVJORUxfUkVGVVNBTF9DT0RFX1JFVk9LRURfTUVNQkVSX1JFU1VSUkVDVEVEECcSKAokS0VSTkVMX1JFRlVTQUxfQ09ERV9GT1JHRURfUFJJTkNJUEFMECgSKAokS0VSTkVMX1JFRlVTQUxfQ09ERV9PV05FRF9LRVlfQU5DSE9SECkSJgoiS0VSTkVMX1JFRlVTQUxfQ09ERV9PV05FRF9SRUNPVkVSWRAqEiwKKEtFUk5FTF9SRUZVU0FMX0NPREVfU1VSRkFDRURfQkFTSVNfQUhFQUQQKxIyCi5LRVJORUxfUkVGVVNBTF9DT0RFX1NJR05FUl9FUE9DSF9PVVRfT0ZfV0lORE9XECwSJgoiS0VSTkVMX1JFRlVTQUxfQ09ERV9FVk9MVkVfUkVGVVNFRBAtEisKJ0tFUk5FTF9SRUZVU0FMX0NPREVfQVRURVNUQVRJT05fSU5WQUxJRBAuEi0KKUtFUk5FTF9SRUZVU0FMX0NPREVfUEFSRU5UX0RJRF9OT1RfQVRURVNUEC8SKQolS0VSTkVMX1JFRlVTQUxfQ09ERV9DRVJUX0NIQUlOX0JST0tFThAwEioKJktFUk5FTF9SRUZVU0FMX0NPREVfTk9UX1JPT1RFRF9BVF9ST09UEDESKgomS0VSTkVMX1JFRlVTQUxfQ09ERV9ERUxFR0FUSU9OX0lOVkFMSUQQMhIlCiFLRVJORUxfUkVGVVNBTF9DT0RFX1BMQU5fUkVKRUNURUQQMyqKAQoPVmVyaWZ5Q2hhaW5XYWxrEiEKHVZFUklGWV9DSEFJTl9XQUxLX1VOU1BFQ0lGSUVEEAASGgoWVkVSSUZZX0NIQUlOX1dBTEtfRlVMTBABEhwKGFZFUklGWV9DSEFJTl9XQUxLX1NVRkZJWBACEhoKFlZFUklGWV9DSEFJTl9XQUxLX01FTU8QAyqIDAoOUXVlcnlPcGVyYXRpb24SHwobUVVFUllfT1BFUkFUSU9OX1VOU1BFQ0lGSUVEEAASHAoYUVVFUllfT1BFUkFUSU9OX0VYVFJFTVVNEAESJQohUVVFUllfT1BFUkFUSU9OX1BFTkRJTkdfQ09ORkxJQ1RTEAISLAooUVVFUllfT1BFUkFUSU9OX1BFTkRJTkdfQ09ORkxJQ1RfU1VNTUFSWRADEiAKHFFVRVJZX09QRVJBVElPTl9SRUFEX1BPU1RVUkUQBBIfChtRVUVSWV9PUEVSQVRJT05fQ1VSUkVOVF9MQVcQBRIjCh9RVUVSWV9PUEVSQVRJT05fSU5URVJGQUNFX09GRkVSEAYSJwojUVVFUllfT1BFUkFUSU9OX1JFTEFUSU9OX0dBVEVfT0ZGRVIQBxIdChlRVUVSWV9PUEVSQVRJT05fU0NFTkVfTEFXEAgSIQodUVVFUllfT1BFUkFUSU9OX0lOU1RBTExFRF9MQVcQCRIcChhRVUVSWV9PUEVSQVRJT05fREVTQ1JJQkUQChIjCh9RVUVSWV9PUEVSQVRJT05fS0VSTkVMX1JFU09VUkNFEAsSIwofUVVFUllfT1BFUkFUSU9OX0RFVkVMT1BFUl9TUEFOUxAMEikKJVFVRVJZX09QRVJBVElPTl9ERUNMQVJFRF9DQVBBQklMSVRJRVMQDRIdChlRVUVSWV9PUEVSQVRJT05fUkVBRElORVNTEA4SJAogUVVFUllfT1BFUkFUSU9OX1BST0pFQ1RJT05fU1RBVFMQDxIlCiFRVUVSWV9PUEVSQVRJT05fTUVNT1JZX0RST1BfUFJPQkUQEBIYChRRVUVSWV9PUEVSQVRJT05fV0FSTRAREhsKF1FVRVJZX09QRVJBVElPTl9SRUZSRVNIEBISIAocUVVFUllfT1BFUkFUSU9OX1ZFUklGWV9DSEFJThATEiUKIVFVRVJZX09QRVJBVElPTl9ISVNUT1JZX1BSRUZMSUdIVBAUEhkKFVFVRVJZX09QRVJBVElPTl9ST1VURRAVEhgKFFFVRVJZX09QRVJBVElPTl9NSU5UEBYSIQodUVVFUllfT1BFUkFUSU9OX0NSWVBUT19LRVlHRU4QFxIlCiFRVUVSWV9PUEVSQVRJT05fQ1JZUFRPX1NFQUxfRklFTEQQGBIsCihRVUVSWV9PUEVSQVRJT05fQ1JZUFRPX0JMSU5EX0lOREVYX1RPS0VOEBkSKgomUVVFUllfT1BFUkFUSU9OX0NSWVBUT19PV05FRF9TQ09QRV9LRVkQGhIvCitRVUVSWV9PUEVSQVRJT05fQ1JZUFRPX09XTkVEX0RFVklDRV9SRVFVRVNUEBsSMQotUVVFUllfT1BFUkFUSU9OX0NSWVBUT19PV05FRF9QUkVQQVJFX0FQUFJPVkFMEBwSMQotUVVFUllfT1BFUkFUSU9OX0NSWVBUT19PV05FRF9QUkVQQVJFX1JFQ09WRVJZEB0SIwofUVVFUllfT1BFUkFUSU9OX0NSWVBUT19XUkFQX0tFWRAeEiUKIVFVRVJZX09QRVJBVElPTl9DUllQVE9fVU5XUkFQX0tFWRAfEiEKHVFVRVJZX09QRVJBVElPTl9BVVRIT1JfS0VZR0VOECASJAogUVVFUllfT1BFUkFUSU9OX0FUVEVTVEFUSU9OX1NJR04QIRIgChxRVUVSWV9PUEVSQVRJT05fUkVDRUlQVF9QQVRIECISHQoZUVVFUllfT1BFUkFUSU9OX0NFUlRfU0lHThAjEiUKIVFVRVJZX09QRVJBVElPTl9CSVJUSF9UUlVTVF9TVEFURRAkEiEKHVFVRVJZX09QRVJBVElPTl9FUkFfQ0VSVF9TSUdOECUSKAokUVVFUllfT1BFUkFUSU9OX0RFTEVHQVRJT05fQ0VSVF9TSUdOECYSKQolUVVFUllfT1BFUkFUSU9OX0NBTk9OSUNBTElaRV9GUk9OVElFUhAnEisKJ1FVRVJZX09QRVJBVElPTl9DQU5PTklDQUxJWkVfUFJPSkVDVElPThAoKtICChVSZXNpZGVudENvbXBvbmVudEtpbmQSJwojUkVTSURFTlRfQ09NUE9ORU5UX0tJTkRfVU5TUEVDSUZJRUQQABImCiJSRVNJREVOVF9DT01QT05FTlRfS0lORF9GT0xEX1NUQVRFEAESLQopUkVTSURFTlRfQ09NUE9ORU5UX0tJTkRfUkVBRF9NT0RFTF9TUUxJVEUQAhIuCipSRVNJREVOVF9DT01QT05FTlRfS0lORF9SRUFEX01PREVMX0lOREVYRVMQAxItCilSRVNJREVOVF9DT01QT05FTlRfS0lORF9TSEFSRURfQVRUUklCVVRFRBAEEiwKKFJFU0lERU5UX0NPTVBPTkVOVF9LSU5EX1dPUktTUEFDRV9DQUNIRVMQBRIsCihSRVNJREVOVF9DT01QT05FTlRfS0lORF9HSVRfT0JKRUNUX0NBQ0hFEAYqbAoTS2VybmVsTGF3Q2FwYWJpbGl0eRIlCiFLRVJORUxfTEFXX0NBUEFCSUxJVFlfVU5TUEVDSUZJRUQQABIuCipLRVJORUxfTEFXX0NBUEFCSUxJVFlfU1RBR0VfWkVST19CT09UU1RSQVAQASpZChVDaGVja3BvaW50Q29tcHJlc3Npb24SHwobQ0hFQ0tQT0lOVF9DT01QUkVTU0lPTl9OT05FEAASHwobQ0hFQ0tQT0lOVF9DT01QUkVTU0lPTl9HWklQEAEqkQEKHENoZWNrcG9pbnRWZXJpZmljYXRpb25Qb2xpY3kSMwovQ0hFQ0tQT0lOVF9WRVJJRklDQVRJT05fUE9MSUNZX1ZFUklGWV9DQU5PTklDQUwQABI8CjhDSEVDS1BPSU5UX1ZFUklGSUNBVElPTl9QT0xJQ1lfVFJVU1RfUFJFVklPVVNMWV9WRVJJRklFRBABKoABChNDaGVja3BvaW50QXNzdXJhbmNlEiQKIENIRUNLUE9JTlRfQVNTVVJBTkNFX1VOU1BFQ0lGSUVEEAASIAocQ0hFQ0tQT0lOVF9BU1NVUkFOQ0VfVFJVU1RFRBABEiEKHUNIRUNLUE9JTlRfQVNTVVJBTkNFX1ZFUklGSUVEEAIqqAEKGkludGVudFRyYW5zcG9ydFJlcXVpcmVtZW50EiwKKElOVEVOVF9UUkFOU1BPUlRfUkVRVUlSRU1FTlRfVU5TUEVDSUZJRUQQABIuCipJTlRFTlRfVFJBTlNQT1JUX1JFUVVJUkVNRU5UX1NFQUxFRF9DSEFOR0UQARIsCihJTlRFTlRfVFJBTlNQT1JUX1JFUVVJUkVNRU5UX0NPTU1JVF9UUkVFEAIqiQEKFUxpZmVjeWNsZUluc3RhbGxQaGFzZRInCiNMSUZFQ1lDTEVfSU5TVEFMTF9QSEFTRV9VTlNQRUNJRklFRBAAEiIKHkxJRkVDWUNMRV9JTlNUQUxMX1BIQVNFX0FDVElWRRABEiMKH0xJRkVDWUNMRV9JTlNUQUxMX1BIQVNFX1BFTkRJTkcQAjJZChJOb21vc0tlcm5lbFNlcnZpY2USQwoEQ2FsbBIcLm5vbW9zLmtlcm5lbC52MS5DYWxsUmVxdWVzdBodLm5vbW9zLmtlcm5lbC52MS5DYWxsUmVzcG9uc2ViBnByb3RvMw");
1555
+ file_nomos_kernel_v1_kernel = /* @__PURE__ */ fileDesc("Chxub21vcy9rZXJuZWwvdjEva2VybmVsLnByb3RvEg9ub21vcy5rZXJuZWwudjEi6wYKC0NhbGxSZXF1ZXN0EhgKEHByb3RvY29sX3ZlcnNpb24YASABKA0SEgoKcmVxdWVzdF9pZBgCIAEoCRIsCgRvcGVuGAogASgLMhwubm9tb3Mua2VybmVsLnYxLk9wZW5SZXF1ZXN0SAASLgoFb2ZmZXIYCyABKAsyHS5ub21vcy5rZXJuZWwudjEuT2ZmZXJSZXF1ZXN0SAASLgoFcXVlcnkYDCABKAsyHS5ub21vcy5rZXJuZWwudjEuUXVlcnlSZXF1ZXN0SAASMAoGb3V0Ym94GA0gASgLMh4ubm9tb3Mua2VybmVsLnYxLk91dGJveFJlcXVlc3RIABIsCgRzeW5jGA4gASgLMhwubm9tb3Mua2VybmVsLnYxLlN5bmNSZXF1ZXN0SAASMgoHY3VzdG9keRgPIAEoCzIfLm5vbW9zLmtlcm5lbC52MS5DdXN0b2R5UmVxdWVzdEgAEiwKBHRlc3QYECABKAsyHC5ub21vcy5rZXJuZWwudjEuVGVzdFJlcXVlc3RIABJIChNzaWduX3ByZXBhcmVkX29mZmVyGBEgASgLMikubm9tb3Mua2VybmVsLnYxLlNpZ25QcmVwYXJlZE9mZmVyUmVxdWVzdEgAEkoKFHByZXBhcmVfcmVtb3RlX29mZmVyGBIgASgLMioubm9tb3Mua2VybmVsLnYxLlByZXBhcmVSZW1vdGVPZmZlclJlcXVlc3RIABJOChZzaWduX29mZmVyX3ByZXBhcmF0aW9uGBMgASgLMiwubm9tb3Mua2VybmVsLnYxLlNpZ25PZmZlclByZXBhcmF0aW9uUmVxdWVzdEgAEk4KFnNpZ25fYmlydGhfY2VydGlmaWNhdGUYFCABKAsyLC5ub21vcy5rZXJuZWwudjEuU2lnbkJpcnRoQ2VydGlmaWNhdGVSZXF1ZXN0SAASSwoUaW5pdGlhbGl6ZV93b3Jrc3BhY2UYFSABKAsyKy5ub21vcy5rZXJuZWwudjEuSW5pdGlhbGl6ZVdvcmtzcGFjZVJlcXVlc3RIABJOChZhcHBseV93b3Jrc3BhY2VfZWZmZWN0GBYgASgLMiwubm9tb3Mua2VybmVsLnYxLkFwcGx5V29ya3NwYWNlRWZmZWN0UmVxdWVzdEgAQgsKCW9wZXJhdGlvbiKkBwoMQ2FsbFJlc3BvbnNlEhgKEHByb3RvY29sX3ZlcnNpb24YASABKA0SEgoKcmVxdWVzdF9pZBgCIAEoCRIrCgdmYWlsdXJlGAogASgLMhgubm9tb3Mua2VybmVsLnYxLkZhaWx1cmVIABItCgRvcGVuGAsgASgLMh0ubm9tb3Mua2VybmVsLnYxLk9wZW5SZXNwb25zZUgAEi8KBW9mZmVyGAwgASgLMh4ubm9tb3Mua2VybmVsLnYxLk9mZmVyUmVzcG9uc2VIABIvCgVxdWVyeRgNIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5RdWVyeVJlc3BvbnNlSAASMQoGb3V0Ym94GA4gASgLMh8ubm9tb3Mua2VybmVsLnYxLk91dGJveFJlc3BvbnNlSAASLQoEc3luYxgPIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5TeW5jUmVzcG9uc2VIABIzCgdjdXN0b2R5GBAgASgLMiAubm9tb3Mua2VybmVsLnYxLkN1c3RvZHlSZXNwb25zZUgAEi0KBHRlc3QYESABKAsyHS5ub21vcy5rZXJuZWwudjEuVGVzdFJlc3BvbnNlSAASSQoTc2lnbl9wcmVwYXJlZF9vZmZlchgSIAEoCzIqLm5vbW9zLmtlcm5lbC52MS5TaWduUHJlcGFyZWRPZmZlclJlc3BvbnNlSAASSwoUcHJlcGFyZV9yZW1vdGVfb2ZmZXIYEyABKAsyKy5ub21vcy5rZXJuZWwudjEuUHJlcGFyZVJlbW90ZU9mZmVyUmVzcG9uc2VIABJPChZzaWduX29mZmVyX3ByZXBhcmF0aW9uGBQgASgLMi0ubm9tb3Mua2VybmVsLnYxLlNpZ25PZmZlclByZXBhcmF0aW9uUmVzcG9uc2VIABJPChZzaWduX2JpcnRoX2NlcnRpZmljYXRlGBUgASgLMi0ubm9tb3Mua2VybmVsLnYxLlNpZ25CaXJ0aENlcnRpZmljYXRlUmVzcG9uc2VIABJMChRpbml0aWFsaXplX3dvcmtzcGFjZRgWIAEoCzIsLm5vbW9zLmtlcm5lbC52MS5Jbml0aWFsaXplV29ya3NwYWNlUmVzcG9uc2VIABJPChZhcHBseV93b3Jrc3BhY2VfZWZmZWN0GBcgASgLMi0ubm9tb3Mua2VybmVsLnYxLkFwcGx5V29ya3NwYWNlRWZmZWN0UmVzcG9uc2VIAEIJCgdvdXRjb21lIlcKB0ZhaWx1cmUSDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEi0KB2RldGFpbHMYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QiPAoMT3BlblJlc3BvbnNlEiwKBnJlc3VsdBgBIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdCL3AgoNT2ZmZXJSZXNwb25zZRIyCghhZG1pdHRlZBgBIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5PZmZlckFkbWl0dGVkSAASMAoHcmVmdXNlZBgCIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5PZmZlclJlZnVzZWRIABI7Cg1kZWFkX2xldHRlcmVkGAMgASgLMiIubm9tb3Mua2VybmVsLnYxLk9mZmVyRGVhZExldHRlcmVkSAASOAoLcXVhcmFudGluZWQYBCABKAsyIS5ub21vcy5rZXJuZWwudjEuT2ZmZXJRdWFyYW50aW5lZEgAEkoKFWJsb2NrZWRfb25fZGVwZW5kZW5jeRgFIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5PZmZlckJsb2NrZWRPbkRlcGVuZGVuY3lIABIyCghwcmVwYXJlZBgGIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5PZmZlclByZXBhcmVkSABCCQoHb3V0Y29tZSKDAwoNT2ZmZXJBZG1pdHRlZBIMCgRoZWFkGAEgASgJEhEKCWludGVudF9pZBgCIAEoCRIXCgppbnRlbnRfb3V0GAMgASgJSACIAQESMwoHY3JlYXRlZBgEIAMoCzIiLm5vbW9zLmtlcm5lbC52MS5PZmZlckFnZ3JlZ2F0ZVJlZhI0CghhZmZlY3RlZBgFIAMoCzIiLm5vbW9zLmtlcm5lbC52MS5PZmZlckFnZ3JlZ2F0ZVJlZhIsCgRib3JuGAYgAygLMh4ubm9tb3Mua2VybmVsLnYxLkJvcm5Xb3Jrc3BhY2USNQoOYmlydGhfb3V0Y29tZXMYByADKAsyHS5ub21vcy5rZXJuZWwudjEuQmlydGhPdXRjb21lEjcKDGtlcm5lbF9zcGFucxgIIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxTcGFuc0gBiAEBEg8KB2RyeV9ydW4YCSABKAhCDQoLX2ludGVudF9vdXRCDwoNX2tlcm5lbF9zcGFucyItChFPZmZlckFnZ3JlZ2F0ZVJlZhIMCgR0eXBlGAEgASgJEgoKAmlkGAIgASgJIjAKDUJvcm5Xb3Jrc3BhY2USEQoJd29ya3NwYWNlGAEgASgJEgwKBGhlYWQYAiABKAkiiQMKDEJpcnRoT3V0Y29tZRIWCgl3b3Jrc3BhY2UYASABKAlIAIgBARIzCgZzdGF0dXMYAiABKA4yIy5ub21vcy5rZXJuZWwudjEuQmlydGhPdXRjb21lU3RhdHVzEhMKBnJlYXNvbhgDIAEoCUgBiAEBEhEKBGNvZGUYBCABKAlIAogBARIQCghyZXBsYXllZBgFIAEoCBIVCghsYXdfaGFzaBgGIAEoCUgDiAEBEh0KEHBhcmVudF93b3Jrc3BhY2UYByABKAlIBIgBARIcCg9jaGlsZF93b3Jrc3BhY2UYCCABKAlIBYgBARInChpjZXJ0aWZpY2F0ZV9yZWZ1c2FsX3JlYXNvbhgJIAEoCUgGiAEBQgwKCl93b3Jrc3BhY2VCCQoHX3JlYXNvbkIHCgVfY29kZUILCglfbGF3X2hhc2hCEwoRX3BhcmVudF93b3Jrc3BhY2VCEgoQX2NoaWxkX3dvcmtzcGFjZUIdChtfY2VydGlmaWNhdGVfcmVmdXNhbF9yZWFzb24iLwoQS2VybmVsU3Bhbk1ldHJpYxIMCgRuYW1lGAEgASgJEg0KBXZhbHVlGAIgASgEIqMBCgpLZXJuZWxTcGFuEg0KBWxhYmVsGAEgASgJEhAKCHRvdGFsX3VzGAIgASgEEg8KB3JlY29yZHMYAyABKAQSMQoGcGhhc2VzGAQgAygLMiEubm9tb3Mua2VybmVsLnYxLktlcm5lbFNwYW5NZXRyaWMSMAoFbm90ZXMYBSADKAsyIS5ub21vcy5rZXJuZWwudjEuS2VybmVsU3Bhbk1ldHJpYyJxCgtLZXJuZWxTcGFucxIvCgpvcGVyYXRpb25zGAEgAygLMhsubm9tb3Mua2VybmVsLnYxLktlcm5lbFNwYW4SMQoGZW5naW5lGAIgAygLMiEubm9tb3Mua2VybmVsLnYxLktlcm5lbFNwYW5NZXRyaWMilgEKDE9mZmVyUmVmdXNlZBIVCghvZmZlcl9pZBgBIAEoCUgAiAEBEi8KB3JlZnVzYWwYAiABKAsyHi5ub21vcy5rZXJuZWwudjEuS2VybmVsUmVmdXNhbBIxCgtkaWFnbm9zdGljcxgDIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdEILCglfb2ZmZXJfaWQiegoRT2ZmZXJEZWFkTGV0dGVyZWQSFQoIb2ZmZXJfaWQYASABKAlIAIgBARIOCgZyZWFzb24YAiABKAkSMQoLZGlhZ25vc3RpY3MYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3RCCwoJX29mZmVyX2lkIq4BChBPZmZlclF1YXJhbnRpbmVkEhUKCG9mZmVyX2lkGAEgASgJSACIAQESGQoRYXV0aG9yZWRfbGF3X2hhc2gYAiABKAkSGAoQY3VycmVudF9sYXdfaGFzaBgDIAEoCRIOCgZyZWFzb24YBCABKAkSMQoLZGlhZ25vc3RpY3MYBSABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3RCCwoJX29mZmVyX2lkIoEBChhPZmZlckJsb2NrZWRPbkRlcGVuZGVuY3kSFQoIb2ZmZXJfaWQYASABKAlIAIgBARIOCgZkZXRhaWwYAiABKAkSMQoLZGlhZ25vc3RpY3MYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3RCCwoJX29mZmVyX2lkIoUBCg1PZmZlclByZXBhcmVkEhwKFGF1dGhvcmVkX2NoYW5nZV91c2RhGAEgASgMEhkKEXdvcmtzcGFjZV9iaW5kaW5nGAIgASgJEhgKEHByZXBhcmVkX2F0X2hlYWQYAyABKAkSIQoZYXV0aG9yX3NpZ25hdHVyZV9yZXF1aXJlZBgEIAEoCCJqChhTaWduUHJlcGFyZWRPZmZlclJlcXVlc3QSHAoUYXV0aG9yZWRfY2hhbmdlX3VzZGEYASABKAwSGQoRd29ya3NwYWNlX2JpbmRpbmcYAiABKAkSFQoNYXV0aG9yX3NlY3JldBgDIAEoDCI3ChlTaWduUHJlcGFyZWRPZmZlclJlc3BvbnNlEhoKEnNpZ25lZF9jaGFuZ2VfdXNkYRgBIAEoDCKtAQoZUHJlcGFyZVJlbW90ZU9mZmVyUmVxdWVzdBIVCg1vZmZlcl9yZXF1ZXN0GAEgASgMEhkKEXdvcmtzcGFjZV9iaW5kaW5nGAIgASgJEhgKEHByZXBhcmVkX2F0X2hlYWQYAyABKAkSEgoKcHVibGljX2tleRgEIAEoDBIRCglzaWduYXR1cmUYBSABKAwSHQoVcmVxdWlyZWRfY3VzdG9keV9oZWFkGAYgASgJIlAKGU9mZmVyUHJlcGFyYXRpb25DaGFsbGVuZ2USGQoRd29ya3NwYWNlX2JpbmRpbmcYASABKAkSGAoQcHJlcGFyZWRfYXRfaGVhZBgCIAEoCSKZAQoaUHJlcGFyZVJlbW90ZU9mZmVyUmVzcG9uc2USPwoJY2hhbGxlbmdlGAEgASgLMioubm9tb3Mua2VybmVsLnYxLk9mZmVyUHJlcGFyYXRpb25DaGFsbGVuZ2VIABIvCgVvZmZlchgCIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5PZmZlclJlc3BvbnNlSABCCQoHb3V0Y29tZSKAAQobU2lnbk9mZmVyUHJlcGFyYXRpb25SZXF1ZXN0EhUKDW9mZmVyX3JlcXVlc3QYASABKAwSGQoRd29ya3NwYWNlX2JpbmRpbmcYAiABKAkSGAoQcHJlcGFyZWRfYXRfaGVhZBgDIAEoCRIVCg1hdXRob3Jfc2VjcmV0GAQgASgMIkUKHFNpZ25PZmZlclByZXBhcmF0aW9uUmVzcG9uc2USEgoKcHVibGljX2tleRgBIAEoDBIRCglzaWduYXR1cmUYAiABKAwigQEKDUtlcm5lbFJlZnVzYWwSMAoEY29kZRgBIAEoDjIiLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxSZWZ1c2FsQ29kZRIPCgdtZXNzYWdlGAIgASgJEi0KB2RldGFpbHMYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3Qi2AUKDVF1ZXJ5UmVzcG9uc2USFQoLcmVzdWx0X3VzZGEYAiABKAxIABIsCgV2YWx1ZRgBIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5Ob21vc1ZhbHVlSAASSgoTYXV0aG9yaXphdGlvbl9jaGVjaxgKIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uQ2hlY2tSZXNwb25zZUgAEkwKFGF1dGhvcml6YXRpb25fZXhwYW5kGAsgASgLMiwubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25FeHBhbmRSZXNwb25zZUgAEj4KDW9zZ2lfcmVzb3VyY2UYDCABKAsyJS5ub21vcy5rZXJuZWwudjEuT3NnaVJlc291cmNlUmVzcG9uc2VIABJKChNmcm9udGllcl90cmFuc2l0aW9uGA0gASgLMisubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvblJlc3BvbnNlSAASSwoUb3duZWRfZGV2aWNlX3JlcXVlc3QYDiABKAsyKy5ub21vcy5rZXJuZWwudjEuT3duZWREZXZpY2VSZXF1ZXN0UmVzcG9uc2VIABJPChZvd25lZF9wcmVwYXJlX2FwcHJvdmFsGA8gASgLMi0ubm9tb3Mua2VybmVsLnYxLk93bmVkUHJlcGFyZUFwcHJvdmFsUmVzcG9uc2VIABIXCg1pbnRlZ2VyX3ZhbHVlGBAgASgSSAASUAoWYXV0aGVudGljYXRpb25fcG9zdHVyZRgRIAEoCzIuLm5vbW9zLmtlcm5lbC52MS5BdXRoZW50aWNhdGlvblBvc3R1cmVSZXNwb25zZUgAEkkKGHZlcmlmeV9jaGFpbl9kaWFnbm9zdGljcxgUIAEoCzInLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpbkRpYWdub3N0aWNzQggKBnJlc3VsdCJICg1Pc2dpQXR0cmlidXRlEgwKBG5hbWUYASABKAkSDQoFdmFsdWUYAiABKAkSEQoEdHlwZRgDIAEoCUgAiAEBQgcKBV90eXBlIiwKDU9zZ2lEaXJlY3RpdmUSDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCSKLAQoOT3NnaUNhcGFiaWxpdHkSEQoJbmFtZXNwYWNlGAEgASgJEjIKCmF0dHJpYnV0ZXMYAiADKAsyHi5ub21vcy5rZXJuZWwudjEuT3NnaUF0dHJpYnV0ZRIyCgpkaXJlY3RpdmVzGAMgAygLMh4ubm9tb3Mua2VybmVsLnYxLk9zZ2lEaXJlY3RpdmUijAEKD09zZ2lSZXF1aXJlbWVudBIRCgluYW1lc3BhY2UYASABKAkSMgoKYXR0cmlidXRlcxgCIAMoCzIeLm5vbW9zLmtlcm5lbC52MS5Pc2dpQXR0cmlidXRlEjIKCmRpcmVjdGl2ZXMYAyADKAsyHi5ub21vcy5rZXJuZWwudjEuT3NnaURpcmVjdGl2ZSKaAQoUT3NnaVJlc291cmNlUmVzcG9uc2USEwoLc291cmNlX3VzZGEYASABKAwSNQoMY2FwYWJpbGl0aWVzGAIgAygLMh8ubm9tb3Mua2VybmVsLnYxLk9zZ2lDYXBhYmlsaXR5EjYKDHJlcXVpcmVtZW50cxgDIAMoCzIgLm5vbW9zLmtlcm5lbC52MS5Pc2dpUmVxdWlyZW1lbnQi5wEKE1ZlcmlmeUNoYWluU3RlcFNwYW4SDQoFaW5kZXgYASABKAQSEgoKY29tbWl0X29pZBgCIAEoCRIOCgZkb21haW4YAyABKAkSEQoJZGlyZWN0aXZlGAQgASgJEhAKCHRvdGFsX3VzGAUgASgEEjYKBnBoYXNlcxgGIAEoCzImLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpblN0ZXBQaGFzZXMSQAoOZW5naW5lX3RpbWluZ3MYByADKAsyKC5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5FbmdpbmVUaW1pbmcimAIKFVZlcmlmeUNoYWluU3RlcFBoYXNlcxIeChZydW50aW1lX2xhd19yZWZyZXNoX3VzGAEgASgEEhMKC21hbmlmZXN0X3VzGAIgASgEEhkKEWxhd19yZXNvbHV0aW9uX3VzGAMgASgEEh0KFW1hbmFnZWRfdHJhbnNpdGlvbl91cxgEIAEoBBIUCgxwcmluY2lwYWxfdXMYBSABKAQSFAoMZXZvbHV0aW9uX3VzGAYgASgEEhoKEmNvbG9jYXRlZF9yZWFkc191cxgHIAEoBBIhChl0eXBlZF9pbnN0YWxsX3ZlcmlmaWVyX3VzGAggASgEEhQKDGFkbWlzc2lvbl91cxgJIAEoBBIPCgdmb2xkX3VzGAogASgEItoFChZWZXJpZnlDaGFpbkRpYWdub3N0aWNzEi4KBHdhbGsYASABKA4yIC5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5XYWxrEhAKCHRvdGFsX3VzGAIgASgEEhsKE3JlZmVyZW5jZV9sb29rdXBfdXMYAyABKAQSGgoScmVwb3NpdG9yeV9vcGVuX3VzGAQgASgEEhUKDWNoYWluX3JlYWRfdXMYBSABKAQSFgoOZW5naW5lX2luaXRfdXMYBiABKAQSGAoQdGltZWxpbmVfcmVhZF91cxgHIAEoBBIYChBsYXdfaHlkcmF0aW9uX3VzGAggASgEEhsKE3JlY292ZXJ5X3ByZXNjYW5fdXMYCSABKAQSGAoQZm9sZF9mcm9udGllcl91cxgKIAEoBBIzCgVzdGVwcxgLIAMoCzIkLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpblN0ZXBTcGFuEkAKDmVuZ2luZV90aW1pbmdzGAwgAygLMigubm9tb3Mua2VybmVsLnYxLlZlcmlmeUNoYWluRW5naW5lVGltaW5nEk0KFWxhd19oeWRyYXRpb25fdGltaW5ncxgNIAMoCzIuLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpbkxhd0h5ZHJhdGlvblRpbWluZxIZChFsYXdfY2xvc3VyZV9jb3VudBgOIAEoBBIeChZsYXdfY2xvc3VyZV9jYWNoZV9oaXRzGA8gASgEEiAKGGxhd19jbG9zdXJlX2NhY2hlX21pc3NlcxgQIAEoBBISCgpzdGVwX2NvdW50GBEgASgEEhUKDXN0ZXBfdG90YWxfdXMYEiABKAQSQQoRc3RlcF9waGFzZV90b3RhbHMYEyABKAsyJi5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5TdGVwUGhhc2VzEhoKEm9taXR0ZWRfc3RlcF9jb3VudBgUIAEoBCI6ChdWZXJpZnlDaGFpbkVuZ2luZVRpbWluZxINCgVwaGFzZRgBIAEoCRIQCgh0b3RhbF91cxgCIAEoBCJACh1WZXJpZnlDaGFpbkxhd0h5ZHJhdGlvblRpbWluZxINCgVwaGFzZRgBIAEoCRIQCgh0b3RhbF91cxgCIAEoBCIhChJIdHRwc091dGJvdW5kUm91dGUSCwoDdXJsGAEgASgJIisKFldvcmtzcGFjZU91dGJvdW5kUm91dGUSEQoJd29ya3NwYWNlGAEgASgJIvYBChtBcHBseVdvcmtzcGFjZUVmZmVjdFJlcXVlc3QSMAoGc291cmNlGAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBIVCg1zb3VyY2VfY29tbWl0GAIgASgJEhkKEXNvdXJjZV9vZmZlcl9wYXRoGAMgASgJEjAKBnRhcmdldBgEIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSHAoUc291cmNlX2V2aWRlbmNlX3BhY2sYBSABKAwSIwobYWRtaXNzaW9uX2NoZWNrcG9pbnRfc2VjcmV0GAYgASgMImcKHEFwcGx5V29ya3NwYWNlRWZmZWN0UmVzcG9uc2USLgoGcmVzdWx0GAEgASgLMh4ubm9tb3Mua2VybmVsLnYxLk9mZmVyUmVzcG9uc2USFwoPYWxyZWFkeV9hcHBsaWVkGAIgASgIIpMECg1PdXRib3VuZE9mZmVyEgoKAmlkGAEgASgJEhcKC2Rlc3RpbmF0aW9uGAIgASgJQgIYARIUCgxzZWFsZWRfb2ZmZXIYAyABKAwSFAoMY29udGVudF90eXBlGAQgASgJEhgKEHNvdXJjZV93b3Jrc3BhY2UYBSABKAkSFAoMY3VzdG9keV9oZWFkGAYgASgJEhcKD2NhdXNlZF9ieV9vZmZlchgHIAEoCRIbChNzY2hlZHVsZWRfYXRfbWlsbGlzGAggASgEEhoKEmRlYWRsaW5lX2F0X21pbGxpcxgJIAEoBBIUCgxjdXN0b2R5X3BhdGgYCiABKAkSEwoLY3VzdG9keV9vaWQYCyABKAkSFAoMZGVsaXZlcnlfcmVmGAwgASgJEhUKDW9ibGlnYXRpb25faWQYDSABKAkSOgoLaHR0cHNfcm91dGUYDiABKAsyIy5ub21vcy5rZXJuZWwudjEuSHR0cHNPdXRib3VuZFJvdXRlSAASQgoPd29ya3NwYWNlX3JvdXRlGA8gASgLMicubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZU91dGJvdW5kUm91dGVIABIVCg1zb3VyY2VfY29tbWl0GBAgASgJEhwKFHNvdXJjZV9ldmlkZW5jZV9wYWNrGBEgASgMEhkKEXNvdXJjZV9vZmZlcl9wYXRoGBIgASgJQgcKBXJvdXRlIngKDk91dGJveFJlc3BvbnNlEi4KBm9mZmVycxgBIAMoCzIeLm5vbW9zLmtlcm5lbC52MS5PdXRib3VuZE9mZmVyEh8KEm5leHRfZHVlX2F0X21pbGxpcxgCIAEoBEgAiAEBQhUKE19uZXh0X2R1ZV9hdF9taWxsaXMiPAoMU3luY1Jlc3BvbnNlEiwKBnJlc3VsdBgBIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdCJCCg9Xb3Jrc3BhY2VUYXJnZXQSDAoEcmVwbxgBIAEoCRIRCgl3b3Jrc3BhY2UYAiABKAkSDgoGYnJhbmNoGAMgASgJIk4KC09wZW5SZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSDQoFc3BhbnMYAiABKAgioQEKGkluaXRpYWxpemVXb3Jrc3BhY2VSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSGwoTY29udHJvbGxlcl9sYXdfdXNkehgCIAEoDBI0CglhdXRob3JpbmcYAyABKAsyIS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaW5nT3B0aW9ucyJIChtJbml0aWFsaXplV29ya3NwYWNlUmVzcG9uc2USDAoEaGVhZBgBIAEoCRIbChNjb250cm9sbGVyX2xhd19oYXNoGAIgASgJIm4KDURpcmVjdGl2ZUNhbGwSDgoGZG9tYWluGAEgASgJEhEKCWRpcmVjdGl2ZRgCIAEoCRITCgljYWxsX3VzZGEYAyABKAxIAEIGCgRib2R5SgQIBBAFUgdwYXlsb2FkUg5sZWdhY3lfcGF5bG9hZCLWAgoQQXV0aG9yaW5nT3B0aW9ucxINCgVhY3RvchgBIAEoCRISCgphdXRoX3Rva2VuGAIgASgMEhUKDWF1dGhvcl9zZWNyZXQYAyABKAwSHQoQdmFsaWRfZnJvbV9lcG9jaBgEIAEoBEgAiAEBEh8KEnByaW5jaXBhbF92ZXJpZmllZBgFIAEoCEgBiAEBEgsKA3JuZxgGIAMoARIYChBkZWZlcl9wcm9qZWN0aW9uGAcgASgIEg0KBXNwYW5zGAggASgIEg8KB2RyeV9ydW4YCSABKAgSEAoIc2VxdWVuY2UYCiABKAQSLQoFY2xvY2sYCyABKAsyHi5ub21vcy5rZXJuZWwudjEuQ2FwdHVyZWRDbG9jaxIUCgxwcmVwYXJlX29ubHkYDCABKAhCEwoRX3ZhbGlkX2Zyb21fZXBvY2hCFQoTX3ByaW5jaXBhbF92ZXJpZmllZCJKCg1DYXB0dXJlZENsb2NrEhcKD3BoeXNpY2FsX21pbGxpcxgBIAEoBBIPCgdsb2dpY2FsGAIgASgNEg8KB3JlcGxpY2EYAyABKAQiwwMKEEJpcnRoQ2VydGlmaWNhdGUSDQoFY2hpbGQYASABKAkSDwoHZm91bmRlchgCIAEoCRIQCgh2ZXJpZmllZBgDIAEoCBISCgpwYXJlbnRfa2V5GAQgASgMEhEKCXBhcmVudF9pZBgFIAEoCRINCgVlcG9jaBgGIAEoAxIRCglzaWduYXR1cmUYByABKAwSGQoMdmVyaWZpZWRfdmlhGAggASgJSACIAQESFgoJaWRwX3Rva2VuGAkgASgJSAGIAQESGwoOY2FwdHVyZWRfY2xvY2sYCiABKANIAogBARIhChRhdXRoX3Byb3ZpZGVyX2lzc3VlchgLIAEoCUgDiAEBEh8KEmF1dGhfcHJvdmlkZXJfandrcxgMIAEoCUgEiAEBEiMKFmF1dGhfcHJvdmlkZXJfYXVkaWVuY2UYDSABKAlIBYgBAUIPCg1fdmVyaWZpZWRfdmlhQgwKCl9pZHBfdG9rZW5CEQoPX2NhcHR1cmVkX2Nsb2NrQhcKFV9hdXRoX3Byb3ZpZGVyX2lzc3VlckIVChNfYXV0aF9wcm92aWRlcl9qd2tzQhkKF19hdXRoX3Byb3ZpZGVyX2F1ZGllbmNlImwKG1NpZ25CaXJ0aENlcnRpZmljYXRlUmVxdWVzdBI2CgtjZXJ0aWZpY2F0ZRgBIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5CaXJ0aENlcnRpZmljYXRlEhUKDXNpZ25lcl9zZWNyZXQYAiABKAwiVgocU2lnbkJpcnRoQ2VydGlmaWNhdGVSZXNwb25zZRI2CgtjZXJ0aWZpY2F0ZRgBIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5CaXJ0aENlcnRpZmljYXRlIsACChRNb2RlbExpZmVjeWNsZUludGVudBI7CglvcGVyYXRpb24YASABKA4yKC5ub21vcy5rZXJuZWwudjEuTW9kZWxMaWZlY3ljbGVPcGVyYXRpb24SFAoMaW5zdGFsbGVkX2J5GAIgASgJEhcKCnN1cGVyc2VkZXMYAyABKAlIAIgBARJECgp0cmFuc2l0aW9uGAQgASgLMisubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvblJlc3BvbnNlSAGIAQESFQoIcmVwbGFjZXMYBSABKAlIAogBARIeChFhY2NlcHRhbmNlX3JlYXNvbhgGIAEoCUgDiAEBQg0KC19zdXBlcnNlZGVzQg0KC190cmFuc2l0aW9uQgsKCV9yZXBsYWNlc0IUChJfYWNjZXB0YW5jZV9yZWFzb24i3gQKDE9mZmVyUmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0Ei4KBGNhbGwYAiABKAsyHi5ub21vcy5rZXJuZWwudjEuRGlyZWN0aXZlQ2FsbEgAEhwKEnNlYWxlZF9jaGFuZ2VfdXNkYRgHIAEoDEgAEkAKD21vZGVsX2xpZmVjeWNsZRgMIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5Nb2RlbExpZmVjeWNsZUludGVudEgAEjQKCWF1dGhvcmluZxgDIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpbmdPcHRpb25zEhAKCGxhd191c2R6GAQgASgMEjMKDGF0dGVzdGF0aW9ucxgFIAMoCzIdLm5vbW9zLmtlcm5lbC52MS5BdHRlc3RlZFJlYWQSPQoSY29uZmxpY3Rfc25hcHNob3RzGAYgAygLMiEubm9tb3Mua2VybmVsLnYxLkNvbmZsaWN0U25hcHNob3QSGgoSZXhlY3V0aW9uX2xhd191c2R6GAggASgMEiAKE2NvbnRyb2xsZXJfbGF3X2hhc2gYCSABKAlIAYgBARIdChBjYW5kaWRhdGVfY29tbWl0GAogASgJSAKIAQESPAoRYmlydGhfY2VydGlmaWNhdGUYCyABKAsyIS5ub21vcy5rZXJuZWwudjEuQmlydGhDZXJ0aWZpY2F0ZUIICgZpbnRlbnRCFgoUX2NvbnRyb2xsZXJfbGF3X2hhc2hCEwoRX2NhbmRpZGF0ZV9jb21taXQikwEKDEF0dGVzdGVkUmVhZBIQCghxdWVyeV9pZBgBIAEoCRIvCglhcmd1bWVudHMYAiABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSKwoGcmVzdWx0GAMgASgLMhsubm9tb3Mua2VybmVsLnYxLk5vbW9zVmFsdWUSEwoLYXR0ZXN0YXRpb24YBCABKAwidQoQQ29uZmxpY3RTbmFwc2hvdBIWCg5hZ2dyZWdhdGVfdHlwZRgBIAEoCRIUCgxhZ2dyZWdhdGVfaWQYAiABKAkSDQoFZmllbGQYAyABKAkSFQoNdGFyZ2V0X3NjaGVtYRgEIAEoCRINCgV0b2tlbhgFIAEoCSKaCgoMUXVlcnlSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSMgoJYXV0aG9yaXR5GAIgASgLMh8ubm9tb3Mua2VybmVsLnYxLlF1ZXJ5QXV0aG9yaXR5Eg0KBXNwYW5zGAMgASgIEjkKDXJlc3VsdF9mb3JtYXQYBCABKA4yIi5ub21vcy5rZXJuZWwudjEuUXVlcnlSZXN1bHRGb3JtYXQSKgoEcm93cxgKIAEoCzIaLm5vbW9zLmtlcm5lbC52MS5Sb3dzUXVlcnlIABIqCgRwYWdlGAsgASgLMhoubm9tb3Mua2VybmVsLnYxLlBhZ2VRdWVyeUgAEisKBWJ5X2lkGAwgASgLMhoubm9tb3Mua2VybmVsLnYxLkJ5SWRRdWVyeUgAEjkKDHJlc29sdmVfcmVmcxgNIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5SZXNvbHZlUmVmc1F1ZXJ5SAASRQoScmVmZXJlbmNlX3ZlcnNpb25zGA4gASgLMicubm9tb3Mua2VybmVsLnYxLlJlZmVyZW5jZVZlcnNpb25zUXVlcnlIABIsCgVjb3VudBgPIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5UYWxseVF1ZXJ5SAASKgoDc3VtGBAgASgLMhsubm9tb3Mua2VybmVsLnYxLlRhbGx5UXVlcnlIABIwCgdzcGF0aWFsGBEgASgLMh0ubm9tb3Mua2VybmVsLnYxLlNwYXRpYWxRdWVyeUgAEiwKBW5hbWVkGBIgASgLMhsubm9tb3Mua2VybmVsLnYxLk5hbWVkUXVlcnlIABJJChNhdXRob3JpemF0aW9uX2NoZWNrGBMgASgLMioubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25DaGVja1JlcXVlc3RIABJLChRhdXRob3JpemF0aW9uX2V4cGFuZBgUIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uRXhwYW5kUmVxdWVzdEgAEkkKE2Zyb250aWVyX3RyYW5zaXRpb24YFSABKAsyKi5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJUcmFuc2l0aW9uUmVxdWVzdEgAEi8KB2J5X3R5cGUYFiABKAsyHC5ub21vcy5rZXJuZWwudjEuQnlUeXBlUXVlcnlIABJIChRvd25lZF9kZXZpY2VfcmVxdWVzdBgXIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5Pd25lZERldmljZVJlcXVlc3RRdWVyeUgAEkwKFm93bmVkX3ByZXBhcmVfYXBwcm92YWwYGCABKAsyKi5ub21vcy5rZXJuZWwudjEuT3duZWRQcmVwYXJlQXBwcm92YWxRdWVyeUgAEkMKEXBlbmRpbmdfY29uZmxpY3RzGBkgASgLMiYubm9tb3Mua2VybmVsLnYxLlBlbmRpbmdDb25mbGljdHNRdWVyeUgAElAKGHBlbmRpbmdfY29uZmxpY3Rfc3VtbWFyeRgaIAEoCzIsLm5vbW9zLmtlcm5lbC52MS5QZW5kaW5nQ29uZmxpY3RTdW1tYXJ5UXVlcnlIABJNChZhdXRoZW50aWNhdGlvbl9wb3N0dXJlGBsgASgLMisubm9tb3Mua2VybmVsLnYxLkF1dGhlbnRpY2F0aW9uUG9zdHVyZVF1ZXJ5SABCBwoFcXVlcnkiHAoaQXV0aGVudGljYXRpb25Qb3N0dXJlUXVlcnkingEKHUF1dGhlbnRpY2F0aW9uUG9zdHVyZVJlc3BvbnNlEkgKDnByb3ZpZGVyX3Rva2VuGAEgASgOMjAubm9tb3Mua2VybmVsLnYxLlByb3ZpZGVyVG9rZW5WZXJpZmljYXRpb25TdGF0dXMSFwoPZW5yb2xsZWRfZGV2aWNlGAIgASgIEhoKEnJlc29sdmVkX3ByaW5jaXBhbBgDIAEoCSIoChdPd25lZERldmljZVJlcXVlc3RRdWVyeRINCgVzY29wZRgBIAEoCSIyChpPd25lZERldmljZVJlcXVlc3RSZXNwb25zZRIUCgxyZXF1ZXN0X3VzZGEYASABKAwiQAoZT3duZWRQcmVwYXJlQXBwcm92YWxRdWVyeRINCgVzY29wZRgBIAEoCRIUCgxyZXF1ZXN0X3VzZGEYAiABKAwivwEKHE93bmVkUHJlcGFyZUFwcHJvdmFsUmVzcG9uc2USFwoPbmV3X2tleV9zdWJqZWN0GAEgASgJEhoKEm93bmVkX2N1c3RvZHlfdXNkYRgCIAEoDBIUCgx2ZXJpZmllZF92aWEYAyABKAkSGAoQdmFsaWRfZnJvbV9lcG9jaBgEIAEoBBIfChdhcHByb3ZlZF9hdF91bml4X21pbGxpcxgFIAEoBBIZChFvd25lZF9rZXlfc3ViamVjdBgGIAEoCSKSAQoOUXVlcnlBdXRob3JpdHkSFwoPcHJpbmNpcGFsX2NsYWltGAEgASgJEhIKCmF1dGhfdG9rZW4YAiABKAwSEAoIbm93X3VuaXgYAyABKAQSFQoNYXV0aG9yX3NlY3JldBgEIAEoDBIqCgRrZXlzGAUgAygLMhwubm9tb3Mua2VybmVsLnYxLkluamVjdGVkS2V5IjgKC0luamVjdGVkS2V5Eg0KBXNjb3BlGAEgASgJEg0KBWVwb2NoGAIgASgEEgsKA2tleRgDIAEoDCJzCglSb3dzUXVlcnkSCgoCaWQYASABKAkSLwoJYXJndW1lbnRzGAIgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0EhEKCXByaW5jaXBhbBgDIAEoCRIWCg5hcmd1bWVudHNfdXNkYRgEIAEoDCKRAQoJUGFnZVF1ZXJ5EgoKAmlkGAEgASgJEi8KCWFyZ3VtZW50cxgCIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdBINCgVsaW1pdBgDIAEoDRINCgVhZnRlchgEIAEoCRIRCglwcmluY2lwYWwYBSABKAkSFgoOYXJndW1lbnRzX3VzZGEYBiABKAwiTAoJQnlJZFF1ZXJ5EhYKDmFnZ3JlZ2F0ZV90eXBlGAEgASgJEhQKDGFnZ3JlZ2F0ZV9pZBgCIAEoCRIRCglwcmluY2lwYWwYAyABKAkiOAoLQnlUeXBlUXVlcnkSFgoOYWdncmVnYXRlX3R5cGUYASABKAkSEQoJcHJpbmNpcGFsGAIgASgJIlwKCE5vbW9zUmVmEhEKCXdvcmtzcGFjZRgBIAEoCRIWCg5hZ2dyZWdhdGVfdHlwZRgCIAEoCRIUCgxhZ2dyZWdhdGVfaWQYAyABKAkSDwoHdmVyc2lvbhgEIAEoCSJOChBSZXNvbHZlUmVmc1F1ZXJ5EicKBHJlZnMYASADKAsyGS5ub21vcy5rZXJuZWwudjEuTm9tb3NSZWYSEQoJcHJpbmNpcGFsGAIgASgJIk4KFlJlZmVyZW5jZVZlcnNpb25zUXVlcnkSNAoEcmVmcxgBIAMoCzImLm5vbW9zLmtlcm5lbC52MS5SZWZlcmVuY2VWZXJzaW9uQ2hlY2sihAEKFVJlZmVyZW5jZVZlcnNpb25DaGVjaxIpCgZwaW5uZWQYASABKAsyGS5ub21vcy5rZXJuZWwudjEuTm9tb3NSZWYSKQoGc2VyaWVzGAIgASgLMhkubm9tb3Mua2VybmVsLnYxLk5vbW9zUmVmEhUKDWN1cnJlbnRfZmllbGQYAyABKAkiYgoKVGFsbHlRdWVyeRIKCgJpZBgBIAEoCRIRCglwcmluY2lwYWwYAyABKAkSFgoJZ3JvdXBfa2V5GAQgASgJSACIAQFCDAoKX2dyb3VwX2tleUoECAIQA1IJYXJndW1lbnRzInoKDFNwYXRpYWxRdWVyeRIKCgJpZBgBIAEoCRIRCglwcmluY2lwYWwYAyABKAkSDQoFbWluX3gYBCABKAESDQoFbWluX3kYBSABKAESDQoFbWF4X3gYBiABKAESDQoFbWF4X3kYByABKAFKBAgCEANSCWFyZ3VtZW50cyJaChVQZW5kaW5nQ29uZmxpY3RzUXVlcnkSGwoOYWdncmVnYXRlX3R5cGUYASABKAlIAIgBARIRCglwcmluY2lwYWwYAiABKAlCEQoPX2FnZ3JlZ2F0ZV90eXBlIjAKG1BlbmRpbmdDb25mbGljdFN1bW1hcnlRdWVyeRIRCglwcmluY2lwYWwYASABKAkicQoKTmFtZWRRdWVyeRIyCglvcGVyYXRpb24YASABKA4yHy5ub21vcy5rZXJuZWwudjEuUXVlcnlPcGVyYXRpb24SLwoJYXJndW1lbnRzGAIgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0IrEBChlGcm9udGllclRyYW5zaXRpb25SZXF1ZXN0Eg4KBmRvbWFpbhgBIAEoCRIWCg5jYW5kaWRhdGVfaGFzaBgCIAEoCRIPCgdhdF9oYXNoGAMgASgJEiEKGWFja25vd2xlZGdlbWVudF9wcmluY2lwYWwYBCABKAkSIAoTcmVzdG9yZV9wcmV2aW91c19vZhgFIAEoCUgAiAEBQhYKFF9yZXN0b3JlX3ByZXZpb3VzX29mIloKJUZyb250aWVyVHJhbnNpdGlvbkRpc3Bvc2l0aW9uTWFwRW50cnkSGAoQc291cmNlX3N0YWJsZV9pZBgBIAEoCRIXCg9hY2tub3dsZWRnZW1lbnQYAiABKAki9QEKHkZyb250aWVyVHJhbnNpdGlvbkRpc3Bvc2l0aW9ucxIPCgdyZXRpcmVkGAEgAygJEkcKB3JldHlwZWQYAiADKAsyNi5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJUcmFuc2l0aW9uRGlzcG9zaXRpb25NYXBFbnRyeRJHCgdyZWJpbmRzGAMgAygLMjYubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvbkRpc3Bvc2l0aW9uTWFwRW50cnkSHAoPYWNrbm93bGVkZ2VkX2J5GAQgASgJSACIAQFCEgoQX2Fja25vd2xlZGdlZF9ieSI9ChtGcm9udGllclRyYW5zaXRpb25WaW9sYXRpb24SDgoGZG9tYWluGAEgASgJEg4KBmRldGFpbBgCIAEoCSLXAgoaRnJvbnRpZXJUcmFuc2l0aW9uUmVzcG9uc2USDwoHYXRfaGFzaBgBIAEoCRIZCgxjdXJyZW50X2hhc2gYAiABKAlIAIgBARIVCg1hdF9zdGF0ZV9yb290GAMgASgJEhYKDmNhbmRpZGF0ZV9oYXNoGAQgASgJEg4KBmRvbWFpbhgFIAEoCRIPCgdkb21haW5zGAYgAygJEg0KBXJlYWR5GAcgASgIEkAKCnZpb2xhdGlvbnMYCCADKAsyLC5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJUcmFuc2l0aW9uVmlvbGF0aW9uEkoKDGRpc3Bvc2l0aW9ucxgJIAEoCzIvLm5vbW9zLmtlcm5lbC52MS5Gcm9udGllclRyYW5zaXRpb25EaXNwb3NpdGlvbnNIAYgBAUIPCg1fY3VycmVudF9oYXNoQg8KDV9kaXNwb3NpdGlvbnMiLwoTQXV0aG9yaXphdGlvbk9iamVjdBIMCgR0eXBlGAEgASgJEgoKAmlkGAIgASgJIlQKFEF1dGhvcml6YXRpb25TdWJqZWN0EgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkSFQoIcmVsYXRpb24YAyABKAlIAIgBAUILCglfcmVsYXRpb24inAEKGFJlbGF0aW9uc2hpcFR1cGxlQWRkcmVzcxI2CghyZXNvdXJjZRgBIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uT2JqZWN0EhAKCHJlbGF0aW9uGAIgASgJEjYKB3N1YmplY3QYAyABKAsyJS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvblN1YmplY3QigQEKGEF1dGhvcml6YXRpb25Db25zaXN0ZW5jeRIjChljdXJyZW50X3ZlcmlmaWVkX2Zyb250aWVyGAEgASgISAASGQoPYXRfbGVhc3RfY29tbWl0GAIgASgJSAASFgoMZXhhY3RfY29tbWl0GAMgASgJSABCDQoLcmVxdWlyZW1lbnQiZgodQXV0aG9yaXphdGlvbkNvbmRpdGlvbkNvbnRleHQSFAoMY29uZGl0aW9uX2lkGAEgASgJEi8KCWFyZ3VtZW50cxgCIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdCL3AgoZQXV0aG9yaXphdGlvbkNoZWNrUmVxdWVzdBI2CghyZXNvdXJjZRgBIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uT2JqZWN0EhIKCnBlcm1pc3Npb24YAiABKAkSNgoHc3ViamVjdBgDIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uU3ViamVjdBI+Cgtjb25zaXN0ZW5jeRgEIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uQ29uc2lzdGVuY3kSPwoHY29udGV4dBgFIAMoCzIuLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uQ29uZGl0aW9uQ29udGV4dBIgChNleHBlY3RlZF9tb2RlbF9oYXNoGAYgASgJSACIAQESGwoTaW5jbHVkZV9leHBsYW5hdGlvbhgHIAEoCEIWChRfZXhwZWN0ZWRfbW9kZWxfaGFzaCLtAgoaQXV0aG9yaXphdGlvbkV4cGFuZFJlcXVlc3QSNgoIcmVzb3VyY2UYASABKAsyJC5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbk9iamVjdBISCgpwZXJtaXNzaW9uGAIgASgJEj4KC2NvbnNpc3RlbmN5GAMgASgLMikubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25Db25zaXN0ZW5jeRI/Cgdjb250ZXh0GAQgAygLMi4ubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25Db25kaXRpb25Db250ZXh0EiAKE2V4cGVjdGVkX21vZGVsX2hhc2gYBSABKAlIAIgBARINCgVsaW1pdBgGIAEoDRISCgVhZnRlchgHIAEoCUgBiAEBEhsKE2luY2x1ZGVfZXhwbGFuYXRpb24YCCABKAhCFgoUX2V4cGVjdGVkX21vZGVsX2hhc2hCCAoGX2FmdGVyIr0BChlSZWxhdGlvbnNoaXBUdXBsZUV2aWRlbmNlEjgKBXR1cGxlGAEgASgLMikubm9tb3Mua2VybmVsLnYxLlJlbGF0aW9uc2hpcFR1cGxlQWRkcmVzcxIQCgh0dXBsZV9pZBgCIAEoCRIaChJhc3NlcnRpb25fZXZlbnRfaWQYAyABKAkSIAoTcmV2b2NhdGlvbl9ldmVudF9pZBgEIAEoCUgAiAEBQhYKFF9yZXZvY2F0aW9uX2V2ZW50X2lkIuEDChhBdXRob3JpemF0aW9uRXhwbGFuYXRpb24SRgoJb3BlcmF0aW9uGAEgASgOMjMubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25FeHBsYW5hdGlvbi5PcGVyYXRpb24SEAoIcmVsYXRpb24YAiABKAkSDgoGcmVzdWx0GAMgASgIEjwKCGV2aWRlbmNlGAQgAygLMioubm9tb3Mua2VybmVsLnYxLlJlbGF0aW9uc2hpcFR1cGxlRXZpZGVuY2USOwoIY2hpbGRyZW4YBSADKAsyKS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkV4cGxhbmF0aW9uIt8BCglPcGVyYXRpb24SGQoVT1BFUkFUSU9OX1VOU1BFQ0lGSUVEEAASFAoQT1BFUkFUSU9OX0RJUkVDVBABEh4KGk9QRVJBVElPTl9DT01QVVRFRF9VU0VSU0VUEAISHgoaT1BFUkFUSU9OX1RVUExFX1RPX1VTRVJTRVQQAxITCg9PUEVSQVRJT05fVU5JT04QBBIaChZPUEVSQVRJT05fSU5URVJTRUNUSU9OEAUSFwoTT1BFUkFUSU9OX0VYQ0xVU0lPThAGEhcKE09QRVJBVElPTl9DT05ESVRJT04QByJ3ChpBdXRob3JpemF0aW9uRGVjaXNpb25CYXNpcxIgChhhdXRob3JpemF0aW9uX21vZGVsX2hhc2gYASABKAkSIQoZcmVsYXRpb25zaGlwX3N0YXRlX2NvbW1pdBgCIAEoCRIUCgxjb250ZXh0X2hhc2gYAyABKAwivgEKGkF1dGhvcml6YXRpb25DaGVja1Jlc3BvbnNlEg8KB2FsbG93ZWQYASABKAgSOgoFYmFzaXMYAiABKAsyKy5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkRlY2lzaW9uQmFzaXMSQwoLZXhwbGFuYXRpb24YAyABKAsyKS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkV4cGxhbmF0aW9uSACIAQFCDgoMX2V4cGxhbmF0aW9uIoMCChtBdXRob3JpemF0aW9uRXhwYW5kUmVzcG9uc2USNwoIc3ViamVjdHMYASADKAsyJS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvblN1YmplY3QSOgoFYmFzaXMYAiABKAsyKy5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkRlY2lzaW9uQmFzaXMSEQoEbmV4dBgDIAEoCUgAiAEBEkMKC2V4cGxhbmF0aW9uGAQgASgLMikubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25FeHBsYW5hdGlvbkgBiAEBQgcKBV9uZXh0Qg4KDF9leHBsYW5hdGlvbiJwCg1PdXRib3hSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSLQoFY2xvY2sYAiABKAsyHi5ub21vcy5rZXJuZWwudjEuQ2FwdHVyZWRDbG9jayJjCgtTeW5jUmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0EhEKCWZyb21fYmFzZRgCIAEoCRIPCgd0b19oZWFkGAMgASgJIlMKC1Rlc3RSZXF1ZXN0EjcKCHNldF9yb290GAEgASgLMiMubm9tb3Mua2VybmVsLnYxLlNldFRlc3RSb290UmVxdWVzdEgAQgsKCW9wZXJhdGlvbiIoChJTZXRUZXN0Um9vdFJlcXVlc3QSEgoKcHVibGljX2tleRgBIAEoDCI9CgxUZXN0UmVzcG9uc2USLQoGcmVzdWx0GAEgASgLMh0ubm9tb3Mua2VybmVsLnYxLkFja25vd2xlZGdlZCLVCwoOQ3VzdG9keVJlcXVlc3QSNwoKcGFja19kZWx0YRgKIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5QYWNrRGVsdGFSZXF1ZXN0SAASNwoKYXBwbHlfcGFjaxgLIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5BcHBseVBhY2tSZXF1ZXN0SAASNwoKcmVwb19zdGF0cxgMIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5SZXBvU3RhdHNSZXF1ZXN0SAASPQoNaW50ZW50c19hYm92ZRgNIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5JbnRlbnRzQWJvdmVSZXF1ZXN0SAASPwoOaW5zcGVjdF9jaGFuZ2UYDiABKAsyJS5ub21vcy5rZXJuZWwudjEuSW5zcGVjdENoYW5nZVJlcXVlc3RIABJOChZlbmNvZGVfcmVmdXNhbF92ZXJkaWN0GA8gASgLMiwubm9tb3Mua2VybmVsLnYxLkVuY29kZVJlZnVzYWxWZXJkaWN0UmVxdWVzdEgAElAKF2luc3BlY3RfcmVmdXNhbF92ZXJkaWN0GBAgASgLMi0ubm9tb3Mua2VybmVsLnYxLkluc3BlY3RSZWZ1c2FsVmVyZGljdFJlcXVlc3RIABI1CglyZWFkX2Jsb2IYESABKAsyIC5ub21vcy5rZXJuZWwudjEuUmVhZEJsb2JSZXF1ZXN0SAASOQoLcmVzb2x2ZV9yZWYYEiABKAsyIi5ub21vcy5rZXJuZWwudjEuUmVzb2x2ZVJlZlJlcXVlc3RIABI1CglsaXN0X3JlZnMYEyABKAsyIC5ub21vcy5rZXJuZWwudjEuTGlzdFJlZnNSZXF1ZXN0SAASNQoJd3JpdGVfcmVmGBQgASgLMiAubm9tb3Mua2VybmVsLnYxLldyaXRlUmVmUmVxdWVzdEgAEjcKCmRlbGV0ZV9yZWYYFSABKAsyIS5ub21vcy5rZXJuZWwudjEuRGVsZXRlUmVmUmVxdWVzdEgAEkQKEXdyaXRlX21ldGFfY29tbWl0GBYgASgLMicubm9tb3Mua2VybmVsLnYxLldyaXRlTWV0YUNvbW1pdFJlcXVlc3RIABJCChBsYXdfY2xvc3VyZV9pbmZvGBcgASgLMiYubm9tb3Mua2VybmVsLnYxLkxhd0Nsb3N1cmVJbmZvUmVxdWVzdEgAEkUKEWNoZWNrcG9pbnRfZXhwb3J0GBggASgLMigubm9tb3Mua2VybmVsLnYxLkNoZWNrcG9pbnRFeHBvcnRSZXF1ZXN0SAASRQoRY2hlY2twb2ludF9pbXBvcnQYGSABKAsyKC5ub21vcy5rZXJuZWwudjEuQ2hlY2twb2ludEltcG9ydFJlcXVlc3RIABJDChBjYXBhY2l0eV9yZXNlcnZlGBogASgLMicubm9tb3Mua2VybmVsLnYxLkNhcGFjaXR5UmVzZXJ2ZVJlcXVlc3RIABI7CgxyZXN0b3JlX21haW4YGyABKAsyIy5ub21vcy5rZXJuZWwudjEuUmVzdG9yZU1haW5SZXF1ZXN0SAASTgoWcmVzb2x2ZV9zdGF0ZV9wb3NpdGlvbhgcIAEoCzIsLm5vbW9zLmtlcm5lbC52MS5SZXNvbHZlU3RhdGVQb3NpdGlvblJlcXVlc3RIABJHChJyZXNpZGVudF9mb290cHJpbnQYHSABKAsyKS5ub21vcy5rZXJuZWwudjEuUmVzaWRlbnRGb290cHJpbnRSZXF1ZXN0SAASQQoPaGlzdG9yeV9zdW1tYXJ5GB4gASgLMiYubm9tb3Mua2VybmVsLnYxLkhpc3RvcnlTdW1tYXJ5UmVxdWVzdEgAEloKHHByb3ZlX2NvbXBhY3Rpb25fZXF1aXZhbGVuY2UYHyABKAsyMi5ub21vcy5rZXJuZWwudjEuUHJvdmVDb21wYWN0aW9uRXF1aXZhbGVuY2VSZXF1ZXN0SABCCwoJb3BlcmF0aW9uIigKGFJlc2lkZW50Rm9vdHByaW50UmVxdWVzdBIMCgRkZWVwGAEgASgIIp8CChFSZXNpZGVudEZvb3RwcmludBIRCgl3b3Jrc3BhY2UYASABKAkSDgoGYnJhbmNoGAIgASgJEhgKEHJlYWRfbW9kZWxfYnl0ZXMYAyABKAQSHQoVcmVhZF9tb2RlbF9ydXN0X2J5dGVzGAQgASgEEhgKEGZvbGRfc3RhdGVfYnl0ZXMYBSABKAQSEwoLZm9sZF9pbWFnZXMYBiABKA0SHwoXc2hhcmVkX2F0dHJpYnV0ZWRfYnl0ZXMYByABKAQSEgoKYWdncmVnYXRlcxgIIAEoBBI2Cgpjb21wb25lbnRzGAkgAygLMiIubm9tb3Mua2VybmVsLnYxLlJlc2lkZW50Q29tcG9uZW50EhIKCmNvbXB1dGVfdXMYCiABKAQiaQoRUmVzaWRlbnRDb21wb25lbnQSNAoEa2luZBgBIAEoDjImLm5vbW9zLmtlcm5lbC52MS5SZXNpZGVudENvbXBvbmVudEtpbmQSDQoFYnl0ZXMYAiABKAQSDwoHY2VpbGluZxgDIAEoCCLKAQoZUmVzaWRlbnRGb290cHJpbnRSZXNwb25zZRI1CglyZXNpZGVudHMYASADKAsyIi5ub21vcy5rZXJuZWwudjEuUmVzaWRlbnRGb290cHJpbnQSHAoUYWxsb2NhdG9yX2xpdmVfYnl0ZXMYAiABKAQSGAoQYXR0cmlidXRlZF9ieXRlcxgDIAEoBBIZChF1bmFjY291bnRlZF9ieXRlcxgEIAEoBBIVCg1hY2NvdW50aW5nX3VzGAUgASgEEgwKBGRlZXAYBiABKAginAEKEFBhY2tEZWx0YVJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCgRoZWFkGAIgASgJSACIAQESEQoEYmFzZRgDIAEoCUgBiAEBEg4KBmJyYW5jaBgEIAEoCRIdChBzdGFnZWRfcGFja19maWxlGAUgASgJSAKIAQFCBwoFX2hlYWRCBwoFX2Jhc2VCEwoRX3N0YWdlZF9wYWNrX2ZpbGUicgoQQXBwbHlQYWNrUmVxdWVzdBIMCgRyZXBvGAEgASgJEg4KBHBhY2sYAiABKAxIABIaChBzdGFnZWRfcGFja19maWxlGAQgASgJSAASEQoEaGVhZBgDIAEoCUgBiAEBQggKBnNvdXJjZUIHCgVfaGVhZCIgChBSZXBvU3RhdHNSZXF1ZXN0EgwKBHJlcG8YASABKAkirAEKE0ludGVudHNBYm92ZVJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCgRoZWFkGAIgASgJSACIAQESEQoEYmFzZRgDIAEoCUgBiAEBEg4KBmJyYW5jaBgEIAEoCRINCgVsaW1pdBgFIAEoBBIYChBjb21wbGV0ZV9sb2dpY2FsGAYgASgIEhYKDmNvbXBhY3Rfc3RvcmVkGAcgASgIQgcKBV9oZWFkQgcKBV9iYXNlIm0KFUhpc3RvcnlTdW1tYXJ5UmVxdWVzdBIMCgRyZXBvGAEgASgJEhEKBGhlYWQYAiABKAlIAIgBARIOCgZicmFuY2gYAyABKAkSEQoEYmFzZRgEIAEoCUgBiAEBQgcKBV9oZWFkQgcKBV9iYXNlIisKFEluc3BlY3RDaGFuZ2VSZXF1ZXN0EhMKC2NoYW5nZV91c2RhGAEgASgMIt8BCg5SZWZ1c2FsVmVyZGljdBIVCghvZmZlcl9pZBgBIAEoCUgAiAEBEhAKA29pZBgCIAEoCUgBiAEBEhMKBmRvbWFpbhgDIAEoCUgCiAEBEhkKDGRpcmVjdGl2ZV9pZBgEIAEoCUgDiAEBEhQKB3Nlc3Npb24YBSABKAlIBIgBARIRCglwYXJrZWRfYXQYBiABKAkSDgoGcmVhc29uGAcgASgJQgsKCV9vZmZlcl9pZEIGCgRfb2lkQgkKB19kb21haW5CDwoNX2RpcmVjdGl2ZV9pZEIKCghfc2Vzc2lvbiJPChtFbmNvZGVSZWZ1c2FsVmVyZGljdFJlcXVlc3QSMAoHdmVyZGljdBgBIAEoCzIfLm5vbW9zLmtlcm5lbC52MS5SZWZ1c2FsVmVyZGljdCI0ChxJbnNwZWN0UmVmdXNhbFZlcmRpY3RSZXF1ZXN0EhQKDHZlcmRpY3RfdXNkYRgBIAEoDCLUAQoVQ29tcGFjdGlvbkVxdWl2YWxlbmNlEhMKC3NvdXJjZV9oZWFkGAEgASgJEhYKDnNvdXJjZV9nZW5lc2lzGAIgASgJEhYKDmNhbmRpZGF0ZV9oZWFkGAMgASgJEhkKEWNhbmRpZGF0ZV9nZW5lc2lzGAQgASgJEhYKDnNvdXJjZV9pbnRlbnRzGAUgASgEEhcKD2NhcnJpZWRfaW50ZW50cxgGIAEoBBIWCg5wYXJrZWRfaW50ZW50cxgHIAEoBBISCgplcXVpdmFsZW50GAggASgIIn0KIVByb3ZlQ29tcGFjdGlvbkVxdWl2YWxlbmNlUmVxdWVzdBITCgtzb3VyY2VfcmVwbxgBIAEoCRITCgtzb3VyY2VfaGVhZBgCIAEoCRIWCg5jYW5kaWRhdGVfcmVwbxgDIAEoCRIWCg5jYW5kaWRhdGVfaGVhZBgEIAEoCSI6Cg9SZWFkQmxvYlJlcXVlc3QSDAoEcmVwbxgBIAEoCRILCgNvaWQYAiABKAkSDAoEcGF0aBgDIAEoCSI0ChFSZXNvbHZlUmVmUmVxdWVzdBIMCgRyZXBvGAEgASgJEhEKCXJlZmVyZW5jZRgCIAEoCSIvCg9MaXN0UmVmc1JlcXVlc3QSDAoEcmVwbxgBIAEoCRIOCgZwcmVmaXgYAiABKAkiQgoPV3JpdGVSZWZSZXF1ZXN0EgwKBHJlcG8YASABKAkSEQoJcmVmZXJlbmNlGAIgASgJEg4KBnRhcmdldBgDIAEoCSIzChBEZWxldGVSZWZSZXF1ZXN0EgwKBHJlcG8YASABKAkSEQoJcmVmZXJlbmNlGAIgASgJIikKCE1ldGFGaWxlEgwKBHBhdGgYASABKAkSDwoHY29udGVudBgCIAEoDCKuAQoWV3JpdGVNZXRhQ29tbWl0UmVxdWVzdBIMCgRyZXBvGAEgASgJEg8KB3BhcmVudHMYAiADKAkSKAoFZmlsZXMYAyADKAsyGS5ub21vcy5rZXJuZWwudjEuTWV0YUZpbGUSDwoHbWVzc2FnZRgEIAEoCRIUCgx0aW1lX3NlY29uZHMYBSABKBISFgoJcmVmZXJlbmNlGAYgASgJSACIAQFCDAoKX3JlZmVyZW5jZSJnChVMYXdDbG9zdXJlSW5mb1JlcXVlc3QSFAoMY2xvc3VyZV9maWxlGAEgASgJEjgKCmNhcGFiaWxpdHkYAiABKA4yJC5ub21vcy5rZXJuZWwudjEuS2VybmVsTGF3Q2FwYWJpbGl0eSKHAQoXQ2hlY2twb2ludEV4cG9ydFJlcXVlc3QSMAoGdGFyZ2V0GAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBIhChRzdGFnZWRfZnJvbnRpZXJfZmlsZRgCIAEoCUgAiAEBQhcKFV9zdGFnZWRfZnJvbnRpZXJfZmlsZSJBCgtGcm9udGllckhsYxIQCghwaHlzaWNhbBgBIAEoBBIPCgdsb2dpY2FsGAIgASgNEg8KB3JlcGxpY2EYAyABKAQi3QQKF1ZlcmlmaWVkRnJvbnRpZXJSZWNlaXB0EhYKDmZvcm1hdF92ZXJzaW9uGAEgASgNEgsKA29pZBgCIAEoCRIPCgdpbnRlbnRzGAMgASgEEhMKC3BsYW5zX3JlcnVuGAQgASgEEhwKD2NvbnRyb2xsZXJfaGFzaBgFIAEoCUgAiAEBEhkKEWluc3RhbGxlZF9kb21haW5zGAYgAygJEg4KBmxpbmVhchgHIAEoCBIzCghsYXN0X2hsYxgIIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Gcm9udGllckhsY0gBiAEBEhQKB2xhc3RfaWQYCSABKAlIAogBARIRCglzdGF0ZV9vaWQYCiABKAkSFAoMc3RhdGVfc2hhMjU2GAsgASgJEjkKDnN0YXRlX2xhc3RfaGxjGAwgASgLMhwubm9tb3Mua2VybmVsLnYxLkZyb250aWVySGxjSAOIAQESGgoNc3RhdGVfbGFzdF9pZBgNIAEoCUgEiAEBEhcKD21hbmlmZXN0X3NoYTI1NhgOIAEoCRIeChZsYXdfY2xvc3VyZV9pZGVudGl0aWVzGA8gAygJEhoKEnJlc29sdmFibGVfZG9tYWlucxgQIAMoCRIiChVwcm9qZWN0aW9uX3N0YXRlX3Jvb3QYESABKAlIBYgBAUISChBfY29udHJvbGxlcl9oYXNoQgsKCV9sYXN0X2hsY0IKCghfbGFzdF9pZEIRCg9fc3RhdGVfbGFzdF9obGNCEAoOX3N0YXRlX2xhc3RfaWRCGAoWX3Byb2plY3Rpb25fc3RhdGVfcm9vdCJFChVGb2xkRnJvbnRpZXJBZ2dyZWdhdGUSFAoMYWdncmVnYXRlX2lkGAEgASgJEhYKDmFnZ3JlZ2F0ZV91c2RhGAIgASgMIkEKF0ZvbGRGcm9udGllckZpbmdlcnByaW50EhEKCWludGVudF9pZBgBIAEoCRITCgtmaW5nZXJwcmludBgCIAEoCSLWAwoURm9sZEZyb250aWVyU25hcHNob3QSFgoOZm9ybWF0X3ZlcnNpb24YASABKA0SCwoDdGlwGAIgASgJEg8KB2dlbmVzaXMYAyABKAkSFQoNaGlzdG9yeV9kZXB0aBgEIAEoBBI6CgphZ2dyZWdhdGVzGAUgAygLMiYubm9tb3Mua2VybmVsLnYxLkZvbGRGcm9udGllckFnZ3JlZ2F0ZRI4Cg1obGNfd2F0ZXJtYXJrGAYgASgLMhwubm9tb3Mua2VybmVsLnYxLkZyb250aWVySGxjSACIAQESMwoIbGFzdF9obGMYByABKAsyHC5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJIbGNIAYgBARIUCgdsYXN0X2lkGAggASgJSAKIAQESFgoOc3RyaWtlX3RhcmdldHMYCSADKAkSRQoTaW50ZW50X2ZpbmdlcnByaW50cxgKIAMoCzIoLm5vbW9zLmtlcm5lbC52MS5Gb2xkRnJvbnRpZXJGaW5nZXJwcmludBIXCgpzdGF0ZV9yb290GAsgASgJSAOIAQFCEAoOX2hsY193YXRlcm1hcmtCCwoJX2xhc3RfaGxjQgoKCF9sYXN0X2lkQg0KC19zdGF0ZV9yb290IpsDChhTdG9yZWRDaGVja3BvaW50TWFuaWZlc3QSFgoOZm9ybWF0X3ZlcnNpb24YASABKA0SEwoGY3Vyc29yGAIgASgJSACIAQESGAoQY2hlY2twb2ludF9ieXRlcxgDIAEoBBIQCghsYXdfaGFzaBgEIAEoCRI7Cgtjb21wcmVzc2lvbhgFIAEoDjImLm5vbW9zLmtlcm5lbC52MS5DaGVja3BvaW50Q29tcHJlc3Npb24SEQoJcmF3X2J5dGVzGAYgASgEEhQKDHN0b3JlZF9ieXRlcxgHIAEoBBIdChVmcm9udGllcl9zdG9yZWRfYnl0ZXMYCCABKAQSFwoKc3RhdGVfcm9vdBgJIAEoCUgBiAEBElAKGXZlcmlmaWVkX2Zyb250aWVyX3JlY2VpcHQYCiABKAsyKC5ub21vcy5rZXJuZWwudjEuVmVyaWZpZWRGcm9udGllclJlY2VpcHRIAogBAUIJCgdfY3Vyc29yQg0KC19zdGF0ZV9yb290QhwKGl92ZXJpZmllZF9mcm9udGllcl9yZWNlaXB0IsEDChdDaGVja3BvaW50SW1wb3J0UmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0EhIKCGZyb250aWVyGAIgASgMSAASHgoUc3RhZ2VkX2Zyb250aWVyX2ZpbGUYBiABKAlIABITCgZjdXJzb3IYAyABKAlIAYgBARIXCgpzdGF0ZV9yb290GAQgASgJSAKIAQESDQoFc3BhbnMYBSABKAgSEQoEaGVhZBgHIAEoCUgDiAEBElAKGXZlcmlmaWVkX2Zyb250aWVyX3JlY2VpcHQYCCABKAsyKC5ub21vcy5rZXJuZWwudjEuVmVyaWZpZWRGcm9udGllclJlY2VpcHRIBIgBARJKChN2ZXJpZmljYXRpb25fcG9saWN5GAkgASgOMi0ubm9tb3Mua2VybmVsLnYxLkNoZWNrcG9pbnRWZXJpZmljYXRpb25Qb2xpY3lCEQoPZnJvbnRpZXJfc291cmNlQgkKB19jdXJzb3JCDQoLX3N0YXRlX3Jvb3RCBwoFX2hlYWRCHAoaX3ZlcmlmaWVkX2Zyb250aWVyX3JlY2VpcHQiMQoWQ2FwYWNpdHlSZXNlcnZlUmVxdWVzdBIXCg9hZ2dyZWdhdGVfY291bnQYASABKAQiaQoSUmVzdG9yZU1haW5SZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSDAoEaGVhZBgCIAEoCRITCgtkaWFnbm9zdGljcxgDIAEoCCJpChtSZXNvbHZlU3RhdGVQb3NpdGlvblJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCgltYWluX2hlYWQYAiABKAkSFQoNaGludGVkX2NvbW1pdBgDIAEoCRISCgpzdGF0ZV9yb290GAQgASgJIuMLCg9DdXN0b2R5UmVzcG9uc2USOAoKcGFja19kZWx0YRgKIAEoCzIiLm5vbW9zLmtlcm5lbC52MS5QYWNrRGVsdGFSZXNwb25zZUgAEjgKCmFwcGx5X3BhY2sYCyABKAsyIi5ub21vcy5rZXJuZWwudjEuQXBwbHlQYWNrUmVzcG9uc2VIABI4CgpyZXBvX3N0YXRzGAwgASgLMiIubm9tb3Mua2VybmVsLnYxLlJlcG9TdGF0c1Jlc3BvbnNlSAASPgoNaW50ZW50c19hYm92ZRgNIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5JbnRlbnRzQWJvdmVSZXNwb25zZUgAEkAKDmluc3BlY3RfY2hhbmdlGA4gASgLMiYubm9tb3Mua2VybmVsLnYxLkluc3BlY3RDaGFuZ2VSZXNwb25zZUgAEk8KFmVuY29kZV9yZWZ1c2FsX3ZlcmRpY3QYDyABKAsyLS5ub21vcy5rZXJuZWwudjEuRW5jb2RlUmVmdXNhbFZlcmRpY3RSZXNwb25zZUgAElEKF2luc3BlY3RfcmVmdXNhbF92ZXJkaWN0GBAgASgLMi4ubm9tb3Mua2VybmVsLnYxLkluc3BlY3RSZWZ1c2FsVmVyZGljdFJlc3BvbnNlSAASNgoJcmVhZF9ibG9iGBEgASgLMiEubm9tb3Mua2VybmVsLnYxLlJlYWRCbG9iUmVzcG9uc2VIABI6CgtyZXNvbHZlX3JlZhgSIAEoCzIjLm5vbW9zLmtlcm5lbC52MS5SZXNvbHZlUmVmUmVzcG9uc2VIABI2CglsaXN0X3JlZnMYEyABKAsyIS5ub21vcy5rZXJuZWwudjEuTGlzdFJlZnNSZXNwb25zZUgAEjIKCXdyaXRlX3JlZhgUIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5BY2tub3dsZWRnZWRIABIzCgpkZWxldGVfcmVmGBUgASgLMh0ubm9tb3Mua2VybmVsLnYxLkFja25vd2xlZGdlZEgAEkUKEXdyaXRlX21ldGFfY29tbWl0GBYgASgLMigubm9tb3Mua2VybmVsLnYxLldyaXRlTWV0YUNvbW1pdFJlc3BvbnNlSAASQwoQbGF3X2Nsb3N1cmVfaW5mbxgXIAEoCzInLm5vbW9zLmtlcm5lbC52MS5MYXdDbG9zdXJlSW5mb1Jlc3BvbnNlSAASRgoRY2hlY2twb2ludF9leHBvcnQYGCABKAsyKS5ub21vcy5rZXJuZWwudjEuQ2hlY2twb2ludEV4cG9ydFJlc3BvbnNlSAASRgoRY2hlY2twb2ludF9pbXBvcnQYGSABKAsyKS5ub21vcy5rZXJuZWwudjEuQ2hlY2twb2ludEltcG9ydFJlc3BvbnNlSAASRAoQY2FwYWNpdHlfcmVzZXJ2ZRgaIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5DYXBhY2l0eVJlc2VydmVSZXNwb25zZUgAEjwKDHJlc3RvcmVfbWFpbhgbIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5SZXN0b3JlTWFpblJlc3BvbnNlSAASTwoWcmVzb2x2ZV9zdGF0ZV9wb3NpdGlvbhgcIAEoCzItLm5vbW9zLmtlcm5lbC52MS5SZXNvbHZlU3RhdGVQb3NpdGlvblJlc3BvbnNlSAASSAoScmVzaWRlbnRfZm9vdHByaW50GB0gASgLMioubm9tb3Mua2VybmVsLnYxLlJlc2lkZW50Rm9vdHByaW50UmVzcG9uc2VIABJCCg9oaXN0b3J5X3N1bW1hcnkYHiABKAsyJy5ub21vcy5rZXJuZWwudjEuSGlzdG9yeVN1bW1hcnlSZXNwb25zZUgAElsKHHByb3ZlX2NvbXBhY3Rpb25fZXF1aXZhbGVuY2UYHyABKAsyMy5ub21vcy5rZXJuZWwudjEuUHJvdmVDb21wYWN0aW9uRXF1aXZhbGVuY2VSZXNwb25zZUgAQgsKCW9wZXJhdGlvbiIwChFQYWNrRGVsdGFSZXNwb25zZRIMCgRwYWNrGAEgASgMEg0KBWJ5dGVzGAIgASgEIjwKEUFwcGx5UGFja1Jlc3BvbnNlEhQKDG9iamVjdF9jb3VudBgBIAEoBBIRCglwYWNrX2hhc2gYAiABKAkipwEKEVJlcG9TdGF0c1Jlc3BvbnNlEhMKC3RvdGFsX2J5dGVzGAEgASgEEhQKDG9iamVjdF9ieXRlcxgCIAEoBBIVCg1sb29zZV9vYmplY3RzGAMgASgEEhMKC2xvb3NlX2J5dGVzGAQgASgEEhIKCnBhY2tfZmlsZXMYBSABKAQSEgoKcGFja19ieXRlcxgGIAEoBBITCgtpbmRleF9ieXRlcxgHIAEoBCLiAQoMSW50ZW50UmVjb3JkEgsKA29pZBgBIAEoCRIRCglpbnRlbnRfaWQYAiABKAkSDgoGZG9tYWluGAMgASgJEhEKCWRpcmVjdGl2ZRgEIAEoCRITCgtjaGFuZ2VfdXNkYRgFIAEoDBIuCghzZW1hbnRpYxgGIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdBJKChV0cmFuc3BvcnRfcmVxdWlyZW1lbnQYByABKA4yKy5ub21vcy5rZXJuZWwudjEuSW50ZW50VHJhbnNwb3J0UmVxdWlyZW1lbnQiRgoUSW50ZW50c0Fib3ZlUmVzcG9uc2USLgoHaW50ZW50cxgBIAMoCzIdLm5vbW9zLmtlcm5lbC52MS5JbnRlbnRSZWNvcmQidAoWSGlzdG9yeVN1bW1hcnlSZXNwb25zZRIMCgRoZWFkGAEgASgJEg4KBm9sZGVzdBgCIAEoCRIUCgxjb21taXRfY291bnQYAyABKAQSEAoIY29tcGxldGUYBCABKAgSFAoMcmVhY2hlZF9iYXNlGAUgASgIIkIKE05vbWluYWxDYWxsSWRlbnRpdHkSEwoLZG9tYWluX3BhdGgYASABKAkSFgoOZGlyZWN0aXZlX3BhdGgYAiABKAkiiAEKGExpZmVjeWNsZUluc3RhbGxJZGVudGl0eRIfChd0YXJnZXRfY2xvc3VyZV9pZGVudGl0eRgBIAEoCRIUCgxpbnN0YWxsZWRfYnkYAiABKAkSNQoFcGhhc2UYAyABKA4yJi5ub21vcy5rZXJuZWwudjEuTGlmZWN5Y2xlSW5zdGFsbFBoYXNlIloKHVdvcmtzcGFjZVJlc2lkZW5jeVJlcXVpcmVtZW50EhEKCXdvcmtzcGFjZRgBIAEoCRITCgtzb3VyY2VfaGVhZBgCIAEoCRIRCglmb2xkX3Jvb3QYAyABKAkitAIKFUluc3BlY3RDaGFuZ2VSZXNwb25zZRIuCghzZW1hbnRpYxgBIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdBIRCglpbnRlbnRfaWQYAiABKAkSMgoEY2FsbBgDIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5Ob21pbmFsQ2FsbElkZW50aXR5EhAKCGF1dGhvcmVkGAQgASgIEkQKEWxpZmVjeWNsZV9pbnN0YWxsGAUgASgLMikubm9tb3Mua2VybmVsLnYxLkxpZmVjeWNsZUluc3RhbGxJZGVudGl0eRJMChRyZXF1aXJlZF9yZXNpZGVuY2llcxgGIAMoCzIuLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VSZXNpZGVuY3lSZXF1aXJlbWVudCJMChxSZXNvbHZlU3RhdGVQb3NpdGlvblJlc3BvbnNlEhoKDXJlc29sdmVkX2hlYWQYASABKAlIAIgBAUIQCg5fcmVzb2x2ZWRfaGVhZCI0ChxFbmNvZGVSZWZ1c2FsVmVyZGljdFJlc3BvbnNlEhQKDHZlcmRpY3RfdXNkYRgBIAEoDCJRCh1JbnNwZWN0UmVmdXNhbFZlcmRpY3RSZXNwb25zZRIwCgd2ZXJkaWN0GAEgASgLMh8ubm9tb3Mua2VybmVsLnYxLlJlZnVzYWxWZXJkaWN0InUKIlByb3ZlQ29tcGFjdGlvbkVxdWl2YWxlbmNlUmVzcG9uc2USOAoIZXZpZGVuY2UYASABKAsyJi5ub21vcy5rZXJuZWwudjEuQ29tcGFjdGlvbkVxdWl2YWxlbmNlEhUKDWV2aWRlbmNlX3VzZGEYAiABKAwiLwoQUmVhZEJsb2JSZXNwb25zZRINCgVmb3VuZBgBIAEoCBIMCgRibG9iGAIgASgMIi4KElJlc29sdmVSZWZSZXNwb25zZRIQCgNvaWQYASABKAlIAIgBAUIGCgRfb2lkIisKCVJlZlJlY29yZBIRCglyZWZlcmVuY2UYASABKAkSCwoDb2lkGAIgASgJIjwKEExpc3RSZWZzUmVzcG9uc2USKAoEcmVmcxgBIAMoCzIaLm5vbW9zLmtlcm5lbC52MS5SZWZSZWNvcmQiDgoMQWNrbm93bGVkZ2VkIiYKF1dyaXRlTWV0YUNvbW1pdFJlc3BvbnNlEgsKA29pZBgBIAEoCSKDAQoWTGF3Q2xvc3VyZUluZm9SZXNwb25zZRIQCghpZGVudGl0eRgBIAEoCRIZChFyb290X2xvZ2ljYWxfcGF0aBgCIAEoCRITCgthc3NldF9jb3VudBgDIAEoBBISCgpwcmltX2NvdW50GAQgASgEEhMKC2RvbWFpbl9rZXlzGAUgAygJIt8DChhDaGVja3BvaW50RXhwb3J0UmVzcG9uc2USDQoFZW1wdHkYASABKAgSEwoGY3Vyc29yGAIgASgJSACIAQESEAoIZnJvbnRpZXIYAyABKAwSFwoKc3RhdGVfcm9vdBgEIAEoCUgBiAEBEhIKCnN0YXRlX3RyZWUYBSABKAgSDgoGcGlubmVkGAYgASgIEhsKE3JlYWRfaW5kZXhfc25hcHNob3QYByABKAgSIwobcmVhZF9pbmRleF9zbmFwc2hvdF9wZW5kaW5nGAggASgIEiQKF3JlYWRfaW5kZXhfc3FsaXRlX2J5dGVzGAkgASgESAKIAQESJQoYcmVhZF9pbmRleF9jdXN0b2R5X2J5dGVzGAogASgESAOIAQESUAoZdmVyaWZpZWRfZnJvbnRpZXJfcmVjZWlwdBgLIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5WZXJpZmllZEZyb250aWVyUmVjZWlwdEgEiAEBQgkKB19jdXJzb3JCDQoLX3N0YXRlX3Jvb3RCGgoYX3JlYWRfaW5kZXhfc3FsaXRlX2J5dGVzQhsKGV9yZWFkX2luZGV4X2N1c3RvZHlfYnl0ZXNCHAoaX3ZlcmlmaWVkX2Zyb250aWVyX3JlY2VpcHQi1wIKGENoZWNrcG9pbnRJbXBvcnRSZXNwb25zZRIQCghyZXN0b3JlZBgBIAEoCBITCgZyZWFzb24YAiABKAlIAIgBARIXCg9mcm9udGllcl9zZWVkZWQYAyABKAgSJQodZnJvbnRpZXJfdmVyaWZpY2F0aW9uX3BlbmRpbmcYBCABKAgSFwoPYWdncmVnYXRlX2NvdW50GAUgASgEEisKBXNwYW5zGAYgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0EhMKBmN1cnNvchgHIAEoCUgBiAEBEhEKCXJlYWRfb25seRgIIAEoCBIXCg9sYXp5X3JlYWRfaW5kZXgYCSABKAgSNwoJYXNzdXJhbmNlGAogASgOMiQubm9tb3Mua2VybmVsLnYxLkNoZWNrcG9pbnRBc3N1cmFuY2VCCQoHX3JlYXNvbkIJCgdfY3Vyc29yIkoKF0NhcGFjaXR5UmVzZXJ2ZVJlc3BvbnNlEhcKD2FnZ3JlZ2F0ZV9jb3VudBgBIAEoBBIWCg5yZXNlcnZlZF9ieXRlcxgCIAEoBCL5AgoQUmVzdG9yZU1haW5TcGFucxIQCgh0b3RhbF91cxgBIAEoBBIaChJsaXZlX3JlZl9sb29rdXBfdXMYAiABKAQSGAoQdGFyZ2V0X2RlY29kZV91cxgDIAEoBBIkChxjdXN0b2R5X2NvbXBsZXRlbmVzc19yZWFkX3VzGAQgASgEEhkKEXF1YXJhbnRpbmVfcmVmX3VzGAUgASgEEiUKHWNoYWluX3NpZ25hdHVyZV9sYXdfcmVwbGF5X3VzGAYgASgEEhkKEXZlcmRpY3RfZGVjb2RlX3VzGAcgASgEEiMKG3Byb21vdGVfYW5kX2NsZWFudXBfcmVmc191cxgIIAEoBBIbChNmcm9udGllcl9yZWJ1aWxkX3VzGAkgASgEEhkKEWZyb250aWVyX3N0b3JlX3VzGAogASgEEj0KDHZlcmlmaWNhdGlvbhgLIAEoCzInLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpbkRpYWdub3N0aWNzIu8BChNSZXN0b3JlTWFpblJlc3BvbnNlEgwKBGhlYWQYASABKAkSEAoIdmVyaWZpZWQYAiABKAgSDAoEd2FsaxgDIAEoCRIwCgVzcGFucxgEIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5SZXN0b3JlTWFpblNwYW5zEi0KB3ZlcmRpY3QYBSABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSNwoJYXNzdXJhbmNlGAYgASgOMiQubm9tb3Mua2VybmVsLnYxLkNoZWNrcG9pbnRBc3N1cmFuY2USEAoIYWNjZXB0ZWQYByABKAgimwIKCk5vbW9zVmFsdWUSJQoEbnVsbBgBIAEoCzIVLm5vbW9zLmtlcm5lbC52MS5OdWxsSAASEQoHYm9vbGVhbhgCIAEoCEgAEhgKDnNpZ25lZF9pbnRlZ2VyGAMgASgSSAASGgoQdW5zaWduZWRfaW50ZWdlchgEIAEoBEgAEhgKDmZsb2F0aW5nX3BvaW50GAUgASgBSAASDgoEdGV4dBgGIAEoCUgAEg8KBWJ5dGVzGAcgASgMSAASKgoEbGlzdBgIIAEoCzIaLm5vbW9zLmtlcm5lbC52MS5Ob21vc0xpc3RIABIuCgZvYmplY3QYCSABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3RIAEIGCgRraW5kIgYKBE51bGwiOAoJTm9tb3NMaXN0EisKBnZhbHVlcxgBIAMoCzIbLm5vbW9zLmtlcm5lbC52MS5Ob21vc1ZhbHVlIpMBCgtOb21vc1N0cnVjdBI4CgZmaWVsZHMYASADKAsyKC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QuRmllbGRzRW50cnkaSgoLRmllbGRzRW50cnkSCwoDa2V5GAEgASgJEioKBXZhbHVlGAIgASgLMhsubm9tb3Mua2VybmVsLnYxLk5vbW9zVmFsdWU6AjgBKuoBChJCaXJ0aE91dGNvbWVTdGF0dXMSJAogQklSVEhfT1VUQ09NRV9TVEFUVVNfVU5TUEVDSUZJRUQQABIdChlCSVJUSF9PVVRDT01FX1NUQVRVU19CT1JOEAESIQodQklSVEhfT1VUQ09NRV9TVEFUVVNfREVGRVJSRUQQAhIfChtCSVJUSF9PVVRDT01FX1NUQVRVU19GQUlMRUQQAxIgChxCSVJUSF9PVVRDT01FX1NUQVRVU19SRUZVU0VEEAQSKQolQklSVEhfT1VUQ09NRV9TVEFUVVNfVU5XQVJSQU5URURfQ0VSVBAFKukSChFLZXJuZWxSZWZ1c2FsQ29kZRIjCh9LRVJORUxfUkVGVVNBTF9DT0RFX1VOU1BFQ0lGSUVEEAASJQohS0VSTkVMX1JFRlVTQUxfQ09ERV9CQURfU0lHTkFUVVJFEAESJAogS0VSTkVMX1JFRlVTQUxfQ09ERV9VTkFVVEhPUklaRUQQAhInCiNLRVJORUxfUkVGVVNBTF9DT0RFX1BPTElDWV9ESVNBQkxFRBADEioKJktFUk5FTF9SRUZVU0FMX0NPREVfVU5DRVJUSUZJRURfUE9MSUNZEAQSIwofS0VSTkVMX1JFRlVTQUxfQ09ERV9SRUZFUkVOVElBTBAFEi8KK0tFUk5FTF9SRUZVU0FMX0NPREVfUE9JTlRfU1RBVEVfVU5BVkFJTEFCTEUQBhIkCiBLRVJORUxfUkVGVVNBTF9DT0RFX0NBUF9FWENFRURFRBAHEi0KKUtFUk5FTF9SRUZVU0FMX0NPREVfQ0FQX0NPVU5UX1VOQVZBSUxBQkxFEAgSKQolS0VSTkVMX1JFRlVTQUxfQ09ERV9FVklERU5DRV9VTkJBQ0tFRBAJEiYKIktFUk5FTF9SRUZVU0FMX0NPREVfT1JQSEFOX1JFQ0VJUFQQChI2CjJLRVJORUxfUkVGVVNBTF9DT0RFX1JFQ0VJUFRfT05fVEVSTUlOQUxfT0JMSUdBVElPThALEiIKHktFUk5FTF9SRUZVU0FMX0NPREVfTk9UX01JTlRFRBAMEigKJEtFUk5FTF9SRUZVU0FMX0NPREVfRE9NQUlOX0xJRkVDWUNMRRANEikKJUtFUk5FTF9SRUZVU0FMX0NPREVfVFlQRV9UQUdfTUlTTUFUQ0gQDhIsCihLRVJORUxfUkVGVVNBTF9DT0RFX1JFVElSRURfUkVBRF9TVVJGQUNFEA8SMAosS0VSTkVMX1JFRlVTQUxfQ09ERV9DUk9TU19XT1JLU1BBQ0VfREVDTElORUQQEBIrCidLRVJORUxfUkVGVVNBTF9DT0RFX0FHR1JFR0FURV9JTlZBUklBTlQQERIrCidLRVJORUxfUkVGVVNBTF9DT0RFX1dPUktTUEFDRV9JTlZBUklBTlQQEhIuCipLRVJORUxfUkVGVVNBTF9DT0RFX0NBUFRVUkVEX1JFQURfQ09ORkxJQ1QQExIyCi5LRVJORUxfUkVGVVNBTF9DT0RFX0NPTkZMSUNUX1NOQVBTSE9UX1JFUVVJUkVEEBQSNAowS0VSTkVMX1JFRlVTQUxfQ09ERV9DT05GTElDVF9TTkFQU0hPVF9VTkRFQ0xBUkVEEBUSMQotS0VSTkVMX1JFRlVTQUxfQ09ERV9DT05GTElDVF9TTkFQU0hPVF9JTlZBTElEEBYSLworS0VSTkVMX1JFRlVTQUxfQ09ERV9DT05GTElDVF9TTkFQU0hPVF9TVEFMRRAXEjAKLEtFUk5FTF9SRUZVU0FMX0NPREVfQ0FQVFVSRURfUkVBRF9VTkRFQ0xBUkVEEBgSLQopS0VSTkVMX1JFRlVTQUxfQ09ERV9DQVBUVVJFRF9SRUFEX1BSSVZBVEUQGRIwCixLRVJORUxfUkVGVVNBTF9DT0RFX0FUVEVTVEVEX1JFQURfVU5ERUNMQVJFRBAaEjMKL0tFUk5FTF9SRUZVU0FMX0NPREVfQVRURVNURURfUkVBRF9VTlRSVVNURURfS0VZEBsSNgoyS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RFRF9SRUFEX1VOVFJVU1RFRF9TT1VSQ0UQHBIsCihLRVJORUxfUkVGVVNBTF9DT0RFX0FUVEVTVEVEX1JFQURfRk9SR0VEEB0SKwonS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RFRF9SRUFEX1NUQUxFEB4SLgoqS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RFRF9SRUFEX09WRVJTSVpFEB8SNwozS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RFRF9SRUFEX0RJU0hPTk9SRURfU09VUkNFECASNQoxS0VSTkVMX1JFRlVTQUxfQ09ERV9FUVVJVk9DQVRJT05fRVZJREVOQ0VfSU5WQUxJRBAhEjMKL0tFUk5FTF9SRUZVU0FMX0NPREVfQVRURVNUQVRJT05fUkVDRUlQVF9JTlZBTElEECISKwonS0VSTkVMX1JFRlVTQUxfQ09ERV9LRVlfUk9TVEVSX01JU01BVENIECMSLworS0VSTkVMX1JFRlVTQUxfQ09ERV9LRVlfRVBPQ0hfTk9UX01PTk9UT05JQxAkEikKJUtFUk5FTF9SRUZVU0FMX0NPREVfV1JJVEVfRVBPQ0hfU1RBTEUQJRItCilLRVJORUxfUkVGVVNBTF9DT0RFX0VOVkVMT1BFX1NJRF9NSVNNQVRDSBAmEjIKLktFUk5FTF9SRUZVU0FMX0NPREVfUkVWT0tFRF9NRU1CRVJfUkVTVVJSRUNURUQQJxIoCiRLRVJORUxfUkVGVVNBTF9DT0RFX0ZPUkdFRF9QUklOQ0lQQUwQKBIoCiRLRVJORUxfUkVGVVNBTF9DT0RFX09XTkVEX0tFWV9BTkNIT1IQKRImCiJLRVJORUxfUkVGVVNBTF9DT0RFX09XTkVEX1JFQ09WRVJZECoSLAooS0VSTkVMX1JFRlVTQUxfQ09ERV9TVVJGQUNFRF9CQVNJU19BSEVBRBArEjIKLktFUk5FTF9SRUZVU0FMX0NPREVfU0lHTkVSX0VQT0NIX09VVF9PRl9XSU5ET1cQLBImCiJLRVJORUxfUkVGVVNBTF9DT0RFX0VWT0xWRV9SRUZVU0VEEC0SKwonS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RBVElPTl9JTlZBTElEEC4SLQopS0VSTkVMX1JFRlVTQUxfQ09ERV9QQVJFTlRfRElEX05PVF9BVFRFU1QQLxIpCiVLRVJORUxfUkVGVVNBTF9DT0RFX0NFUlRfQ0hBSU5fQlJPS0VOEDASKgomS0VSTkVMX1JFRlVTQUxfQ09ERV9OT1RfUk9PVEVEX0FUX1JPT1QQMRIqCiZLRVJORUxfUkVGVVNBTF9DT0RFX0RFTEVHQVRJT05fSU5WQUxJRBAyEiUKIUtFUk5FTF9SRUZVU0FMX0NPREVfUExBTl9SRUpFQ1RFRBAzKooBCg9WZXJpZnlDaGFpbldhbGsSIQodVkVSSUZZX0NIQUlOX1dBTEtfVU5TUEVDSUZJRUQQABIaChZWRVJJRllfQ0hBSU5fV0FMS19GVUxMEAESHAoYVkVSSUZZX0NIQUlOX1dBTEtfU1VGRklYEAISGgoWVkVSSUZZX0NIQUlOX1dBTEtfTUVNTxADKrcBChdNb2RlbExpZmVjeWNsZU9wZXJhdGlvbhIpCiVNT0RFTF9MSUZFQ1lDTEVfT1BFUkFUSU9OX1VOU1BFQ0lGSUVEEAASJQohTU9ERUxfTElGRUNZQ0xFX09QRVJBVElPTl9JTlNUQUxMEAESIwofTU9ERUxfTElGRUNZQ0xFX09QRVJBVElPTl9TVEFHRRACEiUKIU1PREVMX0xJRkVDWUNMRV9PUEVSQVRJT05fUFJPTU9URRADKosGCh9Qcm92aWRlclRva2VuVmVyaWZpY2F0aW9uU3RhdHVzEjIKLlBST1ZJREVSX1RPS0VOX1ZFUklGSUNBVElPTl9TVEFUVVNfVU5TUEVDSUZJRUQQABIsCihQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX1ZBTElEEAESNgoyUFJPVklERVJfVE9LRU5fVkVSSUZJQ0FUSU9OX1NUQVRVU19OT19NQVRDSElOR19LRVkQAhIuCipQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX0VYUElSRUQQAxI0CjBQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX05PVF9ZRVRfVkFMSUQQBBI2CjJQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX0lTU1VFUl9NSVNNQVRDSBAFEjgKNFBST1ZJREVSX1RPS0VOX1ZFUklGSUNBVElPTl9TVEFUVVNfQVVESUVOQ0VfTUlTTUFUQ0gQBhI0CjBQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX0JBRF9TSUdOQVRVUkUQBxIwCixQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX01BTEZPUk1FRBAIEjwKOFBST1ZJREVSX1RPS0VOX1ZFUklGSUNBVElPTl9TVEFUVVNfVU5TVVBQT1JURURfQUxHT1JJVEhNEAkSLgoqUFJPVklERVJfVE9LRU5fVkVSSUZJQ0FUSU9OX1NUQVRVU19CQURfS0VZEAoSNgoyUFJPVklERVJfVE9LRU5fVkVSSUZJQ0FUSU9OX1NUQVRVU19NSVNTSU5HX1NVQkpFQ1QQCxIyCi5QUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX05PX1ZFUklGSUVSEAwSNAowUFJPVklERVJfVE9LRU5fVkVSSUZJQ0FUSU9OX1NUQVRVU19NSVNTSU5HX1RPS0VOEA0qhAEKEVF1ZXJ5UmVzdWx0Rm9ybWF0EiMKH1FVRVJZX1JFU1VMVF9GT1JNQVRfVU5TUEVDSUZJRUQQABIkCiBRVUVSWV9SRVNVTFRfRk9STUFUX0xFR0FDWV9WQUxVRRABEiQKIFFVRVJZX1JFU1VMVF9GT1JNQVRfTk9NSU5BTF9VU0RBEAIqjAwKDlF1ZXJ5T3BlcmF0aW9uEh8KG1FVRVJZX09QRVJBVElPTl9VTlNQRUNJRklFRBAAEhwKGFFVRVJZX09QRVJBVElPTl9FWFRSRU1VTRABEiAKHFFVRVJZX09QRVJBVElPTl9SRUFEX1BPU1RVUkUQBBIfChtRVUVSWV9PUEVSQVRJT05fQ1VSUkVOVF9MQVcQBRIjCh9RVUVSWV9PUEVSQVRJT05fSU5URVJGQUNFX09GRkVSEAYSJwojUVVFUllfT1BFUkFUSU9OX1JFTEFUSU9OX0dBVEVfT0ZGRVIQBxIdChlRVUVSWV9PUEVSQVRJT05fU0NFTkVfTEFXEAgSIQodUVVFUllfT1BFUkFUSU9OX0lOU1RBTExFRF9MQVcQCRIcChhRVUVSWV9PUEVSQVRJT05fREVTQ1JJQkUQChIjCh9RVUVSWV9PUEVSQVRJT05fS0VSTkVMX1JFU09VUkNFEAsSIwofUVVFUllfT1BFUkFUSU9OX0RFVkVMT1BFUl9TUEFOUxAMEikKJVFVRVJZX09QRVJBVElPTl9ERUNMQVJFRF9DQVBBQklMSVRJRVMQDRIdChlRVUVSWV9PUEVSQVRJT05fUkVBRElORVNTEA4SJAogUVVFUllfT1BFUkFUSU9OX1BST0pFQ1RJT05fU1RBVFMQDxIlCiFRVUVSWV9PUEVSQVRJT05fTUVNT1JZX0RST1BfUFJPQkUQEBIYChRRVUVSWV9PUEVSQVRJT05fV0FSTRAREhsKF1FVRVJZX09QRVJBVElPTl9SRUZSRVNIEBISIAocUVVFUllfT1BFUkFUSU9OX1ZFUklGWV9DSEFJThATEiUKIVFVRVJZX09QRVJBVElPTl9ISVNUT1JZX1BSRUZMSUdIVBAUEhkKFVFVRVJZX09QRVJBVElPTl9ST1VURRAVEhgKFFFVRVJZX09QRVJBVElPTl9NSU5UEBYSIQodUVVFUllfT1BFUkFUSU9OX0NSWVBUT19LRVlHRU4QFxIlCiFRVUVSWV9PUEVSQVRJT05fQ1JZUFRPX1NFQUxfRklFTEQQGBIsCihRVUVSWV9PUEVSQVRJT05fQ1JZUFRPX0JMSU5EX0lOREVYX1RPS0VOEBkSKgomUVVFUllfT1BFUkFUSU9OX0NSWVBUT19PV05FRF9TQ09QRV9LRVkQGhIvCitRVUVSWV9PUEVSQVRJT05fQ1JZUFRPX09XTkVEX0RFVklDRV9SRVFVRVNUEBsSMQotUVVFUllfT1BFUkFUSU9OX0NSWVBUT19PV05FRF9QUkVQQVJFX0FQUFJPVkFMEBwSMQotUVVFUllfT1BFUkFUSU9OX0NSWVBUT19PV05FRF9QUkVQQVJFX1JFQ09WRVJZEB0SIwofUVVFUllfT1BFUkFUSU9OX0NSWVBUT19XUkFQX0tFWRAeEiUKIVFVRVJZX09QRVJBVElPTl9DUllQVE9fVU5XUkFQX0tFWRAfEiEKHVFVRVJZX09QRVJBVElPTl9BVVRIT1JfS0VZR0VOECASJAogUVVFUllfT1BFUkFUSU9OX0FUVEVTVEFUSU9OX1NJR04QIRIgChxRVUVSWV9PUEVSQVRJT05fUkVDRUlQVF9QQVRIECISHQoZUVVFUllfT1BFUkFUSU9OX0NFUlRfU0lHThAjEiUKIVFVRVJZX09QRVJBVElPTl9CSVJUSF9UUlVTVF9TVEFURRAkEiEKHVFVRVJZX09QRVJBVElPTl9FUkFfQ0VSVF9TSUdOECUSKAokUVVFUllfT1BFUkFUSU9OX0RFTEVHQVRJT05fQ0VSVF9TSUdOECYSKQolUVVFUllfT1BFUkFUSU9OX0NBTk9OSUNBTElaRV9GUk9OVElFUhAnEisKJ1FVRVJZX09QRVJBVElPTl9DQU5PTklDQUxJWkVfUFJPSkVDVElPThAoIgQIAhACIgQIAxADKiFRVUVSWV9PUEVSQVRJT05fUEVORElOR19DT05GTElDVFMqKFFVRVJZX09QRVJBVElPTl9QRU5ESU5HX0NPTkZMSUNUX1NVTU1BUlkq0gIKFVJlc2lkZW50Q29tcG9uZW50S2luZBInCiNSRVNJREVOVF9DT01QT05FTlRfS0lORF9VTlNQRUNJRklFRBAAEiYKIlJFU0lERU5UX0NPTVBPTkVOVF9LSU5EX0ZPTERfU1RBVEUQARItCilSRVNJREVOVF9DT01QT05FTlRfS0lORF9SRUFEX01PREVMX1NRTElURRACEi4KKlJFU0lERU5UX0NPTVBPTkVOVF9LSU5EX1JFQURfTU9ERUxfSU5ERVhFUxADEi0KKVJFU0lERU5UX0NPTVBPTkVOVF9LSU5EX1NIQVJFRF9BVFRSSUJVVEVEEAQSLAooUkVTSURFTlRfQ09NUE9ORU5UX0tJTkRfV09SS1NQQUNFX0NBQ0hFUxAFEiwKKFJFU0lERU5UX0NPTVBPTkVOVF9LSU5EX0dJVF9PQkpFQ1RfQ0FDSEUQBipsChNLZXJuZWxMYXdDYXBhYmlsaXR5EiUKIUtFUk5FTF9MQVdfQ0FQQUJJTElUWV9VTlNQRUNJRklFRBAAEi4KKktFUk5FTF9MQVdfQ0FQQUJJTElUWV9TVEFHRV9aRVJPX0JPT1RTVFJBUBABKlkKFUNoZWNrcG9pbnRDb21wcmVzc2lvbhIfChtDSEVDS1BPSU5UX0NPTVBSRVNTSU9OX05PTkUQABIfChtDSEVDS1BPSU5UX0NPTVBSRVNTSU9OX0daSVAQASqRAQocQ2hlY2twb2ludFZlcmlmaWNhdGlvblBvbGljeRIzCi9DSEVDS1BPSU5UX1ZFUklGSUNBVElPTl9QT0xJQ1lfVkVSSUZZX0NBTk9OSUNBTBAAEjwKOENIRUNLUE9JTlRfVkVSSUZJQ0FUSU9OX1BPTElDWV9UUlVTVF9QUkVWSU9VU0xZX1ZFUklGSUVEEAEqgAEKE0NoZWNrcG9pbnRBc3N1cmFuY2USJAogQ0hFQ0tQT0lOVF9BU1NVUkFOQ0VfVU5TUEVDSUZJRUQQABIgChxDSEVDS1BPSU5UX0FTU1VSQU5DRV9UUlVTVEVEEAESIQodQ0hFQ0tQT0lOVF9BU1NVUkFOQ0VfVkVSSUZJRUQQAiqoAQoaSW50ZW50VHJhbnNwb3J0UmVxdWlyZW1lbnQSLAooSU5URU5UX1RSQU5TUE9SVF9SRVFVSVJFTUVOVF9VTlNQRUNJRklFRBAAEi4KKklOVEVOVF9UUkFOU1BPUlRfUkVRVUlSRU1FTlRfU0VBTEVEX0NIQU5HRRABEiwKKElOVEVOVF9UUkFOU1BPUlRfUkVRVUlSRU1FTlRfQ09NTUlUX1RSRUUQAiqJAQoVTGlmZWN5Y2xlSW5zdGFsbFBoYXNlEicKI0xJRkVDWUNMRV9JTlNUQUxMX1BIQVNFX1VOU1BFQ0lGSUVEEAASIgoeTElGRUNZQ0xFX0lOU1RBTExfUEhBU0VfQUNUSVZFEAESIwofTElGRUNZQ0xFX0lOU1RBTExfUEhBU0VfUEVORElORxACMlkKEk5vbW9zS2VybmVsU2VydmljZRJDCgRDYWxsEhwubm9tb3Mua2VybmVsLnYxLkNhbGxSZXF1ZXN0Gh0ubm9tb3Mua2VybmVsLnYxLkNhbGxSZXNwb25zZWIGcHJvdG8z");
477
1556
  CallRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 0);
478
1557
  CallResponseSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 1);
479
- PrepareRemoteOfferRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 13);
480
- PrepareRemoteOfferResponseSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 15);
481
- WorkspaceTargetSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 33);
482
- DirectiveCallSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 35);
483
- AuthoringOptionsSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 36);
484
- CapturedClockSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 37);
485
- BirthCertificateSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 38);
486
- OfferRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 39);
487
- QueryRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 42);
488
- QueryAuthoritySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 43);
489
- InjectedKeySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 44);
490
- RowsQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 45);
491
- PageQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 46);
492
- ByIdQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 47);
493
- TallyQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 52);
494
- SpatialQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 53);
495
- NamedQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 54);
496
- FrontierTransitionRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 55);
497
- AuthorizationObjectSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 60);
498
- AuthorizationSubjectSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 61);
499
- AuthorizationConsistencySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 63);
500
- AuthorizationCheckRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 65);
501
- AuthorizationExpandRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 66);
502
- OutboxRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 72);
503
- SyncRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 73);
504
- TestRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 74);
505
- SetTestRootRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 75);
506
- CustodyRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 77);
507
- ResidentFootprintRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 78);
508
- PackDeltaRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 82);
509
- ApplyPackRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 83);
510
- RepoStatsRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 84);
511
- IntentsAboveRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 85);
512
- InspectChangeRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 87);
513
- RefusalVerdictSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 88);
514
- EncodeRefusalVerdictRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 89);
515
- InspectRefusalVerdictRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 90);
516
- ProveCompactionEquivalenceRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 92);
517
- ReadBlobRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 93);
518
- ResolveRefRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 94);
519
- ListRefsRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 95);
520
- WriteRefRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 96);
521
- DeleteRefRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 97);
522
- WriteMetaCommitRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 99);
523
- LawClosureInfoRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 100);
524
- CheckpointExportRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 101);
525
- VerifiedFrontierReceiptSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 103);
526
- StoredCheckpointManifestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 107);
527
- CheckpointImportRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 108);
528
- CapacityReserveRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 109);
529
- RestoreMainRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 110);
530
- ResolveStatePositionRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 111);
531
- NomosValueSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 139);
532
- NomosStructSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 142);
533
- QueryOperationSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 2);
1558
+ PrepareRemoteOfferRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 19);
1559
+ PrepareRemoteOfferResponseSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 21);
1560
+ ApplyWorkspaceEffectRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 38);
1561
+ ApplyWorkspaceEffectResponseSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 39);
1562
+ WorkspaceTargetSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 43);
1563
+ InitializeWorkspaceRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 45);
1564
+ DirectiveCallSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 47);
1565
+ AuthoringOptionsSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 48);
1566
+ CapturedClockSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 49);
1567
+ BirthCertificateSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 50);
1568
+ SignBirthCertificateRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 51);
1569
+ OfferRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 54);
1570
+ QueryRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 57);
1571
+ QueryAuthoritySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 64);
1572
+ InjectedKeySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 65);
1573
+ RowsQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 66);
1574
+ PageQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 67);
1575
+ ByIdQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 68);
1576
+ ByTypeQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 69);
1577
+ TallyQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 74);
1578
+ SpatialQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 75);
1579
+ PendingConflictsQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 76);
1580
+ PendingConflictSummaryQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 77);
1581
+ NamedQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 78);
1582
+ FrontierTransitionRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 79);
1583
+ AuthorizationObjectSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 84);
1584
+ AuthorizationSubjectSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 85);
1585
+ AuthorizationConsistencySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 87);
1586
+ AuthorizationCheckRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 89);
1587
+ AuthorizationExpandRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 90);
1588
+ OutboxRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 96);
1589
+ SyncRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 97);
1590
+ TestRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 98);
1591
+ SetTestRootRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 99);
1592
+ CustodyRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 101);
1593
+ ResidentFootprintRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 102);
1594
+ PackDeltaRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 106);
1595
+ ApplyPackRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 107);
1596
+ RepoStatsRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 108);
1597
+ IntentsAboveRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 109);
1598
+ InspectChangeRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 111);
1599
+ RefusalVerdictSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 112);
1600
+ EncodeRefusalVerdictRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 113);
1601
+ InspectRefusalVerdictRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 114);
1602
+ ProveCompactionEquivalenceRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 116);
1603
+ ReadBlobRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 117);
1604
+ ResolveRefRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 118);
1605
+ ListRefsRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 119);
1606
+ WriteRefRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 120);
1607
+ DeleteRefRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 121);
1608
+ WriteMetaCommitRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 123);
1609
+ LawClosureInfoRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 124);
1610
+ CheckpointExportRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 125);
1611
+ VerifiedFrontierReceiptSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 127);
1612
+ StoredCheckpointManifestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 131);
1613
+ CheckpointImportRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 132);
1614
+ CapacityReserveRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 133);
1615
+ RestoreMainRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 134);
1616
+ ResolveStatePositionRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 135);
1617
+ NomosValueSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 163);
1618
+ NomosStructSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 166);
1619
+ BirthOutcomeStatusSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 0);
1620
+ BirthOutcomeStatus = /* @__PURE__ */ tsEnum(BirthOutcomeStatusSchema);
1621
+ QueryResultFormatSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 5);
1622
+ QueryResultFormat = /* @__PURE__ */ tsEnum(QueryResultFormatSchema);
1623
+ QueryOperationSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 6);
534
1624
  QueryOperation = /* @__PURE__ */ tsEnum(QueryOperationSchema);
535
- KernelLawCapabilitySchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 4);
1625
+ KernelLawCapabilitySchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 8);
536
1626
  KernelLawCapability = /* @__PURE__ */ tsEnum(KernelLawCapabilitySchema);
537
- CheckpointCompressionSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 5);
1627
+ CheckpointCompressionSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 9);
538
1628
  CheckpointCompression = /* @__PURE__ */ tsEnum(CheckpointCompressionSchema);
539
- CheckpointVerificationPolicySchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 6);
1629
+ CheckpointVerificationPolicySchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 10);
540
1630
  CheckpointVerificationPolicy = /* @__PURE__ */ tsEnum(CheckpointVerificationPolicySchema);
541
- CheckpointAssuranceSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 7);
1631
+ CheckpointAssuranceSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 11);
542
1632
  CheckpointAssurance = /* @__PURE__ */ tsEnum(CheckpointAssuranceSchema);
543
- IntentTransportRequirementSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 8);
1633
+ IntentTransportRequirementSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 12);
544
1634
  IntentTransportRequirement = /* @__PURE__ */ tsEnum(IntentTransportRequirementSchema);
545
- LifecycleInstallPhaseSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 9);
1635
+ LifecycleInstallPhaseSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 13);
546
1636
  LifecycleInstallPhase = /* @__PURE__ */ tsEnum(LifecycleInstallPhaseSchema);
547
1637
  }
548
1638
  });
549
1639
 
1640
+ // vendor/engine/offer-result.ts
1641
+ function presentProtoInteger(value) {
1642
+ return value <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(value) : value;
1643
+ }
1644
+ function presentKernelSpans(value) {
1645
+ const observations = {};
1646
+ for (const operation of value.operations) {
1647
+ observations[operation.label] = {
1648
+ totalUs: presentProtoInteger(operation.totalUs),
1649
+ phases: Object.fromEntries(operation.phases.map(({ name, value: value2 }) => [name, presentProtoInteger(value2)])),
1650
+ notes: Object.fromEntries(operation.notes.map(({ name, value: value2 }) => [name, presentProtoInteger(value2)]))
1651
+ };
1652
+ }
1653
+ if (value.engine.length > 0) {
1654
+ observations.engine = Object.fromEntries(
1655
+ value.engine.map(({ name, value: value2 }) => [name, presentProtoInteger(value2)])
1656
+ );
1657
+ }
1658
+ return observations;
1659
+ }
1660
+ function presentBirthStatus(status) {
1661
+ switch (status) {
1662
+ case BirthOutcomeStatus.BORN:
1663
+ return "born";
1664
+ case BirthOutcomeStatus.DEFERRED:
1665
+ return "deferred";
1666
+ case BirthOutcomeStatus.FAILED:
1667
+ return "failed";
1668
+ case BirthOutcomeStatus.REFUSED:
1669
+ return "refused";
1670
+ case BirthOutcomeStatus.UNWARRANTED_CERT:
1671
+ return "unwarranted-cert";
1672
+ case BirthOutcomeStatus.UNSPECIFIED:
1673
+ throw new Error("kernel returned a birth outcome without a status");
1674
+ default: {
1675
+ const exhaustive = status;
1676
+ throw new Error(`kernel returned an unknown birth outcome status: ${String(exhaustive)}`);
1677
+ }
1678
+ }
1679
+ }
1680
+ function presentOfferAdmitted(admitted) {
1681
+ if (admitted.intentId.length === 0) {
1682
+ throw new Error("kernel admitted an offer without its stable intent identity");
1683
+ }
1684
+ return {
1685
+ ok: true,
1686
+ outcome: "admitted",
1687
+ ...admitted.head.length > 0 ? { head: admitted.head } : {},
1688
+ intentId: admitted.intentId,
1689
+ ...admitted.intentOut !== void 0 ? { intentOut: admitted.intentOut } : {},
1690
+ created: admitted.created.map(({ type, id }) => ({ type, id })),
1691
+ affected: admitted.affected.map(({ type, id }) => ({ type, id })),
1692
+ born: admitted.born.map(({ workspace, head }) => ({ workspace, head })),
1693
+ birthOutcomes: admitted.birthOutcomes.map((birth) => ({
1694
+ ...birth.workspace !== void 0 ? { workspace: birth.workspace } : {},
1695
+ status: presentBirthStatus(birth.status),
1696
+ ...birth.reason !== void 0 ? { reason: birth.reason } : {},
1697
+ ...birth.code !== void 0 ? { code: birth.code } : {},
1698
+ replayed: birth.replayed,
1699
+ ...birth.lawHash !== void 0 ? { lawHash: birth.lawHash } : {},
1700
+ ...birth.parentWorkspace !== void 0 ? { parentWorkspace: birth.parentWorkspace } : {},
1701
+ ...birth.childWorkspace !== void 0 ? { childWorkspace: birth.childWorkspace } : {},
1702
+ ...birth.certificateRefusalReason !== void 0 ? { certificateRefusalReason: birth.certificateRefusalReason } : {}
1703
+ })),
1704
+ ...admitted.kernelSpans !== void 0 ? { kernelSpans: presentKernelSpans(admitted.kernelSpans) } : {},
1705
+ ...admitted.dryRun ? { dryRun: true } : {}
1706
+ };
1707
+ }
1708
+ var init_offer_result = __esm({
1709
+ "vendor/engine/offer-result.ts"() {
1710
+ "use strict";
1711
+ init_kernel_pb();
1712
+ }
1713
+ });
1714
+
550
1715
  // vendor/engine/engine.ts
551
1716
  var engine_exports = {};
552
1717
  __export(engine_exports, {
@@ -556,15 +1721,19 @@ __export(engine_exports, {
556
1721
  admitAll: () => admitAll,
557
1722
  admitIntentOffers: () => admitIntentOffers,
558
1723
  applyIntentBytes: () => applyIntentBytes,
1724
+ applyWorkspaceEffect: () => applyWorkspaceEffect,
559
1725
  archiveRefusedMain: () => archiveRefusedMain,
560
1726
  attestationSign: () => attestationSign,
561
1727
  author: () => author,
562
1728
  authorEphemeral: () => authorEphemeral,
563
1729
  authorKeygen: () => authorKeygen,
564
1730
  authorOn: () => authorOn,
1731
+ authorOperatorCall: () => authorOperatorCall,
565
1732
  backupHead: () => backupHead,
566
1733
  backupToCustody: () => backupToCustody,
1734
+ birthCertificateLawPayload: () => birthCertificateLawPayload,
567
1735
  boot: () => boot,
1736
+ callKernel: () => callKernel,
568
1737
  certSign: () => certSign,
569
1738
  check: () => check,
570
1739
  checkpointStateHash: () => checkpointStateHash,
@@ -586,6 +1755,7 @@ __export(engine_exports, {
586
1755
  cryptoSealField: () => cryptoSealField,
587
1756
  cryptoUnwrapKey: () => cryptoUnwrapKey,
588
1757
  cryptoWrapKey: () => cryptoWrapKey,
1758
+ currentControllerLawHash: () => currentControllerLawHash,
589
1759
  currentLaw: () => currentLaw,
590
1760
  custodyConfirmedMain: () => custodyConfirmedMain,
591
1761
  custodyFetch: () => custodyFetch,
@@ -616,6 +1786,7 @@ __export(engine_exports, {
616
1786
  importCheckpoint: () => importCheckpoint,
617
1787
  importCustodyObjects: () => importCustodyObjects,
618
1788
  ingestPackAsCustody: () => ingestPackAsCustody,
1789
+ initializeWorkspace: () => initializeWorkspace,
619
1790
  installedLaw: () => installedLaw,
620
1791
  intentOfferResidencies: () => intentOfferResidencies,
621
1792
  intentOfferSizeRefusal: () => intentOfferSizeRefusal,
@@ -638,11 +1809,12 @@ __export(engine_exports, {
638
1809
  offerAdmit: () => offerAdmit,
639
1810
  offerIntent: () => offerIntent,
640
1811
  offerRequest: () => offerRequest,
1812
+ offerRequestResponse: () => offerRequestResponse,
641
1813
  outboundOffers: () => outboundOffers,
642
1814
  packBornChildren: () => packBornChildren,
643
1815
  packDelta: () => packDelta,
644
- pendingConflictSummary: () => pendingConflictSummary,
645
- pendingConflicts: () => pendingConflicts,
1816
+ pendingConflictSummaryUsda: () => pendingConflictSummaryUsda,
1817
+ pendingConflictsUsda: () => pendingConflictsUsda,
646
1818
  placementDirectives: () => placementDirectives,
647
1819
  prepareRemoteOffer: () => prepareRemoteOffer,
648
1820
  projectionStats: () => projectionStats,
@@ -654,7 +1826,10 @@ __export(engine_exports, {
654
1826
  pushStagedCheckpoint: () => pushStagedCheckpoint,
655
1827
  qById: () => qById,
656
1828
  query: () => query,
1829
+ queryByIdUsda: () => queryByIdUsda,
1830
+ queryByTypeUsda: () => queryByTypeUsda,
657
1831
  queryEphemeral: () => queryEphemeral,
1832
+ queryGeneratedUsda: () => queryGeneratedUsda,
658
1833
  queryPage: () => queryPage,
659
1834
  queryProfile: () => queryProfile,
660
1835
  queryStructured: () => queryStructured,
@@ -664,6 +1839,7 @@ __export(engine_exports, {
664
1839
  readiness: () => readiness,
665
1840
  rebirthCompact: () => rebirthCompact,
666
1841
  reconcileBornPacks: () => reconcileBornPacks,
1842
+ reconcileRequiredCustodyHead: () => reconcileRequiredCustodyHead,
667
1843
  refreshProjection: () => refreshProjection,
668
1844
  refusedSummary: () => refusedSummary,
669
1845
  replicateIntents: () => replicateIntents,
@@ -722,13 +1898,7 @@ function osEntropyBuffer(n) {
722
1898
  }
723
1899
  return out2;
724
1900
  }
725
- function callProto(ex, operation, STDERR) {
726
- const requestId = `adapter-${++protoRequestSequence}`;
727
- const request = create(CallRequestSchema, {
728
- protocolVersion: PROTO_ABI_VERSION,
729
- requestId,
730
- operation
731
- });
1901
+ function invokeCallRequest(ex, request, STDERR) {
732
1902
  const bytes = toBinary(CallRequestSchema, request);
733
1903
  const requestPtr = ex.git_holon_alloc(bytes.length) >>> 0;
734
1904
  try {
@@ -747,8 +1917,11 @@ function callProto(ex, operation, STDERR) {
747
1917
  if (response.protocolVersion !== PROTO_ABI_VERSION) {
748
1918
  throw new Error(`kernel protobuf ABI ${response.protocolVersion}; expected ${PROTO_ABI_VERSION}`);
749
1919
  }
750
- if (response.requestId !== requestId) {
751
- throw new Error(`kernel protobuf response id ${response.requestId || "<empty>"}; expected ${requestId}`);
1920
+ if (response.requestId !== request.requestId) {
1921
+ const failure = response.outcome.case === "failure" ? `; kernel failure ${response.outcome.value.code}: ${response.outcome.value.message}` : "";
1922
+ throw new Error(
1923
+ `kernel protobuf response id ${response.requestId || "<empty>"}; expected ${request.requestId}${failure}`
1924
+ );
752
1925
  }
753
1926
  if (response.outcome.case === "failure") {
754
1927
  throw new Error(`${response.outcome.value.code}: ${response.outcome.value.message}`);
@@ -761,6 +1934,20 @@ function callProto(ex, operation, STDERR) {
761
1934
  ex.git_holon_dealloc(requestPtr, bytes.length);
762
1935
  }
763
1936
  }
1937
+ function callKernel(eng, request) {
1938
+ if (request.protocolVersion !== PROTO_ABI_VERSION) {
1939
+ throw new Error(`kernel protobuf ABI ${request.protocolVersion}; expected ${PROTO_ABI_VERSION}`);
1940
+ }
1941
+ if (!request.requestId) throw new Error("kernel protobuf request id is required");
1942
+ return invokeCallRequest(eng.ex, request, eng.STDERR);
1943
+ }
1944
+ function callProto(ex, operation, STDERR) {
1945
+ return invokeCallRequest(ex, create(CallRequestSchema, {
1946
+ protocolVersion: PROTO_ABI_VERSION,
1947
+ requestId: `adapter-${++protoRequestSequence}`,
1948
+ operation
1949
+ }), STDERR);
1950
+ }
764
1951
  function protoValue(value) {
765
1952
  if (value === null || value === void 0) {
766
1953
  return create(NomosValueSchema, { kind: { case: "null", value: {} } });
@@ -835,25 +2022,7 @@ function offerResult(response) {
835
2022
  const outcome = response.outcome;
836
2023
  switch (outcome.case) {
837
2024
  case "admitted": {
838
- const value = jsStruct(outcome.value.result);
839
- if (typeof value.intentId !== "string" || value.intentId.length === 0) {
840
- throw new Error(
841
- `kernel admitted an offer without its stable intent identity (returned fields: ${Object.keys(value).sort().join(", ") || "none"})`
842
- );
843
- }
844
- return {
845
- ok: true,
846
- outcome: "admitted",
847
- ...typeof value.head === "string" ? { head: value.head } : {},
848
- intentId: value.intentId,
849
- ...value.intentOut !== void 0 ? { intentOut: value.intentOut } : {},
850
- created: Array.isArray(value.created) ? value.created : [],
851
- affected: Array.isArray(value.affected) ? value.affected : [],
852
- born: Array.isArray(value.born) ? value.born : [],
853
- birthOutcomes: Array.isArray(value.birthOutcomes) ? value.birthOutcomes : [],
854
- ...value.kernelSpans !== void 0 ? { kernelSpans: value.kernelSpans } : {},
855
- ...value.dryRun === true ? { dryRun: true } : {}
856
- };
2025
+ return presentOfferAdmitted(outcome.value);
857
2026
  }
858
2027
  case "prepared":
859
2028
  throw new Error("prepared offers are typed transport bytes; use prepareRemoteOffer rather than the admitted-offer adapter");
@@ -947,6 +2116,32 @@ function applicationQueryProto(eng, ws, query2, options = {}) {
947
2116
  if (result.case === "value") return jsValue(result.value);
948
2117
  throw new Error(`kernel returned ${result.case || "empty"} for application query`);
949
2118
  }
2119
+ function applicationQueryUsda(eng, ws, query2, options = {}) {
2120
+ const response = callProto(eng.ex, {
2121
+ case: "query",
2122
+ value: create(QueryRequestSchema, {
2123
+ target: protoTarget(ws, options.branch ?? BRANCH),
2124
+ authority: protoAuthority(
2125
+ options.principal,
2126
+ options.keys,
2127
+ options.authToken,
2128
+ options.nowUnix ?? 0,
2129
+ options.authorSecret
2130
+ ),
2131
+ spans: options.spans ?? false,
2132
+ resultFormat: QueryResultFormat.NOMINAL_USDA,
2133
+ query: query2
2134
+ })
2135
+ }, eng.STDERR);
2136
+ if (response.outcome.case !== "query") {
2137
+ throw new Error(`kernel returned ${response.outcome.case || "empty"} for USDA query`);
2138
+ }
2139
+ const result = response.outcome.value.result;
2140
+ if (result.case !== "resultUsda") {
2141
+ throw new Error(`kernel returned ${result.case || "empty"} for USDA query`);
2142
+ }
2143
+ return result.value;
2144
+ }
950
2145
  function namedQueryProto(eng, ws, operation, arguments_ = {}, options = {}) {
951
2146
  return applicationQueryProto(eng, ws, {
952
2147
  case: "named",
@@ -981,6 +2176,47 @@ function workspaceGenesis(eng, ws) {
981
2176
  if (!first?.oid) throw new Error(`workspaceGenesis: workspace '${ws}' has an empty main custody`);
982
2177
  return first.oid;
983
2178
  }
2179
+ function authorOperatorCall(eng, ws, call, controllerHash, opts = {}) {
2180
+ return author(eng, ws, call.domain, call.directive, call.canonicalUsda, controllerHash, opts);
2181
+ }
2182
+ function initializeWorkspace(eng, ws, installedBy = eng.installedBy) {
2183
+ const sequence = eng.seq++;
2184
+ const captured = {
2185
+ physical: Date.now(),
2186
+ logical: 0,
2187
+ replica: eng.replica
2188
+ };
2189
+ const response = callProto(eng.ex, {
2190
+ case: "initializeWorkspace",
2191
+ value: create(InitializeWorkspaceRequestSchema, {
2192
+ target: protoTarget(ws),
2193
+ controllerLawUsdz: eng.nomosLawUsdz,
2194
+ authoring: create(AuthoringOptionsSchema, {
2195
+ actor: installedBy,
2196
+ sequence: BigInt(sequence),
2197
+ clock: create(CapturedClockSchema, {
2198
+ physicalMillis: BigInt(captured.physical),
2199
+ logical: captured.logical,
2200
+ replica: BigInt(captured.replica)
2201
+ })
2202
+ })
2203
+ })
2204
+ }, eng.STDERR);
2205
+ if (response.outcome.case !== "initializeWorkspace") {
2206
+ throw new Error(
2207
+ `kernel returned ${response.outcome.case || "empty"} for initialize_workspace`
2208
+ );
2209
+ }
2210
+ if (response.outcome.value.controllerLawHash !== eng.hashes.nomos) {
2211
+ throw new Error(
2212
+ `kernel initialized controller ${response.outcome.value.controllerLawHash}; expected ${eng.hashes.nomos}`
2213
+ );
2214
+ }
2215
+ return {
2216
+ head: response.outcome.value.head,
2217
+ controllerLawHash: response.outcome.value.controllerLawHash
2218
+ };
2219
+ }
984
2220
  async function createEngine({ wasmModule, bootstrapLawUsdz, nomosLawUsdz, replica, installedBy = "nomos-cloud" }) {
985
2221
  const assertUsdz = (name, bytes) => {
986
2222
  if (!(bytes instanceof Uint8Array) || bytes.length < 4 || bytes[0] !== 80 || bytes[1] !== 75 || bytes[2] !== 3 || bytes[3] !== 4) {
@@ -1763,13 +2999,21 @@ async function admitIntentOffers(eng, ws, ledger, offers, { receiptFence = null,
1763
2999
  }
1764
3000
  const cap = summaryCtx ? beginSummaryCapture(eng, ws, summaryCtx, doc) : null;
1765
3001
  const _tOffer = Date.now();
1766
- const res = offer?.sealedOffer ? offerRequest(eng, offer.sealedOffer) : offerAdmit(eng, ws, blob, { defer: false });
3002
+ const kernelVerdict = offer?.sealedOffer ? offerRequestResponse(eng, offer.sealedOffer) : void 0;
3003
+ const res = kernelVerdict ? offerResult(kernelVerdict) : offerAdmit(eng, ws, blob, { defer: false });
1767
3004
  log("offer-admit-ms", { ws, ms: Date.now() - _tOffer, deferred: false, ok: res.ok });
1768
3005
  if (res.ok) {
1769
3006
  if (intentId) main.ids.add(intentId);
1770
3007
  main.oids.add(res.head);
1771
3008
  main.head = res.head;
1772
- rec.admitted.push({ oid, intent: intentId, head: res.head });
3009
+ rec.admitted.push({
3010
+ oid,
3011
+ intent: intentId,
3012
+ head: res.head,
3013
+ created: res.created,
3014
+ affected: res.affected,
3015
+ ...kernelVerdict ? { kernelVerdict } : {}
3016
+ });
1773
3017
  admittedTotal += 1;
1774
3018
  if (Array.isArray(res.born) && res.born.length) born.push(...res.born);
1775
3019
  if (Array.isArray(res.birthOutcomes) && res.birthOutcomes.length) birthOutcomes.push(...res.birthOutcomes);
@@ -1787,7 +3031,7 @@ async function admitIntentOffers(eng, ws, ledger, offers, { receiptFence = null,
1787
3031
  });
1788
3032
  }
1789
3033
  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`;
1790
- rec.rejected.push({ oid, error, deadLettered: true });
3034
+ rec.rejected.push({ oid, error, deadLettered: true, ...kernelVerdict ? { kernelVerdict } : {} });
1791
3035
  deadLetters.push({
1792
3036
  intentId,
1793
3037
  oid,
@@ -2031,6 +3275,26 @@ async function mountWorkspace(eng, ws, ledger) {
2031
3275
  eng.mounted.set(ws, m);
2032
3276
  return m;
2033
3277
  }
3278
+ async function reconcileRequiredCustodyHead(eng, ws, ledger, requiredCustodyHead) {
3279
+ if (!/^[0-9a-f]{40}$/.test(requiredCustodyHead)) {
3280
+ throw new Error("required custody head must be a lowercase 40-hex git object id");
3281
+ }
3282
+ const current = eng.mounted.has(ws) ? kgit.resolveRef(eng, gitdirOf(ws), BRANCH) : "";
3283
+ if (current === requiredCustodyHead) return eng.mounted.get(ws);
3284
+ if (current && isDirty(eng, ws)) {
3285
+ throw new Error(
3286
+ `workspace '${ws}' has verified but unsealed resident work; refusing to discard it while reconciling custody`
3287
+ );
3288
+ }
3289
+ if (eng.mounted.has(ws)) unmount(eng, ws);
3290
+ const mounted = await mountWorkspace(eng, ws, ledger);
3291
+ if (!mounted.restored || mounted.restoreError) {
3292
+ throw new Error(
3293
+ `workspace '${ws}' could not reconcile required custody ${requiredCustodyHead}: ${mounted.restoreError || "custody has no verified main"}`
3294
+ );
3295
+ }
3296
+ return mounted;
3297
+ }
2034
3298
  function assertAuthored(res, what) {
2035
3299
  if (!res || res.ok === false) throw new Error(`${what}: ${String(res && res.error || "law refused the intent").slice(0, 500)}`);
2036
3300
  return res;
@@ -2044,13 +3308,19 @@ async function mountEphemeralWorkspace(eng, ws, { domainHash = "", lawUsdz } = {
2044
3308
  }
2045
3309
  if (!nomosActive(eng, ws)) {
2046
3310
  assertAuthored(
2047
- author(eng, ws, "bootstrap", "installDomain", closureInstallPayload(eng.hashes.nomos, eng.installedBy), "", { lawUsdz: eng.nomosLawUsdz, deferProjection: false, rngDraws: 8 }),
3311
+ initializeWorkspace(eng, ws, eng.installedBy),
2048
3312
  `ephemeral workspace '${ws}' bootstrap`
2049
3313
  );
2050
3314
  }
2051
3315
  if (domainHash && lawUsdz && qById(eng, ws, `domain-installation:${domainHash}`).length === 0) {
2052
3316
  assertAuthored(
2053
- author(eng, ws, "nomos", "installDomain", closureInstallPayload(domainHash, eng.installedBy), eng.hashes.nomos, { lawUsdz, deferProjection: false, rngDraws: 8 }),
3317
+ authorOperatorCall(
3318
+ eng,
3319
+ ws,
3320
+ installDomainCall(ws, closureInstallPayload(domainHash, eng.installedBy)),
3321
+ requireCurrentControllerLawHash(eng, ws),
3322
+ { lawUsdz, deferProjection: false, rngDraws: 8 }
3323
+ ),
2054
3324
  `ephemeral workspace '${ws}' installDomain(${domainHash.slice(0, 12)})`
2055
3325
  );
2056
3326
  }
@@ -2085,6 +3355,15 @@ function currentLaw(eng, ws) {
2085
3355
  const out2 = namedQueryProto(eng, ws, QueryOperation.CURRENT_LAW);
2086
3356
  return out2.keyMap || {};
2087
3357
  }
3358
+ function currentControllerLawHash(eng, ws) {
3359
+ const hash = currentLaw(eng, ws).nomos;
3360
+ return typeof hash === "string" && /^[0-9a-f]{64}$/i.test(hash) ? hash : null;
3361
+ }
3362
+ function requireCurrentControllerLawHash(eng, ws) {
3363
+ const hash = currentControllerLawHash(eng, ws);
3364
+ if (hash) return hash;
3365
+ throw new Error(`workspace '${ws}' has no kernel-folded current Nomos controller law`);
3366
+ }
2088
3367
  function installedLaw(eng, ws) {
2089
3368
  return namedQueryProto(eng, ws, QueryOperation.INSTALLED_LAW);
2090
3369
  }
@@ -2132,21 +3411,49 @@ function outboundOffers(eng, ws, nowMillis = Date.now()) {
2132
3411
  }
2133
3412
  return response.outcome.value;
2134
3413
  }
3414
+ async function applyWorkspaceEffect(eng, ws, ledger, requestBytes, admissionCheckpointSecret) {
3415
+ const request = fromBinary(ApplyWorkspaceEffectRequestSchema, requestBytes);
3416
+ if (request.target?.workspace !== ws || request.target.repo !== repoArgOf(ws)) {
3417
+ throw new Error("workspace-effect protobuf target does not match the mounted target custody");
3418
+ }
3419
+ if (admissionCheckpointSecret.byteLength !== 32) {
3420
+ throw new Error("target runtime admission checkpoint credential is missing or malformed");
3421
+ }
3422
+ request.admissionCheckpointSecret = admissionCheckpointSecret;
3423
+ const response = callProto(eng.ex, {
3424
+ case: "applyWorkspaceEffect",
3425
+ value: request
3426
+ }, eng.STDERR);
3427
+ if (response.outcome.case !== "applyWorkspaceEffect") {
3428
+ throw new Error(`kernel returned ${response.outcome.case || "empty"} for workspace effect`);
3429
+ }
3430
+ const result = response.outcome.value.result;
3431
+ if (!result || result.outcome.case !== "admitted") {
3432
+ const outcome = result?.outcome.case || "empty";
3433
+ throw new Error(`target kernel ${outcome} the workspace effect`);
3434
+ }
3435
+ await custodyPush(eng, ws, ledger, { remoteRef: "refs/heads/main", ffOnly: true });
3436
+ return toBinary(ApplyWorkspaceEffectResponseSchema, response.outcome.value);
3437
+ }
2135
3438
  function evolveDryRun(eng, ws, lawUsdz, domainHash, dispositions = null) {
2136
3439
  const before = currentLaw(eng, ws);
3440
+ const controllerHash = requireCurrentControllerLawHash(eng, ws);
2137
3441
  const tenantHashes = [...new Set(Object.values(before).filter(
2138
- (hash) => typeof hash === "string" && hash !== eng.hashes.bootstrap && hash !== eng.hashes.nomos
3442
+ (hash) => typeof hash === "string" && hash !== eng.hashes.bootstrap && hash !== controllerHash
2139
3443
  ))];
2140
3444
  const upgrade = tenantHashes.length > 0;
2141
3445
  const supersedes = upgrade && tenantHashes.length === 1 ? tenantHashes[0] : void 0;
2142
3446
  if (upgrade && supersedes === void 0) {
2143
3447
  return { admits: false, detail: `deploy-predecessor-ambiguous: workspace serves ${tenantHashes.length} business models` };
2144
3448
  }
3449
+ if (!upgrade && dispositions !== null) {
3450
+ return { admits: false, detail: "an initial installation cannot carry replacement dispositions" };
3451
+ }
2145
3452
  const payload = closureInstallPayload(domainHash, eng.installedBy, {
2146
- ...supersedes ? { supersedes } : {},
2147
- ...!upgrade && dispositions ? { dispositions } : {}
3453
+ ...supersedes ? { supersedes } : {}
2148
3454
  });
2149
- const r = author(eng, ws, "nomos", upgrade ? "stageDomain" : "installDomain", payload, eng.hashes.nomos, {
3455
+ const call = upgrade ? stageDomainCall(ws, payload) : installDomainCall(ws, payload);
3456
+ const r = authorOperatorCall(eng, ws, call, controllerHash, {
2150
3457
  lawUsdz,
2151
3458
  dryRun: true,
2152
3459
  deferProjection: false
@@ -2161,8 +3468,8 @@ function author(eng, ws, domain, directiveId, payload, controllerHash, opts = {}
2161
3468
  const seq = eng.seq++;
2162
3469
  const capPorts = { clock: { physical: Date.now(), logical: 0, replica: eng.replica }, rng: osEntropyBuffer(opts.rngDraws ?? 64) };
2163
3470
  const genesis = !controllerHash;
2164
- if (payload === null || typeof payload !== "object" || Array.isArray(payload)) {
2165
- throw new Error(`directive ${domain}/${directiveId} payload must be an object`);
3471
+ if (!(payload instanceof Uint8Array)) {
3472
+ throw new TypeError(`directive ${domain}/${directiveId} requires compiler-generated USDA bytes`);
2166
3473
  }
2167
3474
  const defer = opts.deferProjection !== false;
2168
3475
  const offerOnce = () => {
@@ -2175,7 +3482,7 @@ function author(eng, ws, domain, directiveId, payload, controllerHash, opts = {}
2175
3482
  value: create(DirectiveCallSchema, {
2176
3483
  domain,
2177
3484
  directive: directiveId,
2178
- payload: protoStruct(payload)
3485
+ body: { case: "callUsda", value: payload }
2179
3486
  })
2180
3487
  },
2181
3488
  authoring: create(AuthoringOptionsSchema, {
@@ -2818,11 +4125,14 @@ async function ingestPackAsCustody(eng, ws, packBytes, head, options = {}) {
2818
4125
  };
2819
4126
  }
2820
4127
  function offerRequest(eng, request) {
4128
+ return offerResult(offerRequestResponse(eng, request));
4129
+ }
4130
+ function offerRequestResponse(eng, request) {
2821
4131
  const response = callProto(eng.ex, { case: "offer", value: request }, eng.STDERR);
2822
4132
  if (response.outcome.case !== "offer") {
2823
4133
  throw new Error(`kernel returned ${response.outcome.case || "empty"} for sealed offer request`);
2824
4134
  }
2825
- return offerResult(response.outcome.value);
4135
+ return response.outcome.value;
2826
4136
  }
2827
4137
  function offerIntent(eng, ws, bytes, opts = {}) {
2828
4138
  const seq = eng.seq++;
@@ -3380,10 +4690,16 @@ function promotePreflighted(eng, ws, domain, candidateHash, opts = {}) {
3380
4690
  acceptanceReason: _acceptance,
3381
4691
  ...authorOpts
3382
4692
  } = opts;
3383
- const result = author(eng, ws, "nomos", "promoteDomain", prepared.payload, eng.hashes.nomos, {
3384
- ...authorOpts,
3385
- ...actingPrincipal ? { actor: actingPrincipal } : {}
3386
- });
4693
+ const result = authorOperatorCall(
4694
+ eng,
4695
+ ws,
4696
+ promoteDomainCall(ws, prepared.payload),
4697
+ requireCurrentControllerLawHash(eng, ws),
4698
+ {
4699
+ ...authorOpts,
4700
+ ...actingPrincipal ? { actor: actingPrincipal } : {}
4701
+ }
4702
+ );
3387
4703
  return result.ok ? { ...result, stage: "promoted", report, receiptId: prepared.receiptId } : { ...result, stage: "admission", report, receiptId: prepared.receiptId };
3388
4704
  }
3389
4705
  function restorePreviousPreflighted(eng, ws, domain, currentHash, opts = {}) {
@@ -3431,10 +4747,16 @@ function restorePreviousPreflighted(eng, ws, domain, currentHash, opts = {}) {
3431
4747
  const prepared = prepareManagedRestoration(report, currentHash, priorHash, domain, opts);
3432
4748
  if (!prepared.ok) return prepared;
3433
4749
  const { acceptanceReason: _acceptance, ...authorOpts } = opts;
3434
- const result = author(eng, ws, "nomos", "rollbackDomain", prepared.payload, eng.hashes.nomos, {
3435
- ...authorOpts,
3436
- ...actingPrincipal ? { actor: actingPrincipal } : {}
3437
- });
4750
+ const result = authorOperatorCall(
4751
+ eng,
4752
+ ws,
4753
+ rollbackDomainCall(ws, prepared.payload),
4754
+ requireCurrentControllerLawHash(eng, ws),
4755
+ {
4756
+ ...authorOpts,
4757
+ ...actingPrincipal ? { actor: actingPrincipal } : {}
4758
+ }
4759
+ );
3438
4760
  return result.ok ? { ...result, stage: "restored", report, receiptId: prepared.receiptId } : { ...result, stage: "admission", report, receiptId: prepared.receiptId };
3439
4761
  }
3440
4762
  async function rebirthCompact(eng, ws, ledger, { reason = "", supersededAt = 0, parent = "" } = {}) {
@@ -3488,13 +4810,14 @@ async function rebirthCompact(eng, ws, ledger, { reason = "", supersededAt = 0,
3488
4810
  }
3489
4811
  let foundation;
3490
4812
  try {
3491
- foundation = author(
4813
+ foundation = authorOperatorCall(
3492
4814
  eng,
3493
4815
  incWs,
3494
- "nomos",
3495
- "installDomain",
3496
- closureInstallPayload(lifecycle.targetClosureIdentity, lifecycle.installedBy),
3497
- eng.hashes.nomos,
4816
+ installDomainCall(
4817
+ incWs,
4818
+ closureInstallPayload(lifecycle.targetClosureIdentity, lifecycle.installedBy)
4819
+ ),
4820
+ requireCurrentControllerLawHash(eng, incWs),
3498
4821
  {
3499
4822
  candidateCommit: c.oid,
3500
4823
  deferProjection: false,
@@ -3787,7 +5110,7 @@ async function deleteRefusedRef(eng, ws, ledger, offerId) {
3787
5110
  }
3788
5111
  return ref;
3789
5112
  }
3790
- async function emitOutbox(eng, ws, ledger) {
5113
+ async function emitOutbox(eng, ws, ledger, workspaceEffectBase = "", admissionCheckpointSecret) {
3791
5114
  const outbox = outboundOffers(eng, ws);
3792
5115
  const nextDueAtMillis = outbox.nextDueAtMillis === void 0 ? void 0 : Number(outbox.nextDueAtMillis);
3793
5116
  if (outbox.offers.length === 0) {
@@ -3798,24 +5121,90 @@ async function emitOutbox(eng, ws, ledger) {
3798
5121
  let errors = 0;
3799
5122
  for (const offer of outbox.offers) {
3800
5123
  try {
3801
- const res = await fetch(offer.destination, {
3802
- method: "POST",
3803
- headers: {
3804
- "content-type": offer.contentType,
3805
- "x-nomos-offer-id": offer.id,
3806
- "x-nomos-obligation-id": offer.obligationId,
3807
- "x-nomos-source-workspace": offer.sourceWorkspace,
3808
- "x-nomos-custody-head": offer.custodyHead
3809
- },
3810
- // Fetch's DOM typing requires an ArrayBuffer-backed body; this copies opaque bytes without
3811
- // decoding or re-authoring them. The receiving kernel sees the exact sealed USDA payload.
3812
- body: Uint8Array.from(offer.sealedOffer).buffer,
3813
- signal: AbortSignal.timeout(3e4)
3814
- });
3815
- if (!res.ok) {
3816
- errors++;
3817
- log("outbox-deliver-non2xx", { ws, offerId: offer.id, destination: offer.destination, status: res.status });
3818
- continue;
5124
+ switch (offer.route.case) {
5125
+ case "httpsRoute": {
5126
+ const destination = offer.route.value.url;
5127
+ const res = await fetch(destination, {
5128
+ method: "POST",
5129
+ headers: {
5130
+ "content-type": offer.contentType,
5131
+ "x-nomos-offer-id": offer.id,
5132
+ "x-nomos-obligation-id": offer.obligationId,
5133
+ "x-nomos-source-workspace": offer.sourceWorkspace,
5134
+ "x-nomos-custody-head": offer.custodyHead
5135
+ },
5136
+ // Fetch's DOM typing requires an ArrayBuffer-backed body; this copies opaque bytes without
5137
+ // decoding or re-authoring them. The receiving kernel sees the exact sealed USDA payload.
5138
+ body: Uint8Array.from(offer.sealedOffer).buffer,
5139
+ signal: AbortSignal.timeout(3e4)
5140
+ });
5141
+ if (!res.ok) {
5142
+ throw new Error(`HTTPS capability returned ${res.status}`);
5143
+ }
5144
+ break;
5145
+ }
5146
+ case "workspaceRoute": {
5147
+ const targetWorkspace = offer.route.value.workspace;
5148
+ const request = create(ApplyWorkspaceEffectRequestSchema, {
5149
+ source: protoTarget(ws),
5150
+ sourceCommit: offer.sourceCommit,
5151
+ sourceOfferPath: offer.sourceOfferPath,
5152
+ target: protoTarget(targetWorkspace),
5153
+ sourceEvidencePack: offer.sourceEvidencePack
5154
+ });
5155
+ const response = workspaceEffectBase ? fromBinary(
5156
+ ApplyWorkspaceEffectResponseSchema,
5157
+ new Uint8Array(await (async () => {
5158
+ const remote = await fetch(
5159
+ `${workspaceEffectBase.replace(/\/+$/, "")}/v2/workspaces/${encodeURIComponent(targetWorkspace)}/workspace-effect`,
5160
+ {
5161
+ method: "POST",
5162
+ headers: { "content-type": "application/vnd.nomos.workspace-effect+protobuf" },
5163
+ body: toBinary(ApplyWorkspaceEffectRequestSchema, request),
5164
+ signal: AbortSignal.timeout(3e4)
5165
+ }
5166
+ );
5167
+ if (!remote.ok) throw new Error(`workspace-effect receiver returned ${remote.status}: ${(await remote.text()).slice(0, 200)}`);
5168
+ return remote.arrayBuffer();
5169
+ })())
5170
+ ) : (() => {
5171
+ if (admissionCheckpointSecret?.byteLength !== 32) {
5172
+ throw new Error("local target admission checkpoint credential is missing or malformed");
5173
+ }
5174
+ request.admissionCheckpointSecret = admissionCheckpointSecret;
5175
+ const local = callProto(eng.ex, {
5176
+ case: "applyWorkspaceEffect",
5177
+ value: request
5178
+ }, eng.STDERR);
5179
+ if (local.outcome.case !== "applyWorkspaceEffect") {
5180
+ throw new Error(`kernel returned ${local.outcome.case || "empty"} for workspace effect`);
5181
+ }
5182
+ return local.outcome.value;
5183
+ })();
5184
+ const targetResult = response.result;
5185
+ if (!targetResult || targetResult.outcome.case !== "admitted") {
5186
+ const outcome = targetResult?.outcome.case || "empty";
5187
+ throw new Error(`target kernel ${outcome} the workspace effect`);
5188
+ }
5189
+ break;
5190
+ }
5191
+ case void 0: {
5192
+ if (!offer.destination) throw new Error("legacy outbound offer has no HTTPS destination");
5193
+ const res = await fetch(offer.destination, {
5194
+ method: "POST",
5195
+ headers: {
5196
+ "content-type": offer.contentType,
5197
+ "x-nomos-offer-id": offer.id,
5198
+ "x-nomos-obligation-id": offer.obligationId,
5199
+ "x-nomos-source-workspace": offer.sourceWorkspace,
5200
+ "x-nomos-custody-head": offer.custodyHead
5201
+ },
5202
+ body: Uint8Array.from(offer.sealedOffer).buffer,
5203
+ signal: AbortSignal.timeout(3e4)
5204
+ });
5205
+ if (!res.ok) throw new Error(`legacy HTTPS capability returned ${res.status}`);
5206
+ break;
5207
+ }
3819
5208
  }
3820
5209
  kgit.writeRef(eng, gitdir, offer.deliveryRef, offer.custodyOid);
3821
5210
  try {
@@ -3826,7 +5215,8 @@ async function emitOutbox(eng, ws, ledger) {
3826
5215
  delivered.push(offer.id);
3827
5216
  } catch (e) {
3828
5217
  errors++;
3829
- log("outbox-deliver-failed", { ws, offerId: offer.id, destination: offer.destination, error: String(e).slice(0, 200) });
5218
+ const destination = offer.route.case === "httpsRoute" ? offer.route.value.url : offer.route.case === "workspaceRoute" ? offer.route.value.workspace : offer.destination;
5219
+ log("outbox-deliver-failed", { ws, offerId: offer.id, destination, error: String(e).slice(0, 200) });
3830
5220
  }
3831
5221
  }
3832
5222
  if (delivered.length || errors) log("outbox", { ws, delivered: delivered.length, errors });
@@ -3840,7 +5230,14 @@ async function boot(eng, ws, ledger) {
3840
5230
  `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).`
3841
5231
  );
3842
5232
  }
3843
- return { status: "already-initialized", head: m.remoteMain ?? void 0, controllerHash: eng.hashes.nomos, rows: qById(eng, ws, `domain-installation:${eng.hashes.nomos}`), mount: m };
5233
+ const controllerHash = requireCurrentControllerLawHash(eng, ws);
5234
+ return {
5235
+ status: "already-initialized",
5236
+ head: m.remoteMain ?? void 0,
5237
+ controllerHash,
5238
+ rows: qById(eng, ws, `domain-installation:${controllerHash}`),
5239
+ mount: m
5240
+ };
3844
5241
  }
3845
5242
  throw new Error(
3846
5243
  `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.)`
@@ -3915,7 +5312,7 @@ function warmKernelCaches(eng, opts = {}) {
3915
5312
  ...opts.interactiveOnly ? { interactiveOnly: true } : {}
3916
5313
  });
3917
5314
  }
3918
- var enc3, dec3, BRANCH, PROTO_ABI_VERSION, protoRequestSequence, certificateBytes, protoBirthCertificate, RESULT_PACK_INLINE_MAX, dirOf, repoArgOf, gitdirOf, headOf, unpack, unsignedWasiPointers, log, protoTarget, protoAuthority, repoArgOfGitdir, bytesFromB64, kgit, closureInstallPayload, routeTagHexOfHomeKey, SUMMARY_SEP, summaryKey, splitSummaryKey, NOMOS_SHARD_ROWS_READ, groupOf, tallyOf, isExtremumRead, extremumMonotone, MAX_INLINE_INTENT_OFFER_BYTES, MAX_STAGED_INTENT_OFFER_BYTES, CKPT_REF, pushVia, fullRef, applyPackInto, importCustodyObjects, syncCandidate, custodyLsRefs, capturedReadUnix, queryArguments, queryAuthorityOptions, qById, query, queryStructured, queryPage, queryProfile, authorizationAddress, authorizationSubject, currentAuthorizationFrontier, check, expand, cryptoSealField, cryptoOwnedScopeKey, cryptoOwnedDeviceRequest, cryptoOwnedPrepareApproval, cryptoOwnedPrepareRecovery, cryptoKeygen, authorKeygen, eraCertSign, delegationCertSign, attestationSign, certSign, cryptoWrapKey, cryptoUnwrapKey, readPosture, count, sum, pendingConflicts, pendingConflictSummary, spatialBboxParams, spatialWithin, extremum, nomosActive, refusedRefName, GENESIS_WARRANT_ID, isWarranted, projectionStats, memoryDropProbe, readiness;
5315
+ var enc3, dec3, BRANCH, PROTO_ABI_VERSION, protoRequestSequence, protoBirthCertificate, RESULT_PACK_INLINE_MAX, dirOf, repoArgOf, gitdirOf, headOf, birthCertificateLawPayload, unpack, unsignedWasiPointers, log, protoTarget, protoAuthority, repoArgOfGitdir, bytesFromB64, kgit, closureInstallPayload, routeTagHexOfHomeKey, SUMMARY_SEP, summaryKey, splitSummaryKey, NOMOS_SHARD_ROWS_READ, groupOf, tallyOf, isExtremumRead, extremumMonotone, MAX_INLINE_INTENT_OFFER_BYTES, MAX_STAGED_INTENT_OFFER_BYTES, CKPT_REF, pushVia, fullRef, applyPackInto, importCustodyObjects, syncCandidate, custodyLsRefs, capturedReadUnix, queryArguments, queryAuthorityOptions, qById, query, queryStructured, queryGeneratedUsda, queryByIdUsda, queryByTypeUsda, pendingConflictsUsda, pendingConflictSummaryUsda, queryPage, queryProfile, authorizationAddress, authorizationSubject, currentAuthorizationFrontier, check, expand, cryptoSealField, cryptoOwnedScopeKey, cryptoOwnedDeviceRequest, cryptoOwnedPrepareApproval, cryptoOwnedPrepareRecovery, cryptoKeygen, authorKeygen, eraCertSign, delegationCertSign, attestationSign, certSign, cryptoWrapKey, cryptoUnwrapKey, readPosture, count, sum, spatialBboxParams, spatialWithin, extremum, nomosActive, refusedRefName, GENESIS_WARRANT_ID, isWarranted, projectionStats, memoryDropProbe, readiness;
3919
5316
  var init_engine = __esm({
3920
5317
  "vendor/engine/engine.ts"() {
3921
5318
  "use strict";
@@ -3923,33 +5320,35 @@ var init_engine = __esm({
3923
5320
  init_tree();
3924
5321
  init_custody_transport();
3925
5322
  init_managed_promotion();
5323
+ init_lifecycle_calls();
5324
+ init_offer_result();
3926
5325
  init_kernel_pb();
3927
5326
  enc3 = new TextEncoder();
3928
5327
  dec3 = new TextDecoder();
3929
5328
  BRANCH = "main";
3930
5329
  PROTO_ABI_VERSION = 1;
3931
5330
  protoRequestSequence = 0;
3932
- certificateBytes = (value) => value instanceof Uint8Array ? value : Uint8Array.from(value ?? []);
3933
- protoBirthCertificate = (certificate) => create(BirthCertificateSchema, {
3934
- child: certificate.child,
3935
- founder: certificate.founder,
3936
- verified: certificate.verified,
3937
- parentKey: certificateBytes(certificate.parentKey ?? certificate.parent_key),
3938
- parentId: certificate.parentId ?? certificate.parent_id ?? "",
3939
- epoch: BigInt(certificate.epoch),
3940
- signature: certificateBytes(certificate.signature),
3941
- verifiedVia: certificate.verifiedVia ?? certificate.verified_via,
3942
- idpToken: certificate.idpToken ?? certificate.idp_token,
3943
- capturedClock: certificate.capturedClock === void 0 && certificate.captured_clock === void 0 ? void 0 : BigInt(certificate.capturedClock ?? certificate.captured_clock),
3944
- authProviderIssuer: certificate.authProviderIssuer ?? certificate.auth_provider_issuer,
3945
- authProviderJwks: certificate.authProviderJwks ?? certificate.auth_provider_jwks,
3946
- authProviderAudience: certificate.authProviderAudience ?? certificate.auth_provider_audience
3947
- });
5331
+ protoBirthCertificate = (certificate) => create(BirthCertificateSchema, certificate);
3948
5332
  RESULT_PACK_INLINE_MAX = 256 * 1024;
3949
5333
  dirOf = (n) => n;
3950
5334
  repoArgOf = (ws) => `/work/ws/${ws}`;
3951
5335
  gitdirOf = (ws) => `/work/ws/${ws}/nomos.git`;
3952
5336
  headOf = (eng, ws) => kgit.resolveRef(eng, gitdirOf(ws), BRANCH) ?? "";
5337
+ birthCertificateLawPayload = (certificate) => ({
5338
+ child: certificate.child,
5339
+ founder: certificate.founder,
5340
+ verified: certificate.verified,
5341
+ parentKey: b64Bytes(certificate.parentKey),
5342
+ parentId: certificate.parentId,
5343
+ epoch: Number(certificate.epoch),
5344
+ signature: b64Bytes(certificate.signature),
5345
+ ...certificate.verifiedVia === void 0 ? {} : { verifiedVia: certificate.verifiedVia },
5346
+ ...certificate.idpToken === void 0 ? {} : { idpToken: certificate.idpToken },
5347
+ ...certificate.capturedClock === void 0 ? {} : { capturedClock: Number(certificate.capturedClock) },
5348
+ ...certificate.authProviderIssuer === void 0 ? {} : { authProviderIssuer: certificate.authProviderIssuer },
5349
+ ...certificate.authProviderJwks === void 0 ? {} : { authProviderJwks: certificate.authProviderJwks },
5350
+ ...certificate.authProviderAudience === void 0 ? {} : { authProviderAudience: certificate.authProviderAudience }
5351
+ });
3953
5352
  unpack = (p) => {
3954
5353
  const v = BigInt.asUintN(64, typeof p === "bigint" ? p : BigInt(p));
3955
5354
  return { ptr: Number(v >> 32n & 0xffffffffn), len: Number(v & 0xffffffffn) };
@@ -4165,9 +5564,9 @@ var init_engine = __esm({
4165
5564
  closureInstallPayload = (hash, installedBy, options = {}) => ({
4166
5565
  domainHash: hash,
4167
5566
  installedBy,
5567
+ lawClosureIdentity: hash,
4168
5568
  dependencies: [],
4169
5569
  ...options.supersedes ? { supersedes: options.supersedes } : {},
4170
- ...options.dispositions ? { dispositions: options.dispositions } : {},
4171
5570
  finalizers: []
4172
5571
  });
4173
5572
  routeTagHexOfHomeKey = async (homeKey) => (await sha256hex(`nomos-route:${homeKey}`)).slice(0, 12);
@@ -4235,6 +5634,33 @@ var init_engine = __esm({
4235
5634
  case: "rows",
4236
5635
  value: create(RowsQuerySchema, { id: queryId, arguments: protoStruct(arguments_), principal })
4237
5636
  }, queryAuthorityOptions(principal, keys, authToken, nowUnix, authorSecret));
5637
+ queryGeneratedUsda = (eng, ws, generated, principal = "") => applicationQueryUsda(eng, ws, {
5638
+ case: "rows",
5639
+ value: create(RowsQuerySchema, {
5640
+ id: generated.query,
5641
+ argumentsUsda: generated.canonicalArgumentsUsda,
5642
+ principal
5643
+ })
5644
+ }, { principal });
5645
+ queryByIdUsda = (eng, ws, aggregateType, aggregateId, principal = "") => applicationQueryUsda(eng, ws, {
5646
+ case: "byId",
5647
+ value: create(ByIdQuerySchema, { aggregateType, aggregateId, principal })
5648
+ }, { principal });
5649
+ queryByTypeUsda = (eng, ws, aggregateType, principal = "") => applicationQueryUsda(eng, ws, {
5650
+ case: "byType",
5651
+ value: create(ByTypeQuerySchema, { aggregateType, principal })
5652
+ }, { principal });
5653
+ pendingConflictsUsda = (eng, ws, aggregateType = "", principal = "") => applicationQueryUsda(eng, ws, {
5654
+ case: "pendingConflicts",
5655
+ value: create(PendingConflictsQuerySchema, {
5656
+ aggregateType: aggregateType || void 0,
5657
+ principal
5658
+ })
5659
+ }, { principal });
5660
+ pendingConflictSummaryUsda = (eng, ws, principal = "") => applicationQueryUsda(eng, ws, {
5661
+ case: "pendingConflictSummary",
5662
+ value: create(PendingConflictSummaryQuerySchema, { principal })
5663
+ }, { principal });
4238
5664
  queryPage = (eng, ws, queryId, paramsJson, page = {}, principal = "", keys = [], authToken = "", nowUnix = 0, authorSecret = "") => applicationQueryProto(eng, ws, {
4239
5665
  case: "page",
4240
5666
  value: create(PageQuerySchema, {
@@ -4430,22 +5856,36 @@ var init_engine = __esm({
4430
5856
  authProviderIssuer,
4431
5857
  authProviderJwks,
4432
5858
  authProviderAudience
4433
- }) => namedQueryProto(eng, "root", QueryOperation.CERT_SIGN, {
4434
- child,
4435
- founder,
4436
- verified,
4437
- parentKey,
4438
- parentId,
4439
- epoch,
4440
- secret,
4441
- // forwarded only when present (the op reads them optionally; absent ⇒ classic cert bytes).
4442
- ...verifiedVia !== void 0 ? { verifiedVia } : {},
4443
- ...idpToken !== void 0 ? { idpToken } : {},
4444
- ...capturedClock !== void 0 ? { capturedClock } : {},
4445
- ...authProviderIssuer !== void 0 ? { authProviderIssuer } : {},
4446
- ...authProviderJwks !== void 0 ? { authProviderJwks } : {},
4447
- ...authProviderAudience !== void 0 ? { authProviderAudience } : {}
4448
- }).cert;
5859
+ }) => {
5860
+ const response = callProto(eng.ex, {
5861
+ case: "signBirthCertificate",
5862
+ value: create(SignBirthCertificateRequestSchema, {
5863
+ certificate: create(BirthCertificateSchema, {
5864
+ child,
5865
+ founder,
5866
+ verified,
5867
+ parentKey: parentKey ? bytesFromB64(parentKey) : new Uint8Array(),
5868
+ parentId,
5869
+ epoch: BigInt(epoch),
5870
+ signature: new Uint8Array(),
5871
+ verifiedVia,
5872
+ idpToken,
5873
+ capturedClock: capturedClock === void 0 ? void 0 : BigInt(capturedClock),
5874
+ authProviderIssuer,
5875
+ authProviderJwks,
5876
+ authProviderAudience
5877
+ }),
5878
+ signerSecret: bytesFromB64(secret)
5879
+ })
5880
+ }, eng.STDERR);
5881
+ if (response.outcome.case === "failure") {
5882
+ throw new Error(`${response.outcome.value.code}: ${response.outcome.value.message}`);
5883
+ }
5884
+ if (response.outcome.case !== "signBirthCertificate" || !response.outcome.value.certificate) {
5885
+ throw new Error(`kernel returned '${response.outcome.case || "empty"}' while signing a birth certificate`);
5886
+ }
5887
+ return response.outcome.value.certificate;
5888
+ };
4449
5889
  cryptoWrapKey = (eng, { recipientPub, scopeKey }) => {
4450
5890
  const result = namedQueryProto(eng, "root", QueryOperation.CRYPTO_WRAP_KEY, { recipientPub, scopeKey });
4451
5891
  return { hpkeEpk: String(result.hpkeEpk ?? ""), ct: String(result.ct ?? "") };
@@ -4460,33 +5900,26 @@ var init_engine = __esm({
4460
5900
  );
4461
5901
  count = (eng, ws, countId, groupKey, principal = "", authToken = "", nowUnix = 0, authorSecret = "") => applicationQueryProto(eng, ws, {
4462
5902
  case: "count",
4463
- value: create(TallyQuerySchema, { id: countId, arguments: protoStruct({ groupKey: groupKey ?? null }), principal })
5903
+ value: create(TallyQuerySchema, { id: countId, groupKey, principal })
4464
5904
  }, queryAuthorityOptions(principal, [], authToken, nowUnix, authorSecret));
4465
5905
  sum = (eng, ws, sumId, groupKey, principal = "", authToken = "", nowUnix = 0, authorSecret = "") => applicationQueryProto(eng, ws, {
4466
5906
  case: "sum",
4467
- value: create(TallyQuerySchema, { id: sumId, arguments: protoStruct({ groupKey: groupKey ?? null }), principal })
5907
+ value: create(TallyQuerySchema, { id: sumId, groupKey, principal })
4468
5908
  }, queryAuthorityOptions(principal, [], authToken, nowUnix, authorSecret));
4469
- pendingConflicts = (eng, ws, principal = "", aggregateType = "", authToken = "", nowUnix = 0, authorSecret = "") => namedQueryProto(
4470
- eng,
4471
- ws,
4472
- QueryOperation.PENDING_CONFLICTS,
4473
- { aggregateType },
4474
- queryAuthorityOptions(principal, [], authToken, nowUnix, authorSecret)
4475
- );
4476
- pendingConflictSummary = (eng, ws, principal = "", authToken = "", nowUnix = 0, authorSecret = "") => namedQueryProto(
4477
- eng,
4478
- ws,
4479
- QueryOperation.PENDING_CONFLICT_SUMMARY,
4480
- {},
4481
- queryAuthorityOptions(principal, [], authToken, nowUnix, authorSecret)
4482
- );
4483
5909
  spatialBboxParams = (bbox) => {
4484
5910
  const minX = bbox.minX ?? bbox.minLng, minY = bbox.minY ?? bbox.minLat, maxX = bbox.maxX ?? bbox.maxLng, maxY = bbox.maxY ?? bbox.maxLat;
4485
5911
  return { minX, minY, maxX, maxY, minLng: minX, minLat: minY, maxLng: maxX, maxLat: maxY };
4486
5912
  };
4487
5913
  spatialWithin = (eng, ws, spatialId, bbox, principal = "", authToken = "", nowUnix = 0, authorSecret = "") => applicationQueryProto(eng, ws, {
4488
5914
  case: "spatial",
4489
- value: create(SpatialQuerySchema, { id: spatialId, arguments: protoStruct(spatialBboxParams(bbox)), principal })
5915
+ value: create(SpatialQuerySchema, {
5916
+ id: spatialId,
5917
+ minX: bbox.minX ?? bbox.minLng,
5918
+ minY: bbox.minY ?? bbox.minLat,
5919
+ maxX: bbox.maxX ?? bbox.maxLng,
5920
+ maxY: bbox.maxY ?? bbox.maxLat,
5921
+ principal
5922
+ })
4490
5923
  }, queryAuthorityOptions(principal, [], authToken, nowUnix, authorSecret));
4491
5924
  extremum = (eng, ws, extremumId, kind, groupKey, principal = "", authToken = "", nowUnix = 0, authorSecret = "") => namedQueryProto(
4492
5925
  eng,
@@ -4495,7 +5928,7 @@ var init_engine = __esm({
4495
5928
  { extremumId, kind, groupKey: groupKey ?? "" },
4496
5929
  queryAuthorityOptions(principal, [], authToken, nowUnix, authorSecret)
4497
5930
  );
4498
- nomosActive = (eng, ws) => qById(eng, ws, `domain-installation:${eng.hashes.nomos}`).length > 0;
5931
+ nomosActive = (eng, ws) => currentControllerLawHash(eng, ws) !== null;
4499
5932
  refusedRefName = (offerId) => `refs/heads/refused/${String(offerId || "unknown").replace(/[^A-Za-z0-9._-]/g, "_")}`;
4500
5933
  GENESIS_WARRANT_ID = "genesis-warrant:self";
4501
5934
  isWarranted = (eng, ws) => qById(eng, ws, GENESIS_WARRANT_ID).length > 0;
@@ -4745,14 +6178,17 @@ async function assertCompiledMountable(cwd, cloud) {
4745
6178
  if (laws.length === 0) return { ok: true, checked: [] };
4746
6179
  let mount;
4747
6180
  let engine;
6181
+ let lifecycle;
4748
6182
  try {
4749
6183
  mount = await Promise.resolve().then(() => (init_local_holon(), local_holon_exports));
4750
6184
  engine = await Promise.resolve().then(() => (init_engine(), engine_exports));
6185
+ lifecycle = await Promise.resolve().then(() => (init_lifecycle_calls(), lifecycle_calls_exports));
4751
6186
  } catch {
4752
6187
  return { ok: true, checked: [], skipped: "the vendored kernel engine is not present \u2014 mountability gate skipped (compile still emitted the package)" };
4753
6188
  }
4754
6189
  const { fetchRuntime: fetchRuntime2, holonEngine: holonEngine2, inspectLawArchive: inspectLawArchive2, mountFresh: mountFresh2 } = mount;
4755
- const { author: author2, closureInstallPayload: closureInstallPayload2 } = engine;
6190
+ const { authorOperatorCall: authorOperatorCall2, closureInstallPayload: closureInstallPayload2, initializeWorkspace: initializeWorkspace2 } = engine;
6191
+ const { installDomainCall: installDomainCall2 } = lifecycle;
4756
6192
  const candidates = [];
4757
6193
  for (const f of laws) {
4758
6194
  const lawUsdzFile = join3(buildDir, f);
@@ -4784,33 +6220,11 @@ async function assertCompiledMountable(cwd, cloud) {
4784
6220
  const { eng } = await holonEngine2(cloud, `${ws}-eng`, "production", runtime);
4785
6221
  const { identity, lawUsdz } = inspectLawArchive2(eng, lawUsdzFile);
4786
6222
  await mountFresh2(eng, ws);
4787
- const framework = author2(
6223
+ initializeWorkspace2(eng, ws, `${ws}-eng`);
6224
+ const r = authorOperatorCall2(
4788
6225
  eng,
4789
6226
  ws,
4790
- "bootstrap",
4791
- "installDomain",
4792
- closureInstallPayload2(eng.hashes.nomos, `${ws}-eng`),
4793
- "",
4794
- { lawUsdz: eng.nomosLawUsdz }
4795
- );
4796
- if (framework && framework.ok === false) {
4797
- return {
4798
- ok: false,
4799
- checked,
4800
- error: `${name}: incoherent runtime bundle \u2014 the selected kernel refused its bundled Nomos framework law before tenant law was mounted: ${framework.error ?? "framework install refused"}`
4801
- };
4802
- }
4803
- const r = author2(
4804
- eng,
4805
- ws,
4806
- "nomos",
4807
- "installDomain",
4808
- {
4809
- domainHash: identity,
4810
- installedBy: `${ws}-eng`,
4811
- dependencies: [],
4812
- finalizers: []
4813
- },
6227
+ installDomainCall2(ws, closureInstallPayload2(identity, `${ws}-eng`)),
4814
6228
  eng.hashes.nomos,
4815
6229
  { lawUsdz }
4816
6230
  );