@kontur.candy/tools 2.193.0 → 2.195.0

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.
@@ -0,0 +1,3328 @@
1
+ "use strict";
2
+
3
+ !function (global, factory) {
4
+ "object" == typeof module && "object" == typeof module.exports ? module.exports = global.document ? factory(global, !0) : function (w) {
5
+ if (!w.document) throw new Error("jQuery requires a window with a document");
6
+ return factory(w);
7
+ } : factory(global);
8
+ }("undefined" != typeof window ? window : void 0, function (window, noGlobal) {
9
+ function isArraylike(obj) {
10
+ var length = "length" in obj && obj.length,
11
+ type = jQuery.type(obj);
12
+ return "function" === type || jQuery.isWindow(obj) ? !1 : 1 === obj.nodeType && length ? !0 : "array" === type || 0 === length || "number" == typeof length && length > 0 && length - 1 in obj;
13
+ }
14
+ function winnow(elements, qualifier, not) {
15
+ if (jQuery.isFunction(qualifier)) return jQuery.grep(elements, function (elem, i) {
16
+ return !!qualifier.call(elem, i, elem) !== not;
17
+ });
18
+ if (qualifier.nodeType) return jQuery.grep(elements, function (elem) {
19
+ return elem === qualifier !== not;
20
+ });
21
+ if ("string" == typeof qualifier) {
22
+ if (risSimple.test(qualifier)) return jQuery.filter(qualifier, elements, not);
23
+ qualifier = jQuery.filter(qualifier, elements);
24
+ }
25
+ return jQuery.grep(elements, function (elem) {
26
+ return jQuery.inArray(elem, qualifier) >= 0 !== not;
27
+ });
28
+ }
29
+ function sibling(cur, dir) {
30
+ do cur = cur[dir]; while (cur && 1 !== cur.nodeType);
31
+ return cur;
32
+ }
33
+ function createOptions(options) {
34
+ var object = optionsCache[options] = {};
35
+ return jQuery.each(options.match(rnotwhite) || [], function (_, flag) {
36
+ object[flag] = !0;
37
+ }), object;
38
+ }
39
+ function detach() {
40
+ document.addEventListener ? (document.removeEventListener("DOMContentLoaded", completed, !1), window.removeEventListener("load", completed, !1)) : (document.detachEvent("onreadystatechange", completed), window.detachEvent("onload", completed));
41
+ }
42
+ function completed() {
43
+ (document.addEventListener || "load" === event.type || "complete" === document.readyState) && (detach(), jQuery.ready());
44
+ }
45
+ function dataAttr(elem, key, data) {
46
+ if (void 0 === data && 1 === elem.nodeType) {
47
+ var name = "data-" + key.replace(rmultiDash, "-$1").toLowerCase();
48
+ if (data = elem.getAttribute(name), "string" == typeof data) {
49
+ try {
50
+ data = "true" === data ? !0 : "false" === data ? !1 : "null" === data ? null : +data + "" === data ? +data : rbrace.test(data) ? jQuery.parseJSON(data) : data;
51
+ } catch (e) {}
52
+ jQuery.data(elem, key, data);
53
+ } else data = void 0;
54
+ }
55
+ return data;
56
+ }
57
+ function isEmptyDataObject(obj) {
58
+ var name;
59
+ for (name in obj) if (("data" !== name || !jQuery.isEmptyObject(obj[name])) && "toJSON" !== name) return !1;
60
+ return !0;
61
+ }
62
+ function internalData(elem, name, data, pvt) {
63
+ if (jQuery.acceptData(elem)) {
64
+ var ret,
65
+ thisCache,
66
+ internalKey = jQuery.expando,
67
+ isNode = elem.nodeType,
68
+ cache = isNode ? jQuery.cache : elem,
69
+ id = isNode ? elem[internalKey] : elem[internalKey] && internalKey;
70
+ if (id && cache[id] && (pvt || cache[id].data) || void 0 !== data || "string" != typeof name) return id || (id = isNode ? elem[internalKey] = deletedIds.pop() || jQuery.guid++ : internalKey), cache[id] || (cache[id] = isNode ? {} : {
71
+ toJSON: jQuery.noop
72
+ }), ("object" == typeof name || "function" == typeof name) && (pvt ? cache[id] = jQuery.extend(cache[id], name) : cache[id].data = jQuery.extend(cache[id].data, name)), thisCache = cache[id], pvt || (thisCache.data || (thisCache.data = {}), thisCache = thisCache.data), void 0 !== data && (thisCache[jQuery.camelCase(name)] = data), "string" == typeof name ? (ret = thisCache[name], null == ret && (ret = thisCache[jQuery.camelCase(name)])) : ret = thisCache, ret;
73
+ }
74
+ }
75
+ function internalRemoveData(elem, name, pvt) {
76
+ if (jQuery.acceptData(elem)) {
77
+ var thisCache,
78
+ i,
79
+ isNode = elem.nodeType,
80
+ cache = isNode ? jQuery.cache : elem,
81
+ id = isNode ? elem[jQuery.expando] : jQuery.expando;
82
+ if (cache[id]) {
83
+ if (name && (thisCache = pvt ? cache[id] : cache[id].data)) {
84
+ jQuery.isArray(name) ? name = name.concat(jQuery.map(name, jQuery.camelCase)) : name in thisCache ? name = [name] : (name = jQuery.camelCase(name), name = name in thisCache ? [name] : name.split(" ")), i = name.length;
85
+ for (; i--;) delete thisCache[name[i]];
86
+ if (pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache)) return;
87
+ }
88
+ (pvt || (delete cache[id].data, isEmptyDataObject(cache[id]))) && (isNode ? jQuery.cleanData([elem], !0) : support.deleteExpando || cache != cache.window ? delete cache[id] : cache[id] = null);
89
+ }
90
+ }
91
+ }
92
+ function returnTrue() {
93
+ return !0;
94
+ }
95
+ function returnFalse() {
96
+ return !1;
97
+ }
98
+ function safeActiveElement() {
99
+ try {
100
+ return document.activeElement;
101
+ } catch (err) {}
102
+ }
103
+ function createSafeFragment(document) {
104
+ var list = nodeNames.split("|"),
105
+ safeFrag = document.createDocumentFragment();
106
+ if (safeFrag.createElement) for (; list.length;) safeFrag.createElement(list.pop());
107
+ return safeFrag;
108
+ }
109
+ function getAll(context, tag) {
110
+ var elems,
111
+ elem,
112
+ i = 0,
113
+ found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName(tag || "*") : typeof context.querySelectorAll !== strundefined ? context.querySelectorAll(tag || "*") : void 0;
114
+ if (!found) for (found = [], elems = context.childNodes || context; null != (elem = elems[i]); i++) !tag || jQuery.nodeName(elem, tag) ? found.push(elem) : jQuery.merge(found, getAll(elem, tag));
115
+ return void 0 === tag || tag && jQuery.nodeName(context, tag) ? jQuery.merge([context], found) : found;
116
+ }
117
+ function fixDefaultChecked(elem) {
118
+ rcheckableType.test(elem.type) && (elem.defaultChecked = elem.checked);
119
+ }
120
+ function manipulationTarget(elem, content) {
121
+ return jQuery.nodeName(elem, "table") && jQuery.nodeName(11 !== content.nodeType ? content : content.firstChild, "tr") ? elem.getElementsByTagName("tbody")[0] || elem.appendChild(elem.ownerDocument.createElement("tbody")) : elem;
122
+ }
123
+ function disableScript(elem) {
124
+ return elem.type = (null !== jQuery.find.attr(elem, "type")) + "/" + elem.type, elem;
125
+ }
126
+ function restoreScript(elem) {
127
+ var match = rscriptTypeMasked.exec(elem.type);
128
+ return match ? elem.type = match[1] : elem.removeAttribute("type"), elem;
129
+ }
130
+ function setGlobalEval(elems, refElements) {
131
+ for (var elem, i = 0; null != (elem = elems[i]); i++) jQuery._data(elem, "globalEval", !refElements || jQuery._data(refElements[i], "globalEval"));
132
+ }
133
+ function cloneCopyEvent(src, dest) {
134
+ if (1 === dest.nodeType && jQuery.hasData(src)) {
135
+ var type,
136
+ i,
137
+ l,
138
+ oldData = jQuery._data(src),
139
+ curData = jQuery._data(dest, oldData),
140
+ events = oldData.events;
141
+ if (events) {
142
+ delete curData.handle, curData.events = {};
143
+ for (type in events) for (i = 0, l = events[type].length; l > i; i++) jQuery.event.add(dest, type, events[type][i]);
144
+ }
145
+ curData.data && (curData.data = jQuery.extend({}, curData.data));
146
+ }
147
+ }
148
+ function fixCloneNodeIssues(src, dest) {
149
+ var nodeName, e, data;
150
+ if (1 === dest.nodeType) {
151
+ if (nodeName = dest.nodeName.toLowerCase(), !support.noCloneEvent && dest[jQuery.expando]) {
152
+ data = jQuery._data(dest);
153
+ for (e in data.events) jQuery.removeEvent(dest, e, data.handle);
154
+ dest.removeAttribute(jQuery.expando);
155
+ }
156
+ "script" === nodeName && dest.text !== src.text ? (disableScript(dest).text = src.text, restoreScript(dest)) : "object" === nodeName ? (dest.parentNode && (dest.outerHTML = src.outerHTML), support.html5Clone && src.innerHTML && !jQuery.trim(dest.innerHTML) && (dest.innerHTML = src.innerHTML)) : "input" === nodeName && rcheckableType.test(src.type) ? (dest.defaultChecked = dest.checked = src.checked, dest.value !== src.value && (dest.value = src.value)) : "option" === nodeName ? dest.defaultSelected = dest.selected = src.defaultSelected : ("input" === nodeName || "textarea" === nodeName) && (dest.defaultValue = src.defaultValue);
157
+ }
158
+ }
159
+ function actualDisplay(name, doc) {
160
+ var style,
161
+ elem = jQuery(doc.createElement(name)).appendTo(doc.body),
162
+ display = window.getDefaultComputedStyle && (style = window.getDefaultComputedStyle(elem[0])) ? style.display : jQuery.css(elem[0], "display");
163
+ return elem.detach(), display;
164
+ }
165
+ function defaultDisplay(nodeName) {
166
+ var doc = document,
167
+ display = elemdisplay[nodeName];
168
+ return display || (display = actualDisplay(nodeName, doc), "none" !== display && display || (iframe = (iframe || jQuery("<iframe frameborder='0' width='0' height='0'/>")).appendTo(doc.documentElement), doc = (iframe[0].contentWindow || iframe[0].contentDocument).document, doc.write(), doc.close(), display = actualDisplay(nodeName, doc), iframe.detach()), elemdisplay[nodeName] = display), display;
169
+ }
170
+ function addGetHookIf(conditionFn, hookFn) {
171
+ return {
172
+ get: function () {
173
+ var condition = conditionFn();
174
+ if (null != condition) return condition ? void delete this.get : (this.get = hookFn).apply(this, arguments);
175
+ }
176
+ };
177
+ }
178
+ function vendorPropName(style, name) {
179
+ if (name in style) return name;
180
+ for (var capName = name.charAt(0).toUpperCase() + name.slice(1), origName = name, i = cssPrefixes.length; i--;) if (name = cssPrefixes[i] + capName, name in style) return name;
181
+ return origName;
182
+ }
183
+ function showHide(elements, show) {
184
+ for (var display, elem, hidden, values = [], index = 0, length = elements.length; length > index; index++) elem = elements[index], elem.style && (values[index] = jQuery._data(elem, "olddisplay"), display = elem.style.display, show ? (values[index] || "none" !== display || (elem.style.display = ""), "" === elem.style.display && isHidden(elem) && (values[index] = jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName)))) : (hidden = isHidden(elem), (display && "none" !== display || !hidden) && jQuery._data(elem, "olddisplay", hidden ? display : jQuery.css(elem, "display"))));
185
+ for (index = 0; length > index; index++) elem = elements[index], elem.style && (show && "none" !== elem.style.display && "" !== elem.style.display || (elem.style.display = show ? values[index] || "" : "none"));
186
+ return elements;
187
+ }
188
+ function setPositiveNumber(elem, value, subtract) {
189
+ var matches = rnumsplit.exec(value);
190
+ return matches ? Math.max(0, matches[1] - (subtract || 0)) + (matches[2] || "px") : value;
191
+ }
192
+ function augmentWidthOrHeight(elem, name, extra, isBorderBox, styles) {
193
+ for (var i = extra === (isBorderBox ? "border" : "content") ? 4 : "width" === name ? 1 : 0, val = 0; 4 > i; i += 2) "margin" === extra && (val += jQuery.css(elem, extra + cssExpand[i], !0, styles)), isBorderBox ? ("content" === extra && (val -= jQuery.css(elem, "padding" + cssExpand[i], !0, styles)), "margin" !== extra && (val -= jQuery.css(elem, "border" + cssExpand[i] + "Width", !0, styles))) : (val += jQuery.css(elem, "padding" + cssExpand[i], !0, styles), "padding" !== extra && (val += jQuery.css(elem, "border" + cssExpand[i] + "Width", !0, styles)));
194
+ return val;
195
+ }
196
+ function getWidthOrHeight(elem, name, extra) {
197
+ var valueIsBorderBox = !0,
198
+ val = "width" === name ? elem.offsetWidth : elem.offsetHeight,
199
+ styles = getStyles(elem),
200
+ isBorderBox = support.boxSizing && "border-box" === jQuery.css(elem, "boxSizing", !1, styles);
201
+ if (0 >= val || null == val) {
202
+ if (val = curCSS(elem, name, styles), (0 > val || null == val) && (val = elem.style[name]), rnumnonpx.test(val)) return val;
203
+ valueIsBorderBox = isBorderBox && (support.boxSizingReliable() || val === elem.style[name]), val = parseFloat(val) || 0;
204
+ }
205
+ return val + augmentWidthOrHeight(elem, name, extra || (isBorderBox ? "border" : "content"), valueIsBorderBox, styles) + "px";
206
+ }
207
+ function Tween(elem, options, prop, end, easing) {
208
+ return new Tween.prototype.init(elem, options, prop, end, easing);
209
+ }
210
+ function createFxNow() {
211
+ return setTimeout(function () {
212
+ fxNow = void 0;
213
+ }), fxNow = jQuery.now();
214
+ }
215
+ function genFx(type, includeWidth) {
216
+ var which,
217
+ attrs = {
218
+ height: type
219
+ },
220
+ i = 0;
221
+ for (includeWidth = includeWidth ? 1 : 0; 4 > i; i += 2 - includeWidth) which = cssExpand[i], attrs["margin" + which] = attrs["padding" + which] = type;
222
+ return includeWidth && (attrs.opacity = attrs.width = type), attrs;
223
+ }
224
+ function createTween(value, prop, animation) {
225
+ for (var tween, collection = (tweeners[prop] || []).concat(tweeners["*"]), index = 0, length = collection.length; length > index; index++) if (tween = collection[index].call(animation, prop, value)) return tween;
226
+ }
227
+ function defaultPrefilter(elem, props, opts) {
228
+ var prop,
229
+ value,
230
+ toggle,
231
+ tween,
232
+ hooks,
233
+ oldfire,
234
+ display,
235
+ checkDisplay,
236
+ anim = this,
237
+ orig = {},
238
+ style = elem.style,
239
+ hidden = elem.nodeType && isHidden(elem),
240
+ dataShow = jQuery._data(elem, "fxshow");
241
+ opts.queue || (hooks = jQuery._queueHooks(elem, "fx"), null == hooks.unqueued && (hooks.unqueued = 0, oldfire = hooks.empty.fire, hooks.empty.fire = function () {
242
+ hooks.unqueued || oldfire();
243
+ }), hooks.unqueued++, anim.always(function () {
244
+ anim.always(function () {
245
+ hooks.unqueued--, jQuery.queue(elem, "fx").length || hooks.empty.fire();
246
+ });
247
+ })), 1 === elem.nodeType && ("height" in props || "width" in props) && (opts.overflow = [style.overflow, style.overflowX, style.overflowY], display = jQuery.css(elem, "display"), checkDisplay = "none" === display ? jQuery._data(elem, "olddisplay") || defaultDisplay(elem.nodeName) : display, "inline" === checkDisplay && "none" === jQuery.css(elem, "float") && (support.inlineBlockNeedsLayout && "inline" !== defaultDisplay(elem.nodeName) ? style.zoom = 1 : style.display = "inline-block")), opts.overflow && (style.overflow = "hidden", support.shrinkWrapBlocks() || anim.always(function () {
248
+ style.overflow = opts.overflow[0], style.overflowX = opts.overflow[1], style.overflowY = opts.overflow[2];
249
+ }));
250
+ for (prop in props) if (value = props[prop], rfxtypes.exec(value)) {
251
+ if (delete props[prop], toggle = toggle || "toggle" === value, value === (hidden ? "hide" : "show")) {
252
+ if ("show" !== value || !dataShow || void 0 === dataShow[prop]) continue;
253
+ hidden = !0;
254
+ }
255
+ orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);
256
+ } else display = void 0;
257
+ if (jQuery.isEmptyObject(orig)) "inline" === ("none" === display ? defaultDisplay(elem.nodeName) : display) && (style.display = display);else {
258
+ dataShow ? "hidden" in dataShow && (hidden = dataShow.hidden) : dataShow = jQuery._data(elem, "fxshow", {}), toggle && (dataShow.hidden = !hidden), hidden ? jQuery(elem).show() : anim.done(function () {
259
+ jQuery(elem).hide();
260
+ }), anim.done(function () {
261
+ var prop;
262
+ jQuery._removeData(elem, "fxshow");
263
+ for (prop in orig) jQuery.style(elem, prop, orig[prop]);
264
+ });
265
+ for (prop in orig) tween = createTween(hidden ? dataShow[prop] : 0, prop, anim), prop in dataShow || (dataShow[prop] = tween.start, hidden && (tween.end = tween.start, tween.start = "width" === prop || "height" === prop ? 1 : 0));
266
+ }
267
+ }
268
+ function propFilter(props, specialEasing) {
269
+ var index, name, easing, value, hooks;
270
+ for (index in props) if (name = jQuery.camelCase(index), easing = specialEasing[name], value = props[index], jQuery.isArray(value) && (easing = value[1], value = props[index] = value[0]), index !== name && (props[name] = value, delete props[index]), hooks = jQuery.cssHooks[name], hooks && "expand" in hooks) {
271
+ value = hooks.expand(value), delete props[name];
272
+ for (index in value) index in props || (props[index] = value[index], specialEasing[index] = easing);
273
+ } else specialEasing[name] = easing;
274
+ }
275
+ function Animation(elem, properties, options) {
276
+ var result,
277
+ stopped,
278
+ index = 0,
279
+ length = animationPrefilters.length,
280
+ deferred = jQuery.Deferred().always(function () {
281
+ delete tick.elem;
282
+ }),
283
+ tick = function () {
284
+ if (stopped) return !1;
285
+ for (var currentTime = fxNow || createFxNow(), remaining = Math.max(0, animation.startTime + animation.duration - currentTime), temp = remaining / animation.duration || 0, percent = 1 - temp, index = 0, length = animation.tweens.length; length > index; index++) animation.tweens[index].run(percent);
286
+ return deferred.notifyWith(elem, [animation, percent, remaining]), 1 > percent && length ? remaining : (deferred.resolveWith(elem, [animation]), !1);
287
+ },
288
+ animation = deferred.promise({
289
+ elem: elem,
290
+ props: jQuery.extend({}, properties),
291
+ opts: jQuery.extend(!0, {
292
+ specialEasing: {}
293
+ }, options),
294
+ originalProperties: properties,
295
+ originalOptions: options,
296
+ startTime: fxNow || createFxNow(),
297
+ duration: options.duration,
298
+ tweens: [],
299
+ createTween: function (prop, end) {
300
+ var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);
301
+ return animation.tweens.push(tween), tween;
302
+ },
303
+ stop: function (gotoEnd) {
304
+ var index = 0,
305
+ length = gotoEnd ? animation.tweens.length : 0;
306
+ if (stopped) return this;
307
+ for (stopped = !0; length > index; index++) animation.tweens[index].run(1);
308
+ return gotoEnd ? deferred.resolveWith(elem, [animation, gotoEnd]) : deferred.rejectWith(elem, [animation, gotoEnd]), this;
309
+ }
310
+ }),
311
+ props = animation.props;
312
+ for (propFilter(props, animation.opts.specialEasing); length > index; index++) if (result = animationPrefilters[index].call(animation, elem, props, animation.opts)) return result;
313
+ return jQuery.map(props, createTween, animation), jQuery.isFunction(animation.opts.start) && animation.opts.start.call(elem, animation), jQuery.fx.timer(jQuery.extend(tick, {
314
+ elem: elem,
315
+ anim: animation,
316
+ queue: animation.opts.queue
317
+ })), animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);
318
+ }
319
+ function addToPrefiltersOrTransports(structure) {
320
+ return function (dataTypeExpression, func) {
321
+ "string" != typeof dataTypeExpression && (func = dataTypeExpression, dataTypeExpression = "*");
322
+ var dataType,
323
+ i = 0,
324
+ dataTypes = dataTypeExpression.toLowerCase().match(rnotwhite) || [];
325
+ if (jQuery.isFunction(func)) for (; dataType = dataTypes[i++];) "+" === dataType.charAt(0) ? (dataType = dataType.slice(1) || "*", (structure[dataType] = structure[dataType] || []).unshift(func)) : (structure[dataType] = structure[dataType] || []).push(func);
326
+ };
327
+ }
328
+ function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {
329
+ function inspect(dataType) {
330
+ var selected;
331
+ return inspected[dataType] = !0, jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {
332
+ var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);
333
+ return "string" != typeof dataTypeOrTransport || seekingTransport || inspected[dataTypeOrTransport] ? seekingTransport ? !(selected = dataTypeOrTransport) : void 0 : (options.dataTypes.unshift(dataTypeOrTransport), inspect(dataTypeOrTransport), !1);
334
+ }), selected;
335
+ }
336
+ var inspected = {},
337
+ seekingTransport = structure === transports;
338
+ return inspect(options.dataTypes[0]) || !inspected["*"] && inspect("*");
339
+ }
340
+ function ajaxExtend(target, src) {
341
+ var deep,
342
+ key,
343
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
344
+ for (key in src) void 0 !== src[key] && ((flatOptions[key] ? target : deep || (deep = {}))[key] = src[key]);
345
+ return deep && jQuery.extend(!0, target, deep), target;
346
+ }
347
+ function ajaxHandleResponses(s, jqXHR, responses) {
348
+ for (var firstDataType, ct, finalDataType, type, contents = s.contents, dataTypes = s.dataTypes; "*" === dataTypes[0];) dataTypes.shift(), void 0 === ct && (ct = s.mimeType || jqXHR.getResponseHeader("Content-Type"));
349
+ if (ct) for (type in contents) if (contents[type] && contents[type].test(ct)) {
350
+ dataTypes.unshift(type);
351
+ break;
352
+ }
353
+ if (dataTypes[0] in responses) finalDataType = dataTypes[0];else {
354
+ for (type in responses) {
355
+ if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) {
356
+ finalDataType = type;
357
+ break;
358
+ }
359
+ firstDataType || (firstDataType = type);
360
+ }
361
+ finalDataType = finalDataType || firstDataType;
362
+ }
363
+ return finalDataType ? (finalDataType !== dataTypes[0] && dataTypes.unshift(finalDataType), responses[finalDataType]) : void 0;
364
+ }
365
+ function ajaxConvert(s, response, jqXHR, isSuccess) {
366
+ var conv2,
367
+ current,
368
+ conv,
369
+ tmp,
370
+ prev,
371
+ converters = {},
372
+ dataTypes = s.dataTypes.slice();
373
+ if (dataTypes[1]) for (conv in s.converters) converters[conv.toLowerCase()] = s.converters[conv];
374
+ for (current = dataTypes.shift(); current;) if (s.responseFields[current] && (jqXHR[s.responseFields[current]] = response), !prev && isSuccess && s.dataFilter && (response = s.dataFilter(response, s.dataType)), prev = current, current = dataTypes.shift()) if ("*" === current) current = prev;else if ("*" !== prev && prev !== current) {
375
+ if (conv = converters[prev + " " + current] || converters["* " + current], !conv) for (conv2 in converters) if (tmp = conv2.split(" "), tmp[1] === current && (conv = converters[prev + " " + tmp[0]] || converters["* " + tmp[0]])) {
376
+ conv === !0 ? conv = converters[conv2] : converters[conv2] !== !0 && (current = tmp[0], dataTypes.unshift(tmp[1]));
377
+ break;
378
+ }
379
+ if (conv !== !0) if (conv && s["throws"]) response = conv(response);else try {
380
+ response = conv(response);
381
+ } catch (e) {
382
+ return {
383
+ state: "parsererror",
384
+ error: conv ? e : "No conversion from " + prev + " to " + current
385
+ };
386
+ }
387
+ }
388
+ return {
389
+ state: "success",
390
+ data: response
391
+ };
392
+ }
393
+ function buildParams(prefix, obj, traditional, add) {
394
+ var name;
395
+ if (jQuery.isArray(obj)) jQuery.each(obj, function (i, v) {
396
+ traditional || rbracket.test(prefix) ? add(prefix, v) : buildParams(prefix + "[" + ("object" == typeof v ? i : "") + "]", v, traditional, add);
397
+ });else if (traditional || "object" !== jQuery.type(obj)) add(prefix, obj);else for (name in obj) buildParams(prefix + "[" + name + "]", obj[name], traditional, add);
398
+ }
399
+ function createStandardXHR() {
400
+ try {
401
+ return new window.XMLHttpRequest();
402
+ } catch (e) {}
403
+ }
404
+ function createActiveXHR() {
405
+ try {
406
+ return new window.ActiveXObject("Microsoft.XMLHTTP");
407
+ } catch (e) {}
408
+ }
409
+ function getWindow(elem) {
410
+ return jQuery.isWindow(elem) ? elem : 9 === elem.nodeType ? elem.defaultView || elem.parentWindow : !1;
411
+ }
412
+ var deletedIds = [],
413
+ slice = deletedIds.slice,
414
+ concat = deletedIds.concat,
415
+ push = deletedIds.push,
416
+ indexOf = deletedIds.indexOf,
417
+ class2type = {},
418
+ toString = class2type.toString,
419
+ hasOwn = class2type.hasOwnProperty,
420
+ support = {},
421
+ version = "1.11.3",
422
+ jQuery = function (selector, context) {
423
+ return new jQuery.fn.init(selector, context);
424
+ },
425
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
426
+ rmsPrefix = /^-ms-/,
427
+ rdashAlpha = /-([\da-z])/gi,
428
+ fcamelCase = function (all, letter) {
429
+ return letter.toUpperCase();
430
+ };
431
+ jQuery.fn = jQuery.prototype = {
432
+ jquery: version,
433
+ constructor: jQuery,
434
+ selector: "",
435
+ length: 0,
436
+ toArray: function () {
437
+ return slice.call(this);
438
+ },
439
+ get: function (num) {
440
+ return null != num ? 0 > num ? this[num + this.length] : this[num] : slice.call(this);
441
+ },
442
+ pushStack: function (elems) {
443
+ var ret = jQuery.merge(this.constructor(), elems);
444
+ return ret.prevObject = this, ret.context = this.context, ret;
445
+ },
446
+ each: function (callback, args) {
447
+ return jQuery.each(this, callback, args);
448
+ },
449
+ map: function (callback) {
450
+ return this.pushStack(jQuery.map(this, function (elem, i) {
451
+ return callback.call(elem, i, elem);
452
+ }));
453
+ },
454
+ slice: function () {
455
+ return this.pushStack(slice.apply(this, arguments));
456
+ },
457
+ first: function () {
458
+ return this.eq(0);
459
+ },
460
+ last: function () {
461
+ return this.eq(-1);
462
+ },
463
+ eq: function (i) {
464
+ var len = this.length,
465
+ j = +i + (0 > i ? len : 0);
466
+ return this.pushStack(j >= 0 && len > j ? [this[j]] : []);
467
+ },
468
+ end: function () {
469
+ return this.prevObject || this.constructor(null);
470
+ },
471
+ push: push,
472
+ sort: deletedIds.sort,
473
+ splice: deletedIds.splice
474
+ }, jQuery.extend = jQuery.fn.extend = function () {
475
+ var src,
476
+ copyIsArray,
477
+ copy,
478
+ name,
479
+ options,
480
+ clone,
481
+ target = arguments[0] || {},
482
+ i = 1,
483
+ length = arguments.length,
484
+ deep = !1;
485
+ for ("boolean" == typeof target && (deep = target, target = arguments[i] || {}, i++), "object" == typeof target || jQuery.isFunction(target) || (target = {}), i === length && (target = this, i--); length > i; i++) if (null != (options = arguments[i])) for (name in options) src = target[name], copy = options[name], target !== copy && (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy))) ? (copyIsArray ? (copyIsArray = !1, clone = src && jQuery.isArray(src) ? src : []) : clone = src && jQuery.isPlainObject(src) ? src : {}, target[name] = jQuery.extend(deep, clone, copy)) : void 0 !== copy && (target[name] = copy));
486
+ return target;
487
+ }, jQuery.extend({
488
+ expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""),
489
+ isReady: !0,
490
+ error: function (msg) {
491
+ throw new Error(msg);
492
+ },
493
+ noop: function () {},
494
+ isFunction: function (obj) {
495
+ return "function" === jQuery.type(obj);
496
+ },
497
+ isArray: Array.isArray || function (obj) {
498
+ return "array" === jQuery.type(obj);
499
+ },
500
+ isWindow: function (obj) {
501
+ return null != obj && obj == obj.window;
502
+ },
503
+ isNumeric: function (obj) {
504
+ return !jQuery.isArray(obj) && obj - parseFloat(obj) + 1 >= 0;
505
+ },
506
+ isEmptyObject: function (obj) {
507
+ var name;
508
+ for (name in obj) return !1;
509
+ return !0;
510
+ },
511
+ isPlainObject: function (obj) {
512
+ var key;
513
+ if (!obj || "object" !== jQuery.type(obj) || obj.nodeType || jQuery.isWindow(obj)) return !1;
514
+ try {
515
+ if (obj.constructor && !hasOwn.call(obj, "constructor") && !hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) return !1;
516
+ } catch (e) {
517
+ return !1;
518
+ }
519
+ if (support.ownLast) for (key in obj) return hasOwn.call(obj, key);
520
+ for (key in obj);
521
+ return void 0 === key || hasOwn.call(obj, key);
522
+ },
523
+ type: function (obj) {
524
+ return null == obj ? obj + "" : "object" == typeof obj || "function" == typeof obj ? class2type[toString.call(obj)] || "object" : typeof obj;
525
+ },
526
+ globalEval: function (data) {
527
+ data && jQuery.trim(data) && (window.execScript || function (data) {
528
+ window.eval.call(window, data);
529
+ })(data);
530
+ },
531
+ camelCase: function (string) {
532
+ return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase);
533
+ },
534
+ nodeName: function (elem, name) {
535
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
536
+ },
537
+ each: function (obj, callback, args) {
538
+ var value,
539
+ i = 0,
540
+ length = obj.length,
541
+ isArray = isArraylike(obj);
542
+ if (args) {
543
+ if (isArray) for (; length > i && (value = callback.apply(obj[i], args), value !== !1); i++);else for (i in obj) if (value = callback.apply(obj[i], args), value === !1) break;
544
+ } else if (isArray) for (; length > i && (value = callback.call(obj[i], i, obj[i]), value !== !1); i++);else for (i in obj) if (value = callback.call(obj[i], i, obj[i]), value === !1) break;
545
+ return obj;
546
+ },
547
+ trim: function (text) {
548
+ return null == text ? "" : (text + "").replace(rtrim, "");
549
+ },
550
+ makeArray: function (arr, results) {
551
+ var ret = results || [];
552
+ return null != arr && (isArraylike(Object(arr)) ? jQuery.merge(ret, "string" == typeof arr ? [arr] : arr) : push.call(ret, arr)), ret;
553
+ },
554
+ inArray: function (elem, arr, i) {
555
+ var len;
556
+ if (arr) {
557
+ if (indexOf) return indexOf.call(arr, elem, i);
558
+ for (len = arr.length, i = i ? 0 > i ? Math.max(0, len + i) : i : 0; len > i; i++) if (i in arr && arr[i] === elem) return i;
559
+ }
560
+ return -1;
561
+ },
562
+ merge: function (first, second) {
563
+ for (var len = +second.length, j = 0, i = first.length; len > j;) first[i++] = second[j++];
564
+ if (len !== len) for (; void 0 !== second[j];) first[i++] = second[j++];
565
+ return first.length = i, first;
566
+ },
567
+ grep: function (elems, callback, invert) {
568
+ for (var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert; length > i; i++) callbackInverse = !callback(elems[i], i), callbackInverse !== callbackExpect && matches.push(elems[i]);
569
+ return matches;
570
+ },
571
+ map: function (elems, callback, arg) {
572
+ var value,
573
+ i = 0,
574
+ length = elems.length,
575
+ isArray = isArraylike(elems),
576
+ ret = [];
577
+ if (isArray) for (; length > i; i++) value = callback(elems[i], i, arg), null != value && ret.push(value);else for (i in elems) value = callback(elems[i], i, arg), null != value && ret.push(value);
578
+ return concat.apply([], ret);
579
+ },
580
+ guid: 1,
581
+ proxy: function (fn, context) {
582
+ var args, proxy, tmp;
583
+ return "string" == typeof context && (tmp = fn[context], context = fn, fn = tmp), jQuery.isFunction(fn) ? (args = slice.call(arguments, 2), proxy = function () {
584
+ return fn.apply(context || this, args.concat(slice.call(arguments)));
585
+ }, proxy.guid = fn.guid = fn.guid || jQuery.guid++, proxy) : void 0;
586
+ },
587
+ now: function () {
588
+ return +new Date();
589
+ },
590
+ support: support
591
+ }), jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function (i, name) {
592
+ class2type["[object " + name + "]"] = name.toLowerCase();
593
+ });
594
+ var Sizzle = function (window) {
595
+ function Sizzle(selector, context, results, seed) {
596
+ var match, elem, m, nodeType, i, groups, old, nid, newContext, newSelector;
597
+ if ((context ? context.ownerDocument || context : preferredDoc) !== document && setDocument(context), context = context || document, results = results || [], nodeType = context.nodeType, "string" != typeof selector || !selector || 1 !== nodeType && 9 !== nodeType && 11 !== nodeType) return results;
598
+ if (!seed && documentIsHTML) {
599
+ if (11 !== nodeType && (match = rquickExpr.exec(selector))) if (m = match[1]) {
600
+ if (9 === nodeType) {
601
+ if (elem = context.getElementById(m), !elem || !elem.parentNode) return results;
602
+ if (elem.id === m) return results.push(elem), results;
603
+ } else if (context.ownerDocument && (elem = context.ownerDocument.getElementById(m)) && contains(context, elem) && elem.id === m) return results.push(elem), results;
604
+ } else {
605
+ if (match[2]) return push.apply(results, context.getElementsByTagName(selector)), results;
606
+ if ((m = match[3]) && support.getElementsByClassName) return push.apply(results, context.getElementsByClassName(m)), results;
607
+ }
608
+ if (support.qsa && (!rbuggyQSA || !rbuggyQSA.test(selector))) {
609
+ if (nid = old = expando, newContext = context, newSelector = 1 !== nodeType && selector, 1 === nodeType && "object" !== context.nodeName.toLowerCase()) {
610
+ for (groups = tokenize(selector), (old = context.getAttribute("id")) ? nid = old.replace(rescape, "\\$&") : context.setAttribute("id", nid), nid = "[id='" + nid + "'] ", i = groups.length; i--;) groups[i] = nid + toSelector(groups[i]);
611
+ newContext = rsibling.test(selector) && testContext(context.parentNode) || context, newSelector = groups.join(",");
612
+ }
613
+ if (newSelector) try {
614
+ return push.apply(results, newContext.querySelectorAll(newSelector)), results;
615
+ } catch (qsaError) {} finally {
616
+ old || context.removeAttribute("id");
617
+ }
618
+ }
619
+ }
620
+ return select(selector.replace(rtrim, "$1"), context, results, seed);
621
+ }
622
+ function createCache() {
623
+ function cache(key, value) {
624
+ return keys.push(key + " ") > Expr.cacheLength && delete cache[keys.shift()], cache[key + " "] = value;
625
+ }
626
+ var keys = [];
627
+ return cache;
628
+ }
629
+ function markFunction(fn) {
630
+ return fn[expando] = !0, fn;
631
+ }
632
+ function assert(fn) {
633
+ var div = document.createElement("div");
634
+ try {
635
+ return !!fn(div);
636
+ } catch (e) {
637
+ return !1;
638
+ } finally {
639
+ div.parentNode && div.parentNode.removeChild(div), div = null;
640
+ }
641
+ }
642
+ function addHandle(attrs, handler) {
643
+ for (var arr = attrs.split("|"), i = attrs.length; i--;) Expr.attrHandle[arr[i]] = handler;
644
+ }
645
+ function siblingCheck(a, b) {
646
+ var cur = b && a,
647
+ diff = cur && 1 === a.nodeType && 1 === b.nodeType && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE);
648
+ if (diff) return diff;
649
+ if (cur) for (; cur = cur.nextSibling;) if (cur === b) return -1;
650
+ return a ? 1 : -1;
651
+ }
652
+ function createInputPseudo(type) {
653
+ return function (elem) {
654
+ var name = elem.nodeName.toLowerCase();
655
+ return "input" === name && elem.type === type;
656
+ };
657
+ }
658
+ function createButtonPseudo(type) {
659
+ return function (elem) {
660
+ var name = elem.nodeName.toLowerCase();
661
+ return ("input" === name || "button" === name) && elem.type === type;
662
+ };
663
+ }
664
+ function createPositionalPseudo(fn) {
665
+ return markFunction(function (argument) {
666
+ return argument = +argument, markFunction(function (seed, matches) {
667
+ for (var j, matchIndexes = fn([], seed.length, argument), i = matchIndexes.length; i--;) seed[j = matchIndexes[i]] && (seed[j] = !(matches[j] = seed[j]));
668
+ });
669
+ });
670
+ }
671
+ function testContext(context) {
672
+ return context && "undefined" != typeof context.getElementsByTagName && context;
673
+ }
674
+ function setFilters() {}
675
+ function toSelector(tokens) {
676
+ for (var i = 0, len = tokens.length, selector = ""; len > i; i++) selector += tokens[i].value;
677
+ return selector;
678
+ }
679
+ function addCombinator(matcher, combinator, base) {
680
+ var dir = combinator.dir,
681
+ checkNonElements = base && "parentNode" === dir,
682
+ doneName = done++;
683
+ return combinator.first ? function (elem, context, xml) {
684
+ for (; elem = elem[dir];) if (1 === elem.nodeType || checkNonElements) return matcher(elem, context, xml);
685
+ } : function (elem, context, xml) {
686
+ var oldCache,
687
+ outerCache,
688
+ newCache = [dirruns, doneName];
689
+ if (xml) {
690
+ for (; elem = elem[dir];) if ((1 === elem.nodeType || checkNonElements) && matcher(elem, context, xml)) return !0;
691
+ } else for (; elem = elem[dir];) if (1 === elem.nodeType || checkNonElements) {
692
+ if (outerCache = elem[expando] || (elem[expando] = {}), (oldCache = outerCache[dir]) && oldCache[0] === dirruns && oldCache[1] === doneName) return newCache[2] = oldCache[2];
693
+ if (outerCache[dir] = newCache, newCache[2] = matcher(elem, context, xml)) return !0;
694
+ }
695
+ };
696
+ }
697
+ function elementMatcher(matchers) {
698
+ return matchers.length > 1 ? function (elem, context, xml) {
699
+ for (var i = matchers.length; i--;) if (!matchers[i](elem, context, xml)) return !1;
700
+ return !0;
701
+ } : matchers[0];
702
+ }
703
+ function multipleContexts(selector, contexts, results) {
704
+ for (var i = 0, len = contexts.length; len > i; i++) Sizzle(selector, contexts[i], results);
705
+ return results;
706
+ }
707
+ function condense(unmatched, map, filter, context, xml) {
708
+ for (var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = null != map; len > i; i++) (elem = unmatched[i]) && (!filter || filter(elem, context, xml)) && (newUnmatched.push(elem), mapped && map.push(i));
709
+ return newUnmatched;
710
+ }
711
+ function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {
712
+ return postFilter && !postFilter[expando] && (postFilter = setMatcher(postFilter)), postFinder && !postFinder[expando] && (postFinder = setMatcher(postFinder, postSelector)), markFunction(function (seed, results, context, xml) {
713
+ var temp,
714
+ i,
715
+ elem,
716
+ preMap = [],
717
+ postMap = [],
718
+ preexisting = results.length,
719
+ elems = seed || multipleContexts(selector || "*", context.nodeType ? [context] : context, []),
720
+ matcherIn = !preFilter || !seed && selector ? elems : condense(elems, preMap, preFilter, context, xml),
721
+ matcherOut = matcher ? postFinder || (seed ? preFilter : preexisting || postFilter) ? [] : results : matcherIn;
722
+ if (matcher && matcher(matcherIn, matcherOut, context, xml), postFilter) for (temp = condense(matcherOut, postMap), postFilter(temp, [], context, xml), i = temp.length; i--;) (elem = temp[i]) && (matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem));
723
+ if (seed) {
724
+ if (postFinder || preFilter) {
725
+ if (postFinder) {
726
+ for (temp = [], i = matcherOut.length; i--;) (elem = matcherOut[i]) && temp.push(matcherIn[i] = elem);
727
+ postFinder(null, matcherOut = [], temp, xml);
728
+ }
729
+ for (i = matcherOut.length; i--;) (elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1 && (seed[temp] = !(results[temp] = elem));
730
+ }
731
+ } else matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut), postFinder ? postFinder(null, results, matcherOut, xml) : push.apply(results, matcherOut);
732
+ });
733
+ }
734
+ function matcherFromTokens(tokens) {
735
+ for (var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[" "], i = leadingRelative ? 1 : 0, matchContext = addCombinator(function (elem) {
736
+ return elem === checkContext;
737
+ }, implicitRelative, !0), matchAnyContext = addCombinator(function (elem) {
738
+ return indexOf(checkContext, elem) > -1;
739
+ }, implicitRelative, !0), matchers = [function (elem, context, xml) {
740
+ var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));
741
+ return checkContext = null, ret;
742
+ }]; len > i; i++) if (matcher = Expr.relative[tokens[i].type]) matchers = [addCombinator(elementMatcher(matchers), matcher)];else {
743
+ if (matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches), matcher[expando]) {
744
+ for (j = ++i; len > j && !Expr.relative[tokens[j].type]; j++);
745
+ return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(tokens.slice(0, i - 1).concat({
746
+ value: " " === tokens[i - 2].type ? "*" : ""
747
+ })).replace(rtrim, "$1"), matcher, j > i && matcherFromTokens(tokens.slice(i, j)), len > j && matcherFromTokens(tokens = tokens.slice(j)), len > j && toSelector(tokens));
748
+ }
749
+ matchers.push(matcher);
750
+ }
751
+ return elementMatcher(matchers);
752
+ }
753
+ function matcherFromGroupMatchers(elementMatchers, setMatchers) {
754
+ var bySet = setMatchers.length > 0,
755
+ byElement = elementMatchers.length > 0,
756
+ superMatcher = function (seed, context, xml, results, outermost) {
757
+ var elem,
758
+ j,
759
+ matcher,
760
+ matchedCount = 0,
761
+ i = "0",
762
+ unmatched = seed && [],
763
+ setMatched = [],
764
+ contextBackup = outermostContext,
765
+ elems = seed || byElement && Expr.find.TAG("*", outermost),
766
+ dirrunsUnique = dirruns += null == contextBackup ? 1 : Math.random() || .1,
767
+ len = elems.length;
768
+ for (outermost && (outermostContext = context !== document && context); i !== len && null != (elem = elems[i]); i++) {
769
+ if (byElement && elem) {
770
+ for (j = 0; matcher = elementMatchers[j++];) if (matcher(elem, context, xml)) {
771
+ results.push(elem);
772
+ break;
773
+ }
774
+ outermost && (dirruns = dirrunsUnique);
775
+ }
776
+ bySet && ((elem = !matcher && elem) && matchedCount--, seed && unmatched.push(elem));
777
+ }
778
+ if (matchedCount += i, bySet && i !== matchedCount) {
779
+ for (j = 0; matcher = setMatchers[j++];) matcher(unmatched, setMatched, context, xml);
780
+ if (seed) {
781
+ if (matchedCount > 0) for (; i--;) unmatched[i] || setMatched[i] || (setMatched[i] = pop.call(results));
782
+ setMatched = condense(setMatched);
783
+ }
784
+ push.apply(results, setMatched), outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1 && Sizzle.uniqueSort(results);
785
+ }
786
+ return outermost && (dirruns = dirrunsUnique, outermostContext = contextBackup), unmatched;
787
+ };
788
+ return bySet ? markFunction(superMatcher) : superMatcher;
789
+ }
790
+ var i,
791
+ support,
792
+ Expr,
793
+ getText,
794
+ isXML,
795
+ tokenize,
796
+ compile,
797
+ select,
798
+ outermostContext,
799
+ sortInput,
800
+ hasDuplicate,
801
+ setDocument,
802
+ document,
803
+ docElem,
804
+ documentIsHTML,
805
+ rbuggyQSA,
806
+ rbuggyMatches,
807
+ matches,
808
+ contains,
809
+ expando = "sizzle" + 1 * new Date(),
810
+ preferredDoc = window.document,
811
+ dirruns = 0,
812
+ done = 0,
813
+ classCache = createCache(),
814
+ tokenCache = createCache(),
815
+ compilerCache = createCache(),
816
+ sortOrder = function (a, b) {
817
+ return a === b && (hasDuplicate = !0), 0;
818
+ },
819
+ MAX_NEGATIVE = 1 << 31,
820
+ hasOwn = {}.hasOwnProperty,
821
+ arr = [],
822
+ pop = arr.pop,
823
+ push_native = arr.push,
824
+ push = arr.push,
825
+ slice = arr.slice,
826
+ indexOf = function (list, elem) {
827
+ for (var i = 0, len = list.length; len > i; i++) if (list[i] === elem) return i;
828
+ return -1;
829
+ },
830
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
831
+ whitespace = "[\\x20\\t\\r\\n\\f]",
832
+ characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
833
+ identifier = characterEncoding.replace("w", "w#"),
834
+ attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + "*([*^$|!~]?=)" + whitespace + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]",
835
+ pseudos = ":(" + characterEncoding + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|.*)\\)|)",
836
+ rwhitespace = new RegExp(whitespace + "+", "g"),
837
+ rtrim = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g"),
838
+ rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"),
839
+ rcombinators = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"),
840
+ rattributeQuotes = new RegExp("=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g"),
841
+ rpseudo = new RegExp(pseudos),
842
+ ridentifier = new RegExp("^" + identifier + "$"),
843
+ matchExpr = {
844
+ ID: new RegExp("^#(" + characterEncoding + ")"),
845
+ CLASS: new RegExp("^\\.(" + characterEncoding + ")"),
846
+ TAG: new RegExp("^(" + characterEncoding.replace("w", "w*") + ")"),
847
+ ATTR: new RegExp("^" + attributes),
848
+ PSEUDO: new RegExp("^" + pseudos),
849
+ CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"),
850
+ bool: new RegExp("^(?:" + booleans + ")$", "i"),
851
+ needsContext: new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i")
852
+ },
853
+ rinputs = /^(?:input|select|textarea|button)$/i,
854
+ rheader = /^h\d$/i,
855
+ rnative = /^[^{]+\{\s*\[native \w/,
856
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
857
+ rsibling = /[+~]/,
858
+ rescape = /'|\\/g,
859
+ runescape = new RegExp("\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig"),
860
+ funescape = function (_, escaped, escapedWhitespace) {
861
+ var high = "0x" + escaped - 65536;
862
+ return high !== high || escapedWhitespace ? escaped : 0 > high ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, 1023 & high | 56320);
863
+ },
864
+ unloadHandler = function () {
865
+ setDocument();
866
+ };
867
+ try {
868
+ push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes), arr[preferredDoc.childNodes.length].nodeType;
869
+ } catch (e) {
870
+ push = {
871
+ apply: arr.length ? function (target, els) {
872
+ push_native.apply(target, slice.call(els));
873
+ } : function (target, els) {
874
+ for (var j = target.length, i = 0; target[j++] = els[i++];);
875
+ target.length = j - 1;
876
+ }
877
+ };
878
+ }
879
+ support = Sizzle.support = {}, isXML = Sizzle.isXML = function (elem) {
880
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
881
+ return documentElement ? "HTML" !== documentElement.nodeName : !1;
882
+ }, setDocument = Sizzle.setDocument = function (node) {
883
+ var hasCompare,
884
+ parent,
885
+ doc = node ? node.ownerDocument || node : preferredDoc;
886
+ return doc !== document && 9 === doc.nodeType && doc.documentElement ? (document = doc, docElem = doc.documentElement, parent = doc.defaultView, parent && parent !== parent.top && (parent.addEventListener ? parent.addEventListener("unload", unloadHandler, !1) : parent.attachEvent && parent.attachEvent("onunload", unloadHandler)), documentIsHTML = !isXML(doc), support.attributes = assert(function (div) {
887
+ return div.className = "i", !div.getAttribute("className");
888
+ }), support.getElementsByTagName = assert(function (div) {
889
+ return div.appendChild(doc.createComment("")), !div.getElementsByTagName("*").length;
890
+ }), support.getElementsByClassName = rnative.test(doc.getElementsByClassName), support.getById = assert(function (div) {
891
+ return docElem.appendChild(div).id = expando, !doc.getElementsByName || !doc.getElementsByName(expando).length;
892
+ }), support.getById ? (Expr.find.ID = function (id, context) {
893
+ if ("undefined" != typeof context.getElementById && documentIsHTML) {
894
+ var m = context.getElementById(id);
895
+ return m && m.parentNode ? [m] : [];
896
+ }
897
+ }, Expr.filter.ID = function (id) {
898
+ var attrId = id.replace(runescape, funescape);
899
+ return function (elem) {
900
+ return elem.getAttribute("id") === attrId;
901
+ };
902
+ }) : (delete Expr.find.ID, Expr.filter.ID = function (id) {
903
+ var attrId = id.replace(runescape, funescape);
904
+ return function (elem) {
905
+ var node = "undefined" != typeof elem.getAttributeNode && elem.getAttributeNode("id");
906
+ return node && node.value === attrId;
907
+ };
908
+ }), Expr.find.TAG = support.getElementsByTagName ? function (tag, context) {
909
+ return "undefined" != typeof context.getElementsByTagName ? context.getElementsByTagName(tag) : support.qsa ? context.querySelectorAll(tag) : void 0;
910
+ } : function (tag, context) {
911
+ var elem,
912
+ tmp = [],
913
+ i = 0,
914
+ results = context.getElementsByTagName(tag);
915
+ if ("*" === tag) {
916
+ for (; elem = results[i++];) 1 === elem.nodeType && tmp.push(elem);
917
+ return tmp;
918
+ }
919
+ return results;
920
+ }, Expr.find.CLASS = support.getElementsByClassName && function (className, context) {
921
+ return documentIsHTML ? context.getElementsByClassName(className) : void 0;
922
+ }, rbuggyMatches = [], rbuggyQSA = [], (support.qsa = rnative.test(doc.querySelectorAll)) && (assert(function (div) {
923
+ docElem.appendChild(div).innerHTML = "<a id='" + expando + "'></a><select id='" + expando + "-\f]' msallowcapture=''><option selected=''></option></select>", div.querySelectorAll("[msallowcapture^='']").length && rbuggyQSA.push("[*^$]=" + whitespace + "*(?:''|\"\")"), div.querySelectorAll("[selected]").length || rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")"), div.querySelectorAll("[id~=" + expando + "-]").length || rbuggyQSA.push("~="), div.querySelectorAll(":checked").length || rbuggyQSA.push(":checked"), div.querySelectorAll("a#" + expando + "+*").length || rbuggyQSA.push(".#.+[+~]");
924
+ }), assert(function (div) {
925
+ var input = doc.createElement("input");
926
+ input.setAttribute("type", "hidden"), div.appendChild(input).setAttribute("name", "D"), div.querySelectorAll("[name=d]").length && rbuggyQSA.push("name" + whitespace + "*[*^$|!~]?="), div.querySelectorAll(":enabled").length || rbuggyQSA.push(":enabled", ":disabled"), div.querySelectorAll("*,:x"), rbuggyQSA.push(",.*:");
927
+ })), (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) && assert(function (div) {
928
+ support.disconnectedMatch = matches.call(div, "div"), matches.call(div, "[s!='']:x"), rbuggyMatches.push("!=", pseudos);
929
+ }), rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|")), rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join("|")), hasCompare = rnative.test(docElem.compareDocumentPosition), contains = hasCompare || rnative.test(docElem.contains) ? function (a, b) {
930
+ var adown = 9 === a.nodeType ? a.documentElement : a,
931
+ bup = b && b.parentNode;
932
+ return a === bup || !(!bup || 1 !== bup.nodeType || !(adown.contains ? adown.contains(bup) : a.compareDocumentPosition && 16 & a.compareDocumentPosition(bup)));
933
+ } : function (a, b) {
934
+ if (b) for (; b = b.parentNode;) if (b === a) return !0;
935
+ return !1;
936
+ }, sortOrder = hasCompare ? function (a, b) {
937
+ if (a === b) return hasDuplicate = !0, 0;
938
+ var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
939
+ return compare ? compare : (compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1, 1 & compare || !support.sortDetached && b.compareDocumentPosition(a) === compare ? a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ? -1 : b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0 : 4 & compare ? -1 : 1);
940
+ } : function (a, b) {
941
+ if (a === b) return hasDuplicate = !0, 0;
942
+ var cur,
943
+ i = 0,
944
+ aup = a.parentNode,
945
+ bup = b.parentNode,
946
+ ap = [a],
947
+ bp = [b];
948
+ if (!aup || !bup) return a === doc ? -1 : b === doc ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;
949
+ if (aup === bup) return siblingCheck(a, b);
950
+ for (cur = a; cur = cur.parentNode;) ap.unshift(cur);
951
+ for (cur = b; cur = cur.parentNode;) bp.unshift(cur);
952
+ for (; ap[i] === bp[i];) i++;
953
+ return i ? siblingCheck(ap[i], bp[i]) : ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0;
954
+ }, doc) : document;
955
+ }, Sizzle.matches = function (expr, elements) {
956
+ return Sizzle(expr, null, null, elements);
957
+ }, Sizzle.matchesSelector = function (elem, expr) {
958
+ if ((elem.ownerDocument || elem) !== document && setDocument(elem), expr = expr.replace(rattributeQuotes, "='$1']"), support.matchesSelector && documentIsHTML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) try {
959
+ var ret = matches.call(elem, expr);
960
+ if (ret || support.disconnectedMatch || elem.document && 11 !== elem.document.nodeType) return ret;
961
+ } catch (e) {}
962
+ return Sizzle(expr, document, null, [elem]).length > 0;
963
+ }, Sizzle.contains = function (context, elem) {
964
+ return (context.ownerDocument || context) !== document && setDocument(context), contains(context, elem);
965
+ }, Sizzle.attr = function (elem, name) {
966
+ (elem.ownerDocument || elem) !== document && setDocument(elem);
967
+ var fn = Expr.attrHandle[name.toLowerCase()],
968
+ val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : void 0;
969
+ return void 0 !== val ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
970
+ }, Sizzle.error = function (msg) {
971
+ throw new Error("Syntax error, unrecognized expression: " + msg);
972
+ }, Sizzle.uniqueSort = function (results) {
973
+ var elem,
974
+ duplicates = [],
975
+ j = 0,
976
+ i = 0;
977
+ if (hasDuplicate = !support.detectDuplicates, sortInput = !support.sortStable && results.slice(0), results.sort(sortOrder), hasDuplicate) {
978
+ for (; elem = results[i++];) elem === results[i] && (j = duplicates.push(i));
979
+ for (; j--;) results.splice(duplicates[j], 1);
980
+ }
981
+ return sortInput = null, results;
982
+ }, getText = Sizzle.getText = function (elem) {
983
+ var node,
984
+ ret = "",
985
+ i = 0,
986
+ nodeType = elem.nodeType;
987
+ if (nodeType) {
988
+ if (1 === nodeType || 9 === nodeType || 11 === nodeType) {
989
+ if ("string" == typeof elem.textContent) return elem.textContent;
990
+ for (elem = elem.firstChild; elem; elem = elem.nextSibling) ret += getText(elem);
991
+ } else if (3 === nodeType || 4 === nodeType) return elem.nodeValue;
992
+ } else for (; node = elem[i++];) ret += getText(node);
993
+ return ret;
994
+ }, Expr = Sizzle.selectors = {
995
+ cacheLength: 50,
996
+ createPseudo: markFunction,
997
+ match: matchExpr,
998
+ attrHandle: {},
999
+ find: {},
1000
+ relative: {
1001
+ ">": {
1002
+ dir: "parentNode",
1003
+ first: !0
1004
+ },
1005
+ " ": {
1006
+ dir: "parentNode"
1007
+ },
1008
+ "+": {
1009
+ dir: "previousSibling",
1010
+ first: !0
1011
+ },
1012
+ "~": {
1013
+ dir: "previousSibling"
1014
+ }
1015
+ },
1016
+ preFilter: {
1017
+ ATTR: function (match) {
1018
+ return match[1] = match[1].replace(runescape, funescape), match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape), "~=" === match[2] && (match[3] = " " + match[3] + " "), match.slice(0, 4);
1019
+ },
1020
+ CHILD: function (match) {
1021
+ return match[1] = match[1].toLowerCase(), "nth" === match[1].slice(0, 3) ? (match[3] || Sizzle.error(match[0]), match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * ("even" === match[3] || "odd" === match[3])), match[5] = +(match[7] + match[8] || "odd" === match[3])) : match[3] && Sizzle.error(match[0]), match;
1022
+ },
1023
+ PSEUDO: function (match) {
1024
+ var excess,
1025
+ unquoted = !match[6] && match[2];
1026
+ return matchExpr.CHILD.test(match[0]) ? null : (match[3] ? match[2] = match[4] || match[5] || "" : unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, !0)) && (excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length) && (match[0] = match[0].slice(0, excess), match[2] = unquoted.slice(0, excess)), match.slice(0, 3));
1027
+ }
1028
+ },
1029
+ filter: {
1030
+ TAG: function (nodeNameSelector) {
1031
+ var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();
1032
+ return "*" === nodeNameSelector ? function () {
1033
+ return !0;
1034
+ } : function (elem) {
1035
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
1036
+ };
1037
+ },
1038
+ CLASS: function (className) {
1039
+ var pattern = classCache[className + " "];
1040
+ return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache(className, function (elem) {
1041
+ return pattern.test("string" == typeof elem.className && elem.className || "undefined" != typeof elem.getAttribute && elem.getAttribute("class") || "");
1042
+ });
1043
+ },
1044
+ ATTR: function (name, operator, check) {
1045
+ return function (elem) {
1046
+ var result = Sizzle.attr(elem, name);
1047
+ return null == result ? "!=" === operator : operator ? (result += "", "=" === operator ? result === check : "!=" === operator ? result !== check : "^=" === operator ? check && 0 === result.indexOf(check) : "*=" === operator ? check && result.indexOf(check) > -1 : "$=" === operator ? check && result.slice(-check.length) === check : "~=" === operator ? (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1 : "|=" === operator ? result === check || result.slice(0, check.length + 1) === check + "-" : !1) : !0;
1048
+ };
1049
+ },
1050
+ CHILD: function (type, what, argument, first, last) {
1051
+ var simple = "nth" !== type.slice(0, 3),
1052
+ forward = "last" !== type.slice(-4),
1053
+ ofType = "of-type" === what;
1054
+ return 1 === first && 0 === last ? function (elem) {
1055
+ return !!elem.parentNode;
1056
+ } : function (elem, context, xml) {
1057
+ var cache,
1058
+ outerCache,
1059
+ node,
1060
+ diff,
1061
+ nodeIndex,
1062
+ start,
1063
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
1064
+ parent = elem.parentNode,
1065
+ name = ofType && elem.nodeName.toLowerCase(),
1066
+ useCache = !xml && !ofType;
1067
+ if (parent) {
1068
+ if (simple) {
1069
+ for (; dir;) {
1070
+ for (node = elem; node = node[dir];) if (ofType ? node.nodeName.toLowerCase() === name : 1 === node.nodeType) return !1;
1071
+ start = dir = "only" === type && !start && "nextSibling";
1072
+ }
1073
+ return !0;
1074
+ }
1075
+ if (start = [forward ? parent.firstChild : parent.lastChild], forward && useCache) {
1076
+ for (outerCache = parent[expando] || (parent[expando] = {}), cache = outerCache[type] || [], nodeIndex = cache[0] === dirruns && cache[1], diff = cache[0] === dirruns && cache[2], node = nodeIndex && parent.childNodes[nodeIndex]; node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop();) if (1 === node.nodeType && ++diff && node === elem) {
1077
+ outerCache[type] = [dirruns, nodeIndex, diff];
1078
+ break;
1079
+ }
1080
+ } else if (useCache && (cache = (elem[expando] || (elem[expando] = {}))[type]) && cache[0] === dirruns) diff = cache[1];else for (; (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) && ((ofType ? node.nodeName.toLowerCase() !== name : 1 !== node.nodeType) || !++diff || (useCache && ((node[expando] || (node[expando] = {}))[type] = [dirruns, diff]), node !== elem)););
1081
+ return diff -= last, diff === first || diff % first === 0 && diff / first >= 0;
1082
+ }
1083
+ };
1084
+ },
1085
+ PSEUDO: function (pseudo, argument) {
1086
+ var args,
1087
+ fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error("unsupported pseudo: " + pseudo);
1088
+ return fn[expando] ? fn(argument) : fn.length > 1 ? (args = [pseudo, pseudo, "", argument], Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {
1089
+ for (var idx, matched = fn(seed, argument), i = matched.length; i--;) idx = indexOf(seed, matched[i]), seed[idx] = !(matches[idx] = matched[i]);
1090
+ }) : function (elem) {
1091
+ return fn(elem, 0, args);
1092
+ }) : fn;
1093
+ }
1094
+ },
1095
+ pseudos: {
1096
+ not: markFunction(function (selector) {
1097
+ var input = [],
1098
+ results = [],
1099
+ matcher = compile(selector.replace(rtrim, "$1"));
1100
+ return matcher[expando] ? markFunction(function (seed, matches, context, xml) {
1101
+ for (var elem, unmatched = matcher(seed, null, xml, []), i = seed.length; i--;) (elem = unmatched[i]) && (seed[i] = !(matches[i] = elem));
1102
+ }) : function (elem, context, xml) {
1103
+ return input[0] = elem, matcher(input, null, xml, results), input[0] = null, !results.pop();
1104
+ };
1105
+ }),
1106
+ has: markFunction(function (selector) {
1107
+ return function (elem) {
1108
+ return Sizzle(selector, elem).length > 0;
1109
+ };
1110
+ }),
1111
+ contains: markFunction(function (text) {
1112
+ return text = text.replace(runescape, funescape), function (elem) {
1113
+ return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1;
1114
+ };
1115
+ }),
1116
+ lang: markFunction(function (lang) {
1117
+ return ridentifier.test(lang || "") || Sizzle.error("unsupported lang: " + lang), lang = lang.replace(runescape, funescape).toLowerCase(), function (elem) {
1118
+ var elemLang;
1119
+ do if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) return elemLang = elemLang.toLowerCase(), elemLang === lang || 0 === elemLang.indexOf(lang + "-"); while ((elem = elem.parentNode) && 1 === elem.nodeType);
1120
+ return !1;
1121
+ };
1122
+ }),
1123
+ target: function (elem) {
1124
+ var hash = window.location && window.location.hash;
1125
+ return hash && hash.slice(1) === elem.id;
1126
+ },
1127
+ root: function (elem) {
1128
+ return elem === docElem;
1129
+ },
1130
+ focus: function (elem) {
1131
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
1132
+ },
1133
+ enabled: function (elem) {
1134
+ return elem.disabled === !1;
1135
+ },
1136
+ disabled: function (elem) {
1137
+ return elem.disabled === !0;
1138
+ },
1139
+ checked: function (elem) {
1140
+ var nodeName = elem.nodeName.toLowerCase();
1141
+ return "input" === nodeName && !!elem.checked || "option" === nodeName && !!elem.selected;
1142
+ },
1143
+ selected: function (elem) {
1144
+ return elem.parentNode && elem.parentNode.selectedIndex, elem.selected === !0;
1145
+ },
1146
+ empty: function (elem) {
1147
+ for (elem = elem.firstChild; elem; elem = elem.nextSibling) if (elem.nodeType < 6) return !1;
1148
+ return !0;
1149
+ },
1150
+ parent: function (elem) {
1151
+ return !Expr.pseudos.empty(elem);
1152
+ },
1153
+ header: function (elem) {
1154
+ return rheader.test(elem.nodeName);
1155
+ },
1156
+ input: function (elem) {
1157
+ return rinputs.test(elem.nodeName);
1158
+ },
1159
+ button: function (elem) {
1160
+ var name = elem.nodeName.toLowerCase();
1161
+ return "input" === name && "button" === elem.type || "button" === name;
1162
+ },
1163
+ text: function (elem) {
1164
+ var attr;
1165
+ return "input" === elem.nodeName.toLowerCase() && "text" === elem.type && (null == (attr = elem.getAttribute("type")) || "text" === attr.toLowerCase());
1166
+ },
1167
+ first: createPositionalPseudo(function () {
1168
+ return [0];
1169
+ }),
1170
+ last: createPositionalPseudo(function (matchIndexes, length) {
1171
+ return [length - 1];
1172
+ }),
1173
+ eq: createPositionalPseudo(function (matchIndexes, length, argument) {
1174
+ return [0 > argument ? argument + length : argument];
1175
+ }),
1176
+ even: createPositionalPseudo(function (matchIndexes, length) {
1177
+ for (var i = 0; length > i; i += 2) matchIndexes.push(i);
1178
+ return matchIndexes;
1179
+ }),
1180
+ odd: createPositionalPseudo(function (matchIndexes, length) {
1181
+ for (var i = 1; length > i; i += 2) matchIndexes.push(i);
1182
+ return matchIndexes;
1183
+ }),
1184
+ lt: createPositionalPseudo(function (matchIndexes, length, argument) {
1185
+ for (var i = 0 > argument ? argument + length : argument; --i >= 0;) matchIndexes.push(i);
1186
+ return matchIndexes;
1187
+ }),
1188
+ gt: createPositionalPseudo(function (matchIndexes, length, argument) {
1189
+ for (var i = 0 > argument ? argument + length : argument; ++i < length;) matchIndexes.push(i);
1190
+ return matchIndexes;
1191
+ })
1192
+ }
1193
+ }, Expr.pseudos.nth = Expr.pseudos.eq;
1194
+ for (i in {
1195
+ radio: !0,
1196
+ checkbox: !0,
1197
+ file: !0,
1198
+ password: !0,
1199
+ image: !0
1200
+ }) Expr.pseudos[i] = createInputPseudo(i);
1201
+ for (i in {
1202
+ submit: !0,
1203
+ reset: !0
1204
+ }) Expr.pseudos[i] = createButtonPseudo(i);
1205
+ return setFilters.prototype = Expr.filters = Expr.pseudos, Expr.setFilters = new setFilters(), tokenize = Sizzle.tokenize = function (selector, parseOnly) {
1206
+ var matched,
1207
+ match,
1208
+ tokens,
1209
+ type,
1210
+ soFar,
1211
+ groups,
1212
+ preFilters,
1213
+ cached = tokenCache[selector + " "];
1214
+ if (cached) return parseOnly ? 0 : cached.slice(0);
1215
+ for (soFar = selector, groups = [], preFilters = Expr.preFilter; soFar;) {
1216
+ (!matched || (match = rcomma.exec(soFar))) && (match && (soFar = soFar.slice(match[0].length) || soFar), groups.push(tokens = [])), matched = !1, (match = rcombinators.exec(soFar)) && (matched = match.shift(), tokens.push({
1217
+ value: matched,
1218
+ type: match[0].replace(rtrim, " ")
1219
+ }), soFar = soFar.slice(matched.length));
1220
+ for (type in Expr.filter) !(match = matchExpr[type].exec(soFar)) || preFilters[type] && !(match = preFilters[type](match)) || (matched = match.shift(), tokens.push({
1221
+ value: matched,
1222
+ type: type,
1223
+ matches: match
1224
+ }), soFar = soFar.slice(matched.length));
1225
+ if (!matched) break;
1226
+ }
1227
+ return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : tokenCache(selector, groups).slice(0);
1228
+ }, compile = Sizzle.compile = function (selector, match) {
1229
+ var i,
1230
+ setMatchers = [],
1231
+ elementMatchers = [],
1232
+ cached = compilerCache[selector + " "];
1233
+ if (!cached) {
1234
+ for (match || (match = tokenize(selector)), i = match.length; i--;) cached = matcherFromTokens(match[i]), cached[expando] ? setMatchers.push(cached) : elementMatchers.push(cached);
1235
+ cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)), cached.selector = selector;
1236
+ }
1237
+ return cached;
1238
+ }, select = Sizzle.select = function (selector, context, results, seed) {
1239
+ var i,
1240
+ tokens,
1241
+ token,
1242
+ type,
1243
+ find,
1244
+ compiled = "function" == typeof selector && selector,
1245
+ match = !seed && tokenize(selector = compiled.selector || selector);
1246
+ if (results = results || [], 1 === match.length) {
1247
+ if (tokens = match[0] = match[0].slice(0), tokens.length > 2 && "ID" === (token = tokens[0]).type && support.getById && 9 === context.nodeType && documentIsHTML && Expr.relative[tokens[1].type]) {
1248
+ if (context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0], !context) return results;
1249
+ compiled && (context = context.parentNode), selector = selector.slice(tokens.shift().value.length);
1250
+ }
1251
+ for (i = matchExpr.needsContext.test(selector) ? 0 : tokens.length; i-- && (token = tokens[i], !Expr.relative[type = token.type]);) if ((find = Expr.find[type]) && (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context))) {
1252
+ if (tokens.splice(i, 1), selector = seed.length && toSelector(tokens), !selector) return push.apply(results, seed), results;
1253
+ break;
1254
+ }
1255
+ }
1256
+ return (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, rsibling.test(selector) && testContext(context.parentNode) || context), results;
1257
+ }, support.sortStable = expando.split("").sort(sortOrder).join("") === expando, support.detectDuplicates = !!hasDuplicate, setDocument(), support.sortDetached = assert(function (div1) {
1258
+ return 1 & div1.compareDocumentPosition(document.createElement("div"));
1259
+ }), assert(function (div) {
1260
+ return div.innerHTML = "<a href='#'></a>", "#" === div.firstChild.getAttribute("href");
1261
+ }) || addHandle("type|href|height|width", function (elem, name, isXML) {
1262
+ return isXML ? void 0 : elem.getAttribute(name, "type" === name.toLowerCase() ? 1 : 2);
1263
+ }), support.attributes && assert(function (div) {
1264
+ return div.innerHTML = "<input/>", div.firstChild.setAttribute("value", ""), "" === div.firstChild.getAttribute("value");
1265
+ }) || addHandle("value", function (elem, name, isXML) {
1266
+ return isXML || "input" !== elem.nodeName.toLowerCase() ? void 0 : elem.defaultValue;
1267
+ }), assert(function (div) {
1268
+ return null == div.getAttribute("disabled");
1269
+ }) || addHandle(booleans, function (elem, name, isXML) {
1270
+ var val;
1271
+ return isXML ? void 0 : elem[name] === !0 ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
1272
+ }), Sizzle;
1273
+ }(window);
1274
+ jQuery.find = Sizzle, jQuery.expr = Sizzle.selectors, jQuery.expr[":"] = jQuery.expr.pseudos, jQuery.unique = Sizzle.uniqueSort, jQuery.text = Sizzle.getText, jQuery.isXMLDoc = Sizzle.isXML, jQuery.contains = Sizzle.contains;
1275
+ var rneedsContext = jQuery.expr.match.needsContext,
1276
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
1277
+ risSimple = /^.[^:#\[\.,]*$/;
1278
+ jQuery.filter = function (expr, elems, not) {
1279
+ var elem = elems[0];
1280
+ return not && (expr = ":not(" + expr + ")"), 1 === elems.length && 1 === elem.nodeType ? jQuery.find.matchesSelector(elem, expr) ? [elem] : [] : jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {
1281
+ return 1 === elem.nodeType;
1282
+ }));
1283
+ }, jQuery.fn.extend({
1284
+ find: function (selector) {
1285
+ var i,
1286
+ ret = [],
1287
+ self = this,
1288
+ len = self.length;
1289
+ if ("string" != typeof selector) return this.pushStack(jQuery(selector).filter(function () {
1290
+ for (i = 0; len > i; i++) if (jQuery.contains(self[i], this)) return !0;
1291
+ }));
1292
+ for (i = 0; len > i; i++) jQuery.find(selector, self[i], ret);
1293
+ return ret = this.pushStack(len > 1 ? jQuery.unique(ret) : ret), ret.selector = this.selector ? this.selector + " " + selector : selector, ret;
1294
+ },
1295
+ filter: function (selector) {
1296
+ return this.pushStack(winnow(this, selector || [], !1));
1297
+ },
1298
+ not: function (selector) {
1299
+ return this.pushStack(winnow(this, selector || [], !0));
1300
+ },
1301
+ is: function (selector) {
1302
+ return !!winnow(this, "string" == typeof selector && rneedsContext.test(selector) ? jQuery(selector) : selector || [], !1).length;
1303
+ }
1304
+ });
1305
+ var rootjQuery,
1306
+ document = window.document,
1307
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
1308
+ init = jQuery.fn.init = function (selector, context) {
1309
+ var match, elem;
1310
+ if (!selector) return this;
1311
+ if ("string" == typeof selector) {
1312
+ if (match = "<" === selector.charAt(0) && ">" === selector.charAt(selector.length - 1) && selector.length >= 3 ? [null, selector, null] : rquickExpr.exec(selector), !match || !match[1] && context) return !context || context.jquery ? (context || rootjQuery).find(selector) : this.constructor(context).find(selector);
1313
+ if (match[1]) {
1314
+ if (context = context instanceof jQuery ? context[0] : context, jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, !0)), rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) for (match in context) jQuery.isFunction(this[match]) ? this[match](context[match]) : this.attr(match, context[match]);
1315
+ return this;
1316
+ }
1317
+ if (elem = document.getElementById(match[2]), elem && elem.parentNode) {
1318
+ if (elem.id !== match[2]) return rootjQuery.find(selector);
1319
+ this.length = 1, this[0] = elem;
1320
+ }
1321
+ return this.context = document, this.selector = selector, this;
1322
+ }
1323
+ return selector.nodeType ? (this.context = this[0] = selector, this.length = 1, this) : jQuery.isFunction(selector) ? "undefined" != typeof rootjQuery.ready ? rootjQuery.ready(selector) : selector(jQuery) : (void 0 !== selector.selector && (this.selector = selector.selector, this.context = selector.context), jQuery.makeArray(selector, this));
1324
+ };
1325
+ init.prototype = jQuery.fn, rootjQuery = jQuery(document);
1326
+ var rparentsprev = /^(?:parents|prev(?:Until|All))/,
1327
+ guaranteedUnique = {
1328
+ children: !0,
1329
+ contents: !0,
1330
+ next: !0,
1331
+ prev: !0
1332
+ };
1333
+ jQuery.extend({
1334
+ dir: function (elem, dir, until) {
1335
+ for (var matched = [], cur = elem[dir]; cur && 9 !== cur.nodeType && (void 0 === until || 1 !== cur.nodeType || !jQuery(cur).is(until));) 1 === cur.nodeType && matched.push(cur), cur = cur[dir];
1336
+ return matched;
1337
+ },
1338
+ sibling: function (n, elem) {
1339
+ for (var r = []; n; n = n.nextSibling) 1 === n.nodeType && n !== elem && r.push(n);
1340
+ return r;
1341
+ }
1342
+ }), jQuery.fn.extend({
1343
+ has: function (target) {
1344
+ var i,
1345
+ targets = jQuery(target, this),
1346
+ len = targets.length;
1347
+ return this.filter(function () {
1348
+ for (i = 0; len > i; i++) if (jQuery.contains(this, targets[i])) return !0;
1349
+ });
1350
+ },
1351
+ closest: function (selectors, context) {
1352
+ for (var cur, i = 0, l = this.length, matched = [], pos = rneedsContext.test(selectors) || "string" != typeof selectors ? jQuery(selectors, context || this.context) : 0; l > i; i++) for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) if (cur.nodeType < 11 && (pos ? pos.index(cur) > -1 : 1 === cur.nodeType && jQuery.find.matchesSelector(cur, selectors))) {
1353
+ matched.push(cur);
1354
+ break;
1355
+ }
1356
+ return this.pushStack(matched.length > 1 ? jQuery.unique(matched) : matched);
1357
+ },
1358
+ index: function (elem) {
1359
+ return elem ? "string" == typeof elem ? jQuery.inArray(this[0], jQuery(elem)) : jQuery.inArray(elem.jquery ? elem[0] : elem, this) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1;
1360
+ },
1361
+ add: function (selector, context) {
1362
+ return this.pushStack(jQuery.unique(jQuery.merge(this.get(), jQuery(selector, context))));
1363
+ },
1364
+ addBack: function (selector) {
1365
+ return this.add(null == selector ? this.prevObject : this.prevObject.filter(selector));
1366
+ }
1367
+ }), jQuery.each({
1368
+ parent: function (elem) {
1369
+ var parent = elem.parentNode;
1370
+ return parent && 11 !== parent.nodeType ? parent : null;
1371
+ },
1372
+ parents: function (elem) {
1373
+ return jQuery.dir(elem, "parentNode");
1374
+ },
1375
+ parentsUntil: function (elem, i, until) {
1376
+ return jQuery.dir(elem, "parentNode", until);
1377
+ },
1378
+ next: function (elem) {
1379
+ return sibling(elem, "nextSibling");
1380
+ },
1381
+ prev: function (elem) {
1382
+ return sibling(elem, "previousSibling");
1383
+ },
1384
+ nextAll: function (elem) {
1385
+ return jQuery.dir(elem, "nextSibling");
1386
+ },
1387
+ prevAll: function (elem) {
1388
+ return jQuery.dir(elem, "previousSibling");
1389
+ },
1390
+ nextUntil: function (elem, i, until) {
1391
+ return jQuery.dir(elem, "nextSibling", until);
1392
+ },
1393
+ prevUntil: function (elem, i, until) {
1394
+ return jQuery.dir(elem, "previousSibling", until);
1395
+ },
1396
+ siblings: function (elem) {
1397
+ return jQuery.sibling((elem.parentNode || {}).firstChild, elem);
1398
+ },
1399
+ children: function (elem) {
1400
+ return jQuery.sibling(elem.firstChild);
1401
+ },
1402
+ contents: function (elem) {
1403
+ return jQuery.nodeName(elem, "iframe") ? elem.contentDocument || elem.contentWindow.document : jQuery.merge([], elem.childNodes);
1404
+ }
1405
+ }, function (name, fn) {
1406
+ jQuery.fn[name] = function (until, selector) {
1407
+ var ret = jQuery.map(this, fn, until);
1408
+ return "Until" !== name.slice(-5) && (selector = until), selector && "string" == typeof selector && (ret = jQuery.filter(selector, ret)), this.length > 1 && (guaranteedUnique[name] || (ret = jQuery.unique(ret)), rparentsprev.test(name) && (ret = ret.reverse())), this.pushStack(ret);
1409
+ };
1410
+ });
1411
+ var rnotwhite = /\S+/g,
1412
+ optionsCache = {};
1413
+ jQuery.Callbacks = function (options) {
1414
+ options = "string" == typeof options ? optionsCache[options] || createOptions(options) : jQuery.extend({}, options);
1415
+ var firing,
1416
+ memory,
1417
+ fired,
1418
+ firingLength,
1419
+ firingIndex,
1420
+ firingStart,
1421
+ list = [],
1422
+ stack = !options.once && [],
1423
+ fire = function (data) {
1424
+ for (memory = options.memory && data, fired = !0, firingIndex = firingStart || 0, firingStart = 0, firingLength = list.length, firing = !0; list && firingLength > firingIndex; firingIndex++) if (list[firingIndex].apply(data[0], data[1]) === !1 && options.stopOnFalse) {
1425
+ memory = !1;
1426
+ break;
1427
+ }
1428
+ firing = !1, list && (stack ? stack.length && fire(stack.shift()) : memory ? list = [] : self.disable());
1429
+ },
1430
+ self = {
1431
+ add: function () {
1432
+ if (list) {
1433
+ var start = list.length;
1434
+ !function add(args) {
1435
+ jQuery.each(args, function (_, arg) {
1436
+ var type = jQuery.type(arg);
1437
+ "function" === type ? options.unique && self.has(arg) || list.push(arg) : arg && arg.length && "string" !== type && add(arg);
1438
+ });
1439
+ }(arguments), firing ? firingLength = list.length : memory && (firingStart = start, fire(memory));
1440
+ }
1441
+ return this;
1442
+ },
1443
+ remove: function () {
1444
+ return list && jQuery.each(arguments, function (_, arg) {
1445
+ for (var index; (index = jQuery.inArray(arg, list, index)) > -1;) list.splice(index, 1), firing && (firingLength >= index && firingLength--, firingIndex >= index && firingIndex--);
1446
+ }), this;
1447
+ },
1448
+ has: function (fn) {
1449
+ return fn ? jQuery.inArray(fn, list) > -1 : !(!list || !list.length);
1450
+ },
1451
+ empty: function () {
1452
+ return list = [], firingLength = 0, this;
1453
+ },
1454
+ disable: function () {
1455
+ return list = stack = memory = void 0, this;
1456
+ },
1457
+ disabled: function () {
1458
+ return !list;
1459
+ },
1460
+ lock: function () {
1461
+ return stack = void 0, memory || self.disable(), this;
1462
+ },
1463
+ locked: function () {
1464
+ return !stack;
1465
+ },
1466
+ fireWith: function (context, args) {
1467
+ return !list || fired && !stack || (args = args || [], args = [context, args.slice ? args.slice() : args], firing ? stack.push(args) : fire(args)), this;
1468
+ },
1469
+ fire: function () {
1470
+ return self.fireWith(this, arguments), this;
1471
+ },
1472
+ fired: function () {
1473
+ return !!fired;
1474
+ }
1475
+ };
1476
+ return self;
1477
+ }, jQuery.extend({
1478
+ Deferred: function (func) {
1479
+ var tuples = [["resolve", "done", jQuery.Callbacks("once memory"), "resolved"], ["reject", "fail", jQuery.Callbacks("once memory"), "rejected"], ["notify", "progress", jQuery.Callbacks("memory")]],
1480
+ state = "pending",
1481
+ promise = {
1482
+ state: function () {
1483
+ return state;
1484
+ },
1485
+ always: function () {
1486
+ return deferred.done(arguments).fail(arguments), this;
1487
+ },
1488
+ then: function () {
1489
+ var fns = arguments;
1490
+ return jQuery.Deferred(function (newDefer) {
1491
+ jQuery.each(tuples, function (i, tuple) {
1492
+ var fn = jQuery.isFunction(fns[i]) && fns[i];
1493
+ deferred[tuple[1]](function () {
1494
+ var returned = fn && fn.apply(this, arguments);
1495
+ returned && jQuery.isFunction(returned.promise) ? returned.promise().done(newDefer.resolve).fail(newDefer.reject).progress(newDefer.notify) : newDefer[tuple[0] + "With"](this === promise ? newDefer.promise() : this, fn ? [returned] : arguments);
1496
+ });
1497
+ }), fns = null;
1498
+ }).promise();
1499
+ },
1500
+ promise: function (obj) {
1501
+ return null != obj ? jQuery.extend(obj, promise) : promise;
1502
+ }
1503
+ },
1504
+ deferred = {};
1505
+ return promise.pipe = promise.then, jQuery.each(tuples, function (i, tuple) {
1506
+ var list = tuple[2],
1507
+ stateString = tuple[3];
1508
+ promise[tuple[1]] = list.add, stateString && list.add(function () {
1509
+ state = stateString;
1510
+ }, tuples[1 ^ i][2].disable, tuples[2][2].lock), deferred[tuple[0]] = function () {
1511
+ return deferred[tuple[0] + "With"](this === deferred ? promise : this, arguments), this;
1512
+ }, deferred[tuple[0] + "With"] = list.fireWith;
1513
+ }), promise.promise(deferred), func && func.call(deferred, deferred), deferred;
1514
+ },
1515
+ when: function (subordinate) {
1516
+ var progressValues,
1517
+ progressContexts,
1518
+ resolveContexts,
1519
+ i = 0,
1520
+ resolveValues = slice.call(arguments),
1521
+ length = resolveValues.length,
1522
+ remaining = 1 !== length || subordinate && jQuery.isFunction(subordinate.promise) ? length : 0,
1523
+ deferred = 1 === remaining ? subordinate : jQuery.Deferred(),
1524
+ updateFunc = function (i, contexts, values) {
1525
+ return function (value) {
1526
+ contexts[i] = this, values[i] = arguments.length > 1 ? slice.call(arguments) : value, values === progressValues ? deferred.notifyWith(contexts, values) : --remaining || deferred.resolveWith(contexts, values);
1527
+ };
1528
+ };
1529
+ if (length > 1) for (progressValues = new Array(length), progressContexts = new Array(length), resolveContexts = new Array(length); length > i; i++) resolveValues[i] && jQuery.isFunction(resolveValues[i].promise) ? resolveValues[i].promise().done(updateFunc(i, resolveContexts, resolveValues)).fail(deferred.reject).progress(updateFunc(i, progressContexts, progressValues)) : --remaining;
1530
+ return remaining || deferred.resolveWith(resolveContexts, resolveValues), deferred.promise();
1531
+ }
1532
+ });
1533
+ var readyList;
1534
+ jQuery.fn.ready = function (fn) {
1535
+ return jQuery.ready.promise().done(fn), this;
1536
+ }, jQuery.extend({
1537
+ isReady: !1,
1538
+ readyWait: 1,
1539
+ holdReady: function (hold) {
1540
+ hold ? jQuery.readyWait++ : jQuery.ready(!0);
1541
+ },
1542
+ ready: function (wait) {
1543
+ if (wait === !0 ? ! --jQuery.readyWait : !jQuery.isReady) {
1544
+ if (!document.body) return setTimeout(jQuery.ready);
1545
+ jQuery.isReady = !0, wait !== !0 && --jQuery.readyWait > 0 || (readyList.resolveWith(document, [jQuery]), jQuery.fn.triggerHandler && (jQuery(document).triggerHandler("ready"), jQuery(document).off("ready")));
1546
+ }
1547
+ }
1548
+ }), jQuery.ready.promise = function (obj) {
1549
+ if (!readyList) if (readyList = jQuery.Deferred(), "complete" === document.readyState) setTimeout(jQuery.ready);else if (document.addEventListener) document.addEventListener("DOMContentLoaded", completed, !1), window.addEventListener("load", completed, !1);else {
1550
+ document.attachEvent("onreadystatechange", completed), window.attachEvent("onload", completed);
1551
+ var top = !1;
1552
+ try {
1553
+ top = null == window.frameElement && document.documentElement;
1554
+ } catch (e) {}
1555
+ top && top.doScroll && !function doScrollCheck() {
1556
+ if (!jQuery.isReady) {
1557
+ try {
1558
+ top.doScroll("left");
1559
+ } catch (e) {
1560
+ return setTimeout(doScrollCheck, 50);
1561
+ }
1562
+ detach(), jQuery.ready();
1563
+ }
1564
+ }();
1565
+ }
1566
+ return readyList.promise(obj);
1567
+ };
1568
+ var i,
1569
+ strundefined = "undefined";
1570
+ for (i in jQuery(support)) break;
1571
+ support.ownLast = "0" !== i, support.inlineBlockNeedsLayout = !1, jQuery(function () {
1572
+ var val, div, body, container;
1573
+ body = document.getElementsByTagName("body")[0], body && body.style && (div = document.createElement("div"), container = document.createElement("div"), container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", body.appendChild(container).appendChild(div), typeof div.style.zoom !== strundefined && (div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1", support.inlineBlockNeedsLayout = val = 3 === div.offsetWidth, val && (body.style.zoom = 1)), body.removeChild(container));
1574
+ }), function () {
1575
+ var div = document.createElement("div");
1576
+ if (null == support.deleteExpando) {
1577
+ support.deleteExpando = !0;
1578
+ try {
1579
+ delete div.test;
1580
+ } catch (e) {
1581
+ support.deleteExpando = !1;
1582
+ }
1583
+ }
1584
+ div = null;
1585
+ }(), jQuery.acceptData = function (elem) {
1586
+ var noData = jQuery.noData[(elem.nodeName + " ").toLowerCase()],
1587
+ nodeType = +elem.nodeType || 1;
1588
+ return 1 !== nodeType && 9 !== nodeType ? !1 : !noData || noData !== !0 && elem.getAttribute("classid") === noData;
1589
+ };
1590
+ var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
1591
+ rmultiDash = /([A-Z])/g;
1592
+ jQuery.extend({
1593
+ cache: {},
1594
+ noData: {
1595
+ "applet ": !0,
1596
+ "embed ": !0,
1597
+ "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
1598
+ },
1599
+ hasData: function (elem) {
1600
+ return elem = elem.nodeType ? jQuery.cache[elem[jQuery.expando]] : elem[jQuery.expando], !!elem && !isEmptyDataObject(elem);
1601
+ },
1602
+ data: function (elem, name, data) {
1603
+ return internalData(elem, name, data);
1604
+ },
1605
+ removeData: function (elem, name) {
1606
+ return internalRemoveData(elem, name);
1607
+ },
1608
+ _data: function (elem, name, data) {
1609
+ return internalData(elem, name, data, !0);
1610
+ },
1611
+ _removeData: function (elem, name) {
1612
+ return internalRemoveData(elem, name, !0);
1613
+ }
1614
+ }), jQuery.fn.extend({
1615
+ data: function (key, value) {
1616
+ var i,
1617
+ name,
1618
+ data,
1619
+ elem = this[0],
1620
+ attrs = elem && elem.attributes;
1621
+ if (void 0 === key) {
1622
+ if (this.length && (data = jQuery.data(elem), 1 === elem.nodeType && !jQuery._data(elem, "parsedAttrs"))) {
1623
+ for (i = attrs.length; i--;) attrs[i] && (name = attrs[i].name, 0 === name.indexOf("data-") && (name = jQuery.camelCase(name.slice(5)), dataAttr(elem, name, data[name])));
1624
+ jQuery._data(elem, "parsedAttrs", !0);
1625
+ }
1626
+ return data;
1627
+ }
1628
+ return "object" == typeof key ? this.each(function () {
1629
+ jQuery.data(this, key);
1630
+ }) : arguments.length > 1 ? this.each(function () {
1631
+ jQuery.data(this, key, value);
1632
+ }) : elem ? dataAttr(elem, key, jQuery.data(elem, key)) : void 0;
1633
+ },
1634
+ removeData: function (key) {
1635
+ return this.each(function () {
1636
+ jQuery.removeData(this, key);
1637
+ });
1638
+ }
1639
+ }), jQuery.extend({
1640
+ queue: function (elem, type, data) {
1641
+ var queue;
1642
+ return elem ? (type = (type || "fx") + "queue", queue = jQuery._data(elem, type), data && (!queue || jQuery.isArray(data) ? queue = jQuery._data(elem, type, jQuery.makeArray(data)) : queue.push(data)), queue || []) : void 0;
1643
+ },
1644
+ dequeue: function (elem, type) {
1645
+ type = type || "fx";
1646
+ var queue = jQuery.queue(elem, type),
1647
+ startLength = queue.length,
1648
+ fn = queue.shift(),
1649
+ hooks = jQuery._queueHooks(elem, type),
1650
+ next = function () {
1651
+ jQuery.dequeue(elem, type);
1652
+ };
1653
+ "inprogress" === fn && (fn = queue.shift(), startLength--), fn && ("fx" === type && queue.unshift("inprogress"), delete hooks.stop, fn.call(elem, next, hooks)), !startLength && hooks && hooks.empty.fire();
1654
+ },
1655
+ _queueHooks: function (elem, type) {
1656
+ var key = type + "queueHooks";
1657
+ return jQuery._data(elem, key) || jQuery._data(elem, key, {
1658
+ empty: jQuery.Callbacks("once memory").add(function () {
1659
+ jQuery._removeData(elem, type + "queue"), jQuery._removeData(elem, key);
1660
+ })
1661
+ });
1662
+ }
1663
+ }), jQuery.fn.extend({
1664
+ queue: function (type, data) {
1665
+ var setter = 2;
1666
+ return "string" != typeof type && (data = type, type = "fx", setter--), arguments.length < setter ? jQuery.queue(this[0], type) : void 0 === data ? this : this.each(function () {
1667
+ var queue = jQuery.queue(this, type, data);
1668
+ jQuery._queueHooks(this, type), "fx" === type && "inprogress" !== queue[0] && jQuery.dequeue(this, type);
1669
+ });
1670
+ },
1671
+ dequeue: function (type) {
1672
+ return this.each(function () {
1673
+ jQuery.dequeue(this, type);
1674
+ });
1675
+ },
1676
+ clearQueue: function (type) {
1677
+ return this.queue(type || "fx", []);
1678
+ },
1679
+ promise: function (type, obj) {
1680
+ var tmp,
1681
+ count = 1,
1682
+ defer = jQuery.Deferred(),
1683
+ elements = this,
1684
+ i = this.length,
1685
+ resolve = function () {
1686
+ --count || defer.resolveWith(elements, [elements]);
1687
+ };
1688
+ for ("string" != typeof type && (obj = type, type = void 0), type = type || "fx"; i--;) tmp = jQuery._data(elements[i], type + "queueHooks"), tmp && tmp.empty && (count++, tmp.empty.add(resolve));
1689
+ return resolve(), defer.promise(obj);
1690
+ }
1691
+ });
1692
+ var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
1693
+ cssExpand = ["Top", "Right", "Bottom", "Left"],
1694
+ isHidden = function (elem, el) {
1695
+ return elem = el || elem, "none" === jQuery.css(elem, "display") || !jQuery.contains(elem.ownerDocument, elem);
1696
+ },
1697
+ access = jQuery.access = function (elems, fn, key, value, chainable, emptyGet, raw) {
1698
+ var i = 0,
1699
+ length = elems.length,
1700
+ bulk = null == key;
1701
+ if ("object" === jQuery.type(key)) {
1702
+ chainable = !0;
1703
+ for (i in key) jQuery.access(elems, fn, i, key[i], !0, emptyGet, raw);
1704
+ } else if (void 0 !== value && (chainable = !0, jQuery.isFunction(value) || (raw = !0), bulk && (raw ? (fn.call(elems, value), fn = null) : (bulk = fn, fn = function (elem, key, value) {
1705
+ return bulk.call(jQuery(elem), value);
1706
+ })), fn)) for (; length > i; i++) fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));
1707
+ return chainable ? elems : bulk ? fn.call(elems) : length ? fn(elems[0], key) : emptyGet;
1708
+ },
1709
+ rcheckableType = /^(?:checkbox|radio)$/i;
1710
+ !function () {
1711
+ var input = document.createElement("input"),
1712
+ div = document.createElement("div"),
1713
+ fragment = document.createDocumentFragment();
1714
+ if (div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", support.leadingWhitespace = 3 === div.firstChild.nodeType, support.tbody = !div.getElementsByTagName("tbody").length, support.htmlSerialize = !!div.getElementsByTagName("link").length, support.html5Clone = "<:nav></:nav>" !== document.createElement("nav").cloneNode(!0).outerHTML, input.type = "checkbox", input.checked = !0, fragment.appendChild(input), support.appendChecked = input.checked, div.innerHTML = "<textarea>x</textarea>", support.noCloneChecked = !!div.cloneNode(!0).lastChild.defaultValue, fragment.appendChild(div), div.innerHTML = "<input type='radio' checked='checked' name='t'/>", support.checkClone = div.cloneNode(!0).cloneNode(!0).lastChild.checked, support.noCloneEvent = !0, div.attachEvent && (div.attachEvent("onclick", function () {
1715
+ support.noCloneEvent = !1;
1716
+ }), div.cloneNode(!0).click()), null == support.deleteExpando) {
1717
+ support.deleteExpando = !0;
1718
+ try {
1719
+ delete div.test;
1720
+ } catch (e) {
1721
+ support.deleteExpando = !1;
1722
+ }
1723
+ }
1724
+ }(), function () {
1725
+ var i,
1726
+ eventName,
1727
+ div = document.createElement("div");
1728
+ for (i in {
1729
+ submit: !0,
1730
+ change: !0,
1731
+ focusin: !0
1732
+ }) eventName = "on" + i, (support[i + "Bubbles"] = eventName in window) || (div.setAttribute(eventName, "t"), support[i + "Bubbles"] = div.attributes[eventName].expando === !1);
1733
+ div = null;
1734
+ }();
1735
+ var rformElems = /^(?:input|select|textarea)$/i,
1736
+ rkeyEvent = /^key/,
1737
+ rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
1738
+ rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
1739
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
1740
+ jQuery.event = {
1741
+ global: {},
1742
+ add: function (elem, types, handler, data, selector) {
1743
+ var tmp,
1744
+ events,
1745
+ t,
1746
+ handleObjIn,
1747
+ special,
1748
+ eventHandle,
1749
+ handleObj,
1750
+ handlers,
1751
+ type,
1752
+ namespaces,
1753
+ origType,
1754
+ elemData = jQuery._data(elem);
1755
+ if (elemData) {
1756
+ for (handler.handler && (handleObjIn = handler, handler = handleObjIn.handler, selector = handleObjIn.selector), handler.guid || (handler.guid = jQuery.guid++), (events = elemData.events) || (events = elemData.events = {}), (eventHandle = elemData.handle) || (eventHandle = elemData.handle = function (e) {
1757
+ return typeof jQuery === strundefined || e && jQuery.event.triggered === e.type ? void 0 : jQuery.event.dispatch.apply(eventHandle.elem, arguments);
1758
+ }, eventHandle.elem = elem), types = (types || "").match(rnotwhite) || [""], t = types.length; t--;) tmp = rtypenamespace.exec(types[t]) || [], type = origType = tmp[1], namespaces = (tmp[2] || "").split(".").sort(), type && (special = jQuery.event.special[type] || {}, type = (selector ? special.delegateType : special.bindType) || type, special = jQuery.event.special[type] || {}, handleObj = jQuery.extend({
1759
+ type: type,
1760
+ origType: origType,
1761
+ data: data,
1762
+ handler: handler,
1763
+ guid: handler.guid,
1764
+ selector: selector,
1765
+ needsContext: selector && jQuery.expr.match.needsContext.test(selector),
1766
+ namespace: namespaces.join(".")
1767
+ }, handleObjIn), (handlers = events[type]) || (handlers = events[type] = [], handlers.delegateCount = 0, special.setup && special.setup.call(elem, data, namespaces, eventHandle) !== !1 || (elem.addEventListener ? elem.addEventListener(type, eventHandle, !1) : elem.attachEvent && elem.attachEvent("on" + type, eventHandle))), special.add && (special.add.call(elem, handleObj), handleObj.handler.guid || (handleObj.handler.guid = handler.guid)), selector ? handlers.splice(handlers.delegateCount++, 0, handleObj) : handlers.push(handleObj), jQuery.event.global[type] = !0);
1768
+ elem = null;
1769
+ }
1770
+ },
1771
+ remove: function (elem, types, handler, selector, mappedTypes) {
1772
+ var j,
1773
+ handleObj,
1774
+ tmp,
1775
+ origCount,
1776
+ t,
1777
+ events,
1778
+ special,
1779
+ handlers,
1780
+ type,
1781
+ namespaces,
1782
+ origType,
1783
+ elemData = jQuery.hasData(elem) && jQuery._data(elem);
1784
+ if (elemData && (events = elemData.events)) {
1785
+ for (types = (types || "").match(rnotwhite) || [""], t = types.length; t--;) if (tmp = rtypenamespace.exec(types[t]) || [], type = origType = tmp[1], namespaces = (tmp[2] || "").split(".").sort(), type) {
1786
+ for (special = jQuery.event.special[type] || {}, type = (selector ? special.delegateType : special.bindType) || type, handlers = events[type] || [], tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)"), origCount = j = handlers.length; j--;) handleObj = handlers[j], !mappedTypes && origType !== handleObj.origType || handler && handler.guid !== handleObj.guid || tmp && !tmp.test(handleObj.namespace) || selector && selector !== handleObj.selector && ("**" !== selector || !handleObj.selector) || (handlers.splice(j, 1), handleObj.selector && handlers.delegateCount--, special.remove && special.remove.call(elem, handleObj));
1787
+ origCount && !handlers.length && (special.teardown && special.teardown.call(elem, namespaces, elemData.handle) !== !1 || jQuery.removeEvent(elem, type, elemData.handle), delete events[type]);
1788
+ } else for (type in events) jQuery.event.remove(elem, type + types[t], handler, selector, !0);
1789
+ jQuery.isEmptyObject(events) && (delete elemData.handle, jQuery._removeData(elem, "events"));
1790
+ }
1791
+ },
1792
+ trigger: function (event, data, elem, onlyHandlers) {
1793
+ var handle,
1794
+ ontype,
1795
+ cur,
1796
+ bubbleType,
1797
+ special,
1798
+ tmp,
1799
+ i,
1800
+ eventPath = [elem || document],
1801
+ type = hasOwn.call(event, "type") ? event.type : event,
1802
+ namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : [];
1803
+ if (cur = tmp = elem = elem || document, 3 !== elem.nodeType && 8 !== elem.nodeType && !rfocusMorph.test(type + jQuery.event.triggered) && (type.indexOf(".") >= 0 && (namespaces = type.split("."), type = namespaces.shift(), namespaces.sort()), ontype = type.indexOf(":") < 0 && "on" + type, event = event[jQuery.expando] ? event : new jQuery.Event(type, "object" == typeof event && event), event.isTrigger = onlyHandlers ? 2 : 3, event.namespace = namespaces.join("."), event.namespace_re = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, event.result = void 0, event.target || (event.target = elem), data = null == data ? [event] : jQuery.makeArray(data, [event]), special = jQuery.event.special[type] || {}, onlyHandlers || !special.trigger || special.trigger.apply(elem, data) !== !1)) {
1804
+ if (!onlyHandlers && !special.noBubble && !jQuery.isWindow(elem)) {
1805
+ for (bubbleType = special.delegateType || type, rfocusMorph.test(bubbleType + type) || (cur = cur.parentNode); cur; cur = cur.parentNode) eventPath.push(cur), tmp = cur;
1806
+ tmp === (elem.ownerDocument || document) && eventPath.push(tmp.defaultView || tmp.parentWindow || window);
1807
+ }
1808
+ for (i = 0; (cur = eventPath[i++]) && !event.isPropagationStopped();) event.type = i > 1 ? bubbleType : special.bindType || type, handle = (jQuery._data(cur, "events") || {})[event.type] && jQuery._data(cur, "handle"), handle && handle.apply(cur, data), handle = ontype && cur[ontype], handle && handle.apply && jQuery.acceptData(cur) && (event.result = handle.apply(cur, data), event.result === !1 && event.preventDefault());
1809
+ if (event.type = type, !onlyHandlers && !event.isDefaultPrevented() && (!special._default || special._default.apply(eventPath.pop(), data) === !1) && jQuery.acceptData(elem) && ontype && elem[type] && !jQuery.isWindow(elem)) {
1810
+ tmp = elem[ontype], tmp && (elem[ontype] = null), jQuery.event.triggered = type;
1811
+ try {
1812
+ elem[type]();
1813
+ } catch (e) {}
1814
+ jQuery.event.triggered = void 0, tmp && (elem[ontype] = tmp);
1815
+ }
1816
+ return event.result;
1817
+ }
1818
+ },
1819
+ dispatch: function (event) {
1820
+ event = jQuery.event.fix(event);
1821
+ var i,
1822
+ ret,
1823
+ handleObj,
1824
+ matched,
1825
+ j,
1826
+ handlerQueue = [],
1827
+ args = slice.call(arguments),
1828
+ handlers = (jQuery._data(this, "events") || {})[event.type] || [],
1829
+ special = jQuery.event.special[event.type] || {};
1830
+ if (args[0] = event, event.delegateTarget = this, !special.preDispatch || special.preDispatch.call(this, event) !== !1) {
1831
+ for (handlerQueue = jQuery.event.handlers.call(this, event, handlers), i = 0; (matched = handlerQueue[i++]) && !event.isPropagationStopped();) for (event.currentTarget = matched.elem, j = 0; (handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped();) (!event.namespace_re || event.namespace_re.test(handleObj.namespace)) && (event.handleObj = handleObj, event.data = handleObj.data, ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args), void 0 !== ret && (event.result = ret) === !1 && (event.preventDefault(), event.stopPropagation()));
1832
+ return special.postDispatch && special.postDispatch.call(this, event), event.result;
1833
+ }
1834
+ },
1835
+ handlers: function (event, handlers) {
1836
+ var sel,
1837
+ handleObj,
1838
+ matches,
1839
+ i,
1840
+ handlerQueue = [],
1841
+ delegateCount = handlers.delegateCount,
1842
+ cur = event.target;
1843
+ if (delegateCount && cur.nodeType && (!event.button || "click" !== event.type)) for (; cur != this; cur = cur.parentNode || this) if (1 === cur.nodeType && (cur.disabled !== !0 || "click" !== event.type)) {
1844
+ for (matches = [], i = 0; delegateCount > i; i++) handleObj = handlers[i], sel = handleObj.selector + " ", void 0 === matches[sel] && (matches[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) >= 0 : jQuery.find(sel, this, null, [cur]).length), matches[sel] && matches.push(handleObj);
1845
+ matches.length && handlerQueue.push({
1846
+ elem: cur,
1847
+ handlers: matches
1848
+ });
1849
+ }
1850
+ return delegateCount < handlers.length && handlerQueue.push({
1851
+ elem: this,
1852
+ handlers: handlers.slice(delegateCount)
1853
+ }), handlerQueue;
1854
+ },
1855
+ fix: function (event) {
1856
+ if (event[jQuery.expando]) return event;
1857
+ var i,
1858
+ prop,
1859
+ copy,
1860
+ type = event.type,
1861
+ originalEvent = event,
1862
+ fixHook = this.fixHooks[type];
1863
+ for (fixHook || (this.fixHooks[type] = fixHook = rmouseEvent.test(type) ? this.mouseHooks : rkeyEvent.test(type) ? this.keyHooks : {}), copy = fixHook.props ? this.props.concat(fixHook.props) : this.props, event = new jQuery.Event(originalEvent), i = copy.length; i--;) prop = copy[i], event[prop] = originalEvent[prop];
1864
+ return event.target || (event.target = originalEvent.srcElement || document), 3 === event.target.nodeType && (event.target = event.target.parentNode), event.metaKey = !!event.metaKey, fixHook.filter ? fixHook.filter(event, originalEvent) : event;
1865
+ },
1866
+ props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
1867
+ fixHooks: {},
1868
+ keyHooks: {
1869
+ props: "char charCode key keyCode".split(" "),
1870
+ filter: function (event, original) {
1871
+ return null == event.which && (event.which = null != original.charCode ? original.charCode : original.keyCode), event;
1872
+ }
1873
+ },
1874
+ mouseHooks: {
1875
+ props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
1876
+ filter: function (event, original) {
1877
+ var body,
1878
+ eventDoc,
1879
+ doc,
1880
+ button = original.button,
1881
+ fromElement = original.fromElement;
1882
+ return null == event.pageX && null != original.clientX && (eventDoc = event.target.ownerDocument || document, doc = eventDoc.documentElement, body = eventDoc.body, event.pageX = original.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0), event.pageY = original.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0)), !event.relatedTarget && fromElement && (event.relatedTarget = fromElement === event.target ? original.toElement : fromElement), event.which || void 0 === button || (event.which = 1 & button ? 1 : 2 & button ? 3 : 4 & button ? 2 : 0), event;
1883
+ }
1884
+ },
1885
+ special: {
1886
+ load: {
1887
+ noBubble: !0
1888
+ },
1889
+ focus: {
1890
+ trigger: function () {
1891
+ if (this !== safeActiveElement() && this.focus) try {
1892
+ return this.focus(), !1;
1893
+ } catch (e) {}
1894
+ },
1895
+ delegateType: "focusin"
1896
+ },
1897
+ blur: {
1898
+ trigger: function () {
1899
+ return this === safeActiveElement() && this.blur ? (this.blur(), !1) : void 0;
1900
+ },
1901
+ delegateType: "focusout"
1902
+ },
1903
+ click: {
1904
+ trigger: function () {
1905
+ return jQuery.nodeName(this, "input") && "checkbox" === this.type && this.click ? (this.click(), !1) : void 0;
1906
+ },
1907
+ _default: function (event) {
1908
+ return jQuery.nodeName(event.target, "a");
1909
+ }
1910
+ },
1911
+ beforeunload: {
1912
+ postDispatch: function (event) {
1913
+ void 0 !== event.result && event.originalEvent && (event.originalEvent.returnValue = event.result);
1914
+ }
1915
+ }
1916
+ },
1917
+ simulate: function (type, elem, event, bubble) {
1918
+ var e = jQuery.extend(new jQuery.Event(), event, {
1919
+ type: type,
1920
+ isSimulated: !0,
1921
+ originalEvent: {}
1922
+ });
1923
+ bubble ? jQuery.event.trigger(e, null, elem) : jQuery.event.dispatch.call(elem, e), e.isDefaultPrevented() && event.preventDefault();
1924
+ }
1925
+ }, jQuery.removeEvent = document.removeEventListener ? function (elem, type, handle) {
1926
+ elem.removeEventListener && elem.removeEventListener(type, handle, !1);
1927
+ } : function (elem, type, handle) {
1928
+ var name = "on" + type;
1929
+ elem.detachEvent && (typeof elem[name] === strundefined && (elem[name] = null), elem.detachEvent(name, handle));
1930
+ }, jQuery.Event = function (src, props) {
1931
+ return this instanceof jQuery.Event ? (src && src.type ? (this.originalEvent = src, this.type = src.type, this.isDefaultPrevented = src.defaultPrevented || void 0 === src.defaultPrevented && src.returnValue === !1 ? returnTrue : returnFalse) : this.type = src, props && jQuery.extend(this, props), this.timeStamp = src && src.timeStamp || jQuery.now(), void (this[jQuery.expando] = !0)) : new jQuery.Event(src, props);
1932
+ }, jQuery.Event.prototype = {
1933
+ isDefaultPrevented: returnFalse,
1934
+ isPropagationStopped: returnFalse,
1935
+ isImmediatePropagationStopped: returnFalse,
1936
+ preventDefault: function () {
1937
+ var e = this.originalEvent;
1938
+ this.isDefaultPrevented = returnTrue, e && (e.preventDefault ? e.preventDefault() : e.returnValue = !1);
1939
+ },
1940
+ stopPropagation: function () {
1941
+ var e = this.originalEvent;
1942
+ this.isPropagationStopped = returnTrue, e && (e.stopPropagation && e.stopPropagation(), e.cancelBubble = !0);
1943
+ },
1944
+ stopImmediatePropagation: function () {
1945
+ var e = this.originalEvent;
1946
+ this.isImmediatePropagationStopped = returnTrue, e && e.stopImmediatePropagation && e.stopImmediatePropagation(), this.stopPropagation();
1947
+ }
1948
+ }, jQuery.each({
1949
+ mouseenter: "mouseover",
1950
+ mouseleave: "mouseout",
1951
+ pointerenter: "pointerover",
1952
+ pointerleave: "pointerout"
1953
+ }, function (orig, fix) {
1954
+ jQuery.event.special[orig] = {
1955
+ delegateType: fix,
1956
+ bindType: fix,
1957
+ handle: function (event) {
1958
+ var ret,
1959
+ target = this,
1960
+ related = event.relatedTarget,
1961
+ handleObj = event.handleObj;
1962
+ return (!related || related !== target && !jQuery.contains(target, related)) && (event.type = handleObj.origType, ret = handleObj.handler.apply(this, arguments), event.type = fix), ret;
1963
+ }
1964
+ };
1965
+ }), support.submitBubbles || (jQuery.event.special.submit = {
1966
+ setup: function () {
1967
+ return jQuery.nodeName(this, "form") ? !1 : void jQuery.event.add(this, "click._submit keypress._submit", function (e) {
1968
+ var elem = e.target,
1969
+ form = jQuery.nodeName(elem, "input") || jQuery.nodeName(elem, "button") ? elem.form : void 0;
1970
+ form && !jQuery._data(form, "submitBubbles") && (jQuery.event.add(form, "submit._submit", function (event) {
1971
+ event._submit_bubble = !0;
1972
+ }), jQuery._data(form, "submitBubbles", !0));
1973
+ });
1974
+ },
1975
+ postDispatch: function (event) {
1976
+ event._submit_bubble && (delete event._submit_bubble, this.parentNode && !event.isTrigger && jQuery.event.simulate("submit", this.parentNode, event, !0));
1977
+ },
1978
+ teardown: function () {
1979
+ return jQuery.nodeName(this, "form") ? !1 : void jQuery.event.remove(this, "._submit");
1980
+ }
1981
+ }), support.changeBubbles || (jQuery.event.special.change = {
1982
+ setup: function () {
1983
+ return rformElems.test(this.nodeName) ? (("checkbox" === this.type || "radio" === this.type) && (jQuery.event.add(this, "propertychange._change", function (event) {
1984
+ "checked" === event.originalEvent.propertyName && (this._just_changed = !0);
1985
+ }), jQuery.event.add(this, "click._change", function (event) {
1986
+ this._just_changed && !event.isTrigger && (this._just_changed = !1), jQuery.event.simulate("change", this, event, !0);
1987
+ })), !1) : void jQuery.event.add(this, "beforeactivate._change", function (e) {
1988
+ var elem = e.target;
1989
+ rformElems.test(elem.nodeName) && !jQuery._data(elem, "changeBubbles") && (jQuery.event.add(elem, "change._change", function (event) {
1990
+ !this.parentNode || event.isSimulated || event.isTrigger || jQuery.event.simulate("change", this.parentNode, event, !0);
1991
+ }), jQuery._data(elem, "changeBubbles", !0));
1992
+ });
1993
+ },
1994
+ handle: function (event) {
1995
+ var elem = event.target;
1996
+ return this !== elem || event.isSimulated || event.isTrigger || "radio" !== elem.type && "checkbox" !== elem.type ? event.handleObj.handler.apply(this, arguments) : void 0;
1997
+ },
1998
+ teardown: function () {
1999
+ return jQuery.event.remove(this, "._change"), !rformElems.test(this.nodeName);
2000
+ }
2001
+ }), support.focusinBubbles || jQuery.each({
2002
+ focus: "focusin",
2003
+ blur: "focusout"
2004
+ }, function (orig, fix) {
2005
+ var handler = function (event) {
2006
+ jQuery.event.simulate(fix, event.target, jQuery.event.fix(event), !0);
2007
+ };
2008
+ jQuery.event.special[fix] = {
2009
+ setup: function () {
2010
+ var doc = this.ownerDocument || this,
2011
+ attaches = jQuery._data(doc, fix);
2012
+ attaches || doc.addEventListener(orig, handler, !0), jQuery._data(doc, fix, (attaches || 0) + 1);
2013
+ },
2014
+ teardown: function () {
2015
+ var doc = this.ownerDocument || this,
2016
+ attaches = jQuery._data(doc, fix) - 1;
2017
+ attaches ? jQuery._data(doc, fix, attaches) : (doc.removeEventListener(orig, handler, !0), jQuery._removeData(doc, fix));
2018
+ }
2019
+ };
2020
+ }), jQuery.fn.extend({
2021
+ on: function (types, selector, data, fn, one) {
2022
+ var type, origFn;
2023
+ if ("object" == typeof types) {
2024
+ "string" != typeof selector && (data = data || selector, selector = void 0);
2025
+ for (type in types) this.on(type, selector, data, types[type], one);
2026
+ return this;
2027
+ }
2028
+ if (null == data && null == fn ? (fn = selector, data = selector = void 0) : null == fn && ("string" == typeof selector ? (fn = data, data = void 0) : (fn = data, data = selector, selector = void 0)), fn === !1) fn = returnFalse;else if (!fn) return this;
2029
+ return 1 === one && (origFn = fn, fn = function (event) {
2030
+ return jQuery().off(event), origFn.apply(this, arguments);
2031
+ }, fn.guid = origFn.guid || (origFn.guid = jQuery.guid++)), this.each(function () {
2032
+ jQuery.event.add(this, types, fn, data, selector);
2033
+ });
2034
+ },
2035
+ one: function (types, selector, data, fn) {
2036
+ return this.on(types, selector, data, fn, 1);
2037
+ },
2038
+ off: function (types, selector, fn) {
2039
+ var handleObj, type;
2040
+ if (types && types.preventDefault && types.handleObj) return handleObj = types.handleObj, jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler), this;
2041
+ if ("object" == typeof types) {
2042
+ for (type in types) this.off(type, selector, types[type]);
2043
+ return this;
2044
+ }
2045
+ return (selector === !1 || "function" == typeof selector) && (fn = selector, selector = void 0), fn === !1 && (fn = returnFalse), this.each(function () {
2046
+ jQuery.event.remove(this, types, fn, selector);
2047
+ });
2048
+ },
2049
+ trigger: function (type, data) {
2050
+ return this.each(function () {
2051
+ jQuery.event.trigger(type, data, this);
2052
+ });
2053
+ },
2054
+ triggerHandler: function (type, data) {
2055
+ var elem = this[0];
2056
+ return elem ? jQuery.event.trigger(type, data, elem, !0) : void 0;
2057
+ }
2058
+ });
2059
+ var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
2060
+ rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
2061
+ rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
2062
+ rleadingWhitespace = /^\s+/,
2063
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
2064
+ rtagName = /<([\w:]+)/,
2065
+ rtbody = /<tbody/i,
2066
+ rhtml = /<|&#?\w+;/,
2067
+ rnoInnerhtml = /<(?:script|style|link)/i,
2068
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
2069
+ rscriptType = /^$|\/(?:java|ecma)script/i,
2070
+ rscriptTypeMasked = /^true\/(.*)/,
2071
+ rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
2072
+ wrapMap = {
2073
+ option: [1, "<select multiple='multiple'>", "</select>"],
2074
+ legend: [1, "<fieldset>", "</fieldset>"],
2075
+ area: [1, "<map>", "</map>"],
2076
+ param: [1, "<object>", "</object>"],
2077
+ thead: [1, "<table>", "</table>"],
2078
+ tr: [2, "<table><tbody>", "</tbody></table>"],
2079
+ col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
2080
+ td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
2081
+ _default: support.htmlSerialize ? [0, "", ""] : [1, "X<div>", "</div>"]
2082
+ },
2083
+ safeFragment = createSafeFragment(document),
2084
+ fragmentDiv = safeFragment.appendChild(document.createElement("div"));
2085
+ wrapMap.optgroup = wrapMap.option, wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead, wrapMap.th = wrapMap.td, jQuery.extend({
2086
+ clone: function (elem, dataAndEvents, deepDataAndEvents) {
2087
+ var destElements,
2088
+ node,
2089
+ clone,
2090
+ i,
2091
+ srcElements,
2092
+ inPage = jQuery.contains(elem.ownerDocument, elem);
2093
+ if (support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test("<" + elem.nodeName + ">") ? clone = elem.cloneNode(!0) : (fragmentDiv.innerHTML = elem.outerHTML, fragmentDiv.removeChild(clone = fragmentDiv.firstChild)), !(support.noCloneEvent && support.noCloneChecked || 1 !== elem.nodeType && 11 !== elem.nodeType || jQuery.isXMLDoc(elem))) for (destElements = getAll(clone), srcElements = getAll(elem), i = 0; null != (node = srcElements[i]); ++i) destElements[i] && fixCloneNodeIssues(node, destElements[i]);
2094
+ if (dataAndEvents) if (deepDataAndEvents) for (srcElements = srcElements || getAll(elem), destElements = destElements || getAll(clone), i = 0; null != (node = srcElements[i]); i++) cloneCopyEvent(node, destElements[i]);else cloneCopyEvent(elem, clone);
2095
+ return destElements = getAll(clone, "script"), destElements.length > 0 && setGlobalEval(destElements, !inPage && getAll(elem, "script")), destElements = srcElements = node = null, clone;
2096
+ },
2097
+ buildFragment: function (elems, context, scripts, selection) {
2098
+ for (var j, elem, contains, tmp, tag, tbody, wrap, l = elems.length, safe = createSafeFragment(context), nodes = [], i = 0; l > i; i++) if (elem = elems[i], elem || 0 === elem) if ("object" === jQuery.type(elem)) jQuery.merge(nodes, elem.nodeType ? [elem] : elem);else if (rhtml.test(elem)) {
2099
+ for (tmp = tmp || safe.appendChild(context.createElement("div")), tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase(), wrap = wrapMap[tag] || wrapMap._default, tmp.innerHTML = wrap[1] + elem.replace(rxhtmlTag, "<$1></$2>") + wrap[2], j = wrap[0]; j--;) tmp = tmp.lastChild;
2100
+ if (!support.leadingWhitespace && rleadingWhitespace.test(elem) && nodes.push(context.createTextNode(rleadingWhitespace.exec(elem)[0])), !support.tbody) for (elem = "table" !== tag || rtbody.test(elem) ? "<table>" !== wrap[1] || rtbody.test(elem) ? 0 : tmp : tmp.firstChild, j = elem && elem.childNodes.length; j--;) jQuery.nodeName(tbody = elem.childNodes[j], "tbody") && !tbody.childNodes.length && elem.removeChild(tbody);
2101
+ for (jQuery.merge(nodes, tmp.childNodes), tmp.textContent = ""; tmp.firstChild;) tmp.removeChild(tmp.firstChild);
2102
+ tmp = safe.lastChild;
2103
+ } else nodes.push(context.createTextNode(elem));
2104
+ for (tmp && safe.removeChild(tmp), support.appendChecked || jQuery.grep(getAll(nodes, "input"), fixDefaultChecked), i = 0; elem = nodes[i++];) if ((!selection || -1 === jQuery.inArray(elem, selection)) && (contains = jQuery.contains(elem.ownerDocument, elem), tmp = getAll(safe.appendChild(elem), "script"), contains && setGlobalEval(tmp), scripts)) for (j = 0; elem = tmp[j++];) rscriptType.test(elem.type || "") && scripts.push(elem);
2105
+ return tmp = null, safe;
2106
+ },
2107
+ cleanData: function (elems, acceptData) {
2108
+ for (var elem, type, id, data, i = 0, internalKey = jQuery.expando, cache = jQuery.cache, deleteExpando = support.deleteExpando, special = jQuery.event.special; null != (elem = elems[i]); i++) if ((acceptData || jQuery.acceptData(elem)) && (id = elem[internalKey], data = id && cache[id])) {
2109
+ if (data.events) for (type in data.events) special[type] ? jQuery.event.remove(elem, type) : jQuery.removeEvent(elem, type, data.handle);
2110
+ cache[id] && (delete cache[id], deleteExpando ? delete elem[internalKey] : typeof elem.removeAttribute !== strundefined ? elem.removeAttribute(internalKey) : elem[internalKey] = null, deletedIds.push(id));
2111
+ }
2112
+ }
2113
+ }), jQuery.fn.extend({
2114
+ text: function (value) {
2115
+ return access(this, function (value) {
2116
+ return void 0 === value ? jQuery.text(this) : this.empty().append((this[0] && this[0].ownerDocument || document).createTextNode(value));
2117
+ }, null, value, arguments.length);
2118
+ },
2119
+ append: function () {
2120
+ return this.domManip(arguments, function (elem) {
2121
+ if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
2122
+ var target = manipulationTarget(this, elem);
2123
+ target.appendChild(elem);
2124
+ }
2125
+ });
2126
+ },
2127
+ prepend: function () {
2128
+ return this.domManip(arguments, function (elem) {
2129
+ if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
2130
+ var target = manipulationTarget(this, elem);
2131
+ target.insertBefore(elem, target.firstChild);
2132
+ }
2133
+ });
2134
+ },
2135
+ before: function () {
2136
+ return this.domManip(arguments, function (elem) {
2137
+ this.parentNode && this.parentNode.insertBefore(elem, this);
2138
+ });
2139
+ },
2140
+ after: function () {
2141
+ return this.domManip(arguments, function (elem) {
2142
+ this.parentNode && this.parentNode.insertBefore(elem, this.nextSibling);
2143
+ });
2144
+ },
2145
+ remove: function (selector, keepData) {
2146
+ for (var elem, elems = selector ? jQuery.filter(selector, this) : this, i = 0; null != (elem = elems[i]); i++) keepData || 1 !== elem.nodeType || jQuery.cleanData(getAll(elem)), elem.parentNode && (keepData && jQuery.contains(elem.ownerDocument, elem) && setGlobalEval(getAll(elem, "script")), elem.parentNode.removeChild(elem));
2147
+ return this;
2148
+ },
2149
+ empty: function () {
2150
+ for (var elem, i = 0; null != (elem = this[i]); i++) {
2151
+ for (1 === elem.nodeType && jQuery.cleanData(getAll(elem, !1)); elem.firstChild;) elem.removeChild(elem.firstChild);
2152
+ elem.options && jQuery.nodeName(elem, "select") && (elem.options.length = 0);
2153
+ }
2154
+ return this;
2155
+ },
2156
+ clone: function (dataAndEvents, deepDataAndEvents) {
2157
+ return dataAndEvents = null == dataAndEvents ? !1 : dataAndEvents, deepDataAndEvents = null == deepDataAndEvents ? dataAndEvents : deepDataAndEvents, this.map(function () {
2158
+ return jQuery.clone(this, dataAndEvents, deepDataAndEvents);
2159
+ });
2160
+ },
2161
+ html: function (value) {
2162
+ return access(this, function (value) {
2163
+ var elem = this[0] || {},
2164
+ i = 0,
2165
+ l = this.length;
2166
+ if (void 0 === value) return 1 === elem.nodeType ? elem.innerHTML.replace(rinlinejQuery, "") : void 0;
2167
+ if ("string" == typeof value && !rnoInnerhtml.test(value) && (support.htmlSerialize || !rnoshimcache.test(value)) && (support.leadingWhitespace || !rleadingWhitespace.test(value)) && !wrapMap[(rtagName.exec(value) || ["", ""])[1].toLowerCase()]) {
2168
+ value = value.replace(rxhtmlTag, "<$1></$2>");
2169
+ try {
2170
+ for (; l > i; i++) elem = this[i] || {}, 1 === elem.nodeType && (jQuery.cleanData(getAll(elem, !1)), elem.innerHTML = value);
2171
+ elem = 0;
2172
+ } catch (e) {}
2173
+ }
2174
+ elem && this.empty().append(value);
2175
+ }, null, value, arguments.length);
2176
+ },
2177
+ replaceWith: function () {
2178
+ var arg = arguments[0];
2179
+ return this.domManip(arguments, function (elem) {
2180
+ arg = this.parentNode, jQuery.cleanData(getAll(this)), arg && arg.replaceChild(elem, this);
2181
+ }), arg && (arg.length || arg.nodeType) ? this : this.remove();
2182
+ },
2183
+ detach: function (selector) {
2184
+ return this.remove(selector, !0);
2185
+ },
2186
+ domManip: function (args, callback) {
2187
+ args = concat.apply([], args);
2188
+ var first,
2189
+ node,
2190
+ hasScripts,
2191
+ scripts,
2192
+ doc,
2193
+ fragment,
2194
+ i = 0,
2195
+ l = this.length,
2196
+ set = this,
2197
+ iNoClone = l - 1,
2198
+ value = args[0],
2199
+ isFunction = jQuery.isFunction(value);
2200
+ if (isFunction || l > 1 && "string" == typeof value && !support.checkClone && rchecked.test(value)) return this.each(function (index) {
2201
+ var self = set.eq(index);
2202
+ isFunction && (args[0] = value.call(this, index, self.html())), self.domManip(args, callback);
2203
+ });
2204
+ if (l && (fragment = jQuery.buildFragment(args, this[0].ownerDocument, !1, this), first = fragment.firstChild, 1 === fragment.childNodes.length && (fragment = first), first)) {
2205
+ for (scripts = jQuery.map(getAll(fragment, "script"), disableScript), hasScripts = scripts.length; l > i; i++) node = fragment, i !== iNoClone && (node = jQuery.clone(node, !0, !0), hasScripts && jQuery.merge(scripts, getAll(node, "script"))), callback.call(this[i], node, i);
2206
+ if (hasScripts) for (doc = scripts[scripts.length - 1].ownerDocument, jQuery.map(scripts, restoreScript), i = 0; hasScripts > i; i++) node = scripts[i], rscriptType.test(node.type || "") && !jQuery._data(node, "globalEval") && jQuery.contains(doc, node) && (node.src ? jQuery._evalUrl && jQuery._evalUrl(node.src) : jQuery.globalEval((node.text || node.textContent || node.innerHTML || "").replace(rcleanScript, "")));
2207
+ fragment = first = null;
2208
+ }
2209
+ return this;
2210
+ }
2211
+ }), jQuery.each({
2212
+ appendTo: "append",
2213
+ prependTo: "prepend",
2214
+ insertBefore: "before",
2215
+ insertAfter: "after",
2216
+ replaceAll: "replaceWith"
2217
+ }, function (name, original) {
2218
+ jQuery.fn[name] = function (selector) {
2219
+ for (var elems, i = 0, ret = [], insert = jQuery(selector), last = insert.length - 1; last >= i; i++) elems = i === last ? this : this.clone(!0), jQuery(insert[i])[original](elems), push.apply(ret, elems.get());
2220
+ return this.pushStack(ret);
2221
+ };
2222
+ });
2223
+ var iframe,
2224
+ elemdisplay = {};
2225
+ !function () {
2226
+ var shrinkWrapBlocksVal;
2227
+ support.shrinkWrapBlocks = function () {
2228
+ if (null != shrinkWrapBlocksVal) return shrinkWrapBlocksVal;
2229
+ shrinkWrapBlocksVal = !1;
2230
+ var div, body, container;
2231
+ return body = document.getElementsByTagName("body")[0], body && body.style ? (div = document.createElement("div"), container = document.createElement("div"), container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", body.appendChild(container).appendChild(div), typeof div.style.zoom !== strundefined && (div.style.cssText = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1", div.appendChild(document.createElement("div")).style.width = "5px", shrinkWrapBlocksVal = 3 !== div.offsetWidth), body.removeChild(container), shrinkWrapBlocksVal) : void 0;
2232
+ };
2233
+ }();
2234
+ var getStyles,
2235
+ curCSS,
2236
+ rmargin = /^margin/,
2237
+ rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i"),
2238
+ rposition = /^(top|right|bottom|left)$/;
2239
+ window.getComputedStyle ? (getStyles = function (elem) {
2240
+ return elem.ownerDocument.defaultView.opener ? elem.ownerDocument.defaultView.getComputedStyle(elem, null) : window.getComputedStyle(elem, null);
2241
+ }, curCSS = function (elem, name, computed) {
2242
+ var width,
2243
+ minWidth,
2244
+ maxWidth,
2245
+ ret,
2246
+ style = elem.style;
2247
+ return computed = computed || getStyles(elem), ret = computed ? computed.getPropertyValue(name) || computed[name] : void 0, computed && ("" !== ret || jQuery.contains(elem.ownerDocument, elem) || (ret = jQuery.style(elem, name)), rnumnonpx.test(ret) && rmargin.test(name) && (width = style.width, minWidth = style.minWidth, maxWidth = style.maxWidth, style.minWidth = style.maxWidth = style.width = ret, ret = computed.width, style.width = width, style.minWidth = minWidth, style.maxWidth = maxWidth)), void 0 === ret ? ret : ret + "";
2248
+ }) : document.documentElement.currentStyle && (getStyles = function (elem) {
2249
+ return elem.currentStyle;
2250
+ }, curCSS = function (elem, name, computed) {
2251
+ var left,
2252
+ rs,
2253
+ rsLeft,
2254
+ ret,
2255
+ style = elem.style;
2256
+ return computed = computed || getStyles(elem), ret = computed ? computed[name] : void 0, null == ret && style && style[name] && (ret = style[name]), rnumnonpx.test(ret) && !rposition.test(name) && (left = style.left, rs = elem.runtimeStyle, rsLeft = rs && rs.left, rsLeft && (rs.left = elem.currentStyle.left), style.left = "fontSize" === name ? "1em" : ret, ret = style.pixelLeft + "px", style.left = left, rsLeft && (rs.left = rsLeft)), void 0 === ret ? ret : ret + "" || "auto";
2257
+ }), function () {
2258
+ function computeStyleTests() {
2259
+ var div, body, container, contents;
2260
+ body = document.getElementsByTagName("body")[0], body && body.style && (div = document.createElement("div"), container = document.createElement("div"), container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", body.appendChild(container).appendChild(div), div.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute", pixelPositionVal = boxSizingReliableVal = !1, reliableMarginRightVal = !0, window.getComputedStyle && (pixelPositionVal = "1%" !== (window.getComputedStyle(div, null) || {}).top, boxSizingReliableVal = "4px" === (window.getComputedStyle(div, null) || {
2261
+ width: "4px"
2262
+ }).width, contents = div.appendChild(document.createElement("div")), contents.style.cssText = div.style.cssText = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0", contents.style.marginRight = contents.style.width = "0", div.style.width = "1px", reliableMarginRightVal = !parseFloat((window.getComputedStyle(contents, null) || {}).marginRight), div.removeChild(contents)), div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>", contents = div.getElementsByTagName("td"), contents[0].style.cssText = "margin:0;border:0;padding:0;display:none", reliableHiddenOffsetsVal = 0 === contents[0].offsetHeight, reliableHiddenOffsetsVal && (contents[0].style.display = "", contents[1].style.display = "none", reliableHiddenOffsetsVal = 0 === contents[0].offsetHeight), body.removeChild(container));
2263
+ }
2264
+ var div, style, a, pixelPositionVal, boxSizingReliableVal, reliableHiddenOffsetsVal, reliableMarginRightVal;
2265
+ div = document.createElement("div"), div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", a = div.getElementsByTagName("a")[0], style = a && a.style, style && (style.cssText = "float:left;opacity:.5", support.opacity = "0.5" === style.opacity, support.cssFloat = !!style.cssFloat, div.style.backgroundClip = "content-box", div.cloneNode(!0).style.backgroundClip = "", support.clearCloneStyle = "content-box" === div.style.backgroundClip, support.boxSizing = "" === style.boxSizing || "" === style.MozBoxSizing || "" === style.WebkitBoxSizing, jQuery.extend(support, {
2266
+ reliableHiddenOffsets: function () {
2267
+ return null == reliableHiddenOffsetsVal && computeStyleTests(), reliableHiddenOffsetsVal;
2268
+ },
2269
+ boxSizingReliable: function () {
2270
+ return null == boxSizingReliableVal && computeStyleTests(), boxSizingReliableVal;
2271
+ },
2272
+ pixelPosition: function () {
2273
+ return null == pixelPositionVal && computeStyleTests(), pixelPositionVal;
2274
+ },
2275
+ reliableMarginRight: function () {
2276
+ return null == reliableMarginRightVal && computeStyleTests(), reliableMarginRightVal;
2277
+ }
2278
+ }));
2279
+ }(), jQuery.swap = function (elem, options, callback, args) {
2280
+ var ret,
2281
+ name,
2282
+ old = {};
2283
+ for (name in options) old[name] = elem.style[name], elem.style[name] = options[name];
2284
+ ret = callback.apply(elem, args || []);
2285
+ for (name in options) elem.style[name] = old[name];
2286
+ return ret;
2287
+ };
2288
+ var ralpha = /alpha\([^)]*\)/i,
2289
+ ropacity = /opacity\s*=\s*([^)]*)/,
2290
+ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
2291
+ rnumsplit = new RegExp("^(" + pnum + ")(.*)$", "i"),
2292
+ rrelNum = new RegExp("^([+-])=(" + pnum + ")", "i"),
2293
+ cssShow = {
2294
+ position: "absolute",
2295
+ visibility: "hidden",
2296
+ display: "block"
2297
+ },
2298
+ cssNormalTransform = {
2299
+ letterSpacing: "0",
2300
+ fontWeight: "400"
2301
+ },
2302
+ cssPrefixes = ["Webkit", "O", "Moz", "ms"];
2303
+ jQuery.extend({
2304
+ cssHooks: {
2305
+ opacity: {
2306
+ get: function (elem, computed) {
2307
+ if (computed) {
2308
+ var ret = curCSS(elem, "opacity");
2309
+ return "" === ret ? "1" : ret;
2310
+ }
2311
+ }
2312
+ }
2313
+ },
2314
+ cssNumber: {
2315
+ columnCount: !0,
2316
+ fillOpacity: !0,
2317
+ flexGrow: !0,
2318
+ flexShrink: !0,
2319
+ fontWeight: !0,
2320
+ lineHeight: !0,
2321
+ opacity: !0,
2322
+ order: !0,
2323
+ orphans: !0,
2324
+ widows: !0,
2325
+ zIndex: !0,
2326
+ zoom: !0
2327
+ },
2328
+ cssProps: {
2329
+ "float": support.cssFloat ? "cssFloat" : "styleFloat"
2330
+ },
2331
+ style: function (elem, name, value, extra) {
2332
+ if (elem && 3 !== elem.nodeType && 8 !== elem.nodeType && elem.style) {
2333
+ var ret,
2334
+ type,
2335
+ hooks,
2336
+ origName = jQuery.camelCase(name),
2337
+ style = elem.style;
2338
+ if (name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(style, origName)), hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName], void 0 === value) return hooks && "get" in hooks && void 0 !== (ret = hooks.get(elem, !1, extra)) ? ret : style[name];
2339
+ if (type = typeof value, "string" === type && (ret = rrelNum.exec(value)) && (value = (ret[1] + 1) * ret[2] + parseFloat(jQuery.css(elem, name)), type = "number"), null != value && value === value && ("number" !== type || jQuery.cssNumber[origName] || (value += "px"), support.clearCloneStyle || "" !== value || 0 !== name.indexOf("background") || (style[name] = "inherit"), !(hooks && "set" in hooks && void 0 === (value = hooks.set(elem, value, extra))))) try {
2340
+ style[name] = value;
2341
+ } catch (e) {}
2342
+ }
2343
+ },
2344
+ css: function (elem, name, extra, styles) {
2345
+ var num,
2346
+ val,
2347
+ hooks,
2348
+ origName = jQuery.camelCase(name);
2349
+ return name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(elem.style, origName)), hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName], hooks && "get" in hooks && (val = hooks.get(elem, !0, extra)), void 0 === val && (val = curCSS(elem, name, styles)), "normal" === val && name in cssNormalTransform && (val = cssNormalTransform[name]), "" === extra || extra ? (num = parseFloat(val), extra === !0 || jQuery.isNumeric(num) ? num || 0 : val) : val;
2350
+ }
2351
+ }), jQuery.each(["height", "width"], function (i, name) {
2352
+ jQuery.cssHooks[name] = {
2353
+ get: function (elem, computed, extra) {
2354
+ return computed ? rdisplayswap.test(jQuery.css(elem, "display")) && 0 === elem.offsetWidth ? jQuery.swap(elem, cssShow, function () {
2355
+ return getWidthOrHeight(elem, name, extra);
2356
+ }) : getWidthOrHeight(elem, name, extra) : void 0;
2357
+ },
2358
+ set: function (elem, value, extra) {
2359
+ var styles = extra && getStyles(elem);
2360
+ return setPositiveNumber(elem, value, extra ? augmentWidthOrHeight(elem, name, extra, support.boxSizing && "border-box" === jQuery.css(elem, "boxSizing", !1, styles), styles) : 0);
2361
+ }
2362
+ };
2363
+ }), support.opacity || (jQuery.cssHooks.opacity = {
2364
+ get: function (elem, computed) {
2365
+ return ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "" : computed ? "1" : "";
2366
+ },
2367
+ set: function (elem, value) {
2368
+ var style = elem.style,
2369
+ currentStyle = elem.currentStyle,
2370
+ opacity = jQuery.isNumeric(value) ? "alpha(opacity=" + 100 * value + ")" : "",
2371
+ filter = currentStyle && currentStyle.filter || style.filter || "";
2372
+ style.zoom = 1, (value >= 1 || "" === value) && "" === jQuery.trim(filter.replace(ralpha, "")) && style.removeAttribute && (style.removeAttribute("filter"), "" === value || currentStyle && !currentStyle.filter) || (style.filter = ralpha.test(filter) ? filter.replace(ralpha, opacity) : filter + " " + opacity);
2373
+ }
2374
+ }), jQuery.cssHooks.marginRight = addGetHookIf(support.reliableMarginRight, function (elem, computed) {
2375
+ return computed ? jQuery.swap(elem, {
2376
+ display: "inline-block"
2377
+ }, curCSS, [elem, "marginRight"]) : void 0;
2378
+ }), jQuery.each({
2379
+ margin: "",
2380
+ padding: "",
2381
+ border: "Width"
2382
+ }, function (prefix, suffix) {
2383
+ jQuery.cssHooks[prefix + suffix] = {
2384
+ expand: function (value) {
2385
+ for (var i = 0, expanded = {}, parts = "string" == typeof value ? value.split(" ") : [value]; 4 > i; i++) expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];
2386
+ return expanded;
2387
+ }
2388
+ }, rmargin.test(prefix) || (jQuery.cssHooks[prefix + suffix].set = setPositiveNumber);
2389
+ }), jQuery.fn.extend({
2390
+ css: function (name, value) {
2391
+ return access(this, function (elem, name, value) {
2392
+ var styles,
2393
+ len,
2394
+ map = {},
2395
+ i = 0;
2396
+ if (jQuery.isArray(name)) {
2397
+ for (styles = getStyles(elem), len = name.length; len > i; i++) map[name[i]] = jQuery.css(elem, name[i], !1, styles);
2398
+ return map;
2399
+ }
2400
+ return void 0 !== value ? jQuery.style(elem, name, value) : jQuery.css(elem, name);
2401
+ }, name, value, arguments.length > 1);
2402
+ },
2403
+ show: function () {
2404
+ return showHide(this, !0);
2405
+ },
2406
+ hide: function () {
2407
+ return showHide(this);
2408
+ },
2409
+ toggle: function (state) {
2410
+ return "boolean" == typeof state ? state ? this.show() : this.hide() : this.each(function () {
2411
+ isHidden(this) ? jQuery(this).show() : jQuery(this).hide();
2412
+ });
2413
+ }
2414
+ }), jQuery.Tween = Tween, Tween.prototype = {
2415
+ constructor: Tween,
2416
+ init: function (elem, options, prop, end, easing, unit) {
2417
+ this.elem = elem, this.prop = prop, this.easing = easing || "swing", this.options = options, this.start = this.now = this.cur(), this.end = end, this.unit = unit || (jQuery.cssNumber[prop] ? "" : "px");
2418
+ },
2419
+ cur: function () {
2420
+ var hooks = Tween.propHooks[this.prop];
2421
+ return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);
2422
+ },
2423
+ run: function (percent) {
2424
+ var eased,
2425
+ hooks = Tween.propHooks[this.prop];
2426
+ return this.options.duration ? this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration) : this.pos = eased = percent, this.now = (this.end - this.start) * eased + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), hooks && hooks.set ? hooks.set(this) : Tween.propHooks._default.set(this), this;
2427
+ }
2428
+ }, Tween.prototype.init.prototype = Tween.prototype, Tween.propHooks = {
2429
+ _default: {
2430
+ get: function (tween) {
2431
+ var result;
2432
+ return null == tween.elem[tween.prop] || tween.elem.style && null != tween.elem.style[tween.prop] ? (result = jQuery.css(tween.elem, tween.prop, ""), result && "auto" !== result ? result : 0) : tween.elem[tween.prop];
2433
+ },
2434
+ set: function (tween) {
2435
+ jQuery.fx.step[tween.prop] ? jQuery.fx.step[tween.prop](tween) : tween.elem.style && (null != tween.elem.style[jQuery.cssProps[tween.prop]] || jQuery.cssHooks[tween.prop]) ? jQuery.style(tween.elem, tween.prop, tween.now + tween.unit) : tween.elem[tween.prop] = tween.now;
2436
+ }
2437
+ }
2438
+ }, Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
2439
+ set: function (tween) {
2440
+ tween.elem.nodeType && tween.elem.parentNode && (tween.elem[tween.prop] = tween.now);
2441
+ }
2442
+ }, jQuery.easing = {
2443
+ linear: function (p) {
2444
+ return p;
2445
+ },
2446
+ swing: function (p) {
2447
+ return .5 - Math.cos(p * Math.PI) / 2;
2448
+ }
2449
+ }, jQuery.fx = Tween.prototype.init, jQuery.fx.step = {};
2450
+ var fxNow,
2451
+ timerId,
2452
+ rfxtypes = /^(?:toggle|show|hide)$/,
2453
+ rfxnum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i"),
2454
+ rrun = /queueHooks$/,
2455
+ animationPrefilters = [defaultPrefilter],
2456
+ tweeners = {
2457
+ "*": [function (prop, value) {
2458
+ var tween = this.createTween(prop, value),
2459
+ target = tween.cur(),
2460
+ parts = rfxnum.exec(value),
2461
+ unit = parts && parts[3] || (jQuery.cssNumber[prop] ? "" : "px"),
2462
+ start = (jQuery.cssNumber[prop] || "px" !== unit && +target) && rfxnum.exec(jQuery.css(tween.elem, prop)),
2463
+ scale = 1,
2464
+ maxIterations = 20;
2465
+ if (start && start[3] !== unit) {
2466
+ unit = unit || start[3], parts = parts || [], start = +target || 1;
2467
+ do scale = scale || ".5", start /= scale, jQuery.style(tween.elem, prop, start + unit); while (scale !== (scale = tween.cur() / target) && 1 !== scale && --maxIterations);
2468
+ }
2469
+ return parts && (start = tween.start = +start || +target || 0, tween.unit = unit, tween.end = parts[1] ? start + (parts[1] + 1) * parts[2] : +parts[2]), tween;
2470
+ }]
2471
+ };
2472
+ jQuery.Animation = jQuery.extend(Animation, {
2473
+ tweener: function (props, callback) {
2474
+ jQuery.isFunction(props) ? (callback = props, props = ["*"]) : props = props.split(" ");
2475
+ for (var prop, index = 0, length = props.length; length > index; index++) prop = props[index], tweeners[prop] = tweeners[prop] || [], tweeners[prop].unshift(callback);
2476
+ },
2477
+ prefilter: function (callback, prepend) {
2478
+ prepend ? animationPrefilters.unshift(callback) : animationPrefilters.push(callback);
2479
+ }
2480
+ }), jQuery.speed = function (speed, easing, fn) {
2481
+ var opt = speed && "object" == typeof speed ? jQuery.extend({}, speed) : {
2482
+ complete: fn || !fn && easing || jQuery.isFunction(speed) && speed,
2483
+ duration: speed,
2484
+ easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
2485
+ };
2486
+ return opt.duration = jQuery.fx.off ? 0 : "number" == typeof opt.duration ? opt.duration : opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default, (null == opt.queue || opt.queue === !0) && (opt.queue = "fx"), opt.old = opt.complete, opt.complete = function () {
2487
+ jQuery.isFunction(opt.old) && opt.old.call(this), opt.queue && jQuery.dequeue(this, opt.queue);
2488
+ }, opt;
2489
+ }, jQuery.fn.extend({
2490
+ fadeTo: function (speed, to, easing, callback) {
2491
+ return this.filter(isHidden).css("opacity", 0).show().end().animate({
2492
+ opacity: to
2493
+ }, speed, easing, callback);
2494
+ },
2495
+ animate: function (prop, speed, easing, callback) {
2496
+ var empty = jQuery.isEmptyObject(prop),
2497
+ optall = jQuery.speed(speed, easing, callback),
2498
+ doAnimation = function () {
2499
+ var anim = Animation(this, jQuery.extend({}, prop), optall);
2500
+ (empty || jQuery._data(this, "finish")) && anim.stop(!0);
2501
+ };
2502
+ return doAnimation.finish = doAnimation, empty || optall.queue === !1 ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);
2503
+ },
2504
+ stop: function (type, clearQueue, gotoEnd) {
2505
+ var stopQueue = function (hooks) {
2506
+ var stop = hooks.stop;
2507
+ delete hooks.stop, stop(gotoEnd);
2508
+ };
2509
+ return "string" != typeof type && (gotoEnd = clearQueue, clearQueue = type, type = void 0), clearQueue && type !== !1 && this.queue(type || "fx", []), this.each(function () {
2510
+ var dequeue = !0,
2511
+ index = null != type && type + "queueHooks",
2512
+ timers = jQuery.timers,
2513
+ data = jQuery._data(this);
2514
+ if (index) data[index] && data[index].stop && stopQueue(data[index]);else for (index in data) data[index] && data[index].stop && rrun.test(index) && stopQueue(data[index]);
2515
+ for (index = timers.length; index--;) timers[index].elem !== this || null != type && timers[index].queue !== type || (timers[index].anim.stop(gotoEnd), dequeue = !1, timers.splice(index, 1));
2516
+ (dequeue || !gotoEnd) && jQuery.dequeue(this, type);
2517
+ });
2518
+ },
2519
+ finish: function (type) {
2520
+ return type !== !1 && (type = type || "fx"), this.each(function () {
2521
+ var index,
2522
+ data = jQuery._data(this),
2523
+ queue = data[type + "queue"],
2524
+ hooks = data[type + "queueHooks"],
2525
+ timers = jQuery.timers,
2526
+ length = queue ? queue.length : 0;
2527
+ for (data.finish = !0, jQuery.queue(this, type, []), hooks && hooks.stop && hooks.stop.call(this, !0), index = timers.length; index--;) timers[index].elem === this && timers[index].queue === type && (timers[index].anim.stop(!0), timers.splice(index, 1));
2528
+ for (index = 0; length > index; index++) queue[index] && queue[index].finish && queue[index].finish.call(this);
2529
+ delete data.finish;
2530
+ });
2531
+ }
2532
+ }), jQuery.each(["toggle", "show", "hide"], function (i, name) {
2533
+ var cssFn = jQuery.fn[name];
2534
+ jQuery.fn[name] = function (speed, easing, callback) {
2535
+ return null == speed || "boolean" == typeof speed ? cssFn.apply(this, arguments) : this.animate(genFx(name, !0), speed, easing, callback);
2536
+ };
2537
+ }), jQuery.each({
2538
+ slideDown: genFx("show"),
2539
+ slideUp: genFx("hide"),
2540
+ slideToggle: genFx("toggle"),
2541
+ fadeIn: {
2542
+ opacity: "show"
2543
+ },
2544
+ fadeOut: {
2545
+ opacity: "hide"
2546
+ },
2547
+ fadeToggle: {
2548
+ opacity: "toggle"
2549
+ }
2550
+ }, function (name, props) {
2551
+ jQuery.fn[name] = function (speed, easing, callback) {
2552
+ return this.animate(props, speed, easing, callback);
2553
+ };
2554
+ }), jQuery.timers = [], jQuery.fx.tick = function () {
2555
+ var timer,
2556
+ timers = jQuery.timers,
2557
+ i = 0;
2558
+ for (fxNow = jQuery.now(); i < timers.length; i++) timer = timers[i], timer() || timers[i] !== timer || timers.splice(i--, 1);
2559
+ timers.length || jQuery.fx.stop(), fxNow = void 0;
2560
+ }, jQuery.fx.timer = function (timer) {
2561
+ jQuery.timers.push(timer), timer() ? jQuery.fx.start() : jQuery.timers.pop();
2562
+ }, jQuery.fx.interval = 13, jQuery.fx.start = function () {
2563
+ timerId || (timerId = setInterval(jQuery.fx.tick, jQuery.fx.interval));
2564
+ }, jQuery.fx.stop = function () {
2565
+ clearInterval(timerId), timerId = null;
2566
+ }, jQuery.fx.speeds = {
2567
+ slow: 600,
2568
+ fast: 200,
2569
+ _default: 400
2570
+ }, jQuery.fn.delay = function (time, type) {
2571
+ return time = jQuery.fx ? jQuery.fx.speeds[time] || time : time, type = type || "fx", this.queue(type, function (next, hooks) {
2572
+ var timeout = setTimeout(next, time);
2573
+ hooks.stop = function () {
2574
+ clearTimeout(timeout);
2575
+ };
2576
+ });
2577
+ }, function () {
2578
+ var input, div, select, a, opt;
2579
+ div = document.createElement("div"), div.setAttribute("className", "t"), div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", a = div.getElementsByTagName("a")[0], select = document.createElement("select"), opt = select.appendChild(document.createElement("option")), input = div.getElementsByTagName("input")[0], a.style.cssText = "top:1px", support.getSetAttribute = "t" !== div.className, support.style = /top/.test(a.getAttribute("style")), support.hrefNormalized = "/a" === a.getAttribute("href"), support.checkOn = !!input.value, support.optSelected = opt.selected, support.enctype = !!document.createElement("form").enctype, select.disabled = !0, support.optDisabled = !opt.disabled, input = document.createElement("input"), input.setAttribute("value", ""), support.input = "" === input.getAttribute("value"), input.value = "t", input.setAttribute("type", "radio"), support.radioValue = "t" === input.value;
2580
+ }();
2581
+ var rreturn = /\r/g;
2582
+ jQuery.fn.extend({
2583
+ val: function (value) {
2584
+ var hooks,
2585
+ ret,
2586
+ isFunction,
2587
+ elem = this[0];
2588
+ {
2589
+ if (arguments.length) return isFunction = jQuery.isFunction(value), this.each(function (i) {
2590
+ var val;
2591
+ 1 === this.nodeType && (val = isFunction ? value.call(this, i, jQuery(this).val()) : value, null == val ? val = "" : "number" == typeof val ? val += "" : jQuery.isArray(val) && (val = jQuery.map(val, function (value) {
2592
+ return null == value ? "" : value + "";
2593
+ })), hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()], hooks && "set" in hooks && void 0 !== hooks.set(this, val, "value") || (this.value = val));
2594
+ });
2595
+ if (elem) return hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()], hooks && "get" in hooks && void 0 !== (ret = hooks.get(elem, "value")) ? ret : (ret = elem.value, "string" == typeof ret ? ret.replace(rreturn, "") : null == ret ? "" : ret);
2596
+ }
2597
+ }
2598
+ }), jQuery.extend({
2599
+ valHooks: {
2600
+ option: {
2601
+ get: function (elem) {
2602
+ var val = jQuery.find.attr(elem, "value");
2603
+ return null != val ? val : jQuery.trim(jQuery.text(elem));
2604
+ }
2605
+ },
2606
+ select: {
2607
+ get: function (elem) {
2608
+ for (var value, option, options = elem.options, index = elem.selectedIndex, one = "select-one" === elem.type || 0 > index, values = one ? null : [], max = one ? index + 1 : options.length, i = 0 > index ? max : one ? index : 0; max > i; i++) if (option = options[i], (option.selected || i === index) && (support.optDisabled ? !option.disabled : null === option.getAttribute("disabled")) && (!option.parentNode.disabled || !jQuery.nodeName(option.parentNode, "optgroup"))) {
2609
+ if (value = jQuery(option).val(), one) return value;
2610
+ values.push(value);
2611
+ }
2612
+ return values;
2613
+ },
2614
+ set: function (elem, value) {
2615
+ for (var optionSet, option, options = elem.options, values = jQuery.makeArray(value), i = options.length; i--;) if (option = options[i], jQuery.inArray(jQuery.valHooks.option.get(option), values) >= 0) try {
2616
+ option.selected = optionSet = !0;
2617
+ } catch (_) {
2618
+ option.scrollHeight;
2619
+ } else option.selected = !1;
2620
+ return optionSet || (elem.selectedIndex = -1), options;
2621
+ }
2622
+ }
2623
+ }
2624
+ }), jQuery.each(["radio", "checkbox"], function () {
2625
+ jQuery.valHooks[this] = {
2626
+ set: function (elem, value) {
2627
+ return jQuery.isArray(value) ? elem.checked = jQuery.inArray(jQuery(elem).val(), value) >= 0 : void 0;
2628
+ }
2629
+ }, support.checkOn || (jQuery.valHooks[this].get = function (elem) {
2630
+ return null === elem.getAttribute("value") ? "on" : elem.value;
2631
+ });
2632
+ });
2633
+ var nodeHook,
2634
+ boolHook,
2635
+ attrHandle = jQuery.expr.attrHandle,
2636
+ ruseDefault = /^(?:checked|selected)$/i,
2637
+ getSetAttribute = support.getSetAttribute,
2638
+ getSetInput = support.input;
2639
+ jQuery.fn.extend({
2640
+ attr: function (name, value) {
2641
+ return access(this, jQuery.attr, name, value, arguments.length > 1);
2642
+ },
2643
+ removeAttr: function (name) {
2644
+ return this.each(function () {
2645
+ jQuery.removeAttr(this, name);
2646
+ });
2647
+ }
2648
+ }), jQuery.extend({
2649
+ attr: function (elem, name, value) {
2650
+ var hooks,
2651
+ ret,
2652
+ nType = elem.nodeType;
2653
+ if (elem && 3 !== nType && 8 !== nType && 2 !== nType) return typeof elem.getAttribute === strundefined ? jQuery.prop(elem, name, value) : (1 === nType && jQuery.isXMLDoc(elem) || (name = name.toLowerCase(), hooks = jQuery.attrHooks[name] || (jQuery.expr.match.bool.test(name) ? boolHook : nodeHook)), void 0 === value ? hooks && "get" in hooks && null !== (ret = hooks.get(elem, name)) ? ret : (ret = jQuery.find.attr(elem, name), null == ret ? void 0 : ret) : null !== value ? hooks && "set" in hooks && void 0 !== (ret = hooks.set(elem, value, name)) ? ret : (elem.setAttribute(name, value + ""), value) : void jQuery.removeAttr(elem, name));
2654
+ },
2655
+ removeAttr: function (elem, value) {
2656
+ var name,
2657
+ propName,
2658
+ i = 0,
2659
+ attrNames = value && value.match(rnotwhite);
2660
+ if (attrNames && 1 === elem.nodeType) for (; name = attrNames[i++];) propName = jQuery.propFix[name] || name, jQuery.expr.match.bool.test(name) ? getSetInput && getSetAttribute || !ruseDefault.test(name) ? elem[propName] = !1 : elem[jQuery.camelCase("default-" + name)] = elem[propName] = !1 : jQuery.attr(elem, name, ""), elem.removeAttribute(getSetAttribute ? name : propName);
2661
+ },
2662
+ attrHooks: {
2663
+ type: {
2664
+ set: function (elem, value) {
2665
+ if (!support.radioValue && "radio" === value && jQuery.nodeName(elem, "input")) {
2666
+ var val = elem.value;
2667
+ return elem.setAttribute("type", value), val && (elem.value = val), value;
2668
+ }
2669
+ }
2670
+ }
2671
+ }
2672
+ }), boolHook = {
2673
+ set: function (elem, value, name) {
2674
+ return value === !1 ? jQuery.removeAttr(elem, name) : getSetInput && getSetAttribute || !ruseDefault.test(name) ? elem.setAttribute(!getSetAttribute && jQuery.propFix[name] || name, name) : elem[jQuery.camelCase("default-" + name)] = elem[name] = !0, name;
2675
+ }
2676
+ }, jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g), function (i, name) {
2677
+ var getter = attrHandle[name] || jQuery.find.attr;
2678
+ attrHandle[name] = getSetInput && getSetAttribute || !ruseDefault.test(name) ? function (elem, name, isXML) {
2679
+ var ret, handle;
2680
+ return isXML || (handle = attrHandle[name], attrHandle[name] = ret, ret = null != getter(elem, name, isXML) ? name.toLowerCase() : null, attrHandle[name] = handle), ret;
2681
+ } : function (elem, name, isXML) {
2682
+ return isXML ? void 0 : elem[jQuery.camelCase("default-" + name)] ? name.toLowerCase() : null;
2683
+ };
2684
+ }), getSetInput && getSetAttribute || (jQuery.attrHooks.value = {
2685
+ set: function (elem, value, name) {
2686
+ return jQuery.nodeName(elem, "input") ? void (elem.defaultValue = value) : nodeHook && nodeHook.set(elem, value, name);
2687
+ }
2688
+ }), getSetAttribute || (nodeHook = {
2689
+ set: function (elem, value, name) {
2690
+ var ret = elem.getAttributeNode(name);
2691
+ return ret || elem.setAttributeNode(ret = elem.ownerDocument.createAttribute(name)), ret.value = value += "", "value" === name || value === elem.getAttribute(name) ? value : void 0;
2692
+ }
2693
+ }, attrHandle.id = attrHandle.name = attrHandle.coords = function (elem, name, isXML) {
2694
+ var ret;
2695
+ return isXML ? void 0 : (ret = elem.getAttributeNode(name)) && "" !== ret.value ? ret.value : null;
2696
+ }, jQuery.valHooks.button = {
2697
+ get: function (elem, name) {
2698
+ var ret = elem.getAttributeNode(name);
2699
+ return ret && ret.specified ? ret.value : void 0;
2700
+ },
2701
+ set: nodeHook.set
2702
+ }, jQuery.attrHooks.contenteditable = {
2703
+ set: function (elem, value, name) {
2704
+ nodeHook.set(elem, "" === value ? !1 : value, name);
2705
+ }
2706
+ }, jQuery.each(["width", "height"], function (i, name) {
2707
+ jQuery.attrHooks[name] = {
2708
+ set: function (elem, value) {
2709
+ return "" === value ? (elem.setAttribute(name, "auto"), value) : void 0;
2710
+ }
2711
+ };
2712
+ })), support.style || (jQuery.attrHooks.style = {
2713
+ get: function (elem) {
2714
+ return elem.style.cssText || void 0;
2715
+ },
2716
+ set: function (elem, value) {
2717
+ return elem.style.cssText = value + "";
2718
+ }
2719
+ });
2720
+ var rfocusable = /^(?:input|select|textarea|button|object)$/i,
2721
+ rclickable = /^(?:a|area)$/i;
2722
+ jQuery.fn.extend({
2723
+ prop: function (name, value) {
2724
+ return access(this, jQuery.prop, name, value, arguments.length > 1);
2725
+ },
2726
+ removeProp: function (name) {
2727
+ return name = jQuery.propFix[name] || name, this.each(function () {
2728
+ try {
2729
+ this[name] = void 0, delete this[name];
2730
+ } catch (e) {}
2731
+ });
2732
+ }
2733
+ }), jQuery.extend({
2734
+ propFix: {
2735
+ "for": "htmlFor",
2736
+ "class": "className"
2737
+ },
2738
+ prop: function (elem, name, value) {
2739
+ var ret,
2740
+ hooks,
2741
+ notxml,
2742
+ nType = elem.nodeType;
2743
+ if (elem && 3 !== nType && 8 !== nType && 2 !== nType) return notxml = 1 !== nType || !jQuery.isXMLDoc(elem), notxml && (name = jQuery.propFix[name] || name, hooks = jQuery.propHooks[name]), void 0 !== value ? hooks && "set" in hooks && void 0 !== (ret = hooks.set(elem, value, name)) ? ret : elem[name] = value : hooks && "get" in hooks && null !== (ret = hooks.get(elem, name)) ? ret : elem[name];
2744
+ },
2745
+ propHooks: {
2746
+ tabIndex: {
2747
+ get: function (elem) {
2748
+ var tabindex = jQuery.find.attr(elem, "tabindex");
2749
+ return tabindex ? parseInt(tabindex, 10) : rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href ? 0 : -1;
2750
+ }
2751
+ }
2752
+ }
2753
+ }), support.hrefNormalized || jQuery.each(["href", "src"], function (i, name) {
2754
+ jQuery.propHooks[name] = {
2755
+ get: function (elem) {
2756
+ return elem.getAttribute(name, 4);
2757
+ }
2758
+ };
2759
+ }), support.optSelected || (jQuery.propHooks.selected = {
2760
+ get: function (elem) {
2761
+ var parent = elem.parentNode;
2762
+ return parent && (parent.selectedIndex, parent.parentNode && parent.parentNode.selectedIndex), null;
2763
+ }
2764
+ }), jQuery.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function () {
2765
+ jQuery.propFix[this.toLowerCase()] = this;
2766
+ }), support.enctype || (jQuery.propFix.enctype = "encoding");
2767
+ var rclass = /[\t\r\n\f]/g;
2768
+ jQuery.fn.extend({
2769
+ addClass: function (value) {
2770
+ var classes,
2771
+ elem,
2772
+ cur,
2773
+ clazz,
2774
+ j,
2775
+ finalValue,
2776
+ i = 0,
2777
+ len = this.length,
2778
+ proceed = "string" == typeof value && value;
2779
+ if (jQuery.isFunction(value)) return this.each(function (j) {
2780
+ jQuery(this).addClass(value.call(this, j, this.className));
2781
+ });
2782
+ if (proceed) for (classes = (value || "").match(rnotwhite) || []; len > i; i++) if (elem = this[i], cur = 1 === elem.nodeType && (elem.className ? (" " + elem.className + " ").replace(rclass, " ") : " ")) {
2783
+ for (j = 0; clazz = classes[j++];) cur.indexOf(" " + clazz + " ") < 0 && (cur += clazz + " ");
2784
+ finalValue = jQuery.trim(cur), elem.className !== finalValue && (elem.className = finalValue);
2785
+ }
2786
+ return this;
2787
+ },
2788
+ removeClass: function (value) {
2789
+ var classes,
2790
+ elem,
2791
+ cur,
2792
+ clazz,
2793
+ j,
2794
+ finalValue,
2795
+ i = 0,
2796
+ len = this.length,
2797
+ proceed = 0 === arguments.length || "string" == typeof value && value;
2798
+ if (jQuery.isFunction(value)) return this.each(function (j) {
2799
+ jQuery(this).removeClass(value.call(this, j, this.className));
2800
+ });
2801
+ if (proceed) for (classes = (value || "").match(rnotwhite) || []; len > i; i++) if (elem = this[i], cur = 1 === elem.nodeType && (elem.className ? (" " + elem.className + " ").replace(rclass, " ") : "")) {
2802
+ for (j = 0; clazz = classes[j++];) for (; cur.indexOf(" " + clazz + " ") >= 0;) cur = cur.replace(" " + clazz + " ", " ");
2803
+ finalValue = value ? jQuery.trim(cur) : "", elem.className !== finalValue && (elem.className = finalValue);
2804
+ }
2805
+ return this;
2806
+ },
2807
+ toggleClass: function (value, stateVal) {
2808
+ var type = typeof value;
2809
+ return "boolean" == typeof stateVal && "string" === type ? stateVal ? this.addClass(value) : this.removeClass(value) : jQuery.isFunction(value) ? this.each(function (i) {
2810
+ jQuery(this).toggleClass(value.call(this, i, this.className, stateVal), stateVal);
2811
+ }) : this.each(function () {
2812
+ if ("string" === type) for (var className, i = 0, self = jQuery(this), classNames = value.match(rnotwhite) || []; className = classNames[i++];) self.hasClass(className) ? self.removeClass(className) : self.addClass(className);else (type === strundefined || "boolean" === type) && (this.className && jQuery._data(this, "__className__", this.className), this.className = this.className || value === !1 ? "" : jQuery._data(this, "__className__") || "");
2813
+ });
2814
+ },
2815
+ hasClass: function (selector) {
2816
+ for (var className = " " + selector + " ", i = 0, l = this.length; l > i; i++) if (1 === this[i].nodeType && (" " + this[i].className + " ").replace(rclass, " ").indexOf(className) >= 0) return !0;
2817
+ return !1;
2818
+ }
2819
+ }), jQuery.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function (i, name) {
2820
+ jQuery.fn[name] = function (data, fn) {
2821
+ return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);
2822
+ };
2823
+ }), jQuery.fn.extend({
2824
+ hover: function (fnOver, fnOut) {
2825
+ return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);
2826
+ },
2827
+ bind: function (types, data, fn) {
2828
+ return this.on(types, null, data, fn);
2829
+ },
2830
+ unbind: function (types, fn) {
2831
+ return this.off(types, null, fn);
2832
+ },
2833
+ delegate: function (selector, types, data, fn) {
2834
+ return this.on(types, selector, data, fn);
2835
+ },
2836
+ undelegate: function (selector, types, fn) {
2837
+ return 1 === arguments.length ? this.off(selector, "**") : this.off(types, selector || "**", fn);
2838
+ }
2839
+ });
2840
+ var nonce = jQuery.now(),
2841
+ rquery = /\?/,
2842
+ rvalidtokens = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;
2843
+ jQuery.parseJSON = function (data) {
2844
+ if (window.JSON && window.JSON.parse) return window.JSON.parse(data + "");
2845
+ var requireNonComma,
2846
+ depth = null,
2847
+ str = jQuery.trim(data + "");
2848
+ return str && !jQuery.trim(str.replace(rvalidtokens, function (token, comma, open, close) {
2849
+ return requireNonComma && comma && (depth = 0), 0 === depth ? token : (requireNonComma = open || comma, depth += !close - !open, "");
2850
+ })) ? Function("return " + str)() : jQuery.error("Invalid JSON: " + data);
2851
+ }, jQuery.parseXML = function (data) {
2852
+ var xml, tmp;
2853
+ if (!data || "string" != typeof data) return null;
2854
+ try {
2855
+ window.DOMParser ? (tmp = new DOMParser(), xml = tmp.parseFromString(data, "text/xml")) : (xml = new ActiveXObject("Microsoft.XMLDOM"), xml.async = "false", xml.loadXML(data));
2856
+ } catch (e) {
2857
+ xml = void 0;
2858
+ }
2859
+ return xml && xml.documentElement && !xml.getElementsByTagName("parsererror").length || jQuery.error("Invalid XML: " + data), xml;
2860
+ };
2861
+ var ajaxLocParts,
2862
+ ajaxLocation,
2863
+ rhash = /#.*$/,
2864
+ rts = /([?&])_=[^&]*/,
2865
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm,
2866
+ rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
2867
+ rnoContent = /^(?:GET|HEAD)$/,
2868
+ rprotocol = /^\/\//,
2869
+ rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
2870
+ prefilters = {},
2871
+ transports = {},
2872
+ allTypes = "*/".concat("*");
2873
+ try {
2874
+ ajaxLocation = location.href;
2875
+ } catch (e) {
2876
+ ajaxLocation = document.createElement("a"), ajaxLocation.href = "", ajaxLocation = ajaxLocation.href;
2877
+ }
2878
+ ajaxLocParts = rurl.exec(ajaxLocation.toLowerCase()) || [], jQuery.extend({
2879
+ active: 0,
2880
+ lastModified: {},
2881
+ etag: {},
2882
+ ajaxSettings: {
2883
+ url: ajaxLocation,
2884
+ type: "GET",
2885
+ isLocal: rlocalProtocol.test(ajaxLocParts[1]),
2886
+ global: !0,
2887
+ processData: !0,
2888
+ async: !0,
2889
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
2890
+ accepts: {
2891
+ "*": allTypes,
2892
+ text: "text/plain",
2893
+ html: "text/html",
2894
+ xml: "application/xml, text/xml",
2895
+ json: "application/json, text/javascript"
2896
+ },
2897
+ contents: {
2898
+ xml: /xml/,
2899
+ html: /html/,
2900
+ json: /json/
2901
+ },
2902
+ responseFields: {
2903
+ xml: "responseXML",
2904
+ text: "responseText",
2905
+ json: "responseJSON"
2906
+ },
2907
+ converters: {
2908
+ "* text": String,
2909
+ "text html": !0,
2910
+ "text json": jQuery.parseJSON,
2911
+ "text xml": jQuery.parseXML
2912
+ },
2913
+ flatOptions: {
2914
+ url: !0,
2915
+ context: !0
2916
+ }
2917
+ },
2918
+ ajaxSetup: function (target, settings) {
2919
+ return settings ? ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) : ajaxExtend(jQuery.ajaxSettings, target);
2920
+ },
2921
+ ajaxPrefilter: addToPrefiltersOrTransports(prefilters),
2922
+ ajaxTransport: addToPrefiltersOrTransports(transports),
2923
+ ajax: function (url, options) {
2924
+ function done(status, nativeStatusText, responses, headers) {
2925
+ var isSuccess,
2926
+ success,
2927
+ error,
2928
+ response,
2929
+ modified,
2930
+ statusText = nativeStatusText;
2931
+ 2 !== state && (state = 2, timeoutTimer && clearTimeout(timeoutTimer), transport = void 0, responseHeadersString = headers || "", jqXHR.readyState = status > 0 ? 4 : 0, isSuccess = status >= 200 && 300 > status || 304 === status, responses && (response = ajaxHandleResponses(s, jqXHR, responses)), response = ajaxConvert(s, response, jqXHR, isSuccess), isSuccess ? (s.ifModified && (modified = jqXHR.getResponseHeader("Last-Modified"), modified && (jQuery.lastModified[cacheURL] = modified), modified = jqXHR.getResponseHeader("etag"), modified && (jQuery.etag[cacheURL] = modified)), 204 === status || "HEAD" === s.type ? statusText = "nocontent" : 304 === status ? statusText = "notmodified" : (statusText = response.state, success = response.data, error = response.error, isSuccess = !error)) : (error = statusText, (status || !statusText) && (statusText = "error", 0 > status && (status = 0))), jqXHR.status = status, jqXHR.statusText = (nativeStatusText || statusText) + "", isSuccess ? deferred.resolveWith(callbackContext, [success, statusText, jqXHR]) : deferred.rejectWith(callbackContext, [jqXHR, statusText, error]), jqXHR.statusCode(statusCode), statusCode = void 0, fireGlobals && globalEventContext.trigger(isSuccess ? "ajaxSuccess" : "ajaxError", [jqXHR, s, isSuccess ? success : error]), completeDeferred.fireWith(callbackContext, [jqXHR, statusText]), fireGlobals && (globalEventContext.trigger("ajaxComplete", [jqXHR, s]), --jQuery.active || jQuery.event.trigger("ajaxStop")));
2932
+ }
2933
+ "object" == typeof url && (options = url, url = void 0), options = options || {};
2934
+ var parts,
2935
+ i,
2936
+ cacheURL,
2937
+ responseHeadersString,
2938
+ timeoutTimer,
2939
+ fireGlobals,
2940
+ transport,
2941
+ responseHeaders,
2942
+ s = jQuery.ajaxSetup({}, options),
2943
+ callbackContext = s.context || s,
2944
+ globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,
2945
+ deferred = jQuery.Deferred(),
2946
+ completeDeferred = jQuery.Callbacks("once memory"),
2947
+ statusCode = s.statusCode || {},
2948
+ requestHeaders = {},
2949
+ requestHeadersNames = {},
2950
+ state = 0,
2951
+ strAbort = "canceled",
2952
+ jqXHR = {
2953
+ readyState: 0,
2954
+ getResponseHeader: function (key) {
2955
+ var match;
2956
+ if (2 === state) {
2957
+ if (!responseHeaders) for (responseHeaders = {}; match = rheaders.exec(responseHeadersString);) responseHeaders[match[1].toLowerCase()] = match[2];
2958
+ match = responseHeaders[key.toLowerCase()];
2959
+ }
2960
+ return null == match ? null : match;
2961
+ },
2962
+ getAllResponseHeaders: function () {
2963
+ return 2 === state ? responseHeadersString : null;
2964
+ },
2965
+ setRequestHeader: function (name, value) {
2966
+ var lname = name.toLowerCase();
2967
+ return state || (name = requestHeadersNames[lname] = requestHeadersNames[lname] || name, requestHeaders[name] = value), this;
2968
+ },
2969
+ overrideMimeType: function (type) {
2970
+ return state || (s.mimeType = type), this;
2971
+ },
2972
+ statusCode: function (map) {
2973
+ var code;
2974
+ if (map) if (2 > state) for (code in map) statusCode[code] = [statusCode[code], map[code]];else jqXHR.always(map[jqXHR.status]);
2975
+ return this;
2976
+ },
2977
+ abort: function (statusText) {
2978
+ var finalText = statusText || strAbort;
2979
+ return transport && transport.abort(finalText), done(0, finalText), this;
2980
+ }
2981
+ };
2982
+ if (deferred.promise(jqXHR).complete = completeDeferred.add, jqXHR.success = jqXHR.done, jqXHR.error = jqXHR.fail, s.url = ((url || s.url || ajaxLocation) + "").replace(rhash, "").replace(rprotocol, ajaxLocParts[1] + "//"), s.type = options.method || options.type || s.method || s.type, s.dataTypes = jQuery.trim(s.dataType || "*").toLowerCase().match(rnotwhite) || [""], null == s.crossDomain && (parts = rurl.exec(s.url.toLowerCase()), s.crossDomain = !(!parts || parts[1] === ajaxLocParts[1] && parts[2] === ajaxLocParts[2] && (parts[3] || ("http:" === parts[1] ? "80" : "443")) === (ajaxLocParts[3] || ("http:" === ajaxLocParts[1] ? "80" : "443")))), s.data && s.processData && "string" != typeof s.data && (s.data = jQuery.param(s.data, s.traditional)), inspectPrefiltersOrTransports(prefilters, s, options, jqXHR), 2 === state) return jqXHR;
2983
+ fireGlobals = jQuery.event && s.global, fireGlobals && 0 === jQuery.active++ && jQuery.event.trigger("ajaxStart"), s.type = s.type.toUpperCase(), s.hasContent = !rnoContent.test(s.type), cacheURL = s.url, s.hasContent || (s.data && (cacheURL = s.url += (rquery.test(cacheURL) ? "&" : "?") + s.data, delete s.data), s.cache === !1 && (s.url = rts.test(cacheURL) ? cacheURL.replace(rts, "$1_=" + nonce++) : cacheURL + (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce++)), s.ifModified && (jQuery.lastModified[cacheURL] && jqXHR.setRequestHeader("If-Modified-Since", jQuery.lastModified[cacheURL]), jQuery.etag[cacheURL] && jqXHR.setRequestHeader("If-None-Match", jQuery.etag[cacheURL])), (s.data && s.hasContent && s.contentType !== !1 || options.contentType) && jqXHR.setRequestHeader("Content-Type", s.contentType), jqXHR.setRequestHeader("Accept", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + ("*" !== s.dataTypes[0] ? ", " + allTypes + "; q=0.01" : "") : s.accepts["*"]);
2984
+ for (i in s.headers) jqXHR.setRequestHeader(i, s.headers[i]);
2985
+ if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === !1 || 2 === state)) return jqXHR.abort();
2986
+ strAbort = "abort";
2987
+ for (i in {
2988
+ success: 1,
2989
+ error: 1,
2990
+ complete: 1
2991
+ }) jqXHR[i](s[i]);
2992
+ if (transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR)) {
2993
+ jqXHR.readyState = 1, fireGlobals && globalEventContext.trigger("ajaxSend", [jqXHR, s]), s.async && s.timeout > 0 && (timeoutTimer = setTimeout(function () {
2994
+ jqXHR.abort("timeout");
2995
+ }, s.timeout));
2996
+ try {
2997
+ state = 1, transport.send(requestHeaders, done);
2998
+ } catch (e) {
2999
+ if (!(2 > state)) throw e;
3000
+ done(-1, e);
3001
+ }
3002
+ } else done(-1, "No Transport");
3003
+ return jqXHR;
3004
+ },
3005
+ getJSON: function (url, data, callback) {
3006
+ return jQuery.get(url, data, callback, "json");
3007
+ },
3008
+ getScript: function (url, callback) {
3009
+ return jQuery.get(url, void 0, callback, "script");
3010
+ }
3011
+ }), jQuery.each(["get", "post"], function (i, method) {
3012
+ jQuery[method] = function (url, data, callback, type) {
3013
+ return jQuery.isFunction(data) && (type = type || callback, callback = data, data = void 0), jQuery.ajax({
3014
+ url: url,
3015
+ type: method,
3016
+ dataType: type,
3017
+ data: data,
3018
+ success: callback
3019
+ });
3020
+ };
3021
+ }), jQuery._evalUrl = function (url) {
3022
+ return jQuery.ajax({
3023
+ url: url,
3024
+ type: "GET",
3025
+ dataType: "script",
3026
+ async: !1,
3027
+ global: !1,
3028
+ "throws": !0
3029
+ });
3030
+ }, jQuery.fn.extend({
3031
+ wrapAll: function (html) {
3032
+ if (jQuery.isFunction(html)) return this.each(function (i) {
3033
+ jQuery(this).wrapAll(html.call(this, i));
3034
+ });
3035
+ if (this[0]) {
3036
+ var wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(!0);
3037
+ this[0].parentNode && wrap.insertBefore(this[0]), wrap.map(function () {
3038
+ for (var elem = this; elem.firstChild && 1 === elem.firstChild.nodeType;) elem = elem.firstChild;
3039
+ return elem;
3040
+ }).append(this);
3041
+ }
3042
+ return this;
3043
+ },
3044
+ wrapInner: function (html) {
3045
+ return jQuery.isFunction(html) ? this.each(function (i) {
3046
+ jQuery(this).wrapInner(html.call(this, i));
3047
+ }) : this.each(function () {
3048
+ var self = jQuery(this),
3049
+ contents = self.contents();
3050
+ contents.length ? contents.wrapAll(html) : self.append(html);
3051
+ });
3052
+ },
3053
+ wrap: function (html) {
3054
+ var isFunction = jQuery.isFunction(html);
3055
+ return this.each(function (i) {
3056
+ jQuery(this).wrapAll(isFunction ? html.call(this, i) : html);
3057
+ });
3058
+ },
3059
+ unwrap: function () {
3060
+ return this.parent().each(function () {
3061
+ jQuery.nodeName(this, "body") || jQuery(this).replaceWith(this.childNodes);
3062
+ }).end();
3063
+ }
3064
+ }), jQuery.expr.filters.hidden = function (elem) {
3065
+ return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 || !support.reliableHiddenOffsets() && "none" === (elem.style && elem.style.display || jQuery.css(elem, "display"));
3066
+ }, jQuery.expr.filters.visible = function (elem) {
3067
+ return !jQuery.expr.filters.hidden(elem);
3068
+ };
3069
+ var r20 = /%20/g,
3070
+ rbracket = /\[\]$/,
3071
+ rCRLF = /\r?\n/g,
3072
+ rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
3073
+ rsubmittable = /^(?:input|select|textarea|keygen)/i;
3074
+ jQuery.param = function (a, traditional) {
3075
+ var prefix,
3076
+ s = [],
3077
+ add = function (key, value) {
3078
+ value = jQuery.isFunction(value) ? value() : null == value ? "" : value, s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
3079
+ };
3080
+ if (void 0 === traditional && (traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional), jQuery.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) jQuery.each(a, function () {
3081
+ add(this.name, this.value);
3082
+ });else for (prefix in a) buildParams(prefix, a[prefix], traditional, add);
3083
+ return s.join("&").replace(r20, "+");
3084
+ }, jQuery.fn.extend({
3085
+ serialize: function () {
3086
+ return jQuery.param(this.serializeArray());
3087
+ },
3088
+ serializeArray: function () {
3089
+ return this.map(function () {
3090
+ var elements = jQuery.prop(this, "elements");
3091
+ return elements ? jQuery.makeArray(elements) : this;
3092
+ }).filter(function () {
3093
+ var type = this.type;
3094
+ return this.name && !jQuery(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));
3095
+ }).map(function (i, elem) {
3096
+ var val = jQuery(this).val();
3097
+ return null == val ? null : jQuery.isArray(val) ? jQuery.map(val, function (val) {
3098
+ return {
3099
+ name: elem.name,
3100
+ value: val.replace(rCRLF, "\r\n")
3101
+ };
3102
+ }) : {
3103
+ name: elem.name,
3104
+ value: val.replace(rCRLF, "\r\n")
3105
+ };
3106
+ }).get();
3107
+ }
3108
+ }), jQuery.ajaxSettings.xhr = void 0 !== window.ActiveXObject ? function () {
3109
+ return !this.isLocal && /^(get|post|head|put|delete|options)$/i.test(this.type) && createStandardXHR() || createActiveXHR();
3110
+ } : createStandardXHR;
3111
+ var xhrId = 0,
3112
+ xhrCallbacks = {},
3113
+ xhrSupported = jQuery.ajaxSettings.xhr();
3114
+ window.attachEvent && window.attachEvent("onunload", function () {
3115
+ for (var key in xhrCallbacks) xhrCallbacks[key](void 0, !0);
3116
+ }), support.cors = !!xhrSupported && "withCredentials" in xhrSupported, xhrSupported = support.ajax = !!xhrSupported, xhrSupported && jQuery.ajaxTransport(function (options) {
3117
+ if (!options.crossDomain || support.cors) {
3118
+ var callback;
3119
+ return {
3120
+ send: function (headers, complete) {
3121
+ var i,
3122
+ xhr = options.xhr(),
3123
+ id = ++xhrId;
3124
+ if (xhr.open(options.type, options.url, options.async, options.username, options.password), options.xhrFields) for (i in options.xhrFields) xhr[i] = options.xhrFields[i];
3125
+ options.mimeType && xhr.overrideMimeType && xhr.overrideMimeType(options.mimeType), options.crossDomain || headers["X-Requested-With"] || (headers["X-Requested-With"] = "XMLHttpRequest");
3126
+ for (i in headers) void 0 !== headers[i] && xhr.setRequestHeader(i, headers[i] + "");
3127
+ xhr.send(options.hasContent && options.data || null), callback = function (_, isAbort) {
3128
+ var status, statusText, responses;
3129
+ if (callback && (isAbort || 4 === xhr.readyState)) if (delete xhrCallbacks[id], callback = void 0, xhr.onreadystatechange = jQuery.noop, isAbort) 4 !== xhr.readyState && xhr.abort();else {
3130
+ responses = {}, status = xhr.status, "string" == typeof xhr.responseText && (responses.text = xhr.responseText);
3131
+ try {
3132
+ statusText = xhr.statusText;
3133
+ } catch (e) {
3134
+ statusText = "";
3135
+ }
3136
+ status || !options.isLocal || options.crossDomain ? 1223 === status && (status = 204) : status = responses.text ? 200 : 404;
3137
+ }
3138
+ responses && complete(status, statusText, responses, xhr.getAllResponseHeaders());
3139
+ }, options.async ? 4 === xhr.readyState ? setTimeout(callback) : xhr.onreadystatechange = xhrCallbacks[id] = callback : callback();
3140
+ },
3141
+ abort: function () {
3142
+ callback && callback(void 0, !0);
3143
+ }
3144
+ };
3145
+ }
3146
+ }), jQuery.ajaxSetup({
3147
+ accepts: {
3148
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
3149
+ },
3150
+ contents: {
3151
+ script: /(?:java|ecma)script/
3152
+ },
3153
+ converters: {
3154
+ "text script": function (text) {
3155
+ return jQuery.globalEval(text), text;
3156
+ }
3157
+ }
3158
+ }), jQuery.ajaxPrefilter("script", function (s) {
3159
+ void 0 === s.cache && (s.cache = !1), s.crossDomain && (s.type = "GET", s.global = !1);
3160
+ }), jQuery.ajaxTransport("script", function (s) {
3161
+ if (s.crossDomain) {
3162
+ var script,
3163
+ head = document.head || jQuery("head")[0] || document.documentElement;
3164
+ return {
3165
+ send: function (_, callback) {
3166
+ script = document.createElement("script"), script.async = !0, s.scriptCharset && (script.charset = s.scriptCharset), script.src = s.url, script.onload = script.onreadystatechange = function (_, isAbort) {
3167
+ (isAbort || !script.readyState || /loaded|complete/.test(script.readyState)) && (script.onload = script.onreadystatechange = null, script.parentNode && script.parentNode.removeChild(script), script = null, isAbort || callback(200, "success"));
3168
+ }, head.insertBefore(script, head.firstChild);
3169
+ },
3170
+ abort: function () {
3171
+ script && script.onload(void 0, !0);
3172
+ }
3173
+ };
3174
+ }
3175
+ });
3176
+ var oldCallbacks = [],
3177
+ rjsonp = /(=)\?(?=&|$)|\?\?/;
3178
+ jQuery.ajaxSetup({
3179
+ jsonp: "callback",
3180
+ jsonpCallback: function () {
3181
+ var callback = oldCallbacks.pop() || jQuery.expando + "_" + nonce++;
3182
+ return this[callback] = !0, callback;
3183
+ }
3184
+ }), jQuery.ajaxPrefilter("json jsonp", function (s, originalSettings, jqXHR) {
3185
+ var callbackName,
3186
+ overwritten,
3187
+ responseContainer,
3188
+ jsonProp = s.jsonp !== !1 && (rjsonp.test(s.url) ? "url" : "string" == typeof s.data && !(s.contentType || "").indexOf("application/x-www-form-urlencoded") && rjsonp.test(s.data) && "data");
3189
+ return jsonProp || "jsonp" === s.dataTypes[0] ? (callbackName = s.jsonpCallback = jQuery.isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback, jsonProp ? s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName) : s.jsonp !== !1 && (s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName), s.converters["script json"] = function () {
3190
+ return responseContainer || jQuery.error(callbackName + " was not called"), responseContainer[0];
3191
+ }, s.dataTypes[0] = "json", overwritten = window[callbackName], window[callbackName] = function () {
3192
+ responseContainer = arguments;
3193
+ }, jqXHR.always(function () {
3194
+ window[callbackName] = overwritten, s[callbackName] && (s.jsonpCallback = originalSettings.jsonpCallback, oldCallbacks.push(callbackName)), responseContainer && jQuery.isFunction(overwritten) && overwritten(responseContainer[0]), responseContainer = overwritten = void 0;
3195
+ }), "script") : void 0;
3196
+ }), jQuery.parseHTML = function (data, context, keepScripts) {
3197
+ if (!data || "string" != typeof data) return null;
3198
+ "boolean" == typeof context && (keepScripts = context, context = !1), context = context || document;
3199
+ var parsed = rsingleTag.exec(data),
3200
+ scripts = !keepScripts && [];
3201
+ return parsed ? [context.createElement(parsed[1])] : (parsed = jQuery.buildFragment([data], context, scripts), scripts && scripts.length && jQuery(scripts).remove(), jQuery.merge([], parsed.childNodes));
3202
+ };
3203
+ var _load = jQuery.fn.load;
3204
+ jQuery.fn.load = function (url, params, callback) {
3205
+ if ("string" != typeof url && _load) return _load.apply(this, arguments);
3206
+ var selector,
3207
+ response,
3208
+ type,
3209
+ self = this,
3210
+ off = url.indexOf(" ");
3211
+ return off >= 0 && (selector = jQuery.trim(url.slice(off, url.length)), url = url.slice(0, off)), jQuery.isFunction(params) ? (callback = params, params = void 0) : params && "object" == typeof params && (type = "POST"), self.length > 0 && jQuery.ajax({
3212
+ url: url,
3213
+ type: type,
3214
+ dataType: "html",
3215
+ data: params
3216
+ }).done(function (responseText) {
3217
+ response = arguments, self.html(selector ? jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector) : responseText);
3218
+ }).complete(callback && function (jqXHR, status) {
3219
+ self.each(callback, response || [jqXHR.responseText, status, jqXHR]);
3220
+ }), this;
3221
+ }, jQuery.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function (i, type) {
3222
+ jQuery.fn[type] = function (fn) {
3223
+ return this.on(type, fn);
3224
+ };
3225
+ }), jQuery.expr.filters.animated = function (elem) {
3226
+ return jQuery.grep(jQuery.timers, function (fn) {
3227
+ return elem === fn.elem;
3228
+ }).length;
3229
+ };
3230
+ var docElem = window.document.documentElement;
3231
+ jQuery.offset = {
3232
+ setOffset: function (elem, options, i) {
3233
+ var curPosition,
3234
+ curLeft,
3235
+ curCSSTop,
3236
+ curTop,
3237
+ curOffset,
3238
+ curCSSLeft,
3239
+ calculatePosition,
3240
+ position = jQuery.css(elem, "position"),
3241
+ curElem = jQuery(elem),
3242
+ props = {};
3243
+ "static" === position && (elem.style.position = "relative"), curOffset = curElem.offset(), curCSSTop = jQuery.css(elem, "top"), curCSSLeft = jQuery.css(elem, "left"), calculatePosition = ("absolute" === position || "fixed" === position) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1, calculatePosition ? (curPosition = curElem.position(), curTop = curPosition.top, curLeft = curPosition.left) : (curTop = parseFloat(curCSSTop) || 0, curLeft = parseFloat(curCSSLeft) || 0), jQuery.isFunction(options) && (options = options.call(elem, i, curOffset)), null != options.top && (props.top = options.top - curOffset.top + curTop), null != options.left && (props.left = options.left - curOffset.left + curLeft), "using" in options ? options.using.call(elem, props) : curElem.css(props);
3244
+ }
3245
+ }, jQuery.fn.extend({
3246
+ offset: function (options) {
3247
+ if (arguments.length) return void 0 === options ? this : this.each(function (i) {
3248
+ jQuery.offset.setOffset(this, options, i);
3249
+ });
3250
+ var docElem,
3251
+ win,
3252
+ box = {
3253
+ top: 0,
3254
+ left: 0
3255
+ },
3256
+ elem = this[0],
3257
+ doc = elem && elem.ownerDocument;
3258
+ if (doc) return docElem = doc.documentElement, jQuery.contains(docElem, elem) ? (typeof elem.getBoundingClientRect !== strundefined && (box = elem.getBoundingClientRect()), win = getWindow(doc), {
3259
+ top: box.top + (win.pageYOffset || docElem.scrollTop) - (docElem.clientTop || 0),
3260
+ left: box.left + (win.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0)
3261
+ }) : box;
3262
+ },
3263
+ position: function () {
3264
+ if (this[0]) {
3265
+ var offsetParent,
3266
+ offset,
3267
+ parentOffset = {
3268
+ top: 0,
3269
+ left: 0
3270
+ },
3271
+ elem = this[0];
3272
+ return "fixed" === jQuery.css(elem, "position") ? offset = elem.getBoundingClientRect() : (offsetParent = this.offsetParent(), offset = this.offset(), jQuery.nodeName(offsetParent[0], "html") || (parentOffset = offsetParent.offset()), parentOffset.top += jQuery.css(offsetParent[0], "borderTopWidth", !0), parentOffset.left += jQuery.css(offsetParent[0], "borderLeftWidth", !0)), {
3273
+ top: offset.top - parentOffset.top - jQuery.css(elem, "marginTop", !0),
3274
+ left: offset.left - parentOffset.left - jQuery.css(elem, "marginLeft", !0)
3275
+ };
3276
+ }
3277
+ },
3278
+ offsetParent: function () {
3279
+ return this.map(function () {
3280
+ for (var offsetParent = this.offsetParent || docElem; offsetParent && !jQuery.nodeName(offsetParent, "html") && "static" === jQuery.css(offsetParent, "position");) offsetParent = offsetParent.offsetParent;
3281
+ return offsetParent || docElem;
3282
+ });
3283
+ }
3284
+ }), jQuery.each({
3285
+ scrollLeft: "pageXOffset",
3286
+ scrollTop: "pageYOffset"
3287
+ }, function (method, prop) {
3288
+ var top = /Y/.test(prop);
3289
+ jQuery.fn[method] = function (val) {
3290
+ return access(this, function (elem, method, val) {
3291
+ var win = getWindow(elem);
3292
+ return void 0 === val ? win ? prop in win ? win[prop] : win.document.documentElement[method] : elem[method] : void (win ? win.scrollTo(top ? jQuery(win).scrollLeft() : val, top ? val : jQuery(win).scrollTop()) : elem[method] = val);
3293
+ }, method, val, arguments.length, null);
3294
+ };
3295
+ }), jQuery.each(["top", "left"], function (i, prop) {
3296
+ jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function (elem, computed) {
3297
+ return computed ? (computed = curCSS(elem, prop), rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + "px" : computed) : void 0;
3298
+ });
3299
+ }), jQuery.each({
3300
+ Height: "height",
3301
+ Width: "width"
3302
+ }, function (name, type) {
3303
+ jQuery.each({
3304
+ padding: "inner" + name,
3305
+ content: type,
3306
+ "": "outer" + name
3307
+ }, function (defaultExtra, funcName) {
3308
+ jQuery.fn[funcName] = function (margin, value) {
3309
+ var chainable = arguments.length && (defaultExtra || "boolean" != typeof margin),
3310
+ extra = defaultExtra || (margin === !0 || value === !0 ? "margin" : "border");
3311
+ return access(this, function (elem, type, value) {
3312
+ var doc;
3313
+ return jQuery.isWindow(elem) ? elem.document.documentElement["client" + name] : 9 === elem.nodeType ? (doc = elem.documentElement, Math.max(elem.body["scroll" + name], doc["scroll" + name], elem.body["offset" + name], doc["offset" + name], doc["client" + name])) : void 0 === value ? jQuery.css(elem, type, extra) : jQuery.style(elem, type, value, extra);
3314
+ }, type, chainable ? margin : void 0, chainable, null);
3315
+ };
3316
+ });
3317
+ }), jQuery.fn.size = function () {
3318
+ return this.length;
3319
+ }, jQuery.fn.andSelf = jQuery.fn.addBack, "function" == typeof define && define.amd && define("jquery", [], function () {
3320
+ return jQuery;
3321
+ });
3322
+ var _jQuery = window.jQuery,
3323
+ _$ = window.$;
3324
+ return jQuery.noConflict = function (deep) {
3325
+ return window.$ === jQuery && (window.$ = _$), deep && window.jQuery === jQuery && (window.jQuery = _jQuery), jQuery;
3326
+ }, typeof noGlobal === strundefined && (window.jQuery = window.$ = jQuery), jQuery;
3327
+ });
3328
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnbG9iYWwiLCJmYWN0b3J5IiwibW9kdWxlIiwiZXhwb3J0cyIsImRvY3VtZW50IiwidyIsIkVycm9yIiwid2luZG93Iiwibm9HbG9iYWwiLCJpc0FycmF5bGlrZSIsIm9iaiIsImxlbmd0aCIsInR5cGUiLCJqUXVlcnkiLCJpc1dpbmRvdyIsIm5vZGVUeXBlIiwid2lubm93IiwiZWxlbWVudHMiLCJxdWFsaWZpZXIiLCJub3QiLCJpc0Z1bmN0aW9uIiwiZ3JlcCIsImVsZW0iLCJpIiwiY2FsbCIsInJpc1NpbXBsZSIsInRlc3QiLCJmaWx0ZXIiLCJpbkFycmF5Iiwic2libGluZyIsImN1ciIsImRpciIsImNyZWF0ZU9wdGlvbnMiLCJvcHRpb25zIiwib2JqZWN0Iiwib3B0aW9uc0NhY2hlIiwiZWFjaCIsIm1hdGNoIiwicm5vdHdoaXRlIiwiXyIsImZsYWciLCJkZXRhY2giLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbXBsZXRlZCIsImRldGFjaEV2ZW50IiwiZXZlbnQiLCJyZWFkeVN0YXRlIiwicmVhZHkiLCJkYXRhQXR0ciIsImtleSIsImRhdGEiLCJuYW1lIiwicmVwbGFjZSIsInJtdWx0aURhc2giLCJ0b0xvd2VyQ2FzZSIsImdldEF0dHJpYnV0ZSIsInJicmFjZSIsInBhcnNlSlNPTiIsImUiLCJpc0VtcHR5RGF0YU9iamVjdCIsImlzRW1wdHlPYmplY3QiLCJpbnRlcm5hbERhdGEiLCJwdnQiLCJhY2NlcHREYXRhIiwicmV0IiwidGhpc0NhY2hlIiwiaW50ZXJuYWxLZXkiLCJleHBhbmRvIiwiaXNOb2RlIiwiY2FjaGUiLCJpZCIsImRlbGV0ZWRJZHMiLCJwb3AiLCJndWlkIiwidG9KU09OIiwibm9vcCIsImV4dGVuZCIsImNhbWVsQ2FzZSIsImludGVybmFsUmVtb3ZlRGF0YSIsImlzQXJyYXkiLCJjb25jYXQiLCJtYXAiLCJzcGxpdCIsImNsZWFuRGF0YSIsInN1cHBvcnQiLCJkZWxldGVFeHBhbmRvIiwicmV0dXJuVHJ1ZSIsInJldHVybkZhbHNlIiwic2FmZUFjdGl2ZUVsZW1lbnQiLCJhY3RpdmVFbGVtZW50IiwiZXJyIiwiY3JlYXRlU2FmZUZyYWdtZW50IiwibGlzdCIsIm5vZGVOYW1lcyIsInNhZmVGcmFnIiwiY3JlYXRlRG9jdW1lbnRGcmFnbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJnZXRBbGwiLCJjb250ZXh0IiwidGFnIiwiZWxlbXMiLCJmb3VuZCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwic3RydW5kZWZpbmVkIiwicXVlcnlTZWxlY3RvckFsbCIsImNoaWxkTm9kZXMiLCJub2RlTmFtZSIsInB1c2giLCJtZXJnZSIsImZpeERlZmF1bHRDaGVja2VkIiwicmNoZWNrYWJsZVR5cGUiLCJkZWZhdWx0Q2hlY2tlZCIsImNoZWNrZWQiLCJtYW5pcHVsYXRpb25UYXJnZXQiLCJjb250ZW50IiwiZmlyc3RDaGlsZCIsImFwcGVuZENoaWxkIiwib3duZXJEb2N1bWVudCIsImRpc2FibGVTY3JpcHQiLCJmaW5kIiwiYXR0ciIsInJlc3RvcmVTY3JpcHQiLCJyc2NyaXB0VHlwZU1hc2tlZCIsImV4ZWMiLCJyZW1vdmVBdHRyaWJ1dGUiLCJzZXRHbG9iYWxFdmFsIiwicmVmRWxlbWVudHMiLCJfZGF0YSIsImNsb25lQ29weUV2ZW50Iiwic3JjIiwiZGVzdCIsImhhc0RhdGEiLCJsIiwib2xkRGF0YSIsImN1ckRhdGEiLCJldmVudHMiLCJoYW5kbGUiLCJhZGQiLCJmaXhDbG9uZU5vZGVJc3N1ZXMiLCJub0Nsb25lRXZlbnQiLCJyZW1vdmVFdmVudCIsInRleHQiLCJwYXJlbnROb2RlIiwib3V0ZXJIVE1MIiwiaHRtbDVDbG9uZSIsImlubmVySFRNTCIsInRyaW0iLCJ2YWx1ZSIsImRlZmF1bHRTZWxlY3RlZCIsInNlbGVjdGVkIiwiZGVmYXVsdFZhbHVlIiwiYWN0dWFsRGlzcGxheSIsImRvYyIsInN0eWxlIiwiYXBwZW5kVG8iLCJib2R5IiwiZGlzcGxheSIsImdldERlZmF1bHRDb21wdXRlZFN0eWxlIiwiY3NzIiwiZGVmYXVsdERpc3BsYXkiLCJlbGVtZGlzcGxheSIsImlmcmFtZSIsImRvY3VtZW50RWxlbWVudCIsImNvbnRlbnRXaW5kb3ciLCJjb250ZW50RG9jdW1lbnQiLCJ3cml0ZSIsImNsb3NlIiwiYWRkR2V0SG9va0lmIiwiY29uZGl0aW9uRm4iLCJob29rRm4iLCJnZXQiLCJjb25kaXRpb24iLCJhcHBseSIsImFyZ3VtZW50cyIsInZlbmRvclByb3BOYW1lIiwiY2FwTmFtZSIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJvcmlnTmFtZSIsImNzc1ByZWZpeGVzIiwic2hvd0hpZGUiLCJzaG93IiwiaGlkZGVuIiwidmFsdWVzIiwiaW5kZXgiLCJpc0hpZGRlbiIsInNldFBvc2l0aXZlTnVtYmVyIiwic3VidHJhY3QiLCJtYXRjaGVzIiwicm51bXNwbGl0IiwiTWF0aCIsIm1heCIsImF1Z21lbnRXaWR0aE9ySGVpZ2h0IiwiZXh0cmEiLCJpc0JvcmRlckJveCIsInN0eWxlcyIsInZhbCIsImNzc0V4cGFuZCIsImdldFdpZHRoT3JIZWlnaHQiLCJ2YWx1ZUlzQm9yZGVyQm94Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJnZXRTdHlsZXMiLCJib3hTaXppbmciLCJjdXJDU1MiLCJybnVtbm9ucHgiLCJib3hTaXppbmdSZWxpYWJsZSIsInBhcnNlRmxvYXQiLCJUd2VlbiIsInByb3AiLCJlbmQiLCJlYXNpbmciLCJwcm90b3R5cGUiLCJpbml0IiwiY3JlYXRlRnhOb3ciLCJzZXRUaW1lb3V0IiwiZnhOb3ciLCJub3ciLCJnZW5GeCIsImluY2x1ZGVXaWR0aCIsIndoaWNoIiwiYXR0cnMiLCJoZWlnaHQiLCJvcGFjaXR5Iiwid2lkdGgiLCJjcmVhdGVUd2VlbiIsImFuaW1hdGlvbiIsInR3ZWVuIiwiY29sbGVjdGlvbiIsInR3ZWVuZXJzIiwiZGVmYXVsdFByZWZpbHRlciIsInByb3BzIiwib3B0cyIsInRvZ2dsZSIsImhvb2tzIiwib2xkZmlyZSIsImNoZWNrRGlzcGxheSIsImFuaW0iLCJvcmlnIiwiZGF0YVNob3ciLCJxdWV1ZSIsIl9xdWV1ZUhvb2tzIiwidW5xdWV1ZWQiLCJlbXB0eSIsImZpcmUiLCJhbHdheXMiLCJvdmVyZmxvdyIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsImlubGluZUJsb2NrTmVlZHNMYXlvdXQiLCJ6b29tIiwic2hyaW5rV3JhcEJsb2NrcyIsInJmeHR5cGVzIiwiZG9uZSIsImhpZGUiLCJfcmVtb3ZlRGF0YSIsInN0YXJ0IiwicHJvcEZpbHRlciIsInNwZWNpYWxFYXNpbmciLCJjc3NIb29rcyIsImV4cGFuZCIsIkFuaW1hdGlvbiIsInByb3BlcnRpZXMiLCJyZXN1bHQiLCJzdG9wcGVkIiwiYW5pbWF0aW9uUHJlZmlsdGVycyIsImRlZmVycmVkIiwiRGVmZXJyZWQiLCJ0aWNrIiwiY3VycmVudFRpbWUiLCJyZW1haW5pbmciLCJzdGFydFRpbWUiLCJkdXJhdGlvbiIsInRlbXAiLCJwZXJjZW50IiwidHdlZW5zIiwicnVuIiwibm90aWZ5V2l0aCIsInJlc29sdmVXaXRoIiwicHJvbWlzZSIsIm9yaWdpbmFsUHJvcGVydGllcyIsIm9yaWdpbmFsT3B0aW9ucyIsInN0b3AiLCJnb3RvRW5kIiwicmVqZWN0V2l0aCIsImZ4IiwidGltZXIiLCJwcm9ncmVzcyIsImNvbXBsZXRlIiwiZmFpbCIsImFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyIsInN0cnVjdHVyZSIsImRhdGFUeXBlRXhwcmVzc2lvbiIsImZ1bmMiLCJkYXRhVHlwZSIsImRhdGFUeXBlcyIsInVuc2hpZnQiLCJpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyIsImpxWEhSIiwiaW5zcGVjdCIsImluc3BlY3RlZCIsInByZWZpbHRlck9yRmFjdG9yeSIsImRhdGFUeXBlT3JUcmFuc3BvcnQiLCJzZWVraW5nVHJhbnNwb3J0IiwidHJhbnNwb3J0cyIsImFqYXhFeHRlbmQiLCJ0YXJnZXQiLCJkZWVwIiwiZmxhdE9wdGlvbnMiLCJhamF4U2V0dGluZ3MiLCJhamF4SGFuZGxlUmVzcG9uc2VzIiwicyIsInJlc3BvbnNlcyIsImZpcnN0RGF0YVR5cGUiLCJjdCIsImZpbmFsRGF0YVR5cGUiLCJjb250ZW50cyIsInNoaWZ0IiwibWltZVR5cGUiLCJnZXRSZXNwb25zZUhlYWRlciIsImNvbnZlcnRlcnMiLCJhamF4Q29udmVydCIsInJlc3BvbnNlIiwiaXNTdWNjZXNzIiwiY29udjIiLCJjdXJyZW50IiwiY29udiIsInRtcCIsInByZXYiLCJyZXNwb25zZUZpZWxkcyIsImRhdGFGaWx0ZXIiLCJzdGF0ZSIsImVycm9yIiwiYnVpbGRQYXJhbXMiLCJwcmVmaXgiLCJ0cmFkaXRpb25hbCIsInYiLCJyYnJhY2tldCIsImNyZWF0ZVN0YW5kYXJkWEhSIiwiWE1MSHR0cFJlcXVlc3QiLCJjcmVhdGVBY3RpdmVYSFIiLCJBY3RpdmVYT2JqZWN0IiwiZ2V0V2luZG93IiwiZGVmYXVsdFZpZXciLCJwYXJlbnRXaW5kb3ciLCJpbmRleE9mIiwiY2xhc3MydHlwZSIsInRvU3RyaW5nIiwiaGFzT3duIiwiaGFzT3duUHJvcGVydHkiLCJ2ZXJzaW9uIiwic2VsZWN0b3IiLCJmbiIsInJ0cmltIiwicm1zUHJlZml4IiwicmRhc2hBbHBoYSIsImZjYW1lbENhc2UiLCJhbGwiLCJsZXR0ZXIiLCJqcXVlcnkiLCJjb25zdHJ1Y3RvciIsInRvQXJyYXkiLCJudW0iLCJwdXNoU3RhY2siLCJwcmV2T2JqZWN0IiwiY2FsbGJhY2siLCJhcmdzIiwiZmlyc3QiLCJlcSIsImxhc3QiLCJsZW4iLCJqIiwic29ydCIsInNwbGljZSIsImNvcHlJc0FycmF5IiwiY29weSIsImNsb25lIiwiaXNQbGFpbk9iamVjdCIsInJhbmRvbSIsImlzUmVhZHkiLCJtc2ciLCJBcnJheSIsImlzTnVtZXJpYyIsIm93bkxhc3QiLCJnbG9iYWxFdmFsIiwiZXhlY1NjcmlwdCIsImV2YWwiLCJzdHJpbmciLCJtYWtlQXJyYXkiLCJhcnIiLCJyZXN1bHRzIiwiT2JqZWN0Iiwic2Vjb25kIiwiaW52ZXJ0IiwiY2FsbGJhY2tJbnZlcnNlIiwiY2FsbGJhY2tFeHBlY3QiLCJhcmciLCJwcm94eSIsIkRhdGUiLCJTaXp6bGUiLCJzZWVkIiwibSIsImdyb3VwcyIsIm9sZCIsIm5pZCIsIm5ld0NvbnRleHQiLCJuZXdTZWxlY3RvciIsInByZWZlcnJlZERvYyIsInNldERvY3VtZW50IiwiZG9jdW1lbnRJc0hUTUwiLCJycXVpY2tFeHByIiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250YWlucyIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJxc2EiLCJyYnVnZ3lRU0EiLCJ0b2tlbml6ZSIsInJlc2NhcGUiLCJzZXRBdHRyaWJ1dGUiLCJ0b1NlbGVjdG9yIiwicnNpYmxpbmciLCJ0ZXN0Q29udGV4dCIsImpvaW4iLCJxc2FFcnJvciIsInNlbGVjdCIsImNyZWF0ZUNhY2hlIiwia2V5cyIsIkV4cHIiLCJjYWNoZUxlbmd0aCIsIm1hcmtGdW5jdGlvbiIsImFzc2VydCIsImRpdiIsInJlbW92ZUNoaWxkIiwiYWRkSGFuZGxlIiwiaGFuZGxlciIsImF0dHJIYW5kbGUiLCJzaWJsaW5nQ2hlY2siLCJhIiwiYiIsImRpZmYiLCJzb3VyY2VJbmRleCIsIk1BWF9ORUdBVElWRSIsIm5leHRTaWJsaW5nIiwiY3JlYXRlSW5wdXRQc2V1ZG8iLCJjcmVhdGVCdXR0b25Qc2V1ZG8iLCJjcmVhdGVQb3NpdGlvbmFsUHNldWRvIiwiYXJndW1lbnQiLCJtYXRjaEluZGV4ZXMiLCJzZXRGaWx0ZXJzIiwidG9rZW5zIiwiYWRkQ29tYmluYXRvciIsIm1hdGNoZXIiLCJjb21iaW5hdG9yIiwiYmFzZSIsImNoZWNrTm9uRWxlbWVudHMiLCJkb25lTmFtZSIsInhtbCIsIm9sZENhY2hlIiwib3V0ZXJDYWNoZSIsIm5ld0NhY2hlIiwiZGlycnVucyIsImVsZW1lbnRNYXRjaGVyIiwibWF0Y2hlcnMiLCJtdWx0aXBsZUNvbnRleHRzIiwiY29udGV4dHMiLCJjb25kZW5zZSIsInVubWF0Y2hlZCIsIm5ld1VubWF0Y2hlZCIsIm1hcHBlZCIsInNldE1hdGNoZXIiLCJwcmVGaWx0ZXIiLCJwb3N0RmlsdGVyIiwicG9zdEZpbmRlciIsInBvc3RTZWxlY3RvciIsInByZU1hcCIsInBvc3RNYXAiLCJwcmVleGlzdGluZyIsIm1hdGNoZXJJbiIsIm1hdGNoZXJPdXQiLCJtYXRjaGVyRnJvbVRva2VucyIsImNoZWNrQ29udGV4dCIsImxlYWRpbmdSZWxhdGl2ZSIsInJlbGF0aXZlIiwiaW1wbGljaXRSZWxhdGl2ZSIsIm1hdGNoQ29udGV4dCIsIm1hdGNoQW55Q29udGV4dCIsIm91dGVybW9zdENvbnRleHQiLCJtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMiLCJlbGVtZW50TWF0Y2hlcnMiLCJzZXRNYXRjaGVycyIsImJ5U2V0IiwiYnlFbGVtZW50Iiwic3VwZXJNYXRjaGVyIiwib3V0ZXJtb3N0IiwibWF0Y2hlZENvdW50Iiwic2V0TWF0Y2hlZCIsImNvbnRleHRCYWNrdXAiLCJUQUciLCJkaXJydW5zVW5pcXVlIiwidW5pcXVlU29ydCIsImdldFRleHQiLCJpc1hNTCIsImNvbXBpbGUiLCJzb3J0SW5wdXQiLCJoYXNEdXBsaWNhdGUiLCJkb2NFbGVtIiwicmJ1Z2d5TWF0Y2hlcyIsImNsYXNzQ2FjaGUiLCJ0b2tlbkNhY2hlIiwiY29tcGlsZXJDYWNoZSIsInNvcnRPcmRlciIsInB1c2hfbmF0aXZlIiwiYm9vbGVhbnMiLCJ3aGl0ZXNwYWNlIiwiY2hhcmFjdGVyRW5jb2RpbmciLCJpZGVudGlmaWVyIiwiYXR0cmlidXRlcyIsInBzZXVkb3MiLCJyd2hpdGVzcGFjZSIsIlJlZ0V4cCIsInJjb21tYSIsInJjb21iaW5hdG9ycyIsInJhdHRyaWJ1dGVRdW90ZXMiLCJycHNldWRvIiwicmlkZW50aWZpZXIiLCJtYXRjaEV4cHIiLCJJRCIsIkNMQVNTIiwiQVRUUiIsIlBTRVVETyIsIkNISUxEIiwiYm9vbCIsIm5lZWRzQ29udGV4dCIsInJpbnB1dHMiLCJyaGVhZGVyIiwicm5hdGl2ZSIsInJ1bmVzY2FwZSIsImZ1bmVzY2FwZSIsImVzY2FwZWQiLCJlc2NhcGVkV2hpdGVzcGFjZSIsImhpZ2giLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJ1bmxvYWRIYW5kbGVyIiwiZWxzIiwibm9kZSIsImhhc0NvbXBhcmUiLCJwYXJlbnQiLCJ0b3AiLCJhdHRhY2hFdmVudCIsImNsYXNzTmFtZSIsImNyZWF0ZUNvbW1lbnQiLCJnZXRCeUlkIiwiZ2V0RWxlbWVudHNCeU5hbWUiLCJhdHRySWQiLCJnZXRBdHRyaWJ1dGVOb2RlIiwiaW5wdXQiLCJtYXRjaGVzU2VsZWN0b3IiLCJ3ZWJraXRNYXRjaGVzU2VsZWN0b3IiLCJtb3pNYXRjaGVzU2VsZWN0b3IiLCJvTWF0Y2hlc1NlbGVjdG9yIiwibXNNYXRjaGVzU2VsZWN0b3IiLCJkaXNjb25uZWN0ZWRNYXRjaCIsImNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIiwiYWRvd24iLCJidXAiLCJjb21wYXJlIiwic29ydERldGFjaGVkIiwiYXVwIiwiYXAiLCJicCIsImV4cHIiLCJzcGVjaWZpZWQiLCJkdXBsaWNhdGVzIiwiZGV0ZWN0RHVwbGljYXRlcyIsInNvcnRTdGFibGUiLCJ0ZXh0Q29udGVudCIsIm5vZGVWYWx1ZSIsInNlbGVjdG9ycyIsImNyZWF0ZVBzZXVkbyIsImV4Y2VzcyIsInVucXVvdGVkIiwibm9kZU5hbWVTZWxlY3RvciIsInBhdHRlcm4iLCJvcGVyYXRvciIsImNoZWNrIiwid2hhdCIsInNpbXBsZSIsImZvcndhcmQiLCJvZlR5cGUiLCJub2RlSW5kZXgiLCJ1c2VDYWNoZSIsImxhc3RDaGlsZCIsInBzZXVkbyIsImlkeCIsIm1hdGNoZWQiLCJoYXMiLCJpbm5lclRleHQiLCJsYW5nIiwiZWxlbUxhbmciLCJoYXNoIiwibG9jYXRpb24iLCJyb290IiwiZm9jdXMiLCJoYXNGb2N1cyIsImhyZWYiLCJ0YWJJbmRleCIsImVuYWJsZWQiLCJkaXNhYmxlZCIsInNlbGVjdGVkSW5kZXgiLCJoZWFkZXIiLCJidXR0b24iLCJldmVuIiwib2RkIiwibHQiLCJndCIsIm50aCIsInJhZGlvIiwiY2hlY2tib3giLCJmaWxlIiwicGFzc3dvcmQiLCJpbWFnZSIsInN1Ym1pdCIsInJlc2V0IiwiZmlsdGVycyIsInBhcnNlT25seSIsInNvRmFyIiwicHJlRmlsdGVycyIsImNhY2hlZCIsInRva2VuIiwiY29tcGlsZWQiLCJkaXYxIiwidW5pcXVlIiwiaXNYTUxEb2MiLCJybmVlZHNDb250ZXh0IiwicnNpbmdsZVRhZyIsInNlbGYiLCJpcyIsInJvb3RqUXVlcnkiLCJwYXJzZUhUTUwiLCJycGFyZW50c3ByZXYiLCJndWFyYW50ZWVkVW5pcXVlIiwiY2hpbGRyZW4iLCJuZXh0IiwidW50aWwiLCJuIiwiciIsInRhcmdldHMiLCJjbG9zZXN0IiwicG9zIiwicHJldkFsbCIsImFkZEJhY2siLCJwYXJlbnRzIiwicGFyZW50c1VudGlsIiwibmV4dEFsbCIsIm5leHRVbnRpbCIsInByZXZVbnRpbCIsInNpYmxpbmdzIiwicmV2ZXJzZSIsIkNhbGxiYWNrcyIsImZpcmluZyIsIm1lbW9yeSIsImZpcmVkIiwiZmlyaW5nTGVuZ3RoIiwiZmlyaW5nSW5kZXgiLCJmaXJpbmdTdGFydCIsInN0YWNrIiwib25jZSIsInN0b3BPbkZhbHNlIiwiZGlzYWJsZSIsInJlbW92ZSIsImxvY2siLCJsb2NrZWQiLCJmaXJlV2l0aCIsInR1cGxlcyIsInRoZW4iLCJmbnMiLCJuZXdEZWZlciIsInR1cGxlIiwicmV0dXJuZWQiLCJyZXNvbHZlIiwicmVqZWN0Iiwibm90aWZ5IiwicGlwZSIsInN0YXRlU3RyaW5nIiwid2hlbiIsInN1Ym9yZGluYXRlIiwicHJvZ3Jlc3NWYWx1ZXMiLCJwcm9ncmVzc0NvbnRleHRzIiwicmVzb2x2ZUNvbnRleHRzIiwicmVzb2x2ZVZhbHVlcyIsInVwZGF0ZUZ1bmMiLCJyZWFkeUxpc3QiLCJyZWFkeVdhaXQiLCJob2xkUmVhZHkiLCJob2xkIiwid2FpdCIsInRyaWdnZXJIYW5kbGVyIiwib2ZmIiwiZnJhbWVFbGVtZW50IiwiZG9TY3JvbGwiLCJkb1Njcm9sbENoZWNrIiwiY29udGFpbmVyIiwiY3NzVGV4dCIsIm5vRGF0YSIsInJlbW92ZURhdGEiLCJkZXF1ZXVlIiwic3RhcnRMZW5ndGgiLCJzZXR0ZXIiLCJjbGVhclF1ZXVlIiwiY291bnQiLCJkZWZlciIsInBudW0iLCJzb3VyY2UiLCJlbCIsImFjY2VzcyIsImNoYWluYWJsZSIsImVtcHR5R2V0IiwicmF3IiwiYnVsayIsImZyYWdtZW50IiwibGVhZGluZ1doaXRlc3BhY2UiLCJ0Ym9keSIsImh0bWxTZXJpYWxpemUiLCJjbG9uZU5vZGUiLCJhcHBlbmRDaGVja2VkIiwibm9DbG9uZUNoZWNrZWQiLCJjaGVja0Nsb25lIiwiY2xpY2siLCJldmVudE5hbWUiLCJjaGFuZ2UiLCJmb2N1c2luIiwicmZvcm1FbGVtcyIsInJrZXlFdmVudCIsInJtb3VzZUV2ZW50IiwicmZvY3VzTW9ycGgiLCJydHlwZW5hbWVzcGFjZSIsInR5cGVzIiwidCIsImhhbmRsZU9iakluIiwic3BlY2lhbCIsImV2ZW50SGFuZGxlIiwiaGFuZGxlT2JqIiwiaGFuZGxlcnMiLCJuYW1lc3BhY2VzIiwib3JpZ1R5cGUiLCJlbGVtRGF0YSIsInRyaWdnZXJlZCIsImRpc3BhdGNoIiwiZGVsZWdhdGVUeXBlIiwiYmluZFR5cGUiLCJuYW1lc3BhY2UiLCJkZWxlZ2F0ZUNvdW50Iiwic2V0dXAiLCJtYXBwZWRUeXBlcyIsIm9yaWdDb3VudCIsInRlYXJkb3duIiwidHJpZ2dlciIsIm9ubHlIYW5kbGVycyIsIm9udHlwZSIsImJ1YmJsZVR5cGUiLCJldmVudFBhdGgiLCJFdmVudCIsImlzVHJpZ2dlciIsIm5hbWVzcGFjZV9yZSIsIm5vQnViYmxlIiwiaXNQcm9wYWdhdGlvblN0b3BwZWQiLCJwcmV2ZW50RGVmYXVsdCIsImlzRGVmYXVsdFByZXZlbnRlZCIsIl9kZWZhdWx0IiwiZml4IiwiaGFuZGxlclF1ZXVlIiwiZGVsZWdhdGVUYXJnZXQiLCJwcmVEaXNwYXRjaCIsImN1cnJlbnRUYXJnZXQiLCJpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCIsInN0b3BQcm9wYWdhdGlvbiIsInBvc3REaXNwYXRjaCIsInNlbCIsIm9yaWdpbmFsRXZlbnQiLCJmaXhIb29rIiwiZml4SG9va3MiLCJtb3VzZUhvb2tzIiwia2V5SG9va3MiLCJzcmNFbGVtZW50IiwibWV0YUtleSIsIm9yaWdpbmFsIiwiY2hhckNvZGUiLCJrZXlDb2RlIiwiZXZlbnREb2MiLCJmcm9tRWxlbWVudCIsInBhZ2VYIiwiY2xpZW50WCIsInNjcm9sbExlZnQiLCJjbGllbnRMZWZ0IiwicGFnZVkiLCJjbGllbnRZIiwic2Nyb2xsVG9wIiwiY2xpZW50VG9wIiwicmVsYXRlZFRhcmdldCIsInRvRWxlbWVudCIsImxvYWQiLCJibHVyIiwiYmVmb3JldW5sb2FkIiwicmV0dXJuVmFsdWUiLCJzaW11bGF0ZSIsImJ1YmJsZSIsImlzU2ltdWxhdGVkIiwiZGVmYXVsdFByZXZlbnRlZCIsInRpbWVTdGFtcCIsImNhbmNlbEJ1YmJsZSIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsIm1vdXNlZW50ZXIiLCJtb3VzZWxlYXZlIiwicG9pbnRlcmVudGVyIiwicG9pbnRlcmxlYXZlIiwicmVsYXRlZCIsInN1Ym1pdEJ1YmJsZXMiLCJmb3JtIiwiX3N1Ym1pdF9idWJibGUiLCJjaGFuZ2VCdWJibGVzIiwicHJvcGVydHlOYW1lIiwiX2p1c3RfY2hhbmdlZCIsImZvY3VzaW5CdWJibGVzIiwiYXR0YWNoZXMiLCJvbiIsIm9uZSIsIm9yaWdGbiIsInJpbmxpbmVqUXVlcnkiLCJybm9zaGltY2FjaGUiLCJybGVhZGluZ1doaXRlc3BhY2UiLCJyeGh0bWxUYWciLCJydGFnTmFtZSIsInJ0Ym9keSIsInJodG1sIiwicm5vSW5uZXJodG1sIiwicmNoZWNrZWQiLCJyc2NyaXB0VHlwZSIsInJjbGVhblNjcmlwdCIsIndyYXBNYXAiLCJvcHRpb24iLCJsZWdlbmQiLCJhcmVhIiwicGFyYW0iLCJ0aGVhZCIsInRyIiwiY29sIiwidGQiLCJzYWZlRnJhZ21lbnQiLCJmcmFnbWVudERpdiIsIm9wdGdyb3VwIiwidGZvb3QiLCJjb2xncm91cCIsImNhcHRpb24iLCJ0aCIsImRhdGFBbmRFdmVudHMiLCJkZWVwRGF0YUFuZEV2ZW50cyIsImRlc3RFbGVtZW50cyIsInNyY0VsZW1lbnRzIiwiaW5QYWdlIiwiYnVpbGRGcmFnbWVudCIsInNjcmlwdHMiLCJzZWxlY3Rpb24iLCJ3cmFwIiwic2FmZSIsIm5vZGVzIiwiY3JlYXRlVGV4dE5vZGUiLCJhcHBlbmQiLCJkb21NYW5pcCIsInByZXBlbmQiLCJpbnNlcnRCZWZvcmUiLCJiZWZvcmUiLCJhZnRlciIsImtlZXBEYXRhIiwiaHRtbCIsInJlcGxhY2VXaXRoIiwicmVwbGFjZUNoaWxkIiwiaGFzU2NyaXB0cyIsInNldCIsImlOb0Nsb25lIiwiX2V2YWxVcmwiLCJwcmVwZW5kVG8iLCJpbnNlcnRBZnRlciIsInJlcGxhY2VBbGwiLCJpbnNlcnQiLCJzaHJpbmtXcmFwQmxvY2tzVmFsIiwicm1hcmdpbiIsInJwb3NpdGlvbiIsImdldENvbXB1dGVkU3R5bGUiLCJvcGVuZXIiLCJjb21wdXRlZCIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJnZXRQcm9wZXJ0eVZhbHVlIiwiY3VycmVudFN0eWxlIiwibGVmdCIsInJzIiwicnNMZWZ0IiwicnVudGltZVN0eWxlIiwicGl4ZWxMZWZ0IiwiY29tcHV0ZVN0eWxlVGVzdHMiLCJwaXhlbFBvc2l0aW9uVmFsIiwiYm94U2l6aW5nUmVsaWFibGVWYWwiLCJyZWxpYWJsZU1hcmdpblJpZ2h0VmFsIiwibWFyZ2luUmlnaHQiLCJyZWxpYWJsZUhpZGRlbk9mZnNldHNWYWwiLCJjc3NGbG9hdCIsImJhY2tncm91bmRDbGlwIiwiY2xlYXJDbG9uZVN0eWxlIiwiTW96Qm94U2l6aW5nIiwiV2Via2l0Qm94U2l6aW5nIiwicmVsaWFibGVIaWRkZW5PZmZzZXRzIiwicGl4ZWxQb3NpdGlvbiIsInJlbGlhYmxlTWFyZ2luUmlnaHQiLCJzd2FwIiwicmFscGhhIiwicm9wYWNpdHkiLCJyZGlzcGxheXN3YXAiLCJycmVsTnVtIiwiY3NzU2hvdyIsInBvc2l0aW9uIiwidmlzaWJpbGl0eSIsImNzc05vcm1hbFRyYW5zZm9ybSIsImxldHRlclNwYWNpbmciLCJmb250V2VpZ2h0IiwiY3NzTnVtYmVyIiwiY29sdW1uQ291bnQiLCJmaWxsT3BhY2l0eSIsImZsZXhHcm93IiwiZmxleFNocmluayIsImxpbmVIZWlnaHQiLCJvcmRlciIsIm9ycGhhbnMiLCJ3aWRvd3MiLCJ6SW5kZXgiLCJjc3NQcm9wcyIsIiQxIiwibWFyZ2luIiwicGFkZGluZyIsImJvcmRlciIsInN1ZmZpeCIsImV4cGFuZGVkIiwicGFydHMiLCJ1bml0IiwicHJvcEhvb2tzIiwiZWFzZWQiLCJzdGVwIiwibGluZWFyIiwicCIsInN3aW5nIiwiY29zIiwiUEkiLCJ0aW1lcklkIiwicmZ4bnVtIiwicnJ1biIsInNjYWxlIiwibWF4SXRlcmF0aW9ucyIsInR3ZWVuZXIiLCJwcmVmaWx0ZXIiLCJzcGVlZCIsIm9wdCIsInNwZWVkcyIsImZhZGVUbyIsInRvIiwiYW5pbWF0ZSIsIm9wdGFsbCIsImRvQW5pbWF0aW9uIiwiZmluaXNoIiwic3RvcFF1ZXVlIiwidGltZXJzIiwiY3NzRm4iLCJzbGlkZURvd24iLCJzbGlkZVVwIiwic2xpZGVUb2dnbGUiLCJmYWRlSW4iLCJmYWRlT3V0IiwiZmFkZVRvZ2dsZSIsImludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIiwic2xvdyIsImZhc3QiLCJkZWxheSIsInRpbWUiLCJ0aW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiZ2V0U2V0QXR0cmlidXRlIiwiaHJlZk5vcm1hbGl6ZWQiLCJjaGVja09uIiwib3B0U2VsZWN0ZWQiLCJlbmN0eXBlIiwib3B0RGlzYWJsZWQiLCJyYWRpb1ZhbHVlIiwicnJldHVybiIsInZhbEhvb2tzIiwib3B0aW9uU2V0Iiwic2Nyb2xsSGVpZ2h0Iiwibm9kZUhvb2siLCJib29sSG9vayIsInJ1c2VEZWZhdWx0IiwiZ2V0U2V0SW5wdXQiLCJyZW1vdmVBdHRyIiwiblR5cGUiLCJhdHRySG9va3MiLCJwcm9wTmFtZSIsImF0dHJOYW1lcyIsInByb3BGaXgiLCJnZXR0ZXIiLCJzZXRBdHRyaWJ1dGVOb2RlIiwiY3JlYXRlQXR0cmlidXRlIiwiY29vcmRzIiwiY29udGVudGVkaXRhYmxlIiwicmZvY3VzYWJsZSIsInJjbGlja2FibGUiLCJyZW1vdmVQcm9wIiwibm90eG1sIiwidGFiaW5kZXgiLCJwYXJzZUludCIsInJjbGFzcyIsImFkZENsYXNzIiwiY2xhc3NlcyIsImNsYXp6IiwiZmluYWxWYWx1ZSIsInByb2NlZWQiLCJyZW1vdmVDbGFzcyIsInRvZ2dsZUNsYXNzIiwic3RhdGVWYWwiLCJjbGFzc05hbWVzIiwiaGFzQ2xhc3MiLCJob3ZlciIsImZuT3ZlciIsImZuT3V0IiwiYmluZCIsInVuYmluZCIsImRlbGVnYXRlIiwidW5kZWxlZ2F0ZSIsIm5vbmNlIiwicnF1ZXJ5IiwicnZhbGlkdG9rZW5zIiwiSlNPTiIsInBhcnNlIiwicmVxdWlyZU5vbkNvbW1hIiwiZGVwdGgiLCJzdHIiLCJjb21tYSIsIm9wZW4iLCJGdW5jdGlvbiIsInBhcnNlWE1MIiwiRE9NUGFyc2VyIiwicGFyc2VGcm9tU3RyaW5nIiwiYXN5bmMiLCJsb2FkWE1MIiwiYWpheExvY1BhcnRzIiwiYWpheExvY2F0aW9uIiwicmhhc2giLCJydHMiLCJyaGVhZGVycyIsInJsb2NhbFByb3RvY29sIiwicm5vQ29udGVudCIsInJwcm90b2NvbCIsInJ1cmwiLCJwcmVmaWx0ZXJzIiwiYWxsVHlwZXMiLCJhY3RpdmUiLCJsYXN0TW9kaWZpZWQiLCJldGFnIiwidXJsIiwiaXNMb2NhbCIsInByb2Nlc3NEYXRhIiwiY29udGVudFR5cGUiLCJhY2NlcHRzIiwianNvbiIsImFqYXhTZXR1cCIsInNldHRpbmdzIiwiYWpheFByZWZpbHRlciIsImFqYXhUcmFuc3BvcnQiLCJhamF4Iiwic3RhdHVzIiwibmF0aXZlU3RhdHVzVGV4dCIsImhlYWRlcnMiLCJzdWNjZXNzIiwibW9kaWZpZWQiLCJzdGF0dXNUZXh0IiwidGltZW91dFRpbWVyIiwidHJhbnNwb3J0IiwicmVzcG9uc2VIZWFkZXJzU3RyaW5nIiwiaWZNb2RpZmllZCIsImNhY2hlVVJMIiwiY2FsbGJhY2tDb250ZXh0Iiwic3RhdHVzQ29kZSIsImZpcmVHbG9iYWxzIiwiZ2xvYmFsRXZlbnRDb250ZXh0IiwiY29tcGxldGVEZWZlcnJlZCIsInJlc3BvbnNlSGVhZGVycyIsInJlcXVlc3RIZWFkZXJzIiwicmVxdWVzdEhlYWRlcnNOYW1lcyIsInN0ckFib3J0IiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwic2V0UmVxdWVzdEhlYWRlciIsImxuYW1lIiwib3ZlcnJpZGVNaW1lVHlwZSIsImNvZGUiLCJhYm9ydCIsImZpbmFsVGV4dCIsIm1ldGhvZCIsImNyb3NzRG9tYWluIiwiaGFzQ29udGVudCIsImJlZm9yZVNlbmQiLCJzZW5kIiwiZ2V0SlNPTiIsImdldFNjcmlwdCIsIndyYXBBbGwiLCJ3cmFwSW5uZXIiLCJ1bndyYXAiLCJ2aXNpYmxlIiwicjIwIiwickNSTEYiLCJyc3VibWl0dGVyVHlwZXMiLCJyc3VibWl0dGFibGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJzZXJpYWxpemUiLCJzZXJpYWxpemVBcnJheSIsInhociIsInhocklkIiwieGhyQ2FsbGJhY2tzIiwieGhyU3VwcG9ydGVkIiwiY29ycyIsInVzZXJuYW1lIiwieGhyRmllbGRzIiwiaXNBYm9ydCIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlc3BvbnNlVGV4dCIsInNjcmlwdCIsInRleHQgc2NyaXB0IiwiaGVhZCIsInNjcmlwdENoYXJzZXQiLCJjaGFyc2V0Iiwib25sb2FkIiwib2xkQ2FsbGJhY2tzIiwicmpzb25wIiwianNvbnAiLCJqc29ucENhbGxiYWNrIiwib3JpZ2luYWxTZXR0aW5ncyIsImNhbGxiYWNrTmFtZSIsIm92ZXJ3cml0dGVuIiwicmVzcG9uc2VDb250YWluZXIiLCJqc29uUHJvcCIsImtlZXBTY3JpcHRzIiwicGFyc2VkIiwiX2xvYWQiLCJwYXJhbXMiLCJhbmltYXRlZCIsIm9mZnNldCIsInNldE9mZnNldCIsImN1clBvc2l0aW9uIiwiY3VyTGVmdCIsImN1ckNTU1RvcCIsImN1clRvcCIsImN1ck9mZnNldCIsImN1ckNTU0xlZnQiLCJjYWxjdWxhdGVQb3NpdGlvbiIsImN1ckVsZW0iLCJ1c2luZyIsIndpbiIsImJveCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInBhZ2VZT2Zmc2V0IiwicGFnZVhPZmZzZXQiLCJvZmZzZXRQYXJlbnQiLCJwYXJlbnRPZmZzZXQiLCJzY3JvbGxUbyIsIkhlaWdodCIsIldpZHRoIiwiZGVmYXVsdEV4dHJhIiwiZnVuY05hbWUiLCJzaXplIiwiYW5kU2VsZiIsImRlZmluZSIsImFtZCIsIl9qUXVlcnkiLCJfJCIsIiQiLCJub0NvbmZsaWN0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL1N0YXRpY0ZpbGVzRm9yUHJvZHVjdGlvblJlc291cmNlc0Rpci9qcXVlcnktMS4xMS4zLm1pbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIhZnVuY3Rpb24oZ2xvYmFsLGZhY3Rvcnkpe1wib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGUmJlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1nbG9iYWwuZG9jdW1lbnQ/ZmFjdG9yeShnbG9iYWwsITApOmZ1bmN0aW9uKHcpe2lmKCF3LmRvY3VtZW50KXRocm93IG5ldyBFcnJvcihcImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnRcIik7cmV0dXJuIGZhY3Rvcnkodyl9OmZhY3RvcnkoZ2xvYmFsKX0oXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbih3aW5kb3csbm9HbG9iYWwpe2Z1bmN0aW9uIGlzQXJyYXlsaWtlKG9iail7dmFyIGxlbmd0aD1cImxlbmd0aFwiaW4gb2JqJiZvYmoubGVuZ3RoLHR5cGU9alF1ZXJ5LnR5cGUob2JqKTtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlfHxqUXVlcnkuaXNXaW5kb3cob2JqKT8hMToxPT09b2JqLm5vZGVUeXBlJiZsZW5ndGg/ITA6XCJhcnJheVwiPT09dHlwZXx8MD09PWxlbmd0aHx8XCJudW1iZXJcIj09dHlwZW9mIGxlbmd0aCYmbGVuZ3RoPjAmJmxlbmd0aC0xIGluIG9ian1mdW5jdGlvbiB3aW5ub3coZWxlbWVudHMscXVhbGlmaWVyLG5vdCl7aWYoalF1ZXJ5LmlzRnVuY3Rpb24ocXVhbGlmaWVyKSlyZXR1cm4galF1ZXJ5LmdyZXAoZWxlbWVudHMsZnVuY3Rpb24oZWxlbSxpKXtyZXR1cm4hIXF1YWxpZmllci5jYWxsKGVsZW0saSxlbGVtKSE9PW5vdH0pO2lmKHF1YWxpZmllci5ub2RlVHlwZSlyZXR1cm4galF1ZXJ5LmdyZXAoZWxlbWVudHMsZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW09PT1xdWFsaWZpZXIhPT1ub3R9KTtpZihcInN0cmluZ1wiPT10eXBlb2YgcXVhbGlmaWVyKXtpZihyaXNTaW1wbGUudGVzdChxdWFsaWZpZXIpKXJldHVybiBqUXVlcnkuZmlsdGVyKHF1YWxpZmllcixlbGVtZW50cyxub3QpO3F1YWxpZmllcj1qUXVlcnkuZmlsdGVyKHF1YWxpZmllcixlbGVtZW50cyl9cmV0dXJuIGpRdWVyeS5ncmVwKGVsZW1lbnRzLGZ1bmN0aW9uKGVsZW0pe3JldHVybiBqUXVlcnkuaW5BcnJheShlbGVtLHF1YWxpZmllcik+PTAhPT1ub3R9KX1mdW5jdGlvbiBzaWJsaW5nKGN1cixkaXIpe2RvIGN1cj1jdXJbZGlyXTt3aGlsZShjdXImJjEhPT1jdXIubm9kZVR5cGUpO3JldHVybiBjdXJ9ZnVuY3Rpb24gY3JlYXRlT3B0aW9ucyhvcHRpb25zKXt2YXIgb2JqZWN0PW9wdGlvbnNDYWNoZVtvcHRpb25zXT17fTtyZXR1cm4galF1ZXJ5LmVhY2gob3B0aW9ucy5tYXRjaChybm90d2hpdGUpfHxbXSxmdW5jdGlvbihfLGZsYWcpe29iamVjdFtmbGFnXT0hMH0pLG9iamVjdH1mdW5jdGlvbiBkZXRhY2goKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyPyhkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLGNvbXBsZXRlZCwhMSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsY29tcGxldGVkLCExKSk6KGRvY3VtZW50LmRldGFjaEV2ZW50KFwib25yZWFkeXN0YXRlY2hhbmdlXCIsY29tcGxldGVkKSx3aW5kb3cuZGV0YWNoRXZlbnQoXCJvbmxvYWRcIixjb21wbGV0ZWQpKX1mdW5jdGlvbiBjb21wbGV0ZWQoKXsoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcnx8XCJsb2FkXCI9PT1ldmVudC50eXBlfHxcImNvbXBsZXRlXCI9PT1kb2N1bWVudC5yZWFkeVN0YXRlKSYmKGRldGFjaCgpLGpRdWVyeS5yZWFkeSgpKX1mdW5jdGlvbiBkYXRhQXR0cihlbGVtLGtleSxkYXRhKXtpZih2b2lkIDA9PT1kYXRhJiYxPT09ZWxlbS5ub2RlVHlwZSl7dmFyIG5hbWU9XCJkYXRhLVwiK2tleS5yZXBsYWNlKHJtdWx0aURhc2gsXCItJDFcIikudG9Mb3dlckNhc2UoKTtpZihkYXRhPWVsZW0uZ2V0QXR0cmlidXRlKG5hbWUpLFwic3RyaW5nXCI9PXR5cGVvZiBkYXRhKXt0cnl7ZGF0YT1cInRydWVcIj09PWRhdGE/ITA6XCJmYWxzZVwiPT09ZGF0YT8hMTpcIm51bGxcIj09PWRhdGE/bnVsbDorZGF0YStcIlwiPT09ZGF0YT8rZGF0YTpyYnJhY2UudGVzdChkYXRhKT9qUXVlcnkucGFyc2VKU09OKGRhdGEpOmRhdGF9Y2F0Y2goZSl7fWpRdWVyeS5kYXRhKGVsZW0sa2V5LGRhdGEpfWVsc2UgZGF0YT12b2lkIDB9cmV0dXJuIGRhdGF9ZnVuY3Rpb24gaXNFbXB0eURhdGFPYmplY3Qob2JqKXt2YXIgbmFtZTtmb3IobmFtZSBpbiBvYmopaWYoKFwiZGF0YVwiIT09bmFtZXx8IWpRdWVyeS5pc0VtcHR5T2JqZWN0KG9ialtuYW1lXSkpJiZcInRvSlNPTlwiIT09bmFtZSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBpbnRlcm5hbERhdGEoZWxlbSxuYW1lLGRhdGEscHZ0KXtpZihqUXVlcnkuYWNjZXB0RGF0YShlbGVtKSl7dmFyIHJldCx0aGlzQ2FjaGUsaW50ZXJuYWxLZXk9alF1ZXJ5LmV4cGFuZG8saXNOb2RlPWVsZW0ubm9kZVR5cGUsY2FjaGU9aXNOb2RlP2pRdWVyeS5jYWNoZTplbGVtLGlkPWlzTm9kZT9lbGVtW2ludGVybmFsS2V5XTplbGVtW2ludGVybmFsS2V5XSYmaW50ZXJuYWxLZXk7aWYoaWQmJmNhY2hlW2lkXSYmKHB2dHx8Y2FjaGVbaWRdLmRhdGEpfHx2b2lkIDAhPT1kYXRhfHxcInN0cmluZ1wiIT10eXBlb2YgbmFtZSlyZXR1cm4gaWR8fChpZD1pc05vZGU/ZWxlbVtpbnRlcm5hbEtleV09ZGVsZXRlZElkcy5wb3AoKXx8alF1ZXJ5Lmd1aWQrKzppbnRlcm5hbEtleSksY2FjaGVbaWRdfHwoY2FjaGVbaWRdPWlzTm9kZT97fTp7dG9KU09OOmpRdWVyeS5ub29wfSksKFwib2JqZWN0XCI9PXR5cGVvZiBuYW1lfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBuYW1lKSYmKHB2dD9jYWNoZVtpZF09alF1ZXJ5LmV4dGVuZChjYWNoZVtpZF0sbmFtZSk6Y2FjaGVbaWRdLmRhdGE9alF1ZXJ5LmV4dGVuZChjYWNoZVtpZF0uZGF0YSxuYW1lKSksdGhpc0NhY2hlPWNhY2hlW2lkXSxwdnR8fCh0aGlzQ2FjaGUuZGF0YXx8KHRoaXNDYWNoZS5kYXRhPXt9KSx0aGlzQ2FjaGU9dGhpc0NhY2hlLmRhdGEpLHZvaWQgMCE9PWRhdGEmJih0aGlzQ2FjaGVbalF1ZXJ5LmNhbWVsQ2FzZShuYW1lKV09ZGF0YSksXCJzdHJpbmdcIj09dHlwZW9mIG5hbWU/KHJldD10aGlzQ2FjaGVbbmFtZV0sbnVsbD09cmV0JiYocmV0PXRoaXNDYWNoZVtqUXVlcnkuY2FtZWxDYXNlKG5hbWUpXSkpOnJldD10aGlzQ2FjaGUscmV0fX1mdW5jdGlvbiBpbnRlcm5hbFJlbW92ZURhdGEoZWxlbSxuYW1lLHB2dCl7aWYoalF1ZXJ5LmFjY2VwdERhdGEoZWxlbSkpe3ZhciB0aGlzQ2FjaGUsaSxpc05vZGU9ZWxlbS5ub2RlVHlwZSxjYWNoZT1pc05vZGU/alF1ZXJ5LmNhY2hlOmVsZW0saWQ9aXNOb2RlP2VsZW1balF1ZXJ5LmV4cGFuZG9dOmpRdWVyeS5leHBhbmRvO2lmKGNhY2hlW2lkXSl7aWYobmFtZSYmKHRoaXNDYWNoZT1wdnQ/Y2FjaGVbaWRdOmNhY2hlW2lkXS5kYXRhKSl7alF1ZXJ5LmlzQXJyYXkobmFtZSk/bmFtZT1uYW1lLmNvbmNhdChqUXVlcnkubWFwKG5hbWUsalF1ZXJ5LmNhbWVsQ2FzZSkpOm5hbWUgaW4gdGhpc0NhY2hlP25hbWU9W25hbWVdOihuYW1lPWpRdWVyeS5jYW1lbENhc2UobmFtZSksbmFtZT1uYW1lIGluIHRoaXNDYWNoZT9bbmFtZV06bmFtZS5zcGxpdChcIiBcIikpLGk9bmFtZS5sZW5ndGg7Zm9yKDtpLS07KWRlbGV0ZSB0aGlzQ2FjaGVbbmFtZVtpXV07aWYocHZ0PyFpc0VtcHR5RGF0YU9iamVjdCh0aGlzQ2FjaGUpOiFqUXVlcnkuaXNFbXB0eU9iamVjdCh0aGlzQ2FjaGUpKXJldHVybn0ocHZ0fHwoZGVsZXRlIGNhY2hlW2lkXS5kYXRhLGlzRW1wdHlEYXRhT2JqZWN0KGNhY2hlW2lkXSkpKSYmKGlzTm9kZT9qUXVlcnkuY2xlYW5EYXRhKFtlbGVtXSwhMCk6c3VwcG9ydC5kZWxldGVFeHBhbmRvfHxjYWNoZSE9Y2FjaGUud2luZG93P2RlbGV0ZSBjYWNoZVtpZF06Y2FjaGVbaWRdPW51bGwpfX19ZnVuY3Rpb24gcmV0dXJuVHJ1ZSgpe3JldHVybiEwfWZ1bmN0aW9uIHJldHVybkZhbHNlKCl7cmV0dXJuITF9ZnVuY3Rpb24gc2FmZUFjdGl2ZUVsZW1lbnQoKXt0cnl7cmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnR9Y2F0Y2goZXJyKXt9fWZ1bmN0aW9uIGNyZWF0ZVNhZmVGcmFnbWVudChkb2N1bWVudCl7dmFyIGxpc3Q9bm9kZU5hbWVzLnNwbGl0KFwifFwiKSxzYWZlRnJhZz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7aWYoc2FmZUZyYWcuY3JlYXRlRWxlbWVudClmb3IoO2xpc3QubGVuZ3RoOylzYWZlRnJhZy5jcmVhdGVFbGVtZW50KGxpc3QucG9wKCkpO3JldHVybiBzYWZlRnJhZ31mdW5jdGlvbiBnZXRBbGwoY29udGV4dCx0YWcpe3ZhciBlbGVtcyxlbGVtLGk9MCxmb3VuZD10eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSE9PXN0cnVuZGVmaW5lZD9jb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ3x8XCIqXCIpOnR5cGVvZiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwhPT1zdHJ1bmRlZmluZWQ/Y29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKHRhZ3x8XCIqXCIpOnZvaWQgMDtpZighZm91bmQpZm9yKGZvdW5kPVtdLGVsZW1zPWNvbnRleHQuY2hpbGROb2Rlc3x8Y29udGV4dDtudWxsIT0oZWxlbT1lbGVtc1tpXSk7aSsrKSF0YWd8fGpRdWVyeS5ub2RlTmFtZShlbGVtLHRhZyk/Zm91bmQucHVzaChlbGVtKTpqUXVlcnkubWVyZ2UoZm91bmQsZ2V0QWxsKGVsZW0sdGFnKSk7cmV0dXJuIHZvaWQgMD09PXRhZ3x8dGFnJiZqUXVlcnkubm9kZU5hbWUoY29udGV4dCx0YWcpP2pRdWVyeS5tZXJnZShbY29udGV4dF0sZm91bmQpOmZvdW5kfWZ1bmN0aW9uIGZpeERlZmF1bHRDaGVja2VkKGVsZW0pe3JjaGVja2FibGVUeXBlLnRlc3QoZWxlbS50eXBlKSYmKGVsZW0uZGVmYXVsdENoZWNrZWQ9ZWxlbS5jaGVja2VkKX1mdW5jdGlvbiBtYW5pcHVsYXRpb25UYXJnZXQoZWxlbSxjb250ZW50KXtyZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKGVsZW0sXCJ0YWJsZVwiKSYmalF1ZXJ5Lm5vZGVOYW1lKDExIT09Y29udGVudC5ub2RlVHlwZT9jb250ZW50OmNvbnRlbnQuZmlyc3RDaGlsZCxcInRyXCIpP2VsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJ0Ym9keVwiKVswXXx8ZWxlbS5hcHBlbmRDaGlsZChlbGVtLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRib2R5XCIpKTplbGVtfWZ1bmN0aW9uIGRpc2FibGVTY3JpcHQoZWxlbSl7cmV0dXJuIGVsZW0udHlwZT0obnVsbCE9PWpRdWVyeS5maW5kLmF0dHIoZWxlbSxcInR5cGVcIikpK1wiL1wiK2VsZW0udHlwZSxlbGVtfWZ1bmN0aW9uIHJlc3RvcmVTY3JpcHQoZWxlbSl7dmFyIG1hdGNoPXJzY3JpcHRUeXBlTWFza2VkLmV4ZWMoZWxlbS50eXBlKTtyZXR1cm4gbWF0Y2g/ZWxlbS50eXBlPW1hdGNoWzFdOmVsZW0ucmVtb3ZlQXR0cmlidXRlKFwidHlwZVwiKSxlbGVtfWZ1bmN0aW9uIHNldEdsb2JhbEV2YWwoZWxlbXMscmVmRWxlbWVudHMpe2Zvcih2YXIgZWxlbSxpPTA7bnVsbCE9KGVsZW09ZWxlbXNbaV0pO2krKylqUXVlcnkuX2RhdGEoZWxlbSxcImdsb2JhbEV2YWxcIiwhcmVmRWxlbWVudHN8fGpRdWVyeS5fZGF0YShyZWZFbGVtZW50c1tpXSxcImdsb2JhbEV2YWxcIikpfWZ1bmN0aW9uIGNsb25lQ29weUV2ZW50KHNyYyxkZXN0KXtpZigxPT09ZGVzdC5ub2RlVHlwZSYmalF1ZXJ5Lmhhc0RhdGEoc3JjKSl7dmFyIHR5cGUsaSxsLG9sZERhdGE9alF1ZXJ5Ll9kYXRhKHNyYyksY3VyRGF0YT1qUXVlcnkuX2RhdGEoZGVzdCxvbGREYXRhKSxldmVudHM9b2xkRGF0YS5ldmVudHM7aWYoZXZlbnRzKXtkZWxldGUgY3VyRGF0YS5oYW5kbGUsY3VyRGF0YS5ldmVudHM9e307Zm9yKHR5cGUgaW4gZXZlbnRzKWZvcihpPTAsbD1ldmVudHNbdHlwZV0ubGVuZ3RoO2w+aTtpKyspalF1ZXJ5LmV2ZW50LmFkZChkZXN0LHR5cGUsZXZlbnRzW3R5cGVdW2ldKX1jdXJEYXRhLmRhdGEmJihjdXJEYXRhLmRhdGE9alF1ZXJ5LmV4dGVuZCh7fSxjdXJEYXRhLmRhdGEpKX19ZnVuY3Rpb24gZml4Q2xvbmVOb2RlSXNzdWVzKHNyYyxkZXN0KXt2YXIgbm9kZU5hbWUsZSxkYXRhO2lmKDE9PT1kZXN0Lm5vZGVUeXBlKXtpZihub2RlTmFtZT1kZXN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIXN1cHBvcnQubm9DbG9uZUV2ZW50JiZkZXN0W2pRdWVyeS5leHBhbmRvXSl7ZGF0YT1qUXVlcnkuX2RhdGEoZGVzdCk7Zm9yKGUgaW4gZGF0YS5ldmVudHMpalF1ZXJ5LnJlbW92ZUV2ZW50KGRlc3QsZSxkYXRhLmhhbmRsZSk7ZGVzdC5yZW1vdmVBdHRyaWJ1dGUoalF1ZXJ5LmV4cGFuZG8pfVwic2NyaXB0XCI9PT1ub2RlTmFtZSYmZGVzdC50ZXh0IT09c3JjLnRleHQ/KGRpc2FibGVTY3JpcHQoZGVzdCkudGV4dD1zcmMudGV4dCxyZXN0b3JlU2NyaXB0KGRlc3QpKTpcIm9iamVjdFwiPT09bm9kZU5hbWU/KGRlc3QucGFyZW50Tm9kZSYmKGRlc3Qub3V0ZXJIVE1MPXNyYy5vdXRlckhUTUwpLHN1cHBvcnQuaHRtbDVDbG9uZSYmc3JjLmlubmVySFRNTCYmIWpRdWVyeS50cmltKGRlc3QuaW5uZXJIVE1MKSYmKGRlc3QuaW5uZXJIVE1MPXNyYy5pbm5lckhUTUwpKTpcImlucHV0XCI9PT1ub2RlTmFtZSYmcmNoZWNrYWJsZVR5cGUudGVzdChzcmMudHlwZSk/KGRlc3QuZGVmYXVsdENoZWNrZWQ9ZGVzdC5jaGVja2VkPXNyYy5jaGVja2VkLGRlc3QudmFsdWUhPT1zcmMudmFsdWUmJihkZXN0LnZhbHVlPXNyYy52YWx1ZSkpOlwib3B0aW9uXCI9PT1ub2RlTmFtZT9kZXN0LmRlZmF1bHRTZWxlY3RlZD1kZXN0LnNlbGVjdGVkPXNyYy5kZWZhdWx0U2VsZWN0ZWQ6KFwiaW5wdXRcIj09PW5vZGVOYW1lfHxcInRleHRhcmVhXCI9PT1ub2RlTmFtZSkmJihkZXN0LmRlZmF1bHRWYWx1ZT1zcmMuZGVmYXVsdFZhbHVlKX19ZnVuY3Rpb24gYWN0dWFsRGlzcGxheShuYW1lLGRvYyl7dmFyIHN0eWxlLGVsZW09alF1ZXJ5KGRvYy5jcmVhdGVFbGVtZW50KG5hbWUpKS5hcHBlbmRUbyhkb2MuYm9keSksZGlzcGxheT13aW5kb3cuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUmJihzdHlsZT13aW5kb3cuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUoZWxlbVswXSkpP3N0eWxlLmRpc3BsYXk6alF1ZXJ5LmNzcyhlbGVtWzBdLFwiZGlzcGxheVwiKTtyZXR1cm4gZWxlbS5kZXRhY2goKSxkaXNwbGF5fWZ1bmN0aW9uIGRlZmF1bHREaXNwbGF5KG5vZGVOYW1lKXt2YXIgZG9jPWRvY3VtZW50LGRpc3BsYXk9ZWxlbWRpc3BsYXlbbm9kZU5hbWVdO3JldHVybiBkaXNwbGF5fHwoZGlzcGxheT1hY3R1YWxEaXNwbGF5KG5vZGVOYW1lLGRvYyksXCJub25lXCIhPT1kaXNwbGF5JiZkaXNwbGF5fHwoaWZyYW1lPShpZnJhbWV8fGpRdWVyeShcIjxpZnJhbWUgZnJhbWVib3JkZXI9JzAnIHdpZHRoPScwJyBoZWlnaHQ9JzAnLz5cIikpLmFwcGVuZFRvKGRvYy5kb2N1bWVudEVsZW1lbnQpLGRvYz0oaWZyYW1lWzBdLmNvbnRlbnRXaW5kb3d8fGlmcmFtZVswXS5jb250ZW50RG9jdW1lbnQpLmRvY3VtZW50LGRvYy53cml0ZSgpLGRvYy5jbG9zZSgpLGRpc3BsYXk9YWN0dWFsRGlzcGxheShub2RlTmFtZSxkb2MpLGlmcmFtZS5kZXRhY2goKSksZWxlbWRpc3BsYXlbbm9kZU5hbWVdPWRpc3BsYXkpLGRpc3BsYXl9ZnVuY3Rpb24gYWRkR2V0SG9va0lmKGNvbmRpdGlvbkZuLGhvb2tGbil7cmV0dXJue2dldDpmdW5jdGlvbigpe3ZhciBjb25kaXRpb249Y29uZGl0aW9uRm4oKTtpZihudWxsIT1jb25kaXRpb24pcmV0dXJuIGNvbmRpdGlvbj92b2lkIGRlbGV0ZSB0aGlzLmdldDoodGhpcy5nZXQ9aG9va0ZuKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX1mdW5jdGlvbiB2ZW5kb3JQcm9wTmFtZShzdHlsZSxuYW1lKXtpZihuYW1lIGluIHN0eWxlKXJldHVybiBuYW1lO2Zvcih2YXIgY2FwTmFtZT1uYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK25hbWUuc2xpY2UoMSksb3JpZ05hbWU9bmFtZSxpPWNzc1ByZWZpeGVzLmxlbmd0aDtpLS07KWlmKG5hbWU9Y3NzUHJlZml4ZXNbaV0rY2FwTmFtZSxuYW1lIGluIHN0eWxlKXJldHVybiBuYW1lO3JldHVybiBvcmlnTmFtZX1mdW5jdGlvbiBzaG93SGlkZShlbGVtZW50cyxzaG93KXtmb3IodmFyIGRpc3BsYXksZWxlbSxoaWRkZW4sdmFsdWVzPVtdLGluZGV4PTAsbGVuZ3RoPWVsZW1lbnRzLmxlbmd0aDtsZW5ndGg+aW5kZXg7aW5kZXgrKyllbGVtPWVsZW1lbnRzW2luZGV4XSxlbGVtLnN0eWxlJiYodmFsdWVzW2luZGV4XT1qUXVlcnkuX2RhdGEoZWxlbSxcIm9sZGRpc3BsYXlcIiksZGlzcGxheT1lbGVtLnN0eWxlLmRpc3BsYXksc2hvdz8odmFsdWVzW2luZGV4XXx8XCJub25lXCIhPT1kaXNwbGF5fHwoZWxlbS5zdHlsZS5kaXNwbGF5PVwiXCIpLFwiXCI9PT1lbGVtLnN0eWxlLmRpc3BsYXkmJmlzSGlkZGVuKGVsZW0pJiYodmFsdWVzW2luZGV4XT1qUXVlcnkuX2RhdGEoZWxlbSxcIm9sZGRpc3BsYXlcIixkZWZhdWx0RGlzcGxheShlbGVtLm5vZGVOYW1lKSkpKTooaGlkZGVuPWlzSGlkZGVuKGVsZW0pLChkaXNwbGF5JiZcIm5vbmVcIiE9PWRpc3BsYXl8fCFoaWRkZW4pJiZqUXVlcnkuX2RhdGEoZWxlbSxcIm9sZGRpc3BsYXlcIixoaWRkZW4/ZGlzcGxheTpqUXVlcnkuY3NzKGVsZW0sXCJkaXNwbGF5XCIpKSkpO2ZvcihpbmRleD0wO2xlbmd0aD5pbmRleDtpbmRleCsrKWVsZW09ZWxlbWVudHNbaW5kZXhdLGVsZW0uc3R5bGUmJihzaG93JiZcIm5vbmVcIiE9PWVsZW0uc3R5bGUuZGlzcGxheSYmXCJcIiE9PWVsZW0uc3R5bGUuZGlzcGxheXx8KGVsZW0uc3R5bGUuZGlzcGxheT1zaG93P3ZhbHVlc1tpbmRleF18fFwiXCI6XCJub25lXCIpKTtyZXR1cm4gZWxlbWVudHN9ZnVuY3Rpb24gc2V0UG9zaXRpdmVOdW1iZXIoZWxlbSx2YWx1ZSxzdWJ0cmFjdCl7dmFyIG1hdGNoZXM9cm51bXNwbGl0LmV4ZWModmFsdWUpO3JldHVybiBtYXRjaGVzP01hdGgubWF4KDAsbWF0Y2hlc1sxXS0oc3VidHJhY3R8fDApKSsobWF0Y2hlc1syXXx8XCJweFwiKTp2YWx1ZX1mdW5jdGlvbiBhdWdtZW50V2lkdGhPckhlaWdodChlbGVtLG5hbWUsZXh0cmEsaXNCb3JkZXJCb3gsc3R5bGVzKXtmb3IodmFyIGk9ZXh0cmE9PT0oaXNCb3JkZXJCb3g/XCJib3JkZXJcIjpcImNvbnRlbnRcIik/NDpcIndpZHRoXCI9PT1uYW1lPzE6MCx2YWw9MDs0Pmk7aSs9MilcIm1hcmdpblwiPT09ZXh0cmEmJih2YWwrPWpRdWVyeS5jc3MoZWxlbSxleHRyYStjc3NFeHBhbmRbaV0sITAsc3R5bGVzKSksaXNCb3JkZXJCb3g/KFwiY29udGVudFwiPT09ZXh0cmEmJih2YWwtPWpRdWVyeS5jc3MoZWxlbSxcInBhZGRpbmdcIitjc3NFeHBhbmRbaV0sITAsc3R5bGVzKSksXCJtYXJnaW5cIiE9PWV4dHJhJiYodmFsLT1qUXVlcnkuY3NzKGVsZW0sXCJib3JkZXJcIitjc3NFeHBhbmRbaV0rXCJXaWR0aFwiLCEwLHN0eWxlcykpKToodmFsKz1qUXVlcnkuY3NzKGVsZW0sXCJwYWRkaW5nXCIrY3NzRXhwYW5kW2ldLCEwLHN0eWxlcyksXCJwYWRkaW5nXCIhPT1leHRyYSYmKHZhbCs9alF1ZXJ5LmNzcyhlbGVtLFwiYm9yZGVyXCIrY3NzRXhwYW5kW2ldK1wiV2lkdGhcIiwhMCxzdHlsZXMpKSk7cmV0dXJuIHZhbH1mdW5jdGlvbiBnZXRXaWR0aE9ySGVpZ2h0KGVsZW0sbmFtZSxleHRyYSl7dmFyIHZhbHVlSXNCb3JkZXJCb3g9ITAsdmFsPVwid2lkdGhcIj09PW5hbWU/ZWxlbS5vZmZzZXRXaWR0aDplbGVtLm9mZnNldEhlaWdodCxzdHlsZXM9Z2V0U3R5bGVzKGVsZW0pLGlzQm9yZGVyQm94PXN1cHBvcnQuYm94U2l6aW5nJiZcImJvcmRlci1ib3hcIj09PWpRdWVyeS5jc3MoZWxlbSxcImJveFNpemluZ1wiLCExLHN0eWxlcyk7aWYoMD49dmFsfHxudWxsPT12YWwpe2lmKHZhbD1jdXJDU1MoZWxlbSxuYW1lLHN0eWxlcyksKDA+dmFsfHxudWxsPT12YWwpJiYodmFsPWVsZW0uc3R5bGVbbmFtZV0pLHJudW1ub25weC50ZXN0KHZhbCkpcmV0dXJuIHZhbDt2YWx1ZUlzQm9yZGVyQm94PWlzQm9yZGVyQm94JiYoc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZSgpfHx2YWw9PT1lbGVtLnN0eWxlW25hbWVdKSx2YWw9cGFyc2VGbG9hdCh2YWwpfHwwfXJldHVybiB2YWwrYXVnbWVudFdpZHRoT3JIZWlnaHQoZWxlbSxuYW1lLGV4dHJhfHwoaXNCb3JkZXJCb3g/XCJib3JkZXJcIjpcImNvbnRlbnRcIiksdmFsdWVJc0JvcmRlckJveCxzdHlsZXMpK1wicHhcIn1mdW5jdGlvbiBUd2VlbihlbGVtLG9wdGlvbnMscHJvcCxlbmQsZWFzaW5nKXtyZXR1cm4gbmV3IFR3ZWVuLnByb3RvdHlwZS5pbml0KGVsZW0sb3B0aW9ucyxwcm9wLGVuZCxlYXNpbmcpfWZ1bmN0aW9uIGNyZWF0ZUZ4Tm93KCl7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtmeE5vdz12b2lkIDB9KSxmeE5vdz1qUXVlcnkubm93KCl9ZnVuY3Rpb24gZ2VuRngodHlwZSxpbmNsdWRlV2lkdGgpe3ZhciB3aGljaCxhdHRycz17aGVpZ2h0OnR5cGV9LGk9MDtmb3IoaW5jbHVkZVdpZHRoPWluY2x1ZGVXaWR0aD8xOjA7ND5pO2krPTItaW5jbHVkZVdpZHRoKXdoaWNoPWNzc0V4cGFuZFtpXSxhdHRyc1tcIm1hcmdpblwiK3doaWNoXT1hdHRyc1tcInBhZGRpbmdcIit3aGljaF09dHlwZTtyZXR1cm4gaW5jbHVkZVdpZHRoJiYoYXR0cnMub3BhY2l0eT1hdHRycy53aWR0aD10eXBlKSxhdHRyc31mdW5jdGlvbiBjcmVhdGVUd2Vlbih2YWx1ZSxwcm9wLGFuaW1hdGlvbil7Zm9yKHZhciB0d2Vlbixjb2xsZWN0aW9uPSh0d2VlbmVyc1twcm9wXXx8W10pLmNvbmNhdCh0d2VlbmVyc1tcIipcIl0pLGluZGV4PTAsbGVuZ3RoPWNvbGxlY3Rpb24ubGVuZ3RoO2xlbmd0aD5pbmRleDtpbmRleCsrKWlmKHR3ZWVuPWNvbGxlY3Rpb25baW5kZXhdLmNhbGwoYW5pbWF0aW9uLHByb3AsdmFsdWUpKXJldHVybiB0d2Vlbn1mdW5jdGlvbiBkZWZhdWx0UHJlZmlsdGVyKGVsZW0scHJvcHMsb3B0cyl7dmFyIHByb3AsdmFsdWUsdG9nZ2xlLHR3ZWVuLGhvb2tzLG9sZGZpcmUsZGlzcGxheSxjaGVja0Rpc3BsYXksYW5pbT10aGlzLG9yaWc9e30sc3R5bGU9ZWxlbS5zdHlsZSxoaWRkZW49ZWxlbS5ub2RlVHlwZSYmaXNIaWRkZW4oZWxlbSksZGF0YVNob3c9alF1ZXJ5Ll9kYXRhKGVsZW0sXCJmeHNob3dcIik7b3B0cy5xdWV1ZXx8KGhvb2tzPWpRdWVyeS5fcXVldWVIb29rcyhlbGVtLFwiZnhcIiksbnVsbD09aG9va3MudW5xdWV1ZWQmJihob29rcy51bnF1ZXVlZD0wLG9sZGZpcmU9aG9va3MuZW1wdHkuZmlyZSxob29rcy5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7aG9va3MudW5xdWV1ZWR8fG9sZGZpcmUoKX0pLGhvb2tzLnVucXVldWVkKyssYW5pbS5hbHdheXMoZnVuY3Rpb24oKXthbmltLmFsd2F5cyhmdW5jdGlvbigpe2hvb2tzLnVucXVldWVkLS0salF1ZXJ5LnF1ZXVlKGVsZW0sXCJmeFwiKS5sZW5ndGh8fGhvb2tzLmVtcHR5LmZpcmUoKX0pfSkpLDE9PT1lbGVtLm5vZGVUeXBlJiYoXCJoZWlnaHRcImluIHByb3BzfHxcIndpZHRoXCJpbiBwcm9wcykmJihvcHRzLm92ZXJmbG93PVtzdHlsZS5vdmVyZmxvdyxzdHlsZS5vdmVyZmxvd1gsc3R5bGUub3ZlcmZsb3dZXSxkaXNwbGF5PWpRdWVyeS5jc3MoZWxlbSxcImRpc3BsYXlcIiksY2hlY2tEaXNwbGF5PVwibm9uZVwiPT09ZGlzcGxheT9qUXVlcnkuX2RhdGEoZWxlbSxcIm9sZGRpc3BsYXlcIil8fGRlZmF1bHREaXNwbGF5KGVsZW0ubm9kZU5hbWUpOmRpc3BsYXksXCJpbmxpbmVcIj09PWNoZWNrRGlzcGxheSYmXCJub25lXCI9PT1qUXVlcnkuY3NzKGVsZW0sXCJmbG9hdFwiKSYmKHN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dCYmXCJpbmxpbmVcIiE9PWRlZmF1bHREaXNwbGF5KGVsZW0ubm9kZU5hbWUpP3N0eWxlLnpvb209MTpzdHlsZS5kaXNwbGF5PVwiaW5saW5lLWJsb2NrXCIpKSxvcHRzLm92ZXJmbG93JiYoc3R5bGUub3ZlcmZsb3c9XCJoaWRkZW5cIixzdXBwb3J0LnNocmlua1dyYXBCbG9ja3MoKXx8YW5pbS5hbHdheXMoZnVuY3Rpb24oKXtzdHlsZS5vdmVyZmxvdz1vcHRzLm92ZXJmbG93WzBdLHN0eWxlLm92ZXJmbG93WD1vcHRzLm92ZXJmbG93WzFdLHN0eWxlLm92ZXJmbG93WT1vcHRzLm92ZXJmbG93WzJdfSkpO2Zvcihwcm9wIGluIHByb3BzKWlmKHZhbHVlPXByb3BzW3Byb3BdLHJmeHR5cGVzLmV4ZWModmFsdWUpKXtpZihkZWxldGUgcHJvcHNbcHJvcF0sdG9nZ2xlPXRvZ2dsZXx8XCJ0b2dnbGVcIj09PXZhbHVlLHZhbHVlPT09KGhpZGRlbj9cImhpZGVcIjpcInNob3dcIikpe2lmKFwic2hvd1wiIT09dmFsdWV8fCFkYXRhU2hvd3x8dm9pZCAwPT09ZGF0YVNob3dbcHJvcF0pY29udGludWU7aGlkZGVuPSEwfW9yaWdbcHJvcF09ZGF0YVNob3cmJmRhdGFTaG93W3Byb3BdfHxqUXVlcnkuc3R5bGUoZWxlbSxwcm9wKX1lbHNlIGRpc3BsYXk9dm9pZCAwO2lmKGpRdWVyeS5pc0VtcHR5T2JqZWN0KG9yaWcpKVwiaW5saW5lXCI9PT0oXCJub25lXCI9PT1kaXNwbGF5P2RlZmF1bHREaXNwbGF5KGVsZW0ubm9kZU5hbWUpOmRpc3BsYXkpJiYoc3R5bGUuZGlzcGxheT1kaXNwbGF5KTtlbHNle2RhdGFTaG93P1wiaGlkZGVuXCJpbiBkYXRhU2hvdyYmKGhpZGRlbj1kYXRhU2hvdy5oaWRkZW4pOmRhdGFTaG93PWpRdWVyeS5fZGF0YShlbGVtLFwiZnhzaG93XCIse30pLHRvZ2dsZSYmKGRhdGFTaG93LmhpZGRlbj0haGlkZGVuKSxoaWRkZW4/alF1ZXJ5KGVsZW0pLnNob3coKTphbmltLmRvbmUoZnVuY3Rpb24oKXtqUXVlcnkoZWxlbSkuaGlkZSgpfSksYW5pbS5kb25lKGZ1bmN0aW9uKCl7dmFyIHByb3A7alF1ZXJ5Ll9yZW1vdmVEYXRhKGVsZW0sXCJmeHNob3dcIik7Zm9yKHByb3AgaW4gb3JpZylqUXVlcnkuc3R5bGUoZWxlbSxwcm9wLG9yaWdbcHJvcF0pfSk7Zm9yKHByb3AgaW4gb3JpZyl0d2Vlbj1jcmVhdGVUd2VlbihoaWRkZW4/ZGF0YVNob3dbcHJvcF06MCxwcm9wLGFuaW0pLHByb3AgaW4gZGF0YVNob3d8fChkYXRhU2hvd1twcm9wXT10d2Vlbi5zdGFydCxoaWRkZW4mJih0d2Vlbi5lbmQ9dHdlZW4uc3RhcnQsdHdlZW4uc3RhcnQ9XCJ3aWR0aFwiPT09cHJvcHx8XCJoZWlnaHRcIj09PXByb3A/MTowKSl9fWZ1bmN0aW9uIHByb3BGaWx0ZXIocHJvcHMsc3BlY2lhbEVhc2luZyl7dmFyIGluZGV4LG5hbWUsZWFzaW5nLHZhbHVlLGhvb2tzO2ZvcihpbmRleCBpbiBwcm9wcylpZihuYW1lPWpRdWVyeS5jYW1lbENhc2UoaW5kZXgpLGVhc2luZz1zcGVjaWFsRWFzaW5nW25hbWVdLHZhbHVlPXByb3BzW2luZGV4XSxqUXVlcnkuaXNBcnJheSh2YWx1ZSkmJihlYXNpbmc9dmFsdWVbMV0sdmFsdWU9cHJvcHNbaW5kZXhdPXZhbHVlWzBdKSxpbmRleCE9PW5hbWUmJihwcm9wc1tuYW1lXT12YWx1ZSxkZWxldGUgcHJvcHNbaW5kZXhdKSxob29rcz1qUXVlcnkuY3NzSG9va3NbbmFtZV0saG9va3MmJlwiZXhwYW5kXCJpbiBob29rcyl7dmFsdWU9aG9va3MuZXhwYW5kKHZhbHVlKSxkZWxldGUgcHJvcHNbbmFtZV07Zm9yKGluZGV4IGluIHZhbHVlKWluZGV4IGluIHByb3BzfHwocHJvcHNbaW5kZXhdPXZhbHVlW2luZGV4XSxzcGVjaWFsRWFzaW5nW2luZGV4XT1lYXNpbmcpfWVsc2Ugc3BlY2lhbEVhc2luZ1tuYW1lXT1lYXNpbmd9ZnVuY3Rpb24gQW5pbWF0aW9uKGVsZW0scHJvcGVydGllcyxvcHRpb25zKXt2YXIgcmVzdWx0LHN0b3BwZWQsaW5kZXg9MCxsZW5ndGg9YW5pbWF0aW9uUHJlZmlsdGVycy5sZW5ndGgsZGVmZXJyZWQ9alF1ZXJ5LkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIHRpY2suZWxlbX0pLHRpY2s9ZnVuY3Rpb24oKXtpZihzdG9wcGVkKXJldHVybiExO2Zvcih2YXIgY3VycmVudFRpbWU9ZnhOb3d8fGNyZWF0ZUZ4Tm93KCkscmVtYWluaW5nPU1hdGgubWF4KDAsYW5pbWF0aW9uLnN0YXJ0VGltZSthbmltYXRpb24uZHVyYXRpb24tY3VycmVudFRpbWUpLHRlbXA9cmVtYWluaW5nL2FuaW1hdGlvbi5kdXJhdGlvbnx8MCxwZXJjZW50PTEtdGVtcCxpbmRleD0wLGxlbmd0aD1hbmltYXRpb24udHdlZW5zLmxlbmd0aDtsZW5ndGg+aW5kZXg7aW5kZXgrKylhbmltYXRpb24udHdlZW5zW2luZGV4XS5ydW4ocGVyY2VudCk7cmV0dXJuIGRlZmVycmVkLm5vdGlmeVdpdGgoZWxlbSxbYW5pbWF0aW9uLHBlcmNlbnQscmVtYWluaW5nXSksMT5wZXJjZW50JiZsZW5ndGg/cmVtYWluaW5nOihkZWZlcnJlZC5yZXNvbHZlV2l0aChlbGVtLFthbmltYXRpb25dKSwhMSl9LGFuaW1hdGlvbj1kZWZlcnJlZC5wcm9taXNlKHtlbGVtOmVsZW0scHJvcHM6alF1ZXJ5LmV4dGVuZCh7fSxwcm9wZXJ0aWVzKSxvcHRzOmpRdWVyeS5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e319LG9wdGlvbnMpLG9yaWdpbmFsUHJvcGVydGllczpwcm9wZXJ0aWVzLG9yaWdpbmFsT3B0aW9uczpvcHRpb25zLHN0YXJ0VGltZTpmeE5vd3x8Y3JlYXRlRnhOb3coKSxkdXJhdGlvbjpvcHRpb25zLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihwcm9wLGVuZCl7dmFyIHR3ZWVuPWpRdWVyeS5Ud2VlbihlbGVtLGFuaW1hdGlvbi5vcHRzLHByb3AsZW5kLGFuaW1hdGlvbi5vcHRzLnNwZWNpYWxFYXNpbmdbcHJvcF18fGFuaW1hdGlvbi5vcHRzLmVhc2luZyk7cmV0dXJuIGFuaW1hdGlvbi50d2VlbnMucHVzaCh0d2VlbiksdHdlZW59LHN0b3A6ZnVuY3Rpb24oZ290b0VuZCl7dmFyIGluZGV4PTAsbGVuZ3RoPWdvdG9FbmQ/YW5pbWF0aW9uLnR3ZWVucy5sZW5ndGg6MDtpZihzdG9wcGVkKXJldHVybiB0aGlzO2ZvcihzdG9wcGVkPSEwO2xlbmd0aD5pbmRleDtpbmRleCsrKWFuaW1hdGlvbi50d2VlbnNbaW5kZXhdLnJ1bigxKTtyZXR1cm4gZ290b0VuZD9kZWZlcnJlZC5yZXNvbHZlV2l0aChlbGVtLFthbmltYXRpb24sZ290b0VuZF0pOmRlZmVycmVkLnJlamVjdFdpdGgoZWxlbSxbYW5pbWF0aW9uLGdvdG9FbmRdKSx0aGlzfX0pLHByb3BzPWFuaW1hdGlvbi5wcm9wcztmb3IocHJvcEZpbHRlcihwcm9wcyxhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nKTtsZW5ndGg+aW5kZXg7aW5kZXgrKylpZihyZXN1bHQ9YW5pbWF0aW9uUHJlZmlsdGVyc1tpbmRleF0uY2FsbChhbmltYXRpb24sZWxlbSxwcm9wcyxhbmltYXRpb24ub3B0cykpcmV0dXJuIHJlc3VsdDtyZXR1cm4galF1ZXJ5Lm1hcChwcm9wcyxjcmVhdGVUd2VlbixhbmltYXRpb24pLGpRdWVyeS5pc0Z1bmN0aW9uKGFuaW1hdGlvbi5vcHRzLnN0YXJ0KSYmYW5pbWF0aW9uLm9wdHMuc3RhcnQuY2FsbChlbGVtLGFuaW1hdGlvbiksalF1ZXJ5LmZ4LnRpbWVyKGpRdWVyeS5leHRlbmQodGljayx7ZWxlbTplbGVtLGFuaW06YW5pbWF0aW9uLHF1ZXVlOmFuaW1hdGlvbi5vcHRzLnF1ZXVlfSkpLGFuaW1hdGlvbi5wcm9ncmVzcyhhbmltYXRpb24ub3B0cy5wcm9ncmVzcykuZG9uZShhbmltYXRpb24ub3B0cy5kb25lLGFuaW1hdGlvbi5vcHRzLmNvbXBsZXRlKS5mYWlsKGFuaW1hdGlvbi5vcHRzLmZhaWwpLmFsd2F5cyhhbmltYXRpb24ub3B0cy5hbHdheXMpfWZ1bmN0aW9uIGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyhzdHJ1Y3R1cmUpe3JldHVybiBmdW5jdGlvbihkYXRhVHlwZUV4cHJlc3Npb24sZnVuYyl7XCJzdHJpbmdcIiE9dHlwZW9mIGRhdGFUeXBlRXhwcmVzc2lvbiYmKGZ1bmM9ZGF0YVR5cGVFeHByZXNzaW9uLGRhdGFUeXBlRXhwcmVzc2lvbj1cIipcIik7dmFyIGRhdGFUeXBlLGk9MCxkYXRhVHlwZXM9ZGF0YVR5cGVFeHByZXNzaW9uLnRvTG93ZXJDYXNlKCkubWF0Y2gocm5vdHdoaXRlKXx8W107aWYoalF1ZXJ5LmlzRnVuY3Rpb24oZnVuYykpZm9yKDtkYXRhVHlwZT1kYXRhVHlwZXNbaSsrXTspXCIrXCI9PT1kYXRhVHlwZS5jaGFyQXQoMCk/KGRhdGFUeXBlPWRhdGFUeXBlLnNsaWNlKDEpfHxcIipcIiwoc3RydWN0dXJlW2RhdGFUeXBlXT1zdHJ1Y3R1cmVbZGF0YVR5cGVdfHxbXSkudW5zaGlmdChmdW5jKSk6KHN0cnVjdHVyZVtkYXRhVHlwZV09c3RydWN0dXJlW2RhdGFUeXBlXXx8W10pLnB1c2goZnVuYyl9fWZ1bmN0aW9uIGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKHN0cnVjdHVyZSxvcHRpb25zLG9yaWdpbmFsT3B0aW9ucyxqcVhIUil7ZnVuY3Rpb24gaW5zcGVjdChkYXRhVHlwZSl7dmFyIHNlbGVjdGVkO3JldHVybiBpbnNwZWN0ZWRbZGF0YVR5cGVdPSEwLGpRdWVyeS5lYWNoKHN0cnVjdHVyZVtkYXRhVHlwZV18fFtdLGZ1bmN0aW9uKF8scHJlZmlsdGVyT3JGYWN0b3J5KXt2YXIgZGF0YVR5cGVPclRyYW5zcG9ydD1wcmVmaWx0ZXJPckZhY3Rvcnkob3B0aW9ucyxvcmlnaW5hbE9wdGlvbnMsanFYSFIpO3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiBkYXRhVHlwZU9yVHJhbnNwb3J0fHxzZWVraW5nVHJhbnNwb3J0fHxpbnNwZWN0ZWRbZGF0YVR5cGVPclRyYW5zcG9ydF0/c2Vla2luZ1RyYW5zcG9ydD8hKHNlbGVjdGVkPWRhdGFUeXBlT3JUcmFuc3BvcnQpOnZvaWQgMDoob3B0aW9ucy5kYXRhVHlwZXMudW5zaGlmdChkYXRhVHlwZU9yVHJhbnNwb3J0KSxpbnNwZWN0KGRhdGFUeXBlT3JUcmFuc3BvcnQpLCExKX0pLHNlbGVjdGVkfXZhciBpbnNwZWN0ZWQ9e30sc2Vla2luZ1RyYW5zcG9ydD1zdHJ1Y3R1cmU9PT10cmFuc3BvcnRzO3JldHVybiBpbnNwZWN0KG9wdGlvbnMuZGF0YVR5cGVzWzBdKXx8IWluc3BlY3RlZFtcIipcIl0mJmluc3BlY3QoXCIqXCIpfWZ1bmN0aW9uIGFqYXhFeHRlbmQodGFyZ2V0LHNyYyl7dmFyIGRlZXAsa2V5LGZsYXRPcHRpb25zPWpRdWVyeS5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihrZXkgaW4gc3JjKXZvaWQgMCE9PXNyY1trZXldJiYoKGZsYXRPcHRpb25zW2tleV0/dGFyZ2V0OmRlZXB8fChkZWVwPXt9KSlba2V5XT1zcmNba2V5XSk7cmV0dXJuIGRlZXAmJmpRdWVyeS5leHRlbmQoITAsdGFyZ2V0LGRlZXApLHRhcmdldH1mdW5jdGlvbiBhamF4SGFuZGxlUmVzcG9uc2VzKHMsanFYSFIscmVzcG9uc2VzKXtmb3IodmFyIGZpcnN0RGF0YVR5cGUsY3QsZmluYWxEYXRhVHlwZSx0eXBlLGNvbnRlbnRzPXMuY29udGVudHMsZGF0YVR5cGVzPXMuZGF0YVR5cGVzO1wiKlwiPT09ZGF0YVR5cGVzWzBdOylkYXRhVHlwZXMuc2hpZnQoKSx2b2lkIDA9PT1jdCYmKGN0PXMubWltZVR5cGV8fGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKFwiQ29udGVudC1UeXBlXCIpKTtpZihjdClmb3IodHlwZSBpbiBjb250ZW50cylpZihjb250ZW50c1t0eXBlXSYmY29udGVudHNbdHlwZV0udGVzdChjdCkpe2RhdGFUeXBlcy51bnNoaWZ0KHR5cGUpO2JyZWFrfWlmKGRhdGFUeXBlc1swXWluIHJlc3BvbnNlcylmaW5hbERhdGFUeXBlPWRhdGFUeXBlc1swXTtlbHNle2Zvcih0eXBlIGluIHJlc3BvbnNlcyl7aWYoIWRhdGFUeXBlc1swXXx8cy5jb252ZXJ0ZXJzW3R5cGUrXCIgXCIrZGF0YVR5cGVzWzBdXSl7ZmluYWxEYXRhVHlwZT10eXBlO2JyZWFrfWZpcnN0RGF0YVR5cGV8fChmaXJzdERhdGFUeXBlPXR5cGUpfWZpbmFsRGF0YVR5cGU9ZmluYWxEYXRhVHlwZXx8Zmlyc3REYXRhVHlwZX1yZXR1cm4gZmluYWxEYXRhVHlwZT8oZmluYWxEYXRhVHlwZSE9PWRhdGFUeXBlc1swXSYmZGF0YVR5cGVzLnVuc2hpZnQoZmluYWxEYXRhVHlwZSkscmVzcG9uc2VzW2ZpbmFsRGF0YVR5cGVdKTp2b2lkIDB9ZnVuY3Rpb24gYWpheENvbnZlcnQocyxyZXNwb25zZSxqcVhIUixpc1N1Y2Nlc3Mpe3ZhciBjb252MixjdXJyZW50LGNvbnYsdG1wLHByZXYsY29udmVydGVycz17fSxkYXRhVHlwZXM9cy5kYXRhVHlwZXMuc2xpY2UoKTtpZihkYXRhVHlwZXNbMV0pZm9yKGNvbnYgaW4gcy5jb252ZXJ0ZXJzKWNvbnZlcnRlcnNbY29udi50b0xvd2VyQ2FzZSgpXT1zLmNvbnZlcnRlcnNbY29udl07Zm9yKGN1cnJlbnQ9ZGF0YVR5cGVzLnNoaWZ0KCk7Y3VycmVudDspaWYocy5yZXNwb25zZUZpZWxkc1tjdXJyZW50XSYmKGpxWEhSW3MucmVzcG9uc2VGaWVsZHNbY3VycmVudF1dPXJlc3BvbnNlKSwhcHJldiYmaXNTdWNjZXNzJiZzLmRhdGFGaWx0ZXImJihyZXNwb25zZT1zLmRhdGFGaWx0ZXIocmVzcG9uc2Uscy5kYXRhVHlwZSkpLHByZXY9Y3VycmVudCxjdXJyZW50PWRhdGFUeXBlcy5zaGlmdCgpKWlmKFwiKlwiPT09Y3VycmVudCljdXJyZW50PXByZXY7ZWxzZSBpZihcIipcIiE9PXByZXYmJnByZXYhPT1jdXJyZW50KXtpZihjb252PWNvbnZlcnRlcnNbcHJlditcIiBcIitjdXJyZW50XXx8Y29udmVydGVyc1tcIiogXCIrY3VycmVudF0sIWNvbnYpZm9yKGNvbnYyIGluIGNvbnZlcnRlcnMpaWYodG1wPWNvbnYyLnNwbGl0KFwiIFwiKSx0bXBbMV09PT1jdXJyZW50JiYoY29udj1jb252ZXJ0ZXJzW3ByZXYrXCIgXCIrdG1wWzBdXXx8Y29udmVydGVyc1tcIiogXCIrdG1wWzBdXSkpe2NvbnY9PT0hMD9jb252PWNvbnZlcnRlcnNbY29udjJdOmNvbnZlcnRlcnNbY29udjJdIT09ITAmJihjdXJyZW50PXRtcFswXSxkYXRhVHlwZXMudW5zaGlmdCh0bXBbMV0pKTticmVha31pZihjb252IT09ITApaWYoY29udiYmc1tcInRocm93c1wiXSlyZXNwb25zZT1jb252KHJlc3BvbnNlKTtlbHNlIHRyeXtyZXNwb25zZT1jb252KHJlc3BvbnNlKX1jYXRjaChlKXtyZXR1cm57c3RhdGU6XCJwYXJzZXJlcnJvclwiLGVycm9yOmNvbnY/ZTpcIk5vIGNvbnZlcnNpb24gZnJvbSBcIitwcmV2K1wiIHRvIFwiK2N1cnJlbnR9fX1yZXR1cm57c3RhdGU6XCJzdWNjZXNzXCIsZGF0YTpyZXNwb25zZX19ZnVuY3Rpb24gYnVpbGRQYXJhbXMocHJlZml4LG9iaix0cmFkaXRpb25hbCxhZGQpe3ZhciBuYW1lO2lmKGpRdWVyeS5pc0FycmF5KG9iaikpalF1ZXJ5LmVhY2gob2JqLGZ1bmN0aW9uKGksdil7dHJhZGl0aW9uYWx8fHJicmFja2V0LnRlc3QocHJlZml4KT9hZGQocHJlZml4LHYpOmJ1aWxkUGFyYW1zKHByZWZpeCtcIltcIisoXCJvYmplY3RcIj09dHlwZW9mIHY/aTpcIlwiKStcIl1cIix2LHRyYWRpdGlvbmFsLGFkZCl9KTtlbHNlIGlmKHRyYWRpdGlvbmFsfHxcIm9iamVjdFwiIT09alF1ZXJ5LnR5cGUob2JqKSlhZGQocHJlZml4LG9iaik7ZWxzZSBmb3IobmFtZSBpbiBvYmopYnVpbGRQYXJhbXMocHJlZml4K1wiW1wiK25hbWUrXCJdXCIsb2JqW25hbWVdLHRyYWRpdGlvbmFsLGFkZCl9ZnVuY3Rpb24gY3JlYXRlU3RhbmRhcmRYSFIoKXt0cnl7cmV0dXJuIG5ldyB3aW5kb3cuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goZSl7fX1mdW5jdGlvbiBjcmVhdGVBY3RpdmVYSFIoKXt0cnl7cmV0dXJuIG5ldyB3aW5kb3cuQWN0aXZlWE9iamVjdChcIk1pY3Jvc29mdC5YTUxIVFRQXCIpfWNhdGNoKGUpe319ZnVuY3Rpb24gZ2V0V2luZG93KGVsZW0pe3JldHVybiBqUXVlcnkuaXNXaW5kb3coZWxlbSk/ZWxlbTo5PT09ZWxlbS5ub2RlVHlwZT9lbGVtLmRlZmF1bHRWaWV3fHxlbGVtLnBhcmVudFdpbmRvdzohMX12YXIgZGVsZXRlZElkcz1bXSxzbGljZT1kZWxldGVkSWRzLnNsaWNlLGNvbmNhdD1kZWxldGVkSWRzLmNvbmNhdCxwdXNoPWRlbGV0ZWRJZHMucHVzaCxpbmRleE9mPWRlbGV0ZWRJZHMuaW5kZXhPZixjbGFzczJ0eXBlPXt9LHRvU3RyaW5nPWNsYXNzMnR5cGUudG9TdHJpbmcsaGFzT3duPWNsYXNzMnR5cGUuaGFzT3duUHJvcGVydHksc3VwcG9ydD17fSx2ZXJzaW9uPVwiMS4xMS4zXCIsalF1ZXJ5PWZ1bmN0aW9uKHNlbGVjdG9yLGNvbnRleHQpe3JldHVybiBuZXcgalF1ZXJ5LmZuLmluaXQoc2VsZWN0b3IsY29udGV4dCl9LHJ0cmltPS9eW1xcc1xcdUZFRkZcXHhBMF0rfFtcXHNcXHVGRUZGXFx4QTBdKyQvZyxybXNQcmVmaXg9L14tbXMtLyxyZGFzaEFscGhhPS8tKFtcXGRhLXpdKS9naSxmY2FtZWxDYXNlPWZ1bmN0aW9uKGFsbCxsZXR0ZXIpe3JldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKX07alF1ZXJ5LmZuPWpRdWVyeS5wcm90b3R5cGU9e2pxdWVyeTp2ZXJzaW9uLGNvbnN0cnVjdG9yOmpRdWVyeSxzZWxlY3RvcjpcIlwiLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gc2xpY2UuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKG51bSl7cmV0dXJuIG51bGwhPW51bT8wPm51bT90aGlzW251bSt0aGlzLmxlbmd0aF06dGhpc1tudW1dOnNsaWNlLmNhbGwodGhpcyl9LHB1c2hTdGFjazpmdW5jdGlvbihlbGVtcyl7dmFyIHJldD1qUXVlcnkubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGVsZW1zKTtyZXR1cm4gcmV0LnByZXZPYmplY3Q9dGhpcyxyZXQuY29udGV4dD10aGlzLmNvbnRleHQscmV0fSxlYWNoOmZ1bmN0aW9uKGNhbGxiYWNrLGFyZ3Mpe3JldHVybiBqUXVlcnkuZWFjaCh0aGlzLGNhbGxiYWNrLGFyZ3MpfSxtYXA6ZnVuY3Rpb24oY2FsbGJhY2spe3JldHVybiB0aGlzLnB1c2hTdGFjayhqUXVlcnkubWFwKHRoaXMsZnVuY3Rpb24oZWxlbSxpKXtyZXR1cm4gY2FsbGJhY2suY2FsbChlbGVtLGksZWxlbSl9KSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHNsaWNlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9uKGkpe3ZhciBsZW49dGhpcy5sZW5ndGgsaj0raSsoMD5pP2xlbjowKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaj49MCYmbGVuPmo/W3RoaXNbal1dOltdKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcihudWxsKX0scHVzaDpwdXNoLHNvcnQ6ZGVsZXRlZElkcy5zb3J0LHNwbGljZTpkZWxldGVkSWRzLnNwbGljZX0salF1ZXJ5LmV4dGVuZD1qUXVlcnkuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIHNyYyxjb3B5SXNBcnJheSxjb3B5LG5hbWUsb3B0aW9ucyxjbG9uZSx0YXJnZXQ9YXJndW1lbnRzWzBdfHx7fSxpPTEsbGVuZ3RoPWFyZ3VtZW50cy5sZW5ndGgsZGVlcD0hMTtmb3IoXCJib29sZWFuXCI9PXR5cGVvZiB0YXJnZXQmJihkZWVwPXRhcmdldCx0YXJnZXQ9YXJndW1lbnRzW2ldfHx7fSxpKyspLFwib2JqZWN0XCI9PXR5cGVvZiB0YXJnZXR8fGpRdWVyeS5pc0Z1bmN0aW9uKHRhcmdldCl8fCh0YXJnZXQ9e30pLGk9PT1sZW5ndGgmJih0YXJnZXQ9dGhpcyxpLS0pO2xlbmd0aD5pO2krKylpZihudWxsIT0ob3B0aW9ucz1hcmd1bWVudHNbaV0pKWZvcihuYW1lIGluIG9wdGlvbnMpc3JjPXRhcmdldFtuYW1lXSxjb3B5PW9wdGlvbnNbbmFtZV0sdGFyZ2V0IT09Y29weSYmKGRlZXAmJmNvcHkmJihqUXVlcnkuaXNQbGFpbk9iamVjdChjb3B5KXx8KGNvcHlJc0FycmF5PWpRdWVyeS5pc0FycmF5KGNvcHkpKSk/KGNvcHlJc0FycmF5Pyhjb3B5SXNBcnJheT0hMSxjbG9uZT1zcmMmJmpRdWVyeS5pc0FycmF5KHNyYyk/c3JjOltdKTpjbG9uZT1zcmMmJmpRdWVyeS5pc1BsYWluT2JqZWN0KHNyYyk/c3JjOnt9LHRhcmdldFtuYW1lXT1qUXVlcnkuZXh0ZW5kKGRlZXAsY2xvbmUsY29weSkpOnZvaWQgMCE9PWNvcHkmJih0YXJnZXRbbmFtZV09Y29weSkpO3JldHVybiB0YXJnZXR9LGpRdWVyeS5leHRlbmQoe2V4cGFuZG86XCJqUXVlcnlcIisodmVyc2lvbitNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cXEQvZyxcIlwiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKG1zZyl7dGhyb3cgbmV3IEVycm9yKG1zZyl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24ob2JqKXtyZXR1cm5cImZ1bmN0aW9uXCI9PT1qUXVlcnkudHlwZShvYmopfSxpc0FycmF5OkFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKG9iail7cmV0dXJuXCJhcnJheVwiPT09alF1ZXJ5LnR5cGUob2JqKX0saXNXaW5kb3c6ZnVuY3Rpb24ob2JqKXtyZXR1cm4gbnVsbCE9b2JqJiZvYmo9PW9iai53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihvYmope3JldHVybiFqUXVlcnkuaXNBcnJheShvYmopJiZvYmotcGFyc2VGbG9hdChvYmopKzE+PTB9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24ob2JqKXt2YXIgbmFtZTtmb3IobmFtZSBpbiBvYmopcmV0dXJuITE7cmV0dXJuITB9LGlzUGxhaW5PYmplY3Q6ZnVuY3Rpb24ob2JqKXt2YXIga2V5O2lmKCFvYmp8fFwib2JqZWN0XCIhPT1qUXVlcnkudHlwZShvYmopfHxvYmoubm9kZVR5cGV8fGpRdWVyeS5pc1dpbmRvdyhvYmopKXJldHVybiExO3RyeXtpZihvYmouY29uc3RydWN0b3ImJiFoYXNPd24uY2FsbChvYmosXCJjb25zdHJ1Y3RvclwiKSYmIWhhc093bi5jYWxsKG9iai5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsXCJpc1Byb3RvdHlwZU9mXCIpKXJldHVybiExfWNhdGNoKGUpe3JldHVybiExfWlmKHN1cHBvcnQub3duTGFzdClmb3Ioa2V5IGluIG9iailyZXR1cm4gaGFzT3duLmNhbGwob2JqLGtleSk7Zm9yKGtleSBpbiBvYmopO3JldHVybiB2b2lkIDA9PT1rZXl8fGhhc093bi5jYWxsKG9iaixrZXkpfSx0eXBlOmZ1bmN0aW9uKG9iail7cmV0dXJuIG51bGw9PW9iaj9vYmorXCJcIjpcIm9iamVjdFwiPT10eXBlb2Ygb2JqfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBvYmo/Y2xhc3MydHlwZVt0b1N0cmluZy5jYWxsKG9iaildfHxcIm9iamVjdFwiOnR5cGVvZiBvYmp9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oZGF0YSl7ZGF0YSYmalF1ZXJ5LnRyaW0oZGF0YSkmJih3aW5kb3cuZXhlY1NjcmlwdHx8ZnVuY3Rpb24oZGF0YSl7d2luZG93LmV2YWwuY2FsbCh3aW5kb3csZGF0YSl9KShkYXRhKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKHN0cmluZyl7cmV0dXJuIHN0cmluZy5yZXBsYWNlKHJtc1ByZWZpeCxcIm1zLVwiKS5yZXBsYWNlKHJkYXNoQWxwaGEsZmNhbWVsQ2FzZSl9LG5vZGVOYW1lOmZ1bmN0aW9uKGVsZW0sbmFtZSl7cmV0dXJuIGVsZW0ubm9kZU5hbWUmJmVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PW5hbWUudG9Mb3dlckNhc2UoKX0sZWFjaDpmdW5jdGlvbihvYmosY2FsbGJhY2ssYXJncyl7dmFyIHZhbHVlLGk9MCxsZW5ndGg9b2JqLmxlbmd0aCxpc0FycmF5PWlzQXJyYXlsaWtlKG9iaik7aWYoYXJncyl7aWYoaXNBcnJheSlmb3IoO2xlbmd0aD5pJiYodmFsdWU9Y2FsbGJhY2suYXBwbHkob2JqW2ldLGFyZ3MpLHZhbHVlIT09ITEpO2krKyk7ZWxzZSBmb3IoaSBpbiBvYmopaWYodmFsdWU9Y2FsbGJhY2suYXBwbHkob2JqW2ldLGFyZ3MpLHZhbHVlPT09ITEpYnJlYWt9ZWxzZSBpZihpc0FycmF5KWZvcig7bGVuZ3RoPmkmJih2YWx1ZT1jYWxsYmFjay5jYWxsKG9ialtpXSxpLG9ialtpXSksdmFsdWUhPT0hMSk7aSsrKTtlbHNlIGZvcihpIGluIG9iailpZih2YWx1ZT1jYWxsYmFjay5jYWxsKG9ialtpXSxpLG9ialtpXSksdmFsdWU9PT0hMSlicmVhaztyZXR1cm4gb2JqfSx0cmltOmZ1bmN0aW9uKHRleHQpe3JldHVybiBudWxsPT10ZXh0P1wiXCI6KHRleHQrXCJcIikucmVwbGFjZShydHJpbSxcIlwiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGFycixyZXN1bHRzKXt2YXIgcmV0PXJlc3VsdHN8fFtdO3JldHVybiBudWxsIT1hcnImJihpc0FycmF5bGlrZShPYmplY3QoYXJyKSk/alF1ZXJ5Lm1lcmdlKHJldCxcInN0cmluZ1wiPT10eXBlb2YgYXJyP1thcnJdOmFycik6cHVzaC5jYWxsKHJldCxhcnIpKSxyZXR9LGluQXJyYXk6ZnVuY3Rpb24oZWxlbSxhcnIsaSl7dmFyIGxlbjtpZihhcnIpe2lmKGluZGV4T2YpcmV0dXJuIGluZGV4T2YuY2FsbChhcnIsZWxlbSxpKTtmb3IobGVuPWFyci5sZW5ndGgsaT1pPzA+aT9NYXRoLm1heCgwLGxlbitpKTppOjA7bGVuPmk7aSsrKWlmKGkgaW4gYXJyJiZhcnJbaV09PT1lbGVtKXJldHVybiBpfXJldHVybi0xfSxtZXJnZTpmdW5jdGlvbihmaXJzdCxzZWNvbmQpe2Zvcih2YXIgbGVuPStzZWNvbmQubGVuZ3RoLGo9MCxpPWZpcnN0Lmxlbmd0aDtsZW4+ajspZmlyc3RbaSsrXT1zZWNvbmRbaisrXTtpZihsZW4hPT1sZW4pZm9yKDt2b2lkIDAhPT1zZWNvbmRbal07KWZpcnN0W2krK109c2Vjb25kW2orK107cmV0dXJuIGZpcnN0Lmxlbmd0aD1pLGZpcnN0fSxncmVwOmZ1bmN0aW9uKGVsZW1zLGNhbGxiYWNrLGludmVydCl7Zm9yKHZhciBjYWxsYmFja0ludmVyc2UsbWF0Y2hlcz1bXSxpPTAsbGVuZ3RoPWVsZW1zLmxlbmd0aCxjYWxsYmFja0V4cGVjdD0haW52ZXJ0O2xlbmd0aD5pO2krKyljYWxsYmFja0ludmVyc2U9IWNhbGxiYWNrKGVsZW1zW2ldLGkpLGNhbGxiYWNrSW52ZXJzZSE9PWNhbGxiYWNrRXhwZWN0JiZtYXRjaGVzLnB1c2goZWxlbXNbaV0pO3JldHVybiBtYXRjaGVzfSxtYXA6ZnVuY3Rpb24oZWxlbXMsY2FsbGJhY2ssYXJnKXt2YXIgdmFsdWUsaT0wLGxlbmd0aD1lbGVtcy5sZW5ndGgsaXNBcnJheT1pc0FycmF5bGlrZShlbGVtcykscmV0PVtdO2lmKGlzQXJyYXkpZm9yKDtsZW5ndGg+aTtpKyspdmFsdWU9Y2FsbGJhY2soZWxlbXNbaV0saSxhcmcpLG51bGwhPXZhbHVlJiZyZXQucHVzaCh2YWx1ZSk7ZWxzZSBmb3IoaSBpbiBlbGVtcyl2YWx1ZT1jYWxsYmFjayhlbGVtc1tpXSxpLGFyZyksbnVsbCE9dmFsdWUmJnJldC5wdXNoKHZhbHVlKTtyZXR1cm4gY29uY2F0LmFwcGx5KFtdLHJldCl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihmbixjb250ZXh0KXt2YXIgYXJncyxwcm94eSx0bXA7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGNvbnRleHQmJih0bXA9Zm5bY29udGV4dF0sY29udGV4dD1mbixmbj10bXApLGpRdWVyeS5pc0Z1bmN0aW9uKGZuKT8oYXJncz1zbGljZS5jYWxsKGFyZ3VtZW50cywyKSxwcm94eT1mdW5jdGlvbigpe3JldHVybiBmbi5hcHBseShjb250ZXh0fHx0aGlzLGFyZ3MuY29uY2F0KHNsaWNlLmNhbGwoYXJndW1lbnRzKSkpfSxwcm94eS5ndWlkPWZuLmd1aWQ9Zm4uZ3VpZHx8alF1ZXJ5Lmd1aWQrKyxwcm94eSk6dm9pZCAwfSxub3c6ZnVuY3Rpb24oKXtyZXR1cm4rbmV3IERhdGV9LHN1cHBvcnQ6c3VwcG9ydH0pLGpRdWVyeS5lYWNoKFwiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvclwiLnNwbGl0KFwiIFwiKSxmdW5jdGlvbihpLG5hbWUpe2NsYXNzMnR5cGVbXCJbb2JqZWN0IFwiK25hbWUrXCJdXCJdPW5hbWUudG9Mb3dlckNhc2UoKX0pO3ZhciBTaXp6bGU9ZnVuY3Rpb24od2luZG93KXtmdW5jdGlvbiBTaXp6bGUoc2VsZWN0b3IsY29udGV4dCxyZXN1bHRzLHNlZWQpe3ZhciBtYXRjaCxlbGVtLG0sbm9kZVR5cGUsaSxncm91cHMsb2xkLG5pZCxuZXdDb250ZXh0LG5ld1NlbGVjdG9yO2lmKChjb250ZXh0P2NvbnRleHQub3duZXJEb2N1bWVudHx8Y29udGV4dDpwcmVmZXJyZWREb2MpIT09ZG9jdW1lbnQmJnNldERvY3VtZW50KGNvbnRleHQpLGNvbnRleHQ9Y29udGV4dHx8ZG9jdW1lbnQscmVzdWx0cz1yZXN1bHRzfHxbXSxub2RlVHlwZT1jb250ZXh0Lm5vZGVUeXBlLFwic3RyaW5nXCIhPXR5cGVvZiBzZWxlY3Rvcnx8IXNlbGVjdG9yfHwxIT09bm9kZVR5cGUmJjkhPT1ub2RlVHlwZSYmMTEhPT1ub2RlVHlwZSlyZXR1cm4gcmVzdWx0cztpZighc2VlZCYmZG9jdW1lbnRJc0hUTUwpe2lmKDExIT09bm9kZVR5cGUmJihtYXRjaD1ycXVpY2tFeHByLmV4ZWMoc2VsZWN0b3IpKSlpZihtPW1hdGNoWzFdKXtpZig5PT09bm9kZVR5cGUpe2lmKGVsZW09Y29udGV4dC5nZXRFbGVtZW50QnlJZChtKSwhZWxlbXx8IWVsZW0ucGFyZW50Tm9kZSlyZXR1cm4gcmVzdWx0cztpZihlbGVtLmlkPT09bSlyZXR1cm4gcmVzdWx0cy5wdXNoKGVsZW0pLHJlc3VsdHN9ZWxzZSBpZihjb250ZXh0Lm93bmVyRG9jdW1lbnQmJihlbGVtPWNvbnRleHQub3duZXJEb2N1bWVudC5nZXRFbGVtZW50QnlJZChtKSkmJmNvbnRhaW5zKGNvbnRleHQsZWxlbSkmJmVsZW0uaWQ9PT1tKXJldHVybiByZXN1bHRzLnB1c2goZWxlbSkscmVzdWx0c31lbHNle2lmKG1hdGNoWzJdKXJldHVybiBwdXNoLmFwcGx5KHJlc3VsdHMsY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZShzZWxlY3RvcikpLHJlc3VsdHM7aWYoKG09bWF0Y2hbM10pJiZzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIHB1c2guYXBwbHkocmVzdWx0cyxjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUobSkpLHJlc3VsdHN9aWYoc3VwcG9ydC5xc2EmJighcmJ1Z2d5UVNBfHwhcmJ1Z2d5UVNBLnRlc3Qoc2VsZWN0b3IpKSl7aWYobmlkPW9sZD1leHBhbmRvLG5ld0NvbnRleHQ9Y29udGV4dCxuZXdTZWxlY3Rvcj0xIT09bm9kZVR5cGUmJnNlbGVjdG9yLDE9PT1ub2RlVHlwZSYmXCJvYmplY3RcIiE9PWNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7Zm9yKGdyb3Vwcz10b2tlbml6ZShzZWxlY3RvciksKG9sZD1jb250ZXh0LmdldEF0dHJpYnV0ZShcImlkXCIpKT9uaWQ9b2xkLnJlcGxhY2UocmVzY2FwZSxcIlxcXFwkJlwiKTpjb250ZXh0LnNldEF0dHJpYnV0ZShcImlkXCIsbmlkKSxuaWQ9XCJbaWQ9J1wiK25pZCtcIiddIFwiLGk9Z3JvdXBzLmxlbmd0aDtpLS07KWdyb3Vwc1tpXT1uaWQrdG9TZWxlY3Rvcihncm91cHNbaV0pO25ld0NvbnRleHQ9cnNpYmxpbmcudGVzdChzZWxlY3RvcikmJnRlc3RDb250ZXh0KGNvbnRleHQucGFyZW50Tm9kZSl8fGNvbnRleHQsbmV3U2VsZWN0b3I9Z3JvdXBzLmpvaW4oXCIsXCIpfWlmKG5ld1NlbGVjdG9yKXRyeXtyZXR1cm4gcHVzaC5hcHBseShyZXN1bHRzLG5ld0NvbnRleHQucXVlcnlTZWxlY3RvckFsbChuZXdTZWxlY3RvcikpLHJlc3VsdHN9Y2F0Y2gocXNhRXJyb3Ipe31maW5hbGx5e29sZHx8Y29udGV4dC5yZW1vdmVBdHRyaWJ1dGUoXCJpZFwiKX19fXJldHVybiBzZWxlY3Qoc2VsZWN0b3IucmVwbGFjZShydHJpbSxcIiQxXCIpLGNvbnRleHQscmVzdWx0cyxzZWVkKX1mdW5jdGlvbiBjcmVhdGVDYWNoZSgpe2Z1bmN0aW9uIGNhY2hlKGtleSx2YWx1ZSl7cmV0dXJuIGtleXMucHVzaChrZXkrXCIgXCIpPkV4cHIuY2FjaGVMZW5ndGgmJmRlbGV0ZSBjYWNoZVtrZXlzLnNoaWZ0KCldLGNhY2hlW2tleStcIiBcIl09dmFsdWV9dmFyIGtleXM9W107cmV0dXJuIGNhY2hlfWZ1bmN0aW9uIG1hcmtGdW5jdGlvbihmbil7cmV0dXJuIGZuW2V4cGFuZG9dPSEwLGZufWZ1bmN0aW9uIGFzc2VydChmbil7dmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3RyeXtyZXR1cm4hIWZuKGRpdil9Y2F0Y2goZSl7cmV0dXJuITF9ZmluYWxseXtkaXYucGFyZW50Tm9kZSYmZGl2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZGl2KSxkaXY9bnVsbH19ZnVuY3Rpb24gYWRkSGFuZGxlKGF0dHJzLGhhbmRsZXIpe2Zvcih2YXIgYXJyPWF0dHJzLnNwbGl0KFwifFwiKSxpPWF0dHJzLmxlbmd0aDtpLS07KUV4cHIuYXR0ckhhbmRsZVthcnJbaV1dPWhhbmRsZXJ9ZnVuY3Rpb24gc2libGluZ0NoZWNrKGEsYil7dmFyIGN1cj1iJiZhLGRpZmY9Y3VyJiYxPT09YS5ub2RlVHlwZSYmMT09PWIubm9kZVR5cGUmJih+Yi5zb3VyY2VJbmRleHx8TUFYX05FR0FUSVZFKS0ofmEuc291cmNlSW5kZXh8fE1BWF9ORUdBVElWRSk7aWYoZGlmZilyZXR1cm4gZGlmZjtpZihjdXIpZm9yKDtjdXI9Y3VyLm5leHRTaWJsaW5nOylpZihjdXI9PT1iKXJldHVybi0xO3JldHVybiBhPzE6LTF9ZnVuY3Rpb24gY3JlYXRlSW5wdXRQc2V1ZG8odHlwZSl7cmV0dXJuIGZ1bmN0aW9uKGVsZW0pe3ZhciBuYW1lPWVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm5cImlucHV0XCI9PT1uYW1lJiZlbGVtLnR5cGU9PT10eXBlfX1mdW5jdGlvbiBjcmVhdGVCdXR0b25Qc2V1ZG8odHlwZSl7cmV0dXJuIGZ1bmN0aW9uKGVsZW0pe3ZhciBuYW1lPWVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oXCJpbnB1dFwiPT09bmFtZXx8XCJidXR0b25cIj09PW5hbWUpJiZlbGVtLnR5cGU9PT10eXBlfX1mdW5jdGlvbiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZuKXtyZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKGFyZ3VtZW50KXtyZXR1cm4gYXJndW1lbnQ9K2FyZ3VtZW50LG1hcmtGdW5jdGlvbihmdW5jdGlvbihzZWVkLG1hdGNoZXMpe2Zvcih2YXIgaixtYXRjaEluZGV4ZXM9Zm4oW10sc2VlZC5sZW5ndGgsYXJndW1lbnQpLGk9bWF0Y2hJbmRleGVzLmxlbmd0aDtpLS07KXNlZWRbaj1tYXRjaEluZGV4ZXNbaV1dJiYoc2VlZFtqXT0hKG1hdGNoZXNbal09c2VlZFtqXSkpfSl9KX1mdW5jdGlvbiB0ZXN0Q29udGV4dChjb250ZXh0KXtyZXR1cm4gY29udGV4dCYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmNvbnRleHR9ZnVuY3Rpb24gc2V0RmlsdGVycygpe31mdW5jdGlvbiB0b1NlbGVjdG9yKHRva2Vucyl7Zm9yKHZhciBpPTAsbGVuPXRva2Vucy5sZW5ndGgsc2VsZWN0b3I9XCJcIjtsZW4+aTtpKyspc2VsZWN0b3IrPXRva2Vuc1tpXS52YWx1ZTtyZXR1cm4gc2VsZWN0b3J9ZnVuY3Rpb24gYWRkQ29tYmluYXRvcihtYXRjaGVyLGNvbWJpbmF0b3IsYmFzZSl7dmFyIGRpcj1jb21iaW5hdG9yLmRpcixjaGVja05vbkVsZW1lbnRzPWJhc2UmJlwicGFyZW50Tm9kZVwiPT09ZGlyLGRvbmVOYW1lPWRvbmUrKztyZXR1cm4gY29tYmluYXRvci5maXJzdD9mdW5jdGlvbihlbGVtLGNvbnRleHQseG1sKXtmb3IoO2VsZW09ZWxlbVtkaXJdOylpZigxPT09ZWxlbS5ub2RlVHlwZXx8Y2hlY2tOb25FbGVtZW50cylyZXR1cm4gbWF0Y2hlcihlbGVtLGNvbnRleHQseG1sKX06ZnVuY3Rpb24oZWxlbSxjb250ZXh0LHhtbCl7dmFyIG9sZENhY2hlLG91dGVyQ2FjaGUsbmV3Q2FjaGU9W2RpcnJ1bnMsZG9uZU5hbWVdO2lmKHhtbCl7Zm9yKDtlbGVtPWVsZW1bZGlyXTspaWYoKDE9PT1lbGVtLm5vZGVUeXBlfHxjaGVja05vbkVsZW1lbnRzKSYmbWF0Y2hlcihlbGVtLGNvbnRleHQseG1sKSlyZXR1cm4hMH1lbHNlIGZvcig7ZWxlbT1lbGVtW2Rpcl07KWlmKDE9PT1lbGVtLm5vZGVUeXBlfHxjaGVja05vbkVsZW1lbnRzKXtpZihvdXRlckNhY2hlPWVsZW1bZXhwYW5kb118fChlbGVtW2V4cGFuZG9dPXt9KSwob2xkQ2FjaGU9b3V0ZXJDYWNoZVtkaXJdKSYmb2xkQ2FjaGVbMF09PT1kaXJydW5zJiZvbGRDYWNoZVsxXT09PWRvbmVOYW1lKXJldHVybiBuZXdDYWNoZVsyXT1vbGRDYWNoZVsyXTtpZihvdXRlckNhY2hlW2Rpcl09bmV3Q2FjaGUsbmV3Q2FjaGVbMl09bWF0Y2hlcihlbGVtLGNvbnRleHQseG1sKSlyZXR1cm4hMH19fWZ1bmN0aW9uIGVsZW1lbnRNYXRjaGVyKG1hdGNoZXJzKXtyZXR1cm4gbWF0Y2hlcnMubGVuZ3RoPjE/ZnVuY3Rpb24oZWxlbSxjb250ZXh0LHhtbCl7Zm9yKHZhciBpPW1hdGNoZXJzLmxlbmd0aDtpLS07KWlmKCFtYXRjaGVyc1tpXShlbGVtLGNvbnRleHQseG1sKSlyZXR1cm4hMTtyZXR1cm4hMH06bWF0Y2hlcnNbMF19ZnVuY3Rpb24gbXVsdGlwbGVDb250ZXh0cyhzZWxlY3Rvcixjb250ZXh0cyxyZXN1bHRzKXtmb3IodmFyIGk9MCxsZW49Y29udGV4dHMubGVuZ3RoO2xlbj5pO2krKylTaXp6bGUoc2VsZWN0b3IsY29udGV4dHNbaV0scmVzdWx0cyk7cmV0dXJuIHJlc3VsdHN9ZnVuY3Rpb24gY29uZGVuc2UodW5tYXRjaGVkLG1hcCxmaWx0ZXIsY29udGV4dCx4bWwpe2Zvcih2YXIgZWxlbSxuZXdVbm1hdGNoZWQ9W10saT0wLGxlbj11bm1hdGNoZWQubGVuZ3RoLG1hcHBlZD1udWxsIT1tYXA7bGVuPmk7aSsrKShlbGVtPXVubWF0Y2hlZFtpXSkmJighZmlsdGVyfHxmaWx0ZXIoZWxlbSxjb250ZXh0LHhtbCkpJiYobmV3VW5tYXRjaGVkLnB1c2goZWxlbSksbWFwcGVkJiZtYXAucHVzaChpKSk7cmV0dXJuIG5ld1VubWF0Y2hlZH1mdW5jdGlvbiBzZXRNYXRjaGVyKHByZUZpbHRlcixzZWxlY3RvcixtYXRjaGVyLHBvc3RGaWx0ZXIscG9zdEZpbmRlcixwb3N0U2VsZWN0b3Ipe3JldHVybiBwb3N0RmlsdGVyJiYhcG9zdEZpbHRlcltleHBhbmRvXSYmKHBvc3RGaWx0ZXI9c2V0TWF0Y2hlcihwb3N0RmlsdGVyKSkscG9zdEZpbmRlciYmIXBvc3RGaW5kZXJbZXhwYW5kb10mJihwb3N0RmluZGVyPXNldE1hdGNoZXIocG9zdEZpbmRlcixwb3N0U2VsZWN0b3IpKSxtYXJrRnVuY3Rpb24oZnVuY3Rpb24oc2VlZCxyZXN1bHRzLGNvbnRleHQseG1sKXt2YXIgdGVtcCxpLGVsZW0scHJlTWFwPVtdLHBvc3RNYXA9W10scHJlZXhpc3Rpbmc9cmVzdWx0cy5sZW5ndGgsZWxlbXM9c2VlZHx8bXVsdGlwbGVDb250ZXh0cyhzZWxlY3Rvcnx8XCIqXCIsY29udGV4dC5ub2RlVHlwZT9bY29udGV4dF06Y29udGV4dCxbXSksbWF0Y2hlckluPSFwcmVGaWx0ZXJ8fCFzZWVkJiZzZWxlY3Rvcj9lbGVtczpjb25kZW5zZShlbGVtcyxwcmVNYXAscHJlRmlsdGVyLGNvbnRleHQseG1sKSxtYXRjaGVyT3V0PW1hdGNoZXI/cG9zdEZpbmRlcnx8KHNlZWQ/cHJlRmlsdGVyOnByZWV4aXN0aW5nfHxwb3N0RmlsdGVyKT9bXTpyZXN1bHRzOm1hdGNoZXJJbjtpZihtYXRjaGVyJiZtYXRjaGVyKG1hdGNoZXJJbixtYXRjaGVyT3V0LGNvbnRleHQseG1sKSxwb3N0RmlsdGVyKWZvcih0ZW1wPWNvbmRlbnNlKG1hdGNoZXJPdXQscG9zdE1hcCkscG9zdEZpbHRlcih0ZW1wLFtdLGNvbnRleHQseG1sKSxpPXRlbXAubGVuZ3RoO2ktLTspKGVsZW09dGVtcFtpXSkmJihtYXRjaGVyT3V0W3Bvc3RNYXBbaV1dPSEobWF0Y2hlckluW3Bvc3RNYXBbaV1dPWVsZW0pKTtpZihzZWVkKXtpZihwb3N0RmluZGVyfHxwcmVGaWx0ZXIpe2lmKHBvc3RGaW5kZXIpe2Zvcih0ZW1wPVtdLGk9bWF0Y2hlck91dC5sZW5ndGg7aS0tOykoZWxlbT1tYXRjaGVyT3V0W2ldKSYmdGVtcC5wdXNoKG1hdGNoZXJJbltpXT1lbGVtKTtwb3N0RmluZGVyKG51bGwsbWF0Y2hlck91dD1bXSx0ZW1wLHhtbCl9Zm9yKGk9bWF0Y2hlck91dC5sZW5ndGg7aS0tOykoZWxlbT1tYXRjaGVyT3V0W2ldKSYmKHRlbXA9cG9zdEZpbmRlcj9pbmRleE9mKHNlZWQsZWxlbSk6cHJlTWFwW2ldKT4tMSYmKHNlZWRbdGVtcF09IShyZXN1bHRzW3RlbXBdPWVsZW0pKX19ZWxzZSBtYXRjaGVyT3V0PWNvbmRlbnNlKG1hdGNoZXJPdXQ9PT1yZXN1bHRzP21hdGNoZXJPdXQuc3BsaWNlKHByZWV4aXN0aW5nLG1hdGNoZXJPdXQubGVuZ3RoKTptYXRjaGVyT3V0KSxwb3N0RmluZGVyP3Bvc3RGaW5kZXIobnVsbCxyZXN1bHRzLG1hdGNoZXJPdXQseG1sKTpwdXNoLmFwcGx5KHJlc3VsdHMsbWF0Y2hlck91dCl9KX1mdW5jdGlvbiBtYXRjaGVyRnJvbVRva2Vucyh0b2tlbnMpe2Zvcih2YXIgY2hlY2tDb250ZXh0LG1hdGNoZXIsaixsZW49dG9rZW5zLmxlbmd0aCxsZWFkaW5nUmVsYXRpdmU9RXhwci5yZWxhdGl2ZVt0b2tlbnNbMF0udHlwZV0saW1wbGljaXRSZWxhdGl2ZT1sZWFkaW5nUmVsYXRpdmV8fEV4cHIucmVsYXRpdmVbXCIgXCJdLGk9bGVhZGluZ1JlbGF0aXZlPzE6MCxtYXRjaENvbnRleHQ9YWRkQ29tYmluYXRvcihmdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbT09PWNoZWNrQ29udGV4dH0saW1wbGljaXRSZWxhdGl2ZSwhMCksbWF0Y2hBbnlDb250ZXh0PWFkZENvbWJpbmF0b3IoZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGluZGV4T2YoY2hlY2tDb250ZXh0LGVsZW0pPi0xfSxpbXBsaWNpdFJlbGF0aXZlLCEwKSxtYXRjaGVycz1bZnVuY3Rpb24oZWxlbSxjb250ZXh0LHhtbCl7dmFyIHJldD0hbGVhZGluZ1JlbGF0aXZlJiYoeG1sfHxjb250ZXh0IT09b3V0ZXJtb3N0Q29udGV4dCl8fCgoY2hlY2tDb250ZXh0PWNvbnRleHQpLm5vZGVUeXBlP21hdGNoQ29udGV4dChlbGVtLGNvbnRleHQseG1sKTptYXRjaEFueUNvbnRleHQoZWxlbSxjb250ZXh0LHhtbCkpO3JldHVybiBjaGVja0NvbnRleHQ9bnVsbCxyZXR9XTtsZW4+aTtpKyspaWYobWF0Y2hlcj1FeHByLnJlbGF0aXZlW3Rva2Vuc1tpXS50eXBlXSltYXRjaGVycz1bYWRkQ29tYmluYXRvcihlbGVtZW50TWF0Y2hlcihtYXRjaGVycyksbWF0Y2hlcildO2Vsc2V7aWYobWF0Y2hlcj1FeHByLmZpbHRlclt0b2tlbnNbaV0udHlwZV0uYXBwbHkobnVsbCx0b2tlbnNbaV0ubWF0Y2hlcyksbWF0Y2hlcltleHBhbmRvXSl7Zm9yKGo9KytpO2xlbj5qJiYhRXhwci5yZWxhdGl2ZVt0b2tlbnNbal0udHlwZV07aisrKTtyZXR1cm4gc2V0TWF0Y2hlcihpPjEmJmVsZW1lbnRNYXRjaGVyKG1hdGNoZXJzKSxpPjEmJnRvU2VsZWN0b3IodG9rZW5zLnNsaWNlKDAsaS0xKS5jb25jYXQoe3ZhbHVlOlwiIFwiPT09dG9rZW5zW2ktMl0udHlwZT9cIipcIjpcIlwifSkpLnJlcGxhY2UocnRyaW0sXCIkMVwiKSxtYXRjaGVyLGo+aSYmbWF0Y2hlckZyb21Ub2tlbnModG9rZW5zLnNsaWNlKGksaikpLGxlbj5qJiZtYXRjaGVyRnJvbVRva2Vucyh0b2tlbnM9dG9rZW5zLnNsaWNlKGopKSxsZW4+aiYmdG9TZWxlY3Rvcih0b2tlbnMpKX1tYXRjaGVycy5wdXNoKG1hdGNoZXIpfXJldHVybiBlbGVtZW50TWF0Y2hlcihtYXRjaGVycyl9ZnVuY3Rpb24gbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKGVsZW1lbnRNYXRjaGVycyxzZXRNYXRjaGVycyl7dmFyIGJ5U2V0PXNldE1hdGNoZXJzLmxlbmd0aD4wLGJ5RWxlbWVudD1lbGVtZW50TWF0Y2hlcnMubGVuZ3RoPjAsc3VwZXJNYXRjaGVyPWZ1bmN0aW9uKHNlZWQsY29udGV4dCx4bWwscmVzdWx0cyxvdXRlcm1vc3Qpe3ZhciBlbGVtLGosbWF0Y2hlcixtYXRjaGVkQ291bnQ9MCxpPVwiMFwiLHVubWF0Y2hlZD1zZWVkJiZbXSxzZXRNYXRjaGVkPVtdLGNvbnRleHRCYWNrdXA9b3V0ZXJtb3N0Q29udGV4dCxlbGVtcz1zZWVkfHxieUVsZW1lbnQmJkV4cHIuZmluZC5UQUcoXCIqXCIsb3V0ZXJtb3N0KSxkaXJydW5zVW5pcXVlPWRpcnJ1bnMrPW51bGw9PWNvbnRleHRCYWNrdXA/MTpNYXRoLnJhbmRvbSgpfHwuMSxsZW49ZWxlbXMubGVuZ3RoO2ZvcihvdXRlcm1vc3QmJihvdXRlcm1vc3RDb250ZXh0PWNvbnRleHQhPT1kb2N1bWVudCYmY29udGV4dCk7aSE9PWxlbiYmbnVsbCE9KGVsZW09ZWxlbXNbaV0pO2krKyl7aWYoYnlFbGVtZW50JiZlbGVtKXtmb3Ioaj0wO21hdGNoZXI9ZWxlbWVudE1hdGNoZXJzW2orK107KWlmKG1hdGNoZXIoZWxlbSxjb250ZXh0LHhtbCkpe3Jlc3VsdHMucHVzaChlbGVtKTtcbmJyZWFrfW91dGVybW9zdCYmKGRpcnJ1bnM9ZGlycnVuc1VuaXF1ZSl9YnlTZXQmJigoZWxlbT0hbWF0Y2hlciYmZWxlbSkmJm1hdGNoZWRDb3VudC0tLHNlZWQmJnVubWF0Y2hlZC5wdXNoKGVsZW0pKX1pZihtYXRjaGVkQ291bnQrPWksYnlTZXQmJmkhPT1tYXRjaGVkQ291bnQpe2ZvcihqPTA7bWF0Y2hlcj1zZXRNYXRjaGVyc1tqKytdOyltYXRjaGVyKHVubWF0Y2hlZCxzZXRNYXRjaGVkLGNvbnRleHQseG1sKTtpZihzZWVkKXtpZihtYXRjaGVkQ291bnQ+MClmb3IoO2ktLTspdW5tYXRjaGVkW2ldfHxzZXRNYXRjaGVkW2ldfHwoc2V0TWF0Y2hlZFtpXT1wb3AuY2FsbChyZXN1bHRzKSk7c2V0TWF0Y2hlZD1jb25kZW5zZShzZXRNYXRjaGVkKX1wdXNoLmFwcGx5KHJlc3VsdHMsc2V0TWF0Y2hlZCksb3V0ZXJtb3N0JiYhc2VlZCYmc2V0TWF0Y2hlZC5sZW5ndGg+MCYmbWF0Y2hlZENvdW50K3NldE1hdGNoZXJzLmxlbmd0aD4xJiZTaXp6bGUudW5pcXVlU29ydChyZXN1bHRzKX1yZXR1cm4gb3V0ZXJtb3N0JiYoZGlycnVucz1kaXJydW5zVW5pcXVlLG91dGVybW9zdENvbnRleHQ9Y29udGV4dEJhY2t1cCksdW5tYXRjaGVkfTtyZXR1cm4gYnlTZXQ/bWFya0Z1bmN0aW9uKHN1cGVyTWF0Y2hlcik6c3VwZXJNYXRjaGVyfXZhciBpLHN1cHBvcnQsRXhwcixnZXRUZXh0LGlzWE1MLHRva2VuaXplLGNvbXBpbGUsc2VsZWN0LG91dGVybW9zdENvbnRleHQsc29ydElucHV0LGhhc0R1cGxpY2F0ZSxzZXREb2N1bWVudCxkb2N1bWVudCxkb2NFbGVtLGRvY3VtZW50SXNIVE1MLHJidWdneVFTQSxyYnVnZ3lNYXRjaGVzLG1hdGNoZXMsY29udGFpbnMsZXhwYW5kbz1cInNpenpsZVwiKzEqbmV3IERhdGUscHJlZmVycmVkRG9jPXdpbmRvdy5kb2N1bWVudCxkaXJydW5zPTAsZG9uZT0wLGNsYXNzQ2FjaGU9Y3JlYXRlQ2FjaGUoKSx0b2tlbkNhY2hlPWNyZWF0ZUNhY2hlKCksY29tcGlsZXJDYWNoZT1jcmVhdGVDYWNoZSgpLHNvcnRPcmRlcj1mdW5jdGlvbihhLGIpe3JldHVybiBhPT09YiYmKGhhc0R1cGxpY2F0ZT0hMCksMH0sTUFYX05FR0FUSVZFPTE8PDMxLGhhc093bj17fS5oYXNPd25Qcm9wZXJ0eSxhcnI9W10scG9wPWFyci5wb3AscHVzaF9uYXRpdmU9YXJyLnB1c2gscHVzaD1hcnIucHVzaCxzbGljZT1hcnIuc2xpY2UsaW5kZXhPZj1mdW5jdGlvbihsaXN0LGVsZW0pe2Zvcih2YXIgaT0wLGxlbj1saXN0Lmxlbmd0aDtsZW4+aTtpKyspaWYobGlzdFtpXT09PWVsZW0pcmV0dXJuIGk7cmV0dXJuLTF9LGJvb2xlYW5zPVwiY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWRcIix3aGl0ZXNwYWNlPVwiW1xcXFx4MjBcXFxcdFxcXFxyXFxcXG5cXFxcZl1cIixjaGFyYWN0ZXJFbmNvZGluZz1cIig/OlxcXFxcXFxcLnxbXFxcXHctXXxbXlxcXFx4MDAtXFxcXHhhMF0pK1wiLGlkZW50aWZpZXI9Y2hhcmFjdGVyRW5jb2RpbmcucmVwbGFjZShcIndcIixcIncjXCIpLGF0dHJpYnV0ZXM9XCJcXFxcW1wiK3doaXRlc3BhY2UrXCIqKFwiK2NoYXJhY3RlckVuY29kaW5nK1wiKSg/OlwiK3doaXRlc3BhY2UrXCIqKFsqXiR8IX5dPz0pXCIrd2hpdGVzcGFjZStcIiooPzonKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcJ10pKiknfFxcXCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFxcXFwiXSkqKVxcXCJ8KFwiK2lkZW50aWZpZXIrXCIpKXwpXCIrd2hpdGVzcGFjZStcIipcXFxcXVwiLHBzZXVkb3M9XCI6KFwiK2NoYXJhY3RlckVuY29kaW5nK1wiKSg/OlxcXFwoKCgnKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcJ10pKiknfFxcXCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFxcXFwiXSkqKVxcXCIpfCgoPzpcXFxcXFxcXC58W15cXFxcXFxcXCgpW1xcXFxdXXxcIithdHRyaWJ1dGVzK1wiKSopfC4qKVxcXFwpfClcIixyd2hpdGVzcGFjZT1uZXcgUmVnRXhwKHdoaXRlc3BhY2UrXCIrXCIsXCJnXCIpLHJ0cmltPW5ldyBSZWdFeHAoXCJeXCIrd2hpdGVzcGFjZStcIit8KCg/Ol58W15cXFxcXFxcXF0pKD86XFxcXFxcXFwuKSopXCIrd2hpdGVzcGFjZStcIiskXCIsXCJnXCIpLHJjb21tYT1uZXcgUmVnRXhwKFwiXlwiK3doaXRlc3BhY2UrXCIqLFwiK3doaXRlc3BhY2UrXCIqXCIpLHJjb21iaW5hdG9ycz1uZXcgUmVnRXhwKFwiXlwiK3doaXRlc3BhY2UrXCIqKFs+K35dfFwiK3doaXRlc3BhY2UrXCIpXCIrd2hpdGVzcGFjZStcIipcIikscmF0dHJpYnV0ZVF1b3Rlcz1uZXcgUmVnRXhwKFwiPVwiK3doaXRlc3BhY2UrXCIqKFteXFxcXF0nXFxcIl0qPylcIit3aGl0ZXNwYWNlK1wiKlxcXFxdXCIsXCJnXCIpLHJwc2V1ZG89bmV3IFJlZ0V4cChwc2V1ZG9zKSxyaWRlbnRpZmllcj1uZXcgUmVnRXhwKFwiXlwiK2lkZW50aWZpZXIrXCIkXCIpLG1hdGNoRXhwcj17SUQ6bmV3IFJlZ0V4cChcIl4jKFwiK2NoYXJhY3RlckVuY29kaW5nK1wiKVwiKSxDTEFTUzpuZXcgUmVnRXhwKFwiXlxcXFwuKFwiK2NoYXJhY3RlckVuY29kaW5nK1wiKVwiKSxUQUc6bmV3IFJlZ0V4cChcIl4oXCIrY2hhcmFjdGVyRW5jb2RpbmcucmVwbGFjZShcIndcIixcIncqXCIpK1wiKVwiKSxBVFRSOm5ldyBSZWdFeHAoXCJeXCIrYXR0cmlidXRlcyksUFNFVURPOm5ldyBSZWdFeHAoXCJeXCIrcHNldWRvcyksQ0hJTEQ6bmV3IFJlZ0V4cChcIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcXFwoXCIrd2hpdGVzcGFjZStcIiooZXZlbnxvZGR8KChbKy1dfCkoXFxcXGQqKW58KVwiK3doaXRlc3BhY2UrXCIqKD86KFsrLV18KVwiK3doaXRlc3BhY2UrXCIqKFxcXFxkKyl8KSlcIit3aGl0ZXNwYWNlK1wiKlxcXFwpfClcIixcImlcIiksYm9vbDpuZXcgUmVnRXhwKFwiXig/OlwiK2Jvb2xlYW5zK1wiKSRcIixcImlcIiksbmVlZHNDb250ZXh0Om5ldyBSZWdFeHAoXCJeXCIrd2hpdGVzcGFjZStcIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcXFwoXCIrd2hpdGVzcGFjZStcIiooKD86LVxcXFxkKT9cXFxcZCopXCIrd2hpdGVzcGFjZStcIipcXFxcKXwpKD89W14tXXwkKVwiLFwiaVwiKX0scmlucHV0cz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLHJoZWFkZXI9L15oXFxkJC9pLHJuYXRpdmU9L15bXntdK1xce1xccypcXFtuYXRpdmUgXFx3LyxycXVpY2tFeHByPS9eKD86IyhbXFx3LV0rKXwoXFx3Kyl8XFwuKFtcXHctXSspKSQvLHJzaWJsaW5nPS9bK35dLyxyZXNjYXBlPS8nfFxcXFwvZyxydW5lc2NhcGU9bmV3IFJlZ0V4cChcIlxcXFxcXFxcKFtcXFxcZGEtZl17MSw2fVwiK3doaXRlc3BhY2UrXCI/fChcIit3aGl0ZXNwYWNlK1wiKXwuKVwiLFwiaWdcIiksZnVuZXNjYXBlPWZ1bmN0aW9uKF8sZXNjYXBlZCxlc2NhcGVkV2hpdGVzcGFjZSl7dmFyIGhpZ2g9XCIweFwiK2VzY2FwZWQtNjU1MzY7cmV0dXJuIGhpZ2ghPT1oaWdofHxlc2NhcGVkV2hpdGVzcGFjZT9lc2NhcGVkOjA+aGlnaD9TdHJpbmcuZnJvbUNoYXJDb2RlKGhpZ2grNjU1MzYpOlN0cmluZy5mcm9tQ2hhckNvZGUoaGlnaD4+MTB8NTUyOTYsMTAyMyZoaWdofDU2MzIwKX0sdW5sb2FkSGFuZGxlcj1mdW5jdGlvbigpe3NldERvY3VtZW50KCl9O3RyeXtwdXNoLmFwcGx5KGFycj1zbGljZS5jYWxsKHByZWZlcnJlZERvYy5jaGlsZE5vZGVzKSxwcmVmZXJyZWREb2MuY2hpbGROb2RlcyksYXJyW3ByZWZlcnJlZERvYy5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goZSl7cHVzaD17YXBwbHk6YXJyLmxlbmd0aD9mdW5jdGlvbih0YXJnZXQsZWxzKXtwdXNoX25hdGl2ZS5hcHBseSh0YXJnZXQsc2xpY2UuY2FsbChlbHMpKX06ZnVuY3Rpb24odGFyZ2V0LGVscyl7Zm9yKHZhciBqPXRhcmdldC5sZW5ndGgsaT0wO3RhcmdldFtqKytdPWVsc1tpKytdOyk7dGFyZ2V0Lmxlbmd0aD1qLTF9fX1zdXBwb3J0PVNpenpsZS5zdXBwb3J0PXt9LGlzWE1MPVNpenpsZS5pc1hNTD1mdW5jdGlvbihlbGVtKXt2YXIgZG9jdW1lbnRFbGVtZW50PWVsZW0mJihlbGVtLm93bmVyRG9jdW1lbnR8fGVsZW0pLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gZG9jdW1lbnRFbGVtZW50P1wiSFRNTFwiIT09ZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lOiExfSxzZXREb2N1bWVudD1TaXp6bGUuc2V0RG9jdW1lbnQ9ZnVuY3Rpb24obm9kZSl7dmFyIGhhc0NvbXBhcmUscGFyZW50LGRvYz1ub2RlP25vZGUub3duZXJEb2N1bWVudHx8bm9kZTpwcmVmZXJyZWREb2M7cmV0dXJuIGRvYyE9PWRvY3VtZW50JiY5PT09ZG9jLm5vZGVUeXBlJiZkb2MuZG9jdW1lbnRFbGVtZW50Pyhkb2N1bWVudD1kb2MsZG9jRWxlbT1kb2MuZG9jdW1lbnRFbGVtZW50LHBhcmVudD1kb2MuZGVmYXVsdFZpZXcscGFyZW50JiZwYXJlbnQhPT1wYXJlbnQudG9wJiYocGFyZW50LmFkZEV2ZW50TGlzdGVuZXI/cGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ1bmxvYWRcIix1bmxvYWRIYW5kbGVyLCExKTpwYXJlbnQuYXR0YWNoRXZlbnQmJnBhcmVudC5hdHRhY2hFdmVudChcIm9udW5sb2FkXCIsdW5sb2FkSGFuZGxlcikpLGRvY3VtZW50SXNIVE1MPSFpc1hNTChkb2MpLHN1cHBvcnQuYXR0cmlidXRlcz1hc3NlcnQoZnVuY3Rpb24oZGl2KXtyZXR1cm4gZGl2LmNsYXNzTmFtZT1cImlcIiwhZGl2LmdldEF0dHJpYnV0ZShcImNsYXNzTmFtZVwiKX0pLHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWU9YXNzZXJ0KGZ1bmN0aW9uKGRpdil7cmV0dXJuIGRpdi5hcHBlbmRDaGlsZChkb2MuY3JlYXRlQ29tbWVudChcIlwiKSksIWRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIikubGVuZ3RofSksc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPXJuYXRpdmUudGVzdChkb2MuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSksc3VwcG9ydC5nZXRCeUlkPWFzc2VydChmdW5jdGlvbihkaXYpe3JldHVybiBkb2NFbGVtLmFwcGVuZENoaWxkKGRpdikuaWQ9ZXhwYW5kbywhZG9jLmdldEVsZW1lbnRzQnlOYW1lfHwhZG9jLmdldEVsZW1lbnRzQnlOYW1lKGV4cGFuZG8pLmxlbmd0aH0pLHN1cHBvcnQuZ2V0QnlJZD8oRXhwci5maW5kLklEPWZ1bmN0aW9uKGlkLGNvbnRleHQpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkJiZkb2N1bWVudElzSFRNTCl7dmFyIG09Y29udGV4dC5nZXRFbGVtZW50QnlJZChpZCk7cmV0dXJuIG0mJm0ucGFyZW50Tm9kZT9bbV06W119fSxFeHByLmZpbHRlci5JRD1mdW5jdGlvbihpZCl7dmFyIGF0dHJJZD1pZC5yZXBsYWNlKHJ1bmVzY2FwZSxmdW5lc2NhcGUpO3JldHVybiBmdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoXCJpZFwiKT09PWF0dHJJZH19KTooZGVsZXRlIEV4cHIuZmluZC5JRCxFeHByLmZpbHRlci5JRD1mdW5jdGlvbihpZCl7dmFyIGF0dHJJZD1pZC5yZXBsYWNlKHJ1bmVzY2FwZSxmdW5lc2NhcGUpO3JldHVybiBmdW5jdGlvbihlbGVtKXt2YXIgbm9kZT1cInVuZGVmaW5lZFwiIT10eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGVOb2RlJiZlbGVtLmdldEF0dHJpYnV0ZU5vZGUoXCJpZFwiKTtyZXR1cm4gbm9kZSYmbm9kZS52YWx1ZT09PWF0dHJJZH19KSxFeHByLmZpbmQuVEFHPXN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWU/ZnVuY3Rpb24odGFnLGNvbnRleHQpe3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lP2NvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnKTpzdXBwb3J0LnFzYT9jb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwodGFnKTp2b2lkIDB9OmZ1bmN0aW9uKHRhZyxjb250ZXh0KXt2YXIgZWxlbSx0bXA9W10saT0wLHJlc3VsdHM9Y29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWcpO2lmKFwiKlwiPT09dGFnKXtmb3IoO2VsZW09cmVzdWx0c1tpKytdOykxPT09ZWxlbS5ub2RlVHlwZSYmdG1wLnB1c2goZWxlbSk7cmV0dXJuIHRtcH1yZXR1cm4gcmVzdWx0c30sRXhwci5maW5kLkNMQVNTPXN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oY2xhc3NOYW1lLGNvbnRleHQpe3JldHVybiBkb2N1bWVudElzSFRNTD9jb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhc3NOYW1lKTp2b2lkIDB9LHJidWdneU1hdGNoZXM9W10scmJ1Z2d5UVNBPVtdLChzdXBwb3J0LnFzYT1ybmF0aXZlLnRlc3QoZG9jLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGFzc2VydChmdW5jdGlvbihkaXYpe2RvY0VsZW0uYXBwZW5kQ2hpbGQoZGl2KS5pbm5lckhUTUw9XCI8YSBpZD0nXCIrZXhwYW5kbytcIic+PC9hPjxzZWxlY3QgaWQ9J1wiK2V4cGFuZG8rXCItXFxmXScgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD5cIixkaXYucXVlcnlTZWxlY3RvckFsbChcIlttc2FsbG93Y2FwdHVyZV49JyddXCIpLmxlbmd0aCYmcmJ1Z2d5UVNBLnB1c2goXCJbKl4kXT1cIit3aGl0ZXNwYWNlK1wiKig/OicnfFxcXCJcXFwiKVwiKSxkaXYucXVlcnlTZWxlY3RvckFsbChcIltzZWxlY3RlZF1cIikubGVuZ3RofHxyYnVnZ3lRU0EucHVzaChcIlxcXFxbXCIrd2hpdGVzcGFjZStcIiooPzp2YWx1ZXxcIitib29sZWFucytcIilcIiksZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbaWR+PVwiK2V4cGFuZG8rXCItXVwiKS5sZW5ndGh8fHJidWdneVFTQS5wdXNoKFwifj1cIiksZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCI6Y2hlY2tlZFwiKS5sZW5ndGh8fHJidWdneVFTQS5wdXNoKFwiOmNoZWNrZWRcIiksZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCJhI1wiK2V4cGFuZG8rXCIrKlwiKS5sZW5ndGh8fHJidWdneVFTQS5wdXNoKFwiLiMuK1srfl1cIil9KSxhc3NlcnQoZnVuY3Rpb24oZGl2KXt2YXIgaW5wdXQ9ZG9jLmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtpbnB1dC5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsXCJoaWRkZW5cIiksZGl2LmFwcGVuZENoaWxkKGlucHV0KS5zZXRBdHRyaWJ1dGUoXCJuYW1lXCIsXCJEXCIpLGRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiW25hbWU9ZF1cIikubGVuZ3RoJiZyYnVnZ3lRU0EucHVzaChcIm5hbWVcIit3aGl0ZXNwYWNlK1wiKlsqXiR8IX5dPz1cIiksZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCI6ZW5hYmxlZFwiKS5sZW5ndGh8fHJidWdneVFTQS5wdXNoKFwiOmVuYWJsZWRcIixcIjpkaXNhYmxlZFwiKSxkaXYucXVlcnlTZWxlY3RvckFsbChcIiosOnhcIikscmJ1Z2d5UVNBLnB1c2goXCIsLio6XCIpfSkpLChzdXBwb3J0Lm1hdGNoZXNTZWxlY3Rvcj1ybmF0aXZlLnRlc3QobWF0Y2hlcz1kb2NFbGVtLm1hdGNoZXN8fGRvY0VsZW0ud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxkb2NFbGVtLm1vek1hdGNoZXNTZWxlY3Rvcnx8ZG9jRWxlbS5vTWF0Y2hlc1NlbGVjdG9yfHxkb2NFbGVtLm1zTWF0Y2hlc1NlbGVjdG9yKSkmJmFzc2VydChmdW5jdGlvbihkaXYpe3N1cHBvcnQuZGlzY29ubmVjdGVkTWF0Y2g9bWF0Y2hlcy5jYWxsKGRpdixcImRpdlwiKSxtYXRjaGVzLmNhbGwoZGl2LFwiW3MhPScnXTp4XCIpLHJidWdneU1hdGNoZXMucHVzaChcIiE9XCIscHNldWRvcyl9KSxyYnVnZ3lRU0E9cmJ1Z2d5UVNBLmxlbmd0aCYmbmV3IFJlZ0V4cChyYnVnZ3lRU0Euam9pbihcInxcIikpLHJidWdneU1hdGNoZXM9cmJ1Z2d5TWF0Y2hlcy5sZW5ndGgmJm5ldyBSZWdFeHAocmJ1Z2d5TWF0Y2hlcy5qb2luKFwifFwiKSksaGFzQ29tcGFyZT1ybmF0aXZlLnRlc3QoZG9jRWxlbS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiksY29udGFpbnM9aGFzQ29tcGFyZXx8cm5hdGl2ZS50ZXN0KGRvY0VsZW0uY29udGFpbnMpP2Z1bmN0aW9uKGEsYil7dmFyIGFkb3duPTk9PT1hLm5vZGVUeXBlP2EuZG9jdW1lbnRFbGVtZW50OmEsYnVwPWImJmIucGFyZW50Tm9kZTtyZXR1cm4gYT09PWJ1cHx8ISghYnVwfHwxIT09YnVwLm5vZGVUeXBlfHwhKGFkb3duLmNvbnRhaW5zP2Fkb3duLmNvbnRhaW5zKGJ1cCk6YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmMTYmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihidXApKSl9OmZ1bmN0aW9uKGEsYil7aWYoYilmb3IoO2I9Yi5wYXJlbnROb2RlOylpZihiPT09YSlyZXR1cm4hMDtyZXR1cm4hMX0sc29ydE9yZGVyPWhhc0NvbXBhcmU/ZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gaGFzRHVwbGljYXRlPSEwLDA7dmFyIGNvbXBhcmU9IWEuY29tcGFyZURvY3VtZW50UG9zaXRpb24tIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb247cmV0dXJuIGNvbXBhcmU/Y29tcGFyZTooY29tcGFyZT0oYS5vd25lckRvY3VtZW50fHxhKT09PShiLm93bmVyRG9jdW1lbnR8fGIpP2EuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYik6MSwxJmNvbXBhcmV8fCFzdXBwb3J0LnNvcnREZXRhY2hlZCYmYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKT09PWNvbXBhcmU/YT09PWRvY3x8YS5vd25lckRvY3VtZW50PT09cHJlZmVycmVkRG9jJiZjb250YWlucyhwcmVmZXJyZWREb2MsYSk/LTE6Yj09PWRvY3x8Yi5vd25lckRvY3VtZW50PT09cHJlZmVycmVkRG9jJiZjb250YWlucyhwcmVmZXJyZWREb2MsYik/MTpzb3J0SW5wdXQ/aW5kZXhPZihzb3J0SW5wdXQsYSktaW5kZXhPZihzb3J0SW5wdXQsYik6MDo0JmNvbXBhcmU/LTE6MSl9OmZ1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGhhc0R1cGxpY2F0ZT0hMCwwO3ZhciBjdXIsaT0wLGF1cD1hLnBhcmVudE5vZGUsYnVwPWIucGFyZW50Tm9kZSxhcD1bYV0sYnA9W2JdO2lmKCFhdXB8fCFidXApcmV0dXJuIGE9PT1kb2M/LTE6Yj09PWRvYz8xOmF1cD8tMTpidXA/MTpzb3J0SW5wdXQ/aW5kZXhPZihzb3J0SW5wdXQsYSktaW5kZXhPZihzb3J0SW5wdXQsYik6MDtpZihhdXA9PT1idXApcmV0dXJuIHNpYmxpbmdDaGVjayhhLGIpO2ZvcihjdXI9YTtjdXI9Y3VyLnBhcmVudE5vZGU7KWFwLnVuc2hpZnQoY3VyKTtmb3IoY3VyPWI7Y3VyPWN1ci5wYXJlbnROb2RlOylicC51bnNoaWZ0KGN1cik7Zm9yKDthcFtpXT09PWJwW2ldOylpKys7cmV0dXJuIGk/c2libGluZ0NoZWNrKGFwW2ldLGJwW2ldKTphcFtpXT09PXByZWZlcnJlZERvYz8tMTpicFtpXT09PXByZWZlcnJlZERvYz8xOjB9LGRvYyk6ZG9jdW1lbnR9LFNpenpsZS5tYXRjaGVzPWZ1bmN0aW9uKGV4cHIsZWxlbWVudHMpe3JldHVybiBTaXp6bGUoZXhwcixudWxsLG51bGwsZWxlbWVudHMpfSxTaXp6bGUubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGVsZW0sZXhwcil7aWYoKGVsZW0ub3duZXJEb2N1bWVudHx8ZWxlbSkhPT1kb2N1bWVudCYmc2V0RG9jdW1lbnQoZWxlbSksZXhwcj1leHByLnJlcGxhY2UocmF0dHJpYnV0ZVF1b3RlcyxcIj0nJDEnXVwiKSxzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciYmZG9jdW1lbnRJc0hUTUwmJighcmJ1Z2d5TWF0Y2hlc3x8IXJidWdneU1hdGNoZXMudGVzdChleHByKSkmJighcmJ1Z2d5UVNBfHwhcmJ1Z2d5UVNBLnRlc3QoZXhwcikpKXRyeXt2YXIgcmV0PW1hdGNoZXMuY2FsbChlbGVtLGV4cHIpO2lmKHJldHx8c3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaHx8ZWxlbS5kb2N1bWVudCYmMTEhPT1lbGVtLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiByZXR9Y2F0Y2goZSl7fXJldHVybiBTaXp6bGUoZXhwcixkb2N1bWVudCxudWxsLFtlbGVtXSkubGVuZ3RoPjB9LFNpenpsZS5jb250YWlucz1mdW5jdGlvbihjb250ZXh0LGVsZW0pe3JldHVybihjb250ZXh0Lm93bmVyRG9jdW1lbnR8fGNvbnRleHQpIT09ZG9jdW1lbnQmJnNldERvY3VtZW50KGNvbnRleHQpLGNvbnRhaW5zKGNvbnRleHQsZWxlbSl9LFNpenpsZS5hdHRyPWZ1bmN0aW9uKGVsZW0sbmFtZSl7KGVsZW0ub3duZXJEb2N1bWVudHx8ZWxlbSkhPT1kb2N1bWVudCYmc2V0RG9jdW1lbnQoZWxlbSk7dmFyIGZuPUV4cHIuYXR0ckhhbmRsZVtuYW1lLnRvTG93ZXJDYXNlKCldLHZhbD1mbiYmaGFzT3duLmNhbGwoRXhwci5hdHRySGFuZGxlLG5hbWUudG9Mb3dlckNhc2UoKSk/Zm4oZWxlbSxuYW1lLCFkb2N1bWVudElzSFRNTCk6dm9pZCAwO3JldHVybiB2b2lkIDAhPT12YWw/dmFsOnN1cHBvcnQuYXR0cmlidXRlc3x8IWRvY3VtZW50SXNIVE1MP2VsZW0uZ2V0QXR0cmlidXRlKG5hbWUpOih2YWw9ZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpKSYmdmFsLnNwZWNpZmllZD92YWwudmFsdWU6bnVsbH0sU2l6emxlLmVycm9yPWZ1bmN0aW9uKG1zZyl7dGhyb3cgbmV3IEVycm9yKFwiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogXCIrbXNnKX0sU2l6emxlLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24ocmVzdWx0cyl7dmFyIGVsZW0sZHVwbGljYXRlcz1bXSxqPTAsaT0wO2lmKGhhc0R1cGxpY2F0ZT0hc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzLHNvcnRJbnB1dD0hc3VwcG9ydC5zb3J0U3RhYmxlJiZyZXN1bHRzLnNsaWNlKDApLHJlc3VsdHMuc29ydChzb3J0T3JkZXIpLGhhc0R1cGxpY2F0ZSl7Zm9yKDtlbGVtPXJlc3VsdHNbaSsrXTspZWxlbT09PXJlc3VsdHNbaV0mJihqPWR1cGxpY2F0ZXMucHVzaChpKSk7Zm9yKDtqLS07KXJlc3VsdHMuc3BsaWNlKGR1cGxpY2F0ZXNbal0sMSl9cmV0dXJuIHNvcnRJbnB1dD1udWxsLHJlc3VsdHN9LGdldFRleHQ9U2l6emxlLmdldFRleHQ9ZnVuY3Rpb24oZWxlbSl7dmFyIG5vZGUscmV0PVwiXCIsaT0wLG5vZGVUeXBlPWVsZW0ubm9kZVR5cGU7aWYobm9kZVR5cGUpe2lmKDE9PT1ub2RlVHlwZXx8OT09PW5vZGVUeXBlfHwxMT09PW5vZGVUeXBlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZWxlbS50ZXh0Q29udGVudClyZXR1cm4gZWxlbS50ZXh0Q29udGVudDtmb3IoZWxlbT1lbGVtLmZpcnN0Q2hpbGQ7ZWxlbTtlbGVtPWVsZW0ubmV4dFNpYmxpbmcpcmV0Kz1nZXRUZXh0KGVsZW0pfWVsc2UgaWYoMz09PW5vZGVUeXBlfHw0PT09bm9kZVR5cGUpcmV0dXJuIGVsZW0ubm9kZVZhbHVlfWVsc2UgZm9yKDtub2RlPWVsZW1baSsrXTspcmV0Kz1nZXRUZXh0KG5vZGUpO3JldHVybiByZXR9LEV4cHI9U2l6emxlLnNlbGVjdG9ycz17Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOm1hcmtGdW5jdGlvbixtYXRjaDptYXRjaEV4cHIsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOntcIj5cIjp7ZGlyOlwicGFyZW50Tm9kZVwiLGZpcnN0OiEwfSxcIiBcIjp7ZGlyOlwicGFyZW50Tm9kZVwifSxcIitcIjp7ZGlyOlwicHJldmlvdXNTaWJsaW5nXCIsZmlyc3Q6ITB9LFwiflwiOntkaXI6XCJwcmV2aW91c1NpYmxpbmdcIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihtYXRjaCl7cmV0dXJuIG1hdGNoWzFdPW1hdGNoWzFdLnJlcGxhY2UocnVuZXNjYXBlLGZ1bmVzY2FwZSksbWF0Y2hbM109KG1hdGNoWzNdfHxtYXRjaFs0XXx8bWF0Y2hbNV18fFwiXCIpLnJlcGxhY2UocnVuZXNjYXBlLGZ1bmVzY2FwZSksXCJ+PVwiPT09bWF0Y2hbMl0mJihtYXRjaFszXT1cIiBcIittYXRjaFszXStcIiBcIiksbWF0Y2guc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24obWF0Y2gpe3JldHVybiBtYXRjaFsxXT1tYXRjaFsxXS50b0xvd2VyQ2FzZSgpLFwibnRoXCI9PT1tYXRjaFsxXS5zbGljZSgwLDMpPyhtYXRjaFszXXx8U2l6emxlLmVycm9yKG1hdGNoWzBdKSxtYXRjaFs0XT0rKG1hdGNoWzRdP21hdGNoWzVdKyhtYXRjaFs2XXx8MSk6MiooXCJldmVuXCI9PT1tYXRjaFszXXx8XCJvZGRcIj09PW1hdGNoWzNdKSksbWF0Y2hbNV09KyhtYXRjaFs3XSttYXRjaFs4XXx8XCJvZGRcIj09PW1hdGNoWzNdKSk6bWF0Y2hbM10mJlNpenpsZS5lcnJvcihtYXRjaFswXSksbWF0Y2h9LFBTRVVETzpmdW5jdGlvbihtYXRjaCl7dmFyIGV4Y2Vzcyx1bnF1b3RlZD0hbWF0Y2hbNl0mJm1hdGNoWzJdO3JldHVybiBtYXRjaEV4cHIuQ0hJTEQudGVzdChtYXRjaFswXSk/bnVsbDoobWF0Y2hbM10/bWF0Y2hbMl09bWF0Y2hbNF18fG1hdGNoWzVdfHxcIlwiOnVucXVvdGVkJiZycHNldWRvLnRlc3QodW5xdW90ZWQpJiYoZXhjZXNzPXRva2VuaXplKHVucXVvdGVkLCEwKSkmJihleGNlc3M9dW5xdW90ZWQuaW5kZXhPZihcIilcIix1bnF1b3RlZC5sZW5ndGgtZXhjZXNzKS11bnF1b3RlZC5sZW5ndGgpJiYobWF0Y2hbMF09bWF0Y2hbMF0uc2xpY2UoMCxleGNlc3MpLG1hdGNoWzJdPXVucXVvdGVkLnNsaWNlKDAsZXhjZXNzKSksbWF0Y2guc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihub2RlTmFtZVNlbGVjdG9yKXt2YXIgbm9kZU5hbWU9bm9kZU5hbWVTZWxlY3Rvci5yZXBsYWNlKHJ1bmVzY2FwZSxmdW5lc2NhcGUpLnRvTG93ZXJDYXNlKCk7cmV0dXJuXCIqXCI9PT1ub2RlTmFtZVNlbGVjdG9yP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtLm5vZGVOYW1lJiZlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1ub2RlTmFtZX19LENMQVNTOmZ1bmN0aW9uKGNsYXNzTmFtZSl7dmFyIHBhdHRlcm49Y2xhc3NDYWNoZVtjbGFzc05hbWUrXCIgXCJdO3JldHVybiBwYXR0ZXJufHwocGF0dGVybj1uZXcgUmVnRXhwKFwiKF58XCIrd2hpdGVzcGFjZStcIilcIitjbGFzc05hbWUrXCIoXCIrd2hpdGVzcGFjZStcInwkKVwiKSkmJmNsYXNzQ2FjaGUoY2xhc3NOYW1lLGZ1bmN0aW9uKGVsZW0pe3JldHVybiBwYXR0ZXJuLnRlc3QoXCJzdHJpbmdcIj09dHlwZW9mIGVsZW0uY2xhc3NOYW1lJiZlbGVtLmNsYXNzTmFtZXx8XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlJiZlbGVtLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpfHxcIlwiKX0pfSxBVFRSOmZ1bmN0aW9uKG5hbWUsb3BlcmF0b3IsY2hlY2spe3JldHVybiBmdW5jdGlvbihlbGVtKXt2YXIgcmVzdWx0PVNpenpsZS5hdHRyKGVsZW0sbmFtZSk7cmV0dXJuIG51bGw9PXJlc3VsdD9cIiE9XCI9PT1vcGVyYXRvcjpvcGVyYXRvcj8ocmVzdWx0Kz1cIlwiLFwiPVwiPT09b3BlcmF0b3I/cmVzdWx0PT09Y2hlY2s6XCIhPVwiPT09b3BlcmF0b3I/cmVzdWx0IT09Y2hlY2s6XCJePVwiPT09b3BlcmF0b3I/Y2hlY2smJjA9PT1yZXN1bHQuaW5kZXhPZihjaGVjayk6XCIqPVwiPT09b3BlcmF0b3I/Y2hlY2smJnJlc3VsdC5pbmRleE9mKGNoZWNrKT4tMTpcIiQ9XCI9PT1vcGVyYXRvcj9jaGVjayYmcmVzdWx0LnNsaWNlKC1jaGVjay5sZW5ndGgpPT09Y2hlY2s6XCJ+PVwiPT09b3BlcmF0b3I/KFwiIFwiK3Jlc3VsdC5yZXBsYWNlKHJ3aGl0ZXNwYWNlLFwiIFwiKStcIiBcIikuaW5kZXhPZihjaGVjayk+LTE6XCJ8PVwiPT09b3BlcmF0b3I/cmVzdWx0PT09Y2hlY2t8fHJlc3VsdC5zbGljZSgwLGNoZWNrLmxlbmd0aCsxKT09PWNoZWNrK1wiLVwiOiExKTohMH19LENISUxEOmZ1bmN0aW9uKHR5cGUsd2hhdCxhcmd1bWVudCxmaXJzdCxsYXN0KXt2YXIgc2ltcGxlPVwibnRoXCIhPT10eXBlLnNsaWNlKDAsMyksZm9yd2FyZD1cImxhc3RcIiE9PXR5cGUuc2xpY2UoLTQpLG9mVHlwZT1cIm9mLXR5cGVcIj09PXdoYXQ7cmV0dXJuIDE9PT1maXJzdCYmMD09PWxhc3Q/ZnVuY3Rpb24oZWxlbSl7cmV0dXJuISFlbGVtLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGVsZW0sY29udGV4dCx4bWwpe3ZhciBjYWNoZSxvdXRlckNhY2hlLG5vZGUsZGlmZixub2RlSW5kZXgsc3RhcnQsZGlyPXNpbXBsZSE9PWZvcndhcmQ/XCJuZXh0U2libGluZ1wiOlwicHJldmlvdXNTaWJsaW5nXCIscGFyZW50PWVsZW0ucGFyZW50Tm9kZSxuYW1lPW9mVHlwZSYmZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHVzZUNhY2hlPSF4bWwmJiFvZlR5cGU7aWYocGFyZW50KXtpZihzaW1wbGUpe2Zvcig7ZGlyOyl7Zm9yKG5vZGU9ZWxlbTtub2RlPW5vZGVbZGlyXTspaWYob2ZUeXBlP25vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PW5hbWU6MT09PW5vZGUubm9kZVR5cGUpcmV0dXJuITE7c3RhcnQ9ZGlyPVwib25seVwiPT09dHlwZSYmIXN0YXJ0JiZcIm5leHRTaWJsaW5nXCJ9cmV0dXJuITB9aWYoc3RhcnQ9W2ZvcndhcmQ/cGFyZW50LmZpcnN0Q2hpbGQ6cGFyZW50Lmxhc3RDaGlsZF0sZm9yd2FyZCYmdXNlQ2FjaGUpe2ZvcihvdXRlckNhY2hlPXBhcmVudFtleHBhbmRvXXx8KHBhcmVudFtleHBhbmRvXT17fSksY2FjaGU9b3V0ZXJDYWNoZVt0eXBlXXx8W10sbm9kZUluZGV4PWNhY2hlWzBdPT09ZGlycnVucyYmY2FjaGVbMV0sZGlmZj1jYWNoZVswXT09PWRpcnJ1bnMmJmNhY2hlWzJdLG5vZGU9bm9kZUluZGV4JiZwYXJlbnQuY2hpbGROb2Rlc1tub2RlSW5kZXhdO25vZGU9Kytub2RlSW5kZXgmJm5vZGUmJm5vZGVbZGlyXXx8KGRpZmY9bm9kZUluZGV4PTApfHxzdGFydC5wb3AoKTspaWYoMT09PW5vZGUubm9kZVR5cGUmJisrZGlmZiYmbm9kZT09PWVsZW0pe291dGVyQ2FjaGVbdHlwZV09W2RpcnJ1bnMsbm9kZUluZGV4LGRpZmZdO2JyZWFrfX1lbHNlIGlmKHVzZUNhY2hlJiYoY2FjaGU9KGVsZW1bZXhwYW5kb118fChlbGVtW2V4cGFuZG9dPXt9KSlbdHlwZV0pJiZjYWNoZVswXT09PWRpcnJ1bnMpZGlmZj1jYWNoZVsxXTtlbHNlIGZvcig7KG5vZGU9Kytub2RlSW5kZXgmJm5vZGUmJm5vZGVbZGlyXXx8KGRpZmY9bm9kZUluZGV4PTApfHxzdGFydC5wb3AoKSkmJigob2ZUeXBlP25vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PW5hbWU6MSE9PW5vZGUubm9kZVR5cGUpfHwhKytkaWZmfHwodXNlQ2FjaGUmJigobm9kZVtleHBhbmRvXXx8KG5vZGVbZXhwYW5kb109e30pKVt0eXBlXT1bZGlycnVucyxkaWZmXSksbm9kZSE9PWVsZW0pKTspO3JldHVybiBkaWZmLT1sYXN0LGRpZmY9PT1maXJzdHx8ZGlmZiVmaXJzdD09PTAmJmRpZmYvZmlyc3Q+PTB9fX0sUFNFVURPOmZ1bmN0aW9uKHBzZXVkbyxhcmd1bWVudCl7dmFyIGFyZ3MsZm49RXhwci5wc2V1ZG9zW3BzZXVkb118fEV4cHIuc2V0RmlsdGVyc1twc2V1ZG8udG9Mb3dlckNhc2UoKV18fFNpenpsZS5lcnJvcihcInVuc3VwcG9ydGVkIHBzZXVkbzogXCIrcHNldWRvKTtyZXR1cm4gZm5bZXhwYW5kb10/Zm4oYXJndW1lbnQpOmZuLmxlbmd0aD4xPyhhcmdzPVtwc2V1ZG8scHNldWRvLFwiXCIsYXJndW1lbnRdLEV4cHIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShwc2V1ZG8udG9Mb3dlckNhc2UoKSk/bWFya0Z1bmN0aW9uKGZ1bmN0aW9uKHNlZWQsbWF0Y2hlcyl7Zm9yKHZhciBpZHgsbWF0Y2hlZD1mbihzZWVkLGFyZ3VtZW50KSxpPW1hdGNoZWQubGVuZ3RoO2ktLTspaWR4PWluZGV4T2Yoc2VlZCxtYXRjaGVkW2ldKSxzZWVkW2lkeF09IShtYXRjaGVzW2lkeF09bWF0Y2hlZFtpXSl9KTpmdW5jdGlvbihlbGVtKXtyZXR1cm4gZm4oZWxlbSwwLGFyZ3MpfSk6Zm59fSxwc2V1ZG9zOntub3Q6bWFya0Z1bmN0aW9uKGZ1bmN0aW9uKHNlbGVjdG9yKXt2YXIgaW5wdXQ9W10scmVzdWx0cz1bXSxtYXRjaGVyPWNvbXBpbGUoc2VsZWN0b3IucmVwbGFjZShydHJpbSxcIiQxXCIpKTtyZXR1cm4gbWF0Y2hlcltleHBhbmRvXT9tYXJrRnVuY3Rpb24oZnVuY3Rpb24oc2VlZCxtYXRjaGVzLGNvbnRleHQseG1sKXtmb3IodmFyIGVsZW0sdW5tYXRjaGVkPW1hdGNoZXIoc2VlZCxudWxsLHhtbCxbXSksaT1zZWVkLmxlbmd0aDtpLS07KShlbGVtPXVubWF0Y2hlZFtpXSkmJihzZWVkW2ldPSEobWF0Y2hlc1tpXT1lbGVtKSl9KTpmdW5jdGlvbihlbGVtLGNvbnRleHQseG1sKXtyZXR1cm4gaW5wdXRbMF09ZWxlbSxtYXRjaGVyKGlucHV0LG51bGwseG1sLHJlc3VsdHMpLGlucHV0WzBdPW51bGwsIXJlc3VsdHMucG9wKCl9fSksaGFzOm1hcmtGdW5jdGlvbihmdW5jdGlvbihzZWxlY3Rvcil7cmV0dXJuIGZ1bmN0aW9uKGVsZW0pe3JldHVybiBTaXp6bGUoc2VsZWN0b3IsZWxlbSkubGVuZ3RoPjB9fSksY29udGFpbnM6bWFya0Z1bmN0aW9uKGZ1bmN0aW9uKHRleHQpe3JldHVybiB0ZXh0PXRleHQucmVwbGFjZShydW5lc2NhcGUsZnVuZXNjYXBlKSxmdW5jdGlvbihlbGVtKXtyZXR1cm4oZWxlbS50ZXh0Q29udGVudHx8ZWxlbS5pbm5lclRleHR8fGdldFRleHQoZWxlbSkpLmluZGV4T2YodGV4dCk+LTF9fSksbGFuZzptYXJrRnVuY3Rpb24oZnVuY3Rpb24obGFuZyl7cmV0dXJuIHJpZGVudGlmaWVyLnRlc3QobGFuZ3x8XCJcIil8fFNpenpsZS5lcnJvcihcInVuc3VwcG9ydGVkIGxhbmc6IFwiK2xhbmcpLGxhbmc9bGFuZy5yZXBsYWNlKHJ1bmVzY2FwZSxmdW5lc2NhcGUpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oZWxlbSl7dmFyIGVsZW1MYW5nO2RvIGlmKGVsZW1MYW5nPWRvY3VtZW50SXNIVE1MP2VsZW0ubGFuZzplbGVtLmdldEF0dHJpYnV0ZShcInhtbDpsYW5nXCIpfHxlbGVtLmdldEF0dHJpYnV0ZShcImxhbmdcIikpcmV0dXJuIGVsZW1MYW5nPWVsZW1MYW5nLnRvTG93ZXJDYXNlKCksZWxlbUxhbmc9PT1sYW5nfHwwPT09ZWxlbUxhbmcuaW5kZXhPZihsYW5nK1wiLVwiKTt3aGlsZSgoZWxlbT1lbGVtLnBhcmVudE5vZGUpJiYxPT09ZWxlbS5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGVsZW0pe3ZhciBoYXNoPXdpbmRvdy5sb2NhdGlvbiYmd2luZG93LmxvY2F0aW9uLmhhc2g7cmV0dXJuIGhhc2gmJmhhc2guc2xpY2UoMSk9PT1lbGVtLmlkfSxyb290OmZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtPT09ZG9jRWxlbX0sZm9jdXM6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW09PT1kb2N1bWVudC5hY3RpdmVFbGVtZW50JiYoIWRvY3VtZW50Lmhhc0ZvY3VzfHxkb2N1bWVudC5oYXNGb2N1cygpKSYmISEoZWxlbS50eXBlfHxlbGVtLmhyZWZ8fH5lbGVtLnRhYkluZGV4KX0sZW5hYmxlZDpmdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbS5kaXNhYmxlZD09PSExfSxkaXNhYmxlZDpmdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbS5kaXNhYmxlZD09PSEwfSxjaGVja2VkOmZ1bmN0aW9uKGVsZW0pe3ZhciBub2RlTmFtZT1lbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuXCJpbnB1dFwiPT09bm9kZU5hbWUmJiEhZWxlbS5jaGVja2VkfHxcIm9wdGlvblwiPT09bm9kZU5hbWUmJiEhZWxlbS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW0ucGFyZW50Tm9kZSYmZWxlbS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsZWxlbS5zZWxlY3RlZD09PSEwfSxlbXB0eTpmdW5jdGlvbihlbGVtKXtmb3IoZWxlbT1lbGVtLmZpcnN0Q2hpbGQ7ZWxlbTtlbGVtPWVsZW0ubmV4dFNpYmxpbmcpaWYoZWxlbS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIUV4cHIucHNldWRvcy5lbXB0eShlbGVtKX0saGVhZGVyOmZ1bmN0aW9uKGVsZW0pe3JldHVybiByaGVhZGVyLnRlc3QoZWxlbS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGVsZW0pe3JldHVybiByaW5wdXRzLnRlc3QoZWxlbS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihlbGVtKXt2YXIgbmFtZT1lbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuXCJpbnB1dFwiPT09bmFtZSYmXCJidXR0b25cIj09PWVsZW0udHlwZXx8XCJidXR0b25cIj09PW5hbWV9LHRleHQ6ZnVuY3Rpb24oZWxlbSl7dmFyIGF0dHI7cmV0dXJuXCJpbnB1dFwiPT09ZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiZcInRleHRcIj09PWVsZW0udHlwZSYmKG51bGw9PShhdHRyPWVsZW0uZ2V0QXR0cmlidXRlKFwidHlwZVwiKSl8fFwidGV4dFwiPT09YXR0ci50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6Y3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbigpe3JldHVyblswXX0pLGxhc3Q6Y3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbihtYXRjaEluZGV4ZXMsbGVuZ3RoKXtyZXR1cm5bbGVuZ3RoLTFdfSksZXE6Y3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbihtYXRjaEluZGV4ZXMsbGVuZ3RoLGFyZ3VtZW50KXtyZXR1cm5bMD5hcmd1bWVudD9hcmd1bWVudCtsZW5ndGg6YXJndW1lbnRdfSksZXZlbjpjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKG1hdGNoSW5kZXhlcyxsZW5ndGgpe2Zvcih2YXIgaT0wO2xlbmd0aD5pO2krPTIpbWF0Y2hJbmRleGVzLnB1c2goaSk7cmV0dXJuIG1hdGNoSW5kZXhlc30pLG9kZDpjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKG1hdGNoSW5kZXhlcyxsZW5ndGgpe2Zvcih2YXIgaT0xO2xlbmd0aD5pO2krPTIpbWF0Y2hJbmRleGVzLnB1c2goaSk7cmV0dXJuIG1hdGNoSW5kZXhlc30pLGx0OmNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24obWF0Y2hJbmRleGVzLGxlbmd0aCxhcmd1bWVudCl7Zm9yKHZhciBpPTA+YXJndW1lbnQ/YXJndW1lbnQrbGVuZ3RoOmFyZ3VtZW50Oy0taT49MDspbWF0Y2hJbmRleGVzLnB1c2goaSk7cmV0dXJuIG1hdGNoSW5kZXhlc30pLGd0OmNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24obWF0Y2hJbmRleGVzLGxlbmd0aCxhcmd1bWVudCl7Zm9yKHZhciBpPTA+YXJndW1lbnQ/YXJndW1lbnQrbGVuZ3RoOmFyZ3VtZW50OysraTxsZW5ndGg7KW1hdGNoSW5kZXhlcy5wdXNoKGkpO3JldHVybiBtYXRjaEluZGV4ZXN9KX19LEV4cHIucHNldWRvcy5udGg9RXhwci5wc2V1ZG9zLmVxO2ZvcihpIGlue3JhZGlvOiEwLGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KUV4cHIucHNldWRvc1tpXT1jcmVhdGVJbnB1dFBzZXVkbyhpKTtmb3IoaSBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9KUV4cHIucHNldWRvc1tpXT1jcmVhdGVCdXR0b25Qc2V1ZG8oaSk7cmV0dXJuIHNldEZpbHRlcnMucHJvdG90eXBlPUV4cHIuZmlsdGVycz1FeHByLnBzZXVkb3MsRXhwci5zZXRGaWx0ZXJzPW5ldyBzZXRGaWx0ZXJzLHRva2VuaXplPVNpenpsZS50b2tlbml6ZT1mdW5jdGlvbihzZWxlY3RvcixwYXJzZU9ubHkpe3ZhciBtYXRjaGVkLG1hdGNoLHRva2Vucyx0eXBlLHNvRmFyLGdyb3VwcyxwcmVGaWx0ZXJzLGNhY2hlZD10b2tlbkNhY2hlW3NlbGVjdG9yK1wiIFwiXTtpZihjYWNoZWQpcmV0dXJuIHBhcnNlT25seT8wOmNhY2hlZC5zbGljZSgwKTtmb3Ioc29GYXI9c2VsZWN0b3IsZ3JvdXBzPVtdLHByZUZpbHRlcnM9RXhwci5wcmVGaWx0ZXI7c29GYXI7KXsoIW1hdGNoZWR8fChtYXRjaD1yY29tbWEuZXhlYyhzb0ZhcikpKSYmKG1hdGNoJiYoc29GYXI9c29GYXIuc2xpY2UobWF0Y2hbMF0ubGVuZ3RoKXx8c29GYXIpLGdyb3Vwcy5wdXNoKHRva2Vucz1bXSkpLG1hdGNoZWQ9ITEsKG1hdGNoPXJjb21iaW5hdG9ycy5leGVjKHNvRmFyKSkmJihtYXRjaGVkPW1hdGNoLnNoaWZ0KCksdG9rZW5zLnB1c2goe3ZhbHVlOm1hdGNoZWQsdHlwZTptYXRjaFswXS5yZXBsYWNlKHJ0cmltLFwiIFwiKX0pLHNvRmFyPXNvRmFyLnNsaWNlKG1hdGNoZWQubGVuZ3RoKSk7Zm9yKHR5cGUgaW4gRXhwci5maWx0ZXIpIShtYXRjaD1tYXRjaEV4cHJbdHlwZV0uZXhlYyhzb0ZhcikpfHxwcmVGaWx0ZXJzW3R5cGVdJiYhKG1hdGNoPXByZUZpbHRlcnNbdHlwZV0obWF0Y2gpKXx8KG1hdGNoZWQ9bWF0Y2guc2hpZnQoKSx0b2tlbnMucHVzaCh7dmFsdWU6bWF0Y2hlZCx0eXBlOnR5cGUsbWF0Y2hlczptYXRjaH0pLHNvRmFyPXNvRmFyLnNsaWNlKG1hdGNoZWQubGVuZ3RoKSk7aWYoIW1hdGNoZWQpYnJlYWt9cmV0dXJuIHBhcnNlT25seT9zb0Zhci5sZW5ndGg6c29GYXI/U2l6emxlLmVycm9yKHNlbGVjdG9yKTp0b2tlbkNhY2hlKHNlbGVjdG9yLGdyb3Vwcykuc2xpY2UoMCl9LGNvbXBpbGU9U2l6emxlLmNvbXBpbGU9ZnVuY3Rpb24oc2VsZWN0b3IsbWF0Y2gpe3ZhciBpLHNldE1hdGNoZXJzPVtdLGVsZW1lbnRNYXRjaGVycz1bXSxjYWNoZWQ9Y29tcGlsZXJDYWNoZVtzZWxlY3RvcitcIiBcIl07aWYoIWNhY2hlZCl7Zm9yKG1hdGNofHwobWF0Y2g9dG9rZW5pemUoc2VsZWN0b3IpKSxpPW1hdGNoLmxlbmd0aDtpLS07KWNhY2hlZD1tYXRjaGVyRnJvbVRva2VucyhtYXRjaFtpXSksY2FjaGVkW2V4cGFuZG9dP3NldE1hdGNoZXJzLnB1c2goY2FjaGVkKTplbGVtZW50TWF0Y2hlcnMucHVzaChjYWNoZWQpO2NhY2hlZD1jb21waWxlckNhY2hlKHNlbGVjdG9yLG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyhlbGVtZW50TWF0Y2hlcnMsc2V0TWF0Y2hlcnMpKSxjYWNoZWQuc2VsZWN0b3I9c2VsZWN0b3J9cmV0dXJuIGNhY2hlZH0sc2VsZWN0PVNpenpsZS5zZWxlY3Q9ZnVuY3Rpb24oc2VsZWN0b3IsY29udGV4dCxyZXN1bHRzLHNlZWQpe3ZhciBpLHRva2Vucyx0b2tlbix0eXBlLGZpbmQsY29tcGlsZWQ9XCJmdW5jdGlvblwiPT10eXBlb2Ygc2VsZWN0b3ImJnNlbGVjdG9yLG1hdGNoPSFzZWVkJiZ0b2tlbml6ZShzZWxlY3Rvcj1jb21waWxlZC5zZWxlY3Rvcnx8c2VsZWN0b3IpO2lmKHJlc3VsdHM9cmVzdWx0c3x8W10sMT09PW1hdGNoLmxlbmd0aCl7aWYodG9rZW5zPW1hdGNoWzBdPW1hdGNoWzBdLnNsaWNlKDApLHRva2Vucy5sZW5ndGg+MiYmXCJJRFwiPT09KHRva2VuPXRva2Vuc1swXSkudHlwZSYmc3VwcG9ydC5nZXRCeUlkJiY5PT09Y29udGV4dC5ub2RlVHlwZSYmZG9jdW1lbnRJc0hUTUwmJkV4cHIucmVsYXRpdmVbdG9rZW5zWzFdLnR5cGVdKXtpZihjb250ZXh0PShFeHByLmZpbmQuSUQodG9rZW4ubWF0Y2hlc1swXS5yZXBsYWNlKHJ1bmVzY2FwZSxmdW5lc2NhcGUpLGNvbnRleHQpfHxbXSlbMF0sIWNvbnRleHQpcmV0dXJuIHJlc3VsdHM7Y29tcGlsZWQmJihjb250ZXh0PWNvbnRleHQucGFyZW50Tm9kZSksc2VsZWN0b3I9c2VsZWN0b3Iuc2xpY2UodG9rZW5zLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1mb3IoaT1tYXRjaEV4cHIubmVlZHNDb250ZXh0LnRlc3Qoc2VsZWN0b3IpPzA6dG9rZW5zLmxlbmd0aDtpLS0mJih0b2tlbj10b2tlbnNbaV0sIUV4cHIucmVsYXRpdmVbdHlwZT10b2tlbi50eXBlXSk7KWlmKChmaW5kPUV4cHIuZmluZFt0eXBlXSkmJihzZWVkPWZpbmQodG9rZW4ubWF0Y2hlc1swXS5yZXBsYWNlKHJ1bmVzY2FwZSxmdW5lc2NhcGUpLHJzaWJsaW5nLnRlc3QodG9rZW5zWzBdLnR5cGUpJiZ0ZXN0Q29udGV4dChjb250ZXh0LnBhcmVudE5vZGUpfHxjb250ZXh0KSkpe2lmKHRva2Vucy5zcGxpY2UoaSwxKSxzZWxlY3Rvcj1zZWVkLmxlbmd0aCYmdG9TZWxlY3Rvcih0b2tlbnMpLCFzZWxlY3RvcilyZXR1cm4gcHVzaC5hcHBseShyZXN1bHRzLHNlZWQpLHJlc3VsdHM7YnJlYWt9fXJldHVybihjb21waWxlZHx8Y29tcGlsZShzZWxlY3RvcixtYXRjaCkpKHNlZWQsY29udGV4dCwhZG9jdW1lbnRJc0hUTUwscmVzdWx0cyxyc2libGluZy50ZXN0KHNlbGVjdG9yKSYmdGVzdENvbnRleHQoY29udGV4dC5wYXJlbnROb2RlKXx8Y29udGV4dCkscmVzdWx0c30sc3VwcG9ydC5zb3J0U3RhYmxlPWV4cGFuZG8uc3BsaXQoXCJcIikuc29ydChzb3J0T3JkZXIpLmpvaW4oXCJcIik9PT1leHBhbmRvLHN1cHBvcnQuZGV0ZWN0RHVwbGljYXRlcz0hIWhhc0R1cGxpY2F0ZSxzZXREb2N1bWVudCgpLHN1cHBvcnQuc29ydERldGFjaGVkPWFzc2VydChmdW5jdGlvbihkaXYxKXtyZXR1cm4gMSZkaXYxLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpfSksYXNzZXJ0KGZ1bmN0aW9uKGRpdil7cmV0dXJuIGRpdi5pbm5lckhUTUw9XCI8YSBocmVmPScjJz48L2E+XCIsXCIjXCI9PT1kaXYuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpfSl8fGFkZEhhbmRsZShcInR5cGV8aHJlZnxoZWlnaHR8d2lkdGhcIixmdW5jdGlvbihlbGVtLG5hbWUsaXNYTUwpe3JldHVybiBpc1hNTD92b2lkIDA6ZWxlbS5nZXRBdHRyaWJ1dGUobmFtZSxcInR5cGVcIj09PW5hbWUudG9Mb3dlckNhc2UoKT8xOjIpfSksc3VwcG9ydC5hdHRyaWJ1dGVzJiZhc3NlcnQoZnVuY3Rpb24oZGl2KXtyZXR1cm4gZGl2LmlubmVySFRNTD1cIjxpbnB1dC8+XCIsZGl2LmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKFwidmFsdWVcIixcIlwiKSxcIlwiPT09ZGl2LmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKFwidmFsdWVcIil9KXx8YWRkSGFuZGxlKFwidmFsdWVcIixmdW5jdGlvbihlbGVtLG5hbWUsaXNYTUwpe3JldHVybiBpc1hNTHx8XCJpbnB1dFwiIT09ZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP3ZvaWQgMDplbGVtLmRlZmF1bHRWYWx1ZX0pLGFzc2VydChmdW5jdGlvbihkaXYpe3JldHVybiBudWxsPT1kaXYuZ2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIil9KXx8YWRkSGFuZGxlKGJvb2xlYW5zLGZ1bmN0aW9uKGVsZW0sbmFtZSxpc1hNTCl7dmFyIHZhbDtyZXR1cm4gaXNYTUw/dm9pZCAwOmVsZW1bbmFtZV09PT0hMD9uYW1lLnRvTG93ZXJDYXNlKCk6KHZhbD1lbGVtLmdldEF0dHJpYnV0ZU5vZGUobmFtZSkpJiZ2YWwuc3BlY2lmaWVkP3ZhbC52YWx1ZTpudWxsfSksU2l6emxlfSh3aW5kb3cpO2pRdWVyeS5maW5kPVNpenpsZSxqUXVlcnkuZXhwcj1TaXp6bGUuc2VsZWN0b3JzLGpRdWVyeS5leHByW1wiOlwiXT1qUXVlcnkuZXhwci5wc2V1ZG9zLGpRdWVyeS51bmlxdWU9U2l6emxlLnVuaXF1ZVNvcnQsalF1ZXJ5LnRleHQ9U2l6emxlLmdldFRleHQsalF1ZXJ5LmlzWE1MRG9jPVNpenpsZS5pc1hNTCxqUXVlcnkuY29udGFpbnM9U2l6emxlLmNvbnRhaW5zO3ZhciBybmVlZHNDb250ZXh0PWpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dCxyc2luZ2xlVGFnPS9ePChcXHcrKVxccypcXC8/Pig/OjxcXC9cXDE+fCkkLyxyaXNTaW1wbGU9L14uW146I1xcW1xcLixdKiQvO2pRdWVyeS5maWx0ZXI9ZnVuY3Rpb24oZXhwcixlbGVtcyxub3Qpe3ZhciBlbGVtPWVsZW1zWzBdO3JldHVybiBub3QmJihleHByPVwiOm5vdChcIitleHByK1wiKVwiKSwxPT09ZWxlbXMubGVuZ3RoJiYxPT09ZWxlbS5ub2RlVHlwZT9qUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoZWxlbSxleHByKT9bZWxlbV06W106alF1ZXJ5LmZpbmQubWF0Y2hlcyhleHByLGpRdWVyeS5ncmVwKGVsZW1zLGZ1bmN0aW9uKGVsZW0pe3JldHVybiAxPT09ZWxlbS5ub2RlVHlwZX0pKX0salF1ZXJ5LmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihzZWxlY3Rvcil7dmFyIGkscmV0PVtdLHNlbGY9dGhpcyxsZW49c2VsZi5sZW5ndGg7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHNlbGVjdG9yKXJldHVybiB0aGlzLnB1c2hTdGFjayhqUXVlcnkoc2VsZWN0b3IpLmZpbHRlcihmdW5jdGlvbigpe2ZvcihpPTA7bGVuPmk7aSsrKWlmKGpRdWVyeS5jb250YWlucyhzZWxmW2ldLHRoaXMpKXJldHVybiEwfSkpO2ZvcihpPTA7bGVuPmk7aSsrKWpRdWVyeS5maW5kKHNlbGVjdG9yLHNlbGZbaV0scmV0KTtyZXR1cm4gcmV0PXRoaXMucHVzaFN0YWNrKGxlbj4xP2pRdWVyeS51bmlxdWUocmV0KTpyZXQpLHJldC5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yP3RoaXMuc2VsZWN0b3IrXCIgXCIrc2VsZWN0b3I6c2VsZWN0b3IscmV0fSxmaWx0ZXI6ZnVuY3Rpb24oc2VsZWN0b3Ipe3JldHVybiB0aGlzLnB1c2hTdGFjayh3aW5ub3codGhpcyxzZWxlY3Rvcnx8W10sITEpKX0sbm90OmZ1bmN0aW9uKHNlbGVjdG9yKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sod2lubm93KHRoaXMsc2VsZWN0b3J8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKHNlbGVjdG9yKXtyZXR1cm4hIXdpbm5vdyh0aGlzLFwic3RyaW5nXCI9PXR5cGVvZiBzZWxlY3RvciYmcm5lZWRzQ29udGV4dC50ZXN0KHNlbGVjdG9yKT9qUXVlcnkoc2VsZWN0b3IpOnNlbGVjdG9yfHxbXSwhMSkubGVuZ3RofX0pO3ZhciByb290alF1ZXJ5LGRvY3VtZW50PXdpbmRvdy5kb2N1bWVudCxycXVpY2tFeHByPS9eKD86XFxzKig8W1xcd1xcV10rPilbXj5dKnwjKFtcXHctXSopKSQvLGluaXQ9alF1ZXJ5LmZuLmluaXQ9ZnVuY3Rpb24oc2VsZWN0b3IsY29udGV4dCl7dmFyIG1hdGNoLGVsZW07aWYoIXNlbGVjdG9yKXJldHVybiB0aGlzO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBzZWxlY3Rvcil7aWYobWF0Y2g9XCI8XCI9PT1zZWxlY3Rvci5jaGFyQXQoMCkmJlwiPlwiPT09c2VsZWN0b3IuY2hhckF0KHNlbGVjdG9yLmxlbmd0aC0xKSYmc2VsZWN0b3IubGVuZ3RoPj0zP1tudWxsLHNlbGVjdG9yLG51bGxdOnJxdWlja0V4cHIuZXhlYyhzZWxlY3RvciksIW1hdGNofHwhbWF0Y2hbMV0mJmNvbnRleHQpcmV0dXJuIWNvbnRleHR8fGNvbnRleHQuanF1ZXJ5Pyhjb250ZXh0fHxyb290alF1ZXJ5KS5maW5kKHNlbGVjdG9yKTp0aGlzLmNvbnN0cnVjdG9yKGNvbnRleHQpLmZpbmQoc2VsZWN0b3IpO2lmKG1hdGNoWzFdKXtpZihjb250ZXh0PWNvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnk/Y29udGV4dFswXTpjb250ZXh0LGpRdWVyeS5tZXJnZSh0aGlzLGpRdWVyeS5wYXJzZUhUTUwobWF0Y2hbMV0sY29udGV4dCYmY29udGV4dC5ub2RlVHlwZT9jb250ZXh0Lm93bmVyRG9jdW1lbnR8fGNvbnRleHQ6ZG9jdW1lbnQsITApKSxyc2luZ2xlVGFnLnRlc3QobWF0Y2hbMV0pJiZqUXVlcnkuaXNQbGFpbk9iamVjdChjb250ZXh0KSlmb3IobWF0Y2ggaW4gY29udGV4dClqUXVlcnkuaXNGdW5jdGlvbih0aGlzW21hdGNoXSk/dGhpc1ttYXRjaF0oY29udGV4dFttYXRjaF0pOnRoaXMuYXR0cihtYXRjaCxjb250ZXh0W21hdGNoXSk7cmV0dXJuIHRoaXN9aWYoZWxlbT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChtYXRjaFsyXSksZWxlbSYmZWxlbS5wYXJlbnROb2RlKXtpZihlbGVtLmlkIT09bWF0Y2hbMl0pcmV0dXJuIHJvb3RqUXVlcnkuZmluZChzZWxlY3Rvcik7dGhpcy5sZW5ndGg9MSx0aGlzWzBdPWVsZW19cmV0dXJuIHRoaXMuY29udGV4dD1kb2N1bWVudCx0aGlzLnNlbGVjdG9yPXNlbGVjdG9yLHRoaXN9cmV0dXJuIHNlbGVjdG9yLm5vZGVUeXBlPyh0aGlzLmNvbnRleHQ9dGhpc1swXT1zZWxlY3Rvcix0aGlzLmxlbmd0aD0xLHRoaXMpOmpRdWVyeS5pc0Z1bmN0aW9uKHNlbGVjdG9yKT9cInVuZGVmaW5lZFwiIT10eXBlb2Ygcm9vdGpRdWVyeS5yZWFkeT9yb290alF1ZXJ5LnJlYWR5KHNlbGVjdG9yKTpzZWxlY3RvcihqUXVlcnkpOih2b2lkIDAhPT1zZWxlY3Rvci5zZWxlY3RvciYmKHRoaXMuc2VsZWN0b3I9c2VsZWN0b3Iuc2VsZWN0b3IsdGhpcy5jb250ZXh0PXNlbGVjdG9yLmNvbnRleHQpLGpRdWVyeS5tYWtlQXJyYXkoc2VsZWN0b3IsdGhpcykpfTtpbml0LnByb3RvdHlwZT1qUXVlcnkuZm4scm9vdGpRdWVyeT1qUXVlcnkoZG9jdW1lbnQpO3ZhciBycGFyZW50c3ByZXY9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sZ3VhcmFudGVlZFVuaXF1ZT17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtqUXVlcnkuZXh0ZW5kKHtkaXI6ZnVuY3Rpb24oZWxlbSxkaXIsdW50aWwpe2Zvcih2YXIgbWF0Y2hlZD1bXSxjdXI9ZWxlbVtkaXJdO2N1ciYmOSE9PWN1ci5ub2RlVHlwZSYmKHZvaWQgMD09PXVudGlsfHwxIT09Y3VyLm5vZGVUeXBlfHwhalF1ZXJ5KGN1cikuaXModW50aWwpKTspMT09PWN1ci5ub2RlVHlwZSYmbWF0Y2hlZC5wdXNoKGN1ciksY3VyPWN1cltkaXJdO3JldHVybiBtYXRjaGVkfSxzaWJsaW5nOmZ1bmN0aW9uKG4sZWxlbSl7Zm9yKHZhciByPVtdO247bj1uLm5leHRTaWJsaW5nKTE9PT1uLm5vZGVUeXBlJiZuIT09ZWxlbSYmci5wdXNoKG4pO3JldHVybiByfX0pLGpRdWVyeS5mbi5leHRlbmQoe2hhczpmdW5jdGlvbih0YXJnZXQpe3ZhciBpLHRhcmdldHM9alF1ZXJ5KHRhcmdldCx0aGlzKSxsZW49dGFyZ2V0cy5sZW5ndGg7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGk9MDtsZW4+aTtpKyspaWYoalF1ZXJ5LmNvbnRhaW5zKHRoaXMsdGFyZ2V0c1tpXSkpcmV0dXJuITB9KX0sY2xvc2VzdDpmdW5jdGlvbihzZWxlY3RvcnMsY29udGV4dCl7Zm9yKHZhciBjdXIsaT0wLGw9dGhpcy5sZW5ndGgsbWF0Y2hlZD1bXSxwb3M9cm5lZWRzQ29udGV4dC50ZXN0KHNlbGVjdG9ycyl8fFwic3RyaW5nXCIhPXR5cGVvZiBzZWxlY3RvcnM/alF1ZXJ5KHNlbGVjdG9ycyxjb250ZXh0fHx0aGlzLmNvbnRleHQpOjA7bD5pO2krKylmb3IoY3VyPXRoaXNbaV07Y3VyJiZjdXIhPT1jb250ZXh0O2N1cj1jdXIucGFyZW50Tm9kZSlpZihjdXIubm9kZVR5cGU8MTEmJihwb3M/cG9zLmluZGV4KGN1cik+LTE6MT09PWN1ci5ub2RlVHlwZSYmalF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKGN1cixzZWxlY3RvcnMpKSl7bWF0Y2hlZC5wdXNoKGN1cik7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKG1hdGNoZWQubGVuZ3RoPjE/alF1ZXJ5LnVuaXF1ZShtYXRjaGVkKTptYXRjaGVkKX0saW5kZXg6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW0/XCJzdHJpbmdcIj09dHlwZW9mIGVsZW0/alF1ZXJ5LmluQXJyYXkodGhpc1swXSxqUXVlcnkoZWxlbSkpOmpRdWVyeS5pbkFycmF5KGVsZW0uanF1ZXJ5P2VsZW1bMF06ZWxlbSx0aGlzKTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5jdGlvbihzZWxlY3Rvcixjb250ZXh0KXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soalF1ZXJ5LnVuaXF1ZShqUXVlcnkubWVyZ2UodGhpcy5nZXQoKSxqUXVlcnkoc2VsZWN0b3IsY29udGV4dCkpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oc2VsZWN0b3Ipe3JldHVybiB0aGlzLmFkZChudWxsPT1zZWxlY3Rvcj90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihzZWxlY3RvcikpfX0pLGpRdWVyeS5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oZWxlbSl7dmFyIHBhcmVudD1lbGVtLnBhcmVudE5vZGU7cmV0dXJuIHBhcmVudCYmMTEhPT1wYXJlbnQubm9kZVR5cGU/cGFyZW50Om51bGx9LHBhcmVudHM6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGpRdWVyeS5kaXIoZWxlbSxcInBhcmVudE5vZGVcIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihlbGVtLGksdW50aWwpe3JldHVybiBqUXVlcnkuZGlyKGVsZW0sXCJwYXJlbnROb2RlXCIsdW50aWwpfSxuZXh0OmZ1bmN0aW9uKGVsZW0pe3JldHVybiBzaWJsaW5nKGVsZW0sXCJuZXh0U2libGluZ1wiKX0scHJldjpmdW5jdGlvbihlbGVtKXtyZXR1cm4gc2libGluZyhlbGVtLFwicHJldmlvdXNTaWJsaW5nXCIpfSxuZXh0QWxsOmZ1bmN0aW9uKGVsZW0pe3JldHVybiBqUXVlcnkuZGlyKGVsZW0sXCJuZXh0U2libGluZ1wiKX0scHJldkFsbDpmdW5jdGlvbihlbGVtKXtyZXR1cm4galF1ZXJ5LmRpcihlbGVtLFwicHJldmlvdXNTaWJsaW5nXCIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oZWxlbSxpLHVudGlsKXtyZXR1cm4galF1ZXJ5LmRpcihlbGVtLFwibmV4dFNpYmxpbmdcIix1bnRpbCl9LHByZXZVbnRpbDpmdW5jdGlvbihlbGVtLGksdW50aWwpe3JldHVybiBqUXVlcnkuZGlyKGVsZW0sXCJwcmV2aW91c1NpYmxpbmdcIix1bnRpbCl9LHNpYmxpbmdzOmZ1bmN0aW9uKGVsZW0pe3JldHVybiBqUXVlcnkuc2libGluZygoZWxlbS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxlbGVtKX0sY2hpbGRyZW46ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGpRdWVyeS5zaWJsaW5nKGVsZW0uZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGVsZW0pe3JldHVybiBqUXVlcnkubm9kZU5hbWUoZWxlbSxcImlmcmFtZVwiKT9lbGVtLmNvbnRlbnREb2N1bWVudHx8ZWxlbS5jb250ZW50V2luZG93LmRvY3VtZW50OmpRdWVyeS5tZXJnZShbXSxlbGVtLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24obmFtZSxmbil7alF1ZXJ5LmZuW25hbWVdPWZ1bmN0aW9uKHVudGlsLHNlbGVjdG9yKXt2YXIgcmV0PWpRdWVyeS5tYXAodGhpcyxmbix1bnRpbCk7cmV0dXJuXCJVbnRpbFwiIT09bmFtZS5zbGljZSgtNSkmJihzZWxlY3Rvcj11bnRpbCksc2VsZWN0b3ImJlwic3RyaW5nXCI9PXR5cGVvZiBzZWxlY3RvciYmKHJldD1qUXVlcnkuZmlsdGVyKHNlbGVjdG9yLHJldCkpLHRoaXMubGVuZ3RoPjEmJihndWFyYW50ZWVkVW5pcXVlW25hbWVdfHwocmV0PWpRdWVyeS51bmlxdWUocmV0KSkscnBhcmVudHNwcmV2LnRlc3QobmFtZSkmJihyZXQ9cmV0LnJldmVyc2UoKSkpLHRoaXMucHVzaFN0YWNrKHJldCl9fSk7dmFyIHJub3R3aGl0ZT0vXFxTKy9nLG9wdGlvbnNDYWNoZT17fTtqUXVlcnkuQ2FsbGJhY2tzPWZ1bmN0aW9uKG9wdGlvbnMpe29wdGlvbnM9XCJzdHJpbmdcIj09dHlwZW9mIG9wdGlvbnM/b3B0aW9uc0NhY2hlW29wdGlvbnNdfHxjcmVhdGVPcHRpb25zKG9wdGlvbnMpOmpRdWVyeS5leHRlbmQoe30sb3B0aW9ucyk7dmFyIGZpcmluZyxtZW1vcnksZmlyZWQsZmlyaW5nTGVuZ3RoLGZpcmluZ0luZGV4LGZpcmluZ1N0YXJ0LGxpc3Q9W10sc3RhY2s9IW9wdGlvbnMub25jZSYmW10sZmlyZT1mdW5jdGlvbihkYXRhKXtmb3IobWVtb3J5PW9wdGlvbnMubWVtb3J5JiZkYXRhLGZpcmVkPSEwLGZpcmluZ0luZGV4PWZpcmluZ1N0YXJ0fHwwLGZpcmluZ1N0YXJ0PTAsZmlyaW5nTGVuZ3RoPWxpc3QubGVuZ3RoLGZpcmluZz0hMDtsaXN0JiZmaXJpbmdMZW5ndGg+ZmlyaW5nSW5kZXg7ZmlyaW5nSW5kZXgrKylpZihsaXN0W2ZpcmluZ0luZGV4XS5hcHBseShkYXRhWzBdLGRhdGFbMV0pPT09ITEmJm9wdGlvbnMuc3RvcE9uRmFsc2Upe21lbW9yeT0hMTticmVha31maXJpbmc9ITEsbGlzdCYmKHN0YWNrP3N0YWNrLmxlbmd0aCYmZmlyZShzdGFjay5zaGlmdCgpKTptZW1vcnk/bGlzdD1bXTpzZWxmLmRpc2FibGUoKSl9LHNlbGY9e2FkZDpmdW5jdGlvbigpe2lmKGxpc3Qpe3ZhciBzdGFydD1saXN0Lmxlbmd0aDshZnVuY3Rpb24gYWRkKGFyZ3Mpe2pRdWVyeS5lYWNoKGFyZ3MsZnVuY3Rpb24oXyxhcmcpe3ZhciB0eXBlPWpRdWVyeS50eXBlKGFyZyk7XCJmdW5jdGlvblwiPT09dHlwZT9vcHRpb25zLnVuaXF1ZSYmc2VsZi5oYXMoYXJnKXx8bGlzdC5wdXNoKGFyZyk6YXJnJiZhcmcubGVuZ3RoJiZcInN0cmluZ1wiIT09dHlwZSYmYWRkKGFyZyl9KX0oYXJndW1lbnRzKSxmaXJpbmc/ZmlyaW5nTGVuZ3RoPWxpc3QubGVuZ3RoOm1lbW9yeSYmKGZpcmluZ1N0YXJ0PXN0YXJ0LGZpcmUobWVtb3J5KSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiBsaXN0JiZqUXVlcnkuZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oXyxhcmcpe2Zvcih2YXIgaW5kZXg7KGluZGV4PWpRdWVyeS5pbkFycmF5KGFyZyxsaXN0LGluZGV4KSk+LTE7KWxpc3Quc3BsaWNlKGluZGV4LDEpLGZpcmluZyYmKGZpcmluZ0xlbmd0aD49aW5kZXgmJmZpcmluZ0xlbmd0aC0tLGZpcmluZ0luZGV4Pj1pbmRleCYmZmlyaW5nSW5kZXgtLSl9KSx0aGlzfSxoYXM6ZnVuY3Rpb24oZm4pe3JldHVybiBmbj9qUXVlcnkuaW5BcnJheShmbixsaXN0KT4tMTohKCFsaXN0fHwhbGlzdC5sZW5ndGgpfSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBsaXN0PVtdLGZpcmluZ0xlbmd0aD0wLHRoaXN9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gbGlzdD1zdGFjaz1tZW1vcnk9dm9pZCAwLHRoaXN9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIWxpc3R9LGxvY2s6ZnVuY3Rpb24oKXtyZXR1cm4gc3RhY2s9dm9pZCAwLG1lbW9yeXx8c2VsZi5kaXNhYmxlKCksdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuIXN0YWNrfSxmaXJlV2l0aDpmdW5jdGlvbihjb250ZXh0LGFyZ3Mpe3JldHVybiFsaXN0fHxmaXJlZCYmIXN0YWNrfHwoYXJncz1hcmdzfHxbXSxhcmdzPVtjb250ZXh0LGFyZ3Muc2xpY2U/YXJncy5zbGljZSgpOmFyZ3NdLGZpcmluZz9zdGFjay5wdXNoKGFyZ3MpOmZpcmUoYXJncykpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gc2VsZi5maXJlV2l0aCh0aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWZpcmVkfX07cmV0dXJuIHNlbGZ9LGpRdWVyeS5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGZ1bmMpe3ZhciB0dXBsZXM9W1tcInJlc29sdmVcIixcImRvbmVcIixqUXVlcnkuQ2FsbGJhY2tzKFwib25jZSBtZW1vcnlcIiksXCJyZXNvbHZlZFwiXSxbXCJyZWplY3RcIixcImZhaWxcIixqUXVlcnkuQ2FsbGJhY2tzKFwib25jZSBtZW1vcnlcIiksXCJyZWplY3RlZFwiXSxbXCJub3RpZnlcIixcInByb2dyZXNzXCIsalF1ZXJ5LkNhbGxiYWNrcyhcIm1lbW9yeVwiKV1dLHN0YXRlPVwicGVuZGluZ1wiLHByb21pc2U9e3N0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHN0YXRlfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gZGVmZXJyZWQuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGZucz1hcmd1bWVudHM7cmV0dXJuIGpRdWVyeS5EZWZlcnJlZChmdW5jdGlvbihuZXdEZWZlcil7alF1ZXJ5LmVhY2godHVwbGVzLGZ1bmN0aW9uKGksdHVwbGUpe3ZhciBmbj1qUXVlcnkuaXNGdW5jdGlvbihmbnNbaV0pJiZmbnNbaV07ZGVmZXJyZWRbdHVwbGVbMV1dKGZ1bmN0aW9uKCl7dmFyIHJldHVybmVkPWZuJiZmbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuZWQmJmpRdWVyeS5pc0Z1bmN0aW9uKHJldHVybmVkLnByb21pc2UpP3JldHVybmVkLnByb21pc2UoKS5kb25lKG5ld0RlZmVyLnJlc29sdmUpLmZhaWwobmV3RGVmZXIucmVqZWN0KS5wcm9ncmVzcyhuZXdEZWZlci5ub3RpZnkpOm5ld0RlZmVyW3R1cGxlWzBdK1wiV2l0aFwiXSh0aGlzPT09cHJvbWlzZT9uZXdEZWZlci5wcm9taXNlKCk6dGhpcyxmbj9bcmV0dXJuZWRdOmFyZ3VtZW50cyl9KX0pLGZucz1udWxsfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKG9iail7cmV0dXJuIG51bGwhPW9iaj9qUXVlcnkuZXh0ZW5kKG9iaixwcm9taXNlKTpwcm9taXNlfX0sZGVmZXJyZWQ9e307cmV0dXJuIHByb21pc2UucGlwZT1wcm9taXNlLnRoZW4salF1ZXJ5LmVhY2godHVwbGVzLGZ1bmN0aW9uKGksdHVwbGUpe3ZhciBsaXN0PXR1cGxlWzJdLHN0YXRlU3RyaW5nPXR1cGxlWzNdO3Byb21pc2VbdHVwbGVbMV1dPWxpc3QuYWRkLHN0YXRlU3RyaW5nJiZsaXN0LmFkZChmdW5jdGlvbigpe3N0YXRlPXN0YXRlU3RyaW5nfSx0dXBsZXNbMV5pXVsyXS5kaXNhYmxlLHR1cGxlc1syXVsyXS5sb2NrKSxkZWZlcnJlZFt0dXBsZVswXV09ZnVuY3Rpb24oKXtyZXR1cm4gZGVmZXJyZWRbdHVwbGVbMF0rXCJXaXRoXCJdKHRoaXM9PT1kZWZlcnJlZD9wcm9taXNlOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxkZWZlcnJlZFt0dXBsZVswXStcIldpdGhcIl09bGlzdC5maXJlV2l0aH0pLHByb21pc2UucHJvbWlzZShkZWZlcnJlZCksZnVuYyYmZnVuYy5jYWxsKGRlZmVycmVkLGRlZmVycmVkKSxkZWZlcnJlZH0sd2hlbjpmdW5jdGlvbihzdWJvcmRpbmF0ZSl7dmFyIHByb2dyZXNzVmFsdWVzLHByb2dyZXNzQ29udGV4dHMscmVzb2x2ZUNvbnRleHRzLGk9MCxyZXNvbHZlVmFsdWVzPXNsaWNlLmNhbGwoYXJndW1lbnRzKSxsZW5ndGg9cmVzb2x2ZVZhbHVlcy5sZW5ndGgscmVtYWluaW5nPTEhPT1sZW5ndGh8fHN1Ym9yZGluYXRlJiZqUXVlcnkuaXNGdW5jdGlvbihzdWJvcmRpbmF0ZS5wcm9taXNlKT9sZW5ndGg6MCxkZWZlcnJlZD0xPT09cmVtYWluaW5nP3N1Ym9yZGluYXRlOmpRdWVyeS5EZWZlcnJlZCgpLHVwZGF0ZUZ1bmM9ZnVuY3Rpb24oaSxjb250ZXh0cyx2YWx1ZXMpe3JldHVybiBmdW5jdGlvbih2YWx1ZSl7Y29udGV4dHNbaV09dGhpcyx2YWx1ZXNbaV09YXJndW1lbnRzLmxlbmd0aD4xP3NsaWNlLmNhbGwoYXJndW1lbnRzKTp2YWx1ZSx2YWx1ZXM9PT1wcm9ncmVzc1ZhbHVlcz9kZWZlcnJlZC5ub3RpZnlXaXRoKGNvbnRleHRzLHZhbHVlcyk6LS1yZW1haW5pbmd8fGRlZmVycmVkLnJlc29sdmVXaXRoKGNvbnRleHRzLHZhbHVlcyl9fTtpZihsZW5ndGg+MSlmb3IocHJvZ3Jlc3NWYWx1ZXM9bmV3IEFycmF5KGxlbmd0aCkscHJvZ3Jlc3NDb250ZXh0cz1uZXcgQXJyYXkobGVuZ3RoKSxyZXNvbHZlQ29udGV4dHM9bmV3IEFycmF5KGxlbmd0aCk7bGVuZ3RoPmk7aSsrKXJlc29sdmVWYWx1ZXNbaV0mJmpRdWVyeS5pc0Z1bmN0aW9uKHJlc29sdmVWYWx1ZXNbaV0ucHJvbWlzZSk/cmVzb2x2ZVZhbHVlc1tpXS5wcm9taXNlKCkuZG9uZSh1cGRhdGVGdW5jKGkscmVzb2x2ZUNvbnRleHRzLHJlc29sdmVWYWx1ZXMpKS5mYWlsKGRlZmVycmVkLnJlamVjdCkucHJvZ3Jlc3ModXBkYXRlRnVuYyhpLHByb2dyZXNzQ29udGV4dHMscHJvZ3Jlc3NWYWx1ZXMpKTotLXJlbWFpbmluZztyZXR1cm4gcmVtYWluaW5nfHxkZWZlcnJlZC5yZXNvbHZlV2l0aChyZXNvbHZlQ29udGV4dHMscmVzb2x2ZVZhbHVlcyksZGVmZXJyZWQucHJvbWlzZSgpfX0pO3ZhciByZWFkeUxpc3Q7alF1ZXJ5LmZuLnJlYWR5PWZ1bmN0aW9uKGZuKXtyZXR1cm4galF1ZXJ5LnJlYWR5LnByb21pc2UoKS5kb25lKGZuKSx0aGlzfSxqUXVlcnkuZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDoxLGhvbGRSZWFkeTpmdW5jdGlvbihob2xkKXtob2xkP2pRdWVyeS5yZWFkeVdhaXQrKzpqUXVlcnkucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbih3YWl0KXtpZih3YWl0PT09ITA/IS0talF1ZXJ5LnJlYWR5V2FpdDohalF1ZXJ5LmlzUmVhZHkpe2lmKCFkb2N1bWVudC5ib2R5KXJldHVybiBzZXRUaW1lb3V0KGpRdWVyeS5yZWFkeSk7alF1ZXJ5LmlzUmVhZHk9ITAsd2FpdCE9PSEwJiYtLWpRdWVyeS5yZWFkeVdhaXQ+MHx8KHJlYWR5TGlzdC5yZXNvbHZlV2l0aChkb2N1bWVudCxbalF1ZXJ5XSksalF1ZXJ5LmZuLnRyaWdnZXJIYW5kbGVyJiYoalF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VySGFuZGxlcihcInJlYWR5XCIpLGpRdWVyeShkb2N1bWVudCkub2ZmKFwicmVhZHlcIikpKX19fSksalF1ZXJ5LnJlYWR5LnByb21pc2U9ZnVuY3Rpb24ob2JqKXtpZighcmVhZHlMaXN0KWlmKHJlYWR5TGlzdD1qUXVlcnkuRGVmZXJyZWQoKSxcImNvbXBsZXRlXCI9PT1kb2N1bWVudC5yZWFkeVN0YXRlKXNldFRpbWVvdXQoalF1ZXJ5LnJlYWR5KTtlbHNlIGlmKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIixjb21wbGV0ZWQsITEpLFxud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsY29tcGxldGVkLCExKTtlbHNle2RvY3VtZW50LmF0dGFjaEV2ZW50KFwib25yZWFkeXN0YXRlY2hhbmdlXCIsY29tcGxldGVkKSx3aW5kb3cuYXR0YWNoRXZlbnQoXCJvbmxvYWRcIixjb21wbGV0ZWQpO3ZhciB0b3A9ITE7dHJ5e3RvcD1udWxsPT13aW5kb3cuZnJhbWVFbGVtZW50JiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9Y2F0Y2goZSl7fXRvcCYmdG9wLmRvU2Nyb2xsJiYhZnVuY3Rpb24gZG9TY3JvbGxDaGVjaygpe2lmKCFqUXVlcnkuaXNSZWFkeSl7dHJ5e3RvcC5kb1Njcm9sbChcImxlZnRcIil9Y2F0Y2goZSl7cmV0dXJuIHNldFRpbWVvdXQoZG9TY3JvbGxDaGVjayw1MCl9ZGV0YWNoKCksalF1ZXJ5LnJlYWR5KCl9fSgpfXJldHVybiByZWFkeUxpc3QucHJvbWlzZShvYmopfTt2YXIgaSxzdHJ1bmRlZmluZWQ9XCJ1bmRlZmluZWRcIjtmb3IoaSBpbiBqUXVlcnkoc3VwcG9ydCkpYnJlYWs7c3VwcG9ydC5vd25MYXN0PVwiMFwiIT09aSxzdXBwb3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXQ9ITEsalF1ZXJ5KGZ1bmN0aW9uKCl7dmFyIHZhbCxkaXYsYm9keSxjb250YWluZXI7Ym9keT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIilbMF0sYm9keSYmYm9keS5zdHlsZSYmKGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGNvbnRhaW5lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0PVwicG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHhcIixib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcikuYXBwZW5kQ2hpbGQoZGl2KSx0eXBlb2YgZGl2LnN0eWxlLnpvb20hPT1zdHJ1bmRlZmluZWQmJihkaXYuc3R5bGUuY3NzVGV4dD1cImRpc3BsYXk6aW5saW5lO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjFcIixzdXBwb3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXQ9dmFsPTM9PT1kaXYub2Zmc2V0V2lkdGgsdmFsJiYoYm9keS5zdHlsZS56b29tPTEpKSxib2R5LnJlbW92ZUNoaWxkKGNvbnRhaW5lcikpfSksZnVuY3Rpb24oKXt2YXIgZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7aWYobnVsbD09c3VwcG9ydC5kZWxldGVFeHBhbmRvKXtzdXBwb3J0LmRlbGV0ZUV4cGFuZG89ITA7dHJ5e2RlbGV0ZSBkaXYudGVzdH1jYXRjaChlKXtzdXBwb3J0LmRlbGV0ZUV4cGFuZG89ITF9fWRpdj1udWxsfSgpLGpRdWVyeS5hY2NlcHREYXRhPWZ1bmN0aW9uKGVsZW0pe3ZhciBub0RhdGE9alF1ZXJ5Lm5vRGF0YVsoZWxlbS5ub2RlTmFtZStcIiBcIikudG9Mb3dlckNhc2UoKV0sbm9kZVR5cGU9K2VsZW0ubm9kZVR5cGV8fDE7cmV0dXJuIDEhPT1ub2RlVHlwZSYmOSE9PW5vZGVUeXBlPyExOiFub0RhdGF8fG5vRGF0YSE9PSEwJiZlbGVtLmdldEF0dHJpYnV0ZShcImNsYXNzaWRcIik9PT1ub0RhdGF9O3ZhciByYnJhY2U9L14oPzpcXHtbXFx3XFxXXSpcXH18XFxbW1xcd1xcV10qXFxdKSQvLHJtdWx0aURhc2g9LyhbQS1aXSkvZztqUXVlcnkuZXh0ZW5kKHtjYWNoZTp7fSxub0RhdGE6e1wiYXBwbGV0IFwiOiEwLFwiZW1iZWQgXCI6ITAsXCJvYmplY3QgXCI6XCJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDBcIn0saGFzRGF0YTpmdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbT1lbGVtLm5vZGVUeXBlP2pRdWVyeS5jYWNoZVtlbGVtW2pRdWVyeS5leHBhbmRvXV06ZWxlbVtqUXVlcnkuZXhwYW5kb10sISFlbGVtJiYhaXNFbXB0eURhdGFPYmplY3QoZWxlbSl9LGRhdGE6ZnVuY3Rpb24oZWxlbSxuYW1lLGRhdGEpe3JldHVybiBpbnRlcm5hbERhdGEoZWxlbSxuYW1lLGRhdGEpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGVsZW0sbmFtZSl7cmV0dXJuIGludGVybmFsUmVtb3ZlRGF0YShlbGVtLG5hbWUpfSxfZGF0YTpmdW5jdGlvbihlbGVtLG5hbWUsZGF0YSl7cmV0dXJuIGludGVybmFsRGF0YShlbGVtLG5hbWUsZGF0YSwhMCl9LF9yZW1vdmVEYXRhOmZ1bmN0aW9uKGVsZW0sbmFtZSl7cmV0dXJuIGludGVybmFsUmVtb3ZlRGF0YShlbGVtLG5hbWUsITApfX0pLGpRdWVyeS5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oa2V5LHZhbHVlKXt2YXIgaSxuYW1lLGRhdGEsZWxlbT10aGlzWzBdLGF0dHJzPWVsZW0mJmVsZW0uYXR0cmlidXRlcztpZih2b2lkIDA9PT1rZXkpe2lmKHRoaXMubGVuZ3RoJiYoZGF0YT1qUXVlcnkuZGF0YShlbGVtKSwxPT09ZWxlbS5ub2RlVHlwZSYmIWpRdWVyeS5fZGF0YShlbGVtLFwicGFyc2VkQXR0cnNcIikpKXtmb3IoaT1hdHRycy5sZW5ndGg7aS0tOylhdHRyc1tpXSYmKG5hbWU9YXR0cnNbaV0ubmFtZSwwPT09bmFtZS5pbmRleE9mKFwiZGF0YS1cIikmJihuYW1lPWpRdWVyeS5jYW1lbENhc2UobmFtZS5zbGljZSg1KSksZGF0YUF0dHIoZWxlbSxuYW1lLGRhdGFbbmFtZV0pKSk7alF1ZXJ5Ll9kYXRhKGVsZW0sXCJwYXJzZWRBdHRyc1wiLCEwKX1yZXR1cm4gZGF0YX1yZXR1cm5cIm9iamVjdFwiPT10eXBlb2Yga2V5P3RoaXMuZWFjaChmdW5jdGlvbigpe2pRdWVyeS5kYXRhKHRoaXMsa2V5KX0pOmFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goZnVuY3Rpb24oKXtqUXVlcnkuZGF0YSh0aGlzLGtleSx2YWx1ZSl9KTplbGVtP2RhdGFBdHRyKGVsZW0sa2V5LGpRdWVyeS5kYXRhKGVsZW0sa2V5KSk6dm9pZCAwfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGtleSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2pRdWVyeS5yZW1vdmVEYXRhKHRoaXMsa2V5KX0pfX0pLGpRdWVyeS5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGVsZW0sdHlwZSxkYXRhKXt2YXIgcXVldWU7cmV0dXJuIGVsZW0/KHR5cGU9KHR5cGV8fFwiZnhcIikrXCJxdWV1ZVwiLHF1ZXVlPWpRdWVyeS5fZGF0YShlbGVtLHR5cGUpLGRhdGEmJighcXVldWV8fGpRdWVyeS5pc0FycmF5KGRhdGEpP3F1ZXVlPWpRdWVyeS5fZGF0YShlbGVtLHR5cGUsalF1ZXJ5Lm1ha2VBcnJheShkYXRhKSk6cXVldWUucHVzaChkYXRhKSkscXVldWV8fFtdKTp2b2lkIDB9LGRlcXVldWU6ZnVuY3Rpb24oZWxlbSx0eXBlKXt0eXBlPXR5cGV8fFwiZnhcIjt2YXIgcXVldWU9alF1ZXJ5LnF1ZXVlKGVsZW0sdHlwZSksc3RhcnRMZW5ndGg9cXVldWUubGVuZ3RoLGZuPXF1ZXVlLnNoaWZ0KCksaG9va3M9alF1ZXJ5Ll9xdWV1ZUhvb2tzKGVsZW0sdHlwZSksbmV4dD1mdW5jdGlvbigpe2pRdWVyeS5kZXF1ZXVlKGVsZW0sdHlwZSl9O1wiaW5wcm9ncmVzc1wiPT09Zm4mJihmbj1xdWV1ZS5zaGlmdCgpLHN0YXJ0TGVuZ3RoLS0pLGZuJiYoXCJmeFwiPT09dHlwZSYmcXVldWUudW5zaGlmdChcImlucHJvZ3Jlc3NcIiksZGVsZXRlIGhvb2tzLnN0b3AsZm4uY2FsbChlbGVtLG5leHQsaG9va3MpKSwhc3RhcnRMZW5ndGgmJmhvb2tzJiZob29rcy5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGVsZW0sdHlwZSl7dmFyIGtleT10eXBlK1wicXVldWVIb29rc1wiO3JldHVybiBqUXVlcnkuX2RhdGEoZWxlbSxrZXkpfHxqUXVlcnkuX2RhdGEoZWxlbSxrZXkse2VtcHR5OmpRdWVyeS5DYWxsYmFja3MoXCJvbmNlIG1lbW9yeVwiKS5hZGQoZnVuY3Rpb24oKXtqUXVlcnkuX3JlbW92ZURhdGEoZWxlbSx0eXBlK1wicXVldWVcIiksalF1ZXJ5Ll9yZW1vdmVEYXRhKGVsZW0sa2V5KX0pfSl9fSksalF1ZXJ5LmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24odHlwZSxkYXRhKXt2YXIgc2V0dGVyPTI7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIHR5cGUmJihkYXRhPXR5cGUsdHlwZT1cImZ4XCIsc2V0dGVyLS0pLGFyZ3VtZW50cy5sZW5ndGg8c2V0dGVyP2pRdWVyeS5xdWV1ZSh0aGlzWzBdLHR5cGUpOnZvaWQgMD09PWRhdGE/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgcXVldWU9alF1ZXJ5LnF1ZXVlKHRoaXMsdHlwZSxkYXRhKTtqUXVlcnkuX3F1ZXVlSG9va3ModGhpcyx0eXBlKSxcImZ4XCI9PT10eXBlJiZcImlucHJvZ3Jlc3NcIiE9PXF1ZXVlWzBdJiZqUXVlcnkuZGVxdWV1ZSh0aGlzLHR5cGUpfSl9LGRlcXVldWU6ZnVuY3Rpb24odHlwZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2pRdWVyeS5kZXF1ZXVlKHRoaXMsdHlwZSl9KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbih0eXBlKXtyZXR1cm4gdGhpcy5xdWV1ZSh0eXBlfHxcImZ4XCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKHR5cGUsb2JqKXt2YXIgdG1wLGNvdW50PTEsZGVmZXI9alF1ZXJ5LkRlZmVycmVkKCksZWxlbWVudHM9dGhpcyxpPXRoaXMubGVuZ3RoLHJlc29sdmU9ZnVuY3Rpb24oKXstLWNvdW50fHxkZWZlci5yZXNvbHZlV2l0aChlbGVtZW50cyxbZWxlbWVudHNdKX07Zm9yKFwic3RyaW5nXCIhPXR5cGVvZiB0eXBlJiYob2JqPXR5cGUsdHlwZT12b2lkIDApLHR5cGU9dHlwZXx8XCJmeFwiO2ktLTspdG1wPWpRdWVyeS5fZGF0YShlbGVtZW50c1tpXSx0eXBlK1wicXVldWVIb29rc1wiKSx0bXAmJnRtcC5lbXB0eSYmKGNvdW50KyssdG1wLmVtcHR5LmFkZChyZXNvbHZlKSk7cmV0dXJuIHJlc29sdmUoKSxkZWZlci5wcm9taXNlKG9iail9fSk7dmFyIHBudW09L1srLV0/KD86XFxkKlxcLnwpXFxkKyg/OltlRV1bKy1dP1xcZCt8KS8uc291cmNlLGNzc0V4cGFuZD1bXCJUb3BcIixcIlJpZ2h0XCIsXCJCb3R0b21cIixcIkxlZnRcIl0saXNIaWRkZW49ZnVuY3Rpb24oZWxlbSxlbCl7cmV0dXJuIGVsZW09ZWx8fGVsZW0sXCJub25lXCI9PT1qUXVlcnkuY3NzKGVsZW0sXCJkaXNwbGF5XCIpfHwhalF1ZXJ5LmNvbnRhaW5zKGVsZW0ub3duZXJEb2N1bWVudCxlbGVtKX0sYWNjZXNzPWpRdWVyeS5hY2Nlc3M9ZnVuY3Rpb24oZWxlbXMsZm4sa2V5LHZhbHVlLGNoYWluYWJsZSxlbXB0eUdldCxyYXcpe3ZhciBpPTAsbGVuZ3RoPWVsZW1zLmxlbmd0aCxidWxrPW51bGw9PWtleTtpZihcIm9iamVjdFwiPT09alF1ZXJ5LnR5cGUoa2V5KSl7Y2hhaW5hYmxlPSEwO2ZvcihpIGluIGtleSlqUXVlcnkuYWNjZXNzKGVsZW1zLGZuLGksa2V5W2ldLCEwLGVtcHR5R2V0LHJhdyl9ZWxzZSBpZih2b2lkIDAhPT12YWx1ZSYmKGNoYWluYWJsZT0hMCxqUXVlcnkuaXNGdW5jdGlvbih2YWx1ZSl8fChyYXc9ITApLGJ1bGsmJihyYXc/KGZuLmNhbGwoZWxlbXMsdmFsdWUpLGZuPW51bGwpOihidWxrPWZuLGZuPWZ1bmN0aW9uKGVsZW0sa2V5LHZhbHVlKXtyZXR1cm4gYnVsay5jYWxsKGpRdWVyeShlbGVtKSx2YWx1ZSl9KSksZm4pKWZvcig7bGVuZ3RoPmk7aSsrKWZuKGVsZW1zW2ldLGtleSxyYXc/dmFsdWU6dmFsdWUuY2FsbChlbGVtc1tpXSxpLGZuKGVsZW1zW2ldLGtleSkpKTtyZXR1cm4gY2hhaW5hYmxlP2VsZW1zOmJ1bGs/Zm4uY2FsbChlbGVtcyk6bGVuZ3RoP2ZuKGVsZW1zWzBdLGtleSk6ZW1wdHlHZXR9LHJjaGVja2FibGVUeXBlPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pOyFmdW5jdGlvbigpe3ZhciBpbnB1dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiksZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksZnJhZ21lbnQ9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2lmKGRpdi5pbm5lckhUTUw9XCIgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYSc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz5cIixzdXBwb3J0LmxlYWRpbmdXaGl0ZXNwYWNlPTM9PT1kaXYuZmlyc3RDaGlsZC5ub2RlVHlwZSxzdXBwb3J0LnRib2R5PSFkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJ0Ym9keVwiKS5sZW5ndGgsc3VwcG9ydC5odG1sU2VyaWFsaXplPSEhZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwibGlua1wiKS5sZW5ndGgsc3VwcG9ydC5odG1sNUNsb25lPVwiPDpuYXY+PC86bmF2PlwiIT09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIm5hdlwiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCxpbnB1dC50eXBlPVwiY2hlY2tib3hcIixpbnB1dC5jaGVja2VkPSEwLGZyYWdtZW50LmFwcGVuZENoaWxkKGlucHV0KSxzdXBwb3J0LmFwcGVuZENoZWNrZWQ9aW5wdXQuY2hlY2tlZCxkaXYuaW5uZXJIVE1MPVwiPHRleHRhcmVhPng8L3RleHRhcmVhPlwiLHN1cHBvcnQubm9DbG9uZUNoZWNrZWQ9ISFkaXYuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlLGZyYWdtZW50LmFwcGVuZENoaWxkKGRpdiksZGl2LmlubmVySFRNTD1cIjxpbnB1dCB0eXBlPSdyYWRpbycgY2hlY2tlZD0nY2hlY2tlZCcgbmFtZT0ndCcvPlwiLHN1cHBvcnQuY2hlY2tDbG9uZT1kaXYuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLHN1cHBvcnQubm9DbG9uZUV2ZW50PSEwLGRpdi5hdHRhY2hFdmVudCYmKGRpdi5hdHRhY2hFdmVudChcIm9uY2xpY2tcIixmdW5jdGlvbigpe3N1cHBvcnQubm9DbG9uZUV2ZW50PSExfSksZGl2LmNsb25lTm9kZSghMCkuY2xpY2soKSksbnVsbD09c3VwcG9ydC5kZWxldGVFeHBhbmRvKXtzdXBwb3J0LmRlbGV0ZUV4cGFuZG89ITA7dHJ5e2RlbGV0ZSBkaXYudGVzdH1jYXRjaChlKXtzdXBwb3J0LmRlbGV0ZUV4cGFuZG89ITF9fX0oKSxmdW5jdGlvbigpe3ZhciBpLGV2ZW50TmFtZSxkaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtmb3IoaSBpbntzdWJtaXQ6ITAsY2hhbmdlOiEwLGZvY3VzaW46ITB9KWV2ZW50TmFtZT1cIm9uXCIraSwoc3VwcG9ydFtpK1wiQnViYmxlc1wiXT1ldmVudE5hbWUgaW4gd2luZG93KXx8KGRpdi5zZXRBdHRyaWJ1dGUoZXZlbnROYW1lLFwidFwiKSxzdXBwb3J0W2krXCJCdWJibGVzXCJdPWRpdi5hdHRyaWJ1dGVzW2V2ZW50TmFtZV0uZXhwYW5kbz09PSExKTtkaXY9bnVsbH0oKTt2YXIgcmZvcm1FbGVtcz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYSkkL2kscmtleUV2ZW50PS9ea2V5LyxybW91c2VFdmVudD0vXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnUpfGNsaWNrLyxyZm9jdXNNb3JwaD0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8scnR5cGVuYW1lc3BhY2U9L14oW14uXSopKD86XFwuKC4rKXwpJC87alF1ZXJ5LmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGVsZW0sdHlwZXMsaGFuZGxlcixkYXRhLHNlbGVjdG9yKXt2YXIgdG1wLGV2ZW50cyx0LGhhbmRsZU9iakluLHNwZWNpYWwsZXZlbnRIYW5kbGUsaGFuZGxlT2JqLGhhbmRsZXJzLHR5cGUsbmFtZXNwYWNlcyxvcmlnVHlwZSxlbGVtRGF0YT1qUXVlcnkuX2RhdGEoZWxlbSk7aWYoZWxlbURhdGEpe2ZvcihoYW5kbGVyLmhhbmRsZXImJihoYW5kbGVPYmpJbj1oYW5kbGVyLGhhbmRsZXI9aGFuZGxlT2JqSW4uaGFuZGxlcixzZWxlY3Rvcj1oYW5kbGVPYmpJbi5zZWxlY3RvciksaGFuZGxlci5ndWlkfHwoaGFuZGxlci5ndWlkPWpRdWVyeS5ndWlkKyspLChldmVudHM9ZWxlbURhdGEuZXZlbnRzKXx8KGV2ZW50cz1lbGVtRGF0YS5ldmVudHM9e30pLChldmVudEhhbmRsZT1lbGVtRGF0YS5oYW5kbGUpfHwoZXZlbnRIYW5kbGU9ZWxlbURhdGEuaGFuZGxlPWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgalF1ZXJ5PT09c3RydW5kZWZpbmVkfHxlJiZqUXVlcnkuZXZlbnQudHJpZ2dlcmVkPT09ZS50eXBlP3ZvaWQgMDpqUXVlcnkuZXZlbnQuZGlzcGF0Y2guYXBwbHkoZXZlbnRIYW5kbGUuZWxlbSxhcmd1bWVudHMpfSxldmVudEhhbmRsZS5lbGVtPWVsZW0pLHR5cGVzPSh0eXBlc3x8XCJcIikubWF0Y2gocm5vdHdoaXRlKXx8W1wiXCJdLHQ9dHlwZXMubGVuZ3RoO3QtLTspdG1wPXJ0eXBlbmFtZXNwYWNlLmV4ZWModHlwZXNbdF0pfHxbXSx0eXBlPW9yaWdUeXBlPXRtcFsxXSxuYW1lc3BhY2VzPSh0bXBbMl18fFwiXCIpLnNwbGl0KFwiLlwiKS5zb3J0KCksdHlwZSYmKHNwZWNpYWw9alF1ZXJ5LmV2ZW50LnNwZWNpYWxbdHlwZV18fHt9LHR5cGU9KHNlbGVjdG9yP3NwZWNpYWwuZGVsZWdhdGVUeXBlOnNwZWNpYWwuYmluZFR5cGUpfHx0eXBlLHNwZWNpYWw9alF1ZXJ5LmV2ZW50LnNwZWNpYWxbdHlwZV18fHt9LGhhbmRsZU9iaj1qUXVlcnkuZXh0ZW5kKHt0eXBlOnR5cGUsb3JpZ1R5cGU6b3JpZ1R5cGUsZGF0YTpkYXRhLGhhbmRsZXI6aGFuZGxlcixndWlkOmhhbmRsZXIuZ3VpZCxzZWxlY3RvcjpzZWxlY3RvcixuZWVkc0NvbnRleHQ6c2VsZWN0b3ImJmpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KHNlbGVjdG9yKSxuYW1lc3BhY2U6bmFtZXNwYWNlcy5qb2luKFwiLlwiKX0saGFuZGxlT2JqSW4pLChoYW5kbGVycz1ldmVudHNbdHlwZV0pfHwoaGFuZGxlcnM9ZXZlbnRzW3R5cGVdPVtdLGhhbmRsZXJzLmRlbGVnYXRlQ291bnQ9MCxzcGVjaWFsLnNldHVwJiZzcGVjaWFsLnNldHVwLmNhbGwoZWxlbSxkYXRhLG5hbWVzcGFjZXMsZXZlbnRIYW5kbGUpIT09ITF8fChlbGVtLmFkZEV2ZW50TGlzdGVuZXI/ZWxlbS5hZGRFdmVudExpc3RlbmVyKHR5cGUsZXZlbnRIYW5kbGUsITEpOmVsZW0uYXR0YWNoRXZlbnQmJmVsZW0uYXR0YWNoRXZlbnQoXCJvblwiK3R5cGUsZXZlbnRIYW5kbGUpKSksc3BlY2lhbC5hZGQmJihzcGVjaWFsLmFkZC5jYWxsKGVsZW0saGFuZGxlT2JqKSxoYW5kbGVPYmouaGFuZGxlci5ndWlkfHwoaGFuZGxlT2JqLmhhbmRsZXIuZ3VpZD1oYW5kbGVyLmd1aWQpKSxzZWxlY3Rvcj9oYW5kbGVycy5zcGxpY2UoaGFuZGxlcnMuZGVsZWdhdGVDb3VudCsrLDAsaGFuZGxlT2JqKTpoYW5kbGVycy5wdXNoKGhhbmRsZU9iaiksalF1ZXJ5LmV2ZW50Lmdsb2JhbFt0eXBlXT0hMCk7ZWxlbT1udWxsfX0scmVtb3ZlOmZ1bmN0aW9uKGVsZW0sdHlwZXMsaGFuZGxlcixzZWxlY3RvcixtYXBwZWRUeXBlcyl7dmFyIGosaGFuZGxlT2JqLHRtcCxvcmlnQ291bnQsdCxldmVudHMsc3BlY2lhbCxoYW5kbGVycyx0eXBlLG5hbWVzcGFjZXMsb3JpZ1R5cGUsZWxlbURhdGE9alF1ZXJ5Lmhhc0RhdGEoZWxlbSkmJmpRdWVyeS5fZGF0YShlbGVtKTtpZihlbGVtRGF0YSYmKGV2ZW50cz1lbGVtRGF0YS5ldmVudHMpKXtmb3IodHlwZXM9KHR5cGVzfHxcIlwiKS5tYXRjaChybm90d2hpdGUpfHxbXCJcIl0sdD10eXBlcy5sZW5ndGg7dC0tOylpZih0bXA9cnR5cGVuYW1lc3BhY2UuZXhlYyh0eXBlc1t0XSl8fFtdLHR5cGU9b3JpZ1R5cGU9dG1wWzFdLG5hbWVzcGFjZXM9KHRtcFsyXXx8XCJcIikuc3BsaXQoXCIuXCIpLnNvcnQoKSx0eXBlKXtmb3Ioc3BlY2lhbD1qUXVlcnkuZXZlbnQuc3BlY2lhbFt0eXBlXXx8e30sdHlwZT0oc2VsZWN0b3I/c3BlY2lhbC5kZWxlZ2F0ZVR5cGU6c3BlY2lhbC5iaW5kVHlwZSl8fHR5cGUsaGFuZGxlcnM9ZXZlbnRzW3R5cGVdfHxbXSx0bXA9dG1wWzJdJiZuZXcgUmVnRXhwKFwiKF58XFxcXC4pXCIrbmFtZXNwYWNlcy5qb2luKFwiXFxcXC4oPzouKlxcXFwufClcIikrXCIoXFxcXC58JClcIiksb3JpZ0NvdW50PWo9aGFuZGxlcnMubGVuZ3RoO2otLTspaGFuZGxlT2JqPWhhbmRsZXJzW2pdLCFtYXBwZWRUeXBlcyYmb3JpZ1R5cGUhPT1oYW5kbGVPYmoub3JpZ1R5cGV8fGhhbmRsZXImJmhhbmRsZXIuZ3VpZCE9PWhhbmRsZU9iai5ndWlkfHx0bXAmJiF0bXAudGVzdChoYW5kbGVPYmoubmFtZXNwYWNlKXx8c2VsZWN0b3ImJnNlbGVjdG9yIT09aGFuZGxlT2JqLnNlbGVjdG9yJiYoXCIqKlwiIT09c2VsZWN0b3J8fCFoYW5kbGVPYmouc2VsZWN0b3IpfHwoaGFuZGxlcnMuc3BsaWNlKGosMSksaGFuZGxlT2JqLnNlbGVjdG9yJiZoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LS0sc3BlY2lhbC5yZW1vdmUmJnNwZWNpYWwucmVtb3ZlLmNhbGwoZWxlbSxoYW5kbGVPYmopKTtvcmlnQ291bnQmJiFoYW5kbGVycy5sZW5ndGgmJihzcGVjaWFsLnRlYXJkb3duJiZzcGVjaWFsLnRlYXJkb3duLmNhbGwoZWxlbSxuYW1lc3BhY2VzLGVsZW1EYXRhLmhhbmRsZSkhPT0hMXx8alF1ZXJ5LnJlbW92ZUV2ZW50KGVsZW0sdHlwZSxlbGVtRGF0YS5oYW5kbGUpLGRlbGV0ZSBldmVudHNbdHlwZV0pfWVsc2UgZm9yKHR5cGUgaW4gZXZlbnRzKWpRdWVyeS5ldmVudC5yZW1vdmUoZWxlbSx0eXBlK3R5cGVzW3RdLGhhbmRsZXIsc2VsZWN0b3IsITApO2pRdWVyeS5pc0VtcHR5T2JqZWN0KGV2ZW50cykmJihkZWxldGUgZWxlbURhdGEuaGFuZGxlLGpRdWVyeS5fcmVtb3ZlRGF0YShlbGVtLFwiZXZlbnRzXCIpKX19LHRyaWdnZXI6ZnVuY3Rpb24oZXZlbnQsZGF0YSxlbGVtLG9ubHlIYW5kbGVycyl7dmFyIGhhbmRsZSxvbnR5cGUsY3VyLGJ1YmJsZVR5cGUsc3BlY2lhbCx0bXAsaSxldmVudFBhdGg9W2VsZW18fGRvY3VtZW50XSx0eXBlPWhhc093bi5jYWxsKGV2ZW50LFwidHlwZVwiKT9ldmVudC50eXBlOmV2ZW50LG5hbWVzcGFjZXM9aGFzT3duLmNhbGwoZXZlbnQsXCJuYW1lc3BhY2VcIik/ZXZlbnQubmFtZXNwYWNlLnNwbGl0KFwiLlwiKTpbXTtpZihjdXI9dG1wPWVsZW09ZWxlbXx8ZG9jdW1lbnQsMyE9PWVsZW0ubm9kZVR5cGUmJjghPT1lbGVtLm5vZGVUeXBlJiYhcmZvY3VzTW9ycGgudGVzdCh0eXBlK2pRdWVyeS5ldmVudC50cmlnZ2VyZWQpJiYodHlwZS5pbmRleE9mKFwiLlwiKT49MCYmKG5hbWVzcGFjZXM9dHlwZS5zcGxpdChcIi5cIiksdHlwZT1uYW1lc3BhY2VzLnNoaWZ0KCksbmFtZXNwYWNlcy5zb3J0KCkpLG9udHlwZT10eXBlLmluZGV4T2YoXCI6XCIpPDAmJlwib25cIit0eXBlLGV2ZW50PWV2ZW50W2pRdWVyeS5leHBhbmRvXT9ldmVudDpuZXcgalF1ZXJ5LkV2ZW50KHR5cGUsXCJvYmplY3RcIj09dHlwZW9mIGV2ZW50JiZldmVudCksZXZlbnQuaXNUcmlnZ2VyPW9ubHlIYW5kbGVycz8yOjMsZXZlbnQubmFtZXNwYWNlPW5hbWVzcGFjZXMuam9pbihcIi5cIiksZXZlbnQubmFtZXNwYWNlX3JlPWV2ZW50Lm5hbWVzcGFjZT9uZXcgUmVnRXhwKFwiKF58XFxcXC4pXCIrbmFtZXNwYWNlcy5qb2luKFwiXFxcXC4oPzouKlxcXFwufClcIikrXCIoXFxcXC58JClcIik6bnVsbCxldmVudC5yZXN1bHQ9dm9pZCAwLGV2ZW50LnRhcmdldHx8KGV2ZW50LnRhcmdldD1lbGVtKSxkYXRhPW51bGw9PWRhdGE/W2V2ZW50XTpqUXVlcnkubWFrZUFycmF5KGRhdGEsW2V2ZW50XSksc3BlY2lhbD1qUXVlcnkuZXZlbnQuc3BlY2lhbFt0eXBlXXx8e30sb25seUhhbmRsZXJzfHwhc3BlY2lhbC50cmlnZ2VyfHxzcGVjaWFsLnRyaWdnZXIuYXBwbHkoZWxlbSxkYXRhKSE9PSExKSl7aWYoIW9ubHlIYW5kbGVycyYmIXNwZWNpYWwubm9CdWJibGUmJiFqUXVlcnkuaXNXaW5kb3coZWxlbSkpe2ZvcihidWJibGVUeXBlPXNwZWNpYWwuZGVsZWdhdGVUeXBlfHx0eXBlLHJmb2N1c01vcnBoLnRlc3QoYnViYmxlVHlwZSt0eXBlKXx8KGN1cj1jdXIucGFyZW50Tm9kZSk7Y3VyO2N1cj1jdXIucGFyZW50Tm9kZSlldmVudFBhdGgucHVzaChjdXIpLHRtcD1jdXI7dG1wPT09KGVsZW0ub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQpJiZldmVudFBhdGgucHVzaCh0bXAuZGVmYXVsdFZpZXd8fHRtcC5wYXJlbnRXaW5kb3d8fHdpbmRvdyl9Zm9yKGk9MDsoY3VyPWV2ZW50UGF0aFtpKytdKSYmIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7KWV2ZW50LnR5cGU9aT4xP2J1YmJsZVR5cGU6c3BlY2lhbC5iaW5kVHlwZXx8dHlwZSxoYW5kbGU9KGpRdWVyeS5fZGF0YShjdXIsXCJldmVudHNcIil8fHt9KVtldmVudC50eXBlXSYmalF1ZXJ5Ll9kYXRhKGN1cixcImhhbmRsZVwiKSxoYW5kbGUmJmhhbmRsZS5hcHBseShjdXIsZGF0YSksaGFuZGxlPW9udHlwZSYmY3VyW29udHlwZV0saGFuZGxlJiZoYW5kbGUuYXBwbHkmJmpRdWVyeS5hY2NlcHREYXRhKGN1cikmJihldmVudC5yZXN1bHQ9aGFuZGxlLmFwcGx5KGN1cixkYXRhKSxldmVudC5yZXN1bHQ9PT0hMSYmZXZlbnQucHJldmVudERlZmF1bHQoKSk7aWYoZXZlbnQudHlwZT10eXBlLCFvbmx5SGFuZGxlcnMmJiFldmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmKCFzcGVjaWFsLl9kZWZhdWx0fHxzcGVjaWFsLl9kZWZhdWx0LmFwcGx5KGV2ZW50UGF0aC5wb3AoKSxkYXRhKT09PSExKSYmalF1ZXJ5LmFjY2VwdERhdGEoZWxlbSkmJm9udHlwZSYmZWxlbVt0eXBlXSYmIWpRdWVyeS5pc1dpbmRvdyhlbGVtKSl7dG1wPWVsZW1bb250eXBlXSx0bXAmJihlbGVtW29udHlwZV09bnVsbCksalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZD10eXBlO3RyeXtlbGVtW3R5cGVdKCl9Y2F0Y2goZSl7fWpRdWVyeS5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLHRtcCYmKGVsZW1bb250eXBlXT10bXApfXJldHVybiBldmVudC5yZXN1bHR9fSxkaXNwYXRjaDpmdW5jdGlvbihldmVudCl7ZXZlbnQ9alF1ZXJ5LmV2ZW50LmZpeChldmVudCk7dmFyIGkscmV0LGhhbmRsZU9iaixtYXRjaGVkLGosaGFuZGxlclF1ZXVlPVtdLGFyZ3M9c2xpY2UuY2FsbChhcmd1bWVudHMpLGhhbmRsZXJzPShqUXVlcnkuX2RhdGEodGhpcyxcImV2ZW50c1wiKXx8e30pW2V2ZW50LnR5cGVdfHxbXSxzcGVjaWFsPWpRdWVyeS5ldmVudC5zcGVjaWFsW2V2ZW50LnR5cGVdfHx7fTtpZihhcmdzWzBdPWV2ZW50LGV2ZW50LmRlbGVnYXRlVGFyZ2V0PXRoaXMsIXNwZWNpYWwucHJlRGlzcGF0Y2h8fHNwZWNpYWwucHJlRGlzcGF0Y2guY2FsbCh0aGlzLGV2ZW50KSE9PSExKXtmb3IoaGFuZGxlclF1ZXVlPWpRdWVyeS5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsZXZlbnQsaGFuZGxlcnMpLGk9MDsobWF0Y2hlZD1oYW5kbGVyUXVldWVbaSsrXSkmJiFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOylmb3IoZXZlbnQuY3VycmVudFRhcmdldD1tYXRjaGVkLmVsZW0saj0wOyhoYW5kbGVPYmo9bWF0Y2hlZC5oYW5kbGVyc1tqKytdKSYmIWV2ZW50LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCk7KSghZXZlbnQubmFtZXNwYWNlX3JlfHxldmVudC5uYW1lc3BhY2VfcmUudGVzdChoYW5kbGVPYmoubmFtZXNwYWNlKSkmJihldmVudC5oYW5kbGVPYmo9aGFuZGxlT2JqLGV2ZW50LmRhdGE9aGFuZGxlT2JqLmRhdGEscmV0PSgoalF1ZXJ5LmV2ZW50LnNwZWNpYWxbaGFuZGxlT2JqLm9yaWdUeXBlXXx8e30pLmhhbmRsZXx8aGFuZGxlT2JqLmhhbmRsZXIpLmFwcGx5KG1hdGNoZWQuZWxlbSxhcmdzKSx2b2lkIDAhPT1yZXQmJihldmVudC5yZXN1bHQ9cmV0KT09PSExJiYoZXZlbnQucHJldmVudERlZmF1bHQoKSxldmVudC5zdG9wUHJvcGFnYXRpb24oKSkpO3JldHVybiBzcGVjaWFsLnBvc3REaXNwYXRjaCYmc3BlY2lhbC5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLGV2ZW50KSxldmVudC5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihldmVudCxoYW5kbGVycyl7dmFyIHNlbCxoYW5kbGVPYmosbWF0Y2hlcyxpLGhhbmRsZXJRdWV1ZT1bXSxkZWxlZ2F0ZUNvdW50PWhhbmRsZXJzLmRlbGVnYXRlQ291bnQsY3VyPWV2ZW50LnRhcmdldDtpZihkZWxlZ2F0ZUNvdW50JiZjdXIubm9kZVR5cGUmJighZXZlbnQuYnV0dG9ufHxcImNsaWNrXCIhPT1ldmVudC50eXBlKSlmb3IoO2N1ciE9dGhpcztjdXI9Y3VyLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PWN1ci5ub2RlVHlwZSYmKGN1ci5kaXNhYmxlZCE9PSEwfHxcImNsaWNrXCIhPT1ldmVudC50eXBlKSl7Zm9yKG1hdGNoZXM9W10saT0wO2RlbGVnYXRlQ291bnQ+aTtpKyspaGFuZGxlT2JqPWhhbmRsZXJzW2ldLHNlbD1oYW5kbGVPYmouc2VsZWN0b3IrXCIgXCIsdm9pZCAwPT09bWF0Y2hlc1tzZWxdJiYobWF0Y2hlc1tzZWxdPWhhbmRsZU9iai5uZWVkc0NvbnRleHQ/alF1ZXJ5KHNlbCx0aGlzKS5pbmRleChjdXIpPj0wOmpRdWVyeS5maW5kKHNlbCx0aGlzLG51bGwsW2N1cl0pLmxlbmd0aCksbWF0Y2hlc1tzZWxdJiZtYXRjaGVzLnB1c2goaGFuZGxlT2JqKTttYXRjaGVzLmxlbmd0aCYmaGFuZGxlclF1ZXVlLnB1c2goe2VsZW06Y3VyLGhhbmRsZXJzOm1hdGNoZXN9KX1yZXR1cm4gZGVsZWdhdGVDb3VudDxoYW5kbGVycy5sZW5ndGgmJmhhbmRsZXJRdWV1ZS5wdXNoKHtlbGVtOnRoaXMsaGFuZGxlcnM6aGFuZGxlcnMuc2xpY2UoZGVsZWdhdGVDb3VudCl9KSxoYW5kbGVyUXVldWV9LGZpeDpmdW5jdGlvbihldmVudCl7aWYoZXZlbnRbalF1ZXJ5LmV4cGFuZG9dKXJldHVybiBldmVudDt2YXIgaSxwcm9wLGNvcHksdHlwZT1ldmVudC50eXBlLG9yaWdpbmFsRXZlbnQ9ZXZlbnQsZml4SG9vaz10aGlzLmZpeEhvb2tzW3R5cGVdO2ZvcihmaXhIb29rfHwodGhpcy5maXhIb29rc1t0eXBlXT1maXhIb29rPXJtb3VzZUV2ZW50LnRlc3QodHlwZSk/dGhpcy5tb3VzZUhvb2tzOnJrZXlFdmVudC50ZXN0KHR5cGUpP3RoaXMua2V5SG9va3M6e30pLGNvcHk9Zml4SG9vay5wcm9wcz90aGlzLnByb3BzLmNvbmNhdChmaXhIb29rLnByb3BzKTp0aGlzLnByb3BzLGV2ZW50PW5ldyBqUXVlcnkuRXZlbnQob3JpZ2luYWxFdmVudCksaT1jb3B5Lmxlbmd0aDtpLS07KXByb3A9Y29weVtpXSxldmVudFtwcm9wXT1vcmlnaW5hbEV2ZW50W3Byb3BdO3JldHVybiBldmVudC50YXJnZXR8fChldmVudC50YXJnZXQ9b3JpZ2luYWxFdmVudC5zcmNFbGVtZW50fHxkb2N1bWVudCksMz09PWV2ZW50LnRhcmdldC5ub2RlVHlwZSYmKGV2ZW50LnRhcmdldD1ldmVudC50YXJnZXQucGFyZW50Tm9kZSksZXZlbnQubWV0YUtleT0hIWV2ZW50Lm1ldGFLZXksZml4SG9vay5maWx0ZXI/Zml4SG9vay5maWx0ZXIoZXZlbnQsb3JpZ2luYWxFdmVudCk6ZXZlbnR9LHByb3BzOlwiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoXCIuc3BsaXQoXCIgXCIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczpcImNoYXIgY2hhckNvZGUga2V5IGtleUNvZGVcIi5zcGxpdChcIiBcIiksZmlsdGVyOmZ1bmN0aW9uKGV2ZW50LG9yaWdpbmFsKXtyZXR1cm4gbnVsbD09ZXZlbnQud2hpY2gmJihldmVudC53aGljaD1udWxsIT1vcmlnaW5hbC5jaGFyQ29kZT9vcmlnaW5hbC5jaGFyQ29kZTpvcmlnaW5hbC5rZXlDb2RlKSxldmVudH19LG1vdXNlSG9va3M6e3Byb3BzOlwiYnV0dG9uIGJ1dHRvbnMgY2xpZW50WCBjbGllbnRZIGZyb21FbGVtZW50IG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBzY3JlZW5YIHNjcmVlblkgdG9FbGVtZW50XCIuc3BsaXQoXCIgXCIpLGZpbHRlcjpmdW5jdGlvbihldmVudCxvcmlnaW5hbCl7dmFyIGJvZHksZXZlbnREb2MsZG9jLGJ1dHRvbj1vcmlnaW5hbC5idXR0b24sZnJvbUVsZW1lbnQ9b3JpZ2luYWwuZnJvbUVsZW1lbnQ7cmV0dXJuIG51bGw9PWV2ZW50LnBhZ2VYJiZudWxsIT1vcmlnaW5hbC5jbGllbnRYJiYoZXZlbnREb2M9ZXZlbnQudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fGRvY3VtZW50LGRvYz1ldmVudERvYy5kb2N1bWVudEVsZW1lbnQsYm9keT1ldmVudERvYy5ib2R5LGV2ZW50LnBhZ2VYPW9yaWdpbmFsLmNsaWVudFgrKGRvYyYmZG9jLnNjcm9sbExlZnR8fGJvZHkmJmJvZHkuc2Nyb2xsTGVmdHx8MCktKGRvYyYmZG9jLmNsaWVudExlZnR8fGJvZHkmJmJvZHkuY2xpZW50TGVmdHx8MCksZXZlbnQucGFnZVk9b3JpZ2luYWwuY2xpZW50WSsoZG9jJiZkb2Muc2Nyb2xsVG9wfHxib2R5JiZib2R5LnNjcm9sbFRvcHx8MCktKGRvYyYmZG9jLmNsaWVudFRvcHx8Ym9keSYmYm9keS5jbGllbnRUb3B8fDApKSwhZXZlbnQucmVsYXRlZFRhcmdldCYmZnJvbUVsZW1lbnQmJihldmVudC5yZWxhdGVkVGFyZ2V0PWZyb21FbGVtZW50PT09ZXZlbnQudGFyZ2V0P29yaWdpbmFsLnRvRWxlbWVudDpmcm9tRWxlbWVudCksZXZlbnQud2hpY2h8fHZvaWQgMD09PWJ1dHRvbnx8KGV2ZW50LndoaWNoPTEmYnV0dG9uPzE6MiZidXR0b24/Mzo0JmJ1dHRvbj8yOjApLGV2ZW50fX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7aWYodGhpcyE9PXNhZmVBY3RpdmVFbGVtZW50KCkmJnRoaXMuZm9jdXMpdHJ5e3JldHVybiB0aGlzLmZvY3VzKCksITF9Y2F0Y2goZSl7fX0sZGVsZWdhdGVUeXBlOlwiZm9jdXNpblwifSxibHVyOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM9PT1zYWZlQWN0aXZlRWxlbWVudCgpJiZ0aGlzLmJsdXI/KHRoaXMuYmx1cigpLCExKTp2b2lkIDB9LGRlbGVnYXRlVHlwZTpcImZvY3Vzb3V0XCJ9LGNsaWNrOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIGpRdWVyeS5ub2RlTmFtZSh0aGlzLFwiaW5wdXRcIikmJlwiY2hlY2tib3hcIj09PXRoaXMudHlwZSYmdGhpcy5jbGljaz8odGhpcy5jbGljaygpLCExKTp2b2lkIDB9LF9kZWZhdWx0OmZ1bmN0aW9uKGV2ZW50KXtyZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKGV2ZW50LnRhcmdldCxcImFcIil9fSxiZWZvcmV1bmxvYWQ6e3Bvc3REaXNwYXRjaDpmdW5jdGlvbihldmVudCl7dm9pZCAwIT09ZXZlbnQucmVzdWx0JiZldmVudC5vcmlnaW5hbEV2ZW50JiYoZXZlbnQub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1ldmVudC5yZXN1bHQpfX19LHNpbXVsYXRlOmZ1bmN0aW9uKHR5cGUsZWxlbSxldmVudCxidWJibGUpe3ZhciBlPWpRdWVyeS5leHRlbmQobmV3IGpRdWVyeS5FdmVudCxldmVudCx7dHlwZTp0eXBlLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6e319KTtidWJibGU/alF1ZXJ5LmV2ZW50LnRyaWdnZXIoZSxudWxsLGVsZW0pOmpRdWVyeS5ldmVudC5kaXNwYXRjaC5jYWxsKGVsZW0sZSksZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmZXZlbnQucHJldmVudERlZmF1bHQoKX19LGpRdWVyeS5yZW1vdmVFdmVudD1kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyP2Z1bmN0aW9uKGVsZW0sdHlwZSxoYW5kbGUpe2VsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciYmZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsaGFuZGxlLCExKX06ZnVuY3Rpb24oZWxlbSx0eXBlLGhhbmRsZSl7dmFyIG5hbWU9XCJvblwiK3R5cGU7ZWxlbS5kZXRhY2hFdmVudCYmKHR5cGVvZiBlbGVtW25hbWVdPT09c3RydW5kZWZpbmVkJiYoZWxlbVtuYW1lXT1udWxsKSxlbGVtLmRldGFjaEV2ZW50KG5hbWUsaGFuZGxlKSl9LGpRdWVyeS5FdmVudD1mdW5jdGlvbihzcmMscHJvcHMpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgalF1ZXJ5LkV2ZW50PyhzcmMmJnNyYy50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9c3JjLHRoaXMudHlwZT1zcmMudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1zcmMuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09c3JjLmRlZmF1bHRQcmV2ZW50ZWQmJnNyYy5yZXR1cm5WYWx1ZT09PSExP3JldHVyblRydWU6cmV0dXJuRmFsc2UpOnRoaXMudHlwZT1zcmMscHJvcHMmJmpRdWVyeS5leHRlbmQodGhpcyxwcm9wcyksdGhpcy50aW1lU3RhbXA9c3JjJiZzcmMudGltZVN0YW1wfHxqUXVlcnkubm93KCksdm9pZCh0aGlzW2pRdWVyeS5leHBhbmRvXT0hMCkpOm5ldyBqUXVlcnkuRXZlbnQoc3JjLHByb3BzKX0salF1ZXJ5LkV2ZW50LnByb3RvdHlwZT17aXNEZWZhdWx0UHJldmVudGVkOnJldHVybkZhbHNlLGlzUHJvcGFnYXRpb25TdG9wcGVkOnJldHVybkZhbHNlLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOnJldHVybkZhbHNlLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXJldHVyblRydWUsZSYmKGUucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOmUucmV0dXJuVmFsdWU9ITEpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1yZXR1cm5UcnVlLGUmJihlLnN0b3BQcm9wYWdhdGlvbiYmZS5zdG9wUHJvcGFnYXRpb24oKSxlLmNhbmNlbEJ1YmJsZT0hMCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPXJldHVyblRydWUsZSYmZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24mJmUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LGpRdWVyeS5lYWNoKHttb3VzZWVudGVyOlwibW91c2VvdmVyXCIsbW91c2VsZWF2ZTpcIm1vdXNlb3V0XCIscG9pbnRlcmVudGVyOlwicG9pbnRlcm92ZXJcIixwb2ludGVybGVhdmU6XCJwb2ludGVyb3V0XCJ9LGZ1bmN0aW9uKG9yaWcsZml4KXtqUXVlcnkuZXZlbnQuc3BlY2lhbFtvcmlnXT17ZGVsZWdhdGVUeXBlOmZpeCxiaW5kVHlwZTpmaXgsaGFuZGxlOmZ1bmN0aW9uKGV2ZW50KXt2YXIgcmV0LHRhcmdldD10aGlzLHJlbGF0ZWQ9ZXZlbnQucmVsYXRlZFRhcmdldCxoYW5kbGVPYmo9ZXZlbnQuaGFuZGxlT2JqO3JldHVybighcmVsYXRlZHx8cmVsYXRlZCE9PXRhcmdldCYmIWpRdWVyeS5jb250YWlucyh0YXJnZXQscmVsYXRlZCkpJiYoZXZlbnQudHlwZT1oYW5kbGVPYmoub3JpZ1R5cGUscmV0PWhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxldmVudC50eXBlPWZpeCkscmV0fX19KSxzdXBwb3J0LnN1Ym1pdEJ1YmJsZXN8fChqUXVlcnkuZXZlbnQuc3BlY2lhbC5zdWJtaXQ9e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIGpRdWVyeS5ub2RlTmFtZSh0aGlzLFwiZm9ybVwiKT8hMTp2b2lkIGpRdWVyeS5ldmVudC5hZGQodGhpcyxcImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdFwiLGZ1bmN0aW9uKGUpe3ZhciBlbGVtPWUudGFyZ2V0LGZvcm09alF1ZXJ5Lm5vZGVOYW1lKGVsZW0sXCJpbnB1dFwiKXx8alF1ZXJ5Lm5vZGVOYW1lKGVsZW0sXCJidXR0b25cIik/ZWxlbS5mb3JtOnZvaWQgMDtmb3JtJiYhalF1ZXJ5Ll9kYXRhKGZvcm0sXCJzdWJtaXRCdWJibGVzXCIpJiYoalF1ZXJ5LmV2ZW50LmFkZChmb3JtLFwic3VibWl0Ll9zdWJtaXRcIixmdW5jdGlvbihldmVudCl7ZXZlbnQuX3N1Ym1pdF9idWJibGU9ITB9KSxqUXVlcnkuX2RhdGEoZm9ybSxcInN1Ym1pdEJ1YmJsZXNcIiwhMCkpfSl9LHBvc3REaXNwYXRjaDpmdW5jdGlvbihldmVudCl7ZXZlbnQuX3N1Ym1pdF9idWJibGUmJihkZWxldGUgZXZlbnQuX3N1Ym1pdF9idWJibGUsdGhpcy5wYXJlbnROb2RlJiYhZXZlbnQuaXNUcmlnZ2VyJiZqUXVlcnkuZXZlbnQuc2ltdWxhdGUoXCJzdWJtaXRcIix0aGlzLnBhcmVudE5vZGUsZXZlbnQsITApKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtyZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKHRoaXMsXCJmb3JtXCIpPyExOnZvaWQgalF1ZXJ5LmV2ZW50LnJlbW92ZSh0aGlzLFwiLl9zdWJtaXRcIil9fSksc3VwcG9ydC5jaGFuZ2VCdWJibGVzfHwoalF1ZXJ5LmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiByZm9ybUVsZW1zLnRlc3QodGhpcy5ub2RlTmFtZSk/KChcImNoZWNrYm94XCI9PT10aGlzLnR5cGV8fFwicmFkaW9cIj09PXRoaXMudHlwZSkmJihqUXVlcnkuZXZlbnQuYWRkKHRoaXMsXCJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlXCIsZnVuY3Rpb24oZXZlbnQpe1wiY2hlY2tlZFwiPT09ZXZlbnQub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWUmJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITApfSksalF1ZXJ5LmV2ZW50LmFkZCh0aGlzLFwiY2xpY2suX2NoYW5nZVwiLGZ1bmN0aW9uKGV2ZW50KXt0aGlzLl9qdXN0X2NoYW5nZWQmJiFldmVudC5pc1RyaWdnZXImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITEpLGpRdWVyeS5ldmVudC5zaW11bGF0ZShcImNoYW5nZVwiLHRoaXMsZXZlbnQsITApfSkpLCExKTp2b2lkIGpRdWVyeS5ldmVudC5hZGQodGhpcyxcImJlZm9yZWFjdGl2YXRlLl9jaGFuZ2VcIixmdW5jdGlvbihlKXt2YXIgZWxlbT1lLnRhcmdldDtyZm9ybUVsZW1zLnRlc3QoZWxlbS5ub2RlTmFtZSkmJiFqUXVlcnkuX2RhdGEoZWxlbSxcImNoYW5nZUJ1YmJsZXNcIikmJihqUXVlcnkuZXZlbnQuYWRkKGVsZW0sXCJjaGFuZ2UuX2NoYW5nZVwiLGZ1bmN0aW9uKGV2ZW50KXshdGhpcy5wYXJlbnROb2RlfHxldmVudC5pc1NpbXVsYXRlZHx8ZXZlbnQuaXNUcmlnZ2VyfHxqUXVlcnkuZXZlbnQuc2ltdWxhdGUoXCJjaGFuZ2VcIix0aGlzLnBhcmVudE5vZGUsZXZlbnQsITApfSksalF1ZXJ5Ll9kYXRhKGVsZW0sXCJjaGFuZ2VCdWJibGVzXCIsITApKX0pfSxoYW5kbGU6ZnVuY3Rpb24oZXZlbnQpe3ZhciBlbGVtPWV2ZW50LnRhcmdldDtyZXR1cm4gdGhpcyE9PWVsZW18fGV2ZW50LmlzU2ltdWxhdGVkfHxldmVudC5pc1RyaWdnZXJ8fFwicmFkaW9cIiE9PWVsZW0udHlwZSYmXCJjaGVja2JveFwiIT09ZWxlbS50eXBlP2V2ZW50LmhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp2b2lkIDB9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIGpRdWVyeS5ldmVudC5yZW1vdmUodGhpcyxcIi5fY2hhbmdlXCIpLCFyZm9ybUVsZW1zLnRlc3QodGhpcy5ub2RlTmFtZSl9fSksc3VwcG9ydC5mb2N1c2luQnViYmxlc3x8alF1ZXJ5LmVhY2goe2ZvY3VzOlwiZm9jdXNpblwiLGJsdXI6XCJmb2N1c291dFwifSxmdW5jdGlvbihvcmlnLGZpeCl7dmFyIGhhbmRsZXI9ZnVuY3Rpb24oZXZlbnQpe2pRdWVyeS5ldmVudC5zaW11bGF0ZShmaXgsZXZlbnQudGFyZ2V0LGpRdWVyeS5ldmVudC5maXgoZXZlbnQpLCEwKX07alF1ZXJ5LmV2ZW50LnNwZWNpYWxbZml4XT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZG9jPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxhdHRhY2hlcz1qUXVlcnkuX2RhdGEoZG9jLGZpeCk7YXR0YWNoZXN8fGRvYy5hZGRFdmVudExpc3RlbmVyKG9yaWcsaGFuZGxlciwhMCksalF1ZXJ5Ll9kYXRhKGRvYyxmaXgsKGF0dGFjaGVzfHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZG9jPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxhdHRhY2hlcz1qUXVlcnkuX2RhdGEoZG9jLGZpeCktMTthdHRhY2hlcz9qUXVlcnkuX2RhdGEoZG9jLGZpeCxhdHRhY2hlcyk6KGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKG9yaWcsaGFuZGxlciwhMCksalF1ZXJ5Ll9yZW1vdmVEYXRhKGRvYyxmaXgpKX19fSksalF1ZXJ5LmZuLmV4dGVuZCh7b246ZnVuY3Rpb24odHlwZXMsc2VsZWN0b3IsZGF0YSxmbixvbmUpe3ZhciB0eXBlLG9yaWdGbjtpZihcIm9iamVjdFwiPT10eXBlb2YgdHlwZXMpe1wic3RyaW5nXCIhPXR5cGVvZiBzZWxlY3RvciYmKGRhdGE9ZGF0YXx8c2VsZWN0b3Isc2VsZWN0b3I9dm9pZCAwKTtmb3IodHlwZSBpbiB0eXBlcyl0aGlzLm9uKHR5cGUsc2VsZWN0b3IsZGF0YSx0eXBlc1t0eXBlXSxvbmUpO3JldHVybiB0aGlzfWlmKG51bGw9PWRhdGEmJm51bGw9PWZuPyhmbj1zZWxlY3RvcixkYXRhPXNlbGVjdG9yPXZvaWQgMCk6bnVsbD09Zm4mJihcInN0cmluZ1wiPT10eXBlb2Ygc2VsZWN0b3I/KGZuPWRhdGEsZGF0YT12b2lkIDApOihmbj1kYXRhLGRhdGE9c2VsZWN0b3Isc2VsZWN0b3I9dm9pZCAwKSksZm49PT0hMSlmbj1yZXR1cm5GYWxzZTtlbHNlIGlmKCFmbilyZXR1cm4gdGhpcztyZXR1cm4gMT09PW9uZSYmKG9yaWdGbj1mbixmbj1mdW5jdGlvbihldmVudCl7cmV0dXJuIGpRdWVyeSgpLm9mZihldmVudCksb3JpZ0ZuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZm4uZ3VpZD1vcmlnRm4uZ3VpZHx8KG9yaWdGbi5ndWlkPWpRdWVyeS5ndWlkKyspKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtqUXVlcnkuZXZlbnQuYWRkKHRoaXMsdHlwZXMsZm4sZGF0YSxzZWxlY3Rvcil9KX0sb25lOmZ1bmN0aW9uKHR5cGVzLHNlbGVjdG9yLGRhdGEsZm4pe3JldHVybiB0aGlzLm9uKHR5cGVzLHNlbGVjdG9yLGRhdGEsZm4sMSl9LG9mZjpmdW5jdGlvbih0eXBlcyxzZWxlY3Rvcixmbil7dmFyIGhhbmRsZU9iaix0eXBlO2lmKHR5cGVzJiZ0eXBlcy5wcmV2ZW50RGVmYXVsdCYmdHlwZXMuaGFuZGxlT2JqKXJldHVybiBoYW5kbGVPYmo9dHlwZXMuaGFuZGxlT2JqLGpRdWVyeSh0eXBlcy5kZWxlZ2F0ZVRhcmdldCkub2ZmKGhhbmRsZU9iai5uYW1lc3BhY2U/aGFuZGxlT2JqLm9yaWdUeXBlK1wiLlwiK2hhbmRsZU9iai5uYW1lc3BhY2U6aGFuZGxlT2JqLm9yaWdUeXBlLGhhbmRsZU9iai5zZWxlY3RvcixoYW5kbGVPYmouaGFuZGxlciksdGhpcztpZihcIm9iamVjdFwiPT10eXBlb2YgdHlwZXMpe2Zvcih0eXBlIGluIHR5cGVzKXRoaXMub2ZmKHR5cGUsc2VsZWN0b3IsdHlwZXNbdHlwZV0pO3JldHVybiB0aGlzfXJldHVybihzZWxlY3Rvcj09PSExfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBzZWxlY3RvcikmJihmbj1zZWxlY3RvcixzZWxlY3Rvcj12b2lkIDApLGZuPT09ITEmJihmbj1yZXR1cm5GYWxzZSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7alF1ZXJ5LmV2ZW50LnJlbW92ZSh0aGlzLHR5cGVzLGZuLHNlbGVjdG9yKX0pfSx0cmlnZ2VyOmZ1bmN0aW9uKHR5cGUsZGF0YSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2pRdWVyeS5ldmVudC50cmlnZ2VyKHR5cGUsZGF0YSx0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbih0eXBlLGRhdGEpe3ZhciBlbGVtPXRoaXNbMF07cmV0dXJuIGVsZW0/alF1ZXJ5LmV2ZW50LnRyaWdnZXIodHlwZSxkYXRhLGVsZW0sITApOnZvaWQgMH19KTt2YXIgbm9kZU5hbWVzPVwiYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlb1wiLHJpbmxpbmVqUXVlcnk9LyBqUXVlcnlcXGQrPVwiKD86bnVsbHxcXGQrKVwiL2cscm5vc2hpbWNhY2hlPW5ldyBSZWdFeHAoXCI8KD86XCIrbm9kZU5hbWVzK1wiKVtcXFxccy8+XVwiLFwiaVwiKSxybGVhZGluZ1doaXRlc3BhY2U9L15cXHMrLyxyeGh0bWxUYWc9LzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW1xcdzpdKylbXj5dKilcXC8+L2dpLHJ0YWdOYW1lPS88KFtcXHc6XSspLyxydGJvZHk9Lzx0Ym9keS9pLHJodG1sPS88fCYjP1xcdys7Lyxybm9Jbm5lcmh0bWw9LzwoPzpzY3JpcHR8c3R5bGV8bGluaykvaSxyY2hlY2tlZD0vY2hlY2tlZFxccyooPzpbXj1dfD1cXHMqLmNoZWNrZWQuKS9pLHJzY3JpcHRUeXBlPS9eJHxcXC8oPzpqYXZhfGVjbWEpc2NyaXB0L2kscnNjcmlwdFR5cGVNYXNrZWQ9L150cnVlXFwvKC4qKS8scmNsZWFuU2NyaXB0PS9eXFxzKjwhKD86XFxbQ0RBVEFcXFt8LS0pfCg/OlxcXVxcXXwtLSk+XFxzKiQvZyx3cmFwTWFwPXtvcHRpb246WzEsXCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+XCIsXCI8L3NlbGVjdD5cIl0sbGVnZW5kOlsxLFwiPGZpZWxkc2V0PlwiLFwiPC9maWVsZHNldD5cIl0sYXJlYTpbMSxcIjxtYXA+XCIsXCI8L21hcD5cIl0scGFyYW06WzEsXCI8b2JqZWN0PlwiLFwiPC9vYmplY3Q+XCJdLHRoZWFkOlsxLFwiPHRhYmxlPlwiLFwiPC90YWJsZT5cIl0sdHI6WzIsXCI8dGFibGU+PHRib2R5PlwiLFwiPC90Ym9keT48L3RhYmxlPlwiXSxjb2w6WzIsXCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPlwiLFwiPC9jb2xncm91cD48L3RhYmxlPlwiXSx0ZDpbMyxcIjx0YWJsZT48dGJvZHk+PHRyPlwiLFwiPC90cj48L3Rib2R5PjwvdGFibGU+XCJdLF9kZWZhdWx0OnN1cHBvcnQuaHRtbFNlcmlhbGl6ZT9bMCxcIlwiLFwiXCJdOlsxLFwiWDxkaXY+XCIsXCI8L2Rpdj5cIl19LHNhZmVGcmFnbWVudD1jcmVhdGVTYWZlRnJhZ21lbnQoZG9jdW1lbnQpLGZyYWdtZW50RGl2PXNhZmVGcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKTt3cmFwTWFwLm9wdGdyb3VwPXdyYXBNYXAub3B0aW9uLHdyYXBNYXAudGJvZHk9d3JhcE1hcC50Zm9vdD13cmFwTWFwLmNvbGdyb3VwPXdyYXBNYXAuY2FwdGlvbj13cmFwTWFwLnRoZWFkLHdyYXBNYXAudGg9d3JhcE1hcC50ZCxqUXVlcnkuZXh0ZW5kKHtjbG9uZTpmdW5jdGlvbihlbGVtLGRhdGFBbmRFdmVudHMsZGVlcERhdGFBbmRFdmVudHMpe3ZhciBkZXN0RWxlbWVudHMsbm9kZSxjbG9uZSxpLHNyY0VsZW1lbnRzLGluUGFnZT1qUXVlcnkuY29udGFpbnMoZWxlbS5vd25lckRvY3VtZW50LGVsZW0pO2lmKHN1cHBvcnQuaHRtbDVDbG9uZXx8alF1ZXJ5LmlzWE1MRG9jKGVsZW0pfHwhcm5vc2hpbWNhY2hlLnRlc3QoXCI8XCIrZWxlbS5ub2RlTmFtZStcIj5cIik/Y2xvbmU9ZWxlbS5jbG9uZU5vZGUoITApOihmcmFnbWVudERpdi5pbm5lckhUTUw9ZWxlbS5vdXRlckhUTUwsZnJhZ21lbnREaXYucmVtb3ZlQ2hpbGQoY2xvbmU9ZnJhZ21lbnREaXYuZmlyc3RDaGlsZCkpLCEoc3VwcG9ydC5ub0Nsb25lRXZlbnQmJnN1cHBvcnQubm9DbG9uZUNoZWNrZWR8fDEhPT1lbGVtLm5vZGVUeXBlJiYxMSE9PWVsZW0ubm9kZVR5cGV8fGpRdWVyeS5pc1hNTERvYyhlbGVtKSkpZm9yKGRlc3RFbGVtZW50cz1nZXRBbGwoY2xvbmUpLHNyY0VsZW1lbnRzPWdldEFsbChlbGVtKSxpPTA7bnVsbCE9KG5vZGU9c3JjRWxlbWVudHNbaV0pOysraSlkZXN0RWxlbWVudHNbaV0mJmZpeENsb25lTm9kZUlzc3Vlcyhub2RlLGRlc3RFbGVtZW50c1tpXSk7aWYoZGF0YUFuZEV2ZW50cylpZihkZWVwRGF0YUFuZEV2ZW50cylmb3Ioc3JjRWxlbWVudHM9c3JjRWxlbWVudHN8fGdldEFsbChlbGVtKSxkZXN0RWxlbWVudHM9ZGVzdEVsZW1lbnRzfHxnZXRBbGwoY2xvbmUpLGk9MDtudWxsIT0obm9kZT1zcmNFbGVtZW50c1tpXSk7aSsrKWNsb25lQ29weUV2ZW50KG5vZGUsZGVzdEVsZW1lbnRzW2ldKTtlbHNlIGNsb25lQ29weUV2ZW50KGVsZW0sY2xvbmUpO3JldHVybiBkZXN0RWxlbWVudHM9Z2V0QWxsKGNsb25lLFwic2NyaXB0XCIpLGRlc3RFbGVtZW50cy5sZW5ndGg+MCYmc2V0R2xvYmFsRXZhbChkZXN0RWxlbWVudHMsIWluUGFnZSYmZ2V0QWxsKGVsZW0sXCJzY3JpcHRcIikpLGRlc3RFbGVtZW50cz1zcmNFbGVtZW50cz1ub2RlPW51bGwsY2xvbmV9LGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oZWxlbXMsY29udGV4dCxzY3JpcHRzLHNlbGVjdGlvbil7Zm9yKHZhciBqLGVsZW0sY29udGFpbnMsdG1wLHRhZyx0Ym9keSx3cmFwLGw9ZWxlbXMubGVuZ3RoLHNhZmU9Y3JlYXRlU2FmZUZyYWdtZW50KGNvbnRleHQpLG5vZGVzPVtdLGk9MDtsPmk7aSsrKWlmKGVsZW09ZWxlbXNbaV0sZWxlbXx8MD09PWVsZW0paWYoXCJvYmplY3RcIj09PWpRdWVyeS50eXBlKGVsZW0pKWpRdWVyeS5tZXJnZShub2RlcyxlbGVtLm5vZGVUeXBlP1tlbGVtXTplbGVtKTtlbHNlIGlmKHJodG1sLnRlc3QoZWxlbSkpe2Zvcih0bXA9dG1wfHxzYWZlLmFwcGVuZENoaWxkKGNvbnRleHQuY3JlYXRlRWxlbWVudChcImRpdlwiKSksdGFnPShydGFnTmFtZS5leGVjKGVsZW0pfHxbXCJcIixcIlwiXSlbMV0udG9Mb3dlckNhc2UoKSx3cmFwPXdyYXBNYXBbdGFnXXx8d3JhcE1hcC5fZGVmYXVsdCx0bXAuaW5uZXJIVE1MPXdyYXBbMV0rZWxlbS5yZXBsYWNlKHJ4aHRtbFRhZyxcIjwkMT48LyQyPlwiKSt3cmFwWzJdLGo9d3JhcFswXTtqLS07KXRtcD10bXAubGFzdENoaWxkO2lmKCFzdXBwb3J0LmxlYWRpbmdXaGl0ZXNwYWNlJiZybGVhZGluZ1doaXRlc3BhY2UudGVzdChlbGVtKSYmbm9kZXMucHVzaChjb250ZXh0LmNyZWF0ZVRleHROb2RlKHJsZWFkaW5nV2hpdGVzcGFjZS5leGVjKGVsZW0pWzBdKSksIXN1cHBvcnQudGJvZHkpZm9yKGVsZW09XCJ0YWJsZVwiIT09dGFnfHxydGJvZHkudGVzdChlbGVtKT9cIjx0YWJsZT5cIiE9PXdyYXBbMV18fHJ0Ym9keS50ZXN0KGVsZW0pPzA6dG1wOnRtcC5maXJzdENoaWxkLGo9ZWxlbSYmZWxlbS5jaGlsZE5vZGVzLmxlbmd0aDtqLS07KWpRdWVyeS5ub2RlTmFtZSh0Ym9keT1lbGVtLmNoaWxkTm9kZXNbal0sXCJ0Ym9keVwiKSYmIXRib2R5LmNoaWxkTm9kZXMubGVuZ3RoJiZlbGVtLnJlbW92ZUNoaWxkKHRib2R5KTtmb3IoalF1ZXJ5Lm1lcmdlKG5vZGVzLHRtcC5jaGlsZE5vZGVzKSx0bXAudGV4dENvbnRlbnQ9XCJcIjt0bXAuZmlyc3RDaGlsZDspdG1wLnJlbW92ZUNoaWxkKHRtcC5maXJzdENoaWxkKTt0bXA9c2FmZS5sYXN0Q2hpbGR9ZWxzZSBub2Rlcy5wdXNoKGNvbnRleHQuY3JlYXRlVGV4dE5vZGUoZWxlbSkpO2Zvcih0bXAmJnNhZmUucmVtb3ZlQ2hpbGQodG1wKSxzdXBwb3J0LmFwcGVuZENoZWNrZWR8fGpRdWVyeS5ncmVwKGdldEFsbChub2RlcyxcImlucHV0XCIpLGZpeERlZmF1bHRDaGVja2VkKSxpPTA7ZWxlbT1ub2Rlc1tpKytdOylpZigoIXNlbGVjdGlvbnx8LTE9PT1qUXVlcnkuaW5BcnJheShlbGVtLHNlbGVjdGlvbikpJiYoY29udGFpbnM9alF1ZXJ5LmNvbnRhaW5zKGVsZW0ub3duZXJEb2N1bWVudCxlbGVtKSx0bXA9Z2V0QWxsKHNhZmUuYXBwZW5kQ2hpbGQoZWxlbSksXCJzY3JpcHRcIiksY29udGFpbnMmJnNldEdsb2JhbEV2YWwodG1wKSxzY3JpcHRzKSlmb3Ioaj0wO2VsZW09dG1wW2orK107KXJzY3JpcHRUeXBlLnRlc3QoZWxlbS50eXBlfHxcIlwiKSYmc2NyaXB0cy5wdXNoKGVsZW0pO3JldHVybiB0bXA9bnVsbCxzYWZlfSxjbGVhbkRhdGE6ZnVuY3Rpb24oZWxlbXMsYWNjZXB0RGF0YSl7Zm9yKHZhciBlbGVtLHR5cGUsaWQsZGF0YSxpPTAsaW50ZXJuYWxLZXk9alF1ZXJ5LmV4cGFuZG8sY2FjaGU9alF1ZXJ5LmNhY2hlLGRlbGV0ZUV4cGFuZG89c3VwcG9ydC5kZWxldGVFeHBhbmRvLHNwZWNpYWw9alF1ZXJ5LmV2ZW50LnNwZWNpYWw7bnVsbCE9KGVsZW09ZWxlbXNbaV0pO2krKylpZigoYWNjZXB0RGF0YXx8alF1ZXJ5LmFjY2VwdERhdGEoZWxlbSkpJiYoaWQ9ZWxlbVtpbnRlcm5hbEtleV0sZGF0YT1pZCYmY2FjaGVbaWRdKSl7aWYoZGF0YS5ldmVudHMpZm9yKHR5cGUgaW4gZGF0YS5ldmVudHMpc3BlY2lhbFt0eXBlXT9qUXVlcnkuZXZlbnQucmVtb3ZlKGVsZW0sdHlwZSk6alF1ZXJ5LnJlbW92ZUV2ZW50KGVsZW0sdHlwZSxkYXRhLmhhbmRsZSk7Y2FjaGVbaWRdJiYoZGVsZXRlIGNhY2hlW2lkXSxkZWxldGVFeHBhbmRvP2RlbGV0ZSBlbGVtW2ludGVybmFsS2V5XTp0eXBlb2YgZWxlbS5yZW1vdmVBdHRyaWJ1dGUhPT1zdHJ1bmRlZmluZWQ/ZWxlbS5yZW1vdmVBdHRyaWJ1dGUoaW50ZXJuYWxLZXkpOmVsZW1baW50ZXJuYWxLZXldPW51bGwsZGVsZXRlZElkcy5wdXNoKGlkKSl9fX0pLGpRdWVyeS5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24odmFsdWUpe3JldHVybiBhY2Nlc3ModGhpcyxmdW5jdGlvbih2YWx1ZSl7cmV0dXJuIHZvaWQgMD09PXZhbHVlP2pRdWVyeS50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0mJnRoaXNbMF0ub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQpLmNyZWF0ZVRleHROb2RlKHZhbHVlKSl9LG51bGwsdmFsdWUsYXJndW1lbnRzLmxlbmd0aCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmdW5jdGlvbihlbGVtKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIHRhcmdldD1tYW5pcHVsYXRpb25UYXJnZXQodGhpcyxlbGVtKTt0YXJnZXQuYXBwZW5kQ2hpbGQoZWxlbSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oZWxlbSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciB0YXJnZXQ9bWFuaXB1bGF0aW9uVGFyZ2V0KHRoaXMsZWxlbSk7dGFyZ2V0Lmluc2VydEJlZm9yZShlbGVtLHRhcmdldC5maXJzdENoaWxkKX19KX0sYmVmb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGVsZW0pe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtLHRoaXMpfSl9LGFmdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGVsZW0pe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtLHRoaXMubmV4dFNpYmxpbmcpfSl9LHJlbW92ZTpmdW5jdGlvbihzZWxlY3RvcixrZWVwRGF0YSl7Zm9yKHZhciBlbGVtLGVsZW1zPXNlbGVjdG9yP2pRdWVyeS5maWx0ZXIoc2VsZWN0b3IsdGhpcyk6dGhpcyxpPTA7bnVsbCE9KGVsZW09ZWxlbXNbaV0pO2krKylrZWVwRGF0YXx8MSE9PWVsZW0ubm9kZVR5cGV8fGpRdWVyeS5jbGVhbkRhdGEoZ2V0QWxsKGVsZW0pKSxlbGVtLnBhcmVudE5vZGUmJihrZWVwRGF0YSYmalF1ZXJ5LmNvbnRhaW5zKGVsZW0ub3duZXJEb2N1bWVudCxlbGVtKSYmc2V0R2xvYmFsRXZhbChnZXRBbGwoZWxlbSxcInNjcmlwdFwiKSksZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW0pKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGVsZW0saT0wO251bGwhPShlbGVtPXRoaXNbaV0pO2krKyl7Zm9yKDE9PT1lbGVtLm5vZGVUeXBlJiZqUXVlcnkuY2xlYW5EYXRhKGdldEFsbChlbGVtLCExKSk7ZWxlbS5maXJzdENoaWxkOyllbGVtLnJlbW92ZUNoaWxkKGVsZW0uZmlyc3RDaGlsZCk7ZWxlbS5vcHRpb25zJiZqUXVlcnkubm9kZU5hbWUoZWxlbSxcInNlbGVjdFwiKSYmKGVsZW0ub3B0aW9ucy5sZW5ndGg9MCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGRhdGFBbmRFdmVudHMsZGVlcERhdGFBbmRFdmVudHMpe3JldHVybiBkYXRhQW5kRXZlbnRzPW51bGw9PWRhdGFBbmRFdmVudHM/ITE6ZGF0YUFuZEV2ZW50cyxkZWVwRGF0YUFuZEV2ZW50cz1udWxsPT1kZWVwRGF0YUFuZEV2ZW50cz9kYXRhQW5kRXZlbnRzOmRlZXBEYXRhQW5kRXZlbnRzLHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGpRdWVyeS5jbG9uZSh0aGlzLGRhdGFBbmRFdmVudHMsZGVlcERhdGFBbmRFdmVudHMpfSl9LGh0bWw6ZnVuY3Rpb24odmFsdWUpe3JldHVybiBhY2Nlc3ModGhpcyxmdW5jdGlvbih2YWx1ZSl7dmFyIGVsZW09dGhpc1swXXx8e30saT0wLGw9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09dmFsdWUpcmV0dXJuIDE9PT1lbGVtLm5vZGVUeXBlP2VsZW0uaW5uZXJIVE1MLnJlcGxhY2UocmlubGluZWpRdWVyeSxcIlwiKTp2b2lkIDA7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHZhbHVlJiYhcm5vSW5uZXJodG1sLnRlc3QodmFsdWUpJiYoc3VwcG9ydC5odG1sU2VyaWFsaXplfHwhcm5vc2hpbWNhY2hlLnRlc3QodmFsdWUpKSYmKHN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2V8fCFybGVhZGluZ1doaXRlc3BhY2UudGVzdCh2YWx1ZSkpJiYhd3JhcE1hcFsocnRhZ05hbWUuZXhlYyh2YWx1ZSl8fFtcIlwiLFwiXCJdKVsxXS50b0xvd2VyQ2FzZSgpXSl7dmFsdWU9dmFsdWUucmVwbGFjZShyeGh0bWxUYWcsXCI8JDE+PC8kMj5cIik7dHJ5e2Zvcig7bD5pO2krKyllbGVtPXRoaXNbaV18fHt9LDE9PT1lbGVtLm5vZGVUeXBlJiYoalF1ZXJ5LmNsZWFuRGF0YShnZXRBbGwoZWxlbSwhMSkpLGVsZW0uaW5uZXJIVE1MPXZhbHVlKTtlbGVtPTB9Y2F0Y2goZSl7fX1lbGVtJiZ0aGlzLmVtcHR5KCkuYXBwZW5kKHZhbHVlKX0sbnVsbCx2YWx1ZSxhcmd1bWVudHMubGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgYXJnPWFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oZWxlbSl7YXJnPXRoaXMucGFyZW50Tm9kZSxqUXVlcnkuY2xlYW5EYXRhKGdldEFsbCh0aGlzKSksYXJnJiZhcmcucmVwbGFjZUNoaWxkKGVsZW0sdGhpcyl9KSxhcmcmJihhcmcubGVuZ3RofHxhcmcubm9kZVR5cGUpP3RoaXM6dGhpcy5yZW1vdmUoKX0sZGV0YWNoOmZ1bmN0aW9uKHNlbGVjdG9yKXtyZXR1cm4gdGhpcy5yZW1vdmUoc2VsZWN0b3IsITApfSxkb21NYW5pcDpmdW5jdGlvbihhcmdzLGNhbGxiYWNrKXthcmdzPWNvbmNhdC5hcHBseShbXSxhcmdzKTt2YXIgZmlyc3Qsbm9kZSxoYXNTY3JpcHRzLHNjcmlwdHMsZG9jLGZyYWdtZW50LGk9MCxsPXRoaXMubGVuZ3RoLHNldD10aGlzLGlOb0Nsb25lPWwtMSx2YWx1ZT1hcmdzWzBdLGlzRnVuY3Rpb249alF1ZXJ5LmlzRnVuY3Rpb24odmFsdWUpO2lmKGlzRnVuY3Rpb258fGw+MSYmXCJzdHJpbmdcIj09dHlwZW9mIHZhbHVlJiYhc3VwcG9ydC5jaGVja0Nsb25lJiZyY2hlY2tlZC50ZXN0KHZhbHVlKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGluZGV4KXt2YXIgc2VsZj1zZXQuZXEoaW5kZXgpO2lzRnVuY3Rpb24mJihhcmdzWzBdPXZhbHVlLmNhbGwodGhpcyxpbmRleCxzZWxmLmh0bWwoKSkpLHNlbGYuZG9tTWFuaXAoYXJncyxjYWxsYmFjayl9KTtpZihsJiYoZnJhZ21lbnQ9alF1ZXJ5LmJ1aWxkRnJhZ21lbnQoYXJncyx0aGlzWzBdLm93bmVyRG9jdW1lbnQsITEsdGhpcyksZmlyc3Q9ZnJhZ21lbnQuZmlyc3RDaGlsZCwxPT09ZnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGgmJihmcmFnbWVudD1maXJzdCksZmlyc3QpKXtmb3Ioc2NyaXB0cz1qUXVlcnkubWFwKGdldEFsbChmcmFnbWVudCxcInNjcmlwdFwiKSxkaXNhYmxlU2NyaXB0KSxoYXNTY3JpcHRzPXNjcmlwdHMubGVuZ3RoO2w+aTtpKyspbm9kZT1mcmFnbWVudCxpIT09aU5vQ2xvbmUmJihub2RlPWpRdWVyeS5jbG9uZShub2RlLCEwLCEwKSxoYXNTY3JpcHRzJiZqUXVlcnkubWVyZ2Uoc2NyaXB0cyxnZXRBbGwobm9kZSxcInNjcmlwdFwiKSkpLGNhbGxiYWNrLmNhbGwodGhpc1tpXSxub2RlLGkpO2lmKGhhc1NjcmlwdHMpZm9yKGRvYz1zY3JpcHRzW3NjcmlwdHMubGVuZ3RoLTFdLm93bmVyRG9jdW1lbnQsalF1ZXJ5Lm1hcChzY3JpcHRzLHJlc3RvcmVTY3JpcHQpLGk9MDtoYXNTY3JpcHRzPmk7aSsrKW5vZGU9c2NyaXB0c1tpXSxyc2NyaXB0VHlwZS50ZXN0KG5vZGUudHlwZXx8XCJcIikmJiFqUXVlcnkuX2RhdGEobm9kZSxcImdsb2JhbEV2YWxcIikmJmpRdWVyeS5jb250YWlucyhkb2Msbm9kZSkmJihub2RlLnNyYz9qUXVlcnkuX2V2YWxVcmwmJmpRdWVyeS5fZXZhbFVybChub2RlLnNyYyk6alF1ZXJ5Lmdsb2JhbEV2YWwoKG5vZGUudGV4dHx8bm9kZS50ZXh0Q29udGVudHx8bm9kZS5pbm5lckhUTUx8fFwiXCIpLnJlcGxhY2UocmNsZWFuU2NyaXB0LFwiXCIpKSk7ZnJhZ21lbnQ9Zmlyc3Q9bnVsbH1yZXR1cm4gdGhpc319KSxqUXVlcnkuZWFjaCh7YXBwZW5kVG86XCJhcHBlbmRcIixwcmVwZW5kVG86XCJwcmVwZW5kXCIsaW5zZXJ0QmVmb3JlOlwiYmVmb3JlXCIsaW5zZXJ0QWZ0ZXI6XCJhZnRlclwiLHJlcGxhY2VBbGw6XCJyZXBsYWNlV2l0aFwifSxmdW5jdGlvbihuYW1lLG9yaWdpbmFsKXtqUXVlcnkuZm5bbmFtZV09ZnVuY3Rpb24oc2VsZWN0b3Ipe2Zvcih2YXIgZWxlbXMsaT0wLHJldD1bXSxpbnNlcnQ9alF1ZXJ5KHNlbGVjdG9yKSxsYXN0PWluc2VydC5sZW5ndGgtMTtsYXN0Pj1pO2krKyllbGVtcz1pPT09bGFzdD90aGlzOnRoaXMuY2xvbmUoITApLGpRdWVyeShpbnNlcnRbaV0pW29yaWdpbmFsXShlbGVtcykscHVzaC5hcHBseShyZXQsZWxlbXMuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhyZXQpfX0pO3ZhciBpZnJhbWUsZWxlbWRpc3BsYXk9e307IWZ1bmN0aW9uKCl7dmFyIHNocmlua1dyYXBCbG9ja3NWYWw7c3VwcG9ydC5zaHJpbmtXcmFwQmxvY2tzPWZ1bmN0aW9uKCl7aWYobnVsbCE9c2hyaW5rV3JhcEJsb2Nrc1ZhbClyZXR1cm4gc2hyaW5rV3JhcEJsb2Nrc1ZhbDtzaHJpbmtXcmFwQmxvY2tzVmFsPSExO3ZhciBkaXYsYm9keSxjb250YWluZXI7cmV0dXJuIGJvZHk9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJib2R5XCIpWzBdLGJvZHkmJmJvZHkuc3R5bGU/KGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGNvbnRhaW5lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0PVwicG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHhcIixib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcikuYXBwZW5kQ2hpbGQoZGl2KSx0eXBlb2YgZGl2LnN0eWxlLnpvb20hPT1zdHJ1bmRlZmluZWQmJihkaXYuc3R5bGUuY3NzVGV4dD1cIi13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjFcIixkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSkuc3R5bGUud2lkdGg9XCI1cHhcIixzaHJpbmtXcmFwQmxvY2tzVmFsPTMhPT1kaXYub2Zmc2V0V2lkdGgpLGJvZHkucmVtb3ZlQ2hpbGQoY29udGFpbmVyKSxzaHJpbmtXcmFwQmxvY2tzVmFsKTp2b2lkIDB9fSgpO3ZhciBnZXRTdHlsZXMsY3VyQ1NTLHJtYXJnaW49L15tYXJnaW4vLHJudW1ub25weD1uZXcgUmVnRXhwKFwiXihcIitwbnVtK1wiKSg/IXB4KVthLXolXSskXCIsXCJpXCIpLHJwb3NpdGlvbj0vXih0b3B8cmlnaHR8Ym90dG9tfGxlZnQpJC87d2luZG93LmdldENvbXB1dGVkU3R5bGU/KGdldFN0eWxlcz1mdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3Lm9wZW5lcj9lbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtLG51bGwpOndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW0sbnVsbCk7XG59LGN1ckNTUz1mdW5jdGlvbihlbGVtLG5hbWUsY29tcHV0ZWQpe3ZhciB3aWR0aCxtaW5XaWR0aCxtYXhXaWR0aCxyZXQsc3R5bGU9ZWxlbS5zdHlsZTtyZXR1cm4gY29tcHV0ZWQ9Y29tcHV0ZWR8fGdldFN0eWxlcyhlbGVtKSxyZXQ9Y29tcHV0ZWQ/Y29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZShuYW1lKXx8Y29tcHV0ZWRbbmFtZV06dm9pZCAwLGNvbXB1dGVkJiYoXCJcIiE9PXJldHx8alF1ZXJ5LmNvbnRhaW5zKGVsZW0ub3duZXJEb2N1bWVudCxlbGVtKXx8KHJldD1qUXVlcnkuc3R5bGUoZWxlbSxuYW1lKSkscm51bW5vbnB4LnRlc3QocmV0KSYmcm1hcmdpbi50ZXN0KG5hbWUpJiYod2lkdGg9c3R5bGUud2lkdGgsbWluV2lkdGg9c3R5bGUubWluV2lkdGgsbWF4V2lkdGg9c3R5bGUubWF4V2lkdGgsc3R5bGUubWluV2lkdGg9c3R5bGUubWF4V2lkdGg9c3R5bGUud2lkdGg9cmV0LHJldD1jb21wdXRlZC53aWR0aCxzdHlsZS53aWR0aD13aWR0aCxzdHlsZS5taW5XaWR0aD1taW5XaWR0aCxzdHlsZS5tYXhXaWR0aD1tYXhXaWR0aCkpLHZvaWQgMD09PXJldD9yZXQ6cmV0K1wiXCJ9KTpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY3VycmVudFN0eWxlJiYoZ2V0U3R5bGVzPWZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtLmN1cnJlbnRTdHlsZX0sY3VyQ1NTPWZ1bmN0aW9uKGVsZW0sbmFtZSxjb21wdXRlZCl7dmFyIGxlZnQscnMscnNMZWZ0LHJldCxzdHlsZT1lbGVtLnN0eWxlO3JldHVybiBjb21wdXRlZD1jb21wdXRlZHx8Z2V0U3R5bGVzKGVsZW0pLHJldD1jb21wdXRlZD9jb21wdXRlZFtuYW1lXTp2b2lkIDAsbnVsbD09cmV0JiZzdHlsZSYmc3R5bGVbbmFtZV0mJihyZXQ9c3R5bGVbbmFtZV0pLHJudW1ub25weC50ZXN0KHJldCkmJiFycG9zaXRpb24udGVzdChuYW1lKSYmKGxlZnQ9c3R5bGUubGVmdCxycz1lbGVtLnJ1bnRpbWVTdHlsZSxyc0xlZnQ9cnMmJnJzLmxlZnQscnNMZWZ0JiYocnMubGVmdD1lbGVtLmN1cnJlbnRTdHlsZS5sZWZ0KSxzdHlsZS5sZWZ0PVwiZm9udFNpemVcIj09PW5hbWU/XCIxZW1cIjpyZXQscmV0PXN0eWxlLnBpeGVsTGVmdCtcInB4XCIsc3R5bGUubGVmdD1sZWZ0LHJzTGVmdCYmKHJzLmxlZnQ9cnNMZWZ0KSksdm9pZCAwPT09cmV0P3JldDpyZXQrXCJcInx8XCJhdXRvXCJ9KSxmdW5jdGlvbigpe2Z1bmN0aW9uIGNvbXB1dGVTdHlsZVRlc3RzKCl7dmFyIGRpdixib2R5LGNvbnRhaW5lcixjb250ZW50cztib2R5PWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKVswXSxib2R5JiZib2R5LnN0eWxlJiYoZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksY29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksY29udGFpbmVyLnN0eWxlLmNzc1RleHQ9XCJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweFwiLGJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKS5hcHBlbmRDaGlsZChkaXYpLGRpdi5zdHlsZS5jc3NUZXh0PVwiLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDoxJTt0b3A6MSU7Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo0cHg7cG9zaXRpb246YWJzb2x1dGVcIixwaXhlbFBvc2l0aW9uVmFsPWJveFNpemluZ1JlbGlhYmxlVmFsPSExLHJlbGlhYmxlTWFyZ2luUmlnaHRWYWw9ITAsd2luZG93LmdldENvbXB1dGVkU3R5bGUmJihwaXhlbFBvc2l0aW9uVmFsPVwiMSVcIiE9PSh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkaXYsbnVsbCl8fHt9KS50b3AsYm94U2l6aW5nUmVsaWFibGVWYWw9XCI0cHhcIj09PSh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkaXYsbnVsbCl8fHt3aWR0aDpcIjRweFwifSkud2lkdGgsY29udGVudHM9ZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLGNvbnRlbnRzLnN0eWxlLmNzc1RleHQ9ZGl2LnN0eWxlLmNzc1RleHQ9XCItd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3g7ZGlzcGxheTpibG9jazttYXJnaW46MDtib3JkZXI6MDtwYWRkaW5nOjBcIixjb250ZW50cy5zdHlsZS5tYXJnaW5SaWdodD1jb250ZW50cy5zdHlsZS53aWR0aD1cIjBcIixkaXYuc3R5bGUud2lkdGg9XCIxcHhcIixyZWxpYWJsZU1hcmdpblJpZ2h0VmFsPSFwYXJzZUZsb2F0KCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShjb250ZW50cyxudWxsKXx8e30pLm1hcmdpblJpZ2h0KSxkaXYucmVtb3ZlQ2hpbGQoY29udGVudHMpKSxkaXYuaW5uZXJIVE1MPVwiPHRhYmxlPjx0cj48dGQ+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPlwiLGNvbnRlbnRzPWRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRkXCIpLGNvbnRlbnRzWzBdLnN0eWxlLmNzc1RleHQ9XCJtYXJnaW46MDtib3JkZXI6MDtwYWRkaW5nOjA7ZGlzcGxheTpub25lXCIscmVsaWFibGVIaWRkZW5PZmZzZXRzVmFsPTA9PT1jb250ZW50c1swXS5vZmZzZXRIZWlnaHQscmVsaWFibGVIaWRkZW5PZmZzZXRzVmFsJiYoY29udGVudHNbMF0uc3R5bGUuZGlzcGxheT1cIlwiLGNvbnRlbnRzWzFdLnN0eWxlLmRpc3BsYXk9XCJub25lXCIscmVsaWFibGVIaWRkZW5PZmZzZXRzVmFsPTA9PT1jb250ZW50c1swXS5vZmZzZXRIZWlnaHQpLGJvZHkucmVtb3ZlQ2hpbGQoY29udGFpbmVyKSl9dmFyIGRpdixzdHlsZSxhLHBpeGVsUG9zaXRpb25WYWwsYm94U2l6aW5nUmVsaWFibGVWYWwscmVsaWFibGVIaWRkZW5PZmZzZXRzVmFsLHJlbGlhYmxlTWFyZ2luUmlnaHRWYWw7ZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksZGl2LmlubmVySFRNTD1cIiAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPlwiLGE9ZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYVwiKVswXSxzdHlsZT1hJiZhLnN0eWxlLHN0eWxlJiYoc3R5bGUuY3NzVGV4dD1cImZsb2F0OmxlZnQ7b3BhY2l0eTouNVwiLHN1cHBvcnQub3BhY2l0eT1cIjAuNVwiPT09c3R5bGUub3BhY2l0eSxzdXBwb3J0LmNzc0Zsb2F0PSEhc3R5bGUuY3NzRmxvYXQsZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwPVwiY29udGVudC1ib3hcIixkaXYuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD1cIlwiLHN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlPVwiY29udGVudC1ib3hcIj09PWRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxzdXBwb3J0LmJveFNpemluZz1cIlwiPT09c3R5bGUuYm94U2l6aW5nfHxcIlwiPT09c3R5bGUuTW96Qm94U2l6aW5nfHxcIlwiPT09c3R5bGUuV2Via2l0Qm94U2l6aW5nLGpRdWVyeS5leHRlbmQoc3VwcG9ydCx7cmVsaWFibGVIaWRkZW5PZmZzZXRzOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXJlbGlhYmxlSGlkZGVuT2Zmc2V0c1ZhbCYmY29tcHV0ZVN0eWxlVGVzdHMoKSxyZWxpYWJsZUhpZGRlbk9mZnNldHNWYWx9LGJveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWJveFNpemluZ1JlbGlhYmxlVmFsJiZjb21wdXRlU3R5bGVUZXN0cygpLGJveFNpemluZ1JlbGlhYmxlVmFsfSxwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXBpeGVsUG9zaXRpb25WYWwmJmNvbXB1dGVTdHlsZVRlc3RzKCkscGl4ZWxQb3NpdGlvblZhbH0scmVsaWFibGVNYXJnaW5SaWdodDpmdW5jdGlvbigpe3JldHVybiBudWxsPT1yZWxpYWJsZU1hcmdpblJpZ2h0VmFsJiZjb21wdXRlU3R5bGVUZXN0cygpLHJlbGlhYmxlTWFyZ2luUmlnaHRWYWx9fSkpfSgpLGpRdWVyeS5zd2FwPWZ1bmN0aW9uKGVsZW0sb3B0aW9ucyxjYWxsYmFjayxhcmdzKXt2YXIgcmV0LG5hbWUsb2xkPXt9O2ZvcihuYW1lIGluIG9wdGlvbnMpb2xkW25hbWVdPWVsZW0uc3R5bGVbbmFtZV0sZWxlbS5zdHlsZVtuYW1lXT1vcHRpb25zW25hbWVdO3JldD1jYWxsYmFjay5hcHBseShlbGVtLGFyZ3N8fFtdKTtmb3IobmFtZSBpbiBvcHRpb25zKWVsZW0uc3R5bGVbbmFtZV09b2xkW25hbWVdO3JldHVybiByZXR9O3ZhciByYWxwaGE9L2FscGhhXFwoW14pXSpcXCkvaSxyb3BhY2l0eT0vb3BhY2l0eVxccyo9XFxzKihbXildKikvLHJkaXNwbGF5c3dhcD0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8scm51bXNwbGl0PW5ldyBSZWdFeHAoXCJeKFwiK3BudW0rXCIpKC4qKSRcIixcImlcIikscnJlbE51bT1uZXcgUmVnRXhwKFwiXihbKy1dKT0oXCIrcG51bStcIilcIixcImlcIiksY3NzU2hvdz17cG9zaXRpb246XCJhYnNvbHV0ZVwiLHZpc2liaWxpdHk6XCJoaWRkZW5cIixkaXNwbGF5OlwiYmxvY2tcIn0sY3NzTm9ybWFsVHJhbnNmb3JtPXtsZXR0ZXJTcGFjaW5nOlwiMFwiLGZvbnRXZWlnaHQ6XCI0MDBcIn0sY3NzUHJlZml4ZXM9W1wiV2Via2l0XCIsXCJPXCIsXCJNb3pcIixcIm1zXCJdO2pRdWVyeS5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oZWxlbSxjb21wdXRlZCl7aWYoY29tcHV0ZWQpe3ZhciByZXQ9Y3VyQ1NTKGVsZW0sXCJvcGFjaXR5XCIpO3JldHVyblwiXCI9PT1yZXQ/XCIxXCI6cmV0fX19fSxjc3NOdW1iZXI6e2NvbHVtbkNvdW50OiEwLGZpbGxPcGFjaXR5OiEwLGZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITB9LGNzc1Byb3BzOntcImZsb2F0XCI6c3VwcG9ydC5jc3NGbG9hdD9cImNzc0Zsb2F0XCI6XCJzdHlsZUZsb2F0XCJ9LHN0eWxlOmZ1bmN0aW9uKGVsZW0sbmFtZSx2YWx1ZSxleHRyYSl7aWYoZWxlbSYmMyE9PWVsZW0ubm9kZVR5cGUmJjghPT1lbGVtLm5vZGVUeXBlJiZlbGVtLnN0eWxlKXt2YXIgcmV0LHR5cGUsaG9va3Msb3JpZ05hbWU9alF1ZXJ5LmNhbWVsQ2FzZShuYW1lKSxzdHlsZT1lbGVtLnN0eWxlO2lmKG5hbWU9alF1ZXJ5LmNzc1Byb3BzW29yaWdOYW1lXXx8KGpRdWVyeS5jc3NQcm9wc1tvcmlnTmFtZV09dmVuZG9yUHJvcE5hbWUoc3R5bGUsb3JpZ05hbWUpKSxob29rcz1qUXVlcnkuY3NzSG9va3NbbmFtZV18fGpRdWVyeS5jc3NIb29rc1tvcmlnTmFtZV0sdm9pZCAwPT09dmFsdWUpcmV0dXJuIGhvb2tzJiZcImdldFwiaW4gaG9va3MmJnZvaWQgMCE9PShyZXQ9aG9va3MuZ2V0KGVsZW0sITEsZXh0cmEpKT9yZXQ6c3R5bGVbbmFtZV07aWYodHlwZT10eXBlb2YgdmFsdWUsXCJzdHJpbmdcIj09PXR5cGUmJihyZXQ9cnJlbE51bS5leGVjKHZhbHVlKSkmJih2YWx1ZT0ocmV0WzFdKzEpKnJldFsyXStwYXJzZUZsb2F0KGpRdWVyeS5jc3MoZWxlbSxuYW1lKSksdHlwZT1cIm51bWJlclwiKSxudWxsIT12YWx1ZSYmdmFsdWU9PT12YWx1ZSYmKFwibnVtYmVyXCIhPT10eXBlfHxqUXVlcnkuY3NzTnVtYmVyW29yaWdOYW1lXXx8KHZhbHVlKz1cInB4XCIpLHN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlfHxcIlwiIT09dmFsdWV8fDAhPT1uYW1lLmluZGV4T2YoXCJiYWNrZ3JvdW5kXCIpfHwoc3R5bGVbbmFtZV09XCJpbmhlcml0XCIpLCEoaG9va3MmJlwic2V0XCJpbiBob29rcyYmdm9pZCAwPT09KHZhbHVlPWhvb2tzLnNldChlbGVtLHZhbHVlLGV4dHJhKSkpKSl0cnl7c3R5bGVbbmFtZV09dmFsdWV9Y2F0Y2goZSl7fX19LGNzczpmdW5jdGlvbihlbGVtLG5hbWUsZXh0cmEsc3R5bGVzKXt2YXIgbnVtLHZhbCxob29rcyxvcmlnTmFtZT1qUXVlcnkuY2FtZWxDYXNlKG5hbWUpO3JldHVybiBuYW1lPWpRdWVyeS5jc3NQcm9wc1tvcmlnTmFtZV18fChqUXVlcnkuY3NzUHJvcHNbb3JpZ05hbWVdPXZlbmRvclByb3BOYW1lKGVsZW0uc3R5bGUsb3JpZ05hbWUpKSxob29rcz1qUXVlcnkuY3NzSG9va3NbbmFtZV18fGpRdWVyeS5jc3NIb29rc1tvcmlnTmFtZV0saG9va3MmJlwiZ2V0XCJpbiBob29rcyYmKHZhbD1ob29rcy5nZXQoZWxlbSwhMCxleHRyYSkpLHZvaWQgMD09PXZhbCYmKHZhbD1jdXJDU1MoZWxlbSxuYW1lLHN0eWxlcykpLFwibm9ybWFsXCI9PT12YWwmJm5hbWUgaW4gY3NzTm9ybWFsVHJhbnNmb3JtJiYodmFsPWNzc05vcm1hbFRyYW5zZm9ybVtuYW1lXSksXCJcIj09PWV4dHJhfHxleHRyYT8obnVtPXBhcnNlRmxvYXQodmFsKSxleHRyYT09PSEwfHxqUXVlcnkuaXNOdW1lcmljKG51bSk/bnVtfHwwOnZhbCk6dmFsfX0pLGpRdWVyeS5lYWNoKFtcImhlaWdodFwiLFwid2lkdGhcIl0sZnVuY3Rpb24oaSxuYW1lKXtqUXVlcnkuY3NzSG9va3NbbmFtZV09e2dldDpmdW5jdGlvbihlbGVtLGNvbXB1dGVkLGV4dHJhKXtyZXR1cm4gY29tcHV0ZWQ/cmRpc3BsYXlzd2FwLnRlc3QoalF1ZXJ5LmNzcyhlbGVtLFwiZGlzcGxheVwiKSkmJjA9PT1lbGVtLm9mZnNldFdpZHRoP2pRdWVyeS5zd2FwKGVsZW0sY3NzU2hvdyxmdW5jdGlvbigpe3JldHVybiBnZXRXaWR0aE9ySGVpZ2h0KGVsZW0sbmFtZSxleHRyYSl9KTpnZXRXaWR0aE9ySGVpZ2h0KGVsZW0sbmFtZSxleHRyYSk6dm9pZCAwfSxzZXQ6ZnVuY3Rpb24oZWxlbSx2YWx1ZSxleHRyYSl7dmFyIHN0eWxlcz1leHRyYSYmZ2V0U3R5bGVzKGVsZW0pO3JldHVybiBzZXRQb3NpdGl2ZU51bWJlcihlbGVtLHZhbHVlLGV4dHJhP2F1Z21lbnRXaWR0aE9ySGVpZ2h0KGVsZW0sbmFtZSxleHRyYSxzdXBwb3J0LmJveFNpemluZyYmXCJib3JkZXItYm94XCI9PT1qUXVlcnkuY3NzKGVsZW0sXCJib3hTaXppbmdcIiwhMSxzdHlsZXMpLHN0eWxlcyk6MCl9fX0pLHN1cHBvcnQub3BhY2l0eXx8KGpRdWVyeS5jc3NIb29rcy5vcGFjaXR5PXtnZXQ6ZnVuY3Rpb24oZWxlbSxjb21wdXRlZCl7cmV0dXJuIHJvcGFjaXR5LnRlc3QoKGNvbXB1dGVkJiZlbGVtLmN1cnJlbnRTdHlsZT9lbGVtLmN1cnJlbnRTdHlsZS5maWx0ZXI6ZWxlbS5zdHlsZS5maWx0ZXIpfHxcIlwiKT8uMDEqcGFyc2VGbG9hdChSZWdFeHAuJDEpK1wiXCI6Y29tcHV0ZWQ/XCIxXCI6XCJcIn0sc2V0OmZ1bmN0aW9uKGVsZW0sdmFsdWUpe3ZhciBzdHlsZT1lbGVtLnN0eWxlLGN1cnJlbnRTdHlsZT1lbGVtLmN1cnJlbnRTdHlsZSxvcGFjaXR5PWpRdWVyeS5pc051bWVyaWModmFsdWUpP1wiYWxwaGEob3BhY2l0eT1cIisxMDAqdmFsdWUrXCIpXCI6XCJcIixmaWx0ZXI9Y3VycmVudFN0eWxlJiZjdXJyZW50U3R5bGUuZmlsdGVyfHxzdHlsZS5maWx0ZXJ8fFwiXCI7c3R5bGUuem9vbT0xLCh2YWx1ZT49MXx8XCJcIj09PXZhbHVlKSYmXCJcIj09PWpRdWVyeS50cmltKGZpbHRlci5yZXBsYWNlKHJhbHBoYSxcIlwiKSkmJnN0eWxlLnJlbW92ZUF0dHJpYnV0ZSYmKHN0eWxlLnJlbW92ZUF0dHJpYnV0ZShcImZpbHRlclwiKSxcIlwiPT09dmFsdWV8fGN1cnJlbnRTdHlsZSYmIWN1cnJlbnRTdHlsZS5maWx0ZXIpfHwoc3R5bGUuZmlsdGVyPXJhbHBoYS50ZXN0KGZpbHRlcik/ZmlsdGVyLnJlcGxhY2UocmFscGhhLG9wYWNpdHkpOmZpbHRlcitcIiBcIitvcGFjaXR5KX19KSxqUXVlcnkuY3NzSG9va3MubWFyZ2luUmlnaHQ9YWRkR2V0SG9va0lmKHN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdodCxmdW5jdGlvbihlbGVtLGNvbXB1dGVkKXtyZXR1cm4gY29tcHV0ZWQ/alF1ZXJ5LnN3YXAoZWxlbSx7ZGlzcGxheTpcImlubGluZS1ibG9ja1wifSxjdXJDU1MsW2VsZW0sXCJtYXJnaW5SaWdodFwiXSk6dm9pZCAwfSksalF1ZXJ5LmVhY2goe21hcmdpbjpcIlwiLHBhZGRpbmc6XCJcIixib3JkZXI6XCJXaWR0aFwifSxmdW5jdGlvbihwcmVmaXgsc3VmZml4KXtqUXVlcnkuY3NzSG9va3NbcHJlZml4K3N1ZmZpeF09e2V4cGFuZDpmdW5jdGlvbih2YWx1ZSl7Zm9yKHZhciBpPTAsZXhwYW5kZWQ9e30scGFydHM9XCJzdHJpbmdcIj09dHlwZW9mIHZhbHVlP3ZhbHVlLnNwbGl0KFwiIFwiKTpbdmFsdWVdOzQ+aTtpKyspZXhwYW5kZWRbcHJlZml4K2Nzc0V4cGFuZFtpXStzdWZmaXhdPXBhcnRzW2ldfHxwYXJ0c1tpLTJdfHxwYXJ0c1swXTtyZXR1cm4gZXhwYW5kZWR9fSxybWFyZ2luLnRlc3QocHJlZml4KXx8KGpRdWVyeS5jc3NIb29rc1twcmVmaXgrc3VmZml4XS5zZXQ9c2V0UG9zaXRpdmVOdW1iZXIpfSksalF1ZXJ5LmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKG5hbWUsdmFsdWUpe3JldHVybiBhY2Nlc3ModGhpcyxmdW5jdGlvbihlbGVtLG5hbWUsdmFsdWUpe3ZhciBzdHlsZXMsbGVuLG1hcD17fSxpPTA7aWYoalF1ZXJ5LmlzQXJyYXkobmFtZSkpe2ZvcihzdHlsZXM9Z2V0U3R5bGVzKGVsZW0pLGxlbj1uYW1lLmxlbmd0aDtsZW4+aTtpKyspbWFwW25hbWVbaV1dPWpRdWVyeS5jc3MoZWxlbSxuYW1lW2ldLCExLHN0eWxlcyk7cmV0dXJuIG1hcH1yZXR1cm4gdm9pZCAwIT09dmFsdWU/alF1ZXJ5LnN0eWxlKGVsZW0sbmFtZSx2YWx1ZSk6alF1ZXJ5LmNzcyhlbGVtLG5hbWUpfSxuYW1lLHZhbHVlLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gc2hvd0hpZGUodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gc2hvd0hpZGUodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihzdGF0ZSl7cmV0dXJuXCJib29sZWFuXCI9PXR5cGVvZiBzdGF0ZT9zdGF0ZT90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtpc0hpZGRlbih0aGlzKT9qUXVlcnkodGhpcykuc2hvdygpOmpRdWVyeSh0aGlzKS5oaWRlKCl9KX19KSxqUXVlcnkuVHdlZW49VHdlZW4sVHdlZW4ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpUd2Vlbixpbml0OmZ1bmN0aW9uKGVsZW0sb3B0aW9ucyxwcm9wLGVuZCxlYXNpbmcsdW5pdCl7dGhpcy5lbGVtPWVsZW0sdGhpcy5wcm9wPXByb3AsdGhpcy5lYXNpbmc9ZWFzaW5nfHxcInN3aW5nXCIsdGhpcy5vcHRpb25zPW9wdGlvbnMsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPWVuZCx0aGlzLnVuaXQ9dW5pdHx8KGpRdWVyeS5jc3NOdW1iZXJbcHJvcF0/XCJcIjpcInB4XCIpfSxjdXI6ZnVuY3Rpb24oKXt2YXIgaG9va3M9VHdlZW4ucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGhvb2tzJiZob29rcy5nZXQ/aG9va3MuZ2V0KHRoaXMpOlR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihwZXJjZW50KXt2YXIgZWFzZWQsaG9va3M9VHdlZW4ucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHRoaXMub3B0aW9ucy5kdXJhdGlvbj90aGlzLnBvcz1lYXNlZD1qUXVlcnkuZWFzaW5nW3RoaXMuZWFzaW5nXShwZXJjZW50LHRoaXMub3B0aW9ucy5kdXJhdGlvbipwZXJjZW50LDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOnRoaXMucG9zPWVhc2VkPXBlcmNlbnQsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKmVhc2VkK3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLGhvb2tzJiZob29rcy5zZXQ/aG9va3Muc2V0KHRoaXMpOlR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyksdGhpc319LFR3ZWVuLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZT1Ud2Vlbi5wcm90b3R5cGUsVHdlZW4ucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKHR3ZWVuKXt2YXIgcmVzdWx0O3JldHVybiBudWxsPT10d2Vlbi5lbGVtW3R3ZWVuLnByb3BdfHx0d2Vlbi5lbGVtLnN0eWxlJiZudWxsIT10d2Vlbi5lbGVtLnN0eWxlW3R3ZWVuLnByb3BdPyhyZXN1bHQ9alF1ZXJ5LmNzcyh0d2Vlbi5lbGVtLHR3ZWVuLnByb3AsXCJcIikscmVzdWx0JiZcImF1dG9cIiE9PXJlc3VsdD9yZXN1bHQ6MCk6dHdlZW4uZWxlbVt0d2Vlbi5wcm9wXX0sc2V0OmZ1bmN0aW9uKHR3ZWVuKXtqUXVlcnkuZnguc3RlcFt0d2Vlbi5wcm9wXT9qUXVlcnkuZnguc3RlcFt0d2Vlbi5wcm9wXSh0d2Vlbik6dHdlZW4uZWxlbS5zdHlsZSYmKG51bGwhPXR3ZWVuLmVsZW0uc3R5bGVbalF1ZXJ5LmNzc1Byb3BzW3R3ZWVuLnByb3BdXXx8alF1ZXJ5LmNzc0hvb2tzW3R3ZWVuLnByb3BdKT9qUXVlcnkuc3R5bGUodHdlZW4uZWxlbSx0d2Vlbi5wcm9wLHR3ZWVuLm5vdyt0d2Vlbi51bml0KTp0d2Vlbi5lbGVtW3R3ZWVuLnByb3BdPXR3ZWVuLm5vd319fSxUd2Vlbi5wcm9wSG9va3Muc2Nyb2xsVG9wPVR3ZWVuLnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24odHdlZW4pe3R3ZWVuLmVsZW0ubm9kZVR5cGUmJnR3ZWVuLmVsZW0ucGFyZW50Tm9kZSYmKHR3ZWVuLmVsZW1bdHdlZW4ucHJvcF09dHdlZW4ubm93KX19LGpRdWVyeS5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihwKXtyZXR1cm4gcH0sc3dpbmc6ZnVuY3Rpb24ocCl7cmV0dXJuLjUtTWF0aC5jb3MocCpNYXRoLlBJKS8yfX0salF1ZXJ5LmZ4PVR3ZWVuLnByb3RvdHlwZS5pbml0LGpRdWVyeS5meC5zdGVwPXt9O3ZhciBmeE5vdyx0aW1lcklkLHJmeHR5cGVzPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxyZnhudW09bmV3IFJlZ0V4cChcIl4oPzooWystXSk9fCkoXCIrcG51bStcIikoW2EteiVdKikkXCIsXCJpXCIpLHJydW49L3F1ZXVlSG9va3MkLyxhbmltYXRpb25QcmVmaWx0ZXJzPVtkZWZhdWx0UHJlZmlsdGVyXSx0d2VlbmVycz17XCIqXCI6W2Z1bmN0aW9uKHByb3AsdmFsdWUpe3ZhciB0d2Vlbj10aGlzLmNyZWF0ZVR3ZWVuKHByb3AsdmFsdWUpLHRhcmdldD10d2Vlbi5jdXIoKSxwYXJ0cz1yZnhudW0uZXhlYyh2YWx1ZSksdW5pdD1wYXJ0cyYmcGFydHNbM118fChqUXVlcnkuY3NzTnVtYmVyW3Byb3BdP1wiXCI6XCJweFwiKSxzdGFydD0oalF1ZXJ5LmNzc051bWJlcltwcm9wXXx8XCJweFwiIT09dW5pdCYmK3RhcmdldCkmJnJmeG51bS5leGVjKGpRdWVyeS5jc3ModHdlZW4uZWxlbSxwcm9wKSksc2NhbGU9MSxtYXhJdGVyYXRpb25zPTIwO2lmKHN0YXJ0JiZzdGFydFszXSE9PXVuaXQpe3VuaXQ9dW5pdHx8c3RhcnRbM10scGFydHM9cGFydHN8fFtdLHN0YXJ0PSt0YXJnZXR8fDE7ZG8gc2NhbGU9c2NhbGV8fFwiLjVcIixzdGFydC89c2NhbGUsalF1ZXJ5LnN0eWxlKHR3ZWVuLmVsZW0scHJvcCxzdGFydCt1bml0KTt3aGlsZShzY2FsZSE9PShzY2FsZT10d2Vlbi5jdXIoKS90YXJnZXQpJiYxIT09c2NhbGUmJi0tbWF4SXRlcmF0aW9ucyl9cmV0dXJuIHBhcnRzJiYoc3RhcnQ9dHdlZW4uc3RhcnQ9K3N0YXJ0fHwrdGFyZ2V0fHwwLHR3ZWVuLnVuaXQ9dW5pdCx0d2Vlbi5lbmQ9cGFydHNbMV0/c3RhcnQrKHBhcnRzWzFdKzEpKnBhcnRzWzJdOitwYXJ0c1syXSksdHdlZW59XX07alF1ZXJ5LkFuaW1hdGlvbj1qUXVlcnkuZXh0ZW5kKEFuaW1hdGlvbix7dHdlZW5lcjpmdW5jdGlvbihwcm9wcyxjYWxsYmFjayl7alF1ZXJ5LmlzRnVuY3Rpb24ocHJvcHMpPyhjYWxsYmFjaz1wcm9wcyxwcm9wcz1bXCIqXCJdKTpwcm9wcz1wcm9wcy5zcGxpdChcIiBcIik7Zm9yKHZhciBwcm9wLGluZGV4PTAsbGVuZ3RoPXByb3BzLmxlbmd0aDtsZW5ndGg+aW5kZXg7aW5kZXgrKylwcm9wPXByb3BzW2luZGV4XSx0d2VlbmVyc1twcm9wXT10d2VlbmVyc1twcm9wXXx8W10sdHdlZW5lcnNbcHJvcF0udW5zaGlmdChjYWxsYmFjayl9LHByZWZpbHRlcjpmdW5jdGlvbihjYWxsYmFjayxwcmVwZW5kKXtwcmVwZW5kP2FuaW1hdGlvblByZWZpbHRlcnMudW5zaGlmdChjYWxsYmFjayk6YW5pbWF0aW9uUHJlZmlsdGVycy5wdXNoKGNhbGxiYWNrKX19KSxqUXVlcnkuc3BlZWQ9ZnVuY3Rpb24oc3BlZWQsZWFzaW5nLGZuKXt2YXIgb3B0PXNwZWVkJiZcIm9iamVjdFwiPT10eXBlb2Ygc3BlZWQ/alF1ZXJ5LmV4dGVuZCh7fSxzcGVlZCk6e2NvbXBsZXRlOmZufHwhZm4mJmVhc2luZ3x8alF1ZXJ5LmlzRnVuY3Rpb24oc3BlZWQpJiZzcGVlZCxkdXJhdGlvbjpzcGVlZCxlYXNpbmc6Zm4mJmVhc2luZ3x8ZWFzaW5nJiYhalF1ZXJ5LmlzRnVuY3Rpb24oZWFzaW5nKSYmZWFzaW5nfTtyZXR1cm4gb3B0LmR1cmF0aW9uPWpRdWVyeS5meC5vZmY/MDpcIm51bWJlclwiPT10eXBlb2Ygb3B0LmR1cmF0aW9uP29wdC5kdXJhdGlvbjpvcHQuZHVyYXRpb24gaW4galF1ZXJ5LmZ4LnNwZWVkcz9qUXVlcnkuZnguc3BlZWRzW29wdC5kdXJhdGlvbl06alF1ZXJ5LmZ4LnNwZWVkcy5fZGVmYXVsdCwobnVsbD09b3B0LnF1ZXVlfHxvcHQucXVldWU9PT0hMCkmJihvcHQucXVldWU9XCJmeFwiKSxvcHQub2xkPW9wdC5jb21wbGV0ZSxvcHQuY29tcGxldGU9ZnVuY3Rpb24oKXtqUXVlcnkuaXNGdW5jdGlvbihvcHQub2xkKSYmb3B0Lm9sZC5jYWxsKHRoaXMpLG9wdC5xdWV1ZSYmalF1ZXJ5LmRlcXVldWUodGhpcyxvcHQucXVldWUpfSxvcHR9LGpRdWVyeS5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihzcGVlZCx0byxlYXNpbmcsY2FsbGJhY2spe3JldHVybiB0aGlzLmZpbHRlcihpc0hpZGRlbikuY3NzKFwib3BhY2l0eVwiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OnRvfSxzcGVlZCxlYXNpbmcsY2FsbGJhY2spfSxhbmltYXRlOmZ1bmN0aW9uKHByb3Asc3BlZWQsZWFzaW5nLGNhbGxiYWNrKXt2YXIgZW1wdHk9alF1ZXJ5LmlzRW1wdHlPYmplY3QocHJvcCksb3B0YWxsPWpRdWVyeS5zcGVlZChzcGVlZCxlYXNpbmcsY2FsbGJhY2spLGRvQW5pbWF0aW9uPWZ1bmN0aW9uKCl7dmFyIGFuaW09QW5pbWF0aW9uKHRoaXMsalF1ZXJ5LmV4dGVuZCh7fSxwcm9wKSxvcHRhbGwpOyhlbXB0eXx8alF1ZXJ5Ll9kYXRhKHRoaXMsXCJmaW5pc2hcIikpJiZhbmltLnN0b3AoITApfTtyZXR1cm4gZG9BbmltYXRpb24uZmluaXNoPWRvQW5pbWF0aW9uLGVtcHR5fHxvcHRhbGwucXVldWU9PT0hMT90aGlzLmVhY2goZG9BbmltYXRpb24pOnRoaXMucXVldWUob3B0YWxsLnF1ZXVlLGRvQW5pbWF0aW9uKX0sc3RvcDpmdW5jdGlvbih0eXBlLGNsZWFyUXVldWUsZ290b0VuZCl7dmFyIHN0b3BRdWV1ZT1mdW5jdGlvbihob29rcyl7dmFyIHN0b3A9aG9va3Muc3RvcDtkZWxldGUgaG9va3Muc3RvcCxzdG9wKGdvdG9FbmQpfTtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgdHlwZSYmKGdvdG9FbmQ9Y2xlYXJRdWV1ZSxjbGVhclF1ZXVlPXR5cGUsdHlwZT12b2lkIDApLGNsZWFyUXVldWUmJnR5cGUhPT0hMSYmdGhpcy5xdWV1ZSh0eXBlfHxcImZ4XCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkZXF1ZXVlPSEwLGluZGV4PW51bGwhPXR5cGUmJnR5cGUrXCJxdWV1ZUhvb2tzXCIsdGltZXJzPWpRdWVyeS50aW1lcnMsZGF0YT1qUXVlcnkuX2RhdGEodGhpcyk7aWYoaW5kZXgpZGF0YVtpbmRleF0mJmRhdGFbaW5kZXhdLnN0b3AmJnN0b3BRdWV1ZShkYXRhW2luZGV4XSk7ZWxzZSBmb3IoaW5kZXggaW4gZGF0YSlkYXRhW2luZGV4XSYmZGF0YVtpbmRleF0uc3RvcCYmcnJ1bi50ZXN0KGluZGV4KSYmc3RvcFF1ZXVlKGRhdGFbaW5kZXhdKTtmb3IoaW5kZXg9dGltZXJzLmxlbmd0aDtpbmRleC0tOyl0aW1lcnNbaW5kZXhdLmVsZW0hPT10aGlzfHxudWxsIT10eXBlJiZ0aW1lcnNbaW5kZXhdLnF1ZXVlIT09dHlwZXx8KHRpbWVyc1tpbmRleF0uYW5pbS5zdG9wKGdvdG9FbmQpLGRlcXVldWU9ITEsdGltZXJzLnNwbGljZShpbmRleCwxKSk7KGRlcXVldWV8fCFnb3RvRW5kKSYmalF1ZXJ5LmRlcXVldWUodGhpcyx0eXBlKX0pfSxmaW5pc2g6ZnVuY3Rpb24odHlwZSl7cmV0dXJuIHR5cGUhPT0hMSYmKHR5cGU9dHlwZXx8XCJmeFwiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgaW5kZXgsZGF0YT1qUXVlcnkuX2RhdGEodGhpcykscXVldWU9ZGF0YVt0eXBlK1wicXVldWVcIl0saG9va3M9ZGF0YVt0eXBlK1wicXVldWVIb29rc1wiXSx0aW1lcnM9alF1ZXJ5LnRpbWVycyxsZW5ndGg9cXVldWU/cXVldWUubGVuZ3RoOjA7Zm9yKGRhdGEuZmluaXNoPSEwLGpRdWVyeS5xdWV1ZSh0aGlzLHR5cGUsW10pLGhvb2tzJiZob29rcy5zdG9wJiZob29rcy5zdG9wLmNhbGwodGhpcywhMCksaW5kZXg9dGltZXJzLmxlbmd0aDtpbmRleC0tOyl0aW1lcnNbaW5kZXhdLmVsZW09PT10aGlzJiZ0aW1lcnNbaW5kZXhdLnF1ZXVlPT09dHlwZSYmKHRpbWVyc1tpbmRleF0uYW5pbS5zdG9wKCEwKSx0aW1lcnMuc3BsaWNlKGluZGV4LDEpKTtmb3IoaW5kZXg9MDtsZW5ndGg+aW5kZXg7aW5kZXgrKylxdWV1ZVtpbmRleF0mJnF1ZXVlW2luZGV4XS5maW5pc2gmJnF1ZXVlW2luZGV4XS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgZGF0YS5maW5pc2h9KX19KSxqUXVlcnkuZWFjaChbXCJ0b2dnbGVcIixcInNob3dcIixcImhpZGVcIl0sZnVuY3Rpb24oaSxuYW1lKXt2YXIgY3NzRm49alF1ZXJ5LmZuW25hbWVdO2pRdWVyeS5mbltuYW1lXT1mdW5jdGlvbihzcGVlZCxlYXNpbmcsY2FsbGJhY2spe3JldHVybiBudWxsPT1zcGVlZHx8XCJib29sZWFuXCI9PXR5cGVvZiBzcGVlZD9jc3NGbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKGdlbkZ4KG5hbWUsITApLHNwZWVkLGVhc2luZyxjYWxsYmFjayl9fSksalF1ZXJ5LmVhY2goe3NsaWRlRG93bjpnZW5GeChcInNob3dcIiksc2xpZGVVcDpnZW5GeChcImhpZGVcIiksc2xpZGVUb2dnbGU6Z2VuRngoXCJ0b2dnbGVcIiksZmFkZUluOntvcGFjaXR5Olwic2hvd1wifSxmYWRlT3V0OntvcGFjaXR5OlwiaGlkZVwifSxmYWRlVG9nZ2xlOntvcGFjaXR5OlwidG9nZ2xlXCJ9fSxmdW5jdGlvbihuYW1lLHByb3BzKXtqUXVlcnkuZm5bbmFtZV09ZnVuY3Rpb24oc3BlZWQsZWFzaW5nLGNhbGxiYWNrKXtyZXR1cm4gdGhpcy5hbmltYXRlKHByb3BzLHNwZWVkLGVhc2luZyxjYWxsYmFjayl9fSksalF1ZXJ5LnRpbWVycz1bXSxqUXVlcnkuZngudGljaz1mdW5jdGlvbigpe3ZhciB0aW1lcix0aW1lcnM9alF1ZXJ5LnRpbWVycyxpPTA7Zm9yKGZ4Tm93PWpRdWVyeS5ub3coKTtpPHRpbWVycy5sZW5ndGg7aSsrKXRpbWVyPXRpbWVyc1tpXSx0aW1lcigpfHx0aW1lcnNbaV0hPT10aW1lcnx8dGltZXJzLnNwbGljZShpLS0sMSk7dGltZXJzLmxlbmd0aHx8alF1ZXJ5LmZ4LnN0b3AoKSxmeE5vdz12b2lkIDB9LGpRdWVyeS5meC50aW1lcj1mdW5jdGlvbih0aW1lcil7alF1ZXJ5LnRpbWVycy5wdXNoKHRpbWVyKSx0aW1lcigpP2pRdWVyeS5meC5zdGFydCgpOmpRdWVyeS50aW1lcnMucG9wKCl9LGpRdWVyeS5meC5pbnRlcnZhbD0xMyxqUXVlcnkuZnguc3RhcnQ9ZnVuY3Rpb24oKXt0aW1lcklkfHwodGltZXJJZD1zZXRJbnRlcnZhbChqUXVlcnkuZngudGljayxqUXVlcnkuZnguaW50ZXJ2YWwpKX0salF1ZXJ5LmZ4LnN0b3A9ZnVuY3Rpb24oKXtjbGVhckludGVydmFsKHRpbWVySWQpLHRpbWVySWQ9bnVsbH0salF1ZXJ5LmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxqUXVlcnkuZm4uZGVsYXk9ZnVuY3Rpb24odGltZSx0eXBlKXtyZXR1cm4gdGltZT1qUXVlcnkuZng/alF1ZXJ5LmZ4LnNwZWVkc1t0aW1lXXx8dGltZTp0aW1lLHR5cGU9dHlwZXx8XCJmeFwiLHRoaXMucXVldWUodHlwZSxmdW5jdGlvbihuZXh0LGhvb2tzKXt2YXIgdGltZW91dD1zZXRUaW1lb3V0KG5leHQsdGltZSk7aG9va3Muc3RvcD1mdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aW1lb3V0KX19KX0sZnVuY3Rpb24oKXt2YXIgaW5wdXQsZGl2LHNlbGVjdCxhLG9wdDtkaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxkaXYuc2V0QXR0cmlidXRlKFwiY2xhc3NOYW1lXCIsXCJ0XCIpLGRpdi5pbm5lckhUTUw9XCIgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYSc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz5cIixhPWRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZShcImFcIilbMF0sc2VsZWN0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzZWxlY3RcIiksb3B0PXNlbGVjdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwib3B0aW9uXCIpKSxpbnB1dD1kaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpbnB1dFwiKVswXSxhLnN0eWxlLmNzc1RleHQ9XCJ0b3A6MXB4XCIsc3VwcG9ydC5nZXRTZXRBdHRyaWJ1dGU9XCJ0XCIhPT1kaXYuY2xhc3NOYW1lLHN1cHBvcnQuc3R5bGU9L3RvcC8udGVzdChhLmdldEF0dHJpYnV0ZShcInN0eWxlXCIpKSxzdXBwb3J0LmhyZWZOb3JtYWxpemVkPVwiL2FcIj09PWEuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSxzdXBwb3J0LmNoZWNrT249ISFpbnB1dC52YWx1ZSxzdXBwb3J0Lm9wdFNlbGVjdGVkPW9wdC5zZWxlY3RlZCxzdXBwb3J0LmVuY3R5cGU9ISFkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZm9ybVwiKS5lbmN0eXBlLHNlbGVjdC5kaXNhYmxlZD0hMCxzdXBwb3J0Lm9wdERpc2FibGVkPSFvcHQuZGlzYWJsZWQsaW5wdXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpLGlucHV0LnNldEF0dHJpYnV0ZShcInZhbHVlXCIsXCJcIiksc3VwcG9ydC5pbnB1dD1cIlwiPT09aW5wdXQuZ2V0QXR0cmlidXRlKFwidmFsdWVcIiksaW5wdXQudmFsdWU9XCJ0XCIsaW5wdXQuc2V0QXR0cmlidXRlKFwidHlwZVwiLFwicmFkaW9cIiksc3VwcG9ydC5yYWRpb1ZhbHVlPVwidFwiPT09aW5wdXQudmFsdWV9KCk7dmFyIHJyZXR1cm49L1xcci9nO2pRdWVyeS5mbi5leHRlbmQoe3ZhbDpmdW5jdGlvbih2YWx1ZSl7dmFyIGhvb2tzLHJldCxpc0Z1bmN0aW9uLGVsZW09dGhpc1swXTt7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gaXNGdW5jdGlvbj1qUXVlcnkuaXNGdW5jdGlvbih2YWx1ZSksdGhpcy5lYWNoKGZ1bmN0aW9uKGkpe3ZhciB2YWw7MT09PXRoaXMubm9kZVR5cGUmJih2YWw9aXNGdW5jdGlvbj92YWx1ZS5jYWxsKHRoaXMsaSxqUXVlcnkodGhpcykudmFsKCkpOnZhbHVlLG51bGw9PXZhbD92YWw9XCJcIjpcIm51bWJlclwiPT10eXBlb2YgdmFsP3ZhbCs9XCJcIjpqUXVlcnkuaXNBcnJheSh2YWwpJiYodmFsPWpRdWVyeS5tYXAodmFsLGZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gbnVsbD09dmFsdWU/XCJcIjp2YWx1ZStcIlwifSkpLGhvb2tzPWpRdWVyeS52YWxIb29rc1t0aGlzLnR5cGVdfHxqUXVlcnkudmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxob29rcyYmXCJzZXRcImluIGhvb2tzJiZ2b2lkIDAhPT1ob29rcy5zZXQodGhpcyx2YWwsXCJ2YWx1ZVwiKXx8KHRoaXMudmFsdWU9dmFsKSl9KTtpZihlbGVtKXJldHVybiBob29rcz1qUXVlcnkudmFsSG9va3NbZWxlbS50eXBlXXx8alF1ZXJ5LnZhbEhvb2tzW2VsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0saG9va3MmJlwiZ2V0XCJpbiBob29rcyYmdm9pZCAwIT09KHJldD1ob29rcy5nZXQoZWxlbSxcInZhbHVlXCIpKT9yZXQ6KHJldD1lbGVtLnZhbHVlLFwic3RyaW5nXCI9PXR5cGVvZiByZXQ/cmV0LnJlcGxhY2UocnJldHVybixcIlwiKTpudWxsPT1yZXQ/XCJcIjpyZXQpfX19KSxqUXVlcnkuZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oZWxlbSl7dmFyIHZhbD1qUXVlcnkuZmluZC5hdHRyKGVsZW0sXCJ2YWx1ZVwiKTtyZXR1cm4gbnVsbCE9dmFsP3ZhbDpqUXVlcnkudHJpbShqUXVlcnkudGV4dChlbGVtKSl9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihlbGVtKXtmb3IodmFyIHZhbHVlLG9wdGlvbixvcHRpb25zPWVsZW0ub3B0aW9ucyxpbmRleD1lbGVtLnNlbGVjdGVkSW5kZXgsb25lPVwic2VsZWN0LW9uZVwiPT09ZWxlbS50eXBlfHwwPmluZGV4LHZhbHVlcz1vbmU/bnVsbDpbXSxtYXg9b25lP2luZGV4KzE6b3B0aW9ucy5sZW5ndGgsaT0wPmluZGV4P21heDpvbmU/aW5kZXg6MDttYXg+aTtpKyspaWYob3B0aW9uPW9wdGlvbnNbaV0sKG9wdGlvbi5zZWxlY3RlZHx8aT09PWluZGV4KSYmKHN1cHBvcnQub3B0RGlzYWJsZWQ/IW9wdGlvbi5kaXNhYmxlZDpudWxsPT09b3B0aW9uLmdldEF0dHJpYnV0ZShcImRpc2FibGVkXCIpKSYmKCFvcHRpb24ucGFyZW50Tm9kZS5kaXNhYmxlZHx8IWpRdWVyeS5ub2RlTmFtZShvcHRpb24ucGFyZW50Tm9kZSxcIm9wdGdyb3VwXCIpKSl7aWYodmFsdWU9alF1ZXJ5KG9wdGlvbikudmFsKCksb25lKXJldHVybiB2YWx1ZTt2YWx1ZXMucHVzaCh2YWx1ZSl9cmV0dXJuIHZhbHVlc30sc2V0OmZ1bmN0aW9uKGVsZW0sdmFsdWUpe2Zvcih2YXIgb3B0aW9uU2V0LG9wdGlvbixvcHRpb25zPWVsZW0ub3B0aW9ucyx2YWx1ZXM9alF1ZXJ5Lm1ha2VBcnJheSh2YWx1ZSksaT1vcHRpb25zLmxlbmd0aDtpLS07KWlmKG9wdGlvbj1vcHRpb25zW2ldLGpRdWVyeS5pbkFycmF5KGpRdWVyeS52YWxIb29rcy5vcHRpb24uZ2V0KG9wdGlvbiksdmFsdWVzKT49MCl0cnl7b3B0aW9uLnNlbGVjdGVkPW9wdGlvblNldD0hMH1jYXRjaChfKXtvcHRpb24uc2Nyb2xsSGVpZ2h0fWVsc2Ugb3B0aW9uLnNlbGVjdGVkPSExO3JldHVybiBvcHRpb25TZXR8fChlbGVtLnNlbGVjdGVkSW5kZXg9LTEpLG9wdGlvbnN9fX19KSxqUXVlcnkuZWFjaChbXCJyYWRpb1wiLFwiY2hlY2tib3hcIl0sZnVuY3Rpb24oKXtqUXVlcnkudmFsSG9va3NbdGhpc109e3NldDpmdW5jdGlvbihlbGVtLHZhbHVlKXtyZXR1cm4galF1ZXJ5LmlzQXJyYXkodmFsdWUpP2VsZW0uY2hlY2tlZD1qUXVlcnkuaW5BcnJheShqUXVlcnkoZWxlbSkudmFsKCksdmFsdWUpPj0wOnZvaWQgMH19LHN1cHBvcnQuY2hlY2tPbnx8KGpRdWVyeS52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIG51bGw9PT1lbGVtLmdldEF0dHJpYnV0ZShcInZhbHVlXCIpP1wib25cIjplbGVtLnZhbHVlfSl9KTt2YXIgbm9kZUhvb2ssYm9vbEhvb2ssYXR0ckhhbmRsZT1qUXVlcnkuZXhwci5hdHRySGFuZGxlLHJ1c2VEZWZhdWx0PS9eKD86Y2hlY2tlZHxzZWxlY3RlZCkkL2ksZ2V0U2V0QXR0cmlidXRlPXN1cHBvcnQuZ2V0U2V0QXR0cmlidXRlLGdldFNldElucHV0PXN1cHBvcnQuaW5wdXQ7alF1ZXJ5LmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihuYW1lLHZhbHVlKXtyZXR1cm4gYWNjZXNzKHRoaXMsalF1ZXJ5LmF0dHIsbmFtZSx2YWx1ZSxhcmd1bWVudHMubGVuZ3RoPjEpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKG5hbWUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtqUXVlcnkucmVtb3ZlQXR0cih0aGlzLG5hbWUpfSl9fSksalF1ZXJ5LmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlbGVtLG5hbWUsdmFsdWUpe3ZhciBob29rcyxyZXQsblR5cGU9ZWxlbS5ub2RlVHlwZTtpZihlbGVtJiYzIT09blR5cGUmJjghPT1uVHlwZSYmMiE9PW5UeXBlKXJldHVybiB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGU9PT1zdHJ1bmRlZmluZWQ/alF1ZXJ5LnByb3AoZWxlbSxuYW1lLHZhbHVlKTooMT09PW5UeXBlJiZqUXVlcnkuaXNYTUxEb2MoZWxlbSl8fChuYW1lPW5hbWUudG9Mb3dlckNhc2UoKSxob29rcz1qUXVlcnkuYXR0ckhvb2tzW25hbWVdfHwoalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC50ZXN0KG5hbWUpP2Jvb2xIb29rOm5vZGVIb29rKSksdm9pZCAwPT09dmFsdWU/aG9va3MmJlwiZ2V0XCJpbiBob29rcyYmbnVsbCE9PShyZXQ9aG9va3MuZ2V0KGVsZW0sbmFtZSkpP3JldDoocmV0PWpRdWVyeS5maW5kLmF0dHIoZWxlbSxuYW1lKSxudWxsPT1yZXQ/dm9pZCAwOnJldCk6bnVsbCE9PXZhbHVlP2hvb2tzJiZcInNldFwiaW4gaG9va3MmJnZvaWQgMCE9PShyZXQ9aG9va3Muc2V0KGVsZW0sdmFsdWUsbmFtZSkpP3JldDooZWxlbS5zZXRBdHRyaWJ1dGUobmFtZSx2YWx1ZStcIlwiKSx2YWx1ZSk6dm9pZCBqUXVlcnkucmVtb3ZlQXR0cihlbGVtLG5hbWUpKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlbGVtLHZhbHVlKXt2YXIgbmFtZSxwcm9wTmFtZSxpPTAsYXR0ck5hbWVzPXZhbHVlJiZ2YWx1ZS5tYXRjaChybm90d2hpdGUpO2lmKGF0dHJOYW1lcyYmMT09PWVsZW0ubm9kZVR5cGUpZm9yKDtuYW1lPWF0dHJOYW1lc1tpKytdOylwcm9wTmFtZT1qUXVlcnkucHJvcEZpeFtuYW1lXXx8bmFtZSxqUXVlcnkuZXhwci5tYXRjaC5ib29sLnRlc3QobmFtZSk/Z2V0U2V0SW5wdXQmJmdldFNldEF0dHJpYnV0ZXx8IXJ1c2VEZWZhdWx0LnRlc3QobmFtZSk/ZWxlbVtwcm9wTmFtZV09ITE6ZWxlbVtqUXVlcnkuY2FtZWxDYXNlKFwiZGVmYXVsdC1cIituYW1lKV09ZWxlbVtwcm9wTmFtZV09ITE6alF1ZXJ5LmF0dHIoZWxlbSxuYW1lLFwiXCIpLGVsZW0ucmVtb3ZlQXR0cmlidXRlKGdldFNldEF0dHJpYnV0ZT9uYW1lOnByb3BOYW1lKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oZWxlbSx2YWx1ZSl7aWYoIXN1cHBvcnQucmFkaW9WYWx1ZSYmXCJyYWRpb1wiPT09dmFsdWUmJmpRdWVyeS5ub2RlTmFtZShlbGVtLFwiaW5wdXRcIikpe3ZhciB2YWw9ZWxlbS52YWx1ZTtyZXR1cm4gZWxlbS5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsdmFsdWUpLHZhbCYmKGVsZW0udmFsdWU9dmFsKSx2YWx1ZX19fX19KSxib29sSG9vaz17c2V0OmZ1bmN0aW9uKGVsZW0sdmFsdWUsbmFtZSl7cmV0dXJuIHZhbHVlPT09ITE/alF1ZXJ5LnJlbW92ZUF0dHIoZWxlbSxuYW1lKTpnZXRTZXRJbnB1dCYmZ2V0U2V0QXR0cmlidXRlfHwhcnVzZURlZmF1bHQudGVzdChuYW1lKT9lbGVtLnNldEF0dHJpYnV0ZSghZ2V0U2V0QXR0cmlidXRlJiZqUXVlcnkucHJvcEZpeFtuYW1lXXx8bmFtZSxuYW1lKTplbGVtW2pRdWVyeS5jYW1lbENhc2UoXCJkZWZhdWx0LVwiK25hbWUpXT1lbGVtW25hbWVdPSEwLG5hbWV9fSxqUXVlcnkuZWFjaChqUXVlcnkuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXFx3Ky9nKSxmdW5jdGlvbihpLG5hbWUpe3ZhciBnZXR0ZXI9YXR0ckhhbmRsZVtuYW1lXXx8alF1ZXJ5LmZpbmQuYXR0cjthdHRySGFuZGxlW25hbWVdPWdldFNldElucHV0JiZnZXRTZXRBdHRyaWJ1dGV8fCFydXNlRGVmYXVsdC50ZXN0KG5hbWUpP2Z1bmN0aW9uKGVsZW0sbmFtZSxpc1hNTCl7dmFyIHJldCxoYW5kbGU7cmV0dXJuIGlzWE1MfHwoaGFuZGxlPWF0dHJIYW5kbGVbbmFtZV0sYXR0ckhhbmRsZVtuYW1lXT1yZXQscmV0PW51bGwhPWdldHRlcihlbGVtLG5hbWUsaXNYTUwpP25hbWUudG9Mb3dlckNhc2UoKTpudWxsLGF0dHJIYW5kbGVbbmFtZV09aGFuZGxlKSxyZXR9OmZ1bmN0aW9uKGVsZW0sbmFtZSxpc1hNTCl7cmV0dXJuIGlzWE1MP3ZvaWQgMDplbGVtW2pRdWVyeS5jYW1lbENhc2UoXCJkZWZhdWx0LVwiK25hbWUpXT9uYW1lLnRvTG93ZXJDYXNlKCk6bnVsbH19KSxnZXRTZXRJbnB1dCYmZ2V0U2V0QXR0cmlidXRlfHwoalF1ZXJ5LmF0dHJIb29rcy52YWx1ZT17c2V0OmZ1bmN0aW9uKGVsZW0sdmFsdWUsbmFtZSl7cmV0dXJuIGpRdWVyeS5ub2RlTmFtZShlbGVtLFwiaW5wdXRcIik/dm9pZChlbGVtLmRlZmF1bHRWYWx1ZT12YWx1ZSk6bm9kZUhvb2smJm5vZGVIb29rLnNldChlbGVtLHZhbHVlLG5hbWUpfX0pLGdldFNldEF0dHJpYnV0ZXx8KG5vZGVIb29rPXtzZXQ6ZnVuY3Rpb24oZWxlbSx2YWx1ZSxuYW1lKXt2YXIgcmV0PWVsZW0uZ2V0QXR0cmlidXRlTm9kZShuYW1lKTtyZXR1cm4gcmV0fHxlbGVtLnNldEF0dHJpYnV0ZU5vZGUocmV0PWVsZW0ub3duZXJEb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGUobmFtZSkpLHJldC52YWx1ZT12YWx1ZSs9XCJcIixcInZhbHVlXCI9PT1uYW1lfHx2YWx1ZT09PWVsZW0uZ2V0QXR0cmlidXRlKG5hbWUpP3ZhbHVlOnZvaWQgMH19LGF0dHJIYW5kbGUuaWQ9YXR0ckhhbmRsZS5uYW1lPWF0dHJIYW5kbGUuY29vcmRzPWZ1bmN0aW9uKGVsZW0sbmFtZSxpc1hNTCl7dmFyIHJldDtyZXR1cm4gaXNYTUw/dm9pZCAwOihyZXQ9ZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpKSYmXCJcIiE9PXJldC52YWx1ZT9yZXQudmFsdWU6bnVsbH0salF1ZXJ5LnZhbEhvb2tzLmJ1dHRvbj17Z2V0OmZ1bmN0aW9uKGVsZW0sbmFtZSl7dmFyIHJldD1lbGVtLmdldEF0dHJpYnV0ZU5vZGUobmFtZSk7cmV0dXJuIHJldCYmcmV0LnNwZWNpZmllZD9yZXQudmFsdWU6dm9pZCAwfSxzZXQ6bm9kZUhvb2suc2V0fSxqUXVlcnkuYXR0ckhvb2tzLmNvbnRlbnRlZGl0YWJsZT17c2V0OmZ1bmN0aW9uKGVsZW0sdmFsdWUsbmFtZSl7bm9kZUhvb2suc2V0KGVsZW0sXCJcIj09PXZhbHVlPyExOnZhbHVlLG5hbWUpfX0salF1ZXJ5LmVhY2goW1wid2lkdGhcIixcImhlaWdodFwiXSxmdW5jdGlvbihpLG5hbWUpe2pRdWVyeS5hdHRySG9va3NbbmFtZV09e3NldDpmdW5jdGlvbihlbGVtLHZhbHVlKXtyZXR1cm5cIlwiPT09dmFsdWU/KGVsZW0uc2V0QXR0cmlidXRlKG5hbWUsXCJhdXRvXCIpLHZhbHVlKTp2b2lkIDB9fX0pKSxzdXBwb3J0LnN0eWxlfHwoalF1ZXJ5LmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtLnN0eWxlLmNzc1RleHR8fHZvaWQgMH0sc2V0OmZ1bmN0aW9uKGVsZW0sdmFsdWUpe3JldHVybiBlbGVtLnN0eWxlLmNzc1RleHQ9dmFsdWUrXCJcIn19KTt2YXIgcmZvY3VzYWJsZT0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvaSxyY2xpY2thYmxlPS9eKD86YXxhcmVhKSQvaTtqUXVlcnkuZm4uZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKG5hbWUsdmFsdWUpe3JldHVybiBhY2Nlc3ModGhpcyxqUXVlcnkucHJvcCxuYW1lLHZhbHVlLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZVByb3A6ZnVuY3Rpb24obmFtZSl7cmV0dXJuIG5hbWU9alF1ZXJ5LnByb3BGaXhbbmFtZV18fG5hbWUsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbbmFtZV09dm9pZCAwLGRlbGV0ZSB0aGlzW25hbWVdfWNhdGNoKGUpe319KX19KSxqUXVlcnkuZXh0ZW5kKHtwcm9wRml4OntcImZvclwiOlwiaHRtbEZvclwiLFwiY2xhc3NcIjpcImNsYXNzTmFtZVwifSxwcm9wOmZ1bmN0aW9uKGVsZW0sbmFtZSx2YWx1ZSl7dmFyIHJldCxob29rcyxub3R4bWwsblR5cGU9ZWxlbS5ub2RlVHlwZTtpZihlbGVtJiYzIT09blR5cGUmJjghPT1uVHlwZSYmMiE9PW5UeXBlKXJldHVybiBub3R4bWw9MSE9PW5UeXBlfHwhalF1ZXJ5LmlzWE1MRG9jKGVsZW0pLG5vdHhtbCYmKG5hbWU9alF1ZXJ5LnByb3BGaXhbbmFtZV18fG5hbWUsaG9va3M9alF1ZXJ5LnByb3BIb29rc1tuYW1lXSksdm9pZCAwIT09dmFsdWU/aG9va3MmJlwic2V0XCJpbiBob29rcyYmdm9pZCAwIT09KHJldD1ob29rcy5zZXQoZWxlbSx2YWx1ZSxuYW1lKSk/cmV0OmVsZW1bbmFtZV09dmFsdWU6aG9va3MmJlwiZ2V0XCJpbiBob29rcyYmbnVsbCE9PShyZXQ9aG9va3MuZ2V0KGVsZW0sbmFtZSkpP3JldDplbGVtW25hbWVdfSxwcm9wSG9va3M6e3RhYkluZGV4OntnZXQ6ZnVuY3Rpb24oZWxlbSl7dmFyIHRhYmluZGV4PWpRdWVyeS5maW5kLmF0dHIoZWxlbSxcInRhYmluZGV4XCIpO3JldHVybiB0YWJpbmRleD9wYXJzZUludCh0YWJpbmRleCwxMCk6cmZvY3VzYWJsZS50ZXN0KGVsZW0ubm9kZU5hbWUpfHxyY2xpY2thYmxlLnRlc3QoZWxlbS5ub2RlTmFtZSkmJmVsZW0uaHJlZj8wOi0xfX19fSksc3VwcG9ydC5ocmVmTm9ybWFsaXplZHx8alF1ZXJ5LmVhY2goW1wiaHJlZlwiLFwic3JjXCJdLGZ1bmN0aW9uKGksbmFtZSl7alF1ZXJ5LnByb3BIb29rc1tuYW1lXT17Z2V0OmZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtLmdldEF0dHJpYnV0ZShuYW1lLDQpfX19KSxzdXBwb3J0Lm9wdFNlbGVjdGVkfHwoalF1ZXJ5LnByb3BIb29rcy5zZWxlY3RlZD17Z2V0OmZ1bmN0aW9uKGVsZW0pe3ZhciBwYXJlbnQ9ZWxlbS5wYXJlbnROb2RlO3JldHVybiBwYXJlbnQmJihwYXJlbnQuc2VsZWN0ZWRJbmRleCxwYXJlbnQucGFyZW50Tm9kZSYmcGFyZW50LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCksbnVsbH19KSxqUXVlcnkuZWFjaChbXCJ0YWJJbmRleFwiLFwicmVhZE9ubHlcIixcIm1heExlbmd0aFwiLFwiY2VsbFNwYWNpbmdcIixcImNlbGxQYWRkaW5nXCIsXCJyb3dTcGFuXCIsXCJjb2xTcGFuXCIsXCJ1c2VNYXBcIixcImZyYW1lQm9yZGVyXCIsXCJjb250ZW50RWRpdGFibGVcIl0sZnVuY3Rpb24oKXtqUXVlcnkucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxzdXBwb3J0LmVuY3R5cGV8fChqUXVlcnkucHJvcEZpeC5lbmN0eXBlPVwiZW5jb2RpbmdcIik7dmFyIHJjbGFzcz0vW1xcdFxcclxcblxcZl0vZztqUXVlcnkuZm4uZXh0ZW5kKHthZGRDbGFzczpmdW5jdGlvbih2YWx1ZSl7dmFyIGNsYXNzZXMsZWxlbSxjdXIsY2xhenosaixmaW5hbFZhbHVlLGk9MCxsZW49dGhpcy5sZW5ndGgscHJvY2VlZD1cInN0cmluZ1wiPT10eXBlb2YgdmFsdWUmJnZhbHVlO2lmKGpRdWVyeS5pc0Z1bmN0aW9uKHZhbHVlKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGope2pRdWVyeSh0aGlzKS5hZGRDbGFzcyh2YWx1ZS5jYWxsKHRoaXMsaix0aGlzLmNsYXNzTmFtZSkpfSk7aWYocHJvY2VlZClmb3IoY2xhc3Nlcz0odmFsdWV8fFwiXCIpLm1hdGNoKHJub3R3aGl0ZSl8fFtdO2xlbj5pO2krKylpZihlbGVtPXRoaXNbaV0sY3VyPTE9PT1lbGVtLm5vZGVUeXBlJiYoZWxlbS5jbGFzc05hbWU/KFwiIFwiK2VsZW0uY2xhc3NOYW1lK1wiIFwiKS5yZXBsYWNlKHJjbGFzcyxcIiBcIik6XCIgXCIpKXtmb3Ioaj0wO2NsYXp6PWNsYXNzZXNbaisrXTspY3VyLmluZGV4T2YoXCIgXCIrY2xhenorXCIgXCIpPDAmJihjdXIrPWNsYXp6K1wiIFwiKTtmaW5hbFZhbHVlPWpRdWVyeS50cmltKGN1ciksZWxlbS5jbGFzc05hbWUhPT1maW5hbFZhbHVlJiYoZWxlbS5jbGFzc05hbWU9ZmluYWxWYWx1ZSl9cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKHZhbHVlKXt2YXIgY2xhc3NlcyxlbGVtLGN1cixjbGF6eixqLGZpbmFsVmFsdWUsaT0wLGxlbj10aGlzLmxlbmd0aCxwcm9jZWVkPTA9PT1hcmd1bWVudHMubGVuZ3RofHxcInN0cmluZ1wiPT10eXBlb2YgdmFsdWUmJnZhbHVlO2lmKGpRdWVyeS5pc0Z1bmN0aW9uKHZhbHVlKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGope2pRdWVyeSh0aGlzKS5yZW1vdmVDbGFzcyh2YWx1ZS5jYWxsKHRoaXMsaix0aGlzLmNsYXNzTmFtZSkpfSk7aWYocHJvY2VlZClmb3IoY2xhc3Nlcz0odmFsdWV8fFwiXCIpLm1hdGNoKHJub3R3aGl0ZSl8fFtdO2xlbj5pO2krKylpZihlbGVtPXRoaXNbaV0sY3VyPTE9PT1lbGVtLm5vZGVUeXBlJiYoZWxlbS5jbGFzc05hbWU/KFwiIFwiK2VsZW0uY2xhc3NOYW1lK1wiIFwiKS5yZXBsYWNlKHJjbGFzcyxcIiBcIik6XCJcIikpe2ZvcihqPTA7Y2xheno9Y2xhc3Nlc1tqKytdOylmb3IoO2N1ci5pbmRleE9mKFwiIFwiK2NsYXp6K1wiIFwiKT49MDspY3VyPWN1ci5yZXBsYWNlKFwiIFwiK2NsYXp6K1wiIFwiLFwiIFwiKTtmaW5hbFZhbHVlPXZhbHVlP2pRdWVyeS50cmltKGN1cik6XCJcIixlbGVtLmNsYXNzTmFtZSE9PWZpbmFsVmFsdWUmJihlbGVtLmNsYXNzTmFtZT1maW5hbFZhbHVlKX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24odmFsdWUsc3RhdGVWYWwpe3ZhciB0eXBlPXR5cGVvZiB2YWx1ZTtyZXR1cm5cImJvb2xlYW5cIj09dHlwZW9mIHN0YXRlVmFsJiZcInN0cmluZ1wiPT09dHlwZT9zdGF0ZVZhbD90aGlzLmFkZENsYXNzKHZhbHVlKTp0aGlzLnJlbW92ZUNsYXNzKHZhbHVlKTpqUXVlcnkuaXNGdW5jdGlvbih2YWx1ZSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGkpe2pRdWVyeSh0aGlzKS50b2dnbGVDbGFzcyh2YWx1ZS5jYWxsKHRoaXMsaSx0aGlzLmNsYXNzTmFtZSxzdGF0ZVZhbCksc3RhdGVWYWwpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoXCJzdHJpbmdcIj09PXR5cGUpZm9yKHZhciBjbGFzc05hbWUsaT0wLHNlbGY9alF1ZXJ5KHRoaXMpLGNsYXNzTmFtZXM9dmFsdWUubWF0Y2gocm5vdHdoaXRlKXx8W107Y2xhc3NOYW1lPWNsYXNzTmFtZXNbaSsrXTspc2VsZi5oYXNDbGFzcyhjbGFzc05hbWUpP3NlbGYucmVtb3ZlQ2xhc3MoY2xhc3NOYW1lKTpzZWxmLmFkZENsYXNzKGNsYXNzTmFtZSk7ZWxzZSh0eXBlPT09c3RydW5kZWZpbmVkfHxcImJvb2xlYW5cIj09PXR5cGUpJiYodGhpcy5jbGFzc05hbWUmJmpRdWVyeS5fZGF0YSh0aGlzLFwiX19jbGFzc05hbWVfX1wiLHRoaXMuY2xhc3NOYW1lKSx0aGlzLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZXx8dmFsdWU9PT0hMT9cIlwiOmpRdWVyeS5fZGF0YSh0aGlzLFwiX19jbGFzc05hbWVfX1wiKXx8XCJcIil9KX0saGFzQ2xhc3M6ZnVuY3Rpb24oc2VsZWN0b3Ipe2Zvcih2YXIgY2xhc3NOYW1lPVwiIFwiK3NlbGVjdG9yK1wiIFwiLGk9MCxsPXRoaXMubGVuZ3RoO2w+aTtpKyspaWYoMT09PXRoaXNbaV0ubm9kZVR5cGUmJihcIiBcIit0aGlzW2ldLmNsYXNzTmFtZStcIiBcIikucmVwbGFjZShyY2xhc3MsXCIgXCIpLmluZGV4T2YoY2xhc3NOYW1lKT49MClyZXR1cm4hMDtyZXR1cm4hMX19KSxqUXVlcnkuZWFjaChcImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgZXJyb3IgY29udGV4dG1lbnVcIi5zcGxpdChcIiBcIiksZnVuY3Rpb24oaSxuYW1lKXtqUXVlcnkuZm5bbmFtZV09ZnVuY3Rpb24oZGF0YSxmbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MD90aGlzLm9uKG5hbWUsbnVsbCxkYXRhLGZuKTp0aGlzLnRyaWdnZXIobmFtZSl9fSksalF1ZXJ5LmZuLmV4dGVuZCh7aG92ZXI6ZnVuY3Rpb24oZm5PdmVyLGZuT3V0KXtyZXR1cm4gdGhpcy5tb3VzZWVudGVyKGZuT3ZlcikubW91c2VsZWF2ZShmbk91dHx8Zm5PdmVyKX0sYmluZDpmdW5jdGlvbih0eXBlcyxkYXRhLGZuKXtyZXR1cm4gdGhpcy5vbih0eXBlcyxudWxsLGRhdGEsZm4pfSx1bmJpbmQ6ZnVuY3Rpb24odHlwZXMsZm4pe3JldHVybiB0aGlzLm9mZih0eXBlcyxudWxsLGZuKX0sZGVsZWdhdGU6ZnVuY3Rpb24oc2VsZWN0b3IsdHlwZXMsZGF0YSxmbil7cmV0dXJuIHRoaXMub24odHlwZXMsc2VsZWN0b3IsZGF0YSxmbil9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oc2VsZWN0b3IsdHlwZXMsZm4pe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihzZWxlY3RvcixcIioqXCIpOnRoaXMub2ZmKHR5cGVzLHNlbGVjdG9yfHxcIioqXCIsZm4pfX0pO3ZhciBub25jZT1qUXVlcnkubm93KCkscnF1ZXJ5PS9cXD8vLHJ2YWxpZHRva2Vucz0vKCwpfChcXFt8eyl8KH18XSl8XCIoPzpbXlwiXFxcXFxcclxcbl18XFxcXFtcIlxcXFxcXC9iZm5ydF18XFxcXHVbXFxkYS1mQS1GXXs0fSkqXCJcXHMqOj98dHJ1ZXxmYWxzZXxudWxsfC0/KD8hMFxcZClcXGQrKD86XFwuXFxkK3wpKD86W2VFXVsrLV0/XFxkK3wpL2c7alF1ZXJ5LnBhcnNlSlNPTj1mdW5jdGlvbihkYXRhKXtpZih3aW5kb3cuSlNPTiYmd2luZG93LkpTT04ucGFyc2UpcmV0dXJuIHdpbmRvdy5KU09OLnBhcnNlKGRhdGErXCJcIik7dmFyIHJlcXVpcmVOb25Db21tYSxkZXB0aD1udWxsLHN0cj1qUXVlcnkudHJpbShkYXRhK1wiXCIpO3JldHVybiBzdHImJiFqUXVlcnkudHJpbShzdHIucmVwbGFjZShydmFsaWR0b2tlbnMsZnVuY3Rpb24odG9rZW4sY29tbWEsb3BlbixjbG9zZSl7cmV0dXJuIHJlcXVpcmVOb25Db21tYSYmY29tbWEmJihkZXB0aD0wKSwwPT09ZGVwdGg/dG9rZW46KHJlcXVpcmVOb25Db21tYT1vcGVufHxjb21tYSxkZXB0aCs9IWNsb3NlLSFvcGVuLFwiXCIpfSkpP0Z1bmN0aW9uKFwicmV0dXJuIFwiK3N0cikoKTpqUXVlcnkuZXJyb3IoXCJJbnZhbGlkIEpTT046IFwiK2RhdGEpfSxqUXVlcnkucGFyc2VYTUw9ZnVuY3Rpb24oZGF0YSl7dmFyIHhtbCx0bXA7aWYoIWRhdGF8fFwic3RyaW5nXCIhPXR5cGVvZiBkYXRhKXJldHVybiBudWxsO3RyeXt3aW5kb3cuRE9NUGFyc2VyPyh0bXA9bmV3IERPTVBhcnNlcix4bWw9dG1wLnBhcnNlRnJvbVN0cmluZyhkYXRhLFwidGV4dC94bWxcIikpOih4bWw9bmV3IEFjdGl2ZVhPYmplY3QoXCJNaWNyb3NvZnQuWE1MRE9NXCIpLHhtbC5hc3luYz1cImZhbHNlXCIseG1sLmxvYWRYTUwoZGF0YSkpfWNhdGNoKGUpe3htbD12b2lkIDB9cmV0dXJuIHhtbCYmeG1sLmRvY3VtZW50RWxlbWVudCYmIXhtbC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInBhcnNlcmVycm9yXCIpLmxlbmd0aHx8alF1ZXJ5LmVycm9yKFwiSW52YWxpZCBYTUw6IFwiK2RhdGEpLHhtbH07dmFyIGFqYXhMb2NQYXJ0cyxhamF4TG9jYXRpb24scmhhc2g9LyMuKiQvLHJ0cz0vKFs/Jl0pXz1bXiZdKi8scmhlYWRlcnM9L14oLio/KTpbIFxcdF0qKFteXFxyXFxuXSopXFxyPyQvZ20scmxvY2FsUHJvdG9jb2w9L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8scm5vQ29udGVudD0vXig/OkdFVHxIRUFEKSQvLHJwcm90b2NvbD0vXlxcL1xcLy8scnVybD0vXihbXFx3ListXSs6KSg/OlxcL1xcLyg/OlteXFwvPyNdKkB8KShbXlxcLz8jOl0qKSg/OjooXFxkKyl8KXwpLyxwcmVmaWx0ZXJzPXt9LHRyYW5zcG9ydHM9e30sYWxsVHlwZXM9XCIqL1wiLmNvbmNhdChcIipcIik7dHJ5e2FqYXhMb2NhdGlvbj1sb2NhdGlvbi5ocmVmfWNhdGNoKGUpe2FqYXhMb2NhdGlvbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKSxhamF4TG9jYXRpb24uaHJlZj1cIlwiLGFqYXhMb2NhdGlvbj1hamF4TG9jYXRpb24uaHJlZn1hamF4TG9jUGFydHM9cnVybC5leGVjKGFqYXhMb2NhdGlvbi50b0xvd2VyQ2FzZSgpKXx8W10salF1ZXJ5LmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6YWpheExvY2F0aW9uLHR5cGU6XCJHRVRcIixpc0xvY2FsOnJsb2NhbFByb3RvY29sLnRlc3QoYWpheExvY1BhcnRzWzFdKSxnbG9iYWw6ITAscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsY29udGVudFR5cGU6XCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIixhY2NlcHRzOntcIipcIjphbGxUeXBlcyx0ZXh0OlwidGV4dC9wbGFpblwiLGh0bWw6XCJ0ZXh0L2h0bWxcIix4bWw6XCJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sXCIsanNvbjpcImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdFwifSxjb250ZW50czp7eG1sOi94bWwvLGh0bWw6L2h0bWwvLGpzb246L2pzb24vfSxyZXNwb25zZUZpZWxkczp7eG1sOlwicmVzcG9uc2VYTUxcIix0ZXh0OlwicmVzcG9uc2VUZXh0XCIsanNvbjpcInJlc3BvbnNlSlNPTlwifSxjb252ZXJ0ZXJzOntcIiogdGV4dFwiOlN0cmluZyxcInRleHQgaHRtbFwiOiEwLFwidGV4dCBqc29uXCI6alF1ZXJ5LnBhcnNlSlNPTixcInRleHQgeG1sXCI6alF1ZXJ5LnBhcnNlWE1MfSxmbGF0T3B0aW9uczp7dXJsOiEwLGNvbnRleHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24odGFyZ2V0LHNldHRpbmdzKXtyZXR1cm4gc2V0dGluZ3M/YWpheEV4dGVuZChhamF4RXh0ZW5kKHRhcmdldCxqUXVlcnkuYWpheFNldHRpbmdzKSxzZXR0aW5ncyk6YWpheEV4dGVuZChqUXVlcnkuYWpheFNldHRpbmdzLHRhcmdldCl9LGFqYXhQcmVmaWx0ZXI6YWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKHByZWZpbHRlcnMpLGFqYXhUcmFuc3BvcnQ6YWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKHRyYW5zcG9ydHMpLGFqYXg6ZnVuY3Rpb24odXJsLG9wdGlvbnMpe2Z1bmN0aW9uIGRvbmUoc3RhdHVzLG5hdGl2ZVN0YXR1c1RleHQscmVzcG9uc2VzLGhlYWRlcnMpe3ZhciBpc1N1Y2Nlc3Msc3VjY2VzcyxlcnJvcixyZXNwb25zZSxtb2RpZmllZCxzdGF0dXNUZXh0PW5hdGl2ZVN0YXR1c1RleHQ7MiE9PXN0YXRlJiYoc3RhdGU9Mix0aW1lb3V0VGltZXImJmNsZWFyVGltZW91dCh0aW1lb3V0VGltZXIpLHRyYW5zcG9ydD12b2lkIDAscmVzcG9uc2VIZWFkZXJzU3RyaW5nPWhlYWRlcnN8fFwiXCIsanFYSFIucmVhZHlTdGF0ZT1zdGF0dXM+MD80OjAsaXNTdWNjZXNzPXN0YXR1cz49MjAwJiYzMDA+c3RhdHVzfHwzMDQ9PT1zdGF0dXMscmVzcG9uc2VzJiYocmVzcG9uc2U9YWpheEhhbmRsZVJlc3BvbnNlcyhzLGpxWEhSLHJlc3BvbnNlcykpLHJlc3BvbnNlPWFqYXhDb252ZXJ0KHMscmVzcG9uc2UsanFYSFIsaXNTdWNjZXNzKSxpc1N1Y2Nlc3M/KHMuaWZNb2RpZmllZCYmKG1vZGlmaWVkPWpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKFwiTGFzdC1Nb2RpZmllZFwiKSxtb2RpZmllZCYmKGpRdWVyeS5sYXN0TW9kaWZpZWRbY2FjaGVVUkxdPW1vZGlmaWVkKSxtb2RpZmllZD1qcVhIUi5nZXRSZXNwb25zZUhlYWRlcihcImV0YWdcIiksbW9kaWZpZWQmJihqUXVlcnkuZXRhZ1tjYWNoZVVSTF09bW9kaWZpZWQpKSwyMDQ9PT1zdGF0dXN8fFwiSEVBRFwiPT09cy50eXBlP3N0YXR1c1RleHQ9XCJub2NvbnRlbnRcIjozMDQ9PT1zdGF0dXM/c3RhdHVzVGV4dD1cIm5vdG1vZGlmaWVkXCI6KHN0YXR1c1RleHQ9cmVzcG9uc2Uuc3RhdGUsc3VjY2Vzcz1yZXNwb25zZS5kYXRhLGVycm9yPXJlc3BvbnNlLmVycm9yLGlzU3VjY2Vzcz0hZXJyb3IpKTooZXJyb3I9c3RhdHVzVGV4dCwoc3RhdHVzfHwhc3RhdHVzVGV4dCkmJihzdGF0dXNUZXh0PVwiZXJyb3JcIiwwPnN0YXR1cyYmKHN0YXR1cz0wKSkpLGpxWEhSLnN0YXR1cz1zdGF0dXMsanFYSFIuc3RhdHVzVGV4dD0obmF0aXZlU3RhdHVzVGV4dHx8c3RhdHVzVGV4dCkrXCJcIixpc1N1Y2Nlc3M/ZGVmZXJyZWQucmVzb2x2ZVdpdGgoY2FsbGJhY2tDb250ZXh0LFtzdWNjZXNzLHN0YXR1c1RleHQsanFYSFJdKTpkZWZlcnJlZC5yZWplY3RXaXRoKGNhbGxiYWNrQ29udGV4dCxbanFYSFIsc3RhdHVzVGV4dCxlcnJvcl0pLGpxWEhSLnN0YXR1c0NvZGUoc3RhdHVzQ29kZSksc3RhdHVzQ29kZT12b2lkIDAsZmlyZUdsb2JhbHMmJmdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKGlzU3VjY2Vzcz9cImFqYXhTdWNjZXNzXCI6XCJhamF4RXJyb3JcIixbanFYSFIscyxpc1N1Y2Nlc3M/c3VjY2VzczplcnJvcl0pLGNvbXBsZXRlRGVmZXJyZWQuZmlyZVdpdGgoY2FsbGJhY2tDb250ZXh0LFtqcVhIUixzdGF0dXNUZXh0XSksZmlyZUdsb2JhbHMmJihnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlcihcImFqYXhDb21wbGV0ZVwiLFtqcVhIUixzXSksLS1qUXVlcnkuYWN0aXZlfHxqUXVlcnkuZXZlbnQudHJpZ2dlcihcImFqYXhTdG9wXCIpKSl9XCJvYmplY3RcIj09dHlwZW9mIHVybCYmKG9wdGlvbnM9dXJsLHVybD12b2lkIDApLG9wdGlvbnM9b3B0aW9uc3x8e307dmFyIHBhcnRzLGksY2FjaGVVUkwscmVzcG9uc2VIZWFkZXJzU3RyaW5nLHRpbWVvdXRUaW1lcixmaXJlR2xvYmFscyx0cmFuc3BvcnQscmVzcG9uc2VIZWFkZXJzLHM9alF1ZXJ5LmFqYXhTZXR1cCh7fSxvcHRpb25zKSxjYWxsYmFja0NvbnRleHQ9cy5jb250ZXh0fHxzLGdsb2JhbEV2ZW50Q29udGV4dD1zLmNvbnRleHQmJihjYWxsYmFja0NvbnRleHQubm9kZVR5cGV8fGNhbGxiYWNrQ29udGV4dC5qcXVlcnkpP2pRdWVyeShjYWxsYmFja0NvbnRleHQpOmpRdWVyeS5ldmVudCxkZWZlcnJlZD1qUXVlcnkuRGVmZXJyZWQoKSxjb21wbGV0ZURlZmVycmVkPWpRdWVyeS5DYWxsYmFja3MoXCJvbmNlIG1lbW9yeVwiKSxzdGF0dXNDb2RlPXMuc3RhdHVzQ29kZXx8e30scmVxdWVzdEhlYWRlcnM9e30scmVxdWVzdEhlYWRlcnNOYW1lcz17fSxzdGF0ZT0wLHN0ckFib3J0PVwiY2FuY2VsZWRcIixqcVhIUj17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGtleSl7dmFyIG1hdGNoO2lmKDI9PT1zdGF0ZSl7aWYoIXJlc3BvbnNlSGVhZGVycylmb3IocmVzcG9uc2VIZWFkZXJzPXt9O21hdGNoPXJoZWFkZXJzLmV4ZWMocmVzcG9uc2VIZWFkZXJzU3RyaW5nKTspcmVzcG9uc2VIZWFkZXJzW21hdGNoWzFdLnRvTG93ZXJDYXNlKCldPW1hdGNoWzJdO21hdGNoPXJlc3BvbnNlSGVhZGVyc1trZXkudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PW1hdGNoP251bGw6bWF0Y2h9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiAyPT09c3RhdGU/cmVzcG9uc2VIZWFkZXJzU3RyaW5nOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24obmFtZSx2YWx1ZSl7dmFyIGxuYW1lPW5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gc3RhdGV8fChuYW1lPXJlcXVlc3RIZWFkZXJzTmFtZXNbbG5hbWVdPXJlcXVlc3RIZWFkZXJzTmFtZXNbbG5hbWVdfHxuYW1lLHJlcXVlc3RIZWFkZXJzW25hbWVdPXZhbHVlKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKHR5cGUpe3JldHVybiBzdGF0ZXx8KHMubWltZVR5cGU9dHlwZSksdGhpc30sc3RhdHVzQ29kZTpmdW5jdGlvbihtYXApe3ZhciBjb2RlO2lmKG1hcClpZigyPnN0YXRlKWZvcihjb2RlIGluIG1hcClzdGF0dXNDb2RlW2NvZGVdPVtzdGF0dXNDb2RlW2NvZGVdLG1hcFtjb2RlXV07ZWxzZSBqcVhIUi5hbHdheXMobWFwW2pxWEhSLnN0YXR1c10pO3JldHVybiB0aGlzfSxhYm9ydDpmdW5jdGlvbihzdGF0dXNUZXh0KXt2YXIgZmluYWxUZXh0PXN0YXR1c1RleHR8fHN0ckFib3J0O3JldHVybiB0cmFuc3BvcnQmJnRyYW5zcG9ydC5hYm9ydChmaW5hbFRleHQpLGRvbmUoMCxmaW5hbFRleHQpLHRoaXN9fTtpZihkZWZlcnJlZC5wcm9taXNlKGpxWEhSKS5jb21wbGV0ZT1jb21wbGV0ZURlZmVycmVkLmFkZCxqcVhIUi5zdWNjZXNzPWpxWEhSLmRvbmUsanFYSFIuZXJyb3I9anFYSFIuZmFpbCxzLnVybD0oKHVybHx8cy51cmx8fGFqYXhMb2NhdGlvbikrXCJcIikucmVwbGFjZShyaGFzaCxcIlwiKS5yZXBsYWNlKHJwcm90b2NvbCxhamF4TG9jUGFydHNbMV0rXCIvL1wiKSxzLnR5cGU9b3B0aW9ucy5tZXRob2R8fG9wdGlvbnMudHlwZXx8cy5tZXRob2R8fHMudHlwZSxzLmRhdGFUeXBlcz1qUXVlcnkudHJpbShzLmRhdGFUeXBlfHxcIipcIikudG9Mb3dlckNhc2UoKS5tYXRjaChybm90d2hpdGUpfHxbXCJcIl0sXG5udWxsPT1zLmNyb3NzRG9tYWluJiYocGFydHM9cnVybC5leGVjKHMudXJsLnRvTG93ZXJDYXNlKCkpLHMuY3Jvc3NEb21haW49ISghcGFydHN8fHBhcnRzWzFdPT09YWpheExvY1BhcnRzWzFdJiZwYXJ0c1syXT09PWFqYXhMb2NQYXJ0c1syXSYmKHBhcnRzWzNdfHwoXCJodHRwOlwiPT09cGFydHNbMV0/XCI4MFwiOlwiNDQzXCIpKT09PShhamF4TG9jUGFydHNbM118fChcImh0dHA6XCI9PT1hamF4TG9jUGFydHNbMV0/XCI4MFwiOlwiNDQzXCIpKSkpLHMuZGF0YSYmcy5wcm9jZXNzRGF0YSYmXCJzdHJpbmdcIiE9dHlwZW9mIHMuZGF0YSYmKHMuZGF0YT1qUXVlcnkucGFyYW0ocy5kYXRhLHMudHJhZGl0aW9uYWwpKSxpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyhwcmVmaWx0ZXJzLHMsb3B0aW9ucyxqcVhIUiksMj09PXN0YXRlKXJldHVybiBqcVhIUjtmaXJlR2xvYmFscz1qUXVlcnkuZXZlbnQmJnMuZ2xvYmFsLGZpcmVHbG9iYWxzJiYwPT09alF1ZXJ5LmFjdGl2ZSsrJiZqUXVlcnkuZXZlbnQudHJpZ2dlcihcImFqYXhTdGFydFwiKSxzLnR5cGU9cy50eXBlLnRvVXBwZXJDYXNlKCkscy5oYXNDb250ZW50PSFybm9Db250ZW50LnRlc3Qocy50eXBlKSxjYWNoZVVSTD1zLnVybCxzLmhhc0NvbnRlbnR8fChzLmRhdGEmJihjYWNoZVVSTD1zLnVybCs9KHJxdWVyeS50ZXN0KGNhY2hlVVJMKT9cIiZcIjpcIj9cIikrcy5kYXRhLGRlbGV0ZSBzLmRhdGEpLHMuY2FjaGU9PT0hMSYmKHMudXJsPXJ0cy50ZXN0KGNhY2hlVVJMKT9jYWNoZVVSTC5yZXBsYWNlKHJ0cyxcIiQxXz1cIitub25jZSsrKTpjYWNoZVVSTCsocnF1ZXJ5LnRlc3QoY2FjaGVVUkwpP1wiJlwiOlwiP1wiKStcIl89XCIrbm9uY2UrKykpLHMuaWZNb2RpZmllZCYmKGpRdWVyeS5sYXN0TW9kaWZpZWRbY2FjaGVVUkxdJiZqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKFwiSWYtTW9kaWZpZWQtU2luY2VcIixqUXVlcnkubGFzdE1vZGlmaWVkW2NhY2hlVVJMXSksalF1ZXJ5LmV0YWdbY2FjaGVVUkxdJiZqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKFwiSWYtTm9uZS1NYXRjaFwiLGpRdWVyeS5ldGFnW2NhY2hlVVJMXSkpLChzLmRhdGEmJnMuaGFzQ29udGVudCYmcy5jb250ZW50VHlwZSE9PSExfHxvcHRpb25zLmNvbnRlbnRUeXBlKSYmanFYSFIuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLHMuY29udGVudFR5cGUpLGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoXCJBY2NlcHRcIixzLmRhdGFUeXBlc1swXSYmcy5hY2NlcHRzW3MuZGF0YVR5cGVzWzBdXT9zLmFjY2VwdHNbcy5kYXRhVHlwZXNbMF1dKyhcIipcIiE9PXMuZGF0YVR5cGVzWzBdP1wiLCBcIithbGxUeXBlcytcIjsgcT0wLjAxXCI6XCJcIik6cy5hY2NlcHRzW1wiKlwiXSk7Zm9yKGkgaW4gcy5oZWFkZXJzKWpxWEhSLnNldFJlcXVlc3RIZWFkZXIoaSxzLmhlYWRlcnNbaV0pO2lmKHMuYmVmb3JlU2VuZCYmKHMuYmVmb3JlU2VuZC5jYWxsKGNhbGxiYWNrQ29udGV4dCxqcVhIUixzKT09PSExfHwyPT09c3RhdGUpKXJldHVybiBqcVhIUi5hYm9ydCgpO3N0ckFib3J0PVwiYWJvcnRcIjtmb3IoaSBpbntzdWNjZXNzOjEsZXJyb3I6MSxjb21wbGV0ZToxfSlqcVhIUltpXShzW2ldKTtpZih0cmFuc3BvcnQ9aW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHModHJhbnNwb3J0cyxzLG9wdGlvbnMsanFYSFIpKXtqcVhIUi5yZWFkeVN0YXRlPTEsZmlyZUdsb2JhbHMmJmdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKFwiYWpheFNlbmRcIixbanFYSFIsc10pLHMuYXN5bmMmJnMudGltZW91dD4wJiYodGltZW91dFRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtqcVhIUi5hYm9ydChcInRpbWVvdXRcIil9LHMudGltZW91dCkpO3RyeXtzdGF0ZT0xLHRyYW5zcG9ydC5zZW5kKHJlcXVlc3RIZWFkZXJzLGRvbmUpfWNhdGNoKGUpe2lmKCEoMj5zdGF0ZSkpdGhyb3cgZTtkb25lKC0xLGUpfX1lbHNlIGRvbmUoLTEsXCJObyBUcmFuc3BvcnRcIik7cmV0dXJuIGpxWEhSfSxnZXRKU09OOmZ1bmN0aW9uKHVybCxkYXRhLGNhbGxiYWNrKXtyZXR1cm4galF1ZXJ5LmdldCh1cmwsZGF0YSxjYWxsYmFjayxcImpzb25cIil9LGdldFNjcmlwdDpmdW5jdGlvbih1cmwsY2FsbGJhY2spe3JldHVybiBqUXVlcnkuZ2V0KHVybCx2b2lkIDAsY2FsbGJhY2ssXCJzY3JpcHRcIil9fSksalF1ZXJ5LmVhY2goW1wiZ2V0XCIsXCJwb3N0XCJdLGZ1bmN0aW9uKGksbWV0aG9kKXtqUXVlcnlbbWV0aG9kXT1mdW5jdGlvbih1cmwsZGF0YSxjYWxsYmFjayx0eXBlKXtyZXR1cm4galF1ZXJ5LmlzRnVuY3Rpb24oZGF0YSkmJih0eXBlPXR5cGV8fGNhbGxiYWNrLGNhbGxiYWNrPWRhdGEsZGF0YT12b2lkIDApLGpRdWVyeS5hamF4KHt1cmw6dXJsLHR5cGU6bWV0aG9kLGRhdGFUeXBlOnR5cGUsZGF0YTpkYXRhLHN1Y2Nlc3M6Y2FsbGJhY2t9KX19KSxqUXVlcnkuX2V2YWxVcmw9ZnVuY3Rpb24odXJsKXtyZXR1cm4galF1ZXJ5LmFqYXgoe3VybDp1cmwsdHlwZTpcIkdFVFwiLGRhdGFUeXBlOlwic2NyaXB0XCIsYXN5bmM6ITEsZ2xvYmFsOiExLFwidGhyb3dzXCI6ITB9KX0salF1ZXJ5LmZuLmV4dGVuZCh7d3JhcEFsbDpmdW5jdGlvbihodG1sKXtpZihqUXVlcnkuaXNGdW5jdGlvbihodG1sKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpe2pRdWVyeSh0aGlzKS53cmFwQWxsKGh0bWwuY2FsbCh0aGlzLGkpKX0pO2lmKHRoaXNbMF0pe3ZhciB3cmFwPWpRdWVyeShodG1sLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApO3RoaXNbMF0ucGFyZW50Tm9kZSYmd3JhcC5pbnNlcnRCZWZvcmUodGhpc1swXSksd3JhcC5tYXAoZnVuY3Rpb24oKXtmb3IodmFyIGVsZW09dGhpcztlbGVtLmZpcnN0Q2hpbGQmJjE9PT1lbGVtLmZpcnN0Q2hpbGQubm9kZVR5cGU7KWVsZW09ZWxlbS5maXJzdENoaWxkO3JldHVybiBlbGVtfSkuYXBwZW5kKHRoaXMpfXJldHVybiB0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24oaHRtbCl7cmV0dXJuIGpRdWVyeS5pc0Z1bmN0aW9uKGh0bWwpP3RoaXMuZWFjaChmdW5jdGlvbihpKXtqUXVlcnkodGhpcykud3JhcElubmVyKGh0bWwuY2FsbCh0aGlzLGkpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBzZWxmPWpRdWVyeSh0aGlzKSxjb250ZW50cz1zZWxmLmNvbnRlbnRzKCk7Y29udGVudHMubGVuZ3RoP2NvbnRlbnRzLndyYXBBbGwoaHRtbCk6c2VsZi5hcHBlbmQoaHRtbCl9KX0sd3JhcDpmdW5jdGlvbihodG1sKXt2YXIgaXNGdW5jdGlvbj1qUXVlcnkuaXNGdW5jdGlvbihodG1sKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpe2pRdWVyeSh0aGlzKS53cmFwQWxsKGlzRnVuY3Rpb24/aHRtbC5jYWxsKHRoaXMsaSk6aHRtbCl9KX0sdW53cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpe2pRdWVyeS5ub2RlTmFtZSh0aGlzLFwiYm9keVwiKXx8alF1ZXJ5KHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KS5lbmQoKX19KSxqUXVlcnkuZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbS5vZmZzZXRXaWR0aDw9MCYmZWxlbS5vZmZzZXRIZWlnaHQ8PTB8fCFzdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cygpJiZcIm5vbmVcIj09PShlbGVtLnN0eWxlJiZlbGVtLnN0eWxlLmRpc3BsYXl8fGpRdWVyeS5jc3MoZWxlbSxcImRpc3BsYXlcIikpfSxqUXVlcnkuZXhwci5maWx0ZXJzLnZpc2libGU9ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIWpRdWVyeS5leHByLmZpbHRlcnMuaGlkZGVuKGVsZW0pfTt2YXIgcjIwPS8lMjAvZyxyYnJhY2tldD0vXFxbXFxdJC8sckNSTEY9L1xccj9cXG4vZyxyc3VibWl0dGVyVHlwZXM9L14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLHJzdWJtaXR0YWJsZT0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7alF1ZXJ5LnBhcmFtPWZ1bmN0aW9uKGEsdHJhZGl0aW9uYWwpe3ZhciBwcmVmaXgscz1bXSxhZGQ9ZnVuY3Rpb24oa2V5LHZhbHVlKXt2YWx1ZT1qUXVlcnkuaXNGdW5jdGlvbih2YWx1ZSk/dmFsdWUoKTpudWxsPT12YWx1ZT9cIlwiOnZhbHVlLHNbcy5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChrZXkpK1wiPVwiK2VuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSl9O2lmKHZvaWQgMD09PXRyYWRpdGlvbmFsJiYodHJhZGl0aW9uYWw9alF1ZXJ5LmFqYXhTZXR0aW5ncyYmalF1ZXJ5LmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksalF1ZXJ5LmlzQXJyYXkoYSl8fGEuanF1ZXJ5JiYhalF1ZXJ5LmlzUGxhaW5PYmplY3QoYSkpalF1ZXJ5LmVhY2goYSxmdW5jdGlvbigpe2FkZCh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihwcmVmaXggaW4gYSlidWlsZFBhcmFtcyhwcmVmaXgsYVtwcmVmaXhdLHRyYWRpdGlvbmFsLGFkZCk7cmV0dXJuIHMuam9pbihcIiZcIikucmVwbGFjZShyMjAsXCIrXCIpfSxqUXVlcnkuZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4galF1ZXJ5LnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGVsZW1lbnRzPWpRdWVyeS5wcm9wKHRoaXMsXCJlbGVtZW50c1wiKTtyZXR1cm4gZWxlbWVudHM/alF1ZXJ5Lm1ha2VBcnJheShlbGVtZW50cyk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigpe3ZhciB0eXBlPXRoaXMudHlwZTtyZXR1cm4gdGhpcy5uYW1lJiYhalF1ZXJ5KHRoaXMpLmlzKFwiOmRpc2FibGVkXCIpJiZyc3VibWl0dGFibGUudGVzdCh0aGlzLm5vZGVOYW1lKSYmIXJzdWJtaXR0ZXJUeXBlcy50ZXN0KHR5cGUpJiYodGhpcy5jaGVja2VkfHwhcmNoZWNrYWJsZVR5cGUudGVzdCh0eXBlKSl9KS5tYXAoZnVuY3Rpb24oaSxlbGVtKXt2YXIgdmFsPWpRdWVyeSh0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09dmFsP251bGw6alF1ZXJ5LmlzQXJyYXkodmFsKT9qUXVlcnkubWFwKHZhbCxmdW5jdGlvbih2YWwpe3JldHVybntuYW1lOmVsZW0ubmFtZSx2YWx1ZTp2YWwucmVwbGFjZShyQ1JMRixcIlxcclxcblwiKX19KTp7bmFtZTplbGVtLm5hbWUsdmFsdWU6dmFsLnJlcGxhY2UockNSTEYsXCJcXHJcXG5cIil9fSkuZ2V0KCl9fSksalF1ZXJ5LmFqYXhTZXR0aW5ncy54aHI9dm9pZCAwIT09d2luZG93LkFjdGl2ZVhPYmplY3Q/ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc0xvY2FsJiYvXihnZXR8cG9zdHxoZWFkfHB1dHxkZWxldGV8b3B0aW9ucykkL2kudGVzdCh0aGlzLnR5cGUpJiZjcmVhdGVTdGFuZGFyZFhIUigpfHxjcmVhdGVBY3RpdmVYSFIoKX06Y3JlYXRlU3RhbmRhcmRYSFI7dmFyIHhocklkPTAseGhyQ2FsbGJhY2tzPXt9LHhoclN1cHBvcnRlZD1qUXVlcnkuYWpheFNldHRpbmdzLnhocigpO3dpbmRvdy5hdHRhY2hFdmVudCYmd2luZG93LmF0dGFjaEV2ZW50KFwib251bmxvYWRcIixmdW5jdGlvbigpe2Zvcih2YXIga2V5IGluIHhockNhbGxiYWNrcyl4aHJDYWxsYmFja3Nba2V5XSh2b2lkIDAsITApfSksc3VwcG9ydC5jb3JzPSEheGhyU3VwcG9ydGVkJiZcIndpdGhDcmVkZW50aWFsc1wiaW4geGhyU3VwcG9ydGVkLHhoclN1cHBvcnRlZD1zdXBwb3J0LmFqYXg9ISF4aHJTdXBwb3J0ZWQseGhyU3VwcG9ydGVkJiZqUXVlcnkuYWpheFRyYW5zcG9ydChmdW5jdGlvbihvcHRpb25zKXtpZighb3B0aW9ucy5jcm9zc0RvbWFpbnx8c3VwcG9ydC5jb3JzKXt2YXIgY2FsbGJhY2s7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oaGVhZGVycyxjb21wbGV0ZSl7dmFyIGkseGhyPW9wdGlvbnMueGhyKCksaWQ9Kyt4aHJJZDtpZih4aHIub3BlbihvcHRpb25zLnR5cGUsb3B0aW9ucy51cmwsb3B0aW9ucy5hc3luYyxvcHRpb25zLnVzZXJuYW1lLG9wdGlvbnMucGFzc3dvcmQpLG9wdGlvbnMueGhyRmllbGRzKWZvcihpIGluIG9wdGlvbnMueGhyRmllbGRzKXhocltpXT1vcHRpb25zLnhockZpZWxkc1tpXTtvcHRpb25zLm1pbWVUeXBlJiZ4aHIub3ZlcnJpZGVNaW1lVHlwZSYmeGhyLm92ZXJyaWRlTWltZVR5cGUob3B0aW9ucy5taW1lVHlwZSksb3B0aW9ucy5jcm9zc0RvbWFpbnx8aGVhZGVyc1tcIlgtUmVxdWVzdGVkLVdpdGhcIl18fChoZWFkZXJzW1wiWC1SZXF1ZXN0ZWQtV2l0aFwiXT1cIlhNTEh0dHBSZXF1ZXN0XCIpO2ZvcihpIGluIGhlYWRlcnMpdm9pZCAwIT09aGVhZGVyc1tpXSYmeGhyLnNldFJlcXVlc3RIZWFkZXIoaSxoZWFkZXJzW2ldK1wiXCIpO3hoci5zZW5kKG9wdGlvbnMuaGFzQ29udGVudCYmb3B0aW9ucy5kYXRhfHxudWxsKSxjYWxsYmFjaz1mdW5jdGlvbihfLGlzQWJvcnQpe3ZhciBzdGF0dXMsc3RhdHVzVGV4dCxyZXNwb25zZXM7aWYoY2FsbGJhY2smJihpc0Fib3J0fHw0PT09eGhyLnJlYWR5U3RhdGUpKWlmKGRlbGV0ZSB4aHJDYWxsYmFja3NbaWRdLGNhbGxiYWNrPXZvaWQgMCx4aHIub25yZWFkeXN0YXRlY2hhbmdlPWpRdWVyeS5ub29wLGlzQWJvcnQpNCE9PXhoci5yZWFkeVN0YXRlJiZ4aHIuYWJvcnQoKTtlbHNle3Jlc3BvbnNlcz17fSxzdGF0dXM9eGhyLnN0YXR1cyxcInN0cmluZ1wiPT10eXBlb2YgeGhyLnJlc3BvbnNlVGV4dCYmKHJlc3BvbnNlcy50ZXh0PXhoci5yZXNwb25zZVRleHQpO3RyeXtzdGF0dXNUZXh0PXhoci5zdGF0dXNUZXh0fWNhdGNoKGUpe3N0YXR1c1RleHQ9XCJcIn1zdGF0dXN8fCFvcHRpb25zLmlzTG9jYWx8fG9wdGlvbnMuY3Jvc3NEb21haW4/MTIyMz09PXN0YXR1cyYmKHN0YXR1cz0yMDQpOnN0YXR1cz1yZXNwb25zZXMudGV4dD8yMDA6NDA0fXJlc3BvbnNlcyYmY29tcGxldGUoc3RhdHVzLHN0YXR1c1RleHQscmVzcG9uc2VzLHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSl9LG9wdGlvbnMuYXN5bmM/ND09PXhoci5yZWFkeVN0YXRlP3NldFRpbWVvdXQoY2FsbGJhY2spOnhoci5vbnJlYWR5c3RhdGVjaGFuZ2U9eGhyQ2FsbGJhY2tzW2lkXT1jYWxsYmFjazpjYWxsYmFjaygpfSxhYm9ydDpmdW5jdGlvbigpe2NhbGxiYWNrJiZjYWxsYmFjayh2b2lkIDAsITApfX19fSksalF1ZXJ5LmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OlwidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHRcIn0sY29udGVudHM6e3NjcmlwdDovKD86amF2YXxlY21hKXNjcmlwdC99LGNvbnZlcnRlcnM6e1widGV4dCBzY3JpcHRcIjpmdW5jdGlvbih0ZXh0KXtyZXR1cm4galF1ZXJ5Lmdsb2JhbEV2YWwodGV4dCksdGV4dH19fSksalF1ZXJ5LmFqYXhQcmVmaWx0ZXIoXCJzY3JpcHRcIixmdW5jdGlvbihzKXt2b2lkIDA9PT1zLmNhY2hlJiYocy5jYWNoZT0hMSkscy5jcm9zc0RvbWFpbiYmKHMudHlwZT1cIkdFVFwiLHMuZ2xvYmFsPSExKX0pLGpRdWVyeS5hamF4VHJhbnNwb3J0KFwic2NyaXB0XCIsZnVuY3Rpb24ocyl7aWYocy5jcm9zc0RvbWFpbil7dmFyIHNjcmlwdCxoZWFkPWRvY3VtZW50LmhlYWR8fGpRdWVyeShcImhlYWRcIilbMF18fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihfLGNhbGxiYWNrKXtzY3JpcHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKSxzY3JpcHQuYXN5bmM9ITAscy5zY3JpcHRDaGFyc2V0JiYoc2NyaXB0LmNoYXJzZXQ9cy5zY3JpcHRDaGFyc2V0KSxzY3JpcHQuc3JjPXMudXJsLHNjcmlwdC5vbmxvYWQ9c2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihfLGlzQWJvcnQpeyhpc0Fib3J0fHwhc2NyaXB0LnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3Qoc2NyaXB0LnJlYWR5U3RhdGUpKSYmKHNjcmlwdC5vbmxvYWQ9c2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLHNjcmlwdC5wYXJlbnROb2RlJiZzY3JpcHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHQpLHNjcmlwdD1udWxsLGlzQWJvcnR8fGNhbGxiYWNrKDIwMCxcInN1Y2Nlc3NcIikpfSxoZWFkLmluc2VydEJlZm9yZShzY3JpcHQsaGVhZC5maXJzdENoaWxkKX0sYWJvcnQ6ZnVuY3Rpb24oKXtzY3JpcHQmJnNjcmlwdC5vbmxvYWQodm9pZCAwLCEwKX19fX0pO3ZhciBvbGRDYWxsYmFja3M9W10scmpzb25wPS8oPSlcXD8oPz0mfCQpfFxcP1xcPy87alF1ZXJ5LmFqYXhTZXR1cCh7anNvbnA6XCJjYWxsYmFja1wiLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgY2FsbGJhY2s9b2xkQ2FsbGJhY2tzLnBvcCgpfHxqUXVlcnkuZXhwYW5kbytcIl9cIitub25jZSsrO3JldHVybiB0aGlzW2NhbGxiYWNrXT0hMCxjYWxsYmFja319KSxqUXVlcnkuYWpheFByZWZpbHRlcihcImpzb24ganNvbnBcIixmdW5jdGlvbihzLG9yaWdpbmFsU2V0dGluZ3MsanFYSFIpe3ZhciBjYWxsYmFja05hbWUsb3ZlcndyaXR0ZW4scmVzcG9uc2VDb250YWluZXIsanNvblByb3A9cy5qc29ucCE9PSExJiYocmpzb25wLnRlc3Qocy51cmwpP1widXJsXCI6XCJzdHJpbmdcIj09dHlwZW9mIHMuZGF0YSYmIShzLmNvbnRlbnRUeXBlfHxcIlwiKS5pbmRleE9mKFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIpJiZyanNvbnAudGVzdChzLmRhdGEpJiZcImRhdGFcIik7cmV0dXJuIGpzb25Qcm9wfHxcImpzb25wXCI9PT1zLmRhdGFUeXBlc1swXT8oY2FsbGJhY2tOYW1lPXMuanNvbnBDYWxsYmFjaz1qUXVlcnkuaXNGdW5jdGlvbihzLmpzb25wQ2FsbGJhY2spP3MuanNvbnBDYWxsYmFjaygpOnMuanNvbnBDYWxsYmFjayxqc29uUHJvcD9zW2pzb25Qcm9wXT1zW2pzb25Qcm9wXS5yZXBsYWNlKHJqc29ucCxcIiQxXCIrY2FsbGJhY2tOYW1lKTpzLmpzb25wIT09ITEmJihzLnVybCs9KHJxdWVyeS50ZXN0KHMudXJsKT9cIiZcIjpcIj9cIikrcy5qc29ucCtcIj1cIitjYWxsYmFja05hbWUpLHMuY29udmVydGVyc1tcInNjcmlwdCBqc29uXCJdPWZ1bmN0aW9uKCl7cmV0dXJuIHJlc3BvbnNlQ29udGFpbmVyfHxqUXVlcnkuZXJyb3IoY2FsbGJhY2tOYW1lK1wiIHdhcyBub3QgY2FsbGVkXCIpLHJlc3BvbnNlQ29udGFpbmVyWzBdfSxzLmRhdGFUeXBlc1swXT1cImpzb25cIixvdmVyd3JpdHRlbj13aW5kb3dbY2FsbGJhY2tOYW1lXSx3aW5kb3dbY2FsbGJhY2tOYW1lXT1mdW5jdGlvbigpe3Jlc3BvbnNlQ29udGFpbmVyPWFyZ3VtZW50c30sanFYSFIuYWx3YXlzKGZ1bmN0aW9uKCl7d2luZG93W2NhbGxiYWNrTmFtZV09b3ZlcndyaXR0ZW4sc1tjYWxsYmFja05hbWVdJiYocy5qc29ucENhbGxiYWNrPW9yaWdpbmFsU2V0dGluZ3MuanNvbnBDYWxsYmFjayxvbGRDYWxsYmFja3MucHVzaChjYWxsYmFja05hbWUpKSxyZXNwb25zZUNvbnRhaW5lciYmalF1ZXJ5LmlzRnVuY3Rpb24ob3ZlcndyaXR0ZW4pJiZvdmVyd3JpdHRlbihyZXNwb25zZUNvbnRhaW5lclswXSkscmVzcG9uc2VDb250YWluZXI9b3ZlcndyaXR0ZW49dm9pZCAwfSksXCJzY3JpcHRcIik6dm9pZCAwfSksalF1ZXJ5LnBhcnNlSFRNTD1mdW5jdGlvbihkYXRhLGNvbnRleHQsa2VlcFNjcmlwdHMpe2lmKCFkYXRhfHxcInN0cmluZ1wiIT10eXBlb2YgZGF0YSlyZXR1cm4gbnVsbDtcImJvb2xlYW5cIj09dHlwZW9mIGNvbnRleHQmJihrZWVwU2NyaXB0cz1jb250ZXh0LGNvbnRleHQ9ITEpLGNvbnRleHQ9Y29udGV4dHx8ZG9jdW1lbnQ7dmFyIHBhcnNlZD1yc2luZ2xlVGFnLmV4ZWMoZGF0YSksc2NyaXB0cz0ha2VlcFNjcmlwdHMmJltdO3JldHVybiBwYXJzZWQ/W2NvbnRleHQuY3JlYXRlRWxlbWVudChwYXJzZWRbMV0pXToocGFyc2VkPWpRdWVyeS5idWlsZEZyYWdtZW50KFtkYXRhXSxjb250ZXh0LHNjcmlwdHMpLHNjcmlwdHMmJnNjcmlwdHMubGVuZ3RoJiZqUXVlcnkoc2NyaXB0cykucmVtb3ZlKCksalF1ZXJ5Lm1lcmdlKFtdLHBhcnNlZC5jaGlsZE5vZGVzKSl9O3ZhciBfbG9hZD1qUXVlcnkuZm4ubG9hZDtqUXVlcnkuZm4ubG9hZD1mdW5jdGlvbih1cmwscGFyYW1zLGNhbGxiYWNrKXtpZihcInN0cmluZ1wiIT10eXBlb2YgdXJsJiZfbG9hZClyZXR1cm4gX2xvYWQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBzZWxlY3RvcixyZXNwb25zZSx0eXBlLHNlbGY9dGhpcyxvZmY9dXJsLmluZGV4T2YoXCIgXCIpO3JldHVybiBvZmY+PTAmJihzZWxlY3Rvcj1qUXVlcnkudHJpbSh1cmwuc2xpY2Uob2ZmLHVybC5sZW5ndGgpKSx1cmw9dXJsLnNsaWNlKDAsb2ZmKSksalF1ZXJ5LmlzRnVuY3Rpb24ocGFyYW1zKT8oY2FsbGJhY2s9cGFyYW1zLHBhcmFtcz12b2lkIDApOnBhcmFtcyYmXCJvYmplY3RcIj09dHlwZW9mIHBhcmFtcyYmKHR5cGU9XCJQT1NUXCIpLHNlbGYubGVuZ3RoPjAmJmpRdWVyeS5hamF4KHt1cmw6dXJsLHR5cGU6dHlwZSxkYXRhVHlwZTpcImh0bWxcIixkYXRhOnBhcmFtc30pLmRvbmUoZnVuY3Rpb24ocmVzcG9uc2VUZXh0KXtyZXNwb25zZT1hcmd1bWVudHMsc2VsZi5odG1sKHNlbGVjdG9yP2pRdWVyeShcIjxkaXY+XCIpLmFwcGVuZChqUXVlcnkucGFyc2VIVE1MKHJlc3BvbnNlVGV4dCkpLmZpbmQoc2VsZWN0b3IpOnJlc3BvbnNlVGV4dCl9KS5jb21wbGV0ZShjYWxsYmFjayYmZnVuY3Rpb24oanFYSFIsc3RhdHVzKXtzZWxmLmVhY2goY2FsbGJhY2sscmVzcG9uc2V8fFtqcVhIUi5yZXNwb25zZVRleHQsc3RhdHVzLGpxWEhSXSl9KSx0aGlzfSxqUXVlcnkuZWFjaChbXCJhamF4U3RhcnRcIixcImFqYXhTdG9wXCIsXCJhamF4Q29tcGxldGVcIixcImFqYXhFcnJvclwiLFwiYWpheFN1Y2Nlc3NcIixcImFqYXhTZW5kXCJdLGZ1bmN0aW9uKGksdHlwZSl7alF1ZXJ5LmZuW3R5cGVdPWZ1bmN0aW9uKGZuKXtyZXR1cm4gdGhpcy5vbih0eXBlLGZuKX19KSxqUXVlcnkuZXhwci5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKGVsZW0pe3JldHVybiBqUXVlcnkuZ3JlcChqUXVlcnkudGltZXJzLGZ1bmN0aW9uKGZuKXtyZXR1cm4gZWxlbT09PWZuLmVsZW19KS5sZW5ndGh9O3ZhciBkb2NFbGVtPXdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7alF1ZXJ5Lm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGVsZW0sb3B0aW9ucyxpKXt2YXIgY3VyUG9zaXRpb24sY3VyTGVmdCxjdXJDU1NUb3AsY3VyVG9wLGN1ck9mZnNldCxjdXJDU1NMZWZ0LGNhbGN1bGF0ZVBvc2l0aW9uLHBvc2l0aW9uPWpRdWVyeS5jc3MoZWxlbSxcInBvc2l0aW9uXCIpLGN1ckVsZW09alF1ZXJ5KGVsZW0pLHByb3BzPXt9O1wic3RhdGljXCI9PT1wb3NpdGlvbiYmKGVsZW0uc3R5bGUucG9zaXRpb249XCJyZWxhdGl2ZVwiKSxjdXJPZmZzZXQ9Y3VyRWxlbS5vZmZzZXQoKSxjdXJDU1NUb3A9alF1ZXJ5LmNzcyhlbGVtLFwidG9wXCIpLGN1ckNTU0xlZnQ9alF1ZXJ5LmNzcyhlbGVtLFwibGVmdFwiKSxjYWxjdWxhdGVQb3NpdGlvbj0oXCJhYnNvbHV0ZVwiPT09cG9zaXRpb258fFwiZml4ZWRcIj09PXBvc2l0aW9uKSYmalF1ZXJ5LmluQXJyYXkoXCJhdXRvXCIsW2N1ckNTU1RvcCxjdXJDU1NMZWZ0XSk+LTEsY2FsY3VsYXRlUG9zaXRpb24/KGN1clBvc2l0aW9uPWN1ckVsZW0ucG9zaXRpb24oKSxjdXJUb3A9Y3VyUG9zaXRpb24udG9wLGN1ckxlZnQ9Y3VyUG9zaXRpb24ubGVmdCk6KGN1clRvcD1wYXJzZUZsb2F0KGN1ckNTU1RvcCl8fDAsY3VyTGVmdD1wYXJzZUZsb2F0KGN1ckNTU0xlZnQpfHwwKSxqUXVlcnkuaXNGdW5jdGlvbihvcHRpb25zKSYmKG9wdGlvbnM9b3B0aW9ucy5jYWxsKGVsZW0saSxjdXJPZmZzZXQpKSxudWxsIT1vcHRpb25zLnRvcCYmKHByb3BzLnRvcD1vcHRpb25zLnRvcC1jdXJPZmZzZXQudG9wK2N1clRvcCksbnVsbCE9b3B0aW9ucy5sZWZ0JiYocHJvcHMubGVmdD1vcHRpb25zLmxlZnQtY3VyT2Zmc2V0LmxlZnQrY3VyTGVmdCksXCJ1c2luZ1wiaW4gb3B0aW9ucz9vcHRpb25zLnVzaW5nLmNhbGwoZWxlbSxwcm9wcyk6Y3VyRWxlbS5jc3MocHJvcHMpfX0salF1ZXJ5LmZuLmV4dGVuZCh7b2Zmc2V0OmZ1bmN0aW9uKG9wdGlvbnMpe2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PW9wdGlvbnM/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oaSl7alF1ZXJ5Lm9mZnNldC5zZXRPZmZzZXQodGhpcyxvcHRpb25zLGkpfSk7dmFyIGRvY0VsZW0sd2luLGJveD17dG9wOjAsbGVmdDowfSxlbGVtPXRoaXNbMF0sZG9jPWVsZW0mJmVsZW0ub3duZXJEb2N1bWVudDtpZihkb2MpcmV0dXJuIGRvY0VsZW09ZG9jLmRvY3VtZW50RWxlbWVudCxqUXVlcnkuY29udGFpbnMoZG9jRWxlbSxlbGVtKT8odHlwZW9mIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0IT09c3RydW5kZWZpbmVkJiYoYm94PWVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLHdpbj1nZXRXaW5kb3coZG9jKSx7dG9wOmJveC50b3ArKHdpbi5wYWdlWU9mZnNldHx8ZG9jRWxlbS5zY3JvbGxUb3ApLShkb2NFbGVtLmNsaWVudFRvcHx8MCksbGVmdDpib3gubGVmdCsod2luLnBhZ2VYT2Zmc2V0fHxkb2NFbGVtLnNjcm9sbExlZnQpLShkb2NFbGVtLmNsaWVudExlZnR8fDApfSk6Ym94fSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXNbMF0pe3ZhciBvZmZzZXRQYXJlbnQsb2Zmc2V0LHBhcmVudE9mZnNldD17dG9wOjAsbGVmdDowfSxlbGVtPXRoaXNbMF07cmV0dXJuXCJmaXhlZFwiPT09alF1ZXJ5LmNzcyhlbGVtLFwicG9zaXRpb25cIik/b2Zmc2V0PWVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6KG9mZnNldFBhcmVudD10aGlzLm9mZnNldFBhcmVudCgpLG9mZnNldD10aGlzLm9mZnNldCgpLGpRdWVyeS5ub2RlTmFtZShvZmZzZXRQYXJlbnRbMF0sXCJodG1sXCIpfHwocGFyZW50T2Zmc2V0PW9mZnNldFBhcmVudC5vZmZzZXQoKSkscGFyZW50T2Zmc2V0LnRvcCs9alF1ZXJ5LmNzcyhvZmZzZXRQYXJlbnRbMF0sXCJib3JkZXJUb3BXaWR0aFwiLCEwKSxwYXJlbnRPZmZzZXQubGVmdCs9alF1ZXJ5LmNzcyhvZmZzZXRQYXJlbnRbMF0sXCJib3JkZXJMZWZ0V2lkdGhcIiwhMCkpLHt0b3A6b2Zmc2V0LnRvcC1wYXJlbnRPZmZzZXQudG9wLWpRdWVyeS5jc3MoZWxlbSxcIm1hcmdpblRvcFwiLCEwKSxsZWZ0Om9mZnNldC5sZWZ0LXBhcmVudE9mZnNldC5sZWZ0LWpRdWVyeS5jc3MoZWxlbSxcIm1hcmdpbkxlZnRcIiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7Zm9yKHZhciBvZmZzZXRQYXJlbnQ9dGhpcy5vZmZzZXRQYXJlbnR8fGRvY0VsZW07b2Zmc2V0UGFyZW50JiYhalF1ZXJ5Lm5vZGVOYW1lKG9mZnNldFBhcmVudCxcImh0bWxcIikmJlwic3RhdGljXCI9PT1qUXVlcnkuY3NzKG9mZnNldFBhcmVudCxcInBvc2l0aW9uXCIpOylvZmZzZXRQYXJlbnQ9b2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDtyZXR1cm4gb2Zmc2V0UGFyZW50fHxkb2NFbGVtfSl9fSksalF1ZXJ5LmVhY2goe3Njcm9sbExlZnQ6XCJwYWdlWE9mZnNldFwiLHNjcm9sbFRvcDpcInBhZ2VZT2Zmc2V0XCJ9LGZ1bmN0aW9uKG1ldGhvZCxwcm9wKXt2YXIgdG9wPS9ZLy50ZXN0KHByb3ApO2pRdWVyeS5mblttZXRob2RdPWZ1bmN0aW9uKHZhbCl7cmV0dXJuIGFjY2Vzcyh0aGlzLGZ1bmN0aW9uKGVsZW0sbWV0aG9kLHZhbCl7dmFyIHdpbj1nZXRXaW5kb3coZWxlbSk7cmV0dXJuIHZvaWQgMD09PXZhbD93aW4/cHJvcCBpbiB3aW4/d2luW3Byb3BdOndpbi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbbWV0aG9kXTplbGVtW21ldGhvZF06dm9pZCh3aW4/d2luLnNjcm9sbFRvKHRvcD9qUXVlcnkod2luKS5zY3JvbGxMZWZ0KCk6dmFsLHRvcD92YWw6alF1ZXJ5KHdpbikuc2Nyb2xsVG9wKCkpOmVsZW1bbWV0aG9kXT12YWwpfSxtZXRob2QsdmFsLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSksalF1ZXJ5LmVhY2goW1widG9wXCIsXCJsZWZ0XCJdLGZ1bmN0aW9uKGkscHJvcCl7alF1ZXJ5LmNzc0hvb2tzW3Byb3BdPWFkZEdldEhvb2tJZihzdXBwb3J0LnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oZWxlbSxjb21wdXRlZCl7cmV0dXJuIGNvbXB1dGVkPyhjb21wdXRlZD1jdXJDU1MoZWxlbSxwcm9wKSxybnVtbm9ucHgudGVzdChjb21wdXRlZCk/alF1ZXJ5KGVsZW0pLnBvc2l0aW9uKClbcHJvcF0rXCJweFwiOmNvbXB1dGVkKTp2b2lkIDB9KX0pLGpRdWVyeS5lYWNoKHtIZWlnaHQ6XCJoZWlnaHRcIixXaWR0aDpcIndpZHRoXCJ9LGZ1bmN0aW9uKG5hbWUsdHlwZSl7alF1ZXJ5LmVhY2goe3BhZGRpbmc6XCJpbm5lclwiK25hbWUsY29udGVudDp0eXBlLFwiXCI6XCJvdXRlclwiK25hbWV9LGZ1bmN0aW9uKGRlZmF1bHRFeHRyYSxmdW5jTmFtZSl7alF1ZXJ5LmZuW2Z1bmNOYW1lXT1mdW5jdGlvbihtYXJnaW4sdmFsdWUpe3ZhciBjaGFpbmFibGU9YXJndW1lbnRzLmxlbmd0aCYmKGRlZmF1bHRFeHRyYXx8XCJib29sZWFuXCIhPXR5cGVvZiBtYXJnaW4pLGV4dHJhPWRlZmF1bHRFeHRyYXx8KG1hcmdpbj09PSEwfHx2YWx1ZT09PSEwP1wibWFyZ2luXCI6XCJib3JkZXJcIik7cmV0dXJuIGFjY2Vzcyh0aGlzLGZ1bmN0aW9uKGVsZW0sdHlwZSx2YWx1ZSl7dmFyIGRvYztyZXR1cm4galF1ZXJ5LmlzV2luZG93KGVsZW0pP2VsZW0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W1wiY2xpZW50XCIrbmFtZV06OT09PWVsZW0ubm9kZVR5cGU/KGRvYz1lbGVtLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChlbGVtLmJvZHlbXCJzY3JvbGxcIituYW1lXSxkb2NbXCJzY3JvbGxcIituYW1lXSxlbGVtLmJvZHlbXCJvZmZzZXRcIituYW1lXSxkb2NbXCJvZmZzZXRcIituYW1lXSxkb2NbXCJjbGllbnRcIituYW1lXSkpOnZvaWQgMD09PXZhbHVlP2pRdWVyeS5jc3MoZWxlbSx0eXBlLGV4dHJhKTpqUXVlcnkuc3R5bGUoZWxlbSx0eXBlLHZhbHVlLGV4dHJhKX0sdHlwZSxjaGFpbmFibGU/bWFyZ2luOnZvaWQgMCxjaGFpbmFibGUsbnVsbCl9fSl9KSxqUXVlcnkuZm4uc2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0salF1ZXJ5LmZuLmFuZFNlbGY9alF1ZXJ5LmZuLmFkZEJhY2ssXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoXCJqcXVlcnlcIixbXSxmdW5jdGlvbigpe3JldHVybiBqUXVlcnl9KTt2YXIgX2pRdWVyeT13aW5kb3cualF1ZXJ5LF8kPXdpbmRvdy4kO3JldHVybiBqUXVlcnkubm9Db25mbGljdD1mdW5jdGlvbihkZWVwKXtyZXR1cm4gd2luZG93LiQ9PT1qUXVlcnkmJih3aW5kb3cuJD1fJCksZGVlcCYmd2luZG93LmpRdWVyeT09PWpRdWVyeSYmKHdpbmRvdy5qUXVlcnk9X2pRdWVyeSksalF1ZXJ5fSx0eXBlb2Ygbm9HbG9iYWw9PT1zdHJ1bmRlZmluZWQmJih3aW5kb3cualF1ZXJ5PXdpbmRvdy4kPWpRdWVyeSksalF1ZXJ5fSk7Il0sIm1hcHBpbmdzIjoiOztBQUFBLENBQUMsVUFBU0EsTUFBTSxFQUFDQyxPQUFPLEVBQUM7RUFBQyxRQUFRLElBQUUsT0FBT0MsTUFBTSxJQUFFLFFBQVEsSUFBRSxPQUFPQSxNQUFNLENBQUNDLE9BQU8sR0FBQ0QsTUFBTSxDQUFDQyxPQUFPLEdBQUNILE1BQU0sQ0FBQ0ksUUFBUSxHQUFDSCxPQUFPLENBQUNELE1BQU0sRUFBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLFVBQVNLLENBQUMsRUFBQztJQUFDLElBQUcsQ0FBQ0EsQ0FBQyxDQUFDRCxRQUFRLEVBQUMsTUFBTSxJQUFJRSxLQUFLLENBQUMsMENBQTBDLENBQUM7SUFBQyxPQUFPTCxPQUFPLENBQUNJLENBQUMsQ0FBQztFQUFBLENBQUMsR0FBQ0osT0FBTyxDQUFDRCxNQUFNLENBQUM7QUFBQSxDQUFDLENBQUMsV0FBVyxJQUFFLE9BQU9PLE1BQU0sR0FBQ0EsTUFBTSxTQUFLLEVBQUMsVUFBU0EsTUFBTSxFQUFDQyxRQUFRLEVBQUM7RUFBQyxTQUFTQyxXQUFXQSxDQUFDQyxHQUFHLEVBQUM7SUFBQyxJQUFJQyxNQUFNLEdBQUMsUUFBUSxJQUFHRCxHQUFHLElBQUVBLEdBQUcsQ0FBQ0MsTUFBTTtNQUFDQyxJQUFJLEdBQUNDLE1BQU0sQ0FBQ0QsSUFBSSxDQUFDRixHQUFHLENBQUM7SUFBQyxPQUFNLFVBQVUsS0FBR0UsSUFBSSxJQUFFQyxNQUFNLENBQUNDLFFBQVEsQ0FBQ0osR0FBRyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxLQUFHQSxHQUFHLENBQUNLLFFBQVEsSUFBRUosTUFBTSxHQUFDLENBQUMsQ0FBQyxHQUFDLE9BQU8sS0FBR0MsSUFBSSxJQUFFLENBQUMsS0FBR0QsTUFBTSxJQUFFLFFBQVEsSUFBRSxPQUFPQSxNQUFNLElBQUVBLE1BQU0sR0FBQyxDQUFDLElBQUVBLE1BQU0sR0FB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