bry-biometric-collector 2.2.1 → 2.2.3-RC01
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 +4 -1
- package/dist/CameraBtn_a4ff405d_2.2.3-RC01.js +633 -0
- package/dist/DocumentCollector_a6e1a193_2.2.3-RC01.js +1296 -0
- package/dist/FaceCollector_fea7e63e_2.2.3-RC01.js +2040 -0
- package/dist/bry-biometric-collector-main.js +2 -1
- package/dist/{en-us_35a3a8da_2.2.1.js → en-us_55a6748c_2.2.3-RC01.js} +27 -18
- package/dist/face_api_0e3ce8c8_2.2.3-RC01.js +36289 -0
- package/dist/fingersApi_f71ec157_2.2.3-RC01.js +147 -0
- package/dist/index-no-detector_acb82d83_2.2.3-RC01.js +10396 -0
- package/dist/index.js +2 -1
- package/dist/main_be9d4a67_2.2.3-RC01.js +25479 -0
- package/dist/{pt-br_1a694022_2.2.1.js → pt-br_083e1c6a_2.2.3-RC01.js} +16 -7
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/dist/CameraBtn_ea347e01_2.2.1.js +0 -506
- package/dist/DocumentCollector_0785fdfe_2.2.1.js +0 -1053
- package/dist/FaceCollector_cb1adcc0_2.2.1.js +0 -1702
- package/dist/face_api_0e3ce8c8_2.2.1.js +0 -36288
- package/dist/fingersApi_13cd25ba_2.2.1.js +0 -146
- package/dist/index-no-detector_acb82d83_2.2.1.js +0 -10395
- package/dist/main_452d4a3b_2.2.1.js +0 -23663
@@ -0,0 +1,2040 @@
|
|
1
|
+
import { S as Zn, r as xn, t as xi, w as $n, x as B, y as Re, z as oe, C as $i, B as U, D as F, E as mt, G as D, H as qe, I as et, J as Fe, K as Zt, L as Ne, M as bt, _ as Dt, N as xt, O as $t, P as Be, Q as He, R as pe, T as ht, U as _t, V as Se, W as ei, X as ti, Y as tt, Z as gt, $ as ii, a0 as ni, a1 as it, a2 as Lt, a3 as At, a4 as Nt, a5 as Bt, a6 as oi, a7 as ai, a8 as si, a9 as eo, aa as Bi, ab as Mi, ac as Wi, ad as _, ae as pt, af as Ui, ag as vt, ah as se, ai as wt, aj as kt, A as li, ak as Mt, al as Ct, am as Vi, an as yt, ao as ci, ap as Ki, f as Et, aq as Wt, ar as ji, as as Ut, at as qi, au as Hi, av as ze, aw as zi, ax as ri, l as Rt, ay as ui, az as to, aA as io, aB as en, aC as tn, aD as nn, aE as Xi, aF as Qi, aG as Ji, aH as ki, aI as no, aJ as p, aK as K, aL as Vt, aM as de, aN as d, aO as v, aP as u, aQ as Kt, aR as Xe, aS as on, aT as De, aU as an, aV as Le, aW as W, aX as jt, aY as nt, aZ as fi, a_ as ve, a$ as zt, b0 as N, b1 as z, b2 as qt, b3 as Gi, b4 as Yi, b5 as Ht, b6 as oo } from "./main_be9d4a67_2.2.3-RC01.js";
|
2
|
+
import { C as te, a as sn, c as fe, b as ln } from "./CameraBtn_a4ff405d_2.2.3-RC01.js";
|
3
|
+
const { console: Ie } = no, w = "src/lib/faceTab/FaceCollector.svelte";
|
4
|
+
function Zi(n, e, i) {
|
5
|
+
const o = n.slice();
|
6
|
+
return o[107] = e[i], o;
|
7
|
+
}
|
8
|
+
function cn(n) {
|
9
|
+
let e;
|
10
|
+
const i = {
|
11
|
+
c: function() {
|
12
|
+
e = p("idlive-face-capture"), e.hidden = !0, fi(e, "mask_hidden", ""), fi(e, "auto_capture_disabled", ""), fi(e, "auto_close_disabled", ""), v(e, w, 783, 10, 31732);
|
13
|
+
},
|
14
|
+
m: function(s, a) {
|
15
|
+
B(s, e, a), n[45](e);
|
16
|
+
},
|
17
|
+
p: de,
|
18
|
+
d: function(s) {
|
19
|
+
s && W(e), n[45](null);
|
20
|
+
}
|
21
|
+
};
|
22
|
+
return U("SvelteRegisterBlock", {
|
23
|
+
block: i,
|
24
|
+
id: cn.name,
|
25
|
+
type: "if",
|
26
|
+
source: "(783:8) {#if isLivenessEnabled()}",
|
27
|
+
ctx: n
|
28
|
+
}), i;
|
29
|
+
}
|
30
|
+
function mi(n) {
|
31
|
+
let e, i, o;
|
32
|
+
const s = {
|
33
|
+
c: function() {
|
34
|
+
e = p("video"), d(e, "id", "bry-cc-camera-video-tag"), d(e, "class", "absolute -z-10"), e.playsInline = !0, e.muted = !0, e.autoplay = !0, v(e, w, 793, 10, 32073);
|
35
|
+
},
|
36
|
+
m: function(l, c) {
|
37
|
+
B(l, e, c), n[46](e), i || (o = [
|
38
|
+
ve(
|
39
|
+
e,
|
40
|
+
"canplay",
|
41
|
+
/*canplay_handler*/
|
42
|
+
n[47],
|
43
|
+
!1,
|
44
|
+
!1,
|
45
|
+
!1,
|
46
|
+
!1
|
47
|
+
),
|
48
|
+
ve(
|
49
|
+
e,
|
50
|
+
"play",
|
51
|
+
/*play*/
|
52
|
+
n[3],
|
53
|
+
{ once: !0 },
|
54
|
+
!1,
|
55
|
+
!1,
|
56
|
+
!1
|
57
|
+
)
|
58
|
+
], i = !0);
|
59
|
+
},
|
60
|
+
p: de,
|
61
|
+
d: function(l) {
|
62
|
+
l && W(e), n[46](null), i = !1, zt(o);
|
63
|
+
}
|
64
|
+
};
|
65
|
+
return U("SvelteRegisterBlock", {
|
66
|
+
block: s,
|
67
|
+
id: mi.name,
|
68
|
+
type: "key",
|
69
|
+
source: "(793:8) {#key unique}",
|
70
|
+
ctx: n
|
71
|
+
}), s;
|
72
|
+
}
|
73
|
+
function bi(n) {
|
74
|
+
let e, i = (
|
75
|
+
/*$_*/
|
76
|
+
n[28]("faceCollector.stayStill") + ""
|
77
|
+
), o;
|
78
|
+
const s = {
|
79
|
+
c: function() {
|
80
|
+
e = p("span"), o = N(i), d(e, "class", "absolute left-1/2 -translate-x-1/2 top-[5%] ce-dui-badge ce-dui-badge-lg h-[2em] text-base base:text-base w-[12.1em]"), v(e, w, 821, 10, 33206);
|
81
|
+
},
|
82
|
+
m: function(l, c) {
|
83
|
+
B(l, e, c), u(e, o);
|
84
|
+
},
|
85
|
+
p: function(l, c) {
|
86
|
+
c[0] & /*$_*/
|
87
|
+
268435456 && i !== (i = /*$_*/
|
88
|
+
l[28]("faceCollector.stayStill") + "") && z(o, i);
|
89
|
+
},
|
90
|
+
d: function(l) {
|
91
|
+
l && W(e);
|
92
|
+
}
|
93
|
+
};
|
94
|
+
return U("SvelteRegisterBlock", {
|
95
|
+
block: s,
|
96
|
+
id: bi.name,
|
97
|
+
type: "if",
|
98
|
+
source: "(821:8) {#if isCountingDown}",
|
99
|
+
ctx: n
|
100
|
+
}), s;
|
101
|
+
}
|
102
|
+
function hi(n) {
|
103
|
+
let e, i = (
|
104
|
+
/*$_*/
|
105
|
+
n[28](`${/*faceValidationAlert*/
|
106
|
+
n[16]}`) + ""
|
107
|
+
), o;
|
108
|
+
const s = {
|
109
|
+
c: function() {
|
110
|
+
e = p("span"), o = N(i), d(e, "class", "absolute left-1/2 -translate-x-1/2 top-[5%] ce-dui-badge ce-dui-badge-lg h-[2em] text-base base:text-base w-[12.1em]"), v(e, w, 827, 10, 33518);
|
111
|
+
},
|
112
|
+
m: function(l, c) {
|
113
|
+
B(l, e, c), u(e, o);
|
114
|
+
},
|
115
|
+
p: function(l, c) {
|
116
|
+
c[0] & /*$_, faceValidationAlert*/
|
117
|
+
268500992 && i !== (i = /*$_*/
|
118
|
+
l[28](`${/*faceValidationAlert*/
|
119
|
+
l[16]}`) + "") && z(o, i);
|
120
|
+
},
|
121
|
+
d: function(l) {
|
122
|
+
l && W(e);
|
123
|
+
}
|
124
|
+
};
|
125
|
+
return U("SvelteRegisterBlock", {
|
126
|
+
block: s,
|
127
|
+
id: hi.name,
|
128
|
+
type: "if",
|
129
|
+
source: "(827:8) {#if $enableFaceApi && !isCountingDown && $faceFound && faceNotValidated}",
|
130
|
+
ctx: n
|
131
|
+
}), s;
|
132
|
+
}
|
133
|
+
function _i(n) {
|
134
|
+
let e, i, o, s, a;
|
135
|
+
function l(m, f) {
|
136
|
+
return (
|
137
|
+
/*$isLoading*/
|
138
|
+
m[30] ? un : rn
|
139
|
+
);
|
140
|
+
}
|
141
|
+
let c = l(n), r = c(n);
|
142
|
+
const b = {
|
143
|
+
c: function() {
|
144
|
+
e = p("slot"), i = p("div"), o = p("img"), a = K(), r.c(), qt(o.src, s = ki) || d(o, "src", s), d(o, "alt", "loading gif"), d(o, "class", "m-auto h-[10em] lg:h-[12em]"), v(o, w, 836, 12, 33991), d(i, "class", "translate-y-1/3 md:translate-y-1/4 xl:translate-y-1/2"), v(i, w, 835, 10, 33911), d(e, "name", "obtaining-photo-gif"), d(e, "class", "block h-[17em] lg:h-[21.6em] xl:h-[30em]"), v(e, w, 834, 8, 33818);
|
145
|
+
},
|
146
|
+
m: function(f, R) {
|
147
|
+
B(f, e, R), u(e, i), u(i, o), u(i, a), r.m(i, null);
|
148
|
+
},
|
149
|
+
p: function(f, R) {
|
150
|
+
c === (c = l(f)) && r ? r.p(f, R) : (r.d(1), r = c(f), r && (r.c(), r.m(i, null)));
|
151
|
+
},
|
152
|
+
d: function(f) {
|
153
|
+
f && W(e), r.d();
|
154
|
+
}
|
155
|
+
};
|
156
|
+
return U("SvelteRegisterBlock", {
|
157
|
+
block: b,
|
158
|
+
id: _i.name,
|
159
|
+
type: "if",
|
160
|
+
source: "(834:6) {#if isLivenessEnabled() && waitingIdrndCaptureEvent}",
|
161
|
+
ctx: n
|
162
|
+
}), b;
|
163
|
+
}
|
164
|
+
function rn(n) {
|
165
|
+
let e, i = (
|
166
|
+
/*$_*/
|
167
|
+
n[28]("faceCollector.obtainingPicture") + ""
|
168
|
+
), o;
|
169
|
+
const s = {
|
170
|
+
c: function() {
|
171
|
+
e = p("span"), o = N(i), d(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 840, 14, 34249);
|
172
|
+
},
|
173
|
+
m: function(l, c) {
|
174
|
+
B(l, e, c), u(e, o);
|
175
|
+
},
|
176
|
+
p: function(l, c) {
|
177
|
+
c[0] & /*$_*/
|
178
|
+
268435456 && i !== (i = /*$_*/
|
179
|
+
l[28]("faceCollector.obtainingPicture") + "") && z(o, i);
|
180
|
+
},
|
181
|
+
d: function(l) {
|
182
|
+
l && W(e);
|
183
|
+
}
|
184
|
+
};
|
185
|
+
return U("SvelteRegisterBlock", {
|
186
|
+
block: s,
|
187
|
+
id: rn.name,
|
188
|
+
type: "else",
|
189
|
+
source: "(840:12) {:else}",
|
190
|
+
ctx: n
|
191
|
+
}), s;
|
192
|
+
}
|
193
|
+
function un(n) {
|
194
|
+
let e;
|
195
|
+
const i = {
|
196
|
+
c: function() {
|
197
|
+
e = p("span"), e.textContent = "Obtaining photo...", d(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 838, 14, 34113);
|
198
|
+
},
|
199
|
+
m: function(s, a) {
|
200
|
+
B(s, e, a);
|
201
|
+
},
|
202
|
+
p: de,
|
203
|
+
d: function(s) {
|
204
|
+
s && W(e);
|
205
|
+
}
|
206
|
+
};
|
207
|
+
return U("SvelteRegisterBlock", {
|
208
|
+
block: i,
|
209
|
+
id: un.name,
|
210
|
+
type: "if",
|
211
|
+
source: "(838:12) {#if $isLoading}",
|
212
|
+
ctx: n
|
213
|
+
}), i;
|
214
|
+
}
|
215
|
+
function gi(n) {
|
216
|
+
let e, i, o, s, a;
|
217
|
+
function l(m, f) {
|
218
|
+
return (
|
219
|
+
/*$isLoading*/
|
220
|
+
m[30] ? dn : fn
|
221
|
+
);
|
222
|
+
}
|
223
|
+
let c = l(n), r = c(n);
|
224
|
+
const b = {
|
225
|
+
c: function() {
|
226
|
+
e = p("slot"), i = p("div"), o = p("img"), a = K(), r.c(), qt(o.src, s = ki) || d(o, "src", s), d(o, "alt", "loading gif"), d(o, "class", "m-auto h-[10em] lg:h-[12em]"), v(o, w, 850, 12, 34740), d(i, "class", "translate-y-1/3 md:translate-y-1/4 xl:translate-y-1/2"), v(i, w, 849, 10, 34660), d(e, "name", "loading-camera-gif"), d(e, "class", "block h-[17em] lg:h-[21.6em] xl:h-[30em]"), v(e, w, 848, 8, 34568);
|
227
|
+
},
|
228
|
+
m: function(f, R) {
|
229
|
+
B(f, e, R), u(e, i), u(i, o), u(i, a), r.m(i, null);
|
230
|
+
},
|
231
|
+
p: function(f, R) {
|
232
|
+
c === (c = l(f)) && r ? r.p(f, R) : (r.d(1), r = c(f), r && (r.c(), r.m(i, null)));
|
233
|
+
},
|
234
|
+
d: function(f) {
|
235
|
+
f && W(e), r.d();
|
236
|
+
}
|
237
|
+
};
|
238
|
+
return U("SvelteRegisterBlock", {
|
239
|
+
block: b,
|
240
|
+
id: gi.name,
|
241
|
+
type: "if",
|
242
|
+
source: "(848:6) {#if isLivenessEnabled() && idrndLoading && $cameraStatusStore === CameraStatusEnum.OK}",
|
243
|
+
ctx: n
|
244
|
+
}), b;
|
245
|
+
}
|
246
|
+
function fn(n) {
|
247
|
+
let e, i = (
|
248
|
+
/*$_*/
|
249
|
+
n[28]("faceCollector.initiatingCamera") + ""
|
250
|
+
), o;
|
251
|
+
const s = {
|
252
|
+
c: function() {
|
253
|
+
e = p("span"), o = N(i), d(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 854, 14, 34997);
|
254
|
+
},
|
255
|
+
m: function(l, c) {
|
256
|
+
B(l, e, c), u(e, o);
|
257
|
+
},
|
258
|
+
p: function(l, c) {
|
259
|
+
c[0] & /*$_*/
|
260
|
+
268435456 && i !== (i = /*$_*/
|
261
|
+
l[28]("faceCollector.initiatingCamera") + "") && z(o, i);
|
262
|
+
},
|
263
|
+
d: function(l) {
|
264
|
+
l && W(e);
|
265
|
+
}
|
266
|
+
};
|
267
|
+
return U("SvelteRegisterBlock", {
|
268
|
+
block: s,
|
269
|
+
id: fn.name,
|
270
|
+
type: "else",
|
271
|
+
source: "(854:12) {:else}",
|
272
|
+
ctx: n
|
273
|
+
}), s;
|
274
|
+
}
|
275
|
+
function dn(n) {
|
276
|
+
let e;
|
277
|
+
const i = {
|
278
|
+
c: function() {
|
279
|
+
e = p("span"), e.textContent = "Loading camera...", d(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 852, 14, 34862);
|
280
|
+
},
|
281
|
+
m: function(s, a) {
|
282
|
+
B(s, e, a);
|
283
|
+
},
|
284
|
+
p: de,
|
285
|
+
d: function(s) {
|
286
|
+
s && W(e);
|
287
|
+
}
|
288
|
+
};
|
289
|
+
return U("SvelteRegisterBlock", {
|
290
|
+
block: i,
|
291
|
+
id: dn.name,
|
292
|
+
type: "if",
|
293
|
+
source: "(852:12) {#if $isLoading}",
|
294
|
+
ctx: n
|
295
|
+
}), i;
|
296
|
+
}
|
297
|
+
function mn(n) {
|
298
|
+
let e, i, o = (
|
299
|
+
/*$_*/
|
300
|
+
n[28]("faceCollector.finish") + ""
|
301
|
+
), s, a, l, c, r = (
|
302
|
+
/*$_*/
|
303
|
+
n[28]("faceCollector.retakePhoto") + ""
|
304
|
+
), b, m, f;
|
305
|
+
const R = {
|
306
|
+
c: function() {
|
307
|
+
e = p("div"), i = p("button"), s = N(o), l = K(), c = p("button"), b = N(r), i.disabled = a = /*$justification*/
|
308
|
+
n[23].length === 0, d(i, "class", "ce-dui-btn ce-dui-btn-primary ce-dui-btn-block flex-shrink"), v(i, w, 881, 12, 35959), d(c, "id", "bry-cc-retake-button"), d(c, "class", "ce-dui-btn ce-dui-btn-block ce-dui-btn-outline flex-shrink"), v(c, w, 886, 12, 36202), d(e, "class", "ce-dui-btn-group flex"), v(e, w, 880, 10, 35911);
|
309
|
+
},
|
310
|
+
m: function(C, h) {
|
311
|
+
B(C, e, h), u(e, i), u(i, s), u(e, l), u(e, c), u(c, b), m || (f = [
|
312
|
+
ve(
|
313
|
+
i,
|
314
|
+
"click",
|
315
|
+
/*click_handler_1*/
|
316
|
+
n[52],
|
317
|
+
!1,
|
318
|
+
!1,
|
319
|
+
!1,
|
320
|
+
!1
|
321
|
+
),
|
322
|
+
ve(
|
323
|
+
c,
|
324
|
+
"click",
|
325
|
+
/*click_handler_2*/
|
326
|
+
n[53],
|
327
|
+
!1,
|
328
|
+
!1,
|
329
|
+
!1,
|
330
|
+
!1
|
331
|
+
)
|
332
|
+
], m = !0);
|
333
|
+
},
|
334
|
+
p: function(C, h) {
|
335
|
+
h[0] & /*$_*/
|
336
|
+
268435456 && o !== (o = /*$_*/
|
337
|
+
C[28]("faceCollector.finish") + "") && z(s, o), h[0] & /*$justification*/
|
338
|
+
8388608 && a !== (a = /*$justification*/
|
339
|
+
C[23].length === 0) && Xe(i, "disabled", a), h[0] & /*$_*/
|
340
|
+
268435456 && r !== (r = /*$_*/
|
341
|
+
C[28]("faceCollector.retakePhoto") + "") && z(b, r);
|
342
|
+
},
|
343
|
+
d: function(C) {
|
344
|
+
C && W(e), m = !1, zt(f);
|
345
|
+
}
|
346
|
+
};
|
347
|
+
return U("SvelteRegisterBlock", {
|
348
|
+
block: R,
|
349
|
+
id: mn.name,
|
350
|
+
type: "else",
|
351
|
+
source: "(880:8) {:else}",
|
352
|
+
ctx: n
|
353
|
+
}), R;
|
354
|
+
}
|
355
|
+
function bn(n) {
|
356
|
+
let e, i, o, s, a;
|
357
|
+
function l(m, f) {
|
358
|
+
return (
|
359
|
+
/*$isLoading*/
|
360
|
+
m[30] ? _n : hn
|
361
|
+
);
|
362
|
+
}
|
363
|
+
let c = l(n), r = c(n);
|
364
|
+
const b = {
|
365
|
+
c: function() {
|
366
|
+
e = p("button"), r.c(), d(e, "id", "bry-cc-capture-btn"), e.disabled = i = !/*$faceFound*/
|
367
|
+
n[29] && /*$enableFaceApi*/
|
368
|
+
n[26] || !/*$ready*/
|
369
|
+
n[27] && !/*$enableFaceApi*/
|
370
|
+
n[26], e.hidden = o = !/*showCaptureButton*/
|
371
|
+
n[1], d(e, "class", "ce-dui-btn ce-dui-btn-block ce-dui-btn-primary text-xl"), v(e, w, 866, 10, 35426);
|
372
|
+
},
|
373
|
+
m: function(f, R) {
|
374
|
+
B(f, e, R), r.m(e, null), s || (a = ve(
|
375
|
+
e,
|
376
|
+
"click",
|
377
|
+
/*click_handler*/
|
378
|
+
n[51],
|
379
|
+
!1,
|
380
|
+
!1,
|
381
|
+
!1,
|
382
|
+
!1
|
383
|
+
), s = !0);
|
384
|
+
},
|
385
|
+
p: function(f, R) {
|
386
|
+
c === (c = l(f)) && r ? r.p(f, R) : (r.d(1), r = c(f), r && (r.c(), r.m(e, null))), R[0] & /*$faceFound, $enableFaceApi, $ready*/
|
387
|
+
738197504 && i !== (i = !/*$faceFound*/
|
388
|
+
f[29] && /*$enableFaceApi*/
|
389
|
+
f[26] || !/*$ready*/
|
390
|
+
f[27] && !/*$enableFaceApi*/
|
391
|
+
f[26]) && Xe(e, "disabled", i), R[0] & /*showCaptureButton*/
|
392
|
+
2 && o !== (o = !/*showCaptureButton*/
|
393
|
+
f[1]) && Xe(e, "hidden", o);
|
394
|
+
},
|
395
|
+
d: function(f) {
|
396
|
+
f && W(e), r.d(), s = !1, a();
|
397
|
+
}
|
398
|
+
};
|
399
|
+
return U("SvelteRegisterBlock", {
|
400
|
+
block: b,
|
401
|
+
id: bn.name,
|
402
|
+
type: "if",
|
403
|
+
source: "(866:8) {#if !$captured}",
|
404
|
+
ctx: n
|
405
|
+
}), b;
|
406
|
+
}
|
407
|
+
function hn(n) {
|
408
|
+
let e = (
|
409
|
+
/*$_*/
|
410
|
+
n[28]("faceCollector.takePicture") + ""
|
411
|
+
), i;
|
412
|
+
const o = {
|
413
|
+
c: function() {
|
414
|
+
i = N(e);
|
415
|
+
},
|
416
|
+
m: function(a, l) {
|
417
|
+
B(a, i, l);
|
418
|
+
},
|
419
|
+
p: function(a, l) {
|
420
|
+
l[0] & /*$_*/
|
421
|
+
268435456 && e !== (e = /*$_*/
|
422
|
+
a[28]("faceCollector.takePicture") + "") && z(i, e);
|
423
|
+
},
|
424
|
+
d: function(a) {
|
425
|
+
a && W(i);
|
426
|
+
}
|
427
|
+
};
|
428
|
+
return U("SvelteRegisterBlock", {
|
429
|
+
block: o,
|
430
|
+
id: hn.name,
|
431
|
+
type: "else",
|
432
|
+
source: "(876:12) {:else}",
|
433
|
+
ctx: n
|
434
|
+
}), o;
|
435
|
+
}
|
436
|
+
function _n(n) {
|
437
|
+
let e;
|
438
|
+
const i = {
|
439
|
+
c: function() {
|
440
|
+
e = N("Take picture");
|
441
|
+
},
|
442
|
+
m: function(s, a) {
|
443
|
+
B(s, e, a);
|
444
|
+
},
|
445
|
+
p: de,
|
446
|
+
d: function(s) {
|
447
|
+
s && W(e);
|
448
|
+
}
|
449
|
+
};
|
450
|
+
return U("SvelteRegisterBlock", {
|
451
|
+
block: i,
|
452
|
+
id: _n.name,
|
453
|
+
type: "if",
|
454
|
+
source: "(874:12) {#if $isLoading}",
|
455
|
+
ctx: n
|
456
|
+
}), i;
|
457
|
+
}
|
458
|
+
function gn(n) {
|
459
|
+
let e, i;
|
460
|
+
e = new ln({
|
461
|
+
props: { handler: (
|
462
|
+
/*func*/
|
463
|
+
n[62]
|
464
|
+
) },
|
465
|
+
$$inline: !0
|
466
|
+
});
|
467
|
+
const o = {
|
468
|
+
c: function() {
|
469
|
+
Vt(e.$$.fragment);
|
470
|
+
},
|
471
|
+
m: function(a, l) {
|
472
|
+
Kt(e, a, l), i = !0;
|
473
|
+
},
|
474
|
+
p: de,
|
475
|
+
i: function(a) {
|
476
|
+
i || (Le(e.$$.fragment, a), i = !0);
|
477
|
+
},
|
478
|
+
o: function(a) {
|
479
|
+
De(e.$$.fragment, a), i = !1;
|
480
|
+
},
|
481
|
+
d: function(a) {
|
482
|
+
jt(e, a);
|
483
|
+
}
|
484
|
+
};
|
485
|
+
return U("SvelteRegisterBlock", {
|
486
|
+
block: o,
|
487
|
+
id: gn.name,
|
488
|
+
type: "if",
|
489
|
+
source: "(1021:55) ",
|
490
|
+
ctx: n
|
491
|
+
}), o;
|
492
|
+
}
|
493
|
+
function pn(n) {
|
494
|
+
let e, i, o, s, a, l, c, r, b;
|
495
|
+
const m = [
|
496
|
+
yn,
|
497
|
+
Cn,
|
498
|
+
kn,
|
499
|
+
wn,
|
500
|
+
vn
|
501
|
+
], f = [];
|
502
|
+
function R(C, h) {
|
503
|
+
return (
|
504
|
+
/*$captured*/
|
505
|
+
C[19] ? (
|
506
|
+
/*$unconformitiesStore*/
|
507
|
+
C[20].isLoading ? 1 : (
|
508
|
+
/*$requestResult*/
|
509
|
+
C[21] !== se.OK ? 2 : (
|
510
|
+
/*$saved*/
|
511
|
+
C[22] ? 4 : 3
|
512
|
+
)
|
513
|
+
)
|
514
|
+
) : 0
|
515
|
+
);
|
516
|
+
}
|
517
|
+
l = R(n), c = f[l] = m[l](n);
|
518
|
+
const O = {
|
519
|
+
c: function() {
|
520
|
+
e = p("div"), i = p("img"), a = K(), c.c(), d(i, "class", "m-auto col-start-1 col-end-1 max-h-[23.2em]"), qt(i.src, o = /*$dataTypePrefix*/
|
521
|
+
n[25] + "," + /*$image*/
|
522
|
+
n[24]) || d(i, "src", o), i.hidden = s = !/*$captured*/
|
523
|
+
n[19] || !/*$showFaceWhileValidating*/
|
524
|
+
n[31] && /*$unconformitiesStore*/
|
525
|
+
n[20].isLoading, d(i, "alt", ""), v(i, w, 903, 6, 36847), d(e, "class", r = "grid-cols-1 grid-rows-2 sm:grid-cols-2 sm:grid-rows-1 gap-[.5em] " + (!/*$showFaceWhileValidating*/
|
526
|
+
n[31] && /*$unconformitiesStore*/
|
527
|
+
n[20].isLoading ? "absolute -translate-y-1/2 -translate-x-1/2 top-1/2 left-1/2 overflow-visible" : "grid m-[1em] overflow-hidden")), v(e, w, 897, 4, 36553);
|
528
|
+
},
|
529
|
+
m: function(h, E) {
|
530
|
+
B(h, e, E), u(e, i), u(e, a), f[l].m(e, null), b = !0;
|
531
|
+
},
|
532
|
+
p: function(h, E) {
|
533
|
+
(!b || E[0] & /*$dataTypePrefix, $image*/
|
534
|
+
50331648 && !qt(i.src, o = /*$dataTypePrefix*/
|
535
|
+
h[25] + "," + /*$image*/
|
536
|
+
h[24])) && d(i, "src", o), (!b || E[0] & /*$captured, $unconformitiesStore*/
|
537
|
+
1572864 | E[1] & /*$showFaceWhileValidating*/
|
538
|
+
1 && s !== (s = !/*$captured*/
|
539
|
+
h[19] || !/*$showFaceWhileValidating*/
|
540
|
+
h[31] && /*$unconformitiesStore*/
|
541
|
+
h[20].isLoading)) && Xe(i, "hidden", s);
|
542
|
+
let g = l;
|
543
|
+
l = R(h), l === g ? f[l].p(h, E) : (on(), De(f[g], 1, 1, () => {
|
544
|
+
f[g] = null;
|
545
|
+
}), an(), c = f[l], c ? c.p(h, E) : (c = f[l] = m[l](h), c.c()), Le(c, 1), c.m(e, null)), (!b || E[0] & /*$unconformitiesStore*/
|
546
|
+
1048576 | E[1] & /*$showFaceWhileValidating*/
|
547
|
+
1 && r !== (r = "grid-cols-1 grid-rows-2 sm:grid-cols-2 sm:grid-rows-1 gap-[.5em] " + (!/*$showFaceWhileValidating*/
|
548
|
+
h[31] && /*$unconformitiesStore*/
|
549
|
+
h[20].isLoading ? "absolute -translate-y-1/2 -translate-x-1/2 top-1/2 left-1/2 overflow-visible" : "grid m-[1em] overflow-hidden"))) && d(e, "class", r);
|
550
|
+
},
|
551
|
+
i: function(h) {
|
552
|
+
b || (Le(c), b = !0);
|
553
|
+
},
|
554
|
+
o: function(h) {
|
555
|
+
De(c), b = !1;
|
556
|
+
},
|
557
|
+
d: function(h) {
|
558
|
+
h && W(e), f[l].d();
|
559
|
+
}
|
560
|
+
};
|
561
|
+
return U("SvelteRegisterBlock", {
|
562
|
+
block: O,
|
563
|
+
id: pn.name,
|
564
|
+
type: "if",
|
565
|
+
source: "(897:2) {#if (!idrndClosed || $captured) && showUnconformities}",
|
566
|
+
ctx: n
|
567
|
+
}), O;
|
568
|
+
}
|
569
|
+
function vn(n) {
|
570
|
+
let e, i, o = (
|
571
|
+
/*$_*/
|
572
|
+
n[28]("faceCollector.captured") + ""
|
573
|
+
), s, a, l, c, r, b = (
|
574
|
+
/*$_*/
|
575
|
+
n[28]("faceCollector.retakePhoto") + ""
|
576
|
+
), m, f, R = Rt(nn).faceStrategy !== en.DISABLED, O, C, h, E = (
|
577
|
+
/*$unconformitiesStore*/
|
578
|
+
n[20].unconformities.length !== 0 && pi(n)
|
579
|
+
), g = R && En(n);
|
580
|
+
const L = {
|
581
|
+
c: function() {
|
582
|
+
e = p("div"), i = p("h1"), s = N(o), a = K(), E && E.c(), l = K(), c = p("div"), r = p("button"), m = N(b), f = K(), g && g.c(), d(i, "class", "text-3xl font-bold pb-[1em] transition-opacity"), v(i, w, 993, 10, 41264), d(r, "id", "bry-cc-retake-button"), d(r, "class", "ce-dui-btn ce-dui-btn-block flex-shrink text-base"), v(r, w, 1007, 12, 41965), d(c, "class", "flex flex-row"), Yi(c, "ce-dui-btn-group", !/*$exportButtonDisabled*/
|
583
|
+
n[32]), v(c, w, 1006, 10, 41877), v(e, w, 992, 8, 41248);
|
584
|
+
},
|
585
|
+
m: function(S, Y) {
|
586
|
+
B(S, e, Y), u(e, i), u(i, s), u(e, a), E && E.m(e, null), u(e, l), u(e, c), u(c, r), u(r, m), u(c, f), g && g.m(c, null), O = !0, C || (h = ve(
|
587
|
+
r,
|
588
|
+
"click",
|
589
|
+
/*click_handler_7*/
|
590
|
+
n[61],
|
591
|
+
!1,
|
592
|
+
!1,
|
593
|
+
!1,
|
594
|
+
!1
|
595
|
+
), C = !0);
|
596
|
+
},
|
597
|
+
p: function(S, Y) {
|
598
|
+
(!O || Y[0] & /*$_*/
|
599
|
+
268435456) && o !== (o = /*$_*/
|
600
|
+
S[28]("faceCollector.captured") + "") && z(s, o), /*$unconformitiesStore*/
|
601
|
+
S[20].unconformities.length !== 0 ? E ? E.p(S, Y) : (E = pi(S), E.c(), E.m(e, l)) : E && (E.d(1), E = null), (!O || Y[0] & /*$_*/
|
602
|
+
268435456) && b !== (b = /*$_*/
|
603
|
+
S[28]("faceCollector.retakePhoto") + "") && z(m, b), (!O || Y[1] & /*$exportButtonDisabled*/
|
604
|
+
2) && Yi(c, "ce-dui-btn-group", !/*$exportButtonDisabled*/
|
605
|
+
S[32]);
|
606
|
+
},
|
607
|
+
i: function(S) {
|
608
|
+
O || (Le(g), O = !0);
|
609
|
+
},
|
610
|
+
o: function(S) {
|
611
|
+
De(g), O = !1;
|
612
|
+
},
|
613
|
+
d: function(S) {
|
614
|
+
S && W(e), E && E.d(), g && g.d(), C = !1, h();
|
615
|
+
}
|
616
|
+
};
|
617
|
+
return U("SvelteRegisterBlock", {
|
618
|
+
block: L,
|
619
|
+
id: vn.name,
|
620
|
+
type: "else",
|
621
|
+
source: "(992:6) {:else}",
|
622
|
+
ctx: n
|
623
|
+
}), L;
|
624
|
+
}
|
625
|
+
function wn(n) {
|
626
|
+
let e, i, o = (
|
627
|
+
/*$_*/
|
628
|
+
n[28]("faceCollector.unconformities") + ""
|
629
|
+
), s, a, l, c, r, b, m, f = (
|
630
|
+
/*$_*/
|
631
|
+
n[28]("faceCollector.provideAReasonForTheLowQualityCapture") + ""
|
632
|
+
), R, O, C, h, E, g, L, q, S = (
|
633
|
+
/*$_*/
|
634
|
+
n[28]("faceCollector.thisInformationIsRequired") + ""
|
635
|
+
), Y, ye, he, me, we, X = (
|
636
|
+
/*$unconformitiesStore*/
|
637
|
+
n[20].unconformities
|
638
|
+
);
|
639
|
+
Gi(X);
|
640
|
+
let Q = [];
|
641
|
+
for (let j = 0; j < X.length; j += 1)
|
642
|
+
Q[j] = vi(Zi(n, X, j));
|
643
|
+
let x = (
|
644
|
+
/*$captured*/
|
645
|
+
n[19] && wi(n)
|
646
|
+
);
|
647
|
+
const J = {
|
648
|
+
c: function() {
|
649
|
+
e = p("div"), i = p("h1"), s = N(o), a = K(), l = p("div");
|
650
|
+
for (let M = 0; M < Q.length; M += 1)
|
651
|
+
Q[M].c();
|
652
|
+
c = K(), r = p("div"), b = p("label"), m = p("span"), R = N(f), O = K(), C = p("textarea"), E = K(), g = p("label"), L = p("span"), q = N("("), Y = N(S), ye = N(")"), he = K(), x && x.c(), d(i, "class", "text-3xl font-bold pb-[1em] transition-opacity"), v(i, w, 950, 10, 39355), d(l, "class", "flex flex-wrap"), v(l, w, 951, 10, 39466), d(m, "class", "ce-dui-label-text text-base"), v(m, w, 960, 14, 39898), d(b, "class", "ce-dui-label"), d(b, "for", "justification"), v(b, w, 959, 12, 39835), d(C, "contenteditable", ""), d(C, "id", "justification"), d(C, "class", "ce-dui-textarea ce-dui-textarea-bordered h-[6em] text-base"), d(C, "placeholder", h = /*$_*/
|
653
|
+
n[28]("faceCollector.yourJustification")), v(C, w, 964, 12, 40072), d(L, "class", "ce-dui-label-text-alt text-base"), v(L, w, 972, 14, 40424), d(g, "class", "ce-dui-label"), d(g, "for", "justification"), v(g, w, 971, 12, 40361), d(r, "class", "ce-dui-form-control mt-[2.5em]"), v(r, w, 958, 10, 39778), v(e, w, 949, 8, 39339);
|
654
|
+
},
|
655
|
+
m: function(M, G) {
|
656
|
+
B(M, e, G), u(e, i), u(i, s), u(e, a), u(e, l);
|
657
|
+
for (let V = 0; V < Q.length; V += 1)
|
658
|
+
Q[V] && Q[V].m(l, null);
|
659
|
+
u(e, c), u(e, r), u(r, b), u(b, m), u(m, R), u(r, O), u(r, C), Ht(
|
660
|
+
C,
|
661
|
+
/*$justification*/
|
662
|
+
n[23]
|
663
|
+
), u(r, E), u(r, g), u(g, L), u(L, q), u(L, Y), u(L, ye), u(e, he), x && x.m(e, null), me || (we = ve(
|
664
|
+
C,
|
665
|
+
"input",
|
666
|
+
/*textarea_input_handler*/
|
667
|
+
n[57]
|
668
|
+
), me = !0);
|
669
|
+
},
|
670
|
+
p: function(M, G) {
|
671
|
+
if (G[0] & /*$_*/
|
672
|
+
268435456 && o !== (o = /*$_*/
|
673
|
+
M[28]("faceCollector.unconformities") + "") && z(s, o), G[0] & /*$unconformitiesStore*/
|
674
|
+
1048576) {
|
675
|
+
X = /*$unconformitiesStore*/
|
676
|
+
M[20].unconformities, Gi(X);
|
677
|
+
let V;
|
678
|
+
for (V = 0; V < X.length; V += 1) {
|
679
|
+
const $ = Zi(M, X, V);
|
680
|
+
Q[V] ? Q[V].p($, G) : (Q[V] = vi($), Q[V].c(), Q[V].m(l, null));
|
681
|
+
}
|
682
|
+
for (; V < Q.length; V += 1)
|
683
|
+
Q[V].d(1);
|
684
|
+
Q.length = X.length;
|
685
|
+
}
|
686
|
+
G[0] & /*$_*/
|
687
|
+
268435456 && f !== (f = /*$_*/
|
688
|
+
M[28]("faceCollector.provideAReasonForTheLowQualityCapture") + "") && z(R, f), G[0] & /*$_*/
|
689
|
+
268435456 && h !== (h = /*$_*/
|
690
|
+
M[28]("faceCollector.yourJustification")) && d(C, "placeholder", h), G[0] & /*$justification*/
|
691
|
+
8388608 && Ht(
|
692
|
+
C,
|
693
|
+
/*$justification*/
|
694
|
+
M[23]
|
695
|
+
), G[0] & /*$_*/
|
696
|
+
268435456 && S !== (S = /*$_*/
|
697
|
+
M[28]("faceCollector.thisInformationIsRequired") + "") && z(Y, S), /*$captured*/
|
698
|
+
M[19] ? x ? x.p(M, G) : (x = wi(M), x.c(), x.m(e, null)) : x && (x.d(1), x = null);
|
699
|
+
},
|
700
|
+
i: de,
|
701
|
+
o: de,
|
702
|
+
d: function(M) {
|
703
|
+
M && W(e), oo(Q, M), x && x.d(), me = !1, we();
|
704
|
+
}
|
705
|
+
};
|
706
|
+
return U("SvelteRegisterBlock", {
|
707
|
+
block: J,
|
708
|
+
id: wn.name,
|
709
|
+
type: "if",
|
710
|
+
source: "(949:24) ",
|
711
|
+
ctx: n
|
712
|
+
}), J;
|
713
|
+
}
|
714
|
+
function kn(n) {
|
715
|
+
let e, i, o, s, a = (
|
716
|
+
/*$_*/
|
717
|
+
n[28]("faceCollector.finish") + ""
|
718
|
+
), l, c, r, b = (
|
719
|
+
/*$_*/
|
720
|
+
n[28]("faceCollector.retakePhoto") + ""
|
721
|
+
), m, f, R;
|
722
|
+
function O(g, L) {
|
723
|
+
return (
|
724
|
+
/*$requestResult*/
|
725
|
+
g[21] === se.LIVENESS_DETECTION_FAILURE || /*$requestResult*/
|
726
|
+
g[21] === se.UNKNOWN_LIVENESS_ERROR ? Tn : (
|
727
|
+
/*$requestResult*/
|
728
|
+
g[21] === se.LOW_LIVENESS_SCORE ? Pn : (
|
729
|
+
/*$requestResult*/
|
730
|
+
g[21] === se.TEMPLATE_EXTRACTION_ERROR || /*$requestResult*/
|
731
|
+
g[21] === se.UNKNOWN_TEMPLATE_EXTRACTION_ERROR ? In : (
|
732
|
+
/*$requestResult*/
|
733
|
+
g[21] === se.UNABLE_TO_COMMUNICATE_WITH_TEMPLATE_EXTRACTION_SERVICE ? Sn : Rn
|
734
|
+
)
|
735
|
+
)
|
736
|
+
)
|
737
|
+
);
|
738
|
+
}
|
739
|
+
let C = O(n), h = C(n);
|
740
|
+
const E = {
|
741
|
+
c: function() {
|
742
|
+
e = p("div"), h.c(), i = K(), o = p("div"), s = p("button"), l = N(a), c = K(), r = p("button"), m = N(b), s.disabled = !0, d(s, "class", "ce-dui-btn ce-dui-btn-primary ce-dui-btn-block flex-shrink"), v(s, w, 938, 12, 38863), d(r, "id", "bry-cc-retake-button"), d(r, "class", "ce-dui-btn ce-dui-btn-block ce-dui-btn-outline flex-shrink"), v(r, w, 941, 12, 39049), d(o, "class", "ce-dui-btn-group flex"), v(o, w, 937, 10, 38815), d(e, "class", "flex flex-col justify-between"), v(e, w, 917, 8, 37461);
|
743
|
+
},
|
744
|
+
m: function(L, q) {
|
745
|
+
B(L, e, q), h.m(e, null), u(e, i), u(e, o), u(o, s), u(s, l), u(o, c), u(o, r), u(r, m), f || (R = [
|
746
|
+
ve(
|
747
|
+
s,
|
748
|
+
"click",
|
749
|
+
/*click_handler_3*/
|
750
|
+
n[55],
|
751
|
+
!1,
|
752
|
+
!1,
|
753
|
+
!1,
|
754
|
+
!1
|
755
|
+
),
|
756
|
+
ve(
|
757
|
+
r,
|
758
|
+
"click",
|
759
|
+
/*click_handler_4*/
|
760
|
+
n[56],
|
761
|
+
!1,
|
762
|
+
!1,
|
763
|
+
!1,
|
764
|
+
!1
|
765
|
+
)
|
766
|
+
], f = !0);
|
767
|
+
},
|
768
|
+
p: function(L, q) {
|
769
|
+
C === (C = O(L)) && h ? h.p(L, q) : (h.d(1), h = C(L), h && (h.c(), h.m(e, i))), q[0] & /*$_*/
|
770
|
+
268435456 && a !== (a = /*$_*/
|
771
|
+
L[28]("faceCollector.finish") + "") && z(l, a), q[0] & /*$_*/
|
772
|
+
268435456 && b !== (b = /*$_*/
|
773
|
+
L[28]("faceCollector.retakePhoto") + "") && z(m, b);
|
774
|
+
},
|
775
|
+
i: de,
|
776
|
+
o: de,
|
777
|
+
d: function(L) {
|
778
|
+
L && W(e), h.d(), f = !1, zt(R);
|
779
|
+
}
|
780
|
+
};
|
781
|
+
return U("SvelteRegisterBlock", {
|
782
|
+
block: E,
|
783
|
+
id: kn.name,
|
784
|
+
type: "if",
|
785
|
+
source: "(917:56) ",
|
786
|
+
ctx: n
|
787
|
+
}), E;
|
788
|
+
}
|
789
|
+
function Cn(n) {
|
790
|
+
let e, i, o = (
|
791
|
+
/*$_*/
|
792
|
+
n[28]("faceCollector.validating") + ""
|
793
|
+
), s, a, l;
|
794
|
+
const c = {
|
795
|
+
c: function() {
|
796
|
+
e = p("div"), i = p("h1"), s = N(o), a = K(), l = p("div"), d(i, "class", "inline-block text-3xl font-bold pb-[1em] transition-opacity"), v(i, w, 913, 10, 37216), d(l, "class", "ml-6 inline-block dot-typing"), v(l, w, 914, 10, 37336), d(e, "class", "min-w-[200px]"), v(e, w, 912, 8, 37178);
|
797
|
+
},
|
798
|
+
m: function(b, m) {
|
799
|
+
B(b, e, m), u(e, i), u(i, s), u(e, a), u(e, l);
|
800
|
+
},
|
801
|
+
p: function(b, m) {
|
802
|
+
m[0] & /*$_*/
|
803
|
+
268435456 && o !== (o = /*$_*/
|
804
|
+
b[28]("faceCollector.validating") + "") && z(s, o);
|
805
|
+
},
|
806
|
+
i: de,
|
807
|
+
o: de,
|
808
|
+
d: function(b) {
|
809
|
+
b && W(e);
|
810
|
+
}
|
811
|
+
};
|
812
|
+
return U("SvelteRegisterBlock", {
|
813
|
+
block: c,
|
814
|
+
id: Cn.name,
|
815
|
+
type: "if",
|
816
|
+
source: "(912:47) ",
|
817
|
+
ctx: n
|
818
|
+
}), c;
|
819
|
+
}
|
820
|
+
function yn(n) {
|
821
|
+
let e;
|
822
|
+
const i = {
|
823
|
+
c: function() {
|
824
|
+
e = p("div"), d(e, "class", ""), v(e, w, 910, 8, 37105);
|
825
|
+
},
|
826
|
+
m: function(s, a) {
|
827
|
+
B(s, e, a);
|
828
|
+
},
|
829
|
+
p: de,
|
830
|
+
i: de,
|
831
|
+
o: de,
|
832
|
+
d: function(s) {
|
833
|
+
s && W(e);
|
834
|
+
}
|
835
|
+
};
|
836
|
+
return U("SvelteRegisterBlock", {
|
837
|
+
block: i,
|
838
|
+
id: yn.name,
|
839
|
+
type: "if",
|
840
|
+
source: "(910:6) {#if !$captured}",
|
841
|
+
ctx: n
|
842
|
+
}), i;
|
843
|
+
}
|
844
|
+
function pi(n) {
|
845
|
+
let e, i, o = (
|
846
|
+
/*$_*/
|
847
|
+
n[28]("faceCollector.justification") + ""
|
848
|
+
), s, a, l, c, r;
|
849
|
+
const b = {
|
850
|
+
c: function() {
|
851
|
+
e = p("label"), i = p("span"), s = N(o), a = K(), l = p("textarea"), d(i, "class", "ce-dui-label-text text-base"), v(i, w, 997, 14, 41500), d(e, "class", "ce-dui-label"), d(e, "for", "justification"), v(e, w, 996, 12, 41437), d(l, "contenteditable", ""), d(l, "id", "justification"), d(l, "class", "ce-dui-textarea ce-dui-textarea-bordered textarea-ghost h-[6em] w-full text-base"), v(l, w, 999, 12, 41618);
|
852
|
+
},
|
853
|
+
m: function(f, R) {
|
854
|
+
B(f, e, R), u(e, i), u(i, s), B(f, a, R), B(f, l, R), Ht(
|
855
|
+
l,
|
856
|
+
/*$justification*/
|
857
|
+
n[23]
|
858
|
+
), c || (r = ve(
|
859
|
+
l,
|
860
|
+
"input",
|
861
|
+
/*textarea_input_handler_1*/
|
862
|
+
n[60]
|
863
|
+
), c = !0);
|
864
|
+
},
|
865
|
+
p: function(f, R) {
|
866
|
+
R[0] & /*$_*/
|
867
|
+
268435456 && o !== (o = /*$_*/
|
868
|
+
f[28]("faceCollector.justification") + "") && z(s, o), R[0] & /*$justification*/
|
869
|
+
8388608 && Ht(
|
870
|
+
l,
|
871
|
+
/*$justification*/
|
872
|
+
f[23]
|
873
|
+
);
|
874
|
+
},
|
875
|
+
d: function(f) {
|
876
|
+
f && W(e), f && W(a), f && W(l), c = !1, r();
|
877
|
+
}
|
878
|
+
};
|
879
|
+
return U("SvelteRegisterBlock", {
|
880
|
+
block: b,
|
881
|
+
id: pi.name,
|
882
|
+
type: "if",
|
883
|
+
source: "(996:10) {#if $unconformitiesStore.unconformities.length !== 0}",
|
884
|
+
ctx: n
|
885
|
+
}), b;
|
886
|
+
}
|
887
|
+
function En(n) {
|
888
|
+
let e, i;
|
889
|
+
e = new tn({
|
890
|
+
props: { cssClass: "ce-dui-btn-block flex-shrink" },
|
891
|
+
$$inline: !0
|
892
|
+
});
|
893
|
+
const o = {
|
894
|
+
c: function() {
|
895
|
+
Vt(e.$$.fragment);
|
896
|
+
},
|
897
|
+
m: function(a, l) {
|
898
|
+
Kt(e, a, l), i = !0;
|
899
|
+
},
|
900
|
+
i: function(a) {
|
901
|
+
i || (Le(e.$$.fragment, a), i = !0);
|
902
|
+
},
|
903
|
+
o: function(a) {
|
904
|
+
De(e.$$.fragment, a), i = !1;
|
905
|
+
},
|
906
|
+
d: function(a) {
|
907
|
+
jt(e, a);
|
908
|
+
}
|
909
|
+
};
|
910
|
+
return U("SvelteRegisterBlock", {
|
911
|
+
block: o,
|
912
|
+
id: En.name,
|
913
|
+
type: "if",
|
914
|
+
source: "(1013:12) {#if get(enableStrategy).faceStrategy !== FaceExportStrategy.DISABLED}",
|
915
|
+
ctx: n
|
916
|
+
}), o;
|
917
|
+
}
|
918
|
+
function vi(n) {
|
919
|
+
let e, i = (
|
920
|
+
/*unconformity*/
|
921
|
+
n[107] + ""
|
922
|
+
), o, s;
|
923
|
+
const a = {
|
924
|
+
c: function() {
|
925
|
+
e = p("div"), o = N(i), s = K(), d(e, "class", "ce-dui-badge ce-dui-badge-lg h-[2em] ce-dui-badge-error text-xl pb-[.25em] m-[.5em]"), v(e, w, 953, 14, 39581);
|
926
|
+
},
|
927
|
+
m: function(c, r) {
|
928
|
+
B(c, e, r), u(e, o), u(e, s);
|
929
|
+
},
|
930
|
+
p: function(c, r) {
|
931
|
+
r[0] & /*$unconformitiesStore*/
|
932
|
+
1048576 && i !== (i = /*unconformity*/
|
933
|
+
c[107] + "") && z(o, i);
|
934
|
+
},
|
935
|
+
d: function(c) {
|
936
|
+
c && W(e);
|
937
|
+
}
|
938
|
+
};
|
939
|
+
return U("SvelteRegisterBlock", {
|
940
|
+
block: a,
|
941
|
+
id: vi.name,
|
942
|
+
type: "each",
|
943
|
+
source: "(953:12) {#each $unconformitiesStore.unconformities as unconformity}",
|
944
|
+
ctx: n
|
945
|
+
}), a;
|
946
|
+
}
|
947
|
+
function wi(n) {
|
948
|
+
let e, i, o = (
|
949
|
+
/*$_*/
|
950
|
+
n[28]("faceCollector.finish") + ""
|
951
|
+
), s, a, l, c, r = (
|
952
|
+
/*$_*/
|
953
|
+
n[28]("faceCollector.retakePhoto") + ""
|
954
|
+
), b, m, f;
|
955
|
+
const R = {
|
956
|
+
c: function() {
|
957
|
+
e = p("div"), i = p("button"), s = N(o), l = K(), c = p("button"), b = N(r), i.disabled = a = /*$justification*/
|
958
|
+
n[23].length === 0, d(i, "class", "ce-dui-btn ce-dui-btn-primary ce-dui-btn-block flex-shrink text-base"), v(i, w, 977, 14, 40653), d(c, "id", "bry-cc-retake-button"), d(c, "class", "ce-dui-btn ce-dui-btn-block ce-dui-btn-outline flex-shrink text-base"), v(c, w, 983, 14, 40933), d(e, "class", "ce-dui-btn-group flex"), v(e, w, 976, 12, 40603);
|
959
|
+
},
|
960
|
+
m: function(C, h) {
|
961
|
+
B(C, e, h), u(e, i), u(i, s), u(e, l), u(e, c), u(c, b), m || (f = [
|
962
|
+
ve(
|
963
|
+
i,
|
964
|
+
"click",
|
965
|
+
/*click_handler_5*/
|
966
|
+
n[58],
|
967
|
+
!1,
|
968
|
+
!1,
|
969
|
+
!1,
|
970
|
+
!1
|
971
|
+
),
|
972
|
+
ve(
|
973
|
+
c,
|
974
|
+
"click",
|
975
|
+
/*click_handler_6*/
|
976
|
+
n[59],
|
977
|
+
!1,
|
978
|
+
!1,
|
979
|
+
!1,
|
980
|
+
!1
|
981
|
+
)
|
982
|
+
], m = !0);
|
983
|
+
},
|
984
|
+
p: function(C, h) {
|
985
|
+
h[0] & /*$_*/
|
986
|
+
268435456 && o !== (o = /*$_*/
|
987
|
+
C[28]("faceCollector.finish") + "") && z(s, o), h[0] & /*$justification*/
|
988
|
+
8388608 && a !== (a = /*$justification*/
|
989
|
+
C[23].length === 0) && Xe(i, "disabled", a), h[0] & /*$_*/
|
990
|
+
268435456 && r !== (r = /*$_*/
|
991
|
+
C[28]("faceCollector.retakePhoto") + "") && z(b, r);
|
992
|
+
},
|
993
|
+
d: function(C) {
|
994
|
+
C && W(e), m = !1, zt(f);
|
995
|
+
}
|
996
|
+
};
|
997
|
+
return U("SvelteRegisterBlock", {
|
998
|
+
block: R,
|
999
|
+
id: wi.name,
|
1000
|
+
type: "if",
|
1001
|
+
source: "(976:10) {#if $captured}",
|
1002
|
+
ctx: n
|
1003
|
+
}), R;
|
1004
|
+
}
|
1005
|
+
function Rn(n) {
|
1006
|
+
let e, i = (
|
1007
|
+
/*$_*/
|
1008
|
+
n[28]("faceCollector.everythingOk") + ""
|
1009
|
+
), o;
|
1010
|
+
const s = {
|
1011
|
+
c: function() {
|
1012
|
+
e = p("h1"), o = N(i), d(e, "class", "text-3xl font-bold pb-[1em] transition-opacity"), v(e, w, 935, 12, 38690);
|
1013
|
+
},
|
1014
|
+
m: function(l, c) {
|
1015
|
+
B(l, e, c), u(e, o);
|
1016
|
+
},
|
1017
|
+
p: function(l, c) {
|
1018
|
+
c[0] & /*$_*/
|
1019
|
+
268435456 && i !== (i = /*$_*/
|
1020
|
+
l[28]("faceCollector.everythingOk") + "") && z(o, i);
|
1021
|
+
},
|
1022
|
+
d: function(l) {
|
1023
|
+
l && W(e);
|
1024
|
+
}
|
1025
|
+
};
|
1026
|
+
return U("SvelteRegisterBlock", {
|
1027
|
+
block: s,
|
1028
|
+
id: Rn.name,
|
1029
|
+
type: "else",
|
1030
|
+
source: "(935:10) {:else}",
|
1031
|
+
ctx: n
|
1032
|
+
}), s;
|
1033
|
+
}
|
1034
|
+
function Sn(n) {
|
1035
|
+
let e, i = (
|
1036
|
+
/*$_*/
|
1037
|
+
n[28]("faceCollector.unableToCompleteRequest") + ""
|
1038
|
+
), o;
|
1039
|
+
const s = {
|
1040
|
+
c: function() {
|
1041
|
+
e = p("h1"), o = N(i), d(e, "class", "text-3xl font-bold pb-[1em] transition-opacity text-error"), v(e, w, 931, 12, 38511);
|
1042
|
+
},
|
1043
|
+
m: function(l, c) {
|
1044
|
+
B(l, e, c), u(e, o);
|
1045
|
+
},
|
1046
|
+
p: function(l, c) {
|
1047
|
+
c[0] & /*$_*/
|
1048
|
+
268435456 && i !== (i = /*$_*/
|
1049
|
+
l[28]("faceCollector.unableToCompleteRequest") + "") && z(o, i);
|
1050
|
+
},
|
1051
|
+
d: function(l) {
|
1052
|
+
l && W(e);
|
1053
|
+
}
|
1054
|
+
};
|
1055
|
+
return U("SvelteRegisterBlock", {
|
1056
|
+
block: s,
|
1057
|
+
id: Sn.name,
|
1058
|
+
type: "if",
|
1059
|
+
source: "(931:112) ",
|
1060
|
+
ctx: n
|
1061
|
+
}), s;
|
1062
|
+
}
|
1063
|
+
function In(n) {
|
1064
|
+
let e, i = (
|
1065
|
+
/*$_*/
|
1066
|
+
n[28]("faceCollector.lowQualityCapture") + ""
|
1067
|
+
), o;
|
1068
|
+
const s = {
|
1069
|
+
c: function() {
|
1070
|
+
e = p("h1"), o = N(i), d(e, "class", "text-3xl font-bold pb-[1em] transition-opacity text-error"), v(e, w, 927, 12, 38243);
|
1071
|
+
},
|
1072
|
+
m: function(l, c) {
|
1073
|
+
B(l, e, c), u(e, o);
|
1074
|
+
},
|
1075
|
+
p: function(l, c) {
|
1076
|
+
c[0] & /*$_*/
|
1077
|
+
268435456 && i !== (i = /*$_*/
|
1078
|
+
l[28]("faceCollector.lowQualityCapture") + "") && z(o, i);
|
1079
|
+
},
|
1080
|
+
d: function(l) {
|
1081
|
+
l && W(e);
|
1082
|
+
}
|
1083
|
+
};
|
1084
|
+
return U("SvelteRegisterBlock", {
|
1085
|
+
block: s,
|
1086
|
+
id: In.name,
|
1087
|
+
type: "if",
|
1088
|
+
source: "(927:157) ",
|
1089
|
+
ctx: n
|
1090
|
+
}), s;
|
1091
|
+
}
|
1092
|
+
function Pn(n) {
|
1093
|
+
let e, i = (
|
1094
|
+
/*$_*/
|
1095
|
+
n[28]("liveness.error.error") + ""
|
1096
|
+
), o, s, a = (
|
1097
|
+
/*$_*/
|
1098
|
+
n[28]("faceCollector.unaliveCapture") + ""
|
1099
|
+
), l;
|
1100
|
+
const c = {
|
1101
|
+
c: function() {
|
1102
|
+
e = p("h1"), o = N(i), s = N(": "), l = N(a), d(e, "class", "text-3xl font-bold pb-[1em] transition-opacity text-error"), v(e, w, 923, 12, 37903);
|
1103
|
+
},
|
1104
|
+
m: function(b, m) {
|
1105
|
+
B(b, e, m), u(e, o), u(e, s), u(e, l);
|
1106
|
+
},
|
1107
|
+
p: function(b, m) {
|
1108
|
+
m[0] & /*$_*/
|
1109
|
+
268435456 && i !== (i = /*$_*/
|
1110
|
+
b[28]("liveness.error.error") + "") && z(o, i), m[0] & /*$_*/
|
1111
|
+
268435456 && a !== (a = /*$_*/
|
1112
|
+
b[28]("faceCollector.unaliveCapture") + "") && z(l, a);
|
1113
|
+
},
|
1114
|
+
d: function(b) {
|
1115
|
+
b && W(e);
|
1116
|
+
}
|
1117
|
+
};
|
1118
|
+
return U("SvelteRegisterBlock", {
|
1119
|
+
block: c,
|
1120
|
+
id: Pn.name,
|
1121
|
+
type: "if",
|
1122
|
+
source: "(923:76) ",
|
1123
|
+
ctx: n
|
1124
|
+
}), c;
|
1125
|
+
}
|
1126
|
+
function Tn(n) {
|
1127
|
+
let e, i = (
|
1128
|
+
/*$_*/
|
1129
|
+
n[28]("liveness.error.error") + ""
|
1130
|
+
), o, s, a = (
|
1131
|
+
/*$_*/
|
1132
|
+
n[28](
|
1133
|
+
/*livenessError*/
|
1134
|
+
n[14]
|
1135
|
+
) + ""
|
1136
|
+
), l, c;
|
1137
|
+
const r = {
|
1138
|
+
c: function() {
|
1139
|
+
e = p("h1"), o = N(i), s = N(": "), l = N(a), c = N("."), d(e, "class", "text-3xl font-bold pb-[1em] transition-opacity text-error"), v(e, w, 919, 12, 37660);
|
1140
|
+
},
|
1141
|
+
m: function(m, f) {
|
1142
|
+
B(m, e, f), u(e, o), u(e, s), u(e, l), u(e, c);
|
1143
|
+
},
|
1144
|
+
p: function(m, f) {
|
1145
|
+
f[0] & /*$_*/
|
1146
|
+
268435456 && i !== (i = /*$_*/
|
1147
|
+
m[28]("liveness.error.error") + "") && z(o, i), f[0] & /*$_, livenessError*/
|
1148
|
+
268451840 && a !== (a = /*$_*/
|
1149
|
+
m[28](
|
1150
|
+
/*livenessError*/
|
1151
|
+
m[14]
|
1152
|
+
) + "") && z(l, a);
|
1153
|
+
},
|
1154
|
+
d: function(m) {
|
1155
|
+
m && W(e);
|
1156
|
+
}
|
1157
|
+
};
|
1158
|
+
return U("SvelteRegisterBlock", {
|
1159
|
+
block: r,
|
1160
|
+
id: Tn.name,
|
1161
|
+
type: "if",
|
1162
|
+
source: "(919:10) {#if $requestResult === requestResultEnum.LIVENESS_DETECTION_FAILURE || $requestResult === requestResultEnum.UNKNOWN_LIVENESS_ERROR}",
|
1163
|
+
ctx: n
|
1164
|
+
}), r;
|
1165
|
+
}
|
1166
|
+
function On(n) {
|
1167
|
+
let e, i, o, s, a = oe(), l, c = (
|
1168
|
+
/*unique*/
|
1169
|
+
n[8]
|
1170
|
+
), r, b, m, f, R, O, C, h, E, g, L, q, S, Y, ye = oe() && /*waitingIdrndCaptureEvent*/
|
1171
|
+
n[13], he, me = oe() && /*idrndLoading*/
|
1172
|
+
n[11] && /*$cameraStatusStore*/
|
1173
|
+
n[17] === te.OK, we, X, Q, x, J, j, M, G = a && cn(n), V = mi(n);
|
1174
|
+
b = new $i({
|
1175
|
+
props: { className: "bottom-0" },
|
1176
|
+
$$inline: !0
|
1177
|
+
}), f = new sn({
|
1178
|
+
props: { className: "bottom-0" },
|
1179
|
+
$$inline: !0
|
1180
|
+
});
|
1181
|
+
let $ = (
|
1182
|
+
/*isCountingDown*/
|
1183
|
+
n[7] && bi(n)
|
1184
|
+
), le = (
|
1185
|
+
/*$enableFaceApi*/
|
1186
|
+
n[26] && !/*isCountingDown*/
|
1187
|
+
n[7] && /*$faceFound*/
|
1188
|
+
n[29] && /*faceNotValidated*/
|
1189
|
+
n[15] && hi(n)
|
1190
|
+
), ue = ye && _i(n), be = me && gi(n);
|
1191
|
+
function T(ie, k) {
|
1192
|
+
return (
|
1193
|
+
/*$captured*/
|
1194
|
+
ie[19] ? mn : bn
|
1195
|
+
);
|
1196
|
+
}
|
1197
|
+
let ae = T(n), ee = ae(n);
|
1198
|
+
const ke = [pn, gn], _e = [];
|
1199
|
+
function Me(ie, k) {
|
1200
|
+
return (!/*idrndClosed*/
|
1201
|
+
ie[12] || /*$captured*/
|
1202
|
+
ie[19]) && /*showUnconformities*/
|
1203
|
+
ie[2] ? 0 : (
|
1204
|
+
/*$cameraStatusStore*/
|
1205
|
+
ie[17] !== te.OK ? 1 : -1
|
1206
|
+
);
|
1207
|
+
}
|
1208
|
+
~(J = Me(n)) && (j = _e[J] = ke[J](n));
|
1209
|
+
const Pe = {
|
1210
|
+
c: function() {
|
1211
|
+
e = p("div"), i = p("div"), o = p("div"), s = p("div"), G && G.c(), l = K(), V.c(), r = K(), Vt(b.$$.fragment), m = K(), Vt(f.$$.fragment), R = K(), O = p("canvas"), C = K(), h = p("canvas"), E = K(), g = p("canvas"), L = K(), $ && $.c(), q = K(), le && le.c(), Y = K(), ue && ue.c(), he = K(), be && be.c(), we = K(), X = p("div"), ee.c(), x = K(), j && j.c(), this.c = de, d(O, "id", "bry-ce-displayCanvas"), d(O, "class", "max-w-full -scale-x-100"), v(O, w, 812, 8, 32761), d(h, "id", "bry-ce-detectionsCanvas"), d(h, "class", "absolute top-0 left-0 max-w-full -scale-x-100"), v(h, w, 814, 8, 32887), d(g, "id", "bry-ce-maskCanvas"), d(g, "class", "absolute top-0 left-0 max-w-full -scale-x-100"), v(g, w, 819, 8, 33056), d(s, "class", "relative"), s.hidden = S = /*$cameraStatusStore*/
|
1212
|
+
n[17] !== te.OK || oe() && /*idrndLoading*/
|
1213
|
+
(n[11] || /*idrndClosed*/
|
1214
|
+
n[12] || /*waitingIdrndCaptureEvent*/
|
1215
|
+
n[13]), v(s, w, 777, 6, 31494), d(X, "class", "px-4 sm:px-0 mt-[1em]"), X.hidden = Q = !/*showCaptureButton*/
|
1216
|
+
n[1] || oe() && /*idrndLoading*/
|
1217
|
+
(n[11] || /*idrndClosed*/
|
1218
|
+
n[12] || /*waitingIdrndCaptureEvent*/
|
1219
|
+
n[13]), v(X, w, 861, 6, 35220), d(o, "class", "relative mx-auto"), v(o, w, 776, 4, 31457), d(i, "class", "flex flex-col justify-between"), v(i, w, 775, 2, 31384), v(e, w, 771, 0, 31149);
|
1220
|
+
},
|
1221
|
+
l: function(k) {
|
1222
|
+
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
|
1223
|
+
},
|
1224
|
+
m: function(k, Z) {
|
1225
|
+
B(k, e, Z), u(e, i), u(i, o), u(o, s), G && G.m(s, null), u(s, l), V.m(s, null), u(s, r), Kt(b, s, null), u(s, m), Kt(f, s, null), u(s, R), u(s, O), n[48](O), u(s, C), u(s, h), n[49](h), u(s, E), u(s, g), n[50](g), u(s, L), $ && $.m(s, null), u(s, q), le && le.m(s, null), u(o, Y), ue && ue.m(o, null), u(o, he), be && be.m(o, null), u(o, we), u(o, X), ee.m(X, null), n[54](i), u(e, x), ~J && _e[J].m(e, null), M = !0;
|
1226
|
+
},
|
1227
|
+
p: function(k, Z) {
|
1228
|
+
a && G.p(k, Z), Z[0] & /*unique*/
|
1229
|
+
256 && xi(c, c = /*unique*/
|
1230
|
+
k[8]) ? (V.d(1), V = mi(k), V.c(), V.m(s, r)) : V.p(k, Z), /*isCountingDown*/
|
1231
|
+
k[7] ? $ ? $.p(k, Z) : ($ = bi(k), $.c(), $.m(s, q)) : $ && ($.d(1), $ = null), /*$enableFaceApi*/
|
1232
|
+
k[26] && !/*isCountingDown*/
|
1233
|
+
k[7] && /*$faceFound*/
|
1234
|
+
k[29] && /*faceNotValidated*/
|
1235
|
+
k[15] ? le ? le.p(k, Z) : (le = hi(k), le.c(), le.m(s, null)) : le && (le.d(1), le = null), (!M || Z[0] & /*$cameraStatusStore, idrndLoading, idrndClosed, waitingIdrndCaptureEvent*/
|
1236
|
+
145408 && S !== (S = /*$cameraStatusStore*/
|
1237
|
+
k[17] !== te.OK || oe() && /*idrndLoading*/
|
1238
|
+
(k[11] || /*idrndClosed*/
|
1239
|
+
k[12] || /*waitingIdrndCaptureEvent*/
|
1240
|
+
k[13]))) && Xe(s, "hidden", S), Z[0] & /*waitingIdrndCaptureEvent*/
|
1241
|
+
8192 && (ye = oe() && /*waitingIdrndCaptureEvent*/
|
1242
|
+
k[13]), ye ? ue ? ue.p(k, Z) : (ue = _i(k), ue.c(), ue.m(o, he)) : ue && (ue.d(1), ue = null), Z[0] & /*idrndLoading, $cameraStatusStore*/
|
1243
|
+
133120 && (me = oe() && /*idrndLoading*/
|
1244
|
+
k[11] && /*$cameraStatusStore*/
|
1245
|
+
k[17] === te.OK), me ? be ? be.p(k, Z) : (be = gi(k), be.c(), be.m(o, we)) : be && (be.d(1), be = null), ae === (ae = T(k)) && ee ? ee.p(k, Z) : (ee.d(1), ee = ae(k), ee && (ee.c(), ee.m(X, null))), (!M || Z[0] & /*showCaptureButton, idrndLoading, idrndClosed, waitingIdrndCaptureEvent*/
|
1246
|
+
14338 && Q !== (Q = !/*showCaptureButton*/
|
1247
|
+
k[1] || oe() && /*idrndLoading*/
|
1248
|
+
(k[11] || /*idrndClosed*/
|
1249
|
+
k[12] || /*waitingIdrndCaptureEvent*/
|
1250
|
+
k[13]))) && Xe(X, "hidden", Q);
|
1251
|
+
let ge = J;
|
1252
|
+
J = Me(k), J === ge ? ~J && _e[J].p(k, Z) : (j && (on(), De(_e[ge], 1, 1, () => {
|
1253
|
+
_e[ge] = null;
|
1254
|
+
}), an()), ~J ? (j = _e[J], j ? j.p(k, Z) : (j = _e[J] = ke[J](k), j.c()), Le(j, 1), j.m(e, null)) : j = null);
|
1255
|
+
},
|
1256
|
+
i: function(k) {
|
1257
|
+
M || (Le(b.$$.fragment, k), Le(f.$$.fragment, k), Le(j), M = !0);
|
1258
|
+
},
|
1259
|
+
o: function(k) {
|
1260
|
+
De(b.$$.fragment, k), De(f.$$.fragment, k), De(j), M = !1;
|
1261
|
+
},
|
1262
|
+
d: function(k) {
|
1263
|
+
k && W(e), G && G.d(), V.d(k), jt(b), jt(f), n[48](null), n[49](null), n[50](null), $ && $.d(), le && le.d(), ue && ue.d(), be && be.d(), ee.d(), n[54](null), ~J && _e[J].d();
|
1264
|
+
}
|
1265
|
+
};
|
1266
|
+
return U("SvelteRegisterBlock", {
|
1267
|
+
block: Pe,
|
1268
|
+
id: On.name,
|
1269
|
+
type: "component",
|
1270
|
+
source: "",
|
1271
|
+
ctx: n
|
1272
|
+
}), Pe;
|
1273
|
+
}
|
1274
|
+
function di(n, e, i) {
|
1275
|
+
const o = e.videoHeight >= e.videoWidth && i.height >= i.width || e.videoHeight < e.videoWidth && i.height < i.width;
|
1276
|
+
n.drawImage(
|
1277
|
+
e,
|
1278
|
+
o ? 0 : e.videoWidth / 2 - i.width,
|
1279
|
+
0,
|
1280
|
+
o ? e.videoWidth : e.videoHeight * (i.width / i.height),
|
1281
|
+
e.videoHeight,
|
1282
|
+
0,
|
1283
|
+
0,
|
1284
|
+
i.width,
|
1285
|
+
i.height
|
1286
|
+
);
|
1287
|
+
}
|
1288
|
+
function ao(n, e, i) {
|
1289
|
+
let o, s, a, l, c, r, b, m, f, R, O, C, h, E, g, L, q, S, Y, ye, he, me, we, X, Q, x, J, j, M, G, V, $, le;
|
1290
|
+
F(mt, "retakePhoto"), D(n, mt, (t) => i(71, o = t)), F(fe, "cameraStatusStore"), D(n, fe, (t) => i(17, a = t)), F(qe, "facingMode"), D(n, qe, (t) => i(73, l = t)), F(et, "selectedVideoDeviceId"), D(n, et, (t) => i(74, c = t)), F(Fe, "videoStore"), D(n, Fe, (t) => i(18, r = t)), F(Zt, "cameraDevicesStore"), D(n, Zt, (t) => i(75, b = t)), F(Ne, "captured"), D(n, Ne, (t) => i(19, m = t)), F(bt, "clearedVideoSrcObject"), D(n, bt, (t) => i(76, f = t)), F(Dt, "_stream"), D(n, Dt, (t) => i(77, R = t)), F(xt, "automaticCapture"), D(n, xt, (t) => i(78, O = t)), F($t, "showLivenessResultToast"), D(n, $t, (t) => i(79, C = t)), F(Be, "unconformitiesStore"), D(n, Be, (t) => i(20, h = t)), F(He, "originalCapture"), D(n, He, (t) => i(80, E = t)), F(pe, "requestResult"), D(n, pe, (t) => i(21, g = t)), F(ht, "saved"), D(n, ht, (t) => i(22, L = t)), F(_t, "justification"), D(n, _t, (t) => i(23, q = t)), F(Se, "image"), D(n, Se, (t) => i(24, S = t)), F(ei, "boxStore"), D(n, ei, (t) => i(81, ye = t)), F(ti, "enableFaceApi"), D(n, ti, (t) => i(26, he = t)), F(tt, "ready"), D(n, tt, (t) => i(27, me = t)), F(gt, "selectedTab"), D(n, gt, (t) => i(82, we = t)), F(ii, "_"), D(n, ii, (t) => i(28, X = t)), F(ni, "captureLivenessIdrndEndpoint"), D(n, ni, (t) => i(83, Q = t)), F(it, "blob"), D(n, it, (t) => i(84, x = t)), F(Lt, "idrndInitialized"), D(n, Lt, (t) => i(85, J = t)), F(At, "idrndVideoStoreDimensions"), D(n, At, (t) => i(86, j = t)), F(Nt, "ovalDimensions"), D(n, Nt, (t) => i(87, M = t)), F(Bt, "faceFound"), D(n, Bt, (t) => i(29, G = t)), F(oi, "isLoading"), D(n, oi, (t) => i(30, V = t)), F(ai, "showFaceWhileValidating"), D(n, ai, (t) => i(31, $ = t)), F(si, "exportButtonDisabled"), D(n, si, (t) => i(32, le = t));
|
1291
|
+
let { $$slots: ue = {}, $$scope: be } = e;
|
1292
|
+
eo("face-collector", ue, []);
|
1293
|
+
let T, ae, ee, ke = !1, _e = {}, Me = !1, { enableMinutiae: Pe } = e, { videoDimensions: ie } = e, { noTabs: k } = e, { weightsPath: Z } = e, { evaluatePhoto: ge } = e, { showCaptureButton: ot } = e, { showUnconformities: at } = e, { videoFilter: Ae } = e;
|
1294
|
+
const Qe = ui(!1);
|
1295
|
+
F(Qe, "startFaceApi"), D(n, Qe, (t) => i(72, s = t));
|
1296
|
+
const We = ui("data:image/png;base64");
|
1297
|
+
F(We, "dataTypePrefix"), D(n, We, (t) => i(25, Y = t));
|
1298
|
+
let { widgetInstance: ce } = e, Te, H, Ue = !1, st = !1, Je = !0, Ee = !0, Ge = !1, St = 0, Ce = "", lt = 0, Xt = 5, It = 3e3, ct = !0, rt = 0, ut = !1, Ve = !1, Ye = "";
|
1299
|
+
const Pt = Bi.mixin({
|
1300
|
+
toast: !0,
|
1301
|
+
position: "bottom-left",
|
1302
|
+
timer: 13e3,
|
1303
|
+
timerProgressBar: !0
|
1304
|
+
});
|
1305
|
+
Mi(async () => {
|
1306
|
+
Wi("Mounting Face Collector!"), _(tt, me = !1, me), _(Bt, G = !1, G), _(Ne, m = !1, m), _(qe, l = pt.FRONT_CAMERA, l), oe() && (import("./index-no-detector_acb82d83_2.2.3-RC01.js"), Ci()), he && (await Ui(Z), Me = !0), await Oe();
|
1307
|
+
});
|
1308
|
+
function Tt(t, y) {
|
1309
|
+
t.clearRect(0, 0, H.width, H.height), t.save(), Ae == "blur" ? (t.filter = `blur(${y.width / 60}px)`, t.rect(0, 0, H.width, H.height)) : Ae != "none" ? (t.fillStyle = Ae, t.fillRect(0, 0, H.width, H.height)) : (t.beginPath(), t.rect(0, 0, H.width, H.height));
|
1310
|
+
const P = H.height * 0.65, I = P / 1.45, A = r.videoWidth / 2, ne = r.videoHeight * 0.51;
|
1311
|
+
_(Nt, M.width = I, M), t.ellipse(A, ne, I / 2, P / 2, 0, 0, 2 * Math.PI, !0), t.clip(), di(t, y, H), t.restore(), t.save(), t.beginPath();
|
1312
|
+
const xe = window.getComputedStyle(H).getPropertyValue("--p"), $e = window.getComputedStyle(H).getPropertyValue("--su");
|
1313
|
+
if (t.strokeStyle = `hsl(${xe})`, t.lineWidth = 16, t.ellipse(A, ne, I / 2, P / 2, 0, 0, 2 * Math.PI), t.stroke(), ke && !ut) {
|
1314
|
+
const dt = 1 - (rt - (/* @__PURE__ */ new Date()).getTime()) / It;
|
1315
|
+
t.save(), t.beginPath(), t.lineWidth = 16, t.strokeStyle = `hsl(${$e})`, t.ellipse(A, ne, I / 2, P / 2, 0, 0 - Math.PI / 2, 1.5 * (Math.PI * 2 * dt) - Math.PI / 2), t.stroke();
|
1316
|
+
}
|
1317
|
+
t.beginPath();
|
1318
|
+
const re = new Path2D();
|
1319
|
+
re.ellipse(A, ne, I / 2, P / 2, 0, 0, 2 * Math.PI), t.clip(re), di(t, y, H), t.restore();
|
1320
|
+
}
|
1321
|
+
function Ci() {
|
1322
|
+
ce.addEventListener("open", (t) => {
|
1323
|
+
const y = t.detail[0].video;
|
1324
|
+
_(
|
1325
|
+
At,
|
1326
|
+
j = {
|
1327
|
+
width: y.videoWidth,
|
1328
|
+
height: y.videoHeight
|
1329
|
+
},
|
1330
|
+
j
|
1331
|
+
), i(4, T.srcObject = y.srcObject, T), i(11, Je = !1);
|
1332
|
+
function P() {
|
1333
|
+
Ee || (Tt(H.getContext("2d"), y), ze(T, P, !0));
|
1334
|
+
}
|
1335
|
+
P();
|
1336
|
+
}), ce.addEventListener("error", (t) => {
|
1337
|
+
console.error(t), t.detail[0].message === "Device in use" ? _(fe, a = te.CAMERA_IN_USE_ERROR, a) : t.detail[0].message === "Permission denied" || t.detail[0].message === "Permission dismissed" ? _(fe, a = te.CAMERA_DENIED_ERROR, a) : t.detail[0].message === "Requested device not found" && _(fe, a = te.DEVICE_NOT_FOUND_ERROR, a), i(11, Je = !1);
|
1338
|
+
}), ce.addEventListener("faceDetection", (t) => {
|
1339
|
+
}), ce.addEventListener("close", async (t) => {
|
1340
|
+
m || (Ue = !1), i(12, Ee = !0), i(13, Ge = !1), a === te.OK && _(fe, a = te.CAMERA_CLOSED_ERROR, a);
|
1341
|
+
}), ce.addEventListener("initialize", async (t) => {
|
1342
|
+
st = !0, _(Lt, J = !0, J), we === vt.Face && !Ue && !m && st && await Ot();
|
1343
|
+
}), ce.addEventListener("capture", async (t) => {
|
1344
|
+
i(14, Ce = "");
|
1345
|
+
const { encryptedFile: y, photo: P } = t.detail[0];
|
1346
|
+
_(it, x = y, x), i(13, Ge = !1), _(pe, g = se.OK, g), _(Be, h.isLoading = !0, h), _(Ne, m = !0, m), Ue = !1;
|
1347
|
+
const I = (await wt(P)).split(",");
|
1348
|
+
if (_(We, Y = I[0], Y), _(Se, S = I[1], S), _(He, E = I[1], E), !Q) {
|
1349
|
+
let re, dt;
|
1350
|
+
try {
|
1351
|
+
({ bodyParts: re, icaoWarnings: dt } = await kt(E, ge, (await wt(y)).split(",")[1])), window.dispatchEvent(new CustomEvent(
|
1352
|
+
"face-unconformities-validated",
|
1353
|
+
{
|
1354
|
+
detail: {
|
1355
|
+
bodyParts: re,
|
1356
|
+
icaoWarnings: dt,
|
1357
|
+
status: g
|
1358
|
+
}
|
1359
|
+
}
|
1360
|
+
));
|
1361
|
+
} catch (je) {
|
1362
|
+
console.error(je);
|
1363
|
+
let Ft = Mt.UNKNOWN, Yt = [], Ai = [];
|
1364
|
+
if (je instanceof li && je.response?.status === 400)
|
1365
|
+
if (je.response.data && Array.isArray(je.response.data.bodyParts)) {
|
1366
|
+
Yt = je.response.data.bodyParts, Ai = je.response.data.icaoWarnings;
|
1367
|
+
const Ni = Yt.find((Yn) => Yn.livenessResult.error);
|
1368
|
+
Ft = Ni?.livenessResult.error_code, _(pe, g = se.LIVENESS_DETECTION_FAILURE, g), Ni?.livenessResult.error_code || _(pe, g = se.UNKNOWN_LIVENESS_ERROR, g), i(14, Ce = Mt[Ft]), console.error("Liveness error:", Ft);
|
1369
|
+
} else
|
1370
|
+
_(pe, g = se.TEMPLATE_EXTRACTION_ERROR, g);
|
1371
|
+
else
|
1372
|
+
_(pe, g = se.UNKNOWN_LIVENESS_ERROR, g), Pt.fire({
|
1373
|
+
icon: "error",
|
1374
|
+
title: "Falha ao comunicar com serviço de Liveness"
|
1375
|
+
});
|
1376
|
+
_(Be, h.isLoading = !1, h), window.dispatchEvent(new CustomEvent(
|
1377
|
+
"face-unconformities-validated",
|
1378
|
+
{
|
1379
|
+
detail: {
|
1380
|
+
bodyParts: Yt,
|
1381
|
+
errorCode: Ft,
|
1382
|
+
translatedError: X(Ce),
|
1383
|
+
status: g,
|
1384
|
+
icaoWarnings: Ai
|
1385
|
+
}
|
1386
|
+
}
|
1387
|
+
));
|
1388
|
+
return;
|
1389
|
+
}
|
1390
|
+
if (g !== se.OK) {
|
1391
|
+
_(Be, h.isLoading = !1, h);
|
1392
|
+
return;
|
1393
|
+
}
|
1394
|
+
re[0].livenessResult && Jt(re[0].livenessResult), re.length !== 0 && re[0].data && _(Se, S = re[0].data, S), Ct(dt);
|
1395
|
+
return;
|
1396
|
+
}
|
1397
|
+
let A, ne;
|
1398
|
+
try {
|
1399
|
+
ne = await Vi(y), Jt(ne.data);
|
1400
|
+
} catch (re) {
|
1401
|
+
_(pe, g = se.UNKNOWN_LIVENESS_ERROR, g), console.error(re), re instanceof li && re.response?.status === 400 ? (A = re.response.data.error_code, i(14, Ce = Mt[A]), console.error("Liveness error:", A), _(pe, g = se.LIVENESS_DETECTION_FAILURE, g)) : Pt.fire({
|
1402
|
+
icon: "error",
|
1403
|
+
title: "Falha ao comunicar com serviço de Liveness"
|
1404
|
+
});
|
1405
|
+
}
|
1406
|
+
if (g !== se.OK) {
|
1407
|
+
_(Be, h.isLoading = !1, h), window.dispatchEvent(new CustomEvent(
|
1408
|
+
"face-unconformities-validated",
|
1409
|
+
{
|
1410
|
+
detail: {
|
1411
|
+
bodyParts: [
|
1412
|
+
{
|
1413
|
+
bodyPart: "FACE",
|
1414
|
+
data: E,
|
1415
|
+
livenessBlob: (await wt(y)).split(",")[1],
|
1416
|
+
...ne && { livenessResult: ne }
|
1417
|
+
}
|
1418
|
+
],
|
1419
|
+
...A && { errorCode: A },
|
1420
|
+
...Ce && { translatedError: X(Ce) },
|
1421
|
+
status: g
|
1422
|
+
}
|
1423
|
+
}
|
1424
|
+
));
|
1425
|
+
return;
|
1426
|
+
}
|
1427
|
+
let { bodyParts: xe, icaoWarnings: $e } = await kt(E, ge);
|
1428
|
+
window.dispatchEvent(new CustomEvent(
|
1429
|
+
"face-unconformities-validated",
|
1430
|
+
{
|
1431
|
+
detail: {
|
1432
|
+
bodyParts: xe,
|
1433
|
+
icaoWarnings: $e,
|
1434
|
+
status: g,
|
1435
|
+
errorCode: A,
|
1436
|
+
...Ce && { translatedError: X(Ce) }
|
1437
|
+
}
|
1438
|
+
}
|
1439
|
+
)), xe[0].data && _(Se, S = xe[0].data, S), Ct($e);
|
1440
|
+
});
|
1441
|
+
}
|
1442
|
+
async function Oe(t) {
|
1443
|
+
const [y, P] = (ie ?? "")?.replaceAll(" ", "")?.split("x")?.map((I) => I ? parseInt(I) : void 0);
|
1444
|
+
if (!(!y || !P)) {
|
1445
|
+
if (_(Fe, r = { videoWidth: y, videoHeight: P }, r), oe() && P < y && yt() && _(Fe, r = { videoWidth: P, videoHeight: y }, r), oe()) {
|
1446
|
+
Ot();
|
1447
|
+
return;
|
1448
|
+
}
|
1449
|
+
await yi(y, P, t);
|
1450
|
+
}
|
1451
|
+
}
|
1452
|
+
function Ot() {
|
1453
|
+
oe() && (_(fe, a = te.OK, a), ce && "openCamera" in ce && ce.openCamera(), Ue = !0, i(12, Ee = !1), i(11, Je = !0));
|
1454
|
+
}
|
1455
|
+
async function Ze() {
|
1456
|
+
if (he && !Me)
|
1457
|
+
return ze(T, Ze);
|
1458
|
+
if (T) {
|
1459
|
+
if (we !== vt.Face && !k)
|
1460
|
+
return ze(T, Ze);
|
1461
|
+
_(tt, me = !0, me), he ? (s || _(Qe, s = !0, s), oe() || Tt(H.getContext("2d"), T), ze(T, Ze)) : (Tt(H.getContext("2d"), T), ze(T, Ze));
|
1462
|
+
}
|
1463
|
+
}
|
1464
|
+
async function Qt() {
|
1465
|
+
if (ri(), _(pe, g = se.OK, g), oe()) {
|
1466
|
+
i(13, Ge = !0), ce.takePhoto();
|
1467
|
+
return;
|
1468
|
+
}
|
1469
|
+
if (_(Ne, m = !0, m), he) {
|
1470
|
+
const [t] = await (await import("./face_api_0e3ce8c8_2.2.3-RC01.js")).extractFaces(T, [ye]), y = t.toDataURL("image/jpeg").split(",");
|
1471
|
+
_(We, Y = y[0], Y), _(Se, S = y[1], S), _(He, E = y[1], E);
|
1472
|
+
let { bodyParts: P, icaoWarnings: I } = await kt(S, ge);
|
1473
|
+
window.dispatchEvent(new CustomEvent(
|
1474
|
+
"face-unconformities-validated",
|
1475
|
+
{
|
1476
|
+
detail: {
|
1477
|
+
bodyParts: P,
|
1478
|
+
icaoWarnings: I,
|
1479
|
+
status: g
|
1480
|
+
}
|
1481
|
+
}
|
1482
|
+
)), P.length !== 0 && P[0].data && _(Se, S = P[0].data, S), Ct(I);
|
1483
|
+
} else {
|
1484
|
+
const t = document.createElement("canvas"), y = t.getContext("2d");
|
1485
|
+
t.width = T.width, t.height = T.height, y?.drawImage(T, 0, 0, t.width, t.height);
|
1486
|
+
const P = t.toDataURL("image/jpeg").split(",");
|
1487
|
+
_(We, Y = P[0], Y), _(Se, S = P[1], S), _(He, E = P[1], E);
|
1488
|
+
let { bodyParts: I, icaoWarnings: A } = await kt(S, ge);
|
1489
|
+
window.dispatchEvent(new CustomEvent(
|
1490
|
+
"face-unconformities-validated",
|
1491
|
+
{
|
1492
|
+
detail: {
|
1493
|
+
bodyParts: I,
|
1494
|
+
icaoWarnings: A,
|
1495
|
+
status: g
|
1496
|
+
}
|
1497
|
+
}
|
1498
|
+
)), I.length !== 0 && I[0].data && _(Se, S = I[0].data, S), Ct(A);
|
1499
|
+
}
|
1500
|
+
}
|
1501
|
+
function ft() {
|
1502
|
+
const t = {
|
1503
|
+
bodyPart: "FACE",
|
1504
|
+
data: S,
|
1505
|
+
justification: q
|
1506
|
+
};
|
1507
|
+
_(ht, L = !0, L), Rt(it) && wt(Rt(it)).then((y) => {
|
1508
|
+
t.livenessBlob = y.split(",")[1];
|
1509
|
+
}), window.dispatchEvent(new CustomEvent("export-face", { detail: t }));
|
1510
|
+
}
|
1511
|
+
function Ke() {
|
1512
|
+
window.dispatchEvent(new CustomEvent("face-scrapped")), _(ht, L = !1, L), _(pe, g = se.OK, g), _(Ne, m = !1, m), _(He, E = "", E), _(Be, h.unconformities = [], h);
|
1513
|
+
const t = Rt(Wt);
|
1514
|
+
t.closedMouth = !1, t.isPersonCloseEnough = !1, t.isPersonTooclose = !0, t.isPersonInFrame = !1, i(16, Ye = ""), i(15, Ve = !1), Wt.set(t), Ee && Ot();
|
1515
|
+
}
|
1516
|
+
function Jt(t) {
|
1517
|
+
let y = "", P = "success";
|
1518
|
+
t.isAlive ? y = `Vivacidade de face (${t.face_liveness.probability.toFixed(2)}) e de captura (${t.capture_liveness.probability}, ${t.capture_liveness.score.toFixed(2)}) verificados!` : t?.face_liveness?.probability && (P = "error", y = `Vivacidade de face (${t.face_liveness.probability.toFixed(2)}) e de captura (${t.capture_liveness.probability}, ${t.capture_liveness.score.toFixed(2)}) insuficientes!`), C && Pt.fire({ icon: P, title: y });
|
1519
|
+
}
|
1520
|
+
async function yi(t, y, P) {
|
1521
|
+
try {
|
1522
|
+
if (a == te.CAMERA_ORIENTATION_PORTRAIT)
|
1523
|
+
return;
|
1524
|
+
await ci();
|
1525
|
+
const { deviceId: I, width: A, height: ne, aspectRatio: xe, facingMode: $e, touchPoints: re } = await Ki(t, y, l, P);
|
1526
|
+
A < t && ne < y && _(
|
1527
|
+
Fe,
|
1528
|
+
r = {
|
1529
|
+
videoWidth: A,
|
1530
|
+
videoHeight: ne
|
1531
|
+
},
|
1532
|
+
r
|
1533
|
+
), yt() && (!$e || re <= 1) && A > ne && _(
|
1534
|
+
Fe,
|
1535
|
+
r = {
|
1536
|
+
videoWidth: ne,
|
1537
|
+
videoHeight: A
|
1538
|
+
},
|
1539
|
+
r
|
1540
|
+
), _(et, c = I || b[0].deviceId, c), _(fe, a = te.OK, a);
|
1541
|
+
} catch (I) {
|
1542
|
+
const A = I;
|
1543
|
+
i(12, Ee = !0);
|
1544
|
+
const ne = Et(I) && I.constraint ? I.constraint : "";
|
1545
|
+
console.error(A, ne), Et(A) && "message" in A && A.message.includes("Permission denied") && (console.error("User didn't give permission to use camera!"), _(fe, a = te.CAMERA_DENIED_ERROR, a)), Et(A) && "message" in A && A.message.includes("Requested device not found") && _(fe, a = te.DEVICE_NOT_FOUND_ERROR, a), (ne.includes("width") || ne.includes("height")) && (console.error(`Camera does not meet the minimum supported requirements! (${ne})`), _(fe, a = te.CAMERA_UNSUPPORTED, a));
|
1546
|
+
}
|
1547
|
+
}
|
1548
|
+
const Ei = Fe.subscribe((t) => {
|
1549
|
+
T && ae && (i(4, T.width = t.videoWidth, T), i(4, T.height = t.videoHeight, T), i(5, ae.width = t.videoWidth, ae), i(5, ae.height = t.videoHeight, ae), i(9, Te.width = t.videoWidth, Te), i(9, Te.height = t.videoHeight, Te), i(10, H.width = t.videoWidth, H), i(10, H.height = t.videoHeight, H));
|
1550
|
+
}), Ri = Wt.subscribe((t) => {
|
1551
|
+
let y = "";
|
1552
|
+
if (t.isPersonCloseEnough ? t.isPersonTooclose ? y = "faceCollector.moveAwayCamera" : t.isPersonInFrame ? t.closedMouth || (y = "faceCollector.dontOpenMouth") : y = "faceCollector.stayInFrame" : y = "faceCollector.comeCloserCamera", y != "" && y != Ye && (i(15, Ve = !1), setTimeout(
|
1553
|
+
() => {
|
1554
|
+
i(16, Ye = y), i(15, Ve = !0);
|
1555
|
+
},
|
1556
|
+
1e3
|
1557
|
+
)), !m && O && !ke && t.isPersonInFrame && t.closedMouth && !(!t.isPersonCloseEnough || t.isPersonTooclose)) {
|
1558
|
+
i(7, ke = !0), i(15, Ve = !1), rt = (/* @__PURE__ */ new Date()).getTime() + It;
|
1559
|
+
const P = setInterval(
|
1560
|
+
() => {
|
1561
|
+
if (!O || m || oe() && Ee || !t.isPersonCloseEnough || t.isPersonTooclose || !t.closedMouth || !t.isPersonInFrame) {
|
1562
|
+
i(7, ke = !1), ut = !0, setTimeout(
|
1563
|
+
() => {
|
1564
|
+
ut = !1;
|
1565
|
+
},
|
1566
|
+
1500
|
1567
|
+
), clearInterval(P);
|
1568
|
+
return;
|
1569
|
+
}
|
1570
|
+
const I = (/* @__PURE__ */ new Date()).getTime();
|
1571
|
+
Math.floor((rt - I) % (1e3 * 60) / 1e3) <= 0 && (clearInterval(P), i(7, ke = !1), document.getElementsByTagName("biometric-collector")?.[0]?.shadowRoot?.getElementById("bry-cc-capture-btn")?.click());
|
1572
|
+
},
|
1573
|
+
100
|
1574
|
+
);
|
1575
|
+
}
|
1576
|
+
}), Si = Ne.subscribe((t) => {
|
1577
|
+
ee && (t ? (ee.classList.remove("flex"), ee.classList.add("hidden")) : (ee.classList.add("flex"), ee.classList.remove("hidden")));
|
1578
|
+
}), Ii = bt.subscribe((t) => {
|
1579
|
+
T && t && (console.log("setting null in video srcObject"), i(4, T.srcObject = null, T), i(4, T.src = "", T));
|
1580
|
+
});
|
1581
|
+
gt.subscribe(async (t) => {
|
1582
|
+
t === vt.Face && await ci();
|
1583
|
+
});
|
1584
|
+
const Pi = et.subscribe(async (t) => {
|
1585
|
+
if (oe() || !t)
|
1586
|
+
return;
|
1587
|
+
T || i(8, _e = {});
|
1588
|
+
const { videoHeight: y, videoWidth: P } = r;
|
1589
|
+
try {
|
1590
|
+
const I = await ji(P, y, t);
|
1591
|
+
i(4, T.srcObject = I, T), _(Dt, R = I, R), _(bt, f = !1, f), ct || (_(fe, a = te.CAMERA_ORIENTATION_PORTRAIT, a), Ut());
|
1592
|
+
} catch (I) {
|
1593
|
+
const A = I;
|
1594
|
+
i(12, Ee = !0), Et(A) && "message" in A && A.message.includes("Requested device not found") && _(fe, a = te.DEVICE_NOT_FOUND_ERROR, a);
|
1595
|
+
}
|
1596
|
+
}), Ti = gt.subscribe(async (t) => {
|
1597
|
+
t === vt.Face && oe() && !Ue && !m && st && await Oe();
|
1598
|
+
}), Oi = Qe.subscribe(async (t) => {
|
1599
|
+
t && Gt();
|
1600
|
+
}), Fi = qi.subscribe(async (t) => {
|
1601
|
+
if (r) {
|
1602
|
+
if (!yt()) {
|
1603
|
+
const y = b.find((I) => I.deviceId !== c), P = y ? y.deviceId : b[0].deviceId;
|
1604
|
+
Oe(P);
|
1605
|
+
return;
|
1606
|
+
}
|
1607
|
+
t ? (_(qe, l = pt.REAR_CAMERA, l), await Oe()) : (_(qe, l = pt.FRONT_CAMERA, l), await Oe());
|
1608
|
+
}
|
1609
|
+
}), Di = Hi.subscribe(async (t) => {
|
1610
|
+
!t.isSupported || !yt() || (ct = t.orientation.includes("portrait"), ct ? (_(fe, a = te.OK, a), r && (_(et, c = "", c), _(qe, l = pt.FRONT_CAMERA, l), await Oe())) : (_(fe, a = te.CAMERA_ORIENTATION_PORTRAIT, a), Ut()));
|
1611
|
+
});
|
1612
|
+
async function Gt() {
|
1613
|
+
let t;
|
1614
|
+
if (lt >= Xt) {
|
1615
|
+
lt = 0;
|
1616
|
+
const y = await Qi(), P = await import("./face_api_0e3ce8c8_2.2.3-RC01.js");
|
1617
|
+
let I;
|
1618
|
+
I = P.detectSingleFace(H, y), t = await I.withFaceLandmarks(), ae.getContext("2d")?.clearRect(0, 0, ae.width, ae.height);
|
1619
|
+
} else
|
1620
|
+
lt++;
|
1621
|
+
t ? Xi(t, ae, Pe) : Ji(), s && ze(T, Gt);
|
1622
|
+
}
|
1623
|
+
mt.subscribe(async (t) => {
|
1624
|
+
t && (Ke(), _(mt, o = !1, o));
|
1625
|
+
});
|
1626
|
+
const Li = tt.subscribe((t) => {
|
1627
|
+
t && window.dispatchEvent(new CustomEvent("brycc-camera-ready"));
|
1628
|
+
});
|
1629
|
+
zi(() => {
|
1630
|
+
Ut(), Si(), Ri(), Ei(), Ii(), Pi(), Ti(), clearInterval(St), Oi(), Fi(), Di(), Li(), ri(), St = 0;
|
1631
|
+
}), n.$$.on_mount.push(function() {
|
1632
|
+
Pe === void 0 && !("enableMinutiae" in e || n.$$.bound[n.$$.props.enableMinutiae]) && Ie.warn("<face-collector> was created without expected prop 'enableMinutiae'"), ie === void 0 && !("videoDimensions" in e || n.$$.bound[n.$$.props.videoDimensions]) && Ie.warn("<face-collector> was created without expected prop 'videoDimensions'"), k === void 0 && !("noTabs" in e || n.$$.bound[n.$$.props.noTabs]) && Ie.warn("<face-collector> was created without expected prop 'noTabs'"), Z === void 0 && !("weightsPath" in e || n.$$.bound[n.$$.props.weightsPath]) && Ie.warn("<face-collector> was created without expected prop 'weightsPath'"), ge === void 0 && !("evaluatePhoto" in e || n.$$.bound[n.$$.props.evaluatePhoto]) && Ie.warn("<face-collector> was created without expected prop 'evaluatePhoto'"), ot === void 0 && !("showCaptureButton" in e || n.$$.bound[n.$$.props.showCaptureButton]) && Ie.warn("<face-collector> was created without expected prop 'showCaptureButton'"), at === void 0 && !("showUnconformities" in e || n.$$.bound[n.$$.props.showUnconformities]) && Ie.warn("<face-collector> was created without expected prop 'showUnconformities'"), Ae === void 0 && !("videoFilter" in e || n.$$.bound[n.$$.props.videoFilter]) && Ie.warn("<face-collector> was created without expected prop 'videoFilter'"), ce === void 0 && !("widgetInstance" in e || n.$$.bound[n.$$.props.widgetInstance]) && Ie.warn("<face-collector> was created without expected prop 'widgetInstance'");
|
1633
|
+
});
|
1634
|
+
const Fn = [
|
1635
|
+
"enableMinutiae",
|
1636
|
+
"videoDimensions",
|
1637
|
+
"noTabs",
|
1638
|
+
"weightsPath",
|
1639
|
+
"evaluatePhoto",
|
1640
|
+
"showCaptureButton",
|
1641
|
+
"showUnconformities",
|
1642
|
+
"videoFilter",
|
1643
|
+
"widgetInstance"
|
1644
|
+
];
|
1645
|
+
Object.keys(e).forEach((t) => {
|
1646
|
+
!~Fn.indexOf(t) && t.slice(0, 2) !== "$$" && t !== "slot" && Ie.warn(`<face-collector> was created with unknown prop '${t}'`);
|
1647
|
+
});
|
1648
|
+
function Dn(t) {
|
1649
|
+
nt[t ? "unshift" : "push"](() => {
|
1650
|
+
ce = t, i(0, ce);
|
1651
|
+
});
|
1652
|
+
}
|
1653
|
+
function Ln(t) {
|
1654
|
+
nt[t ? "unshift" : "push"](() => {
|
1655
|
+
T = t, i(4, T);
|
1656
|
+
});
|
1657
|
+
}
|
1658
|
+
const An = () => {
|
1659
|
+
oe() || _(
|
1660
|
+
Fe,
|
1661
|
+
r = {
|
1662
|
+
videoHeight: T.videoHeight,
|
1663
|
+
videoWidth: T.videoWidth
|
1664
|
+
},
|
1665
|
+
r
|
1666
|
+
);
|
1667
|
+
};
|
1668
|
+
function Nn(t) {
|
1669
|
+
nt[t ? "unshift" : "push"](() => {
|
1670
|
+
H = t, i(10, H);
|
1671
|
+
});
|
1672
|
+
}
|
1673
|
+
function Bn(t) {
|
1674
|
+
nt[t ? "unshift" : "push"](() => {
|
1675
|
+
ae = t, i(5, ae);
|
1676
|
+
});
|
1677
|
+
}
|
1678
|
+
function Mn(t) {
|
1679
|
+
nt[t ? "unshift" : "push"](() => {
|
1680
|
+
Te = t, i(9, Te);
|
1681
|
+
});
|
1682
|
+
}
|
1683
|
+
const Wn = () => Qt(), Un = () => ft(), Vn = () => Ke();
|
1684
|
+
function Kn(t) {
|
1685
|
+
nt[t ? "unshift" : "push"](() => {
|
1686
|
+
ee = t, i(6, ee);
|
1687
|
+
});
|
1688
|
+
}
|
1689
|
+
const jn = () => ft(), qn = () => Ke();
|
1690
|
+
function Hn() {
|
1691
|
+
q = this.value, _t.set(q);
|
1692
|
+
}
|
1693
|
+
const zn = () => ft(), Xn = () => Ke();
|
1694
|
+
function Qn() {
|
1695
|
+
q = this.value, _t.set(q);
|
1696
|
+
}
|
1697
|
+
const Jn = () => Ke(), Gn = async () => {
|
1698
|
+
await Oe();
|
1699
|
+
};
|
1700
|
+
return n.$$set = (t) => {
|
1701
|
+
"enableMinutiae" in t && i(39, Pe = t.enableMinutiae), "videoDimensions" in t && i(40, ie = t.videoDimensions), "noTabs" in t && i(41, k = t.noTabs), "weightsPath" in t && i(42, Z = t.weightsPath), "evaluatePhoto" in t && i(43, ge = t.evaluatePhoto), "showCaptureButton" in t && i(1, ot = t.showCaptureButton), "showUnconformities" in t && i(2, at = t.showUnconformities), "videoFilter" in t && i(44, Ae = t.videoFilter), "widgetInstance" in t && i(0, ce = t.widgetInstance);
|
1702
|
+
}, n.$capture_state = () => ({
|
1703
|
+
CameraStatus: ln,
|
1704
|
+
onDestroy: zi,
|
1705
|
+
onMount: Mi,
|
1706
|
+
_: ii,
|
1707
|
+
isLoading: oi,
|
1708
|
+
get: Rt,
|
1709
|
+
writable: ui,
|
1710
|
+
selectedTab: gt,
|
1711
|
+
TabEnum: vt,
|
1712
|
+
cameraDeniedPermission: to,
|
1713
|
+
faceValidationsStore: Wt,
|
1714
|
+
getFaceUnconformities: kt,
|
1715
|
+
image: Se,
|
1716
|
+
unconformitiesStore: Be,
|
1717
|
+
setupStream: ji,
|
1718
|
+
videoStore: Fe,
|
1719
|
+
requestResult: pe,
|
1720
|
+
cameraDevicesStore: Zt,
|
1721
|
+
justification: _t,
|
1722
|
+
saved: ht,
|
1723
|
+
captured: Ne,
|
1724
|
+
_stream: Dt,
|
1725
|
+
shutOffCamera: Ut,
|
1726
|
+
ready: tt,
|
1727
|
+
clearedVideoSrcObject: bt,
|
1728
|
+
enumerateDevices: ci,
|
1729
|
+
originalCapture: He,
|
1730
|
+
automaticCapture: xt,
|
1731
|
+
selectedVideoDeviceId: et,
|
1732
|
+
unconformityToi18nKey: io,
|
1733
|
+
translateAndSetUnconformities: Ct,
|
1734
|
+
requestResultEnum: se,
|
1735
|
+
retakePhoto: mt,
|
1736
|
+
showFaceWhileValidating: ai,
|
1737
|
+
getVideoDimensions: Ki,
|
1738
|
+
FaceExportStrategy: en,
|
1739
|
+
orientationData: Hi,
|
1740
|
+
FacingModeEnum: pt,
|
1741
|
+
facingMode: qe,
|
1742
|
+
swapCamera: qi,
|
1743
|
+
ConfBtn: $i,
|
1744
|
+
CameraBtn: sn,
|
1745
|
+
ExportBtn: tn,
|
1746
|
+
enableStrategy: nn,
|
1747
|
+
exportButtonDisabled: si,
|
1748
|
+
boxStore: ei,
|
1749
|
+
drawDetectionsInFace: Xi,
|
1750
|
+
enableFaceApi: ti,
|
1751
|
+
faceFound: Bt,
|
1752
|
+
getFaceDetectorOptions: Qi,
|
1753
|
+
ovalDimensions: Nt,
|
1754
|
+
setFaceNotFoundTimeout: Ji,
|
1755
|
+
blobToBase64: wt,
|
1756
|
+
isMobile: yt,
|
1757
|
+
isObject: Et,
|
1758
|
+
loadFaceApiAndWeights: Ui,
|
1759
|
+
loopCaller: ze,
|
1760
|
+
unLockScreen: ri,
|
1761
|
+
isLivenessEnabled: oe,
|
1762
|
+
loadingGif: ki,
|
1763
|
+
getLivenessIdrnd: Vi,
|
1764
|
+
blob: it,
|
1765
|
+
idrndErrorToi18nKey: Mt,
|
1766
|
+
showLivenessResultToast: $t,
|
1767
|
+
captureLivenessIdrndEndpoint: ni,
|
1768
|
+
idrndInitialized: Lt,
|
1769
|
+
idrndVideoStoreDimensions: At,
|
1770
|
+
Swal: Bi,
|
1771
|
+
AxiosError: li,
|
1772
|
+
cameraStatusStore: fe,
|
1773
|
+
CameraStatusEnum: te,
|
1774
|
+
log: Wi,
|
1775
|
+
video: T,
|
1776
|
+
detectionsCanvas: ae,
|
1777
|
+
enclosingDiv: ee,
|
1778
|
+
isCountingDown: ke,
|
1779
|
+
unique: _e,
|
1780
|
+
loadedFaceApiAndWeights: Me,
|
1781
|
+
enableMinutiae: Pe,
|
1782
|
+
videoDimensions: ie,
|
1783
|
+
noTabs: k,
|
1784
|
+
weightsPath: Z,
|
1785
|
+
evaluatePhoto: ge,
|
1786
|
+
showCaptureButton: ot,
|
1787
|
+
showUnconformities: at,
|
1788
|
+
videoFilter: Ae,
|
1789
|
+
startFaceApi: Qe,
|
1790
|
+
dataTypePrefix: We,
|
1791
|
+
widgetInstance: ce,
|
1792
|
+
maskCanvas: Te,
|
1793
|
+
displayCanvas: H,
|
1794
|
+
capturing: Ue,
|
1795
|
+
initialized: st,
|
1796
|
+
idrndLoading: Je,
|
1797
|
+
idrndClosed: Ee,
|
1798
|
+
waitingIdrndCaptureEvent: Ge,
|
1799
|
+
intervalId: St,
|
1800
|
+
livenessError: Ce,
|
1801
|
+
faceapiCounter: lt,
|
1802
|
+
faceapiFrameRate: Xt,
|
1803
|
+
countDownCapture: It,
|
1804
|
+
rightOrientation: ct,
|
1805
|
+
countDownFinishTime: rt,
|
1806
|
+
disableCountDown: ut,
|
1807
|
+
faceNotValidated: Ve,
|
1808
|
+
faceValidationAlert: Ye,
|
1809
|
+
toast: Pt,
|
1810
|
+
drawOval: Tt,
|
1811
|
+
drawVideoOnCanvas: di,
|
1812
|
+
registerIdrndListeners: Ci,
|
1813
|
+
openCamera: Oe,
|
1814
|
+
openCameraLiveness: Ot,
|
1815
|
+
play: Ze,
|
1816
|
+
capture: Qt,
|
1817
|
+
save: ft,
|
1818
|
+
retake: Ke,
|
1819
|
+
validateLiveness: Jt,
|
1820
|
+
selectDevice: yi,
|
1821
|
+
unsubscribeVideoDimensions: Ei,
|
1822
|
+
unsubscribeFaceValidations: Ri,
|
1823
|
+
unsubscribeCapturedState: Si,
|
1824
|
+
unsubscribeClearVideoSrc: Ii,
|
1825
|
+
unsubscribeSelectedStream: Pi,
|
1826
|
+
unsubscribeChangeTab: Ti,
|
1827
|
+
unsubscribeFaceApi: Oi,
|
1828
|
+
unsubscribeSwapCamera: Fi,
|
1829
|
+
unsubscribeOrientation: Di,
|
1830
|
+
faceapiLoop: Gt,
|
1831
|
+
unsubscribeReadyCameraEventEmitter: Li,
|
1832
|
+
$retakePhoto: o,
|
1833
|
+
$startFaceApi: s,
|
1834
|
+
$cameraStatusStore: a,
|
1835
|
+
$facingMode: l,
|
1836
|
+
$selectedVideoDeviceId: c,
|
1837
|
+
$videoStore: r,
|
1838
|
+
$cameraDevicesStore: b,
|
1839
|
+
$captured: m,
|
1840
|
+
$clearedVideoSrcObject: f,
|
1841
|
+
$_stream: R,
|
1842
|
+
$automaticCapture: O,
|
1843
|
+
$showLivenessResultToast: C,
|
1844
|
+
$unconformitiesStore: h,
|
1845
|
+
$originalCapture: E,
|
1846
|
+
$requestResult: g,
|
1847
|
+
$saved: L,
|
1848
|
+
$justification: q,
|
1849
|
+
$image: S,
|
1850
|
+
$dataTypePrefix: Y,
|
1851
|
+
$boxStore: ye,
|
1852
|
+
$enableFaceApi: he,
|
1853
|
+
$ready: me,
|
1854
|
+
$selectedTab: we,
|
1855
|
+
$_: X,
|
1856
|
+
$captureLivenessIdrndEndpoint: Q,
|
1857
|
+
$blob: x,
|
1858
|
+
$idrndInitialized: J,
|
1859
|
+
$idrndVideoStoreDimensions: j,
|
1860
|
+
$ovalDimensions: M,
|
1861
|
+
$faceFound: G,
|
1862
|
+
$isLoading: V,
|
1863
|
+
$showFaceWhileValidating: $,
|
1864
|
+
$exportButtonDisabled: le
|
1865
|
+
}), n.$inject_state = (t) => {
|
1866
|
+
"video" in t && i(4, T = t.video), "detectionsCanvas" in t && i(5, ae = t.detectionsCanvas), "enclosingDiv" in t && i(6, ee = t.enclosingDiv), "isCountingDown" in t && i(7, ke = t.isCountingDown), "unique" in t && i(8, _e = t.unique), "loadedFaceApiAndWeights" in t && (Me = t.loadedFaceApiAndWeights), "enableMinutiae" in t && i(39, Pe = t.enableMinutiae), "videoDimensions" in t && i(40, ie = t.videoDimensions), "noTabs" in t && i(41, k = t.noTabs), "weightsPath" in t && i(42, Z = t.weightsPath), "evaluatePhoto" in t && i(43, ge = t.evaluatePhoto), "showCaptureButton" in t && i(1, ot = t.showCaptureButton), "showUnconformities" in t && i(2, at = t.showUnconformities), "videoFilter" in t && i(44, Ae = t.videoFilter), "widgetInstance" in t && i(0, ce = t.widgetInstance), "maskCanvas" in t && i(9, Te = t.maskCanvas), "displayCanvas" in t && i(10, H = t.displayCanvas), "capturing" in t && (Ue = t.capturing), "initialized" in t && (st = t.initialized), "idrndLoading" in t && i(11, Je = t.idrndLoading), "idrndClosed" in t && i(12, Ee = t.idrndClosed), "waitingIdrndCaptureEvent" in t && i(13, Ge = t.waitingIdrndCaptureEvent), "intervalId" in t && (St = t.intervalId), "livenessError" in t && i(14, Ce = t.livenessError), "faceapiCounter" in t && (lt = t.faceapiCounter), "faceapiFrameRate" in t && (Xt = t.faceapiFrameRate), "countDownCapture" in t && (It = t.countDownCapture), "rightOrientation" in t && (ct = t.rightOrientation), "countDownFinishTime" in t && (rt = t.countDownFinishTime), "disableCountDown" in t && (ut = t.disableCountDown), "faceNotValidated" in t && i(15, Ve = t.faceNotValidated), "faceValidationAlert" in t && i(16, Ye = t.faceValidationAlert);
|
1867
|
+
}, e && "$$inject" in e && n.$inject_state(e.$$inject), [
|
1868
|
+
ce,
|
1869
|
+
ot,
|
1870
|
+
at,
|
1871
|
+
Ze,
|
1872
|
+
T,
|
1873
|
+
ae,
|
1874
|
+
ee,
|
1875
|
+
ke,
|
1876
|
+
_e,
|
1877
|
+
Te,
|
1878
|
+
H,
|
1879
|
+
Je,
|
1880
|
+
Ee,
|
1881
|
+
Ge,
|
1882
|
+
Ce,
|
1883
|
+
Ve,
|
1884
|
+
Ye,
|
1885
|
+
a,
|
1886
|
+
r,
|
1887
|
+
m,
|
1888
|
+
h,
|
1889
|
+
g,
|
1890
|
+
L,
|
1891
|
+
q,
|
1892
|
+
S,
|
1893
|
+
Y,
|
1894
|
+
he,
|
1895
|
+
me,
|
1896
|
+
X,
|
1897
|
+
G,
|
1898
|
+
V,
|
1899
|
+
$,
|
1900
|
+
le,
|
1901
|
+
Qe,
|
1902
|
+
We,
|
1903
|
+
Oe,
|
1904
|
+
Qt,
|
1905
|
+
ft,
|
1906
|
+
Ke,
|
1907
|
+
Pe,
|
1908
|
+
ie,
|
1909
|
+
k,
|
1910
|
+
Z,
|
1911
|
+
ge,
|
1912
|
+
Ae,
|
1913
|
+
Dn,
|
1914
|
+
Ln,
|
1915
|
+
An,
|
1916
|
+
Nn,
|
1917
|
+
Bn,
|
1918
|
+
Mn,
|
1919
|
+
Wn,
|
1920
|
+
Un,
|
1921
|
+
Vn,
|
1922
|
+
Kn,
|
1923
|
+
jn,
|
1924
|
+
qn,
|
1925
|
+
Hn,
|
1926
|
+
zn,
|
1927
|
+
Xn,
|
1928
|
+
Qn,
|
1929
|
+
Jn,
|
1930
|
+
Gn
|
1931
|
+
];
|
1932
|
+
}
|
1933
|
+
class so extends Zn {
|
1934
|
+
constructor(e) {
|
1935
|
+
super(), xn(
|
1936
|
+
this,
|
1937
|
+
{
|
1938
|
+
target: this.shadowRoot,
|
1939
|
+
props: $n(this.attributes),
|
1940
|
+
customElement: !0
|
1941
|
+
},
|
1942
|
+
ao,
|
1943
|
+
On,
|
1944
|
+
xi,
|
1945
|
+
{
|
1946
|
+
enableMinutiae: 39,
|
1947
|
+
videoDimensions: 40,
|
1948
|
+
noTabs: 41,
|
1949
|
+
weightsPath: 42,
|
1950
|
+
evaluatePhoto: 43,
|
1951
|
+
showCaptureButton: 1,
|
1952
|
+
showUnconformities: 2,
|
1953
|
+
videoFilter: 44,
|
1954
|
+
widgetInstance: 0,
|
1955
|
+
play: 3
|
1956
|
+
},
|
1957
|
+
null,
|
1958
|
+
[-1, -1, -1, -1]
|
1959
|
+
), e && (e.target && B(e.target, this, e.anchor), e.props && (this.$set(e.props), Re()));
|
1960
|
+
}
|
1961
|
+
static get observedAttributes() {
|
1962
|
+
return [
|
1963
|
+
"enableMinutiae",
|
1964
|
+
"videoDimensions",
|
1965
|
+
"noTabs",
|
1966
|
+
"weightsPath",
|
1967
|
+
"evaluatePhoto",
|
1968
|
+
"showCaptureButton",
|
1969
|
+
"showUnconformities",
|
1970
|
+
"videoFilter",
|
1971
|
+
"widgetInstance",
|
1972
|
+
"play"
|
1973
|
+
];
|
1974
|
+
}
|
1975
|
+
get enableMinutiae() {
|
1976
|
+
return this.$$.ctx[39];
|
1977
|
+
}
|
1978
|
+
set enableMinutiae(e) {
|
1979
|
+
this.$$set({ enableMinutiae: e }), Re();
|
1980
|
+
}
|
1981
|
+
get videoDimensions() {
|
1982
|
+
return this.$$.ctx[40];
|
1983
|
+
}
|
1984
|
+
set videoDimensions(e) {
|
1985
|
+
this.$$set({ videoDimensions: e }), Re();
|
1986
|
+
}
|
1987
|
+
get noTabs() {
|
1988
|
+
return this.$$.ctx[41];
|
1989
|
+
}
|
1990
|
+
set noTabs(e) {
|
1991
|
+
this.$$set({ noTabs: e }), Re();
|
1992
|
+
}
|
1993
|
+
get weightsPath() {
|
1994
|
+
return this.$$.ctx[42];
|
1995
|
+
}
|
1996
|
+
set weightsPath(e) {
|
1997
|
+
this.$$set({ weightsPath: e }), Re();
|
1998
|
+
}
|
1999
|
+
get evaluatePhoto() {
|
2000
|
+
return this.$$.ctx[43];
|
2001
|
+
}
|
2002
|
+
set evaluatePhoto(e) {
|
2003
|
+
this.$$set({ evaluatePhoto: e }), Re();
|
2004
|
+
}
|
2005
|
+
get showCaptureButton() {
|
2006
|
+
return this.$$.ctx[1];
|
2007
|
+
}
|
2008
|
+
set showCaptureButton(e) {
|
2009
|
+
this.$$set({ showCaptureButton: e }), Re();
|
2010
|
+
}
|
2011
|
+
get showUnconformities() {
|
2012
|
+
return this.$$.ctx[2];
|
2013
|
+
}
|
2014
|
+
set showUnconformities(e) {
|
2015
|
+
this.$$set({ showUnconformities: e }), Re();
|
2016
|
+
}
|
2017
|
+
get videoFilter() {
|
2018
|
+
return this.$$.ctx[44];
|
2019
|
+
}
|
2020
|
+
set videoFilter(e) {
|
2021
|
+
this.$$set({ videoFilter: e }), Re();
|
2022
|
+
}
|
2023
|
+
get widgetInstance() {
|
2024
|
+
return this.$$.ctx[0];
|
2025
|
+
}
|
2026
|
+
set widgetInstance(e) {
|
2027
|
+
this.$$set({ widgetInstance: e }), Re();
|
2028
|
+
}
|
2029
|
+
get play() {
|
2030
|
+
return this.$$.ctx[3];
|
2031
|
+
}
|
2032
|
+
set play(e) {
|
2033
|
+
throw new Error("<face-collector>: Cannot set read-only property 'play'");
|
2034
|
+
}
|
2035
|
+
}
|
2036
|
+
customElements.define("face-collector", so);
|
2037
|
+
export {
|
2038
|
+
so as default
|
2039
|
+
};
|
2040
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFjZUNvbGxlY3Rvcl9mZWE3ZTYzZV8yLjIuMy1SQzAxLmpzIiwic291cmNlcyI6WyIuLi9zcmMvbGliL2ZhY2VUYWIvRmFjZUNvbGxlY3Rvci5zdmVsdGUiXSwic291cmNlc0NvbnRlbnQiOlsiPHN2ZWx0ZTpvcHRpb25zIHRhZz1cImZhY2UtY29sbGVjdG9yXCIgLz5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IENhbWVyYVN0YXR1cyBmcm9tICcuL2NhbWVyYVN0YXR1cy9DYW1lcmFTdGF0dXMuc3ZlbHRlJztcbiAgaW1wb3J0IHsgb25EZXN0cm95LCBvbk1vdW50IH0gZnJvbSAnc3ZlbHRlJztcbiAgaW1wb3J0IHR5cGUgeyBCb2R5UGFydCwgQm9keVBhcnRSZXR1cm5UeXBlIH0gZnJvbSAnLi4vdmFsaWRhdG9ycy9iaW9tZXRyaWNzVmFsaWRhdG9yJztcbiAgaW1wb3J0IHsgXywgaXNMb2FkaW5nIH0gZnJvbSAnc3ZlbHRlLWkxOG4nO1xuICBpbXBvcnQgeyBnZXQsIHdyaXRhYmxlIH0gZnJvbSAnc3ZlbHRlL3N0b3JlJztcbiAgaW1wb3J0IHsgc2VsZWN0ZWRUYWIsIFRhYkVudW0gfSBmcm9tICcuLi90YWJCdG5zL3RhYlN0b3JlJztcbiAgaW1wb3J0IHtcbiAgICBjYW1lcmFEZW5pZWRQZXJtaXNzaW9uLFxuICAgIGZhY2VWYWxpZGF0aW9uc1N0b3JlLFxuICAgIGdldEZhY2VVbmNvbmZvcm1pdGllcyxcbiAgICBpbWFnZSxcbiAgICB1bmNvbmZvcm1pdGllc1N0b3JlLFxuICAgIHNldHVwU3RyZWFtLFxuICAgIHZpZGVvU3RvcmUsXG4gICAgcmVxdWVzdFJlc3VsdCxcbiAgICBjYW1lcmFEZXZpY2VzU3RvcmUsXG4gICAganVzdGlmaWNhdGlvbixcbiAgICBzYXZlZCxcbiAgICBjYXB0dXJlZCxcbiAgICBfc3RyZWFtLFxuICAgIHNodXRPZmZDYW1lcmEsXG4gICAgcmVhZHksXG4gICAgY2xlYXJlZFZpZGVvU3JjT2JqZWN0LFxuICAgIGVudW1lcmF0ZURldmljZXMsXG4gICAgb3JpZ2luYWxDYXB0dXJlLFxuICAgIGF1dG9tYXRpY0NhcHR1cmUsXG4gICAgc2VsZWN0ZWRWaWRlb0RldmljZUlkLFxuICAgIHVuY29uZm9ybWl0eVRvaTE4bktleSxcbiAgICB0cmFuc2xhdGVBbmRTZXRVbmNvbmZvcm1pdGllcyxcbiAgICByZXF1ZXN0UmVzdWx0RW51bSxcbiAgICByZXRha2VQaG90byxcbiAgICBzaG93RmFjZVdoaWxlVmFsaWRhdGluZyxcbiAgICBnZXRWaWRlb0RpbWVuc2lvbnMsXG4gICAgRmFjZUV4cG9ydFN0cmF0ZWd5LFxuICAgIG9yaWVudGF0aW9uRGF0YSxcbiAgICBGYWNpbmdNb2RlRW51bSxcbiAgICBmYWNpbmdNb2RlXG4gIH0gZnJvbSAnLi9mYWNlU3RvcmUnO1xuICBpbXBvcnQge1xuICAgIHN3YXBDYW1lcmFcbiAgfWZyb20gJy4uL2NvbmYvY29uZlN0b3JlJzsgIFxuICBpbXBvcnQgQ29uZkJ0biBmcm9tICcuLi9jb25mL0NvbmZCdG4uc3ZlbHRlJztcbiAgaW1wb3J0IENhbWVyYUJ0biBmcm9tICcuLi9jb25mL0NhbWVyYUJ0bi5zdmVsdGUnO1xuICBpbXBvcnQgRXhwb3J0QnRuIGZyb20gJy4uL2ZpbmdlcnNUYWIvYnV0dG9ucy9leHBvcnRCdG4vRXhwb3J0QnRuLnN2ZWx0ZSc7XG4gIGltcG9ydCB7IGVuYWJsZVN0cmF0ZWd5IH0gZnJvbSAnLi4vZmluZ2Vyc1RhYi9oYW5kL2hhbmRQYXJ0cy9maW5nZXJzU3RvcmUnO1xuICBpbXBvcnQgeyBleHBvcnRCdXR0b25EaXNhYmxlZCB9IGZyb20gJy4uL2ZpbmdlcnNUYWIvYnV0dG9ucy9leHBvcnRCdG4vZXhwb3J0U3RvcmUnO1xuICBpbXBvcnQgeyBib3hTdG9yZSwgZHJhd0RldGVjdGlvbnNJbkZhY2UsIGVuYWJsZUZhY2VBcGksIGZhY2VGb3VuZCwgZ2V0RmFjZURldGVjdG9yT3B0aW9ucywgb3ZhbERpbWVuc2lvbnMsIHNldEZhY2VOb3RGb3VuZFRpbWVvdXQgfSBmcm9tICcuL2ZhY2VBcGlTdG9yZSc7XG4gIGltcG9ydCB7IGJsb2JUb0Jhc2U2NCwgaXNNb2JpbGUsIGlzT2JqZWN0LCBsb2FkRmFjZUFwaUFuZFdlaWdodHMsIGxvb3BDYWxsZXIsIHVuTG9ja1NjcmVlbn0gZnJvbSAnLi4vdXRpbC91dGlsJztcbiAgaW1wb3J0IHsgaXNMaXZlbmVzc0VuYWJsZWQgfSBmcm9tICcuLi8uLi9tYWluU3RvcmUnO1xuICBpbXBvcnQgbG9hZGluZ0dpZiBmcm9tICcuLi8uLi9hc3NldHMvaW1nL0Jsb2Nrcy0xcy0yMDBweC5naWYnO1xuICBpbXBvcnQge1xuICAgIGdldExpdmVuZXNzSWRybmQsXG4gICAgYmxvYixcbiAgICBpZHJuZEVycm9yVG9pMThuS2V5LFxuICAgIHNob3dMaXZlbmVzc1Jlc3VsdFRvYXN0LFxuICAgIGNhcHR1cmVMaXZlbmVzc0lkcm5kRW5kcG9pbnQsXG4gICAgdHlwZSBsaXZlbmVzc1Jlc3VsdCxcbiAgICB0eXBlIGxpdmVuZXNzRXJyb3JSZXN1bHQsXG4gICAgaWRybmRJbml0aWFsaXplZCxcbiAgICBpZHJuZFZpZGVvU3RvcmVEaW1lbnNpb25zLFxuICB9IGZyb20gJy4vbGl2ZW5lc3MvTGl2ZW5lc3NTdG9yZSc7XG4gIGltcG9ydCB0eXBlIHsgU3dlZXRBbGVydEljb24gfSBmcm9tICdzd2VldGFsZXJ0Mic7XG4gIGltcG9ydCBTd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcbiAgaW1wb3J0IHsgQXhpb3NFcnJvciwgdHlwZSBBeGlvc1Jlc3BvbnNlIH0gZnJvbSAnYXhpb3MnO1xuICBpbXBvcnQgeyBjYW1lcmFTdGF0dXNTdG9yZSwgQ2FtZXJhU3RhdHVzRW51bSB9IGZyb20gJy4vY2FtZXJhU3RhdHVzL2NhbWVyYVN0YXR1c1N0b3JlJztcbiAgaW1wb3J0IHsgbG9nIH0gZnJvbSAnLi4vdXRpbC9sb2dnZXInO1xuXG4gIGxldCB2aWRlbzogSFRNTFZpZGVvRWxlbWVudDtcbiAgbGV0IGRldGVjdGlvbnNDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xuICBsZXQgZW5jbG9zaW5nRGl2OiBIVE1MRGl2RWxlbWVudDtcbiAgbGV0IGlzQ291bnRpbmdEb3duID0gZmFsc2U7XG4gIGxldCB1bmlxdWUgPSB7fTtcbiAgbGV0IGxvYWRlZEZhY2VBcGlBbmRXZWlnaHRzID0gZmFsc2U7XG5cbiAgLy8gUHJvcHNcbiAgZXhwb3J0IGxldCBlbmFibGVNaW51dGlhZTogYm9vbGVhbjtcbiAgZXhwb3J0IGxldCB2aWRlb0RpbWVuc2lvbnM6IHN0cmluZztcbiAgZXhwb3J0IGxldCBub1RhYnM6IGJvb2xlYW47XG4gIGV4cG9ydCBsZXQgd2VpZ2h0c1BhdGg6IHN0cmluZztcbiAgZXhwb3J0IGxldCBldmFsdWF0ZVBob3RvOiBib29sZWFuO1xuICBleHBvcnQgbGV0IHNob3dDYXB0dXJlQnV0dG9uOiBib29sZWFuO1xuICBleHBvcnQgbGV0IHNob3dVbmNvbmZvcm1pdGllczogYm9vbGVhbjtcbiAgZXhwb3J0IGxldCB2aWRlb0ZpbHRlcjogc3RyaW5nO1xuXG4gIGNvbnN0IHN0YXJ0RmFjZUFwaSA9IHdyaXRhYmxlKGZhbHNlKTtcbiAgY29uc3QgZGF0YVR5cGVQcmVmaXggPSB3cml0YWJsZSgnZGF0YTppbWFnZS9wbmc7YmFzZTY0Jyk7XG5cbiAgLy8gbGl2ZW5lc3MgcmVsYXRlZFxuICAvLyBwcm9wIHBhc3NpbmcgdXAgdG8gcGFyZW50XG4gIGV4cG9ydCBsZXQgd2lkZ2V0SW5zdGFuY2U6IEhUTUxJZExpdmVGYWNlQ2FwdHVyZUVsZW1lbnQ7XG4gIGxldCBtYXNrQ2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudDtcbiAgbGV0IGRpc3BsYXlDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xuICBsZXQgY2FwdHVyaW5nID0gZmFsc2U7XG4gIGxldCBpbml0aWFsaXplZCA9IGZhbHNlO1xuICBsZXQgaWRybmRMb2FkaW5nID0gdHJ1ZTtcbiAgbGV0IGlkcm5kQ2xvc2VkID0gdHJ1ZTtcbiAgbGV0IHdhaXRpbmdJZHJuZENhcHR1cmVFdmVudCA9IGZhbHNlO1xuICBsZXQgaW50ZXJ2YWxJZCA9IDA7XG4gIGxldCBsaXZlbmVzc0Vycm9yID0gJyc7XG4gIGxldCBmYWNlYXBpQ291bnRlciA9IDA7XG4gIGxldCBmYWNlYXBpRnJhbWVSYXRlID0gNTtcbiAgbGV0IGNvdW50RG93bkNhcHR1cmUgPSAzMDAwO1xuICBsZXQgcmlnaHRPcmllbnRhdGlvbiA9IHRydWU7XG5cbiAgbGV0IGNvdW50RG93bkZpbmlzaFRpbWUgPSAwO1xuICBsZXQgZGlzYWJsZUNvdW50RG93biA9IGZhbHNlO1xuXG4gIC8vIGZhY2UgdmFsaWRhdGlvbiByZWxhdGVkXG4gIGxldCBmYWNlTm90VmFsaWRhdGVkID0gZmFsc2U7XG4gIGxldCBmYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJyc7XG5cbiAgY29uc3QgdG9hc3QgPSBTd2FsLm1peGluKHtcbiAgICB0b2FzdDogdHJ1ZSxcbiAgICBwb3NpdGlvbjogJ2JvdHRvbS1sZWZ0JyxcbiAgICB0aW1lcjogMTMwMDAsXG4gICAgdGltZXJQcm9ncmVzc0JhcjogdHJ1ZSxcbiAgfSk7XG5cbiAgb25Nb3VudChhc3luYyAoKSA9PiB7XG4gICAgbG9nKCdNb3VudGluZyBGYWNlIENvbGxlY3RvciEnKTtcbiAgICAkcmVhZHkgPSBmYWxzZTtcbiAgICAkZmFjZUZvdW5kID0gZmFsc2U7XG4gICAgJGNhcHR1cmVkID0gZmFsc2U7XG4gICAgJGZhY2luZ01vZGUgPSBGYWNpbmdNb2RlRW51bS5GUk9OVF9DQU1FUkE7XG4gICAgaWYgKGlzTGl2ZW5lc3NFbmFibGVkKCkpIHtcbiAgICAgIGltcG9ydCgnbGl2ZW5lc3MtbGliLWRldi9pbmRleC1uby1kZXRlY3RvcicpO1xuICAgICAgcmVnaXN0ZXJJZHJuZExpc3RlbmVycygpO1xuICAgIH1cblxuICAgIGlmICgkZW5hYmxlRmFjZUFwaSkge1xuICAgICAgYXdhaXQgbG9hZEZhY2VBcGlBbmRXZWlnaHRzKHdlaWdodHNQYXRoKTtcbiAgICAgIGxvYWRlZEZhY2VBcGlBbmRXZWlnaHRzID0gdHJ1ZTtcbiAgICB9XG4gIFxuICAgIGF3YWl0IG9wZW5DYW1lcmEoKTsgLy8gb3BlbiB0aGUgZnJvbnQgY2FtZXJhXG4gIH0pO1xuXG4gIGZ1bmN0aW9uIGRyYXdPdmFsKGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCB2aWRlbzogSFRNTFZpZGVvRWxlbWVudCkge1xuICAgIC8vIGNsZWFyIHRoZSBhcmVhICh0aGVyZSBzaG91bGRuJ3QgZXZlbiBiZSBhbnl0aGluZyBhbnl3YXlzKVxuICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgZGlzcGxheUNhbnZhcy53aWR0aCwgZGlzcGxheUNhbnZhcy5oZWlnaHQpO1xuICAgIC8vIHNhdmUgdGhlIGNvbnRleHQgc3RhdGVcbiAgICAvLyBmcm9tIG1kbiBkb2NzXG4gICAgY3R4LnNhdmUoKTtcbiAgICAvLyBhcHBseSB0aGUgYmx1ci9jb2xvciBmaWx0ZXJcbiAgICBpZiAodmlkZW9GaWx0ZXIgPT0gJ2JsdXInKXtcbiAgICAgIGN0eC5maWx0ZXIgPSBgYmx1cigke3ZpZGVvLndpZHRoLzYwfXB4KWA7XG4gICAgICBjdHgucmVjdCgwLCAwLCBkaXNwbGF5Q2FudmFzLndpZHRoLCBkaXNwbGF5Q2FudmFzLmhlaWdodCk7XG4gICAgfSBlbHNlIGlmKHZpZGVvRmlsdGVyICE9ICdub25lJykge1xuICAgICAgY3R4LmZpbGxTdHlsZSA9IHZpZGVvRmlsdGVyO1xuICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGRpc3BsYXlDYW52YXMud2lkdGgsIGRpc3BsYXlDYW52YXMuaGVpZ2h0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZHJhdyBhIHJlY3RhbmdsZSB3aXRoIHRoZSBzYW1lIHNpemUgYXMgdGhlIHZpZGVvXG4gICAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgICBjdHgucmVjdCgwLCAwLCBkaXNwbGF5Q2FudmFzLndpZHRoLCBkaXNwbGF5Q2FudmFzLmhlaWdodCk7XG4gICAgfVxuICAgIFxuICAgIC8vIGNhbGN1bGF0ZSB0aGUgb3ZhbCBzaXplIHVzaW5nIHZpZXdwb3J0IHVuaXRzXG4gICAgY29uc3Qgb3ZhbEhlaWdodCA9IGRpc3BsYXlDYW52YXMuaGVpZ2h0ICogMC42NTsgLy8gODAlIG9mIHRoZSB2aWV3cG9ydCBoZWlnaHRcbiAgICBjb25zdCBvdmFsV2lkdGggPSBvdmFsSGVpZ2h0IC8gMS40NTsgXG4gICAgY29uc3Qgb3ZhbFggPSAkdmlkZW9TdG9yZS52aWRlb1dpZHRoIC8gMjtcbiAgICBjb25zdCBvdmFsWSA9ICR2aWRlb1N0b3JlLnZpZGVvSGVpZ2h0ICogMC41MTtcbiAgICAkb3ZhbERpbWVuc2lvbnMud2lkdGggPSBvdmFsV2lkdGg7XG5cbiAgICAvLyBtYWtlIHRoZSBvdmFsIFxuICAgIGN0eC5lbGxpcHNlKFxuICAgICAgb3ZhbFgsXG4gICAgICBvdmFsWSxcbiAgICAgIG92YWxXaWR0aCAvIDIsXG4gICAgICBvdmFsSGVpZ2h0IC8gMixcbiAgICAgIDAsXG4gICAgICAwLFxuICAgICAgMiAqIE1hdGguUEksXG4gICAgICB0cnVlIC8vIGl0IGhhcyB0byBiZSBjb3VudGVyY2xvY2t3aXNlXG4gICAgKTtcbiAgICAvLyBjbGlwIHRoZSBvdmFsIGFnYWluc3QgdGhlIHRoZSByZWN0YW5nbGVcbiAgICAvLyBDbGlwIHBhdGhzIGNhbm5vdCBiZSByZXZlcnRlZCBkaXJlY3RseS4gWW91IG11c3Qgc2F2ZSB5b3VyIGNhbnZhcyBzdGF0ZSB1c2luZyBzYXZlKCkgYmVmb3JlIGNhbGxpbmcgY2xpcCgpLCBhbmQgcmVzdG9yZSBpdCBvbmNlIHlvdSBoYXZlIGZpbmlzaGVkIGRyYXdpbmcgaW4gdGhlIGNsaXBwZWQgYXJlYSB1c2luZyByZXN0b3JlKCkuXG4gICAgY3R4LmNsaXAoKTtcbiAgICAvLyBkcmF3IHRoZSB2aWRlb1xuICAgIC8vIHRoaXMgbWFrZXMgZmFjZSBhcGkgb25seSBhd2FyZSBvZiBvdXRzaWRlIHRoZSBvdmFsIGFyZWFcbiAgICBkcmF3VmlkZW9PbkNhbnZhcyhjdHgsIHZpZGVvLCBkaXNwbGF5Q2FudmFzKTtcbiAgICBjdHgucmVzdG9yZSgpO1xuXG4gICAgLy8gc2F2ZSBhZ2FpbiwgYmVjYXVzZSB3aGVuIHJlZHJhd2luZyB0aGUgb3ZhbCwgZXZlcnl0aGluZyBhcm91bmQgdGhlIG92YWwgaXMgbG9zdFxuICAgIGN0eC5zYXZlKCk7XG4gICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgIC8vIGRyYXcgdGhlIGVsbGlwc2UgKHRoaXMgdGltZSBpdCBkb2Vzbid0IG1hdHRlciB0aGUgZGlyZWN0aW9uLCBzaW5jZSB0aGVyZSBpc24ndCBhIHJlY3RhbmdsZSBiZWhpbmQpXG4gICAgY29uc3QgcHJpbWFyeVRoZW1lID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGlzcGxheUNhbnZhcykuZ2V0UHJvcGVydHlWYWx1ZSgnLS1wJyk7XG4gICAgY29uc3Qgc3VjY2Vzc1RoZW1lID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGlzcGxheUNhbnZhcykuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zdScpO1xuXG4gICAgY3R4LnN0cm9rZVN0eWxlID0gYGhzbCgke3ByaW1hcnlUaGVtZX0pYDtcbiAgICBjdHgubGluZVdpZHRoID0gMTY7XG4gICAgY3R4LmVsbGlwc2UoXG4gICAgICBvdmFsWCxcbiAgICAgIG92YWxZLFxuICAgICAgb3ZhbFdpZHRoIC8gMixcbiAgICAgIG92YWxIZWlnaHQgLyAyLFxuICAgICAgMCxcbiAgICAgIDAsXG4gICAgICAyICogTWF0aC5QSVxuICAgICk7XG4gICAgY3R4LnN0cm9rZSgpO1xuICAgIGlmIChpc0NvdW50aW5nRG93biAmJiAhZGlzYWJsZUNvdW50RG93bikge1xuICAgICAgY29uc3QgdGltZVJlbWFpbmluZyA9IDEgLSAoY291bnREb3duRmluaXNoVGltZSAtIG5ldyBEYXRlKCkuZ2V0VGltZSgpKSAvIGNvdW50RG93bkNhcHR1cmU7XG4gICAgICAvLyBDb3VudGVyIGNvbnRvdXJcbiAgICAgIGN0eC5zYXZlKCk7XG4gICAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgICBjdHgubGluZVdpZHRoID0gMTY7XG4gICAgICBjdHguc3Ryb2tlU3R5bGUgPSBgaHNsKCR7c3VjY2Vzc1RoZW1lfSlgO1xuICAgICAgY3R4LmVsbGlwc2UoXG4gICAgICAgIG92YWxYLFxuICAgICAgICBvdmFsWSxcbiAgICAgICAgb3ZhbFdpZHRoIC8gMixcbiAgICAgICAgb3ZhbEhlaWdodCAvIDIsXG4gICAgICAgIDAsXG4gICAgICAgIDAgLSBNYXRoLlBJIC8gMixcbiAgICAgICAgMS41ICogKE1hdGguUEkgKiAyICogdGltZVJlbWFpbmluZykgLSBNYXRoLlBJIC8gMlxuICAgICAgKTtcbiAgICAgIGN0eC5zdHJva2UoKTtcbiAgICB9XG4gICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgIGNvbnN0IGNsaXBQYXRoID0gbmV3IFBhdGgyRCgpO1xuICAgIGNsaXBQYXRoLmVsbGlwc2UoXG4gICAgICBvdmFsWCxcbiAgICAgIG92YWxZLFxuICAgICAgb3ZhbFdpZHRoIC8gMixcbiAgICAgIG92YWxIZWlnaHQgLyAyLFxuICAgICAgMCxcbiAgICAgIDAsXG4gICAgICAyICogTWF0aC5QSVxuICAgICk7XG4gICAgLy8gYmFzaWNhbGx5IGNsaXBwaW5nIHRoZSBvdGhlciB3YXkgYXJvdW5kLCBzbyBmYWNlIGFwaSBpcyBhd2FyZSBvZiB0aGUgb3ZhbCBhcmVhXG4gICAgY3R4LmNsaXAoY2xpcFBhdGgpO1xuICAgIGRyYXdWaWRlb09uQ2FudmFzKGN0eCwgdmlkZW8sIGRpc3BsYXlDYW52YXMpO1xuICAgIGN0eC5yZXN0b3JlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBkcmF3VmlkZW9PbkNhbnZhcyhjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIGRpc3BsYXlDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50KSB7XG4gICAgY29uc3QgaXNTYW1lUHJvcG9ydGlvbiA9XG4gICAgICAodmlkZW8udmlkZW9IZWlnaHQgPj0gdmlkZW8udmlkZW9XaWR0aCAmJiBkaXNwbGF5Q2FudmFzLmhlaWdodCA+PSBkaXNwbGF5Q2FudmFzLndpZHRoKSB8fFxuICAgICAgKHZpZGVvLnZpZGVvSGVpZ2h0IDwgdmlkZW8udmlkZW9XaWR0aCAmJiBkaXNwbGF5Q2FudmFzLmhlaWdodCA8IGRpc3BsYXlDYW52YXMud2lkdGgpO1xuXG4gICAgY3R4LmRyYXdJbWFnZShcbiAgICAgIHZpZGVvLFxuICAgICAgaXNTYW1lUHJvcG9ydGlvbiA/IDAgOiB2aWRlby52aWRlb1dpZHRoIC8gMiAtIGRpc3BsYXlDYW52YXMud2lkdGgsXG4gICAgICAwLFxuICAgICAgaXNTYW1lUHJvcG9ydGlvbiA/IHZpZGVvLnZpZGVvV2lkdGggOiB2aWRlby52aWRlb0hlaWdodCAqIChkaXNwbGF5Q2FudmFzLndpZHRoIC8gZGlzcGxheUNhbnZhcy5oZWlnaHQpLFxuICAgICAgdmlkZW8udmlkZW9IZWlnaHQsXG4gICAgICAwLFxuICAgICAgMCxcbiAgICAgIGRpc3BsYXlDYW52YXMud2lkdGgsXG4gICAgICBkaXNwbGF5Q2FudmFzLmhlaWdodFxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiByZWdpc3Rlcklkcm5kTGlzdGVuZXJzKCkge1xuICAgIHdpZGdldEluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ29wZW4nLCAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHZpZGVvXyA9IGV2ZW50LmRldGFpbFswXS52aWRlbztcbiAgICAgICRpZHJuZFZpZGVvU3RvcmVEaW1lbnNpb25zID0geyB3aWR0aDogdmlkZW9fLnZpZGVvV2lkdGgsIGhlaWdodDogdmlkZW9fLnZpZGVvSGVpZ2h0IH07XG5cbiAgICAgIHZpZGVvLnNyY09iamVjdCA9IHZpZGVvXy5zcmNPYmplY3Q7XG4gICAgICBpZHJuZExvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgZnVuY3Rpb24gbG9vcCgpIHtcbiAgICAgICAgaWYgKGlkcm5kQ2xvc2VkKSByZXR1cm47XG5cbiAgICAgICAgZHJhd092YWwoZGlzcGxheUNhbnZhcy5nZXRDb250ZXh0KCcyZCcpIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgdmlkZW9fKTtcbiAgICAgICAgbG9vcENhbGxlcih2aWRlbywgbG9vcCwgdHJ1ZSk7XG4gICAgICB9XG4gICAgICBsb29wKCk7XG4gICAgfSk7XG4gICAgd2lkZ2V0SW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCAoZSkgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgIGlmIChlLmRldGFpbFswXS5tZXNzYWdlID09PSAnRGV2aWNlIGluIHVzZScpIHtcbiAgICAgICAgJGNhbWVyYVN0YXR1c1N0b3JlID0gQ2FtZXJhU3RhdHVzRW51bS5DQU1FUkFfSU5fVVNFX0VSUk9SO1xuICAgICAgfSBlbHNlIGlmIChlLmRldGFpbFswXS5tZXNzYWdlID09PSAnUGVybWlzc2lvbiBkZW5pZWQnIHx8IGUuZGV0YWlsWzBdLm1lc3NhZ2UgPT09ICdQZXJtaXNzaW9uIGRpc21pc3NlZCcpIHtcbiAgICAgICAgJGNhbWVyYVN0YXR1c1N0b3JlID0gQ2FtZXJhU3RhdHVzRW51bS5DQU1FUkFfREVOSUVEX0VSUk9SO1xuICAgICAgfSBlbHNlIGlmIChlLmRldGFpbFswXS5tZXNzYWdlID09PSAnUmVxdWVzdGVkIGRldmljZSBub3QgZm91bmQnKSB7XG4gICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uREVWSUNFX05PVF9GT1VORF9FUlJPUjtcbiAgICAgIH1cbiAgICAgIGlkcm5kTG9hZGluZyA9IGZhbHNlO1xuICAgIH0pO1xuICAgIHdpZGdldEluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2ZhY2VEZXRlY3Rpb24nLCAoZSkgPT4ge1xuICAgICAgLy8gY29uc29sZS5sb2coZSk7XG4gICAgfSk7XG4gICAgd2lkZ2V0SW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcignY2xvc2UnLCBhc3luYyAoZSkgPT4ge1xuICAgICAgaWYgKCEkY2FwdHVyZWQpIHtcbiAgICAgICAgY2FwdHVyaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZHJuZENsb3NlZCA9IHRydWU7XG4gICAgICB3YWl0aW5nSWRybmRDYXB0dXJlRXZlbnQgPSBmYWxzZTtcbiAgICAgIGlmICgkY2FtZXJhU3RhdHVzU3RvcmUgPT09IENhbWVyYVN0YXR1c0VudW0uT0spIHtcbiAgICAgICAgJGNhbWVyYVN0YXR1c1N0b3JlID0gQ2FtZXJhU3RhdHVzRW51bS5DQU1FUkFfQ0xPU0VEX0VSUk9SO1xuICAgICAgfVxuICAgICAgLy8gY29uc29sZS5sb2coZSk7XG4gICAgfSk7XG4gICAgd2lkZ2V0SW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcignaW5pdGlhbGl6ZScsIGFzeW5jIChlKSA9PiB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhlKTtcbiAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICRpZHJuZEluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgIGlmICgkc2VsZWN0ZWRUYWIgPT09IFRhYkVudW0uRmFjZSkge1xuICAgICAgICBpZiAoIWNhcHR1cmluZyAmJiAhJGNhcHR1cmVkICYmIGluaXRpYWxpemVkKSB7XG4gICAgICAgICAgYXdhaXQgb3BlbkNhbWVyYUxpdmVuZXNzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB3aWRnZXRJbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKCdjYXB0dXJlJywgYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgICBsaXZlbmVzc0Vycm9yID0gJyc7XG4gICAgICBjb25zdCB7IGVuY3J5cHRlZEZpbGUsIHBob3RvIH0gPSBldmVudC5kZXRhaWxbMF07XG4gICAgICAkYmxvYiA9IGVuY3J5cHRlZEZpbGU7XG4gICAgICB3YWl0aW5nSWRybmRDYXB0dXJlRXZlbnQgPSBmYWxzZTtcbiAgICAgICRyZXF1ZXN0UmVzdWx0ID0gcmVxdWVzdFJlc3VsdEVudW0uT0s7XG4gICAgICAkdW5jb25mb3JtaXRpZXNTdG9yZS5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgJGNhcHR1cmVkID0gdHJ1ZTtcbiAgICAgIGNhcHR1cmluZyA9IGZhbHNlO1xuICAgICAgY29uc3QgaW1nID0gKGF3YWl0IGJsb2JUb0Jhc2U2NChwaG90bykpLnNwbGl0KCcsJyk7XG4gICAgICAkZGF0YVR5cGVQcmVmaXggPSBpbWdbMF07XG4gICAgICAkaW1hZ2UgPSBpbWdbMV07XG4gICAgICAkb3JpZ2luYWxDYXB0dXJlID0gaW1nWzFdO1xuICAgICAgLy8gaWYgbm8gZW5kcG9pbnQgaXMgcHJvdmlkZWQsIHdlIHVzZSB0aGUgZXZhbHVhdGUgYmlvbWV0cmljcyBlbmRwb2ludCB3aGljaCBzaG91bGQgZG8gYm90aCBsaXZlbmVzcyBhbmQgdW5jb25mb3JtaXRpZXNcbiAgICAgIGlmICghJGNhcHR1cmVMaXZlbmVzc0lkcm5kRW5kcG9pbnQpIHtcbiAgICAgICAgbGV0IGJvZHlQYXJ0cywgaWNhb1dhcm5pbmdzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICh7IGJvZHlQYXJ0cywgaWNhb1dhcm5pbmdzIH0gPSBhd2FpdCBnZXRGYWNlVW5jb25mb3JtaXRpZXMoXG4gICAgICAgICAgICAkb3JpZ2luYWxDYXB0dXJlLFxuICAgICAgICAgICAgZXZhbHVhdGVQaG90byxcbiAgICAgICAgICAgIChhd2FpdCBibG9iVG9CYXNlNjQoZW5jcnlwdGVkRmlsZSkpLnNwbGl0KCcsJylbMV1cbiAgICAgICAgICApKTtcbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnZmFjZS11bmNvbmZvcm1pdGllcy12YWxpZGF0ZWQnLCB7XG4gICAgICAgICAgICAgIGRldGFpbDogeyBib2R5UGFydHMsIGljYW9XYXJuaW5ncywgc3RhdHVzOiAkcmVxdWVzdFJlc3VsdCB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vVE9ETzogdW5jb21tZW50IHRoaXNcbiAgICAgICAgICAvLyBpZiBldmVyeXRoaW5nIGlzIGZpbmUsIGNsb3NlIHRoZSBjYW1lcmEgYWxyZWFkeS5cbiAgICAgICAgICAvLyB3aWRnZXRJbnN0YW5jZS5jbG9zZUNhbWVyYSgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICBsZXQgZXJyb3JDb2RlID0gaWRybmRFcnJvclRvaTE4bktleVsnVU5LTk9XTiddO1xuICAgICAgICAgIGxldCBib2R5UGFydHM6IEJvZHlQYXJ0W10gPSBbXTtcbiAgICAgICAgICBsZXQgaWNhb1dhcm5pbmdzID0gW107XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBeGlvc0Vycm9yICYmIGUucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICBpZiAoZS5yZXNwb25zZS5kYXRhICYmIEFycmF5LmlzQXJyYXkoZS5yZXNwb25zZS5kYXRhLmJvZHlQYXJ0cykpIHtcbiAgICAgICAgICAgICAgYm9keVBhcnRzID0gZS5yZXNwb25zZS5kYXRhLmJvZHlQYXJ0cyBhcyBCb2R5UGFydFtdO1xuICAgICAgICAgICAgICBpY2FvV2FybmluZ3MgPSBlLnJlc3BvbnNlLmRhdGEuaWNhb1dhcm5pbmdzO1xuICAgICAgICAgICAgICBjb25zdCBmYWNlID0gYm9keVBhcnRzLmZpbmQoKGJwKSA9PiAoYnAubGl2ZW5lc3NSZXN1bHQgYXMgbGl2ZW5lc3NFcnJvclJlc3VsdCkuZXJyb3IpO1xuICAgICAgICAgICAgICBlcnJvckNvZGUgPSAoZmFjZT8ubGl2ZW5lc3NSZXN1bHQgYXMgbGl2ZW5lc3NFcnJvclJlc3VsdCkuZXJyb3JfY29kZTtcbiAgICAgICAgICAgICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5MSVZFTkVTU19ERVRFQ1RJT05fRkFJTFVSRTtcbiAgICAgICAgICAgICAgaWYgKCEoZmFjZT8ubGl2ZW5lc3NSZXN1bHQgYXMgbGl2ZW5lc3NFcnJvclJlc3VsdCkuZXJyb3JfY29kZSkge1xuICAgICAgICAgICAgICAgICRyZXF1ZXN0UmVzdWx0ID0gcmVxdWVzdFJlc3VsdEVudW0uVU5LTk9XTl9MSVZFTkVTU19FUlJPUjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsaXZlbmVzc0Vycm9yID0gaWRybmRFcnJvclRvaTE4bktleVtlcnJvckNvZGUgYXMga2V5b2YgdHlwZW9mIGlkcm5kRXJyb3JUb2kxOG5LZXldO1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdMaXZlbmVzcyBlcnJvcjonLCBlcnJvckNvZGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gaWYgYnBzIGlzIG1pc3NpbmcsIHRoaXMgaXMgbGlrZWx5IGEgdGVtcGxhdGUgZXh0cmFjdGlvbiBlcnJvclxuICAgICAgICAgICAgICAkcmVxdWVzdFJlc3VsdCA9IHJlcXVlc3RSZXN1bHRFbnVtLlRFTVBMQVRFX0VYVFJBQ1RJT05fRVJST1I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICRyZXF1ZXN0UmVzdWx0ID0gcmVxdWVzdFJlc3VsdEVudW0uVU5LTk9XTl9MSVZFTkVTU19FUlJPUjtcbiAgICAgICAgICAgIHRvYXN0LmZpcmUoeyBpY29uOiAnZXJyb3InLCB0aXRsZTogJ0ZhbGhhIGFvIGNvbXVuaWNhciBjb20gc2VydmnDp28gZGUgTGl2ZW5lc3MnIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICAkdW5jb25mb3JtaXRpZXNTdG9yZS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnZmFjZS11bmNvbmZvcm1pdGllcy12YWxpZGF0ZWQnLCB7XG4gICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgIGJvZHlQYXJ0cyxcbiAgICAgICAgICAgICAgICBlcnJvckNvZGUsXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlZEVycm9yOiAkXyhsaXZlbmVzc0Vycm9yKSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICRyZXF1ZXN0UmVzdWx0LFxuICAgICAgICAgICAgICAgIGljYW9XYXJuaW5ncyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCRyZXF1ZXN0UmVzdWx0ICE9PSByZXF1ZXN0UmVzdWx0RW51bS5PSykge1xuICAgICAgICAgICR1bmNvbmZvcm1pdGllc1N0b3JlLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYm9keVBhcnRzWzBdLmxpdmVuZXNzUmVzdWx0KSB7XG4gICAgICAgICAgdmFsaWRhdGVMaXZlbmVzcyhib2R5UGFydHNbMF0ubGl2ZW5lc3NSZXN1bHQgYXMgbGl2ZW5lc3NSZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChib2R5UGFydHMubGVuZ3RoICE9PSAwICYmIGJvZHlQYXJ0c1swXS5kYXRhKSB7XG4gICAgICAgICAgJGltYWdlID0gYm9keVBhcnRzWzBdLmRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICB0cmFuc2xhdGVBbmRTZXRVbmNvbmZvcm1pdGllcyhpY2FvV2FybmluZ3MhKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGV0IGVycm9yQ29kZTtcbiAgICAgIGxldCBsaXZlbmVzc1Jlc3VsdDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxpdmVuZXNzUmVzdWx0ID0gYXdhaXQgZ2V0TGl2ZW5lc3NJZHJuZChlbmNyeXB0ZWRGaWxlKTtcbiAgICAgICAgdmFsaWRhdGVMaXZlbmVzcyhsaXZlbmVzc1Jlc3VsdC5kYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5VTktOT1dOX0xJVkVORVNTX0VSUk9SO1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEF4aW9zRXJyb3IgJiYgZS5yZXNwb25zZT8uc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgICBlcnJvckNvZGUgPSBlLnJlc3BvbnNlLmRhdGEuZXJyb3JfY29kZTtcbiAgICAgICAgICBsaXZlbmVzc0Vycm9yID0gaWRybmRFcnJvclRvaTE4bktleVtlcnJvckNvZGUgYXMga2V5b2YgdHlwZW9mIGlkcm5kRXJyb3JUb2kxOG5LZXldO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0xpdmVuZXNzIGVycm9yOicsIGVycm9yQ29kZSk7XG4gICAgICAgICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5MSVZFTkVTU19ERVRFQ1RJT05fRkFJTFVSRTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0b2FzdC5maXJlKHsgaWNvbjogJ2Vycm9yJywgdGl0bGU6ICdGYWxoYSBhbyBjb211bmljYXIgY29tIHNlcnZpw6dvIGRlIExpdmVuZXNzJyB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoJHJlcXVlc3RSZXN1bHQgIT09IHJlcXVlc3RSZXN1bHRFbnVtLk9LKSB7XG4gICAgICAgICR1bmNvbmZvcm1pdGllc1N0b3JlLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2ZhY2UtdW5jb25mb3JtaXRpZXMtdmFsaWRhdGVkJywge1xuICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgIGJvZHlQYXJ0czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGJvZHlQYXJ0OiAnRkFDRScsXG4gICAgICAgICAgICAgICAgICBkYXRhOiAkb3JpZ2luYWxDYXB0dXJlLFxuICAgICAgICAgICAgICAgICAgbGl2ZW5lc3NCbG9iOiAoYXdhaXQgYmxvYlRvQmFzZTY0KGVuY3J5cHRlZEZpbGUpKS5zcGxpdCgnLCcpWzFdLFxuICAgICAgICAgICAgICAgICAgLi4uKGxpdmVuZXNzUmVzdWx0ICYmIHsgbGl2ZW5lc3NSZXN1bHQgfSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgLi4uKGVycm9yQ29kZSAmJiB7IGVycm9yQ29kZSB9KSxcbiAgICAgICAgICAgICAgLi4uKGxpdmVuZXNzRXJyb3IgJiYgeyB0cmFuc2xhdGVkRXJyb3I6ICRfKGxpdmVuZXNzRXJyb3IpIH0pLFxuICAgICAgICAgICAgICBzdGF0dXM6ICRyZXF1ZXN0UmVzdWx0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgeyBib2R5UGFydHMsIGljYW9XYXJuaW5ncyB9ID0gYXdhaXQgZ2V0RmFjZVVuY29uZm9ybWl0aWVzKCRvcmlnaW5hbENhcHR1cmUsIGV2YWx1YXRlUGhvdG8pO1xuICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudCgnZmFjZS11bmNvbmZvcm1pdGllcy12YWxpZGF0ZWQnLCB7XG4gICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICBib2R5UGFydHMsXG4gICAgICAgICAgICBpY2FvV2FybmluZ3MsXG4gICAgICAgICAgICBzdGF0dXM6ICRyZXF1ZXN0UmVzdWx0LFxuICAgICAgICAgICAgZXJyb3JDb2RlLFxuICAgICAgICAgICAgLi4uKGxpdmVuZXNzRXJyb3IgJiYgeyB0cmFuc2xhdGVkRXJyb3I6ICRfKGxpdmVuZXNzRXJyb3IpIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgaWYgKGJvZHlQYXJ0c1swXS5kYXRhKSB7XG4gICAgICAgICRpbWFnZSA9IGJvZHlQYXJ0c1swXS5kYXRhO1xuICAgICAgfVxuICAgICAgdHJhbnNsYXRlQW5kU2V0VW5jb25mb3JtaXRpZXMoaWNhb1dhcm5pbmdzKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIG9wZW5DYW1lcmEoZGV2aWNlPzogc3RyaW5nKSB7XG4gICAgLy8gdGhpcyB3ZWlyZCBzdHVmIHdpdGggaGVpZ2h0IGFuZCB3aWR0aCBpcyBoZXJlIHRvIGNvbXBlbnNhdGUgYSBzdmVsdGUgaXNzdWVcbiAgICAvLyBiZWNhdXNlIG9uTW91bnQgZ2V0cyBjYWxsZWQgdHdpY2VcbiAgICBjb25zdCBbd2lkdGgsIGhlaWdodF0gPSAodmlkZW9EaW1lbnNpb25zID8/ICcnKVxuICAgICAgPy5yZXBsYWNlQWxsKCcgJywgJycpXG4gICAgICA/LnNwbGl0KCd4JylcbiAgICAgID8ubWFwKCh2KSA9PiAodiA/IHBhcnNlSW50KHYpIDogdW5kZWZpbmVkKSk7XG4gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSByZXR1cm47XG4gICAgJHZpZGVvU3RvcmUgPSB7IHZpZGVvV2lkdGg6IHdpZHRoLCB2aWRlb0hlaWdodDogaGVpZ2h0IH07XG4gICAgLy8gZmxpcCBlbVxuICAgIGlmIChpc0xpdmVuZXNzRW5hYmxlZCgpICYmIGhlaWdodCA8IHdpZHRoICYmIGlzTW9iaWxlKCkpIHtcbiAgICAgICR2aWRlb1N0b3JlID0geyB2aWRlb1dpZHRoOiBoZWlnaHQsIHZpZGVvSGVpZ2h0OiB3aWR0aCB9O1xuICAgIH1cbiAgICBcbiAgICBpZiAoaXNMaXZlbmVzc0VuYWJsZWQoKSkge1xuICAgICAgb3BlbkNhbWVyYUxpdmVuZXNzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgc2VsZWN0RGV2aWNlKHdpZHRoLCBoZWlnaHQsIGRldmljZSk7IC8vIG9wZW4gdGhlIGZyb250IGNhbWVyYSBcbiAgfVxuXG4gIGZ1bmN0aW9uIG9wZW5DYW1lcmFMaXZlbmVzcygpIHtcbiAgICBpZiAoIWlzTGl2ZW5lc3NFbmFibGVkKCkpIHJldHVybjtcblxuICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uT0s7XG4gICAgaWYgKHdpZGdldEluc3RhbmNlICYmICdvcGVuQ2FtZXJhJyBpbiB3aWRnZXRJbnN0YW5jZSkgd2lkZ2V0SW5zdGFuY2Uub3BlbkNhbWVyYSgpO1xuICAgIGNhcHR1cmluZyA9IHRydWU7XG4gICAgaWRybmRDbG9zZWQgPSBmYWxzZTtcbiAgICBpZHJuZExvYWRpbmcgPSB0cnVlO1xuICB9XG5cbiAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBsYXkoKSB7XG4gICAgLy8gd2FpdCBmb3IgZmFjZSBhcGkgdG8gbG9hZCB3ZWlnaHRzXG4gICAgaWYgKCRlbmFibGVGYWNlQXBpICYmICFsb2FkZWRGYWNlQXBpQW5kV2VpZ2h0cykgcmV0dXJuIGxvb3BDYWxsZXIodmlkZW8sIHBsYXkpO1xuICAgIC8vIHJldHVybiBpZiB1bmluaXRpYWxpemVkIHZpZGVvIGVsZW1lbnRcbiAgICBpZiAoIXZpZGVvKSByZXR1cm47XG4gICAgLy8gcmV0dXJuIGlmIHRoZSBjdXJyZW50IHRhYiBpc24ndCBmYWNlXG4gICAgaWYgKCEoJHNlbGVjdGVkVGFiID09PSBUYWJFbnVtLkZhY2UpICYmICFub1RhYnMpIHJldHVybiBsb29wQ2FsbGVyKHZpZGVvLCBwbGF5KTtcbiAgICAvLyBpZiBldmVyeXRoaW5nIHBhc3NlcyB3ZSBhcmUgcmVhZHkgdG8gY2FwdHVyZVxuICAgICRyZWFkeSA9IHRydWU7XG4gICAgLy8gb25seSBtYWtlIGRldGVjdGlvbnMgaWYgZmFjZSBhcGkgZW5hYmxlZFxuICAgIGlmICgkZW5hYmxlRmFjZUFwaSkge1xuICAgICAgLy8gZmlyZXMgdGhlIGxpc3RlbmVyIHRvIHN0YXJ0IHRoZSBmYWNlIGFwaSBsb29wXG4gICAgICBpZiAoISRzdGFydEZhY2VBcGkpICRzdGFydEZhY2VBcGkgPSB0cnVlO1xuXG4gICAgICBpZiAoIWlzTGl2ZW5lc3NFbmFibGVkKCkpIHtcbiAgICAgICAgZHJhd092YWwoZGlzcGxheUNhbnZhcy5nZXRDb250ZXh0KCcyZCcpIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgdmlkZW8pO1xuICAgICAgfVxuICAgICAgbG9vcENhbGxlcih2aWRlbywgcGxheSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRyYXdPdmFsKGRpc3BsYXlDYW52YXMuZ2V0Q29udGV4dCgnMmQnKSBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIHZpZGVvKTtcbiAgICAgIGxvb3BDYWxsZXIodmlkZW8sIHBsYXkpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGNhcHR1cmUoKSB7XG4gICAgdW5Mb2NrU2NyZWVuKCk7XG4gICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5PSztcbiAgICBpZiAoaXNMaXZlbmVzc0VuYWJsZWQoKSkge1xuICAgICAgd2FpdGluZ0lkcm5kQ2FwdHVyZUV2ZW50ID0gdHJ1ZTtcbiAgICAgIHdpZGdldEluc3RhbmNlLnRha2VQaG90bygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAkY2FwdHVyZWQgPSB0cnVlO1xuICAgIGlmICgkZW5hYmxlRmFjZUFwaSkge1xuICAgICAgY29uc3QgW2NhbnZhc10gPSBhd2FpdCAoYXdhaXQgaW1wb3J0KCdAdmxhZG1hbmRpYy9mYWNlLWFwaScpKS5leHRyYWN0RmFjZXModmlkZW8sIFskYm94U3RvcmVdKTtcbiAgICAgIGNvbnN0IGltZyA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnKS5zcGxpdCgnLCcpO1xuICAgICAgJGRhdGFUeXBlUHJlZml4ID0gaW1nWzBdO1xuICAgICAgJGltYWdlID0gaW1nWzFdO1xuICAgICAgJG9yaWdpbmFsQ2FwdHVyZSA9IGltZ1sxXTtcbiAgICAgIGxldCB7IGJvZHlQYXJ0cywgaWNhb1dhcm5pbmdzIH0gPSBhd2FpdCBnZXRGYWNlVW5jb25mb3JtaXRpZXMoJGltYWdlLCBldmFsdWF0ZVBob3RvKTtcbiAgICAgIC8vIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDIxMDAwMCkpO1xuICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudCgnZmFjZS11bmNvbmZvcm1pdGllcy12YWxpZGF0ZWQnLCB7XG4gICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICBib2R5UGFydHMsXG4gICAgICAgICAgICBpY2FvV2FybmluZ3MsXG4gICAgICAgICAgICBzdGF0dXM6ICRyZXF1ZXN0UmVzdWx0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgaWYgKGJvZHlQYXJ0cy5sZW5ndGggIT09IDAgJiYgYm9keVBhcnRzWzBdLmRhdGEpIHtcbiAgICAgICAgJGltYWdlID0gYm9keVBhcnRzWzBdLmRhdGE7XG4gICAgICB9XG4gICAgICB0cmFuc2xhdGVBbmRTZXRVbmNvbmZvcm1pdGllcyhpY2FvV2FybmluZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgY2FudmFzLndpZHRoID0gdmlkZW8ud2lkdGg7XG4gICAgICBjYW52YXMuaGVpZ2h0ID0gdmlkZW8uaGVpZ2h0O1xuICAgICAgY3R4Py5kcmF3SW1hZ2UodmlkZW8sIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG4gICAgICBjb25zdCBpbWcgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJykuc3BsaXQoJywnKTtcbiAgICAgICRkYXRhVHlwZVByZWZpeCA9IGltZ1swXTtcbiAgICAgICRpbWFnZSA9IGltZ1sxXTtcbiAgICAgICRvcmlnaW5hbENhcHR1cmUgPSBpbWdbMV07XG4gICAgICBsZXQgeyBib2R5UGFydHMsIGljYW9XYXJuaW5ncyB9ID0gYXdhaXQgZ2V0RmFjZVVuY29uZm9ybWl0aWVzKCRpbWFnZSwgZXZhbHVhdGVQaG90byk7XG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdmYWNlLXVuY29uZm9ybWl0aWVzLXZhbGlkYXRlZCcsIHtcbiAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgIGJvZHlQYXJ0cyxcbiAgICAgICAgICAgIGljYW9XYXJuaW5ncyxcbiAgICAgICAgICAgIHN0YXR1czogJHJlcXVlc3RSZXN1bHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICBpZiAoYm9keVBhcnRzLmxlbmd0aCAhPT0gMCAmJiBib2R5UGFydHNbMF0uZGF0YSkge1xuICAgICAgICAkaW1hZ2UgPSBib2R5UGFydHNbMF0uZGF0YTtcbiAgICAgIH1cbiAgICAgIHRyYW5zbGF0ZUFuZFNldFVuY29uZm9ybWl0aWVzKGljYW9XYXJuaW5ncyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2F2ZSgpIHtcbiAgICBjb25zdCBmYWNlOiBCb2R5UGFydCA9IHtcbiAgICAgIGJvZHlQYXJ0OiAnRkFDRScsXG4gICAgICBkYXRhOiAkaW1hZ2UsXG4gICAgICBqdXN0aWZpY2F0aW9uOiAkanVzdGlmaWNhdGlvbixcbiAgICB9O1xuICAgICRzYXZlZCA9IHRydWU7XG4gICAgLy8gc2VuZCBibG9iIGlmIHByZXNlbnRcbiAgICBpZiAoZ2V0KGJsb2IpKSB7XG4gICAgICBibG9iVG9CYXNlNjQoZ2V0KGJsb2IpKS50aGVuKChiYXNlNjQpID0+IHtcbiAgICAgICAgZmFjZS5saXZlbmVzc0Jsb2IgPSBiYXNlNjQuc3BsaXQoJywnKVsxXTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2V4cG9ydC1mYWNlJywgeyBkZXRhaWw6IGZhY2UgfSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmV0YWtlKCkge1xuICAgIC8vZW1pdCBhbiBlbXB0eSBldmVudCBpbmZvcm1pbmcgdGhhdCBpdCB3YXMgc2NyYXBwZWRcbiAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2ZhY2Utc2NyYXBwZWQnKSk7XG4gICAgJHNhdmVkID0gZmFsc2U7XG4gICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5PSztcbiAgICAkY2FwdHVyZWQgPSBmYWxzZTtcbiAgICAkb3JpZ2luYWxDYXB0dXJlID0gJyc7XG4gICAgJHVuY29uZm9ybWl0aWVzU3RvcmUudW5jb25mb3JtaXRpZXMgPSBbXTtcbiAgICBjb25zdCBmYWNlVmFsaWRhdGlvbnMgPSBnZXQoZmFjZVZhbGlkYXRpb25zU3RvcmUpO1xuICAgIGZhY2VWYWxpZGF0aW9ucy5jbG9zZWRNb3V0aCA9IGZhbHNlO1xuICAgIGZhY2VWYWxpZGF0aW9ucy5pc1BlcnNvbkNsb3NlRW5vdWdoID0gZmFsc2U7XG4gICAgZmFjZVZhbGlkYXRpb25zLmlzUGVyc29uVG9vY2xvc2UgPSB0cnVlO1xuICAgIGZhY2VWYWxpZGF0aW9ucy5pc1BlcnNvbkluRnJhbWUgPSBmYWxzZTtcbiAgICBmYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJyc7XG4gICAgZmFjZU5vdFZhbGlkYXRlZCA9IGZhbHNlO1xuICAgIGZhY2VWYWxpZGF0aW9uc1N0b3JlLnNldChmYWNlVmFsaWRhdGlvbnMpO1xuICAgIGlmIChpZHJuZENsb3NlZCkgb3BlbkNhbWVyYUxpdmVuZXNzKCk7XG4gIH1cblxuICBmdW5jdGlvbiB2YWxpZGF0ZUxpdmVuZXNzKHJlc3VsdDogbGl2ZW5lc3NSZXN1bHQpIHtcbiAgICBsZXQgdGl0bGUgPSAnJztcbiAgICBsZXQgaWNvbjogU3dlZXRBbGVydEljb24gPSAnc3VjY2Vzcyc7XG4gICAgaWYgKHJlc3VsdC5pc0FsaXZlKSB7XG4gICAgICB0aXRsZSA9IGBWaXZhY2lkYWRlIGRlIGZhY2UgKCR7cmVzdWx0LmZhY2VfbGl2ZW5lc3MucHJvYmFiaWxpdHkudG9GaXhlZCgyKX0pIGUgZGUgY2FwdHVyYSAoJHtcbiAgICAgICAgcmVzdWx0LmNhcHR1cmVfbGl2ZW5lc3MucHJvYmFiaWxpdHlcbiAgICAgIH0sICR7cmVzdWx0LmNhcHR1cmVfbGl2ZW5lc3Muc2NvcmUudG9GaXhlZCgyKX0pIHZlcmlmaWNhZG9zIWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyZXN1bHQ/LmZhY2VfbGl2ZW5lc3M/LnByb2JhYmlsaXR5KSB7XG4gICAgICAgIGljb24gPSAnZXJyb3InO1xuICAgICAgICB0aXRsZSA9IGBWaXZhY2lkYWRlIGRlIGZhY2UgKCR7cmVzdWx0LmZhY2VfbGl2ZW5lc3MucHJvYmFiaWxpdHkudG9GaXhlZCgyKX0pIGUgZGUgY2FwdHVyYSAoJHtcbiAgICAgICAgICByZXN1bHQuY2FwdHVyZV9saXZlbmVzcy5wcm9iYWJpbGl0eVxuICAgICAgICB9LCAke3Jlc3VsdC5jYXB0dXJlX2xpdmVuZXNzLnNjb3JlLnRvRml4ZWQoMil9KSBpbnN1ZmljaWVudGVzIWA7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICgkc2hvd0xpdmVuZXNzUmVzdWx0VG9hc3QpIHRvYXN0LmZpcmUoeyBpY29uLCB0aXRsZSB9KTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHNlbGVjdERldmljZSh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgZGV2aWNlPzogc3RyaW5nKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoJGNhbWVyYVN0YXR1c1N0b3JlID09IENhbWVyYVN0YXR1c0VudW0uQ0FNRVJBX09SSUVOVEFUSU9OX1BPUlRSQUlUKSByZXR1cm47XG5cbiAgICAgICAgYXdhaXQgZW51bWVyYXRlRGV2aWNlcygpO1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgZGV2aWNlSWQ6IGRldmljZUlkLFxuICAgICAgICAgIHdpZHRoOiB3aWR0aENhbWVyYSxcbiAgICAgICAgICBoZWlnaHQ6IGhlaWdodENhbWVyYSxcbiAgICAgICAgICBhc3BlY3RSYXRpbzogYXNwZWN0UmF0aW9DYW1lcmEsXG4gICAgICAgICAgZmFjaW5nTW9kZTogZmFjaW5nLFxuICAgICAgICAgIHRvdWNoUG9pbnRzOiB0b3VjaFBvaW50c1xuICAgICAgICB9ID0gYXdhaXQgZ2V0VmlkZW9EaW1lbnNpb25zKHdpZHRoLCBoZWlnaHQsICRmYWNpbmdNb2RlLCBkZXZpY2UpO1xuICAgICAgICBpZiAod2lkdGhDYW1lcmEgPCB3aWR0aCAmJiBoZWlnaHRDYW1lcmEgPCBoZWlnaHQpIHtcbiAgICAgICAgICAkdmlkZW9TdG9yZSA9IHsgdmlkZW9XaWR0aDogd2lkdGhDYW1lcmEsIHZpZGVvSGVpZ2h0OiBoZWlnaHRDYW1lcmEgfTsgICAgICAgICAgXG4gICAgICAgIH1cbiAgICAgICAgLy8gdG8gd29yayBvbiBkZXZpY2UgZW11bGF0aW9uIChkZXNrdG9wKVxuICAgICAgICBpZiAoaXNNb2JpbGUoKSAmJiAoIWZhY2luZyB8fCB0b3VjaFBvaW50cyA8PSAxKSAgJiYgKHdpZHRoQ2FtZXJhID4gaGVpZ2h0Q2FtZXJhKSkgeyBcbiAgICAgICAgICAkdmlkZW9TdG9yZSA9IHsgdmlkZW9XaWR0aDogaGVpZ2h0Q2FtZXJhLCB2aWRlb0hlaWdodDogd2lkdGhDYW1lcmEgfTsgICAgICAgICAgXG4gICAgICAgIH1cbiAgICAgICAgLy8gZml4ZXMgdGhlICdjYW1lcmEgZG9lc24ndCBvcGVuIGlzc3VlJyBidXQgY2F1c2VzIGJsYWNrIHNjcmVlblxuICAgICAgICAvLyAkc2VsZWN0ZWRWaWRlb0RldmljZUlkID0gbnVsbDtcbiAgICAgICAgJHNlbGVjdGVkVmlkZW9EZXZpY2VJZCA9IGRldmljZUlkID8gZGV2aWNlSWQgOiAkY2FtZXJhRGV2aWNlc1N0b3JlWzBdLmRldmljZUlkO1xuICAgICAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLk9LO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zdCBlcnJvciA9IGUgYXMgRE9NRXhjZXB0aW9uO1xuICAgICAgICBpZHJuZENsb3NlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRFcnJvciA9IChpc09iamVjdChlKSAmJiBlLmNvbnN0cmFpbnQgPyBlLmNvbnN0cmFpbnQgOiAnJyk7IFxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yLCBjb25zdHJhaW50RXJyb3IpO1xuICAgICAgICBpZiAoaXNPYmplY3QoZXJyb3IpICYmICdtZXNzYWdlJyBpbiBlcnJvciAmJiBlcnJvci5tZXNzYWdlLmluY2x1ZGVzKCdQZXJtaXNzaW9uIGRlbmllZCcpKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIlVzZXIgZGlkbid0IGdpdmUgcGVybWlzc2lvbiB0byB1c2UgY2FtZXJhIVwiKTtcbiAgICAgICAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLkNBTUVSQV9ERU5JRURfRVJST1I7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzT2JqZWN0KGVycm9yKSAmJiAnbWVzc2FnZScgaW4gZXJyb3IgJiYgZXJyb3IubWVzc2FnZS5pbmNsdWRlcygnUmVxdWVzdGVkIGRldmljZSBub3QgZm91bmQnKSkge1xuICAgICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uREVWSUNFX05PVF9GT1VORF9FUlJPUjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uc3RyYWludEVycm9yLmluY2x1ZGVzKCd3aWR0aCcpIHx8IGNvbnN0cmFpbnRFcnJvci5pbmNsdWRlcygnaGVpZ2h0JykpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBDYW1lcmEgZG9lcyBub3QgbWVldCB0aGUgbWluaW11bSBzdXBwb3J0ZWQgcmVxdWlyZW1lbnRzISAoJHtjb25zdHJhaW50RXJyb3J9KWApO1xuICAgICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uQ0FNRVJBX1VOU1VQUE9SVEVEO1xuICAgICAgICB9XG4gICAgICB9XG4gIH1cblxuICAvLyBTdWJzY3JpcHRpb25zXG5cbiAgY29uc3QgdW5zdWJzY3JpYmVWaWRlb0RpbWVuc2lvbnMgPSB2aWRlb1N0b3JlLnN1YnNjcmliZSgoc3RvcmVPYmopID0+IHtcbiAgICBpZiAoIXZpZGVvKSByZXR1cm47XG4gICAgaWYgKCFkZXRlY3Rpb25zQ2FudmFzKSByZXR1cm47XG5cbiAgICB2aWRlby53aWR0aCA9IHN0b3JlT2JqLnZpZGVvV2lkdGg7XG4gICAgdmlkZW8uaGVpZ2h0ID0gc3RvcmVPYmoudmlkZW9IZWlnaHQ7XG4gICAgZGV0ZWN0aW9uc0NhbnZhcy53aWR0aCA9IHN0b3JlT2JqLnZpZGVvV2lkdGg7XG4gICAgZGV0ZWN0aW9uc0NhbnZhcy5oZWlnaHQgPSBzdG9yZU9iai52aWRlb0hlaWdodDtcbiAgICBtYXNrQ2FudmFzLndpZHRoID0gc3RvcmVPYmoudmlkZW9XaWR0aDtcbiAgICBtYXNrQ2FudmFzLmhlaWdodCA9IHN0b3JlT2JqLnZpZGVvSGVpZ2h0O1xuICAgIC8vIGlmIChpc0xpdmVuZXNzRW5hYmxlZCgpKSB7XG4gICAgLy8gY29uc29sZS5sb2coc3RvcmVPYmoudmlkZW9XaWR0aCwgc3RvcmVPYmoudmlkZW9IZWlnaHQpO1xuICAgIGRpc3BsYXlDYW52YXMud2lkdGggPSBzdG9yZU9iai52aWRlb1dpZHRoO1xuICAgIGRpc3BsYXlDYW52YXMuaGVpZ2h0ID0gc3RvcmVPYmoudmlkZW9IZWlnaHQ7XG4gICAgLy8gfVxuICB9KTtcblxuICBjb25zdCB1bnN1YnNjcmliZUZhY2VWYWxpZGF0aW9ucyA9IGZhY2VWYWxpZGF0aW9uc1N0b3JlLnN1YnNjcmliZSgobmV3VmFsdWUpID0+IHtcbiAgICBsZXQgbmV3RmFjZVZhbGlkYXRpb25BbGVydCA9ICcnO1xuXG4gICAgaWYgKCFuZXdWYWx1ZS5pc1BlcnNvbkNsb3NlRW5vdWdoKSB7XG4gICAgICBuZXdGYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJ2ZhY2VDb2xsZWN0b3IuY29tZUNsb3NlckNhbWVyYSc7XG4gICAgfSBlbHNlIGlmIChuZXdWYWx1ZS5pc1BlcnNvblRvb2Nsb3NlKSB7XG4gICAgICBuZXdGYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJ2ZhY2VDb2xsZWN0b3IubW92ZUF3YXlDYW1lcmEnO1xuICAgIH0gZWxzZSBpZiAoIW5ld1ZhbHVlLmlzUGVyc29uSW5GcmFtZSkge1xuICAgICAgbmV3RmFjZVZhbGlkYXRpb25BbGVydCA9ICdmYWNlQ29sbGVjdG9yLnN0YXlJbkZyYW1lJztcbiAgICB9IGVsc2UgaWYgKCFuZXdWYWx1ZS5jbG9zZWRNb3V0aCkge1xuICAgICAgbmV3RmFjZVZhbGlkYXRpb25BbGVydCA9ICdmYWNlQ29sbGVjdG9yLmRvbnRPcGVuTW91dGgnO1xuICAgIH0gXG5cbiAgICBpZiAobmV3RmFjZVZhbGlkYXRpb25BbGVydCAhPSAnJyl7XG4gICAgICAgLy9UT0RPOiB0ZXN0IG9uIGlPUyBhbmQgaWYgaXQgZG9lc24ndCB3b3JrLCBkbyBpdCBiYXNlZCBvbiB0aGUgY2xvY2tcbiAgICAgICBpZiAobmV3RmFjZVZhbGlkYXRpb25BbGVydCAhPSBmYWNlVmFsaWRhdGlvbkFsZXJ0KSB7ICAgICAgICBcbiAgICAgICAgZmFjZU5vdFZhbGlkYXRlZCA9IGZhbHNlO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBmYWNlVmFsaWRhdGlvbkFsZXJ0ID0gbmV3RmFjZVZhbGlkYXRpb25BbGVydDtcbiAgICAgICAgICBmYWNlTm90VmFsaWRhdGVkID0gdHJ1ZTtcbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIEFVVE9NQVRJQyBDQVBUVVJFXG4gICAgLy8gaWYgYWxsIHRoZSBwYXJhbWV0ZXJzIGFyZSBva1xuICAgIGlmIChcbiAgICAgICEkY2FwdHVyZWQgJiZcbiAgICAgICRhdXRvbWF0aWNDYXB0dXJlICYmXG4gICAgICAhaXNDb3VudGluZ0Rvd24gJiZcbiAgICAgIG5ld1ZhbHVlLmlzUGVyc29uSW5GcmFtZSAmJlxuICAgICAgbmV3VmFsdWUuY2xvc2VkTW91dGggJiZcbiAgICAgICEoIW5ld1ZhbHVlLmlzUGVyc29uQ2xvc2VFbm91Z2ggfHwgbmV3VmFsdWUuaXNQZXJzb25Ub29jbG9zZSlcbiAgICApIHtcbiAgICAgIC8vIHN0YXJ0IGEgY291bnRkb3duIGFuZCB0YWtlIGEgcGljdHVyZVxuICAgICAgaXNDb3VudGluZ0Rvd24gPSB0cnVlO1xuICAgICAgZmFjZU5vdFZhbGlkYXRlZCA9IGZhbHNlO1xuICAgICAgY291bnREb3duRmluaXNoVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgY291bnREb3duQ2FwdHVyZTtcbiAgICAgIGNvbnN0IGNvdW50ZG93bkludGVydmFsQ2FsbGJhY2sgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIC8vIHN0b3AgY291bnRpbmcgaWYgZGlzYWJsZWQgbWlkLWNvdW50IG9yIGlmIGNhcHR1cmVkIGJlZm9yZVxuICAgICAgICBpZiAoXG4gICAgICAgICAgISRhdXRvbWF0aWNDYXB0dXJlIHx8XG4gICAgICAgICAgJGNhcHR1cmVkIHx8XG4gICAgICAgICAgKGlzTGl2ZW5lc3NFbmFibGVkKCkgJiYgaWRybmRDbG9zZWQpIHx8XG4gICAgICAgICAgIW5ld1ZhbHVlLmlzUGVyc29uQ2xvc2VFbm91Z2ggfHxcbiAgICAgICAgICBuZXdWYWx1ZS5pc1BlcnNvblRvb2Nsb3NlIHx8XG4gICAgICAgICAgIW5ld1ZhbHVlLmNsb3NlZE1vdXRoIHx8XG4gICAgICAgICAgIW5ld1ZhbHVlLmlzUGVyc29uSW5GcmFtZVxuICAgICAgICApIHtcbiAgICAgICAgICBpc0NvdW50aW5nRG93biA9IGZhbHNlO1xuICAgICAgICAgIGRpc2FibGVDb3VudERvd24gPSB0cnVlO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgZGlzYWJsZUNvdW50RG93biA9IGZhbHNlO1xuICAgICAgICAgIH0sIDE1MDApO1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY291bnRkb3duSW50ZXJ2YWxDYWxsYmFjayk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCByZW1haW5pbmdTZWNvbmRzID0gTWF0aC5mbG9vcigoKGNvdW50RG93bkZpbmlzaFRpbWUgLSBub3cpICUgKDEwMDAgKiA2MCkpIC8gMTAwMCk7XG4gICAgICAgIC8vIGNvdW50RG93bkh0bWxFbGVtZW50LmlubmVySFRNTCA9IHJlbWFpbmluZ1NlY29uZHMudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKHJlbWFpbmluZ1NlY29uZHMgPD0gMCkge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY291bnRkb3duSW50ZXJ2YWxDYWxsYmFjayk7XG4gICAgICAgICAgaXNDb3VudGluZ0Rvd24gPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBjdXN0b21FbGVtZW50ID0gZG9jdW1lbnRcbiAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYmlvbWV0cmljLWNvbGxlY3RvcicpPy5bMF1cbiAgICAgICAgICAgID8uc2hhZG93Um9vdD8uZ2V0RWxlbWVudEJ5SWQoJ2JyeS1jYy1jYXB0dXJlLWJ0bicpO1xuICAgICAgICAgIGN1c3RvbUVsZW1lbnQ/LmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9KTtcblxuICAvLyB3ZSBjb3VsZCBoYXZlIHVzZWQgaGlkZGVuPXskY2FwdHVyZWR9LCBidXQgZm9yIHNvbWUgcmVhc29uIGl0IGRvZXNuJ3Qgd29yayBzbyBkbyB0aGlzIGluc3RlYWRcbiAgY29uc3QgdW5zdWJzY3JpYmVDYXB0dXJlZFN0YXRlID0gY2FwdHVyZWQuc3Vic2NyaWJlKChuZXdWYWx1ZSkgPT4ge1xuICAgIGlmICghZW5jbG9zaW5nRGl2KSByZXR1cm47XG4gICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICBlbmNsb3NpbmdEaXYuY2xhc3NMaXN0LnJlbW92ZSgnZmxleCcpO1xuICAgICAgZW5jbG9zaW5nRGl2LmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmNsb3NpbmdEaXYuY2xhc3NMaXN0LmFkZCgnZmxleCcpO1xuICAgICAgZW5jbG9zaW5nRGl2LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVDbGVhclZpZGVvU3JjID0gY2xlYXJlZFZpZGVvU3JjT2JqZWN0LnN1YnNjcmliZSgobmV3VmFsdWUpID0+IHtcbiAgICBpZiAoIXZpZGVvKSByZXR1cm47XG4gICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICBjb25zb2xlLmxvZygnc2V0dGluZyBudWxsIGluIHZpZGVvIHNyY09iamVjdCcpO1xuICAgICAgdmlkZW8uc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgIHZpZGVvLnNyYyA9ICcnO1xuICAgIH1cbiAgfSk7XG5cbiAgc2VsZWN0ZWRUYWIuc3Vic2NyaWJlKGFzeW5jICh0YWIpID0+IHtcbiAgICBpZiAodGFiID09PSBUYWJFbnVtLkZhY2UpIHtcbiAgICAgIGF3YWl0IGVudW1lcmF0ZURldmljZXMoKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHVuc3Vic2NyaWJlU2VsZWN0ZWRTdHJlYW0gPSBzZWxlY3RlZFZpZGVvRGV2aWNlSWQuc3Vic2NyaWJlKGFzeW5jIChuZXdEZXZpY2VJZCkgPT4ge1xuICAgIGlmIChpc0xpdmVuZXNzRW5hYmxlZCgpKSByZXR1cm47XG4gICAgaWYgKCFuZXdEZXZpY2VJZCkgcmV0dXJuO1xuICAgIGlmICghdmlkZW8pIHtcbiAgICAgIC8vIHJlcmVuZGVyIHZpZGVvIHRhZ1xuICAgICAgdW5pcXVlID0ge307XG4gICAgfVxuICAgIGNvbnN0IHsgdmlkZW9IZWlnaHQsIHZpZGVvV2lkdGggfSA9ICR2aWRlb1N0b3JlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBzZXR1cFN0cmVhbSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCwgbmV3RGV2aWNlSWQpO1xuICAgICAgdmlkZW8uc3JjT2JqZWN0ID0gc3RyZWFtO1xuICAgICAgJF9zdHJlYW0gPSBzdHJlYW07XG4gICAgICAkY2xlYXJlZFZpZGVvU3JjT2JqZWN0ID0gZmFsc2U7XG4gICAgICBpZiAoIXJpZ2h0T3JpZW50YXRpb24pIHtcbiAgICAgICAgJGNhbWVyYVN0YXR1c1N0b3JlID0gQ2FtZXJhU3RhdHVzRW51bS5DQU1FUkFfT1JJRU5UQVRJT05fUE9SVFJBSVQ7XG4gICAgICAgIHNodXRPZmZDYW1lcmEoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zdCBlcnJvciA9IGUgYXMgRE9NRXhjZXB0aW9uO1xuICAgICAgaWRybmRDbG9zZWQgPSB0cnVlO1xuICAgICAgaWYgKGlzT2JqZWN0KGVycm9yKSAmJiAnbWVzc2FnZScgaW4gZXJyb3IgJiYgZXJyb3IubWVzc2FnZS5pbmNsdWRlcygnUmVxdWVzdGVkIGRldmljZSBub3QgZm91bmQnKSkge1xuICAgICAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLkRFVklDRV9OT1RfRk9VTkRfRVJST1I7XG4gICAgICB9XG4gICAgfVxuXG4gIH0pO1xuXG4gIGNvbnN0IHVuc3Vic2NyaWJlQ2hhbmdlVGFiID0gc2VsZWN0ZWRUYWIuc3Vic2NyaWJlKGFzeW5jICh0YWIpID0+IHtcbiAgICBpZiAodGFiID09PSBUYWJFbnVtLkZhY2UgJiYgaXNMaXZlbmVzc0VuYWJsZWQoKSkge1xuICAgICAgaWYgKCFjYXB0dXJpbmcgJiYgISRjYXB0dXJlZCAmJiBpbml0aWFsaXplZCkgYXdhaXQgb3BlbkNhbWVyYSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVGYWNlQXBpID0gc3RhcnRGYWNlQXBpLnN1YnNjcmliZShhc3luYyAobmV3VmFsdWUpID0+IHtcbiAgICBpZiAobmV3VmFsdWUpIGZhY2VhcGlMb29wKCk7XG4gIH0pO1xuXG4gIGNvbnN0IHVuc3Vic2NyaWJlU3dhcENhbWVyYSA9IHN3YXBDYW1lcmEuc3Vic2NyaWJlKGFzeW5jIChuZXdWYWx1ZSkgPT4ge1xuICAgIGlmICghJHZpZGVvU3RvcmUpIHJldHVybjtcblxuICAgIGlmICghaXNNb2JpbGUoKSkgeyAvLyBkZXNrdG9wIGNhbWVyYXNcbiAgICAgIGNvbnN0IG5ld0RldmljZSA9ICRjYW1lcmFEZXZpY2VzU3RvcmUuZmluZChkZXZpY2UgPT4gZGV2aWNlLmRldmljZUlkICE9PSAkc2VsZWN0ZWRWaWRlb0RldmljZUlkKTtcbiAgICAgIGNvbnN0IGRldmljZUlkID0gbmV3RGV2aWNlID8gbmV3RGV2aWNlLmRldmljZUlkIDogJGNhbWVyYURldmljZXNTdG9yZVswXS5kZXZpY2VJZDtcbiAgICAgIG9wZW5DYW1lcmEoZGV2aWNlSWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChuZXdWYWx1ZSkgeyAvLyBtb2JpbGUgZGV2aWNlc1xuICAgICAgICAkZmFjaW5nTW9kZSA9IEZhY2luZ01vZGVFbnVtLlJFQVJfQ0FNRVJBO1xuICAgICAgICBhd2FpdCBvcGVuQ2FtZXJhKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgJGZhY2luZ01vZGUgPSBGYWNpbmdNb2RlRW51bS5GUk9OVF9DQU1FUkE7XG4gICAgICAgIGF3YWl0IG9wZW5DYW1lcmEoKTtcbiAgICB9IFxuICB9KTtcblxuICBjb25zdCB1bnN1YnNjcmliZU9yaWVudGF0aW9uID0gb3JpZW50YXRpb25EYXRhLnN1YnNjcmliZShhc3luYyAoZGF0YSkgPT4ge1xuICAgIGlmICghZGF0YS5pc1N1cHBvcnRlZCB8fCAhaXNNb2JpbGUoKSkgcmV0dXJuO1xuXG4gICAgcmlnaHRPcmllbnRhdGlvbiA9IGRhdGEub3JpZW50YXRpb24uaW5jbHVkZXMoJ3BvcnRyYWl0Jyk7XG4gICAgaWYgKHJpZ2h0T3JpZW50YXRpb24pIHtcbiAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uT0s7XG4gICAgICBpZiAoJHZpZGVvU3RvcmUpIHsgXG4gICAgICAgICRzZWxlY3RlZFZpZGVvRGV2aWNlSWQgPSAnJztcbiAgICAgICAgJGZhY2luZ01vZGUgPSBGYWNpbmdNb2RlRW51bS5GUk9OVF9DQU1FUkE7XG4gICAgICAgIGF3YWl0IG9wZW5DYW1lcmEoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgJGNhbWVyYVN0YXR1c1N0b3JlID0gQ2FtZXJhU3RhdHVzRW51bS5DQU1FUkFfT1JJRU5UQVRJT05fUE9SVFJBSVQ7XG4gICAgICBzaHV0T2ZmQ2FtZXJhKCk7XG4gICAgfVxuICB9KTtcblxuICBhc3luYyBmdW5jdGlvbiBmYWNlYXBpTG9vcCgpIHtcbiAgICBsZXQgZGV0ZWN0aW9uc1Jlc3VsdDtcbiAgICBpZiAoZmFjZWFwaUNvdW50ZXIgPj0gZmFjZWFwaUZyYW1lUmF0ZSkge1xuICAgICAgZmFjZWFwaUNvdW50ZXIgPSAwO1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IGdldEZhY2VEZXRlY3Rvck9wdGlvbnMoKTtcbiAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICBjb25zdCBmYWNlYXBpID0gYXdhaXQgaW1wb3J0KCdAdmxhZG1hbmRpYy9mYWNlLWFwaScpO1xuICAgICAgbGV0IGRldGVjdGlvbnNSZXN1bHQyO1xuICAgICAgZGV0ZWN0aW9uc1Jlc3VsdDIgPSBmYWNlYXBpLmRldGVjdFNpbmdsZUZhY2UoZGlzcGxheUNhbnZhcywgb3B0aW9ucyk7XG4gICAgICBkZXRlY3Rpb25zUmVzdWx0ID0gYXdhaXQgZGV0ZWN0aW9uc1Jlc3VsdDIud2l0aEZhY2VMYW5kbWFya3MoKTtcbiAgICAgIC8vIGNsZWFyIGNhbnZhcyB3aGVuIG5vdGhpbmcgZGV0ZWN0ZWRcbiAgICAgIGRldGVjdGlvbnNDYW52YXMuZ2V0Q29udGV4dCgnMmQnKT8uY2xlYXJSZWN0KDAsIDAsIGRldGVjdGlvbnNDYW52YXMud2lkdGgsIGRldGVjdGlvbnNDYW52YXMuaGVpZ2h0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmFjZWFwaUNvdW50ZXIgKys7XG4gICAgfVxuICAgIFxuICAgIGlmIChkZXRlY3Rpb25zUmVzdWx0KSB7XG4gICAgICBkcmF3RGV0ZWN0aW9uc0luRmFjZShkZXRlY3Rpb25zUmVzdWx0LCBkZXRlY3Rpb25zQ2FudmFzLCBlbmFibGVNaW51dGlhZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldEZhY2VOb3RGb3VuZFRpbWVvdXQoKTtcbiAgICB9XG4gICAgaWYgKCRzdGFydEZhY2VBcGkpIHtcbiAgICAgIGxvb3BDYWxsZXIodmlkZW8sIGZhY2VhcGlMb29wKTtcbiAgICB9XG4gIH1cblxuICByZXRha2VQaG90by5zdWJzY3JpYmUoYXN5bmMgKG52KSA9PiB7XG4gICAgaWYgKG52KSB7XG4gICAgICByZXRha2UoKTtcbiAgICAgICRyZXRha2VQaG90byA9IGZhbHNlO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVSZWFkeUNhbWVyYUV2ZW50RW1pdHRlciA9IHJlYWR5LnN1YnNjcmliZSgobnYpID0+IHtcbiAgICBpZiAobnYpIHtcbiAgICAgIC8vIGluZm9ybXMgdGhhdCB0aGUgY2FtZXJhIGlzIHJlYWR5ICh0byBiZSBjbG9zZWQgaWYgdGhhdCBpcyB3aGF0IHlvdSB3YW50IHRvIGRvKVxuICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdicnljYy1jYW1lcmEtcmVhZHknKSk7XG4gICAgfVxuICB9KTtcblxuICBvbkRlc3Ryb3koKCkgPT4ge1xuICAgIHNodXRPZmZDYW1lcmEoKTtcbiAgICB1bnN1YnNjcmliZUNhcHR1cmVkU3RhdGUoKTtcbiAgICB1bnN1YnNjcmliZUZhY2VWYWxpZGF0aW9ucygpO1xuICAgIHVuc3Vic2NyaWJlVmlkZW9EaW1lbnNpb25zKCk7XG4gICAgdW5zdWJzY3JpYmVDbGVhclZpZGVvU3JjKCk7XG4gICAgdW5zdWJzY3JpYmVTZWxlY3RlZFN0cmVhbSgpO1xuICAgIHVuc3Vic2NyaWJlQ2hhbmdlVGFiKCk7XG4gICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcbiAgICB1bnN1YnNjcmliZUZhY2VBcGkoKTtcbiAgICB1bnN1YnNjcmliZVN3YXBDYW1lcmEoKTtcbiAgICB1bnN1YnNjcmliZU9yaWVudGF0aW9uKCk7XG4gICAgdW5zdWJzY3JpYmVSZWFkeUNhbWVyYUV2ZW50RW1pdHRlcigpO1xuICAgIHVuTG9ja1NjcmVlbigpO1xuICAgIGludGVydmFsSWQgPSAwO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48IS0tIHN2ZWx0ZS1pZ25vcmUgYTExeS1tZWRpYS1oYXMtY2FwdGlvbiAtLT5cbjxkaXY+XG4gIDwhLS0ge1skdmlkZW9TdG9yZT8udmlkZW9IZWlnaHQsICR2aWRlb1N0b3JlPy52aWRlb1dpZHRoXX1cbiAge1tkaXNwbGF5Q2FudmFzPy5oZWlnaHQsIGRpc3BsYXlDYW52YXM/LndpZHRoXX1cbiAge1skX3N0cmVhbT8uZ2V0VmlkZW9UcmFja3MoKVswXT8uZ2V0U2V0dGluZ3MoKT8uaGVpZ2h0LCAkX3N0cmVhbT8uZ2V0VmlkZW9UcmFja3MoKVswXT8uZ2V0U2V0dGluZ3MoKT8ud2lkdGhdfSAtLT5cbiAgPGRpdiBiaW5kOnRoaXM9e2VuY2xvc2luZ0Rpdn0gY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktYmV0d2VlblwiPlxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBteC1hdXRvXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBoaWRkZW49eyRjYW1lcmFTdGF0dXNTdG9yZSAhPT0gQ2FtZXJhU3RhdHVzRW51bS5PSyB8fFxuICAgICAgICAgIChpc0xpdmVuZXNzRW5hYmxlZCgpICYmIChpZHJuZExvYWRpbmcgfHwgaWRybmRDbG9zZWQgfHwgd2FpdGluZ0lkcm5kQ2FwdHVyZUV2ZW50KSl9XG4gICAgICA+XG4gICAgICAgIHsjaWYgaXNMaXZlbmVzc0VuYWJsZWQoKX1cbiAgICAgICAgICA8aWRsaXZlLWZhY2UtY2FwdHVyZVxuICAgICAgICAgICAgaGlkZGVuXG4gICAgICAgICAgICBtYXNrX2hpZGRlblxuICAgICAgICAgICAgYXV0b19jYXB0dXJlX2Rpc2FibGVkXG4gICAgICAgICAgICBhdXRvX2Nsb3NlX2Rpc2FibGVkXG4gICAgICAgICAgICBiaW5kOnRoaXM9e3dpZGdldEluc3RhbmNlfVxuICAgICAgICAgIC8+XG4gICAgICAgIHsvaWZ9XG4gICAgICAgIDwhLS0gd2hlbiB1bmlxdWUgZ2V0cyByZXNzaWduZWQgaXQgd2lsbCBnZXQgcmUgcmVuZGVyZWQsIHdoaWNoIHNvbHZlcyB0aGUgJ2NhbWVyYSBub3Qgb3BlbmluZyBpc3N1ZScgLS0+XG4gICAgICAgIHsja2V5IHVuaXF1ZX1cbiAgICAgICAgICA8dmlkZW9cbiAgICAgICAgICAgIGlkPVwiYnJ5LWNjLWNhbWVyYS12aWRlby10YWdcIlxuICAgICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSAtei0xMFwiXG4gICAgICAgICAgICBiaW5kOnRoaXM9e3ZpZGVvfVxuICAgICAgICAgICAgb246Y2FucGxheT17KCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoaXNMaXZlbmVzc0VuYWJsZWQoKSkgcmV0dXJuO1xuICAgICAgICAgICAgICAkdmlkZW9TdG9yZSA9IHsgdmlkZW9IZWlnaHQ6IHZpZGVvLnZpZGVvSGVpZ2h0LCB2aWRlb1dpZHRoOiB2aWRlby52aWRlb1dpZHRoIH07XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb246cGxheXxvbmNlPXtwbGF5fVxuICAgICAgICAgICAgcGxheXNpbmxpbmVcbiAgICAgICAgICAgIG11dGVkXG4gICAgICAgICAgICBhdXRvcGxheVxuICAgICAgICAgIC8+XG4gICAgICAgIHsva2V5fVxuICAgICAgICA8Q29uZkJ0biBjbGFzc05hbWU9XCJib3R0b20tMFwiIC8+XG4gICAgICAgIDxDYW1lcmFCdG4gY2xhc3NOYW1lPVwiYm90dG9tLTBcIiAvPlxuICAgICAgICBcbiAgICAgICAgPCEtLSB7I2lmIGlzTGl2ZW5lc3NFbmFibGVkKCl9IC0tPlxuICAgICAgICA8IS0tIHdvcmtzIGFzIHRoZSB2aWRlbyB0YWcgd2hlbiBsaXZlbmVzcyBlbmFibGVkLiBUaGlzIGlzIHJlcXVpcmVkIHRvIGJlIGFibGUgdG8gc2V0IHZpZGVvIHJhdGlvIGNvcnJlY3RseSAtLT5cbiAgICAgICAgPGNhbnZhcyBiaW5kOnRoaXM9e2Rpc3BsYXlDYW52YXN9IGlkPVwiYnJ5LWNlLWRpc3BsYXlDYW52YXNcIiBjbGFzcz1cIm1heC13LWZ1bGwgLXNjYWxlLXgtMTAwXCIgLz5cbiAgICAgICAgPCEtLSB7L2lmfSAtLT5cbiAgICAgICAgPGNhbnZhc1xuICAgICAgICAgIGJpbmQ6dGhpcz17ZGV0ZWN0aW9uc0NhbnZhc31cbiAgICAgICAgICBpZD1cImJyeS1jZS1kZXRlY3Rpb25zQ2FudmFzXCJcbiAgICAgICAgICBjbGFzcz1cImFic29sdXRlIHRvcC0wIGxlZnQtMCBtYXgtdy1mdWxsIC1zY2FsZS14LTEwMFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxjYW52YXMgYmluZDp0aGlzPXttYXNrQ2FudmFzfSBpZD1cImJyeS1jZS1tYXNrQ2FudmFzXCIgY2xhc3M9XCJhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgbWF4LXctZnVsbCAtc2NhbGUteC0xMDBcIiAvPlxuICAgICAgICB7I2lmIGlzQ291bnRpbmdEb3dufVxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIGxlZnQtMS8yIC10cmFuc2xhdGUteC0xLzIgdG9wLVs1JV0gY2UtZHVpLWJhZGdlIGNlLWR1aS1iYWRnZS1sZyBoLVsyZW1dIHRleHQtYmFzZSBiYXNlOnRleHQtYmFzZSB3LVsxMi4xZW1dXCJcbiAgICAgICAgICAgID57JF8oJ2ZhY2VDb2xsZWN0b3Iuc3RheVN0aWxsJyl9PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICB7L2lmfVxuICAgICAgICB7I2lmICRlbmFibGVGYWNlQXBpICYmICFpc0NvdW50aW5nRG93biAmJiAkZmFjZUZvdW5kICYmIGZhY2VOb3RWYWxpZGF0ZWR9XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0xLzIgLXRyYW5zbGF0ZS14LTEvMiB0b3AtWzUlXSBjZS1kdWktYmFkZ2UgY2UtZHVpLWJhZGdlLWxnIGgtWzJlbV0gdGV4dC1iYXNlIGJhc2U6dGV4dC1iYXNlIHctWzEyLjFlbV1cIlxuICAgICAgICAgICAgPnskXyhgJHtmYWNlVmFsaWRhdGlvbkFsZXJ0fWApfTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgey9pZn1cbiAgICAgIDwvZGl2PlxuICAgICAgeyNpZiBpc0xpdmVuZXNzRW5hYmxlZCgpICYmIHdhaXRpbmdJZHJuZENhcHR1cmVFdmVudH1cbiAgICAgICAgPHNsb3QgbmFtZT1cIm9idGFpbmluZy1waG90by1naWZcIiBjbGFzcz1cImJsb2NrIGgtWzE3ZW1dIGxnOmgtWzIxLjZlbV0geGw6aC1bMzBlbV1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNsYXRlLXktMS8zIG1kOnRyYW5zbGF0ZS15LTEvNCB4bDp0cmFuc2xhdGUteS0xLzJcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPXtsb2FkaW5nR2lmfSBhbHQ9XCJsb2FkaW5nIGdpZlwiIGNsYXNzPVwibS1hdXRvIGgtWzEwZW1dIGxnOmgtWzEyZW1dXCIgLz5cbiAgICAgICAgICAgIHsjaWYgJGlzTG9hZGluZ31cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIyeGw6dGV4dC0yeGwgbGc6dGV4dC0yeGwgdGV4dC1tZCBibG9jayBwLTIgbS1hdXRvIHRleHQtY2VudGVyXCI+T2J0YWluaW5nIHBob3RvLi4uPC9zcGFuPlxuICAgICAgICAgICAgezplbHNlfVxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIjJ4bDp0ZXh0LTJ4bCBsZzp0ZXh0LTJ4bCB0ZXh0LW1kIGJsb2NrIHAtMiBtLWF1dG8gdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID57JF8oJ2ZhY2VDb2xsZWN0b3Iub2J0YWluaW5nUGljdHVyZScpfTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICB7L2lmfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3Nsb3Q+XG4gICAgICB7L2lmfVxuICAgICAgeyNpZiBpc0xpdmVuZXNzRW5hYmxlZCgpICYmIGlkcm5kTG9hZGluZyAmJiAkY2FtZXJhU3RhdHVzU3RvcmUgPT09IENhbWVyYVN0YXR1c0VudW0uT0t9XG4gICAgICAgIDxzbG90IG5hbWU9XCJsb2FkaW5nLWNhbWVyYS1naWZcIiBjbGFzcz1cImJsb2NrIGgtWzE3ZW1dIGxnOmgtWzIxLjZlbV0geGw6aC1bMzBlbV1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNsYXRlLXktMS8zIG1kOnRyYW5zbGF0ZS15LTEvNCB4bDp0cmFuc2xhdGUteS0xLzJcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPXtsb2FkaW5nR2lmfSBhbHQ9XCJsb2FkaW5nIGdpZlwiIGNsYXNzPVwibS1hdXRvIGgtWzEwZW1dIGxnOmgtWzEyZW1dXCIgLz5cbiAgICAgICAgICAgIHsjaWYgJGlzTG9hZGluZ31cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIyeGw6dGV4dC0yeGwgbGc6dGV4dC0yeGwgdGV4dC1tZCBibG9jayBwLTIgbS1hdXRvIHRleHQtY2VudGVyXCI+TG9hZGluZyBjYW1lcmEuLi48L3NwYW4+XG4gICAgICAgICAgICB7OmVsc2V9XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiMnhsOnRleHQtMnhsIGxnOnRleHQtMnhsIHRleHQtbWQgYmxvY2sgcC0yIG0tYXV0byB0ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPnskXygnZmFjZUNvbGxlY3Rvci5pbml0aWF0aW5nQ2FtZXJhJyl9PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIHsvaWZ9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2xvdD5cbiAgICAgIHsvaWZ9XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicHgtNCBzbTpweC0wIG10LVsxZW1dXCJcbiAgICAgICAgaGlkZGVuPXshc2hvd0NhcHR1cmVCdXR0b24gfHwgaXNMaXZlbmVzc0VuYWJsZWQoKSAmJiAoaWRybmRMb2FkaW5nIHx8IGlkcm5kQ2xvc2VkIHx8IHdhaXRpbmdJZHJuZENhcHR1cmVFdmVudCl9XG4gICAgICA+XG4gICAgICAgIHsjaWYgISRjYXB0dXJlZH1cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBpZD1cImJyeS1jYy1jYXB0dXJlLWJ0blwiXG4gICAgICAgICAgICBkaXNhYmxlZD17KCEkZmFjZUZvdW5kICYmICRlbmFibGVGYWNlQXBpKSB8fCAoISRyZWFkeSAmJiAhJGVuYWJsZUZhY2VBcGkpfVxuICAgICAgICAgICAgaGlkZGVuPXshc2hvd0NhcHR1cmVCdXR0b259XG4gICAgICAgICAgICBjbGFzcz1cImNlLWR1aS1idG4gY2UtZHVpLWJ0bi1ibG9jayBjZS1kdWktYnRuLXByaW1hcnkgdGV4dC14bFwiXG4gICAgICAgICAgICBvbjpjbGljaz17KCkgPT4gY2FwdHVyZSgpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsjaWYgJGlzTG9hZGluZ31cbiAgICAgICAgICAgICAgVGFrZSBwaWN0dXJlXG4gICAgICAgICAgICB7OmVsc2V9XG4gICAgICAgICAgICAgIHskXygnZmFjZUNvbGxlY3Rvci50YWtlUGljdHVyZScpfVxuICAgICAgICAgICAgey9pZn1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgezplbHNlfVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZS1kdWktYnRuLWdyb3VwIGZsZXhcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb246Y2xpY2s9eygpID0+IHNhdmUoKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyRqdXN0aWZpY2F0aW9uLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgICAgICAgY2xhc3M9XCJjZS1kdWktYnRuIGNlLWR1aS1idG4tcHJpbWFyeSBjZS1kdWktYnRuLWJsb2NrIGZsZXgtc2hyaW5rXCI+eyRfKCdmYWNlQ29sbGVjdG9yLmZpbmlzaCcpfTwvYnV0dG9uXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwiYnJ5LWNjLXJldGFrZS1idXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImNlLWR1aS1idG4gY2UtZHVpLWJ0bi1ibG9jayBjZS1kdWktYnRuLW91dGxpbmUgZmxleC1zaHJpbmtcIlxuICAgICAgICAgICAgICBvbjpjbGljaz17KCkgPT4gcmV0YWtlKCl9PnskXygnZmFjZUNvbGxlY3Rvci5yZXRha2VQaG90bycpfTwvYnV0dG9uXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIHsvaWZ9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIHsjaWYgKCFpZHJuZENsb3NlZCB8fCAkY2FwdHVyZWQpICYmIHNob3dVbmNvbmZvcm1pdGllc31cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImdyaWQtY29scy0xIGdyaWQtcm93cy0yIHNtOmdyaWQtY29scy0yIHNtOmdyaWQtcm93cy0xIGdhcC1bLjVlbV0geyEkc2hvd0ZhY2VXaGlsZVZhbGlkYXRpbmcgJiZcbiAgICAgICR1bmNvbmZvcm1pdGllc1N0b3JlLmlzTG9hZGluZ1xuICAgICAgICA/ICdhYnNvbHV0ZSAtdHJhbnNsYXRlLXktMS8yIC10cmFuc2xhdGUteC0xLzIgdG9wLTEvMiBsZWZ0LTEvMiBvdmVyZmxvdy12aXNpYmxlJ1xuICAgICAgICA6ICdncmlkIG0tWzFlbV0gb3ZlcmZsb3ctaGlkZGVuJ31cIlxuICAgID5cbiAgICAgIDxpbWdcbiAgICAgICAgY2xhc3M9XCJtLWF1dG8gY29sLXN0YXJ0LTEgY29sLWVuZC0xIG1heC1oLVsyMy4yZW1dXCJcbiAgICAgICAgc3JjPXskZGF0YVR5cGVQcmVmaXggKyAnLCcgKyAkaW1hZ2V9XG4gICAgICAgIGhpZGRlbj17ISRjYXB0dXJlZCB8fCAoISRzaG93RmFjZVdoaWxlVmFsaWRhdGluZyAmJiAkdW5jb25mb3JtaXRpZXNTdG9yZS5pc0xvYWRpbmcpfVxuICAgICAgICBhbHQ9XCJcIlxuICAgICAgLz5cbiAgICAgIHsjaWYgISRjYXB0dXJlZH1cbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiIC8+XG4gICAgICB7OmVsc2UgaWYgJHVuY29uZm9ybWl0aWVzU3RvcmUuaXNMb2FkaW5nfVxuICAgICAgICA8ZGl2IGNsYXNzPVwibWluLXctWzIwMHB4XVwiPlxuICAgICAgICAgIDxoMSBjbGFzcz1cImlubGluZS1ibG9jayB0ZXh0LTN4bCBmb250LWJvbGQgcGItWzFlbV0gdHJhbnNpdGlvbi1vcGFjaXR5XCI+eyRfKCdmYWNlQ29sbGVjdG9yLnZhbGlkYXRpbmcnKX08L2gxPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC02IGlubGluZS1ibG9jayBkb3QtdHlwaW5nXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB7OmVsc2UgaWYgJHJlcXVlc3RSZXN1bHQgIT09IHJlcXVlc3RSZXN1bHRFbnVtLk9LfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICB7I2lmICRyZXF1ZXN0UmVzdWx0ID09PSByZXF1ZXN0UmVzdWx0RW51bS5MSVZFTkVTU19ERVRFQ1RJT05fRkFJTFVSRSB8fCAkcmVxdWVzdFJlc3VsdCA9PT0gcmVxdWVzdFJlc3VsdEVudW0uVU5LTk9XTl9MSVZFTkVTU19FUlJPUn1cbiAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQtM3hsIGZvbnQtYm9sZCBwYi1bMWVtXSB0cmFuc2l0aW9uLW9wYWNpdHkgdGV4dC1lcnJvclwiPlxuICAgICAgICAgICAgICB7JF8oJ2xpdmVuZXNzLmVycm9yLmVycm9yJyl9OiB7JF8obGl2ZW5lc3NFcnJvcil9LlxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICB7OmVsc2UgaWYgJHJlcXVlc3RSZXN1bHQgPT09IHJlcXVlc3RSZXN1bHRFbnVtLkxPV19MSVZFTkVTU19TQ09SRX1cbiAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQtM3hsIGZvbnQtYm9sZCBwYi1bMWVtXSB0cmFuc2l0aW9uLW9wYWNpdHkgdGV4dC1lcnJvclwiPlxuICAgICAgICAgICAgICB7JF8oJ2xpdmVuZXNzLmVycm9yLmVycm9yJyl9OiB7JF8oJ2ZhY2VDb2xsZWN0b3IudW5hbGl2ZUNhcHR1cmUnKX1cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgezplbHNlIGlmICRyZXF1ZXN0UmVzdWx0ID09PSByZXF1ZXN0UmVzdWx0RW51bS5URU1QTEFURV9FWFRSQUNUSU9OX0VSUk9SIHx8ICRyZXF1ZXN0UmVzdWx0ID09PSByZXF1ZXN0UmVzdWx0RW51bS5VTktOT1dOX1RFTVBMQVRFX0VYVFJBQ1RJT05fRVJST1J9XG4gICAgICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LTN4bCBmb250LWJvbGQgcGItWzFlbV0gdHJhbnNpdGlvbi1vcGFjaXR5IHRleHQtZXJyb3JcIj5cbiAgICAgICAgICAgICAgeyRfKCdmYWNlQ29sbGVjdG9yLmxvd1F1YWxpdHlDYXB0dXJlJyl9XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgIHs6ZWxzZSBpZiAkcmVxdWVzdFJlc3VsdCA9PT0gcmVxdWVzdFJlc3VsdEVudW0uVU5BQkxFX1RPX0NPTU1VTklDQVRFX1dJVEhfVEVNUExBVEVfRVhUUkFDVElPTl9TRVJWSUNFfVxuICAgICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC0zeGwgZm9udC1ib2xkIHBiLVsxZW1dIHRyYW5zaXRpb24tb3BhY2l0eSB0ZXh0LWVycm9yXCI+XG4gICAgICAgICAgICAgIHskXygnZmFjZUNvbGxlY3Rvci51bmFibGVUb0NvbXBsZXRlUmVxdWVzdCcpfVxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICB7OmVsc2V9XG4gICAgICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LTN4bCBmb250LWJvbGQgcGItWzFlbV0gdHJhbnNpdGlvbi1vcGFjaXR5XCI+eyRfKCdmYWNlQ29sbGVjdG9yLmV2ZXJ5dGhpbmdPaycpfTwvaDE+XG4gICAgICAgICAgey9pZn1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2UtZHVpLWJ0bi1ncm91cCBmbGV4XCI+XG4gICAgICAgICAgICA8YnV0dG9uIG9uOmNsaWNrPXsoKSA9PiBzYXZlKCl9IGRpc2FibGVkIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLXByaW1hcnkgY2UtZHVpLWJ0bi1ibG9jayBmbGV4LXNocmlua1wiXG4gICAgICAgICAgICAgID57JF8oJ2ZhY2VDb2xsZWN0b3IuZmluaXNoJyl9PC9idXR0b25cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJicnktY2MtcmV0YWtlLWJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLWJsb2NrIGNlLWR1aS1idG4tb3V0bGluZSBmbGV4LXNocmlua1wiXG4gICAgICAgICAgICAgIG9uOmNsaWNrPXsoKSA9PiByZXRha2UoKX0+eyRfKCdmYWNlQ29sbGVjdG9yLnJldGFrZVBob3RvJyl9PC9idXR0b25cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB7OmVsc2UgaWYgISRzYXZlZH1cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LTN4bCBmb250LWJvbGQgcGItWzFlbV0gdHJhbnNpdGlvbi1vcGFjaXR5XCI+eyRfKCdmYWNlQ29sbGVjdG9yLnVuY29uZm9ybWl0aWVzJyl9PC9oMT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgIHsjZWFjaCAkdW5jb25mb3JtaXRpZXNTdG9yZS51bmNvbmZvcm1pdGllcyBhcyB1bmNvbmZvcm1pdHl9XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZS1kdWktYmFkZ2UgY2UtZHVpLWJhZGdlLWxnIGgtWzJlbV0gY2UtZHVpLWJhZGdlLWVycm9yIHRleHQteGwgcGItWy4yNWVtXSBtLVsuNWVtXVwiPlxuICAgICAgICAgICAgICAgIHt1bmNvbmZvcm1pdHl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgey9lYWNofVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZS1kdWktZm9ybS1jb250cm9sIG10LVsyLjVlbV1cIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNlLWR1aS1sYWJlbFwiIGZvcj1cImp1c3RpZmljYXRpb25cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjZS1kdWktbGFiZWwtdGV4dCB0ZXh0LWJhc2VcIlxuICAgICAgICAgICAgICAgID57JF8oJ2ZhY2VDb2xsZWN0b3IucHJvdmlkZUFSZWFzb25Gb3JUaGVMb3dRdWFsaXR5Q2FwdHVyZScpfTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgIGNvbnRlbnRlZGl0YWJsZVxuICAgICAgICAgICAgICBiaW5kOnZhbHVlPXskanVzdGlmaWNhdGlvbn1cbiAgICAgICAgICAgICAgaWQ9XCJqdXN0aWZpY2F0aW9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjZS1kdWktdGV4dGFyZWEgY2UtZHVpLXRleHRhcmVhLWJvcmRlcmVkIGgtWzZlbV0gdGV4dC1iYXNlXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9eyRfKCdmYWNlQ29sbGVjdG9yLnlvdXJKdXN0aWZpY2F0aW9uJyl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2UtZHVpLWxhYmVsXCIgZm9yPVwianVzdGlmaWNhdGlvblwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNlLWR1aS1sYWJlbC10ZXh0LWFsdCB0ZXh0LWJhc2VcIj4oeyRfKCdmYWNlQ29sbGVjdG9yLnRoaXNJbmZvcm1hdGlvbklzUmVxdWlyZWQnKX0pPC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7I2lmICRjYXB0dXJlZH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZS1kdWktYnRuLWdyb3VwIGZsZXhcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG9uOmNsaWNrPXsoKSA9PiBzYXZlKCl9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyRqdXN0aWZpY2F0aW9uLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNlLWR1aS1idG4gY2UtZHVpLWJ0bi1wcmltYXJ5IGNlLWR1aS1idG4tYmxvY2sgZmxleC1zaHJpbmsgdGV4dC1iYXNlXCJcbiAgICAgICAgICAgICAgICA+eyRfKCdmYWNlQ29sbGVjdG9yLmZpbmlzaCcpfTwvYnV0dG9uXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwiYnJ5LWNjLXJldGFrZS1idXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLWJsb2NrIGNlLWR1aS1idG4tb3V0bGluZSBmbGV4LXNocmluayB0ZXh0LWJhc2VcIlxuICAgICAgICAgICAgICAgIG9uOmNsaWNrPXsoKSA9PiByZXRha2UoKX0+eyRfKCdmYWNlQ29sbGVjdG9yLnJldGFrZVBob3RvJyl9PC9idXR0b25cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgey9pZn1cbiAgICAgICAgPC9kaXY+XG4gICAgICB7OmVsc2V9XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC0zeGwgZm9udC1ib2xkIHBiLVsxZW1dIHRyYW5zaXRpb24tb3BhY2l0eVwiPnskXygnZmFjZUNvbGxlY3Rvci5jYXB0dXJlZCcpfTwvaDE+XG5cbiAgICAgICAgICB7I2lmICR1bmNvbmZvcm1pdGllc1N0b3JlLnVuY29uZm9ybWl0aWVzLmxlbmd0aCAhPT0gMH1cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNlLWR1aS1sYWJlbFwiIGZvcj1cImp1c3RpZmljYXRpb25cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjZS1kdWktbGFiZWwtdGV4dCB0ZXh0LWJhc2VcIj57JF8oJ2ZhY2VDb2xsZWN0b3IuanVzdGlmaWNhdGlvbicpfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgY29udGVudGVkaXRhYmxlXG4gICAgICAgICAgICAgIGJpbmQ6dmFsdWU9eyRqdXN0aWZpY2F0aW9ufVxuICAgICAgICAgICAgICBpZD1cImp1c3RpZmljYXRpb25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImNlLWR1aS10ZXh0YXJlYSBjZS1kdWktdGV4dGFyZWEtYm9yZGVyZWQgdGV4dGFyZWEtZ2hvc3QgaC1bNmVtXSB3LWZ1bGwgdGV4dC1iYXNlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgey9pZn1cbiAgICAgICAgICA8ZGl2IGNsYXNzOmNlLWR1aS1idG4tZ3JvdXA9eyEkZXhwb3J0QnV0dG9uRGlzYWJsZWR9IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBpZD1cImJyeS1jYy1yZXRha2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjZS1kdWktYnRuIGNlLWR1aS1idG4tYmxvY2sgZmxleC1zaHJpbmsgdGV4dC1iYXNlXCJcbiAgICAgICAgICAgICAgb246Y2xpY2s9eygpID0+IHJldGFrZSgpfT57JF8oJ2ZhY2VDb2xsZWN0b3IucmV0YWtlUGhvdG8nKX08L2J1dHRvblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgeyNpZiBnZXQoZW5hYmxlU3RyYXRlZ3kpLmZhY2VTdHJhdGVneSAhPT0gRmFjZUV4cG9ydFN0cmF0ZWd5LkRJU0FCTEVEfVxuICAgICAgICAgICAgICA8RXhwb3J0QnRuIGNzc0NsYXNzPVwiY2UtZHVpLWJ0bi1ibG9jayBmbGV4LXNocmlua1wiIC8+XG4gICAgICAgICAgICB7L2lmfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIHsvaWZ9XG4gICAgICA8IS0tIDxoMSBoaWRkZW49eyEkY2FwdHVyZWR9IGNsYXNzPVwidGV4dC0zeGwgZm9udC1ib2xkIHBiLTQgdHJhbnNpdGlvbi1hbGxcIj5FeGNlbGVudGUhPC9oMT4gLS0+XG4gICAgPC9kaXY+XG4gIHs6ZWxzZSBpZiAkY2FtZXJhU3RhdHVzU3RvcmUgIT09IENhbWVyYVN0YXR1c0VudW0uT0t9XG4gICAgPENhbWVyYVN0YXR1c1xuICAgICAgaGFuZGxlcj17YXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBvcGVuQ2FtZXJhKCk7XG4gICAgICB9fVxuICAgIC8+XG4gIHsvaWZ9XG48L2Rpdj5cbiJdLCJuYW1lcyI6WyJpbnNlcnRfZGV2IiwidGFyZ2V0IiwiaWRsaXZlX2ZhY2VfY2FwdHVyZSIsImFuY2hvciIsInZpZGVvXzEiLCJjdHgiLCJ0X3ZhbHVlIiwic3BhbiIsImRpcnR5Iiwic2V0X2RhdGFfZGV2IiwidCIsImNyZWF0ZV9pZl9ibG9ja18xOCIsImxvYWRpbmdHaWYiLCJhdHRyX2RldiIsImltZyIsImltZ19zcmNfdmFsdWUiLCJzbG90IiwiYXBwZW5kX2RldiIsImRpdiIsImNyZWF0ZV9pZl9ibG9ja18xNiIsInQwX3ZhbHVlIiwidDJfdmFsdWUiLCJidXR0b24wIiwiYnV0dG9uMSIsInQwIiwidDIiLCJjcmVhdGVfaWZfYmxvY2tfMTQiLCJidXR0b24iLCJidXR0b25fZGlzYWJsZWRfdmFsdWUiLCJyZXF1ZXN0UmVzdWx0RW51bSIsImltZ19oaWRkZW5fdmFsdWUiLCJjdXJyZW50IiwidDNfdmFsdWUiLCJzaG93X2lmIiwiZ2V0IiwiZW5hYmxlU3RyYXRlZ3kiLCJGYWNlRXhwb3J0U3RyYXRlZ3kiLCJpZl9ibG9jazAiLCJjcmVhdGVfaWZfYmxvY2tfMTEiLCJkaXYxIiwiaDEiLCJkaXYwIiwidDMiLCJ0N192YWx1ZSIsImVhY2hfdmFsdWUiLCJpIiwiY3JlYXRlX2lmX2Jsb2NrXzkiLCJ0ZXh0YXJlYSIsInRleHRhcmVhX3BsYWNlaG9sZGVyX3ZhbHVlIiwiZGl2MiIsImxhYmVsMCIsInNwYW4wIiwibGFiZWwxIiwic3BhbjEiLCJ0NyIsInQxX3ZhbHVlIiwiY3JlYXRlX2lmX2Jsb2NrXzQiLCJjcmVhdGVfaWZfYmxvY2tfNSIsImNyZWF0ZV9pZl9ibG9ja182IiwiY3JlYXRlX2lmX2Jsb2NrXzciLCJ0MSIsImxhYmVsIiwiaXNMaXZlbmVzc0VuYWJsZWQiLCJzaG93X2lmXzEiLCJDYW1lcmFTdGF0dXNFbnVtIiwiY3JlYXRlX2lmX2Jsb2NrXzIwIiwiaWZfYmxvY2syIiwiY3JlYXRlX2lmX2Jsb2NrXzE5IiwiY3JlYXRlX2lmX2Jsb2NrXzEzIiwiZGl2MV9oaWRkZW5fdmFsdWUiLCJkaXY0IiwiZGl2MyIsImNhbnZhczAiLCJjYW52YXMxIiwiY2FudmFzMiIsImRyYXdWaWRlb09uQ2FudmFzIiwidmlkZW8iLCJkaXNwbGF5Q2FudmFzIiwiaXNTYW1lUHJvcG9ydGlvbiIsImRldGVjdGlvbnNDYW52YXMiLCJlbmNsb3NpbmdEaXYiLCJpc0NvdW50aW5nRG93biIsInVuaXF1ZSIsImxvYWRlZEZhY2VBcGlBbmRXZWlnaHRzIiwiZW5hYmxlTWludXRpYWUiLCIkJHByb3BzIiwidmlkZW9EaW1lbnNpb25zIiwibm9UYWJzIiwid2VpZ2h0c1BhdGgiLCJldmFsdWF0ZVBob3RvIiwic2hvd0NhcHR1cmVCdXR0b24iLCJzaG93VW5jb25mb3JtaXRpZXMiLCJ2aWRlb0ZpbHRlciIsInN0YXJ0RmFjZUFwaSIsIndyaXRhYmxlIiwiZGF0YVR5cGVQcmVmaXgiLCJ3aWRnZXRJbnN0YW5jZSIsIm1hc2tDYW52YXMiLCJjYXB0dXJpbmciLCJpbml0aWFsaXplZCIsImlkcm5kTG9hZGluZyIsImlkcm5kQ2xvc2VkIiwid2FpdGluZ0lkcm5kQ2FwdHVyZUV2ZW50IiwiaW50ZXJ2YWxJZCIsImxpdmVuZXNzRXJyb3IiLCJmYWNlYXBpQ291bnRlciIsImZhY2VhcGlGcmFtZVJhdGUiLCJjb3VudERvd25DYXB0dXJlIiwicmlnaHRPcmllbnRhdGlvbiIsImNvdW50RG93bkZpbmlzaFRpbWUiLCJkaXNhYmxlQ291bnREb3duIiwiZmFjZU5vdFZhbGlkYXRlZCIsImZhY2VWYWxpZGF0aW9uQWxlcnQiLCJ0b2FzdCIsIlN3YWwiLCJvbk1vdW50IiwibG9nIiwic2V0X3N0b3JlX3ZhbHVlIiwicmVhZHkiLCIkcmVhZHkiLCJmYWNlRm91bmQiLCIkZmFjZUZvdW5kIiwiY2FwdHVyZWQiLCIkY2FwdHVyZWQiLCIkZmFjaW5nTW9kZSIsIkZhY2luZ01vZGVFbnVtIiwicmVnaXN0ZXJJZHJuZExpc3RlbmVycyIsIiRlbmFibGVGYWNlQXBpIiwibG9hZEZhY2VBcGlBbmRXZWlnaHRzIiwib3BlbkNhbWVyYSIsImRyYXdPdmFsIiwib3ZhbEhlaWdodCIsIm92YWxXaWR0aCIsIm92YWxYIiwiJHZpZGVvU3RvcmUiLCJvdmFsWSIsIiRvdmFsRGltZW5zaW9ucyIsInByaW1hcnlUaGVtZSIsInN1Y2Nlc3NUaGVtZSIsInRpbWVSZW1haW5pbmciLCJjbGlwUGF0aCIsImV2ZW50IiwidmlkZW9fIiwiJGlkcm5kVmlkZW9TdG9yZURpbWVuc2lvbnMiLCIkJGludmFsaWRhdGUiLCJsb29wIiwibG9vcENhbGxlciIsImUiLCIkY2FtZXJhU3RhdHVzU3RvcmUiLCJpZHJuZEluaXRpYWxpemVkIiwiJGlkcm5kSW5pdGlhbGl6ZWQiLCIkc2VsZWN0ZWRUYWIiLCJUYWJFbnVtIiwib3BlbkNhbWVyYUxpdmVuZXNzIiwiZW5jcnlwdGVkRmlsZSIsInBob3RvIiwiYmxvYiIsIiRibG9iIiwiJHJlcXVlc3RSZXN1bHQiLCIkdW5jb25mb3JtaXRpZXNTdG9yZSIsImJsb2JUb0Jhc2U2NCIsIiRkYXRhVHlwZVByZWZpeCIsIiRpbWFnZSIsIiRvcmlnaW5hbENhcHR1cmUiLCIkY2FwdHVyZUxpdmVuZXNzSWRybmRFbmRwb2ludCIsImJvZHlQYXJ0cyIsImljYW9XYXJuaW5ncyIsImdldEZhY2VVbmNvbmZvcm1pdGllcyIsImVycm9yQ29kZSIsImlkcm5kRXJyb3JUb2kxOG5LZXkiLCJBeGlvc0Vycm9yIiwiZmFjZSIsImJwIiwiJF8iLCJ2YWxpZGF0ZUxpdmVuZXNzIiwiaW1hZ2UiLCJ0cmFuc2xhdGVBbmRTZXRVbmNvbmZvcm1pdGllcyIsImxpdmVuZXNzUmVzdWx0IiwiZ2V0TGl2ZW5lc3NJZHJuZCIsImRldmljZSIsIndpZHRoIiwiaGVpZ2h0IiwidiIsInZpZGVvU3RvcmUiLCJpc01vYmlsZSIsInNlbGVjdERldmljZSIsInBsYXkiLCIkc3RhcnRGYWNlQXBpIiwiY2FwdHVyZSIsInVuTG9ja1NjcmVlbiIsImNhbnZhcyIsIiRib3hTdG9yZSIsInNhdmUiLCIkanVzdGlmaWNhdGlvbiIsInNhdmVkIiwiJHNhdmVkIiwiYmFzZTY0IiwicmV0YWtlIiwib3JpZ2luYWxDYXB0dXJlIiwidW5jb25mb3JtaXRpZXNTdG9yZSIsImZhY2VWYWxpZGF0aW9ucyIsImZhY2VWYWxpZGF0aW9uc1N0b3JlIiwicmVzdWx0IiwidGl0bGUiLCJpY29uIiwiJHNob3dMaXZlbmVzc1Jlc3VsdFRvYXN0IiwiZW51bWVyYXRlRGV2aWNlcyIsImRldmljZUlkIiwid2lkdGhDYW1lcmEiLCJoZWlnaHRDYW1lcmEiLCJhc3BlY3RSYXRpb0NhbWVyYSIsImZhY2luZyIsInRvdWNoUG9pbnRzIiwiZ2V0VmlkZW9EaW1lbnNpb25zIiwiJHNlbGVjdGVkVmlkZW9EZXZpY2VJZCIsIiRjYW1lcmFEZXZpY2VzU3RvcmUiLCJlcnJvciIsImNvbnN0cmFpbnRFcnJvciIsImlzT2JqZWN0IiwidW5zdWJzY3JpYmVWaWRlb0RpbWVuc2lvbnMiLCJzdG9yZU9iaiIsInVuc3Vic2NyaWJlRmFjZVZhbGlkYXRpb25zIiwibmV3VmFsdWUiLCJuZXdGYWNlVmFsaWRhdGlvbkFsZXJ0IiwiJGF1dG9tYXRpY0NhcHR1cmUiLCJjb3VudGRvd25JbnRlcnZhbENhbGxiYWNrIiwibm93IiwidW5zdWJzY3JpYmVDYXB0dXJlZFN0YXRlIiwidW5zdWJzY3JpYmVDbGVhclZpZGVvU3JjIiwiY2xlYXJlZFZpZGVvU3JjT2JqZWN0Iiwic2VsZWN0ZWRUYWIiLCJ0YWIiLCJ1bnN1YnNjcmliZVNlbGVjdGVkU3RyZWFtIiwic2VsZWN0ZWRWaWRlb0RldmljZUlkIiwibmV3RGV2aWNlSWQiLCJ2aWRlb0hlaWdodCIsInZpZGVvV2lkdGgiLCJzdHJlYW0iLCJzZXR1cFN0cmVhbSIsIl9zdHJlYW0iLCIkX3N0cmVhbSIsIiRjbGVhcmVkVmlkZW9TcmNPYmplY3QiLCJzaHV0T2ZmQ2FtZXJhIiwidW5zdWJzY3JpYmVDaGFuZ2VUYWIiLCJ1bnN1YnNjcmliZUZhY2VBcGkiLCJmYWNlYXBpTG9vcCIsInVuc3Vic2NyaWJlU3dhcENhbWVyYSIsInN3YXBDYW1lcmEiLCJuZXdEZXZpY2UiLCJ1bnN1YnNjcmliZU9yaWVudGF0aW9uIiwib3JpZW50YXRpb25EYXRhIiwiZGF0YSIsImRldGVjdGlvbnNSZXN1bHQiLCJvcHRpb25zIiwiZ2V0RmFjZURldGVjdG9yT3B0aW9ucyIsImZhY2VhcGkiLCJkZXRlY3Rpb25zUmVzdWx0MiIsImRyYXdEZXRlY3Rpb25zSW5GYWNlIiwic2V0RmFjZU5vdEZvdW5kVGltZW91dCIsInJldGFrZVBob3RvIiwibnYiLCIkcmV0YWtlUGhvdG8iLCJ1bnN1YnNjcmliZVJlYWR5Q2FtZXJhRXZlbnRFbWl0dGVyIiwib25EZXN0cm95IiwiJCR2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUF3NUJVLE1BQUFBLEVBTUNDLEdBQUFDLEdBQUFDLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJRCxNQUFBSCxFQVlDQyxHQUFBRyxHQUFBRCxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7VUFKZUUsRUFBSSxDQUFBO0FBQUEsVUFBQSxFQUFBLE1BQUEsR0FBQTtBQUFBLFVBQUE7QUFBQSxVQUFBO0FBQUEsVUFBQTtBQUFBLFFBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztTQXNCaEJDO0FBQUE7QUFBQSxJQUFBRCxNQUFHLHlCQUF5QixJQUFBO0FBQUE7Ozs7OztBQUZoQyxNQUFBTCxFQUdBQyxHQUFBTSxHQUFBSixDQUFBOzs7QUFESSxNQUFBSyxFQUFBLENBQUE7QUFBQSxNQUFBLGFBQUFGLE9BQUFBO0FBQUEsTUFBQUQsTUFBRyx5QkFBeUIsSUFBQSxPQUFBSSxFQUFBQyxHQUFBSixDQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7O1NBTTVCQTtBQUFBO0FBQUEsSUFBQUQ7SUFBTUEsRUFBbUIsRUFBQSxDQUFBLEVBQUEsSUFBQTtBQUFBOzs7Ozs7QUFGN0IsTUFBQUwsRUFHQUMsR0FBQU0sR0FBQUosQ0FBQTs7O0FBREksTUFBQUssRUFBQSxDQUFBO0FBQUEsTUFBQSxhQUFBRixPQUFBQTtBQUFBLE1BQUFEO01BQU1BLEVBQW1CLEVBQUEsQ0FBQSxFQUFBLElBQUEsT0FBQUksRUFBQUMsR0FBQUosQ0FBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFRdEJELEVBQVUsRUFBQSxJQUFBTTs7Ozs7OytFQURMQyxFQUFVLEtBQUFDLEVBQUFDLEdBQUEsT0FBQUMsQ0FBQTs7O0FBRnhCLE1BQUFmLEVBV01DLEdBQUFlLEdBQUFiLENBQUEsR0FWSmMsRUFTS0QsR0FBQUUsQ0FBQSxHQVJIRCxFQUE2RUMsR0FBQUosQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBS3ZFUjtBQUFBO0FBQUEsSUFBQUQsTUFBRyxnQ0FBZ0MsSUFBQTtBQUFBOzs7Ozs7QUFEdkMsTUFBQUwsRUFFQUMsR0FBQU0sR0FBQUosQ0FBQTs7O0FBREksTUFBQUssRUFBQSxDQUFBO0FBQUEsTUFBQSxhQUFBRixPQUFBQTtBQUFBLE1BQUFELE1BQUcsZ0NBQWdDLElBQUEsT0FBQUksRUFBQUMsR0FBQUosQ0FBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUh2QyxNQUFBTixFQUFvR0MsR0FBQU0sR0FBQUosQ0FBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BYWpHRSxFQUFVLEVBQUEsSUFBQWM7Ozs7OzsrRUFETFAsRUFBVSxLQUFBQyxFQUFBQyxHQUFBLE9BQUFDLENBQUE7OztBQUZ4QixNQUFBZixFQVdNQyxHQUFBZSxHQUFBYixDQUFBLEdBVkpjLEVBU0tELEdBQUFFLENBQUEsR0FSSEQsRUFBNkVDLEdBQUFKLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQUt2RVI7QUFBQTtBQUFBLElBQUFELE1BQUcsZ0NBQWdDLElBQUE7QUFBQTs7Ozs7O0FBRHZDLE1BQUFMLEVBRUFDLEdBQUFNLEdBQUFKLENBQUE7OztBQURJLE1BQUFLLEVBQUEsQ0FBQTtBQUFBLE1BQUEsYUFBQUYsT0FBQUE7QUFBQSxNQUFBRCxNQUFHLGdDQUFnQyxJQUFBLE9BQUFJLEVBQUFDLEdBQUFKLENBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFIdkMsTUFBQU4sRUFBbUdDLEdBQUFNLEdBQUFKLENBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7O1lBZ0MvQmlCO0FBQUE7QUFBQSxJQUFBZixNQUFHLHNCQUFzQixJQUFBO0FBQUEsaUJBS2xFZ0I7QUFBQTtBQUFBLElBQUFoQixNQUFHLDJCQUEyQixJQUFBO0FBQUE7Ozs7TUFOL0NBLEVBQWMsRUFBQSxFQUFDLFdBQVc7OztBQUh4QyxNQUFBTCxFQVdLQyxHQUFBaUIsR0FBQWYsQ0FBQSxHQVZIYyxFQUlBQyxHQUFBSSxDQUFBLHFCQUNBTCxFQUlBQyxHQUFBSyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFOc0UsTUFBQWYsRUFBQSxDQUFBO0FBQUEsTUFBQSxhQUFBWSxPQUFBQTtBQUFBLE1BQUFmLE1BQUcsc0JBQXNCLElBQUEsT0FBQUksRUFBQWUsR0FBQUosQ0FBQTs7TUFEbkZmLEVBQWMsRUFBQSxFQUFDLFdBQVcsNEJBTVRHLEVBQUEsQ0FBQTtBQUFBLE1BQUEsYUFBQWEsT0FBQUE7QUFBQSxNQUFBaEIsTUFBRywyQkFBMkIsSUFBQSxPQUFBSSxFQUFBZ0IsR0FBQUosQ0FBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFoQnREaEIsRUFBVSxFQUFBLElBQUFxQjs7Ozs7O2dFQUxIQyxFQUFBLFdBQUFDLElBQUE7QUFBQSxNQUFBdkIsRUFBYyxFQUFBO0FBQUEsTUFBQUEsRUFBcUIsRUFBQSxLQUFBO0FBQUEsTUFBQUE7TUFBV0EsRUFBYyxFQUFBO01BQy9EQSxFQUFpQixDQUFBOzs7QUFINUIsTUFBQUwsRUFZUUMsR0FBQTBCLEdBQUF4QixDQUFBOzs7Ozs7Ozs7Ozs7MEZBVk1LLEVBQUEsQ0FBQTtBQUFBLE1BQUEsYUFBQW9CLE9BQUFBLElBQUE7QUFBQSxNQUFBdkIsRUFBYyxFQUFBO0FBQUEsTUFBQUEsRUFBcUIsRUFBQSxLQUFBO0FBQUEsTUFBQUE7TUFBV0EsRUFBYyxFQUFBOztNQUMvREEsRUFBaUIsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7O0FBT3ZCLE1BQUFDO0FBQUE7QUFBQSxJQUFBRCxNQUFHLDJCQUEyQixJQUFBO0FBQUE7Ozs7Ozs7OztBQUE5QixNQUFBRyxFQUFBLENBQUE7QUFBQSxNQUFBLGFBQUFGLE9BQUFBO0FBQUEsTUFBQUQsTUFBRywyQkFBMkIsSUFBQSxPQUFBSSxFQUFBQyxHQUFBSixDQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBSGxCLGNBRWY7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQWtDQUQsRUFBUyxFQUFBO0FBQUE7QUFBQSxRQUVMQSxNQUFxQixZQUFTO0FBQUE7QUFBQSxVQUs5QkEsRUFBYyxFQUFBLE1BQUt3QixHQUFrQixLQUFFO0FBQUE7QUFBQSxZQWdDdEN4QixFQUFNLEVBQUEsUUFBQTtBQUFBO0FBQUE7QUFBQSxVQXZDRjtBQUFBO0FBQUE7Ozs7O01BSlJBLEVBQWUsRUFBQSxJQUFHO0FBQUEsTUFBTUEsRUFBTSxFQUFBLENBQUEsS0FBQVEsRUFBQUMsR0FBQSxPQUFBQyxDQUFBLEdBQzFCRCxFQUFBLFNBQUFnQixJQUFBO0FBQUEsTUFBQXpCLEVBQWUsRUFBQSxLQUFBO0FBQUEsTUFBQUEsRUFBNEIsRUFBQTtBQUFBLE1BQUFBLE1BQXFCO01BUkRBLEVBQXdCLEVBQUE7QUFBQSxNQUNsR0EsRUFBb0IsRUFBQSxFQUFDLFlBQ2pCLGlGQUNBLCtCQUE4Qjs7O0FBSnBDLE1BQUFMLEVBMEhLQyxHQUFBaUIsR0FBQWYsQ0FBQSxHQXBISGMsRUFLQ0MsR0FBQUosQ0FBQTs7Ozs7TUFITVQsRUFBZSxFQUFBLElBQUc7QUFBQSxNQUFNQSxFQUFNLEVBQUEsQ0FBQSx1QkFDMUIsQ0FBQTBCLEtBQUF2QixFQUFBLENBQUE7QUFBQSxNQUFBLFVBQUFBLEVBQUEsQ0FBQTtBQUFBLE1BQUEsS0FBQXNCLE9BQUFBLElBQUE7QUFBQSxNQUFBekIsRUFBZSxFQUFBLEtBQUE7QUFBQSxNQUFBQSxFQUE0QixFQUFBO0FBQUEsTUFBQUEsTUFBcUI7Ozs7Ozs7TUFSREEsRUFBd0IsRUFBQTtBQUFBLE1BQ2xHQSxFQUFvQixFQUFBLEVBQUMsWUFDakIsaUZBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQTRGNERlO0FBQUE7QUFBQSxJQUFBZixNQUFHLHdCQUF3QixJQUFBO0FBQUEsb0JBaUJ4RDJCO0FBQUE7QUFBQSxJQUFBM0IsTUFBRywyQkFBMkIsSUFBQTtBQUFBLFdBRXRENEIsSUFBQUMsR0FBSUMsRUFBYyxFQUFFLGlCQUFpQkMsR0FBbUIsbUJBakIxREM7QUFBQTtBQUFBLElBQUFoQyxFQUFxQixFQUFBLEVBQUEsZUFBZSxXQUFXLEtBQUNpQyxHQUFBakMsQ0FBQTtBQUFBOzs7O01BV3ZCQSxFQUFxQixFQUFBLENBQUE7OztBQWRyRCxNQUFBTCxFQXdCS0MsR0FBQXNDLEdBQUFwQyxDQUFBLEdBdkJIYyxFQUE2RnNCLEdBQUFDLENBQUEsaURBYTdGdkIsRUFTS3NCLEdBQUFFLENBQUEsR0FSSHhCLEVBSUF3QixHQUFBZCxDQUFBOzs7Ozs7Ozs7Ozs7QUFsQjBELE9BQUEsQ0FBQUksS0FBQXZCLEVBQUEsQ0FBQTtBQUFBLE1BQUEsY0FBQVksT0FBQUE7QUFBQSxNQUFBZixNQUFHLHdCQUF3QixJQUFBLE9BQUFJLEVBQUFlLEdBQUFKLENBQUE7QUFBQSxNQUVsRmYsRUFBcUIsRUFBQSxFQUFBLGVBQWUsV0FBVyw4RUFlckIsQ0FBQTBCLEtBQUF2QixFQUFBLENBQUE7QUFBQSxNQUFBLGNBQUF3QixPQUFBQTtBQUFBLE1BQUEzQixNQUFHLDJCQUEyQixJQUFBLE9BQUFJLEVBQUFpQyxHQUFBVixDQUFBOztNQUovQjNCLEVBQXFCLEVBQUEsQ0FBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQXhEU2U7QUFBQTtBQUFBLElBQUFmLE1BQUcsOEJBQThCLElBQUE7QUFBQSwwQkFXckYyQjtBQUFBO0FBQUEsSUFBQTNCLE1BQUcscURBQXFELElBQUE7QUFBQSw2QkFXWnNDO0FBQUE7QUFBQSxJQUFBdEMsTUFBRyx5Q0FBeUMsSUFBQTtBQUFBLHdCQXBCdkZ1QztBQUFBO0FBQUEsSUFBQXZDLE1BQXFCO0FBQUE7Ozt3QkFBMUIsUUFBSXdDLEtBQUE7Ozs7SUF1Qkh4QyxFQUFTLEVBQUEsS0FBQXlDLEdBQUF6QyxDQUFBO0FBQUE7Ozs7OztnSkFIb0MsR0FBQyxvQkFBK0MsR0FBQyxpZEFIbEZRLEVBQUFrQyxHQUFBLGVBQUFDO0FBQUEsTUFBQTNDLE1BQUcsaUNBQWlDLENBQUE7OztBQXBCdkQsTUFBQUwsRUF5Q0tDLEdBQUFnRCxHQUFBOUMsQ0FBQSxHQXhDSGMsRUFBbUdnQyxHQUFBVCxDQUFBLHFCQUNuR3ZCLEVBTUtnQyxHQUFBUixDQUFBOzs7ZUFDTHhCLEVBZ0JLZ0MsR0FBQVYsQ0FBQSxHQWZIdEIsRUFJT3NCLEdBQUFXLENBQUEsR0FITGpDLEVBRUFpQyxHQUFBQyxDQUFBLHFCQUVGbEMsRUFNQ3NCLEdBQUFRLENBQUE7OztRQUphMUMsRUFBYyxFQUFBO0FBQUEsTUFBQSxZQUs1QlksRUFFT3NCLEdBQUFhLENBQUEsR0FETG5DLEVBQXFHbUMsR0FBQUMsQ0FBQTs7Ozs7Ozs7VUF0QjdDN0MsRUFBQSxDQUFBO0FBQUEsTUFBQSxhQUFBWSxPQUFBQTtBQUFBLE1BQUFmLE1BQUcsOEJBQThCLElBQUEsT0FBQUksRUFBQWUsR0FBQUosQ0FBQTs7QUFFcEYsUUFBQXdCO0FBQUEsUUFBQXZDLE1BQXFCOzswQkFBMUIsUUFBSXdDLEtBQUEsR0FBQTs7Ozs7O3FCQUFKO0FBQUE7QUFTSSxNQUFBckMsRUFBQSxDQUFBO0FBQUEsTUFBQSxhQUFBd0IsT0FBQUE7QUFBQSxNQUFBM0IsTUFBRyxxREFBcUQsSUFBQSxPQUFBSSxFQUFBaUMsR0FBQVYsQ0FBQSxHQVEvQ3hCLEVBQUEsQ0FBQTtBQUFBLE1BQUEsYUFBQXdDLE9BQUFBO0FBQUEsTUFBQTNDLE1BQUcsaUNBQWlDOzs7O1FBSHJDQSxFQUFjLEVBQUE7QUFBQSxNQUFBLEdBTXNCRyxFQUFBLENBQUE7QUFBQSxNQUFBLGFBQUFtQyxPQUFBQTtBQUFBLE1BQUF0QyxNQUFHLHlDQUF5QyxJQUFBLE9BQUFJLEVBQUE2QyxHQUFBWCxDQUFBO0FBQUEsTUFHM0Z0QyxFQUFTLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCQXBDUmtEO0FBQUE7QUFBQSxJQUFBbEQsTUFBRyxzQkFBc0IsSUFBQTtBQUFBLGNBS0EyQjtBQUFBO0FBQUEsSUFBQTNCLE1BQUcsMkJBQTJCLElBQUE7QUFBQTs7OztNQTFCeERBLEVBQWMsRUFBQSxNQUFLd0IsR0FBa0I7QUFBQSxNQUE4QnhCLEVBQWMsRUFBQSxNQUFLd0IsR0FBa0IseUJBQXNCMkI7QUFBQTtBQUFBLFFBSXpIbkQsRUFBYyxFQUFBLE1BQUt3QixHQUFrQixxQkFBa0I0QjtBQUFBO0FBQUEsVUFJdkRwRCxFQUFjLEVBQUEsTUFBS3dCLEdBQWtCO0FBQUEsVUFBNkJ4QixFQUFjLEVBQUEsTUFBS3dCLEdBQWtCLG9DQUFpQzZCO0FBQUE7QUFBQSxZQUl4SXJELEVBQWMsRUFBQSxNQUFLd0IsR0FBa0IseURBQXNEOEI7Ozs7Ozs7Ozs7OztBQWJ2RyxNQUFBM0QsRUE4QktDLEdBQUFzQyxHQUFBcEMsQ0FBQSwwQkFWSGMsRUFTS3NCLEdBQUFFLENBQUEsR0FSSHhCLEVBRUF3QixHQUFBbkIsQ0FBQSxxQkFDQUwsRUFJQXdCLEdBQUFsQixDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dUZBTklmLEVBQUEsQ0FBQTtBQUFBLE1BQUEsYUFBQStDLE9BQUFBO0FBQUEsTUFBQWxELE1BQUcsc0JBQXNCLElBQUEsT0FBQUksRUFBQW1ELEdBQUFMLENBQUEsR0FLQS9DLEVBQUEsQ0FBQTtBQUFBLE1BQUEsYUFBQXdCLE9BQUFBO0FBQUEsTUFBQTNCLE1BQUcsMkJBQTJCLElBQUEsT0FBQUksRUFBQWlDLEdBQUFWLENBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztZQS9CWVo7QUFBQTtBQUFBLElBQUFmLE1BQUcsMEJBQTBCLElBQUE7QUFBQTs7Ozs7O0FBRHhHLE1BQUFMLEVBR0tDLEdBQUFzQyxHQUFBcEMsQ0FBQSxHQUZIYyxFQUE0R3NCLEdBQUFDLENBQUEscUJBQzVHdkIsRUFBMkNzQixHQUFBRSxDQUFBO0FBQUE7O0FBRDhCLE1BQUFqQyxFQUFBLENBQUE7QUFBQSxNQUFBLGFBQUFZLE9BQUFBO0FBQUEsTUFBQWYsTUFBRywwQkFBMEIsSUFBQSxPQUFBSSxFQUFBZSxHQUFBSixDQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFIeEcsTUFBQXBCLEVBQWVDLEdBQUFpQixHQUFBZixDQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBdUZrQ2lCO0FBQUE7QUFBQSxJQUFBZixNQUFHLDZCQUE2QixJQUFBO0FBQUE7Ozs7OztBQUQ3RSxNQUFBTCxFQUVPQyxHQUFBNEQsR0FBQTFELENBQUEsR0FETGMsRUFBbUY0QyxHQUFBdEQsQ0FBQSx3QkFFckZQLEVBS0NDLEdBQUE4QyxHQUFBNUMsQ0FBQTs7O1FBSGFFLEVBQWMsRUFBQTtBQUFBLE1BQUE7Ozs7Ozs7O0FBSmlCLE1BQUFHLEVBQUEsQ0FBQTtBQUFBLE1BQUEsYUFBQVksT0FBQUE7QUFBQSxNQUFBZixNQUFHLDZCQUE2QixJQUFBLE9BQUFJLEVBQUFlLEdBQUFKLENBQUE7Ozs7UUFJL0RmLEVBQWMsRUFBQTtBQUFBLE1BQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUEvQ3ZCQSxFQUFZLEdBQUEsSUFBQTtBQUFBOzs7Ozs7QUFEZixNQUFBTCxFQUVLQyxHQUFBaUIsR0FBQWYsQ0FBQTs7Ozs7TUFERkUsRUFBWSxHQUFBLElBQUEsT0FBQUksRUFBQWUsR0FBQUosQ0FBQTtBQUFBOzs7Ozs7Ozs7Ozs7OztZQTJCWEE7QUFBQTtBQUFBLElBQUFmLE1BQUcsc0JBQXNCLElBQUE7QUFBQSxpQkFLQWdCO0FBQUE7QUFBQSxJQUFBaEIsTUFBRywyQkFBMkIsSUFBQTtBQUFBOzs7O01BUC9DQSxFQUFjLEVBQUEsRUFBQyxXQUFXOzs7QUFIeEMsTUFBQUwsRUFZS0MsR0FBQWlCLEdBQUFmLENBQUEsR0FYSGMsRUFLQUMsR0FBQUksQ0FBQSxxQkFDQUwsRUFJQUMsR0FBQUssQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTkksTUFBQWYsRUFBQSxDQUFBO0FBQUEsTUFBQSxhQUFBWSxPQUFBQTtBQUFBLE1BQUFmLE1BQUcsc0JBQXNCLElBQUEsT0FBQUksRUFBQWUsR0FBQUosQ0FBQTs7TUFGakJmLEVBQWMsRUFBQSxFQUFDLFdBQVcsNEJBT1RHLEVBQUEsQ0FBQTtBQUFBLE1BQUEsYUFBQWEsT0FBQUE7QUFBQSxNQUFBaEIsTUFBRywyQkFBMkIsSUFBQSxPQUFBSSxFQUFBZ0IsR0FBQUosQ0FBQTtBQUFBOzs7Ozs7Ozs7Ozs7OztTQW5ERGY7QUFBQTtBQUFBLElBQUFELE1BQUcsNEJBQTRCLElBQUE7QUFBQTs7Ozs7O0FBQTNGLE1BQUFMLEVBQWlHQyxHQUFBdUMsR0FBQXJDLENBQUE7OztBQUFyQyxNQUFBSyxFQUFBLENBQUE7QUFBQSxNQUFBLGFBQUFGLE9BQUFBO0FBQUEsTUFBQUQsTUFBRyw0QkFBNEIsSUFBQSxPQUFBSSxFQUFBQyxHQUFBSixDQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7O1NBSHhGQTtBQUFBO0FBQUEsSUFBQUQsTUFBRyx1Q0FBdUMsSUFBQTtBQUFBOzs7Ozs7QUFEN0MsTUFBQUwsRUFFSUMsR0FBQXVDLEdBQUFyQyxDQUFBOzs7QUFERCxNQUFBSyxFQUFBLENBQUE7QUFBQSxNQUFBLGFBQUFGLE9BQUFBO0FBQUEsTUFBQUQsTUFBRyx1Q0FBdUMsSUFBQSxPQUFBSSxFQUFBQyxHQUFBSixDQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7O1NBSjFDQTtBQUFBO0FBQUEsSUFBQUQsTUFBRyxpQ0FBaUMsSUFBQTtBQUFBOzs7Ozs7QUFEdkMsTUFBQUwsRUFFSUMsR0FBQXVDLEdBQUFyQyxDQUFBOzs7QUFERCxNQUFBSyxFQUFBLENBQUE7QUFBQSxNQUFBLGFBQUFGLE9BQUFBO0FBQUEsTUFBQUQsTUFBRyxpQ0FBaUMsSUFBQSxPQUFBSSxFQUFBQyxHQUFBSixDQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7O1NBSnBDYztBQUFBO0FBQUEsSUFBQWYsTUFBRyxzQkFBc0IsSUFBQTtBQUFBLFdBQUtnQjtBQUFBO0FBQUEsSUFBQWhCLE1BQUcsOEJBQThCLElBQUE7QUFBQTs7O21DQUFwQyxJQUFFOzs7QUFEaEMsTUFBQUwsRUFFSUMsR0FBQXVDLEdBQUFyQyxDQUFBOzs7QUFERCxNQUFBSyxFQUFBLENBQUE7QUFBQSxNQUFBLGFBQUFZLE9BQUFBO0FBQUEsTUFBQWYsTUFBRyxzQkFBc0IsSUFBQSxPQUFBSSxFQUFBZSxHQUFBSixDQUFBLEdBQUtaLEVBQUEsQ0FBQTtBQUFBLE1BQUEsYUFBQWEsT0FBQUE7QUFBQSxNQUFBaEIsTUFBRyw4QkFBOEIsSUFBQSxPQUFBSSxFQUFBZ0IsR0FBQUosQ0FBQTtBQUFBOzs7Ozs7Ozs7Ozs7OztTQUovREQ7QUFBQTtBQUFBLElBQUFmLE1BQUcsc0JBQXNCLElBQUE7QUFBQSxXQUFLZ0I7QUFBQTtBQUFBLElBQUFoQjs7TUFBR0EsRUFBYSxFQUFBO0FBQUEsSUFBQSxJQUFBO0FBQUE7OzttQ0FBbkIsSUFBRSxtQkFBbUIsR0FDbkQ7OztBQUZBLE1BQUFMLEVBRUlDLEdBQUF1QyxHQUFBckMsQ0FBQTs7O0FBREQsTUFBQUssRUFBQSxDQUFBO0FBQUEsTUFBQSxhQUFBWSxPQUFBQTtBQUFBLE1BQUFmLE1BQUcsc0JBQXNCLElBQUEsT0FBQUksRUFBQWUsR0FBQUosQ0FBQSxHQUFLWixFQUFBLENBQUE7QUFBQSxNQUFBLGFBQUFhLE9BQUFBO0FBQUEsTUFBQWhCOztRQUFHQSxFQUFhLEVBQUE7QUFBQSxNQUFBLElBQUEsT0FBQUksRUFBQWdCLEdBQUFKLENBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7c0JBMUloRHlDOztJQVVDekQsRUFBTSxDQUFBO0FBQUEsK0NBeUNUMEQsS0FBQUQsR0FBaUI7QUFBQSxFQUFNekQsRUFBd0IsRUFBQSxPQWMvQzRCLEtBQUE2QjtFQUF1QnpELEVBQVksRUFBQTtBQUFBLEVBQUlBLEVBQXVCLEVBQUEsTUFBQTJELEdBQWlCOzs7Ozs7Ozs7O0lBM0I3RTNELEVBQWMsQ0FBQSxLQUFBNEQsR0FBQTVELENBQUE7QUFBQSxLQU1kNkQ7QUFBQTtBQUFBLElBQUE3RCxFQUFtQixFQUFBLEtBQUE7QUFBQSxJQUFBQSxFQUFrQixDQUFBO0FBQUEsSUFBQUE7SUFBY0EsRUFBZ0IsRUFBQSxLQUFBOEQsR0FBQTlELENBQUE7QUFBQTs7OztNQXVDbEVBLEdBQVMsRUFBQSxTQUFBK0Q7QUFBQTtBQUFBOzs7OztJQStCZC9ELEdBQVcsRUFBQTtBQUFBLElBQUlBLEdBQVMsRUFBQTtBQUFBLElBQUtBLEdBQWtCLENBQUEsSUFBQTtBQUFBO0FBQUEsTUE0SDVDQSxHQUFrQixFQUFBLE1BQUsyRCxHQUFpQixLQUFFOzs7Ozs7O01BalB0QzNELEVBQWtCLEVBQUEsTUFBSzJELEdBQWlCLE1BQzdDRixHQUFpQjtBQUFBLE9BQU96RCxFQUFZLEVBQUE7QUFBQSxNQUFJQSxFQUFXLEVBQUE7QUFBQSxNQUFJQSxFQUF3QixFQUFBLG9FQW1GekVrQyxFQUFBLFNBQUE4QixJQUFBO0FBQUEsTUFBQWhFLFFBQXFCeUQsR0FBaUI7QUFBQSxPQUFPekQsRUFBZ0IsRUFBQTtBQUFBLE1BQUFBO01BQWVBLEVBQXdCLEVBQUE7Ozs7OztBQTVGckgsTUFBQUwsRUFnUUtDLEdBQUFxRSxHQUFBbkUsQ0FBQSxHQTVQSGMsRUF3SEtxRCxHQUFBQyxDQUFBLEdBdkhIdEQsRUFzSEtzRCxHQUFBdEIsQ0FBQSxHQXJISGhDLEVBdURLZ0MsR0FBQVIsQ0FBQSx3R0FwQkh4QixFQUE2RndCLEdBQUErQixDQUFBLHNCQUU3RnZELEVBSUN3QixHQUFBZ0MsQ0FBQSxzQkFDRHhELEVBQTZHd0IsR0FBQWlDLENBQUEsOElBMEMvR3pELEVBZ0NLZ0MsR0FBQVYsQ0FBQTs7Ozs7TUFyR0dsQyxFQUFNLENBQUEsQ0FBQTtNQTRCUEEsRUFBYyxDQUFBO01BTWRBLEVBQW1CLEVBQUEsS0FBQTtBQUFBLE1BQUFBLEVBQWtCLENBQUE7QUFBQSxNQUFBQTtNQUFjQSxFQUFnQixFQUFBOztNQS9DaEVBLEVBQWtCLEVBQUEsTUFBSzJELEdBQWlCLE1BQzdDRixHQUFpQjtBQUFBLE9BQU96RCxFQUFZLEVBQUE7QUFBQSxNQUFJQSxFQUFXLEVBQUE7QUFBQSxNQUFJQSxFQUF3QixFQUFBLDRCQXFEL0VHLEVBQUEsQ0FBQTtBQUFBLE1BQUEsU0FBQXVELEtBQUFEO01BQXVCekQsRUFBd0IsRUFBQSwyRkFjL0NHLEVBQUEsQ0FBQTtBQUFBLE1BQUEsV0FBQXlCLEtBQUE2QjtNQUF1QnpELEVBQVksRUFBQTtBQUFBLE1BQUlBLEVBQXVCLEVBQUEsTUFBQTJELEdBQWlCLDJMQWdCekUsQ0FBQWpDLEtBQUF2QixFQUFBLENBQUE7QUFBQSxNQUFBLFNBQUE2RCxPQUFBQSxJQUFBO0FBQUEsTUFBQWhFLFFBQXFCeUQ7T0FBd0J6RCxFQUFnQixFQUFBO0FBQUEsTUFBQUE7TUFBZUEsRUFBd0IsRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBenZCMUcsU0FBQXNFLEdBQWtCdEUsR0FBK0J1RSxHQUF5QkMsR0FBZ0M7QUFDM0csUUFBQUMsSUFDSEYsRUFBTSxlQUFlQSxFQUFNLGNBQWNDLEVBQWMsVUFBVUEsRUFBYyxTQUMvRUQsRUFBTSxjQUFjQSxFQUFNLGNBQWNDLEVBQWMsU0FBU0EsRUFBYztBQUVoRixFQUFBeEUsRUFBSTtBQUFBLElBQ0Z1RTtBQUFBLElBQ0FFLElBQW1CLElBQUlGLEVBQU0sYUFBYSxJQUFJQyxFQUFjO0FBQUEsSUFDNUQ7QUFBQSxJQUNBQyxJQUFtQkYsRUFBTSxhQUFhQSxFQUFNLGVBQWVDLEVBQWMsUUFBUUEsRUFBYztBQUFBLElBQy9GRCxFQUFNO0FBQUEsSUFDTjtBQUFBLElBQ0E7QUFBQSxJQUNBQyxFQUFjO0FBQUEsSUFDZEEsRUFBYztBQUFBOzs7Ozs7O01BdkxkRCxHQUNBRyxJQUNBQyxJQUNBQyxLQUFpQixJQUNqQkMsS0FBTSxDQUFBLEdBQ05DLEtBQTBCLE1BR25CLGdCQUFBQyxHQUF1QixJQUFBQyxLQUN2QixpQkFBQUMsR0FBdUIsSUFBQUQsS0FDdkIsUUFBQUUsRUFBZSxJQUFBRixLQUNmLGFBQUFHLEVBQW1CLElBQUFILEtBQ25CLGVBQUFJLEdBQXNCLElBQUFKLEtBQ3RCLG1CQUFBSyxHQUEwQixJQUFBTCxLQUMxQixvQkFBQU0sR0FBMkIsSUFBQU4sS0FDM0IsYUFBQU8sR0FBbUIsSUFBQVA7UUFFeEJRLEtBQWVDLEdBQVMsRUFBSzs7UUFDN0JDLEtBQWlCRCxHQUFTLHVCQUF1Qjs7UUFJNUMsZ0JBQUFFLEdBQTRDLElBQUFYLEdBQ25EWSxJQUNBcEIsR0FDQXFCLEtBQVksSUFDWkMsS0FBYyxJQUNkQyxLQUFlLElBQ2ZDLEtBQWMsSUFDZEMsS0FBMkIsSUFDM0JDLEtBQWEsR0FDYkMsS0FBZ0IsSUFDaEJDLEtBQWlCLEdBQ2pCQyxLQUFtQixHQUNuQkMsS0FBbUIsS0FDbkJDLEtBQW1CLElBRW5CQyxLQUFzQixHQUN0QkMsS0FBbUIsSUFHbkJDLEtBQW1CLElBQ25CQyxLQUFzQjtRQUVwQkMsS0FBUUMsR0FBSyxNQUFLO0FBQUEsSUFDdEIsT0FBTztBQUFBLElBQ1AsVUFBVTtBQUFBLElBQ1YsT0FBTztBQUFBLElBQ1Asa0JBQWtCO0FBQUE7QUFHcEIsRUFBQUMsR0FBTyxZQUFBO0FBQ0wsSUFBQUMsR0FBSSwwQkFBMEIsR0FDOUJDLEVBQUFDLElBQUFDLEtBQVMsSUFBS0EsRUFBQSxHQUNkRixFQUFBRyxJQUFBQyxJQUFhLElBQUtBLENBQUEsR0FDbEJKLEVBQUFLLElBQUFDLElBQVksSUFBS0EsQ0FBQSxTQUNqQkMsSUFBY0MsR0FBZSxjQUFZRCxDQUFBLEdBQ3JDOUQsR0FBaUIsYUFDWiw0Q0FBb0MsR0FDM0NnRSxPQUdFQyxPQUNJLE1BQUFDLEdBQXNCeEMsQ0FBVyxHQUN2Q0wsS0FBMEIsV0FHdEI4QyxHQUFVO0FBQUE7V0FHVEMsR0FBUzdILEdBQStCdUUsR0FBdUI7QUFFdEUsSUFBQXZFLEVBQUksVUFBVSxHQUFHLEdBQUd3RSxFQUFjLE9BQU9BLEVBQWMsTUFBTSxHQUc3RHhFLEVBQUksS0FBSSxHQUVKdUYsTUFBZSxVQUNqQnZGLEVBQUksU0FBTSxRQUFXdUUsRUFBTSxRQUFNLEVBQUUsT0FDbkN2RSxFQUFJLEtBQUssR0FBRyxHQUFHd0UsRUFBYyxPQUFPQSxFQUFjLE1BQU0sS0FDaERlLE1BQWUsVUFDdkJ2RixFQUFJLFlBQVl1RixJQUNoQnZGLEVBQUksU0FBUyxHQUFHLEdBQUd3RSxFQUFjLE9BQU9BLEVBQWMsTUFBTSxNQUc1RHhFLEVBQUksVUFBUyxHQUNiQSxFQUFJLEtBQUssR0FBRyxHQUFHd0UsRUFBYyxPQUFPQSxFQUFjLE1BQU07QUFJcEQsVUFBQXNELElBQWF0RCxFQUFjLFNBQVMsTUFDcEN1RCxJQUFZRCxJQUFhLE1BQ3pCRSxJQUFRQyxFQUFZLGFBQWEsR0FDakNDLEtBQVFELEVBQVksY0FBYztVQUN4Q0UsRUFBZ0IsUUFBUUosR0FBU0ksQ0FBQSxHQUdqQ25JLEVBQUksUUFDRmdJLEdBQ0FFLElBQ0FILElBQVksR0FDWkQsSUFBYSxHQUNiLEdBQ0EsR0FDQSxJQUFJLEtBQUssSUFDVCxFQUFJLEdBSU45SCxFQUFJLEtBQUksR0FHUnNFLEdBQWtCdEUsR0FBS3VFLEdBQU9DLENBQWEsR0FDM0N4RSxFQUFJLFFBQU8sR0FHWEEsRUFBSSxLQUFJLEdBQ1JBLEVBQUksVUFBUztVQUVQb0ksS0FBZSxPQUFPLGlCQUFpQjVELENBQWEsRUFBRSxpQkFBaUIsS0FBSyxHQUM1RTZELEtBQWUsT0FBTyxpQkFBaUI3RCxDQUFhLEVBQUUsaUJBQWlCLE1BQU07QUFjL0UsUUFaSnhFLEVBQUksY0FBVyxPQUFVb0ksRUFBWSxLQUNyQ3BJLEVBQUksWUFBWSxJQUNoQkEsRUFBSSxRQUNGZ0ksR0FDQUUsSUFDQUgsSUFBWSxHQUNaRCxJQUFhLEdBQ2IsR0FDQSxHQUNBLElBQUksS0FBSyxFQUFFLEdBRWI5SCxFQUFJLE9BQU0sR0FDTjRFLE9BQW1CNkIsSUFBZ0I7WUFDL0I2QixLQUFnQixLQUFLOUIsMEJBQTBCLFFBQU8sUUFBTyxLQUFNRjtBQUV6RSxNQUFBdEcsRUFBSSxLQUFJLEdBQ1JBLEVBQUksVUFBUyxHQUNiQSxFQUFJLFlBQVksSUFDaEJBLEVBQUksY0FBVyxPQUFVcUksRUFBWSxLQUNyQ3JJLEVBQUksUUFDRmdJLEdBQ0FFLElBQ0FILElBQVksR0FDWkQsSUFBYSxHQUNiLEdBQ0EsSUFBSSxLQUFLLEtBQUssR0FDZCxPQUFPLEtBQUssS0FBSyxJQUFJUSxNQUFpQixLQUFLLEtBQUssQ0FBQyxHQUVuRHRJLEVBQUksT0FBTTtBQUFBO0FBRVosSUFBQUEsRUFBSSxVQUFTO0FBQ1AsVUFBQXVJLFNBQWU7QUFDckIsSUFBQUEsR0FBUyxRQUNQUCxHQUNBRSxJQUNBSCxJQUFZLEdBQ1pELElBQWEsR0FDYixHQUNBLEdBQ0EsSUFBSSxLQUFLLEVBQUUsR0FHYjlILEVBQUksS0FBS3VJLEVBQVEsR0FDakJqRSxHQUFrQnRFLEdBQUt1RSxHQUFPQyxDQUFhLEdBQzNDeEUsRUFBSSxRQUFPO0FBQUE7V0FxQkp5SCxLQUFzQjtBQUM3QixJQUFBOUIsR0FBZSxpQkFBaUIsUUFBUyxDQUFBNkMsTUFBSztBQUN0QyxZQUFBQyxJQUFTRCxFQUFNLE9BQU8sQ0FBQyxFQUFFOzs7UUFDL0JFLElBQTBCO0FBQUEsVUFBSyxPQUFPRCxFQUFPO0FBQUEsVUFBWSxRQUFRQSxFQUFPO0FBQUE7O1NBRXhFRSxFQUFBLEdBQUFwRSxFQUFNLFlBQVlrRSxFQUFPLFdBQVNsRSxDQUFBLEdBQ2xDb0UsRUFBQSxJQUFBNUMsS0FBZSxFQUFLO2VBRVg2QyxJQUFJO1FBQ1A1QyxPQUVKNkIsR0FBU3JELEVBQWMsV0FBVyxJQUFJLEdBQStCaUUsQ0FBTSxHQUMzRUksR0FBV3RFLEdBQU9xRSxHQUFNLEVBQUk7QUFBQTtBQUU5QixNQUFBQTtRQUVGakQsR0FBZSxpQkFBaUIsU0FBVSxDQUFBbUQsTUFBQztBQUN6QyxjQUFRLE1BQU1BLENBQUMsR0FDWEEsRUFBRSxPQUFPLENBQUMsRUFBRSxZQUFZLHdCQUMxQkMsSUFBcUJwRixHQUFpQixxQkFBbUJvRixDQUFBLElBQ2hERCxFQUFFLE9BQU8sQ0FBQyxFQUFFLFlBQVksdUJBQXVCQSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFlBQVksK0JBQ2hGQyxJQUFxQnBGLEdBQWlCLHFCQUFtQm9GLENBQUEsSUFDaERELEVBQUUsT0FBTyxDQUFDLEVBQUUsWUFBWSxzQ0FDakNDLElBQXFCcEYsR0FBaUIsd0JBQXNCb0YsQ0FBQSxHQUU5REosRUFBQSxJQUFBNUMsS0FBZSxFQUFLO0FBQUEsUUFFdEJKLEdBQWUsaUJBQWlCLGlCQUFrQixDQUFBbUQsTUFBQztBQUFBLFFBR25EbkQsR0FBZSxpQkFBaUIsZ0JBQWdCbUQsTUFBQztNQUMxQ3hCLE1BQ0h6QixLQUFZLEtBRWQ4QyxFQUFBLElBQUEzQyxLQUFjLEVBQUksR0FDbEIyQyxFQUFBLElBQUExQyxLQUEyQixFQUFLLEdBQzVCOEMsTUFBdUJwRixHQUFpQixZQUMxQ29GLElBQXFCcEYsR0FBaUIscUJBQW1Cb0YsQ0FBQTtBQUFBLFFBSTdEcEQsR0FBZSxpQkFBaUIscUJBQXFCbUQsTUFBQztBQUVwRCxNQUFBaEQsS0FBYyxJQUNka0IsRUFBQWdDLElBQUFDLElBQW9CLElBQUlBLENBQUEsR0FDcEJDLE9BQWlCQyxHQUFRLFNBQ3RCdEQsTUFBUyxDQUFLeUIsS0FBYXhCLFlBQ3hCc0QsR0FBa0I7QUFBQSxRQUk5QnpELEdBQWUsaUJBQWlCLGtCQUFrQjZDLE1BQUs7QUFDckQsTUFBQUcsRUFBQSxJQUFBeEMsS0FBZ0IsRUFBRTtBQUNWLFlBQUEsRUFBQSxlQUFBa0QsR0FBZSxPQUFBQyxFQUFLLElBQUtkLEVBQU0sT0FBTyxDQUFDO0FBQy9DLE1BQUF4QixFQUFBdUMsSUFBQUMsSUFBUUgsR0FBYUcsQ0FBQSxHQUNyQmIsRUFBQSxJQUFBMUMsS0FBMkIsRUFBSyxTQUNoQ3dELElBQWlCakksR0FBa0IsSUFBRWlJLENBQUEsU0FDckNDLEVBQXFCLFlBQVksSUFBSUEsQ0FBQSxHQUNyQzFDLEVBQUFLLElBQUFDLElBQVksSUFBSUEsQ0FBQSxHQUNoQnpCLEtBQVk7QUFDTixZQUFBcEYsV0FBYWtKLEdBQWFMLENBQUssR0FBRyxNQUFNLEdBQUc7Z0JBQ2pETSxJQUFrQm5KLEVBQUksQ0FBQyxHQUFBbUosQ0FBQSxTQUN2QkMsSUFBU3BKLEVBQUksQ0FBQyxHQUFBb0osQ0FBQSxTQUNkQyxJQUFtQnJKLEVBQUksQ0FBQyxHQUFBcUosQ0FBQSxJQUVuQkMsR0FBNkI7QUFDNUIsWUFBQUMsSUFBV0M7O0FBRVYsV0FBQSxFQUFBLFdBQUFELElBQVcsY0FBQUMsR0FBWSxJQUFBLE1BQVdDLEdBQ25DSixHQUNBMUUsS0FDTyxNQUFBdUUsR0FBYU4sQ0FBYSxHQUFHLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQSxJQUVsRCxPQUFPLGNBQ0QsSUFBQTtBQUFBLFlBQVk7QUFBQTtjQUNkLFFBQU07QUFBQSxnQkFBSSxXQUFBVztBQUFBLGdCQUFXLGNBQUFDO0FBQUEsZ0JBQWMsUUFBUVI7QUFBQTs7O2lCQU14Q1gsSUFBQztBQUNSLGtCQUFRLE1BQU1BLEVBQUM7Y0FDWHFCLEtBQVlDLEdBQW9CLFNBQ2hDSixLQUFTLENBQUEsR0FDVEMsS0FBWSxDQUFBO2NBQ1puQixjQUFhdUIsTUFBY3ZCLEdBQUUsVUFBVSxXQUFXO0FBQ2hELGdCQUFBQSxHQUFFLFNBQVMsUUFBUSxNQUFNLFFBQVFBLEdBQUUsU0FBUyxLQUFLLFNBQVMsR0FBQTtBQUM1RCxjQUFBa0IsS0FBWWxCLEdBQUUsU0FBUyxLQUFLLFdBQzVCbUIsS0FBZW5CLEdBQUUsU0FBUyxLQUFLO29CQUN6QndCLEtBQU9OLEdBQVUsS0FBTSxDQUFBTyxPQUFRQSxHQUFHLGVBQXVDLEtBQUs7QUFDcEYsY0FBQUosS0FBYUcsSUFBTSxlQUF1QyxrQkFDMURiLElBQWlCakksR0FBa0IsNEJBQTBCaUksQ0FBQSxHQUN2RGEsSUFBTSxlQUF1QyxvQkFDakRiLElBQWlCakksR0FBa0Isd0JBQXNCaUksQ0FBQSxTQUUzRHRELEtBQWdCaUUsR0FBb0JELEVBQTZDLENBQUEsR0FDakYsUUFBUSxNQUFNLG1CQUFtQkEsRUFBUztBQUFBO29CQUcxQ1YsSUFBaUJqSSxHQUFrQiwyQkFBeUJpSSxDQUFBO0FBQUE7a0JBRzlEQSxJQUFpQmpJLEdBQWtCLHdCQUFzQmlJLENBQUEsR0FDekQ3QyxHQUFNLEtBQUk7QUFBQSxjQUFHLE1BQU07QUFBQSxjQUFTLE9BQU87QUFBQTtnQkFFckM4QyxFQUFxQixZQUFZLElBQUtBLENBQUEsR0FDdEMsT0FBTyxjQUNELElBQUE7QUFBQSxZQUFZO0FBQUE7Y0FDZCxRQUFNO0FBQUEsZ0JBQ0osV0FBQU07QUFBQSxnQkFDQSxXQUFBRztBQUFBLGdCQUNBLGlCQUFpQkssRUFBR3JFLEVBQWE7QUFBQSxnQkFDakMsUUFBUXNEO0FBQUEsZ0JBQ1IsY0FBQVE7QUFBQTs7Ozs7WUFNSlIsTUFBbUJqSSxHQUFrQixJQUFFO2dCQUN6Q2tJLEVBQXFCLFlBQVksSUFBS0EsQ0FBQTs7O1FBR3BDTSxHQUFVLENBQUMsRUFBRSxrQkFDZlMsR0FBaUJULEdBQVUsQ0FBQyxFQUFFLGNBQWdDLEdBRTVEQSxHQUFVLFdBQVcsS0FBS0EsR0FBVSxDQUFDLEVBQUUsUUFDekNoRCxFQUFBMEQsSUFBQWIsSUFBU0csR0FBVSxDQUFDLEVBQUUsTUFBSUgsQ0FBQSxHQUc1QmMsR0FBOEJWLEVBQWE7OztVQUd6Q0UsR0FDQVM7O0FBRUYsUUFBQUEsS0FBYyxNQUFTQyxHQUFpQnhCLENBQWEsR0FDckRvQixHQUFpQkcsR0FBZSxJQUFJO0FBQUEsZUFDN0I5QixJQUFDO2NBQ1JXLElBQWlCakksR0FBa0Isd0JBQXNCaUksQ0FBQSxHQUN6RCxRQUFRLE1BQU1YLEVBQUMsR0FDWEEsY0FBYXVCLE1BQWN2QixHQUFFLFVBQVUsV0FBVyxPQUNwRHFCLElBQVlyQixHQUFFLFNBQVMsS0FBSyxrQkFDNUIzQyxLQUFnQmlFLEdBQW9CRCxDQUE2QyxDQUFBLEdBQ2pGLFFBQVEsTUFBTSxtQkFBbUJBLENBQVMsU0FDMUNWLElBQWlCakksR0FBa0IsNEJBQTBCaUksQ0FBQSxLQUU3RDdDLEdBQU0sS0FBSTtBQUFBLFVBQUcsTUFBTTtBQUFBLFVBQVMsT0FBTztBQUFBOztVQUluQzZDLE1BQW1CakksR0FBa0IsSUFBRTtjQUN6Q2tJLEVBQXFCLFlBQVksSUFBS0EsQ0FBQSxHQUN0QyxPQUFPLGNBQ0QsSUFBQTtBQUFBLFVBQVk7QUFBQTtZQUNkLFFBQU07QUFBQSxjQUNKLFdBQVM7QUFBQTtrQkFFTCxVQUFVO0FBQUEsa0JBQ1YsTUFBTUk7QUFBQSxrQkFDTixlQUFZLE1BQVNILEdBQWFOLENBQWEsR0FBRyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQUEsa0JBQzFELEdBQUF1QixRQUFvQixnQkFBQUEsR0FBYztBQUFBOztjQUd0QyxHQUFBVCxPQUFlLFdBQUFBLEVBQVM7QUFBQSxjQUN4QixHQUFBaEUsTUFBbUIsRUFBQSxpQkFBaUJxRSxFQUFHckUsRUFBYSxFQUFBO0FBQUEsY0FDeEQsUUFBUXNEO0FBQUE7Ozs7O0FBTVYsVUFBQSxFQUFBLFdBQUFPLElBQVcsY0FBQUMsR0FBWSxJQUFBLE1BQVdDLEdBQXNCSixHQUFrQjFFLEVBQWE7QUFDN0YsYUFBTyxjQUNELElBQUE7QUFBQSxRQUFZO0FBQUE7VUFDZCxRQUFNO0FBQUEsWUFDSixXQUFBNEU7QUFBQSxZQUNBLGNBQUFDO0FBQUEsWUFDQSxRQUFRUjtBQUFBLFlBQ1IsV0FBQVU7QUFBQSxZQUNJLEdBQUFoRSxNQUFtQixFQUFBLGlCQUFpQnFFLEVBQUdyRSxFQUFhLEVBQUE7QUFBQTs7VUFJMUQ2RCxHQUFVLENBQUMsRUFBRSxRQUNmaEQsRUFBQTBELElBQUFiLElBQVNHLEdBQVUsQ0FBQyxFQUFFLE1BQUlILENBQUEsR0FFNUJjLEdBQThCVixFQUFZO0FBQUE7O0FBSS9CLGlCQUFBckMsR0FBV2tELEdBQWU7V0FHaENDLEdBQU9DLENBQU0sS0FBSy9GLE1BQW1CLEtBQ3hDLFdBQVcsS0FBSyxFQUFFLEdBQ2xCLE1BQU0sR0FBRyxHQUNULElBQUssQ0FBQWdHLE1BQU9BLElBQUksU0FBU0EsQ0FBQyxJQUFJLE1BQVM7QUFDdEMsUUFBQSxHQUFBRixNQUFVQztVQUNmaEUsRUFBQWtFLElBQUFqRCxNQUFnQixZQUFZOEMsR0FBTyxhQUFhQyxLQUFNL0MsQ0FBQSxHQUVsRHhFLEdBQWlCLEtBQU11SCxJQUFTRCxLQUFTSSxHQUFRLEtBQ25EbkUsRUFBQWtFLElBQUFqRCxNQUFnQixZQUFZK0MsR0FBUSxhQUFhRCxLQUFLOUMsQ0FBQSxHQUdwRHhFLEdBQWlCLEdBQUE7QUFDbkIsUUFBQTJGOzs7QUFJSSxZQUFBZ0MsR0FBYUwsR0FBT0MsR0FBUUYsQ0FBTTtBQUFBO0FBQUE7V0FHakMxQixLQUFrQjtJQUNwQjNGLEdBQWlCLFlBRXRCc0YsSUFBcUJwRixHQUFpQixJQUFFb0YsQ0FBQSxHQUNwQ3BELE1BQWtCLGdCQUFnQkEsTUFBZ0JBLEdBQWUsV0FBVSxHQUMvRUUsS0FBWSxJQUNaOEMsRUFBQSxJQUFBM0MsS0FBYyxFQUFLLEdBQ25CMkMsRUFBQSxJQUFBNUMsS0FBZSxFQUFJO0FBQUE7aUJBR0NzRixLQUFJO0FBRXBCLFFBQUEzRCxPQUFtQjVDO0FBQXVCLGFBQVMrRCxHQUFXdEUsR0FBTzhHLEVBQUk7UUFFeEU5RztVQUVDMkUsT0FBaUJDLEdBQVEsUUFBSSxDQUFNakU7QUFBTSxlQUFTMkQsR0FBV3RFLEdBQU84RyxFQUFJO0FBRTlFLE1BQUFyRSxFQUFBQyxJQUFBQyxLQUFTLElBQUlBLEVBQUEsR0FFVFEsTUFFRzRELEtBQWF0RSxFQUFBeEIsSUFBRThGLElBQWdCLElBQUlBLENBQUEsR0FFbkM3SCxHQUFpQixLQUNwQm9FLEdBQVNyRCxFQUFjLFdBQVcsSUFBSSxHQUErQkQsQ0FBSyxHQUU1RXNFLEdBQVd0RSxHQUFPOEcsRUFBSSxNQUV0QnhELEdBQVNyRCxFQUFjLFdBQVcsSUFBSSxHQUErQkQsQ0FBSyxHQUMxRXNFLEdBQVd0RSxHQUFPOEcsRUFBSTtBQUFBO0FBQUE7aUJBSVhFLEtBQU87UUFDcEJDLFlBQ0EvQixJQUFpQmpJLEdBQWtCLElBQUVpSSxDQUFBLEdBQ2pDaEcsR0FBaUIsR0FBQTtBQUNuQixNQUFBa0YsRUFBQSxJQUFBMUMsS0FBMkIsRUFBSSxHQUMvQk4sR0FBZSxVQUFTOzs7UUFHMUJxQixFQUFBSyxJQUFBQyxJQUFZLElBQUlBLENBQUEsR0FDWkksSUFBYztBQUNULFlBQUEsQ0FBQStELENBQU0sd0JBQXdCLG1DQUFzQixHQUFHLGFBQWFsSCxJQUFRbUgsRUFBUyxDQUFBLEdBQ3RGakwsSUFBTWdMLEVBQU8sVUFBVSxZQUFZLEVBQUUsTUFBTSxHQUFHO1lBQ3BEN0IsSUFBa0JuSixFQUFJLENBQUMsR0FBQW1KLENBQUEsU0FDdkJDLElBQVNwSixFQUFJLENBQUMsR0FBQW9KLENBQUEsU0FDZEMsSUFBbUJySixFQUFJLENBQUMsR0FBQXFKLENBQUE7QUFDbEIsVUFBQSxFQUFBLFdBQUFFLEdBQVcsY0FBQUMsRUFBWSxJQUFBLE1BQVdDLEdBQXNCTCxHQUFRekUsRUFBYTtBQUVuRixhQUFPLGNBQ0QsSUFBQTtBQUFBLFFBQVk7QUFBQTtVQUNkLFFBQU07QUFBQSxZQUNKLFdBQUE0RTtBQUFBLFlBQ0EsY0FBQUM7QUFBQSxZQUNBLFFBQVFSO0FBQUE7O1VBSVZPLEVBQVUsV0FBVyxLQUFLQSxFQUFVLENBQUMsRUFBRSxRQUN6Q2hELEVBQUEwRCxJQUFBYixJQUFTRyxFQUFVLENBQUMsRUFBRSxNQUFJSCxDQUFBLEdBRTVCYyxHQUE4QlYsQ0FBWTtBQUFBO0FBRXBDLFlBQUF3QixJQUFTLFNBQVMsY0FBYyxRQUFRLEdBQ3hDekwsSUFBTXlMLEVBQU8sV0FBVyxJQUFJO0FBQ2xDLE1BQUFBLEVBQU8sUUFBUWxILEVBQU0sT0FDckJrSCxFQUFPLFNBQVNsSCxFQUFNLFFBQ3RCdkUsR0FBSyxVQUFVdUUsR0FBTyxHQUFHLEdBQUdrSCxFQUFPLE9BQU9BLEVBQU8sTUFBTTtZQUNqRGhMLElBQU1nTCxFQUFPLFVBQVUsWUFBWSxFQUFFLE1BQU0sR0FBRztZQUNwRDdCLElBQWtCbkosRUFBSSxDQUFDLEdBQUFtSixDQUFBLFNBQ3ZCQyxJQUFTcEosRUFBSSxDQUFDLEdBQUFvSixDQUFBLFNBQ2RDLElBQW1CckosRUFBSSxDQUFDLEdBQUFxSixDQUFBO0FBQ2xCLFVBQUEsRUFBQSxXQUFBRSxHQUFXLGNBQUFDLEVBQVksSUFBQSxNQUFXQyxHQUFzQkwsR0FBUXpFLEVBQWE7QUFDbkYsYUFBTyxjQUNELElBQUE7QUFBQSxRQUFZO0FBQUE7VUFDZCxRQUFNO0FBQUEsWUFDSixXQUFBNEU7QUFBQSxZQUNBLGNBQUFDO0FBQUEsWUFDQSxRQUFRUjtBQUFBOztVQUlWTyxFQUFVLFdBQVcsS0FBS0EsRUFBVSxDQUFDLEVBQUUsUUFDekNoRCxFQUFBMEQsSUFBQWIsSUFBU0csRUFBVSxDQUFDLEVBQUUsTUFBSUgsQ0FBQSxHQUU1QmMsR0FBOEJWLENBQVk7QUFBQTs7V0FJckMwQixLQUFJO1VBQ0xyQixJQUFJO0FBQUEsTUFDUixVQUFVO0FBQUEsTUFDVixNQUFNVDtBQUFBLE1BQ04sZUFBZStCO0FBQUE7QUFFakIsSUFBQTVFLEVBQUE2RSxJQUFBQyxJQUFTLElBQUlBLENBQUEsR0FFVGpLLEdBQUkwSCxFQUFJLEtBQ1ZJLEdBQWE5SCxHQUFJMEgsRUFBSSxDQUFHLEVBQUEsS0FBTSxDQUFBd0MsTUFBTTtBQUNsQyxNQUFBekIsRUFBSyxlQUFleUIsRUFBTyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQUEsUUFHM0MsT0FBTyxjQUFrQixJQUFBLFlBQVksZUFBYSxFQUFJLFFBQVF6QixFQUFJLENBQUEsQ0FBQTtBQUFBO1dBRzNEMEIsS0FBTTtBQUViLFdBQU8sY0FBa0IsSUFBQSxZQUFZLGVBQWUsQ0FBQSxHQUNwRGhGLEVBQUE2RSxJQUFBQyxJQUFTLElBQUtBLENBQUEsU0FDZHJDLElBQWlCakksR0FBa0IsSUFBRWlJLENBQUEsR0FDckN6QyxFQUFBSyxJQUFBQyxJQUFZLElBQUtBLENBQUEsR0FDakJOLEVBQUFpRixJQUFBbkMsSUFBbUIsSUFBRUEsQ0FBQSxHQUNyQjlDLEVBQUFrRixJQUFBeEMsRUFBcUIsaUJBQWMsQ0FBQSxHQUFBQSxDQUFBO1VBQzdCeUMsSUFBa0J0SyxHQUFJdUssRUFBb0I7QUFDaEQsSUFBQUQsRUFBZ0IsY0FBYyxJQUM5QkEsRUFBZ0Isc0JBQXNCLElBQ3RDQSxFQUFnQixtQkFBbUIsSUFDbkNBLEVBQWdCLGtCQUFrQixJQUNsQ3hELEVBQUEsSUFBQWhDLEtBQXNCLEVBQUUsR0FDeEJnQyxFQUFBLElBQUFqQyxLQUFtQixFQUFLLEdBQ3hCMEYsR0FBcUIsSUFBSUQsQ0FBZSxHQUNwQ25HLE1BQWFvRDs7QUFHVixXQUFBcUIsR0FBaUI0QixHQUFzQjtBQUMxQyxRQUFBQyxJQUFRLElBQ1JDLElBQXVCO0FBQ3ZCLElBQUFGLEVBQU8sVUFDVEMsSUFBSyx1QkFBMEJELEVBQU8sY0FBYyxZQUFZLFFBQVEsQ0FBQyxDQUN2RSxtQkFBQUEsRUFBTyxpQkFBaUIsV0FDMUIsS0FBS0EsRUFBTyxpQkFBaUIsTUFBTSxRQUFRLENBQUMsQ0FBQSxtQkFFeENBLEdBQVEsZUFBZSxnQkFDekJFLElBQU8sU0FDUEQsSUFBSyx1QkFBMEJELEVBQU8sY0FBYyxZQUFZLFFBQVEsQ0FBQyxDQUN2RSxtQkFBQUEsRUFBTyxpQkFBaUIsV0FDMUIsS0FBS0EsRUFBTyxpQkFBaUIsTUFBTSxRQUFRLENBQUMsQ0FBQSxxQkFHNUNHLEtBQTBCNUYsR0FBTSxLQUFPLEVBQUEsTUFBQTJGLEdBQU0sT0FBQUQsRUFBSyxDQUFBO0FBQUE7QUFHekMsaUJBQUFsQixHQUFhTCxHQUFlQyxHQUFnQkYsR0FBZTs7VUFFaEUvQixLQUFzQnBGLEdBQWlCO0FBQTJCO1lBRWhFOEksR0FBZ0I7Y0FFVixVQUFBQyxHQUNWLE9BQU9DLEdBQ1AsUUFBUUMsSUFDUixhQUFhQyxJQUNiLFlBQVlDLElBQ0MsYUFBQUMsR0FBVyxJQUFBLE1BQ2hCQyxHQUFtQmpDLEdBQU9DLEdBQVF6RCxHQUFhdUQsQ0FBTTtBQUMzRCxNQUFBNkIsSUFBYzVCLEtBQVM2QixLQUFlNUI7O1FBQ3hDL0MsSUFBVztBQUFBLFVBQUssWUFBWTBFO0FBQUEsVUFBYSxhQUFhQztBQUFBOztTQUdwRHpCLEdBQVEsTUFBQSxDQUFRMkIsTUFBVUMsTUFBZSxNQUFRSixJQUFjQzs7UUFDakUzRSxJQUFXO0FBQUEsVUFBSyxZQUFZMkU7QUFBQSxVQUFjLGFBQWFEO0FBQUE7O2VBSXpETSxJQUF5QlAsS0FBc0JRLEVBQW9CLENBQUMsRUFBRSxVQUFRRCxDQUFBLFNBQzlFbEUsSUFBcUJwRixHQUFpQixJQUFFb0YsQ0FBQTtBQUFBLGFBQ2pDRCxHQUFDO0FBQ0YsWUFBQXFFLElBQVFyRTtBQUNkLE1BQUFILEVBQUEsSUFBQTNDLEtBQWMsRUFBSTtBQUNaLFlBQUFvSCxLQUFtQkMsR0FBU3ZFLENBQUMsS0FBS0EsRUFBRSxhQUFhQSxFQUFFLGFBQWE7QUFDdEUsY0FBUSxNQUFNcUUsR0FBT0MsRUFBZSxHQUNoQ0MsR0FBU0YsQ0FBSyxLQUFLLGFBQWFBLEtBQVNBLEVBQU0sUUFBUSxTQUFTLG1CQUFtQixNQUNyRixRQUFRLE1BQU0sNENBQTRDLFNBQzFEcEUsSUFBcUJwRixHQUFpQixxQkFBbUJvRixDQUFBLElBRXZEc0UsR0FBU0YsQ0FBSyxLQUFLLGFBQWFBLEtBQVNBLEVBQU0sUUFBUSxTQUFTLDRCQUE0QixXQUM5RnBFLElBQXFCcEYsR0FBaUIsd0JBQXNCb0YsQ0FBQSxJQUUxRHFFLEdBQWdCLFNBQVMsT0FBTyxLQUFLQSxHQUFnQixTQUFTLFFBQVEsT0FDeEUsUUFBUSxNQUFLLDZEQUE4REEsRUFBZSxHQUFBLFNBQzFGckUsSUFBcUJwRixHQUFpQixvQkFBa0JvRixDQUFBO0FBQUE7O0FBTzFELFFBQUF1RSxLQUE2QnBDLEdBQVcsVUFBVyxDQUFBcUMsTUFBUTtJQUMxRGhKLEtBQ0FHLE9BRUxpRSxFQUFBLEdBQUFwRSxFQUFNLFFBQVFnSixFQUFTLFlBQVVoSixDQUFBLEdBQ2pDb0UsRUFBQSxHQUFBcEUsRUFBTSxTQUFTZ0osRUFBUyxhQUFXaEosQ0FBQSxHQUNuQ29FLEVBQUEsR0FBQWpFLEdBQWlCLFFBQVE2SSxFQUFTLFlBQVU3SSxFQUFBLEdBQzVDaUUsRUFBQSxHQUFBakUsR0FBaUIsU0FBUzZJLEVBQVMsYUFBVzdJLEVBQUEsR0FDOUNpRSxFQUFBLEdBQUEvQyxHQUFXLFFBQVEySCxFQUFTLFlBQVUzSCxFQUFBLEdBQ3RDK0MsRUFBQSxHQUFBL0MsR0FBVyxTQUFTMkgsRUFBUyxhQUFXM0gsRUFBQSxHQUd4QytDLEVBQUEsSUFBQW5FLEVBQWMsUUFBUStJLEVBQVMsWUFBVS9JLENBQUEsR0FDekNtRSxFQUFBLElBQUFuRSxFQUFjLFNBQVMrSSxFQUFTLGFBQVcvSSxDQUFBO0FBQUEsTUFJdkNnSixLQUE2QnBCLEdBQXFCLFVBQVcsQ0FBQXFCLE1BQVE7QUFDckUsUUFBQUMsSUFBeUI7QUEwQjFCLFFBeEJFRCxFQUFTLHNCQUVIQSxFQUFTLG1CQUNsQkMsSUFBeUIsaUNBQ2ZELEVBQVMsa0JBRVRBLEVBQVMsZ0JBQ25CQyxJQUF5QixpQ0FGekJBLElBQXlCLDhCQUp6QkEsSUFBeUIsa0NBU3ZCQSxLQUEwQixNQUV2QkEsS0FBMEIvRyxPQUM3QmdDLEVBQUEsSUFBQWpDLEtBQW1CLEVBQUssR0FDeEI7QUFBQTtBQUNFLFFBQUFpQyxFQUFBLElBQUFoQyxLQUFzQitHLENBQXNCLEdBQzVDL0UsRUFBQSxJQUFBakMsS0FBbUIsRUFBSTtBQUFBO01BQ3RCO0FBQUEsUUFPSixDQUFBWSxLQUNEcUcsS0FBaUIsQ0FDaEIvSSxNQUNENkksRUFBUyxtQkFDVEEsRUFBUyxrQkFDTkEsRUFBUyx1QkFBdUJBLEVBQVMsbUJBQWdCO0FBRzVELE1BQUE5RSxFQUFBLEdBQUEvRCxLQUFpQixFQUFJLEdBQ3JCK0QsRUFBQSxJQUFBakMsS0FBbUIsRUFBSyxHQUN4QkYsTUFBMEIsb0JBQUEsS0FBSSxHQUFHLFFBQU8sSUFBS0Y7QUFDdkMsWUFBQXNILElBQTRCO0FBQUE7ZUFHN0JELEtBQ0RyRyxLQUNDN0QsR0FBaUIsS0FBTXVDLE1BQVcsQ0FDbEN5SCxFQUFTLHVCQUNWQSxFQUFTLG9CQUNSLENBQUFBLEVBQVMsZUFBVyxDQUNwQkEsRUFBUyxpQkFBZTtBQUV6QixZQUFBOUUsRUFBQSxHQUFBL0QsS0FBaUIsRUFBSyxHQUN0QjZCLEtBQW1CLElBQ25CO0FBQUE7QUFDRSxnQkFBQUEsS0FBbUI7QUFBQTtjQUNsQjtBQUFBLGVBQ0gsY0FBY21ILENBQXlCOzs7Z0JBR25DQyxLQUFHLG9CQUFPLEtBQUksR0FBRyxRQUFPO0FBRzFCLFVBRnFCLEtBQUssT0FBUXJILEtBQXNCcUgsTUFBUSxNQUFPLE1BQU8sR0FBSSxLQUU5RCxNQUN0QixjQUFjRCxDQUF5QixHQUN2Q2pGLEVBQUEsR0FBQS9ELEtBQWlCLEVBQUssR0FDQSxTQUNuQixxQkFBcUIscUJBQXFCLElBQUksQ0FBQyxHQUM5QyxZQUFZLGVBQWUsb0JBQW9CLEdBQ3BDLE1BQUs7QUFBQTtRQUVyQjtBQUFBOztNQUtEa0osS0FBMkJ6RyxHQUFTLFVBQVcsQ0FBQW9HLE1BQVE7SUFDdEQ5SSxPQUNEOEksS0FDRjlJLEdBQWEsVUFBVSxPQUFPLE1BQU0sR0FDcENBLEdBQWEsVUFBVSxJQUFJLFFBQVEsTUFFbkNBLEdBQWEsVUFBVSxJQUFJLE1BQU0sR0FDakNBLEdBQWEsVUFBVSxPQUFPLFFBQVE7QUFBQSxNQUlwQ29KLEtBQTJCQyxHQUFzQixVQUFXLENBQUFQLE1BQVE7SUFDbkVsSixLQUNEa0osTUFDRixRQUFRLElBQUksaUNBQWlDLFFBQzdDbEosRUFBTSxZQUFZLE1BQUlBLENBQUEsUUFDdEJBLEVBQU0sTUFBTSxJQUFFQSxDQUFBO0FBQUE7QUFJbEIsRUFBQTBKLEdBQVksVUFBUyxPQUFRQyxNQUFHO0lBQzFCQSxNQUFRL0UsR0FBUSxjQUNac0QsR0FBZ0I7QUFBQTtBQUlwQixRQUFBMEIsS0FBNEJDLEdBQXNCLGlCQUFpQkMsTUFBVztRQUM5RTVLLEdBQWlCLE1BQ2hCNEs7QUFBVztJQUNYOUosVUFFSE0sS0FBTSxDQUFBLENBQUE7WUFFQSxhQUFBeUosR0FBYSxZQUFBQyxFQUFVLElBQUt0Rzs7QUFFNUIsWUFBQXVHLFVBQWVDLEdBQVlGLEdBQVlELEdBQWFELENBQVc7V0FDckU5SixFQUFNLFlBQVlpSyxHQUFNakssQ0FBQSxHQUN4QnlDLEVBQUEwSCxJQUFBQyxJQUFXSCxHQUFNRyxDQUFBLEdBQ2pCM0gsRUFBQWdILElBQUFZLElBQXlCLElBQUtBLENBQUEsR0FDekJySSxhQUNId0MsSUFBcUJwRixHQUFpQiw2QkFBMkJvRixDQUFBLEdBQ2pFOEY7YUFFSy9GLEdBQUM7QUFDRixZQUFBcUUsSUFBUXJFO0FBQ2QsTUFBQUgsRUFBQSxJQUFBM0MsS0FBYyxFQUFJLEdBQ2RxSCxHQUFTRixDQUFLLEtBQUssYUFBYUEsS0FBU0EsRUFBTSxRQUFRLFNBQVMsNEJBQTRCLFdBQzlGcEUsSUFBcUJwRixHQUFpQix3QkFBc0JvRixDQUFBO0FBQUE7TUFNNUQrRixLQUF1QmIsR0FBWSxpQkFBaUJDLE1BQUc7QUFDdkQsSUFBQUEsTUFBUS9FLEdBQVEsUUFBUTFGLEdBQWlCLEtBQ3RDLENBQUFvQyxNQUFjLENBQUF5QixLQUFheEIsWUFBbUI4QixHQUFVO0FBQUEsTUFJM0RtSCxLQUFxQnZKLEdBQWEsaUJBQWlCaUksTUFBUTtBQUMzRCxJQUFBQSxLQUFVdUI7TUFHVkMsS0FBd0JDLEdBQVcsaUJBQWlCekIsTUFBUTtRQUMzRHhGO1dBRUFrRCxHQUFRLEdBQUE7Y0FDTGdFLElBQVlqQyxFQUFvQixLQUFLLENBQUFwQyxNQUFVQSxFQUFPLGFBQWFtQyxDQUFzQixHQUN6RlAsSUFBV3lDLElBQVlBLEVBQVUsV0FBV2pDLEVBQW9CLENBQUMsRUFBRTtBQUN6RSxRQUFBdEYsR0FBVzhFLENBQVE7OztNQUlqQmUsV0FDQWxHLElBQWNDLEdBQWUsYUFBV0QsQ0FBQSxTQUNsQ0ssR0FBVSxZQUVoQkwsSUFBY0MsR0FBZSxjQUFZRCxDQUFBLFNBQ25DSyxHQUFVO0FBQUE7QUFBQSxNQUloQndILEtBQXlCQyxHQUFnQixpQkFBaUJDLE1BQUk7S0FDN0RBLEVBQUssZUFBVyxDQUFLbkUsR0FBUSxNQUVsQzVFLEtBQW1CK0ksRUFBSyxZQUFZLFNBQVMsVUFBVSxHQUNuRC9JLFlBQ0Z3QyxJQUFxQnBGLEdBQWlCLElBQUVvRixDQUFBLEdBQ3BDZCxNQUNGakIsRUFBQW9ILElBQUFuQixJQUF5QixJQUFFQSxDQUFBLFNBQzNCMUYsSUFBY0MsR0FBZSxjQUFZRCxDQUFBLFNBQ25DSyxHQUFVLGFBR2xCbUIsSUFBcUJwRixHQUFpQiw2QkFBMkJvRixDQUFBLEdBQ2pFOEY7O2lCQUlXRyxLQUFXO1FBQ3BCTztBQUNBLFFBQUFuSixNQUFrQkMsSUFBZ0I7QUFDcEMsTUFBQUQsS0FBaUI7QUFDWCxZQUFBb0osVUFBZ0JDLE1BRWhCQyxpQkFBdUIsbUNBQXNCO1VBQy9DQztBQUNKLE1BQUFBLElBQW9CRCxFQUFRLGlCQUFpQmxMLEdBQWVnTCxDQUFPLEdBQ25FRCxJQUFnQixNQUFTSSxFQUFrQixxQkFFM0NqTCxHQUFpQixXQUFXLElBQUksR0FBRyxVQUFVLEdBQUcsR0FBR0EsR0FBaUIsT0FBT0EsR0FBaUIsTUFBTTtBQUFBO0FBRWxHLE1BQUEwQjtJQUdFbUosSUFDRkssR0FBcUJMLEdBQWtCN0ssSUFBa0JLLEVBQWMsSUFFdkU4SyxNQUVFdkUsS0FDRnpDLEdBQVd0RSxHQUFPeUssRUFBVztBQUFBO0FBSWpDLEVBQUFjLEdBQVksVUFBUyxPQUFRQyxNQUFFO0lBQ3pCQSxNQUNGL0QsTUFDQWhGLEVBQUE4SSxJQUFBRSxJQUFlLElBQUtBLENBQUE7QUFBQTtBQUlsQixRQUFBQyxLQUFxQ2hKLEdBQU0sVUFBVyxDQUFBOEksTUFBRTtJQUN4REEsS0FFRixPQUFPLGNBQWtCLElBQUEsWUFBWSxvQkFBb0IsQ0FBQTtBQUFBO0FBSTdELEVBQUFHLEdBQVMsTUFBQTtBQUNQLElBQUFyQixNQUNBZixNQUNBTixNQUNBRixNQUNBUyxNQUNBSSxNQUNBVyxNQUNBLGNBQWM1SSxFQUFVLEdBQ3hCNkksTUFDQUUsTUFDQUcsTUFDQWEsTUFDQXpFLE1BQ0F0RixLQUFhO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQk0sTUFBQVAsS0FBY3dLOzs7OztBQVFkLE1BQUE1TCxJQUFLNEw7Ozs7SUFFVjFNLEdBQWlCOztNQUNyQndFLElBQVc7QUFBQSxRQUFLLGFBQWExRCxFQUFNO0FBQUEsUUFBYSxZQUFZQSxFQUFNO0FBQUE7Ozs7OztBQWFyRCxNQUFBQyxJQUFhMkw7Ozs7O0FBR25CLE1BQUF6TCxLQUFnQnlMOzs7OztBQUlWLE1BQUF2SyxLQUFVdUs7OzttQkFvRFQ1RSxpQkFXRUksaUJBT0FLOzs7QUFsSFosTUFBQXJILEtBQVl3TDs7O21CQW1LTXhFLGlCQU1OSzs7QUFzQkosSUFBQUosSUFBYyxLQUFBOzttQkFZUkQsaUJBUUFLOztBQWVOLElBQUFKLElBQWMsS0FBQTs7bUJBU1ZJO1VBYWhCcEUsR0FBVTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==
|