vitest 0.0.133 → 0.0.137

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,63 +0,0 @@
1
- function createBirpc({
2
- functions,
3
- post,
4
- on,
5
- eventNames = [],
6
- serialize = (i) => i,
7
- deserialize = (i) => i
8
- }) {
9
- const rpcPromiseMap = /* @__PURE__ */ new Map();
10
- on(async (data) => {
11
- const msg = deserialize(data);
12
- if (msg.t === "q") {
13
- const { m: method, a: args } = msg;
14
- let result, error;
15
- try {
16
- result = await functions[method](...args);
17
- } catch (e) {
18
- error = e;
19
- }
20
- if (msg.i)
21
- post(serialize({ t: "s", i: msg.i, r: result, e: error }));
22
- } else {
23
- const { i: ack, r: result, e: error } = msg;
24
- const promise = rpcPromiseMap.get(ack);
25
- if (error)
26
- promise?.reject(error);
27
- else
28
- promise?.resolve(result);
29
- rpcPromiseMap.delete(ack);
30
- }
31
- });
32
- return new Proxy({}, {
33
- get(_, method) {
34
- const sendEvent = (...args) => {
35
- post(serialize({ m: method, a: args, t: "q" }));
36
- };
37
- if (eventNames.includes(method)) {
38
- sendEvent.asEvent = sendEvent;
39
- return sendEvent;
40
- }
41
- const sendCall = (...args) => {
42
- return new Promise((resolve, reject) => {
43
- const id = nanoid();
44
- rpcPromiseMap.set(id, { resolve, reject });
45
- post(serialize({ m: method, a: args, i: id, t: "q" }));
46
- });
47
- };
48
- sendCall.asEvent = sendEvent;
49
- return sendCall;
50
- }
51
- });
52
- }
53
- const urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
54
- function nanoid(size = 21) {
55
- let id = "";
56
- let i = size;
57
- while (i--)
58
- id += urlAlphabet[Math.random() * 64 | 0];
59
- return id;
60
- }
61
-
62
- export { createBirpc as c };
63
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtZTkwOWMxNzUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9iaXJwY0AwLjAuMi9ub2RlX21vZHVsZXMvYmlycGMvZGlzdC9pbmRleC5tanMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gY3JlYXRlQmlycGMoe1xuICBmdW5jdGlvbnMsXG4gIHBvc3QsXG4gIG9uLFxuICBldmVudE5hbWVzID0gW10sXG4gIHNlcmlhbGl6ZSA9IChpKSA9PiBpLFxuICBkZXNlcmlhbGl6ZSA9IChpKSA9PiBpXG59KSB7XG4gIGNvbnN0IHJwY1Byb21pc2VNYXAgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICBvbihhc3luYyAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IG1zZyA9IGRlc2VyaWFsaXplKGRhdGEpO1xuICAgIGlmIChtc2cudCA9PT0gXCJxXCIpIHtcbiAgICAgIGNvbnN0IHsgbTogbWV0aG9kLCBhOiBhcmdzIH0gPSBtc2c7XG4gICAgICBsZXQgcmVzdWx0LCBlcnJvcjtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IGZ1bmN0aW9uc1ttZXRob2RdKC4uLmFyZ3MpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBlcnJvciA9IGU7XG4gICAgICB9XG4gICAgICBpZiAobXNnLmkpXG4gICAgICAgIHBvc3Qoc2VyaWFsaXplKHsgdDogXCJzXCIsIGk6IG1zZy5pLCByOiByZXN1bHQsIGU6IGVycm9yIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgeyBpOiBhY2ssIHI6IHJlc3VsdCwgZTogZXJyb3IgfSA9IG1zZztcbiAgICAgIGNvbnN0IHByb21pc2UgPSBycGNQcm9taXNlTWFwLmdldChhY2spO1xuICAgICAgaWYgKGVycm9yKVxuICAgICAgICBwcm9taXNlPy5yZWplY3QoZXJyb3IpO1xuICAgICAgZWxzZVxuICAgICAgICBwcm9taXNlPy5yZXNvbHZlKHJlc3VsdCk7XG4gICAgICBycGNQcm9taXNlTWFwLmRlbGV0ZShhY2spO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBuZXcgUHJveHkoe30sIHtcbiAgICBnZXQoXywgbWV0aG9kKSB7XG4gICAgICBjb25zdCBzZW5kRXZlbnQgPSAoLi4uYXJncykgPT4ge1xuICAgICAgICBwb3N0KHNlcmlhbGl6ZSh7IG06IG1ldGhvZCwgYTogYXJncywgdDogXCJxXCIgfSkpO1xuICAgICAgfTtcbiAgICAgIGlmIChldmVudE5hbWVzLmluY2x1ZGVzKG1ldGhvZCkpIHtcbiAgICAgICAgc2VuZEV2ZW50LmFzRXZlbnQgPSBzZW5kRXZlbnQ7XG4gICAgICAgIHJldHVybiBzZW5kRXZlbnQ7XG4gICAgICB9XG4gICAgICBjb25zdCBzZW5kQ2FsbCA9ICguLi5hcmdzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgY29uc3QgaWQgPSBuYW5vaWQoKTtcbiAgICAgICAgICBycGNQcm9taXNlTWFwLnNldChpZCwgeyByZXNvbHZlLCByZWplY3QgfSk7XG4gICAgICAgICAgcG9zdChzZXJpYWxpemUoeyBtOiBtZXRob2QsIGE6IGFyZ3MsIGk6IGlkLCB0OiBcInFcIiB9KSk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIHNlbmRDYWxsLmFzRXZlbnQgPSBzZW5kRXZlbnQ7XG4gICAgICByZXR1cm4gc2VuZENhbGw7XG4gICAgfVxuICB9KTtcbn1cbmNvbnN0IHVybEFscGhhYmV0ID0gXCJ1c2VhbmRvbS0yNlQxOTgzNDBQWDc1cHhKQUNLVkVSWU1JTkRCVVNIV09MRl9HUVpiZmdoamtscXZ3eXpyaWN0XCI7XG5mdW5jdGlvbiBuYW5vaWQoc2l6ZSA9IDIxKSB7XG4gIGxldCBpZCA9IFwiXCI7XG4gIGxldCBpID0gc2l6ZTtcbiAgd2hpbGUgKGktLSlcbiAgICBpZCArPSB1cmxBbHBoYWJldFtNYXRoLnJhbmRvbSgpICogNjQgfCAwXTtcbiAgcmV0dXJuIGlkO1xufVxuXG5leHBvcnQgeyBjcmVhdGVCaXJwYyB9O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsV0FBVyxDQUFDO0FBQ3JCLEVBQUUsU0FBUztBQUNYLEVBQUUsSUFBSTtBQUNOLEVBQUUsRUFBRTtBQUNKLEVBQUUsVUFBVSxHQUFHLEVBQUU7QUFDakIsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUN0QixFQUFFLFdBQVcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3hCLENBQUMsRUFBRTtBQUNILEVBQUUsTUFBTSxhQUFhLG1CQUFtQixJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2xELEVBQUUsRUFBRSxDQUFDLE9BQU8sSUFBSSxLQUFLO0FBQ3JCLElBQUksTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtBQUN2QixNQUFNLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFDekMsTUFBTSxJQUFJLE1BQU0sRUFBRSxLQUFLLENBQUM7QUFDeEIsTUFBTSxJQUFJO0FBQ1YsUUFBUSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNsRCxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDbEIsUUFBUSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLE9BQU87QUFDUCxNQUFNLElBQUksR0FBRyxDQUFDLENBQUM7QUFDZixRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuRSxLQUFLLE1BQU07QUFDWCxNQUFNLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUNsRCxNQUFNLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0MsTUFBTSxJQUFJLEtBQUs7QUFDZixRQUFRLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0I7QUFDQSxRQUFRLE9BQU8sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakMsTUFBTSxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hDLEtBQUs7QUFDTCxHQUFHLENBQUMsQ0FBQztBQUNMLEVBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUU7QUFDdkIsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtBQUNuQixNQUFNLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxJQUFJLEtBQUs7QUFDckMsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDeEQsT0FBTyxDQUFDO0FBQ1IsTUFBTSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDdkMsUUFBUSxTQUFTLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztBQUN0QyxRQUFRLE9BQU8sU0FBUyxDQUFDO0FBQ3pCLE9BQU87QUFDUCxNQUFNLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxJQUFJLEtBQUs7QUFDcEMsUUFBUSxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sS0FBSztBQUNoRCxVQUFVLE1BQU0sRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQzlCLFVBQVUsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUNyRCxVQUFVLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsT0FBTyxDQUFDO0FBQ1IsTUFBTSxRQUFRLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztBQUNuQyxNQUFNLE9BQU8sUUFBUSxDQUFDO0FBQ3RCLEtBQUs7QUFDTCxHQUFHLENBQUMsQ0FBQztBQUNMLENBQUM7QUFDRCxNQUFNLFdBQVcsR0FBRyxrRUFBa0UsQ0FBQztBQUN2RixTQUFTLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFO0FBQzNCLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2QsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDZixFQUFFLE9BQU8sQ0FBQyxFQUFFO0FBQ1osSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUNaOzsifQ==
@@ -1,94 +0,0 @@
1
- import { util } from 'chai';
2
- import * as tinyspy from 'tinyspy';
3
-
4
- const spies = new Set();
5
- function isMockFunction(fn2) {
6
- return typeof fn2 === "function" && "__isSpy" in fn2 && fn2.__isSpy;
7
- }
8
- function spyOn(obj, method, accessType) {
9
- const dictionary = {
10
- get: "getter",
11
- set: "setter"
12
- };
13
- const objMethod = accessType ? { [dictionary[accessType]]: method } : method;
14
- const stub = tinyspy.spyOn(obj, objMethod);
15
- return enhanceSpy(stub);
16
- }
17
- function enhanceSpy(spy) {
18
- const stub = spy;
19
- let implementation;
20
- const instances = [];
21
- const mockContext = {
22
- get calls() {
23
- return stub.calls;
24
- },
25
- get instances() {
26
- return instances;
27
- },
28
- get invocationCallOrder() {
29
- return [];
30
- },
31
- get results() {
32
- return stub.results.map(([callType, value]) => {
33
- const type = callType === "error" ? "throw" : "return";
34
- return { type, value };
35
- });
36
- }
37
- };
38
- let onceImplementations = [];
39
- let name = stub.name;
40
- stub.getMockName = () => name || "vi.fn()";
41
- stub.mockName = (n) => {
42
- name = n;
43
- return stub;
44
- };
45
- stub.mockClear = () => {
46
- stub.reset();
47
- return stub;
48
- };
49
- stub.mockReset = () => {
50
- stub.reset();
51
- implementation = () => void 0;
52
- onceImplementations = [];
53
- return stub;
54
- };
55
- stub.mockRestore = () => {
56
- stub.mockReset();
57
- implementation = void 0;
58
- return stub;
59
- };
60
- stub.getMockImplementation = () => implementation;
61
- stub.mockImplementation = (fn2) => {
62
- implementation = fn2;
63
- return stub;
64
- };
65
- stub.mockImplementationOnce = (fn2) => {
66
- onceImplementations.push(fn2);
67
- return stub;
68
- };
69
- stub.mockReturnThis = () => stub.mockImplementation(function() {
70
- return this;
71
- });
72
- stub.mockReturnValue = (val) => stub.mockImplementation(() => val);
73
- stub.mockReturnValueOnce = (val) => stub.mockImplementationOnce(() => val);
74
- stub.mockResolvedValue = (val) => stub.mockImplementation(() => Promise.resolve(val));
75
- stub.mockResolvedValueOnce = (val) => stub.mockImplementationOnce(() => Promise.resolve(val));
76
- stub.mockRejectedValue = (val) => stub.mockImplementation(() => Promise.reject(val));
77
- stub.mockRejectedValueOnce = (val) => stub.mockImplementationOnce(() => Promise.reject(val));
78
- util.addProperty(stub, "mock", () => mockContext);
79
- stub.willCall(function(...args) {
80
- instances.push(this);
81
- const impl = onceImplementations.shift() || implementation || stub.getOriginal() || (() => {
82
- });
83
- return impl.apply(this, args);
84
- });
85
- spies.add(stub);
86
- return stub;
87
- }
88
- function fn(implementation) {
89
- return enhanceSpy(tinyspy.spyOn({ fn: implementation || (() => {
90
- }) }, "fn"));
91
- }
92
-
93
- export { spyOn as a, fn as f, isMockFunction as i, spies as s };
94
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamVzdC1tb2NrLTMwNjI1ODY2LmpzIiwic291cmNlcyI6WyIuLi9zcmMvaW50ZWdyYXRpb25zL2plc3QtbW9jay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1dGlsIH0gZnJvbSAnY2hhaSdcbmltcG9ydCB0eXBlIHsgU3B5SW1wbCB9IGZyb20gJ3RpbnlzcHknXG5pbXBvcnQgKiBhcyB0aW55c3B5IGZyb20gJ3RpbnlzcHknXG5cbmludGVyZmFjZSBNb2NrUmVzdWx0UmV0dXJuPFQ+IHtcbiAgdHlwZTogJ3JldHVybidcbiAgdmFsdWU6IFRcbn1cbmludGVyZmFjZSBNb2NrUmVzdWx0SW5jb21wbGV0ZSB7XG4gIHR5cGU6ICdpbmNvbXBsZXRlJ1xuICB2YWx1ZTogdW5kZWZpbmVkXG59XG5pbnRlcmZhY2UgTW9ja1Jlc3VsdFRocm93IHtcbiAgdHlwZTogJ3Rocm93J1xuICB2YWx1ZTogYW55XG59XG5cbnR5cGUgTW9ja1Jlc3VsdDxUPiA9IE1vY2tSZXN1bHRSZXR1cm48VD4gfCBNb2NrUmVzdWx0VGhyb3cgfCBNb2NrUmVzdWx0SW5jb21wbGV0ZVxuXG5leHBvcnQgaW50ZXJmYWNlIEplc3RNb2NrQ29tcGF0Q29udGV4dDxULCBZPiB7XG4gIGNhbGxzOiBZW11cbiAgaW5zdGFuY2VzOiBUW11cbiAgLy8gVE9ETzogZG9lc24ndCB3b3JrXG4gIGludm9jYXRpb25DYWxsT3JkZXI6IG51bWJlcltdXG4gIHJlc3VsdHM6IE1vY2tSZXN1bHQ8VD5bXVxufVxuXG50eXBlIFByb2NlZHVyZSA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG5cbnR5cGUgTWV0aG9kczxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBQcm9jZWR1cmUgPyBLIDogbmV2ZXJcbn1ba2V5b2YgVF0gJiBzdHJpbmdcbnR5cGUgUHJvcGVydGllczxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBQcm9jZWR1cmUgPyBuZXZlciA6IEtcbn1ba2V5b2YgVF0gJiBzdHJpbmdcbnR5cGUgQ2xhc3NlczxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkgPyBLIDogbmV2ZXJcbn1ba2V5b2YgVF0gJiBzdHJpbmdcblxuZXhwb3J0IGludGVyZmFjZSBKZXN0TW9ja0NvbXBhdDxUQXJncyBleHRlbmRzIGFueVtdID0gYW55W10sIFRSZXR1cm5zID0gYW55PiB7XG4gIGdldE1vY2tOYW1lKCk6IHN0cmluZ1xuICBtb2NrTmFtZShuOiBzdHJpbmcpOiB0aGlzXG4gIG1vY2s6IEplc3RNb2NrQ29tcGF0Q29udGV4dDxUQXJncywgVFJldHVybnM+XG4gIG1vY2tDbGVhcigpOiB0aGlzXG4gIG1vY2tSZXNldCgpOiB0aGlzXG4gIG1vY2tSZXN0b3JlKCk6IHZvaWRcbiAgZ2V0TW9ja0ltcGxlbWVudGF0aW9uKCk6ICgoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm5zKSB8IHVuZGVmaW5lZFxuICBtb2NrSW1wbGVtZW50YXRpb24oZm46ICgoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm5zKSB8ICgoKSA9PiBQcm9taXNlPFRSZXR1cm5zPikpOiB0aGlzXG4gIG1vY2tJbXBsZW1lbnRhdGlvbk9uY2UoZm46ICgoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm5zKSB8ICgoKSA9PiBQcm9taXNlPFRSZXR1cm5zPikpOiB0aGlzXG4gIG1vY2tSZXR1cm5UaGlzKCk6IHRoaXNcbiAgbW9ja1JldHVyblZhbHVlKG9iajogVFJldHVybnMpOiB0aGlzXG4gIG1vY2tSZXR1cm5WYWx1ZU9uY2Uob2JqOiBUUmV0dXJucyk6IHRoaXNcbiAgbW9ja1Jlc29sdmVkVmFsdWUob2JqOiBBd2FpdGVkPFRSZXR1cm5zPik6IHRoaXNcbiAgbW9ja1Jlc29sdmVkVmFsdWVPbmNlKG9iajogQXdhaXRlZDxUUmV0dXJucz4pOiB0aGlzXG4gIG1vY2tSZWplY3RlZFZhbHVlKG9iajogYW55KTogdGhpc1xuICBtb2NrUmVqZWN0ZWRWYWx1ZU9uY2Uob2JqOiBhbnkpOiB0aGlzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSmVzdE1vY2tDb21wYXRGbjxUQXJncyBleHRlbmRzIGFueVtdID0gYW55LCBUUmV0dXJucyA9IGFueT4gZXh0ZW5kcyBKZXN0TW9ja0NvbXBhdDxUQXJncywgVFJldHVybnM+IHtcbiAgKC4uLmFyZ3M6IFRBcmdzKTogVFJldHVybnNcbn1cblxuZXhwb3J0IHR5cGUgTWF5YmVNb2NrZWRDb25zdHJ1Y3RvcjxUPiA9IFQgZXh0ZW5kcyBuZXcgKFxuICAuLi5hcmdzOiBBcnJheTxhbnk+XG4pID0+IGluZmVyIFJcbiAgPyBKZXN0TW9ja0NvbXBhdEZuPENvbnN0cnVjdG9yUGFyYW1ldGVyczxUPiwgUj5cbiAgOiBUXG5leHBvcnQgdHlwZSBNb2NrZWRGdW5jdGlvbjxUIGV4dGVuZHMgUHJvY2VkdXJlPiA9IE1vY2tXaXRoQXJnczxUPiAmIHtcbiAgW0sgaW4ga2V5b2YgVF06IFRbS107XG59XG5leHBvcnQgdHlwZSBNb2NrZWRGdW5jdGlvbkRlZXA8VCBleHRlbmRzIFByb2NlZHVyZT4gPSBNb2NrV2l0aEFyZ3M8VD4gJiBNb2NrZWRPYmplY3REZWVwPFQ+XG5leHBvcnQgdHlwZSBNb2NrZWRPYmplY3Q8VD4gPSBNYXliZU1vY2tlZENvbnN0cnVjdG9yPFQ+ICYge1xuICBbSyBpbiBNZXRob2RzPFQ+XTogVFtLXSBleHRlbmRzIFByb2NlZHVyZVxuICAgID8gTW9ja2VkRnVuY3Rpb248VFtLXT5cbiAgICA6IFRbS107XG59ICYge1tLIGluIFByb3BlcnRpZXM8VD5dOiBUW0tdfVxuZXhwb3J0IHR5cGUgTW9ja2VkT2JqZWN0RGVlcDxUPiA9IE1heWJlTW9ja2VkQ29uc3RydWN0b3I8VD4gJiB7XG4gIFtLIGluIE1ldGhvZHM8VD5dOiBUW0tdIGV4dGVuZHMgUHJvY2VkdXJlXG4gICAgPyBNb2NrZWRGdW5jdGlvbkRlZXA8VFtLXT5cbiAgICA6IFRbS107XG59ICYge1tLIGluIFByb3BlcnRpZXM8VD5dOiBNYXliZU1vY2tlZERlZXA8VFtLXT59XG5cbmV4cG9ydCB0eXBlIE1heWJlTW9ja2VkRGVlcDxUPiA9IFQgZXh0ZW5kcyBQcm9jZWR1cmVcbiAgPyBNb2NrZWRGdW5jdGlvbkRlZXA8VD5cbiAgOiBUIGV4dGVuZHMgb2JqZWN0XG4gICAgPyBNb2NrZWRPYmplY3REZWVwPFQ+XG4gICAgOiBUXG5cbmV4cG9ydCB0eXBlIE1heWJlTW9ja2VkPFQ+ID0gVCBleHRlbmRzIFByb2NlZHVyZVxuICA/IE1vY2tlZEZ1bmN0aW9uPFQ+XG4gIDogVCBleHRlbmRzIG9iamVjdFxuICAgID8gTW9ja2VkT2JqZWN0PFQ+XG4gICAgOiBUXG5cbmV4cG9ydCB0eXBlIEVuaGFuY2VkU3B5PFRBcmdzIGV4dGVuZHMgYW55W10gPSBhbnlbXSwgVFJldHVybnMgPSBhbnk+ID0gSmVzdE1vY2tDb21wYXQ8VEFyZ3MsIFRSZXR1cm5zPiAmIFNweUltcGw8VEFyZ3MsIFRSZXR1cm5zPlxuXG5leHBvcnQgaW50ZXJmYWNlIE1vY2tXaXRoQXJnczxUIGV4dGVuZHMgUHJvY2VkdXJlPlxuICBleHRlbmRzIEplc3RNb2NrQ29tcGF0Rm48UGFyYW1ldGVyczxUPiwgUmV0dXJuVHlwZTxUPj4ge1xuICBuZXcgKC4uLmFyZ3M6IFQgZXh0ZW5kcyBuZXcgKC4uLmFyZ3M6IGFueSkgPT4gYW55ID8gQ29uc3RydWN0b3JQYXJhbWV0ZXJzPFQ+IDogbmV2ZXIpOiBUXG4gICguLi5hcmdzOiBQYXJhbWV0ZXJzPFQ+KTogUmV0dXJuVHlwZTxUPlxufVxuXG5leHBvcnQgY29uc3Qgc3BpZXMgPSBuZXcgU2V0PEplc3RNb2NrQ29tcGF0PigpXG5cbmV4cG9ydCBmdW5jdGlvbiBpc01vY2tGdW5jdGlvbihmbjogYW55KTogZm4gaXMgRW5oYW5jZWRTcHkge1xuICByZXR1cm4gdHlwZW9mIGZuID09PSAnZnVuY3Rpb24nXG4gICYmICdfX2lzU3B5JyBpbiBmblxuICAmJiBmbi5fX2lzU3B5XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzcHlPbjxULCBTIGV4dGVuZHMgUHJvcGVydGllczxSZXF1aXJlZDxUPj4+KFxuICBvYmo6IFQsXG4gIG1ldGhvZE5hbWU6IFMsXG4gIGFjY2VzVHlwZTogJ2dldCcsXG4pOiBKZXN0TW9ja0NvbXBhdDxbVFtTXV0sIHZvaWQ+XG5leHBvcnQgZnVuY3Rpb24gc3B5T248VCwgRyBleHRlbmRzIFByb3BlcnRpZXM8UmVxdWlyZWQ8VD4+PihcbiAgb2JqOiBULFxuICBtZXRob2ROYW1lOiBHLFxuICBhY2Nlc1R5cGU6ICdzZXQnLFxuKTogSmVzdE1vY2tDb21wYXQ8W10sIFRbR10+XG5leHBvcnQgZnVuY3Rpb24gc3B5T248VCwgTSBleHRlbmRzIENsYXNzZXM8UmVxdWlyZWQ8VD4+PihcbiAgb2JqZWN0OiBULFxuICBtZXRob2Q6IE1cbik6IFJlcXVpcmVkPFQ+W01dIGV4dGVuZHMgbmV3ICguLi5hcmdzOiBpbmZlciBBKSA9PiBpbmZlciBSXG4gID8gSmVzdE1vY2tDb21wYXQ8QSwgUj5cbiAgOiBuZXZlclxuZXhwb3J0IGZ1bmN0aW9uIHNweU9uPFQsIE0gZXh0ZW5kcyBNZXRob2RzPFJlcXVpcmVkPFQ+Pj4oXG4gIG9iajogVCxcbiAgbWV0aG9kTmFtZTogTSxcbiAgbW9jaz86IFRbTV1cbik6IFJlcXVpcmVkPFQ+W01dIGV4dGVuZHMgKC4uLmFyZ3M6IGluZmVyIEEpID0+IGluZmVyIFIgPyBKZXN0TW9ja0NvbXBhdDxBLCBSPiA6IG5ldmVyXG5leHBvcnQgZnVuY3Rpb24gc3B5T248VCwgSyBleHRlbmRzIGtleW9mIFQ+KFxuICBvYmo6IFQsXG4gIG1ldGhvZDogSyxcbiAgYWNjZXNzVHlwZT86ICdnZXQnIHwgJ3NldCcsXG4pOiBKZXN0TW9ja0NvbXBhdCB7XG4gIGNvbnN0IGRpY3Rpb25hcnkgPSB7XG4gICAgZ2V0OiAnZ2V0dGVyJyxcbiAgICBzZXQ6ICdzZXR0ZXInLFxuICB9IGFzIGNvbnN0XG4gIGNvbnN0IG9iak1ldGhvZCA9IGFjY2Vzc1R5cGUgPyB7IFtkaWN0aW9uYXJ5W2FjY2Vzc1R5cGVdXTogbWV0aG9kIH0gOiBtZXRob2RcblxuICBjb25zdCBzdHViID0gdGlueXNweS5zcHlPbihvYmosIG9iak1ldGhvZCBhcyBhbnkpXG5cbiAgcmV0dXJuIGVuaGFuY2VTcHkoc3R1YikgYXMgSmVzdE1vY2tDb21wYXRcbn1cblxuZnVuY3Rpb24gZW5oYW5jZVNweTxUQXJncyBleHRlbmRzIGFueVtdLCBUUmV0dXJucz4oXG4gIHNweTogU3B5SW1wbDxUQXJncywgVFJldHVybnM+LFxuKTogSmVzdE1vY2tDb21wYXQ8VEFyZ3MsIFRSZXR1cm5zPiB7XG4gIGNvbnN0IHN0dWIgPSBzcHkgYXMgdW5rbm93biBhcyBFbmhhbmNlZFNweTxUQXJncywgVFJldHVybnM+XG5cbiAgbGV0IGltcGxlbWVudGF0aW9uOiAoKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJucykgfCB1bmRlZmluZWRcblxuICBjb25zdCBpbnN0YW5jZXM6IGFueVtdID0gW11cblxuICBjb25zdCBtb2NrQ29udGV4dCA9IHtcbiAgICBnZXQgY2FsbHMoKSB7XG4gICAgICByZXR1cm4gc3R1Yi5jYWxsc1xuICAgIH0sXG4gICAgZ2V0IGluc3RhbmNlcygpIHtcbiAgICAgIHJldHVybiBpbnN0YW5jZXNcbiAgICB9LFxuICAgIC8vIG5vdCBzdXBwb3J0ZWRcbiAgICBnZXQgaW52b2NhdGlvbkNhbGxPcmRlcigpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH0sXG4gICAgZ2V0IHJlc3VsdHMoKSB7XG4gICAgICByZXR1cm4gc3R1Yi5yZXN1bHRzLm1hcCgoW2NhbGxUeXBlLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgdHlwZSA9IGNhbGxUeXBlID09PSAnZXJyb3InID8gJ3Rocm93JyA6ICdyZXR1cm4nXG4gICAgICAgIHJldHVybiB7IHR5cGUsIHZhbHVlIH1cbiAgICAgIH0pXG4gICAgfSxcbiAgfVxuXG4gIGxldCBvbmNlSW1wbGVtZW50YXRpb25zOiAoKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJucylbXSA9IFtdXG5cbiAgbGV0IG5hbWU6IHN0cmluZyA9IChzdHViIGFzIGFueSkubmFtZVxuXG4gIHN0dWIuZ2V0TW9ja05hbWUgPSAoKSA9PiBuYW1lIHx8ICd2aS5mbigpJ1xuICBzdHViLm1vY2tOYW1lID0gKG4pID0+IHtcbiAgICBuYW1lID0gblxuICAgIHJldHVybiBzdHViXG4gIH1cblxuICBzdHViLm1vY2tDbGVhciA9ICgpID0+IHtcbiAgICBzdHViLnJlc2V0KClcbiAgICByZXR1cm4gc3R1YlxuICB9XG5cbiAgc3R1Yi5tb2NrUmVzZXQgPSAoKSA9PiB7XG4gICAgc3R1Yi5yZXNldCgpXG4gICAgaW1wbGVtZW50YXRpb24gPSAoKSA9PiB1bmRlZmluZWQgYXMgdW5rbm93biBhcyBUUmV0dXJuc1xuICAgIG9uY2VJbXBsZW1lbnRhdGlvbnMgPSBbXVxuICAgIHJldHVybiBzdHViXG4gIH1cblxuICBzdHViLm1vY2tSZXN0b3JlID0gKCkgPT4ge1xuICAgIHN0dWIubW9ja1Jlc2V0KClcbiAgICBpbXBsZW1lbnRhdGlvbiA9IHVuZGVmaW5lZFxuICAgIHJldHVybiBzdHViXG4gIH1cblxuICBzdHViLmdldE1vY2tJbXBsZW1lbnRhdGlvbiA9ICgpID0+IGltcGxlbWVudGF0aW9uXG4gIHN0dWIubW9ja0ltcGxlbWVudGF0aW9uID0gKGZuOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm5zKSA9PiB7XG4gICAgaW1wbGVtZW50YXRpb24gPSBmblxuICAgIHJldHVybiBzdHViXG4gIH1cblxuICBzdHViLm1vY2tJbXBsZW1lbnRhdGlvbk9uY2UgPSAoZm46ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybnMpID0+IHtcbiAgICBvbmNlSW1wbGVtZW50YXRpb25zLnB1c2goZm4pXG4gICAgcmV0dXJuIHN0dWJcbiAgfVxuXG4gIHN0dWIubW9ja1JldHVyblRoaXMgPSAoKSA9PlxuICAgIHN0dWIubW9ja0ltcGxlbWVudGF0aW9uKGZ1bmN0aW9uKHRoaXM6IFRSZXR1cm5zKSB7XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH0pXG5cbiAgc3R1Yi5tb2NrUmV0dXJuVmFsdWUgPSAodmFsOiBUUmV0dXJucykgPT4gc3R1Yi5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdmFsKVxuICBzdHViLm1vY2tSZXR1cm5WYWx1ZU9uY2UgPSAodmFsOiBUUmV0dXJucykgPT4gc3R1Yi5tb2NrSW1wbGVtZW50YXRpb25PbmNlKCgpID0+IHZhbClcblxuICBzdHViLm1vY2tSZXNvbHZlZFZhbHVlID0gKHZhbDogQXdhaXRlZDxUUmV0dXJucz4pID0+XG4gICAgc3R1Yi5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gUHJvbWlzZS5yZXNvbHZlKHZhbCBhcyBUUmV0dXJucykpXG5cbiAgc3R1Yi5tb2NrUmVzb2x2ZWRWYWx1ZU9uY2UgPSAodmFsOiBBd2FpdGVkPFRSZXR1cm5zPikgPT5cbiAgICBzdHViLm1vY2tJbXBsZW1lbnRhdGlvbk9uY2UoKCkgPT4gUHJvbWlzZS5yZXNvbHZlKHZhbCBhcyBUUmV0dXJucykpXG5cbiAgc3R1Yi5tb2NrUmVqZWN0ZWRWYWx1ZSA9ICh2YWw6IHVua25vd24pID0+XG4gICAgc3R1Yi5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gUHJvbWlzZS5yZWplY3QodmFsKSlcblxuICBzdHViLm1vY2tSZWplY3RlZFZhbHVlT25jZSA9ICh2YWw6IHVua25vd24pID0+XG4gICAgc3R1Yi5tb2NrSW1wbGVtZW50YXRpb25PbmNlKCgpID0+IFByb21pc2UucmVqZWN0KHZhbCkpXG5cbiAgdXRpbC5hZGRQcm9wZXJ0eShzdHViLCAnbW9jaycsICgpID0+IG1vY2tDb250ZXh0KVxuXG4gIHN0dWIud2lsbENhbGwoZnVuY3Rpb24odGhpczogdW5rbm93biwgLi4uYXJncykge1xuICAgIGluc3RhbmNlcy5wdXNoKHRoaXMpXG4gICAgY29uc3QgaW1wbCA9IG9uY2VJbXBsZW1lbnRhdGlvbnMuc2hpZnQoKSB8fCBpbXBsZW1lbnRhdGlvbiB8fCBzdHViLmdldE9yaWdpbmFsKCkgfHwgKCgpID0+IHt9KVxuICAgIHJldHVybiBpbXBsLmFwcGx5KHRoaXMsIGFyZ3MpXG4gIH0pXG5cbiAgc3BpZXMuYWRkKHN0dWIpXG5cbiAgcmV0dXJuIHN0dWIgYXMgYW55XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmbjxUQXJncyBleHRlbmRzIGFueVtdID0gYW55W10sIFIgPSBhbnk+KCk6IEplc3RNb2NrQ29tcGF0Rm48VEFyZ3MsIFI+XG5leHBvcnQgZnVuY3Rpb24gZm48VEFyZ3MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLCBSID0gYW55PihcbiAgaW1wbGVtZW50YXRpb246ICguLi5hcmdzOiBUQXJncykgPT4gUlxuKTogSmVzdE1vY2tDb21wYXRGbjxUQXJncywgUj5cbmV4cG9ydCBmdW5jdGlvbiBmbjxUQXJncyBleHRlbmRzIGFueVtdID0gYW55W10sIFIgPSBhbnk+KFxuICBpbXBsZW1lbnRhdGlvbj86ICguLi5hcmdzOiBUQXJncykgPT4gUixcbik6IEplc3RNb2NrQ29tcGF0Rm48VEFyZ3MsIFI+IHtcbiAgcmV0dXJuIGVuaGFuY2VTcHkodGlueXNweS5zcHlPbih7IGZuOiBpbXBsZW1lbnRhdGlvbiB8fCAoKCkgPT4ge30pIH0sICdmbicpKSBhcyB1bmtub3duIGFzIEplc3RNb2NrQ29tcGF0Rm5cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFWSxNQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsR0FBRztBQUN4QixTQUFTLGNBQWMsQ0FBQyxHQUFHLEVBQUU7QUFDcEMsRUFBRSxPQUFPLE9BQU8sR0FBRyxLQUFLLFVBQVUsSUFBSSxTQUFTLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUM7QUFDdEUsQ0FBQztBQUNNLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFO0FBQy9DLEVBQUUsTUFBTSxVQUFVLEdBQUc7QUFDckIsSUFBSSxHQUFHLEVBQUUsUUFBUTtBQUNqQixJQUFJLEdBQUcsRUFBRSxRQUFRO0FBQ2pCLEdBQUcsQ0FBQztBQUNKLEVBQUUsTUFBTSxTQUFTLEdB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