jcjy-components 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -1
- package/dist/components/auth-gateway/ag-input.vue.d.ts +16 -1
- package/dist/components/auth-gateway/interface.d.ts +52 -0
- package/dist/index.es.js +1596 -1841
- package/dist/index.umd.cjs +1 -14
- package/dist/jcjy-components.css +2 -1
- package/package.json +12 -11
package/dist/index.es.js
CHANGED
|
@@ -1,1868 +1,1623 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
e = r * 4, o = t[e + 0], i = t[e + 1], a = t[e + 2], l = t[e + 3];
|
|
46
|
-
for (let c = 0; c < s.length; c++)
|
|
47
|
-
if (!s[c]?.(o, i, a, l)) {
|
|
48
|
-
t[e + 3] = 0;
|
|
49
|
-
break;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return n;
|
|
54
|
-
}
|
|
55
|
-
function kA(n) {
|
|
56
|
-
const s = new URL(n, location.href);
|
|
57
|
-
return s.protocol === location.protocol && s.host === location.host && s.port === location.port;
|
|
58
|
-
}
|
|
59
|
-
function WA(n, s) {
|
|
60
|
-
const t = new URL(n), A = new URL(s);
|
|
61
|
-
return t.protocol === A.protocol && t.hostname === A.hostname && t.port === A.port;
|
|
62
|
-
}
|
|
63
|
-
class RA extends pA {
|
|
64
|
-
_getCanvas() {
|
|
65
|
-
if (!this._canvas)
|
|
66
|
-
throw new Error("Canvas is not initialized");
|
|
67
|
-
return this._canvas;
|
|
68
|
-
}
|
|
69
|
-
_getContext() {
|
|
70
|
-
if (!this._context)
|
|
71
|
-
throw new Error("Context is not initialized");
|
|
72
|
-
return this._context;
|
|
73
|
-
}
|
|
74
|
-
_getWidth() {
|
|
75
|
-
if (!this._width)
|
|
76
|
-
throw new Error("Width is not initialized");
|
|
77
|
-
return this._width;
|
|
78
|
-
}
|
|
79
|
-
_getHeight() {
|
|
80
|
-
if (!this._height)
|
|
81
|
-
throw new Error("Height is not initialized");
|
|
82
|
-
return this._height;
|
|
83
|
-
}
|
|
84
|
-
_initCanvas() {
|
|
85
|
-
const s = this.image;
|
|
86
|
-
if (!s)
|
|
87
|
-
throw new Error("Image is not initialized");
|
|
88
|
-
const t = this._canvas = document.createElement("canvas"), A = t.getContext("2d");
|
|
89
|
-
if (!A) throw new ReferenceError("Failed to create canvas context");
|
|
90
|
-
this._context = A, t.className = "@vibrant/canvas", t.style.display = "none", this._width = t.width = s.width, this._height = t.height = s.height, A.drawImage(s, 0, 0), document.body.appendChild(t);
|
|
91
|
-
}
|
|
92
|
-
load(s) {
|
|
93
|
-
let t, A;
|
|
94
|
-
if (typeof s == "string")
|
|
95
|
-
t = document.createElement("img"), A = s, !kA(A) && !WA(window.location.href, A) && (t.crossOrigin = "anonymous"), t.src = A;
|
|
96
|
-
else if (s instanceof HTMLImageElement)
|
|
97
|
-
t = s, A = s.src;
|
|
98
|
-
else
|
|
99
|
-
return Promise.reject(
|
|
100
|
-
new Error("Cannot load buffer as an image in browser")
|
|
101
|
-
);
|
|
102
|
-
return this.image = t, new Promise((e, o) => {
|
|
103
|
-
const i = () => {
|
|
104
|
-
this._initCanvas(), e(this);
|
|
105
|
-
};
|
|
106
|
-
t.complete ? i() : (t.onload = i, t.onerror = (a) => o(new Error(`Fail to load image: ${A}`)));
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
clear() {
|
|
110
|
-
this._getContext().clearRect(0, 0, this._getWidth(), this._getHeight());
|
|
111
|
-
}
|
|
112
|
-
update(s) {
|
|
113
|
-
this._getContext().putImageData(s, 0, 0);
|
|
114
|
-
}
|
|
115
|
-
getWidth() {
|
|
116
|
-
return this._getWidth();
|
|
117
|
-
}
|
|
118
|
-
getHeight() {
|
|
119
|
-
return this._getHeight();
|
|
120
|
-
}
|
|
121
|
-
resize(s, t, A) {
|
|
122
|
-
if (!this.image)
|
|
123
|
-
throw new Error("Image is not initialized");
|
|
124
|
-
this._width = this._getCanvas().width = s, this._height = this._getCanvas().height = t, this._getContext().scale(A, A), this._getContext().drawImage(this.image, 0, 0);
|
|
125
|
-
}
|
|
126
|
-
getPixelCount() {
|
|
127
|
-
return this._getWidth() * this._getHeight();
|
|
128
|
-
}
|
|
129
|
-
getImageData() {
|
|
130
|
-
return this._getContext().getImageData(
|
|
131
|
-
0,
|
|
132
|
-
0,
|
|
133
|
-
this._getWidth(),
|
|
134
|
-
this._getHeight()
|
|
135
|
-
);
|
|
136
|
-
}
|
|
137
|
-
remove() {
|
|
138
|
-
this._canvas && this._canvas.parentNode && this._canvas.parentNode.removeChild(this._canvas);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
function T(n, ...s) {
|
|
142
|
-
return s.forEach((t) => {
|
|
143
|
-
if (t) {
|
|
144
|
-
for (const A in t)
|
|
145
|
-
if (t.hasOwnProperty(A)) {
|
|
146
|
-
const e = t[A];
|
|
147
|
-
Array.isArray(e) ? n[A] = e.slice(0) : typeof e == "object" ? (n[A] || (n[A] = {}), T(n[A], e)) : n[A] = e;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}), n;
|
|
151
|
-
}
|
|
152
|
-
function ZA(n, s) {
|
|
153
|
-
const { colorCount: t, quantizer: A, generators: e, filters: o } = n, i = { colorCount: t }, a = typeof A == "string" ? { name: A, options: {} } : A;
|
|
154
|
-
return a.options = T({}, i, a.options), T(
|
|
155
|
-
{},
|
|
156
|
-
{
|
|
157
|
-
quantizer: a,
|
|
158
|
-
generators: e,
|
|
159
|
-
filters: o
|
|
160
|
-
},
|
|
161
|
-
s
|
|
162
|
-
);
|
|
1
|
+
import { Fragment as e, Transition as t, computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createStaticVNode as s, createTextVNode as c, createVNode as l, defineComponent as u, inject as d, mergeProps as f, nextTick as p, normalizeClass as m, normalizeStyle as h, onMounted as g, onUnmounted as _, openBlock as v, provide as y, ref as b, renderList as ee, renderSlot as x, toDisplayString as S, unref as C, vModelCheckbox as w, watch as T, withCtx as E, withDirectives as te, withKeys as D, withModifiers as O } from "vue";
|
|
2
|
+
//#region node_modules/.pnpm/@vibrant+image@4.0.4/node_modules/@vibrant/image/dist/esm/histogram.js
|
|
3
|
+
var ne = class {
|
|
4
|
+
constructor(e, t) {
|
|
5
|
+
this.pixels = e, this.opts = t;
|
|
6
|
+
let { sigBits: n } = t, r = (e, t, r) => (e << 2 * n) + (t << n) + r;
|
|
7
|
+
this.getColorIndex = r;
|
|
8
|
+
let i = 8 - n, a = 1 << 3 * n, o = new Uint32Array(a), s, c, l, u, d, f, p, m, h, g;
|
|
9
|
+
s = l = d = 0, c = u = f = Number.MAX_VALUE;
|
|
10
|
+
let _ = e.length / 4, v = 0;
|
|
11
|
+
for (; v < _;) {
|
|
12
|
+
let t = v * 4;
|
|
13
|
+
if (v++, p = e[t + 0], m = e[t + 1], h = e[t + 2], g = e[t + 3], g === 0) continue;
|
|
14
|
+
p >>= i, m >>= i, h >>= i;
|
|
15
|
+
let n = r(p, m, h);
|
|
16
|
+
o[n] === void 0 && (o[n] = 0), o[n] += 1, p > s && (s = p), p < c && (c = p), m > l && (l = m), m < u && (u = m), h > d && (d = h), h < f && (f = h);
|
|
17
|
+
}
|
|
18
|
+
this._colorCount = o.reduce((e, t) => t > 0 ? e + 1 : e, 0), this.hist = o, this.rmax = s, this.rmin = c, this.gmax = l, this.gmin = u, this.bmax = d, this.bmin = f;
|
|
19
|
+
}
|
|
20
|
+
get colorCount() {
|
|
21
|
+
return this._colorCount;
|
|
22
|
+
}
|
|
23
|
+
}, k = class {
|
|
24
|
+
scaleDown(e) {
|
|
25
|
+
let t = this.getWidth(), n = this.getHeight(), r = 1;
|
|
26
|
+
if (e.maxDimension > 0) {
|
|
27
|
+
let i = Math.max(t, n);
|
|
28
|
+
i > e.maxDimension && (r = e.maxDimension / i);
|
|
29
|
+
} else r = 1 / e.quality;
|
|
30
|
+
r < 1 && this.resize(t * r, n * r, r);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
function re(e, t) {
|
|
34
|
+
if (t.length > 0) {
|
|
35
|
+
let n = e.data, r = n.length / 4, i, a, o, s, c;
|
|
36
|
+
for (let e = 0; e < r; e++) {
|
|
37
|
+
i = e * 4, a = n[i + 0], o = n[i + 1], s = n[i + 2], c = n[i + 3];
|
|
38
|
+
for (let e = 0; e < t.length; e++) if (!t[e]?.(a, o, s, c)) {
|
|
39
|
+
n[i + 3] = 0;
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return e;
|
|
163
45
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
this._src = s, this._opts = T({}, V.DefaultOpts, t);
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Sets `opts.colorCount` to `n`.
|
|
173
|
-
* @returns this `Builder` instance.
|
|
174
|
-
*/
|
|
175
|
-
maxColorCount(s) {
|
|
176
|
-
return this._opts.colorCount = s, this;
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Sets `opts.maxDimension` to `d`.
|
|
180
|
-
* @returns this `Builder` instance.
|
|
181
|
-
*/
|
|
182
|
-
maxDimension(s) {
|
|
183
|
-
return this._opts.maxDimension = s, this;
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* Adds a filter function
|
|
187
|
-
* @returns this `Builder` instance.
|
|
188
|
-
*/
|
|
189
|
-
addFilter(s) {
|
|
190
|
-
return this._opts.filters ? this._opts.filters.push(s) : this._opts.filters = [s], this;
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Removes a filter function.
|
|
194
|
-
* @returns this `Builder` instance.
|
|
195
|
-
*/
|
|
196
|
-
removeFilter(s) {
|
|
197
|
-
if (this._opts.filters) {
|
|
198
|
-
const t = this._opts.filters.indexOf(s);
|
|
199
|
-
t > 0 && this._opts.filters.splice(t);
|
|
200
|
-
}
|
|
201
|
-
return this;
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Clear all filters.
|
|
205
|
-
* @returns this `Builder` instance.
|
|
206
|
-
*/
|
|
207
|
-
clearFilters() {
|
|
208
|
-
return this._opts.filters = [], this;
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Sets `opts.quality` to `q`.
|
|
212
|
-
* @returns this `Builder` instance.
|
|
213
|
-
*/
|
|
214
|
-
quality(s) {
|
|
215
|
-
return this._opts.quality = s, this;
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Specifies which `Image` implementation class to use.
|
|
219
|
-
* @returns this `Builder` instance.
|
|
220
|
-
*/
|
|
221
|
-
useImageClass(s) {
|
|
222
|
-
return this._opts.ImageClass = s, this;
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Sets `opts.generator` to `generator`
|
|
226
|
-
* @returns this `Builder` instance.
|
|
227
|
-
*/
|
|
228
|
-
useGenerator(s, t) {
|
|
229
|
-
return this._opts.generators || (this._opts.generators = []), this._opts.generators.push(
|
|
230
|
-
t ? { name: s, options: t } : s
|
|
231
|
-
), this;
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Specifies which `Quantizer` implementation class to use
|
|
235
|
-
* @returns this `Builder` instance.
|
|
236
|
-
*/
|
|
237
|
-
useQuantizer(s, t) {
|
|
238
|
-
return this._opts.quantizer = t ? { name: s, options: t } : s, this;
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* Builds and returns a `Vibrant` instance as configured.
|
|
242
|
-
*/
|
|
243
|
-
build() {
|
|
244
|
-
return new V(this._src, this._opts);
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Builds a `Vibrant` instance as configured and calls its `getPalette` method.
|
|
248
|
-
*/
|
|
249
|
-
getPalette() {
|
|
250
|
-
return this.build().getPalette();
|
|
251
|
-
}
|
|
46
|
+
//#endregion
|
|
47
|
+
//#region node_modules/.pnpm/@vibrant+image-browser@4.0.4/node_modules/@vibrant/image-browser/dist/esm/index.js
|
|
48
|
+
function A(e) {
|
|
49
|
+
let t = new URL(e, location.href);
|
|
50
|
+
return t.protocol === location.protocol && t.host === location.host && t.port === location.port;
|
|
252
51
|
}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
}
|
|
257
|
-
names() {
|
|
258
|
-
return Object.keys(this._map);
|
|
259
|
-
}
|
|
260
|
-
has(s) {
|
|
261
|
-
return !!this._map[s];
|
|
262
|
-
}
|
|
263
|
-
get(s) {
|
|
264
|
-
return this._map[s];
|
|
265
|
-
}
|
|
266
|
-
register(s, t) {
|
|
267
|
-
return this._map[s] = t, this.pipeline;
|
|
268
|
-
}
|
|
52
|
+
function j(e, t) {
|
|
53
|
+
let n = new URL(e), r = new URL(t);
|
|
54
|
+
return n.protocol === r.protocol && n.hostname === r.hostname && n.port === r.port;
|
|
269
55
|
}
|
|
270
|
-
class
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
56
|
+
var M = class extends k {
|
|
57
|
+
_getCanvas() {
|
|
58
|
+
if (!this._canvas) throw Error("Canvas is not initialized");
|
|
59
|
+
return this._canvas;
|
|
60
|
+
}
|
|
61
|
+
_getContext() {
|
|
62
|
+
if (!this._context) throw Error("Context is not initialized");
|
|
63
|
+
return this._context;
|
|
64
|
+
}
|
|
65
|
+
_getWidth() {
|
|
66
|
+
if (!this._width) throw Error("Width is not initialized");
|
|
67
|
+
return this._width;
|
|
68
|
+
}
|
|
69
|
+
_getHeight() {
|
|
70
|
+
if (!this._height) throw Error("Height is not initialized");
|
|
71
|
+
return this._height;
|
|
72
|
+
}
|
|
73
|
+
_initCanvas() {
|
|
74
|
+
let e = this.image;
|
|
75
|
+
if (!e) throw Error("Image is not initialized");
|
|
76
|
+
let t = this._canvas = document.createElement("canvas"), n = t.getContext("2d");
|
|
77
|
+
if (!n) throw ReferenceError("Failed to create canvas context");
|
|
78
|
+
this._context = n, t.className = "@vibrant/canvas", t.style.display = "none", this._width = t.width = e.width, this._height = t.height = e.height, n.drawImage(e, 0, 0), document.body.appendChild(t);
|
|
79
|
+
}
|
|
80
|
+
load(e) {
|
|
81
|
+
let t, n;
|
|
82
|
+
if (typeof e == "string") t = document.createElement("img"), n = e, !A(n) && !j(window.location.href, n) && (t.crossOrigin = "anonymous"), t.src = n;
|
|
83
|
+
else if (e instanceof HTMLImageElement) t = e, n = e.src;
|
|
84
|
+
else return Promise.reject(/* @__PURE__ */ Error("Cannot load buffer as an image in browser"));
|
|
85
|
+
return this.image = t, new Promise((e, r) => {
|
|
86
|
+
let i = () => {
|
|
87
|
+
this._initCanvas(), e(this);
|
|
88
|
+
};
|
|
89
|
+
t.complete ? i() : (t.onload = i, t.onerror = (e) => r(/* @__PURE__ */ Error(`Fail to load image: ${n}`)));
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
clear() {
|
|
93
|
+
this._getContext().clearRect(0, 0, this._getWidth(), this._getHeight());
|
|
94
|
+
}
|
|
95
|
+
update(e) {
|
|
96
|
+
this._getContext().putImageData(e, 0, 0);
|
|
97
|
+
}
|
|
98
|
+
getWidth() {
|
|
99
|
+
return this._getWidth();
|
|
100
|
+
}
|
|
101
|
+
getHeight() {
|
|
102
|
+
return this._getHeight();
|
|
103
|
+
}
|
|
104
|
+
resize(e, t, n) {
|
|
105
|
+
if (!this.image) throw Error("Image is not initialized");
|
|
106
|
+
this._width = this._getCanvas().width = e, this._height = this._getCanvas().height = t, this._getContext().scale(n, n), this._getContext().drawImage(this.image, 0, 0);
|
|
107
|
+
}
|
|
108
|
+
getPixelCount() {
|
|
109
|
+
return this._getWidth() * this._getHeight();
|
|
110
|
+
}
|
|
111
|
+
getImageData() {
|
|
112
|
+
return this._getContext().getImageData(0, 0, this._getWidth(), this._getHeight());
|
|
113
|
+
}
|
|
114
|
+
remove() {
|
|
115
|
+
this._canvas && this._canvas.parentNode && this._canvas.parentNode.removeChild(this._canvas);
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
//#endregion
|
|
119
|
+
//#region node_modules/.pnpm/@vibrant+core@4.0.4/node_modules/@vibrant/core/dist/esm/utils.js
|
|
120
|
+
function N(e, ...t) {
|
|
121
|
+
return t.forEach((t) => {
|
|
122
|
+
if (t) {
|
|
123
|
+
for (let n in t) if (t.hasOwnProperty(n)) {
|
|
124
|
+
let r = t[n];
|
|
125
|
+
Array.isArray(r) ? e[n] = r.slice(0) : typeof r == "object" ? (e[n] || (e[n] = {}), N(e[n], r)) : e[n] = r;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}), e;
|
|
322
129
|
}
|
|
323
|
-
|
|
324
|
-
|
|
130
|
+
//#endregion
|
|
131
|
+
//#region node_modules/.pnpm/@vibrant+core@4.0.4/node_modules/@vibrant/core/dist/esm/options.js
|
|
132
|
+
function P(e, t) {
|
|
133
|
+
let { colorCount: n, quantizer: r, generators: i, filters: a } = e, o = { colorCount: n }, s = typeof r == "string" ? {
|
|
134
|
+
name: r,
|
|
135
|
+
options: {}
|
|
136
|
+
} : r;
|
|
137
|
+
return s.options = N({}, o, s.options), N({}, {
|
|
138
|
+
quantizer: s,
|
|
139
|
+
generators: i,
|
|
140
|
+
filters: a
|
|
141
|
+
}, t);
|
|
325
142
|
}
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
143
|
+
//#endregion
|
|
144
|
+
//#region node_modules/.pnpm/@vibrant+core@4.0.4/node_modules/@vibrant/core/dist/esm/builder.js
|
|
145
|
+
var F = class {
|
|
146
|
+
constructor(e, t = {}) {
|
|
147
|
+
this._src = e, this._opts = N({}, V.DefaultOpts, t);
|
|
148
|
+
}
|
|
149
|
+
maxColorCount(e) {
|
|
150
|
+
return this._opts.colorCount = e, this;
|
|
151
|
+
}
|
|
152
|
+
maxDimension(e) {
|
|
153
|
+
return this._opts.maxDimension = e, this;
|
|
154
|
+
}
|
|
155
|
+
addFilter(e) {
|
|
156
|
+
return this._opts.filters ? this._opts.filters.push(e) : this._opts.filters = [e], this;
|
|
157
|
+
}
|
|
158
|
+
removeFilter(e) {
|
|
159
|
+
if (this._opts.filters) {
|
|
160
|
+
let t = this._opts.filters.indexOf(e);
|
|
161
|
+
t > 0 && this._opts.filters.splice(t);
|
|
162
|
+
}
|
|
163
|
+
return this;
|
|
164
|
+
}
|
|
165
|
+
clearFilters() {
|
|
166
|
+
return this._opts.filters = [], this;
|
|
167
|
+
}
|
|
168
|
+
quality(e) {
|
|
169
|
+
return this._opts.quality = e, this;
|
|
170
|
+
}
|
|
171
|
+
useImageClass(e) {
|
|
172
|
+
return this._opts.ImageClass = e, this;
|
|
173
|
+
}
|
|
174
|
+
useGenerator(e, t) {
|
|
175
|
+
return this._opts.generators || (this._opts.generators = []), this._opts.generators.push(t ? {
|
|
176
|
+
name: e,
|
|
177
|
+
options: t
|
|
178
|
+
} : e), this;
|
|
179
|
+
}
|
|
180
|
+
useQuantizer(e, t) {
|
|
181
|
+
return this._opts.quantizer = t ? {
|
|
182
|
+
name: e,
|
|
183
|
+
options: t
|
|
184
|
+
} : e, this;
|
|
185
|
+
}
|
|
186
|
+
build() {
|
|
187
|
+
return new V(this._src, this._opts);
|
|
188
|
+
}
|
|
189
|
+
getPalette() {
|
|
190
|
+
return this.build().getPalette();
|
|
191
|
+
}
|
|
192
|
+
}, I = class {
|
|
193
|
+
constructor(e) {
|
|
194
|
+
this.pipeline = e, this._map = {};
|
|
195
|
+
}
|
|
196
|
+
names() {
|
|
197
|
+
return Object.keys(this._map);
|
|
198
|
+
}
|
|
199
|
+
has(e) {
|
|
200
|
+
return !!this._map[e];
|
|
201
|
+
}
|
|
202
|
+
get(e) {
|
|
203
|
+
return this._map[e];
|
|
204
|
+
}
|
|
205
|
+
register(e, t) {
|
|
206
|
+
return this._map[e] = t, this.pipeline;
|
|
207
|
+
}
|
|
208
|
+
}, ie = class {
|
|
209
|
+
constructor() {
|
|
210
|
+
this.filter = new I(this), this.quantizer = new I(this), this.generator = new I(this);
|
|
211
|
+
}
|
|
212
|
+
_buildProcessTasks({ filters: e, quantizer: t, generators: n }) {
|
|
213
|
+
return n.length === 1 && n[0] === "*" && (n = this.generator.names()), {
|
|
214
|
+
filters: e.map((e) => r(this.filter, e)),
|
|
215
|
+
quantizer: r(this.quantizer, t),
|
|
216
|
+
generators: n.map((e) => r(this.generator, e))
|
|
217
|
+
};
|
|
218
|
+
function r(e, t) {
|
|
219
|
+
let n, r;
|
|
220
|
+
return typeof t == "string" ? n = t : (n = t.name, r = t.options), {
|
|
221
|
+
name: n,
|
|
222
|
+
fn: e.get(n),
|
|
223
|
+
options: r
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
async process(e, t) {
|
|
228
|
+
let { filters: n, quantizer: r, generators: i } = this._buildProcessTasks(t), a = await this._filterColors(n, e), o = await this._generateColors(r, a);
|
|
229
|
+
return {
|
|
230
|
+
colors: o,
|
|
231
|
+
palettes: await this._generatePalettes(i, o)
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
_filterColors(e, t) {
|
|
235
|
+
return Promise.resolve(re(t, e.map(({ fn: e }) => e)));
|
|
236
|
+
}
|
|
237
|
+
_generateColors(e, t) {
|
|
238
|
+
return Promise.resolve(e.fn(t.data, e.options));
|
|
239
|
+
}
|
|
240
|
+
async _generatePalettes(e, t) {
|
|
241
|
+
let n = await Promise.all(e.map(({ fn: e, options: n }) => Promise.resolve(e(t, n))));
|
|
242
|
+
return Promise.resolve(n.reduce((t, n, r) => (t[e[r].name] = n, t), {}));
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
//#endregion
|
|
246
|
+
//#region node_modules/.pnpm/@vibrant+color@4.0.4/node_modules/@vibrant/color/dist/esm/converter.js
|
|
247
|
+
function L(e, t, n) {
|
|
248
|
+
return "#" + ((1 << 24) + (e << 16) + (t << 8) + n).toString(16).slice(1, 7);
|
|
347
249
|
}
|
|
348
|
-
function
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
250
|
+
function R(e, t, n) {
|
|
251
|
+
e /= 255, t /= 255, n /= 255;
|
|
252
|
+
let r = Math.max(e, t, n), i = Math.min(e, t, n), a = 0, o = 0, s = (r + i) / 2;
|
|
253
|
+
if (r !== i) {
|
|
254
|
+
let c = r - i;
|
|
255
|
+
switch (o = s > .5 ? c / (2 - r - i) : c / (r + i), r) {
|
|
256
|
+
case e:
|
|
257
|
+
a = (t - n) / c + (t < n ? 6 : 0);
|
|
258
|
+
break;
|
|
259
|
+
case t:
|
|
260
|
+
a = (n - e) / c + 2;
|
|
261
|
+
break;
|
|
262
|
+
case n:
|
|
263
|
+
a = (e - t) / c + 4;
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
a /= 6;
|
|
267
|
+
}
|
|
268
|
+
return [
|
|
269
|
+
a,
|
|
270
|
+
o,
|
|
271
|
+
s
|
|
272
|
+
];
|
|
360
273
|
}
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
/**
|
|
377
|
-
* The red value in the RGB value
|
|
378
|
-
*/
|
|
379
|
-
get r() {
|
|
380
|
-
return this._rgb[0];
|
|
381
|
-
}
|
|
382
|
-
/**
|
|
383
|
-
* The green value in the RGB value
|
|
384
|
-
*/
|
|
385
|
-
get g() {
|
|
386
|
-
return this._rgb[1];
|
|
387
|
-
}
|
|
388
|
-
/**
|
|
389
|
-
* The blue value in the RGB value
|
|
390
|
-
*/
|
|
391
|
-
get b() {
|
|
392
|
-
return this._rgb[2];
|
|
393
|
-
}
|
|
394
|
-
/**
|
|
395
|
-
* The color value as a rgb value
|
|
396
|
-
*/
|
|
397
|
-
get rgb() {
|
|
398
|
-
return this._rgb;
|
|
399
|
-
}
|
|
400
|
-
/**
|
|
401
|
-
* The color value as a hsl value
|
|
402
|
-
*/
|
|
403
|
-
get hsl() {
|
|
404
|
-
if (!this._hsl) {
|
|
405
|
-
const [s, t, A] = this._rgb;
|
|
406
|
-
this._hsl = DA(s, t, A);
|
|
407
|
-
}
|
|
408
|
-
return this._hsl;
|
|
409
|
-
}
|
|
410
|
-
/**
|
|
411
|
-
* The color value as a hex string
|
|
412
|
-
*/
|
|
413
|
-
get hex() {
|
|
414
|
-
if (!this._hex) {
|
|
415
|
-
const [s, t, A] = this._rgb;
|
|
416
|
-
this._hex = xA(s, t, A);
|
|
417
|
-
}
|
|
418
|
-
return this._hex;
|
|
419
|
-
}
|
|
420
|
-
get population() {
|
|
421
|
-
return this._population;
|
|
422
|
-
}
|
|
423
|
-
/**
|
|
424
|
-
* Get the JSON object for the swatch
|
|
425
|
-
*/
|
|
426
|
-
toJSON() {
|
|
427
|
-
return {
|
|
428
|
-
rgb: this.rgb,
|
|
429
|
-
population: this.population
|
|
430
|
-
};
|
|
431
|
-
}
|
|
432
|
-
getYiq() {
|
|
433
|
-
if (!this._yiq) {
|
|
434
|
-
const s = this._rgb;
|
|
435
|
-
this._yiq = (s[0] * 299 + s[1] * 587 + s[2] * 114) / 1e3;
|
|
436
|
-
}
|
|
437
|
-
return this._yiq;
|
|
438
|
-
}
|
|
439
|
-
/**
|
|
440
|
-
* Returns an appropriate color to use for any 'title' text which is displayed over this Swatch's color.
|
|
441
|
-
*/
|
|
442
|
-
get titleTextColor() {
|
|
443
|
-
return this._titleTextColor || (this._titleTextColor = this.getYiq() < 200 ? "#fff" : "#000"), this._titleTextColor;
|
|
444
|
-
}
|
|
445
|
-
/**
|
|
446
|
-
* Returns an appropriate color to use for any 'body' text which is displayed over this Swatch's color.
|
|
447
|
-
*/
|
|
448
|
-
get bodyTextColor() {
|
|
449
|
-
return this._bodyTextColor || (this._bodyTextColor = this.getYiq() < 150 ? "#fff" : "#000"), this._bodyTextColor;
|
|
450
|
-
}
|
|
451
|
-
/**
|
|
452
|
-
* Internal use.
|
|
453
|
-
* @param rgb `[r, g, b]`
|
|
454
|
-
* @param population Population of the color in an image
|
|
455
|
-
*/
|
|
456
|
-
constructor(s, t) {
|
|
457
|
-
this._rgb = s, this._population = t;
|
|
458
|
-
}
|
|
274
|
+
function z(e, t, n) {
|
|
275
|
+
let r, i, a;
|
|
276
|
+
function o(e, t, n) {
|
|
277
|
+
return n < 0 && (n += 1), n > 1 && --n, n < 1 / 6 ? e + (t - e) * 6 * n : n < 1 / 2 ? t : n < 2 / 3 ? e + (t - e) * (2 / 3 - n) * 6 : e;
|
|
278
|
+
}
|
|
279
|
+
if (t === 0) r = i = a = n;
|
|
280
|
+
else {
|
|
281
|
+
let s = n < .5 ? n * (1 + t) : n + t - n * t, c = 2 * n - s;
|
|
282
|
+
r = o(c, s, e + 1 / 3), i = o(c, s, e), a = o(c, s, e - 1 / 3);
|
|
283
|
+
}
|
|
284
|
+
return [
|
|
285
|
+
r * 255,
|
|
286
|
+
i * 255,
|
|
287
|
+
a * 255
|
|
288
|
+
];
|
|
459
289
|
}
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
290
|
+
//#endregion
|
|
291
|
+
//#region node_modules/.pnpm/@vibrant+color@4.0.4/node_modules/@vibrant/color/dist/esm/index.js
|
|
292
|
+
var B = class e {
|
|
293
|
+
static applyFilters(e, t) {
|
|
294
|
+
return t.length > 0 ? e.filter(({ r: e, g: n, b: r }) => {
|
|
295
|
+
for (let i = 0; i < t.length; i++) if (!t[i]?.(e, n, r, 255)) return !1;
|
|
296
|
+
return !0;
|
|
297
|
+
}) : e;
|
|
298
|
+
}
|
|
299
|
+
static clone(t) {
|
|
300
|
+
return new e(t._rgb, t._population);
|
|
301
|
+
}
|
|
302
|
+
get r() {
|
|
303
|
+
return this._rgb[0];
|
|
304
|
+
}
|
|
305
|
+
get g() {
|
|
306
|
+
return this._rgb[1];
|
|
307
|
+
}
|
|
308
|
+
get b() {
|
|
309
|
+
return this._rgb[2];
|
|
310
|
+
}
|
|
311
|
+
get rgb() {
|
|
312
|
+
return this._rgb;
|
|
313
|
+
}
|
|
314
|
+
get hsl() {
|
|
315
|
+
if (!this._hsl) {
|
|
316
|
+
let [e, t, n] = this._rgb;
|
|
317
|
+
this._hsl = R(e, t, n);
|
|
318
|
+
}
|
|
319
|
+
return this._hsl;
|
|
320
|
+
}
|
|
321
|
+
get hex() {
|
|
322
|
+
if (!this._hex) {
|
|
323
|
+
let [e, t, n] = this._rgb;
|
|
324
|
+
this._hex = L(e, t, n);
|
|
325
|
+
}
|
|
326
|
+
return this._hex;
|
|
327
|
+
}
|
|
328
|
+
get population() {
|
|
329
|
+
return this._population;
|
|
330
|
+
}
|
|
331
|
+
toJSON() {
|
|
332
|
+
return {
|
|
333
|
+
rgb: this.rgb,
|
|
334
|
+
population: this.population
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
getYiq() {
|
|
338
|
+
if (!this._yiq) {
|
|
339
|
+
let e = this._rgb;
|
|
340
|
+
this._yiq = (e[0] * 299 + e[1] * 587 + e[2] * 114) / 1e3;
|
|
341
|
+
}
|
|
342
|
+
return this._yiq;
|
|
343
|
+
}
|
|
344
|
+
get titleTextColor() {
|
|
345
|
+
return this._titleTextColor ||= this.getYiq() < 200 ? "#fff" : "#000", this._titleTextColor;
|
|
346
|
+
}
|
|
347
|
+
get bodyTextColor() {
|
|
348
|
+
return this._bodyTextColor ||= this.getYiq() < 150 ? "#fff" : "#000", this._bodyTextColor;
|
|
349
|
+
}
|
|
350
|
+
constructor(e, t) {
|
|
351
|
+
this._rgb = e, this._population = t;
|
|
352
|
+
}
|
|
353
|
+
}, ae = class e {
|
|
354
|
+
constructor(t, n) {
|
|
355
|
+
this._src = t, this.opts = N({}, e.DefaultOpts, n);
|
|
356
|
+
}
|
|
357
|
+
static use(e) {
|
|
358
|
+
this._pipeline = e;
|
|
359
|
+
}
|
|
360
|
+
static from(e) {
|
|
361
|
+
return new F(e);
|
|
362
|
+
}
|
|
363
|
+
get result() {
|
|
364
|
+
return this._result;
|
|
365
|
+
}
|
|
366
|
+
_process(t, n) {
|
|
367
|
+
t.scaleDown(this.opts);
|
|
368
|
+
let r = P(this.opts, n);
|
|
369
|
+
return e._pipeline.process(t.getImageData(), r);
|
|
370
|
+
}
|
|
371
|
+
async getPalette() {
|
|
372
|
+
let e = new this.opts.ImageClass();
|
|
373
|
+
try {
|
|
374
|
+
let t = await e.load(this._src), n = await this._process(t, { generators: ["default"] });
|
|
375
|
+
this._result = n;
|
|
376
|
+
let r = n.palettes.default;
|
|
377
|
+
if (!r) throw Error("Something went wrong and a palette was not found, please file a bug against our GitHub repo: https://github.com/vibrant-Colors/node-vibrant/");
|
|
378
|
+
return e.remove(), r;
|
|
379
|
+
} catch (t) {
|
|
380
|
+
return e.remove(), Promise.reject(t);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
async getPalettes() {
|
|
384
|
+
let e = new this.opts.ImageClass();
|
|
385
|
+
try {
|
|
386
|
+
let t = await e.load(this._src), n = await this._process(t, { generators: ["*"] });
|
|
387
|
+
this._result = n;
|
|
388
|
+
let r = n.palettes;
|
|
389
|
+
return e.remove(), r;
|
|
390
|
+
} catch (t) {
|
|
391
|
+
return e.remove(), Promise.reject(t);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
513
394
|
};
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
395
|
+
ae.DefaultOpts = {
|
|
396
|
+
colorCount: 64,
|
|
397
|
+
quality: 5,
|
|
398
|
+
filters: []
|
|
518
399
|
};
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
V.DefaultOpts.filters = ["default"];
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
class
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
const A = n.pop();
|
|
676
|
-
if (A && A.count() > 0) {
|
|
677
|
-
const [e, o] = A.split();
|
|
678
|
-
if (!e || (n.push(e), o && o.count() > 0 && n.push(o), n.size() === t))
|
|
679
|
-
break;
|
|
680
|
-
t = n.size();
|
|
681
|
-
} else
|
|
682
|
-
break;
|
|
683
|
-
}
|
|
400
|
+
var V = ae;
|
|
401
|
+
//#endregion
|
|
402
|
+
//#region node_modules/.pnpm/node-vibrant@4.0.4/node_modules/node-vibrant/dist/esm/configs/browser.js
|
|
403
|
+
V.DefaultOpts.quantizer = "mmcq", V.DefaultOpts.generators = ["default"], V.DefaultOpts.filters = ["default"], V.DefaultOpts.ImageClass = M;
|
|
404
|
+
//#endregion
|
|
405
|
+
//#region node_modules/.pnpm/@vibrant+quantizer-mmcq@4.0.4/node_modules/@vibrant/quantizer-mmcq/dist/esm/vbox.js
|
|
406
|
+
var H = 5, U = 8 - H, oe = class e {
|
|
407
|
+
constructor(e, t, n, r, i, a, o) {
|
|
408
|
+
this.histogram = o, this._volume = -1, this._avg = null, this._count = -1, this.dimension = {
|
|
409
|
+
r1: e,
|
|
410
|
+
r2: t,
|
|
411
|
+
g1: n,
|
|
412
|
+
g2: r,
|
|
413
|
+
b1: i,
|
|
414
|
+
b2: a
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
static build(t) {
|
|
418
|
+
let n = new ne(t, { sigBits: H }), { rmin: r, rmax: i, gmin: a, gmax: o, bmin: s, bmax: c } = n;
|
|
419
|
+
return new e(r, i, a, o, s, c, n);
|
|
420
|
+
}
|
|
421
|
+
invalidate() {
|
|
422
|
+
this._volume = this._count = -1, this._avg = null;
|
|
423
|
+
}
|
|
424
|
+
volume() {
|
|
425
|
+
if (this._volume < 0) {
|
|
426
|
+
let { r1: e, r2: t, g1: n, g2: r, b1: i, b2: a } = this.dimension;
|
|
427
|
+
this._volume = (t - e + 1) * (r - n + 1) * (a - i + 1);
|
|
428
|
+
}
|
|
429
|
+
return this._volume;
|
|
430
|
+
}
|
|
431
|
+
count() {
|
|
432
|
+
if (this._count < 0) {
|
|
433
|
+
let { hist: e, getColorIndex: t } = this.histogram, { r1: n, r2: r, g1: i, g2: a, b1: o, b2: s } = this.dimension, c = 0;
|
|
434
|
+
for (let l = n; l <= r; l++) for (let n = i; n <= a; n++) for (let r = o; r <= s; r++) {
|
|
435
|
+
let i = t(l, n, r);
|
|
436
|
+
e[i] && (c += e[i]);
|
|
437
|
+
}
|
|
438
|
+
this._count = c;
|
|
439
|
+
}
|
|
440
|
+
return this._count;
|
|
441
|
+
}
|
|
442
|
+
clone() {
|
|
443
|
+
let { histogram: t } = this, { r1: n, r2: r, g1: i, g2: a, b1: o, b2: s } = this.dimension;
|
|
444
|
+
return new e(n, r, i, a, o, s, t);
|
|
445
|
+
}
|
|
446
|
+
avg() {
|
|
447
|
+
if (!this._avg) {
|
|
448
|
+
let { hist: e, getColorIndex: t } = this.histogram, { r1: n, r2: r, g1: i, g2: a, b1: o, b2: s } = this.dimension, c = 0, l = 1 << 8 - H, u, d, f;
|
|
449
|
+
u = d = f = 0;
|
|
450
|
+
for (let p = n; p <= r; p++) for (let n = i; n <= a; n++) for (let r = o; r <= s; r++) {
|
|
451
|
+
let i = e[t(p, n, r)];
|
|
452
|
+
i && (c += i, u += i * (p + .5) * l, d += i * (n + .5) * l, f += i * (r + .5) * l);
|
|
453
|
+
}
|
|
454
|
+
c ? this._avg = [
|
|
455
|
+
~~(u / c),
|
|
456
|
+
~~(d / c),
|
|
457
|
+
~~(f / c)
|
|
458
|
+
] : this._avg = [
|
|
459
|
+
~~(l * (n + r + 1) / 2),
|
|
460
|
+
~~(l * (i + a + 1) / 2),
|
|
461
|
+
~~(l * (o + s + 1) / 2)
|
|
462
|
+
];
|
|
463
|
+
}
|
|
464
|
+
return this._avg;
|
|
465
|
+
}
|
|
466
|
+
contains(e) {
|
|
467
|
+
let [t, n, r] = e, { r1: i, r2: a, g1: o, g2: s, b1: c, b2: l } = this.dimension;
|
|
468
|
+
return t >>= U, n >>= U, r >>= U, t >= i && t <= a && n >= o && n <= s && r >= c && r <= l;
|
|
469
|
+
}
|
|
470
|
+
split() {
|
|
471
|
+
let { hist: e, getColorIndex: t } = this.histogram, { r1: n, r2: r, g1: i, g2: a, b1: o, b2: s } = this.dimension, c = this.count();
|
|
472
|
+
if (!c) return [];
|
|
473
|
+
if (c === 1) return [this.clone()];
|
|
474
|
+
let l = r - n + 1, u = a - i + 1, d = s - o + 1, f = Math.max(l, u, d), p = null, m, h;
|
|
475
|
+
m = h = 0;
|
|
476
|
+
let g = null;
|
|
477
|
+
if (f === l) {
|
|
478
|
+
g = "r", p = new Uint32Array(r + 1);
|
|
479
|
+
for (let c = n; c <= r; c++) {
|
|
480
|
+
m = 0;
|
|
481
|
+
for (let n = i; n <= a; n++) for (let r = o; r <= s; r++) {
|
|
482
|
+
let i = t(c, n, r);
|
|
483
|
+
e[i] && (m += e[i]);
|
|
484
|
+
}
|
|
485
|
+
h += m, p[c] = h;
|
|
486
|
+
}
|
|
487
|
+
} else if (f === u) {
|
|
488
|
+
g = "g", p = new Uint32Array(a + 1);
|
|
489
|
+
for (let c = i; c <= a; c++) {
|
|
490
|
+
m = 0;
|
|
491
|
+
for (let i = n; i <= r; i++) for (let n = o; n <= s; n++) {
|
|
492
|
+
let r = t(i, c, n);
|
|
493
|
+
e[r] && (m += e[r]);
|
|
494
|
+
}
|
|
495
|
+
h += m, p[c] = h;
|
|
496
|
+
}
|
|
497
|
+
} else {
|
|
498
|
+
g = "b", p = new Uint32Array(s + 1);
|
|
499
|
+
for (let c = o; c <= s; c++) {
|
|
500
|
+
m = 0;
|
|
501
|
+
for (let o = n; o <= r; o++) for (let n = i; n <= a; n++) {
|
|
502
|
+
let r = t(o, n, c);
|
|
503
|
+
e[r] && (m += e[r]);
|
|
504
|
+
}
|
|
505
|
+
h += m, p[c] = h;
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
let _ = -1, v = new Uint32Array(p.length);
|
|
509
|
+
for (let e = 0; e < p.length; e++) {
|
|
510
|
+
let t = p[e];
|
|
511
|
+
t && (_ < 0 && t > h / 2 && (_ = e), v[e] = h - t);
|
|
512
|
+
}
|
|
513
|
+
let y = this;
|
|
514
|
+
function b(e) {
|
|
515
|
+
let t = e + "1", n = e + "2", r = y.dimension[t], i = y.dimension[n], a = y.clone(), o = y.clone(), s = _ - r, c = i - _;
|
|
516
|
+
for (s <= c ? (i = Math.min(i - 1, ~~(_ + c / 2)), i = Math.max(0, i)) : (i = Math.max(r, ~~(_ - 1 - s / 2)), i = Math.min(y.dimension[n], i)); !p[i];) i++;
|
|
517
|
+
let l = v[i];
|
|
518
|
+
for (; !l && p[i - 1];) l = v[--i];
|
|
519
|
+
return a.dimension[n] = i, o.dimension[t] = i + 1, [a, o];
|
|
520
|
+
}
|
|
521
|
+
return b(g);
|
|
522
|
+
}
|
|
523
|
+
}, W = class {
|
|
524
|
+
_sort() {
|
|
525
|
+
this._sorted ||= (this.contents.sort(this._comparator), !0);
|
|
526
|
+
}
|
|
527
|
+
constructor(e) {
|
|
528
|
+
this._comparator = e, this.contents = [], this._sorted = !1;
|
|
529
|
+
}
|
|
530
|
+
push(e) {
|
|
531
|
+
this.contents.push(e), this._sorted = !1;
|
|
532
|
+
}
|
|
533
|
+
peek(e) {
|
|
534
|
+
return this._sort(), e = typeof e == "number" ? e : this.contents.length - 1, this.contents[e];
|
|
535
|
+
}
|
|
536
|
+
pop() {
|
|
537
|
+
return this._sort(), this.contents.pop();
|
|
538
|
+
}
|
|
539
|
+
size() {
|
|
540
|
+
return this.contents.length;
|
|
541
|
+
}
|
|
542
|
+
map(e) {
|
|
543
|
+
return this._sort(), this.contents.map(e);
|
|
544
|
+
}
|
|
545
|
+
}, se = .75;
|
|
546
|
+
function G(e, t) {
|
|
547
|
+
let n = e.size();
|
|
548
|
+
for (; e.size() < t;) {
|
|
549
|
+
let t = e.pop();
|
|
550
|
+
if (t && t.count() > 0) {
|
|
551
|
+
let [r, i] = t.split();
|
|
552
|
+
if (!r || (e.push(r), i && i.count() > 0 && e.push(i), e.size() === n)) break;
|
|
553
|
+
n = e.size();
|
|
554
|
+
} else break;
|
|
555
|
+
}
|
|
684
556
|
}
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
(o, i) => o.count() * o.volume() - i.count() * i.volume()
|
|
694
|
-
);
|
|
695
|
-
return e.contents = A.contents, uA(e, s.colorCount - e.size()), OA(e);
|
|
557
|
+
var ce = (e, t) => {
|
|
558
|
+
if (e.length === 0 || t.colorCount < 2 || t.colorCount > 256) throw Error("Wrong MMCQ parameters");
|
|
559
|
+
let n = oe.build(e);
|
|
560
|
+
n.histogram.colorCount;
|
|
561
|
+
let r = new W((e, t) => e.count() - t.count());
|
|
562
|
+
r.push(n), G(r, se * t.colorCount);
|
|
563
|
+
let i = new W((e, t) => e.count() * e.volume() - t.count() * t.volume());
|
|
564
|
+
return i.contents = r.contents, G(i, t.colorCount - i.size()), le(i);
|
|
696
565
|
};
|
|
697
|
-
function
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
566
|
+
function le(e) {
|
|
567
|
+
let t = [];
|
|
568
|
+
for (; e.size();) {
|
|
569
|
+
let n = e.pop(), r = n.avg(), [i, a, o] = r;
|
|
570
|
+
t.push(new B(r, n.count()));
|
|
571
|
+
}
|
|
572
|
+
return t;
|
|
704
573
|
}
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
574
|
+
//#endregion
|
|
575
|
+
//#region node_modules/.pnpm/@vibrant+generator-default@4.0.4/node_modules/@vibrant/generator-default/dist/esm/index.js
|
|
576
|
+
var ue = {
|
|
577
|
+
targetDarkLuma: .26,
|
|
578
|
+
maxDarkLuma: .45,
|
|
579
|
+
minLightLuma: .55,
|
|
580
|
+
targetLightLuma: .74,
|
|
581
|
+
minNormalLuma: .3,
|
|
582
|
+
targetNormalLuma: .5,
|
|
583
|
+
maxNormalLuma: .7,
|
|
584
|
+
targetMutesSaturation: .3,
|
|
585
|
+
maxMutesSaturation: .4,
|
|
586
|
+
targetVibrantSaturation: 1,
|
|
587
|
+
minVibrantSaturation: .35,
|
|
588
|
+
weightSaturation: 3,
|
|
589
|
+
weightLuma: 6.5,
|
|
590
|
+
weightPopulation: .5
|
|
720
591
|
};
|
|
721
|
-
function
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
592
|
+
function de(e) {
|
|
593
|
+
let t = 0;
|
|
594
|
+
return e.forEach((e) => {
|
|
595
|
+
t = Math.max(t, e.population);
|
|
596
|
+
}), t;
|
|
726
597
|
}
|
|
727
|
-
function
|
|
728
|
-
|
|
598
|
+
function fe(e, t) {
|
|
599
|
+
return e.Vibrant === t || e.DarkVibrant === t || e.LightVibrant === t || e.Muted === t || e.DarkMuted === t || e.LightMuted === t;
|
|
729
600
|
}
|
|
730
|
-
function
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
l(n, s),
|
|
744
|
-
i.weightSaturation,
|
|
745
|
-
l(t, A),
|
|
746
|
-
i.weightLuma,
|
|
747
|
-
e / o,
|
|
748
|
-
i.weightPopulation
|
|
749
|
-
);
|
|
601
|
+
function pe(e, t, n, r, i, a, o) {
|
|
602
|
+
function s(...e) {
|
|
603
|
+
let t = 0, n = 0;
|
|
604
|
+
for (let r = 0; r < e.length; r += 2) {
|
|
605
|
+
let i = e[r], a = e[r + 1];
|
|
606
|
+
!i || !a || (t += i * a, n += a);
|
|
607
|
+
}
|
|
608
|
+
return t / n;
|
|
609
|
+
}
|
|
610
|
+
function c(e, t) {
|
|
611
|
+
return 1 - Math.abs(e - t);
|
|
612
|
+
}
|
|
613
|
+
return s(c(e, t), o.weightSaturation, c(n, r), o.weightLuma, i / a, o.weightPopulation);
|
|
750
614
|
}
|
|
751
|
-
function
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
A,
|
|
761
|
-
u.population,
|
|
762
|
-
t,
|
|
763
|
-
r
|
|
764
|
-
);
|
|
765
|
-
(c === null || E > g) && (c = u, g = E);
|
|
766
|
-
}
|
|
767
|
-
}), c;
|
|
615
|
+
function K(e, t, n, r, i, a, o, s, c, l) {
|
|
616
|
+
let u = null, d = 0;
|
|
617
|
+
return t.forEach((t) => {
|
|
618
|
+
let [, f, p] = t.hsl;
|
|
619
|
+
if (f >= s && f <= c && p >= i && p <= a && !fe(e, t)) {
|
|
620
|
+
let e = pe(f, o, p, r, t.population, n, l);
|
|
621
|
+
(u === null || e > d) && (u = t, d = e);
|
|
622
|
+
}
|
|
623
|
+
}), u;
|
|
768
624
|
}
|
|
769
|
-
function
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
A,
|
|
780
|
-
n,
|
|
781
|
-
s,
|
|
782
|
-
t.targetNormalLuma,
|
|
783
|
-
t.minNormalLuma,
|
|
784
|
-
t.maxNormalLuma,
|
|
785
|
-
t.targetVibrantSaturation,
|
|
786
|
-
t.minVibrantSaturation,
|
|
787
|
-
1,
|
|
788
|
-
t
|
|
789
|
-
), A.LightVibrant = Y(
|
|
790
|
-
A,
|
|
791
|
-
n,
|
|
792
|
-
s,
|
|
793
|
-
t.targetLightLuma,
|
|
794
|
-
t.minLightLuma,
|
|
795
|
-
1,
|
|
796
|
-
t.targetVibrantSaturation,
|
|
797
|
-
t.minVibrantSaturation,
|
|
798
|
-
1,
|
|
799
|
-
t
|
|
800
|
-
), A.DarkVibrant = Y(
|
|
801
|
-
A,
|
|
802
|
-
n,
|
|
803
|
-
s,
|
|
804
|
-
t.targetDarkLuma,
|
|
805
|
-
0,
|
|
806
|
-
t.maxDarkLuma,
|
|
807
|
-
t.targetVibrantSaturation,
|
|
808
|
-
t.minVibrantSaturation,
|
|
809
|
-
1,
|
|
810
|
-
t
|
|
811
|
-
), A.Muted = Y(
|
|
812
|
-
A,
|
|
813
|
-
n,
|
|
814
|
-
s,
|
|
815
|
-
t.targetNormalLuma,
|
|
816
|
-
t.minNormalLuma,
|
|
817
|
-
t.maxNormalLuma,
|
|
818
|
-
t.targetMutesSaturation,
|
|
819
|
-
0,
|
|
820
|
-
t.maxMutesSaturation,
|
|
821
|
-
t
|
|
822
|
-
), A.LightMuted = Y(
|
|
823
|
-
A,
|
|
824
|
-
n,
|
|
825
|
-
s,
|
|
826
|
-
t.targetLightLuma,
|
|
827
|
-
t.minLightLuma,
|
|
828
|
-
1,
|
|
829
|
-
t.targetMutesSaturation,
|
|
830
|
-
0,
|
|
831
|
-
t.maxMutesSaturation,
|
|
832
|
-
t
|
|
833
|
-
), A.DarkMuted = Y(
|
|
834
|
-
A,
|
|
835
|
-
n,
|
|
836
|
-
s,
|
|
837
|
-
t.targetDarkLuma,
|
|
838
|
-
0,
|
|
839
|
-
t.maxDarkLuma,
|
|
840
|
-
t.targetMutesSaturation,
|
|
841
|
-
0,
|
|
842
|
-
t.maxMutesSaturation,
|
|
843
|
-
t
|
|
844
|
-
), A;
|
|
625
|
+
function me(e, t, n) {
|
|
626
|
+
let r = {
|
|
627
|
+
Vibrant: null,
|
|
628
|
+
DarkVibrant: null,
|
|
629
|
+
LightVibrant: null,
|
|
630
|
+
Muted: null,
|
|
631
|
+
DarkMuted: null,
|
|
632
|
+
LightMuted: null
|
|
633
|
+
};
|
|
634
|
+
return r.Vibrant = K(r, e, t, n.targetNormalLuma, n.minNormalLuma, n.maxNormalLuma, n.targetVibrantSaturation, n.minVibrantSaturation, 1, n), r.LightVibrant = K(r, e, t, n.targetLightLuma, n.minLightLuma, 1, n.targetVibrantSaturation, n.minVibrantSaturation, 1, n), r.DarkVibrant = K(r, e, t, n.targetDarkLuma, 0, n.maxDarkLuma, n.targetVibrantSaturation, n.minVibrantSaturation, 1, n), r.Muted = K(r, e, t, n.targetNormalLuma, n.minNormalLuma, n.maxNormalLuma, n.targetMutesSaturation, 0, n.maxMutesSaturation, n), r.LightMuted = K(r, e, t, n.targetLightLuma, n.minLightLuma, 1, n.targetMutesSaturation, 0, n.maxMutesSaturation, n), r.DarkMuted = K(r, e, t, n.targetDarkLuma, 0, n.maxDarkLuma, n.targetMutesSaturation, 0, n.maxMutesSaturation, n), r;
|
|
845
635
|
}
|
|
846
|
-
function
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
636
|
+
function he(e, t, n) {
|
|
637
|
+
if (!e.Vibrant && !e.DarkVibrant && !e.LightVibrant) {
|
|
638
|
+
if (!e.DarkVibrant && e.DarkMuted) {
|
|
639
|
+
let [t, r, i] = e.DarkMuted.hsl;
|
|
640
|
+
i = n.targetDarkLuma, e.DarkVibrant = new B(z(t, r, i), 0);
|
|
641
|
+
}
|
|
642
|
+
if (!e.LightVibrant && e.LightMuted) {
|
|
643
|
+
let [t, r, i] = e.LightMuted.hsl;
|
|
644
|
+
i = n.targetDarkLuma, e.DarkVibrant = new B(z(t, r, i), 0);
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
if (!e.Vibrant && e.DarkVibrant) {
|
|
648
|
+
let [t, r, i] = e.DarkVibrant.hsl;
|
|
649
|
+
i = n.targetNormalLuma, e.Vibrant = new B(z(t, r, i), 0);
|
|
650
|
+
} else if (!e.Vibrant && e.LightVibrant) {
|
|
651
|
+
let [t, r, i] = e.LightVibrant.hsl;
|
|
652
|
+
i = n.targetNormalLuma, e.Vibrant = new B(z(t, r, i), 0);
|
|
653
|
+
}
|
|
654
|
+
if (!e.DarkVibrant && e.Vibrant) {
|
|
655
|
+
let [t, r, i] = e.Vibrant.hsl;
|
|
656
|
+
i = n.targetDarkLuma, e.DarkVibrant = new B(z(t, r, i), 0);
|
|
657
|
+
}
|
|
658
|
+
if (!e.LightVibrant && e.Vibrant) {
|
|
659
|
+
let [t, r, i] = e.Vibrant.hsl;
|
|
660
|
+
i = n.targetLightLuma, e.LightVibrant = new B(z(t, r, i), 0);
|
|
661
|
+
}
|
|
662
|
+
if (!e.Muted && e.Vibrant) {
|
|
663
|
+
let [t, r, i] = e.Vibrant.hsl;
|
|
664
|
+
i = n.targetMutesSaturation, e.Muted = new B(z(t, r, i), 0);
|
|
665
|
+
}
|
|
666
|
+
if (!e.DarkMuted && e.DarkVibrant) {
|
|
667
|
+
let [t, r, i] = e.DarkVibrant.hsl;
|
|
668
|
+
i = n.targetMutesSaturation, e.DarkMuted = new B(z(t, r, i), 0);
|
|
669
|
+
}
|
|
670
|
+
if (!e.LightMuted && e.LightVibrant) {
|
|
671
|
+
let [t, r, i] = e.LightVibrant.hsl;
|
|
672
|
+
i = n.targetMutesSaturation, e.LightMuted = new B(z(t, r, i), 0);
|
|
673
|
+
}
|
|
884
674
|
}
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
buflen: this._bufferLength,
|
|
1026
|
-
length: this._dataLength,
|
|
1027
|
-
state: [s[0], s[1], s[2], s[3]]
|
|
1028
|
-
};
|
|
1029
|
-
}
|
|
1030
|
-
/**
|
|
1031
|
-
* Override the current state of the hash buffer
|
|
1032
|
-
* @param state New hash buffer state
|
|
1033
|
-
*/
|
|
1034
|
-
setState(s) {
|
|
1035
|
-
const t = s.buffer, A = s.state, e = this._state;
|
|
1036
|
-
let o;
|
|
1037
|
-
for (this._dataLength = s.length, this._bufferLength = s.buflen, e[0] = A[0], e[1] = A[1], e[2] = A[2], e[3] = A[3], o = 0; o < t.length; o += 1)
|
|
1038
|
-
this._buffer8[o] = t.charCodeAt(o);
|
|
1039
|
-
}
|
|
1040
|
-
/**
|
|
1041
|
-
* Hash the current state of the hash buffer and return the result
|
|
1042
|
-
* @param raw Whether to return the value as an `Int32Array`
|
|
1043
|
-
*/
|
|
1044
|
-
end(s = !1) {
|
|
1045
|
-
const t = this._bufferLength, A = this._buffer8, e = this._buffer32, o = (t >> 2) + 1;
|
|
1046
|
-
this._dataLength += t;
|
|
1047
|
-
const i = this._dataLength * 8;
|
|
1048
|
-
if (A[t] = 128, A[t + 1] = A[t + 2] = A[t + 3] = 0, e.set(R.buffer32Identity.subarray(o), o), t > 55 && (R._md5cycle(this._state, e), e.set(R.buffer32Identity)), i <= 4294967295)
|
|
1049
|
-
e[14] = i;
|
|
1050
|
-
else {
|
|
1051
|
-
const a = i.toString(16).match(/(.*?)(.{0,8})$/);
|
|
1052
|
-
if (a === null) return s ? GA : "";
|
|
1053
|
-
const l = parseInt(a[2], 16), r = parseInt(a[1], 16) || 0;
|
|
1054
|
-
e[14] = l, e[15] = r;
|
|
1055
|
-
}
|
|
1056
|
-
return R._md5cycle(this._state, e), s ? this._state : R._hex(this._state);
|
|
1057
|
-
}
|
|
1058
|
-
}
|
|
1059
|
-
if (R.hashStr("hello") !== "5d41402abc4b2a76b9719d911017c592")
|
|
1060
|
-
throw new Error("Md5 self test failed.");
|
|
1061
|
-
function EA(n) {
|
|
1062
|
-
const { email: s, password: t } = n, A = new R();
|
|
1063
|
-
return {
|
|
1064
|
-
userName: s,
|
|
1065
|
-
passwd: A.appendAsciiStr(t).end()
|
|
1066
|
-
};
|
|
675
|
+
//#endregion
|
|
676
|
+
//#region node_modules/.pnpm/node-vibrant@4.0.4/node_modules/node-vibrant/dist/esm/pipeline/index.js
|
|
677
|
+
var ge = new ie().filter.register("default", (e, t, n, r) => r >= 125 && !(e > 250 && t > 250 && n > 250)).quantizer.register("mmcq", ce).generator.register("default", ((e, t) => {
|
|
678
|
+
t = Object.assign({}, ue, t);
|
|
679
|
+
let n = de(e), r = me(e, n, t);
|
|
680
|
+
return he(r, n, t), r;
|
|
681
|
+
}));
|
|
682
|
+
//#endregion
|
|
683
|
+
//#region node_modules/.pnpm/node-vibrant@4.0.4/node_modules/node-vibrant/dist/esm/browser.js
|
|
684
|
+
V.use(ge);
|
|
685
|
+
//#endregion
|
|
686
|
+
//#region node_modules/.pnpm/ts-md5@2.0.1/node_modules/ts-md5/dist/index.es.js
|
|
687
|
+
var _e = new Int32Array(4), q = class e {
|
|
688
|
+
static hashStr(e, t = !1) {
|
|
689
|
+
return this.onePassHasher.start().appendStr(e).end(t);
|
|
690
|
+
}
|
|
691
|
+
static hashAsciiStr(e, t = !1) {
|
|
692
|
+
return this.onePassHasher.start().appendAsciiStr(e).end(t);
|
|
693
|
+
}
|
|
694
|
+
static stateIdentity = new Int32Array([
|
|
695
|
+
1732584193,
|
|
696
|
+
-271733879,
|
|
697
|
+
-1732584194,
|
|
698
|
+
271733878
|
|
699
|
+
]);
|
|
700
|
+
static buffer32Identity = new Int32Array([
|
|
701
|
+
0,
|
|
702
|
+
0,
|
|
703
|
+
0,
|
|
704
|
+
0,
|
|
705
|
+
0,
|
|
706
|
+
0,
|
|
707
|
+
0,
|
|
708
|
+
0,
|
|
709
|
+
0,
|
|
710
|
+
0,
|
|
711
|
+
0,
|
|
712
|
+
0,
|
|
713
|
+
0,
|
|
714
|
+
0,
|
|
715
|
+
0,
|
|
716
|
+
0
|
|
717
|
+
]);
|
|
718
|
+
static hexChars = "0123456789abcdef";
|
|
719
|
+
static hexOut = [];
|
|
720
|
+
static onePassHasher = new e();
|
|
721
|
+
static _hex(t) {
|
|
722
|
+
let n = e.hexChars, r = e.hexOut, i, a, o, s;
|
|
723
|
+
for (s = 0; s < 4; s += 1) for (a = s * 8, i = t[s], o = 0; o < 8; o += 2) r[a + 1 + o] = n.charAt(i & 15), i >>>= 4, r[a + 0 + o] = n.charAt(i & 15), i >>>= 4;
|
|
724
|
+
return r.join("");
|
|
725
|
+
}
|
|
726
|
+
static _md5cycle(e, t) {
|
|
727
|
+
let n = e[0], r = e[1], i = e[2], a = e[3];
|
|
728
|
+
n += (r & i | ~r & a) + t[0] - 680876936 | 0, n = (n << 7 | n >>> 25) + r | 0, a += (n & r | ~n & i) + t[1] - 389564586 | 0, a = (a << 12 | a >>> 20) + n | 0, i += (a & n | ~a & r) + t[2] + 606105819 | 0, i = (i << 17 | i >>> 15) + a | 0, r += (i & a | ~i & n) + t[3] - 1044525330 | 0, r = (r << 22 | r >>> 10) + i | 0, n += (r & i | ~r & a) + t[4] - 176418897 | 0, n = (n << 7 | n >>> 25) + r | 0, a += (n & r | ~n & i) + t[5] + 1200080426 | 0, a = (a << 12 | a >>> 20) + n | 0, i += (a & n | ~a & r) + t[6] - 1473231341 | 0, i = (i << 17 | i >>> 15) + a | 0, r += (i & a | ~i & n) + t[7] - 45705983 | 0, r = (r << 22 | r >>> 10) + i | 0, n += (r & i | ~r & a) + t[8] + 1770035416 | 0, n = (n << 7 | n >>> 25) + r | 0, a += (n & r | ~n & i) + t[9] - 1958414417 | 0, a = (a << 12 | a >>> 20) + n | 0, i += (a & n | ~a & r) + t[10] - 42063 | 0, i = (i << 17 | i >>> 15) + a | 0, r += (i & a | ~i & n) + t[11] - 1990404162 | 0, r = (r << 22 | r >>> 10) + i | 0, n += (r & i | ~r & a) + t[12] + 1804603682 | 0, n = (n << 7 | n >>> 25) + r | 0, a += (n & r | ~n & i) + t[13] - 40341101 | 0, a = (a << 12 | a >>> 20) + n | 0, i += (a & n | ~a & r) + t[14] - 1502002290 | 0, i = (i << 17 | i >>> 15) + a | 0, r += (i & a | ~i & n) + t[15] + 1236535329 | 0, r = (r << 22 | r >>> 10) + i | 0, n += (r & a | i & ~a) + t[1] - 165796510 | 0, n = (n << 5 | n >>> 27) + r | 0, a += (n & i | r & ~i) + t[6] - 1069501632 | 0, a = (a << 9 | a >>> 23) + n | 0, i += (a & r | n & ~r) + t[11] + 643717713 | 0, i = (i << 14 | i >>> 18) + a | 0, r += (i & n | a & ~n) + t[0] - 373897302 | 0, r = (r << 20 | r >>> 12) + i | 0, n += (r & a | i & ~a) + t[5] - 701558691 | 0, n = (n << 5 | n >>> 27) + r | 0, a += (n & i | r & ~i) + t[10] + 38016083 | 0, a = (a << 9 | a >>> 23) + n | 0, i += (a & r | n & ~r) + t[15] - 660478335 | 0, i = (i << 14 | i >>> 18) + a | 0, r += (i & n | a & ~n) + t[4] - 405537848 | 0, r = (r << 20 | r >>> 12) + i | 0, n += (r & a | i & ~a) + t[9] + 568446438 | 0, n = (n << 5 | n >>> 27) + r | 0, a += (n & i | r & ~i) + t[14] - 1019803690 | 0, a = (a << 9 | a >>> 23) + n | 0, i += (a & r | n & ~r) + t[3] - 187363961 | 0, i = (i << 14 | i >>> 18) + a | 0, r += (i & n | a & ~n) + t[8] + 1163531501 | 0, r = (r << 20 | r >>> 12) + i | 0, n += (r & a | i & ~a) + t[13] - 1444681467 | 0, n = (n << 5 | n >>> 27) + r | 0, a += (n & i | r & ~i) + t[2] - 51403784 | 0, a = (a << 9 | a >>> 23) + n | 0, i += (a & r | n & ~r) + t[7] + 1735328473 | 0, i = (i << 14 | i >>> 18) + a | 0, r += (i & n | a & ~n) + t[12] - 1926607734 | 0, r = (r << 20 | r >>> 12) + i | 0, n += (r ^ i ^ a) + t[5] - 378558 | 0, n = (n << 4 | n >>> 28) + r | 0, a += (n ^ r ^ i) + t[8] - 2022574463 | 0, a = (a << 11 | a >>> 21) + n | 0, i += (a ^ n ^ r) + t[11] + 1839030562 | 0, i = (i << 16 | i >>> 16) + a | 0, r += (i ^ a ^ n) + t[14] - 35309556 | 0, r = (r << 23 | r >>> 9) + i | 0, n += (r ^ i ^ a) + t[1] - 1530992060 | 0, n = (n << 4 | n >>> 28) + r | 0, a += (n ^ r ^ i) + t[4] + 1272893353 | 0, a = (a << 11 | a >>> 21) + n | 0, i += (a ^ n ^ r) + t[7] - 155497632 | 0, i = (i << 16 | i >>> 16) + a | 0, r += (i ^ a ^ n) + t[10] - 1094730640 | 0, r = (r << 23 | r >>> 9) + i | 0, n += (r ^ i ^ a) + t[13] + 681279174 | 0, n = (n << 4 | n >>> 28) + r | 0, a += (n ^ r ^ i) + t[0] - 358537222 | 0, a = (a << 11 | a >>> 21) + n | 0, i += (a ^ n ^ r) + t[3] - 722521979 | 0, i = (i << 16 | i >>> 16) + a | 0, r += (i ^ a ^ n) + t[6] + 76029189 | 0, r = (r << 23 | r >>> 9) + i | 0, n += (r ^ i ^ a) + t[9] - 640364487 | 0, n = (n << 4 | n >>> 28) + r | 0, a += (n ^ r ^ i) + t[12] - 421815835 | 0, a = (a << 11 | a >>> 21) + n | 0, i += (a ^ n ^ r) + t[15] + 530742520 | 0, i = (i << 16 | i >>> 16) + a | 0, r += (i ^ a ^ n) + t[2] - 995338651 | 0, r = (r << 23 | r >>> 9) + i | 0, n += (i ^ (r | ~a)) + t[0] - 198630844 | 0, n = (n << 6 | n >>> 26) + r | 0, a += (r ^ (n | ~i)) + t[7] + 1126891415 | 0, a = (a << 10 | a >>> 22) + n | 0, i += (n ^ (a | ~r)) + t[14] - 1416354905 | 0, i = (i << 15 | i >>> 17) + a | 0, r += (a ^ (i | ~n)) + t[5] - 57434055 | 0, r = (r << 21 | r >>> 11) + i | 0, n += (i ^ (r | ~a)) + t[12] + 1700485571 | 0, n = (n << 6 | n >>> 26) + r | 0, a += (r ^ (n | ~i)) + t[3] - 1894986606 | 0, a = (a << 10 | a >>> 22) + n | 0, i += (n ^ (a | ~r)) + t[10] - 1051523 | 0, i = (i << 15 | i >>> 17) + a | 0, r += (a ^ (i | ~n)) + t[1] - 2054922799 | 0, r = (r << 21 | r >>> 11) + i | 0, n += (i ^ (r | ~a)) + t[8] + 1873313359 | 0, n = (n << 6 | n >>> 26) + r | 0, a += (r ^ (n | ~i)) + t[15] - 30611744 | 0, a = (a << 10 | a >>> 22) + n | 0, i += (n ^ (a | ~r)) + t[6] - 1560198380 | 0, i = (i << 15 | i >>> 17) + a | 0, r += (a ^ (i | ~n)) + t[13] + 1309151649 | 0, r = (r << 21 | r >>> 11) + i | 0, n += (i ^ (r | ~a)) + t[4] - 145523070 | 0, n = (n << 6 | n >>> 26) + r | 0, a += (r ^ (n | ~i)) + t[11] - 1120210379 | 0, a = (a << 10 | a >>> 22) + n | 0, i += (n ^ (a | ~r)) + t[2] + 718787259 | 0, i = (i << 15 | i >>> 17) + a | 0, r += (a ^ (i | ~n)) + t[9] - 343485551 | 0, r = (r << 21 | r >>> 11) + i | 0, e[0] = n + e[0] | 0, e[1] = r + e[1] | 0, e[2] = i + e[2] | 0, e[3] = a + e[3] | 0;
|
|
729
|
+
}
|
|
730
|
+
_dataLength = 0;
|
|
731
|
+
_bufferLength = 0;
|
|
732
|
+
_state = new Int32Array(4);
|
|
733
|
+
_buffer = /* @__PURE__ */ new ArrayBuffer(68);
|
|
734
|
+
_buffer8;
|
|
735
|
+
_buffer32;
|
|
736
|
+
constructor() {
|
|
737
|
+
this._buffer8 = new Uint8Array(this._buffer, 0, 68), this._buffer32 = new Uint32Array(this._buffer, 0, 17), this.start();
|
|
738
|
+
}
|
|
739
|
+
start() {
|
|
740
|
+
return this._dataLength = 0, this._bufferLength = 0, this._state.set(e.stateIdentity), this;
|
|
741
|
+
}
|
|
742
|
+
appendStr(t) {
|
|
743
|
+
let n = this._buffer8, r = this._buffer32, i = this._bufferLength, a, o;
|
|
744
|
+
for (o = 0; o < t.length; o += 1) {
|
|
745
|
+
if (a = t.charCodeAt(o), a < 128) n[i++] = a;
|
|
746
|
+
else if (a < 2048) n[i++] = (a >>> 6) + 192, n[i++] = a & 63 | 128;
|
|
747
|
+
else if (a < 55296 || a > 56319) n[i++] = (a >>> 12) + 224, n[i++] = a >>> 6 & 63 | 128, n[i++] = a & 63 | 128;
|
|
748
|
+
else {
|
|
749
|
+
if (a = (a - 55296) * 1024 + (t.charCodeAt(++o) - 56320) + 65536, a > 1114111) throw Error("Unicode standard supports code points up to U+10FFFF");
|
|
750
|
+
n[i++] = (a >>> 18) + 240, n[i++] = a >>> 12 & 63 | 128, n[i++] = a >>> 6 & 63 | 128, n[i++] = a & 63 | 128;
|
|
751
|
+
}
|
|
752
|
+
i >= 64 && (this._dataLength += 64, e._md5cycle(this._state, r), i -= 64, r[0] = r[16]);
|
|
753
|
+
}
|
|
754
|
+
return this._bufferLength = i, this;
|
|
755
|
+
}
|
|
756
|
+
appendAsciiStr(t) {
|
|
757
|
+
let n = this._buffer8, r = this._buffer32, i = this._bufferLength, a, o = 0;
|
|
758
|
+
for (;;) {
|
|
759
|
+
for (a = Math.min(t.length - o, 64 - i); a--;) n[i++] = t.charCodeAt(o++);
|
|
760
|
+
if (i < 64) break;
|
|
761
|
+
this._dataLength += 64, e._md5cycle(this._state, r), i = 0;
|
|
762
|
+
}
|
|
763
|
+
return this._bufferLength = i, this;
|
|
764
|
+
}
|
|
765
|
+
appendByteArray(t) {
|
|
766
|
+
let n = this._buffer8, r = this._buffer32, i = this._bufferLength, a, o = 0;
|
|
767
|
+
for (;;) {
|
|
768
|
+
for (a = Math.min(t.length - o, 64 - i); a--;) n[i++] = t[o++];
|
|
769
|
+
if (i < 64) break;
|
|
770
|
+
this._dataLength += 64, e._md5cycle(this._state, r), i = 0;
|
|
771
|
+
}
|
|
772
|
+
return this._bufferLength = i, this;
|
|
773
|
+
}
|
|
774
|
+
getState() {
|
|
775
|
+
let e = this._state;
|
|
776
|
+
return {
|
|
777
|
+
buffer: String.fromCharCode.apply(null, Array.from(this._buffer8)),
|
|
778
|
+
buflen: this._bufferLength,
|
|
779
|
+
length: this._dataLength,
|
|
780
|
+
state: [
|
|
781
|
+
e[0],
|
|
782
|
+
e[1],
|
|
783
|
+
e[2],
|
|
784
|
+
e[3]
|
|
785
|
+
]
|
|
786
|
+
};
|
|
787
|
+
}
|
|
788
|
+
setState(e) {
|
|
789
|
+
let t = e.buffer, n = e.state, r = this._state, i;
|
|
790
|
+
for (this._dataLength = e.length, this._bufferLength = e.buflen, r[0] = n[0], r[1] = n[1], r[2] = n[2], r[3] = n[3], i = 0; i < t.length; i += 1) this._buffer8[i] = t.charCodeAt(i);
|
|
791
|
+
}
|
|
792
|
+
end(t = !1) {
|
|
793
|
+
let n = this._bufferLength, r = this._buffer8, i = this._buffer32, a = (n >> 2) + 1;
|
|
794
|
+
this._dataLength += n;
|
|
795
|
+
let o = this._dataLength * 8;
|
|
796
|
+
if (r[n] = 128, r[n + 1] = r[n + 2] = r[n + 3] = 0, i.set(e.buffer32Identity.subarray(a), a), n > 55 && (e._md5cycle(this._state, i), i.set(e.buffer32Identity)), o <= 4294967295) i[14] = o;
|
|
797
|
+
else {
|
|
798
|
+
let e = o.toString(16).match(/(.*?)(.{0,8})$/);
|
|
799
|
+
if (e === null) return t ? _e : "";
|
|
800
|
+
let n = parseInt(e[2], 16), r = parseInt(e[1], 16) || 0;
|
|
801
|
+
i[14] = n, i[15] = r;
|
|
802
|
+
}
|
|
803
|
+
return e._md5cycle(this._state, i), t ? this._state : e._hex(this._state);
|
|
804
|
+
}
|
|
805
|
+
};
|
|
806
|
+
if (q.hashStr("hello") !== "5d41402abc4b2a76b9719d911017c592") throw Error("Md5 self test failed.");
|
|
807
|
+
//#endregion
|
|
808
|
+
//#region src/components/auth-gateway/util.ts
|
|
809
|
+
function ve(e) {
|
|
810
|
+
let { email: t, password: n } = e;
|
|
811
|
+
return {
|
|
812
|
+
userName: t,
|
|
813
|
+
passwd: new q().appendAsciiStr(n).end()
|
|
814
|
+
};
|
|
1067
815
|
}
|
|
1068
|
-
async function
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
816
|
+
async function J(e) {
|
|
817
|
+
if (!e) return;
|
|
818
|
+
let { r: t, g: n, b: r } = (await V.from(e).getPalette()).Vibrant;
|
|
819
|
+
Y([
|
|
820
|
+
~~t,
|
|
821
|
+
~~n,
|
|
822
|
+
~~r
|
|
823
|
+
]);
|
|
1073
824
|
}
|
|
1074
|
-
function
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
825
|
+
function Y(e) {
|
|
826
|
+
let [t, n, r] = e, i = document.documentElement, a = `${t} ${n} ${r}`, o = `rgb(${t},${n},${r})`;
|
|
827
|
+
i.style.setProperty("--color-primary", a), i.style.setProperty("--el-color-primary", o);
|
|
828
|
+
for (let e = 1; e <= 10; e++) i.style.setProperty(`--el-color-primary-light-${e}`, Se(e, {
|
|
829
|
+
r: t,
|
|
830
|
+
g: n,
|
|
831
|
+
b: r
|
|
832
|
+
})), i.style.setProperty(`--el-color-primary-dark-${e}`, Se(e, {
|
|
833
|
+
r: t,
|
|
834
|
+
g: n,
|
|
835
|
+
b: r
|
|
836
|
+
}, {
|
|
837
|
+
r: 0,
|
|
838
|
+
g: 0,
|
|
839
|
+
b: 0
|
|
840
|
+
}));
|
|
1085
841
|
}
|
|
1086
|
-
function
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
842
|
+
function ye(e, t) {
|
|
843
|
+
if (e && (document.title = e), t) {
|
|
844
|
+
let e = document.querySelector("link[rel='icon']");
|
|
845
|
+
e || (e = document.createElement("link"), e.setAttribute("rel", "icon"), document.head.appendChild(e));
|
|
846
|
+
let n = t.startsWith("http") ? t : `${window.location.origin}${t}`;
|
|
847
|
+
e.setAttribute("href", `${n}?v=${Date.now()}`);
|
|
848
|
+
}
|
|
1093
849
|
}
|
|
1094
|
-
function
|
|
1095
|
-
|
|
1096
|
-
|
|
850
|
+
function be(e, t, n) {
|
|
851
|
+
return {
|
|
852
|
+
r: Math.round(t.r + (e.r - t.r) * n),
|
|
853
|
+
g: Math.round(t.g + (e.g - t.g) * n),
|
|
854
|
+
b: Math.round(t.b + (e.b - t.b) * n)
|
|
855
|
+
};
|
|
1097
856
|
}
|
|
1098
|
-
function
|
|
1099
|
-
|
|
857
|
+
function xe({ r: e, g: t, b: n }, r = 1) {
|
|
858
|
+
return `rgba(${e}, ${t}, ${n}, ${r})`;
|
|
1100
859
|
}
|
|
1101
|
-
function
|
|
1102
|
-
|
|
1103
|
-
|
|
860
|
+
function Se(e, t, n = {
|
|
861
|
+
r: 255,
|
|
862
|
+
g: 255,
|
|
863
|
+
b: 255
|
|
864
|
+
}) {
|
|
865
|
+
return xe(be(n, t, e / 10));
|
|
1104
866
|
}
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
}, tt = "data:image/png;base64,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", et = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOAAAACMBAMAAACXNbjzAAAALVBMVEUAAAD/UwP/UwL/sQD/swD/UwP/sQD/fwD/VQL/VQX/UwP/sQD/tAD/VAP/sgAfmwAtAAAADXRSTlMAgMDAQECAG2AwkGAwlb+ALgAAAJlJREFUaN7t2qENwlAUheEbAmlKMAgWqKqvxJIwAWED9mUALLIzYO8zTzwBpP2+BX59khNzIbLdq80zKgQFBQUFBQUFBQUFlxkEAADWpru0uUbW37J7VGznNu/INuXQERQUFBQUFBQUFBT8dfAwtTlHth+yMQAAgEV6FCLrjm1O/3XCEhQUFBQUFBQUFBT8RnAqRNYPbcao+ACnVSVbBE+/CAAAAABJRU5ErkJggg==", ot = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAsHCAkIBwsJCQkMCwsNEBoREA8PECAXGBMaJiIoKCYiJSQqMD0zKi05LiQlNUg1OT9BREVEKTNLUEpCTz1DREH/2wBDAQsMDBAOEB8RER9BLCUsQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUH/wgARCAQ4B4ADAREAAhEBAxEB/8QAGwABAQEAAwEBAAAAAAAAAAAAAAECAwQFBgf/xAAbAQEBAAMBAQEAAAAAAAAAAAAAAQIDBAUGB//aAAwDAQACEAMQAAAAvxf6CAAAAAAAAAAAAABQAAAAAAAAAEAAAAAAAAAAAAAAAAAKAAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAWgAAAAAQAAAAAAAKAAAAAAAAAFAAAAAAAAAAAAAAAAAAADWOIAAAAAAAAAAAFAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAgAAAAAAAAAAAAAAAABAAAAABaAAAAABAAAAAAAFAAAAAAAAACgAAAAAAAAAAAAAAAAAANY4gAAAAAAAAACgAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAQAAAAAAAAAAAAAAAAEAAAAAtAAAAAAgAAAAAACgAAAAAAAABQAAAAAAAAAAAAAAAAAA1jiAAAAAAAABQAAAAAAEAAAAAAAAAAAQKAAAAAAAAQCgAAAAAAAAAACgAAAAACAAAAAAAAAAAAAAAAgAAAAAtAAAAAEAAAAAAAUAAAAAAAAAKAAAAAAAAAAAAAAAAAA1jiAAAAAAAKAAAAAAEAAAAAAAACKAAAAAAAAAAAAAAAAAAQUAAAAAAAACgAAAAAQAAAAAAAAAAAAAAAgAAAAAtAAAAAEAAAAAACgAAAAAAAABQAAAAAAAAAAAAAAAAA1jiAAAAAAKAAAAAAgAAAAAACKAAAAAAAAAAAAAAAAAAAAAAAAQUAAAAAAAUAAAAACAAAAAAAAAAAAAAAgAAAAFoAAAAAgAAAAAACgAAAAAAAAKAAAAAAAAAAAAAAAAA1jiAAAABQAAAAAEAAAAAARQAAAAAAAAAAAAAAAAAAAAAAAAAAAACCgAAAAAAUAAAACAAAAAAAAAAAAAAEAAAAAtAAAAAEAAAAAAAUAAAAAAAABQAAAAAAAAAAAAAAAA1jiAAABQAAAAAgAAAAARQAAAAAAAAAAAEAAAAAAAAAKAAAAAAAAAAAIKAAAAABQAAAAIAAAAAAAAAAAAAAQAAAAC0AAAAAQAAAAAAKAAAAAAAAAoAAAAAAAAAAAAAAADWOIAAoAAAAAQAAAAAWAAAAAAAAACAAAAAAAAAAAAAAAAAAFAAAAAAAAAlAAAAAAoAAAAEAAAAAAAAAAAAAIAAAABaAAAAAIAAAAAAFAAAAAAAAAUAAAAAAAAAAAAAAANY4gCgAAAAIAAAAAigAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAQUAAAAAUAAAAQAAAAAAAAAAAAAgAAAAFoAAAAEAAAAAACgAAAAAAAAKAAAAAAAAAAAAAAA1jiKAAAAAgAAAARQAAAAAAEAAAAAAAAAAAAoAAABAAAAAAAAAAAAAoAAAAAAgoAAAAFAAAAEAAAAAAAAAAAABAAAAALQAAAAIAAAAAAFAAAAAAAAAUAAAAAAAAAAAAAAN44gAAAAgAAACKAAAAAAEAAAAAAAAoAAAAAAAAAAAAAAABAAAAAAAAAoAAAAAEFAAAAFAAAAEAAAAAAAAAAAABAAAABaAAAABAAAAAAAoAAAAAAAACgAAAAAAAAAAAAAN44gAAEAAAAFgAAAAAEAAAAAAAoAAAAAAAAAAAAAAAAAAAAABAAAAAAAAoAAAAAlAAAAAoAAAEAAAAAAAAAAAAIAAAALQAAAAIAAAAAAFAAAAAAAAAUAAAAAAAAAAAAAN44gAEAAAARQAAAAAgAAAAAFAAAAAAAAAAAgAAAABQAAAAAAAAAAgAAAAAAUAAAACCgAAACgAAAQAAAAAAAAAAAEAAAAAtAAAAAgAAAAACgAAAAAAAAKAAAAAAAAAAAAA3jiAQAAACwAAAAAQAAAACgAAAAAAAQAAAAAAAAAAAAAAAAoAAAAAAAQAAAAAKAAAAIKAAAAKAAAIAAAAAAAAAAAAQAAAAWgAAAAQAAAAABQAAAAAAAAFAAAAAAAAAAAADeOJAAAALAAAAAIAAAABQAAAAAIAAAAAAAAAAAAAAAAAAAAAAAUAAAAAIAAAAAFAAAAEoAAAAoAAAgAAAAAAAAAAAIAAAALQAAAAIAAAAAAoAAAAAAAAUAAAAAAAAAAAAN44AAACwAAAACAAAAUAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAACAAAABQAAABKAAAAKAAAIAAAAAAAAAAAQAAAAWgAAAAQAAAAABQAAAAAAAAFAAAAAAAAAAADeOAAAsAAAAEAAAAoAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAEAAAACgAAASgAAAUAAAQAAAAAAAAAAAgAAAAtAAAAAgAAAAACgAAAAAAABQAAAAAAAAAAA3jgALAAAABAAABQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAIAAAAoAAAEoAAAFAAAEAAAAAAAAAAAIAAABaAAAABAAAAAAFAAAAAAAACgAAAAAAAAAAN44CwAAAAQAAAUAAAAQAAAAAAAAAAAKEKAAAAAAAAAAAAQsAAAAAAAAAAAAoAAAAQAAABQAABKAAABQAAIAAAAAAAAAAAQAAAAWgAAACAAAAAAKAAAAAAAAFAAAAAAAAAADeGFAAACAAACgAAACAAAAAAAAABQhQAAAAAAAAAAAAAAAAAAAIAAAAAAAAABQAAAEAAAAUAAASgAACgAACAAAAAAAAAAAgAAAAtAAAAEAAAAAAUAAAAAAAAKAAAAAAAAAA5MMAAAQAAAUAAACAAAAAAAABQAAAAAAAAAAEAAAAKAAAAAAAAAAIAAAAAAAABQAAAgAAACgAAQUAAAUAACAAAAAAAAAAAgAAAFFAAAAEAAAAAAUAAAAAAAAKAAAAAAAAAHJhgACAAACgAACAAAAAAAAKAAAAAAAgAAQAAAAAAAAAAoAAFAAAAAAEAAAAAAAAFAAACAAABQAAIKAAAKAABAAAAAAAAAACAAAoqBQAAABAAAAAAoAAAAAAAAUAAAAAAAAAOTDAAgAAoAAAEAAAAAAACgAAAABAAgAAAAAAAAAAAAAAAAABQAKAAAABAAAAAAAAKAAAEAAAUAAASgAACgAAQAAAAAAAAAAgKAASgUAAAAQAAAAAKAAAAAAAAFAAAAAAAAAcmGBAABQAAAIAAAAAAFAAAAACBAAAAAAAAAAAAAAAAAAAAAAAACgUAAAACAAAAAAAUAAAIAAAoAAEFAAAFAAEAAAAAAAAAFIAAAlAFAAAAEAAAAACgAAAAAAABQAAAAAAAA5MNYAAoAAEAAAAAACgAAAAIEAAAAAACgAAAAAAAAAAAAAAgAAAAAAoFAAAAEA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glAioBRFCACoihBRAAqIFAQAAAAAAAAogFRQBKALBUUAFgqAEVQgVUAAWAloEFoEAtgBBaBAqhAARQFRQBBQEUBUAUCBQBKAAgFoAgUACAUUCAACgIAFAEoUqKAioAgWAAAAlAIAWgAACAHo83IglARFALIBQJBQCyChAKBBKBJQCxQgAqIoQUQALIKAgAAFgAACUAAAUQEtACoAsFRQAWEoCC0CKoQALAS0CAWiAEtAgoogVQgAIoAloAgoCKAoQKBAFAlAAQC0AQKABAKKBAABQEACgCUABS2RQgCKIAAAKgAgLQAABAD0eXkBKBJQES1AKBJQAWShABRBKBFQCiKEAqCwCUQALIKAgAFggAAAABZQABRAS0AKgUShFAEUSgIqhAqoAAsJaAILRAAssKILQIoVAAQKBLQBBQEChQgUCAKBKAAgFoAEUACAUUCAACgIAFAEoAFAILSBAsApAACoAIWgAACAHo8vIKgCSgFggFAkoBZBQgAoglAkoBYoQAVEUJQIAsgoQACwQACgAEAACygACwEtACoFEqKACwlAQWiBVQABYCWgQWiAEtAEFoEUKgABFAlFAgFARQoQBRAFAEoAQBVACKABABaBAABQEACgCCgCgCFCUgUQUEAASgEBaAABAD0eXkJQBJQCiQUASUAsgoQCiBUCKgFEUIBURQgogCoihABRIAKAAAAAQAC2AALBUUBUAWCooAiqgBFUIoVAAsBLQIBaIAS0CC0CBVQAAigSigQCgIoUIAogCgCUABAqgBFAAgAtAgAAoCAAKBBQBQBAACggFBAAlABC0AACAHo8vISgIigFkAoEgoBZKAgFEEoEVALFCACpYBKIAJYoQAWCAUAsEAAALKAgAWUACwVFAVAolRQAWEoCC0QKqABRCWgQC0QAloEFFECqEABFAVFAgFARQFQBRAFAEoACBVACKABABaBAABQEAAUASgCgCAAAACggACUACgAAQA9Hl5CUCSgAsgFAkoALJQgAoglAkoKIoQCoihBRAFkFCAWCCgFggAAAABZQEAWUAWAloCoAsFRQCwVAQWiBVQABYKigQWiAEVQEFogVQgAIoCooAgoCKAqAKBAoAlAAQKoAQKAIALQIAABQgACgCUACgCAAAACkAAKgAUAACAHo8vISgSUBC2QCgSUAsgoQCgRUCKgFEVABURQlEAVEUIBRIKCwQAAAAAAAsoQBZQBYKigKgWCooAiiUBFUIoVAAsBLQILRAAssKILQIoVAARQBLQBBQEUBUAUCBQBKAAgFoAgUAQAUUQAAChAAFAEoAFAEAAAAAAABKAKAABAD0eXkqAJKAWCCgCSgFkFCAUQKgRUAsCoAKlggogCyUIALIKCwQACgAAEAACyhAS0AFhLQFQBZUUAFhKAiqECqgAWAloEFoEBLQBBaBFCoACBQJaAIKAigKECgQBQJQAEAtAECgAQCiiAAAUBAAoAlAAoAgAAAAABAUlAFAAAgB6PLyVAElAKJBQJBQCyUBAKIJQJKAWKEAqIoSiAKiKEAsEFLBABQgoABAFgACyoAsoAsFRQFQLBUUAsJQEFogVUACiEtAgFogFsAILQIoVAAQKBLQBBQEChQgUCAKBKAAgFoAgUACAUUQAACgIAFAEoAFAEAAAAAAIABQKAABAD0eXjoAkoBZAKBIKAWShABRBKBJQUSUAFRFCUQBZKAgokFEVABQlAhQAAgWAAiqgCygCwloCoFEqKAIqoCC0QKqAALCWgQC0QAloEFoECqgABFAlFAgoARQoQKBAFAlAAQC0AQKABAKKBAABQEACgCUACgCAAAAAAEAAAtAAAgB6PLx0ASUAsgFAkoALJQgAoglEEoKIqACpYBKIBLFCAWCUFkAFCUCAKQAUICKAJaIFlAFhKKFQKJUUARVQAiqgVUAAWEtAEFogBLQIKKIFUIACKBKKBAKAihQgCiAKBKAAgFoAEUACAUUCAACgIAFAEoAFAEAAAAAAIAABaAABAD0eXjoCIoBZAKBJQCoihABRFQIqAWBUAoSwQUQKiKEAsgpYIBQlAigAAEFCBYAFlQEtALBUUBUCyhFAiiUBFUIqhAAsFRQILRACKoQUUQKoQAEUCUUCAUBFChAFEAUBUABALQAIoAEAooEAAFAQAKAJQAKAIAAAAAAQAAC0AACAH/xABUEAABAwICBAgJBwgIBAYDAAABAgMEABEFEAYSITETIDA1cHORsRQiM0FRUmFx0RVAQlRikqEjMjRQcqKy0hZTVWCBgpPBJDZE4iUmgJDC4WNlwP/aAAgBAQABPwD/APpB7dNtum21W6bLVbpttVumwJNBPTZYmgigAOmwINBIHTYEE0Gx56sB01gEmwoNHz0EAdNgbUfZQaSPb02JQpW4Ulj1jQSlO4dNYBO6ksKO/ZSWUJ81/f02IaWvcLD0mkRgNqjegkJFgLDprShSzZKSaRFUdqzaksoRuT01gXpEV1W8ao9tIioTtVdRoAAWAAHTW2045+YkmkQfXX/gmkNob/NSBR6akpKjYAk03AdV+fZA7TTcRlv6Ot+102MxXndybD0qprD0JALhKj2CkIS2nVQLDlj0uttOOmyEFVNYYs7XFhPsFNRmWdqEbfSdp5I9MIBJsBcmmMOfdFyNQfa30zhzLYuv8ofbuoJShOqkBI9AzPTQzFfeF221EencKYwkCxeXf7Kaajss+TbSnv7aORyPIHinpZQhS1BKElRPmG2mMIfXcukNfiaZw6MzfxOEPpXt5E5Hphj4dJfAKW9VJ+krYKYwZpABeUVq9A2CkNttizaEoHoSLUeSPJHpWYYefVZptS924br1GwJZ2yFhI9VO01HgRo21tvx/WO00aORyPFPHOZ4p6D0i5AFTMOmQjaQwtHt3jt/uCAVEJAJJ2ACouCy3wFKAZT9vf2VFwOKyLu3eX7dg7KCUoASkBIAsAMzRyORyPHPGOZ6EWvKJ94pSQpJSoAg7xU7RvD5dyhssL9LfwqdotPj3LFpKPs7FdlONraWUOIUhQ3hQsf15Fw+VLI4JlWqfpkWT21F0cAIVKev9hHxqPEYip1WGgjvNHI0cjkeSPKHoQa8on3jiSokeWjUkModHtFTtEWF3VDeLR9Re0VOwWfBuXWCUeujxh+t2mnXlarTa3Fb7JBJqJo5LduX1BgfeNRsEgxx5HhT6XNv/ANZGjRo0aOZo0eIeXOR5E9A7XlE+8cedgeHzblxgIWfpo8U1O0Skt3VEdDw9VXiqqTFfir1H2VtK+0P1lCwWfMAUhnUbP017BUXReM2byHVPeweKKajssJKWWkNjfZIAyORo5GjRo0aORyORyOZ4p6F2vKJ945F1pt5BQ6hK0neFC4qdorCfuWCqOvtTU7R3EYlyGuHR6zfwoggkEWP6uwznKL1yO+jmRmaNGjRo5HI0cjkeiFvyifeOUm4bDnD/AIhhCz6249tTtEN6oT/+Rz41Mw6ZBNpDC0D1t47R+qIOA4hMsQyWkeu7sqDonEZ2ylqfV2JrSllpjFODZbS2gNp2JGWGc5ReuR30czkaNGjkaNGjRyPInimj0LN+UT7xyxAUCCLipujmHy7kNcAv0t/Cpui05i5YtIR2Kp1pxlZQ6hSFDzKFj+ookGVMVqx2Fue0DYPedwqDok4bKmPhA9RvaahYTBg2LDACvXVtVnphzwerTlhnOUTrkd4o0cyKNGjRyNGjRyNGjmcjmeKeMehFvyifePmMmKxKRqPsocH2hU7RJhd1RHSyfVVtFTcFnwrl1gqQPpo2j56hClqCUJKlHcALmoWjM+TYuAR0fb39lQdGYEaxdBkL+3u7KQhLaAlCQkDcALDi6Yc8nq05YZzlE65HfRo5GjRoijRo0aNHI0aORzOR5M8c8kegJryifePmk3BYE25cYAX66Nhqbom+i6ojwdHqr2KqTFkRV6j7K2lfaHziDCfnv8DHTrLtffawqDok2mxmPlf2G9gqLBiwk2jMIb9oG0+88hpfzyerTlhfOUXrkd9HM5GjRo0aNGjkaNGjRyOZ+ZnoLb8on3j5s60h1BQ4hK0neFC4rHcBhNQ3pTAU0tAvYbj830M52X1J7xyWl/PB6tOWGc5xOuR3jimjRyNGjRo0aNHI0eKeIf1Kf76t+UT7x83x/maV+xnhWCu4nGcdZdSlaFW1VVMw2ZC/SGFoHrb09o5UVBwDEJliGuCR6zmyoOisRnbJWp9XYmsTQlvEZTaAAlLqgAPMLnPQznZfUnvHJaX88Hq05YXzlF65H8XENGjRo0aNGjRo0cjRzPRCNhBFM6VYkj8/gnf2kUzpgdz0P/FC6Z0sgL/PQ83TOO4W7umIH7d099MyGHvJPNufsqB+ZY/zNK/Yz0J/RJHWUQCCCLipuj0CXtDfAr9Zupui01i6mCJCOxVOtOMrKHW1IUPMoWPIRIEqYq0dhbnt83bUHRJZsqY+E/Yb+NQsLhQfIMJCvXO1Xbni/Okvrl9+ehnOy+pPeOS0v54PVpywvnOJ1yO8UeKaNGjkaNGjRo0aPFPIHM/M7dA7M+Yz5KU8j3LNM6RYo1/1Ov7FpBrDdJ5b8plh5lohxYRdNxy+P8zSv2M9Cv0SR1g4kiMxJRqPtIcT9oVN0UjuXVFdLJ9U7U1NwWfCuXGCtHro2jiYfo5NlpS4vVZaUAQVbSR7qhaNwI1i4kvr9K93ZSEpQkJSAkDcBxcW51mdcvvOehnOy+pPeOS0v54PVpywvnOL1yO8UaORo0aORo0aNHI0cjRo8Y5GjkeVPQlg/OsTrk945F+QzGQFvupbSTa6jampDD3knm3P2VA8XH+ZpX7GehX6JI6wcfTNltt+OtDaUqWFaxA354bzfG6lHdx8W50l9cvvOehnOq+pPeOS0v54PVpywvnOL16O8UcjkaNGjRo0aNEUaOZo8Q8Y8Q9DuD86xOuT3jkdMeaU9cO45Mz5jPkpTyPYFm1NaRYo3/1Gv+0kGmtLpY8qw0v3XFM6XsHysVxH7JCvhWJY/AmYY+yhaw4tNglSM9Cv0SR1g4+m3lYnuVnh3N8bqkdw4+Lc6TOuX3nPQ3nVfUnvHJaX88Hq05YXznE69HeKORyORo0aORo0aNGjkcjkaOZ456HMH51idcnvHI6Y80p60dx5HQr9EkdYOPpt5WL7lZ4dzfG6pHcOPi3Okzrl95z0N51X1J7xyWl/PB6tOWF85xOvR3ijxTRo0cjRo0cjRzPInI8c8Y8gegrB+dYnXI7xyOmPNKeuHceR0K/RJHWDj6beVi+5WeHc3xuqR3Dj4tzpL65fec9DedV9Se8clpdzwerTlhfOcTrkd44hyNGiMjRo0aNGjRo5HM8Q0aOR5Y5noOwfnWJ1ye8cjphzUnrR3HkdC/0R/rOPpr5WL7lZ4dzfG6pHcOPi3Okvrl95z0N51X1J7xyWl3PB6tOWF85xOuR30czkcjRo0aNGjRyNGj8wPzI9BOD86xOuT3jkdMOak9aO48joX+iP9Zx9NfKxfcrPDub43VI7hx8T0ZkvSXn2HkK11leqrZvqThc6L5aM4B6wFx2jLQ7nVfUnvHJaXc8Hq05YVznE65H8Q4pyNGjkaNGjRo5GjxDxjxDkehvCOdYnXJ7+R0w5qT1o7jyOhf6I/wBZxVKShJUogAbyam6RwI1whZfX6Ebu2sXxVzFHUKW2ltKLhIGeD4nCfisMofTwqUJSUHYbgcjJwyDL8tGbUfWtY9oqBgkbD5ZkMKc2pKSlXJaXc8Hq05YXznE65H8XFORo0aNGjRo0aORo5noowjnWJ1ye/kdMOak9aO48joX+iSOszmYnDheXfSFeqNquypulajdMNi323PhUufKmG8h9a/Yd3ZxoWNT4dgh8rR6jm0VC0qjuWTKbLJ9YbU1HksyUa7DqXE/ZPzHS7ng9WnLC+c4nXI7xxzRo0aNHI0aOZzORyPzE9CeEc6xOuT3jkdMOak9aO48joi80xBkLdcS2nX3qNTdKIjNxHQp9XYmpuPT5dxwvBI9VvZybTrjKwtpxSFDzpNjULSeYxYPgSE9iqhY/Al7C5wK/Vc2UCCLjltLeeD1acsL5zidcj+LjGjkaNGjRo0cjkaOZo8oehrCOdYnXJ7+R0v5qT1o7j85h4lMheQfUkervHYahaVjdMY/zt/ComIRJouw+hfs3Hs5TS3ng9WnLC+c4nXI/iHGNHI0cjRo0aNGiOSPInkD0I4RzrE65PeOR0v5qT1o7j87BKTcEgjcRULSGfFsFOB9Hoc+NQtJoT+x+8dft2imnEOoC21pWk7ik3HI6W88Hq05YXznE65H8Q4xo0aNGjRo0aNGjkcjmaPHI4h5I8U9BeEc6xOuT38jpfzUnrR3H59GlSIq9dh5bZ9hqFpU+iyZbQdHrI2GoWMQJtg0+Av1F7Dx9Ledz1acsL5zidcj+LjnM0cjRo0aNHI8U8Y8Q8pbO3QZhHOkTrk9/ITMUhQrh99IV6g2mscx1GJM8A0yUoCgrWVv/AFDCxmfD2NvlSPUXtFQtKmF2TKaLR9ZO0VHksSUa7DqHB9k8TS3nc9WnLC+c4nXI7+OcjmaNGjRo0aORzPzAjoWwjnSJ1ye/ivvtMI13nEtp9KjapmlEVq6YyFPnsTU3HZ8u4L3BI9VvZ+pWnHGlhba1IWPpJNjULSaaxYPgPp7FVCx+BKsC7wK/Q58aBChcG4rS3nc9WnLC+c4nXI7+RNGjmcjRFGjnbinojwjnSJ1ye/OZjkCJcF7hV+q3tqZpRKduIyAwO1VPPuvr13nFuK9Kjf8AVUPEJcL9HfWgervHYaxCa7Pf4d0JC9UJ8XLC+c4nXI7+SNHI0cjRFHI0eKczyVuhfDnEMz47rhshDiVE+wGpmlSE3TDYKz67lTMUmzbh59RT6o2J/WEV7weS09bW4NYXbdexvUTSHDpJsXSyr0O7Px3cc5GjkcjRoiiKNHM5Eca2Zo1bIjIjkj0gQ58uFfwZ9SAfNvHYah6V7xMY9xa+BqHiUSbfwd9KyN6dx7DxDkaORo0aNGjRo0aNEUczkcjxDxTR5M9IMTH8QjbOFDyfQ6L/AI76haSw3yEPhTCz5ztTTTrbzYW04laT50m44ho5HI0ciMiMjR4p45zPSgw+9GdDjDim1+kVC0nfbATKbD32xsVUPGYMywQ6ELOzUc2HI0aNGjRo0aNHI0ciMzmcrURxDkcrdKETFZsSwbfUUi3iq2iw81Q9JmlkJlNFr7adoqPKjyk3YeQ5u3HaL0aORyIo5EUeIcyOLbkbZGj0nNrW2sLQtSFDcpJsah6QS2AEu2fQPW2K7aiY7CkABa+BWfMvd25HI5EZGrZEca1W4h4xyIyPSjGlyYpuw8tHs83ZUbSRW6SwD7W6jTo0u/APBRHm3GjmRmRkcrcU5kcc5HM/Nj/fLDcGkykNSU8GWircT5gaxfAnnZKnYrbSGgkeKNlT8NYjmFESCZLhHCG9aRIYaxDgmG0NhCBcJHnOUfAJkhhDyC1qrFxdRr+jU/0s/eqZgS3IEdpltlL6PKK3Xr+jU/0s/eqfhMmA2lx4t2UbDVNRIjErC5C03Elg62/YU1JgIfRhTTSENl1u61AAX2C5qUxFdxVLENJ4IrCN97m+0itIUMt4iW2G0ICEgEJFtuUbCZ0pkPMsa6DuOsBXyFif1b99Pxqdg7q8NioYio4dPlLaoO7zmvkLE/q376fjUuDJhFIkN6mte20Hdk/BYiYKh19B8JdN0bTsFGGx8gCXqflte2tc+nOJAlTAox2tcJ37QK+RMS+qn7yfjTOEOO4Otl2KluSg3QrZddfIeJfVT99PxqVh8qGgLfZKEk2BuDWFQPlGSWeF4OyCq+revkeF/bDHYP5qVgEdDaXVYo2EK3KKBY/jQwaGTYYuySfYP5qxOF4BK4DhNfYDe1qh4ZLmtlxhsKSDbeBXyDiX9QPvivkHEv6gffFfIOJf1A++KlxH4TobfRqqI1t4NRGg9KZaVey1pSbb7E2qVCwaK+ph1+UFp37vhXBYD9Yl9g+FRsNwqY28Y70kltN9tvhky2XXUNp3rUEj3mtIkR2ZiWGGkI1EjWKfSawGKJWJIStIUhIKlA1PLZmvFpIQ2FkJA3WGTDK5DyGWxdSzYVj2GpYjNLjNpKGhquqTvv7agM4c40ozJS2V32BKSbjsNfJWE+CeFeGvcDe2tbz9lT2cNbZBhynHXNbaFJIsOysEw5ieX+HW4kNgHxK4DAPrcrs/7a4DAPrcrs/7ah4Zg010tMSZJUBfzD/aiLE1FhvzCUsNlZTtNQsGmiWyXop4ILGvcjdWK4NKVPdMWJ+R2aurYDdUXA5rklDTzRaQdpV6BWJNxmZa24i1LbT5z6eSi4vNj3HCcKPQ5c1Hx+K4LPJUye0U2tDqAttaVpPnSbjIijkRxCOIatmeIeLbIjikZHoBjYVFSWnjisYWsopuPjS4cZyeMUckNllIGrtFr7r3qLCD+M+HeFtSALmyCDqeYCpOIsHE1RnMLYWsuBGubEn8K0idisrMNmGyhVgouJSARUDCJM9kusqbCQrV8Y0MNfjYX4JEW2HXPKuKJHZQ0dlDe/G++fhTsBiZFS1MXHS8jYhbJ/2qfBegPlp0fsq8yhWEzpsspZRGjBpAGu4UHYB/jUpzXbaEVUYuLTrNhxNwoeysP8KmYmDKjNs+CgmyEkXJp/GNTETFVBQpWuEaxVvufdWksptJMJDCQbBRXRk8Fo2yGn9R0OfRXZVrmhheLkc4j/XXXyVi/wDaQ/111PiYpBY4Z2eSm9vFeVWkTqHWoRS4FkIN7G/mFYBhhlvB90fkGz981pG8tzE1tk+K2AE/4i9H/lUdZ/8AKsPwVS0+ETjwDA27dhNYq7Edk3htajYFvYawJRRheIqSSCEXBHuNKfxNDCX1vyQ2s2SouGh4ecMM4T3iArVKQ4q4qPKnPvoZEx+61BPlDWLokx5Hgz8tcgCyhdRrRTnJfVHvFKwPEiSRH/fT8am4dLdwaLHQ1d1s+Mm4qNguIofbWqPsCwT46fjWk/Oh/YFMypDCSll91sE3shZFeHzfrj/+oqsVkvowaE4h9xK1Aaygognxa8Pm/XH/APUVTrzrytZ1xbh3XUok1hvOMbrkd9YrN4Ge6j5MYftbx1N3J2V8o/8A6aN/pVhUnh2ZQ8CajWR9BFr78okx2Do6h5kJ1uFI8asGxiVNmhl0NhJST4opn/wmDJmrA4Z5ZDYPovX9JZ3qM/dPxrSJ5T0KA4ve4grPYKgst4PD8MfKfCHRZpPqg+ekLfweXd9YkRZO1St4Vfeaaw3DzImqK1OsMoDg1DuBuSKdlYa7h7bZizPBmjsIAtf33rGYcaM1FdjBYS+kqss+6tFLXl3FxqCvCcC/s9775/mrwrAf7Pe++f5qiYrhMNwuR4byFkW3/E1MhvxCkvI1eEGsmouHYqEB2Mh1AWAbocAuO2oUXG0zGS8p/gwsFV3ri3bUyFikjFnOCfdZjG1lBwgbhuANYmjEAwIcJp1aLeO8tYKj21Kw6XEQHH2ShJNgbjlGXnWFhbSyhXpFRcffQQJCQ6n0jYqo2JxJX5rgQr1V7DRo5EcQ8oatxDkegfDcKYYiLk4q2Ep2FN1EEdlB2HiUYqkRVtRWdylqKR/gBScZjxY6moLCmru63vTTkDhdIWpQ2tKRwt/aNnwrFHxJnvujcVbPcKhtpdlstr/NW4lJ9xNTmsFgyCw6xIKx6p2d9cNgP1aX2j41Hi4TMjSVx2XkqZRe6z7D7TT8l+Rq8M6peoLC5oLxGWwzBbhrjMmwWoNkA1jTMkrjR48d9QioCQ6lB2ml4rJjQEB1h9ElSxrLcSRcCnYPDY+xJTtaUjhb+0C3wrFHxJxB90biqw9w2CkRJLiAtEd1STuKUEivAJn1V/8A0zUTDG4MZEx9h2S6QCllKNx9tTziU93XdjP2G5IbVYU5HfZALrLiAfWSRSMX4eRCix2+BZC0aw9JrH+d3/8AL/CKgSRD0eS+Ww4UrNgfTepk+TNXd9y48yRsAywbmfET9j/Y1B/43AZEbetg66O/41gH/EQpsP1k6ya0bYDk8vK/MZSVVOkGVLdfP01bPd5q0V5wc6o94o/K5+u/v1N8O+RYvB8Pw1/HtfW8++o3yrw7et4Zq64vfWrSbnP/ACDPGOYoHuT/AA54bzhG65HfU5GNGUsxHUBjZqghNcHpF/Xt/u/CoacSSzJ8PWlY1PEtb/bKImKvR1AmLWhrhTtRvvWDNYUiaDEfeW7qnYvd3U1MSjEQJY4ZhC1AJVtCQTWMwPApALe1hzxkGtIBaNh6PVZ/2FQojEtjWkYilgoOqlCtuztpvDES2UxG8XS6hvxggIHxrCUBuNiyAoLCWiNYefYqjs0XT7X6x39Awvqf9k1AnvQHi4zbaLEHcaONMq2rwuKo+m1fLMf+yYnYPhU2U3AajPDDohLydYWQBasQnPT3uFesLCwSNwFRHMSeIajOyVW2AJWbAVh2FzEkOTZz6j/VpdP4msRZxiUrVYWhhobrOEKPvNfJeO/XV/66qelSH06rz7rgBuAtZPLxZ8mKLNOHU9U7RTGPNqsH2ig7Nqdopl9l8XZcSv3Hd7xRFEZW5E1bI5HkbZGjxCOKf78GJCdZb8Kxkr1UiyfVrEPk1EKGiS66pkI/Jav0wANpqevD3AhMBl1BublXn/E0y3LbwLgv+pDRAHnA+NssO/T43Wp76n/LHhKvBOD4HzXtX/mH/wDD+FNfKPgUzw/U8kdTV9xvlgTkt2E48t7XJGoylRsLisOOIsOPvYi4oNNI89rE1KmyZpAdcK9t0p9F6YaltYIGLgSQ0QkecCiCCQRYimMXnx2UtNP6qE7hqCvl3E/rP7ifhU/EJbOERH0O2dctrGw27K+XMS+s/uJ+FS58qYlIkO64Tu8UCsL5yjdYnvrH+d3/APL/AAij/wAqjrP/AJZeAKOGeHBwW1tXVqF+R0blOH6arD8BWCzkQZK1u3LakEECoc1cGSt6OBtBSAr0E06Th2Cam5+Wbn2Jy0duwxNl+ZCK+XMS+s/uJ+FTcRltYNFkIds64bKVYVGxrEVvtIVI2FYB8RPwrSbnP/IM8X5ige5P8ObDGClhBelPpcsNYAbAfu0IeCKQViTLKRvISbD92vB8B+uSOz/tpcTA0EpXKlJPoKbH+Gp7WGIaSYT7rq77Qv0dlL/5WR13xrRnnQfsGpP6Q7+2e+nMRddw9uEpCVBB2KO+tKDaRHa9RoVh0BU8uIQ6hLiRdKTvVVjg2FEHZLk9qBWFSmY8Seh1dlOtaqBYm5samRXhgkSMhpa1i7y7DcKxWUzIhwW2l6ymmtVYsRY2FRcelx2UMpS1qIAG1JJ76nYhLTETMglp5i3jXSbp/Gv6SzvUY+6fjWK4vIhxobjQbJfRdVx7BWIYtJntJaeDYCVa3ig18uykRUMMhtrVFipKdpqSy1MwWGZUwMefXWNa5r5Lw/8Athv/AE//ALrAYcaM+6picmSSixATb5kham1BSFFKh5wbGo2MSWdjn5ZHt39tRsWivgBS+CX6F/GgQpIUkgg7iMrZHi24hGR4p6CIEVqUtSHJTcewuCvcax11gsQo7L6HiwgpUpO7zCsPcwyBFRLUrh5J3I9U0jGJQxHwwm/mKPNq+isZOHSG0y4y7POHxm/jUFSUTWFKIADiSSfeKx9xt7E3FtLStJCdqTcVGaS8+ltbqWgr6atwqKiLhkKYDOZeLqLAIPsOUVjCmWUPyJa1qO3gkbNtHSFDjpacigxCLWO1VNP4NBBlsBTrpJ1EHemhi0oYh4YTdW7V82r6Kxh3D5TSZTBKX1nxkfHKBBjSmlLdntx1A21VgfGsaejiBGhsvpeLe8pzw5aW57C1kJSHASTWNOtvYm+40sLQbWI9wrD5kJeGKgzVrbF7hSRXg2BfX3vuH+WsTlxBAagwipbaTrKUamSoqMNhRWlcIi4U6BXhOA/UX/vH+ahKwIEEQXu0/wA1SsTwiY4HH4j61AW3/BVTncLWxaHGdadvvUTa3aalyY8bBmocZwOKd8ZwjKe+yvAojSXUlaTtSDtG+ouGwklp44q1ssvVIAPfWOyGpWIKWydZAATemMViNMobVhTCylIBUbXPt/Nr5Zhf2Ox+H8tLx9hbaW14Y2pCdySoED92vlmF/Y7H4fy1Pnx5TAQ1AajqCr6ybf7CoTOEojpflvqWrztCpeNlTRYhspjs7vaaacW04lxBstJuDTWNtSAGsSjIdHrgbRWKMQGilcJ8rCtup6v+NQ8XTCwhLbKgZAWbpUk7q/pJO9Vn7p+NFQW6VublKurVppjA2nEu+HOKCDfVIPwrFpgnTVvJFkbEp9wptamlhxtRStO0EVPmxsQgIdd8SYjxdg2KFQ2sMitIkyX+HXvDKR5/bTmLylTzLQrUO4I82r6KxNyDLYTLZ/JPqNltf75QMQfghwNWIcFilW6/pqLh8N9hLq8TbZUd6FIFx+NY/JjuoisR3Q6GEEFXZmpzDXsIiNS5JBQNzZBUD7RXAYB9aldn/bWELweK84piWu5TY8NYD5qxKfj+RdUn2ebs3Uxjh3Ps/wCKPgaYmRpBs08kn0bj2GiMrcQiiOIRxLcielhjE5TN/H4Qehe2mMYYXcOpLR+8KQpK06yFBST5xVuOciMiKtRHFI4lulltxbZ1m1qQfSk2qPjDqSA8kLHpGw0xPjPkBK9VZ+irZxCMzmRxzxTkelmPMfj7G3PF9U7RUfGEkWfQUn0p3U0808LtuJX7jkRVqIzNEZHjkcW2R4lulQEgggkEUxij7WxdnU+3f20xiUd7YoltX2t3bQIUAQQQeSPEt80PScy+8z5NxSfZ5qYxYgAPN3+0n4UzKYfA1Fi5+idhyORztxCM7ZnMjpdanyWvplY9CttM4oyvygLf4ikLQsXQpKh7DerURxLdNSFrQboUpJ9htTWJup2OJC/wNMzGHrAL1VHzK2URxbURlbpoZkvM21Fmw+j5qZxNJFnkWPpTupt1t4XbWFZWyPHPL26VgSDcGxpqe8jYohY9tMzmXNijqH7VCxFwbjIjjkZH50ektt1bRu2oimsRIsHUX9opqQ06BqrFz9E7+nFqU81YBV0jzGm57ati0lH4ikqSsXSoKHsyI4lumpKlIN0kg+ym5zifzwF/hTcplf07exVEdODb7jVtVRt6PNTc4HY4m3tFIcQ6LoUDxzyR6XxcG4puU4jYfHHtpEtpe+6TWwi44x6akLU2boJFNzDucF/aKbebc3Hb6OnFt9xAsFXHoNIlpOxYsaBChdJB6cASDcGxpEpY/OsqkPtr89vf04ocWjcqkSRuWKStK/zTf+5Y6JkvrT7aQ+hW/wAU/Mj0vpUU7jakyD9IUhxK9gPTilxafPSX0neLUkgi46cASKS8ob7GkuoV57dOKVKTuNB71hQUFbj04pcUPbQcSfZ/c8dEQJG6g4fOKCknz9OKVkUHKG3pxCyKCgenEEigv00CD/cIccdFAUaCh05BVAj9eDjjouvQV05Xq/Tlf9djo3vV/wD2Ix0mD/0FjlB/7Z4/9XI+djpV/8QARBEAAQIDAwgFCgYBAwQDAAAAAQIDAAQRBSFxEBIxMjNRcIETMEFhsRQVIDRAUpGh0fAiI1BTweFCJEXxJTVgZKCwwP/aAAgBAgEBPwD/APdL0420inGyhinG3NigHGwJMZo42AEwERQcbAgwEjjYEkwGx2xQDjWATAb3wEgcbA2TAbA42JSVaIDO8wEgaONYBMBlR0wGkjjYltSoSwO2AABQca0pKtAhMue2EtpToHGxLCld0JYSnTfAAHGtLalaBCJb3jCUJTo41gEmghEqo610JYQnsrjxsQwtd4F0IlEjWNYCQm4CnGtLal3JENyR0rMIZQ3oHCkQ7LuNa4/8BAJMNyji7zcO+G5NtGteY0cK06YIrDtnMuaBQ90O2Y8jVvEFJSaKFP1xphxzVENyA0rPwhDSG7kinC5On0HGkOCixWHrKQb2zSHZN5m9Qu3j9XShSrkisN2e4rXuhuTZR2Vx4Yp0+m9JMu6RfvEPWUtN7ZrC2ltmixT9Sak3XbwLt5huzUDXNflCUJQKJFOGadPUqSFiihWHrLaXei4w9Z7zfZUd0EU/TpfbIxHjw2TpHWOy7TuumsPWT2tHkYdl3WdcfpDMi+72UHfDNltpvcNYtFCUPUSKCgyS+2RiPHhsnT1xEPWew5eBTCHrMdRqXiFJKTRQp+hNsuOmiBWGbJUb3TyEMyjLOonLam35DJL7ZGI4bJ0+wuNIcFFisO2Ug3tmkPSTzN5HMe2gEmghmzXnL1XDvhmzWW9a/GAABQejam35DJL7ZGI8eGydPsj0ky9eoX7xD1krF7ZrDjS2jRYp7Qyyt5WajTDNkpF7prhDbLbQogU6i1NvyGSX2yMR48Nk6R7MpIUKKFYnJBpLZcRcR7PZO3OH8jqrU2/IZJfbIxHjw2Tp9nnvV14ZZaSVMIKknRDss6zrp65mQed7KDvhmymkXrviYAS6oDQCfHLZO3OH8jqrU2/IZJfbIxHjw3Taj400MJtc/wCSITarB0giEz0urQuEuIVqkH2Ke9XXhlsjZqxyPWew5fSh7oest1F6LxCklBooU6hthx00QKwzZJO1PIQzKss6ics1t14nLZO3OH8jqrU9Y5DJLbZGI8eHiX3U6qiOcJtGYT/lWGLTcW4lCgLz1896uvDLY+zVj6C2kOCixWHrJbVe2aQ9JPs6RUbxf6DFmuuipuEM2ay3eRU98AAXD0ZrbrxOWyducP5HVWpt+QyS22RiPHh9K7dGI6lbiGxVZpCXEK1SD6M96uvDLY+zVj6drJCVJIGWX2SMB4enNbdeJ8ctk7c4dVam35DJLbZGI8eH0rt0YjqbW2HMZEzDqNVRHOE2jMJ/yrCbXdGskGE2wg6yTExPsOsqSDectj7NWPp2xrIyy+yRgPD05rbrxOWyducOqtTb8hkltsjEePD6V26MR1NrbAYjqbH2asfTtjWRzyy+yRgPD05rbrxOWyducOqtTb8hkltsjEePD6V26MR1NrbDmOpsfZqx9O2NZHPLL7FGA9Oa268TlsnbnDqrU9Y5DJLbZGI8eH0rt0Yjx6m1thzHU2Ps1Y+nbGsjnll9ijAenNbdeJy2Ttzh1VqeschkltsjEePD6V26MR49Ta2wGI6mx9mrH07Y1kc8svsUYD05mzFqWVoINTWHJR5rWSclk7c4fyOqtT1jkMkttkYjx4fSu3RiPHqbW2AxHU2Ps1Y+iSAKmHrSYbuBqe6JubVMkEilMspNNLQlAVeALupclWXddIhiRbYcz0buqtT1jkMkttkYjx4fSu3RiPHqbW2HMdTY+zVjlemmWddUPWsTc0nmYdfce2hr6TM8+zoNRuMM2s2q5wUht1Dgqg19htX1jkMkttkYjh9K7dGI6m1thzHU2UtKGlFRoKw9arSLkXw9aD7vbQd3VpWpBqk0MM2q6i5d8M2iw720Pf19qeschkltujEePD6V26MR49Ta2w5j2lmZdZ1FUhm1+x1PMQ1MNPaiq9ZanrHIZJbboxHjw+ldujEePU2tsOY9rBIhm0n29JqO+GbUZXcu4wlQUKpNR1NqeschkltsjEePD6U26MR49Ta2w5j25t5bRqg0hm11i5wVwhmdYe1Vcj6dqeschkltsjEePD6U26MR49Q9Nss66onZ8TCcxIoK/oLM8+1oNRuMM2shVzgpDbqHBVBr6Fq+schkltujEePD6U26MR4+itxKBVRpD1qtIubFTD0++7dWg7v0VKyk1SaGGbVeRcu8QzaLDlxND3wDFq+schkltujEePD6U26MR45Xp9hq4mp7oetZ1VzYpC3FLNVmv6UzMus6ioffU+vPVkldujEePD6XUEOpUrQCIetdIuaFe8w9NvPa6uX6g0vo1he4gw1aLDnbTHjizMus7NVIZtf91PwhmZae1FV44tWg+3dWo74ZtNpdAu7whK0qFUmo44NuKbOcg0MM2otNzgr3wzOsu6DQ7jxxam3mtVXKGbUSbnBTvht1Dgqg144JUUmqTSGrQdRcq8Q1PtL03Hv44tvON6hpDdpfuJ+ENvtu6hrwnlZFx0JcupWJuzlLXnNAAUh+VabLbQ1jSsWkEJdzUACg7MjdmvOJCwRQx5pf3iHrPK2UoQAFDSY80v7xExJOS6QpZEMsNvSyiNdMOSocDKUilRf8odbaVMhtoXVAi0ghL2agAUHZkbkn3UhaE1GIjzbM+78xD8ioy6EoQM4UrojzbM+78xD0s6xTpBSuRyWbZlApY/EdEeTt+RdNT8X95WZV14Etisebpn3fmIRJFcqULRRQ0d8ebpn3fmIdlXWRnOCkSkt5SsorS6seQMfvD5fWDZjaUhRdAB7af3As9k3B4fL6xNy/k7mZWt0MSbr6c5Eea5jcI81zG4R5rmNwh9hbCs1emGUhbiUnQSBDstJNKKFqVUR0ch75++UNSco8CW1E0yNoK1BO+LSDaXAhAAoL6RZ7IdfAIqBeYmSkvKzBQVyNNlxYQntiflAhtJbAoNMS6JZSSXlEGPIpTo+lzzm7/sQ+iWSkFlRJiRlUTGdnk3R0dn++fvlHRyHvn75QzKSbys1CiT990EUMNMOPbMVhiQeDqStF1b9ETUi6XSWkXQ1ZzylhKxQRNIbQ6UtGo6pucdb7a4w3Ptq1roBChUGo4SNSbSVBfSi6h7PrBZbLwmVKFAOWNYaYC5np88KwhyZR0/RKaBNaV+xForabPRJQAbjWJeScmElaCN18CVW1L9E0RU6TAsp3tUIXLIeQEu0qO0RMSy5dWarkd8Sky+8c0JFBpNDDiiQA2RU6K9sS5eee/OSBm7oXP5r/AEJR20rWLUfA/JA3GsdIUSAzTQ156THkU5+78zHkU5+78zD7M0wjPU58zFqKCkt0O/8AiLOky6rpF6o+Zi03Cp8pOgR/tvP+YlrOJHSP3JicWytz8kUHjEgSJZ0jv8IK5pKA4VGh74o+Zfpw4cKmGnn3FhAWbzvMTqXGl9GtZV2xZG3OH8iF2dMlRIT8xExKurlUNpF4pWGbPmEuJUU3AjtEWtt+QhDziBRKiMDHlT/vn4mJt1aZRtQUQTTwjyp/3z8TC3FrNVkmJbbIxHjE0/mukdCFd9I8p/8AXHw/qJNzPC/ywnlSuRl9TEiFp3/zElPOvu5iwKUhP+jaW8dKjdHnZ/cItJwraaJ7RWGG0yTfSuax0QFLk3auHOQrtgSkuFuE3gAG6FPSy2AChWYMPrE6y02lCmhQKFYsj/PlHTSH7Z+P9x00h+2fj/cMzkoyc5CCDEwwtkgrGmGpWbAzmwQDuNIYZnQ4krJpW++HmJlyYNFEIxiaD4R0TIPeaw7KvMiqxQdYhakGqTSG59Y17xDcy05oND38IpaSbbbLkyIz2plslaSEjfcIE+00jNZTS+FS1ZxLo0UrE250j6lDfDCQp1KToJEPokmF5ikGOkkPcP3zhlqUfQotpIIEOPOOa5rSM6YeSlgIKQdJpE8hyqG20k5g00MKnnG2QVpIVW+ohcvnTiXRopWJxzpH1KhLDqhUJJGBjyZ/3D8DDMohhAeWkqPYKRMmamFVUg9woYU043etJGIhE8HHG2mxQXVi0fWVcvCJd4MyIXStPrD806+fxnl2ZJH1R3n4RL/nyamu1OiLN/MZcZiy2s54rOhIiZd6V1S98WRtjhCjOEnW+cTPT+Soza511aVrDPlfSJzs6lRvi1tvyGWd9Sa5eGWV26MR4w+idLh6JQCezR9I6O0ffHy+kMJmAlXTkHdkZDRkQHTQV/mJFEqHasqJNO3/AIhMwBMUevSCdPZE9K9AuqdU6ItMUQ0Nw+kMMIfRVx2lLgDCZTpUBoPVA7AP7iUTmIfTWtB9YN1nDGJ/Ys4fwIlplcuqqYNooVrNAx5e1+yPl9IfeRLBCw2L4mJlcwqqoZVMrolsn4mJaUdF7yye6piZbm3bmyAMb48jnff+ZhTzixRSicT17cw43ckw3PpOuIQtKxVJrwfLLC0jpXq8xD/kyWkJcJpS7viYVLqoGEmsIS6mVzf8qQRSJbbIxHjD/lef+VSnfH/UO6EeUdGvpqaLqZJBby2itRqToiWMygqXMG4CHpl180Ua7hDaHUyuZ/lSCCDQwiemEJCUquwEecZr3vkImZp1EqhxJvNKx5ymve+Qh6aeeFHDWJL1hGMWj6yrl4R/tvP+cnkn+m6evKJf8uQWrf8A0IkJlMuslegiGZksOFbY074cJlpTcpeSy/wIcd3CPOU173yETE06iVQ4k3mlYZn5lTiUlVxI7BFrbfkMs76k1y8MrbciUArWQe37pAl5EgqClUHd/UdDZ/vn75QWJFBopShy/qJhEqlNWVEnv3fAQf8Atwx/mLJ2/Iw/tVYmFTalsBkiLWP40J3CJWVMxUBQBHZvj1GWv11RKPIbadSo3kXfOHmF+SIbSKnSYm3kONNpSbwL/lDVputpCKCgh+ZdDYeYoU9u+POz+4RNzjjCUFIF4iYnXJhOasDfdHnJ0NhCAB3w6hL0qjpF00GpjyJj94fD+4kGG2lKKHAr2JKik1ENzjida8Q3Ntr03GKgi7g5LsIdJClhOMT6kZjaEKBoOzlEsqVl2w6TVW6BaDvTdKfh3ROmWcSHWz+I9kS5AdSToqItFaVvkpNRQQygOLCVGg3wyGZVtf5gNR2ZGW5RtAWtdTug2qlSs1SPwQlySYBeReToG6BPu9N0vy7onlyzqA6jWPZ9ckvLNOpqpwJO4/8AMT7jQYQyhVSMsooJfSTvifUlcwpSTUXeES0wwqXLDxpHRWf+4fvlE1MM9AGGDUQ++ylhtpJqO2kdLZ/7Z++cB+QB2Z++cOzsm8auIJ+8YfclFIoygg/feYeebalQ00ak6cky4gybaQQSKXQzKMJUlfTDsPZ9YtF1Dr1UXgCkInWUoCSyCQNP2I8vY/ZHy+kG021JCS0CMf6jy9j9gfL6RMTTbqM1LYT3j/iGGpNKA46qp3Q9aRKcxkZohC1IUFJ0iEWihwZswgEb4m2pdNCyqteyGZ5LMqEo1o87P7hBUFLzldpvhDUigheeTSJ18PulQ0aBCFlBCkmhETL7UwwFquWLoZRKsgOuKzjuhU+6XulF3dE2th5AdRcrtGSXm1y9QnthqVZcQFF0A7vsxaLrawhCDWmUqllyyEuqpSmiOis/3z98ok1SjRJQv4+yodWjVNIRPe+PhCHkL1TxxRNOI7a4wicQda6AQRUccEqKTcYROKGtfCH216DxxQ8tFwMImwdeEqSrVNeOANIRNLTpvEImUK03Rp44IcUjVMImvfEJdQvQeOKX3E9sJmUnWugEHQeOCVEaDCZlQ0isJeQu4HjihxSdBhMyP8oSoK0Hjil9Q03wl9Ku7jilSk6DCZj3hCVpVoPHFLqhAfSdMAg6OOAJGiEvEab4DqTxxSsphL2+AQrRxxS4RAdSeOIURogO74CgrjiFkQHAdMAg8cQ4e2AsHjiFEQHN8Ag8cQsiAsccQSIC98Ag8cQoiAsccguAoHjiCYC+OQVAUOLQ9ozoqOOIJivHKsV45V45VivHKv8A8I0f/Ref/8QAQREAAQIDBAcGAwcEAgAHAAAAAQIDAAQRBSEzcRASMDEycIETFCBBUWFAUqEjNFBTkbHwFSJC0SThRGBiY4CwwP/aAAgBAwEBPwD/APXn1/8Am1XndXnbWK87KiK87SqK87NYQVHnYSBBX6QSTzsKxBWTzsKwILh8oqTzrJAgujygqJ52F1Iguk87FLSneYL/AKCConeedZIF5gvpG6+C6o87FOpT5wqYJ3QSSannWVJTvMKmQOEQpxa9551k0hcwhPvCphat10VJ3861OoRvMLmjuSIUtSt551kgCphc2gcN8LmHF+dMudi5htFxN8LnFHhFIKiq8mvwo5rKcSi9RpC54bkCFvrc3nlSYamGnuA1/wDIJIAqYcnG0XC8+0OTri+G4R78q1bjAuhm0X27iaj3hm1GV8dxhKgoVBr+OOTDbXEekOWidyB1MLdW4aqNfhxyXVuPgbdW0aoNIZtZYudFYZnGXrkm/wBD+LqWlAqo0hy0W08F8OTry/OmXhHKxW4+Nmdea3Go9DDNrIVc4KQ26hwVQa/iTs4y1cTU+ghy03FcApClqWaqNfCNA8I5Tq3bFKlINUmhhm1HUXLvEM2iw750PvANfw6YwV5HlsrdtGph1ngNIZtbydHUQ1MtPcB/CHp9hrean2h61XFXNikWctS2aqNTU6JjBXkdgOVx3Hbs2i+351HvDNqNL47jCVBQqk1/AnHm2hVZpDtrAXNDqYemnnuM6bLwOp0TGCvI7EaByrVuPwLbq2zVBpDNqrFzgrDM6y7wnofjSQBUw9aTLdybz7Q9aTzm64e0Ekmp8Nl4HU6JjBXkdmOVatx+EZnHmuE3ehhm1UG5wUht1Dgqg1+IeeQynWWboetYm5oU9zDrzjt6zXYWXgdTomMFeR2IgQPAOU6tx+GSopNUmhiTn3lOBtd4Pw9q4Iz2Vl4HU6JjBXkdiNI8Q2Q5NK3H4eS+8Iz0zE6mXWEqFxhmZae4Dtnp9lrzqfaHrUdVc3dEuSplJO8gabVwRnsrLwOp0TGCvI7MQIEDlSqy2D6iFWR8q4VZTw3EGFSMwnemFNrRxAj4KS+8Iz02tiJy0Mz77XnUe8M2m0u5dxhK0rFUmo2Dj7bQqs0h61RuaHUw7NOvcZ/1plcBGQ02rgjPZWXgdTomMFeRgbMaRytUw0riSD0hVnS6v8YfsxtCFLSTcNvJfeEZ6bWxE5eBtxbZqg0hm1HE3OCsMzrLu43+h8D1otNEpF5h20XnNxoPaCSbz4ZXARkNNq4Iz2Vl4HU6JjBXkdiNAgcsprAXkdihtThogVMKbWjiBHhkvvCM9NrYicvHZS1KSoE7qaX8VWZ8ctgIyGm1cAZ7Ky8DqdExgryPhGgQPANI5XzWAvI7Gysc5aFMNL4kg9IVZ8ur/GFWS2eFREKslY4VAxLyLzTyVEXDTa2InLx2RuX00v4qsz45bARkNNq4Az2Vl4HU6JjBXkdkNIgcsJrAXkdjZWOctja2InLx2RuX00v4qsz45bARkNNq4Az2Vl4HU6JjBXkdmIEDSOV01gLyOxsvHOWxtbETl47I3L6aX8VWZ8ctgoyGm1cEZ7KzMDqdExgryOwHhGgcr5rAXkdjZeOctja2InLx2RuX00v4qsz45bBRkNNqYAz2VmYHU6JjBXkdgPAIHLGawF5HY2XjnLY2tiJy8dk7l9NL+KrM+OXtJCUBCwRQUhuaZc4VDRauCM9lZmB1OiYwV5H9tgPEIEDldNYC8jsbLxzlsbWxE5eEAm4Q1Zzzm8UHvErKplwQDWumalnULUoi4k7FuZdb4VGHp1x5vUWBsrMwOp0TGCvI7AaRA8A5XTWAvI7Gy8c5bG1cROWlqWdd4BDVlDe6f0hphtoUQKeJ2SZd3ih9odstxN7ZrC21tmixT4GzMDqdExgryOyHLSZwF5HY2XjnLY2mhS3EhIqaQ1ZjquM0hqQZb8qn32akpUKKFYdsxpd6LjDsg835VHtt7MwOp0TGCvI/tsR4hyvmcBeR2Nl45y+JdlmneNMO2V5tHoYdYca4xTaWZgdTomMFeR/bbjlfM4C8jsbLxzl8WQDDtnsubhQ+0O2a6jhvEKSUmhFDsbMwOp0TGCvI/tsh4RyvmcFeR2Nl45y+OW0hwUWKw7ZaDe2aQ7JvNcQu9R47MwOp0TGCvI+EcuZnBXkdg1LOu8AiTkSwrXUb/wABdk2Xd4v9RDtlrF7ZrC21tmixTwWZgdTomMFeR2w0DldM4K8j4UIUs0SKmGrMcVxmkNSLLflU+/4KpIUKKFRDtmtL4LjDsg835VHtoszA6nRMYK8jthywmsFeR0tSTzu4UHvDNmNpxDWEISgUSKD8Kdl2neMQwyllGonRMYK8jsxoHLF9JU0pI3kGGrLJvcNMoalWmuEfiDiNdBT6ikOSD6LwK5bIeAc43Zdt3jFYdsv8o/rDsu61xinwY5vOSLDl9KZQ7ZrqL0X/ALwpJSaKFDtBzkWhDg1VCsO2YhV7ZpDsm81vFR6jni5KtOcQvh2zVC9s1hba2zRYpzwKQoUIrDsg0u9NxhySdRuFRzxWy25xisLs75D+sOMuNcY5TvzjbZKDWsS08lKAlwkmGZla9dw8I3RIlamtZZrU6Fz7SFFJrUR/UmfeGp4JdUpRNDuj+pM+8MTSHyQmsOPLbfSDwmG3yguqUa0N0NLcSwVu76ViRK1NayzXQ5NMtq1VGhjvzHzfQwzNpDyytV3lHfmPm+hhp9t2uoa00IfW7MFKOER2y+9dnW6ml19trjNKx31j5v3hU2EzAUlVUn6R31j5obmG3TRBrEy/2CNalb4747+Uf50gT6ySkNmo9/8AqDOuje0f50iXf7ZGvSkOzLbRosx39j1+hjv7Hr9DHf2PX6GGnUOjWQbodUUIUoeQhp6acSFpAoY1pz5UwuZmGiAsC/QpQSCo+USJWpsrWa1icdLbJI3mGK9mNY1NNC1hCSo7hElMlayFm83iHlvpNGk1Ed6mdfs9QVhlb6lUcSAIm5hbOrqAXxrzvyj+dY1535R/OsOzM00nWWkU0OOoaFVmkOzjRbVqqvpdEtONhoBxV8OTrSUFSTUxLqcU2C4KHZOSbS/KmULkXE8N8EFJoeUjk04QUhswHnA13cJNYce1JfstUjOG5dfY66XCBStIkEuLHaKWT7Q/NoZVqqBjvKHHu0cBoNwj+oN/KYS+tpZU2DQ7wYZfQ8nWTEyw02CoqNTuFYbTQkuVoN9If7Npn7NROtCJOrXaa91KxINE/ak9I7MKm1FQqKR3qW/L+gjvUr+X9BDLsu8rVSj6CJFJSXKil8Tsz2SdRO8xIIAZB8zH/jekPzoB1Gr1RLJdSj7U1MTgBebBgIlyooAFR7CPsQ92JQP0ELaZQkqKBd7CJVSFp10JpFo4IzgTrHzfQwzMNpmFrJuMOTrBQQFeXoYs/B6wppC71AHpHYNfKP0ESzaDMOAgUEdg18o/QQlCUCiRSH8JWRiWZ1mge0I9qx3f/wB0/rEy3qKR/eVX+Z0OspemylXpE3JttN6ya1hf/JcS0NwF8f01n1MSCAhxwDyNIeUqac7JHCN8EImkURcpP0hUy/qoG4k0vhLT6XSQpOsYlHnHCtLnlFpf4Zx2U584/T/qOynPnH6f9Q7KzLootYIhp5DtdU7ocmJYnVWQaeoh5yULagmlaekNPS7bA1kgqyiXLJV2rpAPkKQ3MNumiDU7RaErFFCsOSKDwGkOSzje8VHtyifmlrWES5godYXRCqqPpfHc1uLCnTW6A/qypb860iWb7NpKYdJShSh5AwyubdRrpUI1Jz5hC3ZlpaQsi8+UIbQiuqKVijDalOldT5XxKLRRS1qA1jurCZVDjp1SCkDyhL+rKqbO8GkSyOzaSmC82k0KhXOO3a+YfrDkyp5ZaQQB61hnsGU0SofqIS4hfCQYMpqJW4s1NDEjgJ6/vDzXazZRWl0NMIZFEDRN47ecPfYzSXPI3GJ3+xxDsT66Nao3mGW+zbCPSLSwhnA7t/6fpDPY94XWlPLdSHO7ahpq7vaLPweumV+8uaX8JWRhkyoQO0F8a0j6H6w6WCpPYjzv0OFwTZ7MVNPOJpUwW6OAAQpklr7O4kDrEo/2yaHeN8SN63D7w66tpVEIrWDMlpRcLVCfOsTJqtk+/wDqBfOHKJPFdz/3D7CHk6qoEkoXBwx3Nz80wy0XipGuq6GGEsp1Uw6lhH9ywP0EPzTRuaQM6CGFyrYqsVOV0d6k/k+ghLSEGqQB027jDbl6hC5FQ4DWFIUg0UKcnw66lR7NqkMduXFlAFa3+0MB4VLxBhSmlTOt/jXQ/hKyMM921PtK1j/g+8K7DtEdj636JxLSXAgD3MPhhYSlgXkw2y2zwikLW2qZ1/8AGsA1hcoytRUoXn3MdxY+X6mGJdtb60EXCO4sfL9TDUu21UoFKxM4KsjEjgJ6/vA++9NHbjtuypD3902gekTbBeQAneDDrAeQErhI7eZr/inRPf3qQ36mO4sfL9TDMu2qYWgi4QuSYCCQny9TFn4PXTK/eXOv76VrmwohKRT+e8F6bBpqj+dY7Sc+QfzrAdnCKhI/nWGVTBJ7UAD2gffTlFoYPUQ3wDKEy6Uul0HfFnXpUr1MPvhmhIuP0j72/dwp+piZaWtbZSLgb4adR3layaDcIlmloccKtxN0OSDS1FRrUwzLtlZadqFR/TWvUxLSiHVrSqtxhiUQySpNY7i2VlaqmG1qamF9mivtHeX/AMo/rE6844kBaKX/AARSFChEOSbauG4wuVcTuFRydfdU2KpSTlEklestahSph8TD6y2Lk+sGTb7Lsvr7xKB9BLaxcPOHgS2oD0MSSSlkBQoYcUUJKgKw4XJhxFEEUPnocXMqUUITT3MCzykawV/dCkTT32a7h5mDKN9l2USqXm1Fte4eeh59bZolBI9olEOF1TihSul8EtKA9IlElLKQq4w+y6l4PNXx2k58g/nWJdlztS67cTDTTheW4oUPlHZznzj+dILU4Rxj+dIblZloUQoD+ZQyiYCquKBENtrXMF1YpTdoZQoTK1EXGHJl0go7M+kSbam2qK3wuVdUokOEfzOO5u/mn6/7gSCwSQ4an+esdzd/NP1/3DDC21VUsmHlzJUUNpoPWGpIA67pqYUkKBSYVJKRewqntEut5VQ6mlPOHZQuvlSuGkf05n3ilE0EKcm1Ap1BfEqz2LYSd8EBQod0MMuMOlKb0GHVzDhLaE0HrCZNsNdmb/8AcS6Xm1FtV6fI6HpdD1NbyhyYdQopDZI9axJNrSVrWKVOkJfQ+tTad/rGvOfKP51iZTNOJAWn9PhVtIXxCFyXyH9YW0tHEOeK5ZtflTKFyaxw3wQRceeCkhW8Vhcmk8N0LYcReRzxWyhd5F8LlCOAwpCkcQ54EVuMLlUHddC5daffniptKuIQuU+UwppaN454qYbV5UhUsocN8EEXHngUg7xCpZJ3GkKZWjniptKt4hcsRwwUlNxHPDfCmEnddCmFp9+eKkJVvEKl/lMKQpO8c8VNIVBYUN0EEb+eBAO+CwDuugtLHPFSEq3wpj0MEFO/nippJ9oLShzxKQd8Fn0goUnniptJgtEbo3c8S0PKChQ54lIMFr0ggjniUAwUEc8SAYLfpBSRzxKQYKDzy1BBSRzxIBjUinPEpEFJ55asUPPEgGNXnlSKc8qc8qRTnlTnnTnlT/62T//Z", p = {
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
}
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
}
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
}
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
},
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
}
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
},
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
},
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
},
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
}
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
}
|
|
1863
|
-
};
|
|
1864
|
-
export {
|
|
1865
|
-
Gt as AuthGateway,
|
|
1866
|
-
$t as default,
|
|
1867
|
-
_t as theme
|
|
1868
|
-
};
|
|
867
|
+
var Ce = (e) => {
|
|
868
|
+
let t = {
|
|
869
|
+
minLength: 8,
|
|
870
|
+
lowercase: 1,
|
|
871
|
+
uppercase: 1,
|
|
872
|
+
numbers: 1,
|
|
873
|
+
symbols: 1,
|
|
874
|
+
...e
|
|
875
|
+
}, n = {
|
|
876
|
+
lowercase: {
|
|
877
|
+
reg: /[a-z]/g,
|
|
878
|
+
msg: "小写字母"
|
|
879
|
+
},
|
|
880
|
+
uppercase: {
|
|
881
|
+
reg: /[A-Z]/g,
|
|
882
|
+
msg: "大写字母"
|
|
883
|
+
},
|
|
884
|
+
numbers: {
|
|
885
|
+
reg: /[0-9]/g,
|
|
886
|
+
msg: "数字"
|
|
887
|
+
},
|
|
888
|
+
symbols: {
|
|
889
|
+
reg: /[^a-zA-Z0-9]/g,
|
|
890
|
+
msg: "特殊符号"
|
|
891
|
+
}
|
|
892
|
+
};
|
|
893
|
+
return (e, r, i) => {
|
|
894
|
+
if (!r) return i(/* @__PURE__ */ Error("请输入密码"));
|
|
895
|
+
if (r.length < t.minLength) return i(/* @__PURE__ */ Error(`密码至少 ${t.minLength} 位`));
|
|
896
|
+
for (let e in n) if ((r.match(n[e].reg) || []).length < t[e]) return i(/* @__PURE__ */ Error(`密码至少包含 ${t[e]} 个${n[e].msg}`));
|
|
897
|
+
i();
|
|
898
|
+
};
|
|
899
|
+
}, we = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOAAAACMBAMAAACXNbjzAAAALVBMVEUAAAD/UwP/UwL/sQD/swD/UwP/sQD/fwD/VQL/VQX/UwP/sQD/tAD/VAP/sgAfmwAtAAAADXRSTlMAgMDAQECAG2AwkGAwlb+ALgAAAJlJREFUaN7t2qENwlAUheEbAmlKMAgWqKqvxJIwAWED9mUALLIzYO8zTzwBpP2+BX59khNzIbLdq80zKgQFBQUFBQUFBQUFlxkEAADWpru0uUbW37J7VGznNu/INuXQERQUFBQUFBQUFBT8dfAwtTlHth+yMQAAgEV6FCLrjm1O/3XCEhQUFBQUFBQUFBT8RnAqRNYPbcao+ACnVSVbBE+/CAAAAABJRU5ErkJggg==", X = {
|
|
900
|
+
LOGIN: 0,
|
|
901
|
+
REGISTER: 1,
|
|
902
|
+
WECHAT: 2,
|
|
903
|
+
WECHAT_SCAN: 3
|
|
904
|
+
}, Te = {
|
|
905
|
+
title: "AIGC实训平台",
|
|
906
|
+
favicon: we,
|
|
907
|
+
layout: "default",
|
|
908
|
+
skipBind: "0",
|
|
909
|
+
nb: "0",
|
|
910
|
+
hf: "0",
|
|
911
|
+
hideRegister: "0",
|
|
912
|
+
cf: "<a href=\"http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=31010702009439\" target=\"_blank\" style=\"text-decoration: none;\">沪公网安备 31010702009439 号</a> | <a href=\"https://beian.miit.gov.cn/\" style=\"text-decoration: none;\">沪ICP备2020031101号-3</a> | © 2025 晶程甲宇科技(上海)有限公司 版权所有"
|
|
913
|
+
}, Ee = { class: "ag-input" }, De = { class: "ag-input-label" }, Oe = { class: "ag-input-content" }, ke = {
|
|
914
|
+
key: 0,
|
|
915
|
+
class: "ag-input-content__prefix"
|
|
916
|
+
}, Ae = [
|
|
917
|
+
"id",
|
|
918
|
+
"type",
|
|
919
|
+
"value",
|
|
920
|
+
"placeholder",
|
|
921
|
+
"autocomplete"
|
|
922
|
+
], je = {
|
|
923
|
+
key: 1,
|
|
924
|
+
class: "ag-input-content__suffix"
|
|
925
|
+
}, Me = [
|
|
926
|
+
"aria-label",
|
|
927
|
+
"aria-pressed",
|
|
928
|
+
"title"
|
|
929
|
+
], Ne = {
|
|
930
|
+
key: 0,
|
|
931
|
+
fill: "none",
|
|
932
|
+
stroke: "currentColor",
|
|
933
|
+
viewBox: "0 0 24 24",
|
|
934
|
+
"stroke-width": "2"
|
|
935
|
+
}, Pe = {
|
|
936
|
+
key: 1,
|
|
937
|
+
fill: "none",
|
|
938
|
+
stroke: "currentColor",
|
|
939
|
+
viewBox: "0 0 24 24",
|
|
940
|
+
"stroke-width": "2"
|
|
941
|
+
}, Z = /* @__PURE__ */ u({
|
|
942
|
+
__name: "ag-input",
|
|
943
|
+
props: {
|
|
944
|
+
label: {},
|
|
945
|
+
modelValue: {},
|
|
946
|
+
type: { default: "text" },
|
|
947
|
+
id: { default: "" },
|
|
948
|
+
placeholder: { default: "" },
|
|
949
|
+
autocomplete: { default: "" },
|
|
950
|
+
showPassword: {
|
|
951
|
+
type: Boolean,
|
|
952
|
+
default: !1
|
|
953
|
+
}
|
|
954
|
+
},
|
|
955
|
+
emits: ["update:modelValue"],
|
|
956
|
+
setup(e, { emit: t }) {
|
|
957
|
+
let r = e, s = t, c = b(!1), l = b(!1), u = n(() => r.showPassword && r.type === "password"), d = n(() => u.value && l.value ? "text" : r.type);
|
|
958
|
+
function p() {
|
|
959
|
+
l.value = !l.value;
|
|
960
|
+
}
|
|
961
|
+
function m(e) {
|
|
962
|
+
return e.replace(/\s+/g, "");
|
|
963
|
+
}
|
|
964
|
+
function h(e) {
|
|
965
|
+
let t = e.target;
|
|
966
|
+
if (c.value) {
|
|
967
|
+
s("update:modelValue", t.value);
|
|
968
|
+
return;
|
|
969
|
+
}
|
|
970
|
+
let n = m(t.value);
|
|
971
|
+
n !== t.value && (t.value = n), s("update:modelValue", n);
|
|
972
|
+
}
|
|
973
|
+
function g(e) {
|
|
974
|
+
c.value = !1;
|
|
975
|
+
let t = e.target, n = m(t.value);
|
|
976
|
+
n !== t.value && (t.value = n), s("update:modelValue", n);
|
|
977
|
+
}
|
|
978
|
+
return (t, n) => (v(), a("div", Ee, [o("div", De, S(r.label), 1), o("div", Oe, [
|
|
979
|
+
t.$slots.default ? (v(), a("div", ke, [x(t.$slots, "default")])) : i("", !0),
|
|
980
|
+
o("input", f({
|
|
981
|
+
id: e.id,
|
|
982
|
+
type: d.value,
|
|
983
|
+
value: e.modelValue,
|
|
984
|
+
placeholder: e.placeholder,
|
|
985
|
+
autocomplete: e.autocomplete
|
|
986
|
+
}, t.$attrs, {
|
|
987
|
+
onInput: h,
|
|
988
|
+
onCompositionstart: n[0] ||= (e) => c.value = !0,
|
|
989
|
+
onCompositionend: g
|
|
990
|
+
}), null, 16, Ae),
|
|
991
|
+
t.$slots.suffix || u.value ? (v(), a("div", je, [x(t.$slots, "suffix"), u.value ? (v(), a("button", {
|
|
992
|
+
key: 0,
|
|
993
|
+
class: "ag-input-content__password-toggle",
|
|
994
|
+
type: "button",
|
|
995
|
+
"aria-label": l.value ? "隐藏密码" : "显示密码",
|
|
996
|
+
"aria-pressed": l.value,
|
|
997
|
+
title: l.value ? "隐藏密码" : "显示密码",
|
|
998
|
+
onMousedown: n[1] ||= O(() => {}, ["prevent"]),
|
|
999
|
+
onKeydown: n[2] ||= D(O(() => {}, ["stop"]), ["enter"]),
|
|
1000
|
+
onClick: p
|
|
1001
|
+
}, [l.value ? (v(), a("svg", Ne, [...n[3] ||= [o("path", {
|
|
1002
|
+
"stroke-linecap": "round",
|
|
1003
|
+
"stroke-linejoin": "round",
|
|
1004
|
+
d: "M3 3l18 18M10.58 10.58A2 2 0 0012 14a2 2 0 001.42-.58M9.88 5.08A10.64 10.64 0 0112 4.86c4.67 0 8.62 3 10 7.14a11.8 11.8 0 01-2.68 4.28M6.61 6.61A11.8 11.8 0 002 12c1.38 4.14 5.33 7.14 10 7.14a10.8 10.8 0 004.18-.84"
|
|
1005
|
+
}, null, -1)]])) : (v(), a("svg", Pe, [...n[4] ||= [o("path", {
|
|
1006
|
+
"stroke-linecap": "round",
|
|
1007
|
+
"stroke-linejoin": "round",
|
|
1008
|
+
d: "M2 12s3.64-7 10-7 10 7 10 7-3.64 7-10 7S2 12 2 12z"
|
|
1009
|
+
}, null, -1), o("path", {
|
|
1010
|
+
"stroke-linecap": "round",
|
|
1011
|
+
"stroke-linejoin": "round",
|
|
1012
|
+
d: "M12 15a3 3 0 100-6 3 3 0 000 6z"
|
|
1013
|
+
}, null, -1)]]))], 40, Me)) : i("", !0)])) : i("", !0)
|
|
1014
|
+
])]));
|
|
1015
|
+
}
|
|
1016
|
+
}), Fe = { class: "ag-login__remember" }, Ie = {
|
|
1017
|
+
class: "ag-login__button ag-login__button--primary",
|
|
1018
|
+
type: "submit"
|
|
1019
|
+
}, Le = { class: "ag-login__actions" }, Re = { class: "ag-login__methods" }, ze = { class: "ag-login__link" }, Q = "jcjy-components:auth-gateway:remember-login", Be = 1, Ve = "jcjy-components-auth-gateway", He = /* @__PURE__ */ u({
|
|
1020
|
+
__name: "login-form",
|
|
1021
|
+
props: {
|
|
1022
|
+
confirmText: {},
|
|
1023
|
+
hideLoginMethods: { type: Boolean }
|
|
1024
|
+
},
|
|
1025
|
+
emits: ["toggle", "submit"],
|
|
1026
|
+
setup(t, { emit: n }) {
|
|
1027
|
+
let r = d("contextProps"), u = n, f = t, p = b({
|
|
1028
|
+
email: "",
|
|
1029
|
+
password: ""
|
|
1030
|
+
}), m = b(!1);
|
|
1031
|
+
function h(e) {
|
|
1032
|
+
let t = [];
|
|
1033
|
+
for (let n = 0; n < e.length; n++) {
|
|
1034
|
+
let r = Ve.charCodeAt(n % 28);
|
|
1035
|
+
t.push((e.charCodeAt(n) ^ r).toString(16));
|
|
1036
|
+
}
|
|
1037
|
+
return t.join(".");
|
|
1038
|
+
}
|
|
1039
|
+
function _(e) {
|
|
1040
|
+
return e ? e.split(".").map((e, t) => {
|
|
1041
|
+
let n = Number.parseInt(e, 16);
|
|
1042
|
+
if (!Number.isFinite(n)) throw Error("Invalid remember login value");
|
|
1043
|
+
let r = Ve.charCodeAt(t % 28);
|
|
1044
|
+
return String.fromCharCode(n ^ r);
|
|
1045
|
+
}).join("") : "";
|
|
1046
|
+
}
|
|
1047
|
+
function y() {
|
|
1048
|
+
try {
|
|
1049
|
+
let e = window.localStorage.getItem(Q);
|
|
1050
|
+
if (!e) return;
|
|
1051
|
+
let t = JSON.parse(e);
|
|
1052
|
+
if (t.v !== Be || !t.email) return;
|
|
1053
|
+
p.value.email = _(t.email), p.value.password = _(t.password || ""), m.value = !0;
|
|
1054
|
+
} catch {
|
|
1055
|
+
m.value = !1;
|
|
1056
|
+
}
|
|
1057
|
+
}
|
|
1058
|
+
function ee() {
|
|
1059
|
+
try {
|
|
1060
|
+
if (!m.value) {
|
|
1061
|
+
window.localStorage.removeItem(Q);
|
|
1062
|
+
return;
|
|
1063
|
+
}
|
|
1064
|
+
window.localStorage.setItem(Q, JSON.stringify({
|
|
1065
|
+
v: Be,
|
|
1066
|
+
email: h(p.value.email),
|
|
1067
|
+
password: h(p.value.password)
|
|
1068
|
+
}));
|
|
1069
|
+
} catch {}
|
|
1070
|
+
}
|
|
1071
|
+
function x() {
|
|
1072
|
+
ee(), u("submit", ve(p.value));
|
|
1073
|
+
}
|
|
1074
|
+
function T(e) {
|
|
1075
|
+
u("toggle", e);
|
|
1076
|
+
}
|
|
1077
|
+
return g(y), (t, n) => (v(), a("form", {
|
|
1078
|
+
class: "ag-login",
|
|
1079
|
+
onSubmit: O(x, ["prevent"]),
|
|
1080
|
+
onKeydown: D(x, ["enter"])
|
|
1081
|
+
}, [
|
|
1082
|
+
n[11] ||= s("<header class=\"ag-login-header\" data-v-476a9185><div class=\"ag-login-header__top\" data-v-476a9185><svg class=\"w-2.5 h-2.5\" fill=\"currentColor\" viewBox=\"0 0 20 20\" data-v-476a9185><path d=\"M5 3a2 2 0 00-2 2v2a2 2 0 002 2h2a2 2 0 002-2V5a2 2 0 00-2-2H5zM5 11a2 2 0 00-2 2v2a2 2 0 002 2h2a2 2 0 002-2v-2a2 2 0 00-2-2H5zM11 5a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V5zM11 13a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z\" data-v-476a9185></path></svg><span data-v-476a9185>WELCOME BACK</span></div><div class=\"ag-login-header__title text-xl font-bold tracking-tight\" data-v-476a9185>登录您的账号</div></header>", 1),
|
|
1083
|
+
l(Z, {
|
|
1084
|
+
modelValue: p.value.email,
|
|
1085
|
+
"onUpdate:modelValue": n[0] ||= (e) => p.value.email = e,
|
|
1086
|
+
class: "ag-login__field",
|
|
1087
|
+
name: "username",
|
|
1088
|
+
label: "账号/邮箱 ",
|
|
1089
|
+
autocomplete: "username",
|
|
1090
|
+
placeholder: "请输入账号/邮箱",
|
|
1091
|
+
type: "text",
|
|
1092
|
+
required: ""
|
|
1093
|
+
}, {
|
|
1094
|
+
default: E(() => [...n[5] ||= [o("svg", {
|
|
1095
|
+
fill: "none",
|
|
1096
|
+
stroke: "currentColor",
|
|
1097
|
+
viewBox: "0 0 24 24",
|
|
1098
|
+
"stroke-width": "2"
|
|
1099
|
+
}, [o("path", {
|
|
1100
|
+
"stroke-linecap": "round",
|
|
1101
|
+
"stroke-linejoin": "round",
|
|
1102
|
+
d: "M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"
|
|
1103
|
+
})], -1)]]),
|
|
1104
|
+
_: 1
|
|
1105
|
+
}, 8, ["modelValue"]),
|
|
1106
|
+
l(Z, {
|
|
1107
|
+
modelValue: p.value.password,
|
|
1108
|
+
"onUpdate:modelValue": n[1] ||= (e) => p.value.password = e,
|
|
1109
|
+
class: "ag-login__field",
|
|
1110
|
+
placeholder: "请输入密码",
|
|
1111
|
+
type: "password",
|
|
1112
|
+
name: "password",
|
|
1113
|
+
label: "密码",
|
|
1114
|
+
autocomplete: "current-password",
|
|
1115
|
+
"show-password": "",
|
|
1116
|
+
required: ""
|
|
1117
|
+
}, {
|
|
1118
|
+
default: E(() => [...n[6] ||= [o("svg", {
|
|
1119
|
+
fill: "none",
|
|
1120
|
+
stroke: "currentColor",
|
|
1121
|
+
viewBox: "0 0 24 24",
|
|
1122
|
+
"stroke-width": "2"
|
|
1123
|
+
}, [o("path", {
|
|
1124
|
+
"stroke-linecap": "round",
|
|
1125
|
+
"stroke-linejoin": "round",
|
|
1126
|
+
d: "M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"
|
|
1127
|
+
})], -1)]]),
|
|
1128
|
+
_: 1
|
|
1129
|
+
}, 8, ["modelValue"]),
|
|
1130
|
+
o("label", Fe, [te(o("input", {
|
|
1131
|
+
"onUpdate:modelValue": n[2] ||= (e) => m.value = e,
|
|
1132
|
+
class: "ag-login__remember-checkbox",
|
|
1133
|
+
type: "checkbox"
|
|
1134
|
+
}, null, 512), [[w, m.value]]), n[7] ||= o("span", { class: "ag-login__remember-text" }, "记住我", -1)]),
|
|
1135
|
+
o("button", Ie, S(f.confirmText || "立 即 登 录"), 1),
|
|
1136
|
+
o("div", Le, [f.hideLoginMethods ? i("", !0) : (v(), a(e, { key: 0 }, [n[9] ||= o("div", { class: "ag-login__divider" }, [o("span", { class: "ag-login__divider-text" }, "其他登录方式")], -1), o("div", Re, [o("button", {
|
|
1137
|
+
class: "ag-login__methods-item",
|
|
1138
|
+
type: "button",
|
|
1139
|
+
onClick: n[3] ||= (e) => T(C(X).WECHAT_SCAN)
|
|
1140
|
+
}, [...n[8] ||= [o("svg", {
|
|
1141
|
+
t: "1775979815773",
|
|
1142
|
+
class: "icon",
|
|
1143
|
+
viewBox: "0 0 1024 1024",
|
|
1144
|
+
version: "1.1",
|
|
1145
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1146
|
+
"p-id": "1903",
|
|
1147
|
+
width: "200",
|
|
1148
|
+
height: "200"
|
|
1149
|
+
}, [o("path", {
|
|
1150
|
+
d: "M71.168 700.229818l23.970909-83.898182A296.680727 296.680727 0 0 1 46.545455 453.818182C46.545455 280.576 197.934545 139.636364 384 139.636364c136.168727 0 257.489455 75.636364 310.202182 190.673454l2.024727 0.069818c0.651636 0 1.303273-0.093091 1.954909-0.093091 4.352 0 8.587636 0.442182 12.893091 0.628364 5.026909 0.209455 10.077091 0.256 15.034182 0.698182 4.933818 0.442182 9.751273 1.256727 14.615273 1.908364 4.747636 0.651636 9.565091 1.186909 14.242909 2.048 5.376 1.000727 10.589091 2.373818 15.848727 3.630545 3.979636 0.954182 8.005818 1.745455 11.915636 2.862545 6.144 1.745455 12.101818 3.886545 18.082909 5.981091 2.816 1.000727 5.725091 1.838545 8.494546 2.909091 6.981818 2.699636 13.730909 5.794909 20.433454 8.983273 1.629091 0.768 3.328 1.419636 4.933819 2.234182 7.842909 3.886545 15.429818 8.145455 22.830545 12.683636l1.163636 0.651637c62.650182 38.795636 108.334545 99.537455 124.229819 170.449454l0.139636 0.512c1.768727 7.959273 3.048727 16.081455 4.049455 24.250182 0.116364 0.977455 0.372364 1.931636 0.488727 2.909091a256.395636 256.395636 0 0 1-39.121455 166.260363l19.618909 68.654546a34.909091 34.909091 0 0 1-43.170909 43.170909l-72.168727-20.642909a304.058182 304.058182 0 0 1-187.554909 39.796364c-2.466909-0.279273-4.910545-0.721455-7.354182-1.070546a299.822545 299.822545 0 0 1-25.669818-4.375273c-2.280727-0.512-4.491636-1.070545-6.772364-1.629091a307.735273 307.735273 0 0 1-59.438545-21.015272l-0.884364-0.395637a293.655273 293.655273 0 0 1-55.668363-34.955636c-0.930909-0.744727-1.815273-1.536-2.746182-2.304-7.074909-5.794909-13.824-11.869091-20.270546-18.269091-1.745455-1.745455-3.421091-3.514182-5.12-5.282909a265.146182 265.146182 0 0 1-16.337454-18.734545c-0.954182-1.140364-2.048-2.164364-2.955637-3.351273-88.715636 19.665455-183.226182 4.584727-259.746909-41.216l-87.901091 25.111273a34.839273 34.839273 0 0 1-43.147636-43.147637z m811.054545 12.869818c24.226909-33.093818 37.050182-71.656727 37.050182-111.592727 0-111.057455-99.188364-201.402182-221.090909-201.402182-7.866182 0-15.639273 0.442182-23.319273 1.140364-110.987636 10.658909-197.771636 96.395636-197.771636 200.261818a186.414545 186.414545 0 0 0 29.160727 99.560727c4.724364 7.517091 10.007273 14.661818 15.662546 21.480728l1.256727 1.559272a213.829818 213.829818 0 0 0 41.006546 37.236364c7.284364 5.050182 14.848 9.704727 22.714181 13.917091l0.768 0.418909a233.890909 233.890909 0 0 0 51.083637 19.618909c1.442909 0.372364 2.909091 0.698182 4.398545 1.047273 7.144727 1.675636 14.452364 3.002182 21.806546 4.049454 2.094545 0.279273 4.142545 0.628364 6.237091 0.861091a233.797818 233.797818 0 0 0 156.904727-37.073454 34.792727 34.792727 0 0 1 28.904727-4.491637l26.693818 7.610182-6.865454-23.994182a34.978909 34.978909 0 0 1 5.399272-30.208zM384 209.454545C236.427636 209.454545 116.363636 319.069091 116.363636 453.818182c0 48.523636 15.569455 95.441455 45.032728 135.633454 6.353455 8.704 8.354909 19.874909 5.399272 30.231273l-11.217454 39.284364 42.472727-12.125091c9.867636-2.839273 20.410182-1.163636 28.904727 4.491636 57.390545 38.144 129.140364 53.224727 198.4 43.450182a253.277091 253.277091 0 0 1-18.082909-93.277091c0-124.555636 90.647273-229.492364 213.573818-261.189818C575.255273 260.701091 484.887273 209.454545 384 209.454545z m-93.090909 186.181819a34.909091 34.909091 0 1 0-0.023273-69.841455A34.909091 34.909091 0 0 0 290.909091 395.636364m186.181818 0a34.909091 34.909091 0 1 0-0.023273-69.841455A34.909091 34.909091 0 0 0 477.090909 395.636364m128 116.363636a34.909091 34.909091 0 1 0 0.023273 69.841455A34.909091 34.909091 0 0 0 605.090909 512m186.181818 0a34.909091 34.909091 0 1 0 0.023273 69.841455A34.909091 34.909091 0 0 0 791.272727 512",
|
|
1151
|
+
fill: "#797979",
|
|
1152
|
+
"p-id": "1904"
|
|
1153
|
+
})], -1)]])])], 64)), o("div", ze, [n[10] ||= c(" 还没有账号?", -1), C(r).config.hideRegister === "0" ? (v(), a("button", {
|
|
1154
|
+
key: 0,
|
|
1155
|
+
type: "button",
|
|
1156
|
+
onClick: n[4] ||= (e) => T(C(X).REGISTER)
|
|
1157
|
+
}, " 立即注册 ")) : i("", !0)])])
|
|
1158
|
+
], 32));
|
|
1159
|
+
}
|
|
1160
|
+
}), $ = (e, t) => {
|
|
1161
|
+
let n = e.__vccOpts || e;
|
|
1162
|
+
for (let [e, r] of t) n[e] = r;
|
|
1163
|
+
return n;
|
|
1164
|
+
}, Ue = /* @__PURE__ */ $(He, [["__scopeId", "data-v-476a9185"]]), We = { class: "ag-bind-dialog__fullscreen" }, Ge = { class: "ag-bind-dialog__content" }, Ke = { class: "ag-bind-dialog__card" }, qe = /* @__PURE__ */ $(/* @__PURE__ */ u({
|
|
1165
|
+
__name: "bind-org-dialog",
|
|
1166
|
+
emits: ["confirm"],
|
|
1167
|
+
setup(e, { expose: n, emit: s }) {
|
|
1168
|
+
let c = s, u = b(!1);
|
|
1169
|
+
function d() {
|
|
1170
|
+
u.value = !0;
|
|
1171
|
+
}
|
|
1172
|
+
function f() {
|
|
1173
|
+
u.value = !1;
|
|
1174
|
+
}
|
|
1175
|
+
let p = b({
|
|
1176
|
+
orgName: "",
|
|
1177
|
+
name: "",
|
|
1178
|
+
code: ""
|
|
1179
|
+
}), m = b({
|
|
1180
|
+
orgName: "",
|
|
1181
|
+
name: "",
|
|
1182
|
+
code: ""
|
|
1183
|
+
});
|
|
1184
|
+
function h() {
|
|
1185
|
+
return m.value.orgName = p.value.orgName ? "" : "请输入学校", m.value.name = p.value.name ? "" : "请输入姓名", m.value.code = p.value.code ? "" : "请输入学号/工号", !m.value.orgName && !m.value.name && !m.value.code;
|
|
1186
|
+
}
|
|
1187
|
+
function g() {
|
|
1188
|
+
f();
|
|
1189
|
+
}
|
|
1190
|
+
function _() {
|
|
1191
|
+
h() && (g(), c("confirm", p.value));
|
|
1192
|
+
}
|
|
1193
|
+
return n({
|
|
1194
|
+
open: d,
|
|
1195
|
+
close: f
|
|
1196
|
+
}), (e, n) => (v(), r(t, { name: "ag-bind-dialog-fade" }, {
|
|
1197
|
+
default: E(() => [u.value ? (v(), a("div", {
|
|
1198
|
+
key: 0,
|
|
1199
|
+
class: "ag-bind-dialog",
|
|
1200
|
+
onClick: O(g, ["self"])
|
|
1201
|
+
}, [o("div", We, [o("div", Ge, [n[4] ||= o("div", { class: "ag-bind-dialog__header" }, [o("div", { class: "ag-bind-dialog__title" }, "验证身份信息"), o("div", { class: "ag-bind-dialog__subtitle" }, " 我们需要验证你的身份信息,以便为你提供更好的服务 ")], -1), o("div", Ke, [o("form", {
|
|
1202
|
+
class: "ag-bind-dialog__form",
|
|
1203
|
+
onSubmit: O(_, ["prevent"]),
|
|
1204
|
+
onKeydown: D(_, ["enter"])
|
|
1205
|
+
}, [
|
|
1206
|
+
l(Z, {
|
|
1207
|
+
modelValue: p.value.orgName,
|
|
1208
|
+
"onUpdate:modelValue": n[0] ||= (e) => p.value.orgName = e,
|
|
1209
|
+
placeholder: "请输入学校",
|
|
1210
|
+
class: "ag-bind-dialog__field",
|
|
1211
|
+
required: "",
|
|
1212
|
+
label: "学校"
|
|
1213
|
+
}, null, 8, ["modelValue"]),
|
|
1214
|
+
l(Z, {
|
|
1215
|
+
label: "姓名",
|
|
1216
|
+
class: "ag-bind-dialog__field",
|
|
1217
|
+
modelValue: p.value.name,
|
|
1218
|
+
"onUpdate:modelValue": n[1] ||= (e) => p.value.name = e,
|
|
1219
|
+
placeholder: "请输入姓名",
|
|
1220
|
+
required: ""
|
|
1221
|
+
}, null, 8, ["modelValue"]),
|
|
1222
|
+
l(Z, {
|
|
1223
|
+
modelValue: p.value.code,
|
|
1224
|
+
"onUpdate:modelValue": n[2] ||= (e) => p.value.code = e,
|
|
1225
|
+
placeholder: "请输入学号/工号",
|
|
1226
|
+
class: "ag-bind-dialog__field",
|
|
1227
|
+
label: "学号/工号",
|
|
1228
|
+
required: ""
|
|
1229
|
+
}, null, 8, ["modelValue"]),
|
|
1230
|
+
o("footer", { class: "ag-bind-dialog__footer" }, [o("button", {
|
|
1231
|
+
class: "ag-bind-dialog__button ag-bind-dialog__button--outline",
|
|
1232
|
+
type: "button",
|
|
1233
|
+
onClick: g
|
|
1234
|
+
}, " 返回 "), n[3] ||= o("button", {
|
|
1235
|
+
class: "ag-bind-dialog__button ag-bind-dialog__button--primary",
|
|
1236
|
+
type: "submit"
|
|
1237
|
+
}, " 验证 ", -1)])
|
|
1238
|
+
], 32)])])])])) : i("", !0)]),
|
|
1239
|
+
_: 1
|
|
1240
|
+
}));
|
|
1241
|
+
}
|
|
1242
|
+
}), [["__scopeId", "data-v-438cba37"]]), Je = {
|
|
1243
|
+
class: "ag-register__button ag-register__button--primary",
|
|
1244
|
+
type: "submit"
|
|
1245
|
+
}, Ye = /* @__PURE__ */ $(/* @__PURE__ */ u({
|
|
1246
|
+
__name: "register-form",
|
|
1247
|
+
props: { confirmText: {} },
|
|
1248
|
+
emits: ["back", "submit"],
|
|
1249
|
+
setup(e, { emit: t }) {
|
|
1250
|
+
let n = d("contextProps"), r = t, i = e, s = b({
|
|
1251
|
+
email: "",
|
|
1252
|
+
password: "",
|
|
1253
|
+
password2: ""
|
|
1254
|
+
});
|
|
1255
|
+
T(() => [s.value.password, s.value.password2], f, { deep: !0 });
|
|
1256
|
+
let c = b({
|
|
1257
|
+
email: "",
|
|
1258
|
+
password: "",
|
|
1259
|
+
password2: ""
|
|
1260
|
+
}), u = Ce();
|
|
1261
|
+
function f() {
|
|
1262
|
+
return c.value.email = "", c.value.password = "", c.value.password2 = "", s.value.email || (c.value.email = "请输入账号"), s.value.password ? n?.strictRegister && u(null, s.value.password, (e) => {
|
|
1263
|
+
e && (c.value.password = e.message);
|
|
1264
|
+
}) : c.value.password = "请输入密码", s.value.password2 ? s.value.password2 !== s.value.password && (c.value.password2 = "两次输入密码不一致") : c.value.password2 = "请再次输入密码", !c.value.email && !c.value.password && !c.value.password2;
|
|
1265
|
+
}
|
|
1266
|
+
function p() {
|
|
1267
|
+
f() && r("submit", ve(s.value));
|
|
1268
|
+
}
|
|
1269
|
+
return (e, t) => (v(), a("form", {
|
|
1270
|
+
class: "ag-register",
|
|
1271
|
+
onSubmit: O(p, ["prevent"]),
|
|
1272
|
+
onKeydown: D(p, ["enter"])
|
|
1273
|
+
}, [
|
|
1274
|
+
t[7] ||= o("div", { class: "ag-register__heading" }, "注册账号", -1),
|
|
1275
|
+
l(Z, {
|
|
1276
|
+
modelValue: s.value.email,
|
|
1277
|
+
"onUpdate:modelValue": t[0] ||= (e) => s.value.email = e,
|
|
1278
|
+
class: "ag-register__field",
|
|
1279
|
+
label: "账号/邮箱",
|
|
1280
|
+
placeholder: "请输入账号/邮箱",
|
|
1281
|
+
type: "text",
|
|
1282
|
+
required: ""
|
|
1283
|
+
}, {
|
|
1284
|
+
default: E(() => [...t[4] ||= [o("svg", {
|
|
1285
|
+
fill: "none",
|
|
1286
|
+
stroke: "currentColor",
|
|
1287
|
+
viewBox: "0 0 24 24",
|
|
1288
|
+
"stroke-width": "2"
|
|
1289
|
+
}, [o("path", {
|
|
1290
|
+
"stroke-linecap": "round",
|
|
1291
|
+
"stroke-linejoin": "round",
|
|
1292
|
+
d: "M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"
|
|
1293
|
+
})], -1)]]),
|
|
1294
|
+
_: 1
|
|
1295
|
+
}, 8, ["modelValue"]),
|
|
1296
|
+
l(Z, {
|
|
1297
|
+
modelValue: s.value.password,
|
|
1298
|
+
"onUpdate:modelValue": t[1] ||= (e) => s.value.password = e,
|
|
1299
|
+
class: "ag-register__field",
|
|
1300
|
+
placeholder: "请输入密码",
|
|
1301
|
+
type: "password",
|
|
1302
|
+
name: "password",
|
|
1303
|
+
label: "密码",
|
|
1304
|
+
autocomplete: "new-password",
|
|
1305
|
+
"show-password": "",
|
|
1306
|
+
required: ""
|
|
1307
|
+
}, {
|
|
1308
|
+
default: E(() => [...t[5] ||= [o("svg", {
|
|
1309
|
+
fill: "none",
|
|
1310
|
+
stroke: "currentColor",
|
|
1311
|
+
viewBox: "0 0 24 24",
|
|
1312
|
+
"stroke-width": "2"
|
|
1313
|
+
}, [o("path", {
|
|
1314
|
+
"stroke-linecap": "round",
|
|
1315
|
+
"stroke-linejoin": "round",
|
|
1316
|
+
d: "M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"
|
|
1317
|
+
})], -1)]]),
|
|
1318
|
+
_: 1
|
|
1319
|
+
}, 8, ["modelValue"]),
|
|
1320
|
+
l(Z, {
|
|
1321
|
+
modelValue: s.value.password2,
|
|
1322
|
+
"onUpdate:modelValue": t[2] ||= (e) => s.value.password2 = e,
|
|
1323
|
+
class: "ag-register__field",
|
|
1324
|
+
placeholder: "请再次输入密码",
|
|
1325
|
+
type: "password",
|
|
1326
|
+
name: "password",
|
|
1327
|
+
label: "再次输入密码",
|
|
1328
|
+
autocomplete: "new-password",
|
|
1329
|
+
"show-password": "",
|
|
1330
|
+
required: ""
|
|
1331
|
+
}, {
|
|
1332
|
+
default: E(() => [...t[6] ||= [o("svg", {
|
|
1333
|
+
fill: "none",
|
|
1334
|
+
stroke: "currentColor",
|
|
1335
|
+
viewBox: "0 0 24 24",
|
|
1336
|
+
"stroke-width": "2"
|
|
1337
|
+
}, [o("path", {
|
|
1338
|
+
"stroke-linecap": "round",
|
|
1339
|
+
"stroke-linejoin": "round",
|
|
1340
|
+
d: "M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"
|
|
1341
|
+
})], -1)]]),
|
|
1342
|
+
_: 1
|
|
1343
|
+
}, 8, ["modelValue"]),
|
|
1344
|
+
o("button", Je, S(i.confirmText || "注 册"), 1),
|
|
1345
|
+
o("button", {
|
|
1346
|
+
class: "ag-register__button ag-register__button--outline",
|
|
1347
|
+
type: "button",
|
|
1348
|
+
onClick: t[3] ||= (e) => r("back")
|
|
1349
|
+
}, " 返 回 ")
|
|
1350
|
+
], 32));
|
|
1351
|
+
}
|
|
1352
|
+
}), [["__scopeId", "data-v-7980b268"]]), Xe = { class: "ag-wechat-bind" }, Ze = { class: "ag-wechat-bind__profile" }, Qe = ["src"], $e = {
|
|
1353
|
+
key: 1,
|
|
1354
|
+
class: "ag-wechat-bind__avatar ag-wechat-bind__avatar--placeholder"
|
|
1355
|
+
}, et = { class: "ag-wechat-bind__nickname" }, tt = /* @__PURE__ */ $(/* @__PURE__ */ u({
|
|
1356
|
+
__name: "wechat-form",
|
|
1357
|
+
props: { info: {} },
|
|
1358
|
+
emits: ["back"],
|
|
1359
|
+
setup(e, { emit: n }) {
|
|
1360
|
+
let s = d("_login"), c = d("_register"), u = e, f = n, p = b(X.LOGIN);
|
|
1361
|
+
function m(e) {
|
|
1362
|
+
p.value = e;
|
|
1363
|
+
}
|
|
1364
|
+
function h(e) {
|
|
1365
|
+
s({
|
|
1366
|
+
...e,
|
|
1367
|
+
weChatOpenId: u.info.openid
|
|
1368
|
+
}, "normal");
|
|
1369
|
+
}
|
|
1370
|
+
function g(e) {
|
|
1371
|
+
c({
|
|
1372
|
+
...e,
|
|
1373
|
+
weChatOpenId: u.info.openid
|
|
1374
|
+
});
|
|
1375
|
+
}
|
|
1376
|
+
return (e, n) => (v(), a("div", Xe, [
|
|
1377
|
+
o("button", {
|
|
1378
|
+
class: "ag-wechat-bind__back",
|
|
1379
|
+
type: "button",
|
|
1380
|
+
onClick: n[0] ||= (e) => f("back")
|
|
1381
|
+
}, "返 回"),
|
|
1382
|
+
o("div", Ze, [
|
|
1383
|
+
u.info?.headimgurl ? (v(), a("img", {
|
|
1384
|
+
key: 0,
|
|
1385
|
+
src: u.info?.headimgurl,
|
|
1386
|
+
class: "ag-wechat-bind__avatar"
|
|
1387
|
+
}, null, 8, Qe)) : (v(), a("div", $e)),
|
|
1388
|
+
o("div", et, S(u.info?.nickname), 1),
|
|
1389
|
+
n[2] ||= o("div", { class: "ag-wechat-bind__tips" }, [o("div", null, "已有账号?输入账号信息登录立即绑定"), o("div", { class: "ag-wechat-bind__tips-highlight" }, "如没有账号,注册后登录即绑定")], -1)
|
|
1390
|
+
]),
|
|
1391
|
+
l(t, {
|
|
1392
|
+
name: "ag-gateway-zoom",
|
|
1393
|
+
mode: "out-in"
|
|
1394
|
+
}, {
|
|
1395
|
+
default: E(() => [p.value === C(X).LOGIN ? (v(), r(Ue, {
|
|
1396
|
+
key: 0,
|
|
1397
|
+
class: "ag-wechat-bind__side-panel",
|
|
1398
|
+
hideLoginMethods: "",
|
|
1399
|
+
confirmText: "登录并绑定",
|
|
1400
|
+
onToggle: m,
|
|
1401
|
+
onSubmit: h
|
|
1402
|
+
})) : p.value === C(X).REGISTER ? (v(), r(Ye, {
|
|
1403
|
+
key: 1,
|
|
1404
|
+
class: "ag-wechat-bind__side-panel",
|
|
1405
|
+
confirmText: "注册并绑定",
|
|
1406
|
+
onBack: n[1] ||= (e) => m(C(X).LOGIN),
|
|
1407
|
+
onSubmit: g
|
|
1408
|
+
})) : i("", !0)]),
|
|
1409
|
+
_: 1
|
|
1410
|
+
})
|
|
1411
|
+
]));
|
|
1412
|
+
}
|
|
1413
|
+
}), [["__scopeId", "data-v-04a770c9"]]), nt = { class: "ag-wechat-scan" }, rt = "wx-login-iframe", it = /* @__PURE__ */ $(/* @__PURE__ */ u({
|
|
1414
|
+
__name: "wechat-scan-view",
|
|
1415
|
+
emits: ["back", "submit"],
|
|
1416
|
+
setup(e, { emit: t }) {
|
|
1417
|
+
let n = d("contextProps"), r = t;
|
|
1418
|
+
function i() {
|
|
1419
|
+
let e = document.createElement("script");
|
|
1420
|
+
e.type = "text/javascript", e.src = "https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js";
|
|
1421
|
+
let t = document.body.appendChild(e);
|
|
1422
|
+
t.onload = () => {
|
|
1423
|
+
let e = {
|
|
1424
|
+
self_redirect: !0,
|
|
1425
|
+
id: rt,
|
|
1426
|
+
appid: n?.wechatConfig?.appId,
|
|
1427
|
+
scope: "snsapi_login",
|
|
1428
|
+
redirect_uri: encodeURIComponent(`${n?.wechatConfig?.redirectUrl}`),
|
|
1429
|
+
state: "jcjy-common-login-by-wx",
|
|
1430
|
+
stylelite: 1,
|
|
1431
|
+
fast_login: 0
|
|
1432
|
+
};
|
|
1433
|
+
new window.WxLogin(e), window.addEventListener("message", s);
|
|
1434
|
+
};
|
|
1435
|
+
}
|
|
1436
|
+
function s(e) {
|
|
1437
|
+
e.data.type === "router_data" && (r("submit", { weChatCode: e.data.data.query?.code }), window.removeEventListener("message", s));
|
|
1438
|
+
}
|
|
1439
|
+
return _(() => {
|
|
1440
|
+
window.removeEventListener("message", s);
|
|
1441
|
+
}), i(), (e, t) => (v(), a("div", nt, [
|
|
1442
|
+
o("div", {
|
|
1443
|
+
id: rt,
|
|
1444
|
+
class: "ag-wechat-scan__qr"
|
|
1445
|
+
}),
|
|
1446
|
+
t[1] ||= o("b", { class: "ag-wechat-scan__title" }, "请使用微信扫码登录", -1),
|
|
1447
|
+
o("button", {
|
|
1448
|
+
class: "ag-wechat-scan__back",
|
|
1449
|
+
type: "button",
|
|
1450
|
+
onClick: t[0] ||= (e) => r("back")
|
|
1451
|
+
}, "返 回")
|
|
1452
|
+
]));
|
|
1453
|
+
}
|
|
1454
|
+
}), [["__scopeId", "data-v-428e3da8"]]), at = { class: "ag-gateway-header" }, ot = { class: "ag-gateway-header-left" }, st = ["src"], ct = { class: "ag-gateway-header-right" }, lt = ["href"], ut = {
|
|
1455
|
+
key: 0,
|
|
1456
|
+
class: "ag-gateway__card-shell"
|
|
1457
|
+
}, dt = {
|
|
1458
|
+
key: 0,
|
|
1459
|
+
class: "ag-gateway__loading"
|
|
1460
|
+
}, ft = {
|
|
1461
|
+
key: 0,
|
|
1462
|
+
class: "ag-gateway__card ag-gateway__card--auth"
|
|
1463
|
+
}, pt = {
|
|
1464
|
+
key: 1,
|
|
1465
|
+
class: "ag-gateway__card ag-gateway__card--auth"
|
|
1466
|
+
}, mt = ["innerHTML"], ht = /* @__PURE__ */ u({
|
|
1467
|
+
__name: "index",
|
|
1468
|
+
props: {
|
|
1469
|
+
config: {},
|
|
1470
|
+
strictRegister: {
|
|
1471
|
+
type: Boolean,
|
|
1472
|
+
default: !1
|
|
1473
|
+
},
|
|
1474
|
+
binding: {},
|
|
1475
|
+
register: {},
|
|
1476
|
+
login: {},
|
|
1477
|
+
wechatConfig: {}
|
|
1478
|
+
},
|
|
1479
|
+
emits: ["success"],
|
|
1480
|
+
setup(s, { emit: c }) {
|
|
1481
|
+
let u = c, d = s, f = n(() => ({
|
|
1482
|
+
...Te,
|
|
1483
|
+
...d.config
|
|
1484
|
+
})), _ = b(), x = b(X.LOGIN), w = b(!1), T = n(() => {
|
|
1485
|
+
let { loginBackground: e } = f.value;
|
|
1486
|
+
return `ag-gateway--${e ? f.value.layout || "default" : "jcjy"}`;
|
|
1487
|
+
}), te = n(() => {
|
|
1488
|
+
let { nb: e } = f.value;
|
|
1489
|
+
return +(e || 0) != 1;
|
|
1490
|
+
}), D = n(() => {
|
|
1491
|
+
let { loginBackground: e } = f.value;
|
|
1492
|
+
return te.value && e ? { background: `url('${e}') no-repeat center/100% 100%` } : {};
|
|
1493
|
+
}), O = n(() => f.value.skipBind === "0"), ne = n(() => !!f.value.hideWx);
|
|
1494
|
+
async function k() {
|
|
1495
|
+
try {
|
|
1496
|
+
let { loginBackground: e, favicon: t, title: n } = f.value;
|
|
1497
|
+
ye(n, t), e ? await J(e) : Y([
|
|
1498
|
+
252,
|
|
1499
|
+
91,
|
|
1500
|
+
4
|
|
1501
|
+
]), await p();
|
|
1502
|
+
} finally {
|
|
1503
|
+
w.value = !0;
|
|
1504
|
+
}
|
|
1505
|
+
}
|
|
1506
|
+
let re = n(() => +(f.value.hf || 0) == 1 ? "" : f.value.cf);
|
|
1507
|
+
function A(e) {
|
|
1508
|
+
x.value = e;
|
|
1509
|
+
}
|
|
1510
|
+
let j = b(), M = b(), N = b(!1), P = b({
|
|
1511
|
+
visible: !1,
|
|
1512
|
+
message: "",
|
|
1513
|
+
type: "success"
|
|
1514
|
+
}), F = null;
|
|
1515
|
+
function I(e, t = "success") {
|
|
1516
|
+
F && clearTimeout(F), P.value = {
|
|
1517
|
+
visible: !0,
|
|
1518
|
+
message: e,
|
|
1519
|
+
type: t
|
|
1520
|
+
}, F = setTimeout(() => {
|
|
1521
|
+
P.value.visible = !1;
|
|
1522
|
+
}, 2500);
|
|
1523
|
+
}
|
|
1524
|
+
async function ie(e) {
|
|
1525
|
+
N.value = !0;
|
|
1526
|
+
try {
|
|
1527
|
+
await d.binding(e, { token: j.value.token }), I("验证成功!", "success"), u("success", j.value);
|
|
1528
|
+
} finally {
|
|
1529
|
+
N.value = !1;
|
|
1530
|
+
}
|
|
1531
|
+
}
|
|
1532
|
+
async function L(e) {
|
|
1533
|
+
try {
|
|
1534
|
+
N.value = !0, j.value = await d.register(e), O.value ? (I("注册成功!请验证身份信息", "success"), A(X.LOGIN), _.value.open()) : (I("注册成功!", "success"), u("success", j.value));
|
|
1535
|
+
} finally {
|
|
1536
|
+
N.value = !1;
|
|
1537
|
+
}
|
|
1538
|
+
}
|
|
1539
|
+
async function R(e, t) {
|
|
1540
|
+
try {
|
|
1541
|
+
N.value = !0;
|
|
1542
|
+
let n = await d.login(e);
|
|
1543
|
+
if (t === "wechat" && n.err === 4004) {
|
|
1544
|
+
I(n.msg, "error"), M.value = n.weChatUserDetail, x.value = X.WECHAT;
|
|
1545
|
+
return;
|
|
1546
|
+
}
|
|
1547
|
+
j.value = n, !n.type && O.value ? (I("登录成功!请验证身份信息", "success"), _.value.open()) : u("success", j.value);
|
|
1548
|
+
} finally {
|
|
1549
|
+
N.value = !1;
|
|
1550
|
+
}
|
|
1551
|
+
}
|
|
1552
|
+
function z() {
|
|
1553
|
+
M.value = null, A(X.LOGIN);
|
|
1554
|
+
}
|
|
1555
|
+
return g(k), y("contextProps", {
|
|
1556
|
+
...d,
|
|
1557
|
+
config: f.value
|
|
1558
|
+
}), y("_login", R), y("_register", L), (n, s) => (v(), a("div", {
|
|
1559
|
+
class: m(["ag-gateway", T.value]),
|
|
1560
|
+
style: h(D.value)
|
|
1561
|
+
}, [
|
|
1562
|
+
o("header", at, [o("div", ot, [f.value.favicon ? (v(), a("img", {
|
|
1563
|
+
key: 0,
|
|
1564
|
+
src: f.value.favicon
|
|
1565
|
+
}, null, 8, st)) : i("", !0), o("div", null, S(f.value.title), 1)]), o("nav", ct, [(v(!0), a(e, null, ee(f.value.links, (e) => (v(), a("a", {
|
|
1566
|
+
href: e.url,
|
|
1567
|
+
target: "__blank"
|
|
1568
|
+
}, S(e.name), 9, lt))), 256))])]),
|
|
1569
|
+
s[5] ||= o("div", { class: "ag-gateway-slogan" }, [
|
|
1570
|
+
o("div", { class: "ag-gateway-slogan__title" }, "数智赋能"),
|
|
1571
|
+
o("div", { class: "ag-gateway-slogan__title" }, "领航未来"),
|
|
1572
|
+
o("div", { class: "ag-gateway-slogan__footer" }, "晶程同行")
|
|
1573
|
+
], -1),
|
|
1574
|
+
w.value ? (v(), a("div", ut, [N.value ? (v(), a("div", dt, [...s[4] ||= [o("div", { class: "ag-gateway__loading-spinner" }, null, -1), o("span", null, "请稍候...", -1)]])) : i("", !0), l(t, {
|
|
1575
|
+
name: "ag-gateway-zoom",
|
|
1576
|
+
mode: "out-in"
|
|
1577
|
+
}, {
|
|
1578
|
+
default: E(() => [x.value === C(X).LOGIN ? (v(), a("div", ft, [l(Ue, {
|
|
1579
|
+
key: "login",
|
|
1580
|
+
"hide-login-methods": ne.value,
|
|
1581
|
+
onToggle: A,
|
|
1582
|
+
onSubmit: s[0] ||= (e) => R(e, "normal")
|
|
1583
|
+
}, null, 8, ["hide-login-methods"])])) : x.value === C(X).REGISTER ? (v(), a("div", pt, [l(Ye, {
|
|
1584
|
+
onBack: s[1] ||= (e) => A(C(X).LOGIN),
|
|
1585
|
+
onSubmit: L
|
|
1586
|
+
})])) : x.value === C(X).WECHAT_SCAN ? (v(), r(it, {
|
|
1587
|
+
key: 2,
|
|
1588
|
+
onBack: s[2] ||= (e) => A(C(X).LOGIN),
|
|
1589
|
+
onSubmit: s[3] ||= (e) => R(e, "wechat")
|
|
1590
|
+
})) : x.value === C(X).WECHAT ? (v(), r(tt, {
|
|
1591
|
+
key: 3,
|
|
1592
|
+
info: M.value,
|
|
1593
|
+
class: "ag-gateway__wechat-panel",
|
|
1594
|
+
onBack: z
|
|
1595
|
+
}, null, 8, ["info"])) : i("", !0)]),
|
|
1596
|
+
_: 1
|
|
1597
|
+
})])) : i("", !0),
|
|
1598
|
+
o("footer", {
|
|
1599
|
+
class: "ag-gateway__footer",
|
|
1600
|
+
innerHTML: re.value
|
|
1601
|
+
}, null, 8, mt),
|
|
1602
|
+
l(qe, {
|
|
1603
|
+
ref_key: "bindOrgDialogRef",
|
|
1604
|
+
ref: _,
|
|
1605
|
+
onConfirm: ie
|
|
1606
|
+
}, null, 512),
|
|
1607
|
+
l(t, { name: "ag-gateway-toast" }, {
|
|
1608
|
+
default: E(() => [P.value.visible ? (v(), a("div", {
|
|
1609
|
+
key: 0,
|
|
1610
|
+
class: m(["ag-gateway__toast", `ag-gateway__toast--${P.value.type}`])
|
|
1611
|
+
}, S(P.value.message), 3)) : i("", !0)]),
|
|
1612
|
+
_: 1
|
|
1613
|
+
})
|
|
1614
|
+
], 6));
|
|
1615
|
+
}
|
|
1616
|
+
}), gt = {
|
|
1617
|
+
setTheme: Y,
|
|
1618
|
+
setThemeByUrl: J
|
|
1619
|
+
}, _t = { install(e) {
|
|
1620
|
+
e.component("AuthGateway", ht);
|
|
1621
|
+
} };
|
|
1622
|
+
//#endregion
|
|
1623
|
+
export { ht as AuthGateway, _t as default, gt as theme };
|