@reallyme/codec 0.2.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +0 -2
- package/README.md +16 -8
- package/dist/baseEncoding.js +5 -8
- package/dist/boundary.js +1 -1
- package/dist/cbor.d.ts +5 -1
- package/dist/cbor.js +52 -19
- package/dist/deterministicCborBoundary.d.ts +1 -1
- package/dist/deterministicCborBoundary.js +4 -4
- package/dist/errors.d.ts +1 -1
- package/dist/errors.js +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.js +6 -4
- package/dist/jcs.js +1 -1
- package/dist/multiformat.js +16 -16
- package/dist/operationContract.d.ts +2 -3
- package/dist/operationContract.js +57 -19
- package/dist/pem.js +4 -1
- package/dist/proto/generated/reallyme/codec/v1/codec_pb.d.ts +48 -3
- package/dist/proto/generated/reallyme/codec/v1/codec_pb.js +46 -2
- package/dist/proto.js +1 -1
- package/dist/readOutput.d.ts +4 -0
- package/dist/readOutput.js +20 -1
- package/dist/wasm/reallyme_codec_wasm.d.ts +12 -12
- package/dist/wasm/reallyme_codec_wasm.js +85 -151
- package/dist/wasm/reallyme_codec_wasm_bg.wasm +0 -0
- package/dist/wasmProvider.js +53 -4
- package/package.json +3 -3
|
@@ -1,16 +1,30 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText:
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 ReallyMe LLC
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
4
|
-
import { fromBinary, toBinary } from "@bufbuild/protobuf";
|
|
4
|
+
import { create, fromBinary, toBinary } from "@bufbuild/protobuf";
|
|
5
5
|
import { MAX_CODEC_FFI_INPUT_BYTES, MAX_CODEC_PROTO_JSON_BYTES, MAX_CODEC_PROTO_MESSAGE_BYTES, requireBoundaryAggregate, strictUtf8ByteLength, utf8ByteLength, } from "./boundary.js";
|
|
6
6
|
import { DETERMINISTIC_CBOR_I64_MIN, DETERMINISTIC_CBOR_U64_MAX, MAX_DETERMINISTIC_CBOR_AGGREGATE_BYTE_STRING_BYTES, MAX_DETERMINISTIC_CBOR_AGGREGATE_TEXT_BYTES, MAX_DETERMINISTIC_CBOR_CONTAINER_ENTRIES, MAX_DETERMINISTIC_CBOR_INPUT_LEN, MAX_DETERMINISTIC_CBOR_NESTING_DEPTH, MAX_DETERMINISTIC_CBOR_NODES, MAX_DETERMINISTIC_CBOR_PROTO_RECURSION_DEPTH, } from "./deterministicCborBoundary.js";
|
|
7
7
|
import { ReallyMeCodecError } from "./errors.js";
|
|
8
|
-
import { CodecErrorOrigin, CodecErrorReason, CodecOperationResponseSchema, CodecOperationRequestSchema, } from "./proto/generated/reallyme/codec/v1/codec_pb.js";
|
|
9
|
-
import { readIndependentBoundedBytesOutput, snapshotBoundedBytesInput, } from "./readOutput.js";
|
|
8
|
+
import { CodecErrorOrigin, CodecErrorReason, CodecErrorSchema, CodecBoundaryErrorSchema, CodecOperationResponseSchema, CodecOperationRequestSchema, } from "./proto/generated/reallyme/codec/v1/codec_pb.js";
|
|
9
|
+
import { ensureBytesInput, readIndependentBoundedBytesOutput, snapshotBoundedBytesInput, snapshotProviderBytes, } from "./readOutput.js";
|
|
10
10
|
import { requireReallyMeCodecWasmProvider } from "./wasmProvider.js";
|
|
11
11
|
const PROTO_REQUEST_OVERHEAD_BUDGET = 64;
|
|
12
12
|
const DETERMINISTIC_CBOR_PROTO_NODE_OVERHEAD_BUDGET = 16;
|
|
13
13
|
const DAG_CBOR_I64_MAX = (1n << 63n) - 1n;
|
|
14
|
+
const resourceLimitOperationResponse = () => toBinary(CodecOperationResponseSchema, create(CodecOperationResponseSchema, {
|
|
15
|
+
outcome: {
|
|
16
|
+
case: "error",
|
|
17
|
+
value: create(CodecErrorSchema, {
|
|
18
|
+
error: {
|
|
19
|
+
case: "boundary",
|
|
20
|
+
value: create(CodecBoundaryErrorSchema, {
|
|
21
|
+
reason: CodecErrorReason.BOUNDARY_RESOURCE_LIMIT_EXCEEDED,
|
|
22
|
+
}),
|
|
23
|
+
},
|
|
24
|
+
origin: CodecErrorOrigin.CALLER,
|
|
25
|
+
}),
|
|
26
|
+
},
|
|
27
|
+
}));
|
|
14
28
|
const requireNoGeneratedUnknownFields = (message) => {
|
|
15
29
|
if (message.$unknown !== undefined && message.$unknown.length !== 0) {
|
|
16
30
|
throw new ReallyMeCodecError("invalid-input");
|
|
@@ -441,11 +455,14 @@ const validateGeneratedOperationRequest = (request) => {
|
|
|
441
455
|
* Execute one binary generated-protobuf request and return the fully
|
|
442
456
|
* discriminated binary `CodecOperationResponse`.
|
|
443
457
|
*
|
|
444
|
-
* Oversized requests are
|
|
445
|
-
*
|
|
446
|
-
* rather than a boundary-local exception.
|
|
458
|
+
* Oversized and malformed requests are represented by the response error
|
|
459
|
+
* oneof. Caller-owned oversized bytes are not copied into WASM.
|
|
447
460
|
*/
|
|
448
461
|
export const processOperation = (requestBytes) => {
|
|
462
|
+
ensureBytesInput(requestBytes);
|
|
463
|
+
if (requestBytes.length > MAX_CODEC_PROTO_MESSAGE_BYTES) {
|
|
464
|
+
return resourceLimitOperationResponse();
|
|
465
|
+
}
|
|
449
466
|
const requestSnapshot = snapshotBoundedBytesInput(requestBytes, MAX_CODEC_PROTO_MESSAGE_BYTES);
|
|
450
467
|
try {
|
|
451
468
|
return readIndependentBoundedBytesOutput(requireReallyMeCodecWasmProvider().processOperation(requestSnapshot), requestSnapshot, MAX_CODEC_PROTO_MESSAGE_BYTES);
|
|
@@ -459,6 +476,10 @@ export const processOperation = (requestBytes) => {
|
|
|
459
476
|
* binary response used by `processOperation`.
|
|
460
477
|
*/
|
|
461
478
|
export const processOperationJson = (requestJson) => {
|
|
479
|
+
ensureBytesInput(requestJson);
|
|
480
|
+
if (requestJson.length > MAX_CODEC_PROTO_JSON_BYTES) {
|
|
481
|
+
return resourceLimitOperationResponse();
|
|
482
|
+
}
|
|
462
483
|
const requestSnapshot = snapshotBoundedBytesInput(requestJson, MAX_CODEC_PROTO_JSON_BYTES);
|
|
463
484
|
try {
|
|
464
485
|
return readIndependentBoundedBytesOutput(requireReallyMeCodecWasmProvider().processOperationJson(requestSnapshot), requestSnapshot, MAX_CODEC_PROTO_MESSAGE_BYTES);
|
|
@@ -551,38 +572,38 @@ export const processGeneratedOperationRequest = (request) => {
|
|
|
551
572
|
const detachGeneratedOperationResultBytes = (result) => {
|
|
552
573
|
switch (result.result.case) {
|
|
553
574
|
case "multicodecPrefixForName":
|
|
554
|
-
result.result.value.prefix = result.result.value.prefix
|
|
575
|
+
result.result.value.prefix = snapshotProviderBytes(result.result.value.prefix);
|
|
555
576
|
break;
|
|
556
577
|
case "multicodecLookupPrefix":
|
|
557
578
|
if (result.result.value.metadata !== undefined) {
|
|
558
579
|
result.result.value.metadata.prefix =
|
|
559
|
-
result.result.value.metadata.prefix
|
|
580
|
+
snapshotProviderBytes(result.result.value.metadata.prefix);
|
|
560
581
|
}
|
|
561
582
|
break;
|
|
562
583
|
case "multicodecTable":
|
|
563
584
|
for (const entry of result.result.value.entries) {
|
|
564
|
-
entry.prefix = entry.prefix
|
|
585
|
+
entry.prefix = snapshotProviderBytes(entry.prefix);
|
|
565
586
|
}
|
|
566
587
|
break;
|
|
567
588
|
case "multikeyParse":
|
|
568
|
-
result.result.value.publicKey = result.result.value.publicKey
|
|
589
|
+
result.result.value.publicKey = snapshotProviderBytes(result.result.value.publicKey);
|
|
569
590
|
break;
|
|
570
591
|
case "dagCborVerifyCid":
|
|
571
592
|
break;
|
|
572
593
|
case "dagCborEncode":
|
|
573
|
-
result.result.value.encoded = result.result.value.encoded
|
|
594
|
+
result.result.value.encoded = snapshotProviderBytes(result.result.value.encoded);
|
|
574
595
|
break;
|
|
575
596
|
case "dagCborDecode":
|
|
576
597
|
detachGeneratedCborValueBytes(result.result.value.value);
|
|
577
598
|
break;
|
|
578
599
|
case "pemDecode":
|
|
579
|
-
result.result.value.der = result.result.value.der
|
|
600
|
+
result.result.value.der = snapshotProviderBytes(result.result.value.der);
|
|
580
601
|
break;
|
|
581
602
|
case "pemEncode":
|
|
582
|
-
result.result.value.pem = result.result.value.pem
|
|
603
|
+
result.result.value.pem = snapshotProviderBytes(result.result.value.pem);
|
|
583
604
|
break;
|
|
584
605
|
case "deterministicCborEncode":
|
|
585
|
-
result.result.value.encoded = result.result.value.encoded
|
|
606
|
+
result.result.value.encoded = snapshotProviderBytes(result.result.value.encoded);
|
|
586
607
|
break;
|
|
587
608
|
case "deterministicCborDecode":
|
|
588
609
|
detachGeneratedCborValueBytes(result.result.value.value);
|
|
@@ -597,7 +618,7 @@ const detachGeneratedCborValueBytes = (value) => {
|
|
|
597
618
|
}
|
|
598
619
|
switch (value.value.case) {
|
|
599
620
|
case "bytesValue":
|
|
600
|
-
value.value.value.value = value.value.value.value
|
|
621
|
+
value.value.value.value = snapshotProviderBytes(value.value.value.value);
|
|
601
622
|
break;
|
|
602
623
|
case "arrayValue":
|
|
603
624
|
for (const child of value.value.value.values) {
|
|
@@ -748,7 +769,24 @@ const errorCodeForCodecErrorMessage = (error) => {
|
|
|
748
769
|
if (error.origin !== expectedOrigin) {
|
|
749
770
|
return "provider-failure";
|
|
750
771
|
}
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
772
|
+
if (error.origin !== CodecErrorOrigin.CALLER) {
|
|
773
|
+
return "provider-failure";
|
|
774
|
+
}
|
|
775
|
+
switch (reason) {
|
|
776
|
+
case CodecErrorReason.MULTIFORMAT_UNKNOWN_MULTICODEC:
|
|
777
|
+
case CodecErrorReason.MULTIFORMAT_INVALID_MULTICODEC_PREFIX:
|
|
778
|
+
return "unsupported-codec";
|
|
779
|
+
case CodecErrorReason.CANONICAL_UNSUPPORTED_IPLD_VALUE:
|
|
780
|
+
return "unsupported-ipld-value";
|
|
781
|
+
case CodecErrorReason.BASE_NON_CANONICAL_HEX:
|
|
782
|
+
case CodecErrorReason.CANONICAL_NON_CANONICAL_CBOR:
|
|
783
|
+
case CodecErrorReason.CANONICAL_NON_CANONICAL_JSON:
|
|
784
|
+
case CodecErrorReason.CANONICAL_NON_MINIMAL_CBOR_INTEGER:
|
|
785
|
+
case CodecErrorReason.CANONICAL_DUPLICATE_CBOR_MAP_KEY:
|
|
786
|
+
case CodecErrorReason.CANONICAL_CBOR_MAP_KEYS_OUT_OF_ORDER:
|
|
787
|
+
case CodecErrorReason.CANONICAL_CBOR_TRAILING_BYTES:
|
|
788
|
+
return "non-canonical";
|
|
789
|
+
default:
|
|
790
|
+
return "invalid-input";
|
|
791
|
+
}
|
|
754
792
|
};
|
package/dist/pem.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText:
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 ReallyMe LLC
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
4
4
|
import { create } from "@bufbuild/protobuf";
|
|
@@ -146,6 +146,9 @@ const snapshotEncodeOptions = (options) => {
|
|
|
146
146
|
const snapshot = snapshotOptionsRecord(options, pemEncodeOptionFields);
|
|
147
147
|
const maxDerLen = readPositiveIntegerOption(snapshot, "maxDerLen");
|
|
148
148
|
const lineWidth = readPositiveIntegerOption(snapshot, "lineWidth");
|
|
149
|
+
if (lineWidth !== undefined && (lineWidth < 1 || lineWidth > 76)) {
|
|
150
|
+
throw new ReallyMeCodecError("invalid-input");
|
|
151
|
+
}
|
|
149
152
|
const lineEndingValue = readSnapshotProperty(snapshot, "lineEnding");
|
|
150
153
|
let lineEnding;
|
|
151
154
|
if (lineEndingValue !== undefined) {
|
|
@@ -201,7 +201,7 @@ export type CodecDagCborDecodeResult = Message<"reallyme.codec.v1.CodecDagCborDe
|
|
|
201
201
|
export declare const CodecDagCborDecodeResultSchema: GenMessage<CodecDagCborDecodeResult>;
|
|
202
202
|
/**
|
|
203
203
|
* Zero limits select the documented codec defaults. An empty allowed-label list
|
|
204
|
-
* selects
|
|
204
|
+
* selects PUBLIC KEY only; private-key labels require an explicit allowlist.
|
|
205
205
|
*
|
|
206
206
|
* @generated from message reallyme.codec.v1.CodecPemDecodeOptions
|
|
207
207
|
*/
|
|
@@ -278,8 +278,9 @@ export type CodecPemEncodeRequest = Message<"reallyme.codec.v1.CodecPemEncodeReq
|
|
|
278
278
|
*/
|
|
279
279
|
label: CodecPemLabel;
|
|
280
280
|
/**
|
|
281
|
-
* DER may contain private-key material. Generated
|
|
282
|
-
*
|
|
281
|
+
* DER may contain private-key material. Generated owned-message drop wipes
|
|
282
|
+
* the retained field; transport decoders may create temporary copies that
|
|
283
|
+
* cannot be reliably wiped. Use binary requests for secret-bearing DER.
|
|
283
284
|
*
|
|
284
285
|
* @generated from field: bytes der = 2;
|
|
285
286
|
*/
|
|
@@ -1358,6 +1359,30 @@ export declare enum CodecErrorReason {
|
|
|
1358
1359
|
* @generated from enum value: CODEC_ERROR_REASON_PEM_DER_TOO_LARGE = 204;
|
|
1359
1360
|
*/
|
|
1360
1361
|
PEM_DER_TOO_LARGE = 204,
|
|
1362
|
+
/**
|
|
1363
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_EMPTY_INPUT = 205;
|
|
1364
|
+
*/
|
|
1365
|
+
PEM_EMPTY_INPUT = 205,
|
|
1366
|
+
/**
|
|
1367
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_EMPTY_DER = 206;
|
|
1368
|
+
*/
|
|
1369
|
+
PEM_EMPTY_DER = 206,
|
|
1370
|
+
/**
|
|
1371
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_INVALID_OPTIONS = 207;
|
|
1372
|
+
*/
|
|
1373
|
+
PEM_INVALID_OPTIONS = 207,
|
|
1374
|
+
/**
|
|
1375
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_MISSING_BEGIN = 208;
|
|
1376
|
+
*/
|
|
1377
|
+
PEM_MISSING_BEGIN = 208,
|
|
1378
|
+
/**
|
|
1379
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_MISSING_END = 209;
|
|
1380
|
+
*/
|
|
1381
|
+
PEM_MISSING_END = 209,
|
|
1382
|
+
/**
|
|
1383
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_INVALID_BASE64 = 210;
|
|
1384
|
+
*/
|
|
1385
|
+
PEM_INVALID_BASE64 = 210,
|
|
1361
1386
|
/**
|
|
1362
1387
|
* Multiformats and key envelopes.
|
|
1363
1388
|
*
|
|
@@ -1398,6 +1423,26 @@ export declare enum CodecErrorReason {
|
|
|
1398
1423
|
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_INTERNAL = 404;
|
|
1399
1424
|
*/
|
|
1400
1425
|
CANONICAL_INTERNAL = 404,
|
|
1426
|
+
/**
|
|
1427
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_NON_MINIMAL_CBOR_INTEGER = 405;
|
|
1428
|
+
*/
|
|
1429
|
+
CANONICAL_NON_MINIMAL_CBOR_INTEGER = 405,
|
|
1430
|
+
/**
|
|
1431
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_DUPLICATE_CBOR_MAP_KEY = 406;
|
|
1432
|
+
*/
|
|
1433
|
+
CANONICAL_DUPLICATE_CBOR_MAP_KEY = 406,
|
|
1434
|
+
/**
|
|
1435
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_CBOR_MAP_KEYS_OUT_OF_ORDER = 407;
|
|
1436
|
+
*/
|
|
1437
|
+
CANONICAL_CBOR_MAP_KEYS_OUT_OF_ORDER = 407,
|
|
1438
|
+
/**
|
|
1439
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_CBOR_TRAILING_BYTES = 408;
|
|
1440
|
+
*/
|
|
1441
|
+
CANONICAL_CBOR_TRAILING_BYTES = 408,
|
|
1442
|
+
/**
|
|
1443
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_UNSUPPORTED_IPLD_VALUE = 409;
|
|
1444
|
+
*/
|
|
1445
|
+
CANONICAL_UNSUPPORTED_IPLD_VALUE = 409,
|
|
1401
1446
|
/**
|
|
1402
1447
|
* Backend failures.
|
|
1403
1448
|
*
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText:
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 ReallyMe LLC
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
4
4
|
import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
|
|
5
5
|
/**
|
|
6
6
|
* Describes the file reallyme/codec/v1/codec.proto.
|
|
7
7
|
*/
|
|
8
|
-
export const file_reallyme_codec_v1_codec = /*@__PURE__*/ fileDesc("Ch1yZWFsbHltZS9jb2RlYy92MS9jb2RlYy5wcm90bxIRcmVhbGx5bWUuY29kZWMudjEivwMKCkNvZGVjRXJyb3ISQgoNYmFzZV9lbmNvZGluZxgBIAEoCzIpLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjQmFzZUVuY29kaW5nRXJyb3JIABIvCgNwZW0YAiABKAsyIC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUVycm9ySAASPwoLbXVsdGlmb3JtYXQYAyABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpZm9ybWF0RXJyb3JIABJJChBjYW5vbmljYWxpemF0aW9uGAQgASgLMi0ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNDYW5vbmljYWxpemF0aW9uRXJyb3JIABI3CgdiYWNrZW5kGAUgASgLMiQucmVhbGx5bWUuY29kZWMudjEuQ29kZWNCYWNrZW5kRXJyb3JIABI5Cghib3VuZGFyeRgGIAEoCzIlLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjQm91bmRhcnlFcnJvckgAEjMKBm9yaWdpbhhkIAEoDjIjLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRXJyb3JPcmlnaW5CBwoFZXJyb3IiMwojQ29kZWNNdWx0aWNvZGVjUHJlZml4Rm9yTmFtZVJlcXVlc3QSDAoEbmFtZRgBIAEoCSIzCiJDb2RlY011bHRpY29kZWNMb29rdXBQcmVmaXhSZXF1ZXN0Eg0KBXZhbHVlGAEgASgMIh0KG0NvZGVjTXVsdGljb2RlY1RhYmxlUmVxdWVzdCItChlDb2RlY011bHRpa2V5UGFyc2VSZXF1ZXN0EhAKCG11bHRpa2V5GAEgASgJIjwKHENvZGVjRGFnQ2JvclZlcmlmeUNpZFJlcXVlc3QSCwoDY2lkGAEgASgJEg8KB3BheWxvYWQYAiABKAwiWgoZQ29kZWNEYWdDYm9yRW5jb2RlUmVxdWVzdBI9CgV2YWx1ZRgBIAEoCzIuLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JWYWx1ZSIrChhDb2RlY0RhZ0Nib3JFbmNvZGVSZXN1bHQSDwoHZW5jb2RlZBgBIAEoDCIsChlDb2RlY0RhZ0Nib3JEZWNvZGVSZXF1ZXN0Eg8KB2VuY29kZWQYASABKAwiWQoYQ29kZWNEYWdDYm9yRGVjb2RlUmVzdWx0Ej0KBXZhbHVlGAEgASgLMi4ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvclZhbHVlIn0KFUNvZGVjUGVtRGVjb2RlT3B0aW9ucxI4Cg5hbGxvd2VkX2xhYmVscxgBIAMoDjIgLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjUGVtTGFiZWwSFQoNbWF4X2lucHV0X2xlbhgCIAEoDRITCgttYXhfZGVyX2xlbhgDIAEoDSJfChVDb2RlY1BlbURlY29kZVJlcXVlc3QSCwoDcGVtGAEgASgMEjkKB29wdGlvbnMYAiABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbURlY29kZU9wdGlvbnMifAoVQ29kZWNQZW1FbmNvZGVPcHRpb25zEhMKC21heF9kZXJfbGVuGAEgASgNEhIKCmxpbmVfd2lkdGgYAiABKA0SOgoLbGluZV9lbmRpbmcYAyABKA4yJS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUxpbmVFbmRpbmcikAEKFUNvZGVjUGVtRW5jb2RlUmVxdWVzdBIvCgVsYWJlbBgBIAEoDjIgLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjUGVtTGFiZWwSCwoDZGVyGAIgASgMEjkKB29wdGlvbnMYAyABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUVuY29kZU9wdGlvbnMiIwoUQ29kZWNQZW1FbmNvZGVSZXN1bHQSCwoDcGVtGAEgASgMIhwKGkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JOdWxsIisKGkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JCb29sEg0KBXZhbHVlGAEgASgIIjYKJUNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JVbnNpZ25lZEludGVnZXISDQoFdmFsdWUYASABKAQiNgolQ29kZWNEZXRlcm1pbmlzdGljQ2Jvck5lZ2F0aXZlSW50ZWdlchINCgV2YWx1ZRgBIAEoEiLQAQodQ29kZWNEZXRlcm1pbmlzdGljQ2JvckludGVnZXISUgoOdW5zaWduZWRfdmFsdWUYASABKAsyOC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yVW5zaWduZWRJbnRlZ2VySAASUgoObmVnYXRpdmVfdmFsdWUYAiABKAsyOC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yTmVnYXRpdmVJbnRlZ2VySABCBwoFdmFsdWUiKwoaQ29kZWNEZXRlcm1pbmlzdGljQ2JvclRleHQSDQoFdmFsdWUYASABKAkiLAobQ29kZWNEZXRlcm1pbmlzdGljQ2JvckJ5dGVzEg0KBXZhbHVlGAEgASgMIrEBChxDb2RlY0RldGVybWluaXN0aWNDYm9yTWFwS2V5EkcKC2ludGVnZXJfa2V5GAEgASgLMjAucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvckludGVnZXJIABJBCgh0ZXh0X2tleRgCIAEoCzItLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JUZXh0SABCBQoDa2V5Ip0BCh5Db2RlY0RldGVybWluaXN0aWNDYm9yTWFwRW50cnkSPAoDa2V5GAEgASgLMi8ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2Jvck1hcEtleRI9CgV2YWx1ZRgCIAEoCzIuLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JWYWx1ZSJdChtDb2RlY0RldGVybWluaXN0aWNDYm9yQXJyYXkSPgoGdmFsdWVzGAEgAygLMi4ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvclZhbHVlIl8KGUNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JNYXASQgoHZW50cmllcxgBIAMoCzIxLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JNYXBFbnRyeSKRBAobQ29kZWNEZXRlcm1pbmlzdGljQ2JvclZhbHVlEkMKCm51bGxfdmFsdWUYASABKAsyLS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yTnVsbEgAEkMKCmJvb2xfdmFsdWUYAiABKAsyLS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yQm9vbEgAEkkKDWludGVnZXJfdmFsdWUYAyABKAsyMC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9ySW50ZWdlckgAEkMKCnRleHRfdmFsdWUYBCABKAsyLS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yVGV4dEgAEkUKC2J5dGVzX3ZhbHVlGAUgASgLMi4ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvckJ5dGVzSAASRQoLYXJyYXlfdmFsdWUYBiABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yQXJyYXlIABJBCgltYXBfdmFsdWUYByABKAsyLC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yTWFwSABCBwoFdmFsdWUiZAojQ29kZWNEZXRlcm1pbmlzdGljQ2JvckVuY29kZVJlcXVlc3QSPQoFdmFsdWUYASABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yVmFsdWUiNQoiQ29kZWNEZXRlcm1pbmlzdGljQ2JvckVuY29kZVJlc3VsdBIPCgdlbmNvZGVkGAEgASgMIjYKI0NvZGVjRGV0ZXJtaW5pc3RpY0Nib3JEZWNvZGVSZXF1ZXN0Eg8KB2VuY29kZWQYASABKAwiYwoiQ29kZWNEZXRlcm1pbmlzdGljQ2JvckRlY29kZVJlc3VsdBI9CgV2YWx1ZRgBIAEoCzIuLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JWYWx1ZSL7BgoUQ29kZWNPcGVyYXRpb25SZXN1bHQSTQoabXVsdGljb2RlY19wcmVmaXhfZm9yX25hbWUY6AcgASgLMiYucmVhbGx5bWUuY29kZWMudjEuQ29kZWNNdWx0aWNvZGVjU3BlY0gAElMKGG11bHRpY29kZWNfbG9va3VwX3ByZWZpeBjpByABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNMb29rdXBSZXN1bHRIABJKChBtdWx0aWNvZGVjX3RhYmxlGOoHIAEoCzItLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjTXVsdGljb2RlY1RhYmxlUmVzdWx0SAASRgoObXVsdGlrZXlfcGFyc2UY0A8gASgLMisucmVhbGx5bWUuY29kZWMudjEuQ29kZWNNdWx0aWtleVBhcnNlUmVzdWx0SAASTgoTZGFnX2Nib3JfdmVyaWZ5X2NpZBi4FyABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RhZ0Nib3JWZXJpZnlDaWRSZXN1bHRIABJHCg9kYWdfY2Jvcl9lbmNvZGUYuRcgASgLMisucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEYWdDYm9yRW5jb2RlUmVzdWx0SAASRwoPZGFnX2Nib3JfZGVjb2RlGLoXIAEoCzIrLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGFnQ2JvckRlY29kZVJlc3VsdEgAEj4KCnBlbV9kZWNvZGUYoB8gASgLMicucmVhbGx5bWUuY29kZWMudjEuQ29kZWNQZW1EZWNvZGVSZXN1bHRIABI+CgpwZW1fZW5jb2RlGKEfIAEoCzInLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjUGVtRW5jb2RlUmVzdWx0SAASWwoZZGV0ZXJtaW5pc3RpY19jYm9yX2VuY29kZRiIJyABKAsyNS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yRW5jb2RlUmVzdWx0SAASWwoZZGV0ZXJtaW5pc3RpY19jYm9yX2RlY29kZRiJJyABKAsyNS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yRGVjb2RlUmVzdWx0SABCCAoGcmVzdWx0SgUIARDoByKOAQoWQ29kZWNPcGVyYXRpb25SZXNwb25zZRI5CgZyZXN1bHQYASABKAsyJy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY09wZXJhdGlvblJlc3VsdEgAEi4KBWVycm9yGAIgASgLMh0ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNFcnJvckgAQgkKB291dGNvbWUinwcKFUNvZGVjT3BlcmF0aW9uUmVxdWVzdBJdChptdWx0aWNvZGVjX3ByZWZpeF9mb3JfbmFtZRjoByABKAsyNi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNQcmVmaXhGb3JOYW1lUmVxdWVzdEgAEloKGG11bHRpY29kZWNfbG9va3VwX3ByZWZpeBjpByABKAsyNS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNMb29rdXBQcmVmaXhSZXF1ZXN0SAASSwoQbXVsdGljb2RlY190YWJsZRjqByABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNUYWJsZVJlcXVlc3RIABJHCg5tdWx0aWtleV9wYXJzZRjQDyABKAsyLC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpa2V5UGFyc2VSZXF1ZXN0SAASTwoTZGFnX2Nib3JfdmVyaWZ5X2NpZBi4FyABKAsyLy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RhZ0Nib3JWZXJpZnlDaWRSZXF1ZXN0SAASSAoPZGFnX2Nib3JfZW5jb2RlGLkXIAEoCzIsLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGFnQ2JvckVuY29kZVJlcXVlc3RIABJICg9kYWdfY2Jvcl9kZWNvZGUYuhcgASgLMiwucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEYWdDYm9yRGVjb2RlUmVxdWVzdEgAEj8KCnBlbV9kZWNvZGUYoB8gASgLMigucmVhbGx5bWUuY29kZWMudjEuQ29kZWNQZW1EZWNvZGVSZXF1ZXN0SAASPwoKcGVtX2VuY29kZRihHyABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUVuY29kZVJlcXVlc3RIABJcChlkZXRlcm1pbmlzdGljX2Nib3JfZW5jb2RlGIgnIAEoCzI2LnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JFbmNvZGVSZXF1ZXN0SAASXAoZZGV0ZXJtaW5pc3RpY19jYm9yX2RlY29kZRiJJyABKAsyNi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yRGVjb2RlUmVxdWVzdEgAQgsKCW9wZXJhdGlvbkoFCAEQ6Aci9gEKE0NvZGVjTXVsdGljb2RlY1NwZWMSDAoEbmFtZRgBIAEoCRIMCgRjb2RlGAIgASgMEg4KBnByZWZpeBgDIAEoDBIoCgN0YWcYBCABKA4yGy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1RhZxJCChFrZXlfbWF0ZXJpYWxfa2luZBgFIAEoDjInLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjS2V5TWF0ZXJpYWxLaW5kEhQKDGZpeGVkX2xlbmd0aBgGIAEoDRIXCg92YXJpYWJsZV9sZW5ndGgYByABKAgSFgoOYWxnb3JpdGhtX25hbWUYCCABKAkifAobQ29kZWNNdWx0aWNvZGVjTG9va3VwUmVzdWx0EgwKBG5hbWUYASABKAkSFQoNcHJlZml4X2xlbmd0aBgCIAEoDRI4CghtZXRhZGF0YRgDIAEoCzImLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjTXVsdGljb2RlY1NwZWMiVQoaQ29kZWNNdWx0aWNvZGVjVGFibGVSZXN1bHQSNwoHZW50cmllcxgBIAMoCzImLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjTXVsdGljb2RlY1NwZWMiogEKGENvZGVjTXVsdGlrZXlQYXJzZVJlc3VsdBISCgpjb2RlY19uYW1lGAEgASgJEhYKDmFsZ29yaXRobV9uYW1lGAIgASgJEhIKCnB1YmxpY19rZXkYAyABKAwSIgoaZXhwZWN0ZWRfcHVibGljX2tleV9sZW5ndGgYBCABKA0SIgoadmFyaWFibGVfcHVibGljX2tleV9sZW5ndGgYBSABKAgiVgobQ29kZWNEYWdDYm9yVmVyaWZ5Q2lkUmVzdWx0Eg0KBXZhbGlkGAEgASgIEhQKDGV4cGVjdGVkX2NpZBgCIAEoCRISCgphY3R1YWxfY2lkGAMgASgJIjIKFENvZGVjUGVtRGVjb2RlUmVzdWx0Eg0KBWxhYmVsGAEgASgJEgsKA2RlchgCIAEoDCJNChZDb2RlY0Jhc2VFbmNvZGluZ0Vycm9yEjMKBnJlYXNvbhgBIAEoDjIjLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRXJyb3JSZWFzb24iRAoNQ29kZWNQZW1FcnJvchIzCgZyZWFzb24YASABKA4yIy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0Vycm9yUmVhc29uIkwKFUNvZGVjTXVsdGlmb3JtYXRFcnJvchIzCgZyZWFzb24YASABKA4yIy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0Vycm9yUmVhc29uIlEKGkNvZGVjQ2Fub25pY2FsaXphdGlvbkVycm9yEjMKBnJlYXNvbhgBIAEoDjIjLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRXJyb3JSZWFzb24iSAoRQ29kZWNCYWNrZW5kRXJyb3ISMwoGcmVhc29uGAEgASgOMiMucmVhbGx5bWUuY29kZWMudjEuQ29kZWNFcnJvclJlYXNvbiJJChJDb2RlY0JvdW5kYXJ5RXJyb3ISMwoGcmVhc29uGAEgASgOMiMucmVhbGx5bWUuY29kZWMudjEuQ29kZWNFcnJvclJlYXNvbip2ChBDb2RlY0Vycm9yT3JpZ2luEiIKHkNPREVDX0VSUk9SX09SSUdJTl9VTlNQRUNJRklFRBAAEh0KGUNPREVDX0VSUk9SX09SSUdJTl9DQUxMRVIQARIfChtDT0RFQ19FUlJPUl9PUklHSU5fUFJPVklERVIQAiqVAQoNQ29kZWNQZW1MYWJlbBIfChtDT0RFQ19QRU1fTEFCRUxfVU5TUEVDSUZJRUQQABIfChtDT0RFQ19QRU1fTEFCRUxfUFJJVkFURV9LRVkQZBIiCh5DT0RFQ19QRU1fTEFCRUxfRUNfUFJJVkFURV9LRVkQbhIeChpDT0RFQ19QRU1fTEFCRUxfUFVCTElDX0tFWRB4KnkKEkNvZGVjUGVtTGluZUVuZGluZxIlCiFDT0RFQ19QRU1fTElORV9FTkRJTkdfVU5TUEVDSUZJRUQQABIcChhDT0RFQ19QRU1fTElORV9FTkRJTkdfTEYQZBIeChpDT0RFQ19QRU1fTElORV9FTkRJTkdfQ1JMRhBuKuABChRDb2RlY0tleU1hdGVyaWFsS2luZBInCiNDT0RFQ19LRVlfTUFURVJJQUxfS0lORF9VTlNQRUNJRklFRBAAEiYKIkNPREVDX0tFWV9NQVRFUklBTF9LSU5EX1BVQkxJQ19LRVkQARInCiNDT0RFQ19LRVlfTUFURVJJQUxfS0lORF9QUklWQVRFX0tFWRACEikKJUNPREVDX0tFWV9NQVRFUklBTF9LSU5EX1NZTU1FVFJJQ19LRVkQAxIjCh9DT0RFQ19LRVlfTUFURVJJQUxfS0lORF9OT1RfS0VZEAQqlwEKCENvZGVjVGFnEhkKFUNPREVDX1RBR19VTlNQRUNJRklFRBAAEhgKFENPREVDX1RBR19FTkNSWVBUSU9OEAESEQoNQ09ERUNfVEFHX0tFWRACEhIKDkNPREVDX1RBR19IQVNIEAMSFwoTQ09ERUNfVEFHX01VTFRJSEFTSBAEEhYKEkNPREVDX1RBR19NVUxUSUtFWRAFKpILChBDb2RlY0Vycm9yUmVhc29uEiIKHkNPREVDX0VSUk9SX1JFQVNPTl9VTlNQRUNJRklFRBAAEi0KKUNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX1VOU1VQUE9SVEVEX0NPREVDEGQSLAooQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfSU5WQUxJRF9FTkNPRElORxBlEioKJkNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX0lOVkFMSURfTEVOR1RIEGYSKwonQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfSU5QVVRfVE9PX0xBUkdFEGcSLAooQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfT1VUUFVUX1RPT19MQVJHRRBoEioKJkNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX0lOVkFMSURfQkFTRTY0EG4SLQopQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfSU5WQUxJRF9CQVNFNjRVUkwQbxInCiNDT0RFQ19FUlJPUl9SRUFTT05fQkFTRV9JTlZBTElEX0hFWBB4Ei0KKUNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX05PTl9DQU5PTklDQUxfSEVYEHkSLAonQ09ERUNfRVJST1JfUkVBU09OX1BFTV9JTlZBTElEX0JPVU5EQVJZEMgBEioKJUNPREVDX0VSUk9SX1JFQVNPTl9QRU1fTEFCRUxfTUlTTUFUQ0gQyQESLQooQ09ERUNfRVJST1JfUkVBU09OX1BFTV9VTlNVUFBPUlRFRF9MQUJFTBDKARIoCiNDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0lOVkFMSURfQk9EWRDLARIpCiRDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0RFUl9UT09fTEFSR0UQzAESPAo3Q09ERUNfRVJST1JfUkVBU09OX01VTFRJRk9STUFUX0lOVkFMSURfTVVMVElCQVNFX1BSRUZJWBCsAhI9CjhDT0RFQ19FUlJPUl9SRUFTT05fTVVMVElGT1JNQVRfSU5WQUxJRF9NVUxUSUNPREVDX1BSRUZJWBCtAhI2CjFDT0RFQ19FUlJPUl9SRUFTT05fTVVMVElGT1JNQVRfVU5LTk9XTl9NVUxUSUNPREVDEK4CEjQKL0NPREVDX0VSUk9SX1JFQVNPTl9NVUxUSUZPUk1BVF9JTlZBTElEX01VTFRJS0VZEK8CEi4KKUNPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfSU5WQUxJRF9DQk9SEJADEjQKL0NPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfTk9OX0NBTk9OSUNBTF9DQk9SEJEDEi4KKUNPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfSU5WQUxJRF9KU09OEJIDEjQKL0NPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfTk9OX0NBTk9OSUNBTF9KU09OEJMDEioKJUNPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfSU5URVJOQUwQlAMSKAojQ09ERUNfRVJST1JfUkVBU09OX0JBQ0tFTkRfSU5URVJOQUwQ9AMSMwouQ09ERUNfRVJST1JfUkVBU09OX0JPVU5EQVJZX01BTEZPUk1FRF9QUk9UT0JVRhDYBBIvCipDT0RFQ19FUlJPUl9SRUFTT05fQk9VTkRBUllfTUFMRk9STUVEX0pTT04Q2QQSOAozQ09ERUNfRVJST1JfUkVBU09OX0JPVU5EQVJZX1JFU09VUkNFX0xJTUlUX0VYQ0VFREVEENoEEjIKLUNPREVDX0VSUk9SX1JFQVNPTl9CT1VOREFSWV9NSVNTSU5HX09QRVJBVElPThDbBCIECHAQcEImChJtZS5yZWFsbHkuY29kZWMudjFQAboCDVJlYWxseU1lUHJvdG9iBnByb3RvMw");
|
|
8
|
+
export const file_reallyme_codec_v1_codec = /*@__PURE__*/ fileDesc("Ch1yZWFsbHltZS9jb2RlYy92MS9jb2RlYy5wcm90bxIRcmVhbGx5bWUuY29kZWMudjEivwMKCkNvZGVjRXJyb3ISQgoNYmFzZV9lbmNvZGluZxgBIAEoCzIpLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjQmFzZUVuY29kaW5nRXJyb3JIABIvCgNwZW0YAiABKAsyIC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUVycm9ySAASPwoLbXVsdGlmb3JtYXQYAyABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpZm9ybWF0RXJyb3JIABJJChBjYW5vbmljYWxpemF0aW9uGAQgASgLMi0ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNDYW5vbmljYWxpemF0aW9uRXJyb3JIABI3CgdiYWNrZW5kGAUgASgLMiQucmVhbGx5bWUuY29kZWMudjEuQ29kZWNCYWNrZW5kRXJyb3JIABI5Cghib3VuZGFyeRgGIAEoCzIlLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjQm91bmRhcnlFcnJvckgAEjMKBm9yaWdpbhhkIAEoDjIjLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRXJyb3JPcmlnaW5CBwoFZXJyb3IiMwojQ29kZWNNdWx0aWNvZGVjUHJlZml4Rm9yTmFtZVJlcXVlc3QSDAoEbmFtZRgBIAEoCSIzCiJDb2RlY011bHRpY29kZWNMb29rdXBQcmVmaXhSZXF1ZXN0Eg0KBXZhbHVlGAEgASgMIh0KG0NvZGVjTXVsdGljb2RlY1RhYmxlUmVxdWVzdCItChlDb2RlY011bHRpa2V5UGFyc2VSZXF1ZXN0EhAKCG11bHRpa2V5GAEgASgJIjwKHENvZGVjRGFnQ2JvclZlcmlmeUNpZFJlcXVlc3QSCwoDY2lkGAEgASgJEg8KB3BheWxvYWQYAiABKAwiWgoZQ29kZWNEYWdDYm9yRW5jb2RlUmVxdWVzdBI9CgV2YWx1ZRgBIAEoCzIuLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JWYWx1ZSIrChhDb2RlY0RhZ0Nib3JFbmNvZGVSZXN1bHQSDwoHZW5jb2RlZBgBIAEoDCIsChlDb2RlY0RhZ0Nib3JEZWNvZGVSZXF1ZXN0Eg8KB2VuY29kZWQYASABKAwiWQoYQ29kZWNEYWdDYm9yRGVjb2RlUmVzdWx0Ej0KBXZhbHVlGAEgASgLMi4ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvclZhbHVlIn0KFUNvZGVjUGVtRGVjb2RlT3B0aW9ucxI4Cg5hbGxvd2VkX2xhYmVscxgBIAMoDjIgLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjUGVtTGFiZWwSFQoNbWF4X2lucHV0X2xlbhgCIAEoDRITCgttYXhfZGVyX2xlbhgDIAEoDSJfChVDb2RlY1BlbURlY29kZVJlcXVlc3QSCwoDcGVtGAEgASgMEjkKB29wdGlvbnMYAiABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbURlY29kZU9wdGlvbnMifAoVQ29kZWNQZW1FbmNvZGVPcHRpb25zEhMKC21heF9kZXJfbGVuGAEgASgNEhIKCmxpbmVfd2lkdGgYAiABKA0SOgoLbGluZV9lbmRpbmcYAyABKA4yJS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUxpbmVFbmRpbmcikAEKFUNvZGVjUGVtRW5jb2RlUmVxdWVzdBIvCgVsYWJlbBgBIAEoDjIgLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjUGVtTGFiZWwSCwoDZGVyGAIgASgMEjkKB29wdGlvbnMYAyABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUVuY29kZU9wdGlvbnMiIwoUQ29kZWNQZW1FbmNvZGVSZXN1bHQSCwoDcGVtGAEgASgMIhwKGkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JOdWxsIisKGkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JCb29sEg0KBXZhbHVlGAEgASgIIjYKJUNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JVbnNpZ25lZEludGVnZXISDQoFdmFsdWUYASABKAQiNgolQ29kZWNEZXRlcm1pbmlzdGljQ2Jvck5lZ2F0aXZlSW50ZWdlchINCgV2YWx1ZRgBIAEoEiLQAQodQ29kZWNEZXRlcm1pbmlzdGljQ2JvckludGVnZXISUgoOdW5zaWduZWRfdmFsdWUYASABKAsyOC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yVW5zaWduZWRJbnRlZ2VySAASUgoObmVnYXRpdmVfdmFsdWUYAiABKAsyOC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yTmVnYXRpdmVJbnRlZ2VySABCBwoFdmFsdWUiKwoaQ29kZWNEZXRlcm1pbmlzdGljQ2JvclRleHQSDQoFdmFsdWUYASABKAkiLAobQ29kZWNEZXRlcm1pbmlzdGljQ2JvckJ5dGVzEg0KBXZhbHVlGAEgASgMIrEBChxDb2RlY0RldGVybWluaXN0aWNDYm9yTWFwS2V5EkcKC2ludGVnZXJfa2V5GAEgASgLMjAucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvckludGVnZXJIABJBCgh0ZXh0X2tleRgCIAEoCzItLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JUZXh0SABCBQoDa2V5Ip0BCh5Db2RlY0RldGVybWluaXN0aWNDYm9yTWFwRW50cnkSPAoDa2V5GAEgASgLMi8ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2Jvck1hcEtleRI9CgV2YWx1ZRgCIAEoCzIuLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JWYWx1ZSJdChtDb2RlY0RldGVybWluaXN0aWNDYm9yQXJyYXkSPgoGdmFsdWVzGAEgAygLMi4ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvclZhbHVlIl8KGUNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JNYXASQgoHZW50cmllcxgBIAMoCzIxLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JNYXBFbnRyeSKRBAobQ29kZWNEZXRlcm1pbmlzdGljQ2JvclZhbHVlEkMKCm51bGxfdmFsdWUYASABKAsyLS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yTnVsbEgAEkMKCmJvb2xfdmFsdWUYAiABKAsyLS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yQm9vbEgAEkkKDWludGVnZXJfdmFsdWUYAyABKAsyMC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9ySW50ZWdlckgAEkMKCnRleHRfdmFsdWUYBCABKAsyLS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yVGV4dEgAEkUKC2J5dGVzX3ZhbHVlGAUgASgLMi4ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvckJ5dGVzSAASRQoLYXJyYXlfdmFsdWUYBiABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yQXJyYXlIABJBCgltYXBfdmFsdWUYByABKAsyLC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yTWFwSABCBwoFdmFsdWUiZAojQ29kZWNEZXRlcm1pbmlzdGljQ2JvckVuY29kZVJlcXVlc3QSPQoFdmFsdWUYASABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yVmFsdWUiNQoiQ29kZWNEZXRlcm1pbmlzdGljQ2JvckVuY29kZVJlc3VsdBIPCgdlbmNvZGVkGAEgASgMIjYKI0NvZGVjRGV0ZXJtaW5pc3RpY0Nib3JEZWNvZGVSZXF1ZXN0Eg8KB2VuY29kZWQYASABKAwiYwoiQ29kZWNEZXRlcm1pbmlzdGljQ2JvckRlY29kZVJlc3VsdBI9CgV2YWx1ZRgBIAEoCzIuLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JWYWx1ZSL7BgoUQ29kZWNPcGVyYXRpb25SZXN1bHQSTQoabXVsdGljb2RlY19wcmVmaXhfZm9yX25hbWUY6AcgASgLMiYucmVhbGx5bWUuY29kZWMudjEuQ29kZWNNdWx0aWNvZGVjU3BlY0gAElMKGG11bHRpY29kZWNfbG9va3VwX3ByZWZpeBjpByABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNMb29rdXBSZXN1bHRIABJKChBtdWx0aWNvZGVjX3RhYmxlGOoHIAEoCzItLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjTXVsdGljb2RlY1RhYmxlUmVzdWx0SAASRgoObXVsdGlrZXlfcGFyc2UY0A8gASgLMisucmVhbGx5bWUuY29kZWMudjEuQ29kZWNNdWx0aWtleVBhcnNlUmVzdWx0SAASTgoTZGFnX2Nib3JfdmVyaWZ5X2NpZBi4FyABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RhZ0Nib3JWZXJpZnlDaWRSZXN1bHRIABJHCg9kYWdfY2Jvcl9lbmNvZGUYuRcgASgLMisucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEYWdDYm9yRW5jb2RlUmVzdWx0SAASRwoPZGFnX2Nib3JfZGVjb2RlGLoXIAEoCzIrLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGFnQ2JvckRlY29kZVJlc3VsdEgAEj4KCnBlbV9kZWNvZGUYoB8gASgLMicucmVhbGx5bWUuY29kZWMudjEuQ29kZWNQZW1EZWNvZGVSZXN1bHRIABI+CgpwZW1fZW5jb2RlGKEfIAEoCzInLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjUGVtRW5jb2RlUmVzdWx0SAASWwoZZGV0ZXJtaW5pc3RpY19jYm9yX2VuY29kZRiIJyABKAsyNS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yRW5jb2RlUmVzdWx0SAASWwoZZGV0ZXJtaW5pc3RpY19jYm9yX2RlY29kZRiJJyABKAsyNS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yRGVjb2RlUmVzdWx0SABCCAoGcmVzdWx0SgUIARDoByKOAQoWQ29kZWNPcGVyYXRpb25SZXNwb25zZRI5CgZyZXN1bHQYASABKAsyJy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY09wZXJhdGlvblJlc3VsdEgAEi4KBWVycm9yGAIgASgLMh0ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNFcnJvckgAQgkKB291dGNvbWUinwcKFUNvZGVjT3BlcmF0aW9uUmVxdWVzdBJdChptdWx0aWNvZGVjX3ByZWZpeF9mb3JfbmFtZRjoByABKAsyNi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNQcmVmaXhGb3JOYW1lUmVxdWVzdEgAEloKGG11bHRpY29kZWNfbG9va3VwX3ByZWZpeBjpByABKAsyNS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNMb29rdXBQcmVmaXhSZXF1ZXN0SAASSwoQbXVsdGljb2RlY190YWJsZRjqByABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNUYWJsZVJlcXVlc3RIABJHCg5tdWx0aWtleV9wYXJzZRjQDyABKAsyLC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpa2V5UGFyc2VSZXF1ZXN0SAASTwoTZGFnX2Nib3JfdmVyaWZ5X2NpZBi4FyABKAsyLy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RhZ0Nib3JWZXJpZnlDaWRSZXF1ZXN0SAASSAoPZGFnX2Nib3JfZW5jb2RlGLkXIAEoCzIsLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGFnQ2JvckVuY29kZVJlcXVlc3RIABJICg9kYWdfY2Jvcl9kZWNvZGUYuhcgASgLMiwucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEYWdDYm9yRGVjb2RlUmVxdWVzdEgAEj8KCnBlbV9kZWNvZGUYoB8gASgLMigucmVhbGx5bWUuY29kZWMudjEuQ29kZWNQZW1EZWNvZGVSZXF1ZXN0SAASPwoKcGVtX2VuY29kZRihHyABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUVuY29kZVJlcXVlc3RIABJcChlkZXRlcm1pbmlzdGljX2Nib3JfZW5jb2RlGIgnIAEoCzI2LnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JFbmNvZGVSZXF1ZXN0SAASXAoZZGV0ZXJtaW5pc3RpY19jYm9yX2RlY29kZRiJJyABKAsyNi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yRGVjb2RlUmVxdWVzdEgAQgsKCW9wZXJhdGlvbkoFCAEQ6Aci9gEKE0NvZGVjTXVsdGljb2RlY1NwZWMSDAoEbmFtZRgBIAEoCRIMCgRjb2RlGAIgASgMEg4KBnByZWZpeBgDIAEoDBIoCgN0YWcYBCABKA4yGy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1RhZxJCChFrZXlfbWF0ZXJpYWxfa2luZBgFIAEoDjInLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjS2V5TWF0ZXJpYWxLaW5kEhQKDGZpeGVkX2xlbmd0aBgGIAEoDRIXCg92YXJpYWJsZV9sZW5ndGgYByABKAgSFgoOYWxnb3JpdGhtX25hbWUYCCABKAkifAobQ29kZWNNdWx0aWNvZGVjTG9va3VwUmVzdWx0EgwKBG5hbWUYASABKAkSFQoNcHJlZml4X2xlbmd0aBgCIAEoDRI4CghtZXRhZGF0YRgDIAEoCzImLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjTXVsdGljb2RlY1NwZWMiVQoaQ29kZWNNdWx0aWNvZGVjVGFibGVSZXN1bHQSNwoHZW50cmllcxgBIAMoCzImLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjTXVsdGljb2RlY1NwZWMiogEKGENvZGVjTXVsdGlrZXlQYXJzZVJlc3VsdBISCgpjb2RlY19uYW1lGAEgASgJEhYKDmFsZ29yaXRobV9uYW1lGAIgASgJEhIKCnB1YmxpY19rZXkYAyABKAwSIgoaZXhwZWN0ZWRfcHVibGljX2tleV9sZW5ndGgYBCABKA0SIgoadmFyaWFibGVfcHVibGljX2tleV9sZW5ndGgYBSABKAgiVgobQ29kZWNEYWdDYm9yVmVyaWZ5Q2lkUmVzdWx0Eg0KBXZhbGlkGAEgASgIEhQKDGV4cGVjdGVkX2NpZBgCIAEoCRISCgphY3R1YWxfY2lkGAMgASgJIjIKFENvZGVjUGVtRGVjb2RlUmVzdWx0Eg0KBWxhYmVsGAEgASgJEgsKA2RlchgCIAEoDCJNChZDb2RlY0Jhc2VFbmNvZGluZ0Vycm9yEjMKBnJlYXNvbhgBIAEoDjIjLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRXJyb3JSZWFzb24iRAoNQ29kZWNQZW1FcnJvchIzCgZyZWFzb24YASABKA4yIy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0Vycm9yUmVhc29uIkwKFUNvZGVjTXVsdGlmb3JtYXRFcnJvchIzCgZyZWFzb24YASABKA4yIy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0Vycm9yUmVhc29uIlEKGkNvZGVjQ2Fub25pY2FsaXphdGlvbkVycm9yEjMKBnJlYXNvbhgBIAEoDjIjLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRXJyb3JSZWFzb24iSAoRQ29kZWNCYWNrZW5kRXJyb3ISMwoGcmVhc29uGAEgASgOMiMucmVhbGx5bWUuY29kZWMudjEuQ29kZWNFcnJvclJlYXNvbiJJChJDb2RlY0JvdW5kYXJ5RXJyb3ISMwoGcmVhc29uGAEgASgOMiMucmVhbGx5bWUuY29kZWMudjEuQ29kZWNFcnJvclJlYXNvbip2ChBDb2RlY0Vycm9yT3JpZ2luEiIKHkNPREVDX0VSUk9SX09SSUdJTl9VTlNQRUNJRklFRBAAEh0KGUNPREVDX0VSUk9SX09SSUdJTl9DQUxMRVIQARIfChtDT0RFQ19FUlJPUl9PUklHSU5fUFJPVklERVIQAiqVAQoNQ29kZWNQZW1MYWJlbBIfChtDT0RFQ19QRU1fTEFCRUxfVU5TUEVDSUZJRUQQABIfChtDT0RFQ19QRU1fTEFCRUxfUFJJVkFURV9LRVkQZBIiCh5DT0RFQ19QRU1fTEFCRUxfRUNfUFJJVkFURV9LRVkQbhIeChpDT0RFQ19QRU1fTEFCRUxfUFVCTElDX0tFWRB4KnkKEkNvZGVjUGVtTGluZUVuZGluZxIlCiFDT0RFQ19QRU1fTElORV9FTkRJTkdfVU5TUEVDSUZJRUQQABIcChhDT0RFQ19QRU1fTElORV9FTkRJTkdfTEYQZBIeChpDT0RFQ19QRU1fTElORV9FTkRJTkdfQ1JMRhBuKuABChRDb2RlY0tleU1hdGVyaWFsS2luZBInCiNDT0RFQ19LRVlfTUFURVJJQUxfS0lORF9VTlNQRUNJRklFRBAAEiYKIkNPREVDX0tFWV9NQVRFUklBTF9LSU5EX1BVQkxJQ19LRVkQARInCiNDT0RFQ19LRVlfTUFURVJJQUxfS0lORF9QUklWQVRFX0tFWRACEikKJUNPREVDX0tFWV9NQVRFUklBTF9LSU5EX1NZTU1FVFJJQ19LRVkQAxIjCh9DT0RFQ19LRVlfTUFURVJJQUxfS0lORF9OT1RfS0VZEAQqlwEKCENvZGVjVGFnEhkKFUNPREVDX1RBR19VTlNQRUNJRklFRBAAEhgKFENPREVDX1RBR19FTkNSWVBUSU9OEAESEQoNQ09ERUNfVEFHX0tFWRACEhIKDkNPREVDX1RBR19IQVNIEAMSFwoTQ09ERUNfVEFHX01VTFRJSEFTSBAEEhYKEkNPREVDX1RBR19NVUxUSUtFWRAFKrQPChBDb2RlY0Vycm9yUmVhc29uEiIKHkNPREVDX0VSUk9SX1JFQVNPTl9VTlNQRUNJRklFRBAAEi0KKUNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX1VOU1VQUE9SVEVEX0NPREVDEGQSLAooQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfSU5WQUxJRF9FTkNPRElORxBlEioKJkNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX0lOVkFMSURfTEVOR1RIEGYSKwonQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfSU5QVVRfVE9PX0xBUkdFEGcSLAooQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfT1VUUFVUX1RPT19MQVJHRRBoEioKJkNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX0lOVkFMSURfQkFTRTY0EG4SLQopQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfSU5WQUxJRF9CQVNFNjRVUkwQbxInCiNDT0RFQ19FUlJPUl9SRUFTT05fQkFTRV9JTlZBTElEX0hFWBB4Ei0KKUNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX05PTl9DQU5PTklDQUxfSEVYEHkSLAonQ09ERUNfRVJST1JfUkVBU09OX1BFTV9JTlZBTElEX0JPVU5EQVJZEMgBEioKJUNPREVDX0VSUk9SX1JFQVNPTl9QRU1fTEFCRUxfTUlTTUFUQ0gQyQESLQooQ09ERUNfRVJST1JfUkVBU09OX1BFTV9VTlNVUFBPUlRFRF9MQUJFTBDKARIoCiNDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0lOVkFMSURfQk9EWRDLARIpCiRDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0RFUl9UT09fTEFSR0UQzAESJwoiQ09ERUNfRVJST1JfUkVBU09OX1BFTV9FTVBUWV9JTlBVVBDNARIlCiBDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0VNUFRZX0RFUhDOARIrCiZDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0lOVkFMSURfT1BUSU9OUxDPARIpCiRDT0RFQ19FUlJPUl9SRUFTT05fUEVNX01JU1NJTkdfQkVHSU4Q0AESJwoiQ09ERUNfRVJST1JfUkVBU09OX1BFTV9NSVNTSU5HX0VORBDRARIqCiVDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0lOVkFMSURfQkFTRTY0ENIBEjwKN0NPREVDX0VSUk9SX1JFQVNPTl9NVUxUSUZPUk1BVF9JTlZBTElEX01VTFRJQkFTRV9QUkVGSVgQrAISPQo4Q09ERUNfRVJST1JfUkVBU09OX01VTFRJRk9STUFUX0lOVkFMSURfTVVMVElDT0RFQ19QUkVGSVgQrQISNgoxQ09ERUNfRVJST1JfUkVBU09OX01VTFRJRk9STUFUX1VOS05PV05fTVVMVElDT0RFQxCuAhI0Ci9DT0RFQ19FUlJPUl9SRUFTT05fTVVMVElGT1JNQVRfSU5WQUxJRF9NVUxUSUtFWRCvAhIuCilDT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX0lOVkFMSURfQ0JPUhCQAxI0Ci9DT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX05PTl9DQU5PTklDQUxfQ0JPUhCRAxIuCilDT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX0lOVkFMSURfSlNPThCSAxI0Ci9DT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX05PTl9DQU5PTklDQUxfSlNPThCTAxIqCiVDT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX0lOVEVSTkFMEJQDEjoKNUNPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfTk9OX01JTklNQUxfQ0JPUl9JTlRFR0VSEJUDEjgKM0NPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfRFVQTElDQVRFX0NCT1JfTUFQX0tFWRCWAxI8CjdDT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX0NCT1JfTUFQX0tFWVNfT1VUX09GX09SREVSEJcDEjUKMENPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfQ0JPUl9UUkFJTElOR19CWVRFUxCYAxI4CjNDT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX1VOU1VQUE9SVEVEX0lQTERfVkFMVUUQmQMSKAojQ09ERUNfRVJST1JfUkVBU09OX0JBQ0tFTkRfSU5URVJOQUwQ9AMSMwouQ09ERUNfRVJST1JfUkVBU09OX0JPVU5EQVJZX01BTEZPUk1FRF9QUk9UT0JVRhDYBBIvCipDT0RFQ19FUlJPUl9SRUFTT05fQk9VTkRBUllfTUFMRk9STUVEX0pTT04Q2QQSOAozQ09ERUNfRVJST1JfUkVBU09OX0JPVU5EQVJZX1JFU09VUkNFX0xJTUlUX0VYQ0VFREVEENoEEjIKLUNPREVDX0VSUk9SX1JFQVNPTl9CT1VOREFSWV9NSVNTSU5HX09QRVJBVElPThDbBCIECHAQcEImChJtZS5yZWFsbHkuY29kZWMudjFQAboCDVJlYWxseU1lUHJvdG9iBnByb3RvMw");
|
|
9
9
|
/**
|
|
10
10
|
* Describes the message reallyme.codec.v1.CodecError.
|
|
11
11
|
* Use `create(CodecErrorSchema)` to create a new message.
|
|
@@ -464,6 +464,30 @@ export var CodecErrorReason;
|
|
|
464
464
|
* @generated from enum value: CODEC_ERROR_REASON_PEM_DER_TOO_LARGE = 204;
|
|
465
465
|
*/
|
|
466
466
|
CodecErrorReason[CodecErrorReason["PEM_DER_TOO_LARGE"] = 204] = "PEM_DER_TOO_LARGE";
|
|
467
|
+
/**
|
|
468
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_EMPTY_INPUT = 205;
|
|
469
|
+
*/
|
|
470
|
+
CodecErrorReason[CodecErrorReason["PEM_EMPTY_INPUT"] = 205] = "PEM_EMPTY_INPUT";
|
|
471
|
+
/**
|
|
472
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_EMPTY_DER = 206;
|
|
473
|
+
*/
|
|
474
|
+
CodecErrorReason[CodecErrorReason["PEM_EMPTY_DER"] = 206] = "PEM_EMPTY_DER";
|
|
475
|
+
/**
|
|
476
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_INVALID_OPTIONS = 207;
|
|
477
|
+
*/
|
|
478
|
+
CodecErrorReason[CodecErrorReason["PEM_INVALID_OPTIONS"] = 207] = "PEM_INVALID_OPTIONS";
|
|
479
|
+
/**
|
|
480
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_MISSING_BEGIN = 208;
|
|
481
|
+
*/
|
|
482
|
+
CodecErrorReason[CodecErrorReason["PEM_MISSING_BEGIN"] = 208] = "PEM_MISSING_BEGIN";
|
|
483
|
+
/**
|
|
484
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_MISSING_END = 209;
|
|
485
|
+
*/
|
|
486
|
+
CodecErrorReason[CodecErrorReason["PEM_MISSING_END"] = 209] = "PEM_MISSING_END";
|
|
487
|
+
/**
|
|
488
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_INVALID_BASE64 = 210;
|
|
489
|
+
*/
|
|
490
|
+
CodecErrorReason[CodecErrorReason["PEM_INVALID_BASE64"] = 210] = "PEM_INVALID_BASE64";
|
|
467
491
|
/**
|
|
468
492
|
* Multiformats and key envelopes.
|
|
469
493
|
*
|
|
@@ -504,6 +528,26 @@ export var CodecErrorReason;
|
|
|
504
528
|
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_INTERNAL = 404;
|
|
505
529
|
*/
|
|
506
530
|
CodecErrorReason[CodecErrorReason["CANONICAL_INTERNAL"] = 404] = "CANONICAL_INTERNAL";
|
|
531
|
+
/**
|
|
532
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_NON_MINIMAL_CBOR_INTEGER = 405;
|
|
533
|
+
*/
|
|
534
|
+
CodecErrorReason[CodecErrorReason["CANONICAL_NON_MINIMAL_CBOR_INTEGER"] = 405] = "CANONICAL_NON_MINIMAL_CBOR_INTEGER";
|
|
535
|
+
/**
|
|
536
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_DUPLICATE_CBOR_MAP_KEY = 406;
|
|
537
|
+
*/
|
|
538
|
+
CodecErrorReason[CodecErrorReason["CANONICAL_DUPLICATE_CBOR_MAP_KEY"] = 406] = "CANONICAL_DUPLICATE_CBOR_MAP_KEY";
|
|
539
|
+
/**
|
|
540
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_CBOR_MAP_KEYS_OUT_OF_ORDER = 407;
|
|
541
|
+
*/
|
|
542
|
+
CodecErrorReason[CodecErrorReason["CANONICAL_CBOR_MAP_KEYS_OUT_OF_ORDER"] = 407] = "CANONICAL_CBOR_MAP_KEYS_OUT_OF_ORDER";
|
|
543
|
+
/**
|
|
544
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_CBOR_TRAILING_BYTES = 408;
|
|
545
|
+
*/
|
|
546
|
+
CodecErrorReason[CodecErrorReason["CANONICAL_CBOR_TRAILING_BYTES"] = 408] = "CANONICAL_CBOR_TRAILING_BYTES";
|
|
547
|
+
/**
|
|
548
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_UNSUPPORTED_IPLD_VALUE = 409;
|
|
549
|
+
*/
|
|
550
|
+
CodecErrorReason[CodecErrorReason["CANONICAL_UNSUPPORTED_IPLD_VALUE"] = 409] = "CANONICAL_UNSUPPORTED_IPLD_VALUE";
|
|
507
551
|
/**
|
|
508
552
|
* Backend failures.
|
|
509
553
|
*
|
package/dist/proto.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText:
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 ReallyMe LLC
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
4
4
|
export { CodecBackendErrorSchema, CodecBaseEncodingErrorSchema, CodecCanonicalizationErrorSchema, CodecBoundaryErrorSchema, CodecDagCborDecodeRequestSchema, CodecDagCborDecodeResultSchema, CodecDagCborEncodeRequestSchema, CodecDagCborEncodeResultSchema, CodecDagCborVerifyCidRequestSchema, CodecDagCborVerifyCidResultSchema, CodecDeterministicCborArraySchema, CodecDeterministicCborBoolSchema, CodecDeterministicCborBytesSchema, CodecDeterministicCborDecodeRequestSchema, CodecDeterministicCborDecodeResultSchema, CodecDeterministicCborEncodeRequestSchema, CodecDeterministicCborEncodeResultSchema, CodecDeterministicCborIntegerSchema, CodecDeterministicCborMapEntrySchema, CodecDeterministicCborMapKeySchema, CodecDeterministicCborMapSchema, CodecDeterministicCborNegativeIntegerSchema, CodecDeterministicCborNullSchema, CodecDeterministicCborTextSchema, CodecDeterministicCborUnsignedIntegerSchema, CodecDeterministicCborValueSchema, CodecErrorReason, CodecErrorReasonSchema, CodecErrorOrigin, CodecErrorOriginSchema, CodecErrorSchema, CodecKeyMaterialKind, CodecKeyMaterialKindSchema, CodecMultiformatErrorSchema, CodecMulticodecLookupResultSchema, CodecMulticodecLookupPrefixRequestSchema, CodecMulticodecPrefixForNameRequestSchema, CodecMulticodecSpecSchema, CodecMulticodecTableRequestSchema, CodecMulticodecTableResultSchema, CodecMultikeyParseRequestSchema, CodecMultikeyParseResultSchema, CodecOperationRequestSchema, CodecOperationResponseSchema, CodecOperationResultSchema, CodecPemDecodeOptionsSchema, CodecPemDecodeRequestSchema, CodecPemEncodeOptionsSchema, CodecPemEncodeRequestSchema, CodecPemEncodeResultSchema, CodecPemErrorSchema, CodecPemLabel, CodecPemLabelSchema, CodecPemLineEnding, CodecPemLineEndingSchema, CodecPemDecodeResultSchema, CodecTag, CodecTagSchema, file_reallyme_codec_v1_codec, } from "./proto/generated/reallyme/codec/v1/codec_pb.js";
|
package/dist/readOutput.d.ts
CHANGED
|
@@ -6,6 +6,10 @@ export declare const ensureBytesInput: (value: Uint8Array) => void;
|
|
|
6
6
|
* provider or protobuf serializer consumes another.
|
|
7
7
|
*/
|
|
8
8
|
export declare const snapshotBoundedBytesInput: (value: Uint8Array, maximumLength?: number) => Uint8Array;
|
|
9
|
+
/** Copy provider-owned bytes without invoking methods supplied by the provider. */
|
|
10
|
+
export declare const snapshotProviderBytes: (value: Uint8Array, maximumLength?: number) => Uint8Array;
|
|
11
|
+
/** Wipes the private copy even when the provider rejects the request. */
|
|
12
|
+
export declare const withSnapshotBytesInput: <T>(value: Uint8Array, action: (snapshot: Uint8Array) => T) => T;
|
|
9
13
|
export declare const ensureStringInput: (value: string) => void;
|
|
10
14
|
export declare const ensureStringValue: (value: string) => void;
|
|
11
15
|
export declare const readBooleanOutput: (value: unknown) => boolean;
|
package/dist/readOutput.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText:
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 ReallyMe LLC
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
4
4
|
import { MAX_CODEC_FFI_INPUT_BYTES, MAX_CODEC_FFI_OUTPUT_BYTES, requireBoundaryUtf8String, } from "./boundary.js";
|
|
@@ -105,6 +105,25 @@ export const snapshotBoundedBytesInput = (value, maximumLength = MAX_CODEC_FFI_I
|
|
|
105
105
|
throw new ReallyMeCodecError("invalid-input");
|
|
106
106
|
}
|
|
107
107
|
};
|
|
108
|
+
/** Copy provider-owned bytes without invoking methods supplied by the provider. */
|
|
109
|
+
export const snapshotProviderBytes = (value, maximumLength = MAX_CODEC_FFI_OUTPUT_BYTES) => {
|
|
110
|
+
try {
|
|
111
|
+
return snapshotBoundedBytesInput(value, maximumLength);
|
|
112
|
+
}
|
|
113
|
+
catch (_error) {
|
|
114
|
+
throw new ReallyMeCodecError("provider-failure");
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
/** Wipes the private copy even when the provider rejects the request. */
|
|
118
|
+
export const withSnapshotBytesInput = (value, action) => {
|
|
119
|
+
const snapshot = snapshotBoundedBytesInput(value);
|
|
120
|
+
try {
|
|
121
|
+
return action(snapshot);
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
snapshot.fill(0);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
108
127
|
export const ensureStringInput = (value) => {
|
|
109
128
|
if (typeof value !== "string" || value.length === 0) {
|
|
110
129
|
throw new ReallyMeCodecError("invalid-input");
|
|
@@ -92,7 +92,7 @@ export function multibaseBase64urlEncode(bytes: Uint8Array): string;
|
|
|
92
92
|
export function multibaseDecode(encoded: string): Uint8Array;
|
|
93
93
|
|
|
94
94
|
/**
|
|
95
|
-
* Strip a known multicodec prefix, or return
|
|
95
|
+
* Strip a known multicodec prefix, or return a typed error for an unknown prefix.
|
|
96
96
|
*/
|
|
97
97
|
export function multicodecStripPrefix(bytes: Uint8Array): Uint8Array;
|
|
98
98
|
|
|
@@ -131,25 +131,25 @@ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembl
|
|
|
131
131
|
export interface InitOutput {
|
|
132
132
|
readonly memory: WebAssembly.Memory;
|
|
133
133
|
readonly base58btcDecode: (a: any) => [number, number, number];
|
|
134
|
-
readonly base58btcEncode: (a: any) => [number, number, number
|
|
134
|
+
readonly base58btcEncode: (a: any) => [number, number, number];
|
|
135
135
|
readonly base64Decode: (a: any) => [number, number, number];
|
|
136
|
-
readonly base64Encode: (a: any) => [number, number, number
|
|
136
|
+
readonly base64Encode: (a: any) => [number, number, number];
|
|
137
137
|
readonly base64urlDecode: (a: any) => [number, number, number];
|
|
138
|
-
readonly base64urlEncode: (a: any) => [number, number, number
|
|
138
|
+
readonly base64urlEncode: (a: any) => [number, number, number];
|
|
139
139
|
readonly bindingTypeMatchesCodec: (a: any, b: any) => [number, number, number];
|
|
140
|
-
readonly bytesToLowerHex: (a: any) => [number, number, number
|
|
141
|
-
readonly canonicalizeJson: (a: any) => [number, number, number
|
|
140
|
+
readonly bytesToLowerHex: (a: any) => [number, number, number];
|
|
141
|
+
readonly canonicalizeJson: (a: any) => [number, number, number];
|
|
142
142
|
readonly dagCborCodecCode: () => number;
|
|
143
|
-
readonly dagCborComputeCid: (a: any) => [number, number, number
|
|
143
|
+
readonly dagCborComputeCid: (a: any) => [number, number, number];
|
|
144
144
|
readonly dagCborMultihash: (a: any) => [number, number, number];
|
|
145
145
|
readonly dagCborSha256ContentHash: (a: any) => [number, number, number];
|
|
146
146
|
readonly isValidCidString: (a: any) => [number, number, number];
|
|
147
147
|
readonly lowerHexToBytes: (a: any) => [number, number, number];
|
|
148
|
-
readonly multibaseBase58btcEncode: (a: any) => [number, number, number
|
|
149
|
-
readonly multibaseBase64urlEncode: (a: any) => [number, number, number
|
|
148
|
+
readonly multibaseBase58btcEncode: (a: any) => [number, number, number];
|
|
149
|
+
readonly multibaseBase64urlEncode: (a: any) => [number, number, number];
|
|
150
150
|
readonly multibaseDecode: (a: any) => [number, number, number];
|
|
151
151
|
readonly multicodecStripPrefix: (a: any) => [number, number, number];
|
|
152
|
-
readonly multikeyEncode: (a: any, b: any) => [number, number, number
|
|
152
|
+
readonly multikeyEncode: (a: any, b: any) => [number, number, number];
|
|
153
153
|
readonly processOperation: (a: any) => [number, number, number];
|
|
154
154
|
readonly processOperationJson: (a: any) => [number, number, number];
|
|
155
155
|
readonly requireSupportedMulticodec: (a: any) => [number, number];
|
|
@@ -157,10 +157,10 @@ export interface InitOutput {
|
|
|
157
157
|
readonly validateKeyBinding: (a: any, b: number, c: any) => [number, number];
|
|
158
158
|
readonly __wbindgen_malloc: (a: number, b: number) => number;
|
|
159
159
|
readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
|
|
160
|
+
readonly __wbindgen_exn_store: (a: number) => void;
|
|
161
|
+
readonly __externref_table_alloc: () => number;
|
|
160
162
|
readonly __wbindgen_externrefs: WebAssembly.Table;
|
|
161
163
|
readonly __externref_table_dealloc: (a: number) => void;
|
|
162
|
-
readonly __wbindgen_free: (a: number, b: number, c: number) => void;
|
|
163
|
-
readonly __externref_table_alloc: () => number;
|
|
164
164
|
readonly __wbindgen_start: () => void;
|
|
165
165
|
}
|
|
166
166
|
|