@cartanova/qgrid-cli 1.0.4 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/bundle/dist/application/qgrid/pool.js +15 -6
  2. package/bundle/dist/application/qgrid/qgrid.frame.js +17 -22
  3. package/bundle/dist/application/qgrid/qgrid.types.js +5 -2
  4. package/bundle/dist/application/request-log/request-log.model.js +2 -2
  5. package/bundle/dist/sonamu.config.js +5 -2
  6. package/bundle/src/application/qgrid/pool.ts +17 -7
  7. package/bundle/src/application/qgrid/qgrid.frame.ts +18 -25
  8. package/bundle/src/application/qgrid/qgrid.types.ts +1 -1
  9. package/bundle/src/application/request-log/request-log.model.ts +2 -2
  10. package/bundle/src/sonamu.config.ts +1 -1
  11. package/bundle/web-dist/{web-dist/client/assets/index-DlPchHBY.js → client/assets/index-C0m8rRjO.js} +2 -2
  12. package/bundle/web-dist/client/assets/{routes-CagDz23B.js → routes-B1eOXnpo.js} +1 -1
  13. package/bundle/web-dist/client/assets/{show-aXUGa0gm.js → show-BztN6MXO.js} +1 -1
  14. package/bundle/web-dist/client/assets/tokens-rR2_-Pte.js +1 -0
  15. package/bundle/web-dist/client/index.html +1 -1
  16. package/bundle/web-dist/server/assets/{tokens-JH6FsnWZ.js → tokens-ARL5AOAh.js} +4 -1
  17. package/bundle/web-dist/server/entry-server.generated.js +1 -1
  18. package/dist/cli.js +38 -24
  19. package/package.json +10 -10
  20. package/bundle/dist/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js +0 -9
  21. package/bundle/dist/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorateMetadata.js +0 -6
  22. package/bundle/dist/dist/_virtual/_rolldown/runtime.js +0 -15
  23. package/bundle/dist/dist/application/qgrid/oauth.js +0 -140
  24. package/bundle/dist/dist/application/qgrid/pool.js +0 -100
  25. package/bundle/dist/dist/application/qgrid/qgrid.frame.js +0 -280
  26. package/bundle/dist/dist/application/qgrid/qgrid.types.js +0 -79
  27. package/bundle/dist/dist/application/qgrid/worker.js +0 -183
  28. package/bundle/dist/dist/application/queries.generated.js +0 -31
  29. package/bundle/dist/dist/application/request-log/request-log.model.js +0 -113
  30. package/bundle/dist/dist/application/request-log/request-log.types.js +0 -13
  31. package/bundle/dist/dist/application/sonamu.generated.js +0 -99
  32. package/bundle/dist/dist/application/sonamu.generated.sso.js +0 -34
  33. package/bundle/dist/dist/application/token/token.model.js +0 -157
  34. package/bundle/dist/dist/application/token/token.types.js +0 -22
  35. package/bundle/dist/dist/i18n/en.js +0 -63
  36. package/bundle/dist/dist/i18n/ko.js +0 -62
  37. package/bundle/dist/dist/i18n/sd.generated.js +0 -272
  38. package/bundle/dist/dist/index.js +0 -11
  39. package/bundle/dist/dist/migrations/20260410171405_create__request_logs.js +0 -26
  40. package/bundle/dist/dist/migrations/20260410171406_create__tokens.js +0 -24
  41. package/bundle/dist/dist/migrations/20260411120624_alter_tokens_alter2.js +0 -16
  42. package/bundle/dist/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +0 -155
  43. package/bundle/dist/dist/node_modules/.pnpm/@vitest_expect@4.1.2/node_modules/@vitest/expect/dist/index.js +0 -1484
  44. package/bundle/dist/dist/node_modules/.pnpm/@vitest_pretty-format@4.1.2/node_modules/@vitest/pretty-format/dist/index.js +0 -887
  45. package/bundle/dist/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/chunk-artifact.js +0 -2746
  46. package/bundle/dist/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/index.js +0 -8
  47. package/bundle/dist/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/utils.js +0 -8
  48. package/bundle/dist/dist/node_modules/.pnpm/@vitest_snapshot@4.1.2/node_modules/@vitest/snapshot/dist/index.js +0 -662
  49. package/bundle/dist/dist/node_modules/.pnpm/@vitest_spy@4.1.2/node_modules/@vitest/spy/dist/index.js +0 -386
  50. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +0 -82
  51. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/constants.js +0 -48
  52. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/diff.js +0 -1307
  53. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/display.js +0 -558
  54. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/error.js +0 -33
  55. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/helpers.js +0 -226
  56. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/offset.js +0 -27
  57. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/serialize.js +0 -77
  58. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/source-map.js +0 -374
  59. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/timers.js +0 -37
  60. package/bundle/dist/dist/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js +0 -2886
  61. package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.js +0 -10
  62. package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js +0 -109
  63. package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.js +0 -10
  64. package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.js +0 -10
  65. package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.js +0 -10
  66. package/bundle/dist/dist/node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.js +0 -1127
  67. package/bundle/dist/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/index.js +0 -21
  68. package/bundle/dist/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +0 -432
  69. package/bundle/dist/dist/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.js +0 -506
  70. package/bundle/dist/dist/node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js +0 -86
  71. package/bundle/dist/dist/node_modules/.pnpm/vite@8.0.3_@emnapi_core@1.9.2_@emnapi_runtime@1.9.2_@types_node@25.0.7_esbuild@0.27.4_jiti@2.6.1_sass@1.98.0_tsx@4.21.0/node_modules/vite/dist/node/module-runner.js +0 -426
  72. package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js +0 -6
  73. package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js +0 -41
  74. package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/evaluatedModules.Dg1zASAC.js +0 -19
  75. package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/index.Chj8NDwU.js +0 -202
  76. package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/index.DOa3dzoN.js +0 -16
  77. package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js +0 -59
  78. package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/test.p_J6dB8a.js +0 -2910
  79. package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js +0 -44
  80. package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/index.js +0 -28
  81. package/bundle/dist/dist/sonamu.config.js +0 -196
  82. package/bundle/dist/dist/testing/fixture.js +0 -8
  83. package/bundle/dist/dist/testing/global.js +0 -9
  84. package/bundle/dist/dist/testing/setup-mocks.js +0 -17
  85. package/bundle/dist/dist/utils/subset-loaders.js +0 -12
  86. package/bundle/src/src/application/qgrid/oauth.ts +0 -181
  87. package/bundle/src/src/application/qgrid/pool.ts +0 -132
  88. package/bundle/src/src/application/qgrid/qgrid.frame.ts +0 -275
  89. package/bundle/src/src/application/qgrid/qgrid.types.ts +0 -117
  90. package/bundle/src/src/application/qgrid/worker.ts +0 -234
  91. package/bundle/src/src/application/queries.generated.ts +0 -59
  92. package/bundle/src/src/application/request-log/request-log.entity.json +0 -75
  93. package/bundle/src/src/application/request-log/request-log.model.ts +0 -155
  94. package/bundle/src/src/application/request-log/request-log.types.ts +0 -15
  95. package/bundle/src/src/application/sonamu.generated.http +0 -187
  96. package/bundle/src/src/application/sonamu.generated.sso.ts +0 -66
  97. package/bundle/src/src/application/sonamu.generated.ts +0 -135
  98. package/bundle/src/src/application/token/token.entity.json +0 -37
  99. package/bundle/src/src/application/token/token.model.ts +0 -160
  100. package/bundle/src/src/application/token/token.types.ts +0 -26
  101. package/bundle/src/src/i18n/en.ts +0 -59
  102. package/bundle/src/src/i18n/ko.ts +0 -59
  103. package/bundle/src/src/i18n/sd.generated.ts +0 -384
  104. package/bundle/src/src/index.ts +0 -6
  105. package/bundle/src/src/migrations/20260410171405_create__request_logs.ts +0 -23
  106. package/bundle/src/src/migrations/20260410171406_create__tokens.ts +0 -21
  107. package/bundle/src/src/migrations/20260411120624_alter_tokens_alter2.ts +0 -15
  108. package/bundle/src/src/sonamu.config.ts +0 -248
  109. package/bundle/src/src/testing/fixture.ts +0 -6
  110. package/bundle/src/src/testing/global.ts +0 -6
  111. package/bundle/src/src/testing/setup-mocks.ts +0 -44
  112. package/bundle/src/src/typings/fastify.d.ts +0 -8
  113. package/bundle/src/src/typings/sonamu.d.ts +0 -17
  114. package/bundle/src/src/utils/subset-loaders.ts +0 -11
  115. package/bundle/web-dist/client/assets/index-DlPchHBY.js +0 -116
  116. package/bundle/web-dist/client/assets/tokens-DRkXtZ3Q.js +0 -1
  117. package/bundle/web-dist/web-dist/client/assets/index-vZsvyuFn.css +0 -1
  118. package/bundle/web-dist/web-dist/client/assets/rolldown-runtime-Dw2cE7zH.js +0 -1
  119. package/bundle/web-dist/web-dist/client/assets/routes-CagDz23B.js +0 -1
  120. package/bundle/web-dist/web-dist/client/assets/sd.generated-BrQoQXvv.js +0 -47
  121. package/bundle/web-dist/web-dist/client/assets/services.generated-BspO2L0j.js +0 -1
  122. package/bundle/web-dist/web-dist/client/assets/show-aXUGa0gm.js +0 -29
  123. package/bundle/web-dist/web-dist/client/assets/tokens-DRkXtZ3Q.js +0 -1
  124. package/bundle/web-dist/web-dist/client/assets/vendor-react-DH4kUfK2.js +0 -9
  125. package/bundle/web-dist/web-dist/client/assets/vendor-tanstack-CUxlo6YN.js +0 -1
  126. package/bundle/web-dist/web-dist/client/index.html +0 -18
  127. package/bundle/web-dist/web-dist/server/assets/react-dom-CGIzOSuj.js +0 -335
  128. package/bundle/web-dist/web-dist/server/assets/routes-ClzReRep.js +0 -490
  129. package/bundle/web-dist/web-dist/server/assets/sd.generated-BnonqqKr.js +0 -21694
  130. package/bundle/web-dist/web-dist/server/assets/services.generated-D5ABD5fr.js +0 -836
  131. package/bundle/web-dist/web-dist/server/assets/show-C9pcdSxc.js +0 -23364
  132. package/bundle/web-dist/web-dist/server/assets/tokens-JH6FsnWZ.js +0 -860
  133. package/bundle/web-dist/web-dist/server/entry-server.generated.js +0 -44646
@@ -1,506 +0,0 @@
1
- import "../../../../../../_virtual/_rolldown/runtime.js";
2
- //#region ../../node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.js
3
- var $ = Object.defineProperty;
4
- var C = (s) => {
5
- throw TypeError(s);
6
- };
7
- var D = (s, n, t) => n in s ? $(s, n, {
8
- enumerable: !0,
9
- configurable: !0,
10
- writable: !0,
11
- value: t
12
- }) : s[n] = t;
13
- var O = (s, n, t) => D(s, typeof n != "symbol" ? n + "" : n, t), q = (s, n, t) => n.has(s) || C("Cannot " + t);
14
- var d = (s, n, t) => (q(s, n, "read from private field"), t ? t.call(s) : n.get(s)), k = (s, n, t) => n.has(s) ? C("Cannot add the same private member more than once") : n instanceof WeakSet ? n.add(s) : n.set(s, t), f = (s, n, t, e) => (q(s, n, "write to private field"), e ? e.call(s, t) : n.set(s, t), t);
15
- var F = (s, n, t, e) => ({
16
- set _(r) {
17
- f(s, n, r, t);
18
- },
19
- get _() {
20
- return d(s, n, e);
21
- }
22
- });
23
- var M = class {
24
- constructor(n) {
25
- O(this, "value");
26
- O(this, "next");
27
- this.value = n;
28
- }
29
- }, m, w, E, g = class {
30
- constructor() {
31
- k(this, m);
32
- k(this, w);
33
- k(this, E);
34
- this.clear();
35
- }
36
- enqueue(n) {
37
- let t = new M(n);
38
- d(this, m) ? (d(this, w).next = t, f(this, w, t)) : (f(this, m, t), f(this, w, t)), F(this, E)._++;
39
- }
40
- dequeue() {
41
- let n = d(this, m);
42
- if (n) return f(this, m, d(this, m).next), F(this, E)._--, n.value;
43
- }
44
- clear() {
45
- f(this, m, void 0), f(this, w, void 0), f(this, E, 0);
46
- }
47
- get size() {
48
- return d(this, E);
49
- }
50
- *[Symbol.iterator]() {
51
- let n = d(this, m);
52
- for (; n;) yield n.value, n = n.next;
53
- }
54
- };
55
- m = /* @__PURE__ */ new WeakMap(), w = /* @__PURE__ */ new WeakMap(), E = /* @__PURE__ */ new WeakMap();
56
- function y(s) {
57
- if (!((Number.isInteger(s) || s === Number.POSITIVE_INFINITY) && s > 0)) throw new TypeError("Expected `concurrency` to be a number from 1 and up");
58
- let n = new g(), t = 0, e = () => {
59
- t--, n.size > 0 && n.dequeue()();
60
- }, r = async (h, p, a) => {
61
- t++;
62
- let l = (async () => h(...a))();
63
- p(l);
64
- try {
65
- await l;
66
- } catch (T) {}
67
- e();
68
- }, i = (h, p, a) => {
69
- n.enqueue(r.bind(void 0, h, p, a)), (async () => (await Promise.resolve(), t < s && n.size > 0 && n.dequeue()()))();
70
- }, c = (h, ...p) => new Promise((a) => {
71
- i(h, a, p);
72
- });
73
- return Object.defineProperties(c, {
74
- activeCount: { get: () => t },
75
- pendingCount: { get: () => n.size },
76
- clearQueue: { value: () => {
77
- n.clear();
78
- } }
79
- }), c;
80
- }
81
- function o(s, n = null) {
82
- let t = new Event(s);
83
- return n && Object.defineProperty(t, "task", {
84
- value: n,
85
- enumerable: !0,
86
- writable: !1,
87
- configurable: !1
88
- }), t;
89
- }
90
- var N = {
91
- 1: 12.71,
92
- 2: 4.303,
93
- 3: 3.182,
94
- 4: 2.776,
95
- 5: 2.571,
96
- 6: 2.447,
97
- 7: 2.365,
98
- 8: 2.306,
99
- 9: 2.262,
100
- 10: 2.228,
101
- 11: 2.201,
102
- 12: 2.179,
103
- 13: 2.16,
104
- 14: 2.145,
105
- 15: 2.131,
106
- 16: 2.12,
107
- 17: 2.11,
108
- 18: 2.101,
109
- 19: 2.093,
110
- 20: 2.086,
111
- 21: 2.08,
112
- 22: 2.074,
113
- 23: 2.069,
114
- 24: 2.064,
115
- 25: 2.06,
116
- 26: 2.056,
117
- 27: 2.052,
118
- 28: 2.048,
119
- 29: 2.045,
120
- 30: 2.042,
121
- 31: 2.0399,
122
- 32: 2.0378,
123
- 33: 2.0357,
124
- 34: 2.0336,
125
- 35: 2.0315,
126
- 36: 2.0294,
127
- 37: 2.0273,
128
- 38: 2.0252,
129
- 39: 2.0231,
130
- 40: 2.021,
131
- 41: 2.0198,
132
- 42: 2.0186,
133
- 43: 2.0174,
134
- 44: 2.0162,
135
- 45: 2.015,
136
- 46: 2.0138,
137
- 47: 2.0126,
138
- 48: 2.0114,
139
- 49: 2.0102,
140
- 50: 2.009,
141
- 51: 2.0081,
142
- 52: 2.0072,
143
- 53: 2.0063,
144
- 54: 2.0054,
145
- 55: 2.0045,
146
- 56: 2.0036,
147
- 57: 2.0027,
148
- 58: 2.0018,
149
- 59: 2.0009,
150
- 60: 2,
151
- 61: 1.9995,
152
- 62: 1.999,
153
- 63: 1.9985,
154
- 64: 1.998,
155
- 65: 1.9975,
156
- 66: 1.997,
157
- 67: 1.9965,
158
- 68: 1.996,
159
- 69: 1.9955,
160
- 70: 1.995,
161
- 71: 1.9945,
162
- 72: 1.994,
163
- 73: 1.9935,
164
- 74: 1.993,
165
- 75: 1.9925,
166
- 76: 1.992,
167
- 77: 1.9915,
168
- 78: 1.991,
169
- 79: 1.9905,
170
- 80: 1.99,
171
- 81: 1.9897,
172
- 82: 1.9894,
173
- 83: 1.9891,
174
- 84: 1.9888,
175
- 85: 1.9885,
176
- 86: 1.9882,
177
- 87: 1.9879,
178
- 88: 1.9876,
179
- 89: 1.9873,
180
- 90: 1.987,
181
- 91: 1.9867,
182
- 92: 1.9864,
183
- 93: 1.9861,
184
- 94: 1.9858,
185
- 95: 1.9855,
186
- 96: 1.9852,
187
- 97: 1.9849,
188
- 98: 1.9846,
189
- 99: 1.9843,
190
- 100: 1.984,
191
- 101: 1.9838,
192
- 102: 1.9836,
193
- 103: 1.9834,
194
- 104: 1.9832,
195
- 105: 1.983,
196
- 106: 1.9828,
197
- 107: 1.9826,
198
- 108: 1.9824,
199
- 109: 1.9822,
200
- 110: 1.982,
201
- 111: 1.9818,
202
- 112: 1.9816,
203
- 113: 1.9814,
204
- 114: 1.9812,
205
- 115: 1.9819,
206
- 116: 1.9808,
207
- 117: 1.9806,
208
- 118: 1.9804,
209
- 119: 1.9802,
210
- 120: 1.98,
211
- infinity: 1.96
212
- };
213
- var J = (s) => s / 1e6, U = () => J(Number(process.hrtime.bigint())), B = () => performance.now();
214
- function W(s) {
215
- return s !== null && typeof s == "object" && typeof s.then == "function";
216
- }
217
- var S = (s, n) => s.reduce((e, r) => e + (r - n) ** 2, 0) / (s.length - 1) || 0, X = (async () => {}).constructor, Z = (s) => s.constructor === X, z = async (s) => {
218
- if (Z(s.fn)) return !0;
219
- try {
220
- if (s.opts.beforeEach != null) try {
221
- await s.opts.beforeEach.call(s);
222
- } catch (e) {}
223
- let n = s.fn(), t = W(n);
224
- if (t) try {
225
- await n;
226
- } catch (e) {}
227
- if (s.opts.afterEach != null) try {
228
- await s.opts.afterEach.call(s);
229
- } catch (e) {}
230
- return t;
231
- } catch (n) {
232
- return !1;
233
- }
234
- };
235
- var b = class extends EventTarget {
236
- constructor(t, e, r, i = {}) {
237
- super();
238
- this.runs = 0;
239
- this.bench = t, this.name = e, this.fn = r, this.opts = i;
240
- }
241
- async loop(t, e) {
242
- var T;
243
- let r = this.bench.concurrency === "task", { threshold: i } = this.bench, c = 0, h = [];
244
- if (this.opts.beforeAll != null) try {
245
- await this.opts.beforeAll.call(this);
246
- } catch (u) {
247
- return { error: u };
248
- }
249
- let p = await z(this), a = async () => {
250
- this.opts.beforeEach != null && await this.opts.beforeEach.call(this);
251
- let u = 0;
252
- if (p) {
253
- let v = this.bench.now();
254
- await this.fn.call(this), u = this.bench.now() - v;
255
- } else {
256
- let v = this.bench.now();
257
- this.fn.call(this), u = this.bench.now() - v;
258
- }
259
- h.push(u), c += u, this.opts.afterEach != null && await this.opts.afterEach.call(this);
260
- }, l = y(i);
261
- try {
262
- let u = [];
263
- for (; (c < t || h.length + l.activeCount + l.pendingCount < e) && !((T = this.bench.signal) != null && T.aborted);) r ? u.push(l(a)) : await a();
264
- u.length && await Promise.all(u);
265
- } catch (u) {
266
- return { error: u };
267
- }
268
- if (this.opts.afterAll != null) try {
269
- await this.opts.afterAll.call(this);
270
- } catch (u) {
271
- return { error: u };
272
- }
273
- return { samples: h };
274
- }
275
- /**
276
- * run the current task and write the results in `Task.result` object
277
- */
278
- async run() {
279
- var r, i;
280
- if ((r = this.result) != null && r.error) return this;
281
- this.dispatchEvent(o("start", this)), await this.bench.setup(this, "run");
282
- let { samples: t, error: e } = await this.loop(this.bench.time, this.bench.iterations);
283
- if (this.bench.teardown(this, "run"), t) {
284
- let c = t.reduce((L, A) => L + A, 0);
285
- this.runs = t.length, t.sort((L, A) => L - A);
286
- let h = c / this.runs, p = 1e3 / h, a = t.length, l = a - 1, T = t[0], u = t[l], v = c / t.length || 0, P = S(t, v), R = Math.sqrt(P), I = R / Math.sqrt(a), _ = N[String(Math.round(l) || 1)] || N.infinity, K = I * _, j = K / v * 100, H = t[Math.ceil(a * .75) - 1], V = t[Math.ceil(a * .99) - 1], Q = t[Math.ceil(a * .995) - 1], Y = t[Math.ceil(a * .999) - 1];
287
- if ((i = this.bench.signal) != null && i.aborted) return this;
288
- this.setResult({
289
- totalTime: c,
290
- min: T,
291
- max: u,
292
- hz: p,
293
- period: h,
294
- samples: t,
295
- mean: v,
296
- variance: P,
297
- sd: R,
298
- sem: I,
299
- df: l,
300
- critical: _,
301
- moe: K,
302
- rme: j,
303
- p75: H,
304
- p99: V,
305
- p995: Q,
306
- p999: Y
307
- });
308
- }
309
- if (e) {
310
- if (this.setResult({ error: e }), this.bench.throws) throw e;
311
- this.dispatchEvent(o("error", this)), this.bench.dispatchEvent(o("error", this));
312
- }
313
- return this.dispatchEvent(o("cycle", this)), this.bench.dispatchEvent(o("cycle", this)), this.dispatchEvent(o("complete", this)), this;
314
- }
315
- /**
316
- * warmup the current task
317
- */
318
- async warmup() {
319
- var e;
320
- if ((e = this.result) != null && e.error) return;
321
- this.dispatchEvent(o("warmup", this)), await this.bench.setup(this, "warmup");
322
- let { error: t } = await this.loop(this.bench.warmupTime, this.bench.warmupIterations);
323
- if (this.bench.teardown(this, "warmup"), t && (this.setResult({ error: t }), this.bench.throws)) throw t;
324
- }
325
- addEventListener(t, e, r) {
326
- super.addEventListener(t, e, r);
327
- }
328
- removeEventListener(t, e, r) {
329
- super.removeEventListener(t, e, r);
330
- }
331
- /**
332
- * change the result object values
333
- */
334
- setResult(t) {
335
- this.result = {
336
- ...this.result,
337
- ...t
338
- }, Object.freeze(this.result);
339
- }
340
- /**
341
- * reset the task to make the `Task.runs` a zero-value and remove the `Task.result`
342
- * object
343
- */
344
- reset() {
345
- this.dispatchEvent(o("reset", this)), this.runs = 0, this.result = void 0;
346
- }
347
- };
348
- var x = class extends EventTarget {
349
- constructor(t = {}) {
350
- var e, r, i, c, h, p, a, l;
351
- super();
352
- this._tasks = /* @__PURE__ */ new Map();
353
- this._todos = /* @__PURE__ */ new Map();
354
- /**
355
- * Executes tasks concurrently based on the specified concurrency mode.
356
- *
357
- * - When `mode` is set to `null` (default), concurrency is disabled.
358
- * - When `mode` is set to 'task', each task's iterations (calls of a task function) run concurrently.
359
- * - When `mode` is set to 'bench', different tasks within the bench run concurrently.
360
- */
361
- this.concurrency = null;
362
- /**
363
- * The maximum number of concurrent tasks to run. Defaults to Infinity.
364
- */
365
- this.threshold = Infinity;
366
- this.warmupTime = 100;
367
- this.warmupIterations = 5;
368
- this.time = 500;
369
- this.iterations = 10;
370
- this.now = B;
371
- this.now = (e = t.now) != null ? e : this.now, this.warmupTime = (r = t.warmupTime) != null ? r : this.warmupTime, this.warmupIterations = (i = t.warmupIterations) != null ? i : this.warmupIterations, this.time = (c = t.time) != null ? c : this.time, this.iterations = (h = t.iterations) != null ? h : this.iterations, this.signal = t.signal, this.throws = (p = t.throws) != null ? p : !1, this.setup = (a = t.setup) != null ? a : () => {}, this.teardown = (l = t.teardown) != null ? l : () => {}, this.signal && this.signal.addEventListener("abort", () => {
372
- this.dispatchEvent(o("abort"));
373
- }, { once: !0 });
374
- }
375
- runTask(t) {
376
- var e;
377
- return (e = this.signal) != null && e.aborted ? t : t.run();
378
- }
379
- /**
380
- * run the added tasks that were registered using the
381
- * {@link add} method.
382
- * Note: This method does not do any warmup. Call {@link warmup} for that.
383
- */
384
- async run() {
385
- if (this.concurrency === "bench") return this.runConcurrently(this.threshold, this.concurrency);
386
- this.dispatchEvent(o("start"));
387
- let t = [];
388
- for (let e of [...this._tasks.values()]) t.push(await this.runTask(e));
389
- return this.dispatchEvent(o("complete")), t;
390
- }
391
- /**
392
- * See Bench.{@link concurrency}
393
- */
394
- async runConcurrently(t = Infinity, e = "bench") {
395
- if (this.threshold = t, this.concurrency = e, e === "task") return this.run();
396
- this.dispatchEvent(o("start"));
397
- let r = y(t), i = [];
398
- for (let h of [...this._tasks.values()]) i.push(r(() => this.runTask(h)));
399
- let c = await Promise.all(i);
400
- return this.dispatchEvent(o("complete")), c;
401
- }
402
- /**
403
- * warmup the benchmark tasks.
404
- * This is not run by default by the {@link run} method.
405
- */
406
- async warmup() {
407
- if (this.concurrency === "bench") {
408
- await this.warmupConcurrently(this.threshold, this.concurrency);
409
- return;
410
- }
411
- this.dispatchEvent(o("warmup"));
412
- for (let [, t] of this._tasks) await t.warmup();
413
- }
414
- /**
415
- * warmup the benchmark tasks concurrently.
416
- * This is not run by default by the {@link runConcurrently} method.
417
- */
418
- async warmupConcurrently(t = Infinity, e = "bench") {
419
- if (this.threshold = t, this.concurrency = e, e === "task") {
420
- await this.warmup();
421
- return;
422
- }
423
- this.dispatchEvent(o("warmup"));
424
- let r = y(t), i = [];
425
- for (let [, c] of this._tasks) i.push(r(() => c.warmup()));
426
- await Promise.all(i);
427
- }
428
- /**
429
- * reset each task and remove its result
430
- */
431
- reset() {
432
- this.dispatchEvent(o("reset")), this._tasks.forEach((t) => {
433
- t.reset();
434
- });
435
- }
436
- /**
437
- * add a benchmark task to the task map
438
- */
439
- add(t, e, r = {}) {
440
- let i = new b(this, t, e, r);
441
- return this._tasks.set(t, i), this.dispatchEvent(o("add", i)), this;
442
- }
443
- /**
444
- * add a benchmark todo to the todo map
445
- */
446
- todo(t, e = () => {}, r = {}) {
447
- let i = new b(this, t, e, r);
448
- return this._todos.set(t, i), this.dispatchEvent(o("todo", i)), this;
449
- }
450
- /**
451
- * remove a benchmark task from the task map
452
- */
453
- remove(t) {
454
- let e = this.getTask(t);
455
- return e && (this.dispatchEvent(o("remove", e)), this._tasks.delete(t)), this;
456
- }
457
- addEventListener(t, e, r) {
458
- super.addEventListener(t, e, r);
459
- }
460
- removeEventListener(t, e, r) {
461
- super.removeEventListener(t, e, r);
462
- }
463
- /**
464
- * table of the tasks results
465
- */
466
- table(t) {
467
- return this.tasks.map((e) => {
468
- if (e.result) {
469
- if (e.result.error) throw e.result.error;
470
- return (t == null ? void 0 : t(e)) || {
471
- "Task Name": e.name,
472
- "ops/sec": e.result.error ? "NaN" : parseInt(e.result.hz.toString(), 10).toLocaleString(),
473
- "Average Time (ns)": e.result.error ? "NaN" : e.result.mean * 1e3 * 1e3,
474
- Margin: e.result.error ? "NaN" : `\xB1${e.result.rme.toFixed(2)}%`,
475
- Samples: e.result.error ? "NaN" : e.result.samples.length
476
- };
477
- }
478
- return null;
479
- });
480
- }
481
- /**
482
- * (getter) tasks results as an array
483
- */
484
- get results() {
485
- return [...this._tasks.values()].map((t) => t.result);
486
- }
487
- /**
488
- * (getter) tasks as an array
489
- */
490
- get tasks() {
491
- return [...this._tasks.values()];
492
- }
493
- get todos() {
494
- return [...this._todos.values()];
495
- }
496
- /**
497
- * get a task based on the task name
498
- */
499
- getTask(t) {
500
- return this._tasks.get(t);
501
- }
502
- };
503
- //#endregion
504
- export { x as Bench, b as Task, U as hrtimeNow, B as now };
505
-
506
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RpbnliZW5jaEAyLjkuMC9ub2RlX21vZHVsZXMvdGlueWJlbmNoL2Rpc3QvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyICQgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgQyA9IChzKSA9PiB7XG4gIHRocm93IFR5cGVFcnJvcihzKTtcbn07XG52YXIgRCA9IChzLCBuLCB0KSA9PiBuIGluIHMgPyAkKHMsIG4sIHsgZW51bWVyYWJsZTogITAsIGNvbmZpZ3VyYWJsZTogITAsIHdyaXRhYmxlOiAhMCwgdmFsdWU6IHQgfSkgOiBzW25dID0gdDtcbnZhciBPID0gKHMsIG4sIHQpID0+IEQocywgdHlwZW9mIG4gIT0gXCJzeW1ib2xcIiA/IG4gKyBcIlwiIDogbiwgdCksIHEgPSAocywgbiwgdCkgPT4gbi5oYXMocykgfHwgQyhcIkNhbm5vdCBcIiArIHQpO1xudmFyIGQgPSAocywgbiwgdCkgPT4gKHEocywgbiwgXCJyZWFkIGZyb20gcHJpdmF0ZSBmaWVsZFwiKSwgdCA/IHQuY2FsbChzKSA6IG4uZ2V0KHMpKSwgayA9IChzLCBuLCB0KSA9PiBuLmhhcyhzKSA/IEMoXCJDYW5ub3QgYWRkIHRoZSBzYW1lIHByaXZhdGUgbWVtYmVyIG1vcmUgdGhhbiBvbmNlXCIpIDogbiBpbnN0YW5jZW9mIFdlYWtTZXQgPyBuLmFkZChzKSA6IG4uc2V0KHMsIHQpLCBmID0gKHMsIG4sIHQsIGUpID0+IChxKHMsIG4sIFwid3JpdGUgdG8gcHJpdmF0ZSBmaWVsZFwiKSwgZSA/IGUuY2FsbChzLCB0KSA6IG4uc2V0KHMsIHQpLCB0KTtcbnZhciBGID0gKHMsIG4sIHQsIGUpID0+ICh7XG4gIHNldCBfKHIpIHtcbiAgICBmKHMsIG4sIHIsIHQpO1xuICB9LFxuICBnZXQgXygpIHtcbiAgICByZXR1cm4gZChzLCBuLCBlKTtcbiAgfVxufSk7XG5cbi8vIG5vZGVfbW9kdWxlcy8ucG5wbS95b2N0by1xdWV1ZUAxLjAuMC9ub2RlX21vZHVsZXMveW9jdG8tcXVldWUvaW5kZXguanNcbnZhciBNID0gY2xhc3Mge1xuICBjb25zdHJ1Y3RvcihuKSB7XG4gICAgTyh0aGlzLCBcInZhbHVlXCIpO1xuICAgIE8odGhpcywgXCJuZXh0XCIpO1xuICAgIHRoaXMudmFsdWUgPSBuO1xuICB9XG59LCBtLCB3LCBFLCBnID0gY2xhc3Mge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBrKHRoaXMsIG0pO1xuICAgIGsodGhpcywgdyk7XG4gICAgayh0aGlzLCBFKTtcbiAgICB0aGlzLmNsZWFyKCk7XG4gIH1cbiAgZW5xdWV1ZShuKSB7XG4gICAgbGV0IHQgPSBuZXcgTShuKTtcbiAgICBkKHRoaXMsIG0pID8gKGQodGhpcywgdykubmV4dCA9IHQsIGYodGhpcywgdywgdCkpIDogKGYodGhpcywgbSwgdCksIGYodGhpcywgdywgdCkpLCBGKHRoaXMsIEUpLl8rKztcbiAgfVxuICBkZXF1ZXVlKCkge1xuICAgIGxldCBuID0gZCh0aGlzLCBtKTtcbiAgICBpZiAobilcbiAgICAgIHJldHVybiBmKHRoaXMsIG0sIGQodGhpcywgbSkubmV4dCksIEYodGhpcywgRSkuXy0tLCBuLnZhbHVlO1xuICB9XG4gIGNsZWFyKCkge1xuICAgIGYodGhpcywgbSwgdm9pZCAwKSwgZih0aGlzLCB3LCB2b2lkIDApLCBmKHRoaXMsIEUsIDApO1xuICB9XG4gIGdldCBzaXplKCkge1xuICAgIHJldHVybiBkKHRoaXMsIEUpO1xuICB9XG4gICpbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICBsZXQgbiA9IGQodGhpcywgbSk7XG4gICAgZm9yICg7IG47IClcbiAgICAgIHlpZWxkIG4udmFsdWUsIG4gPSBuLm5leHQ7XG4gIH1cbn07XG5tID0gbmV3IFdlYWtNYXAoKSwgdyA9IG5ldyBXZWFrTWFwKCksIEUgPSBuZXcgV2Vha01hcCgpO1xuXG4vLyBub2RlX21vZHVsZXMvLnBucG0vcC1saW1pdEA0LjAuMC9ub2RlX21vZHVsZXMvcC1saW1pdC9pbmRleC5qc1xuZnVuY3Rpb24geShzKSB7XG4gIGlmICghKChOdW1iZXIuaXNJbnRlZ2VyKHMpIHx8IHMgPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkgJiYgcyA+IDApKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RlZCBgY29uY3VycmVuY3lgIHRvIGJlIGEgbnVtYmVyIGZyb20gMSBhbmQgdXBcIik7XG4gIGxldCBuID0gbmV3IGcoKSwgdCA9IDAsIGUgPSAoKSA9PiB7XG4gICAgdC0tLCBuLnNpemUgPiAwICYmIG4uZGVxdWV1ZSgpKCk7XG4gIH0sIHIgPSBhc3luYyAoaCwgcCwgYSkgPT4ge1xuICAgIHQrKztcbiAgICBsZXQgbCA9IChhc3luYyAoKSA9PiBoKC4uLmEpKSgpO1xuICAgIHAobCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGw7XG4gICAgfSBjYXRjaCAoVCkge1xuICAgIH1cbiAgICBlKCk7XG4gIH0sIGkgPSAoaCwgcCwgYSkgPT4ge1xuICAgIG4uZW5xdWV1ZShyLmJpbmQodm9pZCAwLCBoLCBwLCBhKSksIChhc3luYyAoKSA9PiAoYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCksIHQgPCBzICYmIG4uc2l6ZSA+IDAgJiYgbi5kZXF1ZXVlKCkoKSkpKCk7XG4gIH0sIGMgPSAoaCwgLi4ucCkgPT4gbmV3IFByb21pc2UoKGEpID0+IHtcbiAgICBpKGgsIGEsIHApO1xuICB9KTtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGMsIHtcbiAgICBhY3RpdmVDb3VudDoge1xuICAgICAgZ2V0OiAoKSA9PiB0XG4gICAgfSxcbiAgICBwZW5kaW5nQ291bnQ6IHtcbiAgICAgIGdldDogKCkgPT4gbi5zaXplXG4gICAgfSxcbiAgICBjbGVhclF1ZXVlOiB7XG4gICAgICB2YWx1ZTogKCkgPT4ge1xuICAgICAgICBuLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfVxuICB9KSwgYztcbn1cblxuLy8gc3JjL2V2ZW50LnRzXG5mdW5jdGlvbiBvKHMsIG4gPSBudWxsKSB7XG4gIGxldCB0ID0gbmV3IEV2ZW50KHMpO1xuICByZXR1cm4gbiAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJ0YXNrXCIsIHtcbiAgICB2YWx1ZTogbixcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICB3cml0YWJsZTogITEsXG4gICAgY29uZmlndXJhYmxlOiAhMVxuICB9KSwgdDtcbn1cblxuLy8gc3JjL2NvbnN0YW50cy50c1xudmFyIEcgPSB7XG4gIDE6IDEyLjcxLFxuICAyOiA0LjMwMyxcbiAgMzogMy4xODIsXG4gIDQ6IDIuNzc2LFxuICA1OiAyLjU3MSxcbiAgNjogMi40NDcsXG4gIDc6IDIuMzY1LFxuICA4OiAyLjMwNixcbiAgOTogMi4yNjIsXG4gIDEwOiAyLjIyOCxcbiAgMTE6IDIuMjAxLFxuICAxMjogMi4xNzksXG4gIDEzOiAyLjE2LFxuICAxNDogMi4xNDUsXG4gIDE1OiAyLjEzMSxcbiAgMTY6IDIuMTIsXG4gIDE3OiAyLjExLFxuICAxODogMi4xMDEsXG4gIDE5OiAyLjA5MyxcbiAgMjA6IDIuMDg2LFxuICAyMTogMi4wOCxcbiAgMjI6IDIuMDc0LFxuICAyMzogMi4wNjksXG4gIDI0OiAyLjA2NCxcbiAgMjU6IDIuMDYsXG4gIDI2OiAyLjA1NixcbiAgMjc6IDIuMDUyLFxuICAyODogMi4wNDgsXG4gIDI5OiAyLjA0NSxcbiAgMzA6IDIuMDQyLFxuICAzMTogMi4wMzk5LFxuICAzMjogMi4wMzc4LFxuICAzMzogMi4wMzU3LFxuICAzNDogMi4wMzM2LFxuICAzNTogMi4wMzE1LFxuICAzNjogMi4wMjk0LFxuICAzNzogMi4wMjczLFxuICAzODogMi4wMjUyLFxuICAzOTogMi4wMjMxLFxuICA0MDogMi4wMjEsXG4gIDQxOiAyLjAxOTgsXG4gIDQyOiAyLjAxODYsXG4gIDQzOiAyLjAxNzQsXG4gIDQ0OiAyLjAxNjIsXG4gIDQ1OiAyLjAxNSxcbiAgNDY6IDIuMDEzOCxcbiAgNDc6IDIuMDEyNixcbiAgNDg6IDIuMDExNCxcbiAgNDk6IDIuMDEwMixcbiAgNTA6IDIuMDA5LFxuICA1MTogMi4wMDgxLFxuICA1MjogMi4wMDcyLFxuICA1MzogMi4wMDYzLFxuICA1NDogMi4wMDU0LFxuICA1NTogMi4wMDQ1LFxuICA1NjogMi4wMDM2LFxuICA1NzogMi4wMDI3LFxuICA1ODogMi4wMDE4LFxuICA1OTogMi4wMDA5LFxuICA2MDogMixcbiAgNjE6IDEuOTk5NSxcbiAgNjI6IDEuOTk5LFxuICA2MzogMS45OTg1LFxuICA2NDogMS45OTgsXG4gIDY1OiAxLjk5NzUsXG4gIDY2OiAxLjk5NyxcbiAgNjc6IDEuOTk2NSxcbiAgNjg6IDEuOTk2LFxuICA2OTogMS45OTU1LFxuICA3MDogMS45OTUsXG4gIDcxOiAxLjk5NDUsXG4gIDcyOiAxLjk5NCxcbiAgNzM6IDEuOTkzNSxcbiAgNzQ6IDEuOTkzLFxuICA3NTogMS45OTI1LFxuICA3NjogMS45OTIsXG4gIDc3OiAxLjk5MTUsXG4gIDc4OiAxLjk5MSxcbiAgNzk6IDEuOTkwNSxcbiAgODA6IDEuOTksXG4gIDgxOiAxLjk4OTcsXG4gIDgyOiAxLjk4OTQsXG4gIDgzOiAxLjk4OTEsXG4gIDg0OiAxLjk4ODgsXG4gIDg1OiAxLjk4ODUsXG4gIDg2OiAxLjk4ODIsXG4gIDg3OiAxLjk4NzksXG4gIDg4OiAxLjk4NzYsXG4gIDg5OiAxLjk4NzMsXG4gIDkwOiAxLjk4NyxcbiAgOTE6IDEuOTg2NyxcbiAgOTI6IDEuOTg2NCxcbiAgOTM6IDEuOTg2MSxcbiAgOTQ6IDEuOTg1OCxcbiAgOTU6IDEuOTg1NSxcbiAgOTY6IDEuOTg1MixcbiAgOTc6IDEuOTg0OSxcbiAgOTg6IDEuOTg0NixcbiAgOTk6IDEuOTg0MyxcbiAgMTAwOiAxLjk4NCxcbiAgMTAxOiAxLjk4MzgsXG4gIDEwMjogMS45ODM2LFxuICAxMDM6IDEuOTgzNCxcbiAgMTA0OiAxLjk4MzIsXG4gIDEwNTogMS45ODMsXG4gIDEwNjogMS45ODI4LFxuICAxMDc6IDEuOTgyNixcbiAgMTA4OiAxLjk4MjQsXG4gIDEwOTogMS45ODIyLFxuICAxMTA6IDEuOTgyLFxuICAxMTE6IDEuOTgxOCxcbiAgMTEyOiAxLjk4MTYsXG4gIDExMzogMS45ODE0LFxuICAxMTQ6IDEuOTgxMixcbiAgMTE1OiAxLjk4MTksXG4gIDExNjogMS45ODA4LFxuICAxMTc6IDEuOTgwNixcbiAgMTE4OiAxLjk4MDQsXG4gIDExOTogMS45ODAyLFxuICAxMjA6IDEuOTgsXG4gIGluZmluaXR5OiAxLjk2XG59LCBOID0gRztcblxuLy8gc3JjL3V0aWxzLnRzXG52YXIgSiA9IChzKSA9PiBzIC8gMWU2LCBVID0gKCkgPT4gSihOdW1iZXIocHJvY2Vzcy5ocnRpbWUuYmlnaW50KCkpKSwgQiA9ICgpID0+IHBlcmZvcm1hbmNlLm5vdygpO1xuZnVuY3Rpb24gVyhzKSB7XG4gIHJldHVybiBzICE9PSBudWxsICYmIHR5cGVvZiBzID09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHMudGhlbiA9PSBcImZ1bmN0aW9uXCI7XG59XG52YXIgUyA9IChzLCBuKSA9PiBzLnJlZHVjZSgoZSwgcikgPT4gZSArIChyIC0gbikgKiogMiwgMCkgLyAocy5sZW5ndGggLSAxKSB8fCAwLCBYID0gKGFzeW5jICgpID0+IHtcbn0pLmNvbnN0cnVjdG9yLCBaID0gKHMpID0+IHMuY29uc3RydWN0b3IgPT09IFgsIHogPSBhc3luYyAocykgPT4ge1xuICBpZiAoWihzLmZuKSlcbiAgICByZXR1cm4gITA7XG4gIHRyeSB7XG4gICAgaWYgKHMub3B0cy5iZWZvcmVFYWNoICE9IG51bGwpXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBzLm9wdHMuYmVmb3JlRWFjaC5jYWxsKHMpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgfVxuICAgIGxldCBuID0gcy5mbigpLCB0ID0gVyhuKTtcbiAgICBpZiAodClcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG47XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICB9XG4gICAgaWYgKHMub3B0cy5hZnRlckVhY2ggIT0gbnVsbClcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHMub3B0cy5hZnRlckVhY2guY2FsbChzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIH1cbiAgICByZXR1cm4gdDtcbiAgfSBjYXRjaCAobikge1xuICAgIHJldHVybiAhMTtcbiAgfVxufTtcblxuLy8gc3JjL3Rhc2sudHNcbnZhciBiID0gY2xhc3MgZXh0ZW5kcyBFdmVudFRhcmdldCB7XG4gIGNvbnN0cnVjdG9yKHQsIGUsIHIsIGkgPSB7fSkge1xuICAgIHN1cGVyKCk7XG4gICAgLypcbiAgICAgKiB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSB0YXNrXG4gICAgICogZnVuY3Rpb24gaGFzIGJlZW4gZXhlY3V0ZWRcbiAgICAgKi9cbiAgICB0aGlzLnJ1bnMgPSAwO1xuICAgIHRoaXMuYmVuY2ggPSB0LCB0aGlzLm5hbWUgPSBlLCB0aGlzLmZuID0gciwgdGhpcy5vcHRzID0gaTtcbiAgfVxuICBhc3luYyBsb29wKHQsIGUpIHtcbiAgICB2YXIgVDtcbiAgICBsZXQgciA9IHRoaXMuYmVuY2guY29uY3VycmVuY3kgPT09IFwidGFza1wiLCB7IHRocmVzaG9sZDogaSB9ID0gdGhpcy5iZW5jaCwgYyA9IDAsIGggPSBbXTtcbiAgICBpZiAodGhpcy5vcHRzLmJlZm9yZUFsbCAhPSBudWxsKVxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5vcHRzLmJlZm9yZUFsbC5jYWxsKHRoaXMpO1xuICAgICAgfSBjYXRjaCAodSkge1xuICAgICAgICByZXR1cm4geyBlcnJvcjogdSB9O1xuICAgICAgfVxuICAgIGxldCBwID0gYXdhaXQgeih0aGlzKSwgYSA9IGFzeW5jICgpID0+IHtcbiAgICAgIHRoaXMub3B0cy5iZWZvcmVFYWNoICE9IG51bGwgJiYgYXdhaXQgdGhpcy5vcHRzLmJlZm9yZUVhY2guY2FsbCh0aGlzKTtcbiAgICAgIGxldCB1ID0gMDtcbiAgICAgIGlmIChwKSB7XG4gICAgICAgIGxldCB2ID0gdGhpcy5iZW5jaC5ub3coKTtcbiAgICAgICAgYXdhaXQgdGhpcy5mbi5jYWxsKHRoaXMpLCB1ID0gdGhpcy5iZW5jaC5ub3coKSAtIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgdiA9IHRoaXMuYmVuY2gubm93KCk7XG4gICAgICAgIHRoaXMuZm4uY2FsbCh0aGlzKSwgdSA9IHRoaXMuYmVuY2gubm93KCkgLSB2O1xuICAgICAgfVxuICAgICAgaC5wdXNoKHUpLCBjICs9IHUsIHRoaXMub3B0cy5hZnRlckVhY2ggIT0gbnVsbCAmJiBhd2FpdCB0aGlzLm9wdHMuYWZ0ZXJFYWNoLmNhbGwodGhpcyk7XG4gICAgfSwgbCA9IHkoaSk7XG4gICAgdHJ5IHtcbiAgICAgIGxldCB1ID0gW107XG4gICAgICBmb3IgKDsgKGMgPCB0IHx8IGgubGVuZ3RoICsgbC5hY3RpdmVDb3VudCArIGwucGVuZGluZ0NvdW50IDwgZSkgJiYgISgoVCA9IHRoaXMuYmVuY2guc2lnbmFsKSAhPSBudWxsICYmIFQuYWJvcnRlZCk7IClcbiAgICAgICAgciA/IHUucHVzaChsKGEpKSA6IGF3YWl0IGEoKTtcbiAgICAgIHUubGVuZ3RoICYmIGF3YWl0IFByb21pc2UuYWxsKHUpO1xuICAgIH0gY2F0Y2ggKHUpIHtcbiAgICAgIHJldHVybiB7IGVycm9yOiB1IH07XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdHMuYWZ0ZXJBbGwgIT0gbnVsbClcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMub3B0cy5hZnRlckFsbC5jYWxsKHRoaXMpO1xuICAgICAgfSBjYXRjaCAodSkge1xuICAgICAgICByZXR1cm4geyBlcnJvcjogdSB9O1xuICAgICAgfVxuICAgIHJldHVybiB7IHNhbXBsZXM6IGggfTtcbiAgfVxuICAvKipcbiAgICogcnVuIHRoZSBjdXJyZW50IHRhc2sgYW5kIHdyaXRlIHRoZSByZXN1bHRzIGluIGBUYXNrLnJlc3VsdGAgb2JqZWN0XG4gICAqL1xuICBhc3luYyBydW4oKSB7XG4gICAgdmFyIHIsIGk7XG4gICAgaWYgKChyID0gdGhpcy5yZXN1bHQpICE9IG51bGwgJiYgci5lcnJvcilcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChvKFwic3RhcnRcIiwgdGhpcykpLCBhd2FpdCB0aGlzLmJlbmNoLnNldHVwKHRoaXMsIFwicnVuXCIpO1xuICAgIGxldCB7IHNhbXBsZXM6IHQsIGVycm9yOiBlIH0gPSBhd2FpdCB0aGlzLmxvb3AodGhpcy5iZW5jaC50aW1lLCB0aGlzLmJlbmNoLml0ZXJhdGlvbnMpO1xuICAgIGlmICh0aGlzLmJlbmNoLnRlYXJkb3duKHRoaXMsIFwicnVuXCIpLCB0KSB7XG4gICAgICBsZXQgYyA9IHQucmVkdWNlKChMLCBBKSA9PiBMICsgQSwgMCk7XG4gICAgICB0aGlzLnJ1bnMgPSB0Lmxlbmd0aCwgdC5zb3J0KChMLCBBKSA9PiBMIC0gQSk7XG4gICAgICBsZXQgaCA9IGMgLyB0aGlzLnJ1bnMsIHAgPSAxZTMgLyBoLCBhID0gdC5sZW5ndGgsIGwgPSBhIC0gMSwgVCA9IHRbMF0sIHUgPSB0W2xdLCB2ID0gYyAvIHQubGVuZ3RoIHx8IDAsIFAgPSBTKHQsIHYpLCBSID0gTWF0aC5zcXJ0KFApLCBJID0gUiAvIE1hdGguc3FydChhKSwgXyA9IE5bU3RyaW5nKE1hdGgucm91bmQobCkgfHwgMSldIHx8IE4uaW5maW5pdHksIEsgPSBJICogXywgaiA9IEsgLyB2ICogMTAwLCBIID0gdFtNYXRoLmNlaWwoYSAqIDAuNzUpIC0gMV0sIFYgPSB0W01hdGguY2VpbChhICogMC45OSkgLSAxXSwgUSA9IHRbTWF0aC5jZWlsKGEgKiAwLjk5NSkgLSAxXSwgWSA9IHRbTWF0aC5jZWlsKGEgKiAwLjk5OSkgLSAxXTtcbiAgICAgIGlmICgoaSA9IHRoaXMuYmVuY2guc2lnbmFsKSAhPSBudWxsICYmIGkuYWJvcnRlZClcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB0aGlzLnNldFJlc3VsdCh7XG4gICAgICAgIHRvdGFsVGltZTogYyxcbiAgICAgICAgbWluOiBULFxuICAgICAgICBtYXg6IHUsXG4gICAgICAgIGh6OiBwLFxuICAgICAgICBwZXJpb2Q6IGgsXG4gICAgICAgIHNhbXBsZXM6IHQsXG4gICAgICAgIG1lYW46IHYsXG4gICAgICAgIHZhcmlhbmNlOiBQLFxuICAgICAgICBzZDogUixcbiAgICAgICAgc2VtOiBJLFxuICAgICAgICBkZjogbCxcbiAgICAgICAgY3JpdGljYWw6IF8sXG4gICAgICAgIG1vZTogSyxcbiAgICAgICAgcm1lOiBqLFxuICAgICAgICBwNzU6IEgsXG4gICAgICAgIHA5OTogVixcbiAgICAgICAgcDk5NTogUSxcbiAgICAgICAgcDk5OTogWVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChlKSB7XG4gICAgICBpZiAodGhpcy5zZXRSZXN1bHQoeyBlcnJvcjogZSB9KSwgdGhpcy5iZW5jaC50aHJvd3MpXG4gICAgICAgIHRocm93IGU7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobyhcImVycm9yXCIsIHRoaXMpKSwgdGhpcy5iZW5jaC5kaXNwYXRjaEV2ZW50KG8oXCJlcnJvclwiLCB0aGlzKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoRXZlbnQobyhcImN5Y2xlXCIsIHRoaXMpKSwgdGhpcy5iZW5jaC5kaXNwYXRjaEV2ZW50KG8oXCJjeWNsZVwiLCB0aGlzKSksIHRoaXMuZGlzcGF0Y2hFdmVudChvKFwiY29tcGxldGVcIiwgdGhpcykpLCB0aGlzO1xuICB9XG4gIC8qKlxuICAgKiB3YXJtdXAgdGhlIGN1cnJlbnQgdGFza1xuICAgKi9cbiAgYXN5bmMgd2FybXVwKCkge1xuICAgIHZhciBlO1xuICAgIGlmICgoZSA9IHRoaXMucmVzdWx0KSAhPSBudWxsICYmIGUuZXJyb3IpXG4gICAgICByZXR1cm47XG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG8oXCJ3YXJtdXBcIiwgdGhpcykpLCBhd2FpdCB0aGlzLmJlbmNoLnNldHVwKHRoaXMsIFwid2FybXVwXCIpO1xuICAgIGxldCB7IGVycm9yOiB0IH0gPSBhd2FpdCB0aGlzLmxvb3AodGhpcy5iZW5jaC53YXJtdXBUaW1lLCB0aGlzLmJlbmNoLndhcm11cEl0ZXJhdGlvbnMpO1xuICAgIGlmICh0aGlzLmJlbmNoLnRlYXJkb3duKHRoaXMsIFwid2FybXVwXCIpLCB0ICYmICh0aGlzLnNldFJlc3VsdCh7IGVycm9yOiB0IH0pLCB0aGlzLmJlbmNoLnRocm93cykpXG4gICAgICB0aHJvdyB0O1xuICB9XG4gIGFkZEV2ZW50TGlzdGVuZXIodCwgZSwgcikge1xuICAgIHN1cGVyLmFkZEV2ZW50TGlzdGVuZXIodCwgZSwgcik7XG4gIH1cbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCBlLCByKSB7XG4gICAgc3VwZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCBlLCByKTtcbiAgfVxuICAvKipcbiAgICogY2hhbmdlIHRoZSByZXN1bHQgb2JqZWN0IHZhbHVlc1xuICAgKi9cbiAgc2V0UmVzdWx0KHQpIHtcbiAgICB0aGlzLnJlc3VsdCA9IHsgLi4udGhpcy5yZXN1bHQsIC4uLnQgfSwgT2JqZWN0LmZyZWV6ZSh0aGlzLnJlc3VsdCk7XG4gIH1cbiAgLyoqXG4gICAqIHJlc2V0IHRoZSB0YXNrIHRvIG1ha2UgdGhlIGBUYXNrLnJ1bnNgIGEgemVyby12YWx1ZSBhbmQgcmVtb3ZlIHRoZSBgVGFzay5yZXN1bHRgXG4gICAqIG9iamVjdFxuICAgKi9cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG8oXCJyZXNldFwiLCB0aGlzKSksIHRoaXMucnVucyA9IDAsIHRoaXMucmVzdWx0ID0gdm9pZCAwO1xuICB9XG59O1xuXG4vLyBzcmMvYmVuY2gudHNcbnZhciB4ID0gY2xhc3MgZXh0ZW5kcyBFdmVudFRhcmdldCB7XG4gIGNvbnN0cnVjdG9yKHQgPSB7fSkge1xuICAgIHZhciBlLCByLCBpLCBjLCBoLCBwLCBhLCBsO1xuICAgIHN1cGVyKCk7XG4gICAgLypcbiAgICAgKiBAcHJpdmF0ZSB0aGUgdGFzayBtYXBcbiAgICAgKi9cbiAgICB0aGlzLl90YXNrcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgdGhpcy5fdG9kb3MgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICAgIC8qKlxuICAgICogRXhlY3V0ZXMgdGFza3MgY29uY3VycmVudGx5IGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgY29uY3VycmVuY3kgbW9kZS5cbiAgICAqXG4gICAgKiAtIFdoZW4gYG1vZGVgIGlzIHNldCB0byBgbnVsbGAgKGRlZmF1bHQpLCBjb25jdXJyZW5jeSBpcyBkaXNhYmxlZC5cbiAgICAqIC0gV2hlbiBgbW9kZWAgaXMgc2V0IHRvICd0YXNrJywgZWFjaCB0YXNrJ3MgaXRlcmF0aW9ucyAoY2FsbHMgb2YgYSB0YXNrIGZ1bmN0aW9uKSBydW4gY29uY3VycmVudGx5LlxuICAgICogLSBXaGVuIGBtb2RlYCBpcyBzZXQgdG8gJ2JlbmNoJywgZGlmZmVyZW50IHRhc2tzIHdpdGhpbiB0aGUgYmVuY2ggcnVuIGNvbmN1cnJlbnRseS5cbiAgICAqL1xuICAgIHRoaXMuY29uY3VycmVuY3kgPSBudWxsO1xuICAgIC8qKlxuICAgICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25jdXJyZW50IHRhc2tzIHRvIHJ1bi4gRGVmYXVsdHMgdG8gSW5maW5pdHkuXG4gICAgICovXG4gICAgdGhpcy50aHJlc2hvbGQgPSAxIC8gMDtcbiAgICB0aGlzLndhcm11cFRpbWUgPSAxMDA7XG4gICAgdGhpcy53YXJtdXBJdGVyYXRpb25zID0gNTtcbiAgICB0aGlzLnRpbWUgPSA1MDA7XG4gICAgdGhpcy5pdGVyYXRpb25zID0gMTA7XG4gICAgdGhpcy5ub3cgPSBCO1xuICAgIHRoaXMubm93ID0gKGUgPSB0Lm5vdykgIT0gbnVsbCA/IGUgOiB0aGlzLm5vdywgdGhpcy53YXJtdXBUaW1lID0gKHIgPSB0Lndhcm11cFRpbWUpICE9IG51bGwgPyByIDogdGhpcy53YXJtdXBUaW1lLCB0aGlzLndhcm11cEl0ZXJhdGlvbnMgPSAoaSA9IHQud2FybXVwSXRlcmF0aW9ucykgIT0gbnVsbCA/IGkgOiB0aGlzLndhcm11cEl0ZXJhdGlvbnMsIHRoaXMudGltZSA9IChjID0gdC50aW1lKSAhPSBudWxsID8gYyA6IHRoaXMudGltZSwgdGhpcy5pdGVyYXRpb25zID0gKGggPSB0Lml0ZXJhdGlvbnMpICE9IG51bGwgPyBoIDogdGhpcy5pdGVyYXRpb25zLCB0aGlzLnNpZ25hbCA9IHQuc2lnbmFsLCB0aGlzLnRocm93cyA9IChwID0gdC50aHJvd3MpICE9IG51bGwgPyBwIDogITEsIHRoaXMuc2V0dXAgPSAoYSA9IHQuc2V0dXApICE9IG51bGwgPyBhIDogKCkgPT4ge1xuICAgIH0sIHRoaXMudGVhcmRvd24gPSAobCA9IHQudGVhcmRvd24pICE9IG51bGwgPyBsIDogKCkgPT4ge1xuICAgIH0sIHRoaXMuc2lnbmFsICYmIHRoaXMuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBcImFib3J0XCIsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChvKFwiYWJvcnRcIikpO1xuICAgICAgfSxcbiAgICAgIHsgb25jZTogITAgfVxuICAgICk7XG4gIH1cbiAgcnVuVGFzayh0KSB7XG4gICAgdmFyIGU7XG4gICAgcmV0dXJuIChlID0gdGhpcy5zaWduYWwpICE9IG51bGwgJiYgZS5hYm9ydGVkID8gdCA6IHQucnVuKCk7XG4gIH1cbiAgLyoqXG4gICAqIHJ1biB0aGUgYWRkZWQgdGFza3MgdGhhdCB3ZXJlIHJlZ2lzdGVyZWQgdXNpbmcgdGhlXG4gICAqIHtAbGluayBhZGR9IG1ldGhvZC5cbiAgICogTm90ZTogVGhpcyBtZXRob2QgZG9lcyBub3QgZG8gYW55IHdhcm11cC4gQ2FsbCB7QGxpbmsgd2FybXVwfSBmb3IgdGhhdC5cbiAgICovXG4gIGFzeW5jIHJ1bigpIHtcbiAgICBpZiAodGhpcy5jb25jdXJyZW5jeSA9PT0gXCJiZW5jaFwiKVxuICAgICAgcmV0dXJuIHRoaXMucnVuQ29uY3VycmVudGx5KHRoaXMudGhyZXNob2xkLCB0aGlzLmNvbmN1cnJlbmN5KTtcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobyhcInN0YXJ0XCIpKTtcbiAgICBsZXQgdCA9IFtdO1xuICAgIGZvciAobGV0IGUgb2YgWy4uLnRoaXMuX3Rhc2tzLnZhbHVlcygpXSlcbiAgICAgIHQucHVzaChhd2FpdCB0aGlzLnJ1blRhc2soZSkpO1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoRXZlbnQobyhcImNvbXBsZXRlXCIpKSwgdDtcbiAgfVxuICAvKipcbiAgICogU2VlIEJlbmNoLntAbGluayBjb25jdXJyZW5jeX1cbiAgICovXG4gIGFzeW5jIHJ1bkNvbmN1cnJlbnRseSh0ID0gMSAvIDAsIGUgPSBcImJlbmNoXCIpIHtcbiAgICBpZiAodGhpcy50aHJlc2hvbGQgPSB0LCB0aGlzLmNvbmN1cnJlbmN5ID0gZSwgZSA9PT0gXCJ0YXNrXCIpXG4gICAgICByZXR1cm4gdGhpcy5ydW4oKTtcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobyhcInN0YXJ0XCIpKTtcbiAgICBsZXQgciA9IHkodCksIGkgPSBbXTtcbiAgICBmb3IgKGxldCBoIG9mIFsuLi50aGlzLl90YXNrcy52YWx1ZXMoKV0pXG4gICAgICBpLnB1c2gocigoKSA9PiB0aGlzLnJ1blRhc2soaCkpKTtcbiAgICBsZXQgYyA9IGF3YWl0IFByb21pc2UuYWxsKGkpO1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoRXZlbnQobyhcImNvbXBsZXRlXCIpKSwgYztcbiAgfVxuICAvKipcbiAgICogd2FybXVwIHRoZSBiZW5jaG1hcmsgdGFza3MuXG4gICAqIFRoaXMgaXMgbm90IHJ1biBieSBkZWZhdWx0IGJ5IHRoZSB7QGxpbmsgcnVufSBtZXRob2QuXG4gICAqL1xuICBhc3luYyB3YXJtdXAoKSB7XG4gICAgaWYgKHRoaXMuY29uY3VycmVuY3kgPT09IFwiYmVuY2hcIikge1xuICAgICAgYXdhaXQgdGhpcy53YXJtdXBDb25jdXJyZW50bHkodGhpcy50aHJlc2hvbGQsIHRoaXMuY29uY3VycmVuY3kpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobyhcIndhcm11cFwiKSk7XG4gICAgZm9yIChsZXQgWywgdF0gb2YgdGhpcy5fdGFza3MpXG4gICAgICBhd2FpdCB0Lndhcm11cCgpO1xuICB9XG4gIC8qKlxuICAgKiB3YXJtdXAgdGhlIGJlbmNobWFyayB0YXNrcyBjb25jdXJyZW50bHkuXG4gICAqIFRoaXMgaXMgbm90IHJ1biBieSBkZWZhdWx0IGJ5IHRoZSB7QGxpbmsgcnVuQ29uY3VycmVudGx5fSBtZXRob2QuXG4gICAqL1xuICBhc3luYyB3YXJtdXBDb25jdXJyZW50bHkodCA9IDEgLyAwLCBlID0gXCJiZW5jaFwiKSB7XG4gICAgaWYgKHRoaXMudGhyZXNob2xkID0gdCwgdGhpcy5jb25jdXJyZW5jeSA9IGUsIGUgPT09IFwidGFza1wiKSB7XG4gICAgICBhd2FpdCB0aGlzLndhcm11cCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobyhcIndhcm11cFwiKSk7XG4gICAgbGV0IHIgPSB5KHQpLCBpID0gW107XG4gICAgZm9yIChsZXQgWywgY10gb2YgdGhpcy5fdGFza3MpXG4gICAgICBpLnB1c2gocigoKSA9PiBjLndhcm11cCgpKSk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoaSk7XG4gIH1cbiAgLyoqXG4gICAqIHJlc2V0IGVhY2ggdGFzayBhbmQgcmVtb3ZlIGl0cyByZXN1bHRcbiAgICovXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChvKFwicmVzZXRcIikpLCB0aGlzLl90YXNrcy5mb3JFYWNoKCh0KSA9PiB7XG4gICAgICB0LnJlc2V0KCk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIGFkZCBhIGJlbmNobWFyayB0YXNrIHRvIHRoZSB0YXNrIG1hcFxuICAgKi9cbiAgYWRkKHQsIGUsIHIgPSB7fSkge1xuICAgIGxldCBpID0gbmV3IGIodGhpcywgdCwgZSwgcik7XG4gICAgcmV0dXJuIHRoaXMuX3Rhc2tzLnNldCh0LCBpKSwgdGhpcy5kaXNwYXRjaEV2ZW50KG8oXCJhZGRcIiwgaSkpLCB0aGlzO1xuICB9XG4gIC8qKlxuICAgKiBhZGQgYSBiZW5jaG1hcmsgdG9kbyB0byB0aGUgdG9kbyBtYXBcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgdG9kbyh0LCBlID0gKCkgPT4ge1xuICB9LCByID0ge30pIHtcbiAgICBsZXQgaSA9IG5ldyBiKHRoaXMsIHQsIGUsIHIpO1xuICAgIHJldHVybiB0aGlzLl90b2Rvcy5zZXQodCwgaSksIHRoaXMuZGlzcGF0Y2hFdmVudChvKFwidG9kb1wiLCBpKSksIHRoaXM7XG4gIH1cbiAgLyoqXG4gICAqIHJlbW92ZSBhIGJlbmNobWFyayB0YXNrIGZyb20gdGhlIHRhc2sgbWFwXG4gICAqL1xuICByZW1vdmUodCkge1xuICAgIGxldCBlID0gdGhpcy5nZXRUYXNrKHQpO1xuICAgIHJldHVybiBlICYmICh0aGlzLmRpc3BhdGNoRXZlbnQobyhcInJlbW92ZVwiLCBlKSksIHRoaXMuX3Rhc2tzLmRlbGV0ZSh0KSksIHRoaXM7XG4gIH1cbiAgYWRkRXZlbnRMaXN0ZW5lcih0LCBlLCByKSB7XG4gICAgc3VwZXIuYWRkRXZlbnRMaXN0ZW5lcih0LCBlLCByKTtcbiAgfVxuICByZW1vdmVFdmVudExpc3RlbmVyKHQsIGUsIHIpIHtcbiAgICBzdXBlci5yZW1vdmVFdmVudExpc3RlbmVyKHQsIGUsIHIpO1xuICB9XG4gIC8qKlxuICAgKiB0YWJsZSBvZiB0aGUgdGFza3MgcmVzdWx0c1xuICAgKi9cbiAgdGFibGUodCkge1xuICAgIHJldHVybiB0aGlzLnRhc2tzLm1hcCgoZSkgPT4ge1xuICAgICAgaWYgKGUucmVzdWx0KSB7XG4gICAgICAgIGlmIChlLnJlc3VsdC5lcnJvcilcbiAgICAgICAgICB0aHJvdyBlLnJlc3VsdC5lcnJvcjtcbiAgICAgICAgcmV0dXJuICh0ID09IG51bGwgPyB2b2lkIDAgOiB0KGUpKSB8fCB7XG4gICAgICAgICAgXCJUYXNrIE5hbWVcIjogZS5uYW1lLFxuICAgICAgICAgIFwib3BzL3NlY1wiOiBlLnJlc3VsdC5lcnJvciA/IFwiTmFOXCIgOiBwYXJzZUludChlLnJlc3VsdC5oei50b1N0cmluZygpLCAxMCkudG9Mb2NhbGVTdHJpbmcoKSxcbiAgICAgICAgICBcIkF2ZXJhZ2UgVGltZSAobnMpXCI6IGUucmVzdWx0LmVycm9yID8gXCJOYU5cIiA6IGUucmVzdWx0Lm1lYW4gKiAxZTMgKiAxZTMsXG4gICAgICAgICAgTWFyZ2luOiBlLnJlc3VsdC5lcnJvciA/IFwiTmFOXCIgOiBgXFx4QjEke2UucmVzdWx0LnJtZS50b0ZpeGVkKDIpfSVgLFxuICAgICAgICAgIFNhbXBsZXM6IGUucmVzdWx0LmVycm9yID8gXCJOYU5cIiA6IGUucmVzdWx0LnNhbXBsZXMubGVuZ3RoXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogKGdldHRlcikgdGFza3MgcmVzdWx0cyBhcyBhbiBhcnJheVxuICAgKi9cbiAgZ2V0IHJlc3VsdHMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl90YXNrcy52YWx1ZXMoKV0ubWFwKCh0KSA9PiB0LnJlc3VsdCk7XG4gIH1cbiAgLyoqXG4gICAqIChnZXR0ZXIpIHRhc2tzIGFzIGFuIGFycmF5XG4gICAqL1xuICBnZXQgdGFza3MoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl90YXNrcy52YWx1ZXMoKV07XG4gIH1cbiAgZ2V0IHRvZG9zKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5fdG9kb3MudmFsdWVzKCldO1xuICB9XG4gIC8qKlxuICAgKiBnZXQgYSB0YXNrIGJhc2VkIG9uIHRoZSB0YXNrIG5hbWVcbiAgICovXG4gIGdldFRhc2sodCkge1xuICAgIHJldHVybiB0aGlzLl90YXNrcy5nZXQodCk7XG4gIH1cbn07XG5leHBvcnQge1xuICB4IGFzIEJlbmNoLFxuICBiIGFzIFRhc2ssXG4gIFUgYXMgaHJ0aW1lTm93LFxuICBCIGFzIG5vd1xufTtcbiJdLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUksSUFBSSxPQUFPO0FBQ2YsSUFBSSxLQUFLLE1BQU07QUFDYixPQUFNLFVBQVUsRUFBRTs7QUFFcEIsSUFBSSxLQUFLLEdBQUcsR0FBRyxNQUFNLEtBQUssSUFBSSxFQUFFLEdBQUcsR0FBRztDQUFFLFlBQVksQ0FBQztDQUFHLGNBQWMsQ0FBQztDQUFHLFVBQVUsQ0FBQztDQUFHLE9BQU87Q0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLO0FBQzdHLElBQUksS0FBSyxHQUFHLEdBQUcsTUFBTSxFQUFFLEdBQUcsT0FBTyxLQUFLLFdBQVcsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFLEtBQUssR0FBRyxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRTtBQUM5RyxJQUFJLEtBQUssR0FBRyxHQUFHLE9BQU8sRUFBRSxHQUFHLEdBQUcsMEJBQTBCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxHQUFHLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsb0RBQW9ELEdBQUcsYUFBYSxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLEtBQUssR0FBRyxHQUFHLEdBQUcsT0FBTyxFQUFFLEdBQUcsR0FBRyx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUU7QUFDalQsSUFBSSxLQUFLLEdBQUcsR0FBRyxHQUFHLE9BQU87Q0FDdkIsSUFBSSxFQUFFLEdBQUc7QUFDUCxJQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUU7O0NBRWYsSUFBSSxJQUFJO0FBQ04sU0FBTyxF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Q0gsR0FBRztDQUNILEdBQUc7Q0FDSCxHQUFHO0NBQ0gsR0FBRztDQUNILElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NBQ0osSUFBSTtDQUNKLElBQUk7Q0FDSixJQUFJO0NB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
@@ -1,86 +0,0 @@
1
- //#region ../../node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js
2
- var b = {
3
- reset: [0, 0],
4
- bold: [
5
- 1,
6
- 22,
7
- "\x1B[22m\x1B[1m"
8
- ],
9
- dim: [
10
- 2,
11
- 22,
12
- "\x1B[22m\x1B[2m"
13
- ],
14
- italic: [3, 23],
15
- underline: [4, 24],
16
- inverse: [7, 27],
17
- hidden: [8, 28],
18
- strikethrough: [9, 29],
19
- black: [30, 39],
20
- red: [31, 39],
21
- green: [32, 39],
22
- yellow: [33, 39],
23
- blue: [34, 39],
24
- magenta: [35, 39],
25
- cyan: [36, 39],
26
- white: [37, 39],
27
- gray: [90, 39],
28
- bgBlack: [40, 49],
29
- bgRed: [41, 49],
30
- bgGreen: [42, 49],
31
- bgYellow: [43, 49],
32
- bgBlue: [44, 49],
33
- bgMagenta: [45, 49],
34
- bgCyan: [46, 49],
35
- bgWhite: [47, 49],
36
- blackBright: [90, 39],
37
- redBright: [91, 39],
38
- greenBright: [92, 39],
39
- yellowBright: [93, 39],
40
- blueBright: [94, 39],
41
- magentaBright: [95, 39],
42
- cyanBright: [96, 39],
43
- whiteBright: [97, 39],
44
- bgBlackBright: [100, 49],
45
- bgRedBright: [101, 49],
46
- bgGreenBright: [102, 49],
47
- bgYellowBright: [103, 49],
48
- bgBlueBright: [104, 49],
49
- bgMagentaBright: [105, 49],
50
- bgCyanBright: [106, 49],
51
- bgWhiteBright: [107, 49]
52
- };
53
- function i(e) {
54
- return String(e);
55
- }
56
- i.open = "";
57
- i.close = "";
58
- function B() {
59
- let e = typeof process != "undefined" ? process : void 0, r = (e == null ? void 0 : e.env) || {}, a = r.FORCE_TTY !== "false", l = (e == null ? void 0 : e.argv) || [];
60
- return !("NO_COLOR" in r || l.includes("--no-color")) && ("FORCE_COLOR" in r || l.includes("--color") || (e == null ? void 0 : e.platform) === "win32" || a && r.TERM !== "dumb" || "CI" in r) || typeof window != "undefined" && !!window.chrome;
61
- }
62
- function C({ force: e } = {}) {
63
- let r = e || B(), a = (t, o, u, n) => {
64
- let g = "", s = 0;
65
- do
66
- g += t.substring(s, n) + u, s = n + o.length, n = t.indexOf(o, s);
67
- while (~n);
68
- return g + t.substring(s);
69
- }, l = (t, o, u = t) => {
70
- let n = (g) => {
71
- let s = String(g), h = s.indexOf(o, t.length);
72
- return ~h ? t + a(s, o, u, h) + o : t + s + o;
73
- };
74
- return n.open = t, n.close = o, n;
75
- }, c = { isColorSupported: r }, f = (t) => `\x1B[${t}m`;
76
- for (let t in b) {
77
- let o = b[t];
78
- c[t] = r ? l(f(o[0]), f(o[1]), o[2]) : i;
79
- }
80
- return c;
81
- }
82
- var y = C();
83
- //#endregion
84
- export { y };
85
-
86
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RpbnlyYWluYm93QDMuMS4wL25vZGVfbW9kdWxlcy90aW55cmFpbmJvdy9kaXN0L2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9pbmRleC50c1xudmFyIGIgPSB7XG4gIHJlc2V0OiBbMCwgMF0sXG4gIGJvbGQ6IFsxLCAyMiwgXCJcXHgxQlsyMm1cXHgxQlsxbVwiXSxcbiAgZGltOiBbMiwgMjIsIFwiXFx4MUJbMjJtXFx4MUJbMm1cIl0sXG4gIGl0YWxpYzogWzMsIDIzXSxcbiAgdW5kZXJsaW5lOiBbNCwgMjRdLFxuICBpbnZlcnNlOiBbNywgMjddLFxuICBoaWRkZW46IFs4LCAyOF0sXG4gIHN0cmlrZXRocm91Z2g6IFs5LCAyOV0sXG4gIGJsYWNrOiBbMzAsIDM5XSxcbiAgcmVkOiBbMzEsIDM5XSxcbiAgZ3JlZW46IFszMiwgMzldLFxuICB5ZWxsb3c6IFszMywgMzldLFxuICBibHVlOiBbMzQsIDM5XSxcbiAgbWFnZW50YTogWzM1LCAzOV0sXG4gIGN5YW46IFszNiwgMzldLFxuICB3aGl0ZTogWzM3LCAzOV0sXG4gIGdyYXk6IFs5MCwgMzldLFxuICBiZ0JsYWNrOiBbNDAsIDQ5XSxcbiAgYmdSZWQ6IFs0MSwgNDldLFxuICBiZ0dyZWVuOiBbNDIsIDQ5XSxcbiAgYmdZZWxsb3c6IFs0MywgNDldLFxuICBiZ0JsdWU6IFs0NCwgNDldLFxuICBiZ01hZ2VudGE6IFs0NSwgNDldLFxuICBiZ0N5YW46IFs0NiwgNDldLFxuICBiZ1doaXRlOiBbNDcsIDQ5XSxcbiAgYmxhY2tCcmlnaHQ6IFs5MCwgMzldLFxuICByZWRCcmlnaHQ6IFs5MSwgMzldLFxuICBncmVlbkJyaWdodDogWzkyLCAzOV0sXG4gIHllbGxvd0JyaWdodDogWzkzLCAzOV0sXG4gIGJsdWVCcmlnaHQ6IFs5NCwgMzldLFxuICBtYWdlbnRhQnJpZ2h0OiBbOTUsIDM5XSxcbiAgY3lhbkJyaWdodDogWzk2LCAzOV0sXG4gIHdoaXRlQnJpZ2h0OiBbOTcsIDM5XSxcbiAgYmdCbGFja0JyaWdodDogWzEwMCwgNDldLFxuICBiZ1JlZEJyaWdodDogWzEwMSwgNDldLFxuICBiZ0dyZWVuQnJpZ2h0OiBbMTAyLCA0OV0sXG4gIGJnWWVsbG93QnJpZ2h0OiBbMTAzLCA0OV0sXG4gIGJnQmx1ZUJyaWdodDogWzEwNCwgNDldLFxuICBiZ01hZ2VudGFCcmlnaHQ6IFsxMDUsIDQ5XSxcbiAgYmdDeWFuQnJpZ2h0OiBbMTA2LCA0OV0sXG4gIGJnV2hpdGVCcmlnaHQ6IFsxMDcsIDQ5XVxufTtcbmZ1bmN0aW9uIGkoZSkge1xuICByZXR1cm4gU3RyaW5nKGUpO1xufVxuaS5vcGVuID0gXCJcIjtcbmkuY2xvc2UgPSBcIlwiO1xuZnVuY3Rpb24gcCgpIHtcbiAgbGV0IGUgPSB7XG4gICAgaXNDb2xvclN1cHBvcnRlZDogITEsXG4gICAgcmVzZXQ6IGlcbiAgfTtcbiAgZm9yIChsZXQgciBpbiBiKVxuICAgIGVbcl0gPSBpO1xuICByZXR1cm4gZTtcbn1cbmZ1bmN0aW9uIEIoKSB7XG4gIGxldCBlID0gdHlwZW9mIHByb2Nlc3MgIT0gXCJ1bmRlZmluZWRcIiA/IHByb2Nlc3MgOiB2b2lkIDAsIHIgPSAoZSA9PSBudWxsID8gdm9pZCAwIDogZS5lbnYpIHx8IHt9LCBhID0gci5GT1JDRV9UVFkgIT09IFwiZmFsc2VcIiwgbCA9IChlID09IG51bGwgPyB2b2lkIDAgOiBlLmFyZ3YpIHx8IFtdO1xuICByZXR1cm4gIShcIk5PX0NPTE9SXCIgaW4gciB8fCBsLmluY2x1ZGVzKFwiLS1uby1jb2xvclwiKSkgJiYgKFwiRk9SQ0VfQ09MT1JcIiBpbiByIHx8IGwuaW5jbHVkZXMoXCItLWNvbG9yXCIpIHx8IChlID09IG51bGwgPyB2b2lkIDAgOiBlLnBsYXRmb3JtKSA9PT0gXCJ3aW4zMlwiIHx8IGEgJiYgci5URVJNICE9PSBcImR1bWJcIiB8fCBcIkNJXCIgaW4gcikgfHwgdHlwZW9mIHdpbmRvdyAhPSBcInVuZGVmaW5lZFwiICYmICEhd2luZG93LmNocm9tZTtcbn1cbmZ1bmN0aW9uIEMoeyBmb3JjZTogZSB9ID0ge30pIHtcbiAgbGV0IHIgPSBlIHx8IEIoKSwgYSA9ICh0LCBvLCB1LCBuKSA9PiB7XG4gICAgbGV0IGcgPSBcIlwiLCBzID0gMDtcbiAgICBkb1xuICAgICAgZyArPSB0LnN1YnN0cmluZyhzLCBuKSArIHUsIHMgPSBuICsgby5sZW5ndGgsIG4gPSB0LmluZGV4T2Yobywgcyk7XG4gICAgd2hpbGUgKH5uKTtcbiAgICByZXR1cm4gZyArIHQuc3Vic3RyaW5nKHMpO1xuICB9LCBsID0gKHQsIG8sIHUgPSB0KSA9PiB7XG4gICAgbGV0IG4gPSAoZykgPT4ge1xuICAgICAgbGV0IHMgPSBTdHJpbmcoZyksIGggPSBzLmluZGV4T2YobywgdC5sZW5ndGgpO1xuICAgICAgcmV0dXJuIH5oID8gdCArIGEocywgbywgdSwgaCkgKyBvIDogdCArIHMgKyBvO1xuICAgIH07XG4gICAgcmV0dXJuIG4ub3BlbiA9IHQsIG4uY2xvc2UgPSBvLCBuO1xuICB9LCBjID0ge1xuICAgIGlzQ29sb3JTdXBwb3J0ZWQ6IHJcbiAgfSwgZiA9ICh0KSA9PiBgXFx4MUJbJHt0fW1gO1xuICBmb3IgKGxldCB0IGluIGIpIHtcbiAgICBsZXQgbyA9IGJbdF07XG4gICAgY1t0XSA9IHIgPyBsKFxuICAgICAgZihvWzBdKSxcbiAgICAgIGYob1sxXSksXG4gICAgICBvWzJdXG4gICAgKSA6IGk7XG4gIH1cbiAgcmV0dXJuIGM7XG59XG52YXIgZCA9IEMoKTtcbmZ1bmN0aW9uIG0oKSB7XG4gIE9iamVjdC5hc3NpZ24oZCwgcCgpKTtcbn1cbmZ1bmN0aW9uIHcoKSB7XG4gIE9iamVjdC5hc3NpZ24oZCwgQyh7IGZvcmNlOiAhMCB9KSk7XG59XG52YXIgeSA9IGQ7XG5leHBvcnQge1xuICBDIGFzIGNyZWF0ZUNvbG9ycyxcbiAgeSBhcyBkZWZhdWx0LFxuICBtIGFzIGRpc2FibGVEZWZhdWx0Q29sb3JzLFxuICB3IGFzIGVuYWJsZWREZWZhdWx0Q29sb3JzLFxuICBwIGFzIGdldERlZmF1bHRDb2xvcnMsXG4gIEIgYXMgaXNTdXBwb3J0ZWRcbn07XG4iXSwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdLCJtYXBwaW5ncyI6IjtBQUNBLElBQUksSUFBSTtDQUNOLE9BQU8sQ0FBQyxHQUFHLEVBQUU7Q0FDYixNQUFNO0VBQUM7RUFBRztFQUFJO0VBQWtCO0NBQ2hDLEtBQUs7RUFBQztFQUFHO0VBQUk7RUFBa0I7Q0FDL0IsUUFBUSxDQUFDLEdBQUcsR0FBRztDQUNmLFdBQVcsQ0FBQyxHQUFHLEdBQUc7Q0FDbEIsU0FBUyxDQUFDLEdBQUcsR0FBRztDQUNoQixRQUFRLENBQUMsR0FBRyxHQUFHO0NBQ2YsZUFBZSxDQUFDLEdBQUcsR0FBRztDQUN0QixPQUFPLENBQUMsSUFBSSxHQUFHO0NBQ2YsS0FBSyxDQUFDLElBQUksR0FBRztDQUNiLE9BQU8sQ0FBQyxJQUFJLEdBQUc7Q0FDZixRQUFRLENBQUMsSUFBSSxHQUFHO0NBQ2hCLE1BQU0sQ0FBQyxJQUFJLEdBQUc7Q0FDZCxTQUFTLENBQUMsSUFBSSxHQUFHO0NBQ2pCLE1BQU0sQ0FBQyxJQUFJLEdBQUc7Q0FDZCxPQUFPLENBQUMsSUFBSSxHQUFHO0NBQ2YsTUFBTSxDQUFDLElBQUksR0FBRztDQUNkLFNBQVMsQ0FBQyxJQUFJLEdBQUc7Q0FDakIsT0FBTyxDQUFDLElBQUksR0FBRztDQUNmLFNBQVMsQ0FBQyxJQUFJLEdBQUc7Q0FDakIsVUFBVSxDQUFDLElBQUksR0FBRztDQUNsQixRQUFRLENBQUMsSUFBSSxHQUFHO0NBQ2hCLFdBQVcsQ0FBQyxJQUFJLEdBQUc7Q0FDbkIsUUFBUSxDQUFDLElBQUksR0FBRztDQUNoQixTQUFTLENBQUMsSUFBSSxHQUFHO0NBQ2pCLGFBQWEsQ0FBQyxJQUFJLEdBQUc7Q0FDckIsV0FBVyxDQUFDLElBQUksR0FBRztDQUNuQixhQUFhLENBQUMsSUFBSSxHQUFHO0NBQ3JCLGNBQWMsQ0FBQyxJQUFJLEdBQUc7Q0FDdEIsWUFBWSxDQUFDLElBQUksR0FBRztDQUNwQixlQUFlLENBQUMsSUFBSSxHQUFHO0NBQ3ZCLFlBQVksQ0FBQyxJQUFJLEdBQUc7Q0FDcEIsYUFBYSxDQUFDLElBQUksR0FBRztDQUNyQixlQUFlLENBQUMsS0FBSyxHQUFHO0NBQ3hCLGFBQWEsQ0FBQyxLQUFLLEdBQUc7Q0FDdEIsZUFBZSxDQUFDLEtBQUssR0FBRztDQUN4QixnQkFBZ0IsQ0FBQyxLQUFLLEdBQUc7Q0FDekIsY0FBYyxDQUFDLEtBQUssR0FBRztDQUN2QixpQkFBaUIsQ0FBQyxLQUFLLEdBQUc7Q0FDMUIsY0FBYyxDQUFDLEtBQUssR0FBRztDQUN2QixlQUFlLENBQUMsS0FBSyxHQUFHO0NBQ3pCO0FBQ0QsU0FBUyxFQUFFLEdBQUc7QUFDWixRQUFPLE9BQU8sRUFBRTs7QUFFbEIsRUFBRSxPQUFPO0FBQ1QsRUFBRSxRQUFRO0FBVVYsU0FBUyxJQUFJO0NBQ1gsSUFBSSxJQUFJLE9BQU8sV0FBVyxjQUFjLFVBQVUsS0FBSyxHQUFHLEtBQUssS0FBSyxPQUFPLEtBQUssSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxjQUFjLFNBQVMsS0FBSyxLQUFLLE9BQU8sS0FBSyxJQUFJLEVBQUUsU0FBUyxFQUFFO0FBQ3RLLFFBQU8sRUFBRSxjQUFjLEtBQUssRUFBRSxTQUFTLGFBQWEsTUFBTSxpQkFBaUIsS0FBSyxFQUFFLFNBQVMsVUFBVSxLQUFLLEtBQUssT0FBTyxLQUFLLElBQUksRUFBRSxjQUFjLFdBQVcsS0FBSyxFQUFFLFNBQVMsVUFBVSxRQUFRLE1BQU0sT0FBTyxVQUFVLGVBQWUsQ0FBQyxDQUFDLE9BQU87O0FBRTdPLFNBQVMsRUFBRSxFQUFFLE9BQU8sTUFBTSxFQUFFLEVBQUU7Q0FDNUIsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxHQUFHLEdBQUcsTUFBTTtFQUNwQyxJQUFJLElBQUksSUFBSSxJQUFJO0FBQ2hCO0FBQ0UsUUFBSyxFQUFFLFVBQVUsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxRQUFRLElBQUksRUFBRSxRQUFRLEdBQUcsRUFBRTtTQUM1RCxDQUFDO0FBQ1IsU0FBTyxJQUFJLEVBQUUsVUFBVSxFQUFFO0lBQ3hCLEtBQUssR0FBRyxHQUFHLElBQUksTUFBTTtFQUN0QixJQUFJLEtBQUssTUFBTTtHQUNiLElBQUksSUFBSSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxHQUFHLEVBQUUsT0FBTztBQUM3QyxVQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLElBQUksSUFBSSxJQUFJOztBQUU5QyxTQUFPLEVBQUUsT0FBTyxHQUFHLEVBQUUsUUFBUSxHQUFHO0lBQy9CLElBQUksRUFDTCxrQkFBa0IsR0FDbkIsRUFBRSxLQUFLLE1BQU0sUUFBUSxFQUFFO0FBQ3hCLE1BQUssSUFBSSxLQUFLLEdBQUc7RUFDZixJQUFJLElBQUksRUFBRTtBQUNWLElBQUUsS0FBSyxJQUFJLEVBQ1QsRUFBRSxFQUFFLEdBQUcsRUFDUCxFQUFFLEVBQUUsR0FBRyxFQUNQLEVBQUUsR0FDSCxHQUFHOztBQUVOLFFBQU87O0FBU1QsSUFBSSxJQVBJLEdBQUcifQ==