@sdkgen/node-runtime 0.0.0-dev.20230109212108 → 0.0.0-dev.20230120140203

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.
@@ -1,114 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
1
3
  /* eslint-disable @typescript-eslint/no-unsafe-member-access */
2
4
  /* eslint-disable @typescript-eslint/no-unsafe-call */
3
- import { decode, encode } from "../src/index.js";
5
+ const src_1 = require("../src");
4
6
  describe("Encode/Decode", () => {
5
7
  test("Process CPF", () => {
6
- expect(encode({}, "", "cpf", "067.183.145-36")).toBe("06718314536");
7
- expect(decode({}, "", "cpf", "06718314536")).toBe("067.183.145-36");
8
+ expect((0, src_1.encode)({}, "", "cpf", "067.183.145-36")).toBe("06718314536");
9
+ expect((0, src_1.decode)({}, "", "cpf", "06718314536")).toBe("067.183.145-36");
8
10
  expect(() => {
9
- encode({}, "", "cpf", "067.183.145-35");
11
+ (0, src_1.encode)({}, "", "cpf", "067.183.145-35");
10
12
  }).toThrow();
11
13
  expect(() => {
12
- decode({}, "", "cpf", "06718314535");
14
+ (0, src_1.decode)({}, "", "cpf", "06718314535");
13
15
  }).toThrow();
14
16
  });
15
17
  test("Process CNPJ", () => {
16
- expect(encode({}, "", "cnpj", "18.571.767/0001-36")).toBe("18571767000136");
17
- expect(decode({}, "", "cnpj", "18571767000136")).toBe("18.571.767/0001-36");
18
+ expect((0, src_1.encode)({}, "", "cnpj", "18.571.767/0001-36")).toBe("18571767000136");
19
+ expect((0, src_1.decode)({}, "", "cnpj", "18571767000136")).toBe("18.571.767/0001-36");
18
20
  expect(() => {
19
- encode({}, "", "cnpj", "18.571.767/0001-35");
21
+ (0, src_1.encode)({}, "", "cnpj", "18.571.767/0001-35");
20
22
  }).toThrow();
21
23
  expect(() => {
22
- decode({}, "", "cnpj", "18571767000135");
24
+ (0, src_1.decode)({}, "", "cnpj", "18571767000135");
23
25
  }).toThrow();
24
26
  });
25
27
  test("Process URL", () => {
26
- expect(encode({}, "", "url", "https://cubos.io/")).toBe("https://cubos.io/");
27
- expect(decode({}, "", "url", "https://cubos.io/")).toBe("https://cubos.io/");
28
- expect(encode({}, "", "url", " https:cubos.io/ ")).toBe("https://cubos.io/");
29
- expect(encode({}, "", "url", " https:cubos.io ")).toBe("https://cubos.io/");
28
+ expect((0, src_1.encode)({}, "", "url", "https://cubos.io/")).toBe("https://cubos.io/");
29
+ expect((0, src_1.decode)({}, "", "url", "https://cubos.io/")).toBe("https://cubos.io/");
30
+ expect((0, src_1.encode)({}, "", "url", " https:cubos.io/ ")).toBe("https://cubos.io/");
31
+ expect((0, src_1.encode)({}, "", "url", " https:cubos.io ")).toBe("https://cubos.io/");
30
32
  expect(() => {
31
- encode({}, "", "url", "dfbdfb");
33
+ (0, src_1.encode)({}, "", "url", "dfbdfb");
32
34
  }).toThrow();
33
35
  expect(() => {
34
- decode({}, "", "url", "hhh.com");
36
+ (0, src_1.decode)({}, "", "url", "hhh.com");
35
37
  }).toThrow();
36
38
  });
37
39
  test("Process Base64", () => {
38
- expect(encode({}, "", "base64", "c3VyZS4=")).toBe("c3VyZS4=");
39
- expect(encode({}, "", "base64", "")).toBe("");
40
+ expect((0, src_1.encode)({}, "", "base64", "c3VyZS4=")).toBe("c3VyZS4=");
41
+ expect((0, src_1.encode)({}, "", "base64", "")).toBe("");
40
42
  expect(() => {
41
- encode({}, "", "base64", "c3VyZS4");
43
+ (0, src_1.encode)({}, "", "base64", "c3VyZS4");
42
44
  }).toThrow();
43
45
  expect(() => {
44
- encode({}, "", "base64", " c3VyZS4=");
46
+ (0, src_1.encode)({}, "", "base64", " c3VyZS4=");
45
47
  }).toThrow();
46
- expect(decode({}, "", "base64", "c3VyZS4=")).toBe("c3VyZS4=");
47
- expect(decode({}, "", "base64", "")).toBe("");
48
+ expect((0, src_1.decode)({}, "", "base64", "c3VyZS4=")).toBe("c3VyZS4=");
49
+ expect((0, src_1.decode)({}, "", "base64", "")).toBe("");
48
50
  expect(() => {
49
- decode({}, "", "base64", "c3VyZS4");
51
+ (0, src_1.decode)({}, "", "base64", "c3VyZS4");
50
52
  }).toThrow();
51
53
  expect(() => {
52
- decode({}, "", "base64", " c3VyZS4=");
54
+ (0, src_1.decode)({}, "", "base64", " c3VyZS4=");
53
55
  }).toThrow();
54
56
  });
55
57
  test("Process Date", () => {
56
- expect(encode({}, "", "date", new Date("2020-11-10T00:00:00Z"))).toBe("2020-11-10");
57
- expect(encode({}, "", "date", new Date("2020-11-10T15:34:50Z"))).toBe("2020-11-10");
58
- expect(encode({}, "", "date", "2020-11-10")).toBe("2020-11-10");
58
+ expect((0, src_1.encode)({}, "", "date", new Date("2020-11-10T00:00:00Z"))).toBe("2020-11-10");
59
+ expect((0, src_1.encode)({}, "", "date", new Date("2020-11-10T15:34:50Z"))).toBe("2020-11-10");
60
+ expect((0, src_1.encode)({}, "", "date", "2020-11-10")).toBe("2020-11-10");
59
61
  expect(() => {
60
- encode({}, "", "date", "2020-11-10T15:34:50Z");
62
+ (0, src_1.encode)({}, "", "date", "2020-11-10T15:34:50Z");
61
63
  }).toThrow();
62
64
  expect(() => {
63
- encode({}, "", "date", "hello world");
65
+ (0, src_1.encode)({}, "", "date", "hello world");
64
66
  }).toThrow();
65
67
  expect(() => {
66
- decode({}, "", "date", "2020-02-30");
68
+ (0, src_1.decode)({}, "", "date", "2020-02-30");
67
69
  }).toThrow();
68
70
  expect(() => {
69
- encode({}, "", "date", new Date(""));
71
+ (0, src_1.encode)({}, "", "date", new Date(""));
70
72
  }).toThrow();
71
73
  });
72
74
  test("Process Datetime", () => {
73
- expect(encode({}, "", "datetime", new Date("2020-11-10T15:34:50Z"))).toBe("2020-11-10T15:34:50.000");
74
- expect(encode({}, "", "datetime", "2020-11-10T15:34:50Z")).toBe("2020-11-10T15:34:50.000");
75
- expect(encode({}, "", "datetime", "2020-11-10T15:34:50.999")).toBe("2020-11-10T15:34:50.999");
76
- expect(encode({}, "", "datetime", "2020-11-10T15:34:50+01:00")).toBe("2020-11-10T14:34:50.000");
77
- expect(encode({}, "", "datetime", "2020-11-10T15:34:50.999+01:00")).toBe("2020-11-10T14:34:50.999");
75
+ expect((0, src_1.encode)({}, "", "datetime", new Date("2020-11-10T15:34:50Z"))).toBe("2020-11-10T15:34:50.000");
76
+ expect((0, src_1.encode)({}, "", "datetime", "2020-11-10T15:34:50Z")).toBe("2020-11-10T15:34:50.000");
77
+ expect((0, src_1.encode)({}, "", "datetime", "2020-11-10T15:34:50.999")).toBe("2020-11-10T15:34:50.999");
78
+ expect((0, src_1.encode)({}, "", "datetime", "2020-11-10T15:34:50+01:00")).toBe("2020-11-10T14:34:50.000");
79
+ expect((0, src_1.encode)({}, "", "datetime", "2020-11-10T15:34:50.999+01:00")).toBe("2020-11-10T14:34:50.999");
78
80
  expect(() => {
79
- encode({}, "", "datetime", "2020-11-10");
81
+ (0, src_1.encode)({}, "", "datetime", "2020-11-10");
80
82
  }).toThrow();
81
83
  expect(() => {
82
- encode({}, "", "datetime", "hello world");
84
+ (0, src_1.encode)({}, "", "datetime", "hello world");
83
85
  }).toThrow();
84
86
  expect(() => {
85
- encode({}, "", "datetime", "2020-11-10T15:34:50.999$01:00");
87
+ (0, src_1.encode)({}, "", "datetime", "2020-11-10T15:34:50.999$01:00");
86
88
  }).toThrow();
87
89
  expect(() => {
88
- decode({}, "", "datetime", "2020-11-10T15:34:50.999$01:00");
90
+ (0, src_1.decode)({}, "", "datetime", "2020-11-10T15:34:50.999$01:00");
89
91
  }).toThrow();
90
- expect(decode({}, "", "datetime", "2020-11-10T15:34:50Z").getTime()).toBe(new Date("2020-11-10T15:34:50Z").getTime());
91
- expect(decode({}, "", "datetime", "2020-11-10T15:34:50.000").getTime()).toBe(new Date("2020-11-10T15:34:50Z").getTime());
92
+ expect((0, src_1.decode)({}, "", "datetime", "2020-11-10T15:34:50Z").getTime()).toBe(new Date("2020-11-10T15:34:50Z").getTime());
93
+ expect((0, src_1.decode)({}, "", "datetime", "2020-11-10T15:34:50.000").getTime()).toBe(new Date("2020-11-10T15:34:50Z").getTime());
92
94
  expect(() => {
93
- encode({}, "", "datetime", new Date(""));
95
+ (0, src_1.encode)({}, "", "datetime", new Date(""));
94
96
  }).toThrow();
95
97
  });
96
98
  test("Process BigInt", () => {
97
- expect(encode({}, "", "bigint", BigInt(10))).toBe("10");
99
+ expect((0, src_1.encode)({}, "", "bigint", BigInt(10))).toBe("10");
98
100
  expect(() => {
99
- encode({}, "", "bigint", 10);
101
+ (0, src_1.encode)({}, "", "bigint", 10);
100
102
  }).toThrow();
101
103
  expect(() => {
102
- encode({}, "", "bigint", "10");
104
+ (0, src_1.encode)({}, "", "bigint", "10");
103
105
  }).toThrow();
104
- expect(decode({}, "", "bigint", 10)).toBe(BigInt(10));
105
- expect(decode({}, "", "bigint", "10")).toBe(BigInt(10));
106
+ expect((0, src_1.decode)({}, "", "bigint", 10)).toBe(BigInt(10));
107
+ expect((0, src_1.decode)({}, "", "bigint", "10")).toBe(BigInt(10));
106
108
  expect(() => {
107
- decode({}, "", "bigint", "hello world");
109
+ (0, src_1.decode)({}, "", "bigint", "hello world");
108
110
  }).toThrow();
109
111
  });
110
112
  test("Process Enum", () => {
111
- for (const func of [encode, decode]) {
113
+ for (const func of [src_1.encode, src_1.decode]) {
112
114
  expect(func({}, "", ["a", "b"], "a")).toBe("a");
113
115
  expect(func({}, "", ["a", "b"], "b")).toBe("b");
114
116
  expect(() => {
@@ -118,10 +120,9 @@ describe("Encode/Decode", () => {
118
120
  func({ X: { v: "int" } }, "", ["a", ["b", "X"]], "b");
119
121
  }).toThrow();
120
122
  }
121
- expect(encode({ X: { v: "int" } }, "", ["a", ["b", "X"]], { tag: "a" })).toBe("a");
122
- expect(encode({ X: { v: "int" } }, "", ["a", ["b", "X"]], { tag: "b", v: 4 })).toEqual(["b", { v: 4 }]);
123
- expect(decode({ X: { v: "int" } }, "", ["a", ["b", "X"]], "a")).toEqual({ tag: "a" });
124
- expect(decode({ X: { v: "int" } }, "", ["a", ["b", "X"]], ["b", { v: 4 }])).toEqual({ tag: "b", v: 4 });
123
+ expect((0, src_1.encode)({ X: { v: "int" } }, "", ["a", ["b", "X"]], { tag: "a" })).toBe("a");
124
+ expect((0, src_1.encode)({ X: { v: "int" } }, "", ["a", ["b", "X"]], { tag: "b", v: 4 })).toEqual(["b", { v: 4 }]);
125
+ expect((0, src_1.decode)({ X: { v: "int" } }, "", ["a", ["b", "X"]], "a")).toEqual({ tag: "a" });
126
+ expect((0, src_1.decode)({ X: { v: "int" } }, "", ["a", ["b", "X"]], ["b", { v: 4 }])).toEqual({ tag: "b", v: 4 });
125
127
  });
126
128
  });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NwZWMvdHlwZXMuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrREFBK0Q7QUFDL0Qsc0RBQXNEO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7SUFDN0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7UUFDdkIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRSxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtRQUN4QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1RSxNQUFNLENBQUMsTUFBTSxDQUFD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Q0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFeEcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDdEYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUcsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1jYWxsICovXG5pbXBvcnQgeyBkZWNvZGUsIGVuY29kZSB9IGZyb20gXCIuLi9zcmMvaW5kZXguanNcIjtcblxuZGVzY3JpYmUoXCJFbmNvZGUvRGVjb2RlXCIsICgpID0+IHtcbiAgdGVzdChcIlByb2Nlc3MgQ1BGXCIsICgpID0+IHtcbiAgICBleHBlY3QoZW5jb2RlKHt9LCBcIlwiLCBcImNwZlwiLCBcIjA2Ny4xODMuMTQ1LTM2XCIpKS50b0JlKFwiMDY3MTgzMTQ1MzZcIik7XG4gICAgZXhwZWN0KGRlY29kZSh7fSwgXCJcIiwgXCJjcGZcIiwgXCIwNjcxODMxNDUzNlwiKSkudG9CZShcIjA2Ny4xODMuMTQ1LTM2XCIpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBlbmNvZGUoe30sIFwiXCIsIFwiY3BmXCIsIFwiMDY3LjE4My4xNDUtMzVcIik7XG4gICAgfSkudG9UaHJvdygpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBkZWNvZGUoe30sIFwiXCIsIFwiY3BmXCIsIFwiMDY3MTgzMTQ1MzVcIik7XG4gICAgfSkudG9UaHJvdygpO1xuICB9KTtcblxuICB0ZXN0KFwiUHJvY2VzcyBDTlBKXCIsICgpID0+IHtcbiAgICBleHBlY3QoZW5jb2RlKHt9LCBcIlwiLCBcImNucGpcIiwgXCIxOC41NzEuNzY3LzAwMDEtMzZcIikpLnRvQmUoXCIxODU3MTc2NzAwMDEzNlwiKTtcbiAgICBleHBlY3QoZGVjb2RlKHt9LCBcIlwiLCBcImNucGpcIiwgXCIxODU3MTc2NzAwMDEzNlwiKSkudG9CZShcIjE4LjU3MS43NjcvMDAwMS0zNlwiKTtcbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgZW5jb2RlKHt9LCBcIlwiLCBcImNucGpcIiwgXCIxOC41NzEuNzY3LzAwMDEtMzVcIik7XG4gICAgfSkudG9UaHJvdygpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBkZWNvZGUoe30sIFwiXCIsIFwiY25walwiLCBcIjE4NTcxNzY3MDAwMTM1XCIpO1xuICAgIH0pLnRvVGhyb3coKTtcbiAgfSk7XG5cbiAgdGVzdChcIlByb2Nlc3MgVVJMXCIsICgpID0+IHtcbiAgICBleHBlY3QoZW5jb2RlKHt9LCBcIlwiLCBcInVybFwiLCBcImh0dHBzOi8vY3Vib3MuaW8vXCIpKS50b0JlKFwiaHR0cHM6Ly9jdWJvcy5pby9cIik7XG4gICAgZXhwZWN0KGRlY29kZSh7fSwgXCJcIiwgXCJ1cmxcIiwgXCJodHRwczovL2N1Ym9zLmlvL1wiKSkudG9CZShcImh0dHBzOi8vY3Vib3MuaW8vXCIpO1xuICAgIGV4cGVjdChlbmNvZGUoe30sIFwiXCIsIFwidXJsXCIsIFwiIGh0dHBzOmN1Ym9zLmlvLyAgXCIpKS50b0JlKFwiaHR0cHM6Ly9jdWJvcy5pby9cIik7XG4gICAgZXhwZWN0KGVuY29kZSh7fSwgXCJcIiwgXCJ1cmxcIiwgXCIgaHR0cHM6Y3Vib3MuaW8gIFwiKSkudG9CZShcImh0dHBzOi8vY3Vib3MuaW8vXCIpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBlbmNvZGUoe30sIFwiXCIsIFwidXJsXCIsIFwiZGZiZGZiXCIpO1xuICAgIH0pLnRvVGhyb3coKTtcbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgZGVjb2RlKHt9LCBcIlwiLCBcInVybFwiLCBcImhoaC5jb21cIik7XG4gICAgfSkudG9UaHJvdygpO1xuICB9KTtcblxuICB0ZXN0KFwiUHJvY2VzcyBCYXNlNjRcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChlbmNvZGUoe30sIFwiXCIsIFwiYmFzZTY0XCIsIFwiYzNWeVpTND1cIikpLnRvQmUoXCJjM1Z5WlM0PVwiKTtcbiAgICBleHBlY3QoZW5jb2RlKHt9LCBcIlwiLCBcImJhc2U2NFwiLCBcIlwiKSkudG9CZShcIlwiKTtcbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgZW5jb2RlKHt9LCBcIlwiLCBcImJhc2U2NFwiLCBcImMzVnlaUzRcIik7XG4gICAgfSkudG9UaHJvdygpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBlbmNvZGUoe30sIFwiXCIsIFwiYmFzZTY0XCIsIFwiIGMzVnlaUzQ9XCIpO1xuICAgIH0pLnRvVGhyb3coKTtcbiAgICBleHBlY3QoZGVjb2RlKHt9LCBcIlwiLCBcImJhc2U2NFwiLCBcImMzVnlaUzQ9XCIpKS50b0JlKFwiYzNWeVpTND1cIik7XG4gICAgZXhwZWN0KGRlY29kZSh7fSwgXCJcIiwgXCJiYXNlNjRcIiwgXCJcIikpLnRvQmUoXCJcIik7XG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIGRlY29kZSh7fSwgXCJcIiwgXCJiYXNlNjRcIiwgXCJjM1Z5WlM0XCIpO1xuICAgIH0pLnRvVGhyb3coKTtcbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgZGVjb2RlKHt9LCBcIlwiLCBcImJhc2U2NFwiLCBcIiBjM1Z5WlM0PVwiKTtcbiAgICB9KS50b1Rocm93KCk7XG4gIH0pO1xuXG4gIHRlc3QoXCJQcm9jZXNzIERhdGVcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChlbmNvZGUoe30sIFwiXCIsIFwiZGF0ZVwiLCBuZXcgRGF0ZShcIjIwMjAtMTEtMTBUMDA6MDA6MDBaXCIpKSkudG9CZShcIjIwMjAtMTEtMTBcIik7XG4gICAgZXhwZWN0KGVuY29kZSh7fSwgXCJcIiwgXCJkYXRlXCIsIG5ldyBEYXRlKFwiMjAyMC0xMS0xMFQxNTozNDo1MFpcIikpKS50b0JlKFwiMjAyMC0xMS0xMFwiKTtcbiAgICBleHBlY3QoZW5jb2RlKHt9LCBcIlwiLCBcImRhdGVcIiwgXCIyMDIwLTExLTEwXCIpKS50b0JlKFwiMjAyMC0xMS0xMFwiKTtcbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgZW5jb2RlKHt9LCBcIlwiLCBcImRhdGVcIiwgXCIyMDIwLTExLTEwVDE1OjM0OjUwWlwiKTtcbiAgICB9KS50b1Rocm93KCk7XG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIGVuY29kZSh7fSwgXCJcIiwgXCJkYXRlXCIsIFwiaGVsbG8gd29ybGRcIik7XG4gICAgfSkudG9UaHJvdygpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBkZWNvZGUoe30sIFwiXCIsIFwiZGF0ZVwiLCBcIjIwMjAtMDItMzBcIik7XG4gICAgfSkudG9UaHJvdygpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBlbmNvZGUoe30sIFwiXCIsIFwiZGF0ZVwiLCBuZXcgRGF0ZShcIlwiKSk7XG4gICAgfSkudG9UaHJvdygpO1xuICB9KTtcblxuICB0ZXN0KFwiUHJvY2VzcyBEYXRldGltZVwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGVuY29kZSh7fSwgXCJcIiwgXCJkYXRldGltZVwiLCBuZXcgRGF0ZShcIjIwMjAtMTEtMTBUMTU6MzQ6NTBaXCIpKSkudG9CZShcIjIwMjAtMTEtMTBUMTU6MzQ6NTAuMDAwXCIpO1xuICAgIGV4cGVjdChlbmNvZGUoe30sIFwiXCIsIFwiZGF0ZXRpbWVcIiwgXCIyMDIwLTExLTEwVDE1OjM0OjUwWlwiKSkudG9CZShcIjIwMjAtMTEtMTBUMTU6MzQ6NTAuMDAwXCIpO1xuICAgIGV4cGVjdChlbmNvZGUoe30sIFwiXCIsIFwiZGF0ZXRpbWVcIiwgXCIyMDIwLTExLTEwVDE1OjM0OjUwLjk5OVwiKSkudG9CZShcIjIwMjAtMTEtMTBUMTU6MzQ6NTAuOTk5XCIpO1xuICAgIGV4cGVjdChlbmNvZGUoe30sIFwiXCIsIFwiZGF0ZXRpbWVcIiwgXCIyMDIwLTExLTEwVDE1OjM0OjUwKzAxOjAwXCIpKS50b0JlKFwiMjAyMC0xMS0xMFQxNDozNDo1MC4wMDBcIik7XG4gICAgZXhwZWN0KGVuY29kZSh7fSwgXCJcIiwgXCJkYXRldGltZVwiLCBcIjIwMjAtMTEtMTBUMTU6MzQ6NTAuOTk5KzAxOjAwXCIpKS50b0JlKFwiMjAyMC0xMS0xMFQxNDozNDo1MC45OTlcIik7XG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIGVuY29kZSh7fSwgXCJcIiwgXCJkYXRldGltZVwiLCBcIjIwMjAtMTEtMTBcIik7XG4gICAgfSkudG9UaHJvdygpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBlbmNvZGUoe30sIFwiXCIsIFwiZGF0ZXRpbWVcIiwgXCJoZWxsbyB3b3JsZFwiKTtcbiAgICB9KS50b1Rocm93KCk7XG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIGVuY29kZSh7fSwgXCJcIiwgXCJkYXRldGltZVwiLCBcIjIwMjAtMTEtMTBUMTU6MzQ6NTAuOTk5JDAxOjAwXCIpO1xuICAgIH0pLnRvVGhyb3coKTtcbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgZGVjb2RlKHt9LCBcIlwiLCBcImRhdGV0aW1lXCIsIFwiMjAyMC0xMS0xMFQxNTozNDo1MC45OTkkMDE6MDBcIik7XG4gICAgfSkudG9UaHJvdygpO1xuICAgIGV4cGVjdChkZWNvZGUoe30sIFwiXCIsIFwiZGF0ZXRpbWVcIiwgXCIyMDIwLTExLTEwVDE1OjM0OjUwWlwiKS5nZXRUaW1lKCkpLnRvQmUobmV3IERhdGUoXCIyMDIwLTExLTEwVDE1OjM0OjUwWlwiKS5nZXRUaW1lKCkpO1xuICAgIGV4cGVjdChkZWNvZGUoe30sIFwiXCIsIFwiZGF0ZXRpbWVcIiwgXCIyMDIwLTExLTEwVDE1OjM0OjUwLjAwMFwiKS5nZXRUaW1lKCkpLnRvQmUobmV3IERhdGUoXCIyMDIwLTExLTEwVDE1OjM0OjUwWlwiKS5nZXRUaW1lKCkpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBlbmNvZGUoe30sIFwiXCIsIFwiZGF0ZXRpbWVcIiwgbmV3IERhdGUoXCJcIikpO1xuICAgIH0pLnRvVGhyb3coKTtcbiAgfSk7XG5cbiAgdGVzdChcIlByb2Nlc3MgQmlnSW50XCIsICgpID0+IHtcbiAgICBleHBlY3QoZW5jb2RlKHt9LCBcIlwiLCBcImJpZ2ludFwiLCBCaWdJbnQoMTApKSkudG9CZShcIjEwXCIpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBlbmNvZGUoe30sIFwiXCIsIFwiYmlnaW50XCIsIDEwKTtcbiAgICB9KS50b1Rocm93KCk7XG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIGVuY29kZSh7fSwgXCJcIiwgXCJiaWdpbnRcIiwgXCIxMFwiKTtcbiAgICB9KS50b1Rocm93KCk7XG4gICAgZXhwZWN0KGRlY29kZSh7fSwgXCJcIiwgXCJiaWdpbnRcIiwgMTApKS50b0JlKEJpZ0ludCgxMCkpO1xuICAgIGV4cGVjdChkZWNvZGUoe30sIFwiXCIsIFwiYmlnaW50XCIsIFwiMTBcIikpLnRvQmUoQmlnSW50KDEwKSk7XG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIGRlY29kZSh7fSwgXCJcIiwgXCJiaWdpbnRcIiwgXCJoZWxsbyB3b3JsZFwiKTtcbiAgICB9KS50b1Rocm93KCk7XG4gIH0pO1xuXG4gIHRlc3QoXCJQcm9jZXNzIEVudW1cIiwgKCkgPT4ge1xuICAgIGZvciAoY29uc3QgZnVuYyBvZiBbZW5jb2RlLCBkZWNvZGVdKSB7XG4gICAgICBleHBlY3QoZnVuYyh7fSwgXCJcIiwgW1wiYVwiLCBcImJcIl0sIFwiYVwiKSkudG9CZShcImFcIik7XG4gICAgICBleHBlY3QoZnVuYyh7fSwgXCJcIiwgW1wiYVwiLCBcImJcIl0sIFwiYlwiKSkudG9CZShcImJcIik7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBmdW5jKHt9LCBcIlwiLCBbXCJhXCIsIFwiYlwiXSwgXCJjXCIpO1xuICAgICAgfSkudG9UaHJvdygpO1xuXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBmdW5jKHsgWDogeyB2OiBcImludFwiIH0gfSwgXCJcIiwgW1wiYVwiLCBbXCJiXCIsIFwiWFwiXV0sIFwiYlwiKTtcbiAgICAgIH0pLnRvVGhyb3coKTtcbiAgICB9XG5cbiAgICBleHBlY3QoZW5jb2RlKHsgWDogeyB2OiBcImludFwiIH0gfSwgXCJcIiwgW1wiYVwiLCBbXCJiXCIsIFwiWFwiXV0sIHsgdGFnOiBcImFcIiB9KSkudG9CZShcImFcIik7XG4gICAgZXhwZWN0KGVuY29kZSh7IFg6IHsgdjogXCJpbnRcIiB9IH0sIFwiXCIsIFtcImFcIiwgW1wiYlwiLCBcIlhcIl1dLCB7IHRhZzogXCJiXCIsIHY6IDQgfSkpLnRvRXF1YWwoW1wiYlwiLCB7IHY6IDQgfV0pO1xuXG4gICAgZXhwZWN0KGRlY29kZSh7IFg6IHsgdjogXCJpbnRcIiB9IH0sIFwiXCIsIFtcImFcIiwgW1wiYlwiLCBcIlhcIl1dLCBcImFcIikpLnRvRXF1YWwoeyB0YWc6IFwiYVwiIH0pO1xuICAgIGV4cGVjdChkZWNvZGUoeyBYOiB7IHY6IFwiaW50XCIgfSB9LCBcIlwiLCBbXCJhXCIsIFtcImJcIiwgXCJYXCJdXSwgW1wiYlwiLCB7IHY6IDQgfV0pKS50b0VxdWFsKHsgdGFnOiBcImJcIiwgdjogNCB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import type { AstJson, AstRoot } from "@sdkgen/parser";
2
- import type { Context, ContextReply } from "./context.js";
3
- import type { DeepReadonly } from "./utils.js";
4
- export type Middleware<ExtraContextT> = (ctx: Context & ExtraContextT, next: () => Promise<ContextReply>) => Promise<ContextReply>;
2
+ import type { Context, ContextReply } from "./context";
3
+ import type { DeepReadonly } from "./utils";
4
+ type Middleware<ExtraContextT> = (ctx: Context & ExtraContextT, next: () => Promise<ContextReply>) => Promise<ContextReply>;
5
5
  export declare class BaseApiConfig<ExtraContextT = unknown> {
6
6
  private _ast;
7
7
  get ast(): AstRoot;
@@ -12,3 +12,4 @@ export declare class BaseApiConfig<ExtraContextT = unknown> {
12
12
  readonly middlewares: Array<Middleware<ExtraContextT>>;
13
13
  use(middleware: Middleware<ExtraContextT>): void;
14
14
  }
15
+ export {};
@@ -1,14 +1,18 @@
1
- import { jsonToAst } from "@sdkgen/parser";
2
- export class BaseApiConfig {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseApiConfig = void 0;
4
+ const parser_1 = require("@sdkgen/parser");
5
+ class BaseApiConfig {
3
6
  constructor() {
4
7
  this.fn = {};
5
8
  this.middlewares = [];
6
9
  }
7
10
  get ast() {
8
- return (this._ast ??= jsonToAst(this.astJson));
11
+ var _a;
12
+ return ((_a = this._ast) !== null && _a !== void 0 ? _a : (this._ast = (0, parser_1.jsonToAst)(this.astJson)));
9
13
  }
10
14
  use(middleware) {
11
15
  this.middlewares.push(middleware);
12
16
  }
13
17
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGktY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU8zQyxNQUFNLE9BQU8sYUFBYTtJQUExQjtRQVNFLE9BQUUsR0FHRSxFQUFFLENBQUM7UUFFRSxnQkFBVyxHQUFxQyxFQUFFLENBQUM7SUFLOUQsQ0FBQztJQWhCQyxJQUFJLEdBQUc7UUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQVdELEdBQUcsQ0FBQyxVQUFxQztRQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFzdEpzb24sIEFzdFJvb3QgfSBmcm9tIFwiQHNka2dlbi9wYXJzZXJcIjtcbmltcG9ydCB7IGpzb25Ub0FzdCB9IGZyb20gXCJAc2RrZ2VuL3BhcnNlclwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbnRleHQsIENvbnRleHRSZXBseSB9IGZyb20gXCIuL2NvbnRleHQuanNcIjtcbmltcG9ydCB0eXBlIHsgRGVlcFJlYWRvbmx5IH0gZnJvbSBcIi4vdXRpbHMuanNcIjtcblxuZXhwb3J0IHR5cGUgTWlkZGxld2FyZTxFeHRyYUNvbnRleHRUPiA9IChjdHg6IENvbnRleHQgJiBFeHRyYUNvbnRleHRULCBuZXh0OiAoKSA9PiBQcm9taXNlPENvbnRleHRSZXBseT4pID0+IFByb21pc2U8Q29udGV4dFJlcGx5PjtcblxuZXhwb3J0IGNsYXNzIEJhc2VBcGlDb25maWc8RXh0cmFDb250ZXh0VCA9IHVua25vd24+IHtcbiAgcHJpdmF0ZSBfYXN0OiBBc3RSb290IHwgdW5kZWZpbmVkO1xuXG4gIGdldCBhc3QoKSB7XG4gICAgcmV0dXJuICh0aGlzLl9hc3QgPz89IGpzb25Ub0FzdCh0aGlzLmFzdEpzb24pKTtcbiAgfVxuXG4gIGFzdEpzb24hOiBEZWVwUmVhZG9ubHk8QXN0SnNvbj47XG5cbiAgZm46IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIFtuYW1lOiBzdHJpbmddOiAoKGN0eDogQ29udGV4dCAmIEV4dHJhQ29udGV4dFQsIGFyZ3M6IGFueSkgPT4gUHJvbWlzZTxhbnk+KSB8IHVuZGVmaW5lZDtcbiAgfSA9IHt9O1xuXG4gIHJlYWRvbmx5IG1pZGRsZXdhcmVzOiBBcnJheTxNaWRkbGV3YXJlPEV4dHJhQ29udGV4dFQ+PiA9IFtdO1xuXG4gIHVzZShtaWRkbGV3YXJlOiBNaWRkbGV3YXJlPEV4dHJhQ29udGV4dFQ+KTogdm9pZCB7XG4gICAgdGhpcy5taWRkbGV3YXJlcy5wdXNoKG1pZGRsZXdhcmUpO1xuICB9XG59XG4iXX0=
18
+ exports.BaseApiConfig = BaseApiConfig;
@@ -1,5 +1,5 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
3
  import type { IncomingHttpHeaders, OutgoingHttpHeader } from "http";
4
4
  import type { Readable } from "stream";
5
5
  export interface ContextRequest {
@@ -25,7 +25,7 @@ export interface ContextRequest {
25
25
  }>;
26
26
  }
27
27
  export interface ContextReply {
28
- error?: unknown;
28
+ error?: any;
29
29
  result?: unknown;
30
30
  }
31
31
  export interface ContextResponse {
@@ -1,2 +1,2 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEluY29taW5nSHR0cEhlYWRlcnMsIE91dGdvaW5nSHR0cEhlYWRlciB9IGZyb20gXCJodHRwXCI7XG5pbXBvcnQgdHlwZSB7IFJlYWRhYmxlIH0gZnJvbSBcInN0cmVhbVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRSZXF1ZXN0IHtcbiAgYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGRldmljZUluZm86IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGxhbmd1YWdlOiBzdHJpbmcgfCBudWxsO1xuICAgIHBsYXRmb3JtOiB1bmtub3duO1xuICAgIHRpbWV6b25lOiBzdHJpbmcgfCBudWxsO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICAgIGZpbmdlcnByaW50OiBzdHJpbmcgfCBudWxsO1xuICB9O1xuICBleHRyYTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGhlYWRlcnM6IEluY29taW5nSHR0cEhlYWRlcnM7XG4gIGlkOiBzdHJpbmc7XG4gIGlwOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogbnVtYmVyO1xuICBmaWxlczogQXJyYXk8e1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb250ZW50czogUmVhZGFibGU7XG4gIH0+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRSZXBseSB7XG4gIGVycm9yPzogdW5rbm93bjtcbiAgcmVzdWx0PzogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0UmVzcG9uc2Uge1xuICBzdGF0dXNDb2RlPzogbnVtYmVyO1xuICBoZWFkZXJzOiBNYXA8c3RyaW5nLCBPdXRnb2luZ0h0dHBIZWFkZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHQge1xuICByZXF1ZXN0OiBDb250ZXh0UmVxdWVzdDtcbiAgcmVzcG9uc2U6IENvbnRleHRSZXNwb25zZTtcbn1cbiJdfQ==
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,7 +1,7 @@
1
- /// <reference types="node" resolution-mode="require"/>
1
+ /// <reference types="node" />
2
2
  import type { AstJson, TypeDescription } from "@sdkgen/parser";
3
3
  import { Decimal } from "decimal.js";
4
- import type { DeepReadonly } from "./utils.js";
4
+ import type { DeepReadonly } from "./utils";
5
5
  type TypeTable = AstJson["typeTable"];
6
6
  type ExpandRecursively<T> = T extends object ? (T extends infer O ? {
7
7
  [K in keyof O]: ExpandRecursively<O[K]>;
@@ -1,6 +1,43 @@
1
- import * as CNPJ from "@fnando/cnpj";
2
- import * as CPF from "@fnando/cpf";
3
- import { Decimal } from "decimal.js";
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __rest = (this && this.__rest) || function (s, e) {
26
+ var t = {};
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
+ t[p] = s[p];
29
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
+ t[p[i]] = s[p[i]];
33
+ }
34
+ return t;
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.decode = exports.encode = void 0;
38
+ const CNPJ = __importStar(require("@fnando/cnpj"));
39
+ const CPF = __importStar(require("@fnando/cpf"));
40
+ const decimal_js_1 = require("decimal.js");
4
41
  const simpleStringTypes = ["string", "email", "html", "xml"];
5
42
  const simpleTypes = ["json", "bool", "url", "int", "uint", "float", "money", "hex", "uuid", "base64", "void", ...simpleStringTypes];
6
43
  class ParseError extends Error {
@@ -96,7 +133,7 @@ function simpleEncodeDecode(path, type, value) {
96
133
  }
97
134
  throw new Error(`Unknown type '${type}' at '${path}'`);
98
135
  }
99
- export function encode(typeTable, path, type, value) {
136
+ function encode(typeTable, path, type, value) {
100
137
  if (typeof type === "string" && !type.endsWith("?") && type !== "void" && (value === null || value === undefined)) {
101
138
  throw new Error(`Invalid type at '${path}', cannot be null`);
102
139
  }
@@ -109,7 +146,7 @@ export function encode(typeTable, path, type, value) {
109
146
  }
110
147
  }
111
148
  else if (typeof value === "object" && value && "tag" in value) {
112
- const { tag: tagValue, ...restValue } = value;
149
+ const _a = value, { tag: tagValue } = _a, restValue = __rest(_a, ["tag"]);
113
150
  for (const entry of type) {
114
151
  if (typeof entry === "string") {
115
152
  if (entry === tagValue) {
@@ -195,10 +232,10 @@ export function encode(typeTable, path, type, value) {
195
232
  return (typeof value === "string" ? new Date(value) : value).toISOString().replace("Z", "");
196
233
  }
197
234
  else if (type === "decimal") {
198
- if (typeof value !== "number" && (typeof value !== "string" || !/^-?[0-9]+(?:\.[0-9]+)?$/u.test(value)) && !(value instanceof Decimal)) {
235
+ if (typeof value !== "number" && (typeof value !== "string" || !/^-?[0-9]+(?:\.[0-9]+)?$/u.test(value)) && !(value instanceof decimal_js_1.Decimal)) {
199
236
  throw new ParseError(path, type, value);
200
237
  }
201
- return new Decimal(value).toString();
238
+ return new decimal_js_1.Decimal(value).toString();
202
239
  }
203
240
  else {
204
241
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
@@ -209,7 +246,8 @@ export function encode(typeTable, path, type, value) {
209
246
  throw new Error(`Unknown type '${type}' at '${path}'`);
210
247
  }
211
248
  }
212
- export function decode(typeTable, path, type, value) {
249
+ exports.encode = encode;
250
+ function decode(typeTable, path, type, value) {
213
251
  if (typeof type === "string" && !type.endsWith("?") && type !== "void" && (value === null || value === undefined)) {
214
252
  throw new Error(`Invalid type at '${path}', cannot be null`);
215
253
  }
@@ -232,11 +270,11 @@ export function decode(typeTable, path, type, value) {
232
270
  const [tag, valueType] = entry;
233
271
  if (tag === value) {
234
272
  const decodedValues = decode(typeTable, `${path}.${tag}`, valueType, {});
235
- return { ...decodedValues, tag };
273
+ return Object.assign(Object.assign({}, decodedValues), { tag });
236
274
  }
237
275
  else if (Array.isArray(value) && value.length === 2 && tag === value[0]) {
238
276
  const decodedValues = decode(typeTable, `${path}.${tag}`, valueType, value[1]);
239
- return { ...decodedValues, tag };
277
+ return Object.assign(Object.assign({}, decodedValues), { tag });
240
278
  }
241
279
  }
242
280
  }
@@ -319,7 +357,7 @@ export function decode(typeTable, path, type, value) {
319
357
  if (typeof value !== "number" && (typeof value !== "string" || !/^-?[0-9]+(?:\.[0-9]+)?$/u.test(value))) {
320
358
  throw new ParseError(path, type, value);
321
359
  }
322
- return new Decimal(value);
360
+ return new decimal_js_1.Decimal(value);
323
361
  }
324
362
  else {
325
363
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
@@ -331,4 +369,4 @@ export function decode(typeTable, path, type, value) {
331
369
  throw new Error(`Unknown type '${type}' at '${path}'`);
332
370
  }
333
371
  }
334
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RlLWRlY29kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbmNvZGUtZGVjb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sY0FBYyxDQUFDO0FBQ3JDLE9BQU8sS0FBSyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBRW5DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFNckMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzdELE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLGlCQUFpQixDQUFDLENBQUM7QUFrR3BJLE1BQU0sVUFBVyxTQUFRLEtBQUs7SUFDNUIsWUFBWSxJQUFZLEVBQUUsSUFBbUMsRUFBRSxLQUFjO1FBQzNFLElBQUksR0FBVyxDQUFDO1FBRWhCLElBQUk7WUFDRixHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyQjtRQUVELEtBQUssQ0FBQyxvQkFBb0IsSUFBSSxlQUFlLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDRjtBQUVELFNBQVMsa0JBQWtCLENBQUMsSUFBWSxFQUFFLElBQVksRUFBRSxLQUFjO0lBQ3BFLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtRQUNuQixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN6QyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQVksQ0FBQztLQUNyRDtTQUFNLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtRQUMxQixJQUFJLE9BQU8sS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUM5QixNQUFNLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU0sSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDM0MsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDN0IsTUFBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRTtRQUN6QixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN0RSxNQUFNLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUM1QjtTQUFNLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtRQUMxQixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLGdGQUFnRixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5SCxNQUFNLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUM1QjtTQUFNLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRTtRQUM1QixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssS0FBSyxFQUFFO1lBQzFGLE1BQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN6QztRQUVELE9BQU8sS0FBSyxDQUFDO0tBQ2Q7U0FBTSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUU7UUFDekIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFO1lBQ3RELE1BQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN6QztRQUVELE9BQU8sS0FBSyxDQUFDO0tBQ2Q7U0FBTSxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7UUFDMUIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDbkUsTUFBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRTtRQUMzQixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUM3QixNQUFNLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU0sSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFO1FBQzNCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6RCxNQUFNLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU0sSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFO1FBQ3pCLElBQUksR0FBb0IsQ0FBQztRQUV6QixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUM3QixJQUFJO2dCQUNGLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN0QjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLFNBQVM7YUFDVjtTQUNGO1FBRUQsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNSLE1BQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN6QztRQUVELE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBQ3ZCO1NBQU0sSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixJQUFJLFNBQVMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBRUQsTUFBTSxVQUFVLE1BQU0sQ0FDcEIsU0FBZ0IsRUFDaEIsSUFBWSxFQUNaLElBQVUsRUFDVixLQUFjO0lBRWQsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksS0FBSyxNQUFNLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUMsRUFBRTtRQUNqSCxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixJQUFJLG1CQUFtQixDQUFDLENBQUM7S0FDOUQ7U0FBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDOUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDLEVBQUU7WUFDOUMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7Z0JBQ3RCLElBQUksR0FBRyxLQUFLLEtBQUssRUFBRTtvQkFDakIsT0FBTyxHQUErQixDQUFDO2lCQUN4QzthQUNGO1NBQ0Y7YUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssRUFBRTtZQUMvRCxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLFNBQVMsRUFBRSxHQUFHLEtBQWtDLENBQUM7WUFFM0UsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLEVBQUU7Z0JBQ3hCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO29CQUM3QixJQUFJLEtBQUssS0FBSyxRQUFRLEVBQUU7d0JBQ3RCLE9BQU8sS0FBaUMsQ0FBQztxQkFDMUM7aUJBQ0Y7cUJBQU07b0JBQ0wsTUFBTSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsR0FBRyxLQUF5QixDQUFDO29CQUVuRCxJQUFJLEdBQUcsS0FBSyxRQUFRLEVBQUU7d0JBQ3BCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBVyxDQUFDO3dCQUUxRixxQ0FBcUM7d0JBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUU7NEJBQ3ZELE9BQU8sR0FBK0IsQ0FBQzt5QkFDeEM7d0JBRUQsT0FBTyxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQTZCLENBQUM7cUJBQ3pEO2lCQUNGO2FBQ0Y7U0FDRjtRQUVELE1BQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN6QztTQUFNLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQ25DLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLE1BQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN6QztRQUVELE1BQU0sR0FBRyxHQUE0QixFQUFFLENBQUM7UUFFeEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ25DLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxFQUFHLElBQXdDLENBQUMsR0FBRyxDQUFDLEVBQUcsS0FBaUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3pJO1FBRUQsT0FBTyxHQUErQixDQUFDO0tBQ3hDO1NBQU0sSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN6RCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN6QyxPQUFPLElBQWdDLENBQUM7U0FDekM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUE2QixDQUFDO0tBQ25HO1NBQU0sSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUMxRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QixNQUFNLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQTZCLENBQUM7S0FDL0k7U0FBTSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2pFLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQTZCLENBQUM7S0FDMUU7U0FBTSxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUU7UUFDM0IsSUFBSSxDQUFDLENBQUMsS0FBSyxZQUFZLE1BQU0sQ0FBQyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN6QztRQUVELE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQTZCLENBQUM7S0FDN0Q7U0FBTSxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7UUFDNUIsSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLEVBQUU7WUFDaEMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUE4QixDQUFDO0tBQ3JEO1NBQU0sSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFO1FBQ3pCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNwRCxNQUFNLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUE2QixDQUFDO0tBQ3JEO1NBQU0sSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO1FBQzFCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNyRCxNQUFNLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUE2QixDQUFDO0tBQ3REO1NBQU0sSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO1FBQzFCLElBQUksQ0FBQyxDQUFDLEtBQUssWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLG1DQUFtQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQzFJLE1BQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN6QztRQUVELE9BQU8sQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBNkIsQ0FBQztLQUNsSjtTQUFNLElBQUksSUFBSSxLQUFLLFVBQVUsRUFBRTtRQUM5QixJQUNFLENBQUMsQ0FBQyxLQUFLLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELENBQUMsQ0FDQyxPQUFPLEtBQUssS0FBSyxRQUFRO2dCQUN6QixpSUFBaUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQzlJLEVBQ0Q7WUFDQSxNQUFNLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQTZCLENBQUM7S0FDekg7U0FBTSxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7UUFDN0IsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxZQUFZLE9BQU8sQ0FBQyxFQUFFO1lBQ3RJLE1BQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN6QztRQUVELE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUE4QixDQUFDO0tBQ2xFO1NBQU07UUFDTCw0RUFBNEU7UUFDNUUsTUFBTSxRQUFRLEdBQUksU0FBNkMsQ0FBQyxJQUFjLENBQUMsQ0FBQztRQUVoRixJQUFJLFFBQVEsRUFBRTtZQUNaLE9BQU8sTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBNkIsQ0FBQztTQUM3RTtRQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLElBQUksU0FBUyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0tBQ3hEO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxNQUFNLENBQ3BCLFNBQWdCLEVBQ2hCLElBQVksRUFDWixJQUFVLEVBQ1YsS0FBYztJQUVkLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEtBQUssTUFBTSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDLEVBQUU7UUFDakgsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsSUFBSSxtQkFBbUIsQ0FBQyxDQUFDO0tBQzlEO1NBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzlCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxFQUFFO1lBQzlDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO2dCQUN0QixJQUFJLEdBQUcsS0FBSyxLQUFLLEVBQUU7b0JBQ2pCLE9BQU8sR0FBK0IsQ0FBQztpQkFDeEM7YUFDRjtTQUNGO2FBQU07WUFDTCxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksRUFBRTtnQkFDeEIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7b0JBQzdCLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRTt3QkFDbkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQThCLENBQUM7cUJBQ25EO2lCQUNGO3FCQUFNO29CQUNMLE1BQU0sQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLEdBQUcsS0FBeUIsQ0FBQztvQkFFbkQsSUFBSSxHQUFHLEtBQUssS0FBSyxFQUFFO3dCQUNqQixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQVcsQ0FBQzt3QkFFbkYsT0FBTyxFQUFFLEdBQUcsYUFBYSxFQUFFLEdBQUcsRUFBOEIsQ0FBQztxQkFDOUQ7eUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ3pFLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBVyxDQUFDO3dCQUV6RixPQUFPLEVBQUUsR0FBRyxhQUFhLEVBQUUsR0FBRyxFQUE4QixDQUFDO3FCQUM5RDtpQkFDRjthQUNGO1NBQ0Y7UUFFRCxNQUFNLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDekM7U0FBTSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtRQUNuQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUM3QixNQUFNLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFFRCxNQUFNLEdBQUcsR0FBNEIsRUFBRSxDQUFDO1FBRXhDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNuQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsRUFBRyxJQUF3QyxDQUFDLEdBQUcsQ0FBQyxFQUFHLEtBQWlDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN6STtRQUVELE9BQU8sR0FBK0IsQ0FBQztLQUN4QztTQUFNLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDekQsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDekMsT0FBTyxJQUFnQyxDQUFDO1NBQ3pDO1FBRUQsT0FBTyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBd0MsQ0FBQztLQUM5RztTQUFNLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDMUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekIsTUFBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUE2QixDQUFDO0tBQy9JO1NBQU0sSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNqRSxPQUFPLGtCQUFrQixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUE2QixDQUFDO0tBQzFFO1NBQU0sSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFO1FBQzNCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLE1BQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDeEQ7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUU1QyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssS0FBSyxFQUFFO1lBQ3ZDLE1BQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDeEQ7UUFFRCxPQUFPLE1BQWtDLENBQUM7S0FDM0M7U0FBTSxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7UUFDNUIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDMUYsTUFBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUE2QixDQUFDO0tBQ2xEO1NBQU0sSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFO1FBQ3pCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNwRCxNQUFNLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUE2QixDQUFDO0tBQ3REO1NBQU0sSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO1FBQzFCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNyRCxNQUFNLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUE2QixDQUFDO0tBQ3ZEO1NBQU0sSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO1FBQzFCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsbUNBQW1DLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pGLE1BQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN6QztRQUVELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXhDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxHQUFHLEVBQUU7WUFDdEYsTUFBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsT0FBTyxJQUFnQyxDQUFDO0tBQ3pDO1NBQU0sSUFBSSxJQUFJLEtBQUssVUFBVSxFQUFFO1FBQzlCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsK0ZBQStGLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzdJLE1BQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN6QztRQUVELE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBNkIsQ0FBQztLQUNuRztTQUFNLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtRQUM3QixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3ZHLE1BQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN6QztRQUVELE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUE2QixDQUFDO0tBQ3ZEO1NBQU07UUFDTCw0RUFBNEU7UUFDNUUsTUFBTSxRQUFRLEdBQUksU0FBNkMsQ0FBQyxJQUFjLENBQUMsQ0FBQztRQUVoRixJQUFJLFFBQVEsRUFBRTtZQUNaLCtEQUErRDtZQUMvRCxPQUFPLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQXdDLENBQUM7U0FDeEY7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixJQUFJLFNBQVMsSUFBSSxHQUFHLENBQUMsQ0FBQztLQUN4RDtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBDTlBKIGZyb20gXCJAZm5hbmRvL2NucGpcIjtcbmltcG9ydCAqIGFzIENQRiBmcm9tIFwiQGZuYW5kby9jcGZcIjtcbmltcG9ydCB0eXBlIHsgQXN0SnNvbiwgVHlwZURlc2NyaXB0aW9uIH0gZnJvbSBcIkBzZGtnZW4vcGFyc2VyXCI7XG5pbXBvcnQgeyBEZWNpbWFsIH0gZnJvbSBcImRlY2ltYWwuanNcIjtcblxuaW1wb3J0IHR5cGUgeyBEZWVwUmVhZG9ubHkgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuXG50eXBlIFR5cGVUYWJsZSA9IEFzdEpzb25bXCJ0eXBlVGFibGVcIl07XG5cbmNvbnN0IHNpbXBsZVN0cmluZ1R5cGVzID0gW1wic3RyaW5nXCIsIFwiZW1haWxcIiwgXCJodG1sXCIsIFwieG1sXCJdO1xuY29uc3Qgc2ltcGxlVHlwZXMgPSBbXCJqc29uXCIsIFwiYm9vbFwiLCBcInVybFwiLCBcImludFwiLCBcInVpbnRcIiwgXCJmbG9hdFwiLCBcIm1vbmV5XCIsIFwiaGV4XCIsIFwidXVpZFwiLCBcImJhc2U2NFwiLCBcInZvaWRcIiwgLi4uc2ltcGxlU3RyaW5nVHlwZXNdO1xuXG50eXBlIEV4cGFuZFJlY3Vyc2l2ZWx5PFQ+ID0gVCBleHRlbmRzIG9iamVjdCA/IChUIGV4dGVuZHMgaW5mZXIgTyA/IHsgW0sgaW4ga2V5b2YgT106IEV4cGFuZFJlY3Vyc2l2ZWx5PE9bS10+IH0gOiBuZXZlcikgOiBUO1xuXG50eXBlIEpzb25UeXBlID0gbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbiB8IG51bGwgfCBKc29uVHlwZVtdIHwgeyBbS2V5IGluIHN0cmluZ106IEpzb25UeXBlIH07XG5cbnR5cGUgQW55RGVjb2RlZFR5cGUgPSBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuIHwgbnVsbCB8IGJpZ2ludCB8IERlY2ltYWwgfCBCdWZmZXIgfCBEYXRlIHwgQW55RGVjb2RlZFR5cGVbXSB8IHsgW0tleSBpbiBzdHJpbmddOiBBbnlEZWNvZGVkVHlwZSB9O1xuXG50eXBlIERlY29kZWRUeXBlPFR5cGUsIFRhYmxlIGV4dGVuZHMgb2JqZWN0PiA9IFR5cGVEZXNjcmlwdGlvbiBleHRlbmRzIFR5cGVcbiAgPyBBbnlEZWNvZGVkVHlwZVxuICA6IFR5cGUgZXh0ZW5kcyBcInN0cmluZ1wiIHwgXCJlbWFpbFwiIHwgXCJodG1sXCIgfCBcInhtbFwiIHwgXCJ1cmxcIiB8IFwiaGV4XCIgfCBcInV1aWRcIiB8IFwiYmFzZTY0XCIgfCBcImNwZlwiIHwgXCJjbnBqXCJcbiAgPyBzdHJpbmdcbiAgOiBUeXBlIGV4dGVuZHMgXCJqc29uXCJcbiAgPyBKc29uVHlwZVxuICA6IFR5cGUgZXh0ZW5kcyBcImJvb2xcIlxuICA/IGJvb2xlYW5cbiAgOiBUeXBlIGV4dGVuZHMgXCJ2b2lkXCJcbiAgPyBudWxsXG4gIDogVHlwZSBleHRlbmRzIFwiaW50XCIgfCBcInVpbnRcIiB8IFwiZmxvYXRcIiB8IFwibW9uZXlcIlxuICA/IG51bWJlclxuICA6IFR5cGUgZXh0ZW5kcyBcImJpZ2ludFwiXG4gID8gYmlnaW50XG4gIDogVHlwZSBleHRlbmRzIFwiYnl0ZXNcIlxuICA/IEJ1ZmZlclxuICA6IFR5cGUgZXh0ZW5kcyBcImRlY2ltYWxcIlxuICA/IERlY2ltYWxcbiAgOiBUeXBlIGV4dGVuZHMgXCJkYXRlXCIgfCBcImRhdGV0aW1lXCJcbiAgPyBEYXRlXG4gIDogVHlwZSBleHRlbmRzIGAke2luZmVyIFh9P2BcbiAgPyBEZWNvZGVkVHlwZTxYLCBUYWJsZT4gfCBudWxsXG4gIDogVHlwZSBleHRlbmRzIGAke2luZmVyIFh9W11gXG4gID8gQXJyYXk8RGVjb2RlZFR5cGU8WCwgVGFibGU+PlxuICA6IFR5cGUgZXh0ZW5kcyBBcnJheTxzdHJpbmcgfCBbc3RyaW5nLCBzdHJpbmddPlxuICA/IERlY29kZWRFbnVtVHlwZTxUeXBlLCBUYWJsZT5cbiAgOiBUeXBlIGV4dGVuZHMgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCByZWFkb25seSBbc3RyaW5nLCBzdHJpbmddPlxuICA/IERlY29kZWRFbnVtVHlwZTxUeXBlLCBUYWJsZT5cbiAgOiBUeXBlIGV4dGVuZHMgb2JqZWN0XG4gID8geyAtcmVhZG9ubHkgW0tleSBpbiBrZXlvZiBUeXBlXTogRGVjb2RlZFR5cGU8VHlwZVtLZXldLCBUYWJsZT4gfVxuICA6IG9iamVjdCBleHRlbmRzIFRhYmxlXG4gID8gbmV2ZXJcbiAgOiBUeXBlIGV4dGVuZHMga2V5b2YgVGFibGVcbiAgPyBEZWNvZGVkVHlwZTxUYWJsZVtUeXBlXSwgVGFibGU+XG4gIDogbmV2ZXI7XG5cbnR5cGUgRGVjb2RlZEVudW1UeXBlPFxuICBUeXBlIGV4dGVuZHMgQXJyYXk8c3RyaW5nIHwgW3N0cmluZywgc3RyaW5nXT4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IHJlYWRvbmx5IFtzdHJpbmcsIHN0cmluZ10+LFxuICBUYWJsZSBleHRlbmRzIG9iamVjdCxcbj4gPSBUeXBlW251bWJlcl0gZXh0ZW5kcyBzdHJpbmcgPyBUeXBlW251bWJlcl0gOiBEZWNvZGVUYWdnZWRFbnVtVmFsdWVUeXBlPFR5cGVbbnVtYmVyXSwgVGFibGU+O1xuXG50eXBlIERlY29kZVRhZ2dlZEVudW1WYWx1ZVR5cGU8XG4gIFZhbHVlVHlwZSBleHRlbmRzIHN0cmluZyB8IFtzdHJpbmcsIHN0cmluZ10gfCByZWFkb25seSBbc3RyaW5nLCBzdHJpbmddLFxuICBUYWJsZSBleHRlbmRzIG9iamVjdCxcbj4gPSBWYWx1ZVR5cGUgZXh0ZW5kcyBzdHJpbmdcbiAgPyB7IHRhZzogVmFsdWVUeXBlIH1cbiAgOiBWYWx1ZVR5cGUgZXh0ZW5kcyBbaW5mZXIgVGFnLCBpbmZlciBTdHJ1Y3RdXG4gID8gRXhwYW5kUmVjdXJzaXZlbHk8eyB0YWc6IFRhZyB9ICYgRGVjb2RlZFR5cGU8U3RydWN0LCBUYWJsZT4+XG4gIDogVmFsdWVUeXBlIGV4dGVuZHMgcmVhZG9ubHkgW2luZmVyIFRhZywgaW5mZXIgU3RydWN0XVxuICA/IEV4cGFuZFJlY3Vyc2l2ZWx5PHsgdGFnOiBUYWcgfSAmIERlY29kZWRUeXBlPFN0cnVjdCwgVGFibGU+PlxuICA6IG5ldmVyO1xuXG50eXBlIEVuY29kZWRUeXBlPFR5cGUsIFRhYmxlIGV4dGVuZHMgb2JqZWN0PiA9IFR5cGVEZXNjcmlwdGlvbiBleHRlbmRzIFR5cGVcbiAgPyBKc29uVHlwZVxuICA6IFR5cGUgZXh0ZW5kcyBcInN0cmluZ1wiIHwgXCJlbWFpbFwiIHwgXCJodG1sXCIgfCBcInhtbFwiIHwgXCJ1cmxcIiB8IFwiaGV4XCIgfCBcInV1aWRcIiB8IFwiYmFzZTY0XCIgfCBcImNwZlwiIHwgXCJjbnBqXCJcbiAgPyBzdHJpbmdcbiAgOiBUeXBlIGV4dGVuZHMgXCJqc29uXCJcbiAgPyBKc29uVHlwZVxuICA6IFR5cGUgZXh0ZW5kcyBcImJvb2xcIlxuICA/IGJvb2xlYW5cbiAgOiBUeXBlIGV4dGVuZHMgXCJ2b2lkXCJcbiAgPyBudWxsXG4gIDogVHlwZSBleHRlbmRzIFwiaW50XCIgfCBcInVpbnRcIiB8IFwiZmxvYXRcIiB8IFwibW9uZXlcIlxuICA/IG51bWJlclxuICA6IFR5cGUgZXh0ZW5kcyBcImJpZ2ludFwiIHwgXCJieXRlc1wiIHwgXCJkYXRlXCIgfCBcImRhdGV0aW1lXCIgfCBcImRlY2ltYWxcIlxuICA/IHN0cmluZ1xuICA6IFR5cGUgZXh0ZW5kcyBgJHtpbmZlciBYfT9gXG4gID8gRW5jb2RlZFR5cGU8WCwgVGFibGU+IHwgbnVsbFxuICA6IFR5cGUgZXh0ZW5kcyBgJHtpbmZlciBYfVtdYFxuICA/IEFycmF5PEVuY29kZWRUeXBlPFgsIFRhYmxlPj5cbiAgOiBUeXBlIGV4dGVuZHMgQXJyYXk8c3RyaW5nIHwgW3N0cmluZywgc3RyaW5nXT5cbiAgPyBFbnVtRW5jb2RlZFZhbHVlVHlwZTxUeXBlW251bWJlcl0sIFRhYmxlPlxuICA6IFR5cGUgZXh0ZW5kcyBSZWFkb25seUFycmF5PHN0cmluZyB8IHJlYWRvbmx5IFtzdHJpbmcsIHN0cmluZ10+XG4gID8gRW51bUVuY29kZWRWYWx1ZVR5cGU8VHlwZVtudW1iZXJdLCBUYWJsZT5cbiAgOiBUeXBlIGV4dGVuZHMgb2JqZWN0XG4gID8geyAtcmVhZG9ubHkgW0tleSBpbiBrZXlvZiBUeXBlXTogRW5jb2RlZFR5cGU8VHlwZVtLZXldLCBUYWJsZT4gfVxuICA6IG9iamVjdCBleHRlbmRzIFRhYmxlXG4gID8gbmV2ZXJcbiAgOiBUeXBlIGV4dGVuZHMga2V5b2YgVGFibGVcbiAgPyBFbmNvZGVkVHlwZTxUYWJsZVtUeXBlXSwgVGFibGU+XG4gIDogbmV2ZXI7XG5cbnR5cGUgRW51bUVuY29kZWRWYWx1ZVR5cGU8VmFsdWVUeXBlIGV4dGVuZHMgc3RyaW5nIHwgW3N0cmluZywgc3RyaW5nXSB8IHJlYWRvbmx5IFtzdHJpbmcsIHN0cmluZ10sIFRhYmxlIGV4dGVuZHMgb2JqZWN0PiA9IFZhbHVlVHlwZSBleHRlbmRzIHN0cmluZ1xuICA/IFZhbHVlVHlwZVxuICA6IFZhbHVlVHlwZSBleHRlbmRzIFtpbmZlciBUYWcsIGluZmVyIFN0cnVjdF1cbiAgPyBbVGFnLCBFbmNvZGVkVHlwZTxTdHJ1Y3QsIFRhYmxlPl1cbiAgOiBWYWx1ZVR5cGUgZXh0ZW5kcyByZWFkb25seSBbaW5mZXIgVGFnLCBpbmZlciBTdHJ1Y3RdXG4gID8gW1RhZywgRW5jb2RlZFR5cGU8U3RydWN0LCBUYWJsZT5dXG4gIDogbmV2ZXI7XG5cbmNsYXNzIFBhcnNlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHBhdGg6IHN0cmluZywgdHlwZTogRGVlcFJlYWRvbmx5PFR5cGVEZXNjcmlwdGlvbj4sIHZhbHVlOiB1bmtub3duKSB7XG4gICAgbGV0IHN0cjogc3RyaW5nO1xuXG4gICAgdHJ5IHtcbiAgICAgIHN0ciA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHN0ciA9IFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgc3VwZXIoYEludmFsaWQgdHlwZSBhdCAnJHtwYXRofScsIGV4cGVjdGVkICR7dHlwZX0sIGdvdCAke3N0cn1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzaW1wbGVFbmNvZGVEZWNvZGUocGF0aDogc3RyaW5nLCB0eXBlOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSB7XG4gIGlmICh0eXBlID09PSBcImpzb25cIikge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpIGFzIHVua25vd247XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJib29sXCIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImJvb2xlYW5cIikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfSBlbHNlIGlmIChzaW1wbGVTdHJpbmdUeXBlcy5pbmNsdWRlcyh0eXBlKSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJoZXhcIikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIgfHwgIS9eKD86W0EtRmEtZjAtOV17Mn0pKiQvdS50ZXN0KHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwidXVpZFwiKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiB8fCAhL15bQS1GYS1mMC05XXs4fS1bQS1GYS1mMC05XXs0fS1bQS1GYS1mMC05XXs0fS1bQS1GYS1mMC05XXs0fS1bQS1GYS1mMC05XXsxMn0kL3UudGVzdCh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcImJhc2U2NFwiKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiB8fCBCdWZmZXIuZnJvbSh2YWx1ZSwgXCJiYXNlNjRcIikudG9TdHJpbmcoXCJiYXNlNjRcIikgIT09IHZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihwYXRoLCB0eXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiaW50XCIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm51bWJlclwiIHx8ICh2YWx1ZSB8IDApICE9PSB2YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcInVpbnRcIikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwibnVtYmVyXCIgfHwgKHZhbHVlIHwgMCkgIT09IHZhbHVlIHx8IHZhbHVlIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcImZsb2F0XCIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm51bWJlclwiKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihwYXRoLCB0eXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwibW9uZXlcIikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwibnVtYmVyXCIgfHwgIU51bWJlci5pc0ludGVnZXIodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihwYXRoLCB0eXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwidXJsXCIpIHtcbiAgICBsZXQgdXJsOiBVUkwgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICB0cnkge1xuICAgICAgICB1cmwgPSBuZXcgVVJMKHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaWdub3JlXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF1cmwpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJ2b2lkXCIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0eXBlICcke3R5cGV9JyBhdCAnJHtwYXRofSdgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZTxUYWJsZSBleHRlbmRzIERlZXBSZWFkb25seTxUeXBlVGFibGU+LCBUeXBlIGV4dGVuZHMgRGVlcFJlYWRvbmx5PFR5cGVEZXNjcmlwdGlvbj4+KFxuICB0eXBlVGFibGU6IFRhYmxlLFxuICBwYXRoOiBzdHJpbmcsXG4gIHR5cGU6IFR5cGUsXG4gIHZhbHVlOiB1bmtub3duLFxuKTogRW5jb2RlZFR5cGU8VHlwZSwgVGFibGU+IHtcbiAgaWYgKHR5cGVvZiB0eXBlID09PSBcInN0cmluZ1wiICYmICF0eXBlLmVuZHNXaXRoKFwiP1wiKSAmJiB0eXBlICE9PSBcInZvaWRcIiAmJiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdHlwZSBhdCAnJHtwYXRofScsIGNhbm5vdCBiZSBudWxsYCk7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0eXBlKSkge1xuICAgIGlmICh0eXBlLmV2ZXJ5KHRhZyA9PiB0eXBlb2YgdGFnID09PSBcInN0cmluZ1wiKSkge1xuICAgICAgZm9yIChjb25zdCB0YWcgb2YgdHlwZSkge1xuICAgICAgICBpZiAodGFnID09PSB2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiB0YWcgYXMgRW5jb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgJiYgXCJ0YWdcIiBpbiB2YWx1ZSkge1xuICAgICAgY29uc3QgeyB0YWc6IHRhZ1ZhbHVlLCAuLi5yZXN0VmFsdWUgfSA9IHZhbHVlIGFzIG9iamVjdCAmIHsgdGFnOiB1bmtub3duIH07XG5cbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgdHlwZSkge1xuICAgICAgICBpZiAodHlwZW9mIGVudHJ5ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgaWYgKGVudHJ5ID09PSB0YWdWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGVudHJ5IGFzIEVuY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgW3RhZywgdmFsdWVUeXBlXSA9IGVudHJ5IGFzIFtzdHJpbmcsIHN0cmluZ107XG5cbiAgICAgICAgICBpZiAodGFnID09PSB0YWdWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgZW5jb2RlZFZhbHVlcyA9IGVuY29kZSh0eXBlVGFibGUsIGAke3BhdGh9LiR7dGFnfWAsIHZhbHVlVHlwZSwgcmVzdFZhbHVlKSBhcyBvYmplY3Q7XG5cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtZGVwdGhcbiAgICAgICAgICAgIGlmIChPYmplY3QudmFsdWVzKGVuY29kZWRWYWx1ZXMpLmV2ZXJ5KHYgPT4gdiA9PT0gbnVsbCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRhZyBhcyBFbmNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBbdGFnLCBlbmNvZGVkVmFsdWVzXSBhcyBFbmNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB0eXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0IG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHR5cGUpKSB7XG4gICAgICBvYmpba2V5XSA9IGVuY29kZSh0eXBlVGFibGUsIGAke3BhdGh9LiR7a2V5fWAsICh0eXBlIGFzIFJlY29yZDxzdHJpbmcsIFR5cGVEZXNjcmlwdGlvbj4pW2tleV0sICh2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iaiBhcyBFbmNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gIH0gZWxzZSBpZiAodHlwZW9mIHR5cGUgPT09IFwic3RyaW5nXCIgJiYgdHlwZS5lbmRzV2l0aChcIj9cIikpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGwgYXMgRW5jb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICAgIH1cblxuICAgIHJldHVybiBlbmNvZGUodHlwZVRhYmxlLCBwYXRoLCB0eXBlLnNsaWNlKDAsIHR5cGUubGVuZ3RoIC0gMSksIHZhbHVlKSBhcyBFbmNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gIH0gZWxzZSBpZiAodHlwZW9mIHR5cGUgPT09IFwic3RyaW5nXCIgJiYgdHlwZS5lbmRzV2l0aChcIltdXCIpKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZS5tYXAoKGVudHJ5LCBpbmRleCkgPT4gZW5jb2RlKHR5cGVUYWJsZSwgYCR7cGF0aH1bJHtpbmRleH1dYCwgdHlwZS5zbGljZSgwLCB0eXBlLmxlbmd0aCAtIDIpLCBlbnRyeSkpIGFzIEVuY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdHlwZSA9PT0gXCJzdHJpbmdcIiAmJiBzaW1wbGVUeXBlcy5pbmNsdWRlcyh0eXBlKSkge1xuICAgIHJldHVybiBzaW1wbGVFbmNvZGVEZWNvZGUocGF0aCwgdHlwZSwgdmFsdWUpIGFzIEVuY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcImJ5dGVzXCIpIHtcbiAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoXCJiYXNlNjRcIikgYXMgRW5jb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiYmlnaW50XCIpIHtcbiAgICBpZiAoISh0eXBlb2YgdmFsdWUgPT09IFwiYmlnaW50XCIpKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihwYXRoLCB0eXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkgYXMgRW5jb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiY3BmXCIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiIHx8ICFDUEYuaXNWYWxpZCh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gQ1BGLnN0cmlwKHZhbHVlKSBhcyBFbmNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJjbnBqXCIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiIHx8ICFDTlBKLmlzVmFsaWQodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihwYXRoLCB0eXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIENOUEouc3RyaXAodmFsdWUpIGFzIEVuY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcImRhdGVcIikge1xuICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4odmFsdWUuZ2V0VGltZSgpKSkgJiYgISh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgL15bMC05XXs0fS1bMDFdWzAtOV0tWzAxMjNdWzAtOV0kL3UudGVzdCh2YWx1ZSkpKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihwYXRoLCB0eXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyBuZXcgRGF0ZSh2YWx1ZSkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF0gOiB2YWx1ZS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSkgYXMgRW5jb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiZGF0ZXRpbWVcIikge1xuICAgIGlmIChcbiAgICAgICEodmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTih2YWx1ZS5nZXRUaW1lKCkpKSAmJlxuICAgICAgIShcbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgIC9eWzAtOV17NH0tWzAxXVswLTldLVswMTIzXVswLTldVFswMTJdWzAtOV06WzAxMjM0NTZdWzAtOV06WzAxMjM0NTZdWzAtOV0oPzpcXC5bMC05XXsxLDZ9KT8oPzpafFsrLV1bMDEyXVswLTldOlswMTIzNDU2XVswLTldKT8kL3UudGVzdCh2YWx1ZSlcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IG5ldyBEYXRlKHZhbHVlKSA6IHZhbHVlKS50b0lTT1N0cmluZygpLnJlcGxhY2UoXCJaXCIsIFwiXCIpIGFzIEVuY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcImRlY2ltYWxcIikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwibnVtYmVyXCIgJiYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiB8fCAhL14tP1swLTldKyg/OlxcLlswLTldKyk/JC91LnRlc3QodmFsdWUpKSAmJiAhKHZhbHVlIGluc3RhbmNlb2YgRGVjaW1hbCkpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERlY2ltYWwodmFsdWUpLnRvU3RyaW5nKCkgYXMgRW5jb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2Uge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktdHlwZS1hc3NlcnRpb25cbiAgICBjb25zdCByZXNvbHZlZCA9ICh0eXBlVGFibGUgYXMgUmVjb3JkPHN0cmluZywgVHlwZURlc2NyaXB0aW9uPilbdHlwZSBhcyBzdHJpbmddO1xuXG4gICAgaWYgKHJlc29sdmVkKSB7XG4gICAgICByZXR1cm4gZW5jb2RlKHR5cGVUYWJsZSwgcGF0aCwgcmVzb2x2ZWQsIHZhbHVlKSBhcyBFbmNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHR5cGUgJyR7dHlwZX0nIGF0ICcke3BhdGh9J2ApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGU8VGFibGUgZXh0ZW5kcyBEZWVwUmVhZG9ubHk8VHlwZVRhYmxlPiwgVHlwZSBleHRlbmRzIERlZXBSZWFkb25seTxUeXBlRGVzY3JpcHRpb24+PihcbiAgdHlwZVRhYmxlOiBUYWJsZSxcbiAgcGF0aDogc3RyaW5nLFxuICB0eXBlOiBUeXBlLFxuICB2YWx1ZTogdW5rbm93bixcbik6IERlY29kZWRUeXBlPFR5cGUsIFRhYmxlPiB7XG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gXCJzdHJpbmdcIiAmJiAhdHlwZS5lbmRzV2l0aChcIj9cIikgJiYgdHlwZSAhPT0gXCJ2b2lkXCIgJiYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHR5cGUgYXQgJyR7cGF0aH0nLCBjYW5ub3QgYmUgbnVsbGApO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodHlwZSkpIHtcbiAgICBpZiAodHlwZS5ldmVyeSh0YWcgPT4gdHlwZW9mIHRhZyA9PT0gXCJzdHJpbmdcIikpIHtcbiAgICAgIGZvciAoY29uc3QgdGFnIG9mIHR5cGUpIHtcbiAgICAgICAgaWYgKHRhZyA9PT0gdmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGFnIGFzIERlY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHR5cGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIGlmIChlbnRyeSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHRhZzogZW50cnkgfSBhcyBEZWNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IFt0YWcsIHZhbHVlVHlwZV0gPSBlbnRyeSBhcyBbc3RyaW5nLCBzdHJpbmddO1xuXG4gICAgICAgICAgaWYgKHRhZyA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWRWYWx1ZXMgPSBkZWNvZGUodHlwZVRhYmxlLCBgJHtwYXRofS4ke3RhZ31gLCB2YWx1ZVR5cGUsIHt9KSBhcyBvYmplY3Q7XG5cbiAgICAgICAgICAgIHJldHVybiB7IC4uLmRlY29kZWRWYWx1ZXMsIHRhZyB9IGFzIERlY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMiAmJiB0YWcgPT09IHZhbHVlWzBdKSB7XG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkVmFsdWVzID0gZGVjb2RlKHR5cGVUYWJsZSwgYCR7cGF0aH0uJHt0YWd9YCwgdmFsdWVUeXBlLCB2YWx1ZVsxXSkgYXMgb2JqZWN0O1xuXG4gICAgICAgICAgICByZXR1cm4geyAuLi5kZWNvZGVkVmFsdWVzLCB0YWcgfSBhcyBEZWNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB0eXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0IG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHR5cGUpKSB7XG4gICAgICBvYmpba2V5XSA9IGRlY29kZSh0eXBlVGFibGUsIGAke3BhdGh9LiR7a2V5fWAsICh0eXBlIGFzIFJlY29yZDxzdHJpbmcsIFR5cGVEZXNjcmlwdGlvbj4pW2tleV0sICh2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iaiBhcyBEZWNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gIH0gZWxzZSBpZiAodHlwZW9mIHR5cGUgPT09IFwic3RyaW5nXCIgJiYgdHlwZS5lbmRzV2l0aChcIj9cIikpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGwgYXMgRGVjb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICAgIH1cblxuICAgIHJldHVybiBkZWNvZGUodHlwZVRhYmxlLCBwYXRoLCB0eXBlLnNsaWNlKDAsIHR5cGUubGVuZ3RoIC0gMSksIHZhbHVlKSBhcyB1bmtub3duIGFzIERlY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdHlwZSA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlLmVuZHNXaXRoKFwiW11cIikpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihwYXRoLCB0eXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlLm1hcCgoZW50cnksIGluZGV4KSA9PiBkZWNvZGUodHlwZVRhYmxlLCBgJHtwYXRofVske2luZGV4fV1gLCB0eXBlLnNsaWNlKDAsIHR5cGUubGVuZ3RoIC0gMiksIGVudHJ5KSkgYXMgRGVjb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2UgaWYgKHR5cGVvZiB0eXBlID09PSBcInN0cmluZ1wiICYmIHNpbXBsZVR5cGVzLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgcmV0dXJuIHNpbXBsZUVuY29kZURlY29kZShwYXRoLCB0eXBlLCB2YWx1ZSkgYXMgRGVjb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiYnl0ZXNcIikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIGAke3R5cGV9IChiYXNlIDY0KWAsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbSh2YWx1ZSwgXCJiYXNlNjRcIik7XG5cbiAgICBpZiAoYnVmZmVyLnRvU3RyaW5nKFwiYmFzZTY0XCIpICE9PSB2YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgYCR7dHlwZX0gKGJhc2UgNjQpYCwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXIgYXMgRGVjb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiYmlnaW50XCIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm51bWJlclwiICYmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIgfHwgIS9eLT9bMC05XSskL3UudGVzdCh2YWx1ZSkpKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihwYXRoLCB0eXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEJpZ0ludCh2YWx1ZSkgYXMgRGVjb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiY3BmXCIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiIHx8ICFDUEYuaXNWYWxpZCh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gQ1BGLmZvcm1hdCh2YWx1ZSkgYXMgRGVjb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiY25walwiKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiB8fCAhQ05QSi5pc1ZhbGlkKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiBDTlBKLmZvcm1hdCh2YWx1ZSkgYXMgRGVjb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiZGF0ZVwiKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiB8fCAhL15bMC05XXs0fS1bMDFdWzAtOV0tWzAxMjNdWzAtOV0kL3UudGVzdCh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXkgPSBwYXJzZUludCh2YWx1ZS5zcGxpdChcIi1cIilbMl0sIDEwKTtcbiAgICBjb25zdCBtb250aCA9IHBhcnNlSW50KHZhbHVlLnNwbGl0KFwiLVwiKVsxXSwgMTApIC0gMTtcbiAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQodmFsdWUuc3BsaXQoXCItXCIpWzBdLCAxMCk7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXkpO1xuXG4gICAgaWYgKGRhdGUuZ2V0RnVsbFllYXIoKSAhPT0geWVhciB8fCBkYXRlLmdldE1vbnRoKCkgIT09IG1vbnRoIHx8IGRhdGUuZ2V0RGF0ZSgpICE9PSBkYXkpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0ZSBhcyBEZWNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiB8fCAhL15bMC05XXs0fS1bMDFdWzAtOV0tWzAxMjNdWzAtOV1UWzAxMl1bMC05XTpbMDEyMzQ1Nl1bMC05XTpbMDEyMzQ1Nl1bMC05XSg/OlxcLlswLTldezEsNn0pP1o/JC91LnRlc3QodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihwYXRoLCB0eXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRlKGAke3ZhbHVlLmVuZHNXaXRoKFwiWlwiKSA/IHZhbHVlIDogdmFsdWUuY29uY2F0KFwiWlwiKX1gKSBhcyBEZWNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJkZWNpbWFsXCIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm51bWJlclwiICYmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIgfHwgIS9eLT9bMC05XSsoPzpcXC5bMC05XSspPyQvdS50ZXN0KHZhbHVlKSkpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERlY2ltYWwodmFsdWUpIGFzIERlY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgfSBlbHNlIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtYXNzZXJ0aW9uXG4gICAgY29uc3QgcmVzb2x2ZWQgPSAodHlwZVRhYmxlIGFzIFJlY29yZDxzdHJpbmcsIFR5cGVEZXNjcmlwdGlvbj4pW3R5cGUgYXMgc3RyaW5nXTtcblxuICAgIGlmIChyZXNvbHZlZCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICByZXR1cm4gZGVjb2RlKHR5cGVUYWJsZSwgcGF0aCwgcmVzb2x2ZWQsIHZhbHVlKSBhcyB1bmtub3duIGFzIERlY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdHlwZSAnJHt0eXBlfScgYXQgJyR7cGF0aH0nYCk7XG4gIH1cbn1cbiJdfQ==
372
+ exports.decode = decode;
package/dist/src/error.js CHANGED
@@ -1,4 +1,7 @@
1
- export class SdkgenError extends Error {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Fatal = exports.SdkgenErrorWithData = exports.SdkgenError = void 0;
4
+ class SdkgenError extends Error {
2
5
  get type() {
3
6
  return this.constructor.name;
4
7
  }
@@ -9,7 +12,8 @@ export class SdkgenError extends Error {
9
12
  };
10
13
  }
11
14
  }
12
- export class SdkgenErrorWithData extends SdkgenError {
15
+ exports.SdkgenError = SdkgenError;
16
+ class SdkgenErrorWithData extends SdkgenError {
13
17
  constructor(message, data) {
14
18
  super(message);
15
19
  this.data = data;
@@ -22,6 +26,7 @@ export class SdkgenErrorWithData extends SdkgenError {
22
26
  };
23
27
  }
24
28
  }
25
- export class Fatal extends SdkgenError {
29
+ exports.SdkgenErrorWithData = SdkgenErrorWithData;
30
+ class Fatal extends SdkgenError {
26
31
  }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFnQixXQUFZLFNBQVEsS0FBSztJQUM3QyxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUNELE1BQU0sT0FBZ0IsbUJBQThCLFNBQVEsV0FBVztJQUNyRSxZQUFZLE9BQWUsRUFBUyxJQUFjO1FBQ2hELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQURtQixTQUFJLEdBQUosSUFBSSxDQUFVO0lBRWxELENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxLQUFNLFNBQVEsV0FBVztDQUFHIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNka2dlbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBnZXQgdHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG4gIH1cblxuICBwdWJsaWMgdG9KU09OKCk6IHsgbWVzc2FnZTogc3RyaW5nOyB0eXBlOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICB9O1xuICB9XG59XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2RrZ2VuRXJyb3JXaXRoRGF0YTxEYXRhVHlwZT4gZXh0ZW5kcyBTZGtnZW5FcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgcHVibGljIGRhdGE6IERhdGFUeXBlKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cblxuICBwdWJsaWMgdG9KU09OKCk6IHsgZGF0YTogRGF0YVR5cGU7IG1lc3NhZ2U6IHN0cmluZzsgdHlwZTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiB0aGlzLmRhdGEsXG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmF0YWwgZXh0ZW5kcyBTZGtnZW5FcnJvciB7fVxuIl19
32
+ exports.Fatal = Fatal;
@@ -1,3 +1,3 @@
1
- import type { BaseApiConfig } from "./api-config.js";
2
- import type { Context, ContextReply } from "./context.js";
1
+ import type { BaseApiConfig } from "./api-config";
2
+ import type { Context, ContextReply } from "./context";
3
3
  export declare function executeRequest<ExtraContextT>(ctx: Context & ExtraContextT, apiConfig: BaseApiConfig<ExtraContextT>): Promise<ContextReply>;