@wireio/protoc-gen-solana 1.0.5 → 1.0.7
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/README.md +37 -26
- package/dist/bin/protoc-gen-solana +0 -0
- package/dist/bundle/protoc-gen-solana.cjs +221678 -0
- package/dist/bundle/protoc-gen-solana.cjs.map +7 -0
- package/lib/TypescriptFactoryShim.d.ts +14 -0
- package/lib/TypescriptFactoryShim.d.ts.map +1 -0
- package/lib/TypescriptFactoryShim.js +108 -0
- package/lib/generator/field.js +50 -43
- package/lib/generator/index.js +13 -4
- package/lib/generator/message.js +16 -13
- package/lib/generator/runtime.js +11 -5
- package/lib/generator/type-map.js +18 -11
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +12 -9
- package/lib/plugin.js +51 -15
- package/lib/util/logger.js +12 -5
- package/lib/util/names.js +9 -4
- package/package.json +13 -12
- package/dist/bundle/protoc-gen-solana.mjs +0 -7848
- package/dist/bundle/protoc-gen-solana.mjs.map +0 -7
package/lib/generator/message.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateRsFile = generateRsFile;
|
|
4
|
+
const names_js_1 = require("../util/names.js");
|
|
5
|
+
const logger_js_1 = require("../util/logger.js");
|
|
6
|
+
const field_js_1 = require("./field.js");
|
|
4
7
|
/**
|
|
5
8
|
* Generate a complete .rs file containing struct definitions and
|
|
6
9
|
* encode/decode impl blocks for all non-map-entry messages
|
|
7
10
|
* in a given proto file.
|
|
8
11
|
*/
|
|
9
|
-
|
|
12
|
+
function generateRsFile(messages, protoFileName) {
|
|
10
13
|
const lines = [];
|
|
11
14
|
lines.push(`// Auto-generated by protoc-gen-solana from ${protoFileName}`);
|
|
12
15
|
lines.push(`// DO NOT EDIT`);
|
|
@@ -30,16 +33,16 @@ export function generateRsFile(messages, protoFileName) {
|
|
|
30
33
|
* Generate Rust struct definition for a message.
|
|
31
34
|
*/
|
|
32
35
|
function genStruct(msg) {
|
|
33
|
-
const name = protoNameToRust(msg.fullName);
|
|
34
|
-
log.debug(`Generating struct ${name} (${msg.fields.length} fields)`);
|
|
36
|
+
const name = (0, names_js_1.protoNameToRust)(msg.fullName);
|
|
37
|
+
logger_js_1.log.debug(`Generating struct ${name} (${msg.fields.length} fields)`);
|
|
35
38
|
const members = msg.fields
|
|
36
39
|
.filter(f => !isMapEntryField(f, msg))
|
|
37
40
|
.map(f => {
|
|
38
41
|
const mapEntry = resolveMapEntry(f, msg);
|
|
39
42
|
if (mapEntry) {
|
|
40
|
-
return genStructMember({ ...f, mapEntry });
|
|
43
|
+
return (0, field_js_1.genStructMember)({ ...f, mapEntry });
|
|
41
44
|
}
|
|
42
|
-
return genStructMember(f);
|
|
45
|
+
return (0, field_js_1.genStructMember)(f);
|
|
43
46
|
});
|
|
44
47
|
return [
|
|
45
48
|
`#[derive(Clone, Debug, Default, PartialEq)]`,
|
|
@@ -53,8 +56,8 @@ function genStruct(msg) {
|
|
|
53
56
|
* Generate the impl block with encode() and decode() for a message.
|
|
54
57
|
*/
|
|
55
58
|
function genImpl(msg) {
|
|
56
|
-
const structName = protoNameToRust(msg.fullName);
|
|
57
|
-
log.debug(`Generating impl ${structName}`);
|
|
59
|
+
const structName = (0, names_js_1.protoNameToRust)(msg.fullName);
|
|
60
|
+
logger_js_1.log.debug(`Generating impl ${structName}`);
|
|
58
61
|
const encodeBody = genEncodeFunction(msg, structName);
|
|
59
62
|
const decodeBody = genDecodeFunction(msg, structName);
|
|
60
63
|
return [
|
|
@@ -80,7 +83,7 @@ function genEncodeFunction(msg, structName) {
|
|
|
80
83
|
const fieldInfo = mapEntry ? { ...field, mapEntry } : field;
|
|
81
84
|
lines.push(``);
|
|
82
85
|
lines.push(` // field ${field.number}: ${field.name}`);
|
|
83
|
-
lines.push(genFieldEncode(fieldInfo));
|
|
86
|
+
lines.push((0, field_js_1.genFieldEncode)(fieldInfo));
|
|
84
87
|
}
|
|
85
88
|
lines.push(``);
|
|
86
89
|
lines.push(` buf`);
|
|
@@ -107,7 +110,7 @@ function genDecodeFunction(msg, structName) {
|
|
|
107
110
|
continue;
|
|
108
111
|
const mapEntry = resolveMapEntry(field, msg);
|
|
109
112
|
const fieldInfo = mapEntry ? { ...field, mapEntry } : field;
|
|
110
|
-
lines.push(genFieldDecode(fieldInfo));
|
|
113
|
+
lines.push((0, field_js_1.genFieldDecode)(fieldInfo));
|
|
111
114
|
}
|
|
112
115
|
lines.push(` _ => {`);
|
|
113
116
|
lines.push(` pos = skip_field(data, pos, tag & 0x07)?;`);
|
|
@@ -147,4 +150,4 @@ function resolveMapEntry(field, parentMsg) {
|
|
|
147
150
|
valueTypeName: valField.typeName
|
|
148
151
|
};
|
|
149
152
|
}
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0b3IvbWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDbEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3ZDLE9BQU8sRUFFTCxlQUFlLEVBQ2YsY0FBYyxFQUNkLGNBQWMsRUFDZixNQUFNLFlBQVksQ0FBQTtBQW1CbkI7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQzVCLFFBQTZCLEVBQzdCLGFBQXFCO0lBRXJCLE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQTtJQUUxQixLQUFLLENBQUMsSUFBSSxDQUFDLCtDQUErQyxhQUFhLEVBQUUsQ0FBQyxDQUFBO0lBQzFFLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUM1QixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ2QsS0FBSyxDQUFDLElBQUksQ0FBQyw0REFBNEQsQ0FBQyxDQUFBO0lBQ3hFLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDZCxLQUFLLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLENBQUE7SUFDN0MsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUVkLDRDQUE0QztJQUM1QyxLQUFLLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzNCLElBQUksR0FBRyxDQUFDLFVBQVU7WUFBRSxTQUFRO1FBQzVCLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDMUIsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNkLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFD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QztRQUFFLE9BQU8sU0FBUyxDQUFBO0lBQzVELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUMxQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQzVDLENBQUE7SUFDRCxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVU7UUFBRSxPQUFPLFNBQVMsQ0FBQTtJQUV6QyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDeEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ3hELElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTyxTQUFTLENBQUE7SUFFNUMsT0FBTztRQUNMLE9BQU8sRUFBRSxRQUFRLENBQUMsSUFBSTtRQUN0QixTQUFTLEVBQUUsUUFBUSxDQUFDLElBQUk7UUFDeEIsYUFBYSxFQUFFLFFBQVEsQ0FBQyxRQUFRO0tBQ2pDLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvdG9OYW1lVG9SdXN0IH0gZnJvbSBcIi4uL3V0aWwvbmFtZXMuanNcIlxuaW1wb3J0IHsgbG9nIH0gZnJvbSBcIi4uL3V0aWwvbG9nZ2VyLmpzXCJcbmltcG9ydCB7XG4gIEZpZWxkSW5mbyxcbiAgZ2VuU3RydWN0TWVtYmVyLFxuICBnZW5GaWVsZEVuY29kZSxcbiAgZ2VuRmllbGREZWNvZGVcbn0gZnJvbSBcIi4vZmllbGQuanNcIlxuaW1wb3J0IHsgUFJPVE9fVFlQRV9NQVAsIFdpcmVUeXBlIH0gZnJvbSBcIi4vdHlwZS1tYXAuanNcIlxuXG4vKipcbiAqIERlc2NyaXB0b3Igc3Vic2V0IGZvciBhIHByb3RvYnVmIG1lc3NhZ2UgbmVlZGVkIGJ5IHRoZSBjb2RlZ2VuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2VEZXNjcmlwdG9yIHtcbiAgLyoqIFNpbXBsZSBuYW1lIChlLmcuIFwiTXlNZXNzYWdlXCIpICovXG4gIG5hbWU6IHN0cmluZ1xuICAvKiogRnVsbHkgcXVhbGlmaWVkIG5hbWUgKGUuZy4gXCIubXlfcGFja2FnZS5NeU1lc3NhZ2VcIikgKi9cbiAgZnVsbE5hbWU6IHN0cmluZ1xuICAvKiogRmllbGQgZGVzY3JpcHRvcnMgKi9cbiAgZmllbGRzOiBGaWVsZEluZm9bXVxuICAvKiogTmVzdGVkIG1lc3NhZ2UgZGVzY3JpcHRvcnMgKGZvciBtYXAgZW50cnkgdHlwZXMsIGV0Yy4pICovXG4gIG5lc3RlZE1lc3NhZ2VzOiBNZXNzYWdlRGVzY3JpcHRvcltdXG4gIC8qKiBUcnVlIGlmIHRoaXMgbWVzc2FnZSBpcyBhIHN5bnRoZXRpYyBtYXAgZW50cnkgKi9cbiAgaXNNYXBFbnRyeTogYm9vbGVhblxufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgY29tcGxldGUgLnJzIGZpbGUgY29udGFpbmluZyBzdHJ1Y3QgZGVmaW5pdGlvbnMgYW5kXG4gKiBlbmNvZGUvZGVjb2RlIGltcGwgYmxvY2tzIGZvciBhbGwgbm9uLW1hcC1lbnRyeSBtZXNzYWdlc1xuICogaW4gYSBnaXZlbiBwcm90byBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVSc0ZpbGUoXG4gIG1lc3NhZ2VzOiBNZXNzYWdlRGVzY3JpcHRvcltdLFxuICBwcm90b0ZpbGVOYW1lOiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdXG5cbiAgbGluZXMucHVzaChgLy8gQXV0by1nZW5lcmF0ZWQgYnkgcHJvdG9jLWdlbi1zb2xhbmEgZnJvbSAke3Byb3RvRmlsZU5hbWV9YClcbiAgbGluZXMucHVzaChgLy8gRE8gTk9UIEVESVRgKVxuICBsaW5lcy5wdXNoKGBgKVxuICBsaW5lcy5wdXNoKGAjIVthbGxvdyh1bnVzZWRfaW1wb3J0cywgbm9uX2NhbWVsX2Nhc2VfdHlwZXMsIGRlYWRfY29kZSldYClcbiAgbGluZXMucHVzaChgYClcbiAgbGluZXMucHVzaChgdXNlIGNyYXRlOjpwcm90b2J1Zl9ydW50aW1lOjoqO2ApXG4gIGxpbmVzLnB1c2goYGApXG5cbiAgLy8gR2VuZXJhdGUgc3RydWN0cyB3aXRoIGVuY29kZS9kZWNvZGUgaW1wbHNcbiAgZm9yIChjb25zdCBtc2cgb2YgbWVzc2FnZXMpIHtcbiAgICBpZiAobXNnLmlzTWFwRW50cnkpIGNvbnRpbnVlXG4gICAgbGluZXMucHVzaChnZW5TdHJ1Y3QobXNnKSlcbiAgICBsaW5lcy5wdXNoKGBgKVxuICAgIGxpbmVzLnB1c2goZ2VuSW1wbChtc2cpKVxuICAgIGxpbmVzLnB1c2goYGApXG4gIH1cblxuICByZXR1cm4gbGluZXMuam9pbihcIlxcblwiKVxufVxuXG4vKipcbiAqIEdlbmVyYXRlIFJ1c3Qgc3RydWN0IGRlZmluaXRpb24gZm9yIGEgbWVzc2FnZS5cbiAqL1xuZnVuY3Rpb24gZ2VuU3RydWN0KG1zZzogTWVzc2FnZURlc2NyaXB0b3IpOiBzdHJpbmcge1xuICBjb25zdCBuYW1lID0gcHJvdG9OYW1lVG9SdXN0KG1zZy5mdWxsTmFtZSlcbiAgbG9nLmRlYnVnKGBHZW5lcmF0aW5nIHN0cnVjdCAke25hbWV9ICgke21zZy5maWVsZHMubGVuZ3RofSBmaWVsZHMpYClcblxuICBjb25zdCBtZW1iZXJzID0gbXNnLmZpZWxkc1xuICAgIC5maWx0ZXIoZiA9PiAhaXNNYXBFbnRyeUZpZWxkKGYsIG1zZykpXG4gICAgLm1hcChmID0+IHtcbiAgICAgIGNvbnN0IG1hcEVudHJ5ID0gcmVzb2x2ZU1hcEVudHJ5KGYsIG1zZylcbiAgICAgIGlmIChtYXBFbnRyeSkge1xuICAgICAgICByZXR1cm4gZ2VuU3RydWN0TWVtYmVyKHsgLi4uZiwgbWFwRW50cnkgfSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBnZW5TdHJ1Y3RNZW1iZXIoZilcbiAgICB9KVxuXG4gIHJldHVybiBbXG4gICAgYCNbZGVyaXZlKENsb25lLCBEZWJ1ZywgRGVmYXVsdCwgUGFydGlhbEVxKV1gLFxuICAgIGAjW2NmZ19hdHRyKGZlYXR1cmUgPSBcImJvcnNoXCIsIGRlcml2ZShib3JzaDo6Qm9yc2hTZXJpYWxpemUsIGJvcnNoOjpCb3JzaERlc2VyaWFsaXplKSldYCxcbiAgICBgcHViIHN0cnVjdCAke25hbWV9IHtgLFxuICAgIC4uLm1lbWJlcnMsXG4gICAgYH1gXG4gIF0uam9pbihcIlxcblwiKVxufVxuXG4vKipcbiAqIEdlbmVyYXRlIHRoZSBpbXBsIGJsb2NrIHdpdGggZW5jb2RlKCkgYW5kIGRlY29kZSgpIGZvciBhIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIGdlbkltcGwobXNnOiBNZXNzYWdlRGVzY3JpcHRvcik6IHN0cmluZyB7XG4gIGNvbnN0IHN0cnVjdE5hbWUgPSBwcm90b05hbWVUb1J1c3QobXNnLmZ1bGxOYW1lKVxuXG4gIGxvZy5kZWJ1ZyhgR2VuZXJhdGluZyBpbXBsICR7c3RydWN0TmFtZX1gKVxuXG4gIGNvbnN0IGVuY29kZUJvZHkgPSBnZW5FbmNvZGVGdW5jdGlvbihtc2csIHN0cnVjdE5hbWUpXG4gIGNvbnN0IGRlY29kZUJvZHkgPSBnZW5EZWNvZGVGdW5jdGlvbihtc2csIHN0cnVjdE5hbWUpXG5cbiAgcmV0dXJuIFtcbiAgICBgaW1wbCAke3N0cnVjdE5hbWV9IHtgLFxuICAgIGBgLFxuICAgIGVuY29kZUJvZHksXG4gICAgYGAsXG4gICAgZGVjb2RlQm9keSxcbiAgICBgfWBcbiAgXS5qb2luKFwiXFxuXCIpXG59XG5cbi8qKlxuICogR2VuZXJhdGUgdGhlIGVuY29kZSBmdW5jdGlvbiBib2R5LlxuICovXG5mdW5jdGlvbiBnZW5FbmNvZGVGdW5jdGlvbihcbiAgbXNnOiBNZXNzYWdlRGVzY3JpcHRvcixcbiAgc3RydWN0TmFtZTogc3RyaW5nXG4pOiBzdHJpbmcge1xuICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXVxuICBsaW5lcy5wdXNoKGAgICAgcHViIGZuIGVuY29kZSgmc2VsZikgLT4gVmVjPHU4PiB7YClcbiAgbGluZXMucHVzaChgICAgICAgICBsZXQgbXV0IGJ1ZiA9IFZlYzo6bmV3KCk7YClcblxuICBmb3IgKGNvbnN0IGZpZWxkIG9mIG1zZy5maWVsZHMpIHtcbiAgICBpZiAoaXNNYXBFbnRyeUZpZWxkKGZpZWxkLCBtc2cpKSBjb250aW51ZVxuXG4gICAgY29uc3QgbWFwRW50cnkgPSByZXNvbHZlTWFwRW50cnkoZmllbGQsIG1zZylcbiAgICBjb25zdCBmaWVsZEluZm8gPSBtYXBFbnRyeSA/IHsgLi4uZmllbGQsIG1hcEVudHJ5IH0gOiBmaWVsZFxuXG4gICAgbGluZXMucHVzaChgYClcbiAgICBsaW5lcy5wdXNoKGAgICAgICAgIC8vIGZpZWxkICR7ZmllbGQubnVtYmVyfTogJHtmaWVsZC5uYW1lfWApXG4gICAgbGluZXMucHVzaChnZW5GaWVsZEVuY29kZShmaWVsZEluZm8pKVxuICB9XG5cbiAgbGluZXMucHVzaChgYClcbiAgbGluZXMucHVzaChgICAgICAgICBidWZgKVxuICBsaW5lcy5wdXNoKGAgICAgfWApXG4gIHJldHVybiBsaW5lcy5qb2luKFwiXFxuXCIpXG59XG5cbi8qKlxuICogR2VuZXJhdGUgdGhlIGRlY29kZSBmdW5jdGlvbiBib2R5IHdpdGggdGFnLWRpc3BhdGNoIGxvb3AuXG4gKi9cbmZ1bmN0aW9uIGdlbkRlY29kZUZ1bmN0aW9uKFxuICBtc2c6IE1lc3NhZ2VEZXNjcmlwdG9yLFxuICBzdHJ1Y3ROYW1lOiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdXG4gIGxpbmVzLnB1c2goXG4gICAgYCAgICBwdWIgZm4gZGVjb2RlKGRhdGE6ICZbdThdKSAtPiBSZXN1bHQ8U2VsZiwgRGVjb2RlRXJyb3I+IHtgXG4gIClcbiAgbGluZXMucHVzaChgICAgICAgICBsZXQgbXV0IG1zZyA9IFNlbGY6OmRlZmF1bHQoKTtgKVxuICBsaW5lcy5wdXNoKGAgICAgICAgIGxldCBtdXQgcG9zID0gMHVzaXplO2ApXG4gIGxpbmVzLnB1c2goYCAgICAgICAgbGV0IGVuZCA9IGRhdGEubGVuKCk7YClcbiAgbGluZXMucHVzaChgYClcbiAgbGluZXMucHVzaChgICAgICAgICB3aGlsZSBwb3MgPCBlbmQge2ApXG4gIGxpbmVzLnB1c2goYCAgICAgICAgICAgIGxldCAodGFnLCBuZXdfcG9zKSA9IGRlY29kZV9rZXkoZGF0YSwgcG9zKT87YClcbiAgbGluZXMucHVzaChgICAgICAgICAgICAgcG9zID0gbmV3X3BvcztgKVxuICBsaW5lcy5wdXNoKGBgKVxuICBsaW5lcy5wdXNoKGAgICAgICAgICAgICBtYXRjaCB0YWcge2ApXG5cbiAgZm9yIChjb25zdCBmaWVsZCBvZiBtc2cuZmllbGRzKSB7XG4gICAgaWYgKGlzTWFwRW50cnlGaWVsZChmaWVsZCwgbXNnKSkgY29udGludWVcblxuICAgIGNvbnN0IG1hcEVudHJ5ID0gcmVzb2x2ZU1hcEVudHJ5KGZpZWxkLCBtc2cpXG4gICAgY29uc3QgZmllbGRJbmZvID0gbWFwRW50cnkgPyB7IC4uLmZpZWxkLCBtYXBFbnRyeSB9IDogZmllbGRcblxuICAgIGxpbmVzLnB1c2goZ2VuRmllbGREZWNvZGUoZmllbGRJbmZvKSlcbiAgfVxuXG4gIGxpbmVzLnB1c2goYCAgICAgICAgICAgIF8gPT4ge2ApXG4gIGxpbmVzLnB1c2goYCAgICAgICAgICAgICAgICBwb3MgPSBza2lwX2ZpZWxkKGRhdGEsIHBvcywgdGFnICYgMHgwNyk/O2ApXG4gIGxpbmVzLnB1c2goYCAgICAgICAgICAgIH1gKVxuICBsaW5lcy5wdXNoKGAgICAgICAgICAgICB9YClcbiAgbGluZXMucHVzaChgICAgICAgICB9YClcbiAgbGluZXMucHVzaChgYClcbiAgbGluZXMucHVzaChgICAgICAgICBPayhtc2cpYClcbiAgbGluZXMucHVzaChgICAgIH1gKVxuICByZXR1cm4gbGluZXMuam9pbihcIlxcblwiKVxufVxuXG4vLyDilIDilIAgTWFwIGVudHJ5IHJlc29sdXRpb24g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmludGVyZmFjZSBNYXBFbnRyeUluZm8ge1xuICBrZXlUeXBlOiBudW1iZXJcbiAgdmFsdWVUeXBlOiBudW1iZXJcbiAgdmFsdWVUeXBlTmFtZT86IHN0cmluZ1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgZmllbGQgcmVmZXJlbmNlcyBhIG1hcCBlbnRyeSBtZXNzYWdlIHR5cGUuXG4gKi9cbmZ1bmN0aW9uIGlzTWFwRW50cnlGaWVsZChcbiAgZmllbGQ6IEZpZWxkSW5mbyxcbiAgcGFyZW50TXNnOiBNZXNzYWdlRGVzY3JpcHRvclxuKTogYm9vbGVhbiB7XG4gIGlmIChmaWVsZC50eXBlICE9PSAxMSB8fCBmaWVsZC5sYWJlbCAhPT0gMykgcmV0dXJuIGZhbHNlXG4gIGNvbnN0IG5lc3RlZCA9IHBhcmVudE1zZy5uZXN0ZWRNZXNzYWdlcy5maW5kKFxuICAgIG0gPT4gZmllbGQudHlwZU5hbWU/LmVuZHNXaXRoKGAuJHttLm5hbWV9YClcbiAgKVxuICByZXR1cm4gbmVzdGVkPy5pc01hcEVudHJ5ID8/IGZhbHNlXG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIG1hcCBlbnRyeSdzIGtleS92YWx1ZSB0eXBlcyBmcm9tIHRoZSBzeW50aGV0aWMgbmVzdGVkIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVNYXBFbnRyeShcbiAgZmllbGQ6IEZpZWxkSW5mbyxcbiAgcGFyZW50TXNnOiBNZXNzYWdlRGVzY3JpcHRvclxuKTogTWFwRW50cnlJbmZvIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGZpZWxkLnR5cGUgIT09IDExIHx8IGZpZWxkLmxhYmVsICE9PSAzKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IG5lc3RlZCA9IHBhcmVudE1zZy5uZXN0ZWRNZXNzYWdlcy5maW5kKFxuICAgIG0gPT4gZmllbGQudHlwZU5hbWU/LmVuZHNXaXRoKGAuJHttLm5hbWV9YClcbiAgKVxuICBpZiAoIW5lc3RlZD8uaXNNYXBFbnRyeSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gIGNvbnN0IGtleUZpZWxkID0gbmVzdGVkLmZpZWxkcy5maW5kKGYgPT4gZi5udW1iZXIgPT09IDEpXG4gIGNvbnN0IHZhbEZpZWxkID0gbmVzdGVkLmZpZWxkcy5maW5kKGYgPT4gZi5udW1iZXIgPT09IDIpXG4gIGlmICgha2V5RmllbGQgfHwgIXZhbEZpZWxkKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgcmV0dXJuIHtcbiAgICBrZXlUeXBlOiBrZXlGaWVsZC50eXBlLFxuICAgIHZhbHVlVHlwZTogdmFsRmllbGQudHlwZSxcbiAgICB2YWx1ZVR5cGVOYW1lOiB2YWxGaWVsZC50eXBlTmFtZVxuICB9XG59XG4iXX0=
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0b3IvbWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQStCQSx3Q0F3QkM7QUF2REQsK0NBQWtEO0FBQ2xELGlEQUF1QztBQUN2Qyx5Q0FLbUI7QUFtQm5COzs7O0dBSUc7QUFDSCxTQUFnQixjQUFjLENBQzVCLFFBQTZCLEVBQzdCLGFBQXFCO0lBRXJCLE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQTtJQUUxQixLQUFLLENBQUMsSUFBSSxDQUFDLCtDQUErQyxhQUFhLEVBQUUsQ0FBQyxDQUFBO0lBQzFFLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUM1QixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ2QsS0FBSyxDQUFDLElBQUksQ0FBQyw0REFBNEQsQ0FBQyxDQUFBO0lBQ3hFLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDZCxLQUFLLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLENBQUE7SUFDN0MsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUVkLDRDQUE0QztJQUM1QyxLQUFLLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzNCLElBQUksR0FBRyxDQUFDLFVBQVU7WUFBRSxTQUFRO1FBQzVCLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDMUIsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNkLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDeEIsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNoQixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0FB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QUMsSUFBSSxDQUMxQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQzVDLENBQUE7SUFDRCxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVU7UUFBRSxPQUFPLFNBQVMsQ0FBQTtJQUV6QyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDeEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ3hELElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTyxTQUFTLENBQUE7SUFFNUMsT0FBTztRQUNMLE9BQU8sRUFBRSxRQUFRLENBQUMsSUFBSTtRQUN0QixTQUFTLEVBQUUsUUFBUSxDQUFDLElBQUk7UUFDeEIsYUFBYSxFQUFFLFFBQVEsQ0FBQyxRQUFRO0tBQ2pDLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvdG9OYW1lVG9SdXN0IH0gZnJvbSBcIi4uL3V0aWwvbmFtZXMuanNcIlxuaW1wb3J0IHsgbG9nIH0gZnJvbSBcIi4uL3V0aWwvbG9nZ2VyLmpzXCJcbmltcG9ydCB7XG4gIEZpZWxkSW5mbyxcbiAgZ2VuU3RydWN0TWVtYmVyLFxuICBnZW5GaWVsZEVuY29kZSxcbiAgZ2VuRmllbGREZWNvZGVcbn0gZnJvbSBcIi4vZmllbGQuanNcIlxuaW1wb3J0IHsgUFJPVE9fVFlQRV9NQVAsIFdpcmVUeXBlIH0gZnJvbSBcIi4vdHlwZS1tYXAuanNcIlxuXG4vKipcbiAqIERlc2NyaXB0b3Igc3Vic2V0IGZvciBhIHByb3RvYnVmIG1lc3NhZ2UgbmVlZGVkIGJ5IHRoZSBjb2RlZ2VuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2VEZXNjcmlwdG9yIHtcbiAgLyoqIFNpbXBsZSBuYW1lIChlLmcuIFwiTXlNZXNzYWdlXCIpICovXG4gIG5hbWU6IHN0cmluZ1xuICAvKiogRnVsbHkgcXVhbGlmaWVkIG5hbWUgKGUuZy4gXCIubXlfcGFja2FnZS5NeU1lc3NhZ2VcIikgKi9cbiAgZnVsbE5hbWU6IHN0cmluZ1xuICAvKiogRmllbGQgZGVzY3JpcHRvcnMgKi9cbiAgZmllbGRzOiBGaWVsZEluZm9bXVxuICAvKiogTmVzdGVkIG1lc3NhZ2UgZGVzY3JpcHRvcnMgKGZvciBtYXAgZW50cnkgdHlwZXMsIGV0Yy4pICovXG4gIG5lc3RlZE1lc3NhZ2VzOiBNZXNzYWdlRGVzY3JpcHRvcltdXG4gIC8qKiBUcnVlIGlmIHRoaXMgbWVzc2FnZSBpcyBhIHN5bnRoZXRpYyBtYXAgZW50cnkgKi9cbiAgaXNNYXBFbnRyeTogYm9vbGVhblxufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgY29tcGxldGUgLnJzIGZpbGUgY29udGFpbmluZyBzdHJ1Y3QgZGVmaW5pdGlvbnMgYW5kXG4gKiBlbmNvZGUvZGVjb2RlIGltcGwgYmxvY2tzIGZvciBhbGwgbm9uLW1hcC1lbnRyeSBtZXNzYWdlc1xuICogaW4gYSBnaXZlbiBwcm90byBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVSc0ZpbGUoXG4gIG1lc3NhZ2VzOiBNZXNzYWdlRGVzY3JpcHRvcltdLFxuICBwcm90b0ZpbGVOYW1lOiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdXG5cbiAgbGluZXMucHVzaChgLy8gQXV0by1nZW5lcmF0ZWQgYnkgcHJvdG9jLWdlbi1zb2xhbmEgZnJvbSAke3Byb3RvRmlsZU5hbWV9YClcbiAgbGluZXMucHVzaChgLy8gRE8gTk9UIEVESVRgKVxuICBsaW5lcy5wdXNoKGBgKVxuICBsaW5lcy5wdXNoKGAjIVthbGxvdyh1bnVzZWRfaW1wb3J0cywgbm9uX2NhbWVsX2Nhc2VfdHlwZXMsIGRlYWRfY29kZSldYClcbiAgbGluZXMucHVzaChgYClcbiAgbGluZXMucHVzaChgdXNlIGNyYXRlOjpwcm90b2J1Zl9ydW50aW1lOjoqO2ApXG4gIGxpbmVzLnB1c2goYGApXG5cbiAgLy8gR2VuZXJhdGUgc3RydWN0cyB3aXRoIGVuY29kZS9kZWNvZGUgaW1wbHNcbiAgZm9yIChjb25zdCBtc2cgb2YgbWVzc2FnZXMpIHtcbiAgICBpZiAobXNnLmlzTWFwRW50cnkpIGNvbnRpbnVlXG4gICAgbGluZXMucHVzaChnZW5TdHJ1Y3QobXNnKSlcbiAgICBsaW5lcy5wdXNoKGBgKVxuICAgIGxpbmVzLnB1c2goZ2VuSW1wbChtc2cpKVxuICAgIGxpbmVzLnB1c2goYGApXG4gIH1cblxuICByZXR1cm4gbGluZXMuam9pbihcIlxcblwiKVxufVxuXG4vKipcbiAqIEdlbmVyYXRlIFJ1c3Qgc3RydWN0IGRlZmluaXRpb24gZm9yIGEgbWVzc2FnZS5cbiAqL1xuZnVuY3Rpb24gZ2VuU3RydWN0KG1zZzogTWVzc2FnZURlc2NyaXB0b3IpOiBzdHJpbmcge1xuICBjb25zdCBuYW1lID0gcHJvdG9OYW1lVG9SdXN0KG1zZy5mdWxsTmFtZSlcbiAgbG9nLmRlYnVnKGBHZW5lcmF0aW5nIHN0cnVjdCAke25hbWV9ICgke21zZy5maWVsZHMubGVuZ3RofSBmaWVsZHMpYClcblxuICBjb25zdCBtZW1iZXJzID0gbXNnLmZpZWxkc1xuICAgIC5maWx0ZXIoZiA9PiAhaXNNYXBFbnRyeUZpZWxkKGYsIG1zZykpXG4gICAgLm1hcChmID0+IHtcbiAgICAgIGNvbnN0IG1hcEVudHJ5ID0gcmVzb2x2ZU1hcEVudHJ5KGYsIG1zZylcbiAgICAgIGlmIChtYXBFbnRyeSkge1xuICAgICAgICByZXR1cm4gZ2VuU3RydWN0TWVtYmVyKHsgLi4uZiwgbWFwRW50cnkgfSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBnZW5TdHJ1Y3RNZW1iZXIoZilcbiAgICB9KVxuXG4gIHJldHVybiBbXG4gICAgYCNbZGVyaXZlKENsb25lLCBEZWJ1ZywgRGVmYXVsdCwgUGFydGlhbEVxKV1gLFxuICAgIGAjW2NmZ19hdHRyKGZlYXR1cmUgPSBcImJvcnNoXCIsIGRlcml2ZShib3JzaDo6Qm9yc2hTZXJpYWxpemUsIGJvcnNoOjpCb3JzaERlc2VyaWFsaXplKSldYCxcbiAgICBgcHViIHN0cnVjdCAke25hbWV9IHtgLFxuICAgIC4uLm1lbWJlcnMsXG4gICAgYH1gXG4gIF0uam9pbihcIlxcblwiKVxufVxuXG4vKipcbiAqIEdlbmVyYXRlIHRoZSBpbXBsIGJsb2NrIHdpdGggZW5jb2RlKCkgYW5kIGRlY29kZSgpIGZvciBhIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIGdlbkltcGwobXNnOiBNZXNzYWdlRGVzY3JpcHRvcik6IHN0cmluZyB7XG4gIGNvbnN0IHN0cnVjdE5hbWUgPSBwcm90b05hbWVUb1J1c3QobXNnLmZ1bGxOYW1lKVxuXG4gIGxvZy5kZWJ1ZyhgR2VuZXJhdGluZyBpbXBsICR7c3RydWN0TmFtZX1gKVxuXG4gIGNvbnN0IGVuY29kZUJvZHkgPSBnZW5FbmNvZGVGdW5jdGlvbihtc2csIHN0cnVjdE5hbWUpXG4gIGNvbnN0IGRlY29kZUJvZHkgPSBnZW5EZWNvZGVGdW5jdGlvbihtc2csIHN0cnVjdE5hbWUpXG5cbiAgcmV0dXJuIFtcbiAgICBgaW1wbCAke3N0cnVjdE5hbWV9IHtgLFxuICAgIGBgLFxuICAgIGVuY29kZUJvZHksXG4gICAgYGAsXG4gICAgZGVjb2RlQm9keSxcbiAgICBgfWBcbiAgXS5qb2luKFwiXFxuXCIpXG59XG5cbi8qKlxuICogR2VuZXJhdGUgdGhlIGVuY29kZSBmdW5jdGlvbiBib2R5LlxuICovXG5mdW5jdGlvbiBnZW5FbmNvZGVGdW5jdGlvbihcbiAgbXNnOiBNZXNzYWdlRGVzY3JpcHRvcixcbiAgc3RydWN0TmFtZTogc3RyaW5nXG4pOiBzdHJpbmcge1xuICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXVxuICBsaW5lcy5wdXNoKGAgICAgcHViIGZuIGVuY29kZSgmc2VsZikgLT4gVmVjPHU4PiB7YClcbiAgbGluZXMucHVzaChgICAgICAgICBsZXQgbXV0IGJ1ZiA9IFZlYzo6bmV3KCk7YClcblxuICBmb3IgKGNvbnN0IGZpZWxkIG9mIG1zZy5maWVsZHMpIHtcbiAgICBpZiAoaXNNYXBFbnRyeUZpZWxkKGZpZWxkLCBtc2cpKSBjb250aW51ZVxuXG4gICAgY29uc3QgbWFwRW50cnkgPSByZXNvbHZlTWFwRW50cnkoZmllbGQsIG1zZylcbiAgICBjb25zdCBmaWVsZEluZm8gPSBtYXBFbnRyeSA/IHsgLi4uZmllbGQsIG1hcEVudHJ5IH0gOiBmaWVsZFxuXG4gICAgbGluZXMucHVzaChgYClcbiAgICBsaW5lcy5wdXNoKGAgICAgICAgIC8vIGZpZWxkICR7ZmllbGQubnVtYmVyfTogJHtmaWVsZC5uYW1lfWApXG4gICAgbGluZXMucHVzaChnZW5GaWVsZEVuY29kZShmaWVsZEluZm8pKVxuICB9XG5cbiAgbGluZXMucHVzaChgYClcbiAgbGluZXMucHVzaChgICAgICAgICBidWZgKVxuICBsaW5lcy5wdXNoKGAgICAgfWApXG4gIHJldHVybiBsaW5lcy5qb2luKFwiXFxuXCIpXG59XG5cbi8qKlxuICogR2VuZXJhdGUgdGhlIGRlY29kZSBmdW5jdGlvbiBib2R5IHdpdGggdGFnLWRpc3BhdGNoIGxvb3AuXG4gKi9cbmZ1bmN0aW9uIGdlbkRlY29kZUZ1bmN0aW9uKFxuICBtc2c6IE1lc3NhZ2VEZXNjcmlwdG9yLFxuICBzdHJ1Y3ROYW1lOiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdXG4gIGxpbmVzLnB1c2goXG4gICAgYCAgICBwdWIgZm4gZGVjb2RlKGRhdGE6ICZbdThdKSAtPiBSZXN1bHQ8U2VsZiwgRGVjb2RlRXJyb3I+IHtgXG4gIClcbiAgbGluZXMucHVzaChgICAgICAgICBsZXQgbXV0IG1zZyA9IFNlbGY6OmRlZmF1bHQoKTtgKVxuICBsaW5lcy5wdXNoKGAgICAgICAgIGxldCBtdXQgcG9zID0gMHVzaXplO2ApXG4gIGxpbmVzLnB1c2goYCAgICAgICAgbGV0IGVuZCA9IGRhdGEubGVuKCk7YClcbiAgbGluZXMucHVzaChgYClcbiAgbGluZXMucHVzaChgICAgICAgICB3aGlsZSBwb3MgPCBlbmQge2ApXG4gIGxpbmVzLnB1c2goYCAgICAgICAgICAgIGxldCAodGFnLCBuZXdfcG9zKSA9IGRlY29kZV9rZXkoZGF0YSwgcG9zKT87YClcbiAgbGluZXMucHVzaChgICAgICAgICAgICAgcG9zID0gbmV3X3BvcztgKVxuICBsaW5lcy5wdXNoKGBgKVxuICBsaW5lcy5wdXNoKGAgICAgICAgICAgICBtYXRjaCB0YWcge2ApXG5cbiAgZm9yIChjb25zdCBmaWVsZCBvZiBtc2cuZmllbGRzKSB7XG4gICAgaWYgKGlzTWFwRW50cnlGaWVsZChmaWVsZCwgbXNnKSkgY29udGludWVcblxuICAgIGNvbnN0IG1hcEVudHJ5ID0gcmVzb2x2ZU1hcEVudHJ5KGZpZWxkLCBtc2cpXG4gICAgY29uc3QgZmllbGRJbmZvID0gbWFwRW50cnkgPyB7IC4uLmZpZWxkLCBtYXBFbnRyeSB9IDogZmllbGRcblxuICAgIGxpbmVzLnB1c2goZ2VuRmllbGREZWNvZGUoZmllbGRJbmZvKSlcbiAgfVxuXG4gIGxpbmVzLnB1c2goYCAgICAgICAgICAgIF8gPT4ge2ApXG4gIGxpbmVzLnB1c2goYCAgICAgICAgICAgICAgICBwb3MgPSBza2lwX2ZpZWxkKGRhdGEsIHBvcywgdGFnICYgMHgwNyk/O2ApXG4gIGxpbmVzLnB1c2goYCAgICAgICAgICAgIH1gKVxuICBsaW5lcy5wdXNoKGAgICAgICAgICAgICB9YClcbiAgbGluZXMucHVzaChgICAgICAgICB9YClcbiAgbGluZXMucHVzaChgYClcbiAgbGluZXMucHVzaChgICAgICAgICBPayhtc2cpYClcbiAgbGluZXMucHVzaChgICAgIH1gKVxuICByZXR1cm4gbGluZXMuam9pbihcIlxcblwiKVxufVxuXG4vLyDilIDilIAgTWFwIGVudHJ5IHJlc29sdXRpb24g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmludGVyZmFjZSBNYXBFbnRyeUluZm8ge1xuICBrZXlUeXBlOiBudW1iZXJcbiAgdmFsdWVUeXBlOiBudW1iZXJcbiAgdmFsdWVUeXBlTmFtZT86IHN0cmluZ1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgZmllbGQgcmVmZXJlbmNlcyBhIG1hcCBlbnRyeSBtZXNzYWdlIHR5cGUuXG4gKi9cbmZ1bmN0aW9uIGlzTWFwRW50cnlGaWVsZChcbiAgZmllbGQ6IEZpZWxkSW5mbyxcbiAgcGFyZW50TXNnOiBNZXNzYWdlRGVzY3JpcHRvclxuKTogYm9vbGVhbiB7XG4gIGlmIChmaWVsZC50eXBlICE9PSAxMSB8fCBmaWVsZC5sYWJlbCAhPT0gMykgcmV0dXJuIGZhbHNlXG4gIGNvbnN0IG5lc3RlZCA9IHBhcmVudE1zZy5uZXN0ZWRNZXNzYWdlcy5maW5kKFxuICAgIG0gPT4gZmllbGQudHlwZU5hbWU/LmVuZHNXaXRoKGAuJHttLm5hbWV9YClcbiAgKVxuICByZXR1cm4gbmVzdGVkPy5pc01hcEVudHJ5ID8/IGZhbHNlXG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIG1hcCBlbnRyeSdzIGtleS92YWx1ZSB0eXBlcyBmcm9tIHRoZSBzeW50aGV0aWMgbmVzdGVkIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVNYXBFbnRyeShcbiAgZmllbGQ6IEZpZWxkSW5mbyxcbiAgcGFyZW50TXNnOiBNZXNzYWdlRGVzY3JpcHRvclxuKTogTWFwRW50cnlJbmZvIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGZpZWxkLnR5cGUgIT09IDExIHx8IGZpZWxkLmxhYmVsICE9PSAzKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IG5lc3RlZCA9IHBhcmVudE1zZy5uZXN0ZWRNZXNzYWdlcy5maW5kKFxuICAgIG0gPT4gZmllbGQudHlwZU5hbWU/LmVuZHNXaXRoKGAuJHttLm5hbWV9YClcbiAgKVxuICBpZiAoIW5lc3RlZD8uaXNNYXBFbnRyeSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gIGNvbnN0IGtleUZpZWxkID0gbmVzdGVkLmZpZWxkcy5maW5kKGYgPT4gZi5udW1iZXIgPT09IDEpXG4gIGNvbnN0IHZhbEZpZWxkID0gbmVzdGVkLmZpZWxkcy5maW5kKGYgPT4gZi5udW1iZXIgPT09IDIpXG4gIGlmICgha2V5RmllbGQgfHwgIXZhbEZpZWxkKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgcmV0dXJuIHtcbiAgICBrZXlUeXBlOiBrZXlGaWVsZC50eXBlLFxuICAgIHZhbHVlVHlwZTogdmFsRmllbGQudHlwZSxcbiAgICB2YWx1ZVR5cGVOYW1lOiB2YWxGaWVsZC50eXBlTmFtZVxuICB9XG59XG4iXX0=
|
package/lib/generator/runtime.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generateRuntime = generateRuntime;
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
3
9
|
/**
|
|
4
10
|
* Returns the complete protobuf_runtime.rs source.
|
|
5
11
|
*
|
|
@@ -7,8 +13,8 @@ import Path from "node:path";
|
|
|
7
13
|
* encode/decode primitives optimized for Solana's compute budget.
|
|
8
14
|
* Emitted as a CodeGeneratorResponse file alongside the per-message codecs.
|
|
9
15
|
*/
|
|
10
|
-
|
|
16
|
+
function generateRuntime() {
|
|
11
17
|
return RUNTIME_RS;
|
|
12
18
|
}
|
|
13
|
-
const RUNTIME_RS_PATH = [
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
const RUNTIME_RS_PATH = [node_path_1.default.join(__dirname, "../../rs/protobuf_runtime.rs"), node_path_1.default.join(__dirname, "../rs/protobuf_runtime.rs")].find(p => node_fs_1.default.existsSync(p)), RUNTIME_RS = node_fs_1.default.readFileSync(RUNTIME_RS_PATH, "utf-8");
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0b3IvcnVudGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVVBLDBDQUVDO0FBWkQsc0RBQXdCO0FBQ3hCLDBEQUE0QjtBQUU1Qjs7Ozs7O0dBTUc7QUFDSCxTQUFnQixlQUFlO0lBQzdCLE9BQU8sVUFBVSxDQUFBO0FBQ25CLENBQUM7QUFFRCxNQUNFLGVBQWUsR0FBRyxDQUFDLG1CQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSw4QkFBOEIsQ0FBQyxFQUFFLG1CQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsaUJBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDdkosVUFBVSxHQUFHLGlCQUFFLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBGcyBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgUGF0aCBmcm9tIFwibm9kZTpwYXRoXCJcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjb21wbGV0ZSBwcm90b2J1Zl9ydW50aW1lLnJzIHNvdXJjZS5cbiAqXG4gKiBUaGlzIGlzIGEgUnVzdCBsaWJyYXJ5IHdpdGggZWZmaWNpZW50IHByb3RvYnVmMyB3aXJlIGZvcm1hdFxuICogZW5jb2RlL2RlY29kZSBwcmltaXRpdmVzIG9wdGltaXplZCBmb3IgU29sYW5hJ3MgY29tcHV0ZSBidWRnZXQuXG4gKiBFbWl0dGVkIGFzIGEgQ29kZUdlbmVyYXRvclJlc3BvbnNlIGZpbGUgYWxvbmdzaWRlIHRoZSBwZXItbWVzc2FnZSBjb2RlY3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVJ1bnRpbWUoKTogc3RyaW5nIHtcbiAgcmV0dXJuIFJVTlRJTUVfUlNcbn1cblxuY29uc3RcbiAgUlVOVElNRV9SU19QQVRIID0gW1BhdGguam9pbihfX2Rpcm5hbWUsIFwiLi4vLi4vcnMvcHJvdG9idWZfcnVudGltZS5yc1wiKSwgUGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi9ycy9wcm90b2J1Zl9ydW50aW1lLnJzXCIpXS5maW5kKHAgPT4gRnMuZXhpc3RzU3luYyhwKSksXG4gIFJVTlRJTUVfUlMgPSBGcy5yZWFkRmlsZVN5bmMoUlVOVElNRV9SU19QQVRILCBcInV0Zi04XCIpXG4iXX0=
|
|
@@ -1,13 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PROTO_TYPE_MAP = exports.WireType = void 0;
|
|
4
|
+
exports.resolveRustType = resolveRustType;
|
|
5
|
+
exports.fieldTag = fieldTag;
|
|
6
|
+
exports.needsVarintCast = needsVarintCast;
|
|
7
|
+
exports.varintDecodeCast = varintDecodeCast;
|
|
1
8
|
/**
|
|
2
9
|
* Protobuf wire types (proto3 encoding).
|
|
3
10
|
*/
|
|
4
|
-
|
|
11
|
+
var WireType;
|
|
5
12
|
(function (WireType) {
|
|
6
13
|
WireType[WireType["Varint"] = 0] = "Varint";
|
|
7
14
|
WireType[WireType["Fixed64"] = 1] = "Fixed64";
|
|
8
15
|
WireType[WireType["LengthDelimited"] = 2] = "LengthDelimited";
|
|
9
16
|
WireType[WireType["Fixed32"] = 5] = "Fixed32";
|
|
10
|
-
})(WireType || (WireType = {}));
|
|
17
|
+
})(WireType || (exports.WireType = WireType = {}));
|
|
11
18
|
/**
|
|
12
19
|
* Map of protobuf FieldDescriptorProto.Type enum values to Rust metadata.
|
|
13
20
|
*
|
|
@@ -16,7 +23,7 @@ export var WireType;
|
|
|
16
23
|
* 7=fixed32, 8=bool, 9=string, 10=group, 11=message, 12=bytes,
|
|
17
24
|
* 13=uint32, 14=enum, 15=sfixed32, 16=sfixed64, 17=sint32, 18=sint64
|
|
18
25
|
*/
|
|
19
|
-
|
|
26
|
+
exports.PROTO_TYPE_MAP = {
|
|
20
27
|
// TYPE_DOUBLE = 1
|
|
21
28
|
1: {
|
|
22
29
|
rustType: "f64",
|
|
@@ -175,13 +182,13 @@ export const PROTO_TYPE_MAP = {
|
|
|
175
182
|
* Resolve the Rust type for a field descriptor.
|
|
176
183
|
* For TYPE_MESSAGE, resolves from the nested message name.
|
|
177
184
|
*/
|
|
178
|
-
|
|
185
|
+
function resolveRustType(fieldType, typeName) {
|
|
179
186
|
if (fieldType === 11 && typeName) {
|
|
180
187
|
// Nested message → struct name (strip leading dot and package prefix)
|
|
181
188
|
const parts = typeName.replace(/^\./, "").split(".");
|
|
182
189
|
return parts[parts.length - 1];
|
|
183
190
|
}
|
|
184
|
-
const info = PROTO_TYPE_MAP[fieldType];
|
|
191
|
+
const info = exports.PROTO_TYPE_MAP[fieldType];
|
|
185
192
|
if (!info) {
|
|
186
193
|
throw new Error(`Unsupported protobuf field type: ${fieldType}`);
|
|
187
194
|
}
|
|
@@ -190,15 +197,15 @@ export function resolveRustType(fieldType, typeName) {
|
|
|
190
197
|
/**
|
|
191
198
|
* Build a protobuf field tag (field_number << 3 | wire_type).
|
|
192
199
|
*/
|
|
193
|
-
|
|
200
|
+
function fieldTag(fieldNumber, wireType) {
|
|
194
201
|
return (fieldNumber << 3) | wireType;
|
|
195
202
|
}
|
|
196
203
|
/**
|
|
197
204
|
* Check if a Rust type needs a cast for varint encode (non-u64 types).
|
|
198
205
|
* Varint encode always takes u64, so smaller types need `as u64`.
|
|
199
206
|
*/
|
|
200
|
-
|
|
201
|
-
const info = PROTO_TYPE_MAP[fieldType];
|
|
207
|
+
function needsVarintCast(fieldType) {
|
|
208
|
+
const info = exports.PROTO_TYPE_MAP[fieldType];
|
|
202
209
|
if (!info)
|
|
203
210
|
return "";
|
|
204
211
|
if (info.encodeFunc === "encode_varint" && info.rustType !== "u64") {
|
|
@@ -209,8 +216,8 @@ export function needsVarintCast(fieldType) {
|
|
|
209
216
|
/**
|
|
210
217
|
* Get the cast needed when decoding a varint into a non-u64 type.
|
|
211
218
|
*/
|
|
212
|
-
|
|
213
|
-
const info = PROTO_TYPE_MAP[fieldType];
|
|
219
|
+
function varintDecodeCast(fieldType) {
|
|
220
|
+
const info = exports.PROTO_TYPE_MAP[fieldType];
|
|
214
221
|
if (!info)
|
|
215
222
|
return "";
|
|
216
223
|
if (info.decodeFunc === "decode_varint" && info.rustType !== "u64") {
|
|
@@ -218,4 +225,4 @@ export function varintDecodeCast(fieldType) {
|
|
|
218
225
|
}
|
|
219
226
|
return "";
|
|
220
227
|
}
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1tYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdG9yL3R5cGUtbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQWtCLFFBS2pCO0FBTEQsV0FBa0IsUUFBUTtJQUN4QiwyQ0FBVSxDQUFBO0lBQ1YsNkNBQVcsQ0FBQTtJQUNYLDZEQUFtQixDQUFBO0lBQ25CLDZDQUFXLENBQUE7QUFDYixDQUFDLEVBTGlCLFFBQVEsS0FBUixRQUFRLFFBS3pCO0FBb0JEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQWlDO0lBQzFELGtCQUFrQjtJQUNsQixDQUFDLEVBQUU7UUFDRCxRQUFRLEVBQUUsS0FBSztRQUNmLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTztRQUMxQixVQUFVLEVBQUUsZ0JBQWdCO1FBQzVCLFVBQVUsRUFBRSxnQkFBZ0I7UUFDNUIsWUFBWSxFQUFFLEtBQUs7UUFDbkIsU0FBUyxFQUFFLEtBQUs7S0FDakI7SUFDRCxpQkFBaUI7SUFDakIsQ0FBQyxFQUFFO1FBQ0QsUUFBUSxFQUFFLEtBQUs7UUFDZixRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU87UUFDMUIsVUFBVSxFQUFFLGdCQUFnQjtRQUM1QixVQUFVLEVBQUUsZ0JBQWdCO1FBQzVCLFlBQVksRUFBRSxLQUFLO1FBQ25CLFNBQVMsRUFBRSxLQUFLO0tBQ2pCO0lBQ0QsaUJBQWlCO0lBQ2pCLENBQUMsRUFBRTtRQUNELFFBQVEsRUFBRSxLQUFLO1FBQ2YsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNO1FBQ3pCLFVBQVUsRUFBRSxlQUFlO1FBQzNCLFVBQVUsRUFBRSxlQUFlO1FBQzNCLFlBQVksRUFBRSxHQUFHO1FBQ2pCLFNBQVMsRUFBRSxLQUFLO0tBQ2pCO0lBQ0Qsa0JBQWtCO0lBQ2xCLENBQUMsRUFBRTtRQUNELFFBQVEsRUFBRSxLQUFLO1FBQ2YsUUFBUSxFQUFF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SSxFQUFFLENBQUM7UUFDVixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQ2xFLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7QUFDdEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxXQUFtQixFQUFFLFFBQWtCO0lBQzlELE9BQU8sQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFBO0FBQ3RDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLFNBQWlCO0lBQy9DLE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUN0QyxJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU8sRUFBRSxDQUFBO0lBQ3BCLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxlQUFlLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUNuRSxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0lBQ0QsT0FBTyxFQUFFLENBQUE7QUFDWCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsU0FBaUI7SUFDaEQsTUFBTSxJQUFJLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3RDLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxFQUFFLENBQUE7SUFDcEIsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLGVBQWUsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQ25FLE9BQU8sT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDL0IsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFBO0FBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHJvdG9idWYgd2lyZSB0eXBlcyAocHJvdG8zIGVuY29kaW5nKS5cbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gV2lyZVR5cGUge1xuICBWYXJpbnQgPSAwLFxuICBGaXhlZDY0ID0gMSxcbiAgTGVuZ3RoRGVsaW1pdGVkID0gMixcbiAgRml4ZWQzMiA9IDVcbn1cblxuLyoqXG4gKiBNYXBwaW5nIGVudHJ5OiBwcm90b2J1ZiBmaWVsZCB0eXBlIOKGkiBSdXN0IHR5cGUgKyB3aXJlIG1ldGFkYXRhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1c3RUeXBlSW5mbyB7XG4gIC8qKiBSdXN0IHR5cGUgc3RyaW5nIChlLmcuIFwidTY0XCIsIFwiVmVjPHU4PlwiLCBcIlN0cmluZ1wiKSAqL1xuICBydXN0VHlwZTogc3RyaW5nXG4gIC8qKiBXaXJlIHR5cGUgZm9yIGVuY29kZS9kZWNvZGUgZGlzcGF0Y2ggKi9cbiAgd2lyZVR5cGU6IFdpcmVUeXBlXG4gIC8qKiBSdW50aW1lIGVuY29kZSBmdW5jdGlvbiBuYW1lICovXG4gIGVuY29kZUZ1bmM6IHN0cmluZ1xuICAvKiogUnVudGltZSBkZWNvZGUgZnVuY3Rpb24gbmFtZSAqL1xuICBkZWNvZGVGdW5jOiBzdHJpbmdcbiAgLyoqIERlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBpbiBSdXN0ICovXG4gIGRlZmF1bHRWYWx1ZTogc3RyaW5nXG4gIC8qKiBXaGV0aGVyIHRoZSBlbmNvZGUgZnVuYyB0YWtlcyBhIHJlZmVyZW5jZSAoJnNlbGYuZmllbGQpICovXG4gIGVuY29kZVJlZjogYm9vbGVhblxufVxuXG4vKipcbiAqIE1hcCBvZiBwcm90b2J1ZiBGaWVsZERlc2NyaXB0b3JQcm90by5UeXBlIGVudW0gdmFsdWVzIHRvIFJ1c3QgbWV0YWRhdGEuXG4gKlxuICogRW51bSB2YWx1ZXMgZnJvbSBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bzpcbiAqICAgMT1kb3VibGUsIDI9ZmxvYXQsIDM9aW50NjQsIDQ9dWludDY0LCA1PWludDMyLCA2PWZpeGVkNjQsXG4gKiAgIDc9Zml4ZWQzMiwgOD1ib29sLCA5PXN0cmluZywgMTA9Z3JvdXAsIDExPW1lc3NhZ2UsIDEyPWJ5dGVzLFxuICogICAxMz11aW50MzIsIDE0PWVudW0sIDE1PXNmaXhlZDMyLCAxNj1zZml4ZWQ2NCwgMTc9c2ludDMyLCAxOD1zaW50NjRcbiAqL1xuZXhwb3J0IGNvbnN0IFBST1RPX1RZUEVfTUFQOiBSZWNvcmQ8bnVtYmVyLCBSdXN0VHlwZUluZm8+ID0ge1xuICAvLyBUWVBFX0RPVUJMRSA9IDFcbiAgMToge1xuICAgIHJ1c3RUeXBlOiBcImY2NFwiLFxuICAgIHdpcmVUeXBlOiBXaXJlVHlwZS5GaXhlZDY0LFxuICAgIGVuY29kZUZ1bmM6IFwiZW5jb2RlX2ZpeGVkNjRcIixcbiAgICBkZWNvZGVGdW5jOiBcImRlY29kZV9maXhlZDY0XCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcIjAuMFwiLFxuICAgIGVuY29kZVJlZjogZmFsc2VcbiAgfSxcbiAgLy8gVFlQRV9GTE9BVCA9IDJcbiAgMjoge1xuICAgIHJ1c3RUeXBlOiBcImYzMlwiLFxuICAgIHdpcmVUeXBlOiBXaXJlVHlwZS5GaXhlZDMyLFxuICAgIGVuY29kZUZ1bmM6IFwiZW5jb2RlX2ZpeGVkMzJcIixcbiAgICBkZWNvZGVGdW5jOiBcImRlY29kZV9maXhlZDMyXCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcIjAuMFwiLFxuICAgIGVuY29kZVJlZjogZmFsc2VcbiAgfSxcbiAgLy8gVFlQRV9JTlQ2NCA9IDNcbiAgMzoge1xuICAgIHJ1c3RUeXBlOiBcImk2NFwiLFxuICAgIHdpcmVUeXBlOiBXaXJlVHlwZS5WYXJpbnQsXG4gICAgZW5jb2RlRnVuYzogXCJlbmNvZGVfdmFyaW50XCIsXG4gICAgZGVjb2RlRnVuYzogXCJkZWNvZGVfdmFyaW50XCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcIjBcIixcbiAgICBlbmNvZGVSZWY6IGZhbHNlXG4gIH0sXG4gIC8vIFRZUEVfVUlOVDY0ID0gNFxuICA0OiB7XG4gICAgcnVzdFR5cGU6IFwidTY0XCIsXG4gICAgd2lyZVR5cGU6IFdpcmVUeXBlLlZhcmludCxcbiAgICBlbmNvZGVGdW5jOiBcImVuY29kZV92YXJpbnRcIixcbiAgICBkZWNvZGVGdW5jOiBcImRlY29kZV92YXJpbnRcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiMFwiLFxuICAgIGVuY29kZVJlZjogZmFsc2VcbiAgfSxcbiAgLy8gVFlQRV9JTlQzMiA9IDVcbiAgNToge1xuICAgIHJ1c3RUeXBlOiBcImkzMlwiLFxuICAgIHdpcmVUeXBlOiBXaXJlVHlwZS5WYXJpbnQsXG4gICAgZW5jb2RlRnVuYzogXCJlbmNvZGVfdmFyaW50XCIsXG4gICAgZGVjb2RlRnVuYzogXCJkZWNvZGVfdmFyaW50XCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcIjBcIixcbiAgICBlbmNvZGVSZWY6IGZhbHNlXG4gIH0sXG4gIC8vIFRZUEVfRklYRUQ2NCA9IDZcbiAgNjoge1xuICAgIHJ1c3RUeXBlOiBcInU2NFwiLFxuICAgIHdpcmVUeXBlOiBXaXJlVHlwZS5GaXhlZDY0LFxuICAgIGVuY29kZUZ1bmM6IFwiZW5jb2RlX2ZpeGVkNjRcIixcbiAgICBkZWNvZGVGdW5jOiBcImRlY29kZV9maXhlZDY0XCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcIjBcIixcbiAgICBlbmNvZGVSZWY6IGZhbHNlXG4gIH0sXG4gIC8vIFRZUEVfRklYRUQzMiA9IDdcbiAgNzoge1xuICAgIHJ1c3RUeXBlOiBcInUzMlwiLFxuICAgIHdpcmVUeXBlOiBXaXJlVHlwZS5GaXhlZDMyLFxuICAgIGVuY29kZUZ1bmM6IFwiZW5jb2RlX2ZpeGVkMzJcIixcbiAgICBkZWNvZGVGdW5jOiBcImRlY29kZV9maXhlZDMyXCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcIjBcIixcbiAgICBlbmNvZGVSZWY6IGZhbHNlXG4gIH0sXG4gIC8vIFRZUEVfQk9PTCA9IDhcbiAgODoge1xuICAgIHJ1c3RUeXBlOiBcImJvb2xcIixcbiAgICB3aXJlVHlwZTogV2lyZVR5cGUuVmFyaW50LFxuICAgIGVuY29kZUZ1bmM6IFwiZW5jb2RlX2Jvb2xcIixcbiAgICBkZWNvZGVGdW5jOiBcImRlY29kZV9ib29sXCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcImZhbHNlXCIsXG4gICAgZW5jb2RlUmVmOiBmYWxzZVxuICB9LFxuICAvLyBUWVBFX1NUUklORyA9IDlcbiAgOToge1xuICAgIHJ1c3RUeXBlOiBcIlN0cmluZ1wiLFxuICAgIHdpcmVUeXBlOiBXaXJlVHlwZS5MZW5ndGhEZWxpbWl0ZWQsXG4gICAgZW5jb2RlRnVuYzogXCJlbmNvZGVfc3RyaW5nXCIsXG4gICAgZGVjb2RlRnVuYzogXCJkZWNvZGVfc3RyaW5nXCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcIlN0cmluZzo6bmV3KClcIixcbiAgICBlbmNvZGVSZWY6IHRydWVcbiAgfSxcbiAgLy8gVFlQRV9NRVNTQUdFID0gMTFcbiAgMTE6IHtcbiAgICBydXN0VHlwZTogXCJcIiwgLy8gcmVzb2x2ZWQgcGVyLWZpZWxkIGZyb20gdHlwZU5hbWVcbiAgICB3aXJlVHlwZTogV2lyZVR5cGUuTGVuZ3RoRGVsaW1pdGVkLFxuICAgIGVuY29kZUZ1bmM6IFwiXCIsIC8vIGRlbGVnYXRlZCB0byBuZXN0ZWQgY29kZWNcbiAgICBkZWNvZGVGdW5jOiBcIlwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCJcIiwgLy8gRGVmYXVsdDo6ZGVmYXVsdCgpXG4gICAgZW5jb2RlUmVmOiB0cnVlXG4gIH0sXG4gIC8vIFRZUEVfQllURVMgPSAxMlxuICAxMjoge1xuICAgIHJ1c3RUeXBlOiBcIlZlYzx1OD5cIixcbiAgICB3aXJlVHlwZTogV2lyZVR5cGUuTGVuZ3RoRGVsaW1pdGVkLFxuICAgIGVuY29kZUZ1bmM6IFwiZW5jb2RlX2J5dGVzXCIsXG4gICAgZGVjb2RlRnVuYzogXCJkZWNvZGVfYnl0ZXNcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiVmVjOjpuZXcoKVwiLFxuICAgIGVuY29kZVJlZjogdHJ1ZVxuICB9LFxuICAvLyBUWVBFX1VJTlQzMiA9IDEzXG4gIDEzOiB7XG4gICAgcnVzdFR5cGU6IFwidTMyXCIsXG4gICAgd2lyZVR5cGU6IFdpcmVUeXBlLlZhcmludCxcbiAgICBlbmNvZGVGdW5jOiBcImVuY29kZV92YXJpbnRcIixcbiAgICBkZWNvZGVGdW5jOiBcImRlY29kZV92YXJpbnRcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiMFwiLFxuICAgIGVuY29kZVJlZjogZmFsc2VcbiAgfSxcbiAgLy8gVFlQRV9FTlVNID0gMTRcbiAgMTQ6IHtcbiAgICBydXN0VHlwZTogXCJpMzJcIixcbiAgICB3aXJlVHlwZTogV2lyZVR5cGUuVmFyaW50LFxuICAgIGVuY29kZUZ1bmM6IFwiZW5jb2RlX3ZhcmludFwiLFxuICAgIGRlY29kZUZ1bmM6IFwiZGVjb2RlX3ZhcmludFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIwXCIsXG4gICAgZW5jb2RlUmVmOiBmYWxzZVxuICB9LFxuICAvLyBUWVBFX1NGSVhFRDMyID0gMTVcbiAgMTU6IHtcbiAgICBydXN0VHlwZTogXCJpMzJcIixcbiAgICB3aXJlVHlwZTogV2lyZVR5cGUuRml4ZWQzMixcbiAgICBlbmNvZGVGdW5jOiBcImVuY29kZV9zZml4ZWQzMlwiLFxuICAgIGRlY29kZUZ1bmM6IFwiZGVjb2RlX3NmaXhlZDMyXCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcIjBcIixcbiAgICBlbmNvZGVSZWY6IGZhbHNlXG4gIH0sXG4gIC8vIFRZUEVfU0ZJWEVENjQgPSAxNlxuICAxNjoge1xuICAgIHJ1c3RUeXBlOiBcImk2NFwiLFxuICAgIHdpcmVUeXBlOiBXaXJlVHlwZS5GaXhlZDY0LFxuICAgIGVuY29kZUZ1bmM6IFwiZW5jb2RlX3NmaXhlZDY0XCIsXG4gICAgZGVjb2RlRnVuYzogXCJkZWNvZGVfc2ZpeGVkNjRcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiMFwiLFxuICAgIGVuY29kZVJlZjogZmFsc2VcbiAgfSxcbiAgLy8gVFlQRV9TSU5UMzIgPSAxN1xuICAxNzoge1xuICAgIHJ1c3RUeXBlOiBcImkzMlwiLFxuICAgIHdpcmVUeXBlOiBXaXJlVHlwZS5WYXJpbnQsXG4gICAgZW5jb2RlRnVuYzogXCJlbmNvZGVfemlnemFnMzJcIixcbiAgICBkZWNvZGVGdW5jOiBcImRlY29kZV96aWd6YWczMlwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIwXCIsXG4gICAgZW5jb2RlUmVmOiBmYWxzZVxuICB9LFxuICAvLyBUWVBFX1NJTlQ2NCA9IDE4XG4gIDE4OiB7XG4gICAgcnVzdFR5cGU6IFwiaTY0XCIsXG4gICAgd2lyZVR5cGU6IFdpcmVUeXBlLlZhcmludCxcbiAgICBlbmNvZGVGdW5jOiBcImVuY29kZV96aWd6YWc2NFwiLFxuICAgIGRlY29kZUZ1bmM6IFwiZGVjb2RlX3ppZ3phZzY0XCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcIjBcIixcbiAgICBlbmNvZGVSZWY6IGZhbHNlXG4gIH1cbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBSdXN0IHR5cGUgZm9yIGEgZmllbGQgZGVzY3JpcHRvci5cbiAqIEZvciBUWVBFX01FU1NBR0UsIHJlc29sdmVzIGZyb20gdGhlIG5lc3RlZCBtZXNzYWdlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUnVzdFR5cGUoXG4gIGZpZWxkVHlwZTogbnVtYmVyLFxuICB0eXBlTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBzdHJpbmcge1xuICBpZiAoZmllbGRUeXBlID09PSAxMSAmJiB0eXBlTmFtZSkge1xuICAgIC8vIE5lc3RlZCBtZXNzYWdlIOKGkiBzdHJ1Y3QgbmFtZSAoc3RyaXAgbGVhZGluZyBkb3QgYW5kIHBhY2thZ2UgcHJlZml4KVxuICAgIGNvbnN0IHBhcnRzID0gdHlwZU5hbWUucmVwbGFjZSgvXlxcLi8sIFwiXCIpLnNwbGl0KFwiLlwiKVxuICAgIHJldHVybiBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXVxuICB9XG4gIGNvbnN0IGluZm8gPSBQUk9UT19UWVBFX01BUFtmaWVsZFR5cGVdXG4gIGlmICghaW5mbykge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgcHJvdG9idWYgZmllbGQgdHlwZTogJHtmaWVsZFR5cGV9YClcbiAgfVxuICByZXR1cm4gaW5mby5ydXN0VHlwZVxufVxuXG4vKipcbiAqIEJ1aWxkIGEgcHJvdG9idWYgZmllbGQgdGFnIChmaWVsZF9udW1iZXIgPDwgMyB8IHdpcmVfdHlwZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWVsZFRhZyhmaWVsZE51bWJlcjogbnVtYmVyLCB3aXJlVHlwZTogV2lyZVR5cGUpOiBudW1iZXIge1xuICByZXR1cm4gKGZpZWxkTnVtYmVyIDw8IDMpIHwgd2lyZVR5cGVcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIFJ1c3QgdHlwZSBuZWVkcyBhIGNhc3QgZm9yIHZhcmludCBlbmNvZGUgKG5vbi11NjQgdHlwZXMpLlxuICogVmFyaW50IGVuY29kZSBhbHdheXMgdGFrZXMgdTY0LCBzbyBzbWFsbGVyIHR5cGVzIG5lZWQgYGFzIHU2NGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuZWVkc1ZhcmludENhc3QoZmllbGRUeXBlOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBpbmZvID0gUFJPVE9fVFlQRV9NQVBbZmllbGRUeXBlXVxuICBpZiAoIWluZm8pIHJldHVybiBcIlwiXG4gIGlmIChpbmZvLmVuY29kZUZ1bmMgPT09IFwiZW5jb2RlX3ZhcmludFwiICYmIGluZm8ucnVzdFR5cGUgIT09IFwidTY0XCIpIHtcbiAgICByZXR1cm4gXCIgYXMgdTY0XCJcbiAgfVxuICByZXR1cm4gXCJcIlxufVxuXG4vKipcbiAqIEdldCB0aGUgY2FzdCBuZWVkZWQgd2hlbiBkZWNvZGluZyBhIHZhcmludCBpbnRvIGEgbm9uLXU2NCB0eXBlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFyaW50RGVjb2RlQ2FzdChmaWVsZFR5cGU6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGluZm8gPSBQUk9UT19UWVBFX01BUFtmaWVsZFR5cGVdXG4gIGlmICghaW5mbykgcmV0dXJuIFwiXCJcbiAgaWYgKGluZm8uZGVjb2RlRnVuYyA9PT0gXCJkZWNvZGVfdmFyaW50XCIgJiYgaW5mby5ydXN0VHlwZSAhPT0gXCJ1NjRcIikge1xuICAgIHJldHVybiBgIGFzICR7aW5mby5ydXN0VHlwZX1gXG4gIH1cbiAgcmV0dXJuIFwiXCJcbn1cbiJdfQ==
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1tYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdG9yL3R5cGUtbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW9NQSwwQ0FjQztBQUtELDRCQUVDO0FBTUQsMENBT0M7QUFLRCw0Q0FPQztBQWxQRDs7R0FFRztBQUNILElBQWtCLFFBS2pCO0FBTEQsV0FBa0IsUUFBUTtJQUN4QiwyQ0FBVSxDQUFBO0lBQ1YsNkNBQVcsQ0FBQTtJQUNYLDZEQUFtQixDQUFBO0lBQ25CLDZDQUFXLENBQUE7QUFDYixDQUFDLEVBTGlCLFFBQVEsd0JBQVIsUUFBUSxRQUt6QjtBQW9CRDs7Ozs7OztHQU9HO0FBQ1UsUUFBQSxjQUFjLEdBQWlDO0lBQzFELGtCQUFrQjtJQUNsQixDQUFDLEVBQUU7UUFDRCxRQUFRLEVBQUUsS0FBSztRQUNmLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTztRQUMxQixVQUFVLEVBQUUsZ0JBQWdCO1FBQzVCLFVBQVUsRUFBRSxnQkFBZ0I7UUFDNUIsWUFBWSxFQUFFLEtBQUs7UUFDbkIsU0FBUyxFQUFFLEtBQUs7S0FDakI7SUFDRCxpQkFBaUI7SUFDakIsQ0FBQyxFQUFFO1FBQ0QsUUFBUSxFQUFFLEtBQUs7UUFDZixRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU87UUFDMUIsVUFBVSxFQUFFLGdCQUFnQjtRQUM1QixVQUFVLEVBQUUsZ0JBQWdCO1FBQzVCLFlBQVksRUFBRSxLQUFLO1FBQ25CLFNBQVMsRUFBRSxLQUFLO0tBQ2pCO0lBQ0QsaUJBQWlCO0lBQ2pCLENBQUMsRUFBRTtRQUNELFFBQVEsRUFBRSxLQUFLO1FBQ2YsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNO1FBQ3pCLFVBQVUsRUFBRSxlQUFlO1FBQzNCLFVBQVUsRUFBRSxlQUFlO1FBQzNCLFlBQVksRUFBRSxHQUFHO1FBQ2pCLFNBQVMsRUFBRSxLQUFLO0tBQ2pCO0lBQ0Qsa0JBQWtCO0lBQ2xCLENBQUMsRUFBRTtRQUNE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QUMsQ0FBQTtJQUN0QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQ2xFLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7QUFDdEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLFdBQW1CLEVBQUUsUUFBa0I7SUFDOUQsT0FBTyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUE7QUFDdEMsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxTQUFpQjtJQUMvQyxNQUFNLElBQUksR0FBRyxzQkFBYyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3RDLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxFQUFFLENBQUE7SUFDcEIsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLGVBQWUsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQ25FLE9BQU8sU0FBUyxDQUFBO0lBQ2xCLENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQTtBQUNYLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLFNBQWlCO0lBQ2hELE1BQU0sSUFBSSxHQUFHLHNCQUFjLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDdEMsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLEVBQUUsQ0FBQTtJQUNwQixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssZUFBZSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDbkUsT0FBTyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUMvQixDQUFDO0lBQ0QsT0FBTyxFQUFFLENBQUE7QUFDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQcm90b2J1ZiB3aXJlIHR5cGVzIChwcm90bzMgZW5jb2RpbmcpLlxuICovXG5leHBvcnQgY29uc3QgZW51bSBXaXJlVHlwZSB7XG4gIFZhcmludCA9IDAsXG4gIEZpeGVkNjQgPSAxLFxuICBMZW5ndGhEZWxpbWl0ZWQgPSAyLFxuICBGaXhlZDMyID0gNVxufVxuXG4vKipcbiAqIE1hcHBpbmcgZW50cnk6IHByb3RvYnVmIGZpZWxkIHR5cGUg4oaSIFJ1c3QgdHlwZSArIHdpcmUgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVzdFR5cGVJbmZvIHtcbiAgLyoqIFJ1c3QgdHlwZSBzdHJpbmcgKGUuZy4gXCJ1NjRcIiwgXCJWZWM8dTg+XCIsIFwiU3RyaW5nXCIpICovXG4gIHJ1c3RUeXBlOiBzdHJpbmdcbiAgLyoqIFdpcmUgdHlwZSBmb3IgZW5jb2RlL2RlY29kZSBkaXNwYXRjaCAqL1xuICB3aXJlVHlwZTogV2lyZVR5cGVcbiAgLyoqIFJ1bnRpbWUgZW5jb2RlIGZ1bmN0aW9uIG5hbWUgKi9cbiAgZW5jb2RlRnVuYzogc3RyaW5nXG4gIC8qKiBSdW50aW1lIGRlY29kZSBmdW5jdGlvbiBuYW1lICovXG4gIGRlY29kZUZ1bmM6IHN0cmluZ1xuICAvKiogRGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIGluIFJ1c3QgKi9cbiAgZGVmYXVsdFZhbHVlOiBzdHJpbmdcbiAgLyoqIFdoZXRoZXIgdGhlIGVuY29kZSBmdW5jIHRha2VzIGEgcmVmZXJlbmNlICgmc2VsZi5maWVsZCkgKi9cbiAgZW5jb2RlUmVmOiBib29sZWFuXG59XG5cbi8qKlxuICogTWFwIG9mIHByb3RvYnVmIEZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUgZW51bSB2YWx1ZXMgdG8gUnVzdCBtZXRhZGF0YS5cbiAqXG4gKiBFbnVtIHZhbHVlcyBmcm9tIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvOlxuICogICAxPWRvdWJsZSwgMj1mbG9hdCwgMz1pbnQ2NCwgND11aW50NjQsIDU9aW50MzIsIDY9Zml4ZWQ2NCxcbiAqICAgNz1maXhlZDMyLCA4PWJvb2wsIDk9c3RyaW5nLCAxMD1ncm91cCwgMTE9bWVzc2FnZSwgMTI9Ynl0ZXMsXG4gKiAgIDEzPXVpbnQzMiwgMTQ9ZW51bSwgMTU9c2ZpeGVkMzIsIDE2PXNmaXhlZDY0LCAxNz1zaW50MzIsIDE4PXNpbnQ2NFxuICovXG5leHBvcnQgY29uc3QgUFJPVE9fVFlQRV9NQVA6IFJlY29yZDxudW1iZXIsIFJ1c3RUeXBlSW5mbz4gPSB7XG4gIC8vIFRZUEVfRE9VQkxFID0gMVxuICAxOiB7XG4gICAgcnVzdFR5cGU6IFwiZjY0XCIsXG4gICAgd2lyZVR5cGU6IFdpcmVUeXBlLkZpeGVkNjQsXG4gICAgZW5jb2RlRnVuYzogXCJlbmNvZGVfZml4ZWQ2NFwiLFxuICAgIGRlY29kZUZ1bmM6IFwiZGVjb2RlX2ZpeGVkNjRcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiMC4wXCIsXG4gICAgZW5jb2RlUmVmOiBmYWxzZVxuICB9LFxuICAvLyBUWVBFX0ZMT0FUID0gMlxuICAyOiB7XG4gICAgcnVzdFR5cGU6IFwiZjMyXCIsXG4gICAgd2lyZVR5cGU6IFdpcmVUeXBlLkZpeGVkMzIsXG4gICAgZW5jb2RlRnVuYzogXCJlbmNvZGVfZml4ZWQzMlwiLFxuICAgIGRlY29kZUZ1bmM6IFwiZGVjb2RlX2ZpeGVkMzJcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiMC4wXCIsXG4gICAgZW5jb2RlUmVmOiBmYWxzZVxuICB9LFxuICAvLyBUWVBFX0lOVDY0ID0gM1xuICAzOiB7XG4gICAgcnVzdFR5cGU6IFwiaTY0XCIsXG4gICAgd2lyZVR5cGU6IFdpcmVUeXBlLlZhcmludCxcbiAgICBlbmNvZGVGdW5jOiBcImVuY29kZV92YXJpbnRcIixcbiAgICBkZWNvZGVGdW5jOiBcImRlY29kZV92YXJpbnRcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiMFwiLFxuICAgIGVuY29kZVJlZjogZmFsc2VcbiAgfSxcbiAgLy8gVFlQRV9VSU5UNjQgPSA0XG4gIDQ6IHtcbiAgICBydXN0VHlwZTogXCJ1NjRcIixcbiAgICB3aXJlVHlwZTogV2lyZVR5cGUuVmFyaW50LFxuICAgIGVuY29kZUZ1bmM6IFwiZW5jb2RlX3ZhcmludFwiLFxuICAgIGRlY29kZUZ1bmM6IFwiZGVjb2RlX3ZhcmludFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIwXCIsXG4gICAgZW5jb2RlUmVmOiBmYWxzZVxuICB9LFxuICAvLyBUWVBFX0lOVDMyID0gNVxuICA1OiB7XG4gICAgcnVzdFR5cGU6IFwiaTMyXCIsXG4gICAgd2lyZVR5cGU6IFdpcmVUeXBlLlZhcmludCxcbiAgICBlbmNvZGVGdW5jOiBcImVuY29kZV92YXJpbnRcIixcbiAgICBkZWNvZGVGdW5jOiBcImRlY29kZV92YXJpbnRcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiMFwiLFxuICAgIGVuY29kZVJlZjogZmFsc2VcbiAgfSxcbiAgLy8gVFlQRV9GSVhFRDY0ID0gNlxuICA2OiB7XG4gICAgcnVzdFR5cGU6IFwidTY0XCIsXG4gICAgd2lyZVR5cGU6IFdpcmVUeXBlLkZpeGVkNjQsXG4gICAgZW5jb2RlRnVuYzogXCJlbmNvZGVfZml4ZWQ2NFwiLFxuICAgIGRlY29kZUZ1bmM6IFwiZGVjb2RlX2ZpeGVkNjRcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiMFwiLFxuICAgIGVuY29kZVJlZjogZmFsc2VcbiAgfSxcbiAgLy8gVFlQRV9GSVhFRDMyID0gN1xuICA3OiB7XG4gICAgcnVzdFR5cGU6IFwidTMyXCIsXG4gICAgd2lyZVR5cGU6IFdpcmVUeXBlLkZpeGVkMzIsXG4gICAgZW5jb2RlRnVuYzogXCJlbmNvZGVfZml4ZWQzMlwiLFxuICAgIGRlY29kZUZ1bmM6IFwiZGVjb2RlX2ZpeGVkMzJcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiMFwiLFxuICAgIGVuY29kZVJlZjogZmFsc2VcbiAgfSxcbiAgLy8gVFlQRV9CT09MID0gOFxuICA4OiB7XG4gICAgcnVzdFR5cGU6IFwiYm9vbFwiLFxuICAgIHdpcmVUeXBlOiBXaXJlVHlwZS5WYXJpbnQsXG4gICAgZW5jb2RlRnVuYzogXCJlbmNvZGVfYm9vbFwiLFxuICAgIGRlY29kZUZ1bmM6IFwiZGVjb2RlX2Jvb2xcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiZmFsc2VcIixcbiAgICBlbmNvZGVSZWY6IGZhbHNlXG4gIH0sXG4gIC8vIFRZUEVfU1RSSU5HID0gOVxuICA5OiB7XG4gICAgcnVzdFR5cGU6IFwiU3RyaW5nXCIsXG4gICAgd2lyZVR5cGU6IFdpcmVUeXBlLkxlbmd0aERlbGltaXRlZCxcbiAgICBlbmNvZGVGdW5jOiBcImVuY29kZV9zdHJpbmdcIixcbiAgICBkZWNvZGVGdW5jOiBcImRlY29kZV9zdHJpbmdcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiU3RyaW5nOjpuZXcoKVwiLFxuICAgIGVuY29kZVJlZjogdHJ1ZVxuICB9LFxuICAvLyBUWVBFX01FU1NBR0UgPSAxMVxuICAxMToge1xuICAgIHJ1c3RUeXBlOiBcIlwiLCAvLyByZXNvbHZlZCBwZXItZmllbGQgZnJvbSB0eXBlTmFtZVxuICAgIHdpcmVUeXBlOiBXaXJlVHlwZS5MZW5ndGhEZWxpbWl0ZWQsXG4gICAgZW5jb2RlRnVuYzogXCJcIiwgLy8gZGVsZWdhdGVkIHRvIG5lc3RlZCBjb2RlY1xuICAgIGRlY29kZUZ1bmM6IFwiXCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcIlwiLCAvLyBEZWZhdWx0OjpkZWZhdWx0KClcbiAgICBlbmNvZGVSZWY6IHRydWVcbiAgfSxcbiAgLy8gVFlQRV9CWVRFUyA9IDEyXG4gIDEyOiB7XG4gICAgcnVzdFR5cGU6IFwiVmVjPHU4PlwiLFxuICAgIHdpcmVUeXBlOiBXaXJlVHlwZS5MZW5ndGhEZWxpbWl0ZWQsXG4gICAgZW5jb2RlRnVuYzogXCJlbmNvZGVfYnl0ZXNcIixcbiAgICBkZWNvZGVGdW5jOiBcImRlY29kZV9ieXRlc1wiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCJWZWM6Om5ldygpXCIsXG4gICAgZW5jb2RlUmVmOiB0cnVlXG4gIH0sXG4gIC8vIFRZUEVfVUlOVDMyID0gMTNcbiAgMTM6IHtcbiAgICBydXN0VHlwZTogXCJ1MzJcIixcbiAgICB3aXJlVHlwZTogV2lyZVR5cGUuVmFyaW50LFxuICAgIGVuY29kZUZ1bmM6IFwiZW5jb2RlX3ZhcmludFwiLFxuICAgIGRlY29kZUZ1bmM6IFwiZGVjb2RlX3ZhcmludFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIwXCIsXG4gICAgZW5jb2RlUmVmOiBmYWxzZVxuICB9LFxuICAvLyBUWVBFX0VOVU0gPSAxNFxuICAxNDoge1xuICAgIHJ1c3RUeXBlOiBcImkzMlwiLFxuICAgIHdpcmVUeXBlOiBXaXJlVHlwZS5WYXJpbnQsXG4gICAgZW5jb2RlRnVuYzogXCJlbmNvZGVfdmFyaW50XCIsXG4gICAgZGVjb2RlRnVuYzogXCJkZWNvZGVfdmFyaW50XCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcIjBcIixcbiAgICBlbmNvZGVSZWY6IGZhbHNlXG4gIH0sXG4gIC8vIFRZUEVfU0ZJWEVEMzIgPSAxNVxuICAxNToge1xuICAgIHJ1c3RUeXBlOiBcImkzMlwiLFxuICAgIHdpcmVUeXBlOiBXaXJlVHlwZS5GaXhlZDMyLFxuICAgIGVuY29kZUZ1bmM6IFwiZW5jb2RlX3NmaXhlZDMyXCIsXG4gICAgZGVjb2RlRnVuYzogXCJkZWNvZGVfc2ZpeGVkMzJcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiMFwiLFxuICAgIGVuY29kZVJlZjogZmFsc2VcbiAgfSxcbiAgLy8gVFlQRV9TRklYRUQ2NCA9IDE2XG4gIDE2OiB7XG4gICAgcnVzdFR5cGU6IFwiaTY0XCIsXG4gICAgd2lyZVR5cGU6IFdpcmVUeXBlLkZpeGVkNjQsXG4gICAgZW5jb2RlRnVuYzogXCJlbmNvZGVfc2ZpeGVkNjRcIixcbiAgICBkZWNvZGVGdW5jOiBcImRlY29kZV9zZml4ZWQ2NFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIwXCIsXG4gICAgZW5jb2RlUmVmOiBmYWxzZVxuICB9LFxuICAvLyBUWVBFX1NJTlQzMiA9IDE3XG4gIDE3OiB7XG4gICAgcnVzdFR5cGU6IFwiaTMyXCIsXG4gICAgd2lyZVR5cGU6IFdpcmVUeXBlLlZhcmludCxcbiAgICBlbmNvZGVGdW5jOiBcImVuY29kZV96aWd6YWczMlwiLFxuICAgIGRlY29kZUZ1bmM6IFwiZGVjb2RlX3ppZ3phZzMyXCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcIjBcIixcbiAgICBlbmNvZGVSZWY6IGZhbHNlXG4gIH0sXG4gIC8vIFRZUEVfU0lOVDY0ID0gMThcbiAgMTg6IHtcbiAgICBydXN0VHlwZTogXCJpNjRcIixcbiAgICB3aXJlVHlwZTogV2lyZVR5cGUuVmFyaW50LFxuICAgIGVuY29kZUZ1bmM6IFwiZW5jb2RlX3ppZ3phZzY0XCIsXG4gICAgZGVjb2RlRnVuYzogXCJkZWNvZGVfemlnemFnNjRcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiMFwiLFxuICAgIGVuY29kZVJlZjogZmFsc2VcbiAgfVxufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIFJ1c3QgdHlwZSBmb3IgYSBmaWVsZCBkZXNjcmlwdG9yLlxuICogRm9yIFRZUEVfTUVTU0FHRSwgcmVzb2x2ZXMgZnJvbSB0aGUgbmVzdGVkIG1lc3NhZ2UgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSdXN0VHlwZShcbiAgZmllbGRUeXBlOiBudW1iZXIsXG4gIHR5cGVOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWRcbik6IHN0cmluZyB7XG4gIGlmIChmaWVsZFR5cGUgPT09IDExICYmIHR5cGVOYW1lKSB7XG4gICAgLy8gTmVzdGVkIG1lc3NhZ2Ug4oaSIHN0cnVjdCBuYW1lIChzdHJpcCBsZWFkaW5nIGRvdCBhbmQgcGFja2FnZSBwcmVmaXgpXG4gICAgY29uc3QgcGFydHMgPSB0eXBlTmFtZS5yZXBsYWNlKC9eXFwuLywgXCJcIikuc3BsaXQoXCIuXCIpXG4gICAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdXG4gIH1cbiAgY29uc3QgaW5mbyA9IFBST1RPX1RZUEVfTUFQW2ZpZWxkVHlwZV1cbiAgaWYgKCFpbmZvKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBwcm90b2J1ZiBmaWVsZCB0eXBlOiAke2ZpZWxkVHlwZX1gKVxuICB9XG4gIHJldHVybiBpbmZvLnJ1c3RUeXBlXG59XG5cbi8qKlxuICogQnVpbGQgYSBwcm90b2J1ZiBmaWVsZCB0YWcgKGZpZWxkX251bWJlciA8PCAzIHwgd2lyZV90eXBlKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkVGFnKGZpZWxkTnVtYmVyOiBudW1iZXIsIHdpcmVUeXBlOiBXaXJlVHlwZSk6IG51bWJlciB7XG4gIHJldHVybiAoZmllbGROdW1iZXIgPDwgMykgfCB3aXJlVHlwZVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgUnVzdCB0eXBlIG5lZWRzIGEgY2FzdCBmb3IgdmFyaW50IGVuY29kZSAobm9uLXU2NCB0eXBlcykuXG4gKiBWYXJpbnQgZW5jb2RlIGFsd2F5cyB0YWtlcyB1NjQsIHNvIHNtYWxsZXIgdHlwZXMgbmVlZCBgYXMgdTY0YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5lZWRzVmFyaW50Q2FzdChmaWVsZFR5cGU6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGluZm8gPSBQUk9UT19UWVBFX01BUFtmaWVsZFR5cGVdXG4gIGlmICghaW5mbykgcmV0dXJuIFwiXCJcbiAgaWYgKGluZm8uZW5jb2RlRnVuYyA9PT0gXCJlbmNvZGVfdmFyaW50XCIgJiYgaW5mby5ydXN0VHlwZSAhPT0gXCJ1NjRcIikge1xuICAgIHJldHVybiBcIiBhcyB1NjRcIlxuICB9XG4gIHJldHVybiBcIlwiXG59XG5cbi8qKlxuICogR2V0IHRoZSBjYXN0IG5lZWRlZCB3aGVuIGRlY29kaW5nIGEgdmFyaW50IGludG8gYSBub24tdTY0IHR5cGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YXJpbnREZWNvZGVDYXN0KGZpZWxkVHlwZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgaW5mbyA9IFBST1RPX1RZUEVfTUFQW2ZpZWxkVHlwZV1cbiAgaWYgKCFpbmZvKSByZXR1cm4gXCJcIlxuICBpZiAoaW5mby5kZWNvZGVGdW5jID09PSBcImRlY29kZV92YXJpbnRcIiAmJiBpbmZvLnJ1c3RUeXBlICE9PSBcInU2NFwiKSB7XG4gICAgcmV0dXJuIGAgYXMgJHtpbmZvLnJ1c3RUeXBlfWBcbiAgfVxuICByZXR1cm4gXCJcIlxufVxuIl19
|
package/lib/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import "./TypescriptFactoryShim.js";
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAA"}
|
package/lib/index.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
require("./TypescriptFactoryShim.js");
|
|
4
|
+
const logger_js_1 = require("./util/logger.js");
|
|
5
|
+
const plugin_js_1 = require("./plugin.js");
|
|
3
6
|
/**
|
|
4
7
|
* protoc-gen-solana entry point.
|
|
5
8
|
*
|
|
@@ -8,14 +11,14 @@ import { runPlugin } from "./plugin.js";
|
|
|
8
11
|
* All diagnostic output goes to stderr via tracer.
|
|
9
12
|
*/
|
|
10
13
|
async function main() {
|
|
11
|
-
log.info("protoc-gen-solana starting");
|
|
14
|
+
logger_js_1.log.info("protoc-gen-solana starting");
|
|
12
15
|
const stdin = await readStdin();
|
|
13
|
-
log.debug("Read %d bytes from stdin", stdin.length);
|
|
14
|
-
const stdout = runPlugin(stdin);
|
|
15
|
-
log.debug("Writing %d bytes to stdout", stdout.length);
|
|
16
|
+
logger_js_1.log.debug("Read %d bytes from stdin", stdin.length);
|
|
17
|
+
const stdout = (0, plugin_js_1.runPlugin)(stdin);
|
|
18
|
+
logger_js_1.log.debug("Writing %d bytes to stdout", stdout.length);
|
|
16
19
|
process.stdout.write(stdout, err => {
|
|
17
20
|
if (err) {
|
|
18
|
-
log.error("Failed to write response: %s", err.message);
|
|
21
|
+
logger_js_1.log.error("Failed to write response: %s", err.message);
|
|
19
22
|
process.exit(1);
|
|
20
23
|
}
|
|
21
24
|
});
|
|
@@ -32,7 +35,7 @@ function readStdin() {
|
|
|
32
35
|
});
|
|
33
36
|
}
|
|
34
37
|
main().catch(err => {
|
|
35
|
-
log.error("Fatal: %s", err.message);
|
|
38
|
+
logger_js_1.log.error("Fatal: %s", err.message);
|
|
36
39
|
process.exit(1);
|
|
37
40
|
});
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzQ0FBbUM7QUFDbkMsZ0RBQXNDO0FBQ3RDLDJDQUF1QztBQUV2Qzs7Ozs7O0dBTUc7QUFDSCxLQUFLLFVBQVUsSUFBSTtJQUNqQixlQUFHLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUE7SUFFdEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxTQUFTLEVBQUUsQ0FBQTtJQUMvQixlQUFHLENBQUMsS0FBSyxDQUFDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUVuRCxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFTLEVBQUMsS0FBSyxDQUFDLENBQUE7SUFDL0IsZUFBRyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFdEQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1FBQ2pDLElBQUksR0FBRyxFQUFFLENBQUM7WUFDUixlQUFHLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUN0RCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2pCLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsU0FBUztJQUNoQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQTtRQUMzQixPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUMvRCxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzdELE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUNuQyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDakIsZUFBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDakIsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCIuL1R5cGVzY3JpcHRGYWN0b3J5U2hpbS5qc1wiXG5pbXBvcnQgeyBsb2cgfSBmcm9tIFwiLi91dGlsL2xvZ2dlci5qc1wiXG5pbXBvcnQgeyBydW5QbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW4uanNcIlxuXG4vKipcbiAqIHByb3RvYy1nZW4tc29sYW5hIGVudHJ5IHBvaW50LlxuICpcbiAqIHByb3RvYyBpbnZva2VzIHRoaXMgYmluYXJ5LCB3cml0ZXMgYSBzZXJpYWxpemVkIENvZGVHZW5lcmF0b3JSZXF1ZXN0XG4gKiB0byBzdGRpbiwgYW5kIHJlYWRzIGEgc2VyaWFsaXplZCBDb2RlR2VuZXJhdG9yUmVzcG9uc2UgZnJvbSBzdGRvdXQuXG4gKiBBbGwgZGlhZ25vc3RpYyBvdXRwdXQgZ29lcyB0byBzdGRlcnIgdmlhIHRyYWNlci5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbWFpbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgbG9nLmluZm8oXCJwcm90b2MtZ2VuLXNvbGFuYSBzdGFydGluZ1wiKVxuXG4gIGNvbnN0IHN0ZGluID0gYXdhaXQgcmVhZFN0ZGluKClcbiAgbG9nLmRlYnVnKFwiUmVhZCAlZCBieXRlcyBmcm9tIHN0ZGluXCIsIHN0ZGluLmxlbmd0aClcblxuICBjb25zdCBzdGRvdXQgPSBydW5QbHVnaW4oc3RkaW4pXG4gIGxvZy5kZWJ1ZyhcIldyaXRpbmcgJWQgYnl0ZXMgdG8gc3Rkb3V0XCIsIHN0ZG91dC5sZW5ndGgpXG5cbiAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoc3Rkb3V0LCBlcnIgPT4ge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIGxvZy5lcnJvcihcIkZhaWxlZCB0byB3cml0ZSByZXNwb25zZTogJXNcIiwgZXJyLm1lc3NhZ2UpXG4gICAgICBwcm9jZXNzLmV4aXQoMSlcbiAgICB9XG4gIH0pXG59XG5cbi8qKlxuICogUmVhZCBhbGwgb2Ygc3RkaW4gaW50byBhIHNpbmdsZSBCdWZmZXIuXG4gKi9cbmZ1bmN0aW9uIHJlYWRTdGRpbigpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGNodW5rczogQnVmZmVyW10gPSBbXVxuICAgIHByb2Nlc3Muc3RkaW4ub24oXCJkYXRhXCIsIChjaHVuazogQnVmZmVyKSA9PiBjaHVua3MucHVzaChjaHVuaykpXG4gICAgcHJvY2Vzcy5zdGRpbi5vbihcImVuZFwiLCAoKSA9PiByZXNvbHZlKEJ1ZmZlci5jb25jYXQoY2h1bmtzKSkpXG4gICAgcHJvY2Vzcy5zdGRpbi5vbihcImVycm9yXCIsIHJlamVjdClcbiAgfSlcbn1cblxubWFpbigpLmNhdGNoKGVyciA9PiB7XG4gIGxvZy5lcnJvcihcIkZhdGFsOiAlc1wiLCBlcnIubWVzc2FnZSlcbiAgcHJvY2Vzcy5leGl0KDEpXG59KVxuIl19
|
package/lib/plugin.js
CHANGED
|
@@ -1,7 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.runPlugin = runPlugin;
|
|
37
|
+
const protobuf = __importStar(require("protobufjs"));
|
|
38
|
+
const logger_js_1 = require("./util/logger.js");
|
|
39
|
+
const names_js_1 = require("./util/names.js");
|
|
40
|
+
const index_js_1 = require("./generator/index.js");
|
|
5
41
|
// ── Protobuf schema for the plugin protocol ───────────────────────────
|
|
6
42
|
// Defined programmatically so the plugin is fully self-contained
|
|
7
43
|
// (no .proto files needed at runtime).
|
|
@@ -62,13 +98,13 @@ pluginRoot.resolveAll();
|
|
|
62
98
|
/**
|
|
63
99
|
* Run the protoc plugin: decode request → generate Rust → encode response.
|
|
64
100
|
*/
|
|
65
|
-
|
|
101
|
+
function runPlugin(stdin) {
|
|
66
102
|
let result;
|
|
67
103
|
try {
|
|
68
104
|
result = processRequest(stdin);
|
|
69
105
|
}
|
|
70
106
|
catch (err) {
|
|
71
|
-
log.error("Plugin error: %s", err.message);
|
|
107
|
+
logger_js_1.log.error("Plugin error: %s", err.message);
|
|
72
108
|
result = { files: [], error: err.message };
|
|
73
109
|
}
|
|
74
110
|
return encodeResponse(result);
|
|
@@ -82,32 +118,32 @@ function processRequest(stdin) {
|
|
|
82
118
|
// Parse plugin parameters (e.g. "log_level=debug")
|
|
83
119
|
const params = parseParams(request.parameter ?? "");
|
|
84
120
|
if (params.log_level) {
|
|
85
|
-
setLogLevel(params.log_level);
|
|
121
|
+
(0, logger_js_1.setLogLevel)(params.log_level);
|
|
86
122
|
}
|
|
87
123
|
const filesToGenerate = new Set(request.file_to_generate ?? []);
|
|
88
124
|
const protoFiles = request.proto_file ?? [];
|
|
89
|
-
log.info("Processing %d proto file(s), generating for %d", protoFiles.length, filesToGenerate.size);
|
|
125
|
+
logger_js_1.log.info("Processing %d proto file(s), generating for %d", protoFiles.length, filesToGenerate.size);
|
|
90
126
|
const files = [];
|
|
91
127
|
// Always emit the runtime library
|
|
92
128
|
files.push({
|
|
93
129
|
name: "protobuf_runtime.rs",
|
|
94
|
-
content: generateRuntime()
|
|
130
|
+
content: (0, index_js_1.generateRuntime)()
|
|
95
131
|
});
|
|
96
132
|
// Process each requested proto file
|
|
97
133
|
for (const protoFile of protoFiles) {
|
|
98
134
|
const fileName = protoFile.name ?? "";
|
|
99
135
|
if (!filesToGenerate.has(fileName))
|
|
100
136
|
continue;
|
|
101
|
-
log.info("Generating for %s", fileName);
|
|
137
|
+
logger_js_1.log.info("Generating for %s", fileName);
|
|
102
138
|
const messages = extractMessages(protoFile, protoFile.package ?? "");
|
|
103
139
|
if (messages.length === 0) {
|
|
104
|
-
log.info("No messages in %s, skipping", fileName);
|
|
140
|
+
logger_js_1.log.info("No messages in %s, skipping", fileName);
|
|
105
141
|
continue;
|
|
106
142
|
}
|
|
107
|
-
const rsFileName = protoFileToRsFile(fileName, protoFile.package ?? "");
|
|
108
|
-
const rsContent = generateRsFile(messages, fileName);
|
|
143
|
+
const rsFileName = (0, names_js_1.protoFileToRsFile)(fileName, protoFile.package ?? "");
|
|
144
|
+
const rsContent = (0, index_js_1.generateRsFile)(messages, fileName);
|
|
109
145
|
files.push({ name: rsFileName, content: rsContent });
|
|
110
|
-
log.info("Generated %s (%d messages)", rsFileName, messages.length);
|
|
146
|
+
logger_js_1.log.info("Generated %s (%d messages)", rsFileName, messages.length);
|
|
111
147
|
}
|
|
112
148
|
return { files };
|
|
113
149
|
}
|
|
@@ -170,4 +206,4 @@ function parseParams(param) {
|
|
|
170
206
|
}
|
|
171
207
|
return result;
|
|
172
208
|
}
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssUUFBUSxNQUFNLFlBQVksQ0FBQTtBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFHdEUseUVBQXlFO0FBQ3pFLGlFQUFpRTtBQUNqRSx1Q0FBdUM7QUFFdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUE7QUFFdEMsNkRBQTZEO0FBQzdELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDO0tBQ25FLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztLQUNwRSxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQzdELEdBQUcsQ0FDRixJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEVBQUUsRUFBRSxxQ0FBcUMsRUFBRSxVQUFVLENBQUMsQ0FDeEYsQ0FBQTtBQUVILGlEQUFpRDtBQUNqRCxNQUFNLFlBQVksR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0tBQzNDLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDeEQsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQ25FLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtBQUUvRCxNQUFNLHFCQUFxQixHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztLQUNyRSxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQ3pELEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztLQUN0RSxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQ3ZELEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQTtBQUVwQiwyQ0FBMkM7QUFDM0MsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUM7S0FDbkUsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztLQUN4RCxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQ3pELEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDeEQsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztLQUN2RCxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQzdELEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDakUsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztLQUM5RCxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUE7QUFFakUsTUFBTSxjQUFjLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO0tBQ3ZELEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtBQUU5RCxNQUFNLGVBQWUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7S0FDekQsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztLQUN4RCxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDdkUsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQ3hFLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQztLQUNuRSxHQUFHLENBQUMsb0JBQW9CLENBQUM7S0FDekIsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0FBRXRCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDO0tBQ2pFLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDeEQsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztLQUMzRCxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQzlELEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztLQUN6RSxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQzNELEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUV2Qiw2QkFBNkI7QUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0FBQ2pELE1BQU0sVUFBVSxHQUFHLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtBQUNyRCxNQUFNLFVBQVUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUE7QUFFckQsVUFBVSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0FBQ25DLFVBQVUsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtBQUNwQyxVQUFVLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUE7QUFDckMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtBQUMxQixRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBQ3hCLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7QUFFeEIsOEJBQThCO0FBQzlCLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtBQVN2Qjs7R0FFRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBYTtJQUNyQyxJQUFJLE1BQW9CLENBQUE7SUFFeEIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBQUMsT0FBTyxHQUFRLEVBQUUsQ0FBQztRQUNsQixHQUFHLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMxQyxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDNUMsQ0FBQztJQUVELE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBQy9CLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsY0FBYyxDQUFDLEtBQWE7SUFDbkMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FDbkMsK0NBQStDLENBQ2hELENBQUE7SUFDRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBUSxDQUFBO0lBRTVDLG1EQUFtRDtJQUNuRCxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUNuRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQixXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFFRCxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBUyxPQUFPLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQUE7SUFDdkUsTUFBTSxVQUFVLEdBQVUsT0FBTyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUE7SUFFbEQsR0FBRyxDQUFDLElBQUksQ0FDTixnREFBZ0QsRUFDaEQsVUFBVSxDQUFDLE1BQU0sRUFDakIsZUFBZSxDQUFDLElBQUksQ0FDckIsQ0FBQTtJQUVELE1BQU0sS0FBSyxHQUE2QyxFQUFFLENBQUE7SUFFMUQsa0NBQWtDO0lBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDVCxJQUFJLEVBQUUscUJBQXFCO1FBQzNCLE9BQU8sRUFBRSxlQUFlLEVBQUU7S0FDM0IsQ0FBQyxDQUFBO0lBRUYsb0NBQW9DO0lBQ3BDLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFLENBQUM7UUFDbkMsTUFBTSxRQUFRLEdBQVcsU0FBUyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUE7UUFDN0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQUUsU0FBUTtRQUU1QyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBRXZDLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUNwRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUIsR0FBRyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUNqRCxTQUFRO1FBQ1YsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ3ZFLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFFcEQsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFDcEQsR0FBRyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3JFLENBQUM7SUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUE7QUFDbEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxlQUFlLENBQ3RCLFNBQWMsRUFDZCxXQUFtQjtJQUVuQixNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFBO0lBQ3RDLE1BQU0sWUFBWSxHQUFVLFNBQVMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFBO0lBRXhELEtBQUssTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxJQUFTLEVBQUUsU0FBaUI7SUFDckQsTUFBTSxJQUFJLEdBQVcsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUE7SUFDcEMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0lBQzFELE1BQU0sVUFBVSxHQUFZLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxLQUFLLElBQUksQ0FBQTtJQUU1RCxNQUFNLE1BQU0sR0FBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5RCxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFO1FBQ2xCLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUM7UUFDckIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUNqQixRQUFRLEVBQUUsQ0FBQyxDQUFDLFNBQVM7UUFDckIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQztRQUNuQixVQUFVLEVBQUUsQ0FBQyxDQUFDLFdBQVc7S0FDMUIsQ0FBQyxDQUFDLENBQUE7SUFFSCxNQUFNLGNBQWMsR0FBd0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FDdEUsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FDckQsQ0FBQTtJQUVELE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLENBQUE7QUFDL0QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxjQUFjLENBQUMsTUFBb0I7SUFDMUMsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FDcEMsZ0RBQWdELENBQ2pELENBQUE7SUFFRCxNQUFNLE9BQU8sR0FBUTtRQUNuQixrQkFBa0IsRUFBRSxDQUFDLEVBQUUsMEJBQTBCO1FBQ2pELElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO1lBQ1osT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO1NBQ25CLENBQUMsQ0FBQztLQUNKLENBQUE7SUFFRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQixPQUFPLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUE7SUFDOUIsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtBQUNuRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFdBQVcsQ0FBQyxLQUFhO0lBQ2hDLE1BQU0sTUFBTSxHQUEyQixFQUFFLENBQUE7SUFDekMsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLE1BQU0sQ0FBQTtJQUV6QixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzVCLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDOUQsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwcm90b2J1ZiBmcm9tIFwicHJvdG9idWZqc1wiXG5pbXBvcnQgeyBsb2csIHNldExvZ0xldmVsIH0gZnJvbSBcIi4vdXRpbC9sb2dnZXIuanNcIlxuaW1wb3J0IHsgcHJvdG9GaWxlVG9Sc0ZpbGUgfSBmcm9tIFwiLi91dGlsL25hbWVzLmpzXCJcbmltcG9ydCB7IGdlbmVyYXRlUnNGaWxlLCBnZW5lcmF0ZVJ1bnRpbWUgfSBmcm9tIFwiLi9nZW5lcmF0b3IvaW5kZXguanNcIlxuaW1wb3J0IHR5cGUgeyBNZXNzYWdlRGVzY3JpcHRvciwgRmllbGRJbmZvIH0gZnJvbSBcIi4vZ2VuZXJhdG9yL2luZGV4LmpzXCJcblxuLy8g4pSA4pSAIFByb3RvYnVmIHNjaGVtYSBmb3IgdGhlIHBsdWdpbiBwcm90b2NvbCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIERlZmluZWQgcHJvZ3JhbW1hdGljYWxseSBzbyB0aGUgcGx1Z2luIGlzIGZ1bGx5IHNlbGYtY29udGFpbmVkXG4vLyAobm8gLnByb3RvIGZpbGVzIG5lZWRlZCBhdCBydW50aW1lKS5cblxuY29uc3QgcGx1Z2luUm9vdCA9IG5ldyBwcm90b2J1Zi5Sb290KClcblxuLy8gZ29vZ2xlLnByb3RvYnVmLmNvbXBpbGVyLkNvZGVHZW5lcmF0b3JSZXF1ZXN0IChzaW1wbGlmaWVkKVxuY29uc3QgQ29kZUdlbmVyYXRvclJlcXVlc3QgPSBuZXcgcHJvdG9idWYuVHlwZShcIkNvZGVHZW5lcmF0b3JSZXF1ZXN0XCIpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwiZmlsZV90b19nZW5lcmF0ZVwiLCAxLCBcInN0cmluZ1wiLCBcInJlcGVhdGVkXCIpKVxuICAuYWRkKG5ldyBwcm90b2J1Zi5GaWVsZChcInBhcmFtZXRlclwiLCAyLCBcInN0cmluZ1wiLCBcIm9wdGlvbmFsXCIpKVxuICAuYWRkKFxuICAgIG5ldyBwcm90b2J1Zi5GaWVsZChcInByb3RvX2ZpbGVcIiwgMTUsIFwiZ29vZ2xlLnByb3RvYnVmLkZpbGVEZXNjcmlwdG9yUHJvdG9cIiwgXCJyZXBlYXRlZFwiKVxuICApXG5cbi8vIGdvb2dsZS5wcm90b2J1Zi5jb21waWxlci5Db2RlR2VuZXJhdG9yUmVzcG9uc2VcbmNvbnN0IFJlc3BvbnNlRmlsZSA9IG5ldyBwcm90b2J1Zi5UeXBlKFwiRmlsZVwiKVxuICAuYWRkKG5ldyBwcm90b2J1Zi5GaWVsZChcIm5hbWVcIiwgMSwgXCJzdHJpbmdcIiwgXCJvcHRpb25hbFwiKSlcbiAgLmFkZChuZXcgcHJvdG9idWYuRmllbGQoXCJpbnNlcnRpb25fcG9pbnRcIiwgMiwgXCJzdHJpbmdcIiwgXCJvcHRpb25hbFwiKSlcbiAgLmFkZChuZXcgcHJvdG9idWYuRmllbGQoXCJjb250ZW50XCIsIDE1LCBcInN0cmluZ1wiLCBcIm9wdGlvbmFsXCIpKVxuXG5jb25zdCBDb2RlR2VuZXJhdG9yUmVzcG9uc2UgPSBuZXcgcHJvdG9idWYuVHlwZShcIkNvZGVHZW5lcmF0b3JSZXNwb25zZVwiKVxuICAuYWRkKG5ldyBwcm90b2J1Zi5GaWVsZChcImVycm9yXCIsIDEsIFwic3RyaW5nXCIsIFwib3B0aW9uYWxcIikpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwic3VwcG9ydGVkX2ZlYXR1cmVzXCIsIDIsIFwidWludDY0XCIsIFwib3B0aW9uYWxcIikpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwiZmlsZVwiLCAxNSwgXCJGaWxlXCIsIFwicmVwZWF0ZWRcIikpXG4gIC5hZGQoUmVzcG9uc2VGaWxlKVxuXG4vLyBGaWxlRGVzY3JpcHRvclByb3RvIGFuZCBpdHMgbmVzdGVkIHR5cGVzXG5jb25zdCBGaWVsZERlc2NyaXB0b3JQcm90byA9IG5ldyBwcm90b2J1Zi5UeXBlKFwiRmllbGREZXNjcmlwdG9yUHJvdG9cIilcbiAgLmFkZChuZXcgcHJvdG9idWYuRmllbGQoXCJuYW1lXCIsIDEsIFwic3RyaW5nXCIsIFwib3B0aW9uYWxcIikpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwibnVtYmVyXCIsIDMsIFwiaW50MzJcIiwgXCJvcHRpb25hbFwiKSlcbiAgLmFkZChuZXcgcHJvdG9idWYuRmllbGQoXCJsYWJlbFwiLCA0LCBcImludDMyXCIsIFwib3B0aW9uYWxcIikpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwidHlwZVwiLCA1LCBcImludDMyXCIsIFwib3B0aW9uYWxcIikpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwidHlwZV9uYW1lXCIsIDYsIFwic3RyaW5nXCIsIFwib3B0aW9uYWxcIikpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwiZGVmYXVsdF92YWx1ZVwiLCA3LCBcInN0cmluZ1wiLCBcIm9wdGlvbmFsXCIpKVxuICAuYWRkKG5ldyBwcm90b2J1Zi5GaWVsZChcIm9uZW9mX2luZGV4XCIsIDksIFwiaW50MzJcIiwgXCJvcHRpb25hbFwiKSlcbiAgLmFkZChuZXcgcHJvdG9idWYuRmllbGQoXCJqc29uX25hbWVcIiwgMTAsIFwic3RyaW5nXCIsIFwib3B0aW9uYWxcIikpXG5cbmNvbnN0IE1lc3NhZ2VPcHRpb25zID0gbmV3IHByb3RvYnVmLlR5cGUoXCJNZXNzYWdlT3B0aW9uc1wiKVxuICAuYWRkKG5ldyBwcm90b2J1Zi5GaWVsZChcIm1hcF9lbnRyeVwiLCA3LCBcImJvb2xcIiwgXCJvcHRpb25hbFwiKSlcblxuY29uc3QgRGVzY3JpcHRvclByb3RvID0gbmV3IHByb3RvYnVmLlR5cGUoXCJEZXNjcmlwdG9yUHJvdG9cIilcbiAgLmFkZChuZXcgcHJvdG9idWYuRmllbGQoXCJuYW1lXCIsIDEsIFwic3RyaW5nXCIsIFwib3B0aW9uYWxcIikpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwiZmllbGRcIiwgMiwgXCJGaWVsZERlc2NyaXB0b3JQcm90b1wiLCBcInJlcGVhdGVkXCIpKVxuICAuYWRkKG5ldyBwcm90b2J1Zi5GaWVsZChcIm5lc3RlZF90eXBlXCIsIDMsIFwiRGVzY3JpcHRvclByb3RvXCIsIFwicmVwZWF0ZWRcIikpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwib3B0aW9uc1wiLCA3LCBcIk1lc3NhZ2VPcHRpb25zXCIsIFwib3B0aW9uYWxcIikpXG4gIC5hZGQoRmllbGREZXNjcmlwdG9yUHJvdG8pXG4gIC5hZGQoTWVzc2FnZU9wdGlvbnMpXG5cbmNvbnN0IEZpbGVEZXNjcmlwdG9yUHJvdG8gPSBuZXcgcHJvdG9idWYuVHlwZShcIkZpbGVEZXNjcmlwdG9yUHJvdG9cIilcbiAgLmFkZChuZXcgcHJvdG9idWYuRmllbGQoXCJuYW1lXCIsIDEsIFwic3RyaW5nXCIsIFwib3B0aW9uYWxcIikpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwicGFja2FnZVwiLCAyLCBcInN0cmluZ1wiLCBcIm9wdGlvbmFsXCIpKVxuICAuYWRkKG5ldyBwcm90b2J1Zi5GaWVsZChcImRlcGVuZGVuY3lcIiwgMywgXCJzdHJpbmdcIiwgXCJyZXBlYXRlZFwiKSlcbiAgLmFkZChuZXcgcHJvdG9idWYuRmllbGQoXCJtZXNzYWdlX3R5cGVcIiwgNCwgXCJEZXNjcmlwdG9yUHJvdG9cIiwgXCJyZXBlYXRlZFwiKSlcbiAgLmFkZChuZXcgcHJvdG9idWYuRmllbGQoXCJzeW50YXhcIiwgMTIsIFwic3RyaW5nXCIsIFwib3B0aW9uYWxcIikpXG4gIC5hZGQoRGVzY3JpcHRvclByb3RvKVxuXG4vLyBXaXJlIHR5cGVzIGludG8gbmFtZXNwYWNlc1xuY29uc3QgZ29vZ2xlUGIgPSBuZXcgcHJvdG9idWYuTmFtZXNwYWNlKFwiZ29vZ2xlXCIpXG5jb25zdCBwcm90b2J1Zk5zID0gbmV3IHByb3RvYnVmLk5hbWVzcGFjZShcInByb3RvYnVmXCIpXG5jb25zdCBjb21waWxlck5zID0gbmV3IHByb3RvYnVmLk5hbWVzcGFjZShcImNvbXBpbGVyXCIpXG5cbnByb3RvYnVmTnMuYWRkKEZpbGVEZXNjcmlwdG9yUHJvdG8pXG5jb21waWxlck5zLmFkZChDb2RlR2VuZXJhdG9yUmVxdWVzdClcbmNvbXBpbGVyTnMuYWRkKENvZGVHZW5lcmF0b3JSZXNwb25zZSlcbnByb3RvYnVmTnMuYWRkKGNvbXBpbGVyTnMpXG5nb29nbGVQYi5hZGQocHJvdG9idWZOcylcbnBsdWdpblJvb3QuYWRkKGdvb2dsZVBiKVxuXG4vLyBSZXNvbHZlIGFsbCB0eXBlIHJlZmVyZW5jZXNcbnBsdWdpblJvb3QucmVzb2x2ZUFsbCgpXG5cbi8vIOKUgOKUgCBQbHVnaW4gZW50cnkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luUmVzdWx0IHtcbiAgZmlsZXM6IEFycmF5PHsgbmFtZTogc3RyaW5nOyBjb250ZW50OiBzdHJpbmcgfT5cbiAgZXJyb3I/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBSdW4gdGhlIHByb3RvYyBwbHVnaW46IGRlY29kZSByZXF1ZXN0IOKGkiBnZW5lcmF0ZSBSdXN0IOKGkiBlbmNvZGUgcmVzcG9uc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5QbHVnaW4oc3RkaW46IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gIGxldCByZXN1bHQ6IFBsdWdpblJlc3VsdFxuXG4gIHRyeSB7XG4gICAgcmVzdWx0ID0gcHJvY2Vzc1JlcXVlc3Qoc3RkaW4pXG4gIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgbG9nLmVycm9yKFwiUGx1Z2luIGVycm9yOiAlc1wiLCBlcnIubWVzc2FnZSlcbiAgICByZXN1bHQgPSB7IGZpbGVzOiBbXSwgZXJyb3I6IGVyci5tZXNzYWdlIH1cbiAgfVxuXG4gIHJldHVybiBlbmNvZGVSZXNwb25zZShyZXN1bHQpXG59XG5cbi8qKlxuICogRGVjb2RlIENvZGVHZW5lcmF0b3JSZXF1ZXN0LCB3YWxrIGRlc2NyaXB0b3JzLCBwcm9kdWNlIG91dHB1dCBmaWxlcy5cbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc1JlcXVlc3Qoc3RkaW46IEJ1ZmZlcik6IFBsdWdpblJlc3VsdCB7XG4gIGNvbnN0IFJlcVR5cGUgPSBwbHVnaW5Sb290Lmxvb2t1cFR5cGUoXG4gICAgXCJnb29nbGUucHJvdG9idWYuY29tcGlsZXIuQ29kZUdlbmVyYXRvclJlcXVlc3RcIlxuICApXG4gIGNvbnN0IHJlcXVlc3QgPSBSZXFUeXBlLmRlY29kZShzdGRpbikgYXMgYW55XG5cbiAgLy8gUGFyc2UgcGx1Z2luIHBhcmFtZXRlcnMgKGUuZy4gXCJsb2dfbGV2ZWw9ZGVidWdcIilcbiAgY29uc3QgcGFyYW1zID0gcGFyc2VQYXJhbXMocmVxdWVzdC5wYXJhbWV0ZXIgPz8gXCJcIilcbiAgaWYgKHBhcmFtcy5sb2dfbGV2ZWwpIHtcbiAgICBzZXRMb2dMZXZlbChwYXJhbXMubG9nX2xldmVsKVxuICB9XG5cbiAgY29uc3QgZmlsZXNUb0dlbmVyYXRlID0gbmV3IFNldDxzdHJpbmc+KHJlcXVlc3QuZmlsZV90b19nZW5lcmF0ZSA/PyBbXSlcbiAgY29uc3QgcHJvdG9GaWxlczogYW55W10gPSByZXF1ZXN0LnByb3RvX2ZpbGUgPz8gW11cblxuICBsb2cuaW5mbyhcbiAgICBcIlByb2Nlc3NpbmcgJWQgcHJvdG8gZmlsZShzKSwgZ2VuZXJhdGluZyBmb3IgJWRcIixcbiAgICBwcm90b0ZpbGVzLmxlbmd0aCxcbiAgICBmaWxlc1RvR2VuZXJhdGUuc2l6ZVxuICApXG5cbiAgY29uc3QgZmlsZXM6IEFycmF5PHsgbmFtZTogc3RyaW5nOyBjb250ZW50OiBzdHJpbmcgfT4gPSBbXVxuXG4gIC8vIEFsd2F5cyBlbWl0IHRoZSBydW50aW1lIGxpYnJhcnlcbiAgZmlsZXMucHVzaCh7XG4gICAgbmFtZTogXCJwcm90b2J1Zl9ydW50aW1lLnJzXCIsXG4gICAgY29udGVudDogZ2VuZXJhdGVSdW50aW1lKClcbiAgfSlcblxuICAvLyBQcm9jZXNzIGVhY2ggcmVxdWVzdGVkIHByb3RvIGZpbGVcbiAgZm9yIChjb25zdCBwcm90b0ZpbGUgb2YgcHJvdG9GaWxlcykge1xuICAgIGNvbnN0IGZpbGVOYW1lOiBzdHJpbmcgPSBwcm90b0ZpbGUubmFtZSA/PyBcIlwiXG4gICAgaWYgKCFmaWxlc1RvR2VuZXJhdGUuaGFzKGZpbGVOYW1lKSkgY29udGludWVcblxuICAgIGxvZy5pbmZvKFwiR2VuZXJhdGluZyBmb3IgJXNcIiwgZmlsZU5hbWUpXG5cbiAgICBjb25zdCBtZXNzYWdlcyA9IGV4dHJhY3RNZXNzYWdlcyhwcm90b0ZpbGUsIHByb3RvRmlsZS5wYWNrYWdlID8/IFwiXCIpXG4gICAgaWYgKG1lc3NhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgbG9nLmluZm8oXCJObyBtZXNzYWdlcyBpbiAlcywgc2tpcHBpbmdcIiwgZmlsZU5hbWUpXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGNvbnN0IHJzRmlsZU5hbWUgPSBwcm90b0ZpbGVUb1JzRmlsZShmaWxlTmFtZSwgcHJvdG9GaWxlLnBhY2thZ2UgPz8gXCJcIilcbiAgICBjb25zdCByc0NvbnRlbnQgPSBnZW5lcmF0ZVJzRmlsZShtZXNzYWdlcywgZmlsZU5hbWUpXG5cbiAgICBmaWxlcy5wdXNoKHsgbmFtZTogcnNGaWxlTmFtZSwgY29udGVudDogcnNDb250ZW50IH0pXG4gICAgbG9nLmluZm8oXCJHZW5lcmF0ZWQgJXMgKCVkIG1lc3NhZ2VzKVwiLCByc0ZpbGVOYW1lLCBtZXNzYWdlcy5sZW5ndGgpXG4gIH1cblxuICByZXR1cm4geyBmaWxlcyB9XG59XG5cbi8qKlxuICogV2FsayBEZXNjcmlwdG9yUHJvdG8gdHJlZSwgYnVpbGRpbmcgb3VyIE1lc3NhZ2VEZXNjcmlwdG9yIG1vZGVsLlxuICovXG5mdW5jdGlvbiBleHRyYWN0TWVzc2FnZXMoXG4gIHByb3RvRmlsZTogYW55LFxuICBwYWNrYWdlTmFtZTogc3RyaW5nXG4pOiBNZXNzYWdlRGVzY3JpcHRvcltdIHtcbiAgY29uc3QgcmVzdWx0OiBNZXNzYWdlRGVzY3JpcHRvcltdID0gW11cbiAgY29uc3QgbWVzc2FnZVR5cGVzOiBhbnlbXSA9IHByb3RvRmlsZS5tZXNzYWdlX3R5cGUgPz8gW11cblxuICBmb3IgKGNvbnN0IG1zZyBvZiBtZXNzYWdlVHlwZXMpIHtcbiAgICByZXN1bHQucHVzaChjb252ZXJ0RGVzY3JpcHRvcihtc2csIHBhY2thZ2VOYW1lKSlcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gY29udmVydERlc2NyaXB0b3IoZGVzYzogYW55LCBwYXJlbnRGcW46IHN0cmluZyk6IE1lc3NhZ2VEZXNjcmlwdG9yIHtcbiAgY29uc3QgbmFtZTogc3RyaW5nID0gZGVzYy5uYW1lID8/IFwiXCJcbiAgY29uc3QgZnVsbE5hbWUgPSBwYXJlbnRGcW4gPyBgJHtwYXJlbnRGcW59LiR7bmFtZX1gIDogbmFtZVxuICBjb25zdCBpc01hcEVudHJ5OiBib29sZWFuID0gZGVzYy5vcHRpb25zPy5tYXBfZW50cnkgPT09IHRydWVcblxuICBjb25zdCBmaWVsZHM6IEZpZWxkSW5mb1tdID0gKGRlc2MuZmllbGQgPz8gW10pLm1hcCgoZjogYW55KSA9PiAoe1xuICAgIG5hbWU6IGYubmFtZSA/PyBcIlwiLFxuICAgIG51bWJlcjogZi5udW1iZXIgPz8gMCxcbiAgICB0eXBlOiBmLnR5cGUgPz8gMCxcbiAgICB0eXBlTmFtZTogZi50eXBlX25hbWUsXG4gICAgbGFiZWw6IGYubGFiZWwgPz8gMSxcbiAgICBvbmVvZkluZGV4OiBmLm9uZW9mX2luZGV4XG4gIH0pKVxuXG4gIGNvbnN0IG5lc3RlZE1lc3NhZ2VzOiBNZXNzYWdlRGVzY3JpcHRvcltdID0gKGRlc2MubmVzdGVkX3R5cGUgPz8gW10pLm1hcChcbiAgICAobmVzdGVkOiBhbnkpID0+IGNvbnZlcnREZXNjcmlwdG9yKG5lc3RlZCwgZnVsbE5hbWUpXG4gIClcblxuICByZXR1cm4geyBuYW1lLCBmdWxsTmFtZSwgZmllbGRzLCBuZXN0ZWRNZXNzYWdlcywgaXNNYXBFbnRyeSB9XG59XG5cbi8qKlxuICogRW5jb2RlIHRoZSBDb2RlR2VuZXJhdG9yUmVzcG9uc2UgYmFjayB0byBwcm90b2J1ZiBiaW5hcnkuXG4gKi9cbmZ1bmN0aW9uIGVuY29kZVJlc3BvbnNlKHJlc3VsdDogUGx1Z2luUmVzdWx0KTogQnVmZmVyIHtcbiAgY29uc3QgUmVzcFR5cGUgPSBwbHVnaW5Sb290Lmxvb2t1cFR5cGUoXG4gICAgXCJnb29nbGUucHJvdG9idWYuY29tcGlsZXIuQ29kZUdlbmVyYXRvclJlc3BvbnNlXCJcbiAgKVxuXG4gIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcbiAgICBzdXBwb3J0ZWRfZmVhdHVyZXM6IDEsIC8vIEZFQVRVUkVfUFJPVE8zX09QVElPTkFMXG4gICAgZmlsZTogcmVzdWx0LmZpbGVzLm1hcChmID0+ICh7XG4gICAgICBuYW1lOiBmLm5hbWUsXG4gICAgICBjb250ZW50OiBmLmNvbnRlbnRcbiAgICB9KSlcbiAgfVxuXG4gIGlmIChyZXN1bHQuZXJyb3IpIHtcbiAgICBwYXlsb2FkLmVycm9yID0gcmVzdWx0LmVycm9yXG4gIH1cblxuICBjb25zdCBtc2cgPSBSZXNwVHlwZS5jcmVhdGUocGF5bG9hZClcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKFJlc3BUeXBlLmVuY29kZShtc2cpLmZpbmlzaCgpKVxufVxuXG4vKipcbiAqIFBhcnNlIFwia2V5PXZhbHVlLGtleTI9dmFsdWUyXCIgcGFyYW1ldGVyIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gcGFyc2VQYXJhbXMocGFyYW06IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fVxuICBpZiAoIXBhcmFtKSByZXR1cm4gcmVzdWx0XG5cbiAgZm9yIChjb25zdCBwYWlyIG9mIHBhcmFtLnNwbGl0KFwiLFwiKSkge1xuICAgIGNvbnN0IGVxID0gcGFpci5pbmRleE9mKFwiPVwiKVxuICAgIGlmIChlcSA+IDApIHtcbiAgICAgIHJlc3VsdFtwYWlyLnNsaWNlKDAsIGVxKS50cmltKCldID0gcGFpci5zbGljZShlcSArIDEpLnRyaW0oKVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0XG59XG4iXX0=
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVGQSw4QkFXQztBQWxHRCxxREFBc0M7QUFDdEMsZ0RBQW1EO0FBQ25ELDhDQUFtRDtBQUNuRCxtREFBc0U7QUFHdEUseUVBQXlFO0FBQ3pFLGlFQUFpRTtBQUNqRSx1Q0FBdUM7QUFFdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUE7QUFFdEMsNkRBQTZEO0FBQzdELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDO0tBQ25FLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztLQUNwRSxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQzdELEdBQUcsQ0FDRixJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEVBQUUsRUFBRSxxQ0FBcUMsRUFBRSxVQUFVLENBQUMsQ0FDeEYsQ0FBQTtBQUVILGlEQUFpRDtBQUNqRCxNQUFNLFlBQVksR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0tBQzNDLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDeEQsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQ25FLEdBQUcsQ0FBQyxJQUFJLFFBQVEs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RSxDQUFBO0lBQ3pDLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxNQUFNLENBQUE7SUFFekIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDcEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM1QixJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQzlELENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcHJvdG9idWYgZnJvbSBcInByb3RvYnVmanNcIlxuaW1wb3J0IHsgbG9nLCBzZXRMb2dMZXZlbCB9IGZyb20gXCIuL3V0aWwvbG9nZ2VyLmpzXCJcbmltcG9ydCB7IHByb3RvRmlsZVRvUnNGaWxlIH0gZnJvbSBcIi4vdXRpbC9uYW1lcy5qc1wiXG5pbXBvcnQgeyBnZW5lcmF0ZVJzRmlsZSwgZ2VuZXJhdGVSdW50aW1lIH0gZnJvbSBcIi4vZ2VuZXJhdG9yL2luZGV4LmpzXCJcbmltcG9ydCB0eXBlIHsgTWVzc2FnZURlc2NyaXB0b3IsIEZpZWxkSW5mbyB9IGZyb20gXCIuL2dlbmVyYXRvci9pbmRleC5qc1wiXG5cbi8vIOKUgOKUgCBQcm90b2J1ZiBzY2hlbWEgZm9yIHRoZSBwbHVnaW4gcHJvdG9jb2wg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBEZWZpbmVkIHByb2dyYW1tYXRpY2FsbHkgc28gdGhlIHBsdWdpbiBpcyBmdWxseSBzZWxmLWNvbnRhaW5lZFxuLy8gKG5vIC5wcm90byBmaWxlcyBuZWVkZWQgYXQgcnVudGltZSkuXG5cbmNvbnN0IHBsdWdpblJvb3QgPSBuZXcgcHJvdG9idWYuUm9vdCgpXG5cbi8vIGdvb2dsZS5wcm90b2J1Zi5jb21waWxlci5Db2RlR2VuZXJhdG9yUmVxdWVzdCAoc2ltcGxpZmllZClcbmNvbnN0IENvZGVHZW5lcmF0b3JSZXF1ZXN0ID0gbmV3IHByb3RvYnVmLlR5cGUoXCJDb2RlR2VuZXJhdG9yUmVxdWVzdFwiKVxuICAuYWRkKG5ldyBwcm90b2J1Zi5GaWVsZChcImZpbGVfdG9fZ2VuZXJhdGVcIiwgMSwgXCJzdHJpbmdcIiwgXCJyZXBlYXRlZFwiKSlcbiAgLmFkZChuZXcgcHJvdG9idWYuRmllbGQoXCJwYXJhbWV0ZXJcIiwgMiwgXCJzdHJpbmdcIiwgXCJvcHRpb25hbFwiKSlcbiAgLmFkZChcbiAgICBuZXcgcHJvdG9idWYuRmllbGQoXCJwcm90b19maWxlXCIsIDE1LCBcImdvb2dsZS5wcm90b2J1Zi5GaWxlRGVzY3JpcHRvclByb3RvXCIsIFwicmVwZWF0ZWRcIilcbiAgKVxuXG4vLyBnb29nbGUucHJvdG9idWYuY29tcGlsZXIuQ29kZUdlbmVyYXRvclJlc3BvbnNlXG5jb25zdCBSZXNwb25zZUZpbGUgPSBuZXcgcHJvdG9idWYuVHlwZShcIkZpbGVcIilcbiAgLmFkZChuZXcgcHJvdG9idWYuRmllbGQoXCJuYW1lXCIsIDEsIFwic3RyaW5nXCIsIFwib3B0aW9uYWxcIikpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwiaW5zZXJ0aW9uX3BvaW50XCIsIDIsIFwic3RyaW5nXCIsIFwib3B0aW9uYWxcIikpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwiY29udGVudFwiLCAxNSwgXCJzdHJpbmdcIiwgXCJvcHRpb25hbFwiKSlcblxuY29uc3QgQ29kZUdlbmVyYXRvclJlc3BvbnNlID0gbmV3IHByb3RvYnVmLlR5cGUoXCJDb2RlR2VuZXJhdG9yUmVzcG9uc2VcIilcbiAgLmFkZChuZXcgcHJvdG9idWYuRmllbGQoXCJlcnJvclwiLCAxLCBcInN0cmluZ1wiLCBcIm9wdGlvbmFsXCIpKVxuICAuYWRkKG5ldyBwcm90b2J1Zi5GaWVsZChcInN1cHBvcnRlZF9mZWF0dXJlc1wiLCAyLCBcInVpbnQ2NFwiLCBcIm9wdGlvbmFsXCIpKVxuICAuYWRkKG5ldyBwcm90b2J1Zi5GaWVsZChcImZpbGVcIiwgMTUsIFwiRmlsZVwiLCBcInJlcGVhdGVkXCIpKVxuICAuYWRkKFJlc3BvbnNlRmlsZSlcblxuLy8gRmlsZURlc2NyaXB0b3JQcm90byBhbmQgaXRzIG5lc3RlZCB0eXBlc1xuY29uc3QgRmllbGREZXNjcmlwdG9yUHJvdG8gPSBuZXcgcHJvdG9idWYuVHlwZShcIkZpZWxkRGVzY3JpcHRvclByb3RvXCIpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwibmFtZVwiLCAxLCBcInN0cmluZ1wiLCBcIm9wdGlvbmFsXCIpKVxuICAuYWRkKG5ldyBwcm90b2J1Zi5GaWVsZChcIm51bWJlclwiLCAzLCBcImludDMyXCIsIFwib3B0aW9uYWxcIikpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwibGFiZWxcIiwgNCwgXCJpbnQzMlwiLCBcIm9wdGlvbmFsXCIpKVxuICAuYWRkKG5ldyBwcm90b2J1Zi5GaWVsZChcInR5cGVcIiwgNSwgXCJpbnQzMlwiLCBcIm9wdGlvbmFsXCIpKVxuICAuYWRkKG5ldyBwcm90b2J1Zi5GaWVsZChcInR5cGVfbmFtZVwiLCA2LCBcInN0cmluZ1wiLCBcIm9wdGlvbmFsXCIpKVxuICAuYWRkKG5ldyBwcm90b2J1Zi5GaWVsZChcImRlZmF1bHRfdmFsdWVcIiwgNywgXCJzdHJpbmdcIiwgXCJvcHRpb25hbFwiKSlcbiAgLmFkZChuZXcgcHJvdG9idWYuRmllbGQoXCJvbmVvZl9pbmRleFwiLCA5LCBcImludDMyXCIsIFwib3B0aW9uYWxcIikpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwianNvbl9uYW1lXCIsIDEwLCBcInN0cmluZ1wiLCBcIm9wdGlvbmFsXCIpKVxuXG5jb25zdCBNZXNzYWdlT3B0aW9ucyA9IG5ldyBwcm90b2J1Zi5UeXBlKFwiTWVzc2FnZU9wdGlvbnNcIilcbiAgLmFkZChuZXcgcHJvdG9idWYuRmllbGQoXCJtYXBfZW50cnlcIiwgNywgXCJib29sXCIsIFwib3B0aW9uYWxcIikpXG5cbmNvbnN0IERlc2NyaXB0b3JQcm90byA9IG5ldyBwcm90b2J1Zi5UeXBlKFwiRGVzY3JpcHRvclByb3RvXCIpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwibmFtZVwiLCAxLCBcInN0cmluZ1wiLCBcIm9wdGlvbmFsXCIpKVxuICAuYWRkKG5ldyBwcm90b2J1Zi5GaWVsZChcImZpZWxkXCIsIDIsIFwiRmllbGREZXNjcmlwdG9yUHJvdG9cIiwgXCJyZXBlYXRlZFwiKSlcbiAgLmFkZChuZXcgcHJvdG9idWYuRmllbGQoXCJuZXN0ZWRfdHlwZVwiLCAzLCBcIkRlc2NyaXB0b3JQcm90b1wiLCBcInJlcGVhdGVkXCIpKVxuICAuYWRkKG5ldyBwcm90b2J1Zi5GaWVsZChcIm9wdGlvbnNcIiwgNywgXCJNZXNzYWdlT3B0aW9uc1wiLCBcIm9wdGlvbmFsXCIpKVxuICAuYWRkKEZpZWxkRGVzY3JpcHRvclByb3RvKVxuICAuYWRkKE1lc3NhZ2VPcHRpb25zKVxuXG5jb25zdCBGaWxlRGVzY3JpcHRvclByb3RvID0gbmV3IHByb3RvYnVmLlR5cGUoXCJGaWxlRGVzY3JpcHRvclByb3RvXCIpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwibmFtZVwiLCAxLCBcInN0cmluZ1wiLCBcIm9wdGlvbmFsXCIpKVxuICAuYWRkKG5ldyBwcm90b2J1Zi5GaWVsZChcInBhY2thZ2VcIiwgMiwgXCJzdHJpbmdcIiwgXCJvcHRpb25hbFwiKSlcbiAgLmFkZChuZXcgcHJvdG9idWYuRmllbGQoXCJkZXBlbmRlbmN5XCIsIDMsIFwic3RyaW5nXCIsIFwicmVwZWF0ZWRcIikpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwibWVzc2FnZV90eXBlXCIsIDQsIFwiRGVzY3JpcHRvclByb3RvXCIsIFwicmVwZWF0ZWRcIikpXG4gIC5hZGQobmV3IHByb3RvYnVmLkZpZWxkKFwic3ludGF4XCIsIDEyLCBcInN0cmluZ1wiLCBcIm9wdGlvbmFsXCIpKVxuICAuYWRkKERlc2NyaXB0b3JQcm90bylcblxuLy8gV2lyZSB0eXBlcyBpbnRvIG5hbWVzcGFjZXNcbmNvbnN0IGdvb2dsZVBiID0gbmV3IHByb3RvYnVmLk5hbWVzcGFjZShcImdvb2dsZVwiKVxuY29uc3QgcHJvdG9idWZOcyA9IG5ldyBwcm90b2J1Zi5OYW1lc3BhY2UoXCJwcm90b2J1ZlwiKVxuY29uc3QgY29tcGlsZXJOcyA9IG5ldyBwcm90b2J1Zi5OYW1lc3BhY2UoXCJjb21waWxlclwiKVxuXG5wcm90b2J1Zk5zLmFkZChGaWxlRGVzY3JpcHRvclByb3RvKVxuY29tcGlsZXJOcy5hZGQoQ29kZUdlbmVyYXRvclJlcXVlc3QpXG5jb21waWxlck5zLmFkZChDb2RlR2VuZXJhdG9yUmVzcG9uc2UpXG5wcm90b2J1Zk5zLmFkZChjb21waWxlck5zKVxuZ29vZ2xlUGIuYWRkKHByb3RvYnVmTnMpXG5wbHVnaW5Sb290LmFkZChnb29nbGVQYilcblxuLy8gUmVzb2x2ZSBhbGwgdHlwZSByZWZlcmVuY2VzXG5wbHVnaW5Sb290LnJlc29sdmVBbGwoKVxuXG4vLyDilIDilIAgUGx1Z2luIGVudHJ5IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblJlc3VsdCB7XG4gIGZpbGVzOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgY29udGVudDogc3RyaW5nIH0+XG4gIGVycm9yPzogc3RyaW5nXG59XG5cbi8qKlxuICogUnVuIHRoZSBwcm90b2MgcGx1Z2luOiBkZWNvZGUgcmVxdWVzdCDihpIgZ2VuZXJhdGUgUnVzdCDihpIgZW5jb2RlIHJlc3BvbnNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuUGx1Z2luKHN0ZGluOiBCdWZmZXIpOiBCdWZmZXIge1xuICBsZXQgcmVzdWx0OiBQbHVnaW5SZXN1bHRcblxuICB0cnkge1xuICAgIHJlc3VsdCA9IHByb2Nlc3NSZXF1ZXN0KHN0ZGluKVxuICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgIGxvZy5lcnJvcihcIlBsdWdpbiBlcnJvcjogJXNcIiwgZXJyLm1lc3NhZ2UpXG4gICAgcmVzdWx0ID0geyBmaWxlczogW10sIGVycm9yOiBlcnIubWVzc2FnZSB9XG4gIH1cblxuICByZXR1cm4gZW5jb2RlUmVzcG9uc2UocmVzdWx0KVxufVxuXG4vKipcbiAqIERlY29kZSBDb2RlR2VuZXJhdG9yUmVxdWVzdCwgd2FsayBkZXNjcmlwdG9ycywgcHJvZHVjZSBvdXRwdXQgZmlsZXMuXG4gKi9cbmZ1bmN0aW9uIHByb2Nlc3NSZXF1ZXN0KHN0ZGluOiBCdWZmZXIpOiBQbHVnaW5SZXN1bHQge1xuICBjb25zdCBSZXFUeXBlID0gcGx1Z2luUm9vdC5sb29rdXBUeXBlKFxuICAgIFwiZ29vZ2xlLnByb3RvYnVmLmNvbXBpbGVyLkNvZGVHZW5lcmF0b3JSZXF1ZXN0XCJcbiAgKVxuICBjb25zdCByZXF1ZXN0ID0gUmVxVHlwZS5kZWNvZGUoc3RkaW4pIGFzIGFueVxuXG4gIC8vIFBhcnNlIHBsdWdpbiBwYXJhbWV0ZXJzIChlLmcuIFwibG9nX2xldmVsPWRlYnVnXCIpXG4gIGNvbnN0IHBhcmFtcyA9IHBhcnNlUGFyYW1zKHJlcXVlc3QucGFyYW1ldGVyID8/IFwiXCIpXG4gIGlmIChwYXJhbXMubG9nX2xldmVsKSB7XG4gICAgc2V0TG9nTGV2ZWwocGFyYW1zLmxvZ19sZXZlbClcbiAgfVxuXG4gIGNvbnN0IGZpbGVzVG9HZW5lcmF0ZSA9IG5ldyBTZXQ8c3RyaW5nPihyZXF1ZXN0LmZpbGVfdG9fZ2VuZXJhdGUgPz8gW10pXG4gIGNvbnN0IHByb3RvRmlsZXM6IGFueVtdID0gcmVxdWVzdC5wcm90b19maWxlID8/IFtdXG5cbiAgbG9nLmluZm8oXG4gICAgXCJQcm9jZXNzaW5nICVkIHByb3RvIGZpbGUocyksIGdlbmVyYXRpbmcgZm9yICVkXCIsXG4gICAgcHJvdG9GaWxlcy5sZW5ndGgsXG4gICAgZmlsZXNUb0dlbmVyYXRlLnNpemVcbiAgKVxuXG4gIGNvbnN0IGZpbGVzOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgY29udGVudDogc3RyaW5nIH0+ID0gW11cblxuICAvLyBBbHdheXMgZW1pdCB0aGUgcnVudGltZSBsaWJyYXJ5XG4gIGZpbGVzLnB1c2goe1xuICAgIG5hbWU6IFwicHJvdG9idWZfcnVudGltZS5yc1wiLFxuICAgIGNvbnRlbnQ6IGdlbmVyYXRlUnVudGltZSgpXG4gIH0pXG5cbiAgLy8gUHJvY2VzcyBlYWNoIHJlcXVlc3RlZCBwcm90byBmaWxlXG4gIGZvciAoY29uc3QgcHJvdG9GaWxlIG9mIHByb3RvRmlsZXMpIHtcbiAgICBjb25zdCBmaWxlTmFtZTogc3RyaW5nID0gcHJvdG9GaWxlLm5hbWUgPz8gXCJcIlxuICAgIGlmICghZmlsZXNUb0dlbmVyYXRlLmhhcyhmaWxlTmFtZSkpIGNvbnRpbnVlXG5cbiAgICBsb2cuaW5mbyhcIkdlbmVyYXRpbmcgZm9yICVzXCIsIGZpbGVOYW1lKVxuXG4gICAgY29uc3QgbWVzc2FnZXMgPSBleHRyYWN0TWVzc2FnZXMocHJvdG9GaWxlLCBwcm90b0ZpbGUucGFja2FnZSA/PyBcIlwiKVxuICAgIGlmIChtZXNzYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGxvZy5pbmZvKFwiTm8gbWVzc2FnZXMgaW4gJXMsIHNraXBwaW5nXCIsIGZpbGVOYW1lKVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb25zdCByc0ZpbGVOYW1lID0gcHJvdG9GaWxlVG9Sc0ZpbGUoZmlsZU5hbWUsIHByb3RvRmlsZS5wYWNrYWdlID8/IFwiXCIpXG4gICAgY29uc3QgcnNDb250ZW50ID0gZ2VuZXJhdGVSc0ZpbGUobWVzc2FnZXMsIGZpbGVOYW1lKVxuXG4gICAgZmlsZXMucHVzaCh7IG5hbWU6IHJzRmlsZU5hbWUsIGNvbnRlbnQ6IHJzQ29udGVudCB9KVxuICAgIGxvZy5pbmZvKFwiR2VuZXJhdGVkICVzICglZCBtZXNzYWdlcylcIiwgcnNGaWxlTmFtZSwgbWVzc2FnZXMubGVuZ3RoKVxuICB9XG5cbiAgcmV0dXJuIHsgZmlsZXMgfVxufVxuXG4vKipcbiAqIFdhbGsgRGVzY3JpcHRvclByb3RvIHRyZWUsIGJ1aWxkaW5nIG91ciBNZXNzYWdlRGVzY3JpcHRvciBtb2RlbC5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdE1lc3NhZ2VzKFxuICBwcm90b0ZpbGU6IGFueSxcbiAgcGFja2FnZU5hbWU6IHN0cmluZ1xuKTogTWVzc2FnZURlc2NyaXB0b3JbXSB7XG4gIGNvbnN0IHJlc3VsdDogTWVzc2FnZURlc2NyaXB0b3JbXSA9IFtdXG4gIGNvbnN0IG1lc3NhZ2VUeXBlczogYW55W10gPSBwcm90b0ZpbGUubWVzc2FnZV90eXBlID8/IFtdXG5cbiAgZm9yIChjb25zdCBtc2cgb2YgbWVzc2FnZVR5cGVzKSB7XG4gICAgcmVzdWx0LnB1c2goY29udmVydERlc2NyaXB0b3IobXNnLCBwYWNrYWdlTmFtZSkpXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnREZXNjcmlwdG9yKGRlc2M6IGFueSwgcGFyZW50RnFuOiBzdHJpbmcpOiBNZXNzYWdlRGVzY3JpcHRvciB7XG4gIGNvbnN0IG5hbWU6IHN0cmluZyA9IGRlc2MubmFtZSA/PyBcIlwiXG4gIGNvbnN0IGZ1bGxOYW1lID0gcGFyZW50RnFuID8gYCR7cGFyZW50RnFufS4ke25hbWV9YCA6IG5hbWVcbiAgY29uc3QgaXNNYXBFbnRyeTogYm9vbGVhbiA9IGRlc2Mub3B0aW9ucz8ubWFwX2VudHJ5ID09PSB0cnVlXG5cbiAgY29uc3QgZmllbGRzOiBGaWVsZEluZm9bXSA9IChkZXNjLmZpZWxkID8/IFtdKS5tYXAoKGY6IGFueSkgPT4gKHtcbiAgICBuYW1lOiBmLm5hbWUgPz8gXCJcIixcbiAgICBudW1iZXI6IGYubnVtYmVyID8/IDAsXG4gICAgdHlwZTogZi50eXBlID8/IDAsXG4gICAgdHlwZU5hbWU6IGYudHlwZV9uYW1lLFxuICAgIGxhYmVsOiBmLmxhYmVsID8/IDEsXG4gICAgb25lb2ZJbmRleDogZi5vbmVvZl9pbmRleFxuICB9KSlcblxuICBjb25zdCBuZXN0ZWRNZXNzYWdlczogTWVzc2FnZURlc2NyaXB0b3JbXSA9IChkZXNjLm5lc3RlZF90eXBlID8/IFtdKS5tYXAoXG4gICAgKG5lc3RlZDogYW55KSA9PiBjb252ZXJ0RGVzY3JpcHRvcihuZXN0ZWQsIGZ1bGxOYW1lKVxuICApXG5cbiAgcmV0dXJuIHsgbmFtZSwgZnVsbE5hbWUsIGZpZWxkcywgbmVzdGVkTWVzc2FnZXMsIGlzTWFwRW50cnkgfVxufVxuXG4vKipcbiAqIEVuY29kZSB0aGUgQ29kZUdlbmVyYXRvclJlc3BvbnNlIGJhY2sgdG8gcHJvdG9idWYgYmluYXJ5LlxuICovXG5mdW5jdGlvbiBlbmNvZGVSZXNwb25zZShyZXN1bHQ6IFBsdWdpblJlc3VsdCk6IEJ1ZmZlciB7XG4gIGNvbnN0IFJlc3BUeXBlID0gcGx1Z2luUm9vdC5sb29rdXBUeXBlKFxuICAgIFwiZ29vZ2xlLnByb3RvYnVmLmNvbXBpbGVyLkNvZGVHZW5lcmF0b3JSZXNwb25zZVwiXG4gIClcblxuICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XG4gICAgc3VwcG9ydGVkX2ZlYXR1cmVzOiAxLCAvLyBGRUFUVVJFX1BST1RPM19PUFRJT05BTFxuICAgIGZpbGU6IHJlc3VsdC5maWxlcy5tYXAoZiA9PiAoe1xuICAgICAgbmFtZTogZi5uYW1lLFxuICAgICAgY29udGVudDogZi5jb250ZW50XG4gICAgfSkpXG4gIH1cblxuICBpZiAocmVzdWx0LmVycm9yKSB7XG4gICAgcGF5bG9hZC5lcnJvciA9IHJlc3VsdC5lcnJvclxuICB9XG5cbiAgY29uc3QgbXNnID0gUmVzcFR5cGUuY3JlYXRlKHBheWxvYWQpXG4gIHJldHVybiBCdWZmZXIuZnJvbShSZXNwVHlwZS5lbmNvZGUobXNnKS5maW5pc2goKSlcbn1cblxuLyoqXG4gKiBQYXJzZSBcImtleT12YWx1ZSxrZXkyPXZhbHVlMlwiIHBhcmFtZXRlciBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlUGFyYW1zKHBhcmFtOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge31cbiAgaWYgKCFwYXJhbSkgcmV0dXJuIHJlc3VsdFxuXG4gIGZvciAoY29uc3QgcGFpciBvZiBwYXJhbS5zcGxpdChcIixcIikpIHtcbiAgICBjb25zdCBlcSA9IHBhaXIuaW5kZXhPZihcIj1cIilcbiAgICBpZiAoZXEgPiAwKSB7XG4gICAgICByZXN1bHRbcGFpci5zbGljZSgwLCBlcSkudHJpbSgpXSA9IHBhaXIuc2xpY2UoZXEgKyAxKS50cmltKClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuIl19
|