PageSourceSearch

https://anebquebec.com/app/themes/wp-aneb-corpo/public/javascripts/common.js

js anebquebec.com collected 2026-09-24 07:13:29 UTC 2,407,081 bytes, 14,938 lines download raw bytes

1(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
2var $ = require("jquery");
3var breakpoint = require('./app-breakpoints');
4require('./app-accordion');
5var slick = require("slick");
6var _ = require('underscore');
7var _gridSize = breakpoint().match(/(\d+)/g);
8var _winSize = $(window).width();
9var	_gridLabel = breakpoint().replace(/\d+/g, '').replace(" ", "").replace(/\"/g, "");
10
11var sticky = $('.c-navigation').offset().top;
12
13require('./app-map');
14
15$(function() {
16	$('.carousel').slick({
17		autoplay: true,
18		responsive: false,
19		fade: true,
20		dots: false,
21		autoplaySpeed: 8500,
22		arrows: false
23	});
24
25	$('.carousel-element').slick({
26		autoplay: true,
27		responsive: [
28		{
29		 breakpoint: 767,
30	      settings: {
31	        slidesToShow: 1,
32	        slidesToScroll: 1
33	      }
34		}],
35		//fade: true,
36		dots: true,
37		slidesToShow: 2,
38 		slidesToScroll: 2,
39		arrows: false
40	});
41
42
43	$(".post .item .item-media").click(function() {
44		if( $(this).find("a").attr("href") ) {
45	 		 window.location = $(this).find("a").attr("href");
46		}
47	  return false;
48	});
49
50	$(window).scroll(function() {
51		console.log(_gridLabel);
52
53		if(_gridLabel != "smartphone") {
54			if ($(this).scrollTop() > sticky){
55		   	 $('.c-navigation').addClass("sticky");
56			  } else {
57			    $('.c-navigation').removeClass("sticky");
58			  }
59		}
60	});
61
62	$(document).on('click', '.nav-trigger', function(e) {
63		$(this).toggleClass('is-active');
64		$('#menu-mobile').slideToggle();
65		return false;
66	});
67
68	$(document).on("click", ".new-window", function () {
69
70		var w = 500;
71		var h = 500;
72
73		var dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : screen.left;
74		var dualScreenTop = window.screenTop != undefined ? window.screenTop : screen.top;
75
76		var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;
77   		var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;
78
79   		var title = $(this).attr('data-title');
80   		var url = $(this).attr('href');
81
82		var left = ((width / 2) - (w / 2)) + dualScreenLeft;
83		var top = ((height / 2) - (h / 2)) + dualScreenTop;
84		var newWindow = window.open(url, title, 'scrollbars=yes, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);
85
86		if (window.focus) {
87	       newWindow.focus();
88	    }
89
90   		return false;
91    });
92
93    $(window).resize(function(){
94		_gridSize = breakpoint().match(/(\d+)/g);
95		_winSize = $(window).width();
96		_margin = (_winSize - _gridSize) / 2;
97
98		_gridLabel = breakpoint().replace(/\d+/g, '').replace(' ','');
99
100		if(_gridLabel == "smartphone") {
101			$('.c-navigation').removeClass("sticky");
102		}
103
104	}).resize();
105
106
107	
108	$(".c-alimentaire .list a").click(function () {
109		$(".c-alimentaire .list li").removeClass("active"),
110		$(this).parent().addClass("active"),
111		$(".c-alimentaire .contentBox").hide(),
112		$(".c-alimentaire .contentBox[data-id=" + $(this).attr("data-id") + "]").fadeIn();
113	});
114	$(".c-alimentaire .list li:eq(0) a").trigger("click");
115	$(".carousel").slick({ autoplay: !0, responsive: !1, fade: !0, dots: !1, autoplaySpeed: 8500, arrows: !1 });
116	$(".carousel-element").slick({ autoplay: !0, responsive: [{ breakpoint: 767, settings: { slidesToShow: 1, slidesToScroll: 1 } }], dots: !0, slidesToShow: 2, slidesToScroll: 2, arrows: !1 });
117	$(".post .item .item-media").click(function () {
118		return $(this).find("a").attr("href") && (window.location = $(this).find("a").attr("href")), !1;
119	});
120	// $(window).scroll(function () {
121	// 	"smartphone" != a && ($(this).scrollTop() > l ? $(".c-navigation").addClass("sticky") : $(".c-navigation").removeClass("sticky"));
122	// });
123	// $(document).on("click", ".nav-trigger", function (e) {
124	// 	return $(this).toggleClass("is-active"), $("#menu-mobile").slideToggle(), !1;
125	// });
126	$(document).on("click", ".new-window", function () {
127		var e = 500,
128			t = 500,
129			n = void 0 != window.screenLeft ? window.screenLeft : screen.left,
130			o = void 0 != window.screenTop ? window.screenTop : screen.top,
131			r = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width,
132			s = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height,
133			a = $(this).attr("data-title"),
134			l = $(this).attr("href"),
135			c = r / 2 - e / 2 + n,
136			u = s / 2 - t / 2 + o,
137			d = window.open(l, a, "scrollbars=yes, width=" + e + ", height=" + t + ", top=" + u + ", left=" + c);
138		return window.focus && d.focus(), !1;
139	});
140	// $(window).resize(function () {
141	// 		(r = o().match(/(\d+)/g)), (s = i(window).width()), (_margin = (s - r) / 2), (a = o().replace(/\d+/g, "").replace(" ", "")), "smartphone" == a && i(".c-navigation").removeClass("sticky");
142	// }).resize();
143		
144	/*
145	function PopupCenter(url, title, w, h) {
146    // Fixes dual-screen position                         Most browsers      Firefox
147
148    // Puts focus on the newWindow
149    if (window.focus) {
150        newWindow.focus();
151    }
152}
153	 */
154});
155
156/*var $ = require("jquery");
157var stick_in_parent = require("sticky-kit");
158var slick = require("slick");
159var breakpoint = require('./app-breakpoints');
160var sameheight = require('./app-sameheight');
161var TweenMax = require('TweenMax');
162var _ = require('underscore');
163
164var _gridSize = breakpoint().match(/(\d+)/g);
165var _winSize = $(window).width();
166var current = 0;
167var next = 0;
168var prev = 0;
169var	_gridLabel = breakpoint().replace(/\d+/g, '').replace(" ", "").replace(/\"/g, "");
170var debouncedLayout = _.debounce(_resize, 300);
171
172var slickVar = {
173	centerMode: true,
174	autoplay: ((_gridSize > 768) ? true : false),
175	variableWidth: true,
176	slidesToShow: ((_gridSize > 768) ? 3 : 1),
177	infinite: false,
178	initialSlide: 1,
179	centerPadding: '0',
180	draggable: false
181};
182
183$(function() {
184	_gridSize = breakpoint().match(/(\d+)/g);
185	_winSize = $(window).width();
186	var _margin = (_winSize - _gridSize) / 2;
187	_gridLabel = breakpoint().replace(/\d+/g, '').replace(" ", "").replace(/\"/g, "");
188
189	$('.fb-share').click(function(e) {
190		e.preventDefault();
191		window.open($(this).attr('href'), 'fbShareWindow',
192			'height=450, width=550, top=' + ($(window).height() / 2 - 275) +
193			', left=' + ($(window).width() / 2 - 225) +
194			', toolbar=0, location=0, menubar=0, directories=0, scrollbars=0');
195		return false;
196	});
197
198console.log(_gridLabel);
199
200	if (_gridLabel !== "smartphone" && _gridLabel !== "tablet" ) {
201		$("#stick-in-parent").stick_in_parent({
202			parent: '.source-_product_cat',
203			sticky_class: 'is-stuck',
204		});
205	}
206
207	$(window).resize(debouncedLayout);
208	_resize();
209
210	$(document).on('click', '.nav-trigger', function(e) {
211
212		$(this).toggleClass('is-active');
213		$('#menu-mobile').slideToggle();
214
215		return false;
216	});
217
218	$(document).on('mouseenter', '.menu-item', function() {
219		if (_gridSize > 768) {
220			var height = $('.sub-menu ul', this).outerHeight(true);
221
222			if (height) {
223				TweenMax.set(['.menu-depth-1', '.menu-depth-2'], {
224					height: height
225				});
226			}
227		}
228	});
229
230	$(document).on('mouseenter', '.menu-item-has-children', function() {
231		if (_gridSize > 768) {
232			var padding = $(this).offset().left;
233			var grid = $('#menu-menu-primaire').outerWidth();
234
235			$(this).children('div.menu-depth-1').css({
236				paddingLeft: padding
237			});
238
239			$('.menu-item-depth-1').css({
240				width: grid * 0.3
241			});
242
243			$('.menu-depth-2').css({
244				left: grid * 0.3
245			}).children('ul').css({
246				width: grid * 0.7
247			});
248		}
249	});
250
251
252	$('.slider').slick({
253		autoplay: true,
254		fade: true,
255		dots: true,
256		arrows: false
257	});
258
259	$('.product-formats-slider').slick({
260		slidesToShow: 1,
261		slidesToScroll: 1,
262		fade: true,
263		centerMode: true,
264		asNavFor: '.product-formats-nav',
265	});
266
267	$('.product-formats-nav').slick({
268		slidesToShow: 4,
269		slidesToScroll: 4,
270		centerPadding: 0,
271		asNavFor: '.product-formats-slider',
272		focusOnSelect: true,
273		variableWidth: true,
274		useTransform: false,
275	});
276
277	$('.related-products-slider').slick({
278		adaptiveHeight: true,
279		dots: true,
280	});
281
282	$('.related-products-slider').on('setPosition', function(event, slick,
283		direction) {
284		_resize();
285	});
286
287});
288
289var runSlick = function() {
290	current = 0;
291	next = 0;
292	prev = 0;
293
294	if ($('.carousel').find('.c-list-item-carousel').length >= 3) {
295		var carousel = $('.carousel');
296		if ($(carousel).hasClass('slick-slider')) carousel.slick('unslick');
297
298		carousel.on('init', function(slick) {
299			if (_gridSize > 768) {
300				current = carousel.find('.slick-current');
301				prev = current.prev();
302				next = current.next();
303				TweenMax.set([prev, next], {
304					autoAlpha: 1,
305					scale: 0.7
306				});
307				TweenMax.set(current, {
308					scale: 1,
309					autoAlpha: 1
310				});
311			}
312		});
313
314		carousel.slick(slickVar).on('beforeChange', function(event, slick,
315			currentSlide, nextSlide) {
316			if (_gridSize > 768) {
317
318				if (Math.abs(nextSlide - currentSlide) == 1) {
319					direction = (nextSlide - currentSlide > 0) ? "right" : "left";
320				} else {
321					direction = (nextSlide - currentSlide > 0) ? "left" : "right";
322				}
323				TweenMax.to(slick.$slides.eq(currentSlide), 0.1, {
324					scale: 0.7,
325					autoAlpha: 1
326				});
327				TweenMax.to(slick.$slides.eq(nextSlide), 0.1, {
328					autoAlpha: 1,
329					scale: 1
330				});
331
332				if (direction === "right") {
333					//edge
334					TweenMax.to(slick.$slides.eq(currentSlide - 1), 0.1, {
335						autoAlpha: 0
336					});
337					TweenMax.to(slick.$slides.eq(nextSlide + 1), 0.1, {
338						autoAlpha: 1,
339						scale: 0.7
340					});
341				} else {
342					TweenMax.to(slick.$slides.eq(currentSlide + 1), 0.1, {
343						autoAlpha: 0
344					});
345					TweenMax.to(slick.$slides.eq(nextSlide - 1), 0.1, {
346						autoAlpha: 1,
347						scale: 0.7
348					});
349				}
350			}
351		});
352
353	} else if ($('.c-section.has-source .c-listing .c-list-item').length >= 3) {
354
355		var carousel = $('.c-section.has-source .c-listing__wrapper');
356		if ($(carousel).hasClass('slick-slider')) carousel.slick('unslick');
357
358		// if( $(carousel).find('.c-list-item-carousel').length > 3) {
359		carousel.on('init', function(slick) {
360			if (_gridSize > 768) {
361				current = carousel.find('.slick-current');
362				prev = current.prev();
363				next = current.next();
364
365				TweenMax.set([prev, next], {
366					autoAlpha: 1
367				});
368				TweenMax.set(current, {
369					autoAlpha: 1
370				});
371			}
372		});
373
374		carousel.slick(slickVar).on('beforeChange', function(event, slick,
375			currentSlide, nextSlide) {
376			if (_gridSize > 768) {
377				if (Math.abs(nextSlide - currentSlide) == 1) {
378					direction = (nextSlide - currentSlide > 0) ? "right" : "left";
379				} else {
380					direction = (nextSlide - currentSlide > 0) ? "left" : "right";
381				}
382				TweenMax.to(slick.$slides.eq(currentSlide), 0.1, {
383					autoAlpha: 1
384				});
385				TweenMax.to(slick.$slides.eq(nextSlide), 0.1, {
386					autoAlpha: 1
387				});
388
389				if (direction === "right") {
390					//edge
391					TweenMax.to(slick.$slides.eq(currentSlide - 1), 0.1, {
392						autoAlpha: 0
393					});
394					TweenMax.to(slick.$slides.eq(nextSlide + 1), 0.1, {
395						autoAlpha: 1
396					});
397				} else {
398					TweenMax.to(slick.$slides.eq(currentSlide + 1), 0.1, {
399						autoAlpha: 0
400					});
401					TweenMax.to(slick.$slides.eq(nextSlide - 1), 0.1, {
402						autoAlpha: 1
403					});
404				}
405			}
406		});
407	}
408	// }
409}
410
411$(window).resize(function(){
412	_gridSize = breakpoint().match(/(\d+)/g);
413	_gridLabel = breakpoint().replace(/\d+/g, '').replace(" ", "").replace(/\"/g, "");
414	_winSize = $(window).width();
415	_margin = (_winSize - _gridSize) / 2;
416	maxHeight = -1;
417
418	if (_gridSize > 1200) {
419		$('.c-section--header.has-thumbnail .c-section__wrapper').css({
420			paddingLeft: _margin
421		});
422	}
423})
424
425function _resize() {
426	console.log("resize once");
427	_gridSize = breakpoint().match(/(\d+)/g);
428	_gridLabel = breakpoint().replace(/\d+/g, '').replace(" ", "").replace(/\"/g, "");
429	_winSize = $(window).width();
430	_margin = (_winSize - _gridSize) / 2;
431	maxHeight = -1;
432
433	//Reset
434	$('.c-section--header.has-thumbnail .c-section__wrapper').css('paddingLeft',
435		'');
436
437	$('.menu-depth-1, .menu-depth-2').css({
438		minHeight: $('.menu-depth-1').find('ul').eq(0).outerHeight(true)
439	});
440
441	if (_gridSize > 1200) {
442		$('.c-section--header.has-thumbnail .c-section__wrapper').css({
443			paddingLeft: _margin
444		});
445	}
446
447	if ($('.same-height').length && _gridLabel !== "smartphone") {
448		$('.same-height').equalRowHeights();
449	}
450
451	runSlick();
452}
453*/
454},{"./app-accordion":5,"./app-breakpoints":6,"./app-map":7,"jquery":2,"slick":3,"underscore":4}],2:[function(require,module,exports){
455(function (global){
456; var __browserify_shim_require__=require;(function browserifyShim(module, exports, require, define, browserify_shim__define__module__export__) {
457/*!
458 * jQuery JavaScript Library v2.1.4
459 * http://jquery.com/
460 *
461 * Includes Sizzle.js
462 * http://sizzlejs.com/
463 *
464 * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
465 * Released under the MIT license
466 * http://jquery.org/license
467 *
468 * Date: 2015-04-28T16:01Z
469 */
470
471(function( global, factory ) {
472
473	if ( typeof module === "object" && typeof module.exports === "object" ) {
474		// For CommonJS and CommonJS-like environments where a proper `window`
475		// is present, execute the factory and get jQuery.
476		// For environments that do not have a `window` with a `document`
477		// (such as Node.js), expose a factory as module.exports.
478		// This accentuates the need for the creation of a real `window`.
479		// e.g. var jQuery = require("jquery")(window);
480		// See ticket #14549 for more info.
481		module.exports = global.document ?
482			factory( global, true ) :
483			function( w ) {
484				if ( !w.document ) {
485					throw new Error( "jQuery requires a window with a document" );
486				}
487				return factory( w );
488			};
489	} else {
490		factory( global );
491	}
492
493// Pass this if window is not defined yet
494}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
495
496// Support: Firefox 18+
497// Can't be in strict mode, several libs including ASP.NET trace
498// the stack via arguments.caller.callee and Firefox dies if
499// you try to trace through "use strict" call chains. (#13335)
500//
501
502var arr = [];
503
504var slice = arr.slice;
505
506var concat = arr.concat;
507
508var push = arr.push;
509
510var indexOf = arr.indexOf;
511
512var class2type = {};
513
514var toString = class2type.toString;
515
516var hasOwn = class2type.hasOwnProperty;
517
518var support = {};
519
520
521
522var
523	// Use the correct document accordingly with window argument (sandbox)
524	document = window.document,
525
526	version = "2.1.4",
527
528	// Define a local copy of jQuery
529	jQuery = function( selector, context ) {
530		// The jQuery object is actually just the init constructor 'enhanced'
531		// Need init if jQuery is called (just allow error to be thrown if not included)
532		return new jQuery.fn.init( selector, context );
533	},
534
535	// Support: Android<4.1
536	// Make sure we trim BOM and NBSP
537	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
538
539	// Matches dashed string for camelizing
540	rmsPrefix = /^-ms-/,
541	rdashAlpha = /-([\da-z])/gi,
542
543	// Used by jQuery.camelCase as callback to replace()
544	fcamelCase = function( all, letter ) {
545		return letter.toUpperCase();
546	};
547
548jQuery.fn = jQuery.prototype = {
549	// The current version of jQuery being used
550	jquery: version,
551
552	constructor: jQuery,
553
554	// Start with an empty selector
555	selector: "",
556
557	// The default length of a jQuery object is 0
558	length: 0,
559
560	toArray: function() {
561		return slice.call( this );
562	},
563
564	// Get the Nth element in the matched element set OR
565	// Get the whole matched element set as a clean array
566	get: function( num ) {
567		return num != null ?
568
569			// Return just the one element from the set
570			( num < 0 ? this[ num + this.length ] : this[ num ] ) :
571
572			// Return all the elements in a clean array
573			slice.call( this );
574	},
575
576	// Take an array of elements and push it onto the stack
577	// (returning the new matched element set)
578	pushStack: function( elems ) {
579
580		// Build a new jQuery matched element set
581		var ret = jQuery.merge( this.constructor(), elems );
582
583		// Add the old object onto the stack (as a reference)
584		ret.prevObject = this;
585		ret.context = this.context;
586
587		// Return the newly-formed element set
588		return ret;
589	},
590
591	// Execute a callback for every element in the matched set.
592	// (You can seed the arguments with an array of args, but this is
593	// only used internally.)
594	each: function( callback, args ) {
595		return jQuery.each( this, callback, args );
596	},
597
598	map: function( callback ) {
599		return this.pushStack( jQuery.map(this, function( elem, i ) {
600			return callback.call( elem, i, elem );
601		}));
602	},
603
604	slice: function() {
605		return this.pushStack( slice.apply( this, arguments ) );
606	},
607
608	first: function() {
609		return this.eq( 0 );
610	},
611
612	last: function() {
613		return this.eq( -1 );
614	},
615
616	eq: function( i ) {
617		var len = this.length,
618			j = +i + ( i < 0 ? len : 0 );
619		return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
620	},
621
622	end: function() {
623		return this.prevObject || this.constructor(null);
624	},
625
626	// For internal use only.
627	// Behaves like an Array's method, not like a jQuery method.
628	push: push,
629	sort: arr.sort,
630	splice: arr.splice
631};
632
633jQuery.extend = jQuery.fn.extend = function() {
634	var options, name, src, copy, copyIsArray, clone,
635		target = arguments[0] || {},
636		i = 1,
637		length = arguments.length,
638		deep = false;
639
640	// Handle a deep copy situation
641	if ( typeof target === "boolean" ) {
642		deep = target;
643
644		// Skip the boolean and the target
645		target = arguments[ i ] || {};
646		i++;
647	}
648
649	// Handle case when target is a string or something (possible in deep copy)
650	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
651		target = {};
652	}
653
654	// Extend jQuery itself if only one argument is passed
655	if ( i === length ) {
656		target = this;
657		i--;
658	}
659
660	for ( ; i < length; i++ ) {
661		// Only deal with non-null/undefined values
662		if ( (options = arguments[ i ]) != null ) {
663			// Extend the base object
664			for ( name in options ) {
665				src = target[ name ];
666				copy = options[ name ];
667
668				// Prevent never-ending loop
669				if ( target === copy ) {
670					continue;
671				}
672
673				// Recurse if we're merging plain objects or arrays
674				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
675					if ( copyIsArray ) {
676						copyIsArray = false;
677						clone = src && jQuery.isArray(src) ? src : [];
678
679					} else {
680						clone = src && jQuery.isPlainObject(src) ? src : {};
681					}
682
683					// Never move original objects, clone them
684					target[ name ] = jQuery.extend( deep, clone, copy );
685
686				// Don't bring in undefined values
687				} else if ( copy !== undefined ) {
688					target[ name ] = copy;
689				}
690			}
691		}
692	}
693
694	// Return the modified object
695	return target;
696};
697
698jQuery.extend({
699	// Unique for each copy of jQuery on the page
700	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
701
702	// Assume jQuery is ready without the ready module
703	isReady: true,
704
705	error: function( msg ) {
706		throw new Error( msg );
707	},
708
709	noop: function() {},
710
711	isFunction: function( obj ) {
712		return jQuery.type(obj) === "function";
713	},
714
715	isArray: Array.isArray,
716
717	isWindow: function( obj ) {
718		return obj != null && obj === obj.window;
719	},
720
721	isNumeric: function( obj ) {
722		// parseFloat NaNs numeric-cast false positives (null|true|false|"")
723		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
724		// subtraction forces infinities to NaN
725		// adding 1 corrects loss of precision from parseFloat (#15100)
726		return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;
727	},
728
729	isPlainObject: function( obj ) {
730		// Not plain objects:
731		// - Any object or value whose internal [[Class]] property is not "[object Object]"
732		// - DOM nodes
733		// - window
734		if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
735			return false;
736		}
737
738		if ( obj.constructor &&
739				!hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
740			return false;
741		}
742
743		// If the function hasn't returned already, we're confident that
744		// |obj| is a plain object, created by {} or constructed with new Object
745		return true;
746	},
747
748	isEmptyObject: function( obj ) {
749		var name;
750		for ( name in obj ) {
751			return false;
752		}
753		return true;
754	},
755
756	type: function( obj ) {
757		if ( obj == null ) {
758			return obj + "";
759		}
760		// Support: Android<4.0, iOS<6 (functionish RegExp)
761		return typeof obj === "object" || typeof obj === "function" ?
762			class2type[ toString.call(obj) ] || "object" :
763			typeof obj;
764	},
765
766	// Evaluates a script in a global context
767	globalEval: function( code ) {
768		var script,
769			indirect = eval;
770
771		code = jQuery.trim( code );
772
773		if ( code ) {
774			// If the code includes a valid, prologue position
775			// strict mode pragma, execute code by injecting a
776			// script tag into the document.
777			if ( code.indexOf("use strict") === 1 ) {
778				script = document.createElement("script");
779				script.text = code;
780				document.head.appendChild( script ).parentNode.removeChild( script );
781			} else {
782			// Otherwise, avoid the DOM node creation, insertion
783			// and removal by using an indirect global eval
784				indirect( code );
785			}
786		}
787	},
788
789	// Convert dashed to camelCase; used by the css and data modules
790	// Support: IE9-11+
791	// Microsoft forgot to hump their vendor prefix (#9572)
792	camelCase: function( string ) {
793		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
794	},
795
796	nodeName: function( elem, name ) {
797		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
798	},
799
800	// args is for internal usage only
801	each: function( obj, callback, args ) {
802		var value,
803			i = 0,
804			length = obj.length,
805			isArray = isArraylike( obj );
806
807		if ( args ) {
808			if ( isArray ) {
809				for ( ; i < length; i++ ) {
810					value = callback.apply( obj[ i ], args );
811
812					if ( value === false ) {
813						break;
814					}
815				}
816			} else {
817				for ( i in obj ) {
818					value = callback.apply( obj[ i ], args );
819
820					if ( value === false ) {
821						break;
822					}
823				}
824			}
825
826		// A special, fast, case for the most common use of each
827		} else {
828			if ( isArray ) {
829				for ( ; i < length; i++ ) {
830					value = callback.call( obj[ i ], i, obj[ i ] );
831
832					if ( value === false ) {
833						break;
834					}
835				}
836			} else {
837				for ( i in obj ) {
838					value = callback.call( obj[ i ], i, obj[ i ] );
839
840					if ( value === false ) {
841						break;
842					}
843				}
844			}
845		}
846
847		return obj;
848	},
849
850	// Support: Android<4.1
851	trim: function( text ) {
852		return text == null ?
853			"" :
854			( text + "" ).replace( rtrim, "" );
855	},
856
857	// results is for internal usage only
858	makeArray: function( arr, results ) {
859		var ret = results || [];
860
861		if ( arr != null ) {
862			if ( isArraylike( Object(arr) ) ) {
863				jQuery.merge( ret,
864					typeof arr === "string" ?
865					[ arr ] : arr
866				);
867			} else {
868				push.call( ret, arr );
869			}
870		}
871
872		return ret;
873	},
874
875	inArray: function( elem, arr, i ) {
876		return arr == null ? -1 : indexOf.call( arr, elem, i );
877	},
878
879	merge: function( first, second ) {
880		var len = +second.length,
881			j = 0,
882			i = first.length;
883
884		for ( ; j < len; j++ ) {
885			first[ i++ ] = second[ j ];
886		}
887
888		first.length = i;
889
890		return first;
891	},
892
893	grep: function( elems, callback, invert ) {
894		var callbackInverse,
895			matches = [],
896			i = 0,
897			length = elems.length,
898			callbackExpect = !invert;
899
900		// Go through the array, only saving the items
901		// that pass the validator function
902		for ( ; i < length; i++ ) {
903			callbackInverse = !callback( elems[ i ], i );
904			if ( callbackInverse !== callbackExpect ) {
905				matches.push( elems[ i ] );
906			}
907		}
908
909		return matches;
910	},
911
912	// arg is for internal usage only
913	map: function( elems, callback, arg ) {
914		var value,
915			i = 0,
916			length = elems.length,
917			isArray = isArraylike( elems ),
918			ret = [];
919
920		// Go through the array, translating each of the items to their new values
921		if ( isArray ) {
922			for ( ; i < length; i++ ) {
923				value = callback( elems[ i ], i, arg );
924
925				if ( value != null ) {
926					ret.push( value );
927				}
928			}
929
930		// Go through every key on the object,
931		} else {
932			for ( i in elems ) {
933				value = callback( elems[ i ], i, arg );
934
935				if ( value != null ) {
936					ret.push( value );
937				}
938			}
939		}
940
941		// Flatten any nested arrays
942		return concat.apply( [], ret );
943	},
944
945	// A global GUID counter for objects
946	guid: 1,
947
948	// Bind a function to a context, optionally partially applying any
949	// arguments.
950	proxy: function( fn, context ) {
951		var tmp, args, proxy;
952
953		if ( typeof context === "string" ) {
954			tmp = fn[ context ];
955			context = fn;
956			fn = tmp;
957		}
958
959		// Quick check to determine if target is callable, in the spec
960		// this throws a TypeError, but we will just return undefined.
961		if ( !jQuery.isFunction( fn ) ) {
962			return undefined;
963		}
964
965		// Simulated bind
966		args = slice.call( arguments, 2 );
967		proxy = function() {
968			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
969		};
970
971		// Set the guid of unique handler to the same of original handler, so it can be removed
972		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
973
974		return proxy;
975	},
976
977	now: Date.now,
978
979	// jQuery.support is not used in Core but other projects attach their
980	// properties to it so it needs to exist.
981	support: support
982});
983
984// Populate the class2type map
985jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
986	class2type[ "[object " + name + "]" ] = name.toLowerCase();
987});
988
989function isArraylike( obj ) {
990
991	// Support: iOS 8.2 (not reproducible in simulator)
992	// `in` check used to prevent JIT error (gh-2145)
993	// hasOwn isn't used here due to false negatives
994	// regarding Nodelist length in IE
995	var length = "length" in obj && obj.length,
996		type = jQuery.type( obj );
997
998	if ( type === "function" || jQuery.isWindow( obj ) ) {
999		return false;
1000	}
1001
1002	if ( obj.nodeType === 1 && length ) {
1003		return true;
1004	}
1005
1006	return type === "array" || length === 0 ||
1007		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
1008}
1009var Sizzle =
1010/*!
1011 * Sizzle CSS Selector Engine v2.2.0-pre
1012 * http://sizzlejs.com/
1013 *
1014 * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
1015 * Released under the MIT license
1016 * http://jquery.org/license
1017 *
1018 * Date: 2014-12-16
1019 */
1020(function( window ) {
1021
1022var i,
1023	support,
1024	Expr,
1025	getText,
1026	isXML,
1027	tokenize,
1028	compile,
1029	select,
1030	outermostContext,
1031	sortInput,
1032	hasDuplicate,
1033
1034	// Local document vars
1035	setDocument,
1036	document,
1037	docElem,
1038	documentIsHTML,
1039	rbuggyQSA,
1040	rbuggyMatches,
1041	matches,
1042	contains,
1043
1044	// Instance-specific data
1045	expando = "sizzle" + 1 * new Date(),
1046	preferredDoc = window.document,
1047	dirruns = 0,
1048	done = 0,
1049	classCache = createCache(),
1050	tokenCache = createCache(),
1051	compilerCache = createCache(),
1052	sortOrder = function( a, b ) {
1053		if ( a === b ) {
1054			hasDuplicate = true;
1055		}
1056		return 0;
1057	},
1058
1059	// General-purpose constants
1060	MAX_NEGATIVE = 1 << 31,
1061
1062	// Instance methods
1063	hasOwn = ({}).hasOwnProperty,
1064	arr = [],
1065	pop = arr.pop,
1066	push_native = arr.push,
1067	push = arr.push,
1068	slice = arr.slice,
1069	// Use a stripped-down indexOf as it's faster than native
1070	// http://jsperf.com/thor-indexof-vs-for/5
1071	indexOf = function( list, elem ) {
1072		var i = 0,
1073			len = list.length;
1074		for ( ; i < len; i++ ) {
1075			if ( list[i] === elem ) {
1076				return i;
1077			}
1078		}
1079		return -1;
1080	},
1081
1082	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
1083
1084	// Regular expressions
1085
1086	// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
1087	whitespace = "[\\x20\\t\\r\\n\\f]",
1088	// http://www.w3.org/TR/css3-syntax/#characters
1089	characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
1090
1091	// Loosely modeled on CSS identifier characters
1092	// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
1093	// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
1094	identifier = characterEncoding.replace( "w", "w#" ),
1095
1096	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
1097	attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
1098		// Operator (capture 2)
1099		"*([*^$|!~]?=)" + whitespace +
1100		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
1101		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
1102		"*\\]",
1103
1104	pseudos = ":(" + characterEncoding + ")(?:\\((" +
1105		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
1106		// 1. quoted (capture 3; capture 4 or capture 5)
1107		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
1108		// 2. simple (capture 6)
1109		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
1110		// 3. anything else (capture 2)
1111		".*" +
1112		")\\)|)",
1113
1114	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
1115	rwhitespace = new RegExp( whitespace + "+", "g" ),
1116	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
1117
1118	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
1119	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
1120
1121	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
1122
1123	rpseudo = new RegExp( pseudos ),
1124	ridentifier = new RegExp( "^" + identifier + "$" ),
1125
1126	matchExpr = {
1127		"ID": new RegExp( "^#(" + characterEncoding + ")" ),
1128		"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
1129		"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
1130		"ATTR": new RegExp( "^" + attributes ),
1131		"PSEUDO": new RegExp( "^" + pseudos ),
1132		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
1133			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
1134			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
1135		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
1136		// For use in libraries implementing .is()
1137		// We use this for POS matching in `select`
1138		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
1139			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
1140	},
1141
1142	rinputs = /^(?:input|select|textarea|button)$/i,
1143	rheader = /^h\d$/i,
1144
1145	rnative = /^[^{]+\{\s*\[native \w/,
1146
1147	// Easily-parseable/retrievable ID or TAG or CLASS selectors
1148	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
1149
1150	rsibling = /[+~]/,
1151	rescape = /'|\\/g,
1152
1153	// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
1154	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
1155	funescape = function( _, escaped, escapedWhitespace ) {
1156		var high = "0x" + escaped - 0x10000;
1157		// NaN means non-codepoint
1158		// Support: Firefox<24
1159		// Workaround erroneous numeric interpretation of +"0x"
1160		return high !== high || escapedWhitespace ?
1161			escaped :
1162			high < 0 ?
1163				// BMP codepoint
1164				String.fromCharCode( high + 0x10000 ) :
1165				// Supplemental Plane codepoint (surrogate pair)
1166				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
1167	},
1168
1169	// Used for iframes
1170	// See setDocument()
1171	// Removing the function wrapper causes a "Permission Denied"
1172	// error in IE
1173	unloadHandler = function() {
1174		setDocument();
1175	};
1176
1177// Optimize for push.apply( _, NodeList )
1178try {
1179	push.apply(
1180		(arr = slice.call( preferredDoc.childNodes )),
1181		preferredDoc.childNodes
1182	);
1183	// Support: Android<4.0
1184	// Detect silently failing push.apply
1185	arr[ preferredDoc.childNodes.length ].nodeType;
1186} catch ( e ) {
1187	push = { apply: arr.length ?
1188
1189		// Leverage slice if possible
1190		function( target, els ) {
1191			push_native.apply( target, slice.call(els) );
1192		} :
1193
1194		// Support: IE<9
1195		// Otherwise append directly
1196		function( target, els ) {
1197			var j = target.length,
1198				i = 0;
1199			// Can't trust NodeList.length
1200			while ( (target[j++] = els[i++]) ) {}
1201			target.length = j - 1;
1202		}
1203	};
1204}
1205
1206function Sizzle( selector, context, results, seed ) {
1207	var match, elem, m, nodeType,
1208		// QSA vars
1209		i, groups, old, nid, newContext, newSelector;
1210
1211	if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
1212		setDocument( context );
1213	}
1214
1215	context = context || document;
1216	results = results || [];
1217	nodeType = context.nodeType;
1218
1219	if ( typeof selector !== "string" || !selector ||
1220		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
1221
1222		return results;
1223	}
1224
1225	if ( !seed && documentIsHTML ) {
1226
1227		// Try to shortcut find operations when possible (e.g., not under DocumentFragment)
1228		if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
1229			// Speed-up: Sizzle("#ID")
1230			if ( (m = match[1]) ) {
1231				if ( nodeType === 9 ) {
1232					elem = context.getElementById( m );
1233					// Check parentNode to catch when Blackberry 4.6 returns
1234					// nodes that are no longer in the document (jQuery #6963)
1235					if ( elem && elem.parentNode ) {
1236						// Handle the case where IE, Opera, and Webkit return items
1237						// by name instead of ID
1238						if ( elem.id === m ) {
1239							results.push( elem );
1240							return results;
1241						}
1242					} else {
1243						return results;
1244					}
1245				} else {
1246					// Context is not a document
1247					if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
1248						contains( context, elem ) && elem.id === m ) {
1249						results.push( elem );
1250						return results;
1251					}
1252				}
1253
1254			// Speed-up: Sizzle("TAG")
1255			} else if ( match[2] ) {
1256				push.apply( results, context.getElementsByTagName( selector ) );
1257				return results;
1258
1259			// Speed-up: Sizzle(".CLASS")
1260			} else if ( (m = match[3]) && support.getElementsByClassName ) {
1261				push.apply( results, context.getElementsByClassName( m ) );
1262				return results;
1263			}
1264		}
1265
1266		// QSA path
1267		if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
1268			nid = old = expando;
1269			newContext = context;
1270			newSelector = nodeType !== 1 && selector;
1271
1272			// qSA works strangely on Element-rooted queries
1273			// We can work around this by specifying an extra ID on the root
1274			// and working up from there (Thanks to Andrew Dupont for the technique)
1275			// IE 8 doesn't work on object elements
1276			if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
1277				groups = tokenize( selector );
1278
1279				if ( (old = context.getAttribute("id")) ) {
1280					nid = old.replace( rescape, "\\$&" );
1281				} else {
1282					context.setAttribute( "id", nid );
1283				}
1284				nid = "[id='" + nid + "'] ";
1285
1286				i = groups.length;
1287				while ( i-- ) {
1288					groups[i] = nid + toSelector( groups[i] );
1289				}
1290				newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
1291				newSelector = groups.join(",");
1292			}
1293
1294			if ( newSelector ) {
1295				try {
1296					push.apply( results,
1297						newContext.querySelectorAll( newSelector )
1298					);
1299					return results;
1300				} catch(qsaError) {
1301				} finally {
1302					if ( !old ) {
1303						context.removeAttribute("id");
1304					}
1305				}
1306			}
1307		}
1308	}
1309
1310	// All others
1311	return select( selector.replace( rtrim, "$1" ), context, results, seed );
1312}
1313
1314/**
1315 * Create key-value caches of limited size
1316 * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
1317 *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
1318 *	deleting the oldest entry
1319 */
1320function createCache() {
1321	var keys = [];
1322
1323	function cache( key, value ) {
1324		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
1325		if ( keys.push( key + " " ) > Expr.cacheLength ) {
1326			// Only keep the most recent entries
1327			delete cache[ keys.shift() ];
1328		}
1329		return (cache[ key + " " ] = value);
1330	}
1331	return cache;
1332}
1333
1334/**
1335 * Mark a function for special use by Sizzle
1336 * @param {Function} fn The function to mark
1337 */
1338function markFunction( fn ) {
1339	fn[ expando ] = true;
1340	return fn;
1341}
1342
1343/**
1344 * Support testing using an element
1345 * @param {Function} fn Passed the created div and expects a boolean result
1346 */
1347function assert( fn ) {
1348	var div = document.createElement("div");
1349
1350	try {
1351		return !!fn( div );
1352	} catch (e) {
1353		return false;
1354	} finally {
1355		// Remove from its parent by default
1356		if ( div.parentNode ) {
1357			div.parentNode.removeChild( div );
1358		}
1359		// release memory in IE
1360		div = null;
1361	}
1362}
1363
1364/**
1365 * Adds the same handler for all of the specified attrs
1366 * @param {String} attrs Pipe-separated list of attributes
1367 * @param {Function} handler The method that will be applied
1368 */
1369function addHandle( attrs, handler ) {
1370	var arr = attrs.split("|"),
1371		i = attrs.length;
1372
1373	while ( i-- ) {
1374		Expr.attrHandle[ arr[i] ] = handler;
1375	}
1376}
1377
1378/**
1379 * Checks document order of two siblings
1380 * @param {Element} a
1381 * @param {Element} b
1382 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
1383 */
1384function siblingCheck( a, b ) {
1385	var cur = b && a,
1386		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
1387			( ~b.sourceIndex || MAX_NEGATIVE ) -
1388			( ~a.sourceIndex || MAX_NEGATIVE );
1389
1390	// Use IE sourceIndex if available on both nodes
1391	if ( diff ) {
1392		return diff;
1393	}
1394
1395	// Check if b follows a
1396	if ( cur ) {
1397		while ( (cur = cur.nextSibling) ) {
1398			if ( cur === b ) {
1399				return -1;
1400			}
1401		}
1402	}
1403
1404	return a ? 1 : -1;
1405}
1406
1407/**
1408 * Returns a function to use in pseudos for input types
1409 * @param {String} type
1410 */
1411function createInputPseudo( type ) {
1412	return function( elem ) {
1413		var name = elem.nodeName.toLowerCase();
1414		return name === "input" && elem.type === type;
1415	};
1416}
1417
1418/**
1419 * Returns a function to use in pseudos for buttons
1420 * @param {String} type
1421 */
1422function createButtonPseudo( type ) {
1423	return function( elem ) {
1424		var name = elem.nodeName.toLowerCase();
1425		return (name === "input" || name === "button") && elem.type === type;
1426	};
1427}
1428
1429/**
1430 * Returns a function to use in pseudos for positionals
1431 * @param {Function} fn
1432 */
1433function createPositionalPseudo( fn ) {
1434	return markFunction(function( argument ) {
1435		argument = +argument;
1436		return markFunction(function( seed, matches ) {
1437			var j,
1438				matchIndexes = fn( [], seed.length, argument ),
1439				i = matchIndexes.length;
1440
1441			// Match elements found at the specified indexes
1442			while ( i-- ) {
1443				if ( seed[ (j = matchIndexes[i]) ] ) {
1444					seed[j] = !(matches[j] = seed[j]);
1445				}
1446			}
1447		});
1448	});
1449}
1450
1451/**
1452 * Checks a node for validity as a Sizzle context
1453 * @param {Element|Object=} context
1454 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
1455 */
1456function testContext( context ) {
1457	return context && typeof context.getElementsByTagName !== "undefined" && context;
1458}
1459
1460// Expose support vars for convenience
1461support = Sizzle.support = {};
1462
1463/**
1464 * Detects XML nodes
1465 * @param {Element|Object} elem An element or a document
1466 * @returns {Boolean} True iff elem is a non-HTML XML node
1467 */
1468isXML = Sizzle.isXML = function( elem ) {
1469	// documentElement is verified for cases where it doesn't yet exist
1470	// (such as loading iframes in IE - #4833)
1471	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
1472	return documentElement ? documentElement.nodeName !== "HTML" : false;
1473};
1474
1475/**
1476 * Sets document-related variables once based on the current document
1477 * @param {Element|Object} [doc] An element or document object to use to set the document
1478 * @returns {Object} Returns the current document
1479 */
1480setDocument = Sizzle.setDocument = function( node ) {
1481	var hasCompare, parent,
1482		doc = node ? node.ownerDocument || node : preferredDoc;
1483
1484	// If no document and documentElement is available, return
1485	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
1486		return document;
1487	}
1488
1489	// Set our document
1490	document = doc;
1491	docElem = doc.documentElement;
1492	parent = doc.defaultView;
1493
1494	// Support: IE>8
1495	// If iframe document is assigned to "document" variable and if iframe has been reloaded,
1496	// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
1497	// IE6-8 do not support the defaultView property so parent will be undefined
1498	if ( parent && parent !== parent.top ) {
1499		// IE11 does not have attachEvent, so all must suffer
1500		if ( parent.addEventListener ) {
1501			parent.addEventListener( "unload", unloadHandler, false );
1502		} else if ( parent.attachEvent ) {
1503			parent.attachEvent( "onunload", unloadHandler );
1504		}
1505	}
1506
1507	/* Support tests
1508	---------------------------------------------------------------------- */
1509	documentIsHTML = !isXML( doc );
1510
1511	/* Attributes
1512	---------------------------------------------------------------------- */
1513
1514	// Support: IE<8
1515	// Verify that getAttribute really returns attributes and not properties
1516	// (excepting IE8 booleans)
1517	support.attributes = assert(function( div ) {
1518		div.className = "i";
1519		return !div.getAttribute("className");
1520	});
1521
1522	/* getElement(s)By*
1523	---------------------------------------------------------------------- */
1524
1525	// Check if getElementsByTagName("*") returns only elements
1526	support.getElementsByTagName = assert(function( div ) {
1527		div.appendChild( doc.createComment("") );
1528		return !div.getElementsByTagName("*").length;
1529	});
1530
1531	// Support: IE<9
1532	support.getElementsByClassName = rnative.test( doc.getElementsByClassName );
1533
1534	// Support: IE<10
1535	// Check if getElementById returns elements by name
1536	// The broken getElementById methods don't pick up programatically-set names,
1537	// so use a roundabout getElementsByName test
1538	support.getById = assert(function( div ) {
1539		docElem.appendChild( div ).id = expando;
1540		return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
1541	});
1542
1543	// ID find and filter
1544	if ( support.getById ) {
1545		Expr.find["ID"] = function( id, context ) {
1546			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1547				var m = context.getElementById( id );
1548				// Check parentNode to catch when Blackberry 4.6 returns
1549				// nodes that are no longer in the document #6963
1550				return m && m.parentNode ? [ m ] : [];
1551			}
1552		};
1553		Expr.filter["ID"] = function( id ) {
1554			var attrId = id.replace( runescape, funescape );
1555			return function( elem ) {
1556				return elem.getAttribute("id") === attrId;
1557			};
1558		};
1559	} else {
1560		// Support: IE6/7
1561		// getElementById is not reliable as a find shortcut
1562		delete Expr.find["ID"];
1563
1564		Expr.filter["ID"] =  function( id ) {
1565			var attrId = id.replace( runescape, funescape );
1566			return function( elem ) {
1567				var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
1568				return node && node.value === attrId;
1569			};
1570		};
1571	}
1572
1573	// Tag
1574	Expr.find["TAG"] = support.getElementsByTagName ?
1575		function( tag, context ) {
1576			if ( typeof context.getElementsByTagName !== "undefined" ) {
1577				return context.getElementsByTagName( tag );
1578
1579			// DocumentFragment nodes don't have gEBTN
1580			} else if ( support.qsa ) {
1581				return context.querySelectorAll( tag );
1582			}
1583		} :
1584
1585		function( tag, context ) {
1586			var elem,
1587				tmp = [],
1588				i = 0,
1589				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
1590				results = context.getElementsByTagName( tag );
1591
1592			// Filter out possible comments
1593			if ( tag === "*" ) {
1594				while ( (elem = results[i++]) ) {
1595					if ( elem.nodeType === 1 ) {
1596						tmp.push( elem );
1597					}
1598				}
1599
1600				return tmp;
1601			}
1602			return results;
1603		};
1604
1605	// Class
1606	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
1607		if ( documentIsHTML ) {
1608			return context.getElementsByClassName( className );
1609		}
1610	};
1611
1612	/* QSA/matchesSelector
1613	---------------------------------------------------------------------- */
1614
1615	// QSA and matchesSelector support
1616
1617	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
1618	rbuggyMatches = [];
1619
1620	// qSa(:focus) reports false when true (Chrome 21)
1621	// We allow this because of a bug in IE8/9 that throws an error
1622	// whenever `document.activeElement` is accessed on an iframe
1623	// So, we allow :focus to pass through QSA all the time to avoid the IE error
1624	// See http://bugs.jquery.com/ticket/13378
1625	rbuggyQSA = [];
1626
1627	if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
1628		// Build QSA regex
1629		// Regex strategy adopted from Diego Perini
1630		assert(function( div ) {
1631			// Select is set to empty string on purpose
1632			// This is to test IE's treatment of not explicitly
1633			// setting a boolean content attribute,
1634			// since its presence should be enough
1635			// http://bugs.jquery.com/ticket/12359
1636			docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
1637				"<select id='" + expando + "-\f]' msallowcapture=''>" +
1638				"<option selected=''></option></select>";
1639
1640			// Support: IE8, Opera 11-12.16
1641			// Nothing should be selected when empty strings follow ^= or $= or *=
1642			// The test attribute must be unknown in Opera but "safe" for WinRT
1643			// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
1644			if ( div.querySelectorAll("[msallowcapture^='']").length ) {
1645				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
1646			}
1647
1648			// Support: IE8
1649			// Boolean attributes and "value" are not treated correctly
1650			if ( !div.querySelectorAll("[selected]").length ) {
1651				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
1652			}
1653
1654			// Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+
1655			if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
1656				rbuggyQSA.push("~=");
1657			}
1658
1659			// Webkit/Opera - :checked should return selected option elements
1660			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
1661			// IE8 throws error here and will not see later tests
1662			if ( !div.querySelectorAll(":checked").length ) {
1663				rbuggyQSA.push(":checked");
1664			}
1665
1666			// Support: Safari 8+, iOS 8+
1667			// https://bugs.webkit.org/show_bug.cgi?id=136851
1668			// In-page `selector#id sibing-combinator selector` fails
1669			if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
1670				rbuggyQSA.push(".#.+[+~]");
1671			}
1672		});
1673
1674		assert(function( div ) {
1675			// Support: Windows 8 Native Apps
1676			// The type and name attributes are restricted during .innerHTML assignment
1677			var input = doc.createElement("input");
1678			input.setAttribute( "type", "hidden" );
1679			div.appendChild( input ).setAttribute( "name", "D" );
1680
1681			// Support: IE8
1682			// Enforce case-sensitivity of name attribute
1683			if ( div.querySelectorAll("[name=d]").length ) {
1684				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
1685			}
1686
1687			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
1688			// IE8 throws error here and will not see later tests
1689			if ( !div.querySelectorAll(":enabled").length ) {
1690				rbuggyQSA.push( ":enabled", ":disabled" );
1691			}
1692
1693			// Opera 10-11 does not throw on post-comma invalid pseudos
1694			div.querySelectorAll("*,:x");
1695			rbuggyQSA.push(",.*:");
1696		});
1697	}
1698
1699	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
1700		docElem.webkitMatchesSelector ||
1701		docElem.mozMatchesSelector ||
1702		docElem.oMatchesSelector ||
1703		docElem.msMatchesSelector) )) ) {
1704
1705		assert(function( div ) {
1706			// Check to see if it's possible to do matchesSelector
1707			// on a disconnected node (IE 9)
1708			support.disconnectedMatch = matches.call( div, "div" );
1709
1710			// This should fail with an exception
1711			// Gecko does not error, returns false instead
1712			matches.call( div, "[s!='']:x" );
1713			rbuggyMatches.push( "!=", pseudos );
1714		});
1715	}
1716
1717	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
1718	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
1719
1720	/* Contains
1721	---------------------------------------------------------------------- */
1722	hasCompare = rnative.test( docElem.compareDocumentPosition );
1723
1724	// Element contains another
1725	// Purposefully does not implement inclusive descendent
1726	// As in, an element does not contain itself
1727	contains = hasCompare || rnative.test( docElem.contains ) ?
1728		function( a, b ) {
1729			var adown = a.nodeType === 9 ? a.documentElement : a,
1730				bup = b && b.parentNode;
1731			return a === bup || !!( bup && bup.nodeType === 1 && (
1732				adown.contains ?
1733					adown.contains( bup ) :
1734					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
1735			));
1736		} :
1737		function( a, b ) {
1738			if ( b ) {
1739				while ( (b = b.parentNode) ) {
1740					if ( b === a ) {
1741						return true;
1742					}
1743				}
1744			}
1745			return false;
1746		};
1747
1748	/* Sorting
1749	---------------------------------------------------------------------- */
1750
1751	// Document order sorting
1752	sortOrder = hasCompare ?
1753	function( a, b ) {
1754
1755		// Flag for duplicate removal
1756		if ( a === b ) {
1757			hasDuplicate = true;
1758			return 0;
1759		}
1760
1761		// Sort on method existence if only one input has compareDocumentPosition
1762		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
1763		if ( compare ) {
1764			return compare;
1765		}
1766
1767		// Calculate position if both inputs belong to the same document
1768		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
1769			a.compareDocumentPosition( b ) :
1770
1771			// Otherwise we know they are disconnected
1772			1;
1773
1774		// Disconnected nodes
1775		if ( compare & 1 ||
1776			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
1777
1778			// Choose the first element that is related to our preferred document
1779			if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
1780				return -1;
1781			}
1782			if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
1783				return 1;
1784			}
1785
1786			// Maintain original order
1787			return sortInput ?
1788				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1789				0;
1790		}
1791
1792		return compare & 4 ? -1 : 1;
1793	} :
1794	function( a, b ) {
1795		// Exit early if the nodes are identical
1796		if ( a === b ) {
1797			hasDuplicate = true;
1798			return 0;
1799		}
1800
1801		var cur,
1802			i = 0,
1803			aup = a.parentNode,
1804			bup = b.parentNode,
1805			ap = [ a ],
1806			bp = [ b ];
1807
1808		// Parentless nodes are either documents or disconnected
1809		if ( !aup || !bup ) {
1810			return a === doc ? -1 :
1811				b === doc ? 1 :
1812				aup ? -1 :
1813				bup ? 1 :
1814				sortInput ?
1815				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1816				0;
1817
1818		// If the nodes are siblings, we can do a quick check
1819		} else if ( aup === bup ) {
1820			return siblingCheck( a, b );
1821		}
1822
1823		// Otherwise we need full lists of their ancestors for comparison
1824		cur = a;
1825		while ( (cur = cur.parentNode) ) {
1826			ap.unshift( cur );
1827		}
1828		cur = b;
1829		while ( (cur = cur.parentNode) ) {
1830			bp.unshift( cur );
1831		}
1832
1833		// Walk down the tree looking for a discrepancy
1834		while ( ap[i] === bp[i] ) {
1835			i++;
1836		}
1837
1838		return i ?
1839			// Do a sibling check if the nodes have a common ancestor
1840			siblingCheck( ap[i], bp[i] ) :
1841
1842			// Otherwise nodes in our document sort first
1843			ap[i] === preferredDoc ? -1 :
1844			bp[i] === preferredDoc ? 1 :
1845			0;
1846	};
1847
1848	return doc;
1849};
1850
1851Sizzle.matches = function( expr, elements ) {
1852	return Sizzle( expr, null, null, elements );
1853};
1854
1855Sizzle.matchesSelector = function( elem, expr ) {
1856	// Set document vars if needed
1857	if ( ( elem.ownerDocument || elem ) !== document ) {
1858		setDocument( elem );
1859	}
1860
1861	// Make sure that attribute selectors are quoted
1862	expr = expr.replace( rattributeQuotes, "='$1']" );
1863
1864	if ( support.matchesSelector && documentIsHTML &&
1865		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
1866		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
1867
1868		try {
1869			var ret = matches.call( elem, expr );
1870
1871			// IE 9's matchesSelector returns false on disconnected nodes
1872			if ( ret || support.disconnectedMatch ||
1873					// As well, disconnected nodes are said to be in a document
1874					// fragment in IE 9
1875					elem.document && elem.document.nodeType !== 11 ) {
1876				return ret;
1877			}
1878		} catch (e) {}
1879	}
1880
1881	return Sizzle( expr, document, null, [ elem ] ).length > 0;
1882};
1883
1884Sizzle.contains = function( context, elem ) {
1885	// Set document vars if needed
1886	if ( ( context.ownerDocument || context ) !== document ) {
1887		setDocument( context );
1888	}
1889	return contains( context, elem );
1890};
1891
1892Sizzle.attr = function( elem, name ) {
1893	// Set document vars if needed
1894	if ( ( elem.ownerDocument || elem ) !== document ) {
1895		setDocument( elem );
1896	}
1897
1898	var fn = Expr.attrHandle[ name.toLowerCase() ],
1899		// Don't get fooled by Object.prototype properties (jQuery #13807)
1900		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
1901			fn( elem, name, !documentIsHTML ) :
1902			undefined;
1903
1904	return val !== undefined ?
1905		val :
1906		support.attributes || !documentIsHTML ?
1907			elem.getAttribute( name ) :
1908			(val = elem.getAttributeNode(name)) && val.specified ?
1909				val.value :
1910				null;
1911};
1912
1913Sizzle.error = function( msg ) {
1914	throw new Error( "Syntax error, unrecognized expression: " + msg );
1915};
1916
1917/**
1918 * Document sorting and removing duplicates
1919 * @param {ArrayLike} results
1920 */
1921Sizzle.uniqueSort = function( results ) {
1922	var elem,
1923		duplicates = [],
1924		j = 0,
1925		i = 0;
1926
1927	// Unless we *know* we can detect duplicates, assume their presence
1928	hasDuplicate = !support.detectDuplicates;
1929	sortInput = !support.sortStable && results.slice( 0 );
1930	results.sort( sortOrder );
1931
1932	if ( hasDuplicate ) {
1933		while ( (elem = results[i++]) ) {
1934			if ( elem === results[ i ] ) {
1935				j = duplicates.push( i );
1936			}
1937		}
1938		while ( j-- ) {
1939			results.splice( duplicates[ j ], 1 );
1940		}
1941	}
1942
1943	// Clear input after sorting to release objects
1944	// See https://github.com/jquery/sizzle/pull/225
1945	sortInput = null;
1946
1947	return results;
1948};
1949
1950/**
1951 * Utility function for retrieving the text value of an array of DOM nodes
1952 * @param {Array|Element} elem
1953 */
1954getText = Sizzle.getText = function( elem ) {
1955	var node,
1956		ret = "",
1957		i = 0,
1958		nodeType = elem.nodeType;
1959
1960	if ( !nodeType ) {
1961		// If no nodeType, this is expected to be an array
1962		while ( (node = elem[i++]) ) {
1963			// Do not traverse comment nodes
1964			ret += getText( node );
1965		}
1966	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
1967		// Use textContent for elements
1968		// innerText usage removed for consistency of new lines (jQuery #11153)
1969		if ( typeof elem.textContent === "string" ) {
1970			return elem.textContent;
1971		} else {
1972			// Traverse its children
1973			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
1974				ret += getText( elem );
1975			}
1976		}
1977	} else if ( nodeType === 3 || nodeType === 4 ) {
1978		return elem.nodeValue;
1979	}
1980	// Do not include comment or processing instruction nodes
1981
1982	return ret;
1983};
1984
1985Expr = Sizzle.selectors = {
1986
1987	// Can be adjusted by the user
1988	cacheLength: 50,
1989
1990	createPseudo: markFunction,
1991
1992	match: matchExpr,
1993
1994	attrHandle: {},
1995
1996	find: {},
1997
1998	relative: {
1999		">": { dir: "parentNode", first: true },
2000		" ": { dir: "parentNode" },
2001		"+": { dir: "previousSibling", first: true },
2002		"~": { dir: "previousSibling" }
2003	},
2004
2005	preFilter: {
2006		"ATTR": function( match ) {
2007			match[1] = match[1].replace( runescape, funescape );
2008
2009			// Move the given value to match[3] whether quoted or unquoted
2010			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
2011
2012			if ( match[2] === "~=" ) {
2013				match[3] = " " + match[3] + " ";
2014			}
2015
2016			return match.slice( 0, 4 );
2017		},
2018
2019		"CHILD": function( match ) {
2020			/* matches from matchExpr["CHILD"]
2021				1 type (only|nth|...)
2022				2 what (child|of-type)
2023				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
2024				4 xn-component of xn+y argument ([+-]?\d*n|)
2025				5 sign of xn-component
2026				6 x of xn-component
2027				7 sign of y-component
2028				8 y of y-component
2029			*/
2030			match[1] = match[1].toLowerCase();
2031
2032			if ( match[1].slice( 0, 3 ) === "nth" ) {
2033				// nth-* requires argument
2034				if ( !match[3] ) {
2035					Sizzle.error( match[0] );
2036				}
2037
2038				// numeric x and y parameters for Expr.filter.CHILD
2039				// remember that false/true cast respectively to 0/1
2040				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
2041				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
2042
2043			// other types prohibit arguments
2044			} else if ( match[3] ) {
2045				Sizzle.error( match[0] );
2046			}
2047
2048			return match;
2049		},
2050
2051		"PSEUDO": function( match ) {
2052			var excess,
2053				unquoted = !match[6] && match[2];
2054
2055			if ( matchExpr["CHILD"].test( match[0] ) ) {
2056				return null;
2057			}
2058
2059			// Accept quoted arguments as-is
2060			if ( match[3] ) {
2061				match[2] = match[4] || match[5] || "";
2062
2063			// Strip excess characters from unquoted arguments
2064			} else if ( unquoted && rpseudo.test( unquoted ) &&
2065				// Get excess from tokenize (recursively)
2066				(excess = tokenize( unquoted, true )) &&
2067				// advance to the next closing parenthesis
2068				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
2069
2070				// excess is a negative index
2071				match[0] = match[0].slice( 0, excess );
2072				match[2] = unquoted.slice( 0, excess );
2073			}
2074
2075			// Return only captures needed by the pseudo filter method (type and argument)
2076			return match.slice( 0, 3 );
2077		}
2078	},
2079
2080	filter: {
2081
2082		"TAG": function( nodeNameSelector ) {
2083			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
2084			return nodeNameSelector === "*" ?
2085				function() { return true; } :
2086				function( elem ) {
2087					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
2088				};
2089		},
2090
2091		"CLASS": function( className ) {
2092			var pattern = classCache[ className + " " ];
2093
2094			return pattern ||
2095				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
2096				classCache( className, function( elem ) {
2097					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
2098				});
2099		},
2100
2101		"ATTR": function( name, operator, check ) {
2102			return function( elem ) {
2103				var result = Sizzle.attr( elem, name );
2104
2105				if ( result == null ) {
2106					return operator === "!=";
2107				}
2108				if ( !operator ) {
2109					return true;
2110				}
2111
2112				result += "";
2113
2114				return operator === "=" ? result === check :
2115					operator === "!=" ? result !== check :
2116					operator === "^=" ? check && result.indexOf( check ) === 0 :
2117					operator === "*=" ? check && result.indexOf( check ) > -1 :
2118					operator === "$=" ? check && result.slice( -check.length ) === check :
2119					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
2120					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
2121					false;
2122			};
2123		},
2124
2125		"CHILD": function( type, what, argument, first, last ) {
2126			var simple = type.slice( 0, 3 ) !== "nth",
2127				forward = type.slice( -4 ) !== "last",
2128				ofType = what === "of-type";
2129
2130			return first === 1 && last === 0 ?
2131
2132				// Shortcut for :nth-*(n)
2133				function( elem ) {
2134					return !!elem.parentNode;
2135				} :
2136
2137				function( elem, context, xml ) {
2138					var cache, outerCache, node, diff, nodeIndex, start,
2139						dir = simple !== forward ? "nextSibling" : "previousSibling",
2140						parent = elem.parentNode,
2141						name = ofType && elem.nodeName.toLowerCase(),
2142						useCache = !xml && !ofType;
2143
2144					if ( parent ) {
2145
2146						// :(first|last|only)-(child|of-type)
2147						if ( simple ) {
2148							while ( dir ) {
2149								node = elem;
2150								while ( (node = node[ dir ]) ) {
2151									if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
2152										return false;
2153									}
2154								}
2155								// Reverse direction for :only-* (if we haven't yet done so)
2156								start = dir = type === "only" && !start && "nextSibling";
2157							}
2158							return true;
2159						}
2160
2161						start = [ forward ? parent.firstChild : parent.lastChild ];
2162
2163						// non-xml :nth-child(...) stores cache data on `parent`
2164						if ( forward && useCache ) {
2165							// Seek `elem` from a previously-cached index
2166							outerCache = parent[ expando ] || (parent[ expando ] = {});
2167							cache = outerCache[ type ] || [];
2168							nodeIndex = cache[0] === dirruns && cache[1];
2169							diff = cache[0] === dirruns && cache[2];
2170							node = nodeIndex && parent.childNodes[ nodeIndex ];
2171
2172							while ( (node = ++nodeIndex && node && node[ dir ] ||
2173
2174								// Fallback to seeking `elem` from the start
2175								(diff = nodeIndex = 0) || start.pop()) ) {
2176
2177								// When found, cache indexes on `parent` and break
2178								if ( node.nodeType === 1 && ++diff && node === elem ) {
2179									outerCache[ type ] = [ dirruns, nodeIndex, diff ];
2180									break;
2181								}
2182							}
2183
2184						// Use previously-cached element index if available
2185						} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
2186							diff = cache[1];
2187
2188						// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
2189						} else {
2190							// Use the same loop as above to seek `elem` from the start
2191							while ( (node = ++nodeIndex && node && node[ dir ] ||
2192								(diff = nodeIndex = 0) || start.pop()) ) {
2193
2194								if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
2195									// Cache the index of each encountered element
2196									if ( useCache ) {
2197										(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
2198									}
2199
2200									if ( node === elem ) {
2201										break;
2202									}
2203								}
2204							}
2205						}
2206
2207						// Incorporate the offset, then check against cycle size
2208						diff -= last;
2209						return diff === first || ( diff % first === 0 && diff / first >= 0 );
2210					}
2211				};
2212		},
2213
2214		"PSEUDO": function( pseudo, argument ) {
2215			// pseudo-class names are case-insensitive
2216			// http://www.w3.org/TR/selectors/#pseudo-classes
2217			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
2218			// Remember that setFilters inherits from pseudos
2219			var args,
2220				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
2221					Sizzle.error( "unsupported pseudo: " + pseudo );
2222
2223			// The user may use createPseudo to indicate that
2224			// arguments are needed to create the filter function
2225			// just as Sizzle does
2226			if ( fn[ expando ] ) {
2227				return fn( argument );
2228			}
2229
2230			// But maintain support for old signatures
2231			if ( fn.length > 1 ) {
2232				args = [ pseudo, pseudo, "", argument ];
2233				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
2234					markFunction(function( seed, matches ) {
2235						var idx,
2236							matched = fn( seed, argument ),
2237							i = matched.length;
2238						while ( i-- ) {
2239							idx = indexOf( seed, matched[i] );
2240							seed[ idx ] = !( matches[ idx ] = matched[i] );
2241						}
2242					}) :
2243					function( elem ) {
2244						return fn( elem, 0, args );
2245					};
2246			}
2247
2248			return fn;
2249		}
2250	},
2251
2252	pseudos: {
2253		// Potentially complex pseudos
2254		"not": markFunction(function( selector ) {
2255			// Trim the selector passed to compile
2256			// to avoid treating leading and trailing
2257			// spaces as combinators
2258			var input = [],
2259				results = [],
2260				matcher = compile( selector.replace( rtrim, "$1" ) );
2261
2262			return matcher[ expando ] ?
2263				markFunction(function( seed, matches, context, xml ) {
2264					var elem,
2265						unmatched = matcher( seed, null, xml, [] ),
2266						i = seed.length;
2267
2268					// Match elements unmatched by `matcher`
2269					while ( i-- ) {
2270						if ( (elem = unmatched[i]) ) {
2271							seed[i] = !(matches[i] = elem);
2272						}
2273					}
2274				}) :
2275				function( elem, context, xml ) {
2276					input[0] = elem;
2277					matcher( input, null, xml, results );
2278					// Don't keep the element (issue #299)
2279					input[0] = null;
2280					return !results.pop();
2281				};
2282		}),
2283
2284		"has": markFunction(function( selector ) {
2285			return function( elem ) {
2286				return Sizzle( selector, elem ).length > 0;
2287			};
2288		}),
2289
2290		"contains": markFunction(function( text ) {
2291			text = text.replace( runescape, funescape );
2292			return function( elem ) {
2293				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
2294			};
2295		}),
2296
2297		// "Whether an element is represented by a :lang() selector
2298		// is based solely on the element's language value
2299		// being equal to the identifier C,
2300		// or beginning with the identifier C immediately followed by "-".
2301		// The matching of C against the element's language value is performed case-insensitively.
2302		// The identifier C does not have to be a valid language name."
2303		// http://www.w3.org/TR/selectors/#lang-pseudo
2304		"lang": markFunction( function( lang ) {
2305			// lang value must be a valid identifier
2306			if ( !ridentifier.test(lang || "") ) {
2307				Sizzle.error( "unsupported lang: " + lang );
2308			}
2309			lang = lang.replace( runescape, funescape ).toLowerCase();
2310			return function( elem ) {
2311				var elemLang;
2312				do {
2313					if ( (elemLang = documentIsHTML ?
2314						elem.lang :
2315						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
2316
2317						elemLang = elemLang.toLowerCase();
2318						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
2319					}
2320				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
2321				return false;
2322			};
2323		}),
2324
2325		// Miscellaneous
2326		"target": function( elem ) {
2327			var hash = window.location && window.location.hash;
2328			return hash && hash.slice( 1 ) === elem.id;
2329		},
2330
2331		"root": function( elem ) {
2332			return elem === docElem;
2333		},
2334
2335		"focus": function( elem ) {
2336			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
2337		},
2338
2339		// Boolean properties
2340		"enabled": function( elem ) {
2341			return elem.disabled === false;
2342		},
2343
2344		"disabled": function( elem ) {
2345			return elem.disabled === true;
2346		},
2347
2348		"checked": function( elem ) {
2349			// In CSS3, :checked should return both checked and selected elements
2350			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
2351			var nodeName = elem.nodeName.toLowerCase();
2352			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
2353		},
2354
2355		"selected": function( elem ) {
2356			// Accessing this property makes selected-by-default
2357			// options in Safari work properly
2358			if ( elem.parentNode ) {
2359				elem.parentNode.selectedIndex;
2360			}
2361
2362			return elem.selected === true;
2363		},
2364
2365		// Contents
2366		"empty": function( elem ) {
2367			// http://www.w3.org/TR/selectors/#empty-pseudo
2368			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
2369			//   but not by others (comment: 8; processing instruction: 7; etc.)
2370			// nodeType < 6 works because attributes (2) do not appear as children
2371			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
2372				if ( elem.nodeType < 6 ) {
2373					return false;
2374				}
2375			}
2376			return true;
2377		},
2378
2379		"parent": function( elem ) {
2380			return !Expr.pseudos["empty"]( elem );
2381		},
2382
2383		// Element/input types
2384		"header": function( elem ) {
2385			return rheader.test( elem.nodeName );
2386		},
2387
2388		"input": function( elem ) {
2389			return rinputs.test( elem.nodeName );
2390		},
2391
2392		"button": function( elem ) {
2393			var name = elem.nodeName.toLowerCase();
2394			return name === "input" && elem.type === "button" || name === "button";
2395		},
2396
2397		"text": function( elem ) {
2398			var attr;
2399			return elem.nodeName.toLowerCase() === "input" &&
2400				elem.type === "text" &&
2401
2402				// Support: IE<8
2403				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
2404				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
2405		},
2406
2407		// Position-in-collection
2408		"first": createPositionalPseudo(function() {
2409			return [ 0 ];
2410		}),
2411
2412		"last": createPositionalPseudo(function( matchIndexes, length ) {
2413			return [ length - 1 ];
2414		}),
2415
2416		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
2417			return [ argument < 0 ? argument + length : argument ];
2418		}),
2419
2420		"even": createPositionalPseudo(function( matchIndexes, length ) {
2421			var i = 0;
2422			for ( ; i < length; i += 2 ) {
2423				matchIndexes.push( i );
2424			}
2425			return matchIndexes;
2426		}),
2427
2428		"odd": createPositionalPseudo(function( matchIndexes, length ) {
2429			var i = 1;
2430			for ( ; i < length; i += 2 ) {
2431				matchIndexes.push( i );
2432			}
2433			return matchIndexes;
2434		}),
2435
2436		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
2437			var i = argument < 0 ? argument + length : argument;
2438			for ( ; --i >= 0; ) {
2439				matchIndexes.push( i );
2440			}
2441			return matchIndexes;
2442		}),
2443
2444		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
2445			var i = argument < 0 ? argument + length : argument;
2446			for ( ; ++i < length; ) {
2447				matchIndexes.push( i );
2448			}
2449			return matchIndexes;
2450		})
2451	}
2452};
2453
2454Expr.pseudos["nth"] = Expr.pseudos["eq"];
2455
2456// Add button/input type pseudos
2457for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
2458	Expr.pseudos[ i ] = createInputPseudo( i );
2459}
2460for ( i in { submit: true, reset: true } ) {
2461	Expr.pseudos[ i ] = createButtonPseudo( i );
2462}
2463
2464// Easy API for creating new setFilters
2465function setFilters() {}
2466setFilters.prototype = Expr.filters = Expr.pseudos;
2467Expr.setFilters = new setFilters();
2468
2469tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
2470	var matched, match, tokens, type,
2471		soFar, groups, preFilters,
2472		cached = tokenCache[ selector + " " ];
2473
2474	if ( cached ) {
2475		return parseOnly ? 0 : cached.slice( 0 );
2476	}
2477
2478	soFar = selector;
2479	groups = [];
2480	preFilters = Expr.preFilter;
2481
2482	while ( soFar ) {
2483
2484		// Comma and first run
2485		if ( !matched || (match = rcomma.exec( soFar )) ) {
2486			if ( match ) {
2487				// Don't consume trailing commas as valid
2488				soFar = soFar.slice( match[0].length ) || soFar;
2489			}
2490			groups.push( (tokens = []) );
2491		}
2492
2493		matched = false;
vendor: 13,530 bytes, lines 2494-2972
2494
2495		// Combinators
2496		if ( (match = rcombinators.exec( soFar )) ) {
2497			matched = match.shift();
2498			tokens.push({
2499				value: matched,
2500				// Cast descendant combinators to space
2501				type: match[0].replace( rtrim, " " )
2502			});
2503			soFar = soFar.slice( matched.length );
2504		}
2505
2506		// Filters
2507		for ( type in Expr.filter ) {
2508			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
2509				(match = preFilters[ type ]( match ))) ) {
2510				matched = match.shift();
2511				tokens.push({
2512					value: matched,
2513					type: type,
2514					matches: match
2515				});
2516				soFar = soFar.slice( matched.length );
2517			}
2518		}
2519
2520		if ( !matched ) {
2521			break;
2522		}
2523	}
2524
2525	// Return the length of the invalid excess
2526	// if we're just parsing
2527	// Otherwise, throw an error or return tokens
2528	return parseOnly ?
2529		soFar.length :
2530		soFar ?
2531			Sizzle.error( selector ) :
2532			// Cache the tokens
2533			tokenCache( selector, groups ).slice( 0 );
2534};
2535
2536function toSelector( tokens ) {
2537	var i = 0,
2538		len = tokens.length,
2539		selector = "";
2540	for ( ; i < len; i++ ) {
2541		selector += tokens[i].value;
2542	}
2543	return selector;
2544}
2545
2546function addCombinator( matcher, combinator, base ) {
2547	var dir = combinator.dir,
2548		checkNonElements = base && dir === "parentNode",
2549		doneName = done++;
2550
2551	return combinator.first ?
2552		// Check against closest ancestor/preceding element
2553		function( elem, context, xml ) {
2554			while ( (elem = elem[ dir ]) ) {
2555				if ( elem.nodeType === 1 || checkNonElements ) {
2556					return matcher( elem, context, xml );
2557				}
2558			}
2559		} :
2560
2561		// Check against all ancestor/preceding elements
2562		function( elem, context, xml ) {
2563			var oldCache, outerCache,
2564				newCache = [ dirruns, doneName ];
2565
2566			// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
2567			if ( xml ) {
2568				while ( (elem = elem[ dir ]) ) {
2569					if ( elem.nodeType === 1 || checkNonElements ) {
2570						if ( matcher( elem, context, xml ) ) {
2571							return true;
2572						}
2573					}
2574				}
2575			} else {
2576				while ( (elem = elem[ dir ]) ) {
2577					if ( elem.nodeType === 1 || checkNonElements ) {
2578						outerCache = elem[ expando ] || (elem[ expando ] = {});
2579						if ( (oldCache = outerCache[ dir ]) &&
2580							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
2581
2582							// Assign to newCache so results back-propagate to previous elements
2583							return (newCache[ 2 ] = oldCache[ 2 ]);
2584						} else {
2585							// Reuse newcache so results back-propagate to previous elements
2586							outerCache[ dir ] = newCache;
2587
2588							// A match means we're done; a fail means we have to keep checking
2589							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
2590								return true;
2591							}
2592						}
2593					}
2594				}
2595			}
2596		};
2597}
2598
2599function elementMatcher( matchers ) {
2600	return matchers.length > 1 ?
2601		function( elem, context, xml ) {
2602			var i = matchers.length;
2603			while ( i-- ) {
2604				if ( !matchers[i]( elem, context, xml ) ) {
2605					return false;
2606				}
2607			}
2608			return true;
2609		} :
2610		matchers[0];
2611}
2612
2613function multipleContexts( selector, contexts, results ) {
2614	var i = 0,
2615		len = contexts.length;
2616	for ( ; i < len; i++ ) {
2617		Sizzle( selector, contexts[i], results );
2618	}
2619	return results;
2620}
2621
2622function condense( unmatched, map, filter, context, xml ) {
2623	var elem,
2624		newUnmatched = [],
2625		i = 0,
2626		len = unmatched.length,
2627		mapped = map != null;
2628
2629	for ( ; i < len; i++ ) {
2630		if ( (elem = unmatched[i]) ) {
2631			if ( !filter || filter( elem, context, xml ) ) {
2632				newUnmatched.push( elem );
2633				if ( mapped ) {
2634					map.push( i );
2635				}
2636			}
2637		}
2638	}
2639
2640	return newUnmatched;
2641}
2642
2643function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
2644	if ( postFilter && !postFilter[ expando ] ) {
2645		postFilter = setMatcher( postFilter );
2646	}
2647	if ( postFinder && !postFinder[ expando ] ) {
2648		postFinder = setMatcher( postFinder, postSelector );
2649	}
2650	return markFunction(function( seed, results, context, xml ) {
2651		var temp, i, elem,
2652			preMap = [],
2653			postMap = [],
2654			preexisting = results.length,
2655
2656			// Get initial elements from seed or context
2657			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
2658
2659			// Prefilter to get matcher input, preserving a map for seed-results synchronization
2660			matcherIn = preFilter && ( seed || !selector ) ?
2661				condense( elems, preMap, preFilter, context, xml ) :
2662				elems,
2663
2664			matcherOut = matcher ?
2665				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
2666				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
2667
2668					// ...intermediate processing is necessary
2669					[] :
2670
2671					// ...otherwise use results directly
2672					results :
2673				matcherIn;
2674
2675		// Find primary matches
2676		if ( matcher ) {
2677			matcher( matcherIn, matcherOut, context, xml );
2678		}
2679
2680		// Apply postFilter
2681		if ( postFilter ) {
2682			temp = condense( matcherOut, postMap );
2683			postFilter( temp, [], context, xml );
2684
2685			// Un-match failing elements by moving them back to matcherIn
2686			i = temp.length;
2687			while ( i-- ) {
2688				if ( (elem = temp[i]) ) {
2689					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
2690				}
2691			}
2692		}
2693
2694		if ( seed ) {
2695			if ( postFinder || preFilter ) {
2696				if ( postFinder ) {
2697					// Get the final matcherOut by condensing this intermediate into postFinder contexts
2698					temp = [];
2699					i = matcherOut.length;
2700					while ( i-- ) {
2701						if ( (elem = matcherOut[i]) ) {
2702							// Restore matcherIn since elem is not yet a final match
2703							temp.push( (matcherIn[i] = elem) );
2704						}
2705					}
2706					postFinder( null, (matcherOut = []), temp, xml );
2707				}
2708
2709				// Move matched elements from seed to results to keep them synchronized
2710				i = matcherOut.length;
2711				while ( i-- ) {
2712					if ( (elem = matcherOut[i]) &&
2713						(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
2714
2715						seed[temp] = !(results[temp] = elem);
2716					}
2717				}
2718			}
2719
2720		// Add elements to results, through postFinder if defined
2721		} else {
2722			matcherOut = condense(
2723				matcherOut === results ?
2724					matcherOut.splice( preexisting, matcherOut.length ) :
2725					matcherOut
2726			);
2727			if ( postFinder ) {
2728				postFinder( null, results, matcherOut, xml );
2729			} else {
2730				push.apply( results, matcherOut );
2731			}
2732		}
2733	});
2734}
2735
2736function matcherFromTokens( tokens ) {
2737	var checkContext, matcher, j,
2738		len = tokens.length,
2739		leadingRelative = Expr.relative[ tokens[0].type ],
2740		implicitRelative = leadingRelative || Expr.relative[" "],
2741		i = leadingRelative ? 1 : 0,
2742
2743		// The foundational matcher ensures that elements are reachable from top-level context(s)
2744		matchContext = addCombinator( function( elem ) {
2745			return elem === checkContext;
2746		}, implicitRelative, true ),
2747		matchAnyContext = addCombinator( function( elem ) {
2748			return indexOf( checkContext, elem ) > -1;
2749		}, implicitRelative, true ),
2750		matchers = [ function( elem, context, xml ) {
2751			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
2752				(checkContext = context).nodeType ?
2753					matchContext( elem, context, xml ) :
2754					matchAnyContext( elem, context, xml ) );
2755			// Avoid hanging onto element (issue #299)
2756			checkContext = null;
2757			return ret;
2758		} ];
2759
2760	for ( ; i < len; i++ ) {
2761		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
2762			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
2763		} else {
2764			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
2765
2766			// Return special upon seeing a positional matcher
2767			if ( matcher[ expando ] ) {
2768				// Find the next relative operator (if any) for proper handling
2769				j = ++i;
2770				for ( ; j < len; j++ ) {
2771					if ( Expr.relative[ tokens[j].type ] ) {
2772						break;
2773					}
2774				}
2775				return setMatcher(
2776					i > 1 && elementMatcher( matchers ),
2777					i > 1 && toSelector(
2778						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
2779						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
2780					).replace( rtrim, "$1" ),
2781					matcher,
2782					i < j && matcherFromTokens( tokens.slice( i, j ) ),
2783					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
2784					j < len && toSelector( tokens )
2785				);
2786			}
2787			matchers.push( matcher );
2788		}
2789	}
2790
2791	return elementMatcher( matchers );
2792}
2793
2794function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
2795	var bySet = setMatchers.length > 0,
2796		byElement = elementMatchers.length > 0,
2797		superMatcher = function( seed, context, xml, results, outermost ) {
2798			var elem, j, matcher,
2799				matchedCount = 0,
2800				i = "0",
2801				unmatched = seed && [],
2802				setMatched = [],
2803				contextBackup = outermostContext,
2804				// We must always have either seed elements or outermost context
2805				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
2806				// Use integer dirruns iff this is the outermost matcher
2807				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
2808				len = elems.length;
2809
2810			if ( outermost ) {
2811				outermostContext = context !== document && context;
2812			}
2813
2814			// Add elements passing elementMatchers directly to results
2815			// Keep `i` a string if there are no elements so `matchedCount` will be "00" below
2816			// Support: IE<9, Safari
2817			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
2818			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
2819				if ( byElement && elem ) {
2820					j = 0;
2821					while ( (matcher = elementMatchers[j++]) ) {
2822						if ( matcher( elem, context, xml ) ) {
2823							results.push( elem );
2824							break;
2825						}
2826					}
2827					if ( outermost ) {
2828						dirruns = dirrunsUnique;
2829					}
2830				}
2831
2832				// Track unmatched elements for set filters
2833				if ( bySet ) {
2834					// They will have gone through all possible matchers
2835					if ( (elem = !matcher && elem) ) {
2836						matchedCount--;
2837					}
2838
2839					// Lengthen the array for every element, matched or not
2840					if ( seed ) {
2841						unmatched.push( elem );
2842					}
2843				}
2844			}
2845
2846			// Apply set filters to unmatched elements
2847			matchedCount += i;
2848			if ( bySet && i !== matchedCount ) {
2849				j = 0;
2850				while ( (matcher = setMatchers[j++]) ) {
2851					matcher( unmatched, setMatched, context, xml );
2852				}
2853
2854				if ( seed ) {
2855					// Reintegrate element matches to eliminate the need for sorting
2856					if ( matchedCount > 0 ) {
2857						while ( i-- ) {
2858							if ( !(unmatched[i] || setMatched[i]) ) {
2859								setMatched[i] = pop.call( results );
2860							}
2861						}
2862					}
2863
2864					// Discard index placeholder values to get only actual matches
2865					setMatched = condense( setMatched );
2866				}
2867
2868				// Add matches to results
2869				push.apply( results, setMatched );
2870
2871				// Seedless set matches succeeding multiple successful matchers stipulate sorting
2872				if ( outermost && !seed && setMatched.length > 0 &&
2873					( matchedCount + setMatchers.length ) > 1 ) {
2874
2875					Sizzle.uniqueSort( results );
2876				}
2877			}
2878
2879			// Override manipulation of globals by nested matchers
2880			if ( outermost ) {
2881				dirruns = dirrunsUnique;
2882				outermostContext = contextBackup;
2883			}
2884
2885			return unmatched;
2886		};
2887
2888	return bySet ?
2889		markFunction( superMatcher ) :
2890		superMatcher;
2891}
2892
2893compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
2894	var i,
2895		setMatchers = [],
2896		elementMatchers = [],
2897		cached = compilerCache[ selector + " " ];
2898
2899	if ( !cached ) {
2900		// Generate a function of recursive functions that can be used to check each element
2901		if ( !match ) {
2902			match = tokenize( selector );
2903		}
2904		i = match.length;
2905		while ( i-- ) {
2906			cached = matcherFromTokens( match[i] );
2907			if ( cached[ expando ] ) {
2908				setMatchers.push( cached );
2909			} else {
2910				elementMatchers.push( cached );
2911			}
2912		}
2913
2914		// Cache the compiled function
2915		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
2916
2917		// Save selector and tokenization
2918		cached.selector = selector;
2919	}
2920	return cached;
2921};
2922
2923/**
2924 * A low-level selection function that works with Sizzle's compiled
2925 *  selector functions
2926 * @param {String|Function} selector A selector or a pre-compiled
2927 *  selector function built with Sizzle.compile
2928 * @param {Element} context
2929 * @param {Array} [results]
2930 * @param {Array} [seed] A set of elements to match against
2931 */
2932select = Sizzle.select = function( selector, context, results, seed ) {
2933	var i, tokens, token, type, find,
2934		compiled = typeof selector === "function" && selector,
2935		match = !seed && tokenize( (selector = compiled.selector || selector) );
2936
2937	results = results || [];
2938
2939	// Try to minimize operations if there is no seed and only one group
2940	if ( match.length === 1 ) {
2941
2942		// Take a shortcut and set the context if the root selector is an ID
2943		tokens = match[0] = match[0].slice( 0 );
2944		if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
2945				support.getById && context.nodeType === 9 && documentIsHTML &&
2946				Expr.relative[ tokens[1].type ] ) {
2947
2948			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
2949			if ( !context ) {
2950				return results;
2951
2952			// Precompiled matchers will still verify ancestry, so step up a level
2953			} else if ( compiled ) {
2954				context = context.parentNode;
2955			}
2956
2957			selector = selector.slice( tokens.shift().value.length );
2958		}
2959
2960		// Fetch a seed set for right-to-left matching
2961		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
2962		while ( i-- ) {
2963			token = tokens[i];
2964
2965			// Abort if we hit a combinator
2966			if ( Expr.relative[ (type = token.type) ] ) {
2967				break;
2968			}
2969			if ( (find = Expr.find[ type ]) ) {
2970				// Search, expanding context for leading sibling combinators
2971				if ( (seed = find(
2972					token.matches[0].replace( runescape, funescape ),
2973					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
2974				)) ) {
2975
2976					// If seed is empty or no tokens remain, we can return early
2977					tokens.splice( i, 1 );
2978					selector = seed.length && toSelector( tokens );
2979					if ( !selector ) {
2980						push.apply( results, seed );
2981						return results;
2982					}
2983
2984					break;
2985				}
2986			}
2987		}
2988	}
2989
2990	// Compile and execute a filtering function if one is not provided
2991	// Provide `match` to avoid retokenization if we modified the selector above
2992	( compiled || compile( selector, match ) )(
2993		seed,
2994		context,
2995		!documentIsHTML,
2996		results,
2997		rsibling.test( selector ) && testContext( context.parentNode ) || context
2998	);
2999	return results;
3000};
3001
3002// One-time assignments
3003
3004// Sort stability
3005support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
3006
3007// Support: Chrome 14-35+
3008// Always assume duplicates if they aren't passed to the comparison function
3009support.detectDuplicates = !!hasDuplicate;
3010
3011// Initialize against the default document
3012setDocument();
3013
3014// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
3015// Detached nodes confoundingly follow *each other*
3016support.sortDetached = assert(function( div1 ) {
3017	// Should return 1, but returns 4 (following)
3018	return div1.compareDocumentPosition( document.createElement("div") ) & 1;
3019});
3020
3021// Support: IE<8
3022// Prevent attribute/property "interpolation"
3023// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
3024if ( !assert(function( div ) {
3025	div.innerHTML = "<a href='#'></a>";
3026	return div.firstChild.getAttribute("href") === "#" ;
3027}) ) {
3028	addHandle( "type|href|height|width", function( elem, name, isXML ) {
3029		if ( !isXML ) {
3030			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
3031		}
3032	});
3033}
3034
3035// Support: IE<9
3036// Use defaultValue in place of getAttribute("value")
3037if ( !support.attributes || !assert(function( div ) {
3038	div.innerHTML = "<input/>";
3039	div.firstChild.setAttribute( "value", "" );
3040	return div.firstChild.getAttribute( "value" ) === "";
3041}) ) {
3042	addHandle( "value", function( elem, name, isXML ) {
3043		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
3044			return elem.defaultValue;
3045		}
3046	});
3047}
3048
3049// Support: IE<9
3050// Use getAttributeNode to fetch booleans when getAttribute lies
3051if ( !assert(function( div ) {
3052	return div.getAttribute("disabled") == null;
3053}) ) {
3054	addHandle( booleans, function( elem, name, isXML ) {
3055		var val;
3056		if ( !isXML ) {
3057			return elem[ name ] === true ? name.toLowerCase() :
3058					(val = elem.getAttributeNode( name )) && val.specified ?
3059					val.value :
3060				null;
3061		}
3062	});
3063}
3064
3065return Sizzle;
3066
3067})( window );
3068
3069
3070
3071jQuery.find = Sizzle;
3072jQuery.expr = Sizzle.selectors;
3073jQuery.expr[":"] = jQuery.expr.pseudos;
3074jQuery.unique = Sizzle.uniqueSort;
3075jQuery.text = Sizzle.getText;
3076jQuery.isXMLDoc = Sizzle.isXML;
3077jQuery.contains = Sizzle.contains;
3078
3079
3080
3081var rneedsContext = jQuery.expr.match.needsContext;
3082
3083var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
3084
3085
3086
3087var risSimple = /^.[^:#\[\.,]*$/;
3088
3089// Implement the identical functionality for filter and not
3090function winnow( elements, qualifier, not ) {
3091	if ( jQuery.isFunction( qualifier ) ) {
3092		return jQuery.grep( elements, function( elem, i ) {
3093			/* jshint -W018 */
3094			return !!qualifier.call( elem, i, elem ) !== not;
3095		});
3096
3097	}
3098
3099	if ( qualifier.nodeType ) {
3100		return jQuery.grep( elements, function( elem ) {
3101			return ( elem === qualifier ) !== not;
3102		});
3103
3104	}
3105
3106	if ( typeof qualifier === "string" ) {
3107		if ( risSimple.test( qualifier ) ) {
3108			return jQuery.filter( qualifier, elements, not );
3109		}
3110
3111		qualifier = jQuery.filter( qualifier, elements );
3112	}
3113
3114	return jQuery.grep( elements, function( elem ) {
3115		return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
3116	});
3117}
3118
3119jQuery.filter = function( expr, elems, not ) {
3120	var elem = elems[ 0 ];
3121
3122	if ( not ) {
3123		expr = ":not(" + expr + ")";
3124	}
3125
3126	return elems.length === 1 && elem.nodeType === 1 ?
3127		jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
3128		jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
3129			return elem.nodeType === 1;
3130		}));
3131};
3132
3133jQuery.fn.extend({
3134	find: function( selector ) {
3135		var i,
3136			len = this.length,
3137			ret = [],
3138			self = this;
3139
3140		if ( typeof selector !== "string" ) {
3141			return this.pushStack( jQuery( selector ).filter(function() {
3142				for ( i = 0; i < len; i++ ) {
3143					if ( jQuery.contains( self[ i ], this ) ) {
3144						return true;
3145					}
3146				}
3147			}) );
3148		}
3149
3150		for ( i = 0; i < len; i++ ) {
3151			jQuery.find( selector, self[ i ], ret );
3152		}
3153
3154		// Needed because $( selector, context ) becomes $( context ).find( selector )
3155		ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
3156		ret.selector = this.selector ? this.selector + " " + selector : selector;
3157		return ret;
3158	},
3159	filter: function( selector ) {
3160		return this.pushStack( winnow(this, selector || [], false) );
3161	},
3162	not: function( selector ) {
3163		return this.pushStack( winnow(this, selector || [], true) );
3164	},
3165	is: function( selector ) {
3166		return !!winnow(
3167			this,
3168
3169			// If this is a positional/relative selector, check membership in the returned set
3170			// so $("p:first").is("p:last") won't return true for a doc with two "p".
3171			typeof selector === "string" && rneedsContext.test( selector ) ?
3172				jQuery( selector ) :
3173				selector || [],
3174			false
3175		).length;
3176	}
3177});
3178
3179
3180// Initialize a jQuery object
3181
3182
3183// A central reference to the root jQuery(document)
3184var rootjQuery,
3185
3186	// A simple way to check for HTML strings
3187	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
3188	// Strict HTML recognition (#11290: must start with <)
3189	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
3190
3191	init = jQuery.fn.init = function( selector, context ) {
3192		var match, elem;
3193
3194		// HANDLE: $(""), $(null), $(undefined), $(false)
3195		if ( !selector ) {
3196			return this;
3197		}
3198
3199		// Handle HTML strings
3200		if ( typeof selector === "string" ) {
3201			if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
3202				// Assume that strings that start and end with <> are HTML and skip the regex check
3203				match = [ null, selector, null ];
3204
3205			} else {
3206				match = rquickExpr.exec( selector );
3207			}
3208
3209			// Match html or make sure no context is specified for #id
3210			if ( match && (match[1] || !context) ) {
3211
3212				// HANDLE: $(html) -> $(array)
3213				if ( match[1] ) {
3214					context = context instanceof jQuery ? context[0] : context;
3215
3216					// Option to run scripts is true for back-compat
3217					// Intentionally let the error be thrown if parseHTML is not present
3218					jQuery.merge( this, jQuery.parseHTML(
3219						match[1],
3220						context && context.nodeType ? context.ownerDocument || context : document,
3221						true
3222					) );
3223
3224					// HANDLE: $(html, props)
3225					if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
3226						for ( match in context ) {
3227							// Properties of context are called as methods if possible
3228							if ( jQuery.isFunction( this[ match ] ) ) {
3229								this[ match ]( context[ match ] );
3230
3231							// ...and otherwise set as attributes
3232							} else {
3233								this.attr( match, context[ match ] );
3234							}
3235						}
3236					}
3237
3238					return this;
3239
3240				// HANDLE: $(#id)
3241				} else {
3242					elem = document.getElementById( match[2] );
3243
3244					// Support: Blackberry 4.6
3245					// gEBID returns nodes no longer in the document (#6963)
3246					if ( elem && elem.parentNode ) {
3247						// Inject the element directly into the jQuery object
3248						this.length = 1;
3249						this[0] = elem;
3250					}
3251
3252					this.context = document;
3253					this.selector = selector;
3254					return this;
3255				}
3256
3257			// HANDLE: $(expr, $(...))
3258			} else if ( !context || context.jquery ) {
3259				return ( context || rootjQuery ).find( selector );
3260
3261			// HANDLE: $(expr, context)
3262			// (which is just equivalent to: $(context).find(expr)
3263			} else {
3264				return this.constructor( context ).find( selector );
3265			}
3266
3267		// HANDLE: $(DOMElement)
3268		} else if ( selector.nodeType ) {
3269			this.context = this[0] = selector;
3270			this.length = 1;
3271			return this;
3272
3273		// HANDLE: $(function)
3274		// Shortcut for document ready
3275		} else if ( jQuery.isFunction( selector ) ) {
3276			return typeof rootjQuery.ready !== "undefined" ?
3277				rootjQuery.ready( selector ) :
3278				// Execute immediately if ready is not present
3279				selector( jQuery );
3280		}
3281
3282		if ( selector.selector !== undefined ) {
3283			this.selector = selector.selector;
3284			this.context = selector.context;
3285		}
3286
3287		return jQuery.makeArray( selector, this );
3288	};
3289
3290// Give the init function the jQuery prototype for later instantiation
3291init.prototype = jQuery.fn;
3292
3293// Initialize central reference
3294rootjQuery = jQuery( document );
3295
3296
3297var rparentsprev = /^(?:parents|prev(?:Until|All))/,
3298	// Methods guaranteed to produce a unique set when starting from a unique set
3299	guaranteedUnique = {
3300		children: true,
3301		contents: true,
3302		next: true,
3303		prev: true
3304	};
3305
3306jQuery.extend({
3307	dir: function( elem, dir, until ) {
3308		var matched = [],
3309			truncate = until !== undefined;
3310
3311		while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
3312			if ( elem.nodeType === 1 ) {
3313				if ( truncate && jQuery( elem ).is( until ) ) {
3314					break;
3315				}
3316				matched.push( elem );
3317			}
3318		}
3319		return matched;
3320	},
3321
3322	sibling: function( n, elem ) {
3323		var matched = [];
3324
3325		for ( ; n; n = n.nextSibling ) {
3326			if ( n.nodeType === 1 && n !== elem ) {
3327				matched.push( n );
3328			}
3329		}
3330
3331		return matched;
3332	}
3333});
3334
3335jQuery.fn.extend({
3336	has: function( target ) {
3337		var targets = jQuery( target, this ),
3338			l = targets.length;
3339
3340		return this.filter(function() {
3341			var i = 0;
3342			for ( ; i < l; i++ ) {
3343				if ( jQuery.contains( this, targets[i] ) ) {
3344					return true;
3345				}
3346			}
3347		});
3348	},
3349
3350	closest: function( selectors, context ) {
3351		var cur,
3352			i = 0,
3353			l = this.length,
3354			matched = [],
3355			pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
vendor: 5,006 bytes, lines 3356-3543
3356				jQuery( selectors, context || this.context ) :
3357				0;
3358
3359		for ( ; i < l; i++ ) {
3360			for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
3361				// Always skip document fragments
3362				if ( cur.nodeType < 11 && (pos ?
3363					pos.index(cur) > -1 :
3364
3365					// Don't pass non-elements to Sizzle
3366					cur.nodeType === 1 &&
3367						jQuery.find.matchesSelector(cur, selectors)) ) {
3368
3369					matched.push( cur );
3370					break;
3371				}
3372			}
3373		}
3374
3375		return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
3376	},
3377
3378	// Determine the position of an element within the set
3379	index: function( elem ) {
3380
3381		// No argument, return index in parent
3382		if ( !elem ) {
3383			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
3384		}
3385
3386		// Index in selector
3387		if ( typeof elem === "string" ) {
3388			return indexOf.call( jQuery( elem ), this[ 0 ] );
3389		}
3390
3391		// Locate the position of the desired element
3392		return indexOf.call( this,
3393
3394			// If it receives a jQuery object, the first element is used
3395			elem.jquery ? elem[ 0 ] : elem
3396		);
3397	},
3398
3399	add: function( selector, context ) {
3400		return this.pushStack(
3401			jQuery.unique(
3402				jQuery.merge( this.get(), jQuery( selector, context ) )
3403			)
3404		);
3405	},
3406
3407	addBack: function( selector ) {
3408		return this.add( selector == null ?
3409			this.prevObject : this.prevObject.filter(selector)
3410		);
3411	}
3412});
3413
3414function sibling( cur, dir ) {
3415	while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}
3416	return cur;
3417}
3418
3419jQuery.each({
3420	parent: function( elem ) {
3421		var parent = elem.parentNode;
3422		return parent && parent.nodeType !== 11 ? parent : null;
3423	},
3424	parents: function( elem ) {
3425		return jQuery.dir( elem, "parentNode" );
3426	},
3427	parentsUntil: function( elem, i, until ) {
3428		return jQuery.dir( elem, "parentNode", until );
3429	},
3430	next: function( elem ) {
3431		return sibling( elem, "nextSibling" );
3432	},
3433	prev: function( elem ) {
3434		return sibling( elem, "previousSibling" );
3435	},
3436	nextAll: function( elem ) {
3437		return jQuery.dir( elem, "nextSibling" );
3438	},
3439	prevAll: function( elem ) {
3440		return jQuery.dir( elem, "previousSibling" );
3441	},
3442	nextUntil: function( elem, i, until ) {
3443		return jQuery.dir( elem, "nextSibling", until );
3444	},
3445	prevUntil: function( elem, i, until ) {
3446		return jQuery.dir( elem, "previousSibling", until );
3447	},
3448	siblings: function( elem ) {
3449		return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
3450	},
3451	children: function( elem ) {
3452		return jQuery.sibling( elem.firstChild );
3453	},
3454	contents: function( elem ) {
3455		return elem.contentDocument || jQuery.merge( [], elem.childNodes );
3456	}
3457}, function( name, fn ) {
3458	jQuery.fn[ name ] = function( until, selector ) {
3459		var matched = jQuery.map( this, fn, until );
3460
3461		if ( name.slice( -5 ) !== "Until" ) {
3462			selector = until;
3463		}
3464
3465		if ( selector && typeof selector === "string" ) {
3466			matched = jQuery.filter( selector, matched );
3467		}
3468
3469		if ( this.length > 1 ) {
3470			// Remove duplicates
3471			if ( !guaranteedUnique[ name ] ) {
3472				jQuery.unique( matched );
3473			}
3474
3475			// Reverse order for parents* and prev-derivatives
3476			if ( rparentsprev.test( name ) ) {
3477				matched.reverse();
3478			}
3479		}
3480
3481		return this.pushStack( matched );
3482	};
3483});
3484var rnotwhite = (/\S+/g);
3485
3486
3487
3488// String to Object options format cache
3489var optionsCache = {};
3490
3491// Convert String-formatted options into Object-formatted ones and store in cache
3492function createOptions( options ) {
3493	var object = optionsCache[ options ] = {};
3494	jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
3495		object[ flag ] = true;
3496	});
3497	return object;
3498}
3499
3500/*
3501 * Create a callback list using the following parameters:
3502 *
3503 *	options: an optional list of space-separated options that will change how
3504 *			the callback list behaves or a more traditional option object
3505 *
3506 * By default a callback list will act like an event callback list and can be
3507 * "fired" multiple times.
3508 *
3509 * Possible options:
3510 *
3511 *	once:			will ensure the callback list can only be fired once (like a Deferred)
3512 *
3513 *	memory:			will keep track of previous values and will call any callback added
3514 *					after the list has been fired right away with the latest "memorized"
3515 *					values (like a Deferred)
3516 *
3517 *	unique:			will ensure a callback can only be added once (no duplicate in the list)
3518 *
3519 *	stopOnFalse:	interrupt callings when a callback returns false
3520 *
3521 */
3522jQuery.Callbacks = function( options ) {
3523
3524	// Convert options from String-formatted to Object-formatted if needed
3525	// (we check in cache first)
3526	options = typeof options === "string" ?
3527		( optionsCache[ options ] || createOptions( options ) ) :
3528		jQuery.extend( {}, options );
3529
3530	var // Last fire value (for non-forgettable lists)
3531		memory,
3532		// Flag to know if list was already fired
3533		fired,
3534		// Flag to know if list is currently firing
3535		firing,
3536		// First callback to fire (used internally by add and fireWith)
3537		firingStart,
3538		// End of the loop when firing
3539		firingLength,
3540		// Index of currently firing callback (modified by remove if needed)
3541		firingIndex,
3542		// Actual callback list
3543		list = [],
3544		// Stack of fire calls for repeatable lists
3545		stack = !options.once && [],
3546		// Fire callbacks
3547		fire = function( data ) {
3548			memory = options.memory && data;
3549			fired = true;
3550			firingIndex = firingStart || 0;
3551			firingStart = 0;
3552			firingLength = list.length;
3553			firing = true;
3554			for ( ; list && firingIndex < firingLength; firingIndex++ ) {
3555				if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
3556					memory = false; // To prevent further calls using add
3557					break;
3558				}
3559			}
3560			firing = false;
3561			if ( list ) {
3562				if ( stack ) {
3563					if ( stack.length ) {
3564						fire( stack.shift() );
3565					}
3566				} else if ( memory ) {
3567					list = [];
3568				} else {
3569					self.disable();
3570				}
3571			}
3572		},
3573		// Actual Callbacks object
3574		self = {
3575			// Add a callback or a collection of callbacks to the list
3576			add: function() {
3577				if ( list ) {
3578					// First, we save the current length
3579					var start = list.length;
3580					(function add( args ) {
3581						jQuery.each( args, function( _, arg ) {
3582							var type = jQuery.type( arg );
3583							if ( type === "function" ) {
3584								if ( !options.unique || !self.has( arg ) ) {
3585									list.push( arg );
3586								}
3587							} else if ( arg && arg.length && type !== "string" ) {
3588								// Inspect recursively
3589								add( arg );
3590							}
3591						});
3592					})( arguments );
3593					// Do we need to add the callbacks to the
3594					// current firing batch?
3595					if ( firing ) {
3596						firingLength = list.length;
3597					// With memory, if we're not firing then
3598					// we should call right away
3599					} else if ( memory ) {
3600						firingStart = start;
3601						fire( memory );
3602					}
3603				}
3604				return this;
3605			},
3606			// Remove a callback from the list
3607			remove: function() {
3608				if ( list ) {
3609					jQuery.each( arguments, function( _, arg ) {
3610						var index;
3611						while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
3612							list.splice( index, 1 );
3613							// Handle firing indexes
3614							if ( firing ) {
3615								if ( index <= firingLength ) {
3616									firingLength--;
3617								}
3618								if ( index <= firingIndex ) {
3619									firingIndex--;
3620								}
3621							}
3622						}
3623					});
3624				}
3625				return this;
3626			},
3627			// Check if a given callback is in the list.
3628			// If no argument is given, return whether or not list has callbacks attached.
3629			has: function( fn ) {
3630				return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
3631			},
3632			// Remove all callbacks from the list
3633			empty: function() {
3634				list = [];
3635				firingLength = 0;
3636				return this;
3637			},
3638			// Have the list do nothing anymore
3639			disable: function() {
3640				list = stack = memory = undefined;
3641				return this;
3642			},
3643			// Is it disabled?
3644			disabled: function() {
3645				return !list;
3646			},
3647			// Lock the list in its current state
3648			lock: function() {
3649				stack = undefined;
3650				if ( !memory ) {
3651					self.disable();
3652				}
3653				return this;
3654			},
3655			// Is it locked?
3656			locked: function() {
3657				return !stack;
3658			},
3659			// Call all callbacks with the given context and arguments
3660			fireWith: function( context, args ) {
3661				if ( list && ( !fired || stack ) ) {
3662					args = args || [];
3663					args = [ context, args.slice ? args.slice() : args ];
3664					if ( firing ) {
3665						stack.push( args );
3666					} else {
3667						fire( args );
3668					}
3669				}
3670				return this;
3671			},
3672			// Call all the callbacks with the given arguments
3673			fire: function() {
3674				self.fireWith( this, arguments );
3675				return this;
3676			},
3677			// To know if the callbacks have already been called at least once
3678			fired: function() {
3679				return !!fired;
3680			}
3681		};
3682
3683	return self;
3684};
3685
3686
3687jQuery.extend({
3688
3689	Deferred: function( func ) {
3690		var tuples = [
3691				// action, add listener, listener list, final state
3692				[ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
3693				[ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
3694				[ "notify", "progress", jQuery.Callbacks("memory") ]
3695			],
3696			state = "pending",
3697			promise = {
3698				state: function() {
3699					return state;
3700				},
3701				always: function() {
3702					deferred.done( arguments ).fail( arguments );
3703					return this;
3704				},
3705				then: function( /* fnDone, fnFail, fnProgress */ ) {
3706					var fns = arguments;
3707					return jQuery.Deferred(function( newDefer ) {
3708						jQuery.each( tuples, function( i, tuple ) {
3709							var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
3710							// deferred[ done | fail | progress ] for forwarding actions to newDefer
3711							deferred[ tuple[1] ](function() {
3712								var returned = fn && fn.apply( this, arguments );
3713								if ( returned && jQuery.isFunction( returned.promise ) ) {
3714									returned.promise()
3715										.done( newDefer.resolve )
3716										.fail( newDefer.reject )
3717										.progress( newDefer.notify );
3718								} else {
3719									newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
3720								}
3721							});
3722						});
3723						fns = null;
3724					}).promise();
3725				},
3726				// Get a promise for this deferred
3727				// If obj is provided, the promise aspect is added to the object
3728				promise: function( obj ) {
3729					return obj != null ? jQuery.extend( obj, promise ) : promise;
3730				}
3731			},
3732			deferred = {};
3733
3734		// Keep pipe for back-compat
3735		promise.pipe = promise.then;
3736
3737		// Add list-specific methods
3738		jQuery.each( tuples, function( i, tuple ) {
3739			var list = tuple[ 2 ],
3740				stateString = tuple[ 3 ];
3741
3742			// promise[ done | fail | progress ] = list.add
3743			promise[ tuple[1] ] = list.add;
3744
3745			// Handle state
3746			if ( stateString ) {
3747				list.add(function() {
3748					// state = [ resolved | rejected ]
3749					state = stateString;
3750
3751				// [ reject_list | resolve_list ].disable; progress_list.lock
3752				}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
3753			}
3754
3755			// deferred[ resolve | reject | notify ]
3756			deferred[ tuple[0] ] = function() {
3757				deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
3758				return this;
3759			};
3760			deferred[ tuple[0] + "With" ] = list.fireWith;
3761		});
3762
3763		// Make the deferred a promise
3764		promise.promise( deferred );
3765
3766		// Call given func if any
3767		if ( func ) {
3768			func.call( deferred, deferred );
3769		}
3770
3771		// All done!
3772		return deferred;
3773	},
3774
3775	// Deferred helper
3776	when: function( subordinate /* , ..., subordinateN */ ) {
3777		var i = 0,
3778			resolveValues = slice.call( arguments ),
3779			length = resolveValues.length,
3780
3781			// the count of uncompleted subordinates
3782			remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
3783
3784			// the master Deferred. If resolveValues consist of only a single Deferred, just use that.
3785			deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
3786
3787			// Update function for both resolve and progress values
3788			updateFunc = function( i, contexts, values ) {
3789				return function( value ) {
3790					contexts[ i ] = this;
3791					values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
3792					if ( values === progressValues ) {
3793						deferred.notifyWith( contexts, values );
3794					} else if ( !( --remaining ) ) {
3795						deferred.resolveWith( contexts, values );
3796					}
3797				};
3798			},
3799
3800			progressValues, progressContexts, resolveContexts;
3801
3802		// Add listeners to Deferred subordinates; treat others as resolved
3803		if ( length > 1 ) {
3804			progressValues = new Array( length );
3805			progressContexts = new Array( length );
3806			resolveContexts = new Array( length );
3807			for ( ; i < length; i++ ) {
3808				if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
3809					resolveValues[ i ].promise()
3810						.done( updateFunc( i, resolveContexts, resolveValues ) )
3811						.fail( deferred.reject )
3812						.progress( updateFunc( i, progressContexts, progressValues ) );
3813				} else {
3814					--remaining;
3815				}
3816			}
3817		}
3818
3819		// If we're not waiting on anything, resolve the master
3820		if ( !remaining ) {
3821			deferred.resolveWith( resolveContexts, resolveValues );
3822		}
3823
3824		return deferred.promise();
3825	}
3826});
3827
3828
3829// The deferred used on DOM ready
3830var readyList;
3831
3832jQuery.fn.ready = function( fn ) {
3833	// Add the callback
3834	jQuery.ready.promise().done( fn );
3835
3836	return this;
3837};
3838
3839jQuery.extend({
3840	// Is the DOM ready to be used? Set to true once it occurs.
3841	isReady: false,
3842
3843	// A counter to track how many items to wait for before
3844	// the ready event fires. See #6781
3845	readyWait: 1,
3846
3847	// Hold (or release) the ready event
3848	holdReady: function( hold ) {
3849		if ( hold ) {
3850			jQuery.readyWait++;
3851		} else {
3852			jQuery.ready( true );
3853		}
3854	},
3855
3856	// Handle when the DOM is ready
3857	ready: function( wait ) {
3858
3859		// Abort if there are pending holds or we're already ready
3860		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
3861			return;
3862		}
3863
3864		// Remember that the DOM is ready
3865		jQuery.isReady = true;
3866
3867		// If a normal DOM Ready event fired, decrement, and wait if need be
3868		if ( wait !== true && --jQuery.readyWait > 0 ) {
3869			return;
3870		}
3871
3872		// If there are functions bound, to execute
3873		readyList.resolveWith( document, [ jQuery ] );
3874
3875		// Trigger any bound ready events
3876		if ( jQuery.fn.triggerHandler ) {
3877			jQuery( document ).triggerHandler( "ready" );
3878			jQuery( document ).off( "ready" );
3879		}
3880	}
3881});
3882
3883/**
3884 * The ready event handler and self cleanup method
3885 */
3886function completed() {
3887	document.removeEventListener( "DOMContentLoaded", completed, false );
3888	window.removeEventListener( "load", completed, false );
3889	jQuery.ready();
3890}
3891
3892jQuery.ready.promise = function( obj ) {
3893	if ( !readyList ) {
3894
3895		readyList = jQuery.Deferred();
3896
3897		// Catch cases where $(document).ready() is called after the browser event has already occurred.
3898		// We once tried to use readyState "interactive" here, but it caused issues like the one
3899		// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
3900		if ( document.readyState === "complete" ) {
3901			// Handle it asynchronously to allow scripts the opportunity to delay ready
3902			setTimeout( jQuery.ready );
3903
3904		} else {
3905
3906			// Use the handy event callback
3907			document.addEventListener( "DOMContentLoaded", completed, false );
3908
3909			// A fallback to window.onload, that will always work
3910			window.addEventListener( "load", completed, false );
3911		}
3912	}
3913	return readyList.promise( obj );
3914};
3915
3916// Kick off the DOM ready check even if the user does not
3917jQuery.ready.promise();
3918
3919
3920
3921
3922// Multifunctional method to get and set values of a collection
3923// The value/s can optionally be executed if it's a function
3924var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
3925	var i = 0,
3926		len = elems.length,
3927		bulk = key == null;
3928
3929	// Sets many values
3930	if ( jQuery.type( key ) === "object" ) {
3931		chainable = true;
3932		for ( i in key ) {
3933			jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
3934		}
3935
3936	// Sets one value
3937	} else if ( value !== undefined ) {
3938		chainable = true;
3939
3940		if ( !jQuery.isFunction( value ) ) {
3941			raw = true;
3942		}
3943
3944		if ( bulk ) {
3945			// Bulk operations run against the entire set
3946			if ( raw ) {
3947				fn.call( elems, value );
3948				fn = null;
3949
3950			// ...except when executing function values
3951			} else {
3952				bulk = fn;
3953				fn = function( elem, key, value ) {
3954					return bulk.call( jQuery( elem ), value );
3955				};
3956			}
3957		}
3958
3959		if ( fn ) {
3960			for ( ; i < len; i++ ) {
3961				fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
3962			}
3963		}
3964	}
3965
3966	return chainable ?
3967		elems :
3968
3969		// Gets
3970		bulk ?
3971			fn.call( elems ) :
3972			len ? fn( elems[0], key ) : emptyGet;
3973};
3974
3975
3976/**
3977 * Determines whether an object can have data
3978 */
3979jQuery.acceptData = function( owner ) {
3980	// Accepts only:
3981	//  - Node
3982	//    - Node.ELEMENT_NODE
3983	//    - Node.DOCUMENT_NODE
3984	//  - Object
3985	//    - Any
3986	/* jshint -W018 */
3987	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
3988};
3989
3990
3991function Data() {
3992	// Support: Android<4,
3993	// Old WebKit does not have Object.preventExtensions/freeze method,
3994	// return new empty object instead with no [[set]] accessor
3995	Object.defineProperty( this.cache = {}, 0, {
3996		get: function() {
3997			return {};
3998		}
3999	});
4000
4001	this.expando = jQuery.expando + Data.uid++;
4002}
4003
4004Data.uid = 1;
4005Data.accepts = jQuery.acceptData;
4006
4007Data.prototype = {
4008	key: function( owner ) {
4009		// We can accept data for non-element nodes in modern browsers,
4010		// but we should not, see #8335.
4011		// Always return the key for a frozen object.
4012		if ( !Data.accepts( owner ) ) {
4013			return 0;
4014		}
4015
4016		var descriptor = {},
4017			// Check if the owner object already has a cache key
4018			unlock = owner[ this.expando ];
4019
4020		// If not, create one
4021		if ( !unlock ) {
4022			unlock = Data.uid++;
4023
4024			// Secure it in a non-enumerable, non-writable property
4025			try {
4026				descriptor[ this.expando ] = { value: unlock };
4027				Object.defineProperties( owner, descriptor );
4028
4029			// Support: Android<4
4030			// Fallback to a less secure definition
4031			} catch ( e ) {
4032				descriptor[ this.expando ] = unlock;
4033				jQuery.extend( owner, descriptor );
4034			}
4035		}
4036
4037		// Ensure the cache object
4038		if ( !this.cache[ unlock ] ) {
4039			this.cache[ unlock ] = {};
4040		}
4041
4042		return unlock;
4043	},
4044	set: function( owner, data, value ) {
4045		var prop,
4046			// There may be an unlock assigned to this node,
4047			// if there is no entry for this "owner", create one inline
4048			// and set the unlock as though an owner entry had always existed
4049			unlock = this.key( owner ),
4050			cache = this.cache[ unlock ];
4051
4052		// Handle: [ owner, key, value ] args
4053		if ( typeof data === "string" ) {
4054			cache[ data ] = value;
4055
4056		// Handle: [ owner, { properties } ] args
4057		} else {
4058			// Fresh assignments by object are shallow copied
4059			if ( jQuery.isEmptyObject( cache ) ) {
4060				jQuery.extend( this.cache[ unlock ], data );
4061			// Otherwise, copy the properties one-by-one to the cache object
4062			} else {
4063				for ( prop in data ) {
4064					cache[ prop ] = data[ prop ];
4065				}
4066			}
4067		}
4068		return cache;
4069	},
4070	get: function( owner, key ) {
4071		// Either a valid cache is found, or will be created.
4072		// New caches will be created and the unlock returned,
4073		// allowing direct access to the newly created
4074		// empty data object. A valid owner object must be provided.
4075		var cache = this.cache[ this.key( owner ) ];
4076
4077		return key === undefined ?
4078			cache : cache[ key ];
4079	},
4080	access: function( owner, key, value ) {
4081		var stored;
4082		// In cases where either:
4083		//
4084		//   1. No key was specified
4085		//   2. A string key was specified, but no value provided
4086		//
4087		// Take the "read" path and allow the get method to determine
4088		// which value to return, respectively either:
4089		//
4090		//   1. The entire cache object
4091		//   2. The data stored at the key
4092		//
4093		if ( key === undefined ||
4094				((key && typeof key === "string") && value === undefined) ) {
4095
4096			stored = this.get( owner, key );
4097
4098			return stored !== undefined ?
4099				stored : this.get( owner, jQuery.camelCase(key) );
4100		}
4101
4102		// [*]When the key is not a string, or both a key and value
4103		// are specified, set or extend (existing objects) with either:
4104		//
4105		//   1. An object of properties
4106		//   2. A key and value
4107		//
4108		this.set( owner, key, value );
4109
4110		// Since the "set" path can have two possible entry points
4111		// return the expected data based on which path was taken[*]
4112		return value !== undefined ? value : key;
4113	},
4114	remove: function( owner, key ) {
4115		var i, name, camel,
4116			unlock = this.key( owner ),
4117			cache = this.cache[ unlock ];
4118
4119		if ( key === undefined ) {
4120			this.cache[ unlock ] = {};
4121
4122		} else {
4123			// Support array or space separated string of keys
4124			if ( jQuery.isArray( key ) ) {
4125				// If "name" is an array of keys...
4126				// When data is initially created, via ("key", "val") signature,
4127				// keys will be converted to camelCase.
4128				// Since there is no way to tell _how_ a key was added, remove
4129				// both plain key and camelCase key. #12786
4130				// This will only penalize the array argument path.
4131				name = key.concat( key.map( jQuery.camelCase ) );
4132			} else {
4133				camel = jQuery.camelCase( key );
4134				// Try the string as a key before any manipulation
4135				if ( key in cache ) {
4136					name = [ key, camel ];
4137				} else {
4138					// If a key with the spaces exists, use it.
4139					// Otherwise, create an array by matching non-whitespace
4140					name = camel;
4141					name = name in cache ?
4142						[ name ] : ( name.match( rnotwhite ) || [] );
4143				}
4144			}
4145
4146			i = name.length;
4147			while ( i-- ) {
4148				delete cache[ name[ i ] ];
4149			}
4150		}
4151	},
4152	hasData: function( owner ) {
4153		return !jQuery.isEmptyObject(
4154			this.cache[ owner[ this.expando ] ] || {}
4155		);
4156	},
4157	discard: function( owner ) {
4158		if ( owner[ this.expando ] ) {
4159			delete this.cache[ owner[ this.expando ] ];
4160		}
4161	}
4162};
4163var data_priv = new Data();
4164
4165var data_user = new Data();
4166
4167
4168
4169//	Implementation Summary
4170//
4171//	1. Enforce API surface and semantic compatibility with 1.9.x branch
4172//	2. Improve the module's maintainability by reducing the storage
4173//		paths to a single mechanism.
4174//	3. Use the same single mechanism to support "private" and "user" data.
4175//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
4176//	5. Avoid exposing implementation details on user objects (eg. expando properties)
4177//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
4178
4179var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
4180	rmultiDash = /([A-Z])/g;
4181
4182function dataAttr( elem, key, data ) {
4183	var name;
4184
4185	// If nothing was found internally, try to fetch any
4186	// data from the HTML5 data-* attribute
4187	if ( data === undefined && elem.nodeType === 1 ) {
4188		name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
4189		data = elem.getAttribute( name );
4190
4191		if ( typeof data === "string" ) {
4192			try {
4193				data = data === "true" ? true :
4194					data === "false" ? false :
4195					data === "null" ? null :
4196					// Only convert to a number if it doesn't change the string
4197					+data + "" === data ? +data :
4198					rbrace.test( data ) ? jQuery.parseJSON( data ) :
4199					data;
4200			} catch( e ) {}
4201
4202			// Make sure we set the data so it isn't changed later
4203			data_user.set( elem, key, data );
4204		} else {
4205			data = undefined;
4206		}
4207	}
4208	return data;
4209}
4210
4211jQuery.extend({
4212	hasData: function( elem ) {
4213		return data_user.hasData( elem ) || data_priv.hasData( elem );
4214	},
4215
4216	data: function( elem, name, data ) {
4217		return data_user.access( elem, name, data );
4218	},
4219
4220	removeData: function( elem, name ) {
4221		data_user.remove( elem, name );
4222	},
4223
4224	// TODO: Now that all calls to _data and _removeData have been replaced
4225	// with direct calls to data_priv methods, these can be deprecated.
4226	_data: function( elem, name, data ) {
4227		return data_priv.access( elem, name, data );
4228	},
4229
4230	_removeData: function( elem, name ) {
4231		data_priv.remove( elem, name );
4232	}
4233});
4234
4235jQuery.fn.extend({
4236	data: function( key, value ) {
4237		var i, name, data,
4238			elem = this[ 0 ],
4239			attrs = elem && elem.attributes;
4240
4241		// Gets all values
4242		if ( key === undefined ) {
4243			if ( this.length ) {
4244				data = data_user.get( elem );
4245
4246				if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
4247					i = attrs.length;
4248					while ( i-- ) {
4249
4250						// Support: IE11+
4251						// The attrs elements can be null (#14894)
4252						if ( attrs[ i ] ) {
4253							name = attrs[ i ].name;
4254							if ( name.indexOf( "data-" ) === 0 ) {
4255								name = jQuery.camelCase( name.slice(5) );
4256								dataAttr( elem, name, data[ name ] );
4257							}
4258						}
4259					}
4260					data_priv.set( elem, "hasDataAttrs", true );
4261				}
4262			}
4263
4264			return data;
4265		}
4266
4267		// Sets multiple values
4268		if ( typeof key === "object" ) {
4269			return this.each(function() {
4270				data_user.set( this, key );
4271			});
4272		}
4273
4274		return access( this, function( value ) {
4275			var data,
4276				camelKey = jQuery.camelCase( key );
4277
4278			// The calling jQuery object (element matches) is not empty
4279			// (and therefore has an element appears at this[ 0 ]) and the
4280			// `value` parameter was not undefined. An empty jQuery object
4281			// will result in `undefined` for elem = this[ 0 ] which will
4282			// throw an exception if an attempt to read a data cache is made.
4283			if ( elem && value === undefined ) {
4284				// Attempt to get data from the cache
4285				// with the key as-is
4286				data = data_user.get( elem, key );
4287				if ( data !== undefined ) {
4288					return data;
4289				}
4290
4291				// Attempt to get data from the cache
4292				// with the key camelized
4293				data = data_user.get( elem, camelKey );
4294				if ( data !== undefined ) {
4295					return data;
4296				}
4297
4298				// Attempt to "discover" the data in
4299				// HTML5 custom data-* attrs
4300				data = dataAttr( elem, camelKey, undefined );
4301				if ( data !== undefined ) {
4302					return data;
4303				}
4304
4305				// We tried really hard, but the data doesn't exist.
4306				return;
4307			}
4308
4309			// Set the data...
4310			this.each(function() {
4311				// First, attempt to store a copy or reference of any
4312				// data that might've been store with a camelCased key.
4313				var data = data_user.get( this, camelKey );
4314
4315				// For HTML5 data-* attribute interop, we have to
4316				// store property names with dashes in a camelCase form.
4317				// This might not apply to all properties...*
4318				data_user.set( this, camelKey, value );
4319
4320				// *... In the case of properties that might _actually_
vendor: 3,939 bytes, lines 4321-4490
4321				// have dashes, we need to also store a copy of that
4322				// unchanged property.
4323				if ( key.indexOf("-") !== -1 && data !== undefined ) {
4324					data_user.set( this, key, value );
4325				}
4326			});
4327		}, null, value, arguments.length > 1, null, true );
4328	},
4329
4330	removeData: function( key ) {
4331		return this.each(function() {
4332			data_user.remove( this, key );
4333		});
4334	}
4335});
4336
4337
4338jQuery.extend({
4339	queue: function( elem, type, data ) {
4340		var queue;
4341
4342		if ( elem ) {
4343			type = ( type || "fx" ) + "queue";
4344			queue = data_priv.get( elem, type );
4345
4346			// Speed up dequeue by getting out quickly if this is just a lookup
4347			if ( data ) {
4348				if ( !queue || jQuery.isArray( data ) ) {
4349					queue = data_priv.access( elem, type, jQuery.makeArray(data) );
4350				} else {
4351					queue.push( data );
4352				}
4353			}
4354			return queue || [];
4355		}
4356	},
4357
4358	dequeue: function( elem, type ) {
4359		type = type || "fx";
4360
4361		var queue = jQuery.queue( elem, type ),
4362			startLength = queue.length,
4363			fn = queue.shift(),
4364			hooks = jQuery._queueHooks( elem, type ),
4365			next = function() {
4366				jQuery.dequeue( elem, type );
4367			};
4368
4369		// If the fx queue is dequeued, always remove the progress sentinel
4370		if ( fn === "inprogress" ) {
4371			fn = queue.shift();
4372			startLength--;
4373		}
4374
4375		if ( fn ) {
4376
4377			// Add a progress sentinel to prevent the fx queue from being
4378			// automatically dequeued
4379			if ( type === "fx" ) {
4380				queue.unshift( "inprogress" );
4381			}
4382
4383			// Clear up the last queue stop function
4384			delete hooks.stop;
4385			fn.call( elem, next, hooks );
4386		}
4387
4388		if ( !startLength && hooks ) {
4389			hooks.empty.fire();
4390		}
4391	},
4392
4393	// Not public - generate a queueHooks object, or return the current one
4394	_queueHooks: function( elem, type ) {
4395		var key = type + "queueHooks";
4396		return data_priv.get( elem, key ) || data_priv.access( elem, key, {
4397			empty: jQuery.Callbacks("once memory").add(function() {
4398				data_priv.remove( elem, [ type + "queue", key ] );
4399			})
4400		});
4401	}
4402});
4403
4404jQuery.fn.extend({
4405	queue: function( type, data ) {
4406		var setter = 2;
4407
4408		if ( typeof type !== "string" ) {
4409			data = type;
4410			type = "fx";
4411			setter--;
4412		}
4413
4414		if ( arguments.length < setter ) {
4415			return jQuery.queue( this[0], type );
4416		}
4417
4418		return data === undefined ?
4419			this :
4420			this.each(function() {
4421				var queue = jQuery.queue( this, type, data );
4422
4423				// Ensure a hooks for this queue
4424				jQuery._queueHooks( this, type );
4425
4426				if ( type === "fx" && queue[0] !== "inprogress" ) {
4427					jQuery.dequeue( this, type );
4428				}
4429			});
4430	},
4431	dequeue: function( type ) {
4432		return this.each(function() {
4433			jQuery.dequeue( this, type );
4434		});
4435	},
4436	clearQueue: function( type ) {
4437		return this.queue( type || "fx", [] );
4438	},
4439	// Get a promise resolved when queues of a certain type
4440	// are emptied (fx is the type by default)
4441	promise: function( type, obj ) {
4442		var tmp,
4443			count = 1,
4444			defer = jQuery.Deferred(),
4445			elements = this,
4446			i = this.length,
4447			resolve = function() {
4448				if ( !( --count ) ) {
4449					defer.resolveWith( elements, [ elements ] );
4450				}
4451			};
4452
4453		if ( typeof type !== "string" ) {
4454			obj = type;
4455			type = undefined;
4456		}
4457		type = type || "fx";
4458
4459		while ( i-- ) {
4460			tmp = data_priv.get( elements[ i ], type + "queueHooks" );
4461			if ( tmp && tmp.empty ) {
4462				count++;
4463				tmp.empty.add( resolve );
4464			}
4465		}
4466		resolve();
4467		return defer.promise( obj );
4468	}
4469});
4470var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
4471
4472var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
4473
4474var isHidden = function( elem, el ) {
4475		// isHidden might be called from jQuery#filter function;
4476		// in that case, element will be second argument
4477		elem = el || elem;
4478		return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
4479	};
4480
4481var rcheckableType = (/^(?:checkbox|radio)$/i);
4482
4483
4484
4485(function() {
4486	var fragment = document.createDocumentFragment(),
4487		div = fragment.appendChild( document.createElement( "div" ) ),
4488		input = document.createElement( "input" );
4489
4490	// Support: Safari<=5.1
4491	// Check state lost if the name is set (#11217)
4492	// Support: Windows Web Apps (WWA)
4493	// `name` and `type` must use .setAttribute for WWA (#14901)
4494	input.setAttribute( "type", "radio" );
4495	input.setAttribute( "checked", "checked" );
4496	input.setAttribute( "name", "t" );
4497
4498	div.appendChild( input );
4499
4500	// Support: Safari<=5.1, Android<4.2
4501	// Older WebKit doesn't clone checked state correctly in fragments
4502	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
4503
4504	// Support: IE<=11+
4505	// Make sure textarea (and checkbox) defaultValue is properly cloned
4506	div.innerHTML = "<textarea>x</textarea>";
4507	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
4508})();
4509var strundefined = typeof undefined;
4510
4511
4512
4513support.focusinBubbles = "onfocusin" in window;
4514
4515
4516var
4517	rkeyEvent = /^key/,
4518	rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
4519	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
4520	rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
4521
4522function returnTrue() {
4523	return true;
4524}
4525
4526function returnFalse() {
4527	return false;
4528}
4529
4530function safeActiveElement() {
4531	try {
4532		return document.activeElement;
4533	} catch ( err ) { }
4534}
4535
4536/*
4537 * Helper functions for managing events -- not part of the public interface.
4538 * Props to Dean Edwards' addEvent library for many of the ideas.
4539 */
4540jQuery.event = {
4541
4542	global: {},
4543
4544	add: function( elem, types, handler, data, selector ) {
4545
4546		var handleObjIn, eventHandle, tmp,
4547			events, t, handleObj,
4548			special, handlers, type, namespaces, origType,
4549			elemData = data_priv.get( elem );
4550
4551		// Don't attach events to noData or text/comment nodes (but allow plain objects)
4552		if ( !elemData ) {
4553			return;
4554		}
4555
4556		// Caller can pass in an object of custom data in lieu of the handler
4557		if ( handler.handler ) {
4558			handleObjIn = handler;
4559			handler = handleObjIn.handler;
4560			selector = handleObjIn.selector;
4561		}
4562
4563		// Make sure that the handler has a unique ID, used to find/remove it later
4564		if ( !handler.guid ) {
4565			handler.guid = jQuery.guid++;
4566		}
4567
4568		// Init the element's event structure and main handler, if this is the first
4569		if ( !(events = elemData.events) ) {
4570			events = elemData.events = {};
4571		}
4572		if ( !(eventHandle = elemData.handle) ) {
4573			eventHandle = elemData.handle = function( e ) {
4574				// Discard the second event of a jQuery.event.trigger() and
4575				// when an event is called after a page has unloaded
4576				return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
4577					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
4578			};
4579		}
4580
4581		// Handle multiple events separated by a space
4582		types = ( types || "" ).match( rnotwhite ) || [ "" ];
4583		t = types.length;
4584		while ( t-- ) {
4585			tmp = rtypenamespace.exec( types[t] ) || [];
4586			type = origType = tmp[1];
4587			namespaces = ( tmp[2] || "" ).split( "." ).sort();
4588
4589			// There *must* be a type, no attaching namespace-only handlers
4590			if ( !type ) {
4591				continue;
4592			}
4593
4594			// If event changes its type, use the special event handlers for the changed type
4595			special = jQuery.event.special[ type ] || {};
4596
4597			// If selector defined, determine special event api type, otherwise given type
4598			type = ( selector ? special.delegateType : special.bindType ) || type;
4599
4600			// Update special based on newly reset type
4601			special = jQuery.event.special[ type ] || {};
4602
4603			// handleObj is passed to all event handlers
4604			handleObj = jQuery.extend({
4605				type: type,
4606				origType: origType,
4607				data: data,
4608				handler: handler,
4609				guid: handler.guid,
4610				selector: selector,
4611				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
4612				namespace: namespaces.join(".")
4613			}, handleObjIn );
4614
4615			// Init the event handler queue if we're the first
4616			if ( !(handlers = events[ type ]) ) {
4617				handlers = events[ type ] = [];
4618				handlers.delegateCount = 0;
4619
4620				// Only use addEventListener if the special events handler returns false
4621				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
4622					if ( elem.addEventListener ) {
4623						elem.addEventListener( type, eventHandle, false );
4624					}
4625				}
4626			}
4627
4628			if ( special.add ) {
4629				special.add.call( elem, handleObj );
4630
4631				if ( !handleObj.handler.guid ) {
4632					handleObj.handler.guid = handler.guid;
4633				}
4634			}
4635
4636			// Add to the element's handler list, delegates in front
4637			if ( selector ) {
4638				handlers.splice( handlers.delegateCount++, 0, handleObj );
4639			} else {
4640				handlers.push( handleObj );
4641			}
4642
4643			// Keep track of which events have ever been used, for event optimization
4644			jQuery.event.global[ type ] = true;
4645		}
4646
4647	},
4648
4649	// Detach an event or set of events from an element
4650	remove: function( elem, types, handler, selector, mappedTypes ) {
4651
4652		var j, origCount, tmp,
4653			events, t, handleObj,
4654			special, handlers, type, namespaces, origType,
4655			elemData = data_priv.hasData( elem ) && data_priv.get( elem );
4656
4657		if ( !elemData || !(events = elemData.events) ) {
4658			return;
4659		}
4660
vendor: 8,101 bytes, lines 4661-4918
4661		// Once for each type.namespace in types; type may be omitted
4662		types = ( types || "" ).match( rnotwhite ) || [ "" ];
4663		t = types.length;
4664		while ( t-- ) {
4665			tmp = rtypenamespace.exec( types[t] ) || [];
4666			type = origType = tmp[1];
4667			namespaces = ( tmp[2] || "" ).split( "." ).sort();
4668
4669			// Unbind all events (on this namespace, if provided) for the element
4670			if ( !type ) {
4671				for ( type in events ) {
4672					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
4673				}
4674				continue;
4675			}
4676
4677			special = jQuery.event.special[ type ] || {};
4678			type = ( selector ? special.delegateType : special.bindType ) || type;
4679			handlers = events[ type ] || [];
4680			tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
4681
4682			// Remove matching events
4683			origCount = j = handlers.length;
4684			while ( j-- ) {
4685				handleObj = handlers[ j ];
4686
4687				if ( ( mappedTypes || origType === handleObj.origType ) &&
4688					( !handler || handler.guid === handleObj.guid ) &&
4689					( !tmp || tmp.test( handleObj.namespace ) ) &&
4690					( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
4691					handlers.splice( j, 1 );
4692
4693					if ( handleObj.selector ) {
4694						handlers.delegateCount--;
4695					}
4696					if ( special.remove ) {
4697						special.remove.call( elem, handleObj );
4698					}
4699				}
4700			}
4701
4702			// Remove generic event handler if we removed something and no more handlers exist
4703			// (avoids potential for endless recursion during removal of special event handlers)
4704			if ( origCount && !handlers.length ) {
4705				if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
4706					jQuery.removeEvent( elem, type, elemData.handle );
4707				}
4708
4709				delete events[ type ];
4710			}
4711		}
4712
4713		// Remove the expando if it's no longer used
4714		if ( jQuery.isEmptyObject( events ) ) {
4715			delete elemData.handle;
4716			data_priv.remove( elem, "events" );
4717		}
4718	},
4719
4720	trigger: function( event, data, elem, onlyHandlers ) {
4721
4722		var i, cur, tmp, bubbleType, ontype, handle, special,
4723			eventPath = [ elem || document ],
4724			type = hasOwn.call( event, "type" ) ? event.type : event,
4725			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
4726
4727		cur = tmp = elem = elem || document;
4728
4729		// Don't do events on text and comment nodes
4730		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
4731			return;
4732		}
4733
4734		// focus/blur morphs to focusin/out; ensure we're not firing them right now
4735		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
4736			return;
4737		}
4738
4739		if ( type.indexOf(".") >= 0 ) {
4740			// Namespaced trigger; create a regexp to match event type in handle()
4741			namespaces = type.split(".");
4742			type = namespaces.shift();
4743			namespaces.sort();
4744		}
4745		ontype = type.indexOf(":") < 0 && "on" + type;
4746
4747		// Caller can pass in a jQuery.Event object, Object, or just an event type string
4748		event = event[ jQuery.expando ] ?
4749			event :
4750			new jQuery.Event( type, typeof event === "object" && event );
4751
4752		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
4753		event.isTrigger = onlyHandlers ? 2 : 3;
4754		event.namespace = namespaces.join(".");
4755		event.namespace_re = event.namespace ?
4756			new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
4757			null;
4758
4759		// Clean up the event in case it is being reused
4760		event.result = undefined;
4761		if ( !event.target ) {
4762			event.target = elem;
4763		}
4764
4765		// Clone any incoming data and prepend the event, creating the handler arg list
4766		data = data == null ?
4767			[ event ] :
4768			jQuery.makeArray( data, [ event ] );
4769
4770		// Allow special events to draw outside the lines
4771		special = jQuery.event.special[ type ] || {};
4772		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
4773			return;
4774		}
4775
4776		// Determine event propagation path in advance, per W3C events spec (#9951)
4777		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
4778		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
4779
4780			bubbleType = special.delegateType || type;
4781			if ( !rfocusMorph.test( bubbleType + type ) ) {
4782				cur = cur.parentNode;
4783			}
4784			for ( ; cur; cur = cur.parentNode ) {
4785				eventPath.push( cur );
4786				tmp = cur;
4787			}
4788
4789			// Only add window if we got to document (e.g., not plain obj or detached DOM)
4790			if ( tmp === (elem.ownerDocument || document) ) {
4791				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
4792			}
4793		}
4794
4795		// Fire handlers on the event path
4796		i = 0;
4797		while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
4798
4799			event.type = i > 1 ?
4800				bubbleType :
4801				special.bindType || type;
4802
4803			// jQuery handler
4804			handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
4805			if ( handle ) {
4806				handle.apply( cur, data );
4807			}
4808
4809			// Native handler
4810			handle = ontype && cur[ ontype ];
4811			if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
4812				event.result = handle.apply( cur, data );
4813				if ( event.result === false ) {
4814					event.preventDefault();
4815				}
4816			}
4817		}
4818		event.type = type;
4819
4820		// If nobody prevented the default action, do it now
4821		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
4822
4823			if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
4824				jQuery.acceptData( elem ) ) {
4825
4826				// Call a native DOM method on the target with the same name name as the event.
4827				// Don't do default actions on window, that's where global variables be (#6170)
4828				if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
4829
4830					// Don't re-trigger an onFOO event when we call its FOO() method
4831					tmp = elem[ ontype ];
4832
4833					if ( tmp ) {
4834						elem[ ontype ] = null;
4835					}
4836
4837					// Prevent re-triggering of the same event, since we already bubbled it above
4838					jQuery.event.triggered = type;
4839					elem[ type ]();
4840					jQuery.event.triggered = undefined;
4841
4842					if ( tmp ) {
4843						elem[ ontype ] = tmp;
4844					}
4845				}
4846			}
4847		}
4848
4849		return event.result;
4850	},
4851
4852	dispatch: function( event ) {
4853
4854		// Make a writable jQuery.Event from the native event object
4855		event = jQuery.event.fix( event );
4856
4857		var i, j, ret, matched, handleObj,
4858			handlerQueue = [],
4859			args = slice.call( arguments ),
4860			handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
4861			special = jQuery.event.special[ event.type ] || {};
4862
4863		// Use the fix-ed jQuery.Event rather than the (read-only) native event
4864		args[0] = event;
4865		event.delegateTarget = this;
4866
4867		// Call the preDispatch hook for the mapped type, and let it bail if desired
4868		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
4869			return;
4870		}
4871
4872		// Determine handlers
4873		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
4874
4875		// Run delegates first; they may want to stop propagation beneath us
4876		i = 0;
4877		while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
4878			event.currentTarget = matched.elem;
4879
4880			j = 0;
4881			while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
4882
4883				// Triggered event must either 1) have no namespace, or 2) have namespace(s)
4884				// a subset or equal to those in the bound event (both can have no namespace).
4885				if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
4886
4887					event.handleObj = handleObj;
4888					event.data = handleObj.data;
4889
4890					ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
4891							.apply( matched.elem, args );
4892
4893					if ( ret !== undefined ) {
4894						if ( (event.result = ret) === false ) {
4895							event.preventDefault();
4896							event.stopPropagation();
4897						}
4898					}
4899				}
4900			}
4901		}
4902
4903		// Call the postDispatch hook for the mapped type
4904		if ( special.postDispatch ) {
4905			special.postDispatch.call( this, event );
4906		}
4907
4908		return event.result;
4909	},
4910
4911	handlers: function( event, handlers ) {
4912		var i, matches, sel, handleObj,
4913			handlerQueue = [],
4914			delegateCount = handlers.delegateCount,
4915			cur = event.target;
4916
4917		// Find delegate handlers
4918		// Black-hole SVG <use> instance trees (#13180)
4919		// Avoid non-left-click bubbling in Firefox (#3861)
4920		if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
4921
4922			for ( ; cur !== this; cur = cur.parentNode || this ) {
4923
4924				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
4925				if ( cur.disabled !== true || event.type !== "click" ) {
4926					matches = [];
4927					for ( i = 0; i < delegateCount; i++ ) {
4928						handleObj = handlers[ i ];
4929
4930						// Don't conflict with Object.prototype properties (#13203)
4931						sel = handleObj.selector + " ";
4932
4933						if ( matches[ sel ] === undefined ) {
4934							matches[ sel ] = handleObj.needsContext ?
4935								jQuery( sel, this ).index( cur ) >= 0 :
4936								jQuery.find( sel, this, null, [ cur ] ).length;
4937						}
4938						if ( matches[ sel ] ) {
4939							matches.push( handleObj );
4940						}
4941					}
4942					if ( matches.length ) {
4943						handlerQueue.push({ elem: cur, handlers: matches });
4944					}
4945				}
4946			}
4947		}
4948
4949		// Add the remaining (directly-bound) handlers
4950		if ( delegateCount < handlers.length ) {
4951			handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
4952		}
4953
4954		return handlerQueue;
4955	},
4956
4957	// Includes some event props shared by KeyEvent and MouseEvent
4958	props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
4959
4960	fixHooks: {},
4961
4962	keyHooks: {
4963		props: "char charCode key keyCode".split(" "),
4964		filter: function( event, original ) {
4965
4966			// Add which for key events
4967			if ( event.which == null ) {
4968				event.which = original.charCode != null ? original.charCode : original.keyCode;
4969			}
4970
4971			return event;
4972		}
4973	},
4974
4975	mouseHooks: {
4976		props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
4977		filter: function( event, original ) {
4978			var eventDoc, doc, body,
4979				button = original.button;
4980
4981			// Calculate pageX/Y if missing and clientX/Y available
4982			if ( event.pageX == null && original.clientX != null ) {
4983				eventDoc = event.target.ownerDocument || document;
4984				doc = eventDoc.documentElement;
4985				body = eventDoc.body;
4986
4987				event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
4988				event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
4989			}
4990
4991			// Add which for click: 1 === left; 2 === middle; 3 === right
4992			// Note: button is not normalized, so don't use it
4993			if ( !event.which && button !== undefined ) {
4994				event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
4995			}
4996
4997			return event;
4998		}
4999	},
5000
5001	fix: function( event ) {
5002		if ( event[ jQuery.expando ] ) {
5003			return event;
5004		}
5005
5006		// Create a writable copy of the event object and normalize some properties
5007		var i, prop, copy,
5008			type = event.type,
5009			originalEvent = event,
5010			fixHook = this.fixHooks[ type ];
5011
5012		if ( !fixHook ) {
5013			this.fixHooks[ type ] = fixHook =
5014				rmouseEvent.test( type ) ? this.mouseHooks :
5015				rkeyEvent.test( type ) ? this.keyHooks :
5016				{};
5017		}
5018		copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
5019
5020		event = new jQuery.Event( originalEvent );
5021
5022		i = copy.length;
5023		while ( i-- ) {
5024			prop = copy[ i ];
5025			event[ prop ] = originalEvent[ prop ];
5026		}
5027
5028		// Support: Cordova 2.5 (WebKit) (#13255)
5029		// All events should have a target; Cordova deviceready doesn't
5030		if ( !event.target ) {
5031			event.target = document;
5032		}
5033
5034		// Support: Safari 6.0+, Chrome<28
5035		// Target should not be a text node (#504, #13143)
5036		if ( event.target.nodeType === 3 ) {
5037			event.target = event.target.parentNode;
5038		}
5039
5040		return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
5041	},
5042
5043	special: {
5044		load: {
5045			// Prevent triggered image.load events from bubbling to window.load
5046			noBubble: true
5047		},
5048		focus: {
5049			// Fire native event if possible so blur/focus sequence is correct
5050			trigger: function() {
5051				if ( this !== safeActiveElement() && this.focus ) {
5052					this.focus();
5053					return false;
5054				}
5055			},
5056			delegateType: "focusin"
5057		},
5058		blur: {
5059			trigger: function() {
5060				if ( this === safeActiveElement() && this.blur ) {
5061					this.blur();
5062					return false;
5063				}
5064			},
5065			delegateType: "focusout"
5066		},
5067		click: {
5068			// For checkbox, fire native event so checked state will be right
5069			trigger: function() {
5070				if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
5071					this.click();
5072					return false;
5073				}
5074			},
5075
5076			// For cross-browser consistency, don't fire native .click() on links
5077			_default: function( event ) {
5078				return jQuery.nodeName( event.target, "a" );
5079			}
5080		},
5081
5082		beforeunload: {
5083			postDispatch: function( event ) {
5084
5085				// Support: Firefox 20+
5086				// Firefox doesn't alert if the returnValue field is not set.
5087				if ( event.result !== undefined && event.originalEvent ) {
5088					event.originalEvent.returnValue = event.result;
5089				}
5090			}
5091		}
5092	},
5093
5094	simulate: function( type, elem, event, bubble ) {
5095		// Piggyback on a donor event to simulate a different one.
5096		// Fake originalEvent to avoid donor's stopPropagation, but if the
5097		// simulated event prevents default then we do the same on the donor.
5098		var e = jQuery.extend(
5099			new jQuery.Event(),
5100			event,
5101			{
5102				type: type,
5103				isSimulated: true,
5104				originalEvent: {}
5105			}
5106		);
5107		if ( bubble ) {
5108			jQuery.event.trigger( e, null, elem );
5109		} else {
5110			jQuery.event.dispatch.call( elem, e );
5111		}
5112		if ( e.isDefaultPrevented() ) {
5113			event.preventDefault();
5114		}
5115	}
5116};
5117
5118jQuery.removeEvent = function( elem, type, handle ) {
5119	if ( elem.removeEventListener ) {
5120		elem.removeEventListener( type, handle, false );
5121	}
5122};
5123
5124jQuery.Event = function( src, props ) {
5125	// Allow instantiation without the 'new' keyword
5126	if ( !(this instanceof jQuery.Event) ) {
5127		return new jQuery.Event( src, props );
5128	}
5129
5130	// Event object
5131	if ( src && src.type ) {
5132		this.originalEvent = src;
5133		this.type = src.type;
5134
5135		// Events bubbling up the document may have been marked as prevented
5136		// by a handler lower down the tree; reflect the correct value.
5137		this.isDefaultPrevented = src.defaultPrevented ||
5138				src.defaultPrevented === undefined &&
5139				// Support: Android<4.0
5140				src.returnValue === false ?
5141			returnTrue :
5142			returnFalse;
5143
5144	// Event type
5145	} else {
5146		this.type = src;
5147	}
5148
5149	// Put explicitly provided properties onto the event object
5150	if ( props ) {
5151		jQuery.extend( this, props );
5152	}
5153
5154	// Create a timestamp if incoming event doesn't have one
5155	this.timeStamp = src && src.timeStamp || jQuery.now();
5156
5157	// Mark it as fixed
5158	this[ jQuery.expando ] = true;
5159};
5160
5161// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
5162// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
5163jQuery.Event.prototype = {
5164	isDefaultPrevented: returnFalse,
5165	isPropagationStopped: returnFalse,
5166	isImmediatePropagationStopped: returnFalse,
5167
5168	preventDefault: function() {
5169		var e = this.originalEvent;
5170
5171		this.isDefaultPrevented = returnTrue;
5172
5173		if ( e && e.preventDefault ) {
5174			e.preventDefault();
5175		}
5176	},
5177	stopPropagation: function() {
5178		var e = this.originalEvent;
5179
5180		this.isPropagationStopped = returnTrue;
5181
5182		if ( e && e.stopPropagation ) {
5183			e.stopPropagation();
5184		}
5185	},
5186	stopImmediatePropagation: function() {
5187		var e = this.originalEvent;
5188
5189		this.isImmediatePropagationStopped = returnTrue;
5190
5191		if ( e && e.stopImmediatePropagation ) {
5192			e.stopImmediatePropagation();
5193		}
5194
5195		this.stopPropagation();
5196	}
5197};
5198
5199// Create mouseenter/leave events using mouseover/out and event-time checks
5200// Support: Chrome 15+
5201jQuery.each({
5202	mouseenter: "mouseover",
5203	mouseleave: "mouseout",
5204	pointerenter: "pointerover",
5205	pointerleave: "pointerout"
5206}, function( orig, fix ) {
5207	jQuery.event.special[ orig ] = {
5208		delegateType: fix,
5209		bindType: fix,
5210
5211		handle: function( event ) {
5212			var ret,
5213				target = this,
5214				related = event.relatedTarget,
5215				handleObj = event.handleObj;
5216
5217			// For mousenter/leave call the handler if related is outside the target.
5218			// NB: No relatedTarget if the mouse left/entered the browser window
5219			if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
5220				event.type = handleObj.origType;
5221				ret = handleObj.handler.apply( this, arguments );
5222				event.type = fix;
5223			}
5224			return ret;
5225		}
5226	};
5227});
5228
5229// Support: Firefox, Chrome, Safari
5230// Create "bubbling" focus and blur events
5231if ( !support.focusinBubbles ) {
5232	jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
5233
5234		// Attach a single capturing handler on the document while someone wants focusin/focusout
5235		var handler = function( event ) {
5236				jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
5237			};
5238
5239		jQuery.event.special[ fix ] = {
5240			setup: function() {
5241				var doc = this.ownerDocument || this,
5242					attaches = data_priv.access( doc, fix );
5243
5244				if ( !attaches ) {
5245					doc.addEventListener( orig, handler, true );
5246				}
5247				data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
5248			},
5249			teardown: function() {
5250				var doc = this.ownerDocument || this,
5251					attaches = data_priv.access( doc, fix ) - 1;
5252
5253				if ( !attaches ) {
5254					doc.removeEventListener( orig, handler, true );
5255					data_priv.remove( doc, fix );
5256
5257				} else {
5258					data_priv.access( doc, fix, attaches );
5259				}
5260			}
5261		};
5262	});
5263}
5264
5265jQuery.fn.extend({
5266
5267	on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
5268		var origFn, type;
5269
5270		// Types can be a map of types/handlers
5271		if ( typeof types === "object" ) {
5272			// ( types-Object, selector, data )
5273			if ( typeof selector !== "string" ) {
5274				// ( types-Object, data )
5275				data = data || selector;
5276				selector = undefined;
5277			}
5278			for ( type in types ) {
5279				this.on( type, selector, data, types[ type ], one );
5280			}
5281			return this;
5282		}
5283
5284		if ( data == null && fn == null ) {
5285			// ( types, fn )
5286			fn = selector;
5287			data = selector = undefined;
5288		} else if ( fn == null ) {
5289			if ( typeof selector === "string" ) {
5290				// ( types, selector, fn )
5291				fn = data;
5292				data = undefined;
5293			} else {
5294				// ( types, data, fn )
5295				fn = data;
5296				data = selector;
5297				selector = undefined;
5298			}
5299		}
5300		if ( fn === false ) {
5301			fn = returnFalse;
5302		} else if ( !fn ) {
5303			return this;
5304		}
5305
5306		if ( one === 1 ) {
5307			origFn = fn;
5308			fn = function( event ) {
5309				// Can use an empty set, since event contains the info
5310				jQuery().off( event );
5311				return origFn.apply( this, arguments );
5312			};
5313			// Use same guid so caller can remove using origFn
5314			fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
5315		}
5316		return this.each( function() {
5317			jQuery.event.add( this, types, fn, data, selector );
5318		});
5319	},
5320	one: function( types, selector, data, fn ) {
5321		return this.on( types, selector, data, fn, 1 );
5322	},
5323	off: function( types, selector, fn ) {
5324		var handleObj, type;
5325		if ( types && types.preventDefault && types.handleObj ) {
5326			// ( event )  dispatched jQuery.Event
5327			handleObj = types.handleObj;
5328			jQuery( types.delegateTarget ).off(
5329				handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
5330				handleObj.selector,
5331				handleObj.handler
5332			);
5333			return this;
5334		}
5335		if ( typeof types === "object" ) {
5336			// ( types-object [, selector] )
5337			for ( type in types ) {
5338				this.off( type, selector, types[ type ] );
5339			}
5340			return this;
5341		}
5342		if ( selector === false || typeof selector === "function" ) {
5343			// ( types [, fn] )
5344			fn = selector;
5345			selector = undefined;
5346		}
5347		if ( fn === false ) {
5348			fn = returnFalse;
5349		}
5350		return this.each(function() {
5351			jQuery.event.remove( this, types, fn, selector );
5352		});
5353	},
5354
5355	trigger: function( type, data ) {
5356		return this.each(function() {
5357			jQuery.event.trigger( type, data, this );
5358		});
5359	},
5360	triggerHandler: function( type, data ) {
5361		var elem = this[0];
5362		if ( elem ) {
5363			return jQuery.event.trigger( type, data, elem, true );
5364		}
5365	}
5366});
5367
5368
5369var
5370	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
5371	rtagName = /<([\w:]+)/,
5372	rhtml = /<|&#?\w+;/,
5373	rnoInnerhtml = /<(?:script|style|link)/i,
5374	// checked="checked" or checked
5375	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
5376	rscriptType = /^$|\/(?:java|ecma)script/i,
5377	rscriptTypeMasked = /^true\/(.*)/,
5378	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
5379
5380	// We have to close these tags to support XHTML (#13200)
5381	wrapMap = {
5382
5383		// Support: IE9
5384		option: [ 1, "<select multiple='multiple'>", "</select>" ],
5385
5386		thead: [ 1, "<table>", "</table>" ],
5387		col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
5388		tr: [ 2, "<table><tbody>", "</tbody></table>" ],
5389		td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
5390
5391		_default: [ 0, "", "" ]
5392	};
5393
5394// Support: IE9
5395wrapMap.optgroup = wrapMap.option;
5396
5397wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
5398wrapMap.th = wrapMap.td;
5399
5400// Support: 1.x compatibility
5401// Manipulating tables requires a tbody
5402function manipulationTarget( elem, content ) {
5403	return jQuery.nodeName( elem, "table" ) &&
5404		jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
5405
5406		elem.getElementsByTagName("tbody")[0] ||
5407			elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
5408		elem;
5409}
5410
5411// Replace/restore the type attribute of script elements for safe DOM manipulation
5412function disableScript( elem ) {
5413	elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
5414	return elem;
5415}
5416function restoreScript( elem ) {
5417	var match = rscriptTypeMasked.exec( elem.type );
5418
5419	if ( match ) {
5420		elem.type = match[ 1 ];
5421	} else {
5422		elem.removeAttribute("type");
5423	}
5424
5425	return elem;
5426}
5427
5428// Mark scripts as having already been evaluated
5429function setGlobalEval( elems, refElements ) {
5430	var i = 0,
5431		l = elems.length;
5432
5433	for ( ; i < l; i++ ) {
5434		data_priv.set(
5435			elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" )
5436		);
5437	}
5438}
5439
5440function cloneCopyEvent( src, dest ) {
5441	var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
5442
5443	if ( dest.nodeType !== 1 ) {
5444		return;
5445	}
5446
5447	// 1. Copy private data: events, handlers, etc.
5448	if ( data_priv.hasData( src ) ) {
5449		pdataOld = data_priv.access( src );
5450		pdataCur = data_priv.set( dest, pdataOld );
5451		events = pdataOld.events;
5452
5453		if ( events ) {
5454			delete pdataCur.handle;
5455			pdataCur.events = {};
5456
5457			for ( type in events ) {
5458				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
5459					jQuery.event.add( dest, type, events[ type ][ i ] );
5460				}
5461			}
5462		}
5463	}
5464
5465	// 2. Copy user data
5466	if ( data_user.hasData( src ) ) {
5467		udataOld = data_user.access( src );
5468		udataCur = jQuery.extend( {}, udataOld );
5469
5470		data_user.set( dest, udataCur );
5471	}
5472}
5473
5474function getAll( context, tag ) {
5475	var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) :
5476			context.querySelectorAll ? context.querySelectorAll( tag || "*" ) :
5477			[];
5478
5479	return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
5480		jQuery.merge( [ context ], ret ) :
5481		ret;
5482}
5483
5484// Fix IE bugs, see support tests
5485function fixInput( src, dest ) {
5486	var nodeName = dest.nodeName.toLowerCase();
5487
5488	// Fails to persist the checked state of a cloned checkbox or radio button.
5489	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
5490		dest.checked = src.checked;
5491
5492	// Fails to return the selected option to the default selected state when cloning options
5493	} else if ( nodeName === "input" || nodeName === "textarea" ) {
5494		dest.defaultValue = src.defaultValue;
5495	}
5496}
5497
5498jQuery.extend({
5499	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
5500		var i, l, srcElements, destElements,
5501			clone = elem.cloneNode( true ),
5502			inPage = jQuery.contains( elem.ownerDocument, elem );
5503
5504		// Fix IE cloning issues
5505		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
5506				!jQuery.isXMLDoc( elem ) ) {
5507
5508			// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
5509			destElements = getAll( clone );
5510			srcElements = getAll( elem );
5511
5512			for ( i = 0, l = srcElements.length; i < l; i++ ) {
5513				fixInput( srcElements[ i ], destElements[ i ] );
5514			}
5515		}
5516
5517		// Copy the events from the original to the clone
5518		if ( dataAndEvents ) {
5519			if ( deepDataAndEvents ) {
5520				srcElements = srcElements || getAll( elem );
5521				destElements = destElements || getAll( clone );
5522
5523				for ( i = 0, l = srcElements.length; i < l; i++ ) {
5524					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
5525				}
5526			} else {
5527				cloneCopyEvent( elem, clone );
5528			}
5529		}
5530
5531		// Preserve script evaluation history
5532		destElements = getAll( clone, "script" );
5533		if ( destElements.length > 0 ) {
5534			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
5535		}
5536
5537		// Return the cloned set
5538		return clone;
5539	},
5540
5541	buildFragment: function( elems, context, scripts, selection ) {
5542		var elem, tmp, tag, wrap, contains, j,
5543			fragment = context.createDocumentFragment(),
5544			nodes = [],
5545			i = 0,
5546			l = elems.length;
5547
5548		for ( ; i < l; i++ ) {
5549			elem = elems[ i ];
5550
5551			if ( elem || elem === 0 ) {
5552
5553				// Add nodes directly
5554				if ( jQuery.type( elem ) === "object" ) {
5555					// Support: QtWebKit, PhantomJS
5556					// push.apply(_, arraylike) throws on ancient WebKit
5557					jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
5558
5559				// Convert non-html into a text node
5560				} else if ( !rhtml.test( elem ) ) {
5561					nodes.push( context.createTextNode( elem ) );
5562
5563				// Convert html into DOM nodes
5564				} else {
5565					tmp = tmp || fragment.appendChild( context.createElement("div") );
5566
5567					// Deserialize a standard representation
5568					tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
5569					wrap = wrapMap[ tag ] || wrapMap._default;
5570					tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ];
5571
5572					// Descend through wrappers to the right content
5573					j = wrap[ 0 ];
5574					while ( j-- ) {
5575						tmp = tmp.lastChild;
5576					}
5577
5578					// Support: QtWebKit, PhantomJS
5579					// push.apply(_, arraylike) throws on ancient WebKit
5580					jQuery.merge( nodes, tmp.childNodes );
5581
5582					// Remember the top-level container
5583					tmp = fragment.firstChild;
5584
5585					// Ensure the created nodes are orphaned (#12392)
5586					tmp.textContent = "";
5587				}
5588			}
5589		}
5590
5591		// Remove wrapper from fragment
5592		fragment.textContent = "";
5593
5594		i = 0;
5595		while ( (elem = nodes[ i++ ]) ) {
5596
5597			// #4087 - If origin and destination elements are the same, and this is
5598			// that element, do not do anything
5599			if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
5600				continue;
5601			}
5602
5603			contains = jQuery.contains( elem.ownerDocument, elem );
5604
5605			// Append to fragment
5606			tmp = getAll( fragment.appendChild( elem ), "script" );
5607
5608			// Preserve script evaluation history
5609			if ( contains ) {
5610				setGlobalEval( tmp );
5611			}
5612
5613			// Capture executables
5614			if ( scripts ) {
5615				j = 0;
5616				while ( (elem = tmp[ j++ ]) ) {
5617					if ( rscriptType.test( elem.type || "" ) ) {
5618						scripts.push( elem );
5619					}
5620				}
5621			}
5622		}
5623
5624		return fragment;
5625	},
5626
5627	cleanData: function( elems ) {
5628		var data, elem, type, key,
5629			special = jQuery.event.special,
5630			i = 0;
5631
5632		for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
5633			if ( jQuery.acceptData( elem ) ) {
5634				key = elem[ data_priv.expando ];
5635
5636				if ( key && (data = data_priv.cache[ key ]) ) {
5637					if ( data.events ) {
5638						for ( type in data.events ) {
5639							if ( special[ type ] ) {
5640								jQuery.event.remove( elem, type );
5641
5642							// This is a shortcut to avoid jQuery.event.remove's overhead
5643							} else {
5644								jQuery.removeEvent( elem, type, data.handle );
5645							}
5646						}
5647					}
5648					if ( data_priv.cache[ key ] ) {
5649						// Discard any remaining `private` data
5650						delete data_priv.cache[ key ];
5651					}
5652				}
5653			}
5654			// Discard any remaining `user` data
5655			delete data_user.cache[ elem[ data_user.expando ] ];
5656		}
5657	}
5658});
5659
5660jQuery.fn.extend({
5661	text: function( value ) {
5662		return access( this, function( value ) {
5663			return value === undefined ?
5664				jQuery.text( this ) :
5665				this.empty().each(function() {
5666					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
5667						this.textContent = value;
5668					}
5669				});
5670		}, null, value, arguments.length );
5671	},
5672
5673	append: function() {
5674		return this.domManip( arguments, function( elem ) {
5675			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
5676				var target = manipulationTarget( this, elem );
5677				target.appendChild( elem );
5678			}
5679		});
5680	},
5681
5682	prepend: function() {
5683		return this.domManip( arguments, function( elem ) {
5684			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
5685				var target = manipulationTarget( this, elem );
5686				target.insertBefore( elem, target.firstChild );
5687			}
5688		});
5689	},
5690
5691	before: function() {
5692		return this.domManip( arguments, function( elem ) {
5693			if ( this.parentNode ) {
5694				this.parentNode.insertBefore( elem, this );
5695			}
5696		});
5697	},
5698
5699	after: function() {
5700		return this.domManip( arguments, function( elem ) {
5701			if ( this.parentNode ) {
5702				this.parentNode.insertBefore( elem, this.nextSibling );
5703			}
5704		});
5705	},
5706
5707	remove: function( selector, keepData /* Internal Use Only */ ) {
5708		var elem,
5709			elems = selector ? jQuery.filter( selector, this ) : this,
5710			i = 0;
5711
5712		for ( ; (elem = elems[i]) != null; i++ ) {
5713			if ( !keepData && elem.nodeType === 1 ) {
5714				jQuery.cleanData( getAll( elem ) );
5715			}
5716
5717			if ( elem.parentNode ) {
5718				if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
5719					setGlobalEval( getAll( elem, "script" ) );
5720				}
5721				elem.parentNode.removeChild( elem );
5722			}
5723		}
5724
5725		return this;
5726	},
5727
5728	empty: function() {
5729		var elem,
5730			i = 0;
5731
5732		for ( ; (elem = this[i]) != null; i++ ) {
5733			if ( elem.nodeType === 1 ) {
5734
5735				// Prevent memory leaks
5736				jQuery.cleanData( getAll( elem, false ) );
5737
5738				// Remove any remaining nodes
5739				elem.textContent = "";
5740			}
5741		}
5742
5743		return this;
5744	},
5745
5746	clone: function( dataAndEvents, deepDataAndEvents ) {
5747		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
5748		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
5749
5750		return this.map(function() {
5751			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
5752		});
5753	},
5754
5755	html: function( value ) {
5756		return access( this, function( value ) {
5757			var elem = this[ 0 ] || {},
5758				i = 0,
5759				l = this.length;
5760
5761			if ( value === undefined && elem.nodeType === 1 ) {
5762				return elem.innerHTML;
5763			}
5764
5765			// See if we can take a shortcut and just use innerHTML
5766			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
5767				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
5768
5769				value = value.replace( rxhtmlTag, "<$1></$2>" );
5770
5771				try {
5772					for ( ; i < l; i++ ) {
5773						elem = this[ i ] || {};
5774
5775						// Remove element nodes and prevent memory leaks
5776						if ( elem.nodeType === 1 ) {
5777							jQuery.cleanData( getAll( elem, false ) );
5778							elem.innerHTML = value;
5779						}
5780					}
5781
5782					elem = 0;
5783
5784				// If using innerHTML throws an exception, use the fallback method
5785				} catch( e ) {}
5786			}
5787
5788			if ( elem ) {
5789				this.empty().append( value );
5790			}
5791		}, null, value, arguments.length );
5792	},
5793
5794	replaceWith: function() {
5795		var arg = arguments[ 0 ];
5796
5797		// Make the changes, replacing each context element with the new content
5798		this.domManip( arguments, function( elem ) {
5799			arg = this.parentNode;
5800
5801			jQuery.cleanData( getAll( this ) );
5802
5803			if ( arg ) {
5804				arg.replaceChild( elem, this );
5805			}
5806		});
5807
5808		// Force removal if there was no new content (e.g., from empty arguments)
5809		return arg && (arg.length || arg.nodeType) ? this : this.remove();
5810	},
5811
5812	detach: function( selector ) {
5813		return this.remove( selector, true );
5814	},
5815
5816	domManip: function( args, callback ) {
5817
5818		// Flatten any nested arrays
5819		args = concat.apply( [], args );
5820
5821		var fragment, first, scripts, hasScripts, node, doc,
5822			i = 0,
5823			l = this.length,
5824			set = this,
5825			iNoClone = l - 1,
5826			value = args[ 0 ],
5827			isFunction = jQuery.isFunction( value );
5828
5829		// We can't cloneNode fragments that contain checked, in WebKit
5830		if ( isFunction ||
5831				( l > 1 && typeof value === "string" &&
5832					!support.checkClone && rchecked.test( value ) ) ) {
5833			return this.each(function( index ) {
5834				var self = set.eq( index );
5835				if ( isFunction ) {
5836					args[ 0 ] = value.call( this, index, self.html() );
5837				}
5838				self.domManip( args, callback );
5839			});
5840		}
5841
5842		if ( l ) {
5843			fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
5844			first = fragment.firstChild;
5845
5846			if ( fragment.childNodes.length === 1 ) {
5847				fragment = first;
5848			}
5849
5850			if ( first ) {
5851				scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
5852				hasScripts = scripts.length;
5853
5854				// Use the original fragment for the last item instead of the first because it can end up
5855				// being emptied incorrectly in certain situations (#8070).
5856				for ( ; i < l; i++ ) {
5857					node = fragment;
5858
5859					if ( i !== iNoClone ) {
5860						node = jQuery.clone( node, true, true );
5861
5862						// Keep references to cloned scripts for later restoration
5863						if ( hasScripts ) {
5864							// Support: QtWebKit
5865							// jQuery.merge because push.apply(_, arraylike) throws
5866							jQuery.merge( scripts, getAll( node, "script" ) );
5867						}
5868					}
5869
5870					callback.call( this[ i ], node, i );
5871				}
5872
5873				if ( hasScripts ) {
5874					doc = scripts[ scripts.length - 1 ].ownerDocument;
5875
5876					// Reenable scripts
5877					jQuery.map( scripts, restoreScript );
5878
5879					// Evaluate executable scripts on first document insertion
5880					for ( i = 0; i < hasScripts; i++ ) {
5881						node = scripts[ i ];
5882						if ( rscriptType.test( node.type || "" ) &&
5883							!data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
5884
5885							if ( node.src ) {
5886								// Optional AJAX dependency, but won't run scripts if not present
5887								if ( jQuery._evalUrl ) {
5888									jQuery._evalUrl( node.src );
5889								}
5890							} else {
5891								jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
5892							}
5893						}
5894					}
5895				}
5896			}
5897		}
5898
5899		return this;
5900	}
5901});
5902
5903jQuery.each({
5904	appendTo: "append",
5905	prependTo: "prepend",
5906	insertBefore: "before",
5907	insertAfter: "after",
5908	replaceAll: "replaceWith"
5909}, function( name, original ) {
5910	jQuery.fn[ name ] = function( selector ) {
5911		var elems,
5912			ret = [],
5913			insert = jQuery( selector ),
5914			last = insert.length - 1,
5915			i = 0;
5916
5917		for ( ; i <= last; i++ ) {
5918			elems = i === last ? this : this.clone( true );
5919			jQuery( insert[ i ] )[ original ]( elems );
5920
5921			// Support: QtWebKit
5922			// .get() because push.apply(_, arraylike) throws
5923			push.apply( ret, elems.get() );
5924		}
5925
5926		return this.pushStack( ret );
5927	};
5928});
5929
5930
5931var iframe,
5932	elemdisplay = {};
5933
5934/**
5935 * Retrieve the actual display of a element
5936 * @param {String} name nodeName of the element
5937 * @param {Object} doc Document object
5938 */
5939// Called only from within defaultDisplay
5940function actualDisplay( name, doc ) {
5941	var style,
5942		elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
5943
5944		// getDefaultComputedStyle might be reliably used only on attached element
5945		display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
5946
5947			// Use of this method is a temporary fix (more like optimization) until something better comes along,
5948			// since it was removed from specification and supported only in FF
5949			style.display : jQuery.css( elem[ 0 ], "display" );
5950
5951	// We don't have any data stored on the element,
5952	// so use "detach" method as fast way to get rid of the element
5953	elem.detach();
5954
5955	return display;
5956}
5957
5958/**
5959 * Try to determine the default display value of an element
5960 * @param {String} nodeName
5961 */
5962function defaultDisplay( nodeName ) {
5963	var doc = document,
5964		display = elemdisplay[ nodeName ];
5965
5966	if ( !display ) {
5967		display = actualDisplay( nodeName, doc );
5968
5969		// If the simple way fails, read from inside an iframe
5970		if ( display === "none" || !display ) {
5971
5972			// Use the already-created iframe if possible
5973			iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
5974
5975			// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
5976			doc = iframe[ 0 ].contentDocument;
5977
5978			// Support: IE
5979			doc.write();
5980			doc.close();
5981
5982			display = actualDisplay( nodeName, doc );
5983			iframe.detach();
5984		}
5985
5986		// Store the correct default display
5987		elemdisplay[ nodeName ] = display;
5988	}
5989
5990	return display;
5991}
5992var rmargin = (/^margin/);
5993
5994var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
5995
5996var getStyles = function( elem ) {
5997		// Support: IE<=11+, Firefox<=30+ (#15098, #14150)
5998		// IE throws on elements created in popups
5999		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
6000		if ( elem.ownerDocument.defaultView.opener ) {
6001			return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
6002		}
6003
6004		return window.getComputedStyle( elem, null );
6005	};
6006
6007
6008
6009function curCSS( elem, name, computed ) {
6010	var width, minWidth, maxWidth, ret,
6011		style = elem.style;
6012
6013	computed = computed || getStyles( elem );
6014
6015	// Support: IE9
6016	// getPropertyValue is only needed for .css('filter') (#12537)
6017	if ( computed ) {
6018		ret = computed.getPropertyValue( name ) || computed[ name ];
6019	}
6020
6021	if ( computed ) {
6022
6023		if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
6024			ret = jQuery.style( elem, name );
6025		}
6026
6027		// Support: iOS < 6
6028		// A tribute to the "awesome hack by Dean Edwards"
6029		// iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
6030		// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
6031		if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
6032
6033			// Remember the original values
6034			width = style.width;
6035			minWidth = style.minWidth;
6036			maxWidth = style.maxWidth;
6037
6038			// Put in the new values to get a computed value out
6039			style.minWidth = style.maxWidth = style.width = ret;
6040			ret = computed.width;
6041
6042			// Revert the changed values
6043			style.width = width;
6044			style.minWidth = minWidth;
6045			style.maxWidth = maxWidth;
6046		}
6047	}
6048
6049	return ret !== undefined ?
6050		// Support: IE
6051		// IE returns zIndex value as an integer.
6052		ret + "" :
6053		ret;
6054}
6055
6056
6057function addGetHookIf( conditionFn, hookFn ) {
6058	// Define the hook, we'll check on the first run if it's really needed.
6059	return {
6060		get: function() {
6061			if ( conditionFn() ) {
6062				// Hook not needed (or it's not possible to use it due
6063				// to missing dependency), remove it.
6064				delete this.get;
6065				return;
6066			}
6067
6068			// Hook needed; redefine it so that the support test is not executed again.
6069			return (this.get = hookFn).apply( this, arguments );
6070		}
6071	};
6072}
6073
6074
6075(function() {
6076	var pixelPositionVal, boxSizingReliableVal,
6077		docElem = document.documentElement,
6078		container = document.createElement( "div" ),
6079		div = document.createElement( "div" );
6080
6081	if ( !div.style ) {
6082		return;
6083	}
6084
6085	// Support: IE9-11+
6086	// Style of cloned element affects source element cloned (#8908)
6087	div.style.backgroundClip = "content-box";
6088	div.cloneNode( true ).style.backgroundClip = "";
6089	support.clearCloneStyle = div.style.backgroundClip === "content-box";
6090
6091	container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" +
6092		"position:absolute";
6093	container.appendChild( div );
6094
6095	// Executing both pixelPosition & boxSizingReliable tests require only one layout
6096	// so they're executed at the same time to save the second computation.
6097	function computePixelPositionAndBoxSizingReliable() {
6098		div.style.cssText =
6099			// Support: Firefox<29, Android 2.3
6100			// Vendor-prefix box-sizing
6101			"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
6102			"box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
6103			"border:1px;padding:1px;width:4px;position:absolute";
6104		div.innerHTML = "";
6105		docElem.appendChild( container );
6106
6107		var divStyle = window.getComputedStyle( div, null );
6108		pixelPositionVal = divStyle.top !== "1%";
6109		boxSizingReliableVal = divStyle.width === "4px";
6110
6111		docElem.removeChild( container );
6112	}
6113
6114	// Support: node.js jsdom
6115	// Don't assume that getComputedStyle is a property of the global object
6116	if ( window.getComputedStyle ) {
6117		jQuery.extend( support, {
6118			pixelPosition: function() {
6119
6120				// This test is executed only once but we still do memoizing
6121				// since we can use the boxSizingReliable pre-computing.
6122				// No need to check if the test was already performed, though.
6123				computePixelPositionAndBoxSizingReliable();
6124				return pixelPositionVal;
6125			},
6126			boxSizingReliable: function() {
6127				if ( boxSizingReliableVal == null ) {
6128					computePixelPositionAndBoxSizingReliable();
6129				}
6130				return boxSizingReliableVal;
6131			},
6132			reliableMarginRight: function() {
6133
6134				// Support: Android 2.3
6135				// Check if div with explicit width and no margin-right incorrectly
6136				// gets computed margin-right based on width of container. (#3333)
6137				// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
6138				// This support function is only executed once so no memoizing is needed.
6139				var ret,
6140					marginDiv = div.appendChild( document.createElement( "div" ) );
6141
6142				// Reset CSS: box-sizing; display; margin; border; padding
6143				marginDiv.style.cssText = div.style.cssText =
6144					// Support: Firefox<29, Android 2.3
6145					// Vendor-prefix box-sizing
6146					"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
6147					"box-sizing:content-box;display:block;margin:0;border:0;padding:0";
6148				marginDiv.style.marginRight = marginDiv.style.width = "0";
6149				div.style.width = "1px";
6150				docElem.appendChild( container );
6151
6152				ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );
6153
6154				docElem.removeChild( container );
6155				div.removeChild( marginDiv );
6156
6157				return ret;
6158			}
6159		});
6160	}
6161})();
6162
6163
6164// A method for quickly swapping in/out CSS properties to get correct calculations.
6165jQuery.swap = function( elem, options, callback, args ) {
6166	var ret, name,
6167		old = {};
6168
6169	// Remember the old values, and insert the new ones
6170	for ( name in options ) {
6171		old[ name ] = elem.style[ name ];
6172		elem.style[ name ] = options[ name ];
6173	}
6174
6175	ret = callback.apply( elem, args || [] );
6176
6177	// Revert the old values
6178	for ( name in options ) {
6179		elem.style[ name ] = old[ name ];
6180	}
6181
6182	return ret;
6183};
6184
6185
6186var
6187	// Swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
6188	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
6189	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
6190	rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
6191	rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
6192
6193	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
6194	cssNormalTransform = {
6195		letterSpacing: "0",
6196		fontWeight: "400"
6197	},
6198
6199	cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
6200
6201// Return a css property mapped to a potentially vendor prefixed property
6202function vendorPropName( style, name ) {
6203
6204	// Shortcut for names that are not vendor prefixed
6205	if ( name in style ) {
6206		return name;
6207	}
6208
6209	// Check for vendor prefixed names
6210	var capName = name[0].toUpperCase() + name.slice(1),
6211		origName = name,
6212		i = cssPrefixes.length;
6213
6214	while ( i-- ) {
6215		name = cssPrefixes[ i ] + capName;
6216		if ( name in style ) {
6217			return name;
6218		}
6219	}
6220
6221	return origName;
6222}
6223
6224function setPositiveNumber( elem, value, subtract ) {
6225	var matches = rnumsplit.exec( value );
6226	return matches ?
6227		// Guard against undefined "subtract", e.g., when used as in cssHooks
6228		Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
6229		value;
6230}
6231
6232function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
6233	var i = extra === ( isBorderBox ? "border" : "content" ) ?
6234		// If we already have the right measurement, avoid augmentation
6235		4 :
6236		// Otherwise initialize for horizontal or vertical properties
6237		name === "width" ? 1 : 0,
6238
6239		val = 0;
6240
6241	for ( ; i < 4; i += 2 ) {
6242		// Both box models exclude margin, so add it if we want it
6243		if ( extra === "margin" ) {
6244			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
6245		}
6246
6247		if ( isBorderBox ) {
6248			// border-box includes padding, so remove it if we want content
6249			if ( extra === "content" ) {
6250				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
6251			}
6252
6253			// At this point, extra isn't border nor margin, so remove border
6254			if ( extra !== "margin" ) {
6255				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6256			}
6257		} else {
6258			// At this point, extra isn't content, so add padding
6259			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
6260
6261			// At this point, extra isn't content nor padding, so add border
6262			if ( extra !== "padding" ) {
6263				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6264			}
6265		}
6266	}
6267
6268	return val;
6269}
6270
6271function getWidthOrHeight( elem, name, extra ) {
6272
6273	// Start with offset property, which is equivalent to the border-box value
6274	var valueIsBorderBox = true,
6275		val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
6276		styles = getStyles( elem ),
6277		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
6278
6279	// Some non-html elements return undefined for offsetWidth, so check for null/undefined
6280	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
6281	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
6282	if ( val <= 0 || val == null ) {
6283		// Fall back to computed then uncomputed css if necessary
6284		val = curCSS( elem, name, styles );
6285		if ( val < 0 || val == null ) {
6286			val = elem.style[ name ];
6287		}
6288
6289		// Computed unit is not pixels. Stop here and return.
6290		if ( rnumnonpx.test(val) ) {
6291			return val;
6292		}
6293
6294		// Check for style in case a browser which returns unreliable values
6295		// for getComputedStyle silently falls back to the reliable elem.style
6296		valueIsBorderBox = isBorderBox &&
6297			( support.boxSizingReliable() || val === elem.style[ name ] );
6298
6299		// Normalize "", auto, and prepare for extra
6300		val = parseFloat( val ) || 0;
6301	}
6302
6303	// Use the active box-sizing model to add/subtract irrelevant styles
6304	return ( val +
6305		augmentWidthOrHeight(
6306			elem,
6307			name,
6308			extra || ( isBorderBox ? "border" : "content" ),
6309			valueIsBorderBox,
6310			styles
6311		)
6312	) + "px";
6313}
6314
6315function showHide( elements, show ) {
6316	var display, elem, hidden,
6317		values = [],
6318		index = 0,
6319		length = elements.length;
6320
6321	for ( ; index < length; index++ ) {
6322		elem = elements[ index ];
6323		if ( !elem.style ) {
6324			continue;
6325		}
6326
6327		values[ index ] = data_priv.get( elem, "olddisplay" );
6328		display = elem.style.display;
6329		if ( show ) {
6330			// Reset the inline display of this element to learn if it is
6331			// being hidden by cascaded rules or not
6332			if ( !values[ index ] && display === "none" ) {
6333				elem.style.display = "";
6334			}
6335
6336			// Set elements which have been overridden with display: none
6337			// in a stylesheet to whatever the default browser style is
6338			// for such an element
6339			if ( elem.style.display === "" && isHidden( elem ) ) {
6340				values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
6341			}
6342		} else {
6343			hidden = isHidden( elem );
6344
6345			if ( display !== "none" || !hidden ) {
6346				data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "dis
6346play" ) );
6347			}
6348		}
6349	}
6350
6351	// Set the display of most of the elements in a second loop
6352	// to avoid the constant reflow
6353	for ( index = 0; index < length; index++ ) {
6354		elem = elements[ index ];
6355		if ( !elem.style ) {
6356			continue;
6357		}
6358		if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
6359			elem.style.display = show ? values[ index ] || "" : "none";
6360		}
6361	}
6362
6363	return elements;
6364}
6365
6366jQuery.extend({
6367
6368	// Add in style property hooks for overriding the default
6369	// behavior of getting and setting a style property
6370	cssHooks: {
6371		opacity: {
6372			get: function( elem, computed ) {
6373				if ( computed ) {
6374
6375					// We should always get a number back from opacity
6376					var ret = curCSS( elem, "opacity" );
6377					return ret === "" ? "1" : ret;
6378				}
6379			}
6380		}
6381	},
6382
6383	// Don't automatically add "px" to these possibly-unitless properties
6384	cssNumber: {
6385		"columnCount": true,
6386		"fillOpacity": true,
6387		"flexGrow": true,
6388		"flexShrink": true,
6389		"fontWeight": true,
6390		"lineHeight": true,
6391		"opacity": true,
6392		"order": true,
6393		"orphans": true,
6394		"widows": true,
6395		"zIndex": true,
6396		"zoom": true
6397	},
6398
6399	// Add in properties whose names you wish to fix before
6400	// setting or getting the value
6401	cssProps: {
6402		"float": "cssFloat"
6403	},
6404
6405	// Get and set the style property on a DOM Node
6406	style: function( elem, name, value, extra ) {
6407
6408		// Don't set styles on text and comment nodes
6409		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
6410			return;
6411		}
6412
6413		// Make sure that we're working with the right name
6414		var ret, type, hooks,
6415			origName = jQuery.camelCase( name ),
6416			style = elem.style;
6417
6418		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
6419
6420		// Gets hook for the prefixed version, then unprefixed version
6421		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
6422
6423		// Check if we're setting a value
6424		if ( value !== undefined ) {
6425			type = typeof value;
6426
6427			// Convert "+=" or "-=" to relative numbers (#7345)
6428			if ( type === "string" && (ret = rrelNum.exec( value )) ) {
6429				value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
6430				// Fixes bug #9237
6431				type = "number";
6432			}
6433
6434			// Make sure that null and NaN values aren't set (#7116)
6435			if ( value == null || value !== value ) {
6436				return;
6437			}
6438
6439			// If a number, add 'px' to the (except for certain CSS properties)
6440			if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
6441				value += "px";
6442			}
6443
6444			// Support: IE9-11+
6445			// background-* props affect original clone's values
6446			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
6447				style[ name ] = "inherit";
6448			}
6449
6450			// If a hook was provided, use that value, otherwise just set the specified value
6451			if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
6452				style[ name ] = value;
6453			}
6454
6455		} else {
6456			// If a hook was provided get the non-computed value from there
6457			if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
6458				return ret;
6459			}
6460
6461			// Otherwise just get the value from the style object
6462			return style[ name ];
6463		}
6464	},
6465
6466	css: function( elem, name, extra, styles ) {
6467		var val, num, hooks,
6468			origName = jQuery.camelCase( name );
6469
6470		// Make sure that we're working with the right name
6471		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
6472
6473		// Try prefixed name followed by the unprefixed name
6474		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
6475
6476		// If a hook was provided get the computed value from there
6477		if ( hooks && "get" in hooks ) {
6478			val = hooks.get( elem, true, extra );
6479		}
6480
6481		// Otherwise, if a way to get the computed value exists, use that
6482		if ( val === undefined ) {
6483			val = curCSS( elem, name, styles );
6484		}
6485
6486		// Convert "normal" to computed value
6487		if ( val === "normal" && name in cssNormalTransform ) {
6488			val = cssNormalTransform[ name ];
6489		}
6490
6491		// Make numeric if forced or a qualifier was provided and val looks numeric
6492		if ( extra === "" || extra ) {
6493			num = parseFloat( val );
6494			return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
6495		}
6496		return val;
6497	}
6498});
6499
6500jQuery.each([ "height", "width" ], function( i, name ) {
6501	jQuery.cssHooks[ name ] = {
6502		get: function( elem, computed, extra ) {
6503			if ( computed ) {
6504
6505				// Certain elements can have dimension info if we invisibly show them
6506				// but it must have a current display style that would benefit
6507				return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ?
6508					jQuery.swap( elem, cssShow, function() {
6509						return getWidthOrHeight( elem, name, extra );
6510					}) :
6511					getWidthOrHeight( elem, name, extra );
6512			}
6513		},
6514
6515		set: function( elem, value, extra ) {
6516			var styles = extra && getStyles( elem );
6517			return setPositiveNumber( elem, value, extra ?
6518				augmentWidthOrHeight(
6519					elem,
6520					name,
6521					extra,
6522					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
6523					styles
6524				) : 0
6525			);
6526		}
6527	};
6528});
6529
6530// Support: Android 2.3
6531jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
6532	function( elem, computed ) {
6533		if ( computed ) {
6534			return jQuery.swap( elem, { "display": "inline-block" },
6535				curCSS, [ elem, "marginRight" ] );
6536		}
6537	}
6538);
6539
6540// These hooks are used by animate to expand properties
6541jQuery.each({
6542	margin: "",
6543	padding: "",
6544	border: "Width"
6545}, function( prefix, suffix ) {
6546	jQuery.cssHooks[ prefix + suffix ] = {
6547		expand: function( value ) {
6548			var i = 0,
6549				expanded = {},
6550
6551				// Assumes a single number if not a string
6552				parts = typeof value === "string" ? value.split(" ") : [ value ];
6553
6554			for ( ; i < 4; i++ ) {
6555				expanded[ prefix + cssExpand[ i ] + suffix ] =
6556					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
6557			}
6558
6559			return expanded;
6560		}
6561	};
6562
6563	if ( !rmargin.test( prefix ) ) {
6564		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
6565	}
6566});
6567
6568jQuery.fn.extend({
6569	css: function( name, value ) {
6570		return access( this, function( elem, name, value ) {
6571			var styles, len,
6572				map = {},
6573				i = 0;
6574
6575			if ( jQuery.isArray( name ) ) {
6576				styles = getStyles( elem );
6577				len = name.length;
6578
6579				for ( ; i < len; i++ ) {
6580					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
6581				}
6582
6583				return map;
6584			}
6585
6586			return value !== undefined ?
6587				jQuery.style( elem, name, value ) :
6588				jQuery.css( elem, name );
6589		}, name, value, arguments.length > 1 );
6590	},
6591	show: function() {
6592		return showHide( this, true );
6593	},
6594	hide: function() {
6595		return showHide( this );
6596	},
6597	toggle: function( state ) {
6598		if ( typeof state === "boolean" ) {
6599			return state ? this.show() : this.hide();
6600		}
6601
6602		return this.each(function() {
6603			if ( isHidden( this ) ) {
6604				jQuery( this ).show();
6605			} else {
6606				jQuery( this ).hide();
6607			}
6608		});
6609	}
6610});
6611
6612
6613function Tween( elem, options, prop, end, easing ) {
6614	return new Tween.prototype.init( elem, options, prop, end, easing );
6615}
6616jQuery.Tween = Tween;
6617
6618Tween.prototype = {
6619	constructor: Tween,
6620	init: function( elem, options, prop, end, easing, unit ) {
6621		this.elem = elem;
6622		this.prop = prop;
6623		this.easing = easing || "swing";
6624		this.options = options;
6625		this.start = this.now = this.cur();
6626		this.end = end;
6627		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
6628	},
6629	cur: function() {
6630		var hooks = Tween.propHooks[ this.prop ];
6631
6632		return hooks && hooks.get ?
6633			hooks.get( this ) :
6634			Tween.propHooks._default.get( this );
6635	},
6636	run: function( percent ) {
6637		var eased,
6638			hooks = Tween.propHooks[ this.prop ];
6639
6640		if ( this.options.duration ) {
6641			this.pos = eased = jQuery.easing[ this.easing ](
6642				percent, this.options.duration * percent, 0, 1, this.options.duration
6643			);
6644		} else {
6645			this.pos = eased = percent;
6646		}
6647		this.now = ( this.end - this.start ) * eased + this.start;
6648
6649		if ( this.options.step ) {
6650			this.options.step.call( this.elem, this.now, this );
6651		}
6652
6653		if ( hooks && hooks.set ) {
6654			hooks.set( this );
6655		} else {
6656			Tween.propHooks._default.set( this );
6657		}
6658		return this;
6659	}
6660};
6661
6662Tween.prototype.init.prototype = Tween.prototype;
6663
6664Tween.propHooks = {
6665	_default: {
6666		get: function( tween ) {
6667			var result;
6668
6669			if ( tween.elem[ tween.prop ] != null &&
6670				(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
6671				return tween.elem[ tween.prop ];
6672			}
6673
6674			// Passing an empty string as a 3rd parameter to .css will automatically
6675			// attempt a parseFloat and fallback to a string if the parse fails.
6676			// Simple values such as "10px" are parsed to Float;
6677			// complex values such as "rotate(1rad)" are returned as-is.
6678			result = jQuery.css( tween.elem, tween.prop, "" );
6679			// Empty strings, null, undefined and "auto" are converted to 0.
6680			return !result || result === "auto" ? 0 : result;
6681		},
6682		set: function( tween ) {
6683			// Use step hook for back compat.
6684			// Use cssHook if its there.
6685			// Use .style if available and use plain properties where available.
6686			if ( jQuery.fx.step[ tween.prop ] ) {
6687				jQuery.fx.step[ tween.prop ]( tween );
6688			} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
6689				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
6690			} else {
6691				tween.elem[ tween.prop ] = tween.now;
6692			}
6693		}
6694	}
6695};
6696
6697// Support: IE9
6698// Panic based approach to setting things on disconnected nodes
6699Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
6700	set: function( tween ) {
6701		if ( tween.elem.nodeType && tween.elem.parentNode ) {
6702			tween.elem[ tween.prop ] = tween.now;
6703		}
6704	}
6705};
6706
6707jQuery.easing = {
6708	linear: function( p ) {
6709		return p;
6710	},
6711	swing: function( p ) {
6712		return 0.5 - Math.cos( p * Math.PI ) / 2;
6713	}
6714};
6715
6716jQuery.fx = Tween.prototype.init;
6717
6718// Back Compat <1.8 extension point
6719jQuery.fx.step = {};
6720
6721
6722
6723
6724var
6725	fxNow, timerId,
6726	rfxtypes = /^(?:toggle|show|hide)$/,
6727	rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
6728	rrun = /queueHooks$/,
6729	animationPrefilters = [ defaultPrefilter ],
6730	tweeners = {
6731		"*": [ function( prop, value ) {
6732			var tween = this.createTween( prop, value ),
6733				target = tween.cur(),
6734				parts = rfxnum.exec( value ),
6735				unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
6736
6737				// Starting value computation is required for potential unit mismatches
6738				start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
6739					rfxnum.exec( jQuery.css( tween.elem, prop ) ),
6740				scale = 1,
6741				maxIterations = 20;
6742
6743			if ( start && start[ 3 ] !== unit ) {
6744				// Trust units reported by jQuery.css
6745				unit = unit || start[ 3 ];
6746
6747				// Make sure we update the tween properties later on
6748				parts = parts || [];
6749
6750				// Iteratively approximate from a nonzero starting point
6751				start = +target || 1;
6752
6753				do {
6754					// If previous iteration zeroed out, double until we get *something*.
6755					// Use string for doubling so we don't accidentally see scale as unchanged below
6756					scale = scale || ".5";
6757
6758					// Adjust and apply
6759					start = start / scale;
6760					jQuery.style( tween.elem, prop, start + unit );
6761
6762				// Update scale, tolerating zero or NaN from tween.cur(),
6763				// break the loop if scale is unchanged or perfect, or if we've just had enough
6764				} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
6765			}
6766
6767			// Update tween properties
6768			if ( parts ) {
6769				start = tween.start = +start || +target || 0;
6770				tween.unit = unit;
6771				// If a +=/-= token was provided, we're doing a relative animation
6772				tween.end = parts[ 1 ] ?
6773					start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
6774					+parts[ 2 ];
6775			}
6776
6777			return tween;
6778		} ]
6779	};
6780
6781// Animations created synchronously will run synchronously
6782function createFxNow() {
6783	setTimeout(function() {
6784		fxNow = undefined;
6785	});
6786	return ( fxNow = jQuery.now() );
6787}
6788
6789// Generate parameters to create a standard animation
6790function genFx( type, includeWidth ) {
6791	var which,
6792		i = 0,
6793		attrs = { height: type };
6794
6795	// If we include width, step value is 1 to do all cssExpand values,
6796	// otherwise step value is 2 to skip over Left and Right
6797	includeWidth = includeWidth ? 1 : 0;
6798	for ( ; i < 4 ; i += 2 - includeWidth ) {
6799		which = cssExpand[ i ];
6800		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
6801	}
6802
6803	if ( includeWidth ) {
6804		attrs.opacity = attrs.width = type;
6805	}
6806
6807	return attrs;
6808}
6809
6810function createTween( value, prop, animation ) {
6811	var tween,
6812		collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
6813		index = 0,
6814		length = collection.length;
6815	for ( ; index < length; index++ ) {
6816		if ( (tween = collection[ index ].call( animation, prop, value )) ) {
6817
6818			// We're done with this property
6819			return tween;
6820		}
6821	}
6822}
6823
6824function defaultPrefilter( elem, props, opts ) {
6825	/* jshint validthis: true */
6826	var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
6827		anim = this,
6828		orig = {},
6829		style = elem.style,
6830		hidden = elem.nodeType && isHidden( elem ),
6831		dataShow = data_priv.get( elem, "fxshow" );
6832
6833	// Handle queue: false promises
6834	if ( !opts.queue ) {
6835		hooks = jQuery._queueHooks( elem, "fx" );
6836		if ( hooks.unqueued == null ) {
6837			hooks.unqueued = 0;
6838			oldfire = hooks.empty.fire;
6839			hooks.empty.fire = function() {
6840				if ( !hooks.unqueued ) {
6841					oldfire();
6842				}
6843			};
6844		}
6845		hooks.unqueued++;
6846
6847		anim.always(function() {
6848			// Ensure the complete handler is called before this completes
6849			anim.always(function() {
6850				hooks.unqueued--;
6851				if ( !jQuery.queue( elem, "fx" ).length ) {
6852					hooks.empty.fire();
6853				}
6854			});
6855		});
6856	}
6857
6858	// Height/width overflow pass
6859	if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
6860		// Make sure that nothing sneaks out
6861		// Record all 3 overflow attributes because IE9-10 do not
6862		// change the overflow attribute when overflowX and
6863		// overflowY are set to the same value
6864		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
6865
6866		// Set display property to inline-block for height/width
6867		// animations on inline elements that are having width/height animated
6868		display = jQuery.css( elem, "display" );
6869
6870		// Test default display if display is currently "none"
6871		checkDisplay = display === "none" ?
6872			data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
6873
6874		if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
6875			style.display = "inline-block";
6876		}
6877	}
6878
6879	if ( opts.overflow ) {
6880		style.overflow = "hidden";
6881		anim.always(function() {
6882			style.overflow = opts.overflow[ 0 ];
6883			style.overflowX = opts.overflow[ 1 ];
6884			style.overflowY = opts.overflow[ 2 ];
6885		});
6886	}
6887
6888	// show/hide pass
6889	for ( prop in props ) {
6890		value = props[ prop ];
6891		if ( rfxtypes.exec( value ) ) {
6892			delete props[ prop ];
6893			toggle = toggle || value === "toggle";
6894			if ( value === ( hidden ? "hide" : "show" ) ) {
6895
6896				// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
6897				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
6898					hidden = true;
6899				} else {
6900					continue;
6901				}
6902			}
6903			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
6904
6905		// Any non-fx value stops us from restoring the original display value
6906		} else {
6907			display = undefined;
6908		}
6909	}
6910
6911	if ( !jQuery.isEmptyObject( orig ) ) {
6912		if ( dataShow ) {
6913			if ( "hidden" in dataShow ) {
6914				hidden = dataShow.hidden;
6915			}
6916		} else {
6917			dataShow = data_priv.access( elem, "fxshow", {} );
6918		}
6919
6920		// Store state if its toggle - enables .stop().toggle() to "reverse"
6921		if ( toggle ) {
6922			dataShow.hidden = !hidden;
6923		}
6924		if ( hidden ) {
6925			jQuery( elem ).show();
6926		} else {
6927			anim.done(function() {
6928				jQuery( elem ).hide();
6929			});
6930		}
6931		anim.done(function() {
6932			var prop;
6933
6934			data_priv.remove( elem, "fxshow" );
6935			for ( prop in orig ) {
6936				jQuery.style( elem, prop, orig[ prop ] );
6937			}
6938		});
6939		for ( prop in orig ) {
6940			tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
6941
6942			if ( !( prop in dataShow ) ) {
6943				dataShow[ prop ] = tween.start;
6944				if ( hidden ) {
6945					tween.end = tween.start;
6946					tween.start = prop === "width" || prop === "height" ? 1 : 0;
6947				}
6948			}
6949		}
6950
6951	// If this is a noop like .hide().hide(), restore an overwritten display value
6952	} else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
6953		style.display = display;
6954	}
6955}
6956
6957function propFilter( props, specialEasing ) {
6958	var index, name, easing, value, hooks;
6959
6960	// camelCase, specialEasing and expand cssHook pass
6961	for ( index in props ) {
6962		name = jQuery.camelCase( index );
6963		easing = specialEasing[ name ];
6964		value = props[ index ];
6965		if ( jQuery.isArray( value ) ) {
6966			easing = value[ 1 ];
6967			value = props[ index ] = value[ 0 ];
6968		}
6969
6970		if ( index !== name ) {
6971			props[ name ] = value;
6972			delete props[ index ];
6973		}
6974
6975		hooks = jQuery.cssHooks[ name ];
6976		if ( hooks && "expand" in hooks ) {
6977			value = hooks.expand( value );
6978			delete props[ name ];
6979
6980			// Not quite $.extend, this won't overwrite existing keys.
6981			// Reusing 'index' because we have the correct "name"
6982			for ( index in value ) {
6983				if ( !( index in props ) ) {
6984					props[ index ] = value[ index ];
6985					specialEasing[ index ] = easing;
6986				}
6987			}
6988		} else {
6989			specialEasing[ name ] = easing;
6990		}
6991	}
6992}
6993
6994function Animation( elem, properties, options ) {
6995	var result,
6996		stopped,
6997		index = 0,
6998		length = animationPrefilters.length,
6999		deferred = jQuery.Deferred().always( function() {
7000			// Don't match elem in the :animated selector
7001			delete tick.elem;
7002		}),
7003		tick = function() {
7004			if ( stopped ) {
7005				return false;
7006			}
7007			var currentTime = fxNow || createFxNow(),
7008				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
7009				// Support: Android 2.3
7010				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
7011				temp = remaining / animation.duration || 0,
7012				percent = 1 - temp,
7013				index = 0,
7014				length = animation.tweens.length;
7015
7016			for ( ; index < length ; index++ ) {
7017				animation.tweens[ index ].run( percent );
7018			}
7019
7020			deferred.notifyWith( elem, [ animation, percent, remaining ]);
7021
7022			if ( percent < 1 && length ) {
7023				return remaining;
7024			} else {
7025				deferred.resolveWith( elem, [ animation ] );
7026				return false;
7027			}
7028		},
7029		animation = deferred.promise({
7030			elem: elem,
7031			props: jQuery.extend( {}, properties ),
7032			opts: jQuery.extend( true, { specialEasing: {} }, options ),
7033			originalProperties: properties,
7034			originalOptions: options,
7035			startTime: fxNow || createFxNow(),
7036			duration: options.duration,
7037			tweens: [],
7038			createTween: function( prop, end ) {
7039				var tween = jQuery.Tween( elem, animation.opts, prop, end,
7040						animation.opts.specialEasing[ prop ] || animation.opts.easing );
7041				animation.tweens.push( tween );
7042				return tween;
7043			},
7044			stop: function( gotoEnd ) {
7045				var index = 0,
7046					// If we are going to the end, we want to run all the tweens
7047					// otherwise we skip this part
7048					length = gotoEnd ? animation.tweens.length : 0;
7049				if ( stopped ) {
7050					return this;
7051				}
7052				stopped = true;
7053				for ( ; index < length ; index++ ) {
7054					animation.tweens[ index ].run( 1 );
7055				}
7056
7057				// Resolve when we played the last frame; otherwise, reject
7058				if ( gotoEnd ) {
7059					deferred.resolveWith( elem, [ animation, gotoEnd ] );
7060				} else {
7061					deferred.rejectWith( elem, [ animation, gotoEnd ] );
7062				}
7063				return this;
7064			}
7065		}),
7066		props = animation.props;
7067
7068	propFilter( props, animation.opts.specialEasing );
7069
7070	for ( ; index < length ; index++ ) {
7071		result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
7072		if ( result ) {
7073			return result;
7074		}
7075	}
7076
7077	jQuery.map( props, createTween, animation );
7078
7079	if ( jQuery.isFunction( animation.opts.start ) ) {
7080		animation.opts.start.call( elem, animation );
7081	}
7082
7083	jQuery.fx.timer(
7084		jQuery.extend( tick, {
7085			elem: elem,
7086			anim: animation,
7087			queue: animation.opts.queue
7088		})
7089	);
7090
7091	// attach callbacks from options
7092	return animation.progress( animation.opts.progress )
7093		.done( animation.opts.done, animation.opts.complete )
7094		.fail( animation.opts.fail )
7095		.always( animation.opts.always );
7096}
7097
7098jQuery.Animation = jQuery.extend( Animation, {
7099
7100	tweener: function( props, callback ) {
7101		if ( jQuery.isFunction( props ) ) {
7102			callback = props;
7103			props = [ "*" ];
7104		} else {
7105			props = props.split(" ");
7106		}
7107
7108		var prop,
7109			index = 0,
7110			length = props.length;
7111
7112		for ( ; index < length ; index++ ) {
7113			prop = props[ index ];
7114			tweeners[ prop ] = tweeners[ prop ] || [];
7115			tweeners[ prop ].unshift( callback );
7116		}
7117	},
7118
7119	prefilter: function( callback, prepend ) {
7120		if ( prepend ) {
7121			animationPrefilters.unshift( callback );
7122		} else {
7123			animationPrefilters.push( callback );
7124		}
7125	}
7126});
7127
7128jQuery.speed = function( speed, easing, fn ) {
7129	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
7130		complete: fn || !fn && easing ||
7131			jQuery.isFunction( speed ) && speed,
7132		duration: speed,
7133		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
7134	};
7135
7136	opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
7137		opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
7138
7139	// Normalize opt.queue - true/undefined/null -> "fx"
7140	if ( opt.queue == null || opt.queue === true ) {
7141		opt.queue = "fx";
7142	}
7143
7144	// Queueing
7145	opt.old = opt.complete;
7146
7147	opt.complete = function() {
7148		if ( jQuery.isFunction( opt.old ) ) {
7149			opt.old.call( this );
7150		}
7151
7152		if ( opt.queue ) {
7153			jQuery.dequeue( this, opt.queue );
7154		}
7155	};
7156
7157	return opt;
7158};
7159
7160jQuery.fn.extend({
7161	fadeTo: function( speed, to, easing, callback ) {
7162
7163		// Show any hidden elements after setting opacity to 0
7164		return this.filter( isHidden ).css( "opacity", 0 ).show()
7165
7166			// Animate to the value specified
7167			.end().animate({ opacity: to }, speed, easing, callback );
7168	},
7169	animate: function( prop, speed, easing, callback ) {
7170		var empty = jQuery.isEmptyObject( prop ),
7171			optall = jQuery.speed( speed, easing, callback ),
7172			doAnimation = function() {
7173				// Operate on a copy of prop so per-property easing won't be lost
7174				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
7175
7176				// Empty animations, or finishing resolves immediately
7177				if ( empty || data_priv.get( this, "finish" ) ) {
7178					anim.stop( true );
7179				}
7180			};
7181			doAnimation.finish = doAnimation;
7182
7183		return empty || optall.queue === false ?
7184			this.each( doAnimation ) :
7185			this.queue( optall.queue, doAnimation );
7186	},
7187	stop: function( type, clearQueue, gotoEnd ) {
7188		var stopQueue = function( hooks ) {
7189			var stop = hooks.stop;
7190			delete hooks.stop;
7191			stop( gotoEnd );
7192		};
7193
7194		if ( typeof type !== "string" ) {
7195			gotoEnd = clearQueue;
7196			clearQueue = type;
7197			type = undefined;
7198		}
7199		if ( clearQueue && type !== false ) {
7200			this.queue( type || "fx", [] );
7201		}
7202
7203		return this.each(function() {
7204			var dequeue = true,
7205				index = type != null && type + "queueHooks",
7206				timers = jQuery.timers,
7207				data = data_priv.get( this );
7208
7209			if ( index ) {
7210				if ( data[ index ] && data[ index ].stop ) {
7211					stopQueue( data[ index ] );
7212				}
7213			} else {
7214				for ( index in data ) {
7215					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
7216						stopQueue( data[ index ] );
7217					}
7218				}
7219			}
7220
7221			for ( index = timers.length; index--; ) {
7222				if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
7223					timers[ index ].anim.stop( gotoEnd );
7224					dequeue = false;
vendor: 3,033 bytes, lines 7225-7356
7225					timers.splice( index, 1 );
7226				}
7227			}
7228
7229			// Start the next in the queue if the last step wasn't forced.
7230			// Timers currently will call their complete callbacks, which
7231			// will dequeue but only if they were gotoEnd.
7232			if ( dequeue || !gotoEnd ) {
7233				jQuery.dequeue( this, type );
7234			}
7235		});
7236	},
7237	finish: function( type ) {
7238		if ( type !== false ) {
7239			type = type || "fx";
7240		}
7241		return this.each(function() {
7242			var index,
7243				data = data_priv.get( this ),
7244				queue = data[ type + "queue" ],
7245				hooks = data[ type + "queueHooks" ],
7246				timers = jQuery.timers,
7247				length = queue ? queue.length : 0;
7248
7249			// Enable finishing flag on private data
7250			data.finish = true;
7251
7252			// Empty the queue first
7253			jQuery.queue( this, type, [] );
7254
7255			if ( hooks && hooks.stop ) {
7256				hooks.stop.call( this, true );
7257			}
7258
7259			// Look for any active animations, and finish them
7260			for ( index = timers.length; index--; ) {
7261				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
7262					timers[ index ].anim.stop( true );
7263					timers.splice( index, 1 );
7264				}
7265			}
7266
7267			// Look for any animations in the old queue and finish them
7268			for ( index = 0; index < length; index++ ) {
7269				if ( queue[ index ] && queue[ index ].finish ) {
7270					queue[ index ].finish.call( this );
7271				}
7272			}
7273
7274			// Turn off finishing flag
7275			delete data.finish;
7276		});
7277	}
7278});
7279
7280jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
7281	var cssFn = jQuery.fn[ name ];
7282	jQuery.fn[ name ] = function( speed, easing, callback ) {
7283		return speed == null || typeof speed === "boolean" ?
7284			cssFn.apply( this, arguments ) :
7285			this.animate( genFx( name, true ), speed, easing, callback );
7286	};
7287});
7288
7289// Generate shortcuts for custom animations
7290jQuery.each({
7291	slideDown: genFx("show"),
7292	slideUp: genFx("hide"),
7293	slideToggle: genFx("toggle"),
7294	fadeIn: { opacity: "show" },
7295	fadeOut: { opacity: "hide" },
7296	fadeToggle: { opacity: "toggle" }
7297}, function( name, props ) {
7298	jQuery.fn[ name ] = function( speed, easing, callback ) {
7299		return this.animate( props, speed, easing, callback );
7300	};
7301});
7302
7303jQuery.timers = [];
7304jQuery.fx.tick = function() {
7305	var timer,
7306		i = 0,
7307		timers = jQuery.timers;
7308
7309	fxNow = jQuery.now();
7310
7311	for ( ; i < timers.length; i++ ) {
7312		timer = timers[ i ];
7313		// Checks the timer has not already been removed
7314		if ( !timer() && timers[ i ] === timer ) {
7315			timers.splice( i--, 1 );
7316		}
7317	}
7318
7319	if ( !timers.length ) {
7320		jQuery.fx.stop();
7321	}
7322	fxNow = undefined;
7323};
7324
7325jQuery.fx.timer = function( timer ) {
7326	jQuery.timers.push( timer );
7327	if ( timer() ) {
7328		jQuery.fx.start();
7329	} else {
7330		jQuery.timers.pop();
7331	}
7332};
7333
7334jQuery.fx.interval = 13;
7335
7336jQuery.fx.start = function() {
7337	if ( !timerId ) {
7338		timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
7339	}
7340};
7341
7342jQuery.fx.stop = function() {
7343	clearInterval( timerId );
7344	timerId = null;
7345};
7346
7347jQuery.fx.speeds = {
7348	slow: 600,
7349	fast: 200,
7350	// Default speed
7351	_default: 400
7352};
7353
7354
7355// Based off of the plugin by Clint Helfers, with permission.
7356// http://blindsignals.com/index.php/2009/07/jquery-delay/
7357jQuery.fn.delay = function( time, type ) {
7358	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
7359	type = type || "fx";
7360
7361	return this.queue( type, function( next, hooks ) {
7362		var timeout = setTimeout( next, time );
7363		hooks.stop = function() {
7364			clearTimeout( timeout );
7365		};
7366	});
7367};
7368
7369
7370(function() {
7371	var input = document.createElement( "input" ),
7372		select = document.createElement( "select" ),
7373		opt = select.appendChild( document.createElement( "option" ) );
7374
7375	input.type = "checkbox";
7376
7377	// Support: iOS<=5.1, Android<=4.2+
7378	// Default value for a checkbox should be "on"
7379	support.checkOn = input.value !== "";
7380
7381	// Support: IE<=11+
7382	// Must access selectedIndex to make default options select
7383	support.optSelected = opt.selected;
7384
7385	// Support: Android<=2.3
7386	// Options inside disabled selects are incorrectly marked as disabled
7387	select.disabled = true;
7388	support.optDisabled = !opt.disabled;
7389
7390	// Support: IE<=11+
7391	// An input loses its value after becoming a radio
7392	input = document.createElement( "input" );
7393	input.value = "t";
7394	input.type = "radio";
7395	support.radioValue = input.value === "t";
7396})();
7397
7398
7399var nodeHook, boolHook,
7400	attrHandle = jQuery.expr.attrHandle;
7401
7402jQuery.fn.extend({
7403	attr: function( name, value ) {
7404		return access( this, jQuery.attr, name, value, arguments.length > 1 );
7405	},
7406
7407	removeAttr: function( name ) {
7408		return this.each(function() {
7409			jQuery.removeAttr( this, name );
7410		});
7411	}
7412});
7413
7414jQuery.extend({
7415	attr: function( elem, name, value ) {
7416		var hooks, ret,
7417			nType = elem.nodeType;
7418
7419		// don't get/set attributes on text, comment and attribute nodes
7420		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
7421			return;
7422		}
7423
7424		// Fallback to prop when attributes are not supported
7425		if ( typeof elem.getAttribute === strundefined ) {
7426			return jQuery.prop( elem, name, value );
7427		}
7428
7429		// All attributes are lowercase
7430		// Grab necessary hook if one is defined
7431		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
7432			name = name.toLowerCase();
7433			hooks = jQuery.attrHooks[ name ] ||
7434				( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
7435		}
7436
7437		if ( value !== undefined ) {
7438
7439			if ( value === null ) {
7440				jQuery.removeAttr( elem, name );
7441
7442			} else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
7443				return ret;
7444
7445			} else {
7446				elem.setAttribute( name, value + "" );
7447				return value;
7448			}
7449
7450		} else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
7451			return ret;
7452
7453		} else {
7454			ret = jQuery.find.attr( elem, name );
7455
7456			// Non-existent attributes return null, we normalize to undefined
7457			return ret == null ?
7458				undefined :
7459				ret;
7460		}
7461	},
7462
7463	removeAttr: function( elem, value ) {
7464		var name, propName,
7465			i = 0,
7466			attrNames = value && value.match( rnotwhite );
7467
7468		if ( attrNames && elem.nodeType === 1 ) {
7469			while ( (name = attrNames[i++]) ) {
7470				propName = jQuery.propFix[ name ] || name;
7471
7472				// Boolean attributes get special treatment (#10870)
7473				if ( jQuery.expr.match.bool.test( name ) ) {
7474					// Set corresponding property to false
7475					elem[ propName ] = false;
7476				}
7477
7478				elem.removeAttribute( name );
7479			}
7480		}
7481	},
7482
7483	attrHooks: {
7484		type: {
7485			set: function( elem, value ) {
7486				if ( !support.radioValue && value === "radio" &&
7487					jQuery.nodeName( elem, "input" ) ) {
7488					var val = elem.value;
7489					elem.setAttribute( "type", value );
7490					if ( val ) {
7491						elem.value = val;
7492					}
7493					return value;
7494				}
7495			}
7496		}
7497	}
7498});
7499
7500// Hooks for boolean attributes
7501boolHook = {
7502	set: function( elem, value, name ) {
7503		if ( value === false ) {
7504			// Remove boolean attributes when set to false
7505			jQuery.removeAttr( elem, name );
7506		} else {
7507			elem.setAttribute( name, name );
7508		}
7509		return name;
7510	}
7511};
7512jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
7513	var getter = attrHandle[ name ] || jQuery.find.attr;
7514
7515	attrHandle[ name ] = function( elem, name, isXML ) {
7516		var ret, handle;
7517		if ( !isXML ) {
7518			// Avoid an infinite loop by temporarily removing this function from the getter
7519			handle = attrHandle[ name ];
7520			attrHandle[ name ] = ret;
7521			ret = getter( elem, name, isXML ) != null ?
7522				name.toLowerCase() :
7523				null;
7524			attrHandle[ name ] = handle;
7525		}
7526		return ret;
7527	};
7528});
7529
7530
7531
7532
7533var rfocusable = /^(?:input|select|textarea|button)$/i;
7534
7535jQuery.fn.extend({
7536	prop: function( name, value ) {
7537		return access( this, jQuery.prop, name, value, arguments.length > 1 );
7538	},
7539
7540	removeProp: function( name ) {
7541		return this.each(function() {
7542			delete this[ jQuery.propFix[ name ] || name ];
7543		});
7544	}
7545});
7546
7547jQuery.extend({
7548	propFix: {
7549		"for": "htmlFor",
7550		"class": "className"
7551	},
7552
7553	prop: function( elem, name, value ) {
7554		var ret, hooks, notxml,
7555			nType = elem.nodeType;
7556
7557		// Don't get/set properties on text, comment and attribute nodes
7558		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
7559			return;
7560		}
7561
7562		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
7563
7564		if ( notxml ) {
7565			// Fix name and attach hooks
7566			name = jQuery.propFix[ name ] || name;
7567			hooks = jQuery.propHooks[ name ];
7568		}
7569
7570		if ( value !== undefined ) {
7571			return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
7572				ret :
7573				( elem[ name ] = value );
7574
7575		} else {
7576			return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
7577				ret :
7578				elem[ name ];
7579		}
7580	},
7581
7582	propHooks: {
7583		tabIndex: {
7584			get: function( elem ) {
7585				return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
7586					elem.tabIndex :
7587					-1;
7588			}
7589		}
7590	}
7591});
7592
7593if ( !support.optSelected ) {
7594	jQuery.propHooks.selected = {
7595		get: function( elem ) {
7596			var parent = elem.parentNode;
7597			if ( parent && parent.parentNode ) {
7598				parent.parentNode.selectedIndex;
7599			}
7600			return null;
7601		}
7602	};
7603}
7604
7605jQuery.each([
7606	"tabIndex",
7607	"readOnly",
7608	"maxLength",
7609	"cellSpacing",
7610	"cellPadding",
7611	"rowSpan",
7612	"colSpan",
7613	"useMap",
7614	"frameBorder",
7615	"contentEditable"
7616], function() {
7617	jQuery.propFix[ this.toLowerCase() ] = this;
7618});
7619
7620
7621
7622
7623var rclass = /[\t\r\n\f]/g;
7624
7625jQuery.fn.extend({
7626	addClass: function( value ) {
7627		var classes, elem, cur, clazz, j, finalValue,
7628			proceed = typeof value === "string" && value,
7629			i = 0,
7630			len = this.length;
7631
7632		if ( jQuery.isFunction( value ) ) {
7633			return this.each(function( j ) {
7634				jQuery( this ).addClass( value.call( this, j, this.className ) );
7635			});
7636		}
7637
7638		if ( proceed ) {
7639			// The disjunction here is for better compressibility (see removeClass)
7640			classes = ( value || "" ).match( rnotwhite ) || [];
7641
7642			for ( ; i < len; i++ ) {
7643				elem = this[ i ];
7644				cur = elem.nodeType === 1 && ( elem.className ?
7645					( " " + elem.className + " " ).replace( rclass, " " ) :
7646					" "
7647				);
7648
7649				if ( cur ) {
7650					j = 0;
7651					while ( (clazz = classes[j++]) ) {
7652						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
7653							cur += clazz + " ";
7654						}
7655					}
7656
7657					// only assign if different to avoid unneeded rendering.
7658					finalValue = jQuery.trim( cur );
7659					if ( elem.className !== finalValue ) {
7660						elem.className = finalValue;
7661					}
7662				}
7663			}
7664		}
7665
7666		return this;
7667	},
7668
7669	removeClass: function( value ) {
7670		var classes, elem, cur, clazz, j, finalValue,
7671			proceed = arguments.length === 0 || typeof value === "string" && value,
7672			i = 0,
7673			len = this.length;
7674
7675		if ( jQuery.isFunction( value ) ) {
7676			return this.each(function( j ) {
7677				jQuery( this ).removeClass( value.call( this, j, this.className ) );
7678			});
7679		}
7680		if ( proceed ) {
7681			classes = ( value || "" ).match( rnotwhite ) || [];
7682
7683			for ( ; i < len; i++ ) {
7684				elem = this[ i ];
7685				// This expression is here for better compressibility (see addClass)
7686				cur = elem.nodeType === 1 && ( elem.className ?
7687					( " " + elem.className + " " ).replace( rclass, " " ) :
7688					""
7689				);
7690
7691				if ( cur ) {
7692					j = 0;
7693					while ( (clazz = classes[j++]) ) {
7694						// Remove *all* instances
7695						while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
7696							cur = cur.replace( " " + clazz + " ", " " );
7697						}
7698					}
7699
7700					// Only assign if different to avoid unneeded rendering.
7701					finalValue = value ? jQuery.trim( cur ) : "";
7702					if ( elem.className !== finalValue ) {
7703						elem.className = finalValue;
7704					}
7705				}
7706			}
7707		}
7708
7709		return this;
7710	},
7711
7712	toggleClass: function( value, stateVal ) {
7713		var type = typeof value;
7714
7715		if ( typeof stateVal === "boolean" && type === "string" ) {
7716			return stateVal ? this.addClass( value ) : this.removeClass( value );
7717		}
7718
7719		if ( jQuery.isFunction( value ) ) {
7720			return this.each(function( i ) {
7721				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
7722			});
7723		}
7724
7725		return this.each(function() {
7726			if ( type === "string" ) {
7727				// Toggle individual class names
7728				var className,
7729					i = 0,
7730					self = jQuery( this ),
7731					classNames = value.match( rnotwhite ) || [];
7732
7733				while ( (className = classNames[ i++ ]) ) {
7734					// Check each className given, space separated list
7735					if ( self.hasClass( className ) ) {
7736						self.removeClass( className );
7737					} else {
7738						self.addClass( className );
7739					}
7740				}
7741
7742			// Toggle whole class name
7743			} else if ( type === strundefined || type === "boolean" ) {
7744				if ( this.className ) {
7745					// store className if set
7746					data_priv.set( this, "__className__", this.className );
7747				}
7748
7749				// If the element has a class name or if we're passed `false`,
7750				// then remove the whole classname (if there was one, the above saved it).
7751				// Otherwise bring back whatever was previously saved (if anything),
7752				// falling back to the empty string if nothing was stored.
7753				this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || "";
7754			}
7755		});
7756	},
7757
7758	hasClass: function( selector ) {
7759		var className = " " + selector + " ",
7760			i = 0,
7761			l = this.length;
7762		for ( ; i < l; i++ ) {
7763			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
7764				return true;
7765			}
7766		}
7767
7768		return false;
7769	}
7770});
7771
7772
7773
7774
7775var rreturn = /\r/g;
7776
7777jQuery.fn.extend({
7778	val: function( value ) {
7779		var hooks, ret, isFunction,
7780			elem = this[0];
7781
7782		if ( !arguments.length ) {
7783			if ( elem ) {
7784				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
7785
7786				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
7787					return ret;
7788				}
7789
7790				ret = elem.value;
7791
7792				return typeof ret === "string" ?
7793					// Handle most common string cases
7794					ret.replace(rreturn, "") :
7795					// Handle cases where value is null/undef or number
7796					ret == null ? "" : ret;
7797			}
7798
7799			return;
7800		}
7801
7802		isFunction = jQuery.isFunction( value );
7803
7804		return this.each(function( i ) {
7805			var val;
7806
7807			if ( this.nodeType !== 1 ) {
7808				return;
7809			}
7810
7811			if ( isFunction ) {
7812				val = value.call( this, i, jQuery( this ).val() );
7813			} else {
7814				val = value;
7815			}
7816
7817			// Treat null/undefined as ""; convert numbers to string
7818			if ( val == null ) {
7819				val = "";
7820
7821			} else if ( typeof val === "number" ) {
7822				val += "";
7823
7824			} else if ( jQuery.isArray( val ) ) {
7825				val = jQuery.map( val, function( value ) {
7826					return value == null ? "" : value + "";
7827				});
7828			}
7829
7830			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
7831
7832			// If set returns undefined, fall back to normal setting
7833			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
7834				this.value = val;
7835			}
7836		});
7837	}
7838});
7839
7840jQuery.extend({
7841	valHooks: {
7842		option: {
7843			get: function( elem ) {
7844				var val = jQuery.find.attr( elem, "value" );
7845				return val != null ?
7846					val :
7847					// Support: IE10-11+
7848					// option.text throws exceptions (#14686, #14858)
7849					jQuery.trim( jQuery.text( elem ) );
7850			}
7851		},
7852		select: {
7853			get: function( elem ) {
7854				var value, option,
7855					options = elem.options,
7856					index = elem.selectedIndex,
7857					one = elem.type === "select-one" || index < 0,
7858					values = one ? null : [],
7859					max = one ? index + 1 : options.length,
7860					i = index < 0 ?
7861						max :
7862						one ? index : 0;
7863
7864				// Loop through all the selected options
7865				for ( ; i < max; i++ ) {
7866					option = options[ i ];
7867
7868					// IE6-9 doesn't update selected after form reset (#2551)
7869					if ( ( option.selected || i === index ) &&
7870							// Don't return options that are disabled or in a disabled optgroup
7871							( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
7872							( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
7873
7874						// Get the specific value for the option
7875						value = jQuery( option ).val();
7876
7877						// We don't need an array for one selects
7878						if ( one ) {
7879							return value;
7880						}
7881
7882						// Multi-Selects return an array
7883						values.push( value );
7884					}
7885				}
7886
7887				return values;
7888			},
7889
7890			set: function( elem, value ) {
7891				var optionSet, option,
7892					options = elem.options,
7893					values = jQuery.makeArray( value ),
7894					i = options.length;
7895
7896				while ( i-- ) {
7897					option = options[ i ];
7898					if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) {
7899						optionSet = true;
7900					}
7901				}
7902
7903				// Force browsers to behave consistently when non-matching value is set
7904				if ( !optionSet ) {
7905					elem.selectedIndex = -1;
7906				}
7907				return values;
7908			}
7909		}
7910	}
7911});
7912
7913// Radios and checkboxes getter/setter
7914jQuery.each([ "radio", "checkbox" ], function() {
7915	jQuery.valHooks[ this ] = {
7916		set: function( elem, value ) {
7917			if ( jQuery.isArray( value ) ) {
7918				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
7919			}
7920		}
7921	};
7922	if ( !support.checkOn ) {
7923		jQuery.valHooks[ this ].get = function( elem ) {
7924			return elem.getAttribute("value") === null ? "on" : elem.value;
7925		};
7926	}
7927});
7928
7929
7930
7931
7932// Return jQuery for attributes-only inclusion
7933
7934
7935jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
7936	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
7937	"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
7938
7939	// Handle event binding
7940	jQuery.fn[ name ] = function( data, fn ) {
7941		return arguments.length > 0 ?
7942			this.on( name, null, data, fn ) :
7943			this.trigger( name );
7944	};
7945});
7946
7947jQuery.fn.extend({
7948	hover: function( fnOver, fnOut ) {
7949		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
7950	},
7951
7952	bind: function( types, data, fn ) {
7953		return this.on( types, null, data, fn );
7954	},
7955	unbind: function( types, fn ) {
7956		return this.off( types, null, fn );
7957	},
7958
7959	delegate: function( selector, types, data, fn ) {
7960		return this.on( types, selector, data, fn );
7961	},
7962	undelegate: function( selector, types, fn ) {
7963		// ( namespace ) or ( selector, types [, fn] )
7964		return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
7965	}
7966});
7967
7968
7969var nonce = jQuery.now();
7970
7971var rquery = (/\?/);
7972
7973
7974
7975// Support: Android 2.3
7976// Workaround failure to string-cast null input
7977jQuery.parseJSON = function( data ) {
7978	return JSON.parse( data + "" );
7979};
7980
7981
7982// Cross-browser xml parsing
vendor: 4,742 bytes, lines 7983-8148
7983jQuery.parseXML = function( data ) {
7984	var xml, tmp;
7985	if ( !data || typeof data !== "string" ) {
7986		return null;
7987	}
7988
7989	// Support: IE9
7990	try {
7991		tmp = new DOMParser();
7992		xml = tmp.parseFromString( data, "text/xml" );
7993	} catch ( e ) {
7994		xml = undefined;
7995	}
7996
7997	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
7998		jQuery.error( "Invalid XML: " + data );
7999	}
8000	return xml;
8001};
8002
8003
8004var
8005	rhash = /#.*$/,
8006	rts = /([?&])_=[^&]*/,
8007	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
8008	// #7653, #8125, #8152: local protocol detection
8009	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
8010	rnoContent = /^(?:GET|HEAD)$/,
8011	rprotocol = /^\/\//,
8012	rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
8013
8014	/* Prefilters
8015	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
8016	 * 2) These are called:
8017	 *    - BEFORE asking for a transport
8018	 *    - AFTER param serialization (s.data is a string if s.processData is true)
8019	 * 3) key is the dataType
8020	 * 4) the catchall symbol "*" can be used
8021	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
8022	 */
8023	prefilters = {},
8024
8025	/* Transports bindings
8026	 * 1) key is the dataType
8027	 * 2) the catchall symbol "*" can be used
8028	 * 3) selection will start with transport dataType and THEN go to "*" if needed
8029	 */
8030	transports = {},
8031
8032	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
8033	allTypes = "*/".concat( "*" ),
8034
8035	// Document location
8036	ajaxLocation = window.location.href,
8037
8038	// Segment location into parts
8039	ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
8040
8041// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
8042function addToPrefiltersOrTransports( structure ) {
8043
8044	// dataTypeExpression is optional and defaults to "*"
8045	return function( dataTypeExpression, func ) {
8046
8047		if ( typeof dataTypeExpression !== "string" ) {
8048			func = dataTypeExpression;
8049			dataTypeExpression = "*";
8050		}
8051
8052		var dataType,
8053			i = 0,
8054			dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
8055
8056		if ( jQuery.isFunction( func ) ) {
8057			// For each dataType in the dataTypeExpression
8058			while ( (dataType = dataTypes[i++]) ) {
8059				// Prepend if requested
8060				if ( dataType[0] === "+" ) {
8061					dataType = dataType.slice( 1 ) || "*";
8062					(structure[ dataType ] = structure[ dataType ] || []).unshift( func );
8063
8064				// Otherwise append
8065				} else {
8066					(structure[ dataType ] = structure[ dataType ] || []).push( func );
8067				}
8068			}
8069		}
8070	};
8071}
8072
8073// Base inspection function for prefilters and transports
8074function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
8075
8076	var inspected = {},
8077		seekingTransport = ( structure === transports );
8078
8079	function inspect( dataType ) {
8080		var selected;
8081		inspected[ dataType ] = true;
8082		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
8083			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
8084			if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
8085				options.dataTypes.unshift( dataTypeOrTransport );
8086				inspect( dataTypeOrTransport );
8087				return false;
8088			} else if ( seekingTransport ) {
8089				return !( selected = dataTypeOrTransport );
8090			}
8091		});
8092		return selected;
8093	}
8094
8095	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
8096}
8097
8098// A special extend for ajax options
8099// that takes "flat" options (not to be deep extended)
8100// Fixes #9887
8101function ajaxExtend( target, src ) {
8102	var key, deep,
8103		flatOptions = jQuery.ajaxSettings.flatOptions || {};
8104
8105	for ( key in src ) {
8106		if ( src[ key ] !== undefined ) {
8107			( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
8108		}
8109	}
8110	if ( deep ) {
8111		jQuery.extend( true, target, deep );
8112	}
8113
8114	return target;
8115}
8116
8117/* Handles responses to an ajax request:
8118 * - finds the right dataType (mediates between content-type and expected dataType)
8119 * - returns the corresponding response
8120 */
8121function ajaxHandleResponses( s, jqXHR, responses ) {
8122
8123	var ct, type, finalDataType, firstDataType,
8124		contents = s.contents,
8125		dataTypes = s.dataTypes;
8126
8127	// Remove auto dataType and get content-type in the process
8128	while ( dataTypes[ 0 ] === "*" ) {
8129		dataTypes.shift();
8130		if ( ct === undefined ) {
8131			ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
8132		}
8133	}
8134
8135	// Check if we're dealing with a known content-type
8136	if ( ct ) {
8137		for ( type in contents ) {
8138			if ( contents[ type ] && contents[ type ].test( ct ) ) {
8139				dataTypes.unshift( type );
8140				break;
8141			}
8142		}
8143	}
8144
8145	// Check to see if we have a response for the expected dataType
8146	if ( dataTypes[ 0 ] in responses ) {
8147		finalDataType = dataTypes[ 0 ];
8148	} else {
8149		// Try convertible dataTypes
8150		for ( type in responses ) {
8151			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
8152				finalDataType = type;
8153				break;
8154			}
8155			if ( !firstDataType ) {
8156				firstDataType = type;
8157			}
8158		}
8159		// Or just use first one
8160		finalDataType = finalDataType || firstDataType;
8161	}
8162
8163	// If we found a dataType
8164	// We add the dataType to the list if needed
8165	// and return the corresponding response
8166	if ( finalDataType ) {
8167		if ( finalDataType !== dataTypes[ 0 ] ) {
8168			dataTypes.unshift( finalDataType );
8169		}
8170		return responses[ finalDataType ];
8171	}
8172}
8173
8174/* Chain conversions given the request and the original response
8175 * Also sets the responseXXX fields on the jqXHR instance
8176 */
8177function ajaxConvert( s, response, jqXHR, isSuccess ) {
8178	var conv2, current, conv, tmp, prev,
8179		converters = {},
8180		// Work with a copy of dataTypes in case we need to modify it for conversion
8181		dataTypes = s.dataTypes.slice();
8182
8183	// Create converters map with lowercased keys
8184	if ( dataTypes[ 1 ] ) {
8185		for ( conv in s.converters ) {
8186			converters[ conv.toLowerCase() ] = s.converters[ conv ];
8187		}
8188	}
8189
8190	current = dataTypes.shift();
8191
8192	// Convert to each sequential dataType
8193	while ( current ) {
8194
8195		if ( s.responseFields[ current ] ) {
8196			jqXHR[ s.responseFields[ current ] ] = response;
8197		}
8198
8199		// Apply the dataFilter if provided
8200		if ( !prev && isSuccess && s.dataFilter ) {
8201			response = s.dataFilter( response, s.dataType );
8202		}
8203
8204		prev = current;
8205		current = dataTypes.shift();
8206
8207		if ( current ) {
8208
8209		// There's only work to do if current dataType is non-auto
8210			if ( current === "*" ) {
8211
8212				current = prev;
8213
8214			// Convert response if prev dataType is non-auto and differs from current
8215			} else if ( prev !== "*" && prev !== current ) {
8216
8217				// Seek a direct converter
8218				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
8219
8220				// If none found, seek a pair
8221				if ( !conv ) {
8222					for ( conv2 in converters ) {
8223
8224						// If conv2 outputs current
8225						tmp = conv2.split( " " );
8226						if ( tmp[ 1 ] === current ) {
8227
8228							// If prev can be converted to accepted input
8229							conv = converters[ prev + " " + tmp[ 0 ] ] ||
8230								converters[ "* " + tmp[ 0 ] ];
8231							if ( conv ) {
8232								// Condense equivalence converters
8233								if ( conv === true ) {
8234									conv = converters[ conv2 ];
8235
8236								// Otherwise, insert the intermediate dataType
8237								} else if ( converters[ conv2 ] !== true ) {
8238									current = tmp[ 0 ];
8239									dataTypes.unshift( tmp[ 1 ] );
8240								}
8241								break;
8242							}
8243						}
8244					}
8245				}
8246
8247				// Apply converter (if not an equivalence)
8248				if ( conv !== true ) {
8249
8250					// Unless errors are allowed to bubble, catch and return them
8251					if ( conv && s[ "throws" ] ) {
8252						response = conv( response );
8253					} else {
8254						try {
8255							response = conv( response );
8256						} catch ( e ) {
8257							return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
8258						}
8259					}
8260				}
8261			}
8262		}
8263	}
8264
8265	return { state: "success", data: response };
8266}
8267
8268jQuery.extend({
8269
8270	// Counter for holding the number of active queries
8271	active: 0,
8272
8273	// Last-Modified header cache for next request
8274	lastModified: {},
8275	etag: {},
8276
8277	ajaxSettings: {
8278		url: ajaxLocation,
8279		type: "GET",
8280		isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
8281		global: true,
8282		processData: true,
8283		async: true,
8284		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
8285		/*
8286		timeout: 0,
8287		data: null,
8288		dataType: null,
8289		username: null,
8290		password: null,
8291		cache: null,
8292		throws: false,
8293		traditional: false,
8294		headers: {},
8295		*/
8296
8297		accepts: {
8298			"*": allTypes,
8299			text: "text/plain",
8300			html: "text/html",
8301			xml: "application/xml, text/xml",
8302			json: "application/json, text/javascript"
8303		},
8304
8305		contents: {
8306			xml: /xml/,
8307			html: /html/,
8308			json: /json/
8309		},
8310
8311		responseFields: {
8312			xml: "responseXML",
8313			text: "responseText",
8314			json: "responseJSON"
8315		},
8316
8317		// Data converters
8318		// Keys separate source (or catchall "*") and destination types with a single space
8319		converters: {
8320
8321			// Convert anything to text
8322			"* text": String,
8323
8324			// Text to html (true = no transformation)
8325			"text html": true,
8326
8327			// Evaluate text as a json expression
8328			"text json": jQuery.parseJSON,
8329
8330			// Parse text as xml
8331			"text xml": jQuery.parseXML
8332		},
8333
8334		// For options that shouldn't be deep extended:
8335		// you can add your own custom options here if
8336		// and when you create one that shouldn't be
8337		// deep extended (see ajaxExtend)
8338		flatOptions: {
8339			url: true,
8340			context: true
8341		}
8342	},
8343
8344	// Creates a full fledged settings object into target
8345	// with both ajaxSettings and settings fields.
8346	// If target is omitted, writes into ajaxSettings.
8347	ajaxSetup: function( target, settings ) {
8348		return settings ?
8349
8350			// Building a settings object
8351			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
8352
8353			// Extending ajaxSettings
8354			ajaxExtend( jQuery.ajaxSettings, target );
8355	},
8356
8357	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
8358	ajaxTransport: addToPrefiltersOrTransports( transports ),
8359
8360	// Main method
8361	ajax: function( url, options ) {
8362
8363		// If url is an object, simulate pre-1.5 signature
8364		if ( typeof url === "object" ) {
8365			options = url;
8366			url = undefined;
8367		}
8368
8369		// Force options to be an object
8370		options = options || {};
8371
8372		var transport,
8373			// URL without anti-cache param
8374			cacheURL,
8375			// Response headers
8376			responseHeadersString,
8377			responseHeaders,
8378			// timeout handle
8379			timeoutTimer,
8380			// Cross-domain detection vars
8381			parts,
8382			// To know if global events are to be dispatched
8383			fireGlobals,
8384			// Loop variable
8385			i,
8386			// Create the final options object
8387			s = jQuery.ajaxSetup( {}, options ),
8388			// Callbacks context
8389			callbackContext = s.context || s,
8390			// Context for global events is callbackContext if it is a DOM node or jQuery collection
8391			globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
8392				jQuery( callbackContext ) :
8393				jQuery.event,
8394			// Deferreds
8395			deferred = jQuery.Deferred(),
8396			completeDeferred = jQuery.Callbacks("once memory"),
8397			// Status-dependent callbacks
8398			statusCode = s.statusCode || {},
8399			// Headers (they are sent all at once)
8400			requestHeaders = {},
8401			requestHeadersNames = {},
8402			// The jqXHR state
8403			state = 0,
8404			// Default abort message
8405			strAbort = "canceled",
8406			// Fake xhr
8407			jqXHR = {
8408				readyState: 0,
8409
8410				// Builds headers hashtable if needed
8411				getResponseHeader: function( key ) {
8412					var match;
8413					if ( state === 2 ) {
8414						if ( !responseHeaders ) {
8415							responseHeaders = {};
8416							while ( (match = rheaders.exec( responseHeadersString )) ) {
8417								responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
8418							}
8419						}
8420						match = responseHeaders[ key.toLowerCase() ];
8421					}
8422					return match == null ? null : match;
8423				},
8424
8425				// Raw string
8426				getAllResponseHeaders: function() {
8427					return state === 2 ? responseHeadersString : null;
8428				},
8429
8430				// Caches the header
8431				setRequestHeader: function( name, value ) {
8432					var lname = name.toLowerCase();
8433					if ( !state ) {
8434						name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
8435						requestHeaders[ name ] = value;
8436					}
8437					return this;
8438				},
8439
8440				// Overrides response content-type header
8441				overrideMimeType: function( type ) {
8442					if ( !state ) {
8443						s.mimeType = type;
8444					}
8445					return this;
8446				},
8447
8448				// Status-dependent callbacks
8449				statusCode: function( map ) {
8450					var code;
8451					if ( map ) {
8452						if ( state < 2 ) {
8453							for ( code in map ) {
8454								// Lazy-add the new callback in a way that preserves old ones
8455								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
8456							}
8457						} else {
8458							// Execute the appropriate callbacks
8459							jqXHR.always( map[ jqXHR.status ] );
8460						}
8461					}
8462					return this;
8463				},
8464
8465				// Cancel the request
8466				abort: function( statusText ) {
8467					var finalText = statusText || strAbort;
8468					if ( transport ) {
8469						transport.abort( finalText );
8470					}
8471					done( 0, finalText );
8472					return this;
8473				}
8474			};
8475
8476		// Attach deferreds
8477		deferred.promise( jqXHR ).complete = completeDeferred.add;
8478		jqXHR.success = jqXHR.done;
8479		jqXHR.error = jqXHR.fail;
8480
8481		// Remove hash character (#7531: and string promotion)
8482		// Add protocol if not provided (prefilters might expect it)
8483		// Handle falsy url in the settings object (#10093: consistency with old signature)
8484		// We also use the url parameter if available
8485		s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" )
8486			.replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
8487
8488		// Alias method option to type as per ticket #12004
8489		s.type = options.method || options.type || s.method || s.type;
8490
8491		// Extract dataTypes list
8492		s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
8493
8494		// A cross-domain request is in order when we have a protocol:host:port mismatch
8495		if ( s.crossDomain == null ) {
8496			parts = rurl.exec( s.url.toLowerCase() );
8497			s.crossDomain = !!( parts &&
8498				( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
8499					( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
8500						( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
8501			);
8502		}
8503
8504		// Convert data if not already a string
8505		if ( s.data && s.processData && typeof s.data !== "string" ) {
8506			s.data = jQuery.param( s.data, s.traditional );
8507		}
8508
8509		// Apply prefilters
8510		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
8511
8512		// If request was aborted inside a prefilter, stop there
8513		if ( state === 2 ) {
8514			return jqXHR;
8515		}
8516
8517		// We can fire global events as of now if asked to
8518		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
8519		fireGlobals = jQuery.event && s.global;
8520
8521		// Watch for a new set of requests
8522		if ( fireGlobals && jQuery.active++ === 0 ) {
8523			jQuery.event.trigger("ajaxStart");
8524		}
8525
8526		// Uppercase the type
8527		s.type = s.type.toUpperCase();
8528
8529		// Determine if request has content
8530		s.hasContent = !rnoContent.test( s.type );
8531
8532		// Save the URL in case we're toying with the If-Modified-Since
8533		// and/or If-None-Match header later on
8534		cacheURL = s.url;
8535
8536		// More options handling for requests with no content
8537		if ( !s.hasContent ) {
8538
8539			// If data is available, append data to url
8540			if ( s.data ) {
8541				cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
8542				// #9682: remove data so that it's not used in an eventual retry
8543				delete s.data;
8544			}
8545
8546			// Add anti-cache in url if needed
8547			if ( s.cache === false ) {
8548				s.url = rts.test( cacheURL ) ?
8549
8550					// If there is already a '_' parameter, set its value
8551					cacheURL.replace( rts, "$1_=" + nonce++ ) :
8552
8553					// Otherwise add one to the end
8554					cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
8555			}
8556		}
8557
8558		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
8559		if ( s.ifModified ) {
8560			if ( jQuery.lastModified[ cacheURL ] ) {
8561				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
8562			}
8563			if ( jQuery.etag[ cacheURL ] ) {
8564				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
8565			}
8566		}
8567
8568		// Set the correct header, if data is being sent
8569		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
8570			jqXHR.setRequestHeader( "Content-Type", s.contentType );
8571		}
8572
8573		// Set the Accepts header for the server, depending on the dataType
8574		jqXHR.setRequestHeader(
8575			"Accept",
8576			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
8577				s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
8578				s.accepts[ "*" ]
8579		);
8580
8581		// Check for headers option
8582		for ( i in s.headers ) {
8583			jqXHR.setRequestHeader( i, s.headers[ i ] );
8584		}
8585
8586		// Allow custom headers/mimetypes and early abort
8587		if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
8588			// Abort if not done already and return
8589			return jqXHR.abort();
8590		}
8591
8592		// Aborting is no longer a cancellation
8593		strAbort = "abort";
8594
8595		// Install callbacks on deferreds
8596		for ( i in { success: 1, error: 1, complete: 1 } ) {
8597			jqXHR[ i ]( s[ i ] );
8598		}
8599
8600		// Get transport
8601		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
8602
8603		// If no transport, we auto-abort
8604		if ( !transport ) {
8605			done( -1, "No Transport" );
8606		} else {
8607			jqXHR.readyState = 1;
8608
8609			// Send global event
8610			if ( fireGlobals ) {
8611				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
8612			}
8613			// Timeout
8614			if ( s.async && s.timeout > 0 ) {
8615				timeoutTimer = setTimeout(function() {
8616					jqXHR.abort("timeout");
8617				}, s.timeout );
8618			}
8619
8620			try {
8621				state = 1;
8622				transport.send( requestHeaders, done );
8623			} catch ( e ) {
8624				// Propagate exception as error if not done
8625				if ( state < 2 ) {
8626					done( -1, e );
8627				// Simply rethrow otherwise
8628				} else {
8629					throw e;
8630				}
8631			}
8632		}
8633
8634		// Callback for when everything is done
8635		function done( status, nativeStatusText, responses, headers ) {
8636			var isSuccess, success, error, response, modified,
8637				statusText = nativeStatusText;
8638
8639			// Called once
8640			if ( state === 2 ) {
8641				return;
8642			}
8643
8644			// State is "done" now
8645			state = 2;
8646
8647			// Clear timeout if it exists
8648			if ( timeoutTimer ) {
8649				clearTimeout( timeoutTimer );
8650			}
8651
8652			// Dereference transport for early garbage collection
8653			// (no matter how long the jqXHR object will be used)
8654			transport = undefined;
8655
8656			// Cache response headers
8657			responseHeadersString = headers || "";
8658
8659			// Set readyState
8660			jqXHR.readyState = status > 0 ? 4 : 0;
8661
8662			// Determine if successful
8663			isSuccess = status >= 200 && status < 300 || status === 304;
8664
8665			// Get response data
8666			if ( responses ) {
8667				response = ajaxHandleResponses( s, jqXHR, responses );
8668			}
8669
8670			// Convert no matter what (that way responseXXX fields are always set)
8671			response = ajaxConvert( s, response, jqXHR, isSuccess );
8672
8673			// If successful, handle type chaining
8674			if ( isSuccess ) {
8675
8676				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
8677				if ( s.ifModified ) {
8678					modified = jqXHR.getResponseHeader("Last-Modified");
8679					if ( modified ) {
8680						jQuery.lastModified[ cacheURL ] = modified;
8681					}
8682					modified = jqXHR.getResponseHeader("etag");
8683					if ( modified ) {
8684						jQuery.etag[ cacheURL ] = modified;
8685					}
8686				}
8687
8688				// if no content
8689				if ( status === 204 || s.type === "HEAD" ) {
8690					statusText = "nocontent";
8691
8692				// if not modified
8693				} else if ( status === 304 ) {
8694					statusText = "notmodified";
8695
8696				// If we have data, let's convert it
8697				} else {
8698					statusText = response.state;
8699					success = response.data;
8700					error = response.error;
8701					isSuccess = !error;
8702				}
8703			} else {
8704				// Extract error from statusText and normalize for non-aborts
8705				error = statusText;
8706				if ( status || !statusText ) {
8707					statusText = "error";
8708					if ( status < 0 ) {
8709						status = 0;
8710					}
8711				}
8712			}
8713
8714			// Set data for the fake xhr object
8715			jqXHR.status = status;
8716			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
8717
8718			// Success/Error
8719			if ( isSuccess ) {
8720				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
8721			} else {
8722				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
8723			}
8724
8725			// Status-dependent callbacks
8726			jqXHR.statusCode( statusCode );
8727			statusCode = undefined;
8728
8729			if ( fireGlobals ) {
8730				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
8731					[ jqXHR, s, isSuccess ? success : error ] );
8732			}
8733
8734			// Complete
8735			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
8736
8737			if ( fireGlobals ) {
8738				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
8739				// Handle the global AJAX counter
8740				if ( !( --jQuery.active ) ) {
8741					jQuery.event.trigger("ajaxStop");
8742				}
8743			}
8744		}
8745
8746		return jqXHR;
8747	},
8748
8749	getJSON: function( url, data, callback ) {
8750		return jQuery.get( url, data, callback, "json" );
8751	},
8752
8753	getScript: function( url, callback ) {
8754		return jQuery.get( url, undefined, callback, "script" );
8755	}
8756});
8757
8758jQuery.each( [ "get", "post" ], function( i, method ) {
8759	jQuery[ method ] = function( url, data, callback, type ) {
8760		// Shift arguments if data argument was omitted
8761		if ( jQuery.isFunction( data ) ) {
8762			type = type || callback;
8763			callback = data;
8764			data = undefined;
8765		}
8766
8767		return jQuery.ajax({
8768			url: url,
8769			type: method,
8770			dataType: type,
8771			data: data,
8772			success: callback
8773		});
8774	};
8775});
8776
8777
8778jQuery._evalUrl = function( url ) {
8779	return jQuery.ajax({
8780		url: url,
8781		type: "GET",
8782		dataType: "script",
8783		async: false,
8784		global: false,
8785		"throws": true
8786	});
8787};
8788
8789
8790jQuery.fn.extend({
8791	wrapAll: function( html ) {
8792		var wrap;
8793
8794		if ( jQuery.isFunction( html ) ) {
8795			return this.each(function( i ) {
8796				jQuery( this ).wrapAll( html.call(this, i) );
8797			});
8798		}
8799
8800		if ( this[ 0 ] ) {
8801
8802			// The elements to wrap the target around
8803			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
8804
8805			if ( this[ 0 ].parentNode ) {
8806				wrap.insertBefore( this[ 0 ] );
8807			}
8808
8809			wrap.map(function() {
8810				var elem = this;
8811
8812				while ( elem.firstElementChild ) {
8813					elem = elem.firstElementChild;
8814				}
8815
8816				return elem;
8817			}).append( this );
8818		}
8819
8820		return this;
8821	},
8822
8823	wrapInner: function( html ) {
8824		if ( jQuery.isFunction( html ) ) {
8825			return this.each(function( i ) {
8826				jQuery( this ).wrapInner( html.call(this, i) );
8827			});
8828		}
8829
8830		return this.each(function() {
8831			var self = jQuery( this ),
8832				contents = self.contents();
8833
8834			if ( contents.length ) {
8835				contents.wrapAll( html );
8836
8837			} else {
8838				self.append( html );
8839			}
8840		});
8841	},
8842
8843	wrap: function( html ) {
8844		var isFunction = jQuery.isFunction( html );
8845
8846		return this.each(function( i ) {
8847			jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
8848		});
8849	},
8850
8851	unwrap: function() {
8852		return this.parent().each(function() {
8853			if ( !jQuery.nodeName( this, "body" ) ) {
8854				jQuery( this ).replaceWith( this.childNodes );
8855			}
8856		}).end();
8857	}
8858});
8859
8860
8861jQuery.expr.filters.hidden = function( elem ) {
8862	// Support: Opera <= 12.12
8863	// Opera reports offsetWidths and offsetHeights less than zero on some elements
8864	return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
8865};
8866jQuery.expr.filters.visible = function( elem ) {
8867	return !jQuery.expr.filters.hidden( elem );
8868};
8869
8870
8871
8872
8873var r20 = /%20/g,
8874	rbracket = /\[\]$/,
8875	rCRLF = /\r?\n/g,
8876	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
8877	rsubmittable = /^(?:input|select|textarea|keygen)/i;
8878
8879function buildParams( prefix, obj, traditional, add ) {
8880	var name;
8881
8882	if ( jQuery.isArray( obj ) ) {
8883		// Serialize array item.
8884		jQuery.each( obj, function( i, v ) {
8885			if ( traditional || rbracket.test( prefix ) ) {
8886				// Treat each array item as a scalar.
8887				add( prefix, v );
8888
8889			} else {
8890				// Item is non-scalar (array or object), encode its numeric index.
8891				buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
8892			}
8893		});
8894
8895	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
8896		// Serialize object item.
8897		for ( name in obj ) {
8898			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
8899		}
8900
8901	} else {
8902		// Serialize scalar item.
8903		add( prefix, obj );
8904	}
8905}
8906
8907// Serialize an array of form elements or a set of
8908// key/values into a query string
8909jQuery.param = function( a, traditional ) {
8910	var prefix,
8911		s = [],
8912		add = function( key, value ) {
8913			// If value is a function, invoke it and return its value
8914			value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
8915			s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
8916		};
8917
8918	// Set traditional to true for jQuery <= 1.3.2 behavior.
8919	if ( traditional === undefined ) {
8920		traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
8921	}
8922
8923	// If an array was passed in, assume that it is an array of form elements.
8924	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
8925		// Serialize the form elements
8926		jQuery.each( a, function() {
8927			add( this.name, this.value );
8928		});
8929
8930	} else {
8931		// If traditional, encode the "old" way (the way 1.3.2 or older
8932		// did it), otherwise encode params recursively.
8933		for ( prefix in a ) {
8934			buildParams( prefix, a[ prefix ], traditional, add );
8935		}
8936	}
8937
8938	// Return the resulting serialization
8939	return s.join( "&" ).replace( r20, "+" );
8940};
8941
8942jQuery.fn.extend({
8943	serialize: function() {
8944		return jQuery.param( this.serializeArray() );
8945	},
8946	serializeArray: function() {
8947		return this.map(function() {
8948			// Can add propHook for "elements" to filter or add form elements
8949			var elements = jQuery.prop( this, "elements" );
8950			return elements ? jQuery.makeArray( elements ) : this;
8951		})
8952		.filter(function() {
8953			var type = this.type;
8954
8955			// Use .is( ":disabled" ) so that fieldset[disabled] works
8956			return this.name && !jQuery( this ).is( ":disabled" ) &&
8957				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
8958				( this.checked || !rcheckableType.test( type ) );
8959		})
8960		.map(function( i, elem ) {
8961			var val = jQuery( this ).val();
8962
8963			return val == null ?
8964				null :
8965				jQuery.isArray( val ) ?
8966					jQuery.map( val, function( val ) {
8967						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
8968					}) :
8969					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
8970		}).get();
8971	}
8972});
8973
8974
8975jQuery.ajaxSettings.xhr = function() {
8976	try {
8977		return new XMLHttpRequest();
8978	} catch( e ) {}
8979};
8980
8981var xhrId = 0,
8982	xhrCallbacks = {},
8983	xhrSuccessStatus = {
8984		// file protocol always yields status code 0, assume 200
8985		0: 200,
8986		// Support: IE9
8987		// #1450: sometimes IE returns 1223 when it should be 204
8988		1223: 204
8989	},
8990	xhrSupported = jQuery.ajaxSettings.xhr();
8991
8992// Support: IE9
8993// Open requests must be manually aborted on unload (#5280)
8994// See https://support.microsoft.com/kb/2856746 for more info
8995if ( window.attachEvent ) {
8996	window.attachEvent( "onunload", function() {
8997		for ( var key in xhrCallbacks ) {
8998			xhrCallbacks[ key ]();
8999		}
9000	});
9001}
9002
9003support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
9004support.ajax = xhrSupported = !!xhrSupported;
9005
9006jQuery.ajaxTransport(function( options ) {
9007	var callback;
9008
9009	// Cross domain only allowed if supported through XMLHttpRequest
9010	if ( support.cors || xhrSupported && !options.crossDomain ) {
9011		return {
9012			send: function( headers, complete ) {
9013				var i,
9014					xhr = options.xhr(),
9015					id = ++xhrId;
9016
9017				xhr.open( options.type, options.url, options.async, options.username, options.password );
9018
9019				// Apply custom fields if provided
9020				if ( options.xhrFields ) {
9021					for ( i in options.xhrFields ) {
9022						xhr[ i ] = options.xhrFields[ i ];
9023					}
9024				}
9025
9026				// Override mime type if needed
9027				if ( options.mimeType && xhr.overrideMimeType ) {
9028					xhr.overrideMimeType( options.mimeType );
9029				}
9030
9031				// X-Requested-With header
9032				// For cross-domain requests, seeing as conditions for a preflight are
9033				// akin to a jigsaw puzzle, we simply never set it to be sure.
9034				// (it can always be set on a per-request basis or even using ajaxSetup)
9035				// For same-domain requests, won't change header if already provided.
9036				if ( !options.crossDomain && !headers["X-Requested-With"] ) {
9037					headers["X-Requested-With"] = "XMLHttpRequest";
9038				}
9039
9040				// Set headers
9041				for ( i in headers ) {
9042					xhr.setRequestHeader( i, headers[ i ] );
9043				}
9044
9045				// Callback
9046				callback = function( type ) {
9047					return function() {
9048						if ( callback ) {
9049							delete xhrCallbacks[ id ];
9050							callback = xhr.onload = xhr.onerror = null;
9051
9052							if ( type === "abort" ) {
9053								xhr.abort();
9054							} else if ( type === "error" ) {
9055								complete(
9056									// file: protocol always yields status 0; see #8605, #14207
9057									xhr.status,
9058									xhr.statusText
9059								);
9060							} else {
9061								complete(
9062									xhrSuccessStatus[ xhr.status ] || xhr.status,
9063									xhr.statusText,
9064									// Support: IE9
9065									// Accessing binary-data responseText throws an exception
9066									// (#11426)
9067									typeof xhr.responseText === "string" ? {
9068										text: xhr.responseText
9069									} : undefined,
9070									xhr.getAllResponseHeaders()
9071								);
9072							}
9073						}
9074					};
9075				};
9076
9077				// Listen to events
9078				xhr.onload = callback();
9079				xhr.onerror = callback("error");
9080
9081				// Create the abort callback
9082				callback = xhrCallbacks[ id ] = callback("abort");
9083
9084				try {
9085					// Do send the request (this may raise an exception)
9086					xhr.send( options.hasContent && options.data || null );
9087				} catch ( e ) {
9088					// #14683: Only rethrow if this hasn't been notified as an error yet
9089					if ( callback ) {
9090						throw e;
9091					}
9092				}
9093			},
9094
9095			abort: function() {
9096				if ( callback ) {
9097					callback();
9098				}
9099			}
9100		};
9101	}
9102});
9103
9104
9105
9106
9107// Install script dataType
9108jQuery.ajaxSetup({
9109	accepts: {
9110		script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
9111	},
9112	contents: {
9113		script: /(?:java|ecma)script/
9114	},
9115	converters: {
9116		"text script": function( text ) {
9117			jQuery.globalEval( text );
9118			return text;
9119		}
9120	}
9121});
9122
9123// Handle cache's special case and crossDomain
9124jQuery.ajaxPrefilter( "script", function( s ) {
9125	if ( s.cache === undefined ) {
9126		s.cache = false;
9127	}
9128	if ( s.crossDomain ) {
9129		s.type = "GET";
9130	}
9131});
9132
9133// Bind script tag hack transport
9134jQuery.ajaxTransport( "script", function( s ) {
9135	// This transport only deals with cross domain requests
9136	if ( s.crossDomain ) {
9137		var script, callback;
9138		return {
9139			send: function( _, complete ) {
9140				script = jQuery("<script>").prop({
9141					async: true,
9142					charset: s.scriptCharset,
9143					src: s.url
9144				}).on(
9145					"load error",
9146					callback = function( evt ) {
9147						script.remove();
9148						callback = null;
9149						if ( evt ) {
9150							complete( evt.type === "error" ? 404 : 200, evt.type );
9151						}
9152					}
9153				);
9154				document.head.appendChild( script[ 0 ] );
9155			},
9156			abort: function() {
9157				if ( callback ) {
9158					callback();
9159				}
9160			}
9161		};
9162	}
9163});
9164
9165
9166
9167
9168var oldCallbacks = [],
9169	rjsonp = /(=)\?(?=&|$)|\?\?/;
9170
9171// Default jsonp settings
9172jQuery.ajaxSetup({
9173	jsonp: "callback",
9174	jsonpCallback: function() {
9175		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
9176		this[ callback ] = true;
9177		return callback;
9178	}
9179});
9180
9181// Detect, normalize options and install callbacks for jsonp requests
9182jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
9183
9184	var callbackName, overwritten, responseContainer,
9185		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
9186			"url" :
9187			typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
9188		);
9189
9190	// Handle iff the expected data type is "jsonp" or we have a parameter to set
9191	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
9192
9193		// Get callback name, remembering preexisting value associated with it
9194		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
9195			s.jsonpCallback() :
9196			s.jsonpCallback;
9197
9198		// Insert callback into url or form data
9199		if ( jsonProp ) {
9200			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
9201		} else if ( s.jsonp !== false ) {
9202			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
9203		}
9204
9205		// Use data converter to retrieve json after script execution
9206		s.converters["script json"] = function() {
9207			if ( !responseContainer ) {
9208				jQuery.error( callbackName + " was not called" );
9209			}
9210			return responseContainer[ 0 ];
9211		};
9212
9213		// force json dataType
9214		s.dataTypes[ 0 ] = "json";
9215
9216		// Install callback
9217		overwritten = window[ callbackName ];
9218		window[ callbackName ] = function() {
9219			responseContainer = arguments;
9220		};
9221
9222		// Clean-up function (fires after converters)
9223		jqXHR.always(function() {
9224			// Restore preexisting value
9225			window[ callbackName ] = overwritten;
9226
9227			// Save back as free
9228			if ( s[ callbackName ] ) {
9229				// make sure that re-using the options doesn't screw things around
9230				s.jsonpCallback = originalSettings.jsonpCallback;
9231
9232				// save the callback name for future use
9233				oldCallbacks.push( callbackName );
9234			}
9235
9236			// Call if it was a function and we have a response
9237			if ( responseContainer && jQuery.isFunction( overwritten ) ) {
9238				overwritten( responseContainer[ 0 ] );
9239			}
9240
9241			responseContainer = overwritten = undefined;
9242		});
9243
9244		// Delegate to script
9245		return "script";
9246	}
9247});
9248
9249
9250
9251
9252// data: string of html
9253// context (optional): If specified, the fragment will be created in this context, defaults to document
9254// keepScripts (optional): If true, will include scripts passed in the html string
9255jQuery.parseHTML = function( data, context, keepScripts ) {
9256	if ( !data || typeof data !== "string" ) {
9257		return null;
9258	}
9259	if ( typeof context === "boolean" ) {
9260		keepScripts = context;
9261		context = false;
9262	}
9263	context = context || document;
9264
9265	var parsed = rsingleTag.exec( data ),
9266		scripts = !keepScripts && [];
9267
9268	// Single tag
9269	if ( parsed ) {
9270		return [ context.createElement( parsed[1] ) ];
9271	}
9272
9273	parsed = jQuery.buildFragment( [ data ], context, scripts );
9274
9275	if ( scripts && scripts.length ) {
9276		jQuery( scripts ).remove();
9277	}
9278
9279	return jQuery.merge( [], parsed.childNodes );
9280};
9281
9282
9283// Keep a copy of the old load method
9284var _load = jQuery.fn.load;
9285
9286/**
9287 * Load a url into a page
9288 */
9289jQuery.fn.load = function( url, params, callback ) {
9290	if ( typeof url !== "string" && _load ) {
9291		return _load.apply( this, arguments );
9292	}
9293
9294	var selector, type, response,
9295		self = this,
9296		off = url.indexOf(" ");
9297
9298	if ( off >= 0 ) {
9299		selector = jQuery.trim( url.slice( off ) );
9300		url = url.slice( 0, off );
9301	}
9302
9303	// If it's a function
9304	if ( jQuery.isFunction( params ) ) {
9305
9306		// We assume that it's the callback
9307		callback = params;
9308		params = undefined;
9309
9310	// Otherwise, build a param string
9311	} else if ( params && typeof params === "object" ) {
9312		type = "POST";
9313	}
9314
9315	// If we have elements to modify, make the request
9316	if ( self.length > 0 ) {
9317		jQuery.ajax({
9318			url: url,
9319
9320			// if "type" variable is undefined, then "GET" method will be used
9321			type: type,
9322			dataType: "html",
9323			data: params
9324		}).done(function( responseText ) {
9325
9326			// Save response for use in complete callback
9327			response = arguments;
9328
9329			self.html( selector ?
9330
9331				// If a selector was specified, locate the right elements in a dummy div
9332				// Exclude scripts to avoid IE 'Permission Denied' errors
9333				jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
9334
9335				// Otherwise use the full result
9336				responseText );
9337
9338		}).complete( callback && function( jqXHR, status ) {
9339			self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
9340		});
9341	}
9342
9343	return this;
9344};
9345
9346
9347
9348
9349// Attach a bunch of functions for handling common AJAX events
9350jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
9351	jQuery.fn[ type ] = function( fn ) {
9352		return this.on( type, fn );
9353	};
9354});
9355
9356
9357
9358
9359jQuery.expr.filters.animated = function( elem ) {
9360	return jQuery.grep(jQuery.timers, function( fn ) {
9361		return elem === fn.elem;
9362	}).length;
9363};
9364
9365
9366
9367
9368var docElem = window.document.documentElement;
9369
9370/**
9371 * Gets a window from an element
9372 */
9373function getWindow( elem ) {
9374	return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
9375}
9376
9377jQuery.offset = {
9378	setOffset: function( elem, options, i ) {
9379		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
9380			position = jQuery.css( elem, "position" ),
9381			curElem = jQuery( elem ),
9382			props = {};
9383
9384		// Set position first, in-case top/left are set even on static elem
9385		if ( position === "static" ) {
9386			elem.style.position = "relative";
9387		}
9388
9389		curOffset = curElem.offset();
9390		curCSSTop = jQuery.css( elem, "top" );
9391		curCSSLeft = jQuery.css( elem, "left" );
9392		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
9393			( curCSSTop + curCSSLeft ).indexOf("auto") > -1;
9394
9395		// Need to be able to calculate position if either
9396		// top or left is auto and position is either absolute or fixed
9397		if ( calculatePosition ) {
9398			curPosition = curElem.position();
9399			curTop = curPosition.top;
9400			curLeft = curPosition.left;
9401
9402		} else {
9403			curTop = parseFloat( curCSSTop ) || 0;
9404			curLeft = parseFloat( curCSSLeft ) || 0;
9405		}
9406
9407		if ( jQuery.isFunction( options ) ) {
9408			options = options.call( elem, i, curOffset );
9409		}
9410
9411		if ( options.top != null ) {
9412			props.top = ( options.top - curOffset.top ) + curTop;
9413		}
9414		if ( options.left != null ) {
9415			props.left = ( options.left - curOffset.left ) + curLeft;
9416		}
9417
9418		if ( "using" in options ) {
9419			options.using.call( elem, props );
9420
9421		} else {
9422			curElem.css( props );
9423		}
9424	}
9425};
9426
9427jQuery.fn.extend({
9428	offset: function( options ) {
9429		if ( arguments.length ) {
9430			return options === undefined ?
9431				this :
9432				this.each(function( i ) {
9433					jQuery.offset.setOffset( this, options, i );
9434				});
9435		}
9436
9437		var docElem, win,
9438			elem = this[ 0 ],
9439			box = { top: 0, left: 0 },
9440			doc = elem && elem.ownerDocument;
9441
9442		if ( !doc ) {
9443			return;
9444		}
9445
9446		docElem = doc.documentElement;
9447
9448		// Make sure it's not a disconnected DOM node
9449		if ( !jQuery.contains( docElem, elem ) ) {
9450			return box;
9451		}
9452
9453		// Support: BlackBerry 5, iOS 3 (original iPhone)
9454		// If we don't have gBCR, just use 0,0 rather than error
9455		if ( typeof elem.getBoundingClientRect !== strundefined ) {
9456			box = elem.getBoundingClientRect();
9457		}
9458		win = getWindow( doc );
9459		return {
9460			top: box.top + win.pageYOffset - docElem.clientTop,
9461			left: box.left + win.pageXOffset - docElem.clientLeft
9462		};
9463	},
9464
9465	position: function() {
9466		if ( !this[ 0 ] ) {
9467			return;
9468		}
9469
9470		var offsetParent, offset,
9471			elem = this[ 0 ],
9472			parentOffset = { top: 0, left: 0 };
9473
9474		// Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
9475		if ( jQuery.css( elem, "position" ) === "fixed" ) {
9476			// Assume getBoundingClientRect is there when computed position is fixed
9477			offset = elem.getBoundingClientRect();
9478
9479		} else {
9480			// Get *real* offsetParent
9481			offsetParent = this.offsetParent();
9482
9483			// Get correct offsets
9484			offset = this.offset();
9485			if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
9486				parentOffset = offsetParent.offset();
9487			}
9488
9489			// Add offsetParent borders
9490			parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
9491			parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
9492		}
9493
9494		// Subtract parent offsets and element margins
9495		return {
9496			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
9497			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
9498		};
9499	},
9500
9501	offsetParent: function() {
9502		return this.map(function() {
9503			var offsetParent = this.offsetParent || docElem;
9504
9505			while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
9506				offsetParent = offsetParent.offsetParent;
9507			}
9508
9509			return offsetParent || docElem;
9510		});
9511	}
9512});
9513
9514// Create scrollLeft and scrollTop methods
9515jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
9516	var top = "pageYOffset" === prop;
9517
9518	jQuery.fn[ method ] = function( val ) {
9519		return access( this, function( elem, method, val ) {
9520			var win = getWindow( elem );
9521
9522			if ( val === undefined ) {
9523				return win ? win[ prop ] : elem[ method ];
9524			}
9525
9526			if ( win ) {
9527				win.scrollTo(
9528					!top ? val : window.pageXOffset,
9529					top ? val : window.pageYOffset
9530				);
9531
9532			} else {
9533				elem[ method ] = val;
9534			}
9535		}, method, val, arguments.length, null );
9536	};
9537});
9538
9539// Support: Safari<7+, Chrome<37+
9540// Add the top/left cssHooks using jQuery.fn.position
9541// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
9542// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
9543// getComputedStyle returns percent when specified for top/left/bottom/right;
9544// rather than make the css module depend on the offset module, just check for it here
9545jQuery.each( [ "top", "left" ], function( i, prop ) {
9546	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
9547		function( elem, computed ) {
9548			if ( computed ) {
9549				computed = curCSS( elem, prop );
9550				// If curCSS returns percentage, fallback to offset
9551				return rnumnonpx.test( computed ) ?
9552					jQuery( elem ).position()[ prop ] + "px" :
9553					computed;
9554			}
9555		}
9556	);
9557});
9558
9559
9560// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
9561jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
9562	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
9563		// Margin is only for outerHeight, outerWidth
9564		jQuery.fn[ funcName ] = function( margin, value ) {
9565			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
9566				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
9567
9568			return access( this, function( elem, type, value ) {
9569				var doc;
9570
9571				if ( jQuery.isWindow( elem ) ) {
9572					// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
9573					// isn't a whole lot we can do. See pull request at this URL for discussion:
9574					// https://github.com/jquery/jquery/pull/764
9575					return elem.document.documentElement[ "client" + name ];
9576				}
9577
9578				// Get document width or height
9579				if ( elem.nodeType === 9 ) {
9580					doc = elem.documentElement;
9581
9582					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
9583					// whichever is greatest
9584					return Math.max(
9585						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
9586						elem.body[ "offset" + name ], doc[ "offset" + name ],
9587						doc[ "client" + name ]
9588					);
9589				}
9590
9591				return value === undefined ?
9592					// Get width or height on the element, requesting but not forcing parseFloat
9593					jQuery.css( elem, type, extra ) :
9594
9595					// Set width or height on the element
9596					jQuery.style( elem, type, value, extra );
9597			}, type, chainable ? margin : undefined, chainable, null );
9598		};
9599	});
9600});
9601
9602
9603// The number of elements contained in the matched element set
9604jQuery.fn.size = function() {
9605	return this.length;
9606};
9607
9608jQuery.fn.andSelf = jQuery.fn.addBack;
9609
9610
9611
9612
9613// Register as a named AMD module, since jQuery can be concatenated with other
9614// files that may use define, but not via a proper concatenation script that
9615// understands anonymous AMD modules. A named AMD is safest and most robust
9616// way to register. Lowercase jquery is used because AMD module names are
9617// derived from file names, and jQuery is normally delivered in a lowercase
9618// file name. Do this after creating the global so that if an AMD module wants
9619// to call noConflict to hide this version of jQuery, it will work.
9620
9621// Note that for maximum portability, libraries that are not jQuery should
9622// declare themselves as anonymous modules, and avoid setting a global if an
9623// AMD loader is present. jQuery is a special case. For more information, see
9624// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
9625
9626if ( typeof define === "function" && define.amd ) {
9627	define( "jquery", [], function() {
9628		return jQuery;
9629	});
9630}
9631
9632
9633
9634
9635var
9636	// Map over jQuery in case of overwrite
9637	_jQuery = window.jQuery,
9638
9639	// Map over the $ in case of overwrite
9640	_$ = window.$;
9641
9642jQuery.noConflict = function( deep ) {
9643	if ( window.$ === jQuery ) {
9644		window.$ = _$;
9645	}
9646
9647	if ( deep && window.jQuery === jQuery ) {
9648		window.jQuery = _jQuery;
9649	}
9650
9651	return jQuery;
9652};
9653
9654// Expose jQuery and $ identifiers, even in AMD
9655// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
9656// and CommonJS for browser emulators (#13566)
9657if ( typeof noGlobal === strundefined ) {
9658	window.jQuery = window.$ = jQuery;
9659}
9660
9661
9662
9663
9664return jQuery;
9665
9666}));
9667
9668; browserify_shim__define__module__export__(typeof $ != "undefined" ? $ : window.$);
9669
9670}).call(global, undefined, undefined, undefined, undefined, function defineExport(ex) { module.exports = ex; });
9671
9672}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
9673//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJvd2VyX2NvbXBvbmVudHMvanF1ZXJ5L2Rpc3QvanF1ZXJ5LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQ
9673TtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ
9673UNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO
96730FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIjsgdmFyIF9fYnJvd3NlcmlmeV9zaGltX3JlcXVpcmVfXz1yZXF1aXJlOyhmdW5jdGlvbiBicm93c2VyaWZ5U2hpbShtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUsIGRlZmluZSwgYnJvd3NlcmlmeV9zaGltX19kZWZpbmVfX21vZHVsZV9fZXhwb3J0X18pIHtcbi8qIVxuICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2Mi4xLjRcbiAqIGh0dHA6Ly9qcXVlcnkuY29tL1xuICpcbiAqIEluY2x1ZGVzIFNpenpsZS5qc1xuICogaHR0cDovL3NpenpsZWpzLmNvbS9cbiAqXG4gKiBDb3B5cmlnaHQgMjAwNSwgMjAxNCBqUXVlcnkgRm91bmRhdGlvbiwgSW5jLiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2VcbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqXG4gKiBEYXRlOiAyMDE1LTA0LTI4VDE2OjAxWlxuICovXG5cbihmdW5jdGlvbiggZ2xvYmFsLCBmYWN0b3J5ICkge1xuXG5cdGlmICggdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgbW9kdWxlLmV4cG9ydHMgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0Ly8gRm9yIENvbW1vbkpTIGFuZCBDb21tb25KUy1saWtlIGVudmlyb25tZW50cyB3aGVyZSBhIHByb3BlciBgd2luZG93YFxuXHRcdC8vIGlzIHByZXNlbnQsIGV4ZWN1dGUgdGhlIGZhY3RvcnkgYW5kIGdldCBqUXVlcnkuXG5cdFx0Ly8gRm9yIGVudmlyb25tZW50cyB0aGF0IGRvIG5vdCBoYXZlIGEgYHdpbmRvd2Agd2l0aCBhIGBkb2N1bWVudGBcblx0XHQvLyAoc3VjaCBhcyBOb2RlLmpzKSwgZXhwb3NlIGEgZmFjdG9yeSBhcyBtb2R1bGUuZXhwb3J0cy5cblx0XHQvLyBUaGlzIGFjY2VudHVhdGVzIHRoZSBuZWVkIGZvciB0aGUgY3JlYXRpb24gb2YgYSByZWFsIGB3aW5kb3dgLlxuXHRcdC8vIGUuZy4gdmFyIGpRdWVyeSA9IHJlcXVpcmUoXCJqcXVlcnlcIikod2luZG93KTtcblx0XHQvLyBTZWUgdGlja2V0ICMxNDU0OSBmb3IgbW9yZSBpbmZvLlxuXHRcdG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsLmRvY3VtZW50ID9cblx0XHRcdGZhY3RvcnkoIGdsb2JhbCwgdHJ1ZSApIDpcblx0XHRcdGZ1bmN0aW9uKCB3ICkge1xuXHRcdFx0XHRpZiAoICF3LmRvY3VtZW50ICkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvciggXCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50XCIgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZmFjdG9yeSggdyApO1xuXHRcdFx0fTtcblx0fSBlbHNlIHtcblx0XHRmYWN0b3J5KCBnbG9iYWwgKTtcblx0fVxuXG4vLyBQYXNzIHRoaXMgaWYgd2luZG93IGlzIG5vdCBkZWZpbmVkIHlldFxufSh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDogdGhpcywgZnVuY3Rpb24oIHdpbmRvdywgbm9HbG9iYWwgKSB7XG5cbi8vIFN1cHBvcnQ6IEZpcmVmb3ggMTgrXG4vLyBDYW4ndCBiZSBpbiBzdHJpY3QgbW9kZSwgc2V2ZXJhbCBsaWJzIGluY2x1ZGluZyBBU1AuTkVUIHRyYWNlXG4vLyB0aGUgc3RhY2sgdmlhIGFyZ3VtZW50cy5jYWxsZXIuY2FsbGVlIGFuZCBGaXJlZm94IGRpZXMgaWZcbi8vIHlvdSB0cnkgdG8gdHJhY2UgdGhyb3VnaCBcInVzZSBzdHJpY3RcIiBjYWxsIGNoYWlucy4gKCMxMzMzNSlcbi8vXG5cbnZhciBhcnIgPSBbXTtcblxudmFyIHNsaWNlID0gYXJyLnNsaWNlO1xuXG52YXIgY29uY2F0ID0gYXJyLmNvbmNhdDtcblxudmFyIHB1c2ggPSBhcnIucHVzaDtcblxudmFyIGluZGV4T2YgPSBhcnIuaW5kZXhPZjtcblxudmFyIGNsYXNzMnR5cGUgPSB7fTtcblxudmFyIHRvU3RyaW5nID0gY2xhc3MydHlwZS50b1N0cmluZztcblxudmFyIGhhc093biA9IGNsYXNzMnR5cGUuaGFzT3duUHJvcGVydHk7XG5cbnZhciBzdXBwb3J0ID0ge307XG5cblxuXG52YXJcblx0Ly8gVXNlIHRoZSBjb3JyZWN0IGRvY3VtZW50IGFjY29yZGluZ2x5IHdpdGggd2luZG93IGFyZ3VtZW50IChzYW5kYm94KVxuXHRkb2N1bWVudCA9IHdpbmRvdy5kb2N1bWVudCxcblxuXHR2ZXJzaW9uID0gXCIyLjEuNFwiLFxuXG5cdC8vI
9673ERlZmluZSBhIGxvY2FsIGNvcHkgb2YgalF1ZXJ5XG5cdGpRdWVyeSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblx0XHQvLyBUaGUgalF1ZXJ5IG9iamVjdCBpcyBhY3R1YWxseSBqdXN0IHRoZSBpbml0IGNvbnN0cnVjdG9yICdlbmhhbmNlZCdcblx0XHQvLyBOZWVkIGluaXQgaWYgalF1ZXJ5IGlzIGNhbGxlZCAoanVzdCBhbGxvdyBlcnJvciB0byBiZSB0aHJvd24gaWYgbm90IGluY2x1ZGVkKVxuXHRcdHJldHVybiBuZXcgalF1ZXJ5LmZuLmluaXQoIHNlbGVjdG9yLCBjb250ZXh0ICk7XG5cdH0sXG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LjFcblx0Ly8gTWFrZSBzdXJlIHdlIHRyaW0gQk9NIGFuZCBOQlNQXG5cdHJ0cmltID0gL15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nLFxuXG5cdC8vIE1hdGNoZXMgZGFzaGVkIHN0cmluZyBmb3IgY2FtZWxpemluZ1xuXHRybXNQcmVmaXggPSAvXi1tcy0vLFxuXHRyZGFzaEFscGhhID0gLy0oW1xcZGEtel0pL2dpLFxuXG5cdC8vIFVzZWQgYnkgalF1ZXJ5LmNhbWVsQ2FzZSBhcyBjYWxsYmFjayB0byByZXBsYWNlKClcblx0ZmNhbWVsQ2FzZSA9IGZ1bmN0aW9uKCBhbGwsIGxldHRlciApIHtcblx0XHRyZXR1cm4gbGV0dGVyLnRvVXBwZXJDYXNlKCk7XG5cdH07XG5cbmpRdWVyeS5mbiA9IGpRdWVyeS5wcm90b3R5cGUgPSB7XG5cdC8vIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgalF1ZXJ5IGJlaW5nIHVzZWRcblx0anF1ZXJ5OiB2ZXJzaW9uLFxuXG5cdGNvbnN0cnVjdG9yOiBqUXVlcnksXG5cblx0Ly8gU3RhcnQgd2l0aCBhbiBlbXB0eSBzZWxlY3RvclxuXHRzZWxlY3RvcjogXCJcIixcblxuXHQvLyBUaGUgZGVmYXVsdCBsZW5ndGggb2YgYSBqUXVlcnkgb2JqZWN0IGlzIDBcblx0bGVuZ3RoOiAwLFxuXG5cdHRvQXJyYXk6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBzbGljZS5jYWxsKCB0aGlzICk7XG5cdH0sXG5cblx0Ly8gR2V0IHRoZSBOdGggZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNldCBPUlxuXHQvLyBHZXQgdGhlIHdob2xlIG1hdGNoZWQgZWxlbWVudCBzZXQgYXMgYSBjbGVhbiBhcnJheVxuXHRnZXQ6IGZ1bmN0aW9uKCBudW0gKSB7XG5cdFx0cmV0dXJuIG51bSAhPSBudWxsID9cblxuXHRcdFx0Ly8gUmV0dXJuIGp1c3QgdGhlIG9uZSBlbGVtZW50IGZyb20gdGhlIHNldFxuXHRcdFx0KCBudW0gPCAwID8gdGhpc1sgbnVtICsgdGhpcy5sZW5ndGggXSA6IHRoaXNbIG51bSBdICkgOlxuXG5cdFx0XHQvLyBSZXR1cm4gYWxsIHRoZSBlbGVtZW50cyBpbiBhIGNsZWFuIGFycmF5XG5cdFx0XHRzbGljZS5jYWxsKCB0aGlzICk7XG5cdH0sXG5cblx0Ly8gVGFrZSBhbiBhcnJheSBvZiBlbGVtZW50cyBhbmQgcHVzaCBpdCBvbnRvIHRoZSBzdGFja1xuXHQvLyAocmV0dXJuaW5nIHRoZSBuZXcgbWF0Y2hlZCBlbGVtZW50IHNldClcblx0cHVzaFN0YWNrOiBmdW5jdGlvbiggZWxlbXMgKSB7XG5cblx0XHQvLyBCdWlsZCBhIG5ldyBqUXVlcnkgbWF0Y2hlZCBlbGVtZW50IHNldFxuXHRcdHZhciByZXQgPSBqUXVlcnkubWVyZ2UoIHRoaXMuY29uc3RydWN0b3IoKSwgZWxlbXMgKTtcblxuXHRcdC8vIEFkZCB0aGUgb2xkIG9iamVjdCBvbnRvIHRoZSBzdGFjayAoYXMgYSByZWZlcmVuY2UpXG5cdFx0cmV0LnByZXZPYmplY3QgPSB0aGlzO1xuXHRcdHJldC5jb250ZXh0ID0gdGhpcy5jb250ZXh0O1xuXG5cdFx0Ly8gUmV0dXJuIHRoZSBuZXdseS1mb3JtZWQgZWxlbWVudCBzZXRcblx0XHRyZXR1cm4gcmV0O1xuXHR9LFxuXG5cdC8vIEV4ZWN1dGUgYSBjYWxsYmFjayBmb3IgZXZlcnkgZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBzZXQuXG5cdC8vIChZb3UgY2FuIHNlZWQgdGhlIGFyZ3VtZW50cyB3aXRoIGFuIGFycmF5IG9mIGFyZ3MsIGJ1dCB0aGlzIGlzXG5cdC8vIG9ubHkgdXNlZCBpbnRlcm5hbGx5Lilcblx0ZWFjaDogZnVuY3Rpb24oIGNhbGxiYWNrLCBhcmdzICkge1xuXHRcdHJldHVybiBqUXVlcnkuZWFjaCggdGhpcywgY2FsbGJhY2ssIGFyZ3MgKTtcblx0fSxcblxuXHRtYXA6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS5tYXAodGhpcywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7XG5cdFx0XHRyZXR1cm4gY2FsbGJhY2suY2FsbCggZWxlbSwgaSwgZWxlbSApO1xuXHRcdH0pKTtcblx0fSxcblxuXHRzbGljZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBzbGljZS5hcHBseSggdGhpcywgYXJndW1lbnRzICkgKTtcblx0fSxcblxuXHRmaXJzdDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZXEoIDAgKTtcblx0fSxcblxuXHRsYXN0OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5lcSggLTEgKTtcblx0fSxcblxuXHRlcTogZnVuY3Rpb24oIGkgKSB7XG5cdFx0dmFyIGxlbiA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0aiA9ICtpICsgKCBpIDwgMCA/IGxlbiA6IDAgKTtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGogPj0gMCAmJiBqIDwgbGVuID8gWyB0aGlzW2pdIF0gOiBbXSApO1xuXHR9LFxuXG5cdGVuZDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucHJldk9iamVjdCB8fCB0aGlzLmNvbnN0cnVjdG9yKG51bGwpO1xuXHR9LFxuXG5cdC8vIEZvciBpbnRlcm5hbCB1c2Ugb25seS5cblx0Ly8gQmVoYXZlcyBsaWtlIGFuIEFycmF5J3MgbWV0aG9kLCBub3QgbGlrZSBhIGpRdWVyeSBtZXRob2QuXG5cdHB1c2g6IHB1c2gsXG5cdHNvcnQ6IGFyci5zb3J0LFxuXHRzcGxpY2U6IGFyci5zcGxpY2Vcbn07XG5cbmpRdWVyeS5leHRlbmQgPSBqUXVlcnkuZm4uZXh0ZW5kID0gZnVuY3Rpb24oKSB7XG5cdHZhciBvcHRpb25zLCBuYW1lLCBzcmMsIGNvcHksIGNvcHlJc0FycmF5LCBjbG9uZSxcblx0XHR0YXJnZXQgPSBhcmd1bWVudHNbMF0gfHwge30sXG5cdFx0aSA9IDEsXG5cdFx0bGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcblx0XHRkZWVwID0gZmFsc2U7XG5cblx0Ly8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlvblxuXHRpZiAoIHR5cGVvZiB0YXJnZXQgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdGRlZXAgPSB0YXJnZXQ7XG5cblx0XHQvLyBTa2lwIHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0XG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWyBpIF0gfHwge307XG5cdFx0aSsrO1xuXHR9XG5cblx0Ly8gSGFuZGxlIGNhc2Ugd2hlbiB0YXJnZXQgaXMgYSBzdHJpbmcgb3Igc29tZXRoaW5nIChwb3NzaWJsZSBpbiBkZWVwIGNvcHkpXG5cdGlmICggdHlwZW9mIHRhcmdldCAhPT0gXCJvYmplY3RcIiAmJiAhalF1ZXJ5LmlzRnVuY3Rpb24odGFyZ2V0KSApIHtcblx0XHR0YXJnZXQgPSB7fTtcblx0fVxuXG5cdC8vIEV4dGVuZCBqUXVlcnkgaXRzZWxmIGlmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHBhc3NlZFxuXHRpZiAoIGkgPT09IGxlbmd0aCApIHtcblx0XHR0YXJnZXQgPSB0aGlzO1xuXHRcdGktLTtcblx0fVxuXG5cdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdC8vIE9ubHkgZGVhbCB3aXRoIG5vbi1udWxsL3VuZGVmaW5lZCB2YWx1ZXNcblx0XHRpZiAoIChvcHRpb25zID0gYXJndW1lbnRzWyBpIF0pICE9IG51bGwgKSB7XG5cdFx0XHQvLyBFeHRlbmQgdGhlIGJhc2Ugb2JqZWN0XG5cdFx0XHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0XHRcdHNyYyA9IHRhcmdldFsgbmFtZSBdO1xuXHRcdFx0XHRjb3B5ID0gb3B0aW9uc1sgbmFtZSBdO1xuXG5cdFx0XHRcdC8vIFByZXZlbnQgbmV2ZXItZW5kaW5nIGxvb3Bcblx0XHRcdFx0aWYgKCB0YXJnZXQgPT09IGNvcHkgKSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZWN1cnNlIGlmIHdlJ3JlIG1lcmdpbmcgcGxhaW4gb2JqZWN0cyBvciBhcnJheXNcblx0XHRcdFx0aWYgKCBkZWVwICYmIGNvcHkgJiYgKCBqUXVlcnkuaXNQbGFpbk9iamVjdChjb3B5KSB8fCAoY29weUlzQXJyYXkgPSBqUXVlcnkuaXNBcnJheShjb3B5KSkgKSApIHtcblx0XHRcdFx0XHRpZiAoIGNvcHlJc0FycmF5ICkge1xuXHRcdFx0XHRcdFx0Y29weUlzQXJyYXkgPSBmYWxzZTtcblx0XHRcdFx0XHRcdGNsb25lID0gc3JjICYmIGpRdWVyeS5pc0FycmF
96735KHNyYykgPyBzcmMgOiBbXTtcblxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjbG9uZSA9IHNyYyAmJiBqUXVlcnkuaXNQbGFpbk9iamVjdChzcmMpID8gc3JjIDoge307XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gTmV2ZXIgbW92ZSBvcmlnaW5hbCBvYmplY3RzLCBjbG9uZSB0aGVtXG5cdFx0XHRcdFx0dGFyZ2V0WyBuYW1lIF0gPSBqUXVlcnkuZXh0ZW5kKCBkZWVwLCBjbG9uZSwgY29weSApO1xuXG5cdFx0XHRcdC8vIERvbid0IGJyaW5nIGluIHVuZGVmaW5lZCB2YWx1ZXNcblx0XHRcdFx0fSBlbHNlIGlmICggY29weSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHRhcmdldFsgbmFtZSBdID0gY29weTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybiB0aGUgbW9kaWZpZWQgb2JqZWN0XG5cdHJldHVybiB0YXJnZXQ7XG59O1xuXG5qUXVlcnkuZXh0ZW5kKHtcblx0Ly8gVW5pcXVlIGZvciBlYWNoIGNvcHkgb2YgalF1ZXJ5IG9uIHRoZSBwYWdlXG5cdGV4cGFuZG86IFwialF1ZXJ5XCIgKyAoIHZlcnNpb24gKyBNYXRoLnJhbmRvbSgpICkucmVwbGFjZSggL1xcRC9nLCBcIlwiICksXG5cblx0Ly8gQXNzdW1lIGpRdWVyeSBpcyByZWFkeSB3aXRob3V0IHRoZSByZWFkeSBtb2R1bGVcblx0aXNSZWFkeTogdHJ1ZSxcblxuXHRlcnJvcjogZnVuY3Rpb24oIG1zZyApIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoIG1zZyApO1xuXHR9LFxuXG5cdG5vb3A6IGZ1bmN0aW9uKCkge30sXG5cblx0aXNGdW5jdGlvbjogZnVuY3Rpb24oIG9iaiApIHtcblx0XHRyZXR1cm4galF1ZXJ5LnR5cGUob2JqKSA9PT0gXCJmdW5jdGlvblwiO1xuXHR9LFxuXG5cdGlzQXJyYXk6IEFycmF5LmlzQXJyYXksXG5cblx0aXNXaW5kb3c6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0cmV0dXJuIG9iaiAhPSBudWxsICYmIG9iaiA9PT0gb2JqLndpbmRvdztcblx0fSxcblxuXHRpc051bWVyaWM6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0Ly8gcGFyc2VGbG9hdCBOYU5zIG51bWVyaWMtY2FzdCBmYWxzZSBwb3NpdGl2ZXMgKG51bGx8dHJ1ZXxmYWxzZXxcIlwiKVxuXHRcdC8vIC4uLmJ1dCBtaXNpbnRlcnByZXRzIGxlYWRpbmctbnVtYmVyIHN0cmluZ3MsIHBhcnRpY3VsYXJseSBoZXggbGl0ZXJhbHMgKFwiMHguLi5cIilcblx0XHQvLyBzdWJ0cmFjdGlvbiBmb3JjZXMgaW5maW5pdGllcyB0byBOYU5cblx0XHQvLyBhZGRpbmcgMSBjb3JyZWN0cyBsb3NzIG9mIHByZWNpc2lvbiBmcm9tIHBhcnNlRmxvYXQgKCMxNTEwMClcblx0XHRyZXR1cm4gIWpRdWVyeS5pc0FycmF5KCBvYmogKSAmJiAob2JqIC0gcGFyc2VGbG9hdCggb2JqICkgKyAxKSA+PSAwO1xuXHR9LFxuXG5cdGlzUGxhaW5PYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0Ly8gTm90IHBsYWluIG9iamVjdHM6XG5cdFx0Ly8gLSBBbnkgb2JqZWN0IG9yIHZhbHVlIHdob3NlIGludGVybmFsIFtbQ2xhc3NdXSBwcm9wZXJ0eSBpcyBub3QgXCJbb2JqZWN0IE9iamVjdF1cIlxuXHRcdC8vIC0gRE9NIG5vZGVzXG5cdFx0Ly8gLSB3aW5kb3dcblx0XHRpZiAoIGpRdWVyeS50eXBlKCBvYmogKSAhPT0gXCJvYmplY3RcIiB8fCBvYmoubm9kZVR5cGUgfHwgalF1ZXJ5LmlzV2luZG93KCBvYmogKSApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRpZiAoIG9iai5jb25zdHJ1Y3RvciAmJlxuXHRcdFx0XHQhaGFzT3duLmNhbGwoIG9iai5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsIFwiaXNQcm90b3R5cGVPZlwiICkgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlIGZ1bmN0aW9uIGhhc24ndCByZXR1cm5lZCBhbHJlYWR5LCB3ZSdyZSBjb25maWRlbnQgdGhhdFxuXHRcdC8vIHxvYmp8IGlzIGEgcGxhaW4gb2JqZWN0LCBjcmVhdGVkIGJ5IHt9IG9yIGNvbnN0cnVjdGVkIHdpdGggbmV3IE9iamVjdFxuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXG5cdGlzRW1wdHlPYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0dmFyIG5hbWU7XG5cdFx0Zm9yICggbmFtZSBpbiBvYmogKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXG5cdHR5cGU6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0aWYgKCBvYmogPT0gbnVsbCApIHtcblx0XHRcdHJldHVybiBvYmogKyBcIlwiO1xuXHRcdH1cblx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkPDQuMCwgaU9TPDYgKGZ1bmN0aW9uaXNoIFJlZ0V4cClcblx0XHRyZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2Ygb2JqID09PSBcImZ1bmN0aW9uXCIgP1xuXHRcdFx0Y2xhc3MydHlwZVsgdG9TdHJpbmcuY2FsbChvYmopIF0gfHwgXCJvYmplY3RcIiA6XG5cdFx0XHR0eXBlb2Ygb2JqO1xuXHR9LFxuXG5cdC8vIEV2YWx1YXRlcyBhIHNjcmlwdCBpbiBhIGdsb2JhbCBjb250ZXh0XG5cdGdsb2JhbEV2YWw6IGZ1bmN0aW9uKCBjb2RlICkge1xuXHRcdHZhciBzY3JpcHQsXG5cdFx0XHRpbmRpcmVjdCA9IGV2YWw7XG5cblx0XHRjb2RlID0galF1ZXJ5LnRyaW0oIGNvZGUgKTtcblxuXHRcdGlmICggY29kZSApIHtcblx0XHRcdC8vIElmIHRoZSBjb2RlIGluY2x1ZGVzIGEgdmFsaWQsIHByb2xvZ3VlIHBvc2l0aW9uXG5cdFx0XHQvLyBzdHJpY3QgbW9kZSBwcmFnbWEsIGV4ZWN1dGUgY29kZSBieSBpbmplY3RpbmcgYVxuXHRcdFx0Ly8gc2NyaXB0IHRhZyBpbnRvIHRoZSBkb2N1bWVudC5cblx0XHRcdGlmICggY29kZS5pbmRleE9mKFwidXNlIHN0cmljdFwiKSA9PT0gMSApIHtcblx0XHRcdFx0c2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcblx0XHRcdFx0c2NyaXB0LnRleHQgPSBjb2RlO1xuXHRcdFx0XHRkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKCBzY3JpcHQgKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBzY3JpcHQgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBPdGhlcndpc2UsIGF2b2lkIHRoZSBET00gbm9kZSBjcmVhdGlvbiwgaW5zZXJ0aW9uXG5cdFx0XHQvLyBhbmQgcmVtb3ZhbCBieSB1c2luZyBhbiBpbmRpcmVjdCBnbG9iYWwgZXZhbFxuXHRcdFx0XHRpbmRpcmVjdCggY29kZSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHQvLyBDb252ZXJ0IGRhc2hlZCB0byBjYW1lbENhc2U7IHVzZWQgYnkgdGhlIGNzcyBhbmQgZGF0YSBtb2R1bGVzXG5cdC8vIFN1cHBvcnQ6IElFOS0xMStcblx0Ly8gTWljcm9zb2Z0IGZvcmdvdCB0byBodW1wIHRoZWlyIHZlbmRvciBwcmVmaXggKCM5NTcyKVxuXHRjYW1lbENhc2U6IGZ1bmN0aW9uKCBzdHJpbmcgKSB7XG5cdFx0cmV0dXJuIHN0cmluZy5yZXBsYWNlKCBybXNQcmVmaXgsIFwibXMtXCIgKS5yZXBsYWNlKCByZGFzaEFscGhhLCBmY2FtZWxDYXNlICk7XG5cdH0sXG5cblx0bm9kZU5hbWU6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHRcdHJldHVybi
9673BlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXHR9LFxuXG5cdC8vIGFyZ3MgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHlcblx0ZWFjaDogZnVuY3Rpb24oIG9iaiwgY2FsbGJhY2ssIGFyZ3MgKSB7XG5cdFx0dmFyIHZhbHVlLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsZW5ndGggPSBvYmoubGVuZ3RoLFxuXHRcdFx0aXNBcnJheSA9IGlzQXJyYXlsaWtlKCBvYmogKTtcblxuXHRcdGlmICggYXJncyApIHtcblx0XHRcdGlmICggaXNBcnJheSApIHtcblx0XHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjay5hcHBseSggb2JqWyBpIF0sIGFyZ3MgKTtcblxuXHRcdFx0XHRcdGlmICggdmFsdWUgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmb3IgKCBpIGluIG9iaiApIHtcblx0XHRcdFx0XHR2YWx1ZSA9IGNhbGxiYWNrLmFwcGx5KCBvYmpbIGkgXSwgYXJncyApO1xuXG5cdFx0XHRcdFx0aWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdC8vIEEgc3BlY2lhbCwgZmFzdCwgY2FzZSBmb3IgdGhlIG1vc3QgY29tbW9uIHVzZSBvZiBlYWNoXG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICggaXNBcnJheSApIHtcblx0XHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjay5jYWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKTtcblxuXHRcdFx0XHRcdGlmICggdmFsdWUgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmb3IgKCBpIGluIG9iaiApIHtcblx0XHRcdFx0XHR2YWx1ZSA9IGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApO1xuXG5cdFx0XHRcdFx0aWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gb2JqO1xuXHR9LFxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQ8NC4xXG5cdHRyaW06IGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRcdHJldHVybiB0ZXh0ID09IG51bGwgP1xuXHRcdFx0XCJcIiA6XG5cdFx0XHQoIHRleHQgKyBcIlwiICkucmVwbGFjZSggcnRyaW0sIFwiXCIgKTtcblx0fSxcblxuXHQvLyByZXN1bHRzIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5XG5cdG1ha2VBcnJheTogZnVuY3Rpb24oIGFyciwgcmVzdWx0cyApIHtcblx0XHR2YXIgcmV0ID0gcmVzdWx0cyB8fCBbXTtcblxuXHRcdGlmICggYXJyICE9IG51bGwgKSB7XG5cdFx0XHRpZiAoIGlzQXJyYXlsaWtlKCBPYmplY3QoYXJyKSApICkge1xuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIHJldCxcblx0XHRcdFx0XHR0eXBlb2YgYXJyID09PSBcInN0cmluZ1wiID9cblx0XHRcdFx0XHRbIGFyciBdIDogYXJyXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwdXNoLmNhbGwoIHJldCwgYXJyICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJldDtcblx0fSxcblxuXHRpbkFycmF5OiBmdW5jdGlvbiggZWxlbSwgYXJyLCBpICkge1xuXHRcdHJldHVybiBhcnIgPT0gbnVsbCA/IC0xIDogaW5kZXhPZi5jYWxsKCBhcnIsIGVsZW0sIGkgKTtcblx0fSxcblxuXHRtZXJnZTogZnVuY3Rpb24oIGZpcnN0LCBzZWNvbmQgKSB7XG5cdFx0dmFyIGxlbiA9ICtzZWNvbmQubGVuZ3RoLFxuXHRcdFx0aiA9IDAsXG5cdFx0XHRpID0gZmlyc3QubGVuZ3RoO1xuXG5cdFx0Zm9yICggOyBqIDwgbGVuOyBqKysgKSB7XG5cdFx0XHRmaXJzdFsgaSsrIF0gPSBzZWNvbmRbIGogXTtcblx0XHR9XG5cblx0XHRmaXJzdC5sZW5ndGggPSBpO1xuXG5cdFx0cmV0dXJuIGZpcnN0O1xuXHR9LFxuXG5cdGdyZXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGludmVydCApIHtcblx0XHR2YXIgY2FsbGJhY2tJbnZlcnNlLFxuXHRcdFx0bWF0Y2hlcyA9IFtdLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsZW5ndGggPSBlbGVtcy5sZW5ndGgsXG5cdFx0XHRjYWxsYmFja0V4cGVjdCA9ICFpbnZlcnQ7XG5cblx0XHQvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgb25seSBzYXZpbmcgdGhlIGl0ZW1zXG5cdFx0Ly8gdGhhdCBwYXNzIHRoZSB2YWxpZGF0b3IgZnVuY3Rpb25cblx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdGNhbGxiYWNrSW52ZXJzZSA9ICFjYWxsYmFjayggZWxlbXNbIGkgXSwgaSApO1xuXHRcdFx0aWYgKCBjYWxsYmFja0ludmVyc2UgIT09IGNhbGxiYWNrRXhwZWN0ICkge1xuXHRcdFx0XHRtYXRjaGVzLnB1c2goIGVsZW1zWyBpIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gbWF0Y2hlcztcblx0fSxcblxuXHQvLyBhcmcgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHlcblx0bWFwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBhcmcgKSB7XG5cdFx0dmFyIHZhbHVlLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsZW5ndGggPSBlbGVtcy5sZW5ndGgsXG5cdFx0XHRpc0FycmF5ID0gaXNBcnJheWxpa2UoIGVsZW1zICksXG5cdFx0XHRyZXQgPSBbXTtcblxuXHRcdC8vIEdvIHRocm91Z2ggdGhlIGFycmF5LCB0cmFuc2xhdGluZyBlYWNoIG9mIHRoZSBpdGVtcyB0byB0aGVpciBuZXcgdmFsdWVzXG5cdFx0aWYgKCBpc0FycmF
96735ICkge1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApO1xuXG5cdFx0XHRcdGlmICggdmFsdWUgIT0gbnVsbCApIHtcblx0XHRcdFx0XHRyZXQucHVzaCggdmFsdWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0Ly8gR28gdGhyb3VnaCBldmVyeSBrZXkgb24gdGhlIG9iamVjdCxcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yICggaSBpbiBlbGVtcyApIHtcblx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7XG5cblx0XHRcdFx0aWYgKCB2YWx1ZSAhPSBudWxsICkge1xuXHRcdFx0XHRcdHJldC5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRmxhdHRlbiBhbnkgbmVzdGVkIGFycmF5c1xuXHRcdHJldHVybiBjb25jYXQuYXBwbHkoIFtdLCByZXQgKTtcblx0fSxcblxuXHQvLyBBIGdsb2JhbCBHVUlEIGNvdW50ZXIgZm9yIG9iamVjdHNcblx0Z3VpZDogMSxcblxuXHQvLyBCaW5kIGEgZnVuY3Rpb24gdG8gYSBjb250ZXh0LCBvcHRpb25hbGx5IHBhcnRpYWxseSBhcHBseWluZyBhbnlcblx0Ly8gYXJndW1lbnRzLlxuXHRwcm94eTogZnVuY3Rpb24oIGZuLCBjb250ZXh0ICkge1xuXHRcdHZhciB0bXAsIGFyZ3MsIHByb3h5O1xuXG5cdFx0aWYgKCB0eXBlb2YgY29udGV4dCA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHRtcCA9IGZuWyBjb250ZXh0IF07XG5cdFx0XHRjb250ZXh0ID0gZm47XG5cdFx0XHRmbiA9IHRtcDtcblx0XHR9XG5cblx0XHQvLyBRdWljayBjaGVjayB0byBkZXRlcm1pbmUgaWYgdGFyZ2V0IGlzIGNhbGxhYmxlLCBpbiB0aGUgc3BlY1xuXHRcdC8vIHRoaXMgdGhyb3dzIGEgVHlwZUVycm9yLCBidXQgd2Ugd2lsbCBqdXN0IHJldHVybiB1bmRlZmluZWQuXG5cdFx0aWYgKCAhalF1ZXJ5LmlzRnVuY3Rpb24oIGZuICkgKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdC8vIFNpbXVsYXRlZCBiaW5kXG5cdFx0YXJncyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cywgMiApO1xuXHRcdHByb3h5ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gZm4uYXBwbHkoIGNvbnRleHQgfHwgdGhpcywgYXJncy5jb25jYXQoIHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApICkgKTtcblx0XHR9O1xuXG5cdFx0Ly8gU2V0IHRoZSBndWlkIG9mIHVuaXF1ZSBoYW5kbGVyIHRvIHRoZSBzYW1lIG9mIG9yaWdpbmFsIGhhbmRsZXIsIHNvIGl0IGNhbiBiZSByZW1vdmVkXG5cdFx0cHJveHkuZ3VpZCA9IGZuLmd1aWQgPSBmbi5ndWlkIHx8IGpRdWVyeS5ndWlkKys7XG5cblx0XHRyZXR1cm4gcHJveHk7XG5cdH0sXG5cblx0bm93OiBEYXRlLm5vdyxcblxuXHQvLyBqUXVlcnkuc3VwcG9ydCBpcyBub3QgdXNlZCBpbiBDb3JlIGJ1dCBvdGhlciBwcm9qZWN0cyBhdHRhY2ggdGhlaXJcblx0Ly8gcHJvcGVydGllcyB0byBpdCBzbyBpdCBuZWVkcyB0byBleGlzdC5cblx0c3VwcG9ydDogc3VwcG9ydFxufSk7XG5cbi8vIFBvcHVsYXRlIHRoZSBjbGFzczJ0eXBlIG1hcFxualF1ZXJ5LmVhY2goXCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yXCIuc3BsaXQoXCIgXCIpLCBmdW5jdGlvbihpLCBuYW1lKSB7XG5cdGNsYXNzMnR5cGVbIFwiW29iamVjdCBcIiArIG5hbWUgKyBcIl1cIiBdID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xufSk7XG5cbmZ1bmN0aW9uIGlzQXJyYXlsaWtlKCBvYmogKSB7XG5cblx0Ly8gU3VwcG9ydDogaU9TIDguMiAobm90IHJlcHJvZHVjaWJsZSBpbiBzaW11bGF0b3IpXG5cdC8vIGBpbmAgY2hlY2sgdXNlZCB0byBwcmV2ZW50IEpJVCBlcnJvciAoZ2gtMjE0NSlcblx0Ly8gaGFzT3duIGlzbid0IHVzZWQgaGVyZSBkdWUgdG8gZmFsc2UgbmVnYXRpdmVzXG5cdC8vIHJlZ2FyZGluZyBOb2RlbGlzdCBsZW5ndGggaW4gSUVcblx0dmFyIGxlbmd0aCA9IFwibGVuZ3RoXCIgaW4gb2JqICYmIG9iai5sZW5ndGgsXG5cdFx0dHlwZSA9IGpRdWVyeS50eXBlKCBvYmogKTtcblxuXHRpZiAoIHR5cGUgPT09IFwiZnVuY3Rpb25cIiB8fCBqUXVlcnkuaXNXaW5kb3coIG9iaiApICkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGlmICggb2JqLm5vZGVUeXBlID09PSAxICYmIGxlbmd0aCApIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdHJldHVybiB0eXBlID09PSBcImFycmF5XCIgfHwgbGVuZ3RoID09PSAwIHx8XG5cdFx0dHlwZW9mIGxlbmd0aCA9PT0gXCJudW1iZXJcIiAmJiBsZW5ndGggPiAwICYmICggbGVuZ3RoIC0gMSApIGluIG9iajtcbn1cbnZhciBTaXp6bGUgPVxuLyohXG4gKiBTaXp6bGUgQ1NTIFNlbGVjdG9yIEVuZ2luZSB2Mi4yLjAtcHJlXG4gKiBodHRwOi8vc2l6emxlanMuY29tL1xuICpcbiAqIENvcHlyaWdodCAyMDA4LCAyMDE0IGpRdWVyeSBGb3VuZGF0aW9uLCBJbmMuIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxuICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZVxuICpcbiAqIERhdGU6IDIwMTQtMTItMTZcbiAqL1xuKGZ1bmN0aW9uKCB3aW5kb3cgKSB7XG5cbnZhciBpLFxuXHRzdXBwb3J0LFxuXHRFeHByLFxuXHRnZXRUZXh0LFxuXHRpc1hNTCxcblx0dG9rZW5pemUsXG5cdGNvbXBpbGUsXG5cdHNlbGVjdCxcblx0b3V0ZXJtb3N0Q29udGV4dCxcblx0c29ydElucHV0LFxuXHRoYXNEdXBsaWNhdGUsXG5cblx0Ly8gTG9jYWwgZG9jdW1lbnQgdmFyc1xuXHRzZXREb2N1bWVudCxcblx0ZG9jdW1lbnQsXG5cdGRvY0VsZW0sXG5cdGRvY3VtZW50SXNIVE1MLFxuXHRyYnVnZ3lRU0EsXG5cdHJidWdneU1hdGNoZXMsXG5cdG1hdGNoZXMsXG5cdGNvbnRhaW5zLFxuXG5cdC8vIEluc3RhbmNlLXNwZWNpZmljIGRhdGFcblx0ZXhwYW5kbyA9IFwic2l6emxlXCIgKyAxICogbmV3IERhdGUoKSxcblx0cHJlZmVycmVkRG9jID0gd2luZG93LmRvY3VtZW50LFxuXHRkaXJydW5zID0gMCxcblx0ZG9uZSA9IDAsXG5cdGNsYXNzQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHR0b2tlbkNhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0Y29tcGlsZXJDYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdHNvcnRPcmRlciA9IGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiAwO1xuXHR9LFxuXG5cdC8vIEdlbmVyYWwtcHVycG9zZSBjb25zdGFudHNcblx0TUFYX05FR0FUSVZFID0gMSA8PCAzMSxcblxuXHQvLyBJbnN0YW5jZSBtZXRob2RzXG5cdGhhc093biA9ICh7fSkuaGFzT3duUHJvcGVydHksXG5cdGFyciA9IFtdLFxuXHRwb3AgPSBhcnIucG9wLFxuXHRwdXNoX25hdGl2ZSA9IGFyci5wdXNoLFxuXHRwdXNoID0gYXJyLnB1c2gsXG5cdHNsaWNlID0gYXJyLnNsaWNlLFxuXHQvLyBVc2UgYSBzdHJpcHBlZC1kb3duIGluZGV4T2YgYXMgaXQncyBmYXN0ZXIgdGhhbiBuYXRpdmVcblx0Ly8gaHR0cDovL2pzcGVyZi5jb20vdGhvci1pbmRleG9mLXZzLWZvci81XG5cdGluZGV4T2YgPSBmdW5jdGlvbiggbGlzdCwgZWxlbSApIHtcblx0XHR2YXIgaSA9IDAsXG5cdFx0XHRsZW4gPSBsaXN0Lmxlbmd0aDtcblx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdGlmICggbGlzdFtpXSA9PT0gZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuIGk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiAtMTtcblx0fSxcblxuXHRib29sZWFucyA9IFwiY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWRcIixcblxuXHQvLyBSZWd1bGFyIGV4cHJlc3Npb25zXG5cblx0Ly8gV2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc2VsZWN0b3JzLyN3aGl0ZXNwYWNlXG5cdHdoaXRlc3BhY2UgPSBcIltcXFxceDIwXFxcXHRcXFxcclxcXFxuXFxcXGZdXCIsXG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc3ludGF4LyNjaGFyYWN0ZXJzXG5cdGNoYXJhY3RlckVuY29
9673kaW5nID0gXCIoPzpcXFxcXFxcXC58W1xcXFx3LV18W15cXFxceDAwLVxcXFx4YTBdKStcIixcblxuXHQvLyBMb29zZWx5IG1vZGVsZWQgb24gQ1NTIGlkZW50aWZpZXIgY2hhcmFjdGVyc1xuXHQvLyBBbiB1bnF1b3RlZCB2YWx1ZSBzaG91bGQgYmUgYSBDU1MgaWRlbnRpZmllciBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXNlbGVjdG9ycy8jYXR0cmlidXRlLXNlbGVjdG9yc1xuXHQvLyBQcm9wZXIgc3ludGF4OiBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjdmFsdWUtZGVmLWlkZW50aWZpZXJcblx0aWRlbnRpZmllciA9IGNoYXJhY3RlckVuY29kaW5nLnJlcGxhY2UoIFwid1wiLCBcIncjXCIgKSxcblxuXHQvLyBBdHRyaWJ1dGUgc2VsZWN0b3JzOiBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2F0dHJpYnV0ZS1zZWxlY3RvcnNcblx0YXR0cmlidXRlcyA9IFwiXFxcXFtcIiArIHdoaXRlc3BhY2UgKyBcIiooXCIgKyBjaGFyYWN0ZXJFbmNvZGluZyArIFwiKSg/OlwiICsgd2hpdGVzcGFjZSArXG5cdFx0Ly8gT3BlcmF0b3IgKGNhcHR1cmUgMilcblx0XHRcIiooWypeJHwhfl0/PSlcIiArIHdoaXRlc3BhY2UgK1xuXHRcdC8vIFwiQXR0cmlidXRlIHZhbHVlcyBtdXN0IGJlIENTUyBpZGVudGlmaWVycyBbY2FwdHVyZSA1XSBvciBzdHJpbmdzIFtjYXB0dXJlIDMgb3IgY2FwdHVyZSA0XVwiXG5cdFx0XCIqKD86JygoPzpcXFxcXFxcXC58W15cXFxcXFxcXCddKSopJ3xcXFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcXFxcIl0pKilcXFwifChcIiArIGlkZW50aWZpZXIgKyBcIikpfClcIiArIHdoaXRlc3BhY2UgK1xuXHRcdFwiKlxcXFxdXCIsXG5cblx0cHNldWRvcyA9IFwiOihcIiArIGNoYXJhY3RlckVuY29kaW5nICsgXCIpKD86XFxcXCgoXCIgK1xuXHRcdC8vIFRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHNlbGVjdG9ycyBuZWVkaW5nIHRva2VuaXplIGluIHRoZSBwcmVGaWx0ZXIsIHByZWZlciBhcmd1bWVudHM6XG5cdFx0Ly8gMS4gcXVvdGVkIChjYXB0dXJlIDM7IGNhcHR1cmUgNCBvciBjYXB0dXJlIDUpXG5cdFx0XCIoJygoPzpcXFxcXFxcXC58W15cXFxcXFxcXCddKSopJ3xcXFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcXFxcIl0pKilcXFwiKXxcIiArXG5cdFx0Ly8gMi4gc2ltcGxlIChjYXB0dXJlIDYpXG5cdFx0XCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFwoKVtcXFxcXV18XCIgKyBhdHRyaWJ1dGVzICsgXCIpKil8XCIgK1xuXHRcdC8vIDMuIGFueXRoaW5nIGVsc2UgKGNhcHR1cmUgMilcblx0XHRcIi4qXCIgK1xuXHRcdFwiKVxcXFwpfClcIixcblxuXHQvLyBMZWFkaW5nIGFuZCBub24tZXNjYXBlZCB0cmFpbGluZyB3aGl0ZXNwYWNlLCBjYXB0dXJpbmcgc29tZSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHByZWNlZGluZyB0aGUgbGF0dGVyXG5cdHJ3aGl0ZXNwYWNlID0gbmV3IFJlZ0V4cCggd2hpdGVzcGFjZSArIFwiK1wiLCBcImdcIiApLFxuXHRydHJpbSA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiK3woKD86XnxbXlxcXFxcXFxcXSkoPzpcXFxcXFxcXC4pKilcIiArIHdoaXRlc3BhY2UgKyBcIiskXCIsIFwiZ1wiICksXG5cblx0cmNvbW1hID0gbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIqLFwiICsgd2hpdGVzcGFjZSArIFwiKlwiICksXG5cdHJjb21iaW5hdG9ycyA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiKihbPit+XXxcIiArIHdoaXRlc3BhY2UgKyBcIilcIiArIHdoaXRlc3BhY2UgKyBcIipcIiApLFxuXG5cdHJhdHRyaWJ1dGVRdW90ZXMgPSBuZXcgUmVnRXhwKCBcIj1cIiArIHdoaXRlc3BhY2UgKyBcIiooW15cXFxcXSdcXFwiXSo/KVwiICsgd2hpdGVzcGFjZSArIFwiKlxcXFxdXCIsIFwiZ1wiICksXG5cblx0cnBzZXVkbyA9IG5ldyBSZWdFeHAoIHBzZXVkb3MgKSxcblx0cmlkZW50aWZpZXIgPSBuZXcgUmVnRXhwKCBcIl5cIiArIGlkZW50aWZpZXIgKyBcIiRcIiApLFxuXG5cdG1hdGNoRXhwciA9IHtcblx0XHRcIklEXCI6IG5ldyBSZWdFeHAoIFwiXiMoXCIgKyBjaGFyYWN0ZXJFbmNvZGluZyArIFwiKVwiICksXG5cdFx0XCJDTEFTU1wiOiBuZXcgUmVnRXhwKCBcIl5cXFxcLihcIiArIGNoYXJhY3RlckVuY29kaW5nICsgXCIpXCIgKSxcblx0XHRcIlRBR1wiOiBuZXcgUmVnRXhwKCBcIl4oXCIgKyBjaGFyYWN0ZXJFbmNvZGluZy5yZXBsYWNlKCBcIndcIiwgXCJ3KlwiICkgKyBcIilcIiApLFxuXHRcdFwiQVRUUlwiOiBuZXcgUmVnRXhwKCBcIl5cIiArIGF0dHJpYnV0ZXMgKSxcblx0XHRcIlBTRVVET1wiOiBuZXcgUmVnRXhwKCBcIl5cIiArIHBzZXVkb3MgKSxcblx0XHRcIkNISUxEXCI6IG5ldyBSZWdFeHAoIFwiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFxcXChcIiArIHdoaXRlc3BhY2UgK1xuXHRcdFx0XCIqKGV2ZW58b2RkfCgoWystXXwpKFxcXFxkKilufClcIiArIHdoaXRlc3BhY2UgKyBcIiooPzooWystXXwpXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcdFwiKihcXFxcZCspfCkpXCIgKyB3aGl0ZXNwYWNlICsgXCIqXFxcXCl8KVwiLCBcImlcIiApLFxuXHRcdFwiYm9vbFwiOiBuZXcgUmVnRXhwKCBcIl4oPzpcIiArIGJvb2xlYW5zICsgXCIpJFwiLCBcImlcIiApLFxuXHRcdC8vIEZvciB1c2UgaW4gbGlicmFyaWVzIGltcGxlbWVudGluZyAuaXMoKVxuXHRcdC8vIFdlIHVzZSB0aGlzIGZvciBQT1MgbWF0Y2hpbmcgaW4gYHNlbGVjdGBcblx0XHRcIm5lZWRzQ29udGV4dFwiOiBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcXFwoXCIgK1xuXHRcdFx0d2hpdGVzcGFjZSArIFwiKigoPzotXFxcXGQpP1xcXFxkKilcIiArIHdoaXRlc3BhY2UgKyBcIipcXFxcKXwpKD89W14tXXwkKVwiLCBcImlcIiApXG5cdH0sXG5cblx0cmlucHV0cyA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksXG5cdHJoZWFkZXIgPSAvXmhcXGQkL2ksXG5cblx0cm5hdGl2ZSA9IC9eW157XStcXHtcXHMqXFxbbmF0aXZlIFxcdy8sXG5cblx0Ly8gRWFzaWx5LXBhcnNlYWJsZS9yZXRyaWV2YWJsZSBJRCBvciBUQUcgb3IgQ0xBU1Mgc2VsZWN0b3JzXG5cdHJxdWlja0V4cHIgP
9673SAvXig/OiMoW1xcdy1dKyl8KFxcdyspfFxcLihbXFx3LV0rKSkkLyxcblxuXHRyc2libGluZyA9IC9bK35dLyxcblx0cmVzY2FwZSA9IC8nfFxcXFwvZyxcblxuXHQvLyBDU1MgZXNjYXBlcyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjZXNjYXBlZC1jaGFyYWN0ZXJzXG5cdHJ1bmVzY2FwZSA9IG5ldyBSZWdFeHAoIFwiXFxcXFxcXFwoW1xcXFxkYS1mXXsxLDZ9XCIgKyB3aGl0ZXNwYWNlICsgXCI/fChcIiArIHdoaXRlc3BhY2UgKyBcIil8LilcIiwgXCJpZ1wiICksXG5cdGZ1bmVzY2FwZSA9IGZ1bmN0aW9uKCBfLCBlc2NhcGVkLCBlc2NhcGVkV2hpdGVzcGFjZSApIHtcblx0XHR2YXIgaGlnaCA9IFwiMHhcIiArIGVzY2FwZWQgLSAweDEwMDAwO1xuXHRcdC8vIE5hTiBtZWFucyBub24tY29kZXBvaW50XG5cdFx0Ly8gU3VwcG9ydDogRmlyZWZveDwyNFxuXHRcdC8vIFdvcmthcm91bmQgZXJyb25lb3VzIG51bWVyaWMgaW50ZXJwcmV0YXRpb24gb2YgK1wiMHhcIlxuXHRcdHJldHVybiBoaWdoICE9PSBoaWdoIHx8IGVzY2FwZWRXaGl0ZXNwYWNlID9cblx0XHRcdGVzY2FwZWQgOlxuXHRcdFx0aGlnaCA8IDAgP1xuXHRcdFx0XHQvLyBCTVAgY29kZXBvaW50XG5cdFx0XHRcdFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggKyAweDEwMDAwICkgOlxuXHRcdFx0XHQvLyBTdXBwbGVtZW50YWwgUGxhbmUgY29kZXBvaW50IChzdXJyb2dhdGUgcGFpcilcblx0XHRcdFx0U3RyaW5nLmZyb21DaGFyQ29kZSggaGlnaCA+PiAxMCB8IDB4RDgwMCwgaGlnaCAmIDB4M0ZGIHwgMHhEQzAwICk7XG5cdH0sXG5cblx0Ly8gVXNlZCBmb3IgaWZyYW1lc1xuXHQvLyBTZWUgc2V0RG9jdW1lbnQoKVxuXHQvLyBSZW1vdmluZyB0aGUgZnVuY3Rpb24gd3JhcHBlciBjYXVzZXMgYSBcIlBlcm1pc3Npb24gRGVuaWVkXCJcblx0Ly8gZXJyb3IgaW4gSUVcblx0dW5sb2FkSGFuZGxlciA9IGZ1bmN0aW9uKCkge1xuXHRcdHNldERvY3VtZW50KCk7XG5cdH07XG5cbi8vIE9wdGltaXplIGZvciBwdXNoLmFwcGx5KCBfLCBOb2RlTGlzdCApXG50cnkge1xuXHRwdXNoLmFwcGx5KFxuXHRcdChhcnIgPSBzbGljZS5jYWxsKCBwcmVmZXJyZWREb2MuY2hpbGROb2RlcyApKSxcblx0XHRwcmVmZXJyZWREb2MuY2hpbGROb2Rlc1xuXHQpO1xuXHQvLyBTdXBwb3J0OiBBbmRyb2lkPDQuMFxuXHQvLyBEZXRlY3Qgc2lsZW50bHkgZmFpbGluZyBwdXNoLmFwcGx5XG5cdGFyclsgcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMubGVuZ3RoIF0ubm9kZVR5cGU7XG59IGNhdGNoICggZSApIHtcblx0cHVzaCA9IHsgYXBwbHk6IGFyci5sZW5ndGggP1xuXG5cdFx0Ly8gTGV2ZXJhZ2Ugc2xpY2UgaWYgcG9zc2libGVcblx0XHRmdW5jdGlvbiggdGFyZ2V0LCBlbHMgKSB7XG5cdFx0XHRwdXNoX25hdGl2ZS5hcHBseSggdGFyZ2V0LCBzbGljZS5jYWxsKGVscykgKTtcblx0XHR9IDpcblxuXHRcdC8vIFN1cHBvcnQ6IElFPDlcblx0XHQvLyBPdGhlcndpc2UgYXBwZW5kIGRpcmVjdGx5XG5cdFx0ZnVuY3Rpb24oIHRhcmdldCwgZWxzICkge1xuXHRcdFx0dmFyIGogPSB0YXJnZXQubGVuZ3RoLFxuXHRcdFx0XHRpID0gMDtcblx0XHRcdC8vIENhbid0IHRydXN0IE5vZGVMaXN0Lmxlbmd0aFxuXHRcdFx0d2hpbGUgKCAodGFyZ2V0W2orK10gPSBlbHNbaSsrXSkgKSB7fVxuXHRcdFx0dGFyZ2V0Lmxlbmd0aCA9IGogLSAxO1xuXHRcdH1cblx0fTtcbn1cblxuZnVuY3Rpb24gU2l6emxlKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHtcblx0dmFyIG1hdGNoLCBlbGVtLCBtLCBub2RlVHlwZSxcblx0XHQvLyBRU0EgdmFyc1xuXHRcdGksIGdyb3Vwcywgb2xkLCBuaWQsIG5ld0NvbnRleHQsIG5ld1NlbGVjdG9yO1xuXG5cdGlmICggKCBjb250ZXh0ID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBwcmVmZXJyZWREb2MgKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGNvbnRleHQgKTtcblx0fVxuXG5cdGNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50O1xuXHRyZXN1bHRzID0gcmVzdWx0cyB8fCBbXTtcblx0bm9kZVR5cGUgPSBjb250ZXh0Lm5vZGVUeXBlO1xuXG5cdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiIHx8ICFzZWxlY3RvciB8fFxuXHRcdG5vZGVUeXBlICE9PSAxICYmIG5vZGVUeXBlICE9PSA5ICYmIG5vZGVUeXBlICE9PSAxMSApIHtcblxuXHRcdHJldHVybiByZXN1bHRzO1xuXHR9XG5cblx0aWYgKCAhc2VlZCAmJiBkb2N1bWVudElzSFRNTCApIHtcblxuXHRcdC8vIFRyeSB0byBzaG9ydGN1dCBmaW5kIG9wZXJhdGlvbnMgd2hlbiBwb3NzaWJsZSAoZS5nLiwgbm90IHVuZGVyIERvY3VtZW50RnJhZ21lbnQpXG5cdFx0aWYgKCBub2RlVHlwZSAhPT0gMTEgJiYgKG1hdGNoID0gcnF1aWNrRXhwci5leGVjKCBzZWxlY3RvciApKSApIHtcblx0XHRcdC8vIFNwZWVkLXVwOiBTaXp6bGUoXCIjSURcIilcblx0XHRcdGlmICggKG0gPSBtYXRjaFsxXSkgKSB7XG5cdFx0XHRcdGlmICggbm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdFx0ZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKTtcblx0XHRcdFx0XHQvLyBDaGVjayBwYXJlbnROb2RlIHRvIGNhdGNoIHdoZW4gQmxhY2tiZXJyeSA0LjYgcmV0dXJuc1xuXHRcdFx0XHRcdC8vIG5vZGVzIHRoYXQgYXJlIG5vIGxvbmdlciBpbiB0aGUgZG9jdW1lbnQgKGpRdWVyeSAjNjk2Mylcblx0XHRcdFx0XHRpZiAoIGVsZW0gJiYgZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRcdFx0Ly8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIElFLCBPcGVyYSwgYW5kIFdlYmtpdCByZXR1cm4gaXRlbXNcblx0XHRcdFx0XHRcdC8vIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRFxuXHRcdFx0XHRcdFx0aWYgKCBlbGVtLmlkID09PSBtICkge1xuXHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBDb250ZXh0IGlzIG5vdCBhIGRvY3VtZW50XG5cdFx0XHRcdFx0aWYgKCBjb250ZXh0Lm93bmVyRG9jdW1lbnQgJiYgKGVsZW0gPSBjb250ZXh0Lm93bmVyRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIG0gKSkgJiZcblx0XHRcdFx0XHRcdGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICkgJiYgZWxlbS5pZCA9PT0gbSApIHtcblx0XHRcdFx0XHRcdHJlc3VsdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdC8vIFNwZWVkLXVwOiBTaXp6bGUoXCJUQUdcIilcblx0XHRcdH0gZWxzZSBpZiAoIG1hdGNoWzJdICkge1xuXHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCBzZWxlY3RvciApICk7XG5cdFx0XHRcdHJldHVybi
9673ByZXN1bHRzO1xuXG5cdFx0XHQvLyBTcGVlZC11cDogU2l6emxlKFwiLkNMQVNTXCIpXG5cdFx0XHR9IGVsc2UgaWYgKCAobSA9IG1hdGNoWzNdKSAmJiBzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKSB7XG5cdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggbSApICk7XG5cdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFFTQSBwYXRoXG5cdFx0aWYgKCBzdXBwb3J0LnFzYSAmJiAoIXJidWdneVFTQSB8fCAhcmJ1Z2d5UVNBLnRlc3QoIHNlbGVjdG9yICkpICkge1xuXHRcdFx0bmlkID0gb2xkID0gZXhwYW5kbztcblx0XHRcdG5ld0NvbnRleHQgPSBjb250ZXh0O1xuXHRcdFx0bmV3U2VsZWN0b3IgPSBub2RlVHlwZSAhPT0gMSAmJiBzZWxlY3RvcjtcblxuXHRcdFx0Ly8gcVNBIHdvcmtzIHN0cmFuZ2VseSBvbiBFbGVtZW50LXJvb3RlZCBxdWVyaWVzXG5cdFx0XHQvLyBXZSBjYW4gd29yayBhcm91bmQgdGhpcyBieSBzcGVjaWZ5aW5nIGFuIGV4dHJhIElEIG9uIHRoZSByb290XG5cdFx0XHQvLyBhbmQgd29ya2luZyB1cCBmcm9tIHRoZXJlIChUaGFua3MgdG8gQW5kcmV3IER1cG9udCBmb3IgdGhlIHRlY2huaXF1ZSlcblx0XHRcdC8vIElFIDggZG9lc24ndCB3b3JrIG9uIG9iamVjdCBlbGVtZW50c1xuXHRcdFx0aWYgKCBub2RlVHlwZSA9PT0gMSAmJiBjb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRcdGdyb3VwcyA9IHRva2VuaXplKCBzZWxlY3RvciApO1xuXG5cdFx0XHRcdGlmICggKG9sZCA9IGNvbnRleHQuZ2V0QXR0cmlidXRlKFwiaWRcIikpICkge1xuXHRcdFx0XHRcdG5pZCA9IG9sZC5yZXBsYWNlKCByZXNjYXBlLCBcIlxcXFwkJlwiICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29udGV4dC5zZXRBdHRyaWJ1dGUoIFwiaWRcIiwgbmlkICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0bmlkID0gXCJbaWQ9J1wiICsgbmlkICsgXCInXSBcIjtcblxuXHRcdFx0XHRpID0gZ3JvdXBzLmxlbmd0aDtcblx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0Z3JvdXBzW2ldID0gbmlkICsgdG9TZWxlY3RvciggZ3JvdXBzW2ldICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0bmV3Q29udGV4dCA9IHJzaWJsaW5nLnRlc3QoIHNlbGVjdG9yICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHQ7XG5cdFx0XHRcdG5ld1NlbGVjdG9yID0gZ3JvdXBzLmpvaW4oXCIsXCIpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIG5ld1NlbGVjdG9yICkge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsXG5cdFx0XHRcdFx0XHRuZXdDb250ZXh0LnF1
9673ZXJ5U2VsZWN0b3JBbGwoIG5ld1NlbGVjdG9yIClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHR9IGNhdGNoKHFzYUVycm9yKSB7XG5cdFx0XHRcdH0gZmluYWxseSB7XG5cdFx0XHRcdFx0aWYgKCAhb2xkICkge1xuXHRcdFx0XHRcdFx0Y29udGV4dC5yZW1vdmVBdHRyaWJ1dGUoXCJpZFwiKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBBbGwgb3RoZXJzXG5cdHJldHVybiBzZWxlY3QoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKSwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApO1xufVxuXG4vKipcbiAqIENyZWF0ZSBrZXktdmFsdWUgY2FjaGVzIG9mIGxpbWl0ZWQgc2l6ZVxuICogQHJldHVybnMge0Z1bmN0aW9uKHN0cmluZywgT2JqZWN0KX0gUmV0dXJucyB0aGUgT2JqZWN0IGRhdGEgYWZ0ZXIgc3RvcmluZyBpdCBvbiBpdHNlbGYgd2l0aFxuICpcdHByb3BlcnR5IG5hbWUgdGhlIChzcGFjZS1zdWZmaXhlZCkgc3RyaW5nIGFuZCAoaWYgdGhlIGNhY2hlIGlzIGxhcmdlciB0aGFuIEV4cHIuY2FjaGVMZW5ndGgpXG4gKlx0ZGVsZXRpbmcgdGhlIG9sZGVzdCBlbnRyeVxuICovXG5mdW5jdGlvbiBjcmVhdGVDYWNoZSgpIHtcblx0dmFyIGtleXMgPSBbXTtcblxuXHRmdW5jdGlvbiBjYWNoZSgga2V5LCB2YWx1ZSApIHtcblx0XHQvLyBVc2UgKGtleSArIFwiIFwiKSB0byBhdm9pZCBjb2xsaXNpb24gd2l0aCBuYXRpdmUgcHJvdG90eXBlIHByb3BlcnRpZXMgKHNlZSBJc3N1ZSAjMTU3KVxuXHRcdGlmICgga2V5cy5wdXNoKCBrZXkgKyBcIiBcIiApID4gRXhwci5jYWNoZUxlbmd0aCApIHtcblx0XHRcdC8vIE9ubHkga2VlcCB0aGUgbW9zdCByZWNlbnQgZW50cmllc1xuXHRcdFx0ZGVsZXRlIGNhY2hlWyBrZXlzLnNoaWZ0KCkgXTtcblx0XHR9XG5cdFx0cmV0dXJuIChjYWNoZVsga2V5ICsgXCIgXCIgXSA9IHZhbHVlKTtcblx0fVxuXHRyZXR1cm4gY2FjaGU7XG59XG5cbi8qKlxuICogTWFyayBhIGZ1bmN0aW9uIGZvciBzcGVjaWFsIHVzZSBieSBTaXp6bGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBtYXJrXG4gKi9cbmZ1bmN0aW9uIG1hcmtGdW5jdGlvbiggZm4gKSB7XG5cdGZuWyBleHBhbmRvIF0gPSB0cnVlO1xuXHRyZXR1cm4gZm47XG59XG5cbi8qKlxuICogU3VwcG9ydCB0ZXN0aW5nIHVzaW5nIGFuIGVsZW1lbnRcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFBhc3NlZCB0aGUgY3JlYXRlZCBkaXYgYW5kIGV4cGVjdHMgYSBib29sZWFuIHJlc3VsdFxuICovXG5mdW5jdGlvbiBhc3NlcnQoIGZuICkge1xuXHR2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblxuXHR0cnkge1xuXHRcdHJldHVybiAhIWZuKCBkaXYgKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fSBmaW5hbGx5IHtcblx0XHQvLyBSZW1vdmUgZnJvbSBpdHMgcGFyZW50IGJ5IGRlZmF1bHRcblx0XHRpZiAoIGRpdi5wYXJlbnROb2RlICkge1xuXHRcdFx0ZGl2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIGRpdiApO1xuXHRcdH1cblx0XHQvLyByZWxlYXNlIG1lbW9yeSBpbiBJRVxuXHRcdGRpdiA9IG51bGw7XG5cdH1cbn1cblxuLyoqXG4gKiBBZGRzIHRoZSBzYW1lIGhhbmRsZXIgZm9yIGFsbCBvZiB0aGUgc3BlY2lmaWVkIGF0dHJzXG4gKiBAcGFyYW0ge1N0cmluZ30gYXR0cnMgUGlwZS1zZXBhcmF0ZWQgbGlzdCBvZiBhdHRyaWJ1dGVzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIFRoZSBtZXRob2QgdGhhdCB3aWxsIGJlIGFwcGxpZWRcbiAqL1xuZnVuY3Rpb24gYWRkSGFuZGxlKCBhdHRycywgaGFuZGxlciApIHtcblx0dmFyIGFyciA9IGF0dHJzLnNwbGl0KFwifFwiKSxcblx0XHRpID0gYXR0cnMubGVuZ3RoO1xuXG5cdHdoaWxlICggaS0tICkge1xuXHRcdEV4cHIuYXR0ckhhbmRsZVsgYXJyW2ldIF0gPSBoYW5kbGVyO1xuXHR9XG59XG5cbi8qKlxuICogQ2hlY2tzIGRvY3VtZW50IG9yZGVyIG9mIHR3byBzaWJsaW5nc1xuICogQHBhcmFtIHtFbGVtZW50fSBhXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGJcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IFJldHVybnMgbGVzcyB0aGFuIDAgaWYgYSBwcmVjZWRlcyBiLCBncmVhdGVyIHRoYW4gMCBpZiBhIGZvbGxvd3MgYlxuICovXG5mdW5jdGlvbiBzaWJsaW5nQ2hlY2soIGEsIGIgKSB7XG5cdHZhciBjdXIgPSBiICYmIGEsXG5cdFx0ZGlmZiA9IGN1ciAmJiBhLm5vZGVUeXBlID09PSAxICYmIGIubm9kZVR5cGUgPT09IDEgJiZcblx0XHRcdCggfmIuc291cmNlSW5kZXggfHwgTUFYX05FR0FUSVZFICkgLVxuXHRcdFx0KCB+YS5zb3VyY2VJbmRleCB8fCBNQVhfTkVHQVRJVkUgKTtcblxuXHQvLyBVc2UgSUUgc291cmNlSW5kZXggaWYgYXZhaWxhYmxlIG9uIGJvdGggbm9kZXNcblx0aWYgKCBkaWZmICkge1xuXHRcdHJldHVybiBkaWZmO1xuXHR9XG5cblx0Ly8gQ2hlY2sgaWYgYiBmb2xsb3dzIGFcblx0aWYgKCBjdXIgKSB7XG5cdFx0d2hpbGUgKCAoY3VyID0gY3VyLm5leHRTaWJsaW5nKSApIHtcblx0XHRcdGlmICggY3VyID09PSBiICkge1xuXHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGEgPyAxIDogLTE7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBpbnB1dCB0eXBlc1xuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5wdXRQc2V1ZG8oIHR5cGUgKSB7XG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRyZXR1cm4gbmFtZSA9PT0gXCJpbnB1dFwiICYmIGVsZW0udHlwZSA9PT0gdHlwZTtcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIGJ1dHRvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJ1dHRvblBzZXVkbyggdHlwZSApIHtcblx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdHJldHVybiAobmFtZSA9PT0gXCJpbnB1dFwiIHx8IG5hbWUgPT09IFwiYnV0dG9uXCIpICYmIGVsZW0udHlwZSA9PT0gdHlwZTtcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIHBvc2l0aW9uYWxzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICovXG5mdW5jdGlvbiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKCBmbiApIHtcblx0cmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggYXJndW1lbnQgKSB7XG5cdFx0YXJndW1lbnQgPSArYXJndW1lbnQ7XG5cdFx0cmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHtcblx0XHRcdHZhciBqLFxuXHRcdFx0XHRtYXRjaEluZGV4ZXMgPSBmbiggW10sIHNlZWQubGVuZ3RoLCBhcmd1bWVudCApLFxuXHRcdFx0XHRpID0gbWF0Y2hJbmRleGVzLmxlbmd0aDtcblxuXHRcdFx0Ly8gTWF0Y2ggZWxlbWVudHMgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBpbmRleGVzXG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCBzZWVkWyAoaiA9IG1hdGNoSW5kZXhlc1tpXSkgXSApIHtcblx0XHRcdFx0XHRzZWVkW2pdID0gIShtYXRjaGVzW2pdID0gc2VlZFtqXSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0fSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGEgbm9kZSBmb3IgdmFsaWRpdHkgYXMgYSBTaXp6bGUgY29udGV4dFxuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdD19IGNvbnRleHRcbiAqIEByZXR1cm5zIHtFbGVtZW50fE9iamVjdHxCb29sZWFufSBUaGUgaW5wdXQgbm9kZSBpZiBhY2NlcHRhYmxlLCBvdGhlcndpc2UgYSBmYWxzeSB2YWx1ZVxuICovXG5mdW5jdGlvbiB0ZXN0Q29udGV4dCggY29udGV4dCApIHtcblx0cmV0dXJuIGNvbnRleHQgJiYgdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29udGV4dDtcbn1cblxuLy8gRXhwb3NlIHN1cHBvcnQgdmFycyBmb3IgY29udmVuaWVuY2VcbnN1cHBvcnQgPSBTaXp6bGUuc3VwcG9ydCA9IHt9O1xuXG4vKipcbiAqIERldGVjdHMgWE1MIG5vZGVzXG4gKiBAcGFyYW0ge0Vs
9673ZW1lbnR8T2JqZWN0fSBlbGVtIEFuIGVsZW1lbnQgb3IgYSBkb2N1bWVudFxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWZmIGVsZW0gaXMgYSBub24tSFRNTCBYTUwgbm9kZVxuICovXG5pc1hNTCA9IFNpenpsZS5pc1hNTCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHQvLyBkb2N1bWVudEVsZW1lbnQgaXMgdmVyaWZpZWQgZm9yIGNhc2VzIHdoZXJlIGl0IGRvZXNuJ3QgeWV0IGV4aXN0XG5cdC8vIChzdWNoIGFzIGxvYWRpbmcgaWZyYW1lcyBpbiBJRSAtICM0ODMzKVxuXHR2YXIgZG9jdW1lbnRFbGVtZW50ID0gZWxlbSAmJiAoZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0pLmRvY3VtZW50RWxlbWVudDtcblx0cmV0dXJuIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSAhPT0gXCJIVE1MXCIgOiBmYWxzZTtcbn07XG5cbi8qKlxuICogU2V0cyBkb2N1bWVudC1yZWxhdGVkIHZhcmlhYmxlcyBvbmNlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGRvY3VtZW50XG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBbZG9jXSBBbiBlbGVtZW50IG9yIGRvY3VtZW50IG9iamVjdCB0byB1c2UgdG8gc2V0IHRoZSBkb2N1bWVudFxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY3VycmVudCBkb2N1bWVudFxuICovXG5zZXREb2N1bWVudCA9IFNpenpsZS5zZXREb2N1bWVudCA9IGZ1bmN0aW9uKCBub2RlICkge1xuXHR2YXIgaGFzQ29tcGFyZSwgcGFyZW50LFxuXHRcdGRvYyA9IG5vZGUgPyBub2RlLm93bmVyRG9jdW1lbnQgfHwgbm9kZSA6IHByZWZlcnJlZERvYztcblxuXHQvLyBJZiBubyBkb2N1bWVudCBhbmQgZG9jdW1lbnRFbGVtZW50IGlzIGF2YWlsYWJsZSwgcmV0dXJuXG5cdGlmICggZG9jID09PSBkb2N1bWVudCB8fCBkb2Mubm9kZVR5cGUgIT09IDkgfHwgIWRvYy5kb2N1bWVudEVsZW1lbnQgKSB7XG5cdFx0cmV0dXJuIGRvY3VtZW50O1xuXHR9XG5cblx0Ly8gU2V0IG91ciBkb2N1bWVudFxuXHRkb2N1bWVudCA9IGRvYztcblx0ZG9jRWxlbSA9IGRvYy5kb2N1bWVudEVsZW1lbnQ7XG5cdHBhcmVudCA9IGRvYy5kZWZhdWx0VmlldztcblxuXHQvLyBTdXBwb3J0OiBJRT44XG5cdC8vIElmIGlmcmFtZSBkb2N1bWVudCBpcyBhc3NpZ25lZCB0byBcImRvY3VtZW50XCIgdmFyaWFibGUgYW5kIGlmIGlmcmFtZSBoYXMgYmVlbiByZWxvYWRlZCxcblx0Ly8gSUUgd2lsbCB0aHJvdyBcInBlcm1pc3Npb24gZGVuaWVkXCIgZXJyb3Igd2hlbiBhY2Nlc3NpbmcgXCJkb2N1bWVudFwiIHZhcmlhYmxlLCBzZWUgalF1ZXJ5ICMxMzkzNlxuXHQvLyBJRTYtOCBkbyBub3Qgc3VwcG9ydCB0aGUgZGVmYXVsdFZpZXcgcHJvcGVydHkgc28gcGFyZW50IHdpbGwgYmUgdW5kZWZpbmVkXG5cdGlmICggcGFyZW50ICYmIHBhcmVudCAhPT0gcGFyZW50LnRvcCApIHtcblx0XHQvLyBJRTExIGRvZXMgbm90IGhhdmUgYXR0YWNoRXZlbnQsIHNvIGFsbCBtdXN0IHN1ZmZlclxuXHRcdGlmICggcGFyZW50LmFkZEV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0XHRwYXJlbnQuYWRkRXZlbnRMaXN0ZW5lciggXCJ1bmxvYWRcIiwgdW5sb2FkSGFuZGxlciwgZmFsc2UgKTtcblx0XHR9IGVsc2UgaWYgKCBwYXJlbnQuYXR0YWNoRXZlbnQgKSB7XG5cdFx0XHRwYXJlbnQuYXR0YWNoRXZlbnQoIFwib251bmxvYWRcIiwgdW5sb2FkSGFuZGxlciApO1xuXHRcdH1cblx0fVxuXG5cdC8qIFN1cHBvcnQgdGVzdHNcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHRkb2N1bWVudElzSFRNTCA9ICFpc1hNTCggZG9jICk7XG5cblx0LyogQXR0cmlidXRlc1xuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gU3VwcG9ydDogSUU8OFxuXHQvLyBWZXJpZnkgdGhhdCBnZXRBdHRyaWJ1dGUgcmVhbGx5IHJldHVybnMgYXR0cmlidXRlcyBhbmQgbm90IHByb3BlcnRpZXNcblx0Ly8gKGV4Y2VwdGluZyBJRTggYm9vbGVhbnMpXG5cdHN1cHBvcnQuYXR0cmlidXRlcyA9IGFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRcdGRpdi5jbGFzc05hbWUgPSBcImlcIjtcblx0XHRyZXR1cm4gIWRpdi5nZXRBdHRyaWJ1dGUoXCJjbGFzc05hbWVcIik7XG5cdH0pO1xuXG5cdC8qIGdldEVsZW1lbnQocylCeSpcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKSByZXR1cm5zIG9ubHkgZWxlbWVudHNcblx0c3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRcdGRpdi5hcHBlbmRDaGlsZCggZG9jLmNyZWF0ZUNvbW1lbnQoXCJcIikgKTtcblx0XHRyZXR1cm4gIWRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIikubGVuZ3RoO1xuXHR9KTtcblxuXHQvLyBTdXBwb3J0OiBJRTw5XG5cdHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IHJuYXRpdmUudGVzdCggZG9jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKTtcblxuXHQvLyBTdXBwb3J0OiBJRTwxMFxuXHQvLyBDaGVjayBpZiBnZXRFbGVtZW50QnlJZCByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWVcblx0Ly8gVGhlIGJyb2tlbiBnZXRFbGVtZW50QnlJZCBtZXRob2RzIGRvbid0IHBpY2sgdXAgcHJvZ3JhbWF0aWNhbGx5LXNldCBuYW1lcyxcblx0Ly8gc28gdXNlIGEgcm91bmRhYm91dCBnZXRFbGVtZW50c0J5TmFtZSB0ZXN0XG5cdHN1cHBvcnQuZ2V0QnlJZCA9IGFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGRpdiApLmlkID0gZXhwYW5kbztcblx0XHRyZXR1cm4gIWRvYy5nZXRFbGVtZW50c0J5TmFtZSB8fCAhZG9jLmdldEVsZW1lbnRzQnlOYW1lKCBleHBhbmRvICkubGVuZ3RoO1xuXHR9KTtcblxuXHQvLyBJRCBmaW5kIGFuZCBmaWx0ZXJcblx0aWYgKCBzdXBwb3J0LmdldEJ5SWQgKSB7XG5cdFx0RXhwci5maW5kW1wiSURcIl0gPSBmdW5jdGlvbiggaWQsIGNvbnRleHQgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9PSBcInVuZGVmaW5lZFwiICYmIGRvY3VtZW50SXNIVE1MICkge1xuXHRcdFx0XHR2YXIgbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7XG5cdFx0XHRcdC8vIENoZWNrIHBhcmVudE5vZGUgdG8gY2F0Y2ggd2hlbiBCbGFja2JlcnJ5IDQuNiByZXR1cm5zXG5cdFx0XHRcdC8vIG5vZGVzIHRoYXQgYXJlIG5vIGxvbmdlciBpbiB0aGUgZG9jdW1lbnQgIzY5NjNcblx0XHRcdFx0cmV0dXJuIG0gJiYgbS5wYXJlbnROb2RlID8gWyBtIF0gOiBbXTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdEV4cHIuZmlsdGVyW1wiSURcIl0gPSBmdW5jdGlvbiggaWQgKSB7XG5cdFx0XHR2YXIgYXR0cklkID0gaWQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblx0XHRcdHJldHVybi
9673BmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKFwiaWRcIikgPT09IGF0dHJJZDtcblx0XHRcdH07XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHQvLyBTdXBwb3J0OiBJRTYvN1xuXHRcdC8vIGdldEVsZW1lbnRCeUlkIGlzIG5vdCByZWxpYWJsZSBhcyBhIGZpbmQgc2hvcnRjdXRcblx0XHRkZWxldGUgRXhwci5maW5kW1wiSURcIl07XG5cblx0XHRFeHByLmZpbHRlcltcIklEXCJdID0gIGZ1bmN0aW9uKCBpZCApIHtcblx0XHRcdHZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgbm9kZSA9IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZU5vZGUgIT09IFwidW5kZWZpbmVkXCIgJiYgZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKFwiaWRcIik7XG5cdFx0XHRcdHJldHVybiBub2RlICYmIG5vZGUudmFsdWUgPT09IGF0dHJJZDtcblx0XHRcdH07XG5cdFx0fTtcblx0fVxuXG5cdC8vIFRhZ1xuXHRFeHByLmZpbmRbXCJUQUdcIl0gPSBzdXBwb3J0LmdldEVsZW1lbnRzQnlUYWdOYW1lID9cblx0XHRmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkge1xuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApO1xuXG5cdFx0XHQvLyBEb2N1bWVudEZyYWdtZW50IG5vZGVzIGRvbid0IGhhdmUgZ0VCVE5cblx0XHRcdH0gZWxzZSBpZiAoIHN1cHBvcnQucXNhICkge1xuXHRcdFx0XHRyZXR1cm4gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcgKTtcblx0XHRcdH1cblx0XHR9IDpcblxuXHRcdGZ1bmN0aW9uKCB0YWcsIGNvbnRleHQgKSB7XG5cdFx0XHR2YXIgZWxlbSxcblx0XHRcdFx0dG1wID0gW10sXG5cdFx0XHRcdGkgPSAwLFxuXHRcdFx0XHQvLyBCeSBoYXBweSBjb2luY2lkZW5jZSwgYSAoYnJva2VuKSBnRUJUTiBhcHBlYXJzIG9uIERvY3VtZW50RnJhZ21lbnQgbm9kZXMgdG9vXG5cdFx0XHRcdHJlc3VsdHMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgKTtcblxuXHRcdFx0Ly8gRmlsdGVyIG91dCBwb3NzaWJsZSBjb21tZW50c1xuXHRcdFx0aWYgKCB0YWcgPT09IFwiKlwiICkge1xuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gcmVzdWx0c1tpKytdKSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdFx0XHR0bXAucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB0bXA7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHR9O1xuXG5cdC8vIENsYXNzXG5cdEV4cHIuZmluZFtcIkNMQVNTXCJdID0gc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIGZ1bmN0aW9uKCBjbGFzc05hbWUsIGNvbnRleHQgKSB7XG5cdFx0aWYgKCBkb2N1bWVudElzSFRNTCApIHtcblx0XHRcdHJldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIGNsYXNzTmFtZSApO1xuXHRcdH1cblx0fTtcblxuXHQvKiBRU0EvbWF0Y2hlc1NlbGVjdG9yXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBRU0EgYW5kIG1hdGNoZXNTZWxlY3RvciBzdXBwb3J0XG5cblx0Ly8gbWF0Y2hlc1NlbGVjdG9yKDphY3RpdmUpIHJlcG9ydHMgZmFsc2Ugd2hlbiB0cnVlIChJRTkvT3BlcmEgMTEuNSlcblx0cmJ1Z2d5TWF0Y2hlcyA9IFtdO1xuXG5cdC8vIHFTYSg6Zm9jdXMpIHJlcG9ydHMgZmFsc2Ugd2hlbiB0cnVlIChDaHJvbWUgMjEpXG5cdC8vIFdlIGFsbG93IHRoaXMgYmVjYXVzZSBvZiBhIGJ1ZyBpbiBJRTgvOSB0aGF0IHRocm93cyBhbiBlcnJvclxuXHQvLyB3aGVuZXZlciBgZG9jdW1lbnQuYWN0aXZlRWxlbWVudGAgaXMgYWNjZXNzZWQgb24gYW4gaWZyYW1lXG5cdC8vIFNvLCB3ZSBhbGxvdyA6Zm9jdXMgdG8gcGFzcyB0aHJvdWdoIFFTQSBhbGwgdGhlIHRpbWUgdG8gYXZvaWQgdGhlIElFIGVycm9yXG5cdC8vIFNlZSBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMzM3OFxuXHRyYnVnZ3lRU0EgPSBbXTtcblxuXHRpZiAoIChzdXBwb3J0LnFzYSA9IHJuYXRpdmUudGVzdCggZG9jLnF1ZXJ5U2VsZWN0b3JBbGwgKSkgKSB7XG5cdFx0Ly8gQnVpbGQgUVNBIHJlZ2V4XG5cdFx0Ly8gUmVnZXggc3RyYXRlZ3kgYWRvcHRlZCBmcm9tIERpZWdvIFBlcmluaVxuXHRcdGFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRcdFx0Ly8gU2VsZWN0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcgb24gcHVycG9zZVxuXHRcdFx0Ly8gVGhpcyBpcyB0byB0ZXN0IElFJ3MgdHJlYXRtZW50IG9mIG5vdCBleHBsaWNpdGx5XG5cdFx0XHQvLyBzZXR0aW5nIGEgYm9vbGVhbiBjb250ZW50IGF0dHJpYnV0ZSxcblx0XHRcdC8vIHNpbmNlIGl0cyBwcmVzZW5jZSBzaG91bGQgYmUgZW5vdWdoXG5cdFx0XHQvLyBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMjM1OVxuXHRcdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggZGl2ICkuaW5uZXJIVE1MID0gXCI8YSBpZD0nXCIgKyBleHBhbmRvICsgXCInPjwvYT5cIiArXG5cdFx0XHRcdFwiPHNlbGVjdCBpZD0nXCIgKyBleHBhbmRvICsgXCItXFxmXScgbXNhbGxvd2NhcHR1cmU9Jyc+XCIgK1xuXHRcdFx0XHRcIjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+XCI7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOCwgT3BlcmEgMTEtMTIuMTZcblx0XHRcdC8vIE5vdGhpbmcgc2hvdWxkIGJlIHNlbGVjdGVkIHdoZW4gZW1wdHkgc3RyaW5ncyBmb2xsb3cgXj0gb3IgJD0gb3IgKj1cblx0XHRcdC8vIFRoZSB0ZXN0IGF0dHJpYnV0ZSBtdXN0IGJlIHVua25vd24gaW4gT3BlcmEgYnV0IFwic2FmZVwiIGZvciBXaW5SVFxuXHRcdFx0Ly8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2llL2hoNDY1Mzg4LmFzcHgjYXR0cmlidXRlX3NlY3Rpb25cblx0XHRcdGlmICggZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbXNhbGxvd2NhcHR1cmVePScnXVwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIlsqXiRdPVwiICsgd2hpdGVzcGFjZSArIFwiKig/OicnfFxcXCJcXFwiKVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOFxuXHRcdFx0Ly8gQm9vbGVhbiBhdHRyaWJ1dGVzIGFuZCBcInZhbHVlXCIgYXJlIG5vdCB0cmVhdGVkIGNvcnJlY3RseVxuXHRcdFx0aWYgKCAhZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbc2VsZWN0ZWRdXCIpLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiXFxcXFt
9673cIiArIHdoaXRlc3BhY2UgKyBcIiooPzp2YWx1ZXxcIiArIGJvb2xlYW5zICsgXCIpXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lPDI5LCBBbmRyb2lkPDQuMissIFNhZmFyaTw3LjArLCBpT1M8Ny4wKywgUGhhbnRvbUpTPDEuOS43K1xuXHRcdFx0aWYgKCAhZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoIFwiW2lkfj1cIiArIGV4cGFuZG8gKyBcIi1dXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKFwifj1cIik7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFdlYmtpdC9PcGVyYSAtIDpjaGVja2VkIHNob3VsZCByZXR1cm4gc2VsZWN0ZWQgb3B0aW9uIGVsZW1lbnRzXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZFxuXHRcdFx0Ly8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0ZXIgdGVzdHNcblx0XHRcdGlmICggIWRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiOmNoZWNrZWRcIikubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaChcIjpjaGVja2VkXCIpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgOCssIGlPUyA4K1xuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjg1MVxuXHRcdFx0Ly8gSW4tcGFnZSBgc2VsZWN0b3IjaWQgc2liaW5nLWNvbWJpbmF0b3Igc2VsZWN0b3JgIGZhaWxzXG5cdFx0XHRpZiAoICFkaXYucXVlcnlTZWxlY3RvckFsbCggXCJhI1wiICsgZXhwYW5kbyArIFwiKypcIiApLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goXCIuIy4rWyt+XVwiKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRcdFx0Ly8gU3VwcG9ydDogV2luZG93cyA4IE5hdGl2ZSBBcHBzXG5cdFx0XHQvLyBUaGUgdHlwZSBhbmQgbmFtZSBhdHRyaWJ1dGVzIGFyZSByZXN0cmljdGVkIGR1cmluZyAuaW5uZXJIVE1MIGFzc2lnbm1lbnRcblx0XHRcdHZhciBpbnB1dCA9IGRvYy5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG5cdFx0XHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwidHlwZVwiLCBcImhpZGRlblwiICk7XG5cdFx0XHRkaXYuYXBwZW5kQ2hpbGQoIGlucHV0ICkuc2V0QXR0cmlidXRlKCBcIm5hbWVcIiwgXCJEXCIgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU4XG5cdFx0XHQvLyBFbmZvcmNlIGNhc2Utc2Vuc2l0aXZpdHkgb2YgbmFtZSBhdHRyaWJ1dGVcblx0XHRcdGlmICggZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbmFtZT1kXVwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIm5hbWVcIiArIHdoaXRlc3BhY2UgKyBcIipbKl4kfCF+XT89XCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gRkYgMy41IC0gOmVuYWJsZWQvOmRpc2FibGVkIGFuZCBoaWRkZW4gZWxlbWVudHMgKGhpZGRlbiBlbGVtZW50cyBhcmUgc3RpbGwgZW5hYmxlZClcblx0XHRcdC8vIElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzXG5cdFx0XHRpZiAoICFkaXYucXVlcnlTZWxlY3RvckFsbChcIjplbmFibGVkXCIpLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiOmVuYWJsZWRcIiwgXCI6ZGlzYWJsZWRcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPcGVyYSAxMC0xMSBkb2VzIG5vdCB0aHJvdyBvbiBwb3N0LWNvbW1hIGludmFsaWQgcHNldWRvc1xuXHRcdFx0ZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCIqLDp4XCIpO1xuXHRcdFx0cmJ1Z2d5UVNBLnB1c2goXCIsLio6XCIpO1xuXHRcdH0pO1xuXHR9XG5cblx0aWYgKCAoc3VwcG9ydC5tYXRjaGVzU2VsZWN0b3IgPSBybmF0aXZlLnRlc3QoIChtYXRjaGVzID0gZG9jRWxlbS5tYXRjaGVzIHx8XG5cdFx0ZG9jRWxlbS53ZWJraXRNYXRjaGVzU2VsZWN0b3IgfHxcblx0XHRkb2NFbGVtLm1vek1hdGNoZXNTZWxlY3RvciB8fFxuXHRcdGRvY0VsZW0ub01hdGNoZXNTZWxlY3RvciB8fFxuXHRcdGRvY0VsZW0ubXNNYXRjaGVzU2VsZWN0b3IpICkpICkge1xuXG5cdFx0YXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7XG5cdFx0XHQvLyBDaGVjayB0byBzZWUgaWYgaXQncyBwb3NzaWJsZSB0byBkbyBtYXRjaGVzU2VsZWN0b3Jcblx0XHRcdC8vIG9uIGEgZGlzY29ubmVjdGVkIG5vZGUgKElFIDkpXG5cdFx0XHRzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoID0gbWF0Y2hlcy5jYWxsKCBkaXYsIFwiZGl2XCIgKTtcblxuXHRcdFx0Ly8gVGhpcyBzaG91bGQgZmFpbCB3aXRoIGFuIGV4Y2VwdGlvblxuXHRcdFx0Ly8gR2Vja28gZG9lcyBub3QgZXJyb3IsIHJldHVybnMgZmFsc2UgaW5zdGVhZFxuXHRcdFx0bWF0Y2hlcy5jYWxsKCBkaXYsIFwiW3MhPScnXTp4XCIgKTtcblx0XHRcdHJidWdneU1hdGNoZXMucHVzaCggXCIhPVwiLCBwc2V1ZG9zICk7XG5cdFx0fSk7XG5cdH1cblxuXHRyYnVnZ3lRU0EgPSByYnVnZ3lRU0EubGVuZ3RoICYmIG5ldyBSZWdFeHAoIHJidWdneVFTQS5qb2luKFwifFwiKSApO1xuXHRyYnVnZ3lNYXRjaGVzID0gcmJ1Z2d5TWF0Y2hlcy5sZW5ndGggJiYgbmV3IFJlZ0V4cCggcmJ1Z2d5TWF0Y2hlcy5qb2luKFwifFwiKSApO1xuXG5cdC8qIENvbnRhaW5zXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0aGFzQ29tcGFyZSA9IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiApO1xuXG5cdC8vIEVsZW1lbnQgY29udGFpbnMgYW5vdGhlclxuXHQvLyBQdXJwb3NlZnVsbHkgZG9lcyBub3QgaW1wbGVtZW50IGluY2x1c2l2ZSBkZXNjZW5kZW50XG5cdC8vIEFzIGluLCBhbiBlbGVtZW50IGRvZXMgbm90IGNvbnRhaW4gaXRzZWxmXG5cdGNvbnRhaW5zID0gaGFzQ29tcGFyZSB8fCBybmF0aXZlLnRlc3QoIGRvY0VsZW0uY29udGFpbnMgKSA/XG5cdFx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0XHR2YXIgYWRvd24gPSBhLm5vZGVUeXBlID09PSA5ID8gYS5kb2N1bWVudEVsZW1lbnQgOiBhLFxuXHRcdFx0XHRidXAgPSBiICYmIGIucGFyZW50Tm9kZTtcblx0XHRcdHJldHVybi
9673BhID09PSBidXAgfHwgISEoIGJ1cCAmJiBidXAubm9kZVR5cGUgPT09IDEgJiYgKFxuXHRcdFx0XHRhZG93bi5jb250YWlucyA/XG5cdFx0XHRcdFx0YWRvd24uY29udGFpbnMoIGJ1cCApIDpcblx0XHRcdFx0XHRhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICYmIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGJ1cCApICYgMTZcblx0XHRcdCkpO1xuXHRcdH0gOlxuXHRcdGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdFx0aWYgKCBiICkge1xuXHRcdFx0XHR3aGlsZSAoIChiID0gYi5wYXJlbnROb2RlKSApIHtcblx0XHRcdFx0XHRpZiAoIGIgPT09IGEgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9O1xuXG5cdC8qIFNvcnRpbmdcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIERvY3VtZW50IG9yZGVyIHNvcnRpbmdcblx0c29ydE9yZGVyID0gaGFzQ29tcGFyZSA/XG5cdGZ1bmN0aW9uKCBhLCBiICkge1xuXG5cdFx0Ly8gRmxhZyBmb3IgZHVwbGljYXRlIHJlbW92YWxcblx0XHRpZiAoIGEgPT09IGIgKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGUgPSB0cnVlO1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0Ly8gU29ydCBvbiBtZXRob2QgZXhpc3RlbmNlIGlmIG9ubHkgb25lIGlucHV0IGhhcyBjb21wYXJlRG9jdW1lbnRQb3NpdGlvblxuXHRcdHZhciBjb21wYXJlID0gIWEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gLSAhYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtcblx0XHRpZiAoIGNvbXBhcmUgKSB7XG5cdFx0XHRyZXR1cm4gY29tcGFyZTtcblx0XHR9XG5cblx0XHQvLyBDYWxjdWxhdGUgcG9zaXRpb24gaWYgYm90aCBpbnB1dHMgYmVsb25nIHRvIHRoZSBzYW1lIGRvY3VtZW50XG5cdFx0Y29tcGFyZSA9ICggYS5vd25lckRvY3VtZW50IHx8IGEgKSA9PT0gKCBiLm93bmVyRG9jdW1lbnQgfHwgYiApID9cblx0XHRcdGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGIgKSA6XG5cblx0XHRcdC8vIE90aGVyd2lzZSB3ZSBrbm93IHRoZXkgYXJlIGRpc2Nvbm5lY3RlZFxuXHRcdFx0MTtcblxuXHRcdC8vIERpc2Nvbm5lY3RlZCBub2Rlc1xuXHRcdGlmICggY29tcGFyZSAmIDEgfHxcblx0XHRcdCghc3VwcG9ydC5zb3J0RGV0YWNoZWQgJiYgYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYSApID09PSBjb21wYXJlKSApIHtcblxuXHRcdFx0Ly8gQ2hvb3NlIHRoZSBmaXJzdCBlbGVtZW50IHRoYXQgaXMgcmVsYXRlZCB0byBvdXIgcHJlZmVycmVkIGRvY3VtZW50XG5cdFx0XHRpZiAoIGEgPT09IGRvYyB8fCBhLm93bmVyRG9jdW1lbnQgPT09IHByZWZlcnJlZERvYyAmJiBjb250YWlucyhwcmVmZXJyZWREb2MsIGEpICkge1xuXHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGIgPT09IGRvYyB8fCBiLm93bmVyRG9jdW1lbnQgPT09IHByZWZlcnJlZERvYyAmJiBjb250YWlucyhwcmVmZXJyZWREb2MsIGIpICkge1xuXHRcdFx0XHRyZXR1cm4gMTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWFpbnRhaW4gb3JpZ2luYWwgb3JkZXJcblx0XHRcdHJldHVybiBzb3J0SW5wdXQgP1xuXHRcdFx0XHQoIGluZGV4T2YoIHNvcnRJbnB1dCwgYSApIC0gaW5kZXhPZiggc29ydElucHV0LCBiICkgKSA6XG5cdFx0XHRcdDA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNvbXBhcmUgJiA0ID8gLTEgOiAxO1xuXHR9IDpcblx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0Ly8gRXhpdCBlYXJseSBpZiB0aGUgbm9kZXMgYXJlIGlkZW50aWNhbFxuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHR2YXIgY3VyLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRhdXAgPSBhLnBhcmVudE5vZGUsXG5cdFx0XHRidXAgPSBiLnBhcmVudE5vZGUsXG5cdFx0XHRhcCA9IFsgYSBdLFxuXHRcdFx0YnAgPSBbIGIgXTtcblxuXHRcdC8vIFBhcmVudGxlc3Mgbm9kZXMgYXJlIGVpdGhlciBkb2N1bWVudHMgb3IgZGlzY29ubmVjdGVkXG5cdFx0aWYgKCAhYXVwIHx8ICFidXAgKSB7XG5cdFx0XHRyZXR1cm4gYSA9PT0gZG9jID8gLTEgOlxuXHRcdFx0XHRiID09PSBkb2MgPyAxIDpcblx0XHRcdFx0YXVwID8gLTEgOlxuXHRcdFx0XHRidXAgPyAxIDpcblx0XHRcdFx0c29ydElucHV0ID9cblx0XHRcdFx0KCBpbmRleE9mKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2YoIHNvcnRJbnB1dCwgYiApICkgOlxuXHRcdFx0XHQwO1xuXG5cdFx0Ly8gSWYgdGhlIG5vZGVzIGFyZSBzaWJsaW5ncywgd2UgY2FuIGRvIGEgcXVpY2sgY2hlY2tcblx0XHR9IGVsc2UgaWYgKCBhdXAgPT09IGJ1cCApIHtcblx0XHRcdHJldHVybiBzaWJsaW5nQ2hlY2soIGEsIGIgKTtcblx0XHR9XG5cblx0XHQvLyBPdGhlcndpc2Ugd2UgbmVlZCBmdWxsIGxpc3RzIG9mIHRoZWlyIGFuY2VzdG9ycyBmb3IgY29tcGFyaXNvblxuXHRcdGN1ciA9IGE7XG5cdFx0d2hpbGUgKCAoY3VyID0gY3VyLnBhcmVudE5vZGUpICkge1xuXHRcdFx0YXAudW5zaGlmdCggY3VyICk7XG5cdFx0fVxuXHRcdGN1ciA9IGI7XG5cdFx0d2hpbGUgKCAoY3VyID0gY3VyLnBhcmVudE5vZGUpICkge1xuXHRcdFx0YnAudW5zaGlmdCggY3VyICk7XG5cdFx0fVxuXG5cdFx0Ly8gV2FsayBkb3duIHRoZSB0cmVlIGxvb2tpbmcgZm9yIGEgZGlzY3JlcGFuY3lcblx0XHR3aGlsZSAoIGFwW2ldID09PSBicFtpXSApIHtcblx0XHRcdGkrKztcblx0XHR9XG5cblx0XHRyZXR1cm4gaSA/XG5cdFx0XHQvLyBEbyBhIHNpYmxpbmcgY2hlY2sgaWYgdGhlIG5vZGVzIGhhdmUgYSBjb21tb24gYW5jZXN0b3Jcblx0XHRcdHNpYmxpbmdDaGVjayggYXBbaV0sIGJwW2ldICkgOlxuXG5cdFx0XHQvLyBPdGhlcndpc2Ugbm9kZXMgaW4gb3VyIGRvY3VtZW50IHNvcnQgZmlyc3Rcblx0XHRcdGFwW2ldID09PSBwcmVmZXJyZWREb2MgPyAtMSA6XG5cdFx0XHRicFtpXSA9PT0gcHJlZmVycmVkRG9jID8gMSA6XG5cdFx0XHQwO1xuXHR9O1xuXG5cdHJldHVybi
9673Bkb2M7XG59O1xuXG5TaXp6bGUubWF0Y2hlcyA9IGZ1bmN0aW9uKCBleHByLCBlbGVtZW50cyApIHtcblx0cmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgZWxlbWVudHMgKTtcbn07XG5cblNpenpsZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiggZWxlbSwgZXhwciApIHtcblx0Ly8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkXG5cdGlmICggKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSApICE9PSBkb2N1bWVudCApIHtcblx0XHRzZXREb2N1bWVudCggZWxlbSApO1xuXHR9XG5cblx0Ly8gTWFrZSBzdXJlIHRoYXQgYXR0cmlidXRlIHNlbGVjdG9ycyBhcmUgcXVvdGVkXG5cdGV4cHIgPSBleHByLnJlcGxhY2UoIHJhdHRyaWJ1dGVRdW90ZXMsIFwiPSckMSddXCIgKTtcblxuXHRpZiAoIHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yICYmIGRvY3VtZW50SXNIVE1MICYmXG5cdFx0KCAhcmJ1Z2d5TWF0Y2hlcyB8fCAhcmJ1Z2d5TWF0Y2hlcy50ZXN0KCBleHByICkgKSAmJlxuXHRcdCggIXJidWdneVFTQSAgICAgfHwgIXJidWdneVFTQS50ZXN0KCBleHByICkgKSApIHtcblxuXHRcdHRyeSB7XG5cdFx0XHR2YXIgcmV0ID0gbWF0Y2hlcy5jYWxsKCBlbGVtLCBleHByICk7XG5cblx0XHRcdC8vIElFIDkncyBtYXRjaGVzU2VsZWN0b3IgcmV0dXJucyBmYWxzZSBvbiBkaXNjb25uZWN0ZWQgbm9kZXNcblx0XHRcdGlmICggcmV0IHx8IHN1cHBvcnQuZGlzY29ubmVjdGVkTWF0Y2ggfHxcblx0XHRcdFx0XHQvLyBBcyB3ZWxsLCBkaXNjb25uZWN0ZWQgbm9kZXMgYXJlIHNhaWQgdG8gYmUgaW4gYSBkb2N1bWVudFxuXHRcdFx0XHRcdC8vIGZyYWdtZW50IGluIElFIDlcblx0XHRcdFx0XHRlbGVtLmRvY3VtZW50ICYmIGVsZW0uZG9jdW1lbnQubm9kZVR5cGUgIT09IDExICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHt9XG5cdH1cblxuXHRyZXR1cm4gU2l6emxlKCBleHByLCBkb2N1bWVudCwgbnVsbCwgWyBlbGVtIF0gKS5sZW5ndGggPiAwO1xufTtcblxuU2l6emxlLmNvbnRhaW5zID0gZnVuY3Rpb24oIGNvbnRleHQsIGVsZW0gKSB7XG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHRpZiAoICggY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGNvbnRleHQgKTtcblx0fVxuXHRyZXR1cm4gY29udGFpbnMoIGNvbnRleHQsIGVsZW0gKTtcbn07XG5cblNpenpsZS5hdHRyID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHRpZiAoICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGVsZW0gKTtcblx0fVxuXG5cdHZhciBmbiA9IEV4cHIuYXR0ckhhbmRsZVsgbmFtZS50b0xvd2VyQ2FzZSgpIF0sXG5cdFx0Ly8gRG9uJ3QgZ2V0IGZvb2xlZCBieSBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKGpRdWVyeSAjMTM4MDcpXG5cdFx0dmFsID0gZm4gJiYgaGFzT3duLmNhbGwoIEV4cHIuYXR0ckhhbmRsZSwgbmFtZS50b0xvd2VyQ2FzZSgpICkgP1xuXHRcdFx0Zm4oIGVsZW0sIG5hbWUsICFkb2N1bWVudElzSFRNTCApIDpcblx0XHRcdHVuZGVmaW5lZDtcblxuXHRyZXR1cm4gdmFsICE9PSB1bmRlZmluZWQgP1xuXHRcdHZhbCA6XG5cdFx0c3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFkb2N1bWVudElzSFRNTCA/XG5cdFx0XHRlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApIDpcblx0XHRcdCh2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUobmFtZSkpICYmIHZhbC5zcGVjaWZpZWQgP1xuXHRcdFx0XHR2YWwudmFsdWUgOlxuXHRcdFx0XHRudWxsO1xufTtcblxuU2l6emxlLmVycm9yID0gZnVuY3Rpb24oIG1zZyApIHtcblx0dGhyb3cgbmV3IEVycm9yKCBcIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246IFwiICsgbXNnICk7XG59O1xuXG4vKipcbiAqIERvY3VtZW50IHNvcnRpbmcgYW5kIHJlbW92aW5nIGR1cGxpY2F0ZXNcbiAqIEBwYXJhbSB7QXJyYXlMaWtlfSByZXN1bHRzXG4gKi9cblNpenpsZS51bmlxdWVTb3J0ID0gZnVuY3Rpb24oIHJlc3VsdHMgKSB7XG5cdHZhciBlbGVtLFxuXHRcdGR1cGxpY2F0ZXMgPSBbXSxcblx0XHRqID0gMCxcblx0XHRpID0gMDtcblxuXHQvLyBVbmxlc3Mgd2UgKmtub3cqIHdlIGNhbiBkZXRlY3QgZHVwbGljYXRlcywgYXNzdW1lIHRoZWlyIHByZXNlbmNlXG5cdGhhc0R1cGxpY2F0ZSA9ICFzdXBwb3J0LmRldGVjdER1cGxpY2F0ZXM7XG5cdHNvcnRJbnB1dCA9ICFzdXBwb3J0LnNvcnRTdGFibGUgJiYgcmVzdWx0cy5zbGljZSggMCApO1xuXHRyZXN1bHRzLnNvcnQoIHNvcnRPcmRlciApO1xuXG5cdGlmICggaGFzRHVwbGljYXRlICkge1xuXHRcdHdoaWxlICggKGVsZW0gPSByZXN1bHRzW2krK10pICkge1xuXHRcdFx0aWYgKCBlbGVtID09PSByZXN1bHRzWyBpIF0gKSB7XG5cdFx0XHRcdGogPSBkdXBsaWNhdGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRyZXN1bHRzLnNwbGljZSggZHVwbGljYXRlc1sgaiBdLCAxICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2xlYXIgaW5wdXQgYWZ0ZXIgc29ydGluZyB0byByZWxlYXNlIG9iamVjdHNcblx0Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvc2l6emxlL3B1bGwvMjI1XG5cdHNvcnRJbnB1dCA9IG51bGw7XG5cblx0cmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIHJldHJpZXZpbmcgdGhlIHRleHQgdmFsdWUgb2YgYW4gYXJyYXkgb2YgRE9NIG5vZGVzXG4gKiBAcGFyYW0ge0FycmF5fEVsZW1lbnR9IGVsZW1cbiAqL1xuZ2V0VGV4dCA9IFNpenpsZS5nZXRUZXh0ID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHZhciBub2RlLFxuXHRcdHJldCA9IFwiXCIsXG5cdFx0aSA9IDAsXG5cdFx0bm9kZVR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdGlmICggIW5vZGVUeXBlICkge1xuXHRcdC8vIElmIG5vIG5vZGVUeXBlLCB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIGFuIGFycmF5XG5cdFx0d2hpbGUgKCAobm9kZSA9IGVsZW1baSsrXSkgKSB7XG5cdFx0XHQvLyBEbyBub3QgdHJhdmVyc2UgY29tbWVudCBub2Rlc1xuXHRcdFx0cmV0ICs9IGdldFRleHQoIG5vZGUgKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAxIHx8IG5vZGVUeXBlID09PSA5IHx8IG5vZGVUeXBlID09PSAxMSApIHtcblx0XHQvLyBVc2UgdGV4dENvbnRlbnQgZm9yIGVsZW1lbnRzXG5cdFx0Ly8gaW5uZXJUZXh0IHVzYWdlIHJlbW92ZWQgZm9yIGNvbnNpc3RlbmN5IG9mIG5ldyBsaW5lcyAoalF1ZXJ5ICMxMTE1Mylcblx0XHRpZiAoIHR5cGVvZiBlbGVtLnRleHRDb250ZW50ID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIGVsZW0udGV4dENvbnRlbnQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFRyYXZlcnNlIGl0cyBjaGlsZHJlblxuXHRcdFx0Zm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7XG5cdFx0XHRcdHJldCArPSBnZXRUZXh0KCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0gMyB8fCBub2RlVHlwZSA9PT0gNCApIHtcblx0XHRyZXR1cm4gZWxlbS5ub2RlVmFsdWU7XG5cdH1cblx0Ly8gRG8gbm90IGluY2x1ZGUgY29tbWVudCBvciBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGVzXG5cblx0cmV0dXJuIHJldDtcbn07XG5cbkV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzID0ge1xuXG5cdC8vIENhbiBiZSBhZGp1c3RlZCBieSB0aGUgdXNlclxuXHRjYWNoZUxlbmd0aDogNTAsXG5cblx0Y3JlYXRlUHNldWRvOiBtYXJrRnVuY3Rpb24sXG5cblx0bWF0Y2g6IG1hdGNoRXhwcixcblxuXHRhdHRySGFuZGxlOiB7fSxcblxuXHRmaW5kOiB7fSxcblxuXHRyZWxhdGl2ZToge1xuXHRcdFwiPlwiOiB7IGRpcjogXCJwYXJlbnROb2RlXCIsIGZpcnN0OiB0cnVlIH0sXG5cdFx0XCIgXCI6IHsgZGlyOiBcInBhcmVudE5vZGVcIiB9LFxuXHRcdFwiK1wiOiB7IGRpcjogXCJwcmV2aW91c1NpYmxpbmdcIiwgZmlyc3Q6IHRydWUgfSxcblx0XHRcIn5cIjogeyBkaXI6IFwicHJldmlvdXNTaWJsaW5nXCIgfVxuXHR9LFxuXG5cdHByZUZpbHRlcjoge1xuXHRcdFwiQVRUUlwiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHRtYXRjaFsxXSA9IG1hdGNoWzFdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cblx0XHRcdC8vIE1vdmUgdGhlIGdpdmVuIHZhbHVlIHRvIG1hdGNoWzNdIHdoZXRoZXIgcXVvdGVkIG9yIHVucXVvdGVkXG5cdFx0XHRtYXRjaFszXSA9ICggbWF0Y2hbM10gfHwgbWF0Y2hbNF0gfHwgbWF0Y2hbNV0gfHwgXCJcIiApLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cblx0XHRcdGlmICggbWF0Y2hbMl0gPT09IFwifj1cIiApIHtcblx0XHRcdFx0bWF0Y2hbM10gPSBcIiBcIiArIG1hdGNoWzNdICsgXCIgXCI7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybi
9673BtYXRjaC5zbGljZSggMCwgNCApO1xuXHRcdH0sXG5cblx0XHRcIkNISUxEXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblx0XHRcdC8qIG1hdGNoZXMgZnJvbSBtYXRjaEV4cHJbXCJDSElMRFwiXVxuXHRcdFx0XHQxIHR5cGUgKG9ubHl8bnRofC4uLilcblx0XHRcdFx0MiB3aGF0IChjaGlsZHxvZi10eXBlKVxuXHRcdFx0XHQzIGFyZ3VtZW50IChldmVufG9kZHxcXGQqfFxcZCpuKFsrLV1cXGQrKT98Li4uKVxuXHRcdFx0XHQ0IHhuLWNvbXBvbmVudCBvZiB4bit5IGFyZ3VtZW50IChbKy1dP1xcZCpufClcblx0XHRcdFx0NSBzaWduIG9mIHhuLWNvbXBvbmVudFxuXHRcdFx0XHQ2IHggb2YgeG4tY29tcG9uZW50XG5cdFx0XHRcdDcgc2lnbiBvZiB5LWNvbXBvbmVudFxuXHRcdFx0XHQ4IHkgb2YgeS1jb21wb25lbnRcblx0XHRcdCovXG5cdFx0XHRtYXRjaFsxXSA9IG1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7XG5cblx0XHRcdGlmICggbWF0Y2hbMV0uc2xpY2UoIDAsIDMgKSA9PT0gXCJudGhcIiApIHtcblx0XHRcdFx0Ly8gbnRoLSogcmVxdWlyZXMgYXJndW1lbnRcblx0XHRcdFx0aWYgKCAhbWF0Y2hbM10gKSB7XG5cdFx0XHRcdFx0U2l6emxlLmVycm9yKCBtYXRjaFswXSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gbnVtZXJpYyB4IGFuZCB5IHBhcmFtZXRlcnMgZm9yIEV4cHIuZmlsdGVyLkNISUxEXG5cdFx0XHRcdC8vIHJlbWVtYmVyIHRoYXQgZmFsc2UvdHJ1ZSBjYXN0IHJlc3BlY3RpdmVseSB0byAwLzFcblx0XHRcdFx0bWF0Y2hbNF0gPSArKCBtYXRjaFs0XSA/IG1hdGNoWzVdICsgKG1hdGNoWzZdIHx8IDEpIDogMiAqICggbWF0Y2hbM10gPT09IFwiZXZlblwiIHx8IG1hdGNoWzNdID09PSBcIm9kZFwiICkgKTtcblx0XHRcdFx0bWF0Y2hbNV0gPSArKCAoIG1hdGNoWzddICsgbWF0Y2hbOF0gKSB8fCBtYXRjaFszXSA9PT0gXCJvZGRcIiApO1xuXG5cdFx0XHQvLyBvdGhlciB0eXBlcyBwcm9oaWJpdCBhcmd1bWVudHNcblx0XHRcdH0gZWxzZSBpZiAoIG1hdGNoWzNdICkge1xuXHRcdFx0XHRTaXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBtYXRjaDtcblx0XHR9LFxuXG5cdFx0XCJQU0VVRE9cIjogZnVuY3Rpb24oIG1hdGNoICkge1xuXHRcdFx0dmFyIGV4Y2Vzcyxcblx0XHRcdFx0dW5xdW90ZWQgPSAhbWF0Y2hbNl0gJiYgbWF0Y2hbMl07XG5cblx0XHRcdGlmICggbWF0Y2hFeHByW1wiQ0hJTERcIl0udGVzdCggbWF0Y2hbMF0gKSApIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFjY2VwdCBxdW90ZWQgYXJndW1lbnRzIGFzLWlzXG5cdFx0XHRpZiAoIG1hdGNoWzNdICkge1xuXHRcdFx0XHRtYXRjaFsyXSA9IG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8IFwiXCI7XG5cblx0XHRcdC8vIFN0cmlwIGV4Y2VzcyBjaGFyYWN0ZXJzIGZyb20gdW5xdW90ZWQgYXJndW1lbnRzXG5cdFx0XHR9IGVsc2UgaWYgKCB1bnF1b3RlZCAmJiBycHNldWRvLnRlc3QoIHVucXVvdGVkICkgJiZcblx0XHRcdFx0Ly8gR2V0IGV4Y2VzcyBmcm9tIHRva2VuaXplIChyZWN1cnNpdmVseSlcblx0XHRcdFx0KGV4Y2VzcyA9IHRva2VuaXplKCB1bnF1b3RlZCwgdHJ1ZSApKSAmJlxuXHRcdFx0XHQvLyBhZHZhbmNlIHRvIHRoZSBuZXh0IGNsb3NpbmcgcGFyZW50aGVzaXNcblx0XHRcdFx0KGV4Y2VzcyA9IHVucXVvdGVkLmluZGV4T2YoIFwiKVwiLCB1bnF1b3RlZC5sZW5ndGggLSBleGNlc3MgKSAtIHVucXVvdGVkLmxlbmd0aCkgKSB7XG5cblx0XHRcdFx0Ly8gZXhjZXNzIGlzIGEgbmVnYXRpdmUgaW5kZXhcblx0XHRcdFx0bWF0Y2hbMF0gPSBtYXRjaFswXS5zbGljZSggMCwgZXhjZXNzICk7XG5cdFx0XHRcdG1hdGNoWzJdID0gdW5xdW90ZWQuc2xpY2UoIDAsIGV4Y2VzcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXR1cm4gb25seSBjYXB0dXJlcyBuZWVkZWQgYnkgdGhlIHBzZXVkbyBmaWx0ZXIgbWV0aG9kICh0eXBlIGFuZCBhcmd1bWVudClcblx0XHRcdHJldHVybiBtYXRjaC5zbGljZSggMCwgMyApO1xuXHRcdH1cblx0fSxcblxuXHRmaWx0ZXI6IHtcblxuXHRcdFwiVEFHXCI6IGZ1bmN0aW9uKCBub2RlTmFtZVNlbGVjdG9yICkge1xuXHRcdFx0dmFyIG5vZGVOYW1lID0gbm9kZU5hbWVTZWxlY3Rvci5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gbm9kZU5hbWVTZWxlY3RvciA9PT0gXCIqXCIgP1xuXHRcdFx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH0gOlxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5vZGVOYW1lO1xuXHRcdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIkNMQVNTXCI6IGZ1bmN0aW9uKCBjbGFzc05hbWUgKSB7XG5cdFx0XHR2YXIgcGF0dGVybiA9IGNsYXNzQ2FjaGVbIGNsYXNzTmFtZSArIFwiIFwiIF07XG5cblx0XHRcdHJldHVybiBwYXR0ZXJuIHx8XG5cdFx0XHRcdChwYXR0ZXJuID0gbmV3IFJlZ0V4cCggXCIoXnxcIiArIHdoaXRlc3BhY2UgKyBcIilcIiArIGNsYXNzTmFtZSArIFwiKFwiICsgd2hpdGVzcGFjZSArIFwifCQpXCIgKSkgJiZcblx0XHRcdFx0Y2xhc3NDYWNoZSggY2xhc3NOYW1lLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gcGF0dGVybi50ZXN0KCB0eXBlb2YgZWxlbS5jbGFzc05hbWUgPT09IFwic3RyaW5nXCIgJiYgZWxlbS5jbGFzc05hbWUgfHwgdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlICE9PSBcInVuZGVmaW5lZFwiICYmIGVsZW0uZ2V0QXR0cmlidXRlKFwiY2xhc3NcIikgfHwgXCJcIiApO1xuXHRcdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0XCJBVFRSXCI6IGZ1bmN0aW9uKCBuYW1lLCBvcGVyYXRvciwgY2hlY2sgKSB7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciByZXN1bHQgPSBTaXp6bGUuYXR0ciggZWxlbSwgbmFtZSApO1xuXG5cdFx0XHRcdGlmICggcmVzdWx0ID09IG51bGwgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9wZXJhdG9yID09PSBcIiE9XCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCAhb3BlcmF0b3IgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXN1bHQgKz0gXCJcIjtcblxuXHRcdFx0XHRyZXR1cm4gb3BlcmF0b3IgPT09IFwiPVwiID8gcmVzdWx0ID09PSBjaGVjayA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiIT1cIiA/IHJlc3VsdCAhPT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIl49XCIgPyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA9PT0gMCA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiKj1cIiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9mKCBjaGVjayApID4gLTEgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIiQ9XCIgPyBjaGVjayAmJiByZXN1bHQuc2xpY2UoIC1jaGVjay5sZW5ndGggKSA9PT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIn49XCIgPyAoIFwiIFwiICsgcmVzdWx0LnJlcGxhY2UoIHJ3aGl0ZXNwYWNlLCBcIiBcIiApICsgXCIgXCIgKS5pbmRleE9mKCBjaGVjayApID4gLTEgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcInw9XCIgPyByZXN1bHQgPT09IGNoZWNrIHx8IHJlc3VsdC5zbGljZSggMCwgY2hlY2subGVuZ3RoICsgMSApID09PSBjaGVjayArIFwiLVwiIDpcblx0XHRcdFx0XHRmYWxzZTtcblx0XHRcdH07XG5cdFx0fSxcblxuXHRcdFwiQ0hJTERcIjogZnVuY3Rpb24oIHR5cGUsIHdoYXQsIGFyZ3VtZW50LCBmaXJzdCwgbGFzdCApIHtcblx0XHRcdHZhciBzaW1wbGUgPSB0eXBlLnNsaWNlKCAwLCAzICkgIT09IFwibnRoXCIsXG5cdFx0XHRcdGZvcndhcmQgPSB0eXBlLnNsaWNlKCAtNCApICE9PSBcImxhc3RcIixcblx0XHRcdFx0b2ZUeXBlID0gd2hhdCA9PT0gXCJvZi10eXBlXCI7XG5cblx0XHRcdHJldHVybi
9673BmaXJzdCA9PT0gMSAmJiBsYXN0ID09PSAwID9cblxuXHRcdFx0XHQvLyBTaG9ydGN1dCBmb3IgOm50aC0qKG4pXG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdHJldHVybiAhIWVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdFx0fSA6XG5cblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHR2YXIgY2FjaGUsIG91dGVyQ2FjaGUsIG5vZGUsIGRpZmYsIG5vZGVJbmRleCwgc3RhcnQsXG5cdFx0XHRcdFx0XHRkaXIgPSBzaW1wbGUgIT09IGZvcndhcmQgPyBcIm5leHRTaWJsaW5nXCIgOiBcInByZXZpb3VzU2libGluZ1wiLFxuXHRcdFx0XHRcdFx0cGFyZW50ID0gZWxlbS5wYXJlbnROb2RlLFxuXHRcdFx0XHRcdFx0bmFtZSA9IG9mVHlwZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksXG5cdFx0XHRcdFx0XHR1c2VDYWNoZSA9ICF4bWwgJiYgIW9mVHlwZTtcblxuXHRcdFx0XHRcdGlmICggcGFyZW50ICkge1xuXG5cdFx0XHRcdFx0XHQvLyA6KGZpcnN0fGxhc3R8b25seSktKGNoaWxkfG9mLXR5cGUpXG5cdFx0XHRcdFx0XHRpZiAoIHNpbXBsZSApIHtcblx0XHRcdFx0XHRcdFx0d2hpbGUgKCBkaXIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0bm9kZSA9IGVsZW07XG5cdFx0XHRcdFx0XHRcdFx0d2hpbGUgKCAobm9kZSA9IG5vZGVbIGRpciBdKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggb2ZUeXBlID8gbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDogbm9kZS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHQvLyBSZXZlcnNlIGRpcmVjdGlvbiBmb3IgOm9ubHktKiAoaWYgd2UgaGF2ZW4ndCB5ZXQgZG9uZSBzbylcblx0XHRcdFx0XHRcdFx0XHRzdGFydCA9IGRpciA9IHR5cGUgPT09IFwib25seVwiICYmICFzdGFydCAmJiBcIm5leHRTaWJsaW5nXCI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHN0YXJ0ID0gWyBmb3J3YXJkID8gcGFyZW50LmZpcnN0Q2hpbGQgOiBwYXJlbnQubGFzdENoaWxkIF07XG5cblx0XHRcdFx0XHRcdC8vIG5vbi14bWwgOm50aC1jaGlsZCguLi4pIHN0b3JlcyBjYWNoZSBkYXRhIG9uIGBwYXJlbnRgXG5cdFx0XHRcdFx0XHRpZiAoIGZvcndhcmQgJiYgdXNlQ2FjaGUgKSB7XG5cdFx0XHRcdFx0XHRcdC8vIFNlZWsgYGVsZW1gIGZyb20gYSBwcmV2aW91c2x5LWNhY2hlZCBpbmRleFxuXHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gcGFyZW50WyBleHBhbmRvIF0gfHwgKHBhcmVudFsgZXhwYW5kbyBdID0ge30pO1xuXHRcdFx0XHRcdFx0XHRjYWNoZSA9IG91dGVyQ2FjaGVbIHR5cGUgXSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0bm9kZUluZGV4ID0gY2FjaGVbMF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbMV07XG5cdFx0XHRcdFx0XHRcdGRpZmYgPSBjYWNoZVswXSA9PT0gZGlycnVucyAmJiBjYWNoZVsyXTtcblx0XHRcdFx0XHRcdFx0bm9kZSA9IG5vZGVJbmRleCAmJiBwYXJlbnQuY2hpbGROb2Rlc1sgbm9kZUluZGV4IF07XG5cblx0XHRcdFx0XHRcdFx0d2hpbGUgKCAobm9kZSA9ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsgZGlyIF0gfHxcblxuXHRcdFx0XHRcdFx0XHRcdC8vIEZhbGxiYWNrIHRvIHNlZWtpbmcgYGVsZW1gIGZyb20gdGhlIHN0YXJ0XG5cdFx0XHRcdFx0XHRcdFx0KGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBXaGVuIGZvdW5kLCBjYWNoZSBpbmRleGVzIG9uIGBwYXJlbnRgIGFuZCBicmVha1xuXHRcdFx0XHRcdFx0XHRcdGlmICggbm9kZS5ub2RlVHlwZSA9PT0gMSAmJiArK2RpZmYgJiYgbm9kZSA9PT0gZWxlbSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdG91dGVyQ2FjaGVbIHR5cGUgXSA9IFsgZGlycnVucywgbm9kZUluZGV4LCBkaWZmIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gVXNlIHByZXZpb3VzbHktY2FjaGVkIGVsZW1lbnQgaW5kZXggaWYgYXZhaWxhYmxlXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCB1c2VDYWNoZSAmJiAoY2FjaGUgPSAoZWxlbVsgZXhwYW5kbyBdIHx8IChlbGVtWyBleHBhbmRvIF0gPSB7fSkpWyB0eXBlIF0pICYmIGNhY2hlWzBdID09PSBkaXJydW5zICkge1xuXHRcdFx0XHRcdFx0XHRkaWZmID0gY2FjaGVbMV07XG5cblx0XHRcdFx0XHRcdC8vIHhtbCA6bnRoLWNoaWxkKC4uLikgb3IgOm50aC1sYXN0LWNoaWxkKC4uLikgb3IgOm50aCgtbGFzdCk/LW9mLXR5cGUoLi4uKVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Ly8gVXNlIHRoZSBzYW1lIGxvb3AgYXMgYWJvdmUgdG8gc2VlayBgZWxlbWAgZnJvbSB0aGUgc3RhcnRcblx0XHRcdFx0XHRcdFx0d2hpbGUgKCAobm9kZSA9ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsgZGlyIF0gfHxcblx0XHRcdFx0XHRcdFx0XHQoZGlmZiA9IG5vZGVJbmRleCA9IDApIHx8IHN0YXJ0LnBvcCgpKSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdGlmICggKCBvZlR5cGUgPyBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOiBub2RlLm5vZGVUeXBlID09PSAxICkgJiYgKytkaWZmICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gQ2FjaGUgdGhlIGluZGV4IG9mIGVhY2ggZW5jb3VudGVyZWQgZWxlbWVudFxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCB1c2VDYWNoZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0KG5vZGVbIGV4cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30pKVsgdHlwZSBdID0gWyBkaXJydW5zLCBkaWZmIF07XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdGlmICggbm9kZSA9PT0gZWxlbSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIEluY29ycG9yYXRlIHRoZSBvZmZzZXQsIHRoZW4gY2hlY2sgYWdhaW5zdCBjeWNsZSBzaXplXG5cdFx0XHRcdFx0XHRkaWZmIC09IGxhc3Q7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZGlmZiA9PT0gZmlyc3QgfHwgKCBkaWZmICUgZmlyc3QgPT09IDAgJiYgZGlmZiAvIGZpcnN0ID49IDAgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0fSxcblxuXHRcdFwiUFNFVURPXCI6IGZ1bmN0aW9uKCBwc2V1ZG8sIGFyZ3VtZW50ICkge1xuXHRcdFx0Ly8gcHNldWRvLWNsYXNzIG5hbWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI3BzZXVkby1jbGFzc2VzXG5cdFx0XHQvLyBQcmlvcml0aXplIGJ5IGNhc2Ugc2Vuc2l0aXZpdHkgaW4gY2FzZSBjdXN0b20gcHNldWRvcyBhcmUgYWRkZWQgd2l0aCB1cHBlcmNhc2UgbGV0dGVyc1xuXHRcdFx0Ly8gUmVtZW1iZXIgdGhhdCBzZXRGaWx0ZXJzIGluaGVyaXRzIGZyb20gcHNldWRvc1xuXHRcdFx0dmFyIGFyZ3MsXG5cdFx0XHRcdGZuID0gRXhwci5wc2V1ZG9zWyBwc2V1ZG8gXSB8fCBFeHByLnNldEZpbHRlcnNbIHBzZXVkby50b0xvd2VyQ2FzZSgpIF0gfHxcblx0XHRcdFx0XHRTaXp6bGUuZXJyb3IoIFwidW5zdXBwb3J0ZWQgcHNldWRvOiBcIiArIHBzZXVkbyApO1xuXG5cdFx0XHQvLyBUaGUgdXNlciBtYXkgdXNlIGNyZWF0ZVBzZXVkbyB0byBpbmRpY2F0ZSB0aGF0XG5cdFx0XHQvLyBhcmd1bWVudHMgYXJlIG5lZWRlZCB0byBjcmVhdGUgdGhlIGZpbHRlciBmdW5jdGlvblxuXHRcdFx0Ly8ganVzdCBhcyBTaXp6bGUgZG9lc1xuXHRcdFx0aWYgKCBmblsgZXhwYW5kbyBdICkge1xuXHRcdFx0XHRyZXR1cm4gZm4oIGFyZ3VtZW50ICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEJ1dCBtYWludGFpbiBzdXBwb3J0IGZvciBvbGQgc2lnbmF0dXJlc1xuXHRcdFx0aWYgKCBmbi5sZW5ndGggPiAxICkge1xuXHRcdFx0XHRhcmdzID0gWyBwc2V1ZG8sIHBzZXVkbywgXCJcIiwgYXJndW1lbnQgXTtcblx0XHRcdFx0cmV0dXJuIEV4cHIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eSggcHNldWRvLnRvTG93ZXJDYXNlKCkgKSA/XG5cdFx0XHRcdFx0bWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkge1xuXHRcdFx0XHRcdFx0dmFyIGlkeCxcblx0XHRcdFx0XHRcdFx0bWF0Y2hlZCA9IGZuKCBzZWVkLCBhcmd1bWVudCApLFxuXHRcdFx0XHRcdFx0XHRpID0gbWF0Y2hlZC5sZW5ndGg7XG5cdFx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdFx0aWR4ID0gaW5kZXhPZiggc2VlZCwgbWF0Y2hlZFtpXSApO1xuXHRcdFx0XHRcdFx0XHRzZWVkWyBpZHggXSA9ICEoIG1hdGNoZXNbIGlkeCBdID0gbWF0Y2hlZFtpXSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pIDpcblx0XHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRcdHJldHVybi
9673BmbiggZWxlbSwgMCwgYXJncyApO1xuXHRcdFx0XHRcdH07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmbjtcblx0XHR9XG5cdH0sXG5cblx0cHNldWRvczoge1xuXHRcdC8vIFBvdGVudGlhbGx5IGNvbXBsZXggcHNldWRvc1xuXHRcdFwibm90XCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0XHQvLyBUcmltIHRoZSBzZWxlY3RvciBwYXNzZWQgdG8gY29tcGlsZVxuXHRcdFx0Ly8gdG8gYXZvaWQgdHJlYXRpbmcgbGVhZGluZyBhbmQgdHJhaWxpbmdcblx0XHRcdC8vIHNwYWNlcyBhcyBjb21iaW5hdG9yc1xuXHRcdFx0dmFyIGlucHV0ID0gW10sXG5cdFx0XHRcdHJlc3VsdHMgPSBbXSxcblx0XHRcdFx0bWF0Y2hlciA9IGNvbXBpbGUoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKSApO1xuXG5cdFx0XHRyZXR1cm4gbWF0Y2hlclsgZXhwYW5kbyBdID9cblx0XHRcdFx0bWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHRcdFx0dmFyIGVsZW0sXG5cdFx0XHRcdFx0XHR1bm1hdGNoZWQgPSBtYXRjaGVyKCBzZWVkLCBudWxsLCB4bWwsIFtdICksXG5cdFx0XHRcdFx0XHRpID0gc2VlZC5sZW5ndGg7XG5cblx0XHRcdFx0XHQvLyBNYXRjaCBlbGVtZW50cyB1bm1hdGNoZWQgYnkgYG1hdGNoZXJgXG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRpZiAoIChlbGVtID0gdW5tYXRjaGVkW2ldKSApIHtcblx0XHRcdFx0XHRcdFx0c2VlZFtpXSA9ICEobWF0Y2hlc1tpXSA9IGVsZW0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkgOlxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0XHRcdGlucHV0WzBdID0gZWxlbTtcblx0XHRcdFx0XHRtYXRjaGVyKCBpbnB1dCwgbnVsbCwgeG1sLCByZXN1bHRzICk7XG5cdFx0XHRcdFx0Ly8gRG9uJ3Qga2VlcCB0aGUgZWxlbWVudCAoaXNzdWUgIzI5OSlcblx0XHRcdFx0XHRpbnB1dFswXSA9IG51bGw7XG5cdFx0XHRcdFx0cmV0dXJuICFyZXN1bHRzLnBvcCgpO1xuXHRcdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0XCJoYXNcIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuIFNpenpsZSggc2VsZWN0b3IsIGVsZW0gKS5sZW5ndGggPiAwO1xuXHRcdFx0fTtcblx0XHR9KSxcblxuXHRcdFwiY29udGFpbnNcIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuICggZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCB8fCBnZXRUZXh0KCBlbGVtICkgKS5pbmRleE9mKCB0ZXh0ICkgPiAtMTtcblx0XHRcdH07XG5cdFx0fSksXG5cblx0XHQvLyBcIldoZXRoZXIgYW4gZWxlbWVudCBpcyByZXByZXNlbnRlZCBieSBhIDpsYW5nKCkgc2VsZWN0b3Jcblx0XHQvLyBpcyBiYXNlZCBzb2xlbHkgb24gdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZVxuXHRcdC8vIGJlaW5nIGVxdWFsIHRvIHRoZSBpZGVudGlmaWVyIEMsXG5cdFx0Ly8gb3IgYmVnaW5uaW5nIHdpdGggdGhlIGlkZW50aWZpZXIgQyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBcIi1cIi5cblx0XHQvLyBUaGUgbWF0Y2hpbmcgb2YgQyBhZ2FpbnN0IHRoZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWUgaXMgcGVyZm9ybWVkIGNhc2UtaW5zZW5zaXRpdmVseS5cblx0XHQvLyBUaGUgaWRlbnRpZmllciBDIGRvZXMgbm90IGhhdmUgdG8gYmUgYSB2YWxpZCBsYW5ndWFnZSBuYW1lLlwiXG5cdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNsYW5nLXBzZXVkb1xuXHRcdFwibGFuZ1wiOiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBsYW5nICkge1xuXHRcdFx0Ly8gbGFuZyB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaWRlbnRpZmllclxuXHRcdFx0aWYgKCAhcmlkZW50aWZpZXIudGVzdChsYW5nIHx8IFwiXCIpICkge1xuXHRcdFx0XHRTaXp6bGUuZXJyb3IoIFwidW5zdXBwb3J0ZWQgbGFuZzogXCIgKyBsYW5nICk7XG5cdFx0XHR9XG5cdFx0XHRsYW5nID0gbGFuZy5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciBlbGVtTGFuZztcblx0XHRcdFx0ZG8ge1xuXHRcdFx0XHRcdGlmICggKGVsZW1MYW5nID0gZG9jdW1lbnRJc0hUTUwgP1xuXHRcdFx0XHRcdFx0ZWxlbS5sYW5nIDpcblx0XHRcdFx0XHRcdGVsZW0uZ2V0QXR0cmlidXRlKFwieG1sOmxhbmdcIikgfHwgZWxlbS5nZXRBdHRyaWJ1dGUoXCJsYW5nXCIpKSApIHtcblxuXHRcdFx0XHRcdFx0ZWxlbUxhbmcgPSBlbGVtTGFuZy50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW1MYW5nID09PSBsYW5nIHx8IGVsZW1MYW5nLmluZGV4T2YoIGxhbmcgKyBcIi1cIiApID09PSAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSB3aGlsZSAoIChlbGVtID0gZWxlbS5wYXJlbnROb2RlKSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH07XG5cdFx0fSksXG5cblx0XHQvLyBNaXNjZWxsYW5lb3VzXG5cdFx0XCJ0YXJnZXRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgaGFzaCA9IHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24uaGFzaDtcblx0XHRcdHJldHVybiBoYXNoICYmIGhhc2guc2xpY2UoIDEgKSA9PT0gZWxlbS5pZDtcblx0XHR9LFxuXG5cdFx0XCJyb290XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGRvY0VsZW07XG5cdFx0fSxcblxuXHRcdFwiZm9jdXNcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiAoIWRvY3VtZW50Lmhhc0ZvY3VzIHx8IGRvY3VtZW50Lmhhc0ZvY3VzKCkpICYmICEhKGVsZW0udHlwZSB8fCBlbGVtLmhyZWYgfHwgfmVsZW0udGFiSW5kZXgpO1xuXHRcdH0sXG5cblx0XHQvLyBCb29sZWFuIHByb3BlcnRpZXNcblx0XHRcImVuYWJsZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZmFsc2U7XG5cdFx0fSxcblxuXHRcdFwiZGlzYWJsZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gdHJ1ZTtcblx0XHR9LFxuXG5cdFx0XCJjaGVja2VkXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0Ly8gSW4gQ1NTMywgOmNoZWNrZWQgc2hvdWxkIHJldHVybi
9673Bib3RoIGNoZWNrZWQgYW5kIHNlbGVjdGVkIGVsZW1lbnRzXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZFxuXHRcdFx0dmFyIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIChub2RlTmFtZSA9PT0gXCJpbnB1dFwiICYmICEhZWxlbS5jaGVja2VkKSB8fCAobm9kZU5hbWUgPT09IFwib3B0aW9uXCIgJiYgISFlbGVtLnNlbGVjdGVkKTtcblx0XHR9LFxuXG5cdFx0XCJzZWxlY3RlZFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdC8vIEFjY2Vzc2luZyB0aGlzIHByb3BlcnR5IG1ha2VzIHNlbGVjdGVkLWJ5LWRlZmF1bHRcblx0XHRcdC8vIG9wdGlvbnMgaW4gU2FmYXJpIHdvcmsgcHJvcGVybHlcblx0XHRcdGlmICggZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRlbGVtLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGVsZW0uc2VsZWN0ZWQgPT09IHRydWU7XG5cdFx0fSxcblxuXHRcdC8vIENvbnRlbnRzXG5cdFx0XCJlbXB0eVwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jZW1wdHktcHNldWRvXG5cdFx0XHQvLyA6ZW1wdHkgaXMgbmVnYXRlZCBieSBlbGVtZW50ICgxKSBvciBjb250ZW50IG5vZGVzICh0ZXh0OiAzOyBjZGF0YTogNDsgZW50aXR5IHJlZjogNSksXG5cdFx0XHQvLyAgIGJ1dCBub3QgYnkgb3RoZXJzIChjb21tZW50OiA4OyBwcm9jZXNzaW5nIGluc3RydWN0aW9uOiA3OyBldGMuKVxuXHRcdFx0Ly8gbm9kZVR5cGUgPCA2IHdvcmtzIGJlY2F1c2UgYXR0cmlidXRlcyAoMikgZG8gbm90IGFwcGVhciBhcyBjaGlsZHJlblxuXHRcdFx0Zm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7XG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA8IDYgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9LFxuXG5cdFx0XCJwYXJlbnRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gIUV4cHIucHNldWRvc1tcImVtcHR5XCJdKCBlbGVtICk7XG5cdFx0fSxcblxuXHRcdC8vIEVsZW1lbnQvaW5wdXQgdHlwZXNcblx0XHRcImhlYWRlclwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiByaGVhZGVyLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTtcblx0XHR9LFxuXG5cdFx0XCJpbnB1dFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiByaW5wdXRzLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTtcblx0XHR9LFxuXG5cdFx0XCJidXR0b25cIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiBuYW1lID09PSBcImlucHV0XCIgJiYgZWxlbS50eXBlID09PSBcImJ1dHRvblwiIHx8IG5hbWUgPT09IFwiYnV0dG9uXCI7XG5cdFx0fSxcblxuXHRcdFwidGV4dFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBhdHRyO1xuXHRcdFx0cmV0dXJuIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiICYmXG5cdFx0XHRcdGVsZW0udHlwZSA9PT0gXCJ0ZXh0XCIgJiZcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRTw4XG5cdFx0XHRcdC8vIE5ldyBIVE1MNSBhdHRyaWJ1dGUgdmFsdWVzIChlLmcuLCBcInNlYXJjaFwiKSBhcHBlYXIgd2l0aCBlbGVtLnR5cGUgPT09IFwidGV4dFwiXG5cdFx0XHRcdCggKGF0dHIgPSBlbGVtLmdldEF0dHJpYnV0ZShcInR5cGVcIikpID09IG51bGwgfHwgYXR0ci50b0xvd2VyQ2FzZSgpID09PSBcInRleHRcIiApO1xuXHRcdH0sXG5cblx0XHQvLyBQb3NpdGlvbi1pbi1jb2xsZWN0aW9uXG5cdFx0XCJmaXJzdFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIFsgMCBdO1xuXHRcdH0pLFxuXG5cdFx0XCJsYXN0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIFsgbGVuZ3RoIC0gMSBdO1xuXHRcdH0pLFxuXG5cdFx0XCJlcVwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7XG5cdFx0XHRyZXR1cm4gWyBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50IF07XG5cdFx0fSksXG5cblx0XHRcImV2ZW5cIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7XG5cdFx0XHR2YXIgaSA9IDA7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSksXG5cblx0XHRcIm9kZFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHtcblx0XHRcdHZhciBpID0gMTtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KSxcblxuXHRcdFwibHRcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0dmFyIGkgPSBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50O1xuXHRcdFx0Zm9yICggOyAtLWkgPj0gMDsgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pLFxuXG5cdFx0XCJndFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7XG5cdFx0XHR2YXIgaSA9IGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQ7XG5cdFx0XHRmb3IgKCA7ICsraSA8IGxlbmd0aDsgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pXG5cdH1cbn07XG5cbkV4cHIucHNldWRvc1tcIm50aFwiXSA9IEV4cHIucHNldWRvc1tcImVxXCJdO1xuXG4vLyBBZGQgYnV0dG9uL2lucHV0IHR5cGUgcHNldWRvc1xuZm9yICggaSBpbiB7IHJhZGlvOiB0cnVlLCBjaGVja2JveDogdHJ1ZSwgZmlsZTogdHJ1ZSwgcGFzc3dvcmQ6IHRydWUsIGltYWdlOiB0cnVlIH0gKSB7XG5cdEV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlSW5wdXRQc2V1ZG8oIGkgKTtcbn1cbmZvciAoIGkgaW4geyBzdWJtaXQ6IHRydWUsIHJlc2V0OiB0cnVlIH0gKSB7XG5cdEV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlQnV0dG9uUHNldWRvKCBpICk7XG59XG5cbi8vIEVhc3kgQVBJIGZvciBjcmVhdGluZyBuZXcgc2V0RmlsdGVyc1xuZnVuY3Rpb24gc2V0RmlsdGVycygpIHt9XG5zZXRGaWx0ZXJzLnByb3RvdHlwZSA9IEV4cHIuZmlsdGVycyA9IEV4cHIucHNldWRvcztcbkV4cHIuc2V0RmlsdGVycyA9IG5ldyBzZXRGaWx0ZXJzKCk7XG5cbnRva2VuaXplID0gU2l6emxlLnRva2VuaXplID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBwYXJzZU9ubHkgKSB7XG5cdHZhciBtYXRjaGVkLCBtYXRjaCwgdG9rZW5zLCB0eXBlLFxuXHRcdHNvRmFyLCBncm91cHMsIHByZUZpbHRlcnMsXG5cdFx0Y2FjaGVkID0gdG9rZW5DYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdO1xuXG5cdGlmICggY2FjaGVkICkge1xuXHRcdHJldHVybi
9673BwYXJzZU9ubHkgPyAwIDogY2FjaGVkLnNsaWNlKCAwICk7XG5cdH1cblxuXHRzb0ZhciA9IHNlbGVjdG9yO1xuXHRncm91cHMgPSBbXTtcblx0cHJlRmlsdGVycyA9IEV4cHIucHJlRmlsdGVyO1xuXG5cdHdoaWxlICggc29GYXIgKSB7XG5cblx0XHQvLyBDb21tYSBhbmQgZmlyc3QgcnVuXG5cdFx0aWYgKCAhbWF0Y2hlZCB8fCAobWF0Y2ggPSByY29tbWEuZXhlYyggc29GYXIgKSkgKSB7XG5cdFx0XHRpZiAoIG1hdGNoICkge1xuXHRcdFx0XHQvLyBEb24ndCBjb25zdW1lIHRyYWlsaW5nIGNvbW1hcyBhcyB2YWxpZFxuXHRcdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaFswXS5sZW5ndGggKSB8fCBzb0Zhcjtcblx0XHRcdH1cblx0XHRcdGdyb3Vwcy5wdXNoKCAodG9rZW5zID0gW10pICk7XG5cdFx0fVxuXG5cdFx0bWF0Y2hlZCA9IGZhbHNlO1xuXG5cdFx0Ly8gQ29tYmluYXRvcnNcblx0XHRpZiAoIChtYXRjaCA9IHJjb21iaW5hdG9ycy5leGVjKCBzb0ZhciApKSApIHtcblx0XHRcdG1hdGNoZWQgPSBtYXRjaC5zaGlmdCgpO1xuXHRcdFx0dG9rZW5zLnB1c2goe1xuXHRcdFx0XHR2YWx1ZTogbWF0Y2hlZCxcblx0XHRcdFx0Ly8gQ2FzdCBkZXNjZW5kYW50IGNvbWJpbmF0b3JzIHRvIHNwYWNlXG5cdFx0XHRcdHR5cGU6IG1hdGNoWzBdLnJlcGxhY2UoIHJ0cmltLCBcIiBcIiApXG5cdFx0XHR9KTtcblx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7XG5cdFx0fVxuXG5cdFx0Ly8gRmlsdGVyc1xuXHRcdGZvciAoIHR5cGUgaW4gRXhwci5maWx0ZXIgKSB7XG5cdFx0XHRpZiAoIChtYXRjaCA9IG1hdGNoRXhwclsgdHlwZSBdLmV4ZWMoIHNvRmFyICkpICYmICghcHJlRmlsdGVyc1sgdHlwZSBdIHx8XG5cdFx0XHRcdChtYXRjaCA9IHByZUZpbHRlcnNbIHR5cGUgXSggbWF0Y2ggKSkpICkge1xuXHRcdFx0XHRtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTtcblx0XHRcdFx0dG9rZW5zLnB1c2goe1xuXHRcdFx0XHRcdHZhbHVlOiBtYXRjaGVkLFxuXHRcdFx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRcdFx0bWF0Y2hlczogbWF0Y2hcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCAhbWF0Y2hlZCApIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBpbnZhbGlkIGV4Y2Vzc1xuXHQvLyBpZiB3ZSdyZSBqdXN0IHBhcnNpbmdcblx0Ly8gT3RoZXJ3aXNlLCB0aHJvdyBhbiBlcnJvciBvciByZXR1cm4gdG9rZW5zXG5cdHJldHVybiBwYXJzZU9ubHkgP1xuXHRcdHNvRmFyLmxlbmd0aCA6XG5cdFx0c29GYXIgP1xuXHRcdFx0U2l6emxlLmVycm9yKCBzZWxlY3RvciApIDpcblx0XHRcdC8vIENhY2hlIHRoZSB0b2tlbnNcblx0XHRcdHRva2VuQ2FjaGUoIHNlbGVjdG9yLCBncm91cHMgKS5zbGljZSggMCApO1xufTtcblxuZnVuY3Rpb24gdG9TZWxlY3RvciggdG9rZW5zICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gdG9rZW5zLmxlbmd0aCxcblx0XHRzZWxlY3RvciA9IFwiXCI7XG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdHNlbGVjdG9yICs9IHRva2Vuc1tpXS52YWx1ZTtcblx0fVxuXHRyZXR1cm4gc2VsZWN0b3I7XG59XG5cbmZ1bmN0aW9uIGFkZENvbWJpbmF0b3IoIG1hdGNoZXIsIGNvbWJpbmF0b3IsIGJhc2UgKSB7XG5cdHZhciBkaXIgPSBjb21iaW5hdG9yLmRpcixcblx0XHRjaGVja05vbkVsZW1lbnRzID0gYmFzZSAmJiBkaXIgPT09IFwicGFyZW50Tm9kZVwiLFxuXHRcdGRvbmVOYW1lID0gZG9uZSsrO1xuXG5cdHJldHVybiBjb21iaW5hdG9yLmZpcnN0ID9cblx0XHQvLyBDaGVjayBhZ2FpbnN0IGNsb3Nlc3QgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRcblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0d2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHtcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGNoZWNrTm9uRWxlbWVudHMgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSA6XG5cblx0XHQvLyBDaGVjayBhZ2FpbnN0IGFsbCBhbmNlc3Rvci9wcmVjZWRpbmcgZWxlbWVudHNcblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0dmFyIG9sZENhY2hlLCBvdXRlckNhY2hlLFxuXHRcdFx0XHRuZXdDYWNoZSA9IFsgZGlycnVucywgZG9uZU5hbWUgXTtcblxuXHRcdFx0Ly8gV2UgY2FuJ3Qgc2V0IGFyYml0cmFyeSBkYXRhIG9uIFhNTCBub2Rlcywgc28gdGhleSBkb24ndCBiZW5lZml0IGZyb20gZGlyIGNhY2hpbmdcblx0XHRcdGlmICggeG1sICkge1xuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IGVsZW1bIGV4cGFuZG8gXSB8fCAoZWxlbVsgZXhwYW5kbyBdID0ge30pO1xuXHRcdFx0XHRcdFx0aWYgKCAob2xkQ2FjaGUgPSBvdXRlckNhY2hlWyBkaXIgXSkgJiZcblx0XHRcdFx0XHRcdFx0b2xkQ2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBvbGRDYWNoZVsgMSBdID09PSBkb25lTmFtZSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBBc3NpZ24gdG8gbmV3Q2FjaGUgc28gcmVzdWx0cyBiYWNrLXByb3BhZ2F0ZSB0byBwcmV2aW91cyBlbGVtZW50c1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKG5ld0NhY2hlWyAyIF0gPSBvbGRDYWNoZVsgMiBdKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdC8vIFJldXNlIG5ld2NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVudHNcblx0XHRcdFx0XHRcdFx0b3V0ZXJDYWNoZVsgZGlyIF0gPSBuZXdDYWNoZTtcblxuXHRcdFx0XHRcdFx0XHQvLyBBIG1hdGNoIG1lYW5zIHdlJ3JlIGRvbmU7IGEgZmFpbCBtZWFucyB3ZSBoYXZlIHRvIGtlZXAgY2hlY2tpbmdcblx0XHRcdFx0XHRcdFx0aWYgKCAobmV3Q2FjaG
9673VbIDIgXSA9IG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApKSApIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG59XG5cbmZ1bmN0aW9uIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApIHtcblx0cmV0dXJuIG1hdGNoZXJzLmxlbmd0aCA+IDEgP1xuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR2YXIgaSA9IG1hdGNoZXJzLmxlbmd0aDtcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRpZiAoICFtYXRjaGVyc1tpXSggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IDpcblx0XHRtYXRjaGVyc1swXTtcbn1cblxuZnVuY3Rpb24gbXVsdGlwbGVDb250ZXh0cyggc2VsZWN0b3IsIGNvbnRleHRzLCByZXN1bHRzICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gY29udGV4dHMubGVuZ3RoO1xuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0c1tpXSwgcmVzdWx0cyApO1xuXHR9XG5cdHJldHVybiByZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBjb25kZW5zZSggdW5tYXRjaGVkLCBtYXAsIGZpbHRlciwgY29udGV4dCwgeG1sICkge1xuXHR2YXIgZWxlbSxcblx0XHRuZXdVbm1hdGNoZWQgPSBbXSxcblx0XHRpID0gMCxcblx0XHRsZW4gPSB1bm1hdGNoZWQubGVuZ3RoLFxuXHRcdG1hcHBlZCA9IG1hcCAhPSBudWxsO1xuXG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGlmICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkge1xuXHRcdFx0aWYgKCAhZmlsdGVyIHx8IGZpbHRlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdG5ld1VubWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdGlmICggbWFwcGVkICkge1xuXHRcdFx0XHRcdG1hcC5wdXNoKCBpICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gbmV3VW5tYXRjaGVkO1xufVxuXG5mdW5jdGlvbiBzZXRNYXRjaGVyKCBwcmVGaWx0ZXIsIHNlbGVjdG9yLCBtYXRjaGVyLCBwb3N0RmlsdGVyLCBwb3N0RmluZGVyLCBwb3N0U2VsZWN0b3IgKSB7XG5cdGlmICggcG9zdEZpbHRlciAmJiAhcG9zdEZpbHRlclsgZXhwYW5kbyBdICkge1xuXHRcdHBvc3RGaWx0ZXIgPSBzZXRNYXRjaGVyKCBwb3N0RmlsdGVyICk7XG5cdH1cblx0aWYgKCBwb3N0RmluZGVyICYmICFwb3N0RmluZGVyWyBleHBhbmRvIF0gKSB7XG5cdFx0cG9zdEZpbmRlciA9IHNldE1hdGNoZXIoIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApO1xuXHR9XG5cdHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIHJlc3VsdHMsIGNvbnRleHQsIHhtbCApIHtcblx0XHR2YXIgdGVtcCwgaSwgZWxlbSxcblx0XHRcdHByZU1hcCA9IFtdLFxuXHRcdFx0cG9zdE1hcCA9IFtdLFxuXHRcdFx0cHJlZXhpc3RpbmcgPSByZXN1bHRzLmxlbmd0aCxcblxuXHRcdFx0Ly8gR2V0IGluaXRpYWwgZWxlbWVudHMgZnJvbSBzZWVkIG9yIGNvbnRleHRcblx0XHRcdGVsZW1zID0gc2VlZCB8fCBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciB8fCBcIipcIiwgY29udGV4dC5ub2RlVHlwZSA/IFsgY29udGV4dCBdIDogY29udGV4dCwgW10gKSxcblxuXHRcdFx0Ly8gUHJlZmlsdGVyIHRvIGdldCBtYXRjaGVyIGlucHV0LCBwcmVzZXJ2aW5nIGEgbWFwIGZvciBzZWVkLXJlc3VsdHMgc3luY2hyb25pemF0aW9uXG5cdFx0XHRtYXRjaGVySW4gPSBwcmVGaWx0ZXIgJiYgKCBzZWVkIHx8ICFzZWxlY3RvciApID9cblx0XHRcdFx0Y29uZGVuc2UoIGVsZW1zLCBwcmVNYXAsIHByZUZpbHRlciwgY29udGV4dCwgeG1sICkgOlxuXHRcdFx0XHRlbGVtcyxcblxuXHRcdFx0bWF0Y2hlck91dCA9IG1hdGNoZXIgP1xuXHRcdFx0XHQvLyBJZiB3ZSBoYXZlIGEgcG9zdEZpbmRlciwgb3IgZmlsdGVyZWQgc2VlZCwgb3Igbm9uLXNlZWQgcG9zdEZpbHRlciBvciBwcmVleGlzdGluZyByZXN1bHRzLFxuXHRcdFx0XHRwb3N0RmluZGVyIHx8ICggc2VlZCA/IHByZUZpbHRlciA6IHByZWV4aXN0aW5nIHx8IHBvc3RGaWx0ZXIgKSA/XG5cblx0XHRcdFx0XHQvLyAuLi5pbnRlcm1lZGlhdGUgcHJvY2Vzc2luZyBpcyBuZWNlc3Nhcnlcblx0XHRcdFx0XHRbXSA6XG5cblx0XHRcdFx0XHQvLyAuLi5vdGhlcndpc2UgdXNlIHJlc3VsdHMgZGlyZWN0bHlcblx0XHRcdFx0XHRyZXN1bHRzIDpcblx0XHRcdFx0bWF0Y2hlckluO1xuXG5cdFx0Ly8gRmluZCBwcmltYXJ5IG1hdGNoZXNcblx0XHRpZiAoIG1hdGNoZXIgKSB7XG5cdFx0XHRtYXRjaGVyKCBtYXRjaGVySW4sIG1hdGNoZXJPdXQsIGNvbnRleHQsIHhtbCApO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHBvc3RGaWx0ZXJcblx0XHRpZiAoIHBvc3RGaWx0ZXIgKSB7XG5cdFx0XHR0ZW1wID0gY29uZGVuc2UoIG1hdGNoZXJPdXQsIHBvc3RNYXAgKTtcblx0XHRcdHBvc3RGaWx0ZXIoIHRlbXAsIFtdLCBjb250ZXh0LCB4bWwgKTtcblxuXHRcdFx0Ly8gVW4tbWF0Y2ggZmFpbGluZyBlbGVtZW50cyBieSBtb3ZpbmcgdGhlbSBiYWNrIHRvIG1hdGNoZXJJblxuXHRcdFx0aSA9IHRlbXAubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGlmICggKGVsZW0gPSB0ZW1wW2ldKSApIHtcblx0XHRcdFx0XHRtYXRjaGVyT3V0WyBwb3N0TWFwW2ldIF0gPSAhKG1hdGNoZXJJblsgcG9zdE1hcFtpXSBdID0gZWxlbSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIHNlZWQgKSB7XG5cdFx0XHRpZiAoIHBvc3RGaW5kZXIgfHwgcHJlRmlsdGVyICkge1xuXHRcdFx0XHRpZiAoIHBvc3RGaW5kZXIgKSB7XG5cdFx0XHRcdFx0Ly8gR2V0IHRoZSBmaW5hbCBtYXRjaGVyT3V0IGJ5IGNvbmRlbnNpbmcgdGhpcyBpbnRlcm1lZGlhdGUgaW50byBwb3N0RmluZGVyIGNvbnRleHRzXG5cdFx0XHRcdFx0dGVtcCA9IFtdO1xuXHRcdFx0XHRcdGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDtcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdGlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ldKSApIHtcblx0XHRcdFx0XHRcdFx0Ly8gUmVzdG9yZSBtYXRjaGVySW4gc2luY2UgZWxlbSBpcyBub3QgeWV0IGEgZmluYWwgbWF0Y2hcblx0XHRcdFx0XHRcdFx0dGVtcC5wdXNoKCAobWF0Y2hlckluW2ldID0gZWxlbSkgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cG9zdEZpbmRlciggbnVsbCwgKG1hdGNoZXJPdXQgPSBbXSksIHRlbXAsIHhtbCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gTW92ZSBtYXRjaGVkIGVsZW1lbnRzIGZyb20gc2VlZCB0byByZXN1bHRzIHRvIGtlZXAgdGhlbSBzeW5jaHJvbml6ZWRcblx0XHRcdFx0aSA9IG1hdGNoZXJPdXQubGVuZ3RoO1xuXHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRpZiAoIChlbGVtID0gbWF0Y2hlck91dFtpXSkgJiZcblx0XHRcdFx0XHRcdCh0ZW1wID0gcG9zdEZpbmRlciA/IGluZGV4T2YoIHNlZWQsIGVsZW0gKSA6IHByZU1hcFtpXSkgPiAtMSApIHtcblxuXHRcdFx0XHRcdFx0c2VlZFt0ZW1wXSA9ICEocmVzdWx0c1t0ZW1wXSA9IGVsZW0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0Ly8gQWRkIGVsZW1lbnRzIHRvIHJlc3VsdHMsIHRocm91Z2ggcG9zdEZpbmRlciBpZiBkZWZpbmVkXG5cdFx0fSBlbHNlIHtcblx0XHRcdG1hdGNoZXJPdXQgPSBjb25kZW5zZShcblx0XHRcdFx0bWF0Y2hlck91dCA9PT0gcmVzdWx0cyA/XG5cdFx0XHRcdFx0bWF0Y2hlck91dC5zcGxpY2UoIHByZWV4aXN0aW5nLCBtYXRjaGVyT3V0Lmxlbmd0aCApIDpcblx0XHRcdFx0XHRtYXRjaGVyT3V0XG5cdFx0XHQpO1xuXHRcdFx0aWYgKCBwb3N0RmluZGVyICkge1xuXHRcdFx0XHRwb3N0RmluZGVyKCBudWxsLCByZXN1bHRzLCBtYXRjaGVyT3V0LCB4bWwgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIG1hdGNoZXJPdXQgKTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zICkge1xuXHR2YXIgY2hlY2tDb250ZXh0LCBtYXRjaGVyLCBqLFxuXHRcdGxlbiA9IHRva2Vucy5sZW5ndGgsXG5cdFx0bGVhZGluZ1JlbGF0aXZlID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zWzBdLnR5cGUgXSxcblx0XHRpbXBsaWNpdFJlbGF0aXZlID0gbGVhZGluZ1JlbGF0aXZlIHx8IEV4cHIucmVsYXRpdmVbXCIgXCJdLFxuXHRcdGkgPSBsZWFkaW5nUmVsYXRpdmUgPyAxIDogMCxcblxuXHRcdC8vIFRoZSBmb3VuZGF0aW9uYWwgbWF0Y2hlciBlbnN1cmVzIHRoYXQgZWxlbWVudHMgYXJlIHJlYWNoYWJsZSBmcm9tIHRvcC1sZXZlbCBjb250ZXh0KHMpXG5cdFx0bWF0Y2hDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gY2hlY2tDb250ZXh0O1xuXHRcdH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSxcblx0XHRtYXRjaEFueUNvbnRleHQgPSBhZGRDb21iaW5hdG9yKCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybi
9673BpbmRleE9mKCBjaGVja0NvbnRleHQsIGVsZW0gKSA+IC0xO1xuXHRcdH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSxcblx0XHRtYXRjaGVycyA9IFsgZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciByZXQgPSAoICFsZWFkaW5nUmVsYXRpdmUgJiYgKCB4bWwgfHwgY29udGV4dCAhPT0gb3V0ZXJtb3N0Q29udGV4dCApICkgfHwgKFxuXHRcdFx0XHQoY2hlY2tDb250ZXh0ID0gY29udGV4dCkubm9kZVR5cGUgP1xuXHRcdFx0XHRcdG1hdGNoQ29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgOlxuXHRcdFx0XHRcdG1hdGNoQW55Q29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgKTtcblx0XHRcdC8vIEF2b2lkIGhhbmdpbmcgb250byBlbGVtZW50IChpc3N1ZSAjMjk5KVxuXHRcdFx0Y2hlY2tDb250ZXh0ID0gbnVsbDtcblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fSBdO1xuXG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGlmICggKG1hdGNoZXIgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbaV0udHlwZSBdKSApIHtcblx0XHRcdG1hdGNoZXJzID0gWyBhZGRDb21iaW5hdG9yKGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLCBtYXRjaGVyKSBdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRtYXRjaGVyID0gRXhwci5maWx0ZXJbIHRva2Vuc1tpXS50eXBlIF0uYXBwbHkoIG51bGwsIHRva2Vuc1tpXS5tYXRjaGVzICk7XG5cblx0XHRcdC8vIFJldHVybiBzcGVjaWFsIHVwb24gc2VlaW5nIGEgcG9zaXRpb25hbCBtYXRjaGVyXG5cdFx0XHRpZiAoIG1hdGNoZXJbIGV4cGFuZG8gXSApIHtcblx0XHRcdFx0Ly8gRmluZCB0aGUgbmV4dCByZWxhdGl2ZSBvcGVyYXRvciAoaWYgYW55KSBmb3IgcHJvcGVyIGhhbmRsaW5nXG5cdFx0XHRcdGogPSArK2k7XG5cdFx0XHRcdGZvciAoIDsgaiA8IGxlbjsgaisrICkge1xuXHRcdFx0XHRcdGlmICggRXhwci5yZWxhdGl2ZVsgdG9rZW5zW2pdLnR5cGUgXSApIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gc2V0TWF0Y2hlcihcblx0XHRcdFx0XHRpID4gMSAmJiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSxcblx0XHRcdFx0XHRpID4gMSAmJiB0b1NlbGVjdG9yKFxuXHRcdFx0XHRcdFx0Ly8gSWYgdGhlIHByZWNlZGluZyB0b2tlbiB3YXMgYSBkZXNjZW5kYW50IGNvbWJpbmF0b3IsIGluc2VydCBhbiBpbXBsaWNpdCBhbnktZWxlbWVudCBgKmBcblx0XHRcdFx0XHRcdHRva2Vucy5zbGljZSggMCwgaSAtIDEgKS5jb25jYXQoeyB2YWx1ZTogdG9rZW5zWyBpIC0gMiBdLnR5cGUgPT09IFwiIFwiID8gXCIqXCIgOiBcIlwiIH0pXG5cdFx0XHRcdFx0KS5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICksXG5cdFx0XHRcdFx0bWF0Y2hlcixcblx0XHRcdFx0XHRpIDwgaiAmJiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zLnNsaWNlKCBpLCBqICkgKSxcblx0XHRcdFx0XHRqIDwgbGVuICYmIG1hdGNoZXJGcm9tVG9rZW5zKCAodG9rZW5zID0gdG9rZW5zLnNsaWNlKCBqICkpICksXG5cdFx0XHRcdFx0aiA8IGxlbiAmJiB0b1NlbGVjdG9yKCB0b2tlbnMgKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0bWF0Y2hlcnMucHVzaCggbWF0Y2hlciApO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNoZXJzICkge1xuXHR2YXIgYnlTZXQgPSBzZXRNYXRjaGVycy5sZW5ndGggPiAwLFxuXHRcdGJ5RWxlbWVudCA9IGVsZW1lbnRNYXRjaGVycy5sZW5ndGggPiAwLFxuXHRcdHN1cGVyTWF0Y2hlciA9IGZ1bmN0aW9uKCBzZWVkLCBjb250ZXh0LCB4bWwsIHJlc3VsdHMsIG91dGVybW9zdCApIHtcblx0XHRcdHZhciBlbGVtLCBqLCBtYXRjaGVyLFxuXHRcdFx0XHRtYXRjaGVkQ291bnQgPSAwLFxuXHRcdFx0XHRpID0gXCIwXCIsXG5cdFx0XHRcdHVubWF0Y2hlZCA9IHNlZWQgJiYgW10sXG5cdFx0XHRcdHNldE1hdGNoZWQgPSBbXSxcblx0XHRcdFx0Y29udGV4dEJhY2t1cCA9IG91dGVybW9zdENvbnRleHQsXG5cdFx0XHRcdC8vIFdlIG11c3QgYWx3YXlzIGhhdmUgZWl0aGVyIHNlZWQgZWxlbWVudHMgb3Igb3V0ZXJtb3N0IGNvbnRleHRcblx0XHRcdFx0ZWxlbXMgPSBzZWVkIHx8IGJ5RWxlbWVudCAmJiBFeHByLmZpbmRbXCJUQUdcIl0oIFwiKlwiLCBvdXRlcm1vc3QgKSxcblx0XHRcdFx0Ly8gVXNlIGludGVnZXIgZGlycnVucyBpZmYgdGhpcyBpcyB0aGUgb3V0ZXJtb3N0IG1hdGNoZXJcblx0XHRcdFx0ZGlycnVuc1VuaXF1ZSA9IChkaXJydW5zICs9IGNvbnRleHRCYWNrdXAgPT0gbnVsbCA/IDEgOiBNYXRoLnJhbmRvbSgpIHx8IDAuMSksXG5cdFx0XHRcdGxlbiA9IGVsZW1zLmxlbmd0aDtcblxuXHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cdFx0XHRcdG91dGVybW9zdENvbnRleHQgPSBjb250ZXh0ICE9PSBkb2N1bWVudCAmJiBjb250ZXh0O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgZWxlbWVudHMgcGFzc2luZyBlbGVtZW50TWF0Y2hlcnMgZGlyZWN0bHkgdG8gcmVzdWx0c1xuXHRcdFx0Ly8gS2VlcCBgaWAgYSBzdHJpbmcgaWYgdGhlcmUgYXJlIG5vIGVsZW1lbnRzIHNvIGBtYXRjaGVkQ291bnRgIHdpbGwgYmUgXCIwMFwiIGJlbG93XG5cdFx0XHQvLyBTdXBwb3J0OiBJRTw5LCBTYWZhcmlcblx0XHRcdC8vIFRvbGVyYXRlIE5vZGVMaXN0IHByb3BlcnRpZXMgKElFOiBcImxlbmd0aFwiOyBTYWZhcmk6IDxudW1iZXI+KSBtYXRjaGluZyBlbGVtZW50cyBieSBpZFxuXHRcdFx0Zm9yICggOyBpICE9PSBsZW4gJiYgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkge1xuXHRcdFx0XHRpZiAoIGJ5RWxlbWVudCAmJiBlbGVtICkge1xuXHRcdFx0XHRcdGogPSAwO1xuXHRcdFx0XHRcdHdoaWxlICggKG1hdGNoZXIgPSBlbGVtZW50TWF0Y2hlcnNbaisrXSkgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkge1xuXHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggb3V0ZXJtb3N0ICkge1xuXHRcdFx0XHRcdFx0ZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gVHJhY2sgdW5tYXRjaGVkIGVsZW1lbnRzIGZvciBzZXQgZmlsdGVyc1xuXHRcdFx0XHRpZiAoIGJ5U2V0ICkge1xuXHRcdFx0XHRcdC8vIFRoZXkgd2lsbCB
9673oYXZlIGdvbmUgdGhyb3VnaCBhbGwgcG9zc2libGUgbWF0Y2hlcnNcblx0XHRcdFx0XHRpZiAoIChlbGVtID0gIW1hdGNoZXIgJiYgZWxlbSkgKSB7XG5cdFx0XHRcdFx0XHRtYXRjaGVkQ291bnQtLTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBMZW5ndGhlbiB0aGUgYXJyYXkgZm9yIGV2ZXJ5IGVsZW1lbnQsIG1hdGNoZWQgb3Igbm90XG5cdFx0XHRcdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0XHRcdFx0dW5tYXRjaGVkLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gQXBwbHkgc2V0IGZpbHRlcnMgdG8gdW5tYXRjaGVkIGVsZW1lbnRzXG5cdFx0XHRtYXRjaGVkQ291bnQgKz0gaTtcblx0XHRcdGlmICggYnlTZXQgJiYgaSAhPT0gbWF0Y2hlZENvdW50ICkge1xuXHRcdFx0XHRqID0gMDtcblx0XHRcdFx0d2hpbGUgKCAobWF0Y2hlciA9IHNldE1hdGNoZXJzW2orK10pICkge1xuXHRcdFx0XHRcdG1hdGNoZXIoIHVubWF0Y2hlZCwgc2V0TWF0Y2hlZCwgY29udGV4dCwgeG1sICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIHNlZWQgKSB7XG5cdFx0XHRcdFx0Ly8gUmVpbnRlZ3JhdGUgZWxlbWVudCBtYXRjaGVzIHRvIGVsaW1pbmF0ZSB0aGUgbmVlZCBmb3Igc29ydGluZ1xuXHRcdFx0XHRcdGlmICggbWF0Y2hlZENvdW50ID4gMCApIHtcblx0XHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoICEodW5tYXRjaGVkW2ldIHx8IHNldE1hdGNoZWRbaV0pICkge1xuXHRcdFx0XHRcdFx0XHRcdHNldE1hdGNoZWRbaV0gPSBwb3AuY2FsbCggcmVzdWx0cyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRGlzY2FyZCBpbmRleCBwbGFjZWhvbGRlciB2YWx1ZXMgdG8gZ2V0IG9ubHkgYWN0dWFsIG1hdGNoZXNcblx0XHRcdFx0XHRzZXRNYXRjaGVkID0gY29uZGVuc2UoIHNldE1hdGNoZWQgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEFkZCBtYXRjaGVzIHRvIHJlc3VsdHNcblx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgc2V0TWF0Y2hlZCApO1xuXG5cdFx0XHRcdC8vIFNlZWRsZXNzIHNldCBtYXRjaGVzIHN1Y2NlZWRpbmcgbXVsdGlwbGUgc3VjY2Vzc2Z1bCBtYXRjaGVycyBzdGlwdWxhdGUgc29ydGluZ1xuXHRcdFx0XHRpZiAoIG91dGVybW9zdCAmJiAhc2VlZCAmJiBzZXRNYXRjaGVkLmxlbmd0aCA+IDAgJiZcblx0XHRcdFx0XHQoIG1hdGNoZWRDb3VudCArIHNldE1hdGNoZXJzLmxlbmd0aCApID4gMSApIHtcblxuXHRcdFx0XHRcdFNpenpsZS51bmlxdWVTb3J0KCByZXN1bHRzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gT3ZlcnJpZGUgbWFuaXB1bGF0aW9uIG9mIGdsb2JhbHMgYnkgbmVzdGVkIG1hdGNoZXJzXG5cdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblx0XHRcdFx0ZGlycnVucyA9IGRpcnJ1bnNVbmlxdWU7XG5cdFx0XHRcdG91dGVybW9zdENvbnRleHQgPSBjb250ZXh0QmFja3VwO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdW5tYXRjaGVkO1xuXHRcdH07XG5cblx0cmV0dXJuIGJ5U2V0ID9cblx0XHRtYXJrRnVuY3Rpb24oIHN1cGVyTWF0Y2hlciApIDpcblx0XHRzdXBlck1hdGNoZXI7XG59XG5cbmNvbXBpbGUgPSBTaXp6bGUuY29tcGlsZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgbWF0Y2ggLyogSW50ZXJuYWwgVXNlIE9ubHkgKi8gKSB7XG5cdHZhciBpLFxuXHRcdHNldE1hdGNoZXJzID0gW10sXG5cdFx0ZWxlbWVudE1hdGNoZXJzID0gW10sXG5cdFx0Y2FjaGVkID0gY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdO1xuXG5cdGlmICggIWNhY2hlZCApIHtcblx0XHQvLyBHZW5lcmF0ZSBhIGZ1bmN0aW9uIG9mIHJlY3Vyc2l2ZSBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byBjaGVjayBlYWNoIGVsZW1lbnRcblx0XHRpZiAoICFtYXRjaCApIHtcblx0XHRcdG1hdGNoID0gdG9rZW5pemUoIHNlbGVjdG9yICk7XG5cdFx0fVxuXHRcdGkgPSBtYXRjaC5sZW5ndGg7XG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRjYWNoZWQgPSBtYXRjaGVyRnJvbVRva2VucyggbWF0Y2hbaV0gKTtcblx0XHRcdGlmICggY2FjaGVkWyBleHBhbmRvIF0gKSB7XG5cdFx0XHRcdHNldE1hdGNoZXJzLnB1c2goIGNhY2hlZCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWxlbWVudE1hdGNoZXJzLnB1c2goIGNhY2hlZCApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENhY2hlIHRoZSBjb21waWxlZCBmdW5jdGlvblxuXHRcdGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGUoIHNlbGVjdG9yLCBtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMoIGVsZW1lbnRNYXRjaGVycywgc2V0TWF0Y2hlcnMgKSApO1xuXG5cdFx0Ly8gU2F2ZSBzZWxlY3RvciBhbmQgdG9rZW5pemF0aW9uXG5cdFx0Y2FjaGVkLnNlbGVjdG9yID0gc2VsZWN0b3I7XG5cdH1cblx0cmV0dXJuIGNhY2hlZDtcbn07XG5cbi8qKlxuICogQSBsb3ctbGV2ZWwgc2VsZWN0aW9uIGZ1bmN0aW9uIHRoYXQgd29ya3Mgd2l0aCBTaXp6bGUncyBjb21waWxlZFxuICogIHNlbGVjdG9yIGZ1bmN0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd8RnVuY3Rpb259IHNlbGVjdG9yIEEgc2VsZWN0b3Igb3IgYSBwcmUtY29tcGlsZWRcbiAqICBzZWxlY3RvciBmdW5jdGlvbiBidWlsdCB3aXRoIFNpenpsZS5jb21waWxlXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGNvbnRleHRcbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHRzXVxuICogQHBhcmFtIHtBcnJheX0gW3NlZWRdIEEgc2V0IG9mIGVsZW1lbnRzIHRvIG1hdGNoIGFnYWluc3RcbiAqL1xuc2VsZWN0ID0gU2l6emxlLnNlbGVjdCA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHtcblx0dmFyIGksIHRva2VucywgdG9rZW4sIHR5cGUsIGZpbmQsXG5cdFx0Y29tcGlsZWQgPSB0eXBlb2Ygc2VsZWN0b3IgPT09IFwiZnVuY3Rpb25cIiAmJiBzZWxlY3Rvcixcblx0XHRtYXRjaCA9ICFzZWVkICYmIHRva2VuaXplKCAoc2VsZWN0b3IgPSBjb21waWxlZC5zZWxlY3RvciB8fCBzZWxlY3RvcikgKTtcblxuXHRyZXN1bHRzID0gcmVzdWx0cyB8fCBbXTtcblxuXHQvLyBUcnkgdG8gbWluaW1pemUgb3BlcmF0aW9ucyBpZiB0aGVyZSBpcyBubyBzZWVkIGFuZCBvbmx5IG9uZSBncm91cFxuXHRpZiAoIG1hdGNoLmxlbmd0aCA9PT0gMSApIHtcblxuXHRcdC8vIFRha2UgYSBzaG9ydGN1dCBhbmQgc2V0IHRoZSBjb250ZXh0IGlmIHRoZSByb290IHNlbGVjdG9yIGlzIGFuIElEXG5cdFx0dG9rZW5zID0gbWF0Y2hbMF0gPSBtYXRjaFswXS5zbGljZSggMCApO1xuXHRcdGlmICggdG9rZW5zLmxlbmd0aCA+IDIgJiYgKHRva2VuID0gdG9rZW5zWzBdKS50eXBlID09PSBcIklEXCIgJiZcblx0XHRcdFx0c3VwcG9ydC5nZXRCeUlkICYmIGNvbnRleHQubm9kZVR5cGUgPT09IDkgJiYgZG9jdW1lbnRJc0hUTUwgJiZcblx0XHRcdFx0RXhwci5yZWxhdGl2ZVsgdG9rZW5zWzFdLnR5cGUgXSApIHtcblxuXHRcdFx0Y29udGV4dCA9ICggRXhwci5maW5kW1wiSURcIl0oIHRva2VuLm1hdGNoZXNbMF0ucmVwbGFjZShydW5lc2NhcGUsIGZ1bmVzY2FwZSksIGNvbnRleHQgKSB8fCBbXSApWzBdO1xuXHRcdFx0aWYgKCAhY29udGV4dCApIHtcblx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cblx0XHRcdC8vIFByZWNvbXBpbGVkIG1hdGNoZXJzIHdpbGwgc3RpbGwgdmVyaWZ5IGFuY2VzdHJ5LCBzbyBzdGVwIHVwIGEgbGV2ZWxcblx0XHRcdH0gZWxzZSBpZiAoIGNvbXBpbGVkICkge1xuXHRcdFx0XHRjb250ZXh0ID0gY29udGV4dC5wYXJlbnROb2RlO1xuXHRcdFx0fVxuXG5cdFx0XHRzZWxlY3RvciA9IHNlbGVjdG9yLnNsaWNlKCB0b2tlbnMuc2hpZnQoKS52YWx1ZS
96735sZW5ndGggKTtcblx0XHR9XG5cblx0XHQvLyBGZXRjaCBhIHNlZWQgc2V0IGZvciByaWdodC10by1sZWZ0IG1hdGNoaW5nXG5cdFx0aSA9IG1hdGNoRXhwcltcIm5lZWRzQ29udGV4dFwiXS50ZXN0KCBzZWxlY3RvciApID8gMCA6IHRva2Vucy5sZW5ndGg7XG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHR0b2tlbiA9IHRva2Vuc1tpXTtcblxuXHRcdFx0Ly8gQWJvcnQgaWYgd2UgaGl0IGEgY29tYmluYXRvclxuXHRcdFx0aWYgKCBFeHByLnJlbGF0aXZlWyAodHlwZSA9IHRva2VuLnR5cGUpIF0gKSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCAoZmluZCA9IEV4cHIuZmluZFsgdHlwZSBdKSApIHtcblx0XHRcdFx0Ly8gU2VhcmNoLCBleHBhbmRpbmcgY29udGV4dCBmb3IgbGVhZGluZyBzaWJsaW5nIGNvbWJpbmF0b3JzXG5cdFx0XHRcdGlmICggKHNlZWQgPSBmaW5kKFxuXHRcdFx0XHRcdHRva2VuLm1hdGNoZXNbMF0ucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKSxcblx0XHRcdFx0XHRyc2libGluZy50ZXN0KCB0b2tlbnNbMF0udHlwZSApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fCBjb250ZXh0XG5cdFx0XHRcdCkpICkge1xuXG5cdFx0XHRcdFx0Ly8gSWYgc2VlZCBpcyBlbXB0eSBvciBubyB0b2tlbnMgcmVtYWluLCB3ZSBjYW4gcmV0dXJuIGVhcmx5XG5cdFx0XHRcdFx0dG9rZW5zLnNwbGljZSggaSwgMSApO1xuXHRcdFx0XHRcdHNlbGVjdG9yID0gc2VlZC5sZW5ndGggJiYgdG9TZWxlY3RvciggdG9rZW5zICk7XG5cdFx0XHRcdFx0aWYgKCAhc2VsZWN0b3IgKSB7XG5cdFx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBzZWVkICk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIENvbXBpbGUgYW5kIGV4ZWN1dGUgYSBmaWx0ZXJpbmcgZnVuY3Rpb24gaWYgb25lIGlzIG5vdCBwcm92aWRlZFxuXHQvLyBQcm92aWRlIGBtYXRjaGAgdG8gYXZvaWQgcmV0b2tlbml6YXRpb24gaWYgd2UgbW9kaWZpZWQgdGhlIHNlbGVjdG9yIGFib3ZlXG5cdCggY29tcGlsZWQgfHwgY29tcGlsZSggc2VsZWN0b3IsIG1hdGNoICkgKShcblx0XHRzZWVkLFxuXHRcdGNvbnRleHQsXG5cdFx0IWRvY3VtZW50SXNIVE1MLFxuXHRcdHJlc3VsdHMsXG5cdFx0cnNpYmxpbmcudGVzdCggc2VsZWN0b3IgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHwgY29udGV4dFxuXHQpO1xuXHRyZXR1cm4gcmVzdWx0cztcbn07XG5cbi8vIE9uZS10aW1lIGFzc2lnbm1lbnRzXG5cbi8vIFNvcnQgc3RhYmlsaXR5XG5zdXBwb3J0LnNvcnRTdGFibGUgPSBleHBhbmRvLnNwbGl0KFwiXCIpLnNvcnQoIHNvcnRPcmRlciApLmpvaW4oXCJcIikgPT09IGV4cGFuZG87XG5cbi8vIFN1cHBvcnQ6IENocm9tZSAxNC0zNStcbi8vIEFsd2F5cyBhc3N1bWUgZHVwbGljYXRlcyBpZiB0aGV5IGFyZW4ndCBwYXNzZWQgdG8gdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25cbnN1cHBvcnQuZGV0ZWN0RHVwbGljYXRlcyA9ICEhaGFzRHVwbGljYXRlO1xuXG4vLyBJbml0aWFsaXplIGFnYWluc3QgdGhlIGRlZmF1bHQgZG9jdW1lbnRcbnNldERvY3VtZW50KCk7XG5cbi8vIFN1cHBvcnQ6IFdlYmtpdDw1MzcuMzIgLSBTYWZhcmkgNi4wLjMvQ2hyb21lIDI1IChmaXhlZCBpbiBDaHJvbWUgMjcpXG4vLyBEZXRhY2hlZCBub2RlcyBjb25mb3VuZGluZ2x5IGZvbGxvdyAqZWFjaCBvdGhlcipcbnN1cHBvcnQuc29ydERldGFjaGVkID0gYXNzZXJ0KGZ1bmN0aW9uKCBkaXYxICkge1xuXHQvLyBTaG91bGQgcmV0dXJuIDEsIGJ1dCByZXR1cm5zIDQgKGZvbGxvd2luZylcblx0cmV0dXJuIGRpdjEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikgKSAmIDE7XG59KTtcblxuLy8gU3VwcG9ydDogSUU8OFxuLy8gUHJldmVudCBhdHRyaWJ1dGUvcHJvcGVydHkgXCJpbnRlcnBvbGF0aW9uXCJcbi8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUzNjQyOSUyOFZTLjg1JTI5LmFzcHhcbmlmICggIWFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRkaXYuaW5uZXJIVE1MID0gXCI8YSBocmVmPScjJz48L2E+XCI7XG5cdHJldHVybiBkaXYuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpID09PSBcIiNcIiA7XG59KSApIHtcblx0YWRkSGFuZGxlKCBcInR5cGV8aHJlZnxoZWlnaHR8d2lkdGhcIiwgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdGlmICggIWlzWE1MICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lLCBuYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwidHlwZVwiID8gMSA6IDIgKTtcblx0XHR9XG5cdH0pO1xufVxuXG4vLyBTdXBwb3J0OiBJRTw5XG4vLyBVc2UgZGVmYXVsdFZhbHVlIGluIHBsYWNlIG9mIGdldEF0dHJpYnV0ZShcInZhbHVlXCIpXG5pZiAoICFzdXBwb3J0LmF0dHJpYnV0ZXMgfHwgIWFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRkaXYuaW5uZXJIVE1MID0gXCI8aW5wdXQvPlwiO1xuXHRkaXYuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiwgXCJcIiApO1xuXHRyZXR1cm4gZGl2LmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCBcInZhbHVlXCIgKSA9PT0gXCJcIjtcbn0pICkge1xuXHRhZGRIYW5kbGUoIFwidmFsdWVcIiwgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdGlmICggIWlzWE1MICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGVmYXVsdFZhbHVlO1xuXHRcdH1cblx0fSk7XG59XG5cbi8vIFN1cHBvcnQ6IElFPDlcbi8vIFVzZSBnZXRBdHRyaWJ1dGVOb2RlIHRvIGZldGNoIGJvb2xlYW5zIHdoZW4gZ2V0QXR0cmlidXRlIGxpZXNcbmlmICggIWFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRyZXR1cm4gZGl2LmdldEF0dHJpYnV0ZShcImRpc2FibGVkXCIpID09IG51bGw7XG59KSApIHtcblx0YWRkSGFuZGxlKCBib29sZWFucywgZnVuY3Rpb24oIGVsZW0sIG5hbW
9673UsIGlzWE1MICkge1xuXHRcdHZhciB2YWw7XG5cdFx0aWYgKCAhaXNYTUwgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbVsgbmFtZSBdID09PSB0cnVlID8gbmFtZS50b0xvd2VyQ2FzZSgpIDpcblx0XHRcdFx0XHQodmFsID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCBuYW1lICkpICYmIHZhbC5zcGVjaWZpZWQgP1xuXHRcdFx0XHRcdHZhbC52YWx1ZSA6XG5cdFx0XHRcdG51bGw7XG5cdFx0fVxuXHR9KTtcbn1cblxucmV0dXJuIFNpenpsZTtcblxufSkoIHdpbmRvdyApO1xuXG5cblxualF1ZXJ5LmZpbmQgPSBTaXp6bGU7XG5qUXVlcnkuZXhwciA9IFNpenpsZS5zZWxlY3RvcnM7XG5qUXVlcnkuZXhwcltcIjpcIl0gPSBqUXVlcnkuZXhwci5wc2V1ZG9zO1xualF1ZXJ5LnVuaXF1ZSA9IFNpenpsZS51bmlxdWVTb3J0O1xualF1ZXJ5LnRleHQgPSBTaXp6bGUuZ2V0VGV4dDtcbmpRdWVyeS5pc1hNTERvYyA9IFNpenpsZS5pc1hNTDtcbmpRdWVyeS5jb250YWlucyA9IFNpenpsZS5jb250YWlucztcblxuXG5cbnZhciBybmVlZHNDb250ZXh0ID0galF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0O1xuXG52YXIgcnNpbmdsZVRhZyA9ICgvXjwoXFx3KylcXHMqXFwvPz4oPzo8XFwvXFwxPnwpJC8pO1xuXG5cblxudmFyIHJpc1NpbXBsZSA9IC9eLlteOiNcXFtcXC4sXSokLztcblxuLy8gSW1wbGVtZW50IHRoZSBpZGVudGljYWwgZnVuY3Rpb25hbGl0eSBmb3IgZmlsdGVyIGFuZCBub3RcbmZ1bmN0aW9uIHdpbm5vdyggZWxlbWVudHMsIHF1YWxpZmllciwgbm90ICkge1xuXHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBxdWFsaWZpZXIgKSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSwgaSApIHtcblx0XHRcdC8qIGpzaGludCAtVzAxOCAqL1xuXHRcdFx0cmV0dXJuICEhcXVhbGlmaWVyLmNhbGwoIGVsZW0sIGksIGVsZW0gKSAhPT0gbm90O1xuXHRcdH0pO1xuXG5cdH1cblxuXHRpZiAoIHF1YWxpZmllci5ub2RlVHlwZSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAoIGVsZW0gPT09IHF1YWxpZmllciApICE9PSBub3Q7XG5cdFx0fSk7XG5cblx0fVxuXG5cdGlmICggdHlwZW9mIHF1YWxpZmllciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRpZiAoIHJpc1NpbXBsZS50ZXN0KCBxdWFsaWZpZXIgKSApIHtcblx0XHRcdHJldHVybiBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIsIGVsZW1lbnRzLCBub3QgKTtcblx0XHR9XG5cblx0XHRxdWFsaWZpZXIgPSBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIsIGVsZW1lbnRzICk7XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gKCBpbmRleE9mLmNhbGwoIHF1YWxpZmllciwgZWxlbSApID49IDAgKSAhPT0gbm90O1xuXHR9KTtcbn1cblxualF1ZXJ5LmZpbHRlciA9IGZ1bmN0aW9uKCBleHByLCBlbGVtcywgbm90ICkge1xuXHR2YXIgZWxlbSA9IGVsZW1zWyAwIF07XG5cblx0aWYgKCBub3QgKSB7XG5cdFx0ZXhwciA9IFwiOm5vdChcIiArIGV4cHIgKyBcIilcIjtcblx0fVxuXG5cdHJldHVybiBlbGVtcy5sZW5ndGggPT09IDEgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSA/XG5cdFx0alF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBlbGVtLCBleHByICkgPyBbIGVsZW0gXSA6IFtdIDpcblx0XHRqUXVlcnkuZmluZC5tYXRjaGVzKCBleHByLCBqUXVlcnkuZ3JlcCggZWxlbXMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0ubm9kZVR5cGUgPT09IDE7XG5cdFx0fSkpO1xufTtcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdGZpbmQ6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgaSxcblx0XHRcdGxlbiA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0cmV0ID0gW10sXG5cdFx0XHRzZWxmID0gdGhpcztcblxuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkoIHNlbGVjdG9yICkuZmlsdGVyKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRcdGlmICggalF1ZXJ5LmNvbnRhaW5zKCBzZWxmWyBpIF0sIHRoaXMgKSApIHtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSkgKTtcblx0XHR9XG5cblx0XHRmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0alF1ZXJ5LmZpbmQoIHNlbGVjdG9yLCBzZWxmWyBpIF0sIHJldCApO1xuXHRcdH1cblxuXHRcdC8vIE5lZWRlZCBiZWNhdXNlICQoIHNlbGVjdG9yLCBjb250ZXh0ICkgYmVjb21lcyAkKCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKVxuXHRcdHJldCA9IHRoaXMucHVzaFN0YWNrKCBsZW4gPiAxID8galF1ZXJ5LnVuaXF1ZSggcmV0ICkgOiByZXQgKTtcblx0XHRyZXQuc2VsZWN0b3IgPSB0aGlzLnNlbGVjdG9yID8gdGhpcy5zZWxlY3RvciArIFwiIFwiICsgc2VsZWN0b3IgOiBzZWxlY3Rvcjtcblx0XHRyZXR1cm4gcmV0O1xuXHR9LFxuXHRmaWx0ZXI6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyh0aGlzLCBzZWxlY3RvciB8fCBbXSwgZmFsc2UpICk7XG5cdH0sXG5cdG5vdDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KHRoaXMsIHNlbGVjdG9yIHx8IFtdLCB0cnVlKSApO1xuXHR9LFxuXHRpczogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiAhIXdpbm5vdyhcblx0XHRcdHRoaXMsXG5cblx0XHRcdC8vIElmIHRoaXMgaXMgYSBwb3NpdGlvbmFsL3JlbGF0aXZlIHNlbGVjdG9yLCBjaGVjayBtZW1iZXJzaGlwIGluIHRoZSByZXR1cm5lZCBzZXRcblx0XHRcdC8vIHNvICQoXCJwOmZpcnN0XCIpLmlzKFwicDpsYXN0XCIpIHdvbid0IHJldHVybiB0cnVlIGZvciBhIGRvYyB3aXRoIHR3byBcInBcIi5cblx0XHRcdHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiAmJiBybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICkgP1xuXHRcdFx0XHRqUXVlcnkoIHNlbGVjdG9yICkgOlxuXHRcdFx0XHRzZWxlY3RvciB8fCBbXSxcblx0XHRcdGZhbHNlXG5cdFx0KS5sZW5ndGg7XG5cdH1cbn0pO1xuXG5cbi8vIEluaXRpYWxpemUgYSBqUXVlcnkgb2JqZWN0XG5cblxuLy8gQSBjZW50cmFsIHJlZmVyZW5jZSB0byB0aGUgcm9vdCBqUXVlcnkoZG9jdW1lbnQpXG52YXIgcm9vdGpRdWVyeSxcblxuXHQvLyBBIHNpbXBsZSB3YXkgdG8gY2hlY2sgZm9yIEhUTUwgc3RyaW5nc1xuXHQvLyBQcmlvcml0aXplICNpZCBvdmVyIDx0YWc+IHRvIGF2b2lkIFhTUyB2aWEgbG9jYXRpb24uaGFzaCAoIzk1MjEpXG5cdC8vIFN0cmljdCBIVE1MIHJlY29nbml0aW9uICgjMTEyOTA6IG11c3Qgc3RhcnQgd2l0aCA8KVxuXHRycXVpY2tFeHByID0gL14oPzpcXHMqKDxbXFx3XFxXXSs+KVtePl0qfCMoW1xcdy1dKikpJC8sXG5cblx0aW5pdCA9IGpRdWVyeS5mbi5pbml0ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkge1xuXHRcdHZhciBtYXRjaCwgZWxlbTtcblxuXHRcdC8vIEhBTkRMRTogJChcIlwiKSwgJChudWxsKSwgJ
9673Ch1bmRlZmluZWQpLCAkKGZhbHNlKVxuXHRcdGlmICggIXNlbGVjdG9yICkge1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXG5cdFx0Ly8gSGFuZGxlIEhUTUwgc3RyaW5nc1xuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0aWYgKCBzZWxlY3RvclswXSA9PT0gXCI8XCIgJiYgc2VsZWN0b3JbIHNlbGVjdG9yLmxlbmd0aCAtIDEgXSA9PT0gXCI+XCIgJiYgc2VsZWN0b3IubGVuZ3RoID49IDMgKSB7XG5cdFx0XHRcdC8vIEFzc3VtZSB0aGF0IHN0cmluZ3MgdGhhdCBzdGFydCBhbmQgZW5kIHdpdGggPD4gYXJlIEhUTUwgYW5kIHNraXAgdGhlIHJlZ2V4IGNoZWNrXG5cdFx0XHRcdG1hdGNoID0gWyBudWxsLCBzZWxlY3RvciwgbnVsbCBdO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWF0Y2ggaHRtbCBvciBtYWtlIHN1cmUgbm8gY29udGV4dCBpcyBzcGVjaWZpZWQgZm9yICNpZFxuXHRcdFx0aWYgKCBtYXRjaCAmJiAobWF0Y2hbMV0gfHwgIWNvbnRleHQpICkge1xuXG5cdFx0XHRcdC8vIEhBTkRMRTogJChodG1sKSAtPiAkKGFycmF5KVxuXHRcdFx0XHRpZiAoIG1hdGNoWzFdICkge1xuXHRcdFx0XHRcdGNvbnRleHQgPSBjb250ZXh0IGluc3RhbmNlb2YgalF1ZXJ5ID8gY29udGV4dFswXSA6IGNvbnRleHQ7XG5cblx0XHRcdFx0XHQvLyBPcHRpb24gdG8gcnVuIHNjcmlwdHMgaXMgdHJ1ZSBmb3IgYmFjay1jb21wYXRcblx0XHRcdFx0XHQvLyBJbnRlbnRpb25hbGx5IGxldCB0aGUgZXJyb3IgYmUgdGhyb3duIGlmIHBhcnNlSFRNTCBpcyBub3QgcHJlc2VudFxuXHRcdFx0XHRcdGpRdWVyeS5tZXJnZSggdGhpcywgalF1ZXJ5LnBhcnNlSFRNTChcblx0XHRcdFx0XHRcdG1hdGNoWzFdLFxuXHRcdFx0XHRcdFx0Y29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBkb2N1bWVudCxcblx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQpICk7XG5cblx0XHRcdFx0XHQvLyBIQU5ETEU6ICQoaHRtbCwgcHJvcHMpXG5cdFx0XHRcdFx0aWYgKCByc2luZ2xlVGFnLnRlc3QoIG1hdGNoWzFdICkgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvbnRleHQgKSApIHtcblx0XHRcdFx0XHRcdGZvciAoIG1hdGNoIGluIGNvbnRleHQgKSB7XG5cdFx0XHRcdFx0XHRcdC8vIFByb3BlcnRpZXMgb2YgY29udGV4dCBhcmUgY2FsbGVkIGFzIG1ldGhvZHMgaWYgcG9zc2libGVcblx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdGhpc1sgbWF0Y2ggXSApICkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXNbIG1hdGNoIF0oIGNvbnRleHRbIG1hdGNoIF0gKTtcblxuXHRcdFx0XHRcdFx0XHQvLyAuLi5hbmQgb3RoZXJ3aXNlIHNldCBhcyBhdHRyaWJ1dGVzXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5hdHRyKCBtYXRjaCwgY29udGV4dFsgbWF0Y2ggXSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cblx0XHRcdFx0Ly8gSEFORExFOiAkKCNpZClcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIG1hdGNoWzJdICk7XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBCbGFja2JlcnJ5IDQuNlxuXHRcdFx0XHRcdC8vIGdFQklEIHJldHVybnMgbm9kZXMgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudCAoIzY5NjMpXG5cdFx0XHRcdFx0aWYgKCBlbGVtICYmIGVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0XHRcdC8vIEluamVjdCB0aGUgZWxlbWVudCBkaXJlY3RseSBpbnRvIHRoZSBqUXVlcnkgb2JqZWN0XG5cdFx0XHRcdFx0XHR0aGlzLmxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHR0aGlzWzBdID0gZWxlbTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR0aGlzLmNvbnRleHQgPSBkb2N1bWVudDtcblx0XHRcdFx0XHR0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3I7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH1cblxuXHRcdFx0Ly8gSEFORExFOiAkKGV4cHIsICQoLi4uKSlcblx0XHRcdH0gZWxzZSBpZiAoICFjb250ZXh0IHx8IGNvbnRleHQuanF1ZXJ5ICkge1xuXHRcdFx0XHRyZXR1cm4gKCBjb250ZXh0IHx8IHJvb3RqUXVlcnkgKS5maW5kKCBzZWxlY3RvciApO1xuXG5cdFx0XHQvLyBIQU5ETEU6ICQoZXhwciwgY29udGV4dClcblx0XHRcdC8vICh3aGljaCBpcyBqdXN0IGVxdWl2YWxlbnQgdG86ICQoY29udGV4dCkuZmluZChleHByKVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuY29uc3RydWN0b3IoIGNvbnRleHQgKS5maW5kKCBzZWxlY3RvciApO1xuXHRcdFx0fVxuXG5cdFx0Ly8gSEFORExFOiAkKERPTUVsZW1lbnQpXG5cdFx0fSBlbHNlIGlmICggc2VsZWN0b3Iubm9kZVR5cGUgKSB7XG5cdFx0XHR0aGlzLmNvbnRleHQgPSB0aGlzWzBdID0gc2VsZWN0b3I7XG5cdFx0XHR0aGlzLmxlbmd0aCA9IDE7XG5cdFx0XHRyZXR1cm4gdGhpcztcblxuXHRcdC8vIEhBTkRMRTogJChmdW5jdGlvbilcblx0XHQvLyBTaG9ydGN1dCBmb3IgZG9jdW1lbnQgcmVhZHlcblx0XHR9IGVsc2UgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggc2VsZWN0b3IgKSApIHtcblx0XHRcdHJldHVybiB0eXBlb2Ygcm9vdGpRdWVyeS5yZWFkeSAhPT0gXCJ1bmRlZmluZWRcIiA/XG5cdFx0XHRcdHJvb3RqUXVlcnkucmVhZHkoIHNlbGVjdG9yICkgOlxuXHRcdFx0XHQvLyBFeGVjdXRlIGltbWVkaWF0ZWx5IGlmIHJlYWR5IGlzIG5vdCBwcmVzZW50XG5cdFx0XHRcdHNlbGVjdG9yKCBqUXVlcnkgKTtcblx0XHR9XG5cblx0XHRpZiAoIHNlbGVjdG9yLnNlbGVjdG9yICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHR0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3Iuc2VsZWN0b3I7XG5cdFx0XHR0aGlzLmNvbnRleHQgPSBzZWxlY3Rvci5jb250ZXh0O1xuXHRcdH1cblxuXHRcdHJldHVybiBqUXVlcnkubWFrZUFycmF5KCBzZWxlY3RvciwgdGhpcyApO1xuXHR9O1xuXG4vLyBHaX
9673ZlIHRoZSBpbml0IGZ1bmN0aW9uIHRoZSBqUXVlcnkgcHJvdG90eXBlIGZvciBsYXRlciBpbnN0YW50aWF0aW9uXG5pbml0LnByb3RvdHlwZSA9IGpRdWVyeS5mbjtcblxuLy8gSW5pdGlhbGl6ZSBjZW50cmFsIHJlZmVyZW5jZVxucm9vdGpRdWVyeSA9IGpRdWVyeSggZG9jdW1lbnQgKTtcblxuXG52YXIgcnBhcmVudHNwcmV2ID0gL14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sXG5cdC8vIE1ldGhvZHMgZ3VhcmFudGVlZCB0byBwcm9kdWNlIGEgdW5pcXVlIHNldCB3aGVuIHN0YXJ0aW5nIGZyb20gYSB1bmlxdWUgc2V0XG5cdGd1YXJhbnRlZWRVbmlxdWUgPSB7XG5cdFx0Y2hpbGRyZW46IHRydWUsXG5cdFx0Y29udGVudHM6IHRydWUsXG5cdFx0bmV4dDogdHJ1ZSxcblx0XHRwcmV2OiB0cnVlXG5cdH07XG5cbmpRdWVyeS5leHRlbmQoe1xuXHRkaXI6IGZ1bmN0aW9uKCBlbGVtLCBkaXIsIHVudGlsICkge1xuXHRcdHZhciBtYXRjaGVkID0gW10sXG5cdFx0XHR0cnVuY2F0ZSA9IHVudGlsICE9PSB1bmRlZmluZWQ7XG5cblx0XHR3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICYmIGVsZW0ubm9kZVR5cGUgIT09IDkgKSB7XG5cdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdGlmICggdHJ1bmNhdGUgJiYgalF1ZXJ5KCBlbGVtICkuaXMoIHVudGlsICkgKSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0bWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBtYXRjaGVkO1xuXHR9LFxuXG5cdHNpYmxpbmc6IGZ1bmN0aW9uKCBuLCBlbGVtICkge1xuXHRcdHZhciBtYXRjaGVkID0gW107XG5cblx0XHRmb3IgKCA7IG47IG4gPSBuLm5leHRTaWJsaW5nICkge1xuXHRcdFx0aWYgKCBuLm5vZGVUeXBlID09PSAxICYmIG4gIT09IGVsZW0gKSB7XG5cdFx0XHRcdG1hdGNoZWQucHVzaCggbiApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBtYXRjaGVkO1xuXHR9XG59KTtcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdGhhczogZnVuY3Rpb24oIHRhcmdldCApIHtcblx0XHR2YXIgdGFyZ2V0cyA9IGpRdWVyeSggdGFyZ2V0LCB0aGlzICksXG5cdFx0XHRsID0gdGFyZ2V0cy5sZW5ndGg7XG5cblx0XHRyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgaSA9IDA7XG5cdFx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdGlmICggalF1ZXJ5LmNvbnRhaW5zKCB0aGlzLCB0YXJnZXRzW2ldICkgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblxuXHRjbG9zZXN0OiBmdW5jdGlvbiggc2VsZWN0b3JzLCBjb250ZXh0ICkge1xuXHRcdHZhciBjdXIsXG5cdFx0XHRpID0gMCxcblx0XHRcdGwgPSB0aGlzLmxlbmd0aCxcblx0XHRcdG1hdGNoZWQgPSBbXSxcblx0XHRcdHBvcyA9IHJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3JzICkgfHwgdHlwZW9mIHNlbGVjdG9ycyAhPT0gXCJzdHJpbmdcIiA/XG5cdFx0XHRcdGpRdWVyeSggc2VsZWN0b3JzLCBjb250ZXh0IHx8IHRoaXMuY29udGV4dCApIDpcblx0XHRcdFx0MDtcblxuXHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdGZvciAoIGN1ciA9IHRoaXNbaV07IGN1ciAmJiBjdXIgIT09IGNvbnRleHQ7IGN1ciA9IGN1ci5wYXJlbnROb2RlICkge1xuXHRcdFx0XHQvLyBBbHdheXMgc2tpcCBkb2N1bWVudCBmcmFnbWVudHNcblx0XHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPCAxMSAmJiAocG9zID9cblx0XHRcdFx0XHRwb3MuaW5kZXgoY3VyKSA+IC0xIDpcblxuXHRcdFx0XHRcdC8vIERvbid0IHBhc3Mgbm9uLWVsZW1lbnRzIHRvIFNpenpsZVxuXHRcdFx0XHRcdGN1ci5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0XHRcdFx0alF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKGN1ciwgc2VsZWN0b3JzKSkgKSB7XG5cblx0XHRcdFx0XHRtYXRjaGVkLnB1c2goIGN1ciApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkLmxlbmd0aCA+IDEgPyBqUXVlcnkudW5pcXVlKCBtYXRjaGVkICkgOiBtYXRjaGVkICk7XG5cdH0sXG5cblx0Ly8gRGV0ZXJtaW5lIHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IHdpdGhpbiB0aGUgc2V0XG5cdGluZGV4OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdC8vIE5vIGFyZ3VtZW50LCByZXR1cm4gaW5kZXggaW4gcGFyZW50XG5cdFx0aWYgKCAhZWxlbSApIHtcblx0XHRcdHJldHVybiAoIHRoaXNbIDAgXSAmJiB0aGlzWyAwIF0ucGFyZW50Tm9kZSApID8gdGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGggOiAtMTtcblx0XHR9XG5cblx0XHQvLyBJbmRleCBpbiBzZWxlY3RvclxuXHRcdGlmICggdHlwZW9mIGVsZW0gPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRyZXR1cm4gaW5kZXhPZi5jYWxsKCBqUXVlcnkoIGVsZW0gKSwgdGhpc1sgMCBdICk7XG5cdFx0fVxuXG5cdFx0Ly8gTG9jYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZGVzaXJlZCBlbGVtZW50XG5cdFx0cmV0dXJuIGluZGV4T2YuY2FsbCggdGhpcyxcblxuXHRcdFx0Ly8gSWYgaXQgcmVjZWl2ZXMgYSBqUXVlcnkgb2JqZWN0LCB0aGUgZmlyc3QgZWxlbWVudCBpcyB1c2VkXG5cdFx0XHRlbGVtLmpxdWVyeSA/IGVsZW1bIDAgXSA6IGVsZW1cblx0XHQpO1xuXHR9LFxuXG5cdGFkZDogZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayhcblx0XHRcdGpRdWVyeS51bmlxdWUoXG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggdGhpcy5nZXQoKSwgalF1ZXJ5KCBzZWxlY3RvciwgY29udGV4dCApIClcblx0XHRcdClcblx0XHQpO1xuXHR9LFxuXG5cdGFkZEJhY2s6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5hZGQoIHNlbGVjdG9yID09IG51bGwgP1xuXHRcdFx0dGhpcy5wcmV2T2JqZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZpbHRlcihzZWxlY3Rvcilcblx0XHQpO1xuXHR9XG59KTtcblxuZnVuY3Rpb24gc2libGluZyggY3VyLCBkaXIgKSB7XG5cdHdoaWxlICggKGN1ciA9IGN1cltkaXJdKSAmJiBjdXIubm9kZVR5cGUgIT09IDEgKSB7fVxuXHRyZXR1cm4gY3VyO1xufVxuXG5qUXVlcnkuZWFjaCh7XG5cdHBhcmVudDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0dmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcblx0XHRyZXR1cm4gcGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSAhPT0gMTEgPyBwYXJlbnQgOiBudWxsO1xuXHR9LFxuXHRwYXJlbnRzOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmRpciggZWxlbSwgXCJwYXJlbnROb2RlXCIgKTtcblx0fSxcblx0cGFyZW50c1VudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sIFwicGFyZW50Tm9kZVwiLCB1bnRpbCApO1xuXHR9LFxuXHRuZXh0OiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gc2libGluZyggZWxlbSwgXCJuZXh0U2libGluZ1wiICk7XG5cdH0sXG5cdHByZXY6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybi
9673BzaWJsaW5nKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiICk7XG5cdH0sXG5cdG5leHRBbGw6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIgKTtcblx0fSxcblx0cHJldkFsbDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIgKTtcblx0fSxcblx0bmV4dFVudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sIFwibmV4dFNpYmxpbmdcIiwgdW50aWwgKTtcblx0fSxcblx0cHJldlVudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIsIHVudGlsICk7XG5cdH0sXG5cdHNpYmxpbmdzOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LnNpYmxpbmcoICggZWxlbS5wYXJlbnROb2RlIHx8IHt9ICkuZmlyc3RDaGlsZCwgZWxlbSApO1xuXHR9LFxuXHRjaGlsZHJlbjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5zaWJsaW5nKCBlbGVtLmZpcnN0Q2hpbGQgKTtcblx0fSxcblx0Y29udGVudHM6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBlbGVtLmNvbnRlbnREb2N1bWVudCB8fCBqUXVlcnkubWVyZ2UoIFtdLCBlbGVtLmNoaWxkTm9kZXMgKTtcblx0fVxufSwgZnVuY3Rpb24oIG5hbWUsIGZuICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCB1bnRpbCwgc2VsZWN0b3IgKSB7XG5cdFx0dmFyIG1hdGNoZWQgPSBqUXVlcnkubWFwKCB0aGlzLCBmbiwgdW50aWwgKTtcblxuXHRcdGlmICggbmFtZS5zbGljZSggLTUgKSAhPT0gXCJVbnRpbFwiICkge1xuXHRcdFx0c2VsZWN0b3IgPSB1bnRpbDtcblx0XHR9XG5cblx0XHRpZiAoIHNlbGVjdG9yICYmIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdG1hdGNoZWQgPSBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgbWF0Y2hlZCApO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5sZW5ndGggPiAxICkge1xuXHRcdFx0Ly8gUmVtb3ZlIGR1cGxpY2F0ZXNcblx0XHRcdGlmICggIWd1YXJhbnRlZWRVbmlxdWVbIG5hbWUgXSApIHtcblx0XHRcdFx0alF1ZXJ5LnVuaXF1ZSggbWF0Y2hlZCApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXZlcnNlIG9yZGVyIGZvciBwYXJlbnRzKiBhbmQgcHJldi1kZXJpdmF0aXZlc1xuXHRcdFx0aWYgKCBycGFyZW50c3ByZXYudGVzdCggbmFtZSApICkge1xuXHRcdFx0XHRtYXRjaGVkLnJldmVyc2UoKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIG1hdGNoZWQgKTtcblx0fTtcbn0pO1xudmFyIHJub3R3aGl0ZSA9ICgvXFxTKy9nKTtcblxuXG5cbi8vIFN0cmluZyB0byBPYmplY3Qgb3B0aW9ucyBmb3JtYXQgY2FjaGVcbnZhciBvcHRpb25zQ2FjaGUgPSB7fTtcblxuLy8gQ29udmVydCBTdHJpbmctZm9ybWF0dGVkIG9wdGlvbnMgaW50byBPYmplY3QtZm9ybWF0dGVkIG9uZXMgYW5kIHN0b3JlIGluIGNhY2hlXG5mdW5jdGlvbiBjcmVhdGVPcHRpb25zKCBvcHRpb25zICkge1xuXHR2YXIgb2JqZWN0ID0gb3B0aW9uc0NhY2hlWyBvcHRpb25zIF0gPSB7fTtcblx0alF1ZXJ5LmVhY2goIG9wdGlvbnMubWF0Y2goIHJub3R3aGl0ZSApIHx8IFtdLCBmdW5jdGlvbiggXywgZmxhZyApIHtcblx0XHRvYmplY3RbIGZsYWcgXSA9IHRydWU7XG5cdH0pO1xuXHRyZXR1cm4gb2JqZWN0O1xufVxuXG4vKlxuICogQ3JlYXRlIGEgY2FsbGJhY2sgbGlzdCB1c2luZyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6XG4gKlxuICpcdG9wdGlvbnM6IGFuIG9wdGlvbmFsIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIG9wdGlvbnMgdGhhdCB3aWxsIGNoYW5nZSBob3dcbiAqXHRcdFx0dGhlIGNhbGxiYWNrIGxpc3QgYmVoYXZlcyBvciBhIG1vcmUgdHJhZGl0aW9uYWwgb3B0aW9uIG9iamVjdFxuICpcbiAqIEJ5IGRlZmF1bHQgYSBjYWxsYmFjayBsaXN0IHdpbGwgYWN0IGxpa2UgYW4gZXZlbnQgY2FsbGJhY2sgbGlzdCBhbmQgY2FuIGJlXG4gKiBcImZpcmVkXCIgbXVsdGlwbGUgdGltZXMuXG4gKlxuICogUG9zc2libGUgb3B0aW9uczpcbiAqXG4gKlx0b25jZTpcdFx0XHR3aWxsIGVuc3VyZSB0aGUgY2FsbGJhY2sgbGlzdCBjYW4gb25seSBiZSBmaXJlZCBvbmNlIChsaWtlIGEgRGVmZXJyZWQpXG4gKlxuICpcdG1lbW9yeTpcdFx0XHR3aWxsIGtlZXAgdHJhY2sgb2YgcHJldmlvdXMgdmFsdWVzIGFuZCB3aWxsIGNhbGwgYW55IGNhbGxiYWNrIGFkZGVkXG4gKlx0XHRcdFx0XHRhZnRlciB0aGUgbGlzdCBoYXMgYmVlbiBmaXJlZCByaWdodCBhd2F5IHdpdGggdGhlIGxhdGVzdCBcIm1lbW9yaXplZFwiXG4gKlx0XHRcdFx0XHR2YWx1ZXMgKGxpa2UgYSBEZWZlcnJlZClcbiAqXG4gKlx0dW5pcXVlOlx0XHRcdHdpbGwgZW5zdXJlIGEgY2FsbGJhY2sgY2FuIG9ubHkgYmUgYWRkZWQgb25jZSAobm8gZHVwbGljYXRlIGluIHRoZSBsaXN0KVxuICpcbiAqXHRzdG9wT25GYWxzZTpcdGludGVycnVwdCBjYWxsaW5ncyB3aGVuIGEgY2FsbGJhY2sgcmV0dXJucyBmYWxzZVxuICpcbiAqL1xualF1ZXJ5LkNhbGxiYWNrcyA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXG5cdC8vIENvbnZlcnQgb3B0aW9ucyBmcm9tIFN0cmluZy1mb3JtYXR0ZWQgdG8gT2JqZWN0LWZvcm1hdHRlZCBpZiBuZWVkZWRcblx0Ly8gKHdlIGNoZWNrIGluIGNhY2hlIGZpcnN0KVxuXHRvcHRpb25zID0gdHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCIgP1xuXHRcdCggb3B0aW9uc0NhY2hlWyBvcHRpb25zIF0gfHwgY3JlYXRlT3B0aW9ucyggb3B0aW9ucyApICkgOlxuXHRcdGpRdWVyeS5leHRlbmQoIHt9LCBvcHRpb25zICk7XG5cblx0dmFyIC8vIExhc3QgZmlyZSB2YWx1ZSAoZm9yIG5vbi1mb3JnZXR0YWJsZSBsaXN0cylcblx0XHRtZW1vcnksXG5cdFx0Ly8gRmxhZyB0byBrbm93IGlmIGxpc3Qgd2FzIGFscmVhZHkgZmlyZWRcblx0XHRmaXJlZCxcblx0XHQvLyBGbGFnIHRvIGtub3cgaWYgbGlzdCBpcyBjdXJyZW50bHkgZmlyaW5nXG5cdFx0ZmlyaW5nLFxuXHRcdC8vIEZpcnN0IGNhbGxiYWNrIHRvIGZpcmUgKHVzZWQgaW50ZXJuYWxseSBieSBhZGQgYW5kIGZpcmVXaXRoKVxuXHRcdGZpcmluZ1N0YXJ0LFxuXHRcdC8vIEVuZCBvZiB0aGUgbG9vcCB3aGVuIGZpcmluZ1xuXHRcdGZpcmluZ0xlbmd0aCxcblx0XHQvLyBJbmRleCBvZiBjdXJyZW50bHkgZmlyaW5nIGNhbGxiYWNrIChtb2RpZmllZCBieSByZW1vdmUgaWYgbmVlZGVkKVxuXHRcdGZpcmluZ0luZGV4LFxuXHRcdC8vIEFjdHVhbCBjYWxsYmFjayBsaXN0XG5cdFx0bGlzdCA9IFtdLFxuXHRcdC8vIFN0YWNrIG9mIGZpcmUgY2FsbHMgZm9yIHJlcGVhdGFibGUgbGlzdHNcblx0XHRzdGFjayA9ICFvcHRpb25zLm9uY2UgJiYgW10sXG5cdFx0Ly8gRmlyZSBjYWxsYmFja3Ncblx0XHRmaXJlID0gZnVuY3Rpb24oIGRhdGEgKSB7XG5cdFx0XHRtZW1vcnkgPSBvcHRpb25zLm1lbW9yeSAmJiBkYXRhO1xuXHRcdFx0ZmlyZWQgPSB0cnVlO1xuXHRcdFx0ZmlyaW5nSW5kZXggPSBmaXJpbmdTdGFydCB8fCAwO1xuXHRcdFx0ZmlyaW5nU3RhcnQgPSAwO1xuXHRcdFx0ZmlyaW5nTGVuZ3RoID0gbGlzdC5sZW5ndGg7XG5cdFx0XHRmaXJpbmcgPSB0cnVlO1xuXHRcdFx0Zm9yICggOyBsaXN0ICYmIGZpcmluZ0luZGV4IDwgZmlyaW5nTGVuZ3RoOyBmaXJpbmdJbmRleCsrICkge1xuXHRcdFx0XHRpZiAoIGxpc3RbIGZpcmluZ0luZGV4IF0uYXBwbHkoIGRhdGFbIDAgXSwgZGF0YVsgMSBdICkgPT09IGZhbHNlICYmIG9wdGlvbnMuc3RvcE9uRmFsc2UgKSB7XG5cdFx0XHRcdFx0bWVtb3J5ID0gZmFsc2U7IC8vIFRvIHByZXZlbnQgZnVydGhlciBjYWxscyB1c2luZyBhZGRcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZmlyaW5nID0gZmFsc2U7XG5cdFx0XHRpZiAoIGxpc3QgKSB7XG5cdFx0XHRcdGlmICggc3RhY2sgKSB7XG5cdFx0XHRcdFx0aWYgKCBzdGFjay5sZW5ndGggKSB7XG5cdFx0XHRcdFx0XHRmaXJlKCBzdGFjay5zaGlmdCgpICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKCBtZW1vcnkgKSB7XG5cdFx0XHRcdFx0bGlzdCA9IFtdO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNlbGYuZGlzYWJsZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvLyBBY3R1YWwgQ2FsbGJhY2tzIG9iamVjdFxuXHRcdHNlbGYgPSB7XG5cdFx0XHQvLyBBZGQgYSBjYWxsYmFjayBvciBhIGNvbGxlY3Rpb24gb2YgY2FsbGJhY2tzIHRvIH
9673RoZSBsaXN0XG5cdFx0XHRhZGQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGxpc3QgKSB7XG5cdFx0XHRcdFx0Ly8gRmlyc3QsIHdlIHNhdmUgdGhlIGN1cnJlbnQgbGVuZ3RoXG5cdFx0XHRcdFx0dmFyIHN0YXJ0ID0gbGlzdC5sZW5ndGg7XG5cdFx0XHRcdFx0KGZ1bmN0aW9uIGFkZCggYXJncyApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5lYWNoKCBhcmdzLCBmdW5jdGlvbiggXywgYXJnICkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdHlwZSA9IGpRdWVyeS50eXBlKCBhcmcgKTtcblx0XHRcdFx0XHRcdFx0aWYgKCB0eXBlID09PSBcImZ1bmN0aW9uXCIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCAhb3B0aW9ucy51bmlxdWUgfHwgIXNlbGYuaGFzKCBhcmcgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGxpc3QucHVzaCggYXJnICk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCBhcmcgJiYgYXJnLmxlbmd0aCAmJiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIEluc3BlY3QgcmVjdXJzaXZlbHlcblx0XHRcdFx0XHRcdFx0XHRhZGQoIGFyZyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KSggYXJndW1lbnRzICk7XG5cdFx0XHRcdFx0Ly8gRG8gd2UgbmVlZCB0byBhZGQgdGhlIGNhbGxiYWNrcyB0byB0aGVcblx0XHRcdFx0XHQvLyBjdXJyZW50IGZpcmluZyBiYXRjaD9cblx0XHRcdFx0XHRpZiAoIGZpcmluZyApIHtcblx0XHRcdFx0XHRcdGZpcmluZ0xlbmd0aCA9IGxpc3QubGVuZ3RoO1xuXHRcdFx0XHRcdC8vIFdpdGggbWVtb3J5LCBpZiB3ZSdyZSBub3QgZmlyaW5nIHRoZW5cblx0XHRcdFx0XHQvLyB3ZSBzaG91bGQgY2FsbCByaWdodCBhd2F5XG5cdFx0XHRcdFx0fSBlbHNlIGlmICggbWVtb3J5ICkge1xuXHRcdFx0XHRcdFx0ZmlyaW5nU3RhcnQgPSBzdGFydDtcblx0XHRcdFx0XHRcdGZpcmUoIG1lbW9yeSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cdFx0XHQvLyBSZW1vdmUgYSBjYWxsYmFjayBmcm9tIHRoZSBsaXN0XG5cdFx0XHRyZW1vdmU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGxpc3QgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmVhY2goIGFyZ3VtZW50cywgZnVuY3Rpb24oIF8sIGFyZyApIHtcblx0XHRcdFx0XHRcdHZhciBpbmRleDtcblx0XHRcdFx0XHRcdHdoaWxlICggKCBpbmRleCA9IGpRdWVyeS5pbkFycmF5KCBhcmcsIGxpc3QsIGluZGV4ICkgKSA+IC0xICkge1xuXHRcdFx0XHRcdFx0XHRsaXN0LnNwbGljZSggaW5kZXgsIDEgKTtcblx0XHRcdFx0XHRcdFx0Ly8gSGFuZGxlIGZpcmluZyBpbmRleGVzXG5cdFx0XHRcdFx0XHRcdGlmICggZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICggaW5kZXggPD0gZmlyaW5nTGVuZ3RoICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZmlyaW5nTGVuZ3RoLS07XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGlmICggaW5kZXggPD0gZmlyaW5nSW5kZXggKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmaXJpbmdJbmRleC0tO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdC8vIENoZWNrIGlmIGEgZ2l2ZW4gY2FsbGJhY2sgaXMgaW4gdGhlIGxpc3QuXG5cdFx0XHQvLyBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJuIHdoZXRoZXIgb3Igbm90IGxpc3QgaGFzIGNhbGxiYWNrcyBhdHRhY2hlZC5cblx0XHRcdGhhczogZnVuY3Rpb24oIGZuICkge1xuXHRcdFx0XHRyZXR1cm4gZm4gPyBqUXVlcnkuaW5BcnJheSggZm4sIGxpc3QgKSA+IC0xIDogISEoIGxpc3QgJiYgbGlzdC5sZW5ndGggKTtcblx0XHRcdH0sXG5cdFx0XHQvLyBSZW1vdmUgYWxsIGNhbGxiYWNrcyBmcm9tIHRoZSBsaXN0XG5cdFx0XHRlbXB0eTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGxpc3QgPSBbXTtcblx0XHRcdFx0ZmlyaW5nTGVuZ3RoID0gMDtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gSGF2ZSB0aGUgbGlzdCBkbyBub3RoaW5nIGFueW1vcmVcblx0XHRcdGRpc2FibGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRsaXN0ID0gc3RhY2sgPSBtZW1vcnkgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdC8vIElzIGl0IGRpc2FibGVkP1xuXHRcdFx0ZGlzYWJsZWQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gIWxpc3Q7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gTG9jayB0aGUgbGlzdCBpbiBpdHMgY3VycmVudCBzdGF0ZVxuXHRcdFx0bG9jazogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHN0YWNrID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRpZiAoICFtZW1vcnkgKSB7XG5cdFx0XHRcdFx0c2VsZi5kaXNhYmxlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gSXMgaXQgbG9ja2VkP1xuXHRcdFx0bG9ja2VkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICFzdGFjaztcblx0XHRcdH0sXG5cdFx0XHQvLyBDYWxsIGFsbCBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gY29udGV4dCBhbmQgYXJndW1lbnRzXG5cdFx0XHRmaXJlV2l0aDogZnVuY3Rpb24oIGNvbnRleHQsIGFyZ3MgKSB7XG5cdFx0XHRcdGlmICggbGlzdCAmJiAoICFmaXJlZCB8fCBzdGFjayApICkge1xuXHRcdFx0XHRcdGFyZ3MgPSBhcmdzIHx8IFtdO1xuXHRcdFx0XHRcdGFyZ3MgPSBbIGNvbnRleHQsIGFyZ3Muc2xpY2UgPyBhcmdzLnNsaWNlKCkgOiBhcmdzIF07XG5cdFx0XHRcdFx0aWYgKCBmaXJpbmcgKSB7XG5cdFx0XHRcdFx0XHRzdGFjay5wdXNoKCBhcmdzICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGZpcmUoIGFyZ3MgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gQ2FsbCBhbGwgdGhlIGNhbGxiYWNrcyB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHNcblx0XHRcdGZpcmU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRzZWxmLmZpcmVXaXRoKCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gVG8ga25vdyBpZiB0aGUgY2FsbGJhY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGNhbGxlZCBhdCBsZWFzdCBvbmNlXG5cdFx0XHRmaXJlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhIWZpcmVkO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0cmV0dXJuIHNlbGY7XG59O1xuXG5cbmpRdWVyeS5leHRlbmQoe1xuXG5cdERlZmVycmVkOiBmdW5jdGlvbiggZnVuYyApIHtcblx0XHR2YXIgdHVwbGVzID0gW1xuXHRcdFx0XHQvLyBhY3Rpb24sIGFkZCBsaXN0ZW5lciwgbGlzdGVuZXIgbGlzdCwgZmluYWwgc3RhdGVcblx0XHRcdFx0WyBcInJlc29sdmVcIiwgXCJkb25lXCIsIGpRdWVyeS5DYWxsYmFja3MoXCJvbmNlIG1lbW9yeVwiKSwgXCJyZXNvbHZlZFwiIF0sXG5cdFx0XHRcdFsgXCJyZWplY3RcIiwgXCJmYWlsXCIsIGpRdWVyeS5DYWxsYmFja3MoXCJvbmNlIG1lbW9yeVwiKSwgXCJyZWplY3RlZFwiIF0sXG5cdFx0XHRcdFsgXCJub3RpZnlcIiwgXCJwcm9ncmVzc1wiLCBqUXVlcnkuQ2FsbGJhY2tzKFwibWVtb3J5XCIpIF1cblx0XHRcdF0sXG5cdFx0XHRzdGF0ZSA9IFwicGVuZGluZ1wiLFxuXHRcdFx0cHJvbWlzZSA9IHtcblx0XHRcdFx0c3RhdGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybi
9673BzdGF0ZTtcblx0XHRcdFx0fSxcblx0XHRcdFx0YWx3YXlzOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5kb25lKCBhcmd1bWVudHMgKS5mYWlsKCBhcmd1bWVudHMgKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblx0XHRcdFx0dGhlbjogZnVuY3Rpb24oIC8qIGZuRG9uZSwgZm5GYWlsLCBmblByb2dyZXNzICovICkge1xuXHRcdFx0XHRcdHZhciBmbnMgPSBhcmd1bWVudHM7XG5cdFx0XHRcdFx0cmV0dXJuIGpRdWVyeS5EZWZlcnJlZChmdW5jdGlvbiggbmV3RGVmZXIgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBmbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCBmbnNbIGkgXSApICYmIGZuc1sgaSBdO1xuXHRcdFx0XHRcdFx0XHQvLyBkZWZlcnJlZFsgZG9uZSB8IGZhaWwgfCBwcm9ncmVzcyBdIGZvciBmb3J3YXJkaW5nIGFjdGlvbnMgdG8gbmV3RGVmZXJcblx0XHRcdFx0XHRcdFx0ZGVmZXJyZWRbIHR1cGxlWzFdIF0oZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJldHVybmVkID0gZm4gJiYgZm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRcdFx0XHRcdGlmICggcmV0dXJuZWQgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIHJldHVybmVkLnByb21pc2UgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkLnByb21pc2UoKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuZG9uZSggbmV3RGVmZXIucmVzb2x2ZSApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5mYWlsKCBuZXdEZWZlci5yZWplY3QgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQucHJvZ3Jlc3MoIG5ld0RlZmVyLm5vdGlmeSApO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlclsgdHVwbGVbIDAgXSArIFwiV2l0aFwiIF0oIHRoaXMgPT09IHByb21pc2UgPyBuZXdEZWZlci5wcm9taXNlKCkgOiB0aGlzLCBmbiA/IFsgcmV0dXJuZWQgXSA6IGFyZ3VtZW50cyApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGZucyA9IG51bGw7XG5cdFx0XHRcdFx0fSkucHJvbWlzZSgpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBHZXQgYSBwcm9taXNlIGZvciB0aGlzIGRlZmVycmVkXG5cdFx0XHRcdC8vIElmIG9iaiBpcyBwcm92aWRlZCwgdGhlIHByb21pc2UgYXNwZWN0IGlzIGFkZGVkIHRvIHRoZSBvYmplY3Rcblx0XHRcdFx0cHJvbWlzZTogZnVuY3Rpb24oIG9iaiApIHtcblx0XHRcdFx0XHRyZXR1cm4gb2JqICE9IG51bGwgPyBqUXVlcnkuZXh0ZW5kKCBvYmosIHByb21pc2UgKSA6IHByb21pc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWZlcnJlZCA9IHt9O1xuXG5cdFx0Ly8gS2VlcCBwaXBlIGZvciBiYWNrLWNvbXBhdFxuXHRcdHByb21pc2UucGlwZSA9IHByb21pc2UudGhlbjtcblxuXHRcdC8vIEFkZCBsaXN0LXNwZWNpZmljIG1ldGhvZHNcblx0XHRqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7XG5cdFx0XHR2YXIgbGlzdCA9IHR1cGxlWyAyIF0sXG5cdFx0XHRcdHN0YXRlU3RyaW5nID0gdHVwbGVbIDMgXTtcblxuXHRcdFx0Ly8gcHJvbWlzZVsgZG9uZSB8IGZhaWwgfCBwcm9ncmVzcyBdID0gbGlzdC5hZGRcblx0XHRcdHByb21pc2VbIHR1cGxlWzFdIF0gPSBsaXN0LmFkZDtcblxuXHRcdFx0Ly8gSGFuZGxlIHN0YXRlXG5cdFx0XHRpZiAoIHN0YXRlU3RyaW5nICkge1xuXHRcdFx0XHRsaXN0LmFkZChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHQvLyBzdGF0ZSA9IFsgcmVzb2x2ZWQgfCByZWplY3RlZCBdXG5cdFx0XHRcdFx0c3RhdGUgPSBzdGF0ZVN0cmluZztcblxuXHRcdFx0XHQvLyBbIHJlamVjdF9saXN0IHwgcmVzb2x2ZV9saXN0IF0uZGlzYWJsZTsgcHJvZ3Jlc3NfbGlzdC5sb2NrXG5cdFx0XHRcdH0sIHR1cGxlc1sgaSBeIDEgXVsgMiBdLmRpc2FibGUsIHR1cGxlc1sgMiBdWyAyIF0ubG9jayApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBkZWZlcnJlZFsgcmVzb2x2ZSB8IHJlamVjdCB8IG5vdGlmeSBdXG5cdFx0XHRkZWZlcnJlZFsgdHVwbGVbMF0gXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRkZWZlcnJlZFsgdHVwbGVbMF0gKyBcIldpdGhcIiBdKCB0aGlzID09PSBkZWZlcnJlZCA/IHByb21pc2UgOiB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9O1xuXHRcdFx0ZGVmZXJyZWRbIHR1cGxlWzBdICsgXCJXaXRoXCIgXSA9IGxpc3QuZmlyZVdpdGg7XG5cdFx0fSk7XG5cblx0XHQvLyBNYWtlIHRoZSBkZWZlcnJlZCBhIHByb21pc2Vcblx0XHRwcm9taXNlLnByb21pc2UoIGRlZmVycmVkICk7XG5cblx0XHQvLyBDYWxsIGdpdmVuIGZ1bmMgaWYgYW55XG5cdFx0aWYgKCBmdW5jICkge1xuXHRcdFx0ZnVuYy5jYWxsKCBkZWZlcnJlZCwgZGVmZXJyZWQgKTtcblx0XHR9XG5cblx0XHQvLyBBbGwgZG9uZSFcblx0XHRyZXR1cm4gZGVmZXJyZWQ7XG5cdH0sXG5cblx0Ly8gRGVmZXJyZWQgaGVscGVyXG5cdHdoZW46IGZ1bmN0aW9uKCBzdWJvcmRpbmF0ZSAvKiAsIC4uLiwgc3Vib3JkaW5hdGVOICovICkge1xuXHRcdHZhciBpID0gMCxcblx0XHRcdHJlc29sdmVWYWx1ZXMgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSxcblx0XHRcdGxlbmd0aCA9IHJlc29sdmVWYWx1ZXMubGVuZ3RoLFxuXG5cdFx0XHQvLyB0aGUgY291bnQgb2YgdW5jb21wbGV0ZWQgc3Vib3JkaW5hdGVzXG5cdFx0XHRyZW1haW5pbmcgPSBsZW5ndGggIT09IDEgfHwgKCBzdWJvcmRpbmF0ZSAmJiBqUXVlcnkuaXNGdW5jdGlvbiggc3Vib3JkaW5hdGUucHJvbWlzZSApICkgPyBsZW5ndGggOiAwLFxuXG5cdFx0XHQvLyB0aGUgbWFzdGVyIERlZmVycmVkLiBJZiByZXNvbHZlVmFsdWVzIGNvbnNpc3Qgb2Ygb25seSBhIHNpbmdsZSBEZWZlcnJlZCwganVzdCB1c2UgdGhhdC5cblx0XHRcdGRlZmVycmVkID0gcmVtYWluaW5nID09PSAxID8gc3Vib3JkaW5hdGUgOiBqUXVlcnkuRGVmZXJyZWQoKSxcblxuXHRcdFx0Ly8gVXBkYXRlIGZ1bmN0aW9uIGZvciBib3RoIHJl
9673c29sdmUgYW5kIHByb2dyZXNzIHZhbHVlc1xuXHRcdFx0dXBkYXRlRnVuYyA9IGZ1bmN0aW9uKCBpLCBjb250ZXh0cywgdmFsdWVzICkge1xuXHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0XHRcdGNvbnRleHRzWyBpIF0gPSB0aGlzO1xuXHRcdFx0XHRcdHZhbHVlc1sgaSBdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSA6IHZhbHVlO1xuXHRcdFx0XHRcdGlmICggdmFsdWVzID09PSBwcm9ncmVzc1ZhbHVlcyApIHtcblx0XHRcdFx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGgoIGNvbnRleHRzLCB2YWx1ZXMgKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKCAhKCAtLXJlbWFpbmluZyApICkge1xuXHRcdFx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGNvbnRleHRzLCB2YWx1ZXMgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXG5cdFx0XHRwcm9ncmVzc1ZhbHVlcywgcHJvZ3Jlc3NDb250ZXh0cywgcmVzb2x2ZUNvbnRleHRzO1xuXG5cdFx0Ly8gQWRkIGxpc3RlbmVycyB0byBEZWZlcnJlZCBzdWJvcmRpbmF0ZXM7IHRyZWF0IG90aGVycyBhcyByZXNvbHZlZFxuXHRcdGlmICggbGVuZ3RoID4gMSApIHtcblx0XHRcdHByb2dyZXNzVmFsdWVzID0gbmV3IEFycmF5KCBsZW5ndGggKTtcblx0XHRcdHByb2dyZXNzQ29udGV4dHMgPSBuZXcgQXJyYXkoIGxlbmd0aCApO1xuXHRcdFx0cmVzb2x2ZUNvbnRleHRzID0gbmV3IEFycmF5KCBsZW5ndGggKTtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHRpZiAoIHJlc29sdmVWYWx1ZXNbIGkgXSAmJiBqUXVlcnkuaXNGdW5jdGlvbiggcmVzb2x2ZVZhbHVlc1sgaSBdLnByb21pc2UgKSApIHtcblx0XHRcdFx0XHRyZXNvbHZlVmFsdWVzWyBpIF0ucHJvbWlzZSgpXG5cdFx0XHRcdFx0XHQuZG9uZSggdXBkYXRlRnVuYyggaSwgcmVzb2x2ZUNvbnRleHRzLCByZXNvbHZlVmFsdWVzICkgKVxuXHRcdFx0XHRcdFx0LmZhaWwoIGRlZmVycmVkLnJlamVjdCApXG5cdFx0XHRcdFx0XHQucHJvZ3Jlc3MoIHVwZGF0ZUZ1bmMoIGksIHByb2dyZXNzQ29udGV4dHMsIHByb2dyZXNzVmFsdWVzICkgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQtLXJlbWFpbmluZztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIElmIHdlJ3JlIG5vdCB3YWl0aW5nIG9uIGFueXRoaW5nLCByZXNvbHZlIHRoZSBtYXN0ZXJcblx0XHRpZiAoICFyZW1haW5pbmcgKSB7XG5cdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggcmVzb2x2ZUNvbnRleHRzLCByZXNvbHZlVmFsdWVzICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGRlZmVycmVkLnByb21pc2UoKTtcblx0fVxufSk7XG5cblxuLy8gVGhlIGRlZmVycmVkIHVzZWQgb24gRE9NIHJlYWR5XG52YXIgcmVhZHlMaXN0O1xuXG5qUXVlcnkuZm4ucmVhZHkgPSBmdW5jdGlvbiggZm4gKSB7XG5cdC8vIEFkZCB0aGUgY2FsbGJhY2tcblx0alF1ZXJ5LnJlYWR5LnByb21pc2UoKS5kb25lKCBmbiApO1xuXG5cdHJldHVybiB0aGlzO1xufTtcblxualF1ZXJ5LmV4dGVuZCh7XG5cdC8vIElzIHRoZSBET00gcmVhZHkgdG8gYmUgdXNlZD8gU2V0IHRvIHRydWUgb25jZSBpdCBvY2N1cnMuXG5cdGlzUmVhZHk6IGZhbHNlLFxuXG5cdC8vIEEgY291bnRlciB0byB0cmFjayBob3cgbWFueSBpdGVtcyB0byB3YWl0IGZvciBiZWZvcmVcblx0Ly8gdGhlIHJlYWR5IGV2ZW50IGZpcmVzLiBTZWUgIzY3ODFcblx0cmVhZHlXYWl0OiAxLFxuXG5cdC8vIEhvbGQgKG9yIHJlbGVhc2UpIHRoZSByZWFkeSBldmVudFxuXHRob2xkUmVhZHk6IGZ1bmN0aW9uKCBob2xkICkge1xuXHRcdGlmICggaG9sZCApIHtcblx0XHRcdGpRdWVyeS5yZWFkeVdhaXQrKztcblx0XHR9IGVsc2Uge1xuXHRcdFx0alF1ZXJ5LnJlYWR5KCB0cnVlICk7XG5cdFx0fVxuXHR9LFxuXG5cdC8vIEhhbmRsZSB3aGVuIHRoZSBET00gaXMgcmVhZHlcblx0cmVhZHk6IGZ1bmN0aW9uKCB3YWl0ICkge1xuXG5cdFx0Ly8gQWJvcnQgaWYgdGhlcmUgYXJlIHBlbmRpbmcgaG9sZHMgb3Igd2UncmUgYWxyZWFkeSByZWFkeVxuXHRcdGlmICggd2FpdCA9PT0gdHJ1ZSA/IC0talF1ZXJ5LnJlYWR5V2FpdCA6IGpRdWVyeS5pc1JlYWR5ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIFJlbWVtYmVyIHRoYXQgdGhlIERPTSBpcyByZWFkeVxuXHRcdGpRdWVyeS5pc1JlYWR5ID0gdHJ1ZTtcblxuXHRcdC8vIElmIGEgbm9ybWFsIERPTSBSZWFkeSBldmVudCBmaXJlZCwgZGVjcmVtZW50LCBhbmQgd2FpdCBpZiBuZWVkIGJlXG5cdFx0aWYgKCB3YWl0ICE9PSB0cnVlICYmIC0talF1ZXJ5LnJlYWR5V2FpdCA+IDAgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlcmUgYXJlIGZ1bmN0aW9ucyBib3VuZCwgdG8gZXhlY3V0ZVxuXHRcdHJlYWR5TGlzdC5yZXNvbHZlV2l0aCggZG9jdW1lbnQsIFsgalF1ZXJ5IF0gKTtcblxuXHRcdC8vIFRyaWdnZXIgYW55IGJvdW5kIHJlYWR5IGV2ZW50c1xuXHRcdGlmICggalF1ZXJ5LmZuLnRyaWdnZXJIYW5kbGVyICkge1xuXHRcdFx0alF1ZXJ5KCBkb2N1bWVudCApLnRyaWdnZXJIYW5kbGVyKCBcInJlYWR5XCIgKTtcblx0XHRcdGpRdWVyeSggZG9jdW1lbnQgKS5vZmYoIFwicmVhZHlcIiApO1xuXHRcdH1cblx0fVxufSk7XG5cbi8qKlxuICogVGhlIHJlYWR5IGV2ZW50IGhhbmRsZXIgYW5kIHNlbGYgY2xlYW51cCBtZXRob2RcbiAqL1xuZnVuY3Rpb24gY29tcGxldGVkKCkge1xuXHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCBcIkRPTUNvbnRlbnRMb2FkZWRcIiwgY29tcGxldGVkLCBmYWxzZSApO1xuXHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lciggXCJsb2FkXCIsIGNvbXBsZXRlZCwgZmFsc2UgKTtcblx0alF1ZXJ5LnJlYWR5KCk7XG59XG5cbmpRdWVyeS5yZWFkeS5wcm9taXNlID0gZnVuY3Rpb24oIG9iaiApIHtcblx0aWYgKCAhcmVhZHlMaXN0ICkge1xuXG5cdFx0cmVhZHlMaXN0ID0galF1ZXJ5LkRlZmVycmVkKCk7XG5cblx0XHQvLyBDYXRjaCBjYXNlcyB3aGVyZSAkKGRvY3VtZW50KS5yZWFkeSgpIGlzIGNhbGxlZCBhZnRlciB0aGUgYnJvd3NlciBldmVudCBoYXMgYWxyZWFkeSBvY2N1cnJlZC5cblx0XHQvLyBXZSBvbmNlIHRyaWVkIHRvIHVzZSByZWFkeVN0YXRlIFwiaW50ZXJhY3RpdmVcIiBoZXJlLCBidXQgaXQgY2F1c2VkIGlzc3VlcyBsaWtlIHRoZSBvbmVcblx0XHQvLyBkaXNjb3ZlcmVkIGJ5IENocmlzUyBoZXJlOiBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMjI4MiNjb21tZW50OjE1XG5cdFx0aWYgKCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIgKSB7XG5cdFx0XHQvLyBIYW5kbGUgaXQgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgc2NyaXB0cyB0aGUgb3Bwb3J0dW5pdHkgdG8gZGVsYXkgcmVhZHlcblx0XHRcdHNldFRpbWVvdXQoIGpRdWVyeS5yZWFkeSApO1xuXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gVXNlIHRoZSBoYW5keSBldmVudCBjYWxsYmFja1xuXHRcdFx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggXCJET01Db250ZW50TG9hZGVkXCIsIGNvbXBsZXRlZCwgZmFsc2UgKTtcblxuXHRcdFx0Ly8gQSBmYWxsYmFjayB0byB3aW5kb3cub25sb2FkLCB0aGF0IHdpbGwgYWx3YXlzIHdvcmtcblx0XHRcdHdpbmRvdy5hZGR
9673FdmVudExpc3RlbmVyKCBcImxvYWRcIiwgY29tcGxldGVkLCBmYWxzZSApO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVhZHlMaXN0LnByb21pc2UoIG9iaiApO1xufTtcblxuLy8gS2ljayBvZmYgdGhlIERPTSByZWFkeSBjaGVjayBldmVuIGlmIHRoZSB1c2VyIGRvZXMgbm90XG5qUXVlcnkucmVhZHkucHJvbWlzZSgpO1xuXG5cblxuXG4vLyBNdWx0aWZ1bmN0aW9uYWwgbWV0aG9kIHRvIGdldCBhbmQgc2V0IHZhbHVlcyBvZiBhIGNvbGxlY3Rpb25cbi8vIFRoZSB2YWx1ZS9zIGNhbiBvcHRpb25hbGx5IGJlIGV4ZWN1dGVkIGlmIGl0J3MgYSBmdW5jdGlvblxudmFyIGFjY2VzcyA9IGpRdWVyeS5hY2Nlc3MgPSBmdW5jdGlvbiggZWxlbXMsIGZuLCBrZXksIHZhbHVlLCBjaGFpbmFibGUsIGVtcHR5R2V0LCByYXcgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSBlbGVtcy5sZW5ndGgsXG5cdFx0YnVsayA9IGtleSA9PSBudWxsO1xuXG5cdC8vIFNldHMgbWFueSB2YWx1ZXNcblx0aWYgKCBqUXVlcnkudHlwZSgga2V5ICkgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0Y2hhaW5hYmxlID0gdHJ1ZTtcblx0XHRmb3IgKCBpIGluIGtleSApIHtcblx0XHRcdGpRdWVyeS5hY2Nlc3MoIGVsZW1zLCBmbiwgaSwga2V5W2ldLCB0cnVlLCBlbXB0eUdldCwgcmF3ICk7XG5cdFx0fVxuXG5cdC8vIFNldHMgb25lIHZhbHVlXG5cdH0gZWxzZSBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0Y2hhaW5hYmxlID0gdHJ1ZTtcblxuXHRcdGlmICggIWpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkge1xuXHRcdFx0cmF3ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZiAoIGJ1bGsgKSB7XG5cdFx0XHQvLyBCdWxrIG9wZXJhdGlvbnMgcnVuIGFnYWluc3QgdGhlIGVudGlyZSBzZXRcblx0XHRcdGlmICggcmF3ICkge1xuXHRcdFx0XHRmbi5jYWxsKCBlbGVtcywgdmFsdWUgKTtcblx0XHRcdFx0Zm4gPSBudWxsO1xuXG5cdFx0XHQvLyAuLi5leGNlcHQgd2hlbiBleGVjdXRpbmcgZnVuY3Rpb24gdmFsdWVzXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRidWxrID0gZm47XG5cdFx0XHRcdGZuID0gZnVuY3Rpb24oIGVsZW0sIGtleSwgdmFsdWUgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGJ1bGsuY2FsbCggalF1ZXJ5KCBlbGVtICksIHZhbHVlICk7XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCBmbiApIHtcblx0XHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRmbiggZWxlbXNbaV0sIGtleSwgcmF3ID8gdmFsdWUgOiB2YWx1ZS5jYWxsKCBlbGVtc1tpXSwgaSwgZm4oIGVsZW1zW2ldLCBrZXkgKSApICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGNoYWluYWJsZSA/XG5cdFx0ZWxlbXMgOlxuXG5cdFx0Ly8gR2V0c1xuXHRcdGJ1bGsgP1xuXHRcdFx0Zm4uY2FsbCggZWxlbXMgKSA6XG5cdFx0XHRsZW4gPyBmb
9673iggZWxlbXNbMF0sIGtleSApIDogZW1wdHlHZXQ7XG59O1xuXG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIG9iamVjdCBjYW4gaGF2ZSBkYXRhXG4gKi9cbmpRdWVyeS5hY2NlcHREYXRhID0gZnVuY3Rpb24oIG93bmVyICkge1xuXHQvLyBBY2NlcHRzIG9ubHk6XG5cdC8vICAtIE5vZGVcblx0Ly8gICAgLSBOb2RlLkVMRU1FTlRfTk9ERVxuXHQvLyAgICAtIE5vZGUuRE9DVU1FTlRfTk9ERVxuXHQvLyAgLSBPYmplY3Rcblx0Ly8gICAgLSBBbnlcblx0LyoganNoaW50IC1XMDE4ICovXG5cdHJldHVybiBvd25lci5ub2RlVHlwZSA9PT0gMSB8fCBvd25lci5ub2RlVHlwZSA9PT0gOSB8fCAhKCArb3duZXIubm9kZVR5cGUgKTtcbn07XG5cblxuZnVuY3Rpb24gRGF0YSgpIHtcblx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LFxuXHQvLyBPbGQgV2ViS2l0IGRvZXMgbm90IGhhdmUgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zL2ZyZWV6ZSBtZXRob2QsXG5cdC8vIHJldHVybiBuZXcgZW1wdHkgb2JqZWN0IGluc3RlYWQgd2l0aCBubyBbW3NldF1dIGFjY2Vzc29yXG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggdGhpcy5jYWNoZSA9IHt9LCAwLCB7XG5cdFx0Z2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiB7fTtcblx0XHR9XG5cdH0pO1xuXG5cdHRoaXMuZXhwYW5kbyA9IGpRdWVyeS5leHBhbmRvICsgRGF0YS51aWQrKztcbn1cblxuRGF0YS51aWQgPSAxO1xuRGF0YS5hY2NlcHRzID0galF1ZXJ5LmFjY2VwdERhdGE7XG5cbkRhdGEucHJvdG90eXBlID0ge1xuXHRrZXk6IGZ1bmN0aW9uKCBvd25lciApIHtcblx0XHQvLyBXZSBjYW4gYWNjZXB0IGRhdGEgZm9yIG5vbi1lbGVtZW50IG5vZGVzIGluIG1vZGVybiBicm93c2Vycyxcblx0XHQvLyBidXQgd2Ugc2hvdWxkIG5vdCwgc2VlICM4MzM1LlxuXHRcdC8vIEFsd2F5cyByZXR1cm4gdGhlIGtleSBmb3IgYSBmcm96ZW4gb2JqZWN0LlxuXHRcdGlmICggIURhdGEuYWNjZXB0cyggb3duZXIgKSApIHtcblx0XHRcdHJldHVybiAwO1xuXHRcdH1cblxuXHRcdHZhciBkZXNjcmlwdG9yID0ge30sXG5cdFx0XHQvLyBDaGVjayBpZiB0aGUgb3duZXIgb2JqZWN0IGFscmVhZHkgaGFzIGEgY2FjaGUga2V5XG5cdFx0XHR1bmxvY2sgPSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cblx0XHQvLyBJZiBub3QsIGNyZWF0ZSBvbmVcblx0XHRpZiAoICF1bmxvY2sgKSB7XG5cdFx0XHR1bmxvY2sgPSBEYXRhLnVpZCsrO1xuXG5cdFx0XHQvLyBTZWN1cmUgaXQgaW4gYSBub24tZW51bWVyYWJsZSwgbm9uLXdyaXRhYmxlIHByb3BlcnR5XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRkZXNjcmlwdG9yWyB0aGlzLmV4cGFuZG8gXSA9IHsgdmFsdWU6IHVubG9jayB9O1xuXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydGllcyggb3duZXIsIGRlc2NyaXB0b3IgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0XG5cdFx0XHQvLyBGYWxsYmFjayB0byBhIGxlc3Mgc2VjdXJlIGRlZmluaXRpb25cblx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXHRcdFx0XHRkZXNjcmlwdG9yWyB0aGlzLmV4cGFuZG8gXSA9IHVubG9jaztcblx0XHRcdFx0alF1ZXJ5LmV4dGVuZCggb3duZXIsIGRlc2NyaXB0b3IgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBFbnN1cmUgdGhlIGNhY2hlIG9iamVjdFxuXHRcdGlmICggIXRoaXMuY2FjaGVbIHVubG9jayBdICkge1xuXHRcdFx0dGhpcy5jYWNoZVsgdW5sb2NrIF0gPSB7fTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdW5sb2NrO1xuXHR9LFxuXHRzZXQ6IGZ1bmN0aW9uKCBvd25lciwgZGF0YSwgdmFsdWUgKSB7XG5cdFx0dmFyIHByb3AsXG5cdFx0XHQvLyBUaGVyZSBtYXkgYmUgYW4gdW5sb2NrIGFzc2lnbmVkIHRvIHRoaXMgbm9kZSxcblx0XHRcdC8vIGlmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciB0aGlzIFwib3duZXJcIiwgY3JlYXRlIG9uZSBpbmxpbmVcblx0XHRcdC8vIGFuZCBzZXQgdGhlIHVubG9jayBhcyB0aG91Z2ggYW4gb3duZXIgZW50cnkgaGFkIGFsd2F5cyBleGlzdGVkXG5cdFx0XHR1bmxvY2sgPSB0aGlzLmtleSggb3duZXIgKSxcblx0XHRcdGNhY2hlID0gdGhpcy5jYWNoZVsgdW5sb2NrIF07XG5cblx0XHQvLyBIYW5kbGU6IFsgb3duZXIsIGtleSwgdmFsdWUg
9673XSBhcmdzXG5cdFx0aWYgKCB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGNhY2hlWyBkYXRhIF0gPSB2YWx1ZTtcblxuXHRcdC8vIEhhbmRsZTogWyBvd25lciwgeyBwcm9wZXJ0aWVzIH0gXSBhcmdzXG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIEZyZXNoIGFzc2lnbm1lbnRzIGJ5IG9iamVjdCBhcmUgc2hhbGxvdyBjb3BpZWRcblx0XHRcdGlmICggalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGNhY2hlICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5leHRlbmQoIHRoaXMuY2FjaGVbIHVubG9jayBdLCBkYXRhICk7XG5cdFx0XHQvLyBPdGhlcndpc2UsIGNvcHkgdGhlIHByb3BlcnRpZXMgb25lLWJ5LW9uZSB0byB0aGUgY2FjaGUgb2JqZWN0XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmb3IgKCBwcm9wIGluIGRhdGEgKSB7XG5cdFx0XHRcdFx0Y2FjaGVbIHByb3AgXSA9IGRhdGFbIHByb3AgXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gY2FjaGU7XG5cdH0sXG5cdGdldDogZnVuY3Rpb24oIG93bmVyLCBrZXkgKSB7XG5cdFx0Ly8gRWl0aGVyIGEgdmFsaWQgY2FjaGUgaXMgZm91bmQsIG9yIHdpbGwgYmUgY3JlYXRlZC5cblx0XHQvLyBOZXcgY2FjaGVzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlIHVubG9jayByZXR1cm5lZCxcblx0XHQvLyBhbGxvd2luZyBkaXJlY3QgYWNjZXNzIHRvIHRoZSBuZXdseSBjcmVhdGVkXG5cdFx0Ly8gZW1wdHkgZGF0YSBvYmplY3QuIEEgdmFsaWQgb3duZXIgb2JqZWN0IG11c3QgYmUgcHJvdmlkZWQuXG5cdFx0dmFyIGNhY2hlID0gdGhpcy5jYWNoZVsgdGhpcy5rZXkoIG93bmVyICkgXTtcblxuXHRcdHJldHVybiBrZXkgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRjYWNoZSA6IGNhY2hlWyBrZXkgXTtcblx0fSxcblx0YWNjZXNzOiBmdW5jdGlvbiggb3duZXIsIGtleSwgdmFsdWUgKSB7XG5cdFx0dmFyIHN0b3JlZDtcblx0XHQvLyBJbiBjYXNlcyB3aGVyZSBlaXRoZXI6XG5cdFx0Ly9cblx0XHQvLyAgIDEuIE5vIGtleSB3YXMgc3BlY2lmaWVkXG5cdFx0Ly8gICAyLiBBIHN0cmluZyBrZXkgd2FzIHNwZWNpZmllZCwgYnV0IG5vIHZhbHVlIHByb3ZpZGVkXG5cdFx0Ly9cblx0XHQvLyBUYWtlIHRoZSBcInJlYWRcIiBwYXRoIGFuZCBhbGxvdyB0aGUgZ2V0IG1ldGhvZCB0byBkZXRlcm1pbmVcblx0XHQvLyB3aGljaCB2YWx1ZSB0byByZXR1cm4sIHJlc3BlY3RpdmVseSBlaXRoZXI6XG5cdFx0Ly9cblx0XHQvLyAgIDEuIFRoZSBlbnRpcmUgY2FjaGUgb2JqZWN0XG5cdFx0Ly8gICAyLiBUaGUgZGF0YSBzdG9yZWQgYXQgdGhlIGtleVxuXHRcdC8vXG5cdFx0aWYgKCBrZXkgPT09IHVuZGVmaW5lZCB8fFxuXHRcdFx0XHQoKGtleSAmJiB0eXBlb2Yga2V5ID09PSBcInN0cmluZ1wiKSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSApIHtcblxuXHRcdFx0c3RvcmVkID0gdGhpcy5nZXQoIG93bmVyLCBrZXkgKTtcblxuXHRcdFx0cmV0dXJuIHN0b3JlZCAhPT0gdW5kZWZpbmVkID9cblx0XHRcdFx0c3RvcmVkIDogdGhpcy5nZXQoIG93bmVyLCBqUXVlcnkuY2FtZWxDYXNlKGtleSkgKTtcblx0XHR9XG5cblx0XHQvLyBbKl1XaGVuIHRoZSBrZXkgaXMgbm90IGEgc3RyaW5nLCBvciBib3RoIGEga2V5IGFuZCB2YWx1ZVxuXHRcdC8vIGFyZSBzcGVjaWZpZWQsIHNldCBvciBleHRlbmQgKGV4aXN0aW5nIG9iamVjdHMpIHdpdGggZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBBbiBvYmplY3Qgb2YgcHJvcGVydGllc1xuXHRcdC8vICAgMi4gQSBrZXkgYW5kIHZhbHVlXG5cdFx0Ly9cblx0XHR0aGlzLnNldCggb3duZXIsIGtleSwgdmFsdWUgKTtcblxuXHRcdC8vIFNpbmNlIHRoZSBcInNldFwiIHBhdGggY2FuIGhhdmUgdHdvIHBvc3NpYmxlIGVudHJ5IHBvaW50c1xuXHRcdC8vIHJldHVybiB0aGUgZXhwZWN0ZWQgZGF0YSBiYXNlZCBvbiB3aGljaCBwYXRoIHdhcyB0YWtlblsqXVxuXHRcdHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBrZXk7XG5cdH0sXG5cdHJlbW92ZTogZnVuY3Rpb24oIG93bmVyLCBrZXkgKSB7XG5cdFx0dmFyIGksIG5hbWUsIGNhbWVsLFxuXHRcdFx0dW5sb2NrID0gdGhpcy5rZXkoIG93bmVyICksXG5cdFx0XHRjYWNoZSA9IHRoaXMuY2FjaGVbIHVubG9jayBdO1xuXG5cdFx0aWYgKCBrZXkgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHRoaXMuY2FjaGVbIHVubG9jayBdID0ge307XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gU3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGtleXNcblx0XHRcdGlmICggalF1ZXJ5LmlzQXJyYXkoIGtleSApICkge1xuXHRcdFx0XHQvLyBJZiBcIm5hbWVcIiBpcyBhbiBhcnJheSBvZiBrZXlzLi4uXG5cdFx0XHRcdC8vIFdoZW4gZGF0YSBpcyBpbml0aWFsbHkgY3JlYXRlZCwgdmlhIChcImtleVwiLCBcInZhbFwiKSBzaWduYXR1cmUsXG5cdFx0XHRcdC8vIGtleXMgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gY2FtZWxDYXNlLlxuXHRcdFx0XHQvLyBTaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8gdGVsbCBfaG93XyBhIGtleSB3YXMgYWRkZWQsIHJlbW92ZVxuXHRcdFx0XHQvLyBib3RoIHBsYWluIGtleSBhbmQgY2FtZWxDYXNlIGtleS4gIzEyNzg2XG5cdFx0XHRcdC8vIFRoaXMgd2lsbCBvbmx5IHBlbmFsaXplIHRoZSBhcnJheSBhcmd1bWVudCBwYXRoLlxuXHRcdFx0XHRuYW1lID0ga2V5LmNvbmNhdCgga2V5Lm1hcCggalF1ZXJ5LmNhbWVsQ2FzZSApICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjYW1lbCA9IGpRdWVyeS5jYW1lbENhc2UoIGtleSApO1xuXHRcdFx0XHQvLyBUcnkgdGhlIHN0cmluZyBhcyBhIGtleSBiZWZvcmUgYW55IG1hbmlwdWxhdGlvblxuXHRcdFx0XHRpZiAoIGtleSBpbiBjYWNoZSApIHtcblx0XHRcdFx0XHRuYW1lID0gWyBrZXksIGNhbWVsIF07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gSWYgYSBrZXkgd2l0aCB0aGUgc3BhY2VzIGV4aXN0cywgdXNlIGl0LlxuXHRcdFx0XHRcdC8vIE90aGVyd2lzZSwgY3JlYXRlIGFuIGFycmF5IGJ5IG1hdGNoaW5nIG5vbi13aGl0ZXNwYWNlXG5cdFx0XHRcdFx0bmFtZSA9IGNhbWVsO1xuXHRcdFx0XHRcdG5hbW
9673UgPSBuYW1lIGluIGNhY2hlID9cblx0XHRcdFx0XHRcdFsgbmFtZSBdIDogKCBuYW1lLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGkgPSBuYW1lLmxlbmd0aDtcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRkZWxldGUgY2FjaGVbIG5hbWVbIGkgXSBdO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0aGFzRGF0YTogZnVuY3Rpb24oIG93bmVyICkge1xuXHRcdHJldHVybiAhalF1ZXJ5LmlzRW1wdHlPYmplY3QoXG5cdFx0XHR0aGlzLmNhY2hlWyBvd25lclsgdGhpcy5leHBhbmRvIF0gXSB8fCB7fVxuXHRcdCk7XG5cdH0sXG5cdGRpc2NhcmQ6IGZ1bmN0aW9uKCBvd25lciApIHtcblx0XHRpZiAoIG93bmVyWyB0aGlzLmV4cGFuZG8gXSApIHtcblx0XHRcdGRlbGV0ZSB0aGlzLmNhY2hlWyBvd25lclsgdGhpcy5leHBhbmRvIF0gXTtcblx0XHR9XG5cdH1cbn07XG52YXIgZGF0YV9wcml2ID0gbmV3IERhdGEoKTtcblxudmFyIGRhdGFfdXNlciA9IG5ldyBEYXRhKCk7XG5cblxuXG4vL1x0SW1wbGVtZW50YXRpb24gU3VtbWFyeVxuLy9cbi8vXHQxLiBFbmZvcmNlIEFQSSBzdXJmYWNlIGFuZCBzZW1hbnRpYyBjb21wYXRpYmlsaXR5IHdpdGggMS45LnggYnJhbmNoXG4vL1x0Mi4gSW1wcm92ZSB0aGUgbW9kdWxlJ3MgbWFpbnRhaW5hYmlsaXR5IGJ5IHJlZHVjaW5nIHRoZSBzdG9yYWdlXG4vL1x0XHRwYXRocyB0byBhIHNpbmdsZSBtZWNoYW5pc20uXG4vL1x0My4gVXNlIHRoZSBzYW1lIHNpbmdsZSBtZWNoYW5pc20gdG8gc3VwcG9ydCBcInByaXZhdGVcIiBhbmQgXCJ1c2VyXCIgZGF0YS5cbi8vXHQ0LiBfTmV2ZXJfIGV4cG9zZSBcInByaXZhdGVcIiBkYXRhIHRvIHVzZXIgY29kZSAoVE9ETzogRHJvcCBfZGF0YSwgX3JlbW92ZURhdGEpXG4vL1x0NS4gQXZvaWQgZXhwb3NpbmcgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvbiB1c2VyIG9iamVjdHMgKGVnLiBleHBhbmRvIHByb3BlcnRpZXMpXG4vL1x0Ni4gUHJvdmlkZSBhIGNsZWFyIHBhdGggZm9yIGltcGxlbWVudGF0aW9uIHVwZ3JhZGUgdG8gV2Vha01hcCBpbiAyMDE0XG5cbnZhciByYnJhY2UgPSAvXig/Olxce1tcXHdcXFddKlxcfXxcXFtbXFx3XFxXXSpcXF0pJC8sXG5cdHJtdWx0aURhc2ggPSAvKFtBLVpdKS9nO1xuXG5mdW5jdGlvbiBkYXRhQXR0ciggZWxlbSwga2V5LCBkYXRhICkge1xuXHR2YXIgbmFtZTtcblxuXHQvLyBJZiBub3RoaW5nIHdhcyBmb3VuZCBpbnRlcm5hbGx5LCB0cnkgdG8gZmV0Y2ggYW55XG5cdC8vIGRhdGEgZnJvbSB0aGUgSFRNTDUgZGF0YS0qIGF0dHJpYnV0ZVxuXHRpZiAoIGRhdGEgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdG5hbWUgPSBcImRhdGEtXCIgKyBrZXkucmVwbGFjZSggcm11bHRpRGFzaCwgXCItJDFcIiApLnRvTG93ZXJDYXNlKCk7XG5cdFx0ZGF0YSA9IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICk7XG5cblx0XHRpZiAoIHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ZGF0YSA9IGRhdGEgPT09IFwidHJ1ZVwiID8gdHJ1ZSA6XG5cdFx0XHRcdFx0ZGF0YSA9PT0gXCJmYWxzZVwiID8gZmFsc2UgOlxuXHRcdFx0XHRcdGRhdGEgPT09IFwibnVsbFwiID8gbnVsbCA6XG5cdFx0XHRcdFx0Ly8gT25seSBjb252ZXJ0IHRvIGEgbnVtYmVyIGlmIGl0IGRvZXNuJ3QgY2hhbmdlIHRoZSBzdHJpbmdcblx0XHRcdFx0XHQrZGF0YSArIFwiXCIgPT09IGRhdGEgPyArZGF0YSA6XG5cdFx0XHRcdFx0cmJyYWNlLnRlc3QoIGRhdGEgKSA/IGpRdWVyeS5wYXJzZUpTT04oIGRhdGEgKSA6XG5cdFx0XHRcdFx0ZGF0YTtcblx0XHRcdH0gY2F0Y2goIGUgKSB7fVxuXG5cdFx0XHQvLyBNYWtlIHN1cmUgd2Ugc2V0IHRoZSBkYXRhIHNvIGl0IGlzbid0IGNoYW5nZWQgbGF0ZXJcblx0XHRcdGRhdGFfdXNlci5zZXQoIGVsZW0sIGtleSwgZGF0YSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZGF0YTtcbn1cblxualF1ZXJ5LmV4dGVuZCh7XG5cdGhhc0RhdGE6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkYXRhX3VzZXIuaGFzRGF0YSggZWxlbSApIHx8IGRhdGFfcHJpdi5oYXNEYXRhKCBlbGVtICk7XG5cdH0sXG5cblx0ZGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIGRhdGFfdXNlci5hY2Nlc3MoIGVsZW0sIG5hbWUsIGRhdGEgKTtcblx0fSxcblxuXHRyZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHtcblx0XHRkYXRhX3VzZXIucmVtb3ZlKCBlbGVtLCBuYW1lICk7XG5cdH0sXG5cblx0Ly8gVE9ETzogTm93IHRoYXQgYWxsIGNhbGxzIHRvIF9kYXRhIGFuZCBfcmVtb3ZlRGF0YSBoYXZlIGJlZW4gcmVwbGFjZWRcblx0Ly8gd2l0aCBkaXJlY3QgY2FsbHMgdG8gZGF0YV9wcml2IG1ldGhvZHMsIHRoZXNlIGNhbiBiZSBkZXByZWNhdGVkLlxuXHRfZGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIGRhdGFfcHJpdi5hY2Nlc3MoIGVsZW0sIG5hbWUsIGRhdGEgKTtcblx0fSxcblxuXHRfcmVtb3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cdFx0ZGF0YV9wcml2LnJlbW92ZSggZWxlbSwgbmFtZSApO1xuXHR9XG59KTtcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdGRhdGE6IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXHRcdHZhciBpLCBuYW1lLCBkYXRhLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXSxcblx0XHRcdGF0dHJzID0gZWxlbSAmJiBlbGVtLmF0dHJpYnV0ZXM7XG5cblx0XHQvLyBHZXRzIGFsbCB2YWx1ZXNcblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0aWYgKCB0aGlzLmxlbmd0aCApIHtcblx0XHRcdFx0ZGF0YSA9IGRhdGFfdXNlci5nZXQoIGVsZW0gKTtcblxuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgIWRhdGFfcHJpdi5nZXQoIGVsZW0sIFwiaGFzRGF0YUF0dHJzXCIgKSApIHtcblx0XHRcdFx0XHRpID0gYXR0cnMubGVuZ3RoO1xuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRTExK1xuXHRcdFx0XHRcdFx0Ly8gVGhlIGF0dHJzIGVsZW1lbnRzIGNhbiBiZSBudWxsICgjMTQ4OTQpXG5cdFx0XHRcdFx0XHRpZiAoIGF0dHJzWyBpIF0gKSB7XG5cdFx0XHRcdFx0XHRcdG5hbW
9673UgPSBhdHRyc1sgaSBdLm5hbWU7XG5cdFx0XHRcdFx0XHRcdGlmICggbmFtZS5pbmRleE9mKCBcImRhdGEtXCIgKSA9PT0gMCApIHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZS5zbGljZSg1KSApO1xuXHRcdFx0XHRcdFx0XHRcdGRhdGFBdHRyKCBlbGVtLCBuYW1lLCBkYXRhWyBuYW1lIF0gKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkYXRhX3ByaXYuc2V0KCBlbGVtLCBcImhhc0RhdGFBdHRyc1wiLCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0cyBtdWx0aXBsZSB2YWx1ZXNcblx0XHRpZiAoIHR5cGVvZiBrZXkgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRkYXRhX3VzZXIuc2V0KCB0aGlzLCBrZXkgKTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBkYXRhLFxuXHRcdFx0XHRjYW1lbEtleSA9IGpRdWVyeS5jYW1lbENhc2UoIGtleSApO1xuXG5cdFx0XHQvLyBUaGUgY2FsbGluZyBqUXVlcnkgb2JqZWN0IChlbGVtZW50IG1hdGNoZXMpIGlzIG5vdCBlbXB0eVxuXHRcdFx0Ly8gKGFuZCB0aGVyZWZvcmUgaGFzIGFuIGVsZW1lbnQgYXBwZWFycyBhdCB0aGlzWyAwIF0pIGFuZCB0aGVcblx0XHRcdC8vIGB2YWx1ZWAgcGFyYW1ldGVyIHdhcyBub3QgdW5kZWZpbmVkLiBBbiBlbXB0eSBqUXVlcnkgb2JqZWN0XG5cdFx0XHQvLyB3aWxsIHJlc3VsdCBpbiBgdW5kZWZpbmVkYCBmb3IgZWxlbSA9IHRoaXNbIDAgXSB3aGljaCB3aWxsXG5cdFx0XHQvLyB0aHJvdyBhbiBleGNlcHRpb24gaWYgYW4gYXR0ZW1wdCB0byByZWFkIGEgZGF0YSBjYWNoZSBpcyBtYWRlLlxuXHRcdFx0aWYgKCBlbGVtICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdC8vIEF0dGVtcHQgdG8gZ2V0IGRhdGEgZnJvbSB0aGUgY2FjaGVcblx0XHRcdFx0Ly8gd2l0aCB0aGUga2V5IGFzLWlzXG5cdFx0XHRcdGRhdGEgPSBkYXRhX3VzZXIuZ2V0KCBlbGVtLCBrZXkgKTtcblx0XHRcdFx0aWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBdHRlbXB0IHRvIGdldCBkYXRhIGZyb20gdGhlIGNhY2hlXG5cdFx0XHRcdC8vIHdpdGggdGhlIGtleSBjYW1lbGl6ZWRcblx0XHRcdFx0ZGF0YSA9IGRhdGFfdXNlci5nZXQoIGVsZW0sIGNhbWVsS2V5ICk7XG5cdFx0XHRcdGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQXR0ZW1wdCB0byBcImRpc2NvdmVyXCIgdGhlIGRhdGEgaW5cblx0XHRcdFx0Ly8gSFRNTDUgY3VzdG9tIGRhdGEtKiBhdHRyc1xuXHRcdFx0XHRkYXRhID0gZGF0YUF0dHIoIGVsZW0sIGNhbWVsS2V5LCB1bmRlZmluZWQgKTtcblx0XHRcdFx0aWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBXZSB0cmllZCByZWFsbHkgaGFyZCwgYnV0IHRoZSBkYXRhIGRvZXNuJ3QgZXhpc3QuXG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2V0IHRoZSBkYXRhLi4uXG5cdFx0XHR0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRcdC8vIEZpcnN0LCBhdHRlbXB0IHRvIHN0b3JlIGEgY29weSBvciByZWZlcmVuY2Ugb2YgYW55XG5cdFx0XHRcdC8vIGRhdGEgdGhhdCBtaWdodCd2ZSBiZWVuIHN0b3JlIHdpdGggYSBjYW1lbENhc2VkIGtleS5cblx0XHRcdFx0dmFyIGRhdGEgPSBkYXRhX3VzZXIuZ2V0KCB0aGlzLCBjYW1lbEtleSApO1xuXG5cdFx0XHRcdC8vIEZvciBIVE1MNSBkYXRhLSogYXR0cmlidXRlIGludGVyb3AsIHdlIGhhdmUgdG9cblx0XHRcdFx0Ly8gc3RvcmUgcHJvcGVydHkgbmFtZXMgd2l0aCBkYXNoZXMgaW4gYSBjYW1lbENhc2UgZm9ybS5cblx0XHRcdFx0Ly8gVGhpcyBtaWdodCBub3QgYXBwbHkgdG8gYWxsIHByb3BlcnRpZXMuLi4qXG5cdFx0XHRcdGRhdGFfdXNlci5zZXQoIHRoaXMsIGNhbWVsS2V5LCB2YWx1ZSApO1xuXG5cdFx0XHRcdC8vICouLi4gSW4gdGhlIGNhc2Ugb2YgcHJvcGVydGllcyB0aGF0IG1pZ2h0IF9hY3R1YWxseV9cblx0XHRcdFx0Ly8gaGF2ZSBkYXNoZXMsIHdlIG5lZWQgdG8gYWxzbyBzdG9yZSBhIGNvcHkgb2YgdGhhdFxuXHRcdFx0XHQvLyB1bmNoYW5nZWQgcHJvcGVydHkuXG5cdFx0XHRcdGlmICgga2V5LmluZGV4T2YoXCItXCIpICE9PSAtMSAmJiBkYXRhICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0ZGF0YV91c2VyLnNldCggdGhpcywga2V5LCB2YWx1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEsIG51bGwsIHRydWUgKTtcblx0fSxcblxuXHRyZW1vdmVEYXRhOiBmdW5jdGlvbigga2V5ICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRkYXRhX3VzZXIucmVtb3ZlKCB0aGlzLCBrZXkgKTtcblx0XHR9KTtcblx0fVxufSk7XG5cblxualF1ZXJ5LmV4dGVuZCh7XG5cdHF1ZXVlOiBmdW5jdGlvbiggZWxlbSwgdHlwZSwgZGF0YSApIHtcblx0XHR2YXIgcXVldWU7XG5cblx0XHRpZiAoIGVsZW0gKSB7XG5cdFx0XHR0eXBlID0gKCB0eXBlIHx8IFwiZnhcIiApICsgXCJxdWV1ZVwiO1xuXHRcdFx0cXVldWUgPSBkYXRhX3ByaXYuZ2V0KCBlbGVtLCB0eXBlICk7XG5cblx0XHRcdC8vIFNwZWVkIHVwIGRlcXVldWUgYnkgZ2V0dGluZyBvdXQgcXVpY2tseSBpZiB0aGlzIGlzIGp1c3QgYSBsb29rdXBcblx0XHRcdGlmICggZGF0YSApIHtcblx0XHRcdFx0aWYgKCAhcXVldWUgfHwgalF1ZXJ5LmlzQXJyYXkoIGRhdGEgKSApIHtcblx0XHRcdFx0XHRxdWV1ZSA9IGRhdGFfcHJpdi5hY2Nlc3MoIGVsZW0sIHR5cGUsIGpRdWVyeS5tYWtlQXJyYXkoZGF0YSkgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRxdWV1ZS5wdXNoKCBkYXRhICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybi
9673BxdWV1ZSB8fCBbXTtcblx0XHR9XG5cdH0sXG5cblx0ZGVxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7XG5cdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdFx0dmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCBlbGVtLCB0eXBlICksXG5cdFx0XHRzdGFydExlbmd0aCA9IHF1ZXVlLmxlbmd0aCxcblx0XHRcdGZuID0gcXVldWUuc2hpZnQoKSxcblx0XHRcdGhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCB0eXBlICksXG5cdFx0XHRuZXh0ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCBlbGVtLCB0eXBlICk7XG5cdFx0XHR9O1xuXG5cdFx0Ly8gSWYgdGhlIGZ4IHF1ZXVlIGlzIGRlcXVldWVkLCBhbHdheXMgcmVtb3ZlIHRoZSBwcm9ncmVzcyBzZW50aW5lbFxuXHRcdGlmICggZm4gPT09IFwiaW5wcm9ncmVzc1wiICkge1xuXHRcdFx0Zm4gPSBxdWV1ZS5zaGlmdCgpO1xuXHRcdFx0c3RhcnRMZW5ndGgtLTtcblx0XHR9XG5cblx0XHRpZiAoIGZuICkge1xuXG5cdFx0XHQvLyBBZGQgYSBwcm9ncmVzcyBzZW50aW5lbCB0byBwcmV2ZW50IHRoZSBmeCBxdWV1ZSBmcm9tIGJlaW5nXG5cdFx0XHQvLyBhdXRvbWF0aWNhbGx5IGRlcXVldWVkXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwiZnhcIiApIHtcblx0XHRcdFx0cXVldWUudW5zaGlmdCggXCJpbnByb2dyZXNzXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2xlYXIgdXAgdGhlIGxhc3QgcXVldWUgc3RvcCBmdW5jdGlvblxuXHRcdFx0ZGVsZXRlIGhvb2tzLnN0b3A7XG5cdFx0XHRmbi5jYWxsKCBlbGVtLCBuZXh0LCBob29rcyApO1xuXHRcdH1cblxuXHRcdGlmICggIXN0YXJ0TGVuZ3RoICYmIGhvb2tzICkge1xuXHRcdFx0aG9va3MuZW1wdHkuZmlyZSgpO1xuXHRcdH1cblx0fSxcblxuXHQvLyBOb3QgcHVibGljIC0gZ2VuZXJhdGUgYSBxdWV1ZUhvb2tzIG9iamVjdCwgb3IgcmV0dXJuIHRoZSBjdXJyZW50IG9uZVxuXHRfcXVldWVIb29rczogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7XG5cdFx0dmFyIGtleSA9IHR5cGUgKyBcInF1ZXVlSG9va3NcIjtcblx0XHRyZXR1cm4gZGF0YV9wcml2LmdldCggZWxlbSwga2V5ICkgfHwgZGF0YV9wcml2LmFjY2VzcyggZWxlbSwga2V5LCB7XG5cdFx0XHRlbXB0eTogalF1ZXJ5LkNhbGxiYWNrcyhcIm9uY2UgbWVtb3J5XCIpLmFkZChmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGF0YV9wcml2LnJlbW92ZSggZWxlbSwgWyB0eXBlICsgXCJxdWV1ZVwiLCBrZXkgXSApO1xuXHRcdFx0fSlcblx0XHR9KTtcblx0fVxufSk7XG5cbmpRdWVyeS5mbi5leHRlbmQoe1xuXHRxdWV1ZTogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIHNldHRlciA9IDI7XG5cblx0XHRpZiAoIHR5cGVvZiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0ZGF0YSA9IHR5cGU7XG5cdFx0XHR0eXBlID0gXCJmeFwiO1xuXHRcdFx0c2V0dGVyLS07XG5cdFx0fVxuXG5cdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoIDwgc2V0dGVyICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5xdWV1ZSggdGhpc1swXSwgdHlwZSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBkYXRhID09PSB1bmRlZmluZWQgP1xuXHRcdFx0dGhpcyA6XG5cdFx0XHR0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgZGF0YSApO1xuXG5cdFx0XHRcdC8vIEVuc3VyZSBhIGhvb2tzIGZvciB0aGlzIHF1ZXVlXG5cdFx0XHRcdGpRdWVyeS5fcXVldWVIb29rcyggdGhpcywgdHlwZSApO1xuXG5cdFx0XHRcdGlmICggdHlwZSA9PT0gXCJmeFwiICYmIHF1ZXVlWzBdICE9PSBcImlucHJvZ3Jlc3NcIiApIHtcblx0XHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0fSxcblx0ZGVxdWV1ZTogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0fSk7XG5cdH0sXG5cdGNsZWFyUXVldWU6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlIHx8IFwiZnhcIiwgW10gKTtcblx0fSxcblx0Ly8gR2V0IGEgcHJvbWlzZSByZXNvbHZlZCB3aGVuIHF1ZXVlcyBvZiBhIGNlcnRhaW4gdHlwZVxuXHQvLyBhcmUgZW1wdGllZCAoZnggaXMgdGhlIHR5cGUgYnkgZGVmYXVsdClcblx0cHJvbWlzZTogZnVuY3Rpb24oIHR5cGUsIG9iaiApIHtcblx0XHR2YXIgdG1wLFxuXHRcdFx0Y291bnQgPSAxLFxuXHRcdFx0ZGVmZXIgPSBqUXVlcnkuRGVmZXJyZWQoKSxcblx0XHRcdGVsZW1lbnRzID0gdGhpcyxcblx0XHRcdGkgPSB0aGlzLmxlbmd0aCxcblx0XHRcdHJlc29sdmUgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCAhKCAtLWNvdW50ICkgKSB7XG5cdFx0XHRcdFx0ZGVmZXIucmVzb2x2ZVdpdGgoIGVsZW1lbnRzLCBbIGVsZW1lbnRzIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdGlmICggdHlwZW9mIHR5cGUgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRvYmogPSB0eXBlO1xuXHRcdFx0dHlwZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHR0bXAgPSBkYXRhX3ByaXYuZ2V0KCBlbGVtZW50c1sgaSBdLCB0eXBlICsgXCJxdWV1ZUhvb2tzXCIgKTtcblx0XHRcdGlmICggdG1wICYmIHRtcC5lbXB0eSApIHtcblx0XHRcdFx0Y291bnQrKztcblx0XHRcdFx0dG1wLmVtcHR5LmFkZCggcmVzb2x2ZSApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXNvbHZlKCk7XG5cdFx0cmV0dXJuIGRlZmVyLnByb21pc2UoIG9iaiApO1xuXHR9XG59KTtcbnZhciBwbnVtID0gKC9bKy1dPyg/OlxcZCpcXC58KVxcZCsoPzpbZUVdWystXT9cXGQrfCkvKS5zb3VyY2U7XG5cbnZhciBjc3NFeHBhbmQgPSBbIFwiVG9wXCIsIFwiUmlnaHRcIiwgXCJCb3R0b21cIiwgXCJMZWZ0XCIgXTtcblxudmFyIGlzSGlkZGVuID0gZnVuY3Rpb24oIGVsZW0sIGVsICkge1xuXHRcdC8vIGlzSGlkZGVuIG1pZ2h0IGJlIGNhbGxlZCBmcm9tIGpRdWVyeSNmaWx0ZXIgZnVuY3Rpb247XG5cdFx0Ly8gaW4gdGhhdCBjYXNlLCBlbGVtZW50IHdpbGwgYmUgc2Vjb25kIGFyZ3VtZW50XG5cdFx0ZWxlbSA9IGVsIHx8IGVsZW07XG5cdFx0cmV0dXJuIGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICkgPT09IFwibm9uZVwiIHx8ICFqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApO1xuXHR9O1xuXG52YXIgcmNoZWNrYWJsZVR5cGUgPSAoL14oPzpjaGVja2JveHxyYWRpbykkL2kpO1xuXG5cblxuKGZ1bmN0aW9uKCkge1xuXHR2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksXG5cdFx0ZGl2ID0gZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKSApLFxuXHRcdGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJpbnB1dFwiICk7XG5cblx0Ly8gU3VwcG9ydDogU2FmYXJpPD01LjFcblx0Ly8gQ2hlY2sgc3RhdGUgbG9zdCBpZiB0aGUgbmFtZSBpcyBzZXQgKCMxMTIxNylcblx0Ly8gU3VwcG9ydDogV2luZG93cyBXZWIgQXBwcyAoV1dBKVxuXHQvLyBgbmFtZWAgYW5kIGB0eXBlYCBtdXN0IHVzZSAuc2V0QXR0cmlidXRlIGZvciBXV0EgKCMxNDkwMSlcblx0aW5wdXQuc2V0QXR0cmlidXRlKCBcInR5cGVcIiwgXCJyYWR
9673pb1wiICk7XG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJjaGVja2VkXCIsIFwiY2hlY2tlZFwiICk7XG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJuYW1lXCIsIFwidFwiICk7XG5cblx0ZGl2LmFwcGVuZENoaWxkKCBpbnB1dCApO1xuXG5cdC8vIFN1cHBvcnQ6IFNhZmFyaTw9NS4xLCBBbmRyb2lkPDQuMlxuXHQvLyBPbGRlciBXZWJLaXQgZG9lc24ndCBjbG9uZSBjaGVja2VkIHN0YXRlIGNvcnJlY3RseSBpbiBmcmFnbWVudHNcblx0c3VwcG9ydC5jaGVja0Nsb25lID0gZGl2LmNsb25lTm9kZSggdHJ1ZSApLmNsb25lTm9kZSggdHJ1ZSApLmxhc3RDaGlsZC5jaGVja2VkO1xuXG5cdC8vIFN1cHBvcnQ6IElFPD0xMStcblx0Ly8gTWFrZSBzdXJlIHRleHRhcmVhIChhbmQgY2hlY2tib3gpIGRlZmF1bHRWYWx1ZSBpcyBwcm9wZXJseSBjbG9uZWRcblx0ZGl2LmlubmVySFRNTCA9IFwiPHRleHRhcmVhPng8L3RleHRhcmVhPlwiO1xuXHRzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkID0gISFkaXYuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZTtcbn0pKCk7XG52YXIgc3RydW5kZWZpbmVkID0gdHlwZW9mIHVuZGVmaW5lZDtcblxuXG5cbnN1cHBvcnQuZm9jdXNpbkJ1YmJsZXMgPSBcIm9uZm9jdXNpblwiIGluIHdpbmRvdztcblxuXG52YXJcblx0cmtleUV2ZW50ID0gL15rZXkvLFxuXHRybW91c2VFdmVudCA9IC9eKD86bW91c2V8cG9pbnRlcnxjb250ZXh0bWVudSl8Y2xpY2svLFxuXHRyZm9jdXNNb3JwaCA9IC9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxcblx0cnR5cGVuYW1lc3BhY2UgPSAvXihbXi5dKikoPzpcXC4oLispfCkkLztcblxuZnVuY3Rpb24gcmV0dXJuVHJ1ZSgpIHtcblx0cmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHJldHVybkZhbHNlKCkge1xuXHRyZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHNhZmVBY3RpdmVFbGVtZW50KCkge1xuXHR0cnkge1xuXHRcdHJldHVybiBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuXHR9IGNhdGNoICggZXJyICkgeyB9XG59XG5cbi8qXG4gKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyBldmVudHMgLS0gbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuXG4gKiBQcm9wcyB0byBEZWFuIEVkd2FyZHMnIGFkZEV2ZW50IGxpYnJhcnkgZm9yIG1hbnkgb2YgdGhlIGlkZWFzLlxuICovXG5qUXVlcnkuZXZlbnQgPSB7XG5cblx0Z2xvYmFsOiB7fSxcblxuXHRhZGQ6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgZGF0YSwgc2VsZWN0b3IgKSB7XG5cblx0XHR2YXIgaGFuZGxlT2JqSW4sIGV2ZW50SGFuZGxlLCB0bXAsXG5cdFx0XHRldmVudHMsIHQsIGhhbmRsZU9iaixcblx0XHRcdHNwZWNpYWwsIGhhbmRsZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlwZSxcblx0XHRcdGVsZW1EYXRhID0gZGF0YV9wcml2LmdldCggZWxlbSApO1xuXG5cdFx0Ly8gRG9uJ3QgYXR0YWNoIGV2ZW50cyB0byBub0RhdGEgb3IgdGV4dC9jb21tZW50IG5vZGVzIChidXQgYWxsb3cgcGxhaW4gb2JqZWN0cylcblx0XHRpZiAoICFlbGVtRGF0YSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYW4gb2JqZWN0IG9mIGN1c3RvbSBkYXRhIGluIGxpZXUgb2YgdGhlIGhhbmRsZXJcblx0XHRpZiAoIGhhbmRsZXIuaGFuZGxlciApIHtcblx0XHRcdGhhbmRsZU9iakluID0gaGFuZGxlcjtcblx0XHRcdGhhbmRsZXIgPSBoYW5kbGVPYmpJbi5oYW5kbGVyO1xuXHRcdFx0c2VsZWN0b3IgPSBoYW5kbGVPYmpJbi5zZWxlY3Rvcjtcblx0XHR9XG5cblx0XHQvLyBNYWtlIHN1cmUgdGhhdCB0aGUgaGFuZGxlciBoYXMgYSB1bmlxdWUgSUQsIHVzZWQgdG8gZmluZC9yZW1vdmUgaXQgbGF0ZXJcblx0XHRpZiAoICFoYW5kbGVyLmd1aWQgKSB7XG5cdFx0XHRoYW5kbGVyLmd1aWQgPSBqUXVlcnkuZ3VpZCsrO1xuXHRcdH1cblxuXHRcdC8vIEluaXQgdGhlIGVsZW1lbnQncyBldmVudCBzdHJ1Y3R1cmUgYW5kIG1haW4gaGFuZGxlciwgaWYgdGhpcyBpcyB0aGUgZmlyc3Rcblx0XHRpZiAoICEoZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzKSApIHtcblx0XHRcdGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyA9IHt9O1xuXHRcdH1cblx0XHRpZiAoICEoZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUpICkge1xuXHRcdFx0ZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUgPSBmdW5jdGlvbiggZSApIHtcblx0XHRcdFx0Ly8gRGlzY2FyZCB0aGUgc2Vjb25kIGV2ZW50IG9mIGEgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoKSBhbmRcblx0XHRcdFx0Ly8gd2hlbiBhbiBldmVudCBpcyBjYWxsZWQgYWZ0ZXIgYSBwYWdlIGhhcyB1bmxvYWRlZFxuXHRcdFx0XHRyZXR1cm4gdHlwZW9mIGpRdWVyeSAhPT0gc3RydW5kZWZpbmVkICYmIGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgIT09IGUudHlwZSA/XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmFwcGx5KCBlbGVtLCBhcmd1bWVudHMgKSA6IHVuZGVmaW5lZDtcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0Ly8gSGFuZGxlIG11bHRpcGxlIGV2ZW50cyBzZXBhcmF0ZWQgYnkgYSBzcGFjZVxuXHRcdHR5cGVzID0gKCB0eXBlcyB8fCBcIlwiICkubWF0Y2goIHJub3R3aGl0ZSApIHx8IFsgXCJcIiBdO1xuXHRcdHQgPSB0eXBlcy5sZW5ndGg7XG5cdFx0d2hpbGUgKCB0LS0gKSB7XG5cdFx0XHR0bXAgPSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1t0XSApIHx8IFtdO1xuXHRcdFx0dHlwZSA9IG9yaWdUeXBlID0gdG1wWzFdO1xuXHRcdFx0bmFtZXNwYWNlcyA9ICggdG1wWzJdIHx8IFwiXCIgKS5zcGxpdCggXCIuXCIgKS5zb3J0KCk7XG5cblx0XHRcdC8vIFRoZXJlICptdXN0KiBiZSBhIHR5cGUsIG5vIGF0dGFjaGluZyBuYW1lc3BhY2Utb25seSBoYW5kbGVyc1xuXHRcdFx0aWYgKCAhdHlwZSApIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGV2ZW50IGNoYW5nZXMgaXRzIHR5cGUsIHVzZSB0aGUgc3BlY2lhbCBldmVudCBoYW5kbGVycyBmb3IgdGhlIGNoYW5nZWQgdHlwZVxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cblx0XHRcdC8vIElmIHNlbGVjdG9yIGRlZmluZWQsIGRldGVybWluZSBzcGVjaWFsIGV2ZW50IGFwaSB0eX
9673BlLCBvdGhlcndpc2UgZ2l2ZW4gdHlwZVxuXHRcdFx0dHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNwZWNpYWwuYmluZFR5cGUgKSB8fCB0eXBlO1xuXG5cdFx0XHQvLyBVcGRhdGUgc3BlY2lhbCBiYXNlZCBvbiBuZXdseSByZXNldCB0eXBlXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblxuXHRcdFx0Ly8gaGFuZGxlT2JqIGlzIHBhc3NlZCB0byBhbGwgZXZlbnQgaGFuZGxlcnNcblx0XHRcdGhhbmRsZU9iaiA9IGpRdWVyeS5leHRlbmQoe1xuXHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRvcmlnVHlwZTogb3JpZ1R5cGUsXG5cdFx0XHRcdGRhdGE6IGRhdGEsXG5cdFx0XHRcdGhhbmRsZXI6IGhhbmRsZXIsXG5cdFx0XHRcdGd1aWQ6IGhhbmRsZXIuZ3VpZCxcblx0XHRcdFx0c2VsZWN0b3I6IHNlbGVjdG9yLFxuXHRcdFx0XHRuZWVkc0NvbnRleHQ6IHNlbGVjdG9yICYmIGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApLFxuXHRcdFx0XHRuYW1lc3BhY2U6IG5hbWVzcGFjZXMuam9pbihcIi5cIilcblx0XHRcdH0sIGhhbmRsZU9iakluICk7XG5cblx0XHRcdC8vIEluaXQgdGhlIGV2ZW50IGhhbmRsZXIgcXVldWUgaWYgd2UncmUgdGhlIGZpcnN0XG5cdFx0XHRpZiAoICEoaGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSkgKSB7XG5cdFx0XHRcdGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gPSBbXTtcblx0XHRcdFx0aGFuZGxlcnMuZGVsZWdhdGVDb3VudCA9IDA7XG5cblx0XHRcdFx0Ly8gT25seSB1c2UgYWRkRXZlbnRMaXN0ZW5lciBpZiB0aGUgc3BlY2lhbCBldmVudHMgaGFuZGxlciByZXR1cm5zIGZhbHNlXG5cdFx0XHRcdGlmICggIXNwZWNpYWwuc2V0dXAgfHwgc3BlY2lhbC5zZXR1cC5jYWxsKCBlbGVtLCBkYXRhLCBuYW1lc3BhY2VzLCBldmVudEhhbmRsZSApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0uYWRkRXZlbnRMaXN0ZW5lciApIHtcblx0XHRcdFx0XHRcdGVsZW0uYWRkRXZlbnRMaXN0ZW5lciggdHlwZSwgZXZlbnRIYW5kbGUsIGZhbHNlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggc3BlY2lhbC5hZGQgKSB7XG5cdFx0XHRcdHNwZWNpYWwuYWRkLmNhbGwoIGVsZW0sIGhhbmRsZU9iaiApO1xuXG5cdFx0XHRcdGlmICggIWhhbmRsZU9iai5oYW5kbGVyLmd1aWQgKSB7XG5cdFx0XHRcdFx0aGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCA9IGhhbmRsZXIuZ3VpZDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgdG8gdGhlIGVsZW1lbnQncyBoYW5kbGVyIGxpc3QsIGRlbGVnYXRlcyBpbiBmcm9udFxuXHRcdFx0aWYgKCBzZWxlY3RvciApIHtcblx0XHRcdFx0aGFuZGxlcnMuc3BsaWNlKCBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50KyssIDAsIGhhbmRsZU9iaiApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEtlZXAgdHJhY2sgb2Ygd2hpY2ggZXZlbnRzIGhhdmUgZXZlciBiZWVuIHVzZWQsIGZvciBldmVudCBvcHRpbWl6YXRpb25cblx0XHRcdGpRdWVyeS5ldmVudC5nbG9iYWxbIHR5cGUgXSA9IHRydWU7XG5cdFx0fVxuXG5cdH0sXG5cblx0Ly8gRGV0YWNoIGFuIGV2ZW50IG9yIHNldCBvZiBldmVudHMgZnJvbSBhbiBlbGVtZW50XG5cdHJlbW92ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBzZWxlY3RvciwgbWFwcGVkVHlwZXMgKSB7XG5cblx0XHR2YXIgaiwgb3JpZ0NvdW50LCB0bXAsXG5cdFx0XHRldmVudHMsIHQsIGhhbmRsZU9iaixcblx0XHRcdHNwZWNpYWwsIGhhbmRsZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlwZSxcblx0XHRcdGVsZW1EYXRhID0gZGF0YV9wcml2Lmhhc0RhdGEoIGVsZW0gKSAmJiBkYXRhX3ByaXYuZ2V0KCBlbGVtICk7XG5cblx0XHRpZiAoICFlbGVtRGF0YSB8fCAhKGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cykgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gT25jZSBmb3IgZWFjaCB0eXBlLm5hbWVzcGFjZSBpbiB0eXBlczsgdHlwZSBtYXkgYmUgb21pdHRlZFxuXHRcdHR5cGVzID0gKCB0eXBlcyB8fCBcIlwiICkubWF0Y2goIHJub3R3aGl0ZSApIHx8IFsgXCJcIiBdO1xuXHRcdHQgPSB0eXBlcy5sZW5ndGg7XG5cdFx0d2hpbGUgKCB0LS0gKSB7XG5cdFx0XHR0bXAgPSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1t0XSApIHx8IFtdO1xuXHRcdFx0dHlwZSA9IG9yaWdUeXBlID0gdG1wWzFdO1xuXHRcdFx0bmFtZXNwYWNlcyA9ICggdG1wWzJdIHx8IFwiXCIgKS5zcGxpdCggXCIuXCIgKS5zb3J0KCk7XG5cblx0XHRcdC8vIFVuYmluZCBhbGwgZXZlbnRzIChvbiB0aGlzIG5hbWVzcGFjZSwgaWYgcHJvdmlkZWQpIGZvciB0aGUgZWxlbWVudFxuXHRcdFx0aWYgKCAhdHlwZSApIHtcblx0XHRcdFx0Zm9yICggdHlwZSBpbiBldmVudHMgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnJlbW92ZSggZWxlbSwgdHlwZSArIHR5cGVzWyB0IF0sIGhhbmRsZXIsIHNlbGVjdG9yLCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXHRcdFx0dHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNwZWNpYWwuYmluZFR5cGUgKSB8fCB0eXBlO1xuXHRcdFx0aGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSB8fCBbXTtcblx0XHRcdHRtcCA9IHRtcFsyXSAmJiBuZXcgUmVnRXhwKCBcIihefFxcXFwuKVwiICsgbmFtZXNwYWNlcy5qb2luKFwiXFxcXC4oPzouKlxcXFwufClcIikgKyBcIihcXFxcLnwkKVwiICk7XG5cblx0XHRcdC8vIFJlbW92ZSBtYXRjaGluZyBldmVudHNcblx0XHRcdG9yaWdDb3VudCA9IGogPSBoYW5kbGVycy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdFx0aGFuZGxlT2JqID0gaGFuZGxlcnNbIGogXTtcblxuXHRcdFx0XHRpZiAoICggbWFwcGVkVHlwZXMgfHwgb3JpZ1R5cGUgPT09IGhhbmRsZU9iai5vcmlnVHlwZSApICYmXG5cdFx0XHRcdFx0KCAhaGFuZGxlciB8fCBoYW5kbGVyLmd1aWQgPT09IGhhbmRsZU9iai5ndWlkICkgJiZcblx0XHRcdFx0XHQoICF0bXAgfHwgdG1wLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApICYmXG5cdFx0XHRcdFx0KCAhc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09IGhhbmRsZU9iai5zZWxlY3RvciB8fCBzZWxlY3RvciA9PT0gXCIqKlwiICYmIGhhbmRsZU9iai5zZWxlY3RvciApICkge1xuXHRcdFx0XHRcdGhhbmRsZXJzLnNwbGljZSggaiwgMSApO1xuXG5cdFx0XHRcdFx0aWYgKCBoYW5kbGVPYmouc2VsZWN0b3IgKSB7XG5cdFx0XHRcdFx0XHRoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LS07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggc3BlY2lhbC5yZW1vdmUgKSB7XG5cdFx0XHRcdFx0XHRzcGVjaWFsLnJlbW92ZS5jYWxsKCBlbGVtLCBoYW5kbGVPYmogKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gUmVtb3ZlIGdlbmVyaWMgZXZlbnQgaGFuZGxlciBpZiB3ZSByZW1vdmVkIHNvbWV0aGluZyBhbmQgbm8gbW9yZSBoYW5kbGVycyBleGlzdFxuXHRcdFx0Ly8gKGF2b2lkcyBwb3RlbnRpYWwgZm9yIGVuZGxlc3MgcmVjdXJzaW9uIGR1cmluZyByZW1vdmFsIG9mIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMpXG5cdFx0XHRpZiAoIG9yaWdDb3VudCAmJiAhaGFuZGxlcnMubGVuZ3RoICkge1xuXHRcdFx0XHRpZiAoICFzcGVjaWFsLnRlYXJkb3duIHx8IHNwZWNpYWwudGVhcmRvd24uY2FsbCggZWxlbSwgbmFtZXNwYWNlcywgZWxlbURhdGEuaGFuZGxlICkgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZWxlbURhdGEuaGFuZGxlICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkZWxldGUgZXZlbnRzWyB0eXBlIF07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIHRoZSBleHBhbmRvIGlmIGl0J3Mgbm8gbG9uZ2VyIHVzZWRcblx0XHRpZiAoIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBldmVudHMgKSApIHtcblx0XHRcdGRlbGV0ZSBlbGVtRGF0YS5oYW5kbGU7XG5cdFx0XHRkYXRhX3ByaXYucmVtb3ZlKCBlbGVtLCBcImV2ZW50c1wiICk7XG5cdFx0fVxuXHR9LFxuXG5cdHRyaWdnZXI6IGZ1bmN0aW9uKCBldmVudCwgZGF0YSwgZWxlbSwgb25seUhhbmRsZXJzICkge1xuXG5cdFx0dmFyIGksIGN1ciwgdG1wLCBidWJibGVUeXBlLCBvbnR5cGUsIGhhbmRsZSwgc3BlY2lhbCxcblx0XHRcdGV2ZW50UGF0aCA9IFsgZWxlbSB8fCBkb2N1bWVudCBdLFxuXHRcdFx0dHlwZSA9IGhhc093bi5jYWxsKCBldmVudCwgXCJ0eXBlXCIgKSA/IGV2ZW50LnR5cGUgOiBldmVudCxcblx0XHRcdG5hbWVzcGFjZXMgPSBoYXNPd24uY2FsbCggZXZlbnQsIFwibmFtZXNwYWNlXCIgKSA/IGV2ZW50Lm5hbWVzcGFjZS5zcGxpdChcIi5cIikgOiBbXTtcblxuXHRcdGN1ciA9IHRtcCA9IGVsZW0gPSBlbGVtIHx8IGRvY3VtZW50O1xuXG5cdFx0Ly8gRG9uJ3QgZG8gZXZlbnRzIG9uIHRleHQgYW5kIGNvbW1lbnQgbm9kZXNcblx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBmb2N1cy9ibHVyIG1vcnBocyB0byBmb2N1c2luL291dDsgZW5zdXJlIHdlJ3JlIG5vdCBmaXJpbmcgdGhlbSByaWdodCBub3dcblx0XHRpZiAoIHJmb2N1c01vcnBoLnRlc3QoIHR5cGUgKyBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCB0eXBlLmluZGV4T2YoXCIuXCIpID49IDAgKSB7XG5cdFx0XHQvLyBOYW1lc3BhY2VkIHRyaWdnZXI7IGNyZWF0ZSBhIHJlZ2V4cCB0byBtYXRjaCBldmVudCB0eX
9673BlIGluIGhhbmRsZSgpXG5cdFx0XHRuYW1lc3BhY2VzID0gdHlwZS5zcGxpdChcIi5cIik7XG5cdFx0XHR0eXBlID0gbmFtZXNwYWNlcy5zaGlmdCgpO1xuXHRcdFx0bmFtZXNwYWNlcy5zb3J0KCk7XG5cdFx0fVxuXHRcdG9udHlwZSA9IHR5cGUuaW5kZXhPZihcIjpcIikgPCAwICYmIFwib25cIiArIHR5cGU7XG5cblx0XHQvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYSBqUXVlcnkuRXZlbnQgb2JqZWN0LCBPYmplY3QsIG9yIGp1c3QgYW4gZXZlbnQgdHlwZSBzdHJpbmdcblx0XHRldmVudCA9IGV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdID9cblx0XHRcdGV2ZW50IDpcblx0XHRcdG5ldyBqUXVlcnkuRXZlbnQoIHR5cGUsIHR5cGVvZiBldmVudCA9PT0gXCJvYmplY3RcIiAmJiBldmVudCApO1xuXG5cdFx0Ly8gVHJpZ2dlciBiaXRtYXNrOiAmIDEgZm9yIG5hdGl2ZSBoYW5kbGVyczsgJiAyIGZvciBqUXVlcnkgKGFsd2F5cyB0cnVlKVxuXHRcdGV2ZW50LmlzVHJpZ2dlciA9IG9ubHlIYW5kbGVycyA/IDIgOiAzO1xuXHRcdGV2ZW50Lm5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuam9pbihcIi5cIik7XG5cdFx0ZXZlbnQubmFtZXNwYWNlX3JlID0gZXZlbnQubmFtZXNwYWNlID9cblx0XHRcdG5ldyBSZWdFeHAoIFwiKF58XFxcXC4pXCIgKyBuYW1lc3BhY2VzLmpvaW4oXCJcXFxcLig/Oi4qXFxcXC58KVwiKSArIFwiKFxcXFwufCQpXCIgKSA6XG5cdFx0XHRudWxsO1xuXG5cdFx0Ly8gQ2xlYW4gdXAgdGhlIGV2ZW50IGluIGNhc2UgaXQgaXMgYmVpbmcgcmV1c2VkXG5cdFx0ZXZlbnQucmVzdWx0ID0gdW5kZWZpbmVkO1xuXHRcdGlmICggIWV2ZW50LnRhcmdldCApIHtcblx0XHRcdGV2ZW50LnRhcmdldCA9IGVsZW07XG5cdFx0fVxuXG5cdFx0Ly8gQ2xvbmUgYW55IGluY29taW5nIGRhdGEgYW5kIHByZXBlbmQgdGhlIGV2ZW50LCBjcmVhdGluZyB0aGUgaGFuZGxlciBhcmcgbGlzdFxuXHRcdGRhdGEgPSBkYXRhID09IG51bGwgP1xuXHRcdFx0WyBldmVudCBdIDpcblx0XHRcdGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEsIFsgZXZlbnQgXSApO1xuXG5cdFx0Ly8gQWxsb3cgc3BlY2lhbCBldmVudHMgdG8gZHJhdyBvdXRzaWRlIHRoZSBsaW5lc1xuXHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXHRcdGlmICggIW9ubHlIYW5kbGVycyAmJiBzcGVjaWFsLnRyaWdnZXIgJiYgc3BlY2lhbC50cmlnZ2VyLmFwcGx5KCBlbGVtLCBkYXRhICkgPT09IGZhbHNlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIERldGVybWluZSBldmVudCBwcm9wYWdhdGlvbiBwYXRoIGluIGFkdmFuY2UsIHBlciBXM0MgZXZlbnRzIHNwZWMgKCM5OTUxKVxuXHRcdC8vIEJ1YmJsZSB1cCB0byBkb2N1bWVudCwgdGhlbiB0byB3aW5kb3c7IHdhdGNoIGZvciBhIGdsb2JhbCBvd25lckRvY3VtZW50IHZhciAoIzk3MjQpXG5cdFx0aWYgKCAhb25seUhhbmRsZXJzICYmICFzcGVjaWFsLm5vQnViYmxlICYmICFqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0YnViYmxlVHlwZSA9IHNwZWNpYWwuZGVsZWdhdGVUeXBlIHx8IHR5cGU7XG5cdFx0XHRpZiAoICFyZm9jdXNNb3JwaC50ZXN0KCBidWJibGVUeXBlICsgdHlwZSApICkge1xuXHRcdFx0XHRjdXIgPSBjdXIucGFyZW50Tm9kZTtcblx0XHRcdH1cblx0XHRcdGZvciAoIDsgY3VyOyBjdXIgPSBjdXIucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0ZXZlbnRQYXRoLnB1c2goIGN1ciApO1xuXHRcdFx0XHR0bXAgPSBjdXI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE9ubHkgYWRkIHdpbmRvdyBpZiB3ZSBnb3QgdG8gZG9jdW1lbnQgKGUuZy4sIG5vdCBwbGFpbiBvYmogb3IgZGV0YWNoZWQgRE9NKVxuXHRcdFx0aWYgKCB0bXAgPT09IChlbGVtLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQpICkge1xuXHRcdFx0XHRldmVudFBhdGgucHVzaCggdG1wLmRlZmF1bHRWaWV3IHx8IHRtcC5wYXJlbnRXaW5kb3cgfHwgd2luZG93ICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRmlyZSBoYW5kbGVycyBvbiB0aGUgZXZlbnQgcGF0aFxuXHRcdGkgPSAwO1xuXHRcdHdoaWxlICggKGN1ciA9IGV2ZW50UGF0aFtpKytdKSAmJiAhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblxuXHRcdFx0ZXZlbnQudHlwZSA9IGkgPiAxID9cblx0XHRcdFx0YnViYmxlVHlwZSA6XG5cdFx0XHRcdHNwZWNpYWwuYmluZFR5cGUgfHwgdHlwZTtcblxuXHRcdFx0Ly8galF1ZXJ5IGhhbmRsZXJcblx0XHRcdGhhbmRsZSA9ICggZGF0YV9wcml2LmdldCggY3VyLCBcImV2ZW50c1wiICkgfHwge30gKVsgZXZlbnQudHlwZSBdICYmIGRhdGFfcHJpdi5nZXQoIGN1ciwgXCJoYW5kbGVcIiApO1xuXHRcdFx0aWYgKCBoYW5kbGUgKSB7XG5cdFx0XHRcdGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE5hdGl2ZSBoYW5kbGVyXG5cdFx0XHRoYW5kbGUgPSBvbnR5cGUgJiYgY3VyWyBvbnR5cGUgXTtcblx0XHRcdGlmICggaGFuZGxlICYmIGhhbmRsZS5hcHBseSAmJiBqUXVlcnkuYWNjZXB0RGF0YSggY3VyICkgKSB7XG5cdFx0XHRcdGV2ZW50LnJlc3VsdCA9IGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICk7XG5cdFx0XHRcdGlmICggZXZlbnQucmVzdWx0ID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGV2ZW50LnR5cGUgPSB0eXBlO1xuXG5cdFx0Ly8gSWYgbm9ib2R5IHByZXZlbnRlZCB0aGUgZGVmYXVsdCBhY3Rpb24sIGRvIGl0IG5vd1xuXHRcdGlmICggIW9ubHlIYW5kbGVycyAmJiAhZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkgKSB7XG5cblx0XHRcdGlmICggKCFzcGVjaWFsLl9kZWZhdWx0IHx8IHNwZWNpYWwuX2RlZmF1bHQuYXBwbHkoIGV2ZW50UGF0aC5wb3AoKSwgZGF0YSApID09PSBmYWxzZSkgJiZcblx0XHRcdFx0alF1ZXJ5LmFjY2VwdERhdGEoIGVsZW0gKSApIHtcblxuXHRcdFx0XHQvLyBDYWxsIGEgbmF0aXZlIERPTSBtZXRob2Qgb24gdGhlIHRhcmdldCB3aXRoIHRoZSBzYW1lIG5hbWUgbmFtZSBhcyB0aGUgZXZlbnQuXG5cdFx0XHRcdC8vIERvbid0IGRvIGRlZmF1bHQgYWN0aW9ucyBvbiB3aW5kb3csIHRoYXQncyB3aGVyZSBnbG9iYWwgdmFyaWFibGVzIGJlICgjNjE3MClcblx0XHRcdFx0aWYgKCBvbnR5cGUgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIGVsZW1bIHR5cGUgXSApICYmICFqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0XHRcdC8vIERvbid0IHJlLXRyaWdnZXIgYW4gb25GT08gZXZlbnQgd2hlbiB3ZSBjYWxsIGl0cyBGT08oKSBtZXRob2Rcblx0XHRcdFx0XHR0bXAgPSBlbGVtWyBvbnR5cGUgXTtcblxuXHRcdFx0XHRcdGlmICggdG1wICkge1xuXHRcdFx0XHRcdFx0ZWxlbVsgb250eXBlIF0gPSBudWxsO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFByZXZlbnQgcmUtdHJpZ2dlcmluZyBvZiB0aGUgc2FtZSBldmVudCwgc2luY2Ugd2UgYWxyZWFkeSBidWJibGVkIGl0IGFib3ZlXG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHR5cGU7XG5cdFx0XHRcdFx0ZWxlbVsgdHlwZSBdKCk7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHVuZGVmaW5lZDtcblxuXHRcdFx0XHRcdGlmICggdG1wICkge1xuXHRcdFx0XHRcdFx0ZWxlbVsgb250eXBlIF0gPSB0bXA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV2ZW50LnJlc3VsdDtcblx0fSxcblxuXHRkaXNwYXRjaDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0Ly8gTWFrZSBhIHdyaXRhYmxlIGpRdWVyeS5FdmVudCBmcm9tIHRoZSBuYXRpdmUgZXZlbnQgb2JqZWN0XG5cdFx0ZXZlbnQgPSBqUXVlcnkuZXZlbnQuZml4KCBldmVudCApO1xuXG5cdFx0dmFyIGksIGosIHJldCwgbWF0Y2hlZCwgaGFuZGxlT2JqLFxuXHRcdFx0aGFuZGxlclF1ZXVlID0gW10sXG5cdFx0XHRhcmdzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzICksXG5cdFx0XHRoYW5kbGVycyA9ICggZGF0YV9wcml2LmdldCggdGhpcywgXCJldmVudHNcIiApIHx8IHt9IClbIGV2ZW50LnR5cGUgXSB8fCBbXSxcblx0XHRcdHNwZWNpYWwgP
9673SBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZXZlbnQudHlwZSBdIHx8IHt9O1xuXG5cdFx0Ly8gVXNlIHRoZSBmaXgtZWQgalF1ZXJ5LkV2ZW50IHJhdGhlciB0aGFuIHRoZSAocmVhZC1vbmx5KSBuYXRpdmUgZXZlbnRcblx0XHRhcmdzWzBdID0gZXZlbnQ7XG5cdFx0ZXZlbnQuZGVsZWdhdGVUYXJnZXQgPSB0aGlzO1xuXG5cdFx0Ly8gQ2FsbCB0aGUgcHJlRGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlLCBhbmQgbGV0IGl0IGJhaWwgaWYgZGVzaXJlZFxuXHRcdGlmICggc3BlY2lhbC5wcmVEaXNwYXRjaCAmJiBzcGVjaWFsLnByZURpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICkgPT09IGZhbHNlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIERldGVybWluZSBoYW5kbGVyc1xuXHRcdGhhbmRsZXJRdWV1ZSA9IGpRdWVyeS5ldmVudC5oYW5kbGVycy5jYWxsKCB0aGlzLCBldmVudCwgaGFuZGxlcnMgKTtcblxuXHRcdC8vIFJ1biBkZWxlZ2F0ZXMgZmlyc3Q7IHRoZXkgbWF5IHdhbnQgdG8gc3RvcCBwcm9wYWdhdGlvbiBiZW5lYXRoIHVzXG5cdFx0aSA9IDA7XG5cdFx0d2hpbGUgKCAobWF0Y2hlZCA9IGhhbmRsZXJRdWV1ZVsgaSsrIF0pICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXHRcdFx0ZXZlbnQuY3VycmVudFRhcmdldCA9IG1hdGNoZWQuZWxlbTtcblxuXHRcdFx0aiA9IDA7XG5cdFx0XHR3aGlsZSAoIChoYW5kbGVPYmogPSBtYXRjaGVkLmhhbmRsZXJzWyBqKysgXSkgJiYgIWV2ZW50LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cblx0XHRcdFx0Ly8gVHJpZ2dlcmVkIGV2ZW50IG11c3QgZWl0aGVyIDEpIGhhdmUgbm8gbmFtZXNwYWNlLCBvciAyKSBoYXZlIG5hbWVzcGFjZShzKVxuXHRcdFx0XHQvLyBhIHN1YnNldCBvciBlcXVhbCB0byB0aG9zZSBpbiB0aGUgYm91bmQgZXZlbnQgKGJvdGggY2FuIGhhdmUgbm8gbmFtZXNwYWNlKS5cblx0XHRcdFx0aWYgKCAhZXZlbnQubmFtZXNwYWNlX3JlIHx8IGV2ZW50Lm5hbWVzcGFjZV9yZS50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSB7XG5cblx0XHRcdFx0XHRldmVudC5oYW5kbGVPYmogPSBoYW5kbGVPYmo7XG5cdFx0XHRcdFx0ZXZlbnQuZGF0YSA9IGhhbmRsZU9iai5kYXRhO1xuXG5cdFx0XHRcdFx0cmV0ID0gKCAoalF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGhhbmRsZU9iai5vcmlnVHlwZSBdIHx8IHt9KS5oYW5kbGUgfHwgaGFuZGxlT2JqLmhhbmRsZXIgKVxuXHRcdFx0XHRcdFx0XHQuYXBwbHkoIG1hdGNoZWQuZWxlbSwgYXJncyApO1xuXG5cdFx0XHRcdFx0aWYgKCByZXQgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRcdGlmICggKGV2ZW50LnJlc3VsdCA9IHJldCkgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDYWxsIHRoZSBwb3N0RGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlXG5cdFx0aWYgKCBzcGVjaWFsLnBvc3REaXNwYXRjaCApIHtcblx0XHRcdHNwZWNpYWwucG9zdERpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV2ZW50LnJlc3VsdDtcblx0fSxcblxuXHRoYW5kbGVyczogZnVuY3Rpb24oIGV2ZW50LCBoYW5kbGVycyApIHtcblx0XHR2YXIgaSwgbWF0Y2hlcywgc2VsLCBoYW5kbGVPYmosXG5cdFx0XHRoYW5kbGVyUXVldWUgPSBbXSxcblx0XHRcdGRlbGVnYXRlQ291bnQgPSBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LFxuXHRcdFx0Y3VyID0gZXZlbnQudGFyZ2V0O1xuXG5cdFx0Ly8gRmluZCBkZWxlZ2F0ZSBoYW5kbGVyc1xuXHRcdC8vIEJsYWNrLWhvbGUgU1ZHIDx1c2U+IGluc3RhbmNlIHRyZWVzICgjMTMxODApXG5cdFx0Ly8gQXZvaWQgbm9uLWxlZnQtY2xpY2sgYnViYmxpbmcgaW4gRmlyZWZveCAoIzM4NjEpXG5cdFx0aWYgKCBkZWxlZ2F0ZUNvdW50ICYmIGN1ci5ub2RlVHlwZSAmJiAoIWV2ZW50LmJ1dHRvbiB8fCBldmVudC50eXBlICE9PSBcImNsaWNrXCIpICkge1xuXG5cdFx0XHRmb3IgKCA7IGN1ciAhPT0gdGhpczsgY3VyID0gY3VyLnBhcmVudE5vZGUgfHwgdGhpcyApIHtcblxuXHRcdFx0XHQvLyBEb24ndCBwcm9jZXNzIGNsaWNrcyBvbiBkaXNhYmxlZCBlbGVtZW50cyAoIzY5MTEsICM4MTY1LCAjMTEzODIsICMxMTc2NClcblx0XHRcdFx0aWYgKCBjdXIuZGlzYWJsZWQgIT09IHRydWUgfHwgZXZlbnQudHlwZSAhPT0gXCJjbGlja1wiICkge1xuXHRcdFx0XHRcdG1hdGNoZXMgPSBbXTtcblx0XHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGRlbGVnYXRlQ291bnQ7IGkrKyApIHtcblx0XHRcdFx0XHRcdGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBpIF07XG5cblx0XHRcdFx0XHRcdC8vIERvbid0IGNvbmZsaWN0IHdpdGggT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzICgjMTMyMDMpXG5cdFx0XHRcdFx0XHRzZWwgPSBoYW5kbGVPYmouc2VsZWN0b3IgKyBcIiBcIjtcblxuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVzWyBzZWwgXSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVzWyBzZWwgXSA9IGhhbmRsZU9iai5uZWVkc0NvbnRleHQgP1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeSggc2VsLCB0aGlzICkuaW5kZXgoIGN1ciApID49IDAgOlxuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5maW5kKCBzZWwsIHRoaXMsIG51bGwsIFsgY3VyIF0gKS5sZW5ndGg7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZXNbIHNlbCBdICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVzLnB1c2goIGhhbmRsZU9iaiApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIG1hdGNoZXMubGVuZ3RoICkge1xuXHRcdFx0XHRcdFx0aGFuZGxlclF1ZXVlLnB1c2goeyBlbGVtOiBjdXIsIGhhbmRsZXJzOiBtYXRjaGVzIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEFkZCB0aGUgcmVtYWluaW5nIC
9673hkaXJlY3RseS1ib3VuZCkgaGFuZGxlcnNcblx0XHRpZiAoIGRlbGVnYXRlQ291bnQgPCBoYW5kbGVycy5sZW5ndGggKSB7XG5cdFx0XHRoYW5kbGVyUXVldWUucHVzaCh7IGVsZW06IHRoaXMsIGhhbmRsZXJzOiBoYW5kbGVycy5zbGljZSggZGVsZWdhdGVDb3VudCApIH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBoYW5kbGVyUXVldWU7XG5cdH0sXG5cblx0Ly8gSW5jbHVkZXMgc29tZSBldmVudCBwcm9wcyBzaGFyZWQgYnkgS2V5RXZlbnQgYW5kIE1vdXNlRXZlbnRcblx0cHJvcHM6IFwiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoXCIuc3BsaXQoXCIgXCIpLFxuXG5cdGZpeEhvb2tzOiB7fSxcblxuXHRrZXlIb29rczoge1xuXHRcdHByb3BzOiBcImNoYXIgY2hhckNvZGUga2V5IGtleUNvZGVcIi5zcGxpdChcIiBcIiksXG5cdFx0ZmlsdGVyOiBmdW5jdGlvbiggZXZlbnQsIG9yaWdpbmFsICkge1xuXG5cdFx0XHQvLyBBZGQgd2hpY2ggZm9yIGtleSBldmVudHNcblx0XHRcdGlmICggZXZlbnQud2hpY2ggPT0gbnVsbCApIHtcblx0XHRcdFx0ZXZlbnQud2hpY2ggPSBvcmlnaW5hbC5jaGFyQ29kZSAhPSBudWxsID8gb3JpZ2luYWwuY2hhckNvZGUgOiBvcmlnaW5hbC5rZXlDb2RlO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZXZlbnQ7XG5cdFx0fVxuXHR9LFxuXG5cdG1vdXNlSG9va3M6IHtcblx0XHRwcm9wczogXCJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnRcIi5zcGxpdChcIiBcIiksXG5cdFx0ZmlsdGVyOiBmdW5jdGlvbiggZXZlbnQsIG9yaWdpbmFsICkge1xuXHRcdFx0dmFyIGV2ZW50RG9jLCBkb2MsIGJvZHksXG5cdFx0XHRcdGJ1dHRvbiA9IG9yaWdpbmFsLmJ1dHRvbjtcblxuXHRcdFx0Ly8gQ2FsY3VsYXRlIHBhZ2VYL1kgaWYgbWlzc2luZyBhbmQgY2xpZW50WC9ZIGF2YWlsYWJsZVxuXHRcdFx0aWYgKCBldmVudC5wYWdlWCA9PSBudWxsICYmIG9yaWdpbmFsLmNsaWVudFggIT0gbnVsbCApIHtcblx0XHRcdFx0ZXZlbnREb2MgPSBldmVudC50YXJnZXQub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudDtcblx0XHRcdFx0ZG9jID0gZXZlbnREb2MuZG9jdW1lbnRFbGVtZW50O1xuXHRcdFx0XHRib2R5ID0gZXZlbnREb2MuYm9keTtcblxuXHRcdFx0XHRldmVudC5wYWdlWCA9IG9yaWdpbmFsLmNsaWVudFggKyAoIGRvYyAmJiBkb2Muc2Nyb2xsTGVmdCB8fCBib2R5ICYmIGJvZHkuc2Nyb2xsTGVmdCB8fCAwICkgLSAoIGRvYyAmJiBkb2MuY2xpZW50TGVmdCB8fCBib2R5ICYmIGJvZHkuY2xpZW50TGVmdCB8fCAwICk7XG5cdFx0XHRcdGV2ZW50LnBhZ2VZID0gb3JpZ2luYWwuY2xpZW50WSArICggZG9jICYmIGRvYy5zY3JvbGxUb3AgIHx8IGJvZHkgJiYgYm9keS5zY3JvbGxUb3AgIHx8IDAgKSAtICggZG9jICYmIGRvYy5jbGllbnRUb3AgIHx8IGJvZHkgJiYgYm9keS5jbGllbnRUb3AgIHx8IDAgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIHdoaWNoIGZvciBjbGljazogMSA9PT0gbGVmdDsgMiA9PT0gbWlkZGxlOyAzID09PSByaWdodFxuXHRcdFx0Ly8gTm90ZTogYnV0dG9uIGlzIG5vdCBub3JtYWxpemVkLCBzbyBkb24ndCB1c2UgaXRcblx0XHRcdGlmICggIWV2ZW50LndoaWNoICYmIGJ1dHRvbiAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRldmVudC53aGljaCA9ICggYnV0dG9uICYgMSA/IDEgOiAoIGJ1dHRvbiAmIDIgPyAzIDogKCBidXR0b24gJiA0ID8gMiA6IDAgKSApICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBldmVudDtcblx0XHR9XG5cdH0sXG5cblx0Zml4OiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0aWYgKCBldmVudFsgalF1ZXJ5LmV4cGFuZG8gXSApIHtcblx0XHRcdHJldHVybiBldmVudDtcblx0XHR9XG5cblx0XHQvLyBDcmVhdGUgYSB3cml0YWJsZSBjb3B5IG9mIHRoZSBldmVudCBvYmplY3QgYW5kIG5vcm1hbGl6ZSBzb21lIHByb3BlcnRpZXNcblx0XHR2YXIgaSwgcHJvcCwgY29weSxcblx0XHRcdHR5cGUgPSBldmVudC50eXBlLFxuXHRcdFx0b3JpZ2luYWxFdmVudCA9IGV2ZW50LFxuXHRcdFx0Zml4SG9vayA9IHRoaXMuZml4SG9va3NbIHR5cGUgXTtcblxuXHRcdGlmICggIWZpeEhvb2sgKSB7XG5cdFx0XHR0aGlzLmZpeEhvb2tzWyB0eXBlIF0gPSBmaXhIb29rID1cblx0XHRcdFx0cm1vdXNlRXZlbnQudGVzdCggdHlwZSApID8gdGhpcy5tb3VzZUhvb2tzIDpcblx0XHRcdFx0cmtleUV2ZW50LnRlc3QoIHR5cGUgKSA/IHRoaXMua2V5SG9va3MgOlxuXHRcdFx0XHR7fTtcblx0XHR9XG5cdFx0Y29weSA9IGZpeEhvb2sucHJvcHMgPyB0aGlzLnByb3BzLmNvbmNhdCggZml4SG9vay5wcm9wcyApIDogdGhpcy5wcm9wcztcblxuXHRcdGV2ZW50ID0gbmV3IGpRdWVyeS5FdmVudCggb3JpZ2luYWxFdmVudCApO1xuXG5cdFx0aSA9IGNvcHkubGVuZ3RoO1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0cHJvcCA9IGNvcHlbIGkgXTtcblx0XHRcdGV2ZW50WyBwcm9wIF0gPSBvcmlnaW5hbEV2ZW50WyBwcm9wIF07XG5cdFx0fVxuXG5cdFx0Ly8gU3VwcG9ydDogQ29yZG92YSAyLjUgKFdlYktpdCkgKCMxMzI1NSlcblx0XHQvLyBBbGwgZXZlbnRzIHNob3VsZCBoYXZlIGEgdGFyZ2V0OyBDb3Jkb3ZhIGRldmljZXJlYWR5IGRvZXNuJ3Rcblx0XHRpZiAoICFldmVudC50YXJnZXQgKSB7XG5cdFx0XHRldmVudC50YXJnZXQgPSBkb2N1bWVudDtcblx0XHR9XG5cblx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgNi4wKywgQ2hyb21lPDI4XG5cdFx0Ly8gVGFyZ2V0IHNob3VsZCBub3QgYmUgYSB0ZXh0IG5vZGUgKCM1MDQsICMxMzE0Mylcblx0XHRpZiAoIGV2ZW50LnRhcmdldC5ub2RlVHlwZSA9PT0gMyApIHtcblx0XHRcdGV2ZW50LnRhcmdldCA9IGV2ZW50LnRhcmdldC5wYXJlbnROb2RlO1xuXHRcdH1cblxuXHRcdHJldHVybiBmaXhIb29rLmZpbHRlciA/IGZpeEhvb2suZmlsdGVyKCBldmVudCwgb3JpZ2luYWxFdmVudCApIDogZXZlbnQ7XG5cdH0sXG5cblx0c3BlY2lhbDoge1xuXHRcdGxvYWQ6IHtcblx0XHRcdC8vIFByZXZlbnQgdHJpZ2dlcmVkIGltYWdlLmxvYWQgZXZlbnRzIGZyb20gYnViYmxpbmcgdG8gd2luZG93LmxvYWRcblx0XHRcdG5vQnViYmxlOiB0cnVlXG5cdFx0fSxcblx0XHRmb2N1czoge1xuXHRcdFx0Ly8gRmlyZSBuYXRpdmUgZXZlbnQgaWYgcG9zc2libGUgc28gYmx1ci9mb2N1cyBzZXF1ZW5jZSBpcyBjb3JyZWN0XG5cdFx0XHR0cmlnZ2VyOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCB0aGlzICE9PSBzYWZlQWN0aXZlRWxlbWVudCgpICYmIHRoaXMuZm9jdXMgKSB7XG5cdFx0XHRcdFx0dGhpcy5mb2N1cygpO1xuXHRcdFx0XHRcdHJldHVybi
9673BmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlbGVnYXRlVHlwZTogXCJmb2N1c2luXCJcblx0XHR9LFxuXHRcdGJsdXI6IHtcblx0XHRcdHRyaWdnZXI6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIHRoaXMgPT09IHNhZmVBY3RpdmVFbGVtZW50KCkgJiYgdGhpcy5ibHVyICkge1xuXHRcdFx0XHRcdHRoaXMuYmx1cigpO1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGRlbGVnYXRlVHlwZTogXCJmb2N1c291dFwiXG5cdFx0fSxcblx0XHRjbGljazoge1xuXHRcdFx0Ly8gRm9yIGNoZWNrYm94LCBmaXJlIG5hdGl2ZSBldmVudCBzbyBjaGVja2VkIHN0YXRlIHdpbGwgYmUgcmlnaHRcblx0XHRcdHRyaWdnZXI6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIHRoaXMudHlwZSA9PT0gXCJjaGVja2JveFwiICYmIHRoaXMuY2xpY2sgJiYgalF1ZXJ5Lm5vZGVOYW1lKCB0aGlzLCBcImlucHV0XCIgKSApIHtcblx0XHRcdFx0XHR0aGlzLmNsaWNrKCk7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBGb3IgY3Jvc3MtYnJvd3NlciBjb25zaXN0ZW5jeSwgZG9uJ3QgZmlyZSBuYXRpdmUgLmNsaWNrKCkgb24gbGlua3Ncblx0XHRcdF9kZWZhdWx0OiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdHJldHVybiBqUXVlcnkubm9kZU5hbWUoIGV2ZW50LnRhcmdldCwgXCJhXCIgKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0YmVmb3JldW5sb2FkOiB7XG5cdFx0XHRwb3N0RGlzcGF0Y2g6IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDIwK1xuXHRcdFx0XHQvLyBGaXJlZm94IGRvZXNuJ3QgYWxlcnQgaWYgdGhlIHJldHVyblZhbHVlIGZpZWxkIGlzIG5vdCBzZXQuXG5cdFx0XHRcdGlmICggZXZlbnQucmVzdWx0ICE9PSB1bmRlZmluZWQgJiYgZXZlbnQub3JpZ2luYWxFdmVudCApIHtcblx0XHRcdFx0XHRldmVudC5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlID0gZXZlbnQucmVzdWx0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdHNpbXVsYXRlOiBmdW5jdGlvbiggdHlwZSwgZWxlbSwgZXZlbnQsIGJ1YmJsZSApIHtcblx0XHQvLyBQaWdneWJhY2sgb24gYSBkb25vciBldmVudCB0byBzaW11bGF0ZSBhIGRpZmZlcmVudCBvbmUuXG5cdFx0Ly8gRmFrZSBvcmlnaW5hbEV2ZW50IHRvIGF2b2lkIGRvbm9yJ3Mgc3RvcFByb3BhZ2F0aW9uLCBidXQgaWYgdGhlXG5cdFx0Ly8gc2ltdWxhdGVkIGV2ZW50IHByZXZlbnRzIGRlZmF1bHQgdGhlbiB3ZSBkbyB0aGUgc2FtZSBvbiB0aGUgZG9ub3IuXG5cdFx0dmFyIGUgPSBqUXVlcnkuZXh0ZW5kKFxuXHRcdFx0bmV3IGpRdWVyeS5FdmVudCgpLFxuXHRcdFx0ZXZlbnQsXG5cdFx0XHR7XG5cdFx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRcdGlzU2ltdWxhdGVkOiB0cnVlLFxuXHRcdFx0XHRvcmlnaW5hbEV2ZW50OiB7fVxuXHRcdFx0fVxuXHRcdCk7XG5cdFx0aWYgKCBidWJibGUgKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggZSwgbnVsbCwgZWxlbSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQuZGlzcGF0Y2guY2FsbCggZWxlbSwgZSApO1xuXHRcdH1cblx0XHRpZiAoIGUuaXNEZWZhdWx0UHJldmVudGVkKCkgKSB7XG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdH1cblx0fVxufTtcblxualF1ZXJ5LnJlbW92ZUV2ZW50ID0gZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGhhbmRsZSApIHtcblx0aWYgKCBlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0ZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyKCB0eXBlLCBoYW5kbGUsIGZhbHNlICk7XG5cdH1cbn07XG5cbmpRdWVyeS5FdmVudCA9IGZ1bmN0aW9uKCBzcmMsIHByb3BzICkge1xuXHQvLyBBbGxvdyBpbnN0YW50aWF0aW9uIHdpdGhvdXQgdGhlICduZXcnIGtleXdvcmRcblx0aWYgKCAhKHRoaXMgaW5zdGFuY2VvZiBqUXVlcnkuRXZlbnQpICkge1xuXHRcdHJldHVybiBuZXcgalF1ZXJ5LkV2ZW50KCBzcmMsIHByb3BzICk7XG5cdH1cblxuXHQvLyBFdmVudCBvYmplY3Rcblx0aWYgKCBzcmMgJiYgc3JjLnR5cGUgKSB7XG5cdFx0dGhpcy5vcmlnaW5hbEV2ZW50ID0gc3JjO1xuXHRcdHRoaXMudHlwZSA9IHNyYy50eXBlO1xuXG5cdFx0Ly8gRXZlbnRzIGJ1YmJsaW5nIHVwIHRoZSBkb2N1bWVudCBtYXkgaGF2ZSBiZWVuIG1hcmtlZCBhcyBwcmV2ZW50ZWRcblx0XHQvLyBieSBhIGhhbmRsZXIgbG93ZXIgZG93biB0aGUgdHJlZTsgcmVmbGVjdCB0aGUgY29ycmVjdCB2YWx1ZS5cblx0XHR0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHNyYy5kZWZhdWx0UHJldmVudGVkIHx8XG5cdFx0XHRcdHNyYy5kZWZhdWx0UHJldmVudGVkID09PSB1bmRlZmluZWQgJiZcblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LjBcblx0XHRcdFx0c3JjLnJldHVyblZhbHVlID09PSBmYWxzZSA/XG5cdFx0XHRyZXR1cm5UcnVlIDpcblx0XHRcdHJldHVybkZhbHNlO1xuXG5cdC8vIEV2ZW50IHR5cGVcblx0fSBlbHNlIHtcblx0XHR0aGlzLnR5cGUgPSBzcmM7XG5cdH1cblxuXHQvLyBQdXQgZXhwbGljaXRseSBwcm92aWRlZCBwcm9wZXJ0aWVzIG9udG8gdGhlIGV2ZW50IG9iamVjdFxuXHRpZiAoIHByb3BzICkge1xuXHRcdGpRdWVyeS5leHRlbmQoIHRoaXMsIHByb3BzICk7XG5cdH1cblxuXHQvLyBDcmVhdGUgYSB0aW1lc3RhbXAgaWYgaW5jb21pbmcgZXZlbnQgZG9lc24ndCBoYXZlIG9uZVxuXHR0aGlzLnRpbWVTdGFtcCA9IHNyYyAmJiBzcmMudGltZVN0YW1wIHx8IGpRdWVyeS5ub3coKTtcblxuXHQvLyBNYXJrIGl0IGFzIGZpeGVkXG5cdHRoaXNbIGpRdWVyeS5leHBhbmRvIF0gPSB0cnVlO1xufTtcblxuLy8galF1ZXJ5LkV2ZW50IGlzIGJhc2VkIG9uIERPTTMgRXZlbnRzIGFzIHNwZWNpZmllZCBieSB0aGUgRUNNQVNjcmlwdCBMYW5ndWFnZSBCaW5kaW5nXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDAzMDMzMS9lY21hLXNjcmlwdC1iaW5kaW5nLmh0bWxcbmpRdWVyeS5FdmVudC5wcm90b3R5cGUgPSB7XG5cdGlzRGVmYXVsdFByZXZlbn
9673RlZDogcmV0dXJuRmFsc2UsXG5cdGlzUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSxcblx0aXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVybkZhbHNlLFxuXG5cdHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcblxuXHRcdHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiBlLnByZXZlbnREZWZhdWx0ICkge1xuXHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdH1cblx0fSxcblx0c3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcblxuXHRcdHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSByZXR1cm5UcnVlO1xuXG5cdFx0aWYgKCBlICYmIGUuc3RvcFByb3BhZ2F0aW9uICkge1xuXHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHR9XG5cdH0sXG5cdHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiApIHtcblx0XHRcdGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5zdG9wUHJvcGFnYXRpb24oKTtcblx0fVxufTtcblxuLy8gQ3JlYXRlIG1vdXNlZW50ZXIvbGVhdmUgZXZlbnRzIHVzaW5nIG1vdXNlb3Zlci9vdXQgYW5kIGV2ZW50LXRpbWUgY2hlY2tzXG4vLyBTdXBwb3J0OiBDaHJvbWUgMTUrXG5qUXVlcnkuZWFjaCh7XG5cdG1vdXNlZW50ZXI6IFwibW91c2VvdmVyXCIsXG5cdG1vdXNlbGVhdmU6IFwibW91c2VvdXRcIixcblx0cG9pbnRlcmVudGVyOiBcInBvaW50ZXJvdmVyXCIsXG5cdHBvaW50ZXJsZWF2ZTogXCJwb2ludGVyb3V0XCJcbn0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7XG5cdGpRdWVyeS5ldmVudC5zcGVjaWFsWyBvcmlnIF0gPSB7XG5cdFx0ZGVsZWdhdGVUeXBlOiBmaXgsXG5cdFx0YmluZFR5cGU6IGZpeCxcblxuXHRcdGhhbmRsZTogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0dmFyIHJldCxcblx0XHRcdFx0dGFyZ2V0ID0gdGhpcyxcblx0XHRcdFx0cmVsYXRlZCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQsXG5cdFx0XHRcdGhhbmRsZU9iaiA9IGV2ZW50LmhhbmRsZU9iajtcblxuXHRcdFx0Ly8gRm9yIG1vdXNlbnRlci9sZWF2ZSBjYWxsIHRoZSBoYW5kbGVyIGlmIHJlbGF0ZWQgaXMgb3V0c2lkZSB0aGUgdGFyZ2V0LlxuXHRcdFx0Ly8gTkI6IE5vIHJlbGF0ZWRUYXJnZXQgaWYgdGhlIG1vdXNlIGxlZnQvZW50ZXJlZCB0aGUgYnJvd3NlciB3aW5kb3dcblx0XHRcdGlmICggIXJlbGF0ZWQgfHwgKHJlbGF0ZWQgIT09IHRhcmdldCAmJiAhalF1ZXJ5LmNvbnRhaW5zKCB0YXJnZXQsIHJlbGF0ZWQgKSkgKSB7XG5cdFx0XHRcdGV2ZW50LnR5cGUgPSBoYW5kbGVPYmoub3JpZ1R5cGU7XG5cdFx0XHRcdHJldCA9IGhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0ZXZlbnQudHlwZSA9IGZpeDtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fVxuXHR9O1xufSk7XG5cbi8vIFN1cHBvcnQ6IEZpcmVmb3gsIENocm9tZSwgU2FmYXJpXG4vLyBDcmVhdGUgXCJidWJibGluZ1wiIGZvY3VzIGFuZCBibHVyIGV2ZW50c1xuaWYgKCAhc3VwcG9ydC5mb2N1c2luQnViYmxlcyApIHtcblx0alF1ZXJ5LmVhY2goeyBmb2N1czogXCJmb2N1c2luXCIsIGJsdXI6IFwiZm9jdXNvdXRcIiB9LCBmdW5jdGlvbiggb3JpZywgZml4ICkge1xuXG5cdFx0Ly8gQXR0YWNoIGEgc2luZ2xlIGNhcHR1cmluZyBoYW5kbGVyIG9uIHRoZSBkb2N1bWVudCB3aGlsZSBzb21lb25lIHdhbnRzIGZvY3VzaW4vZm9jdXNvdXRcblx0XHR2YXIgaGFuZGxlciA9IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0alF1ZXJ5LmV2ZW50LnNpbXVsYXRlKCBmaXgsIGV2ZW50LnRhcmdldCwgalF1ZXJ5LmV2ZW50LmZpeCggZXZlbnQgKSwgdHJ1ZSApO1xuXHRcdFx0fTtcblxuXHRcdGpRdWVyeS5ldmVudC5zcGVjaWFsWyBmaXggXSA9IHtcblx0XHRcdHNldHVwOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIGRvYyA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLFxuXHRcdFx0XHRcdGF0dGFjaGVzID0gZGF0YV9wcml2LmFjY2VzcyggZG9jLCBmaXggKTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MuYWRkRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRhdGFfcHJpdi5hY2Nlc3MoIGRvYywgZml4LCAoIGF0dGFjaGVzIHx8IDAgKSArIDEgKTtcblx0XHRcdH0sXG5cdFx0XHR0ZWFyZG93bjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcyxcblx0XHRcdFx0XHRhdHRhY2hlcyA9IGRhdGFfcHJpdi5hY2Nlc3MoIGRvYywgZml4ICkgLSAxO1xuXG5cdFx0XHRcdGlmICggIWF0dGFjaGVzICkge1xuXHRcdFx0XHRcdGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCBvcmlnLCBoYW5kbGVyLCB0cnVlICk7XG5cdFx0XHRcdFx0ZGF0YV9wcml2LnJlbW92ZSggZG9jLCBmaXggKTtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRhdGFfcHJpdi5hY2Nlc3MoIGRvYywgZml4LCBhdHRhY2hlcyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0fSk7XG59XG5cbmpRdWVyeS5mbi5leHRlbmQoe1xuXG5cdG9uOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgLypJTlRFUk5BTCovIG9uZSApIHtcblx0XHR2YXIgb3JpZ0ZuLCB0eXBlO1xuXG5cdFx0Ly8gVHlwZXMgY2FuIGJlIGEgbWFwIG9mIHR5cGVzL2hhbmRsZXJzXG5cdFx0aWYgKCB0eXBlb2YgdHlwZXMgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHQvLyAoIHR5cGVzLU9iamVjdCwgc2VsZWN0b3IsIGRhdGEgKVxuXHRcdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRcdC8vICggdHlwZXMtT2JqZWN0LCBkYXRhIClcblx0XHRcdFx0ZGF0YSA9IGRhdGEgfHwgc2VsZWN0b3I7XG5cdFx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdFx0Zm9yICggdHlwZSBpbiB0eXBlcyApIHtcblx0XHRcdFx0dGhpcy5vbiggdHlwZSwgc2VsZWN0b3IsIGRhdGEsIHR5cGVzWyB0eXBlIF0sIG9uZSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXG5cdFx0aWYgKCBkYXRhID09IG51bGwgJiYgZm4gPT0gbnVsbCApIHtcblx0XHRcdC8vICggdHlwZXMsIGZuIClcblx0XHRcdGZuID0gc2VsZWN0b3I7XG5cdFx0XHRkYXRhID0gc2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fSBlbHNlIGlmICggZm4gPT0gbnVsbCApIHtcblx0XHRcdGlmICggdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0XHQvLyAoIHR5cGVzLCBzZWxlY3RvciwgZm4gKVxuXHRcdFx0XHRmbiA9IGRhdGE7XG5cdFx0XHRcdGRhdGEgPSB1bmRlZmluZWQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyAoIHR5cGVzLCBkYXRhLCBmbiApXG5cdFx0XHRcdGZuID0gZGF0YTtcblx0XHRcdFx0ZGF0YSA9IHNlbGVjdG9yO1xuXHRcdFx0XHRzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKCBmbiA9PT0gZmFsc2UgKSB7XG5cdFx0XHRmbiA9IHJldHVybkZhbHNlO1xuXHRcdH0gZWxzZSBpZiAoICFmbiApIHtcblx0XHRcdHJldHVybi
9673B0aGlzO1xuXHRcdH1cblxuXHRcdGlmICggb25lID09PSAxICkge1xuXHRcdFx0b3JpZ0ZuID0gZm47XG5cdFx0XHRmbiA9IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0Ly8gQ2FuIHVzZSBhbiBlbXB0eSBzZXQsIHNpbmNlIGV2ZW50IGNvbnRhaW5zIHRoZSBpbmZvXG5cdFx0XHRcdGpRdWVyeSgpLm9mZiggZXZlbnQgKTtcblx0XHRcdFx0cmV0dXJuIG9yaWdGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHR9O1xuXHRcdFx0Ly8gVXNlIHNhbWUgZ3VpZCBzbyBjYWxsZXIgY2FuIHJlbW92ZSB1c2luZyBvcmlnRm5cblx0XHRcdGZuLmd1aWQgPSBvcmlnRm4uZ3VpZCB8fCAoIG9yaWdGbi5ndWlkID0galF1ZXJ5Lmd1aWQrKyApO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5ldmVudC5hZGQoIHRoaXMsIHR5cGVzLCBmbiwgZGF0YSwgc2VsZWN0b3IgKTtcblx0XHR9KTtcblx0fSxcblx0b25lOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgMSApO1xuXHR9LFxuXHRvZmY6IGZ1bmN0aW9uKCB0eXBlcywgc2VsZWN0b3IsIGZuICkge1xuXHRcdHZhciBoYW5kbGVPYmosIHR5cGU7XG5cdFx0aWYgKCB0eXBlcyAmJiB0eXBlcy5wcmV2ZW50RGVmYXVsdCAmJiB0eXBlcy5oYW5kbGVPYmogKSB7XG5cdFx0XHQvLyAoIGV2ZW50ICkgIGRpc3BhdGNoZWQgalF1ZXJ5LkV2ZW50XG5cdFx0XHRoYW5kbGVPYmogPSB0eXBlcy5oYW5kbGVPYmo7XG5cdFx0XHRqUXVlcnkoIHR5cGVzLmRlbGVnYXRlVGFyZ2V0ICkub2ZmKFxuXHRcdFx0XHRoYW5kbGVPYmoubmFtZXNwYWNlID8gaGFuZGxlT2JqLm9yaWdUeXBlICsgXCIuXCIgKyBoYW5kbGVPYmoubmFtZXNwYWNlIDogaGFuZGxlT2JqLm9yaWdUeXBlLFxuXHRcdFx0XHRoYW5kbGVPYmouc2VsZWN0b3IsXG5cdFx0XHRcdGhhbmRsZU9iai5oYW5kbGVyXG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHRcdGlmICggdHlwZW9mIHR5cGVzID09PSBcIm9iamVjdFwiICkge1xuXHRcdFx0Ly8gKCB0eXBlcy1vYmplY3QgWywgc2VsZWN0b3JdIClcblx0XHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XG5cdFx0XHRcdHRoaXMub2ZmKCB0eXBlLCBzZWxlY3RvciwgdHlwZXNbIHR5cGUgXSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHRcdGlmICggc2VsZWN0b3IgPT09IGZhbHNlIHx8IHR5cGVvZiBzZWxlY3RvciA9PT0gXCJmdW5jdGlvblwiICkge1xuXHRcdFx0Ly8gKCB0eXBlcyBbLCBmbl0gKVxuXHRcdFx0Zm4gPSBzZWxlY3Rvcjtcblx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAoIGZuID09PSBmYWxzZSApIHtcblx0XHRcdGZuID0gcmV0dXJuRmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCB0aGlzLCB0eXBlcywgZm4sIHNlbGVjdG9yICk7XG5cdFx0fSk7XG5cdH0sXG5cblx0dHJpZ2dlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCB0aGlzICk7XG5cdFx0fSk7XG5cdH0sXG5cdHRyaWdnZXJIYW5kbGVyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHtcblx0XHR2YXIgZWxlbSA9IHRoaXNbMF07XG5cdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCBlbGVtLCB0cnVlICk7XG5cdFx0fVxuXHR9XG59KTtcblxuXG52YXJcblx0cnhodG1sVGFnID0gLzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW1xcdzpdKylbXj5dKilcXC8+L2dpLFxuXHRydGFnTmFtZSA9IC88KFtcXHc6XSspLyxcblx0cmh0bWwgPSAvPHwmIz9cXHcrOy8sXG5cdHJub0lubmVyaHRtbCA9IC88KD86c2NyaXB0fHN0eWxlfGxpbmspL2ksXG5cdC8vIGNoZWNrZWQ9XCJjaGVja2VkXCIgb3IgY2hlY2tlZFxuXHRyY2hlY2tlZCA9IC9jaGVja2VkXFxzKig/OltePV18PVxccyouY2hlY2tlZC4pL2ksXG5cdHJzY3JpcHRUeXBlID0gL14kfFxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSxcblx0cnNjcmlwdFR5cGVNYXNrZWQgPSAvXnRydWVcXC8oLiopLyxcblx0cmNsZWFuU2NyaXB0ID0gL15cXHMqPCEoPzpcXFtDREFUQVxcW3wtLSl8KD86XFxdXFxdfC0tKT5cXHMqJC9nLFxuXG5cdC8vIFdlIGhhdmUgdG8gY2xvc2UgdGhlc2UgdGFncyB0byBzdXBwb3J0IFhIVE1MICgjMTMyMDApXG5cdHdyYXBNYXAgPSB7XG5cblx0XHQvLyBTdXBwb3J0OiBJRTlcblx0XHRvcHRpb246IFsgMSwgXCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+XCIsIFwiPC9zZWxlY3Q+XCIgXSxcblxuXHRcdHRoZWFkOiBbIDEsIFwiPHRhYmxlPlwiLCBcIjwvdGFibGU+XCIgXSxcblx0XHRjb2w6IFsgMiwgXCI8dGFibGU+PGNvbGdyb3VwPlwiLCBcIjwvY29sZ3JvdXA+PC90YWJsZT5cIiBdLFxuXHRcdHRyOiBbIDIsIFwiPHRhYmxlPjx0Ym9keT5cIiwgXCI8L3Rib2R5PjwvdGFibGU+XCIgXSxcblx0XHR0ZDogWyAzLCBcIjx0YWJsZT48dGJvZHk+PHRyPlwiLCBcIjwvdHI+PC90Ym9keT48L3RhYmxlPlwiIF0sXG5cblx0XHRfZGVmYXVsdDogWyAwLCBcIlwiLCBcIlwiIF1cblx0fTtcblxuLy8gU3VwcG9ydDogSUU5XG53cmFwTWFwLm9wdGdyb3VwID0gd3JhcE1hcC5vcHRpb247XG5cbndyYXBNYXAudGJvZHkgPSB3cmFwTWFwLnRmb290ID0gd3JhcE1hcC5jb2xncm91cCA9IHdyYXBNYXAuY2FwdGlvbiA9IHdyYXBNYXAudGhlYWQ7XG53cmFwTWFwLnRoID0gd3JhcE1hcC50ZDtcblxuLy8gU3VwcG9ydDogMS54IGNvbXBhdGliaWxpdHlcbi8vIE1hbmlwdWxhdGluZyB0YWJsZXMgcmVxdWlyZXMgYSB0Ym9keVxuZnVuY3Rpb24gbWFuaXB1bGF0aW9uVGFyZ2V0KCBlbGVtLCBjb250ZW50ICkge1xuXHRyZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCBcInRhYmxlXCIgKSAmJlxuXHRcdGpRdWVyeS5ub2RlTmFtZSggY29udGVudC5ub2RlVHlwZSAhPT0gMTEgPyBjb250ZW50IDogY29udGVudC5maXJzdENoaWxkLCBcInRyXCIgKSA/XG5cblx0XHRlbGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwidGJvZHlcIilbMF0gfHxcblx0XHRcdGVsZW0uYXBwZW5kQ2hpbGQoIGVsZW0ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGJvZHlcIikgKSA6XG5cdFx0ZWxlbTtcbn1cblxuLy8gUmVwbGFjZS9yZXN0b3JlIHRoZSB0eXBlIGF0dHJpYnV0ZSBvZiBzY3JpcHQgZWxlbWVudHMgZm9yIHNhZmUgRE9NIG1hbmlwdWxhdGlvblxuZnVuY3Rpb24gZGlzYWJsZVNjcmlwdCggZWxlbSApIHtcblx0ZWxlbS50eXBlID0gKGVsZW0uZ2V0QXR0cmlidXRlKFwidHlwZVwiKSAhPT0gbnVsbCkgKyBcIi9cIiArIGVsZW0udHlwZTtcblx0cmV0dXJuIGVsZW07XG59XG5mdW5jdGlvbiByZXN0b3JlU2NyaXB0KCBlbGVtICkge1xuXHR2YXIgbWF0Y2ggPSByc2NyaXB0VHlwZU1hc2tlZC5leGVjKCBlbGVtLnR5cGUgKTtcblxuXHRpZiAoIG1hdGNoICkge1xuXHRcdGVsZW0udHlwZSA9IG1hdGNoWyAxIF07XG5cdH0gZWxzZSB7XG5cdFx0ZWxlbS5yZW1vdmVBdHRyaWJ1dGUoXCJ0eXBlXCIpO1xuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbi8vIE1hcmsgc2NyaXB0cyBhcyBoYXZpbmcgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZFxuZnVuY3Rpb24gc2V0R2xvYmFsRXZhbCggZWxlbXMsIHJlZkVsZW1lbnRzICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bCA9IGVsZW1zLmxlbmd0aDtcblxuXHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0ZGF0YV9wcml2LnNldChcblx0XHRcdGVsZW1zWyBpIF0sIFwiZ2xvYmFsRXZhbFwiLCAhcmVmRWxlbWVudHMgfHwgZGF0YV9wcml2LmdldCggcmVmRWxlbWVudHNbIGkgXSwgXCJnbG9iYWxFdmFsXCIgKVxuXHRcdCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gY2xvbmVDb3B5RXZlbnQoIHNyYywgZGVzdCApIHtcblx0dmFyIGksIGwsIHR5cGUsIHBkYXRhT2xkLCBwZGF0YUN1ciwgdWRhdGFPbGQsIHVkYXRhQ3VyLCBldmVudHM7XG5cblx0aWYgKCBkZXN0Lm5vZGVUeXBlICE9PSAxICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIDEuIENvcHkgcHJpdmF0ZSBkYXRhOiBldmVudHMsIGhhbmRsZXJzLCBldGMuXG5cdGlmICggZGF0YV9wcml2Lmhhc0RhdGEoIHNyYyApICkge1xuXHRcdHBkYXRhT2xkID0gZGF0YV9wcml2LmFjY2Vzcyggc3JjICk7XG5cdFx0cGRhdGFDdXIgPSBkYXRhX3ByaXYuc2V0KCBkZXN0LCBwZGF0YU9sZCApO1xuXHRcdGV2ZW50cyA9IHBkYXRhT2xkLmV2ZW50cztcblxuXHRcdGlmICggZXZlbnRzICkge1xuXHRcdFx0ZGVsZXRlIHBkYXRhQ3VyLmhhbmRsZTtcblx0XHRcdHBkYXRhQ3VyLmV2ZW50cyA9IHt9O1xuXG5cdFx0XHRmb3IgKCB0eXBlIGluIGV2ZW50cyApIHtcblx0XHRcdFx0Zm9yICggaSA9IDAsIGwgPSBldmVudHNbIHR5cGUgXS5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LmFkZCggZGVzdCwgdHlwZSwgZXZlbnRzWyB0eXBlIF1bIGkgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gMi4gQ29weSB1c2VyIGRhdGFcblx0aWYgKCBkYXRhX3VzZXIuaGFzRGF0YSggc3JjICkgKSB7XG5cdFx0dWRhdGFPbGQgPSBkYXRhX3VzZXIuYWNjZXNzKCBzcmMgKTtcblx0XHR1ZGF0YUN1ciA9IGpRdWVyeS5leHRlbmQoIHt9LCB1ZGF0YU9sZCApO1xuXG5cdFx0ZGF0YV91c2VyLnNldCggZGVzdCwgdWRhdGFDdXIgKTtcblx0fVxufVxuXG5mdW5jdGlvbiBnZXRBbGwoIGNvbnRleHQsIHRhZyApIHtcblx0dmFyIHJldCA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPyBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgfHwgXCIqXCIgKSA6XG5cdFx0XHRjb250ZXh0LnF1
9673ZXJ5U2VsZWN0b3JBbGwgPyBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyB8fCBcIipcIiApIDpcblx0XHRcdFtdO1xuXG5cdHJldHVybiB0YWcgPT09IHVuZGVmaW5lZCB8fCB0YWcgJiYgalF1ZXJ5Lm5vZGVOYW1lKCBjb250ZXh0LCB0YWcgKSA/XG5cdFx0alF1ZXJ5Lm1lcmdlKCBbIGNvbnRleHQgXSwgcmV0ICkgOlxuXHRcdHJldDtcbn1cblxuLy8gRml4IElFIGJ1Z3MsIHNlZSBzdXBwb3J0IHRlc3RzXG5mdW5jdGlvbiBmaXhJbnB1dCggc3JjLCBkZXN0ICkge1xuXHR2YXIgbm9kZU5hbWUgPSBkZXN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0Ly8gRmFpbHMgdG8gcGVyc2lzdCB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIGNsb25lZCBjaGVja2JveCBvciByYWRpbyBidXR0b24uXG5cdGlmICggbm9kZU5hbWUgPT09IFwiaW5wdXRcIiAmJiByY2hlY2thYmxlVHlwZS50ZXN0KCBzcmMudHlwZSApICkge1xuXHRcdGRlc3QuY2hlY2tlZCA9IHNyYy5jaGVja2VkO1xuXG5cdC8vIEZhaWxzIHRvIHJldHVybiB0aGUgc2VsZWN0ZWQgb3B0aW9uIHRvIHRoZSBkZWZhdWx0IHNlbGVjdGVkIHN0YXRlIHdoZW4gY2xvbmluZyBvcHRpb25zXG5cdH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgfHwgbm9kZU5hbWUgPT09IFwidGV4dGFyZWFcIiApIHtcblx0XHRkZXN0LmRlZmF1bHRWYWx1ZSA9IHNyYy5kZWZhdWx0VmFsdWU7XG5cdH1cbn1cblxualF1ZXJ5LmV4dGVuZCh7XG5cdGNsb25lOiBmdW5jdGlvbiggZWxlbSwgZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKSB7XG5cdFx0dmFyIGksIGwsIHNyY0VsZW1lbnRzLCBkZXN0RWxlbWVudHMsXG5cdFx0XHRjbG9uZSA9IGVsZW0uY2xvbmVOb2RlKCB0cnVlICksXG5cdFx0XHRpblBhZ2UgPSBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApO1xuXG5cdFx0Ly8gRml4IElFIGNsb25pbmcgaXNzdWVzXG5cdFx0aWYgKCAhc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCAmJiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgZWxlbS5ub2RlVHlwZSA9PT0gMTEgKSAmJlxuXHRcdFx0XHQhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cblx0XHRcdC8vIFdlIGVzY2hldyBTaXp6bGUgaGVyZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29uczogaHR0cDovL2pzcGVyZi5jb20vZ2V0YWxsLXZzLXNpenpsZS8yXG5cdFx0XHRkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lICk7XG5cdFx0XHRzcmNFbGVtZW50cyA9IGdldEFsbCggZWxlbSApO1xuXG5cdFx0XHRmb3IgKCBpID0gMCwgbCA9IHNyY0VsZW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0Zml4SW5wdXQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50c1sgaSBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ29weSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFsIHRvIHRoZSBjbG9uZVxuXHRcdGlmICggZGF0YUFuZEV2ZW50cyApIHtcblx0XHRcdGlmICggZGVlcERhdGFBbmRFdmVudHMgKSB7XG5cdFx0XHRcdHNyY0VsZW1lbnRzID0gc3JjRWxlbWVudHMgfHwgZ2V0QWxsKCBlbGVtICk7XG5cdFx0XHRcdGRlc3RFbGVtZW50cyA9IGRlc3RFbGVtZW50cyB8fCBnZXRBbGwoIGNsb25lICk7XG5cblx0XHRcdFx0Zm9yICggaSA9IDAsIGwgPSBzcmNFbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0Y2xvbmVDb3B5RXZlbnQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50c1sgaSBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNsb25lQ29weUV2ZW50KCBlbGVtLCBjbG9uZSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFByZXNlcnZlIHNjcmlwdCBldmFsdWF0aW9uIGhpc3Rvcnlcblx0XHRkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lLCBcInNjcmlwdFwiICk7XG5cdFx0aWYgKCBkZXN0RWxlbWVudHMubGVuZ3RoID4gMCApIHtcblx0XHRcdHNldEdsb2JhbEV2YWwoIGRlc3RFbGVtZW50cywgIWluUGFnZSAmJiBnZXRBbGwoIGVsZW0sIFwic2NyaXB0XCIgKSApO1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiB0aGUgY2xvbmVkIHNldFxuXHRcdHJldHVybiBjbG9uZTtcblx0fSxcblxuXHRidWlsZEZyYWdtZW50OiBmdW5jdGlvbiggZWxlbXMsIGNvbnRleHQsIHNjcmlwdHMsIHNlbGVjdGlvbiApIHtcblx0XHR2YXIgZWxlbSwgdG1wLCB0YWcsIHdyYXAsIGNvbnRhaW5zLCBqLFxuXHRcdFx0ZnJhZ21lbnQgPSBjb250ZXh0LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxcblx0XHRcdG5vZGVzID0gW10sXG5cdFx0XHRpID0gMCxcblx0XHRcdGwgPSBlbGVtcy5sZW5ndGg7XG5cblx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRlbGVtID0gZWxlbXNbIGkgXTtcblxuXHRcdFx0aWYgKCBlbGVtIHx8IGVsZW0gPT09IDAgKSB7XG5cblx0XHRcdFx0Ly8gQWRkIG5vZGVzIGRpcmVjdGx5XG5cdFx0XHRcdGlmICggalF1ZXJ5LnR5cGUoIGVsZW0gKSA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBRdFdlYktpdCwgUGhhbnRvbUpTXG5cdFx0XHRcdFx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0XHRcdGpRdWVyeS5tZXJnZSggbm9kZXMsIGVsZW0ubm9kZVR5cGUgPyBbIGVsZW0gXSA6IGVsZW0gKTtcblxuXHRcdFx0XHQvLyBDb252ZXJ0IG5vbi1odG1sIGludG8gYSB0ZXh0IG5vZGVcblx0XHRcdFx0fSBlbHNlIGlmICggIXJodG1sLnRlc3QoIGVsZW0gKSApIHtcblx0XHRcdFx0XHRub2Rlcy5wdXNoKCBjb250ZXh0LmNyZWF0ZVRleHROb2RlKCBlbGVtICkgKTtcblxuXHRcdFx0XHQvLyBDb252ZXJ0IGh0bWwgaW50byBET00gbm9kZXNcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0bXAgPSB0bXAgfHwgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGNvbnRleHQuY3JlYXRlRWxlbWVudChcImRpdlwiKSApO1xuXG5cdFx0XHRcdFx0Ly8gRGVzZXJpYWxpemUgYSBzdGFuZGFyZCByZXByZXNlbnRhdGlvblxuXHRcdFx0XHRcdHRhZyA9ICggcnRhZ05hbWUuZXhlYyggZWxlbSApIHx8IFsgXCJcIiwgXCJcIiBdIClbIDEgXS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0XHRcdHdyYXAgPSB3cmFwTWFwWyB0YWcgXSB8fCB3cmFwTWFwLl9kZWZhdWx0O
96731xuXHRcdFx0XHRcdHRtcC5pbm5lckhUTUwgPSB3cmFwWyAxIF0gKyBlbGVtLnJlcGxhY2UoIHJ4aHRtbFRhZywgXCI8JDE+PC8kMj5cIiApICsgd3JhcFsgMiBdO1xuXG5cdFx0XHRcdFx0Ly8gRGVzY2VuZCB0aHJvdWdoIHdyYXBwZXJzIHRvIHRoZSByaWdodCBjb250ZW50XG5cdFx0XHRcdFx0aiA9IHdyYXBbIDAgXTtcblx0XHRcdFx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdFx0XHRcdHRtcCA9IHRtcC5sYXN0Q2hpbGQ7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogUXRXZWJLaXQsIFBoYW50b21KU1xuXHRcdFx0XHRcdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIG5vZGVzLCB0bXAuY2hpbGROb2RlcyApO1xuXG5cdFx0XHRcdFx0Ly8gUmVtZW1iZXIgdGhlIHRvcC1sZXZlbCBjb250YWluZXJcblx0XHRcdFx0XHR0bXAgPSBmcmFnbWVudC5maXJzdENoaWxkO1xuXG5cdFx0XHRcdFx0Ly8gRW5zdXJlIHRoZSBjcmVhdGVkIG5vZGVzIGFyZSBvcnBoYW5lZCAoIzEyMzkyKVxuXHRcdFx0XHRcdHRtcC50ZXh0Q29udGVudCA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBSZW1vdmUgd3JhcHBlciBmcm9tIGZyYWdtZW50XG5cdFx0ZnJhZ21lbnQudGV4dENvbnRlbnQgPSBcIlwiO1xuXG5cdFx0aSA9IDA7XG5cdFx0d2hpbGUgKCAoZWxlbSA9IG5vZGVzWyBpKysgXSkgKSB7XG5cblx0XHRcdC8vICM0MDg3IC0gSWYgb3JpZ2luIGFuZCBkZXN0aW5hdGlvbiBlbGVtZW50cyBhcmUgdGhlIHNhbWUsIGFuZCB0aGlzIGlzXG5cdFx0XHQvLyB0aGF0IGVsZW1lbnQsIGRvIG5vdCBkbyBhbnl0aGluZ1xuXHRcdFx0aWYgKCBzZWxlY3Rpb24gJiYgalF1ZXJ5LmluQXJyYXkoIGVsZW0sIHNlbGVjdGlvbiApICE9PSAtMSApIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnRhaW5zID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTtcblxuXHRcdFx0Ly8gQXBwZW5kIHRvIGZyYWdtZW50XG5cdFx0XHR0bXAgPSBnZXRBbGwoIGZyYWdtZW50LmFwcGVuZENoaWxkKCBlbGVtICksIFwic2NyaXB0XCIgKTtcblxuXHRcdFx0Ly8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeVxuXHRcdFx0aWYgKCBjb250YWlucyApIHtcblx0XHRcdFx0c2V0R2xvYmFsRXZhbCggdG1wICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENhcHR1cmUgZXhlY3V0YWJsZXNcblx0XHRcdGlmICggc2NyaXB0cyApIHtcblx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdHdoaWxlICggKGVsZW0gPSB0bXBbIGorKyBdKSApIHtcblx0XHRcdFx0XHRpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIGVsZW0udHlwZSB8fCBcIlwiICkgKSB7XG5cdFx0XHRcdFx0XHRzY3JpcHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZnJhZ21lbnQ7XG5cdH0sXG5cblx0Y2xlYW5EYXRhOiBmdW5jdGlvbiggZWxlbXMgKSB7XG5cdFx0dmFyIGRhdGEsIGVsZW0sIHR5cGUsIGtleSxcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbCxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyAoZWxlbSA9IGVsZW1zWyBpIF0pICE9PSB1bmRlZmluZWQ7IGkrKyApIHtcblx0XHRcdGlmICggalF1ZXJ5LmFjY2VwdERhdGEoIGVsZW0gKSApIHtcblx0XHRcdFx0a2V5ID0gZWxlbVsgZGF0YV9wcml2LmV4cGFuZG8gXTtcblxuXHRcdFx0XHRpZiAoIGtleSAmJiAoZGF0YSA9IGRhdGFfcHJpdi5jYWNoZVsga2V5IF0pICkge1xuXHRcdFx0XHRcdGlmICggZGF0YS5ldmVudHMgKSB7XG5cdFx0XHRcdFx0XHRmb3IgKCB0eXBlIGluIGRhdGEuZXZlbnRzICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoIHNwZWNpYWxbIHR5cGUgXSApIHtcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gVGhpcyBpcyBhIHNob3J0Y3V0IHRvIGF2b2lkIGpRdWVyeS5ldmVudC5yZW1vdmUncyBvdmVyaGVhZFxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZGF0YS5oYW5kbGUgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIGRhdGFfcHJpdi5jYWNoZVsga2V5IF0gKSB7XG5cdFx0XHRcdFx0XHQvLyBEaXNjYXJkIGFueSByZW1haW5pbmcgYHByaXZhdGVgIGRhdGFcblx0XHRcdFx0XHRcdGRlbGV0ZSBkYXRhX3ByaXYuY2FjaGVbIGtleSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gRGlzY2FyZCBhbnkgcmVtYWluaW5nIGB1c2VyYCBkYXRhXG5cdFx0XHRkZWxldGUgZGF0YV91c2VyLmNhY2hlWyBlbGVtWyBkYXRhX3VzZXIuZXhwYW5kbyBdIF07XG5cdFx0fVxuXHR9XG59KTtcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdHRleHQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRyZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdGpRdWVyeS50ZXh0KCB0aGlzICkgOlxuXHRcdFx0XHR0aGlzLmVtcHR5KCkuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0XHRcdHRoaXMudGV4dENvbnRlbnQgPSB2YWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7XG5cdH0sXG5cblx0YXBwZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5kb21NYW5pcCggYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHR2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0aGlzLCBlbGVtICk7XG5cdFx0XHRcdHRhcmdldC5hcHBlbmRDaGlsZCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9LFxuXG5cdHByZXBlbmQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybi
9673B0aGlzLmRvbU1hbmlwKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdHZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMsIGVsZW0gKTtcblx0XHRcdFx0dGFyZ2V0Lmluc2VydEJlZm9yZSggZWxlbSwgdGFyZ2V0LmZpcnN0Q2hpbGQgKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblxuXHRiZWZvcmU6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLmRvbU1hbmlwKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMgKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblxuXHRhZnRlcjogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZG9tTWFuaXAoIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcy5uZXh0U2libGluZyApO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9LFxuXG5cdHJlbW92ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCBrZWVwRGF0YSAvKiBJbnRlcm5hbCBVc2UgT25seSAqLyApIHtcblx0XHR2YXIgZWxlbSxcblx0XHRcdGVsZW1zID0gc2VsZWN0b3IgPyBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgdGhpcyApIDogdGhpcyxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyAoZWxlbSA9IGVsZW1zW2ldKSAhPSBudWxsOyBpKysgKSB7XG5cdFx0XHRpZiAoICFrZWVwRGF0YSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0gKSApO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0aWYgKCBrZWVwRGF0YSAmJiBqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApICkge1xuXHRcdFx0XHRcdHNldEdsb2JhbEV2YWwoIGdldEFsbCggZWxlbSwgXCJzY3JpcHRcIiApICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0ZW1wdHk6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlbGVtLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRmb3IgKCA7IChlbGVtID0gdGhpc1tpXSkgIT0gbnVsbDsgaSsrICkge1xuXHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXG5cdFx0XHRcdC8vIFByZXZlbnQgbWVtb3J5IGxlYWtzXG5cdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApO1xuXG5cdFx0XHRcdC8vIFJlbW92ZSBhbnkgcmVtYWluaW5nIG5vZGVzXG5cdFx0XHRcdGVsZW0udGV4dENvbnRlbnQgPSBcIlwiO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdGNsb25lOiBmdW5jdGlvbiggZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKSB7XG5cdFx0ZGF0YUFuZEV2ZW50cyA9IGRhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGZhbHNlIDogZGF0YUFuZEV2ZW50cztcblx0XHRkZWVwRGF0YUFuZEV2ZW50cyA9IGRlZXBEYXRhQW5kRXZlbnRzID09IG51bGwgPyBkYXRhQW5kRXZlbnRzIDogZGVlcERhdGFBbmRFdmVudHM7XG5cblx0XHRyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LmNsb25lKCB0aGlzLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApO1xuXHRcdH0pO1xuXHR9LFxuXG5cdGh0bWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgZWxlbSA9IHRoaXNbIDAgXSB8fCB7fSxcblx0XHRcdFx0aSA9IDAsXG5cdFx0XHRcdGwgPSB0aGlzLmxlbmd0aDtcblxuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdHJldHVybiBlbGVtLmlubmVySFRNTDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2VlIGlmIHdlIGNhbiB0YWtlIGEgc2hvcnRjdXQgYW5kIGp1c3QgdXNlIGlubmVySFRNTFxuXHRcdFx0aWYgKCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgIXJub0lubmVyaHRtbC50ZXN0KCB2YWx1ZSApICYmXG5cdFx0XHRcdCF3cmFwTWFwWyAoIHJ0YWdOYW1lLmV4ZWMoIHZhbHVlICkgfHwgWyBcIlwiLCBcIlwiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCkgXSApIHtcblxuXHRcdFx0XHR2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoIHJ4aHRtbFRhZywgXCI8JDE+PC8kMj5cIiApO1xuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdFx0ZWxlbSA9IHRoaXNbIGkgXSB8fCB7fTtcblxuXHRcdFx0XHRcdFx0Ly8gUmVtb3ZlIGVsZW1lbnQgbm9kZXMgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzXG5cdFx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApO1xuXHRcdFx0XHRcdFx0XHRlbGVtLmlubmVySFRNTCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGVsZW0gPSAwO1xuXG5cdFx0XHRcdC8vIElmIHVzaW5nIGlubmVySFRNTCB0aHJvd3MgYW4gZXhjZXB0aW9uLCB1c2UgdGhlIGZhbGxiYWNrIG1ldGhvZFxuXHRcdFx0XHR9IGNhdGNoKCBlICkge31cblx0XHRcdH1cblxuXHRcdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0XHR0aGlzLmVtcHR5KCkuYXBwZW5kKCB2YWx1ZSApO1xuXHRcdFx0fVxuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7XG5cdH0sXG5cblx0cmVwbGFjZVdpdGg6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBhcmcgPSBhcmd1bWVudHNbIDAgXTtcblxuXHRcdC8vIE1ha2UgdGhlIGNoYW5nZXMsIHJlcGxhY2luZyBlYWNoIGNvbnRleHQgZWxlbWVudCB3aXRoIHRoZSBuZXcgY29udGVudFxuXHRcdHRoaXMuZG9tTWFuaXAoIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRhcmcgPSB0aGlzLnBhcmVudE5vZGU7XG5cblx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggdGhpcyApICk7XG5cblx0XHRcdGlmICggYXJnICkge1xuXHRcdFx0XHRhcmcucmVwbGFjZUNoaWxkKCBlbGVtLCB0aGlzICk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHQvLyBGb3JjZSByZW1vdmFsIGlmIHRoZXJlIHdhcyBubyBuZXcgY29udGVudCAoZS5nLiwgZnJvbSBlbXB0eSBhcmd1bWVudHMpXG5cdFx0cmV0dXJuIGFyZyAmJiAoYXJnLmxlbmd0aCB8fCBhcmcubm9kZVR5cGUpID8gdGhpcyA6IHRoaXMucmVtb3ZlKCk7XG5cdH0sXG5cblx0ZGV0YWNoOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHRoaXMucmVtb3ZlKCBzZWxlY3RvciwgdHJ1ZSApO1xuXHR9LFxuXG5cdGRvbU1hbmlwOiBmdW5jdGlvbiggYXJncywgY2FsbGJhY2sgKSB7XG5cblx0XHQvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlzXG5cdFx0YXJncyA9IGNvbmNhdC5hcHBseSggW10sIGFyZ3MgKTtcblxuXHRcdHZhciBmcmFnbWVudCwgZmlyc3QsIHNjcmlwdHMsIGhhc1NjcmlwdHMsIG5vZGUsIGRvYyxcblx0XHRcdGkgPSAwLFxuXHRcdFx0bCA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0c2V0ID0gdGhpcyxcblx0XHRcdGlOb0Nsb25lID0gbCAtIDEsXG5cdFx0XHR2YWx1ZSA9IGFyZ3NbIDAgXSxcblx0XHRcdGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTtcblxuXHRcdC8vIFdlIGNhbid0IGNsb25lTm9kZSBmcmFnbWVudHMgdGhhdCBjb250YWluIGNoZWNrZWQsIGluIFdlYktpdFxuXHRcdGlmICggaXNGdW5jdGlvbiB8fFxuXHRcdFx0XHQoIGwgPiAxICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0XHRcdCFzdXBwb3J0LmNoZWNrQ2xvbmUgJiYgcmNoZWNrZWQudGVzdCggdmFsdWUgKSApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaW5kZXggKSB7XG5cdFx0XHRcdHZhciBzZWxmID0gc2V0LmVxKCBpbmRleCApO1xuXHRcdFx0XHRpZiAoIGlzRnVuY3Rpb24gKSB7XG5cdFx0XHRcdFx0YXJnc1sgMCBdID0gdmFsdWUuY2FsbCggdGhpcywgaW5kZXgsIHNlbGYuaHRtbCgpICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0c2VsZi5kb21NYW5pcCggYXJncywgY2FsbGJhY2sgKTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGlmICggbCApIHtcblx0XHRcdGZyYWdtZW50ID0galF1ZXJ5LmJ1aWxkRnJhZ21lbnQoIGFyZ3MsIHRoaXNbIDAgXS5vd25lckRvY3VtZW50LCBmYWxzZSwgdGh
9673pcyApO1xuXHRcdFx0Zmlyc3QgPSBmcmFnbWVudC5maXJzdENoaWxkO1xuXG5cdFx0XHRpZiAoIGZyYWdtZW50LmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICkge1xuXHRcdFx0XHRmcmFnbWVudCA9IGZpcnN0O1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGZpcnN0ICkge1xuXHRcdFx0XHRzY3JpcHRzID0galF1ZXJ5Lm1hcCggZ2V0QWxsKCBmcmFnbWVudCwgXCJzY3JpcHRcIiApLCBkaXNhYmxlU2NyaXB0ICk7XG5cdFx0XHRcdGhhc1NjcmlwdHMgPSBzY3JpcHRzLmxlbmd0aDtcblxuXHRcdFx0XHQvLyBVc2UgdGhlIG9yaWdpbmFsIGZyYWdtZW50IGZvciB0aGUgbGFzdCBpdGVtIGluc3RlYWQgb2YgdGhlIGZpcnN0IGJlY2F1c2UgaXQgY2FuIGVuZCB1cFxuXHRcdFx0XHQvLyBiZWluZyBlbXB0aWVkIGluY29ycmVjdGx5IGluIGNlcnRhaW4gc2l0dWF0aW9ucyAoIzgwNzApLlxuXHRcdFx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0bm9kZSA9IGZyYWdtZW50O1xuXG5cdFx0XHRcdFx0aWYgKCBpICE9PSBpTm9DbG9uZSApIHtcblx0XHRcdFx0XHRcdG5vZGUgPSBqUXVlcnkuY2xvbmUoIG5vZGUsIHRydWUsIHRydWUgKTtcblxuXHRcdFx0XHRcdFx0Ly8gS2VlcCByZWZlcmVuY2VzIHRvIGNsb25lZCBzY3JpcHRzIGZvciBsYXRlciByZXN0b3JhdGlvblxuXHRcdFx0XHRcdFx0aWYgKCBoYXNTY3JpcHRzICkge1xuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBRdFdlYktpdFxuXHRcdFx0XHRcdFx0XHQvLyBqUXVlcnkubWVyZ2UgYmVjYXVzZSBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzXG5cdFx0XHRcdFx0XHRcdGpRdWVyeS5tZXJnZSggc2NyaXB0cywgZ2V0QWxsKCBub2RlLCBcInNjcmlwdFwiICkgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjYWxsYmFjay5jYWxsKCB0aGlzWyBpIF0sIG5vZGUsIGkgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICggaGFzU2NyaXB0cyApIHtcblx0XHRcdFx0XHRkb2MgPSBzY3JpcHRzWyBzY3JpcHRzLmxlbmd0aCAtIDEgXS5vd25lckRvY3VtZW50O1xuXG5cdFx0XHRcdFx0Ly8gUmVlbmFibGUgc2NyaXB0c1xuXHRcdFx0XHRcdGpRdWVyeS5tYXAoIHNjcmlwdHMsIHJlc3RvcmVTY3JpcHQgKTtcblxuXHRcdFx0XHRcdC8vIEV2YWx1YXRlIGV4ZWN1dGFibGUgc2NyaXB0cyBvbiBmaXJzdCBkb2N1bWVudCBpbnNlcnRpb25cblx0XHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGhhc1NjcmlwdHM7IGkrKyApIHtcblx0XHRcdFx0XHRcdG5vZGUgPSBzY3JpcHRzWyBpIF07XG5cdFx0XHRcdFx0XHRpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIG5vZGUudHlwZSB8fCBcIlwiICkgJiZcblx0XHRcdFx0XHRcdFx0IWRhdGFfcHJpdi5hY2Nlc3MoIG5vZGUsIFwiZ2xvYmFsRXZhbFwiICkgJiYgalF1ZXJ5LmNvbnRhaW5zKCBkb2MsIG5vZGUgKSApIHtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIG5vZGUuc3JjICkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIE9wdGlvbmFsIEFKQVggZGVwZW5kZW5jeSwgYnV0IHdvbid0IHJ1biBzY3JpcHRzIGlmIG5vdCBwcmVzZW50XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuX2V2YWxVcmwgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuX2V2YWxVcmwoIG5vZGUuc3JjICk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5nbG9iYWxFdmFsKCBub2RlLnRleHRDb250ZW50LnJlcGxhY2UoIHJjbGVhblNjcmlwdCwgXCJcIiApICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxufSk7XG5cbmpRdWVyeS5lYWNoKHtcblx0YXBwZW5kVG86IFwiYXBwZW5kXCIsXG5cdHByZXBlbmRUbzogXCJwcmVwZW5kXCIsXG5cdGluc2VydEJlZm9yZTogXCJiZWZvcmVcIixcblx0aW5zZXJ0QWZ0ZXI6IFwiYWZ0ZXJcIixcblx0cmVwbGFjZUFsbDogXCJyZXBsYWNlV2l0aFwiXG59LCBmdW5jdGlvbiggbmFtZSwgb3JpZ2luYWwgKSB7XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHZhciBlbGVtcyxcblx0XHRcdHJldCA9IFtdLFxuXHRcdFx0aW5zZXJ0ID0galF1ZXJ5KCBzZWxlY3RvciApLFxuXHRcdFx0bGFzdCA9IGluc2VydC5sZW5ndGggLSAxLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRmb3IgKCA7IGkgPD0gbGFzdDsgaSsrICkge1xuXHRcdFx0ZWxlbXMgPSBpID09PSBsYXN0ID8gdGhpcyA6IHRoaXMuY2xvbmUoIHRydWUgKTtcblx0XHRcdGpRdWVyeSggaW5zZXJ0WyBpIF0gKVsgb3JpZ2luYWwgXSggZWxlbXMgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogUXRXZWJLaXRcblx0XHRcdC8vIC5nZXQoKSBiZWNhdXNlIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Ncblx0XHRcdHB1c2guYXBwbHkoIHJldCwgZWxlbXMuZ2V0KCkgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHJldCApO1xuXHR9O1xufSk7XG5cblxudmFyIGlmcmFtZSxcblx0ZWxlbWRpc3BsYXkgPSB7fTtcblxuLyoqXG4gKiBSZXRyaWV2ZSB0aGUgYWN0dWFsIGRpc3BsYXkgb2YgYSBlbGVtZW50XG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBub2RlTmFtZSBvZiB0aGUgZWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IGRvYyBEb2N1bWVudCBvYmplY3RcbiAqL1xuLy8gQ2FsbGVkIG9ubHkgZnJvbSB3aXRoaW4gZGVmYXVsdERpc3BsYXlcbmZ1bmN0aW9uIGFjdHVhbERpc3BsYXkoIG5hbWUsIGRvYyApIHtcblx0dmFyIHN0eWxlLFxuXHRcdGVsZW0gPSBqUXVlcnkoIGRvYy5jcmVhdGVFbGVtZW50KCBuYW1lICkgKS5hcHBlbmRUbyggZG9jLmJvZHkgKSxcblxuXHRcdC8vIGdldERlZmF1bHRDb21wdXRlZFN0eWxlIG1pZ2h0IGJlIHJlbGlhYmx5IHVzZWQgb25seSBvbiBhdHRhY2hlZCBlbGVtZW50XG5cdFx0ZGlzcGxheSA9IHdpbmRvdy5nZXREZWZhdWx0Q29tcHV0ZWRTdHlsZSAmJiAoIHN0eWxlID0gd2luZG93LmdldERlZmF1bHRDb21wdXRlZFN0eWxlKCBlbGVtWyAwIF0gKSApID9cblxuXHRcdFx0Ly8gVXNlIG9mIHRoaXMgbWV0aG9kIGlzIGEgdGVtcG9yYXJ5IGZpeCAobW9yZSBsaWtlIG9wdGltaXphdGlvbikgdW50aWwgc29tZXRoaW5nIGJldHRlciBjb21lcyBhbG9uZyxcblx0XHRcdC8vIHNpbmNlIGl0IHdhcyByZW1vdmVkIGZyb20gc3BlY2lmaWNhdGlvbiBhbmQgc3VwcG9ydGVkIG9ubHkgaW4gRkZcblx0XHRcdHN0eWxlLmRpc3BsYXkgOiBqUXVlcnkuY3NzKCBlbGVtWyAwIF0sIFwiZGlzcGxheVwiICk7XG5cblx0Ly8gV2UgZG9uJ3QgaGF2ZSBhbnkgZGF0YSBzdG9yZWQgb24gdGhlIGVsZW1lbnQsXG5cdC8vIHNvIHVzZSBcImRldGFjaFwiIG1ldGhvZCBhcyBmYXN0IHdheSB0byBnZXQgcmlkIG9mIHRoZSBlbGVtZW50XG5cdGVsZW0uZGV0YWNoKCk7XG5cblx0cmV0dXJuIGRpc3BsYXk7XG59XG5cbi8qKlxuICogVHJ5IHRvIGRldGVybWluZSB0aGUgZGVmYXVsdCBkaXNwbGF5IHZhbHVlIG9mIGFuIGVsZW1lbnRcbiAqIEBwYXJhbSB7U3RyaW5nfSBub2RlTmFtZVxuICovXG5mdW5jdGlvbiBkZWZh
9673dWx0RGlzcGxheSggbm9kZU5hbWUgKSB7XG5cdHZhciBkb2MgPSBkb2N1bWVudCxcblx0XHRkaXNwbGF5ID0gZWxlbWRpc3BsYXlbIG5vZGVOYW1lIF07XG5cblx0aWYgKCAhZGlzcGxheSApIHtcblx0XHRkaXNwbGF5ID0gYWN0dWFsRGlzcGxheSggbm9kZU5hbWUsIGRvYyApO1xuXG5cdFx0Ly8gSWYgdGhlIHNpbXBsZSB3YXkgZmFpbHMsIHJlYWQgZnJvbSBpbnNpZGUgYW4gaWZyYW1lXG5cdFx0aWYgKCBkaXNwbGF5ID09PSBcIm5vbmVcIiB8fCAhZGlzcGxheSApIHtcblxuXHRcdFx0Ly8gVXNlIHRoZSBhbHJlYWR5LWNyZWF0ZWQgaWZyYW1lIGlmIHBvc3NpYmxlXG5cdFx0XHRpZnJhbWUgPSAoaWZyYW1lIHx8IGpRdWVyeSggXCI8aWZyYW1lIGZyYW1lYm9yZGVyPScwJyB3aWR0aD0nMCcgaGVpZ2h0PScwJy8+XCIgKSkuYXBwZW5kVG8oIGRvYy5kb2N1bWVudEVsZW1lbnQgKTtcblxuXHRcdFx0Ly8gQWx3YXlzIHdyaXRlIGEgbmV3IEhUTUwgc2tlbGV0b24gc28gV2Via2l0IGFuZCBGaXJlZm94IGRvbid0IGNob2tlIG9uIHJldXNlXG5cdFx0XHRkb2MgPSBpZnJhbWVbIDAgXS5jb250ZW50RG9jdW1lbnQ7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFXG5cdFx0XHRkb2Mud3JpdGUoKTtcblx0XHRcdGRvYy5jbG9zZSgpO1xuXG5cdFx0XHRkaXNwbGF5ID0gYWN0dWFsRGlzcGxheSggbm9kZU5hbWUsIGRvYyApO1xuXHRcdFx0aWZyYW1lLmRldGFjaCgpO1xuXHRcdH1cblxuXHRcdC8vIFN0b3JlIHRoZSBjb3JyZWN0IGRlZmF1bHQgZGlzcGxheVxuXHRcdGVsZW1kaXNwbGF5WyBub2RlTmFtZSBdID0gZGlzcGxheTtcblx0fVxuXG5cdHJldHVybiBkaXNwbGF5O1xufVxudmFyIHJtYXJnaW4gPSAoL15tYXJnaW4vKTtcblxudmFyIHJudW1ub25weCA9IG5ldyBSZWdFeHAoIFwiXihcIiArIHBudW0gKyBcIikoPyFweClbYS16JV0rJFwiLCBcImlcIiApO1xuXG52YXIgZ2V0U3R5bGVzID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0Ly8gU3VwcG9ydDogSUU8PTExKywgRmlyZWZveDw9MzArICgjMTUwOTgsICMxNDE1MClcblx0XHQvLyBJRSB0aHJvd3Mgb24gZWxlbWVudHMgY3JlYXRlZCBpbiBwb3B1cHNcblx0XHQvLyBGRiBtZWFud2hpbGUgdGhyb3dzIG9uIGZyYW1lIGVsZW1lbnRzIHRocm91Z2ggXCJkZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlXCJcblx0XHRpZiAoIGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5vcGVuZXIgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoIGVsZW0sIG51bGwgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoIGVsZW0sIG51bGwgKTtcblx0fTtcblxuXG5cbmZ1bmN0aW9uIGN1ckNTUyggZWxlbSwgbmFtZSwgY29tcHV0ZWQgKSB7XG5cdHZhciB3aWR0aCwgbWluV2lkdGgsIG1heFdpZHRoLCByZXQsXG5cdFx0c3R5bGUgPSBlbGVtLnN0eWxlO1xuXG5cdGNvbXB1dGVkID0gY29tcHV0ZWQgfHwgZ2V0U3R5bGVzKCBlbGVtICk7XG5cblx0Ly8gU3VwcG9ydDogSUU5XG5cdC8vIGdldFByb3BlcnR5VmFsdWUgaXMgb25seSBuZWVkZWQgZm9yIC5jc3MoJ2ZpbHRlcicpICgjMTI1MzcpXG5cdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0cmV0ID0gY29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZSggbmFtZSApIHx8IGNvbXB1dGVkWyBuYW1lIF07XG5cdH1cblxuXHRpZiAoIGNvbXB1dGVkICkge1xuXG5cdFx0aWYgKCByZXQgPT09IFwiXCIgJiYgIWpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICkgKSB7XG5cdFx0XHRyZXQgPSBqUXVlcnkuc3R5bGUoIGVsZW0sIG5hbWUgKTtcblx0XHR9XG5cblx0XHQvLyBTdXBwb3J0OiBpT1MgPCA2XG5cdFx0Ly8gQSB0cmlidXRlIHRvIHRoZSBcImF3ZXNvbWUgaGFjayBieSBEZWFuIEVkd2FyZHNcIlxuXHRcdC8vIGlPUyA8IDYgKGF0IGxlYXN0KSByZXR1cm5zIHBlcmNlbnRhZ2UgZm9yIGEgbGFyZ2VyIHNldCBvZiB2YWx1ZXMsIGJ1dCB3aWR0aCBzZWVtcyB0byBiZSByZWxpYWJseSBwaXhlbHNcblx0XHQvLyB0aGlzIGlzIGFnYWluc3QgdGhlIENTU09NIGRyYWZ0IHNwZWM6IGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNyZXNvbHZlZC12YWx1ZXNcblx0XHRpZiAoIHJudW1ub25weC50ZXN0KCByZXQgKSAmJiBybWFyZ2luLnRlc3QoIG5hbWUgKSApIHtcblxuXHRcdFx0Ly8gUmVtZW1iZXIgdGhlIG9yaWdpbmFsIHZhbHVlc1xuXHRcdFx0d2lkdGggPSBzdHlsZS53aWR0aDtcblx0XHRcdG1pbldpZHRoID0gc3R5bGUubWluV2lkdGg7XG5cdFx0XHRtYXhXaWR0aCA9IHN0eWxlLm1heFdpZHRoO1xuXG5cdFx0XHQvLyBQdXQgaW4gdGhlIG5ldyB2YWx1ZXMgdG8gZ2V0IGEgY29tcHV0ZWQgdmFsdWUgb3V0XG5cdFx0XHRzdHlsZS5taW5XaWR0aCA9IHN0eWxlLm1heFdpZHRoID0gc3R5bGUud2lkdGggPSByZXQ7XG5cdFx0XHRyZXQgPSBjb21wdXRlZC53aWR0aDtcblxuXHRcdFx0Ly8gUmV2ZXJ0IHRoZSBjaGFuZ2VkIHZhbHVlc1xuXHRcdFx0c3R5bGUud2lkdGggPSB3aWR0aDtcblx0XHRcdHN0eWxlLm1pbldpZHRoID0gbWluV2lkdGg7XG5cdFx0XHRzdHlsZS5tYXhXaWR0aCA9IG1heFdpZHRoO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXQgIT09IHVuZGVmaW5lZCA/XG5cdFx0Ly8gU3VwcG9ydDogSUVcblx0XHQvLyBJRSByZXR1cm5zIHpJbmRleCB2YWx1ZSBhcyBhbiBpbnRlZ2VyLlxuXHRcdHJldCArIFwiXCIgOlxuXHRcdHJldDtcbn1cblxuXG5mdW5jdGlvbiBhZGRHZXRIb29rSWYoIGNvbmRpdGlvbkZuLCBob29rRm4gKSB7XG5cdC8vIERlZmluZSB0aGUgaG9vaywgd2UnbGwgY2hlY2sgb24gdGhlIGZpcnN0IHJ1biBpZiBpdCdzIHJlYWxseSBuZWVkZWQuXG5cdHJldHVybiB7XG5cdFx0Z2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggY29uZGl0aW9uRm4oKSApIHtcblx0XHRcdFx0Ly8gSG9vayBub3QgbmVlZGVkIChvciBpdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgaXQgZHVlXG5cdFx0XHRcdC8vIHRvIG1pc3NpbmcgZGVwZW5kZW5jeSksIHJlbW92ZSBpdC5cblx0XHRcdFx0ZGVsZXRlIHRoaXMuZ2V0O1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIEhvb2sgbmVlZGVkOy
9673ByZWRlZmluZSBpdCBzbyB0aGF0IHRoZSBzdXBwb3J0IHRlc3QgaXMgbm90IGV4ZWN1dGVkIGFnYWluLlxuXHRcdFx0cmV0dXJuICh0aGlzLmdldCA9IGhvb2tGbikuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdH1cblx0fTtcbn1cblxuXG4oZnVuY3Rpb24oKSB7XG5cdHZhciBwaXhlbFBvc2l0aW9uVmFsLCBib3hTaXppbmdSZWxpYWJsZVZhbCxcblx0XHRkb2NFbGVtID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuXHRcdGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKSxcblx0XHRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICk7XG5cblx0aWYgKCAhZGl2LnN0eWxlICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IElFOS0xMStcblx0Ly8gU3R5bGUgb2YgY2xvbmVkIGVsZW1lbnQgYWZmZWN0cyBzb3VyY2UgZWxlbWVudCBjbG9uZWQgKCM4OTA4KVxuXHRkaXYuc3R5bGUuYmFja2dyb3VuZENsaXAgPSBcImNvbnRlbnQtYm94XCI7XG5cdGRpdi5jbG9uZU5vZGUoIHRydWUgKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9IFwiXCI7XG5cdHN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlID0gZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID09PSBcImNvbnRlbnQtYm94XCI7XG5cblx0Y29udGFpbmVyLnN0eWxlLmNzc1RleHQgPSBcImJvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7dG9wOjA7bGVmdDotOTk5OXB4O21hcmdpbi10b3A6MXB4O1wiICtcblx0XHRcInBvc2l0aW9uOmFic29sdXRlXCI7XG5cdGNvbnRhaW5lci5hcHBlbmRDaGlsZCggZGl2ICk7XG5cblx0Ly8gRXhlY3V0aW5nIGJvdGggcGl4ZWxQb3NpdGlvbiAmIGJveFNpemluZ1JlbGlhYmxlIHRlc3RzIHJlcXVpcmUgb25seSBvbmUgbGF5b3V0XG5cdC8vIHNvIHRoZXkncmUgZXhlY3V0ZWQgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHRoZSBzZWNvbmQgY29tcHV0YXRpb24uXG5cdGZ1bmN0aW9uIGNvbXB1dGVQaXhlbFBvc2l0aW9uQW5kQm94U2l6aW5nUmVsaWFibGUoKSB7XG5cdFx0ZGl2LnN0eWxlLmNzc1RleHQgPVxuXHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveDwyOSwgQW5kcm9pZCAyLjNcblx0XHRcdC8vIFZlbmRvci1wcmVmaXggYm94LXNpemluZ1xuXHRcdFx0XCItd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtcIiArXG5cdFx0XHRcImJveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MSU7dG9wOjElO1wiICtcblx0XHRcdFwiYm9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo0cHg7cG9zaXRpb246YWJzb2x1dGVcIjtcblx0XHRkaXYuaW5uZXJIVE1MID0gXCJcIjtcblx0XHRkb2NFbGVtLmFwcGVuZENoaWxkKCBjb250YWluZXIgKTtcblxuXHRcdHZhciBkaXZTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBkaXYsIG51bGwgKTtcblx0XHRwaXhlbFBvc2l0aW9uVmFsID0gZGl2U3R5bGUudG9wICE9PSBcIjElXCI7XG5cdFx0Ym94U2l6aW5nUmVsaWFibGVWYWwgPSBkaXZTdHlsZS53aWR0aCA9PT0gXCI0cHhcIjtcblxuXHRcdGRvY0VsZW0ucmVtb3ZlQ2hpbGQoIGNvbnRhaW5lciApO1xuXHR9XG5cblx0Ly8gU3VwcG9ydDogbm9kZS5qcyBqc2RvbVxuXHQvLyBEb24ndCBhc3N1bWUgdGhhdCBnZXRDb21wdXRlZFN0eWxlIGlzIGEgcHJvcGVydHkgb2YgdGhlIGdsb2JhbCBvYmplY3Rcblx0aWYgKCB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSApIHtcblx0XHRqUXVlcnkuZXh0ZW5kKCBzdXBwb3J0LCB7XG5cdFx0XHRwaXhlbFBvc2l0aW9uOiBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvLyBUaGlzIHRlc3QgaXMgZXhlY3V0ZWQgb25seSBvbmNlIGJ1dCB3ZSBzdGlsbCBkbyBtZW1vaXppbmdcblx0XHRcdFx0Ly8gc2luY2Ugd2UgY2FuIHVzZSB0aGUgYm94U2l6aW5nUmVsaWFibGUgcHJlLWNvbXB1dGluZy5cblx0XHRcdFx0Ly8gTm8gbmVlZCB0byBjaGVjayBpZiB0aGUgdGVzdCB3YXMgYWxyZWFkeSBwZXJmb3JtZWQsIHRob3VnaC5cblx0XHRcdFx0Y29tcHV0ZVBpeGVsUG9zaXRpb25BbmRCb3hTaXppbmdSZWxpYWJsZSgpO1xuXHRcdFx0XHRyZXR1cm4gcGl4ZWxQb3NpdGlvblZhbDtcblx0XHRcdH0sXG5cdFx0XHRib3hTaXppbmdSZWxpYWJsZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggYm94U2l6aW5nUmVsaWFibGVWYWwgPT0gbnVsbCApIHtcblx0XHRcdFx0XHRjb21wdXRlUGl4ZWxQb3NpdGlvbkFuZEJveFNpemluZ1JlbGlhYmxlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGJveFNpemluZ1JlbGlhYmxlVmFsO1xuXHRcdFx0fSxcblx0XHRcdHJlbGlhYmxlTWFyZ2luUmlnaHQ6IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgMi4zXG5cdFx0XHRcdC8vIENoZWNrIGlmIGRpdiB3aXRoIGV4cGxpY2l0IHdpZHRoIGFuZCBubyBtYXJnaW4tcmlnaHQgaW5jb3JyZWN0bHlcblx0XHRcdFx0Ly8gZ2V0cyBjb21wdXRlZCBtYXJnaW4tcmlnaHQgYmFzZWQgb24gd2lkdGggb2YgY29udGFpbmVyLiAoIzMzMzMpXG5cdFx0XHRcdC8vIFdlYktpdCBCdWcgMTMzNDMgLSBnZXRDb21wdXRlZFN0eWxlIHJldHVybnMgd3JvbmcgdmFsdWUgZm9yIG1hcmdpbi1yaWdodFxuXHRcdFx0XHQvLyBUaGlzIHN1cHBvcnQgZnVuY3Rpb24gaXMgb25seSBleGVjdXRlZCBvbmNlIHNvIG5vIG1lbW9pemluZyBpcyBuZWVkZWQuXG5cdFx0XHRcdHZhciByZXQsXG5cdFx0XHRcdFx0bWFyZ2luRGl2ID0gZGl2LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICkgKTtcblxuXHRcdFx0XHQvLyBSZXNldCBDU1M6IGJveC1zaXppbmc7IGRpc3BsYXk7IG1hcmdpbjsgYm9yZGVyOyBwYWRkaW5nXG5cdFx0XHRcdG1hcmdpbkRpdi5zdHlsZS5jc3NUZXh0ID0gZGl2LnN0eWxlLmNzc1RleHQgPVxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3g8MjksIEFuZHJvaWQgMi4zXG5cdFx0XHRcdFx0Ly8gVmVuZG9yLXByZWZpeCBib3gtc2l6aW5nXG5cdFx0XHRcdFx0XCItd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O1wiICtcblx0XHRcdFx0XHRcImJveC1zaXppbmc6Y29udGVudC1ib3g7ZGlzcGxheTpibG9jazttYXJnaW46MDtib3JkZXI6MDtwYWRkaW5nOjBcIjtcblx0XHRcdFx0bWFyZ2luRGl2LnN0eWxlLm1hcmdpblJpZ2h0ID0gbWFy
9673Z2luRGl2LnN0eWxlLndpZHRoID0gXCIwXCI7XG5cdFx0XHRcdGRpdi5zdHlsZS53aWR0aCA9IFwiMXB4XCI7XG5cdFx0XHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGNvbnRhaW5lciApO1xuXG5cdFx0XHRcdHJldCA9ICFwYXJzZUZsb2F0KCB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggbWFyZ2luRGl2LCBudWxsICkubWFyZ2luUmlnaHQgKTtcblxuXHRcdFx0XHRkb2NFbGVtLnJlbW92ZUNoaWxkKCBjb250YWluZXIgKTtcblx0XHRcdFx0ZGl2LnJlbW92ZUNoaWxkKCBtYXJnaW5EaXYgKTtcblxuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59KSgpO1xuXG5cbi8vIEEgbWV0aG9kIGZvciBxdWlja2x5IHN3YXBwaW5nIGluL291dCBDU1MgcHJvcGVydGllcyB0byBnZXQgY29ycmVjdCBjYWxjdWxhdGlvbnMuXG5qUXVlcnkuc3dhcCA9IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBjYWxsYmFjaywgYXJncyApIHtcblx0dmFyIHJldCwgbmFtZSxcblx0XHRvbGQgPSB7fTtcblxuXHQvLyBSZW1lbWJlciB0aGUgb2xkIHZhbHVlcywgYW5kIGluc2VydCB0aGUgbmV3IG9uZXNcblx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdG9sZFsgbmFtZSBdID0gZWxlbS5zdHlsZVsgbmFtZSBdO1xuXHRcdGVsZW0uc3R5bGVbIG5hbWUgXSA9IG9wdGlvbnNbIG5hbWUgXTtcblx0fVxuXG5cdHJldCA9IGNhbGxiYWNrLmFwcGx5KCBlbGVtLCBhcmdzIHx8IFtdICk7XG5cblx0Ly8gUmV2ZXJ0IHRoZSBvbGQgdmFsdWVzXG5cdGZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHtcblx0XHRlbGVtLnN0eWxlWyBuYW1lIF0gPSBvbGRbIG5hbWUgXTtcblx0fVxuXG5cdHJldHVybiByZXQ7XG59O1xuXG5cbnZhclxuXHQvLyBTd2FwcGFibGUgaWYgZGlzcGxheSBpcyBub25lIG9yIHN0YXJ0cyB3aXRoIHRhYmxlIGV4Y2VwdCBcInRhYmxlXCIsIFwidGFibGUtY2VsbFwiLCBvciBcInRhYmxlLWNhcHRpb25cIlxuXHQvLyBTZWUgaGVyZSBmb3IgZGlzcGxheSB2YWx1ZXM6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTL2Rpc3BsYXlcblx0cmRpc3BsYXlzd2FwID0gL14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFxuXHRybnVtc3BsaXQgPSBuZXcgUmVnRXhwKCBcIl4oXCIgKyBwbnVtICsgXCIpKC4qKSRcIiwgXCJpXCIgKSxcblx0cnJlbE51bSA9IG5ldyBSZWdFeHAoIFwiXihbKy1dKT0oXCIgKyBwbnVtICsgXCIpXCIsIFwiaVwiICksXG5cblx0Y3NzU2hvdyA9IHsgcG9zaXRpb246IFwiYWJzb2x1dGVcIiwgdmlzaWJpbGl0eTogXCJoaWRkZW5cIiwgZGlzcGxheTogXCJibG9ja1wiIH0sXG5cdGNzc05vcm1hbFRyYW5zZm9ybSA9IHtcblx0XHRsZXR0ZXJTcGFjaW5nOiBcIjBcIixcblx0XHRmb250V2VpZ2h0OiBcIjQwMFwiXG5cdH0sXG5cblx0Y3NzUHJlZml4ZXMgPSBbIFwiV2Via2l0XCIsIFwiT1wiLCBcIk1velwiLCBcIm1zXCIgXTtcblxuLy8gUmV0dXJuIGEgY3NzIHByb3BlcnR5IG1hcHBlZCB0byBhIHBvdGVudGlhbGx5IHZlbmRvciBwcmVmaXhlZCBwcm9wZXJ0eVxuZnVuY3Rpb24gdmVuZG9yUHJvcE5hbWUoIHN0eWxlLCBuYW1lICkge1xuXG5cdC8vIFNob3J0Y3V0IGZvciBuYW1lcyB0aGF0IGFyZSBub3QgdmVuZG9yIHByZWZpeGVkXG5cdGlmICggbmFtZSBpbiBzdHlsZSApIHtcblx0XHRyZXR1cm4gbmFtZTtcblx0fVxuXG5cdC8vIENoZWNrIGZvciB2ZW5kb3IgcHJlZml4ZWQgbmFtZXNcblx0dmFyIGNhcE5hbWUgPSBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpLFxuXHRcdG9yaWdOYW1lID0gbmFtZSxcblx0XHRpID0gY3NzUHJlZml4ZXMubGVuZ3RoO1xuXG5cdHdoaWxlICggaS0tICkge1xuXHRcdG5hbWUgPSBjc3NQcmVmaXhlc1sgaSBdICsgY2FwTmFtZTtcblx0XHRpZiAoIG5hbWUgaW4gc3R5bGUgKSB7XG5cdFx0XHRyZXR1cm4gbmFtZTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gb3JpZ05hbWU7XG59XG5cbmZ1bmN0aW9uIHNldFBvc2l0aXZlTnVtYmVyKCBlbGVtLCB2YWx1ZSwgc3VidHJhY3QgKSB7XG5cdHZhciBtYXRjaGVzID0gcm51bXNwbGl0LmV4ZWMoIHZhbHVlICk7XG5cdHJldHVybiBtYXRjaGVzID9cblx0XHQvLyBHdWFyZCBhZ2FpbnN0IHVuZGVmaW5lZCBcInN1YnRyYWN0XCIsIGUuZy4sIHdoZW4gdXNlZCBhcyBpbiBjc3NIb29rc1xuXHRcdE1hdGgubWF4KCAwLCBtYXRjaGVzWyAxIF0gLSAoIHN1YnRyYWN0IHx8IDAgKSApICsgKCBtYXRjaGVzWyAyIF0gfHwgXCJweFwiICkgOlxuXHRcdHZhbHVlO1xufVxuXG5mdW5jdGlvbiBhdWdtZW50V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEsIGlzQm9yZGVyQm94LCBzdHlsZXMgKSB7XG5cdHZhciBpID0gZXh0cmEgPT09ICggaXNCb3JkZXJCb3ggPyBcImJvcmRlclwiIDogXCJjb250ZW50XCIgKSA/XG5cdFx0Ly8gSWYgd2UgYWxyZWFkeSBoYXZlIHRoZSByaWdodCBtZWFzdXJlbWVudCwgYXZvaWQgYXVnbWVudGF0aW9uXG5cdFx0NCA6XG5cdFx0Ly8gT3RoZXJ3aXNlIGluaXRpYWxpemUgZm9yIGhvcml6b250YWwgb3IgdmVydGljYWwgcHJvcGVydGllc1xuXHRcdG5hbWUgPT09IFwid2lkdGhcIiA/IDEgOiAwLFxuXG5cdFx0dmFsID0gMDtcblxuXHRmb3IgKCA7IGkgPCA0OyBpICs9IDIgKSB7XG5cdFx0Ly8gQm90aCBib3ggbW9kZWxzIGV4Y2x1ZGUgbWFyZ2luLCBzbyBhZGQgaXQgaWYgd2Ugd2FudCBpdFxuXHRcdGlmICggZXh0cmEgPT09IFwibWFyZ2luXCIgKSB7XG5cdFx0XHR2YWwgKz0galF1ZXJ5LmNzcyggZWxlbSwgZXh0cmEgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBpc0JvcmRlckJveCApIHtcblx0XHRcdC8vIGJvcmRlci1ib3ggaW5jbHVkZXMgcGFkZGluZywgc28gcmVtb3ZlIGl0IGlmIHdlIHdhbnQgY29udGVudFxuXHRcdFx0aWYgKCBleHRyYSA9PT0gXCJjb250ZW50XCIgKSB7XG5cdFx0XHRcdHZhbCAtPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBhZGRpbmdcIiArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgYm9yZGVyIG5vciBtYXJnaW4sIHNvIHJlbW92ZSBib3JkZXJcblx0XHRcdGlmICggZXh0cmEgIT09IFwibWFyZ2luXCIgKSB7XG5cdFx0XHRcdHZhbCAtPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJvcmRlclwiICsgY3NzRXhwYW5kWyBpIF0gKyBcIldpZHRoXCIsIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBBdCB0aGlzIHBvaW50LCBleHRyYSBpc24ndCBjb250ZW50LCBzbyBhZGQgcGFkZGluZ1xuXHRcdFx0dmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sIFwicGFkZGluZ1wiICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXG5cdFx0XHQvLyBBdCB0aGlzIHBvaW50LCBleHRyYSBpc24ndCBjb250ZW50IG5vciBwYWRkaW5nLCBzbyBhZGQgYm9yZGVyXG5cdFx0XHRpZiAoIGV4dHJhICE9PSBcInBhZGRpbmdcIiApIHtcblx0XHRcdFx0dmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm9yZGVyXCIgKyBjc3NFeHBhbmRbIGkgXSArIFwiV2lkdGhcIiwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHZhbDtcbn1cblxuZnVuY3Rpb24gZ2V0V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEgKSB7XG5cblx0Ly8gU3RhcnQgd2l0aCBvZmZzZXQgcHJvcGVydHksIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGJvcmRlci1ib3ggdmFsdWVcblx0dmFyIHZhbHVlSXNCb3JkZXJCb3ggPSB0cnVlLFxuXHRcdHZhbCA9IG5hbWUgPT09IFwid2lkdGhcIiA/IGVsZW0ub2Zmc2V0V2lkdGggOiBlbGVtLm9mZnNldEhlaWdodCxcblx0XHRzdHlsZXMgPSBnZXRTdHlsZXMoIGVsZW0gKSxcblx0XHRpc0JvcmRlckJveCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm94U2l6aW5nXCIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gXCJib3JkZXItYm94XCI7XG5cblx0Ly8gU29tZSBub24taHRtbCBlbGVtZW50cyByZXR1cm4gdW5kZWZpbmVkIGZvciBvZmZzZXRXaWR0aCwgc28gY2hlY2sgZm9yIG51bGwvdW5kZWZpbmVkXG5cdC8vIHN2ZyAtIGh0dHBzOi8vYnVnemlsbGEubW96
9673aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTI4NVxuXHQvLyBNYXRoTUwgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD00OTE2Njhcblx0aWYgKCB2YWwgPD0gMCB8fCB2YWwgPT0gbnVsbCApIHtcblx0XHQvLyBGYWxsIGJhY2sgdG8gY29tcHV0ZWQgdGhlbiB1bmNvbXB1dGVkIGNzcyBpZiBuZWNlc3Nhcnlcblx0XHR2YWwgPSBjdXJDU1MoIGVsZW0sIG5hbWUsIHN0eWxlcyApO1xuXHRcdGlmICggdmFsIDwgMCB8fCB2YWwgPT0gbnVsbCApIHtcblx0XHRcdHZhbCA9IGVsZW0uc3R5bGVbIG5hbWUgXTtcblx0XHR9XG5cblx0XHQvLyBDb21wdXRlZCB1bml0IGlzIG5vdCBwaXhlbHMuIFN0b3AgaGVyZSBhbmQgcmV0dXJuLlxuXHRcdGlmICggcm51bW5vbnB4LnRlc3QodmFsKSApIHtcblx0XHRcdHJldHVybiB2YWw7XG5cdFx0fVxuXG5cdFx0Ly8gQ2hlY2sgZm9yIHN0eWxlIGluIGNhc2UgYSBicm93c2VyIHdoaWNoIHJldHVybnMgdW5yZWxpYWJsZSB2YWx1ZXNcblx0XHQvLyBmb3IgZ2V0Q29tcHV0ZWRTdHlsZSBzaWxlbnRseSBmYWxscyBiYWNrIHRvIHRoZSByZWxpYWJsZSBlbGVtLnN0eWxlXG5cdFx0dmFsdWVJc0JvcmRlckJveCA9IGlzQm9yZGVyQm94ICYmXG5cdFx0XHQoIHN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUoKSB8fCB2YWwgPT09IGVsZW0uc3R5bGVbIG5hbWUgXSApO1xuXG5cdFx0Ly8gTm9ybWFsaXplIFwiXCIsIGF1dG8sIGFuZCBwcmVwYXJlIGZvciBleHRyYVxuXHRcdHZhbCA9IHBhcnNlRmxvYXQoIHZhbCApIHx8IDA7XG5cdH1cblxuXHQvLyBVc2UgdGhlIGFjdGl2ZSBib3gtc2l6aW5nIG1vZGVsIHRvIGFkZC9zdWJ0cmFjdCBpcnJlbGV2YW50IHN0eWxlc1xuXHRyZXR1cm4gKCB2YWwgK1xuXHRcdGF1Z21lbnRXaWR0aE9ySGVpZ2h0KFxuXHRcdFx0ZWxlbSxcblx0XHRcdG5hbWUsXG5cdFx0XHRleHRyYSB8fCAoIGlzQm9yZGVyQm94ID8gXCJib3JkZXJcIiA6IFwiY29udGVudFwiICksXG5cdFx0XHR2YWx1ZUlzQm9yZGVyQm94LFxuXHRcdFx0c3R5bGVzXG5cdFx0KVxuXHQpICsgXCJweFwiO1xufVxuXG5mdW5jdGlvbiBzaG93SGlkZSggZWxlbWVudHMsIHNob3cgKSB7XG5cdHZhciBkaXNwbGF5LCBlbGVtLCBoaWRkZW4sXG5cdFx0dmFsdWVzID0gW10sXG5cdFx0aW5kZXggPSAwLFxuXHRcdGxlbmd0aCA9IGVsZW1lbnRzLmxlbmd0aDtcblxuXHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdGVsZW0gPSBlbGVtZW50c1sgaW5kZXggXTtcblx0XHRpZiAoICFlbGVtLnN0eWxlICkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0dmFsdWVzWyBpbmRleCBdID0gZGF0YV9wcml2LmdldCggZWxlbSwgXCJvbGRkaXNwbGF5XCIgKTtcblx0XHRkaXNwbGF5ID0gZWxlbS5zdHlsZS5kaXNwbGF5O1xuXHRcdGlmICggc2hvdyApIHtcblx0XHRcdC8vIFJlc2V0IHRoZSBpbmxpbmUgZGlzcGxheSBvZiB0aGlzIGVsZW1lbnQgdG8gbGVhcm4gaWYgaXQgaXNcblx0XHRcdC8vIGJlaW5nIGhpZGRlbiBieSBjYXNjYWRlZCBydWxlcyBvciBub3Rcblx0XHRcdGlmICggIXZhbHVlc1sgaW5kZXggXSAmJiBkaXNwbGF5ID09PSBcIm5vbmVcIiApIHtcblx0XHRcdFx0ZWxlbS5zdHlsZS5kaXNwbGF5ID0gXCJcIjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2V0IGVsZW1lbnRzIHdoaWNoIGhhdmUgYmVlbiBvdmVycmlkZGVuIHdpdGggZGlzcGxheTogbm9uZVxuXHRcdFx0Ly8gaW4gYSBzdHlsZXNoZWV0IHRvIHdoYXRldmVyIHRoZSBkZWZhdWx0IGJyb3dzZXIgc3R5bGUgaXNcblx0XHRcdC8vIGZvciBzdWNoIGFuIGVsZW1lbnRcblx0XHRcdGlmICggZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIlwiICYmIGlzSGlkZGVuKCBlbGVtICkgKSB7XG5cdFx0XHRcdHZhbHVlc1sgaW5kZXggXSA9IGRhdGFfcHJpdi5hY2Nlc3MoIGVsZW0sIFwib2xkZGlzcGxheVwiLCBkZWZhdWx0RGlzcGxheShlbGVtLm5vZGVOYW1lKSApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRoaWRkZW4gPSBpc0hpZGRlbiggZWxlbSApO1xuXG5cdFx0XHRpZiAoIGRpc3BsYXkgIT09IFwibm9uZVwiIHx8ICFoaWRkZW4gKSB7XG5cdFx0XHRcdGRhdGFfcHJpdi5zZXQoIGVsZW0sIFwib2xkZGlzcGxheVwiLCBoaWRkZW4gPyBkaXNwbGF5IDogalF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIFNldCB0aGUgZGlzcGxheSBvZiBtb3N0IG9mIHRoZSBlbGVtZW50cyBpbiBhIHNlY29uZCBsb29wXG5cdC8vIHRvIGF2b2lkIHRoZSBjb25zdGFudCByZWZsb3dcblx0Zm9yICggaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRlbGVtID0gZWxlbWVudHNbIGluZGV4IF07XG5cdFx0aWYgKCAhZWxlbS5zdHlsZSApIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRpZiAoICFzaG93IHx8IGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJub25lXCIgfHwgZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIlwiICkge1xuXHRcdFx0ZWxlbS5zdHlsZS5kaXNwbGF5ID0gc2hvdyA/IHZhbHVlc1sgaW5kZXggXSB8fCBcIlwiIDogXCJub25lXCI7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW1lbnRzO1xufVxuXG5qUXVlcnkuZXh0ZW5kKHtcblxuXHQvLyBBZGQgaW4gc3R5bGUgcHJvcGVydHkgaG9va3MgZm9yIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHRcblx0Ly8gYmVoYXZpb3Igb2YgZ2V0dGluZyBhbmQgc2V0dGluZyBhIHN0eWxlIHByb3BlcnR5XG5cdGNzc0hvb2tzOiB7XG5cdFx0b3BhY2l0eToge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cblx0XHRcdFx0XHQvLyBXZSBzaG91bGQgYWx3YXlzIGdldCBhIG51bWJlciBiYWNrIGZyb20gb3BhY2l0eVxuXHRcdFx0XHRcdHZhciByZXQgPSBjdXJDU1MoIGVsZW0sIFwib3BhY2l0eVwiICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJldCA9PT0gXCJcIiA/IFwiMVwiIDogcmV0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8vIERvbid0IGF1dG9tYXRpY2FsbHkgYWRkIFwicHhcIiB0byB0aG
9673VzZSBwb3NzaWJseS11bml0bGVzcyBwcm9wZXJ0aWVzXG5cdGNzc051bWJlcjoge1xuXHRcdFwiY29sdW1uQ291bnRcIjogdHJ1ZSxcblx0XHRcImZpbGxPcGFjaXR5XCI6IHRydWUsXG5cdFx0XCJmbGV4R3Jvd1wiOiB0cnVlLFxuXHRcdFwiZmxleFNocmlua1wiOiB0cnVlLFxuXHRcdFwiZm9udFdlaWdodFwiOiB0cnVlLFxuXHRcdFwibGluZUhlaWdodFwiOiB0cnVlLFxuXHRcdFwib3BhY2l0eVwiOiB0cnVlLFxuXHRcdFwib3JkZXJcIjogdHJ1ZSxcblx0XHRcIm9ycGhhbnNcIjogdHJ1ZSxcblx0XHRcIndpZG93c1wiOiB0cnVlLFxuXHRcdFwiekluZGV4XCI6IHRydWUsXG5cdFx0XCJ6b29tXCI6IHRydWVcblx0fSxcblxuXHQvLyBBZGQgaW4gcHJvcGVydGllcyB3aG9zZSBuYW1lcyB5b3Ugd2lzaCB0byBmaXggYmVmb3JlXG5cdC8vIHNldHRpbmcgb3IgZ2V0dGluZyB0aGUgdmFsdWVcblx0Y3NzUHJvcHM6IHtcblx0XHRcImZsb2F0XCI6IFwiY3NzRmxvYXRcIlxuXHR9LFxuXG5cdC8vIEdldCBhbmQgc2V0IHRoZSBzdHlsZSBwcm9wZXJ0eSBvbiBhIERPTSBOb2RlXG5cdHN0eWxlOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUsIGV4dHJhICkge1xuXG5cdFx0Ly8gRG9uJ3Qgc2V0IHN0eWxlcyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzXG5cdFx0aWYgKCAhZWxlbSB8fCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggfHwgIWVsZW0uc3R5bGUgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lXG5cdFx0dmFyIHJldCwgdHlwZSwgaG9va3MsXG5cdFx0XHRvcmlnTmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUgKSxcblx0XHRcdHN0eWxlID0gZWxlbS5zdHlsZTtcblxuXHRcdG5hbWUgPSBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1lIF0gfHwgKCBqUXVlcnkuY3NzUHJvcHNbIG9yaWdOYW1lIF0gPSB2ZW5kb3JQcm9wTmFtZSggc3R5bGUsIG9yaWdOYW1lICkgKTtcblxuXHRcdC8vIEdldHMgaG9vayBmb3IgdGhlIHByZWZpeGVkIHZlcnNpb24sIHRoZW4gdW5wcmVmaXhlZCB2ZXJzaW9uXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSB8fCBqUXVlcnkuY3NzSG9va3NbIG9yaWdOYW1lIF07XG5cblx0XHQvLyBDaGVjayBpZiB3ZSdyZSBzZXR0aW5nIGEgdmFsdWVcblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHR0eXBlID0gdHlwZW9mIHZhbHVlO1xuXG5cdFx0XHQvLyBDb252ZXJ0IFwiKz1cIiBvciBcIi09XCIgdG8gcmVsYXRpdmUgbnVtYmVycyAoIzczNDUpXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwic3RyaW5nXCIgJiYgKHJldCA9IHJyZWxOdW0uZXhlYyggdmFsdWUgKSkgKSB7XG5cdFx0XHRcdHZhbHVlID0gKCByZXRbMV0gKyAxICkgKiByZXRbMl0gKyBwYXJzZUZsb2F0KCBqUXVlcnkuY3NzKCBlbGVtLCBuYW1lICkgKTtcblx0XHRcdFx0Ly8gRml4ZXMgYnVnICM5MjM3XG5cdFx0XHRcdHR5cGUgPSBcIm51bWJlclwiO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYWtlIHN1cmUgdGhhdCBudWxsIGFuZCBOYU4gdmFsdWVzIGFyZW4ndCBzZXQgKCM3MTE2KVxuXHRcdFx0aWYgKCB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlICE9PSB2YWx1ZSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBhIG51bWJlciwgYWRkICdweCcgdG8gdGhlIChleGNlcHQgZm9yIGNlcnRhaW4gQ1NTIHByb3BlcnRpZXMpXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwibnVtYmVyXCIgJiYgIWpRdWVyeS5jc3NOdW1iZXJbIG9yaWdOYW1lIF0gKSB7XG5cdFx0XHRcdHZhbHVlICs9IFwicHhcIjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU5LTExK1xuXHRcdFx0Ly8gYmFja2dyb3VuZC0qIHByb3BzIGFmZmVjdCBvcmlnaW5hbCBjbG9uZSdzIHZhbHVlc1xuXHRcdFx0aWYgKCAhc3VwcG9ydC5jbGVhckNsb25lU3R5bGUgJiYgdmFsdWUgPT09IFwiXCIgJiYgbmFtZS5pbmRleE9mKCBcImJhY2tncm91bmRcIiApID09PSAwICkge1xuXHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gXCJpbmhlcml0XCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQsIHVzZSB0aGF0IHZhbHVlLCBvdGhlcndpc2UganVzdCBzZXQgdGhlIHNwZWNpZmllZCB2YWx1ZVxuXHRcdFx0aWYgKCAhaG9va3MgfHwgIShcInNldFwiIGluIGhvb2tzKSB8fCAodmFsdWUgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBleHRyYSApKSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHR9XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIG5vbi1jb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlXG5cdFx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLmdldCggZWxlbSwgZmFsc2UsIGV4dHJhICkpICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdHJldHVybiByZXQ7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE90aGVyd2lzZSBqdXN0IGdldCB0aGUgdmFsdWUgZnJvbSB0aGUgc3R5bGUgb2JqZWN0XG5cdFx0XHRyZXR1cm4gc3R5bGVbIG5hbWUgXTtcblx0XHR9XG5cdH0sXG5cblx0Y3NzOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZXh0cmEsIHN0eWxlcyApIHtcblx0XHR2YXIgdmFsLCBudW0sIGhvb2tzLFxuXHRcdFx0b3JpZ05hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lICk7XG5cblx0XHQvLyBNYWtlIHN1cmUgdGhhdCB3ZSdyZSB3b3JraW5nIHdpdGggdGhlIHJpZ2h0IG5hbWVcblx0XHRuYW1lID0galF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdIHx8ICggalF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdID0gdmVuZG9yUHJvcE5hbWUoIGVsZW0uc3R5bGUsIG9yaWdOYW1lICkgKTtcblxuXHRcdC8vIFRyeSBwcmVmaXhlZCBuYW1lIGZvbGxvd2VkIGJ5IHRoZSB1bnByZWZpeGVkIG5hbWVcblx0XHRob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTtcblxuXHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlXG5cdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICkge1xuXHRcdFx0dmFsID0gaG9va3MuZ2V0KCBlbGVtLCB0cnVlLCBleHRyYSApO1xuXHRcdH1cblxuXHRcdC8vIE90aGVyd2lzZSwgaWYgYSB3YXkgdG8gZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBleGlzdHMsIHVzZSB0aGF0XG5cdFx0aWYgKCB2YWwgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHZhbCA9IGN1ckNTUyggZWxlbSwgbmFtZSwgc3R5bGVzICk7XG5cdFx0fVxuXG5cdFx0Ly8gQ29udmVydCBcIm5vcm1hbFwiIHRvIGNvbXB1dGVkIHZhbHVlXG5cdFx0aWYgKCB2YWwgPT09IFwibm9ybWFsXCIgJiYgbmFtZSBpbiBjc3NOb3JtYWxUcmFuc2Zvcm0gKSB7XG5cdFx0XHR2YWwgPSBjc3NOb3JtYWxUcmFuc2Zvcm1bIG5hbWUgXTtcblx0XHR9XG5cblx0XHQvLyBNYWtlIG51bWVyaWMgaWYgZm9yY2VkIG9yIGEgcXVhbGlmaWVyIHdhcyBwcm92aWRlZCBhbmQgdmFsIGxvb2tzIG51bWVyaWNcblx0XHRpZiAoIGV4dHJhID09PSBcIlwiIHx8IGV4dHJhICkge1xuXHRcdFx0bnVtID0gcGFyc2VGbG9hdCggdmFsICk7XG5cdFx0XHRyZXR1cm4gZXh0cmEgPT09IHRydWUgfHwgalF1ZXJ5LmlzTnVtZXJpYyggbnVtICkgPyBudW0gfHwgMCA6IHZhbDtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbDtcblx0fVxufSk7XG5cbmpRdWVyeS5lYWNoKFsgXCJoZWlnaHRcIiwgXCJ3aWR0aFwiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHRqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSA9IHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCwgZXh0cmEgKSB7XG5cdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXG5cdFx0XHRcdC8vIENlcnRhaW4gZWxlbWVudHMgY2FuIGhhdmUgZGltZW5zaW9uIGluZm8gaWYgd2UgaW52aXNpYmx5IHNob3cgdGhlbV
9673xuXHRcdFx0XHQvLyBidXQgaXQgbXVzdCBoYXZlIGEgY3VycmVudCBkaXNwbGF5IHN0eWxlIHRoYXQgd291bGQgYmVuZWZpdFxuXHRcdFx0XHRyZXR1cm4gcmRpc3BsYXlzd2FwLnRlc3QoIGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICkgKSAmJiBlbGVtLm9mZnNldFdpZHRoID09PSAwID9cblx0XHRcdFx0XHRqUXVlcnkuc3dhcCggZWxlbSwgY3NzU2hvdywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZ2V0V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEgKTtcblx0XHRcdFx0XHR9KSA6XG5cdFx0XHRcdFx0Z2V0V2lkdGhPckhlaWdodCggZWxlbSwgbmFtZSwgZXh0cmEgKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIGV4dHJhICkge1xuXHRcdFx0dmFyIHN0eWxlcyA9IGV4dHJhICYmIGdldFN0eWxlcyggZWxlbSApO1xuXHRcdFx0cmV0dXJuIHNldFBvc2l0aXZlTnVtYmVyKCBlbGVtLCB2YWx1ZSwgZXh0cmEgP1xuXHRcdFx0XHRhdWdtZW50V2lkdGhPckhlaWdodChcblx0XHRcdFx0XHRlbGVtLFxuXHRcdFx0XHRcdG5hbWUsXG5cdFx0XHRcdFx0ZXh0cmEsXG5cdFx0XHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgXCJib3hTaXppbmdcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImJvcmRlci1ib3hcIixcblx0XHRcdFx0XHRzdHlsZXNcblx0XHRcdFx0KSA6IDBcblx0XHRcdCk7XG5cdFx0fVxuXHR9O1xufSk7XG5cbi8vIFN1cHBvcnQ6IEFuZHJvaWQgMi4zXG5qUXVlcnkuY3NzSG9va3MubWFyZ2luUmlnaHQgPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdodCxcblx0ZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkge1xuXHRcdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LnN3YXAoIGVsZW0sIHsgXCJkaXNwbGF5XCI6IFwiaW5saW5lLWJsb2NrXCIgfSxcblx0XHRcdFx0Y3VyQ1NTLCBbIGVsZW0sIFwibWFyZ2luUmlnaHRcIiBdICk7XG5cdFx0fVxuXHR9XG4pO1xuXG4vLyBUaGVzZSBob29rcyBhcmUgdXNlZCBieSBhbmltYXRlIHRvIGV4cGFuZCBwcm9wZXJ0aWVzXG5qUXVlcnkuZWFjaCh7XG5cdG1hcmdpbjogXCJcIixcblx0cGFkZGluZzogXCJcIixcblx0Ym9yZGVyOiBcIldpZHRoXCJcbn0sIGZ1bmN0aW9uKCBwcmVmaXgsIHN1ZmZpeCApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXSA9IHtcblx0XHRleHBhbmQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBpID0gMCxcblx0XHRcdFx0ZXhwYW5kZWQgPSB7fSxcblxuXHRcdFx0XHQvLyBBc3N1bWVzIGEgc2luZ2xlIG51bWJlciBpZiBub3QgYSBzdHJpbmdcblx0XHRcdFx0cGFydHMgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZS5zcGxpdChcIiBcIikgOiBbIHZhbHVlIF07XG5cblx0XHRcdGZvciAoIDsgaSA8IDQ7IGkrKyApIHtcblx0XHRcdFx0ZXhwYW5kZWRbIHByZWZpeCArIGNzc0V4cGFuZFsgaSBdICsgc3VmZml4IF0gPVxuXHRcdFx0XHRcdHBhcnRzWyBpIF0gfHwgcGFydHNbIGkgLSAyIF0gfHwgcGFydHNbIDAgXTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGV4cGFuZGVkO1xuXHRcdH1cblx0fTtcblxuXHRpZiAoICFybWFyZ2luLnRlc3QoIHByZWZpeCApICkge1xuXHRcdGpRdWVyeS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0uc2V0ID0gc2V0UG9zaXRpdmVOdW1iZXI7XG5cdH1cbn0pO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0Y3NzOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdFx0dmFyIHN0eWxlcywgbGVuLFxuXHRcdFx0XHRtYXAgPSB7fSxcblx0XHRcdFx0aSA9IDA7XG5cblx0XHRcdGlmICggalF1ZXJ5LmlzQXJyYXkoIG5hbWUgKSApIHtcblx0XHRcdFx0c3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICk7XG5cdFx0XHRcdGxlbiA9IG5hbWUubGVuZ3RoO1xuXG5cdFx0XHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRcdG1hcFsgbmFtZVsgaSBdIF0gPSBqUXVlcnkuY3NzKCBlbGVtLCBuYW1lWyBpIF0sIGZhbHNlLCBzdHlsZXMgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBtYXA7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID9cblx0XHRcdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lLCB2YWx1ZSApIDpcblx0XHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApO1xuXHRcdH0sIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApO1xuXHR9LFxuXHRzaG93OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2hvd0hpZGUoIHRoaXMsIHRydWUgKTtcblx0fSxcblx0aGlkZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHNob3dIaWRlKCB0aGlzICk7XG5cdH0sXG5cdHRvZ2dsZTogZnVuY3Rpb24oIHN0YXRlICkge1xuXHRcdGlmICggdHlwZW9mIHN0YXRlID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRcdHJldHVybiBzdGF0ZSA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdGlmICggaXNIaWRkZW4oIHRoaXMgKSApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkuc2hvdygpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkuaGlkZSgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59KTtcblxuXG5mdW5jdGlvbiBUd2VlbiggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKSB7XG5cdHJldHVybiBuZXcgVHdlZW4ucHJvdG90eXBlLmluaXQoIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nICk7XG59XG5qUXVlcnkuVHdlZW4gPSBUd2VlbjtcblxuVHdlZW4ucHJvdG90eXBlID0ge1xuXHRjb25zdHJ1Y3RvcjogVHdlZW4sXG5cdGluaXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZywgdW5pdCApIHtcblx0XHR0aGlzLmVsZW0gPSBlbGVtO1xuXHRcdHRoaXMucHJvcCA9IHByb3A7XG5cdFx0dGhpcy5lYXNpbmcgPSBlYXNpbmcgfHwgXCJzd2luZ1wiO1xuXHRcdHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cdFx0dGhpcy5zdGFydCA9IHRoaXMubm93ID0gdGhpcy5jdXIoKTtcblx0XHR0aGlzLmVuZCA9IGVuZDtcblx0XHR0aGlzLnVuaXQgPSB1bml0IHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gXCJcIiA6IFwicHhcIiApO1xuXHR9LFxuXHRjdXI6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRyZXR1cm4gaG9va3MgJiYgaG9va3MuZ2V0ID9cblx0XHRcdGhvb2tzLmdldCggdGhpcyApIDpcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5nZXQoIHRoaXMgKTtcblx0fSxcblx0cnVuOiBmdW5jdGlvbiggcGVyY2VudCApIHtcblx0XHR2YXIgZWFzZWQsXG5cdFx0XHRob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5kdXJhdGlvbiApIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBqUXVlcnkuZWFzaW5nWyB0aGlzLmVhc2luZyBdKFxuXHRcdFx0XHRwZXJjZW50LCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKiBwZXJjZW50LCAwLCAxLCB0aGlzLm9wdGlvbnMuZHVyYXRpb25cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBwZXJjZW50O1xuXHRcdH1cblx0XHR0aGlzLm5vdyA9ICggdGhpcy5lbmQgLSB0aGlzLnN0YXJ0ICkgKiBlYXNlZCArIHRoaXMuc3RhcnQ7XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5zdGVwICkge1xuXHRcdFx0dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCggdGhpcy5lbGVtLCB0aGlzLm5vdywgdGh
9673pcyApO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgaG9va3Muc2V0ICkge1xuXHRcdFx0aG9va3Muc2V0KCB0aGlzICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQoIHRoaXMgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn07XG5cblR3ZWVuLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZSA9IFR3ZWVuLnByb3RvdHlwZTtcblxuVHdlZW4ucHJvcEhvb2tzID0ge1xuXHRfZGVmYXVsdDoge1xuXHRcdGdldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdFx0dmFyIHJlc3VsdDtcblxuXHRcdFx0aWYgKCB0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gIT0gbnVsbCAmJlxuXHRcdFx0XHQoIXR3ZWVuLmVsZW0uc3R5bGUgfHwgdHdlZW4uZWxlbS5zdHlsZVsgdHdlZW4ucHJvcCBdID09IG51bGwpICkge1xuXHRcdFx0XHRyZXR1cm4gdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBQYXNzaW5nIGFuIGVtcHR5IHN0cmluZyBhcyBhIDNyZCBwYXJhbWV0ZXIgdG8gLmNzcyB3aWxsIGF1dG9tYXRpY2FsbHlcblx0XHRcdC8vIGF0dGVtcHQgYSBwYXJzZUZsb2F0IGFuZCBmYWxsYmFjayB0byBhIHN0cmluZyBpZiB0aGUgcGFyc2UgZmFpbHMuXG5cdFx0XHQvLyBTaW1wbGUgdmFsdWVzIHN1Y2ggYXMgXCIxMHB4XCIgYXJlIHBhcnNlZCB0byBGbG9hdDtcblx0XHRcdC8vIGNvbXBsZXggdmFsdWVzIHN1Y2ggYXMgXCJyb3RhdGUoMXJhZClcIiBhcmUgcmV0dXJuZWQgYXMtaXMuXG5cdFx0XHRyZXN1bHQgPSBqUXVlcnkuY3NzKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCBcIlwiICk7XG5cdFx0XHQvLyBFbXB0eSBzdHJpbmdzLCBudWxsLCB1bmRlZmluZWQgYW5kIFwiYXV0b1wiIGFyZSBjb252ZXJ0ZWQgdG8gMC5cblx0XHRcdHJldHVybiAhcmVzdWx0IHx8IHJlc3VsdCA9PT0gXCJhdXRvXCIgPyAwIDogcmVzdWx0O1xuXHRcdH0sXG5cdFx0c2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7XG5cdFx0XHQvLyBVc2Ugc3RlcCBob29rIGZvciBiYWNrIGNvbXBhdC5cblx0XHRcdC8vIFVzZSBjc3NIb29rIGlmIGl0cyB0aGVyZS5cblx0XHRcdC8vIFVzZSAuc3R5bGUgaWYgYXZhaWxhYmxlIGFuZCB1c2UgcGxhaW4gcHJvcGVydGllcyB3aGVyZSBhdmFpbGFibGUuXG5cdFx0XHRpZiAoIGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0gKSB7XG5cdFx0XHRcdGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0oIHR3ZWVuICk7XG5cdFx0XHR9IGVsc2UgaWYgKCB0d2Vlbi5lbGVtLnN0eWxlICYmICggdHdlZW4uZWxlbS5zdHlsZVsgalF1ZXJ5LmNzc1Byb3BzWyB0d2Vlbi5wcm9wIF0gXSAhPSBudWxsIHx8IGpRdWVyeS5jc3NIb29rc1sgdHdlZW4ucHJvcCBdICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggdHdlZW4uZWxlbSwgdHdlZW4ucHJvcCwgdHdlZW4ubm93ICsgdHdlZW4udW5pdCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdID0gdHdlZW4ubm93O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxuLy8gU3VwcG9ydDogSUU5XG4vLyBQYW5pYyBiYXNlZCBhcHByb2FjaCB0byBzZXR0aW5nIHRoaW5ncyBvbiBkaXNjb25uZWN0ZWQgbm9kZXNcblR3ZWVuLnByb3BIb29rcy5zY3JvbGxUb3AgPSBUd2Vlbi5wcm9wSG9va3Muc2Nyb2xsTGVmdCA9IHtcblx0c2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7XG5cdFx0aWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlICYmIHR3ZWVuLmVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdztcblx0XHR9XG5cdH1cbn07XG5cbmpRdWVyeS5lYXNpbmcgPSB7XG5cdGxpbmVhcjogZnVuY3Rpb24oIHAgKSB7XG5cdFx0cmV0dXJuIHA7XG5cdH0sXG5cdHN3aW5nOiBmdW5jdGlvbiggcCApIHtcblx0XHRyZXR1cm4gMC41IC0gTWF0aC5jb3MoIHAgKiBNYXRoLlBJICkgLyAyO1xuXHR9XG59O1xuXG5qUXVlcnkuZnggPSBUd2Vlbi5wcm90b3R5cGUuaW5pdDtcblxuLy8gQmFjayBDb21wYXQgPDEuOCBleHRlbnNpb24gcG9pbnRcbmpRdWVyeS5meC5zdGVwID0ge307XG5cblxuXG5cbnZhclxuXHRmeE5vdywgdGltZXJJZCxcblx0cmZ4dHlwZXMgPSAvXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sXG5cdHJmeG51bSA9IG5ldyBSZWdFeHAoIFwiXig/OihbKy1dKT18KShcIiArIHBudW0gKyBcIikoW2EteiVdKikkXCIsIFwiaVwiICksXG5cdHJydW4gPSAvcXVldWVIb29rcyQvLFxuXHRhbmltYXRpb25QcmVmaWx0ZXJzID0gWyBkZWZhdWx0UHJlZmlsdGVyIF0sXG5cdHR3ZWVuZXJzID0ge1xuXHRcdFwiKlwiOiBbIGZ1bmN0aW9uKCBwcm9wLCB2YWx1ZSApIHtcblx0XHRcdHZhciB0d2VlbiA9IHRoaXMuY3JlYXRlVHdlZW4oIHByb3AsIHZhbHVlICksXG5cdFx0XHRcdHRhcmdldCA9IHR3ZWVuLmN1cigpLFxuXHRcdFx0XHRwYXJ0cyA9IHJmeG51bS5leGVjKCB2YWx1ZSApLFxuXHRcdFx0XHR1bml0ID0gcGFydHMgJiYgcGFydHNbIDMgXSB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/IFwiXCIgOiBcInB4XCIgKSxcblxuXHRcdFx0XHQvLyBTdGFydGluZyB2YWx1ZSBjb21wdXRhdGlvbiBpcyByZXF1aXJlZCBmb3IgcG90ZW50aWFsIHVuaXQgbWlzbWF0Y2hlc1xuXHRcdFx0XHRzdGFydCA9ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdIHx8IHVuaXQgIT09IFwicHhcIiAmJiArdGFyZ2V0ICkgJiZcblx0XHRcdFx0XHRyZnhudW0uZXhlYyggalF1ZXJ5LmNzcyggdHdlZW4uZWxlbSwgcHJvcCApICksXG5cdFx0XHRcdHNjYWxlID0gMSxcblx0XHRcdFx0bWF4SXRlcmF0aW9ucyA9IDIwO1xuXG5cdFx0XHRpZiAoIHN0YXJ0ICYmIHN0YXJ0WyAzIF0gIT09IHVuaXQgKSB7XG5cdFx0XHRcdC8vIFRydXN0IHVuaXRzIHJlcG9ydGVkIGJ5IGpRdWVyeS5jc3Ncblx0XHRcdFx0dW5pdCA9IHVuaXQgfHwgc3RhcnRbIDMgXTtcblxuXHRcdFx0XHQvLyBNYWtlIHN1cmUgd2UgdXBkYXRlIHRoZSB0d2VlbiBwcm9wZXJ0aWVzIGxhdGVyIG9uXG5cdFx0XHRcdHBhcnRzID0gcGFydHMgfHwgW107XG5cblx0XHRcdFx0Ly8gSXRlcmF0aXZlbHkgYXBwcm94aW1hdGUgZnJvbSBhIG5vb
9673nplcm8gc3RhcnRpbmcgcG9pbnRcblx0XHRcdFx0c3RhcnQgPSArdGFyZ2V0IHx8IDE7XG5cblx0XHRcdFx0ZG8ge1xuXHRcdFx0XHRcdC8vIElmIHByZXZpb3VzIGl0ZXJhdGlvbiB6ZXJvZWQgb3V0LCBkb3VibGUgdW50aWwgd2UgZ2V0ICpzb21ldGhpbmcqLlxuXHRcdFx0XHRcdC8vIFVzZSBzdHJpbmcgZm9yIGRvdWJsaW5nIHNvIHdlIGRvbid0IGFjY2lkZW50YWxseSBzZWUgc2NhbGUgYXMgdW5jaGFuZ2VkIGJlbG93XG5cdFx0XHRcdFx0c2NhbGUgPSBzY2FsZSB8fCBcIi41XCI7XG5cblx0XHRcdFx0XHQvLyBBZGp1c3QgYW5kIGFwcGx5XG5cdFx0XHRcdFx0c3RhcnQgPSBzdGFydCAvIHNjYWxlO1xuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggdHdlZW4uZWxlbSwgcHJvcCwgc3RhcnQgKyB1bml0ICk7XG5cblx0XHRcdFx0Ly8gVXBkYXRlIHNjYWxlLCB0b2xlcmF0aW5nIHplcm8gb3IgTmFOIGZyb20gdHdlZW4uY3VyKCksXG5cdFx0XHRcdC8vIGJyZWFrIHRoZSBsb29wIGlmIHNjYWxlIGlzIHVuY2hhbmdlZCBvciBwZXJmZWN0LCBvciBpZiB3ZSd2ZSBqdXN0IGhhZCBlbm91Z2hcblx0XHRcdFx0fSB3aGlsZSAoIHNjYWxlICE9PSAoc2NhbGUgPSB0d2Vlbi5jdXIoKSAvIHRhcmdldCkgJiYgc2NhbGUgIT09IDEgJiYgLS1tYXhJdGVyYXRpb25zICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFVwZGF0ZSB0d2VlbiBwcm9wZXJ0aWVzXG5cdFx0XHRpZiAoIHBhcnRzICkge1xuXHRcdFx0XHRzdGFydCA9IHR3ZWVuLnN0YXJ0ID0gK3N0YXJ0IHx8ICt0YXJnZXQgfHwgMDtcblx0XHRcdFx0dHdlZW4udW5pdCA9IHVuaXQ7XG5cdFx0XHRcdC8vIElmIGEgKz0vLT0gdG9rZW4gd2FzIHByb3ZpZGVkLCB3ZSdyZSBkb2luZyBhIHJlbGF0aXZlIGFuaW1hdGlvblxuXHRcdFx0XHR0d2Vlbi5lbmQgPSBwYXJ0c1sgMSBdID9cblx0XHRcdFx0XHRzdGFydCArICggcGFydHNbIDEgXSArIDEgKSAqIHBhcnRzWyAyIF0gOlxuXHRcdFx0XHRcdCtwYXJ0c1sgMiBdO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdHdlZW47XG5cdFx0fSBdXG5cdH07XG5cbi8vIEFuaW1hdGlvbnMgY3JlYXRlZCBzeW5jaHJvbm91c2x5IHdpbGwgcnVuIHN5bmNocm9ub3VzbHlcbmZ1bmN0aW9uIGNyZWF0ZUZ4Tm93KCkge1xuXHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdGZ4Tm93ID0gdW5kZWZpbmVkO1xuXHR9KTtcblx0cmV0dXJuICggZnhOb3cgPSBqUXVlcnkubm93KCkgKTtcbn1cblxuLy8gR2VuZXJhdGUgcGFyYW1ldGVycyB0byBjcmVhdGUgYSBzdGFuZGFyZCBhbmltYXRpb25cbmZ1bmN0aW9uIGdlbkZ4KCB0eXBlLCBpbmNsdWRlV2lkdGggKSB7XG5cdHZhciB3aGljaCxcblx0XHRpID0gMCxcblx0XHRhdHRycyA9IHsgaGVpZ2h0OiB0eXBlIH07XG5cblx0Ly8gSWYgd2UgaW5jbHVkZSB3aWR0aCwgc3RlcCB2YWx1ZSBpcyAxIHRvIGRvIGFsbCBjc3NFeHBhbmQgdmFsdWVzLFxuXHQvLyBvdGhlcndpc2Ugc3RlcCB2YWx1ZSBpcyAyIHRvIHNraXAgb3ZlciBMZWZ0IGFuZCBSaWdodFxuXHRpbmNsdWRlV2lkdGggPSBpbmNsdWRlV2lkdGggPyAxIDogMDtcblx0Zm9yICggOyBpIDwgNCA7IGkgKz0gMiAtIGluY2x1ZGVXaWR0aCApIHtcblx0XHR3aGljaCA9IGNzc0V4cGFuZFsgaSBdO1xuXHRcdGF0dHJzWyBcIm1hcmdpblwiICsgd2hpY2ggXSA9IGF0dHJzWyBcInBhZGRpbmdcIiArIHdoaWNoIF0gPSB0eXBlO1xuXHR9XG5cblx0aWYgKCBpbmNsdWRlV2lkdGggKSB7XG5cdFx0YXR0cnMub3BhY2l0eSA9IGF0dHJzLndpZHRoID0gdHlwZTtcblx0fVxuXG5cdHJldHVybiBhdHRycztcbn1cblxuZnVuY3Rpb24gY3JlYXRlVHdlZW4oIHZhbHVlLCBwcm9wLCBhbmltYXRpb24gKSB7XG5cdHZhciB0d2Vlbixcblx0XHRjb2xsZWN0aW9uID0gKCB0d2VlbmVyc1sgcHJvcCBdIHx8IFtdICkuY29uY2F0KCB0d2VlbmVyc1sgXCIqXCIgXSApLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDtcblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRpZiAoICh0d2VlbiA9IGNvbGxlY3Rpb25bIGluZGV4IF0uY2FsbCggYW5pbWF0aW9uLCBwcm9wLCB2YWx1ZSApKSApIHtcblxuXHRcdFx0Ly8gV2UncmUgZG9uZSB3aXRoIHRoaXMgcHJvcGVydHlcblx0XHRcdHJldHVybiB0d2Vlbjtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gZGVmYXVsdFByZWZpbHRlciggZWxlbSwgcHJvcHMsIG9wdHMgKSB7XG5cdC8qIGpzaGludCB2YWxpZHRoaXM6IHRydWUgKi9cblx0dmFyIHByb3AsIHZhbHVlLCB0b2dnbGUsIHR3ZWVuLCBob29rcywgb2xkZmlyZSwgZGlzcGxheSwgY2hlY2tEaXNwbGF5LFxuXHRcdGFuaW0gPSB0aGlzLFxuXHRcdG9yaWcgPSB7fSxcblx0XHRzdHlsZSA9IGVsZW0uc3R5bGUsXG5cdFx0aGlkZGVuID0gZWxlbS5ub2RlVHlwZSAmJiBpc0hpZGRlbiggZWxlbSApLFxuXHRcdGRhdGFTaG93ID0gZGF0YV9wcml2LmdldCggZWxlbSwgXCJmeHNob3dcIiApO1xuXG5cdC8vIEhhbmRsZSBxdWV1ZTogZmFsc2UgcHJvbWlzZXNcblx0aWYgKCAhb3B0cy5xdWV1ZSApIHtcblx0XHRob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcyggZWxlbSwgXCJmeFwiICk7XG5cdFx0aWYgKCBob29rcy51bnF1ZXVlZCA9PSBudWxsICkge1xuXHRcdFx0aG9va3MudW5xdWV1ZWQgPSAwO1xuXHRcdFx0b2xkZmlyZSA9IGhvb2tzLmVtcHR5LmZpcmU7XG5cdFx0XHRob29rcy5lbXB0eS5maXJlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggIWhvb2tzLnVucXVldWVkICkge1xuXHRcdFx0XHRcdG9sZGZpcmUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9XG5cdFx0aG9va3MudW5xdWV1ZWQrKztcblxuXHRcdGFuaW0uYWx3YXlzKGZ1bmN0aW9uKCkge1xuXHRcdFx0Ly8gRW5zdXJlIHRoZSBjb21wbGV0ZSBoYW5kbGVyIGlzIGNhbGxlZCBiZWZvcmUgdGhpcyBjb21wbGV0ZXNcblx0XHRcdGFuaW0uYWx3YXlzKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRob29rcy51bnF1ZXVlZC0tO1xuXHRcdFx0XHRpZiAoICFqUXVlcnkucXVldWUoIGVsZW0sIFwiZnhcIiApLmxlbmd0aCApIHtcblx0XHRcdFx0XHRob29rcy5lbXB0eS5maXJlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG5cblx0Ly8gSGVpZ2h0L3dpZHRoIG92ZXJmbG93IHBhc3Ncblx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICggXCJoZWlnaHRcIiBpbiBwcm9wcyB8fCBcIndpZHRoXCIgaW4gcHJvcHMgKSApIHtcblx0XHQvLyBNYWtlIHN1cmUgdGhhdCBub3RoaW5nIHNuZWFrcyBvdXRcblx0XHQvLyBSZWNvcmQgYWxsIDMgb3ZlcmZsb3cgYXR0cmlidXRlcyBiZWNhdXNlIElFOS0xMCBkbyBub3Rcblx0XHQvLyBjaGFuZ2UgdGhlIG92ZXJmbG93IGF0dHJpYnV0ZSB3aGVuIG92ZXJmbG93WCBhbmRcblx0XHQvLyBvdmVyZmxvd1kgYXJlIHNldCB0byB0aGUgc2FtZSB2YWx1ZVxuXHRcdG9wdHMub3ZlcmZsb3cgPSBbIHN0eWxlLm92ZXJmbG93LCBzdHlsZS5vdmVyZmxvd1gsIHN0eWxlLm92ZXJmbG93WSBdO1xuXG5cdFx0Ly8gU2V0IGRpc3BsYXkgcHJvcGVydHkgdG8gaW5saW5lLWJsb2NrIGZvciBoZWlnaHQvd2lkdGhcblx0XHQvLyBhbmltYXRpb25zIG9uIGlubGluZSBlbGVtZW50cyB0aGF0IGFyZSBoYXZpbmcgd2lkdGgvaGVpZ2h0IGFuaW1hdGVkXG5cdFx0ZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICk7XG5cblx0XHQvLyBUZXN0IGRlZmF1bHQgZGlzcGxheSBpZiBkaXNwbGF5IGlzIGN1cnJlbnRseSBcIm5vbmVcIlxuXHRcdGNoZWNrRGlzcGxheSA9IGRpc3BsYXkgPT09IFwibm9uZVwiID9cblx0XHRcdGRhdGFfcHJpdi5nZXQoIGVsZW0sIFwib2xkZGlzcGxheVwiICkgfHwgZGVmYXVsdERpc3BsYXkoIGVsZW0ubm9kZU5hbWUgKSA6IGRpc3BsYXk7XG5cblx0XHRpZiAoIGNoZWNrRGlzcGxheSA9PT0gXCJpbmxpbmVcIiAmJiBqUXVlcnkuY3NzKCBlbGVtLCBcImZsb2F0XCIgKSA9PT0gXCJub25lXCIgKSB7XG5cdFx0XHRzdHlsZS5kaXNwbGF5ID0gXCJpbmxpbmUtYmxvY2tcIjtcblx0XHR9XG5cdH1cblxuXHRpZiAoIG9wdHMub3ZlcmZsb3cgKSB7XG5cdFx0c3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xuXHRcdGFuaW0uYWx3YXlzKGZ1bmN0aW9uKCkge1xuXHRcdFx0c3R5bGUub3ZlcmZsb3cgPSBvcHRzLm92ZXJmbG93WyAwIF07XG5cdFx0XHRzdHlsZS5vdmVyZmxvd1ggPSBvcHRzLm92ZXJmbG93WyAxIF07XG5cdFx0XHRzdHlsZS5vdmVyZmxvd1kgPSBvcHRzLm92ZXJmbG93WyAyIF07XG5cdFx0fSk7XG5cdH1cblxuXHQvLyBzaG93L2hpZGUgcGFzc1xuXHRmb3IgKCBwcm9wIGluIHByb3BzICkge1xuXHRcdHZhbHVlID0gcHJvcHNbIHByb3AgXTtcblx0XHRpZiAoIHJmeHR5cGVzLmV4ZWMoIHZhbHVlICkgKSB7XG5cdFx0XHRkZWxldGUgcHJvcHNbIHByb3AgXTtcblx0XHRcdHRvZ2dsZSA9IHRvZ2dsZSB8fCB2YWx1ZSA9PT0gXCJ0b2dnbGVcIjtcblx0XHRcdGlmICggdmFsdWUgPT09ICggaGlkZGVuID8gXCJoaWRlXCIgOiBcInNob3dcIiApICkge1xuXG5cdFx0XHRcdC8vIElmIHRoZXJlIGlzIGRhdGFTaG93IGxlZnQgb3ZlciBmcm9tIGEgc3RvcHBlZCBoaWRlIG9yIHNob3cgYW5kIHdlIGFyZSBnb2luZyB0byBwcm9jZWVkIHdpdGggc2hvdywgd2Ugc2hvdWxkIHByZXRlbmQgdG8gYmUgaGlkZGVuXG5cdFx0XHRcdGlmICggdmFsdWUgPT09IFwic2hvd1wiICYmIGRhdGFTaG93ICYmIGRhdGFTaG93WyBwcm9wIF0gIT09I
9673HVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRoaWRkZW4gPSB0cnVlO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRvcmlnWyBwcm9wIF0gPSBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdIHx8IGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCApO1xuXG5cdFx0Ly8gQW55IG5vbi1meCB2YWx1ZSBzdG9wcyB1cyBmcm9tIHJlc3RvcmluZyB0aGUgb3JpZ2luYWwgZGlzcGxheSB2YWx1ZVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRkaXNwbGF5ID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdGlmICggIWpRdWVyeS5pc0VtcHR5T2JqZWN0KCBvcmlnICkgKSB7XG5cdFx0aWYgKCBkYXRhU2hvdyApIHtcblx0XHRcdGlmICggXCJoaWRkZW5cIiBpbiBkYXRhU2hvdyApIHtcblx0XHRcdFx0aGlkZGVuID0gZGF0YVNob3cuaGlkZGVuO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRkYXRhU2hvdyA9IGRhdGFfcHJpdi5hY2Nlc3MoIGVsZW0sIFwiZnhzaG93XCIsIHt9ICk7XG5cdFx0fVxuXG5cdFx0Ly8gU3RvcmUgc3RhdGUgaWYgaXRzIHRvZ2dsZSAtIGVuYWJsZXMgLnN0b3AoKS50b2dnbGUoKSB0byBcInJldmVyc2VcIlxuXHRcdGlmICggdG9nZ2xlICkge1xuXHRcdFx0ZGF0YVNob3cuaGlkZGVuID0gIWhpZGRlbjtcblx0XHR9XG5cdFx0aWYgKCBoaWRkZW4gKSB7XG5cdFx0XHRqUXVlcnkoIGVsZW0gKS5zaG93KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFuaW0uZG9uZShmdW5jdGlvbigpIHtcblx0XHRcdFx0alF1ZXJ5KCBlbGVtICkuaGlkZSgpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGFuaW0uZG9uZShmdW5jdGlvbigpIHtcblx0XHRcdHZhciBwcm9wO1xuXG5cdFx0XHRkYXRhX3ByaXYucmVtb3ZlKCBlbGVtLCBcImZ4c2hvd1wiICk7XG5cdFx0XHRmb3IgKCBwcm9wIGluIG9yaWcgKSB7XG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgb3JpZ1sgcHJvcCBdICk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0Zm9yICggcHJvcCBpbiBvcmlnICkge1xuXHRcdFx0dHdlZW4gPSBjcmVhdGVUd2VlbiggaGlkZGVuID8gZGF0YVNob3dbIHByb3AgXSA6IDAsIHByb3AsIGFuaW0gKTtcblxuXHRcdFx0aWYgKCAhKCBwcm9wIGluIGRhdGFTaG93ICkgKSB7XG5cdFx0XHRcdGRhdGFTaG93WyBwcm9wIF0gPSB0d2Vlbi5zdGFydDtcblx0XHRcdFx0aWYgKCBoaWRkZW4gKSB7XG5cdFx0XHRcdFx0dHdlZW4uZW5kID0gdHdlZW4uc3RhcnQ7XG5cdFx0XHRcdFx0dHdlZW4uc3RhcnQgPSBwcm9wID09PSBcIndpZHRoXCIgfHwgcHJvcCA9PT0gXCJoZWlnaHRcIiA/IDEgOiAwO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdC8vIElmIHRoaXMgaXMgYSBub29wIGxpa2UgLmhpZGUoKS5oaWRlKCksIHJlc3RvcmUgYW4gb3ZlcndyaXR0ZW4gZGlzcGxheSB2YWx1ZVxuXHR9IGVsc2UgaWYgKCAoZGlzcGxheSA9PT0gXCJub25lXCIgPyBkZWZhdWx0RGlzcGxheSggZWxlbS5ub2RlTmFtZSApIDogZGlzcGxheSkgPT09IFwiaW5saW5lXCIgKSB7XG5cdFx0c3R5bGUuZGlzcGxheSA9IGRpc3BsYXk7XG5cdH1cbn1cblxuZnVuY3Rpb24gcHJvcEZpbHRlciggcHJvcHMsIHNwZWNpYWxFYXNpbmcgKSB7XG5cdHZhciBpbmRleCwgbmFtZSwgZWFzaW5nLCB2YWx1ZSwgaG9va3M7XG5cblx0Ly8gY2FtZWxDYXNlLCBzcGVjaWFsRWFzaW5nIGFuZCBleHBhbmQgY3NzSG9vayBwYXNzXG5cdGZvciAoIGluZGV4IGluIHByb3BzICkge1xuXHRcdG5hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBpbmRleCApO1xuXHRcdGVhc2luZyA9IHNwZWNpYWxFYXNpbmdbIG5hbWUgXTtcblx0XHR2YWx1ZSA9IHByb3BzWyBpbmRleCBdO1xuXHRcdGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbHVlICkgKSB7XG5cdFx0XHRlYXNpbmcgPSB2YWx1ZVsgMSBdO1xuXHRcdFx0dmFsdWUgPSBwcm9wc1sgaW5kZXggXSA9IHZhbHVlWyAwIF07XG5cdFx0fVxuXG5cdFx0aWYgKCBpbmRleCAhPT0gbmFtZSApIHtcblx0XHRcdHByb3BzWyBuYW1lIF0gPSB2YWx1ZTtcblx0XHRcdGRlbGV0ZSBwcm9wc1sgaW5kZXggXTtcblx0XHR9XG5cblx0XHRob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdO1xuXHRcdGlmICggaG9va3MgJiYgXCJleHBhbmRcIiBpbiBob29rcyApIHtcblx0XHRcdHZhbHVlID0gaG9va3MuZXhwYW5kKCB2YWx1ZSApO1xuXHRcdFx0ZGVsZXRlIHByb3BzWyBuYW1lIF07XG5cblx0XHRcdC8vIE5vdCBxdWl0ZSAkLmV4dGVuZCwgdGhpcyB3b24ndCBvdmVyd3JpdGUgZXhpc3Rpbmcga2V5cy5cblx0XHRcdC8vIFJldXNpbmcgJ2luZGV4JyBiZWNhdXNlIHdlIGhhdmUgdGhlIGNvcnJlY3QgXCJuYW1lXCJcblx0XHRcdGZvciAoIGluZGV4IGluIHZhbHVlICkge1xuXHRcdFx0XHRpZiAoICEoIGluZGV4IGluIHByb3BzICkgKSB7XG5cdFx0XHRcdFx0cHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgaW5kZXggXTtcblx0XHRcdFx0XHRzcGVjaWFsRWFzaW5nWyBpbmRleCBdID0gZWFzaW5nO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNwZWNpYWxFYXNpbmdbIG5hbWUgXSA9IGVhc2luZztcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gQW5pbWF0aW9uKCBlbGVtLCBwcm9wZXJ0aWVzLCBvcHRpb25zICkge1xuXHR2YXIgcmVzdWx0LFxuXHRcdHN0b3BwZWQsXG5cdFx0aW5kZXggPSAwLFxuXHRcdGxlbmd0aCA9IGFuaW1hdGlvblByZWZpbHRlcnMubGVuZ3RoLFxuXHRcdGRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVkKCkuYWx3YXlzKCBmdW5jdGlvbigpIHtcblx0XHRcdC8vIERvbid0IG1hdGNoIGVsZW0gaW4gdGhlIDphbmltYXRlZCBzZWxlY3RvclxuXHRcdFx0ZGVsZXRlIHRpY2suZWxlbTtcblx0XHR9KSxcblx0XHR0aWNrID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIHN0b3BwZWQgKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHZhciBjdXJyZW50VGltZSA9IGZ4Tm93IHx8IGNyZWF0ZUZ4Tm93KCksXG5cdFx0XHRcdHJlbWFpbmluZyA9IE1hdGgubWF4KCAwLCBhbmltYXRpb24uc3RhcnRUaW1lICsgYW5pbWF0aW9uLmR1cmF0aW9uIC0gY3VycmVudFRpbWUgKSxcblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCAyLjNcblx0XHRcdFx0Ly8gQXJjaGFpYyBjcmFzaCBidWcgd29uJ3QgYWxsb3cgdXMgdG8gdXNlIGAxIC0gKCAwLjUgfHwgMCApYCAoIzEyNDk3KVxuXHRcdFx0XHR0ZW1wID0gcmVtYWluaW5nIC8gYW5pbWF0aW9uLmR1cmF0aW9uIHx8IDAsXG5cdFx0XHRcdHBlcmNlbnQgPSAxIC0gdGVtcCxcblx0XHRcdFx0aW5kZXggPSAwLFxuXHRcdFx0XHRsZW5ndGggPSBhbmltYXRpb24udHdlZW5zLmxlbmd0aDtcblxuXHRcdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aCA7IGluZGV4KysgKSB7XG5cdFx0XHRcdGFuaW1hdGlvbi50d2VlbnNbIGluZGV4I
9673F0ucnVuKCBwZXJjZW50ICk7XG5cdFx0XHR9XG5cblx0XHRcdGRlZmVycmVkLm5vdGlmeVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBwZXJjZW50LCByZW1haW5pbmcgXSk7XG5cblx0XHRcdGlmICggcGVyY2VudCA8IDEgJiYgbGVuZ3RoICkge1xuXHRcdFx0XHRyZXR1cm4gcmVtYWluaW5nO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uIF0gKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0YW5pbWF0aW9uID0gZGVmZXJyZWQucHJvbWlzZSh7XG5cdFx0XHRlbGVtOiBlbGVtLFxuXHRcdFx0cHJvcHM6IGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wZXJ0aWVzICksXG5cdFx0XHRvcHRzOiBqUXVlcnkuZXh0ZW5kKCB0cnVlLCB7IHNwZWNpYWxFYXNpbmc6IHt9IH0sIG9wdGlvbnMgKSxcblx0XHRcdG9yaWdpbmFsUHJvcGVydGllczogcHJvcGVydGllcyxcblx0XHRcdG9yaWdpbmFsT3B0aW9uczogb3B0aW9ucyxcblx0XHRcdHN0YXJ0VGltZTogZnhOb3cgfHwgY3JlYXRlRnhOb3coKSxcblx0XHRcdGR1cmF0aW9uOiBvcHRpb25zLmR1cmF0aW9uLFxuXHRcdFx0dHdlZW5zOiBbXSxcblx0XHRcdGNyZWF0ZVR3ZWVuOiBmdW5jdGlvbiggcHJvcCwgZW5kICkge1xuXHRcdFx0XHR2YXIgdHdlZW4gPSBqUXVlcnkuVHdlZW4oIGVsZW0sIGFuaW1hdGlvbi5vcHRzLCBwcm9wLCBlbmQsXG5cdFx0XHRcdFx0XHRhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nWyBwcm9wIF0gfHwgYW5pbWF0aW9uLm9wdHMuZWFzaW5nICk7XG5cdFx0XHRcdGFuaW1hdGlvbi50d2VlbnMucHVzaCggdHdlZW4gKTtcblx0XHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdFx0fSxcblx0XHRcdHN0b3A6IGZ1bmN0aW9uKCBnb3RvRW5kICkge1xuXHRcdFx0XHR2YXIgaW5kZXggPSAwLFxuXHRcdFx0XHRcdC8vIElmIHdlIGFyZSBnb2luZyB0byB0aGUgZW5kLCB3ZSB3YW50IHRvIHJ1biBhbGwgdGhlIHR3ZWVuc1xuXHRcdFx0XHRcdC8vIG90aGVyd2lzZSB3ZSBza2lwIHRoaXMgcGFydFxuXHRcdFx0XHRcdGxlbmd0aCA9IGdvdG9FbmQgPyBhbmltYXRpb24udHdlZW5zLmxlbmd0aCA6IDA7XG5cdFx0XHRcdGlmICggc3RvcHBlZCApIHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXHRcdFx0XHRzdG9wcGVkID0gdHJ1ZTtcblx0XHRcdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aCA7IGluZGV4KysgKSB7XG5cdFx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIDEgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFJlc29sdmUgd2hlbiB3ZSBwbGF5ZWQgdGhlIGxhc3QgZnJhbWU7IG90aGVyd2lzZSwgcmVqZWN0XG5cdFx0XHRcdGlmICggZ290b0VuZCApIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQgXSApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRlZmVycmVkLnJlamVjdFdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH1cblx0XHR9KSxcblx0XHRwcm9wcyA9IGFuaW1hdGlvbi5wcm9wcztcblxuXHRwcm9wRmlsdGVyKCBwcm9wcywgYW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZyApO1xuXG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGggOyBpbmRleCsrICkge1xuXHRcdHJlc3VsdCA9IGFuaW1hdGlvblByZWZpbHRlcnNbIGluZGV4IF0uY2FsbCggYW5pbWF0aW9uLCBlbGVtLCBwcm9wcywgYW5pbWF0aW9uLm9wdHMgKTtcblx0XHRpZiAoIHJlc3VsdCApIHtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXHR9XG5cblx0alF1ZXJ5Lm1hcCggcHJvcHMsIGNyZWF0ZVR3ZWVuLCBhbmltYXRpb24gKTtcblxuXHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBhbmltYXRpb24ub3B0cy5zdGFydCApICkge1xuXHRcdGFuaW1hdGlvbi5vcHRzLnN0YXJ0LmNhbGwoIGVsZW0sIGFuaW1hdGlvbiApO1xuXHR9XG5cblx0alF1ZXJ5LmZ4LnRpbWVyKFxuXHRcdGpRdWVyeS5leHRlbmQoIHRpY2ssIHtcblx0XHRcdGVsZW06IGVsZW0sXG5cdFx0XHRhbmltOiBhbmltYXRpb24sXG5cdFx0XHRxdWV1ZTogYW5pbWF0aW9uLm9wdHMucXVldWVcblx0XHR9KVxuXHQpO1xuXG5cdC8vIGF0dGFjaCBjYWxsYmFja3MgZnJvbSBvcHRpb25zXG5cdHJldHVybiBhbmltYXRpb24ucHJvZ3Jlc3MoIGFuaW1hdGlvbi5vcHRzLnByb2dyZXNzIClcblx0XHQuZG9uZSggYW5pbWF0aW9uLm9wdHMuZG9uZSwgYW5pbWF0aW9uLm9wdHMuY29tcGxldGUgKVxuXHRcdC5mYWlsKCBhbmltYXRpb24ub3B0cy5mYWlsIClcblx0XHQuYWx3YXlzKCBhbmltYXRpb24ub3B0cy5hbHdheXMgKTtcbn1cblxualF1ZXJ5LkFuaW1hdGlvbiA9IGpRdWVyeS5leHRlbmQoIEFuaW1hdGlvbiwge1xuXG5cdHR3ZWVuZXI6IGZ1bmN0aW9uKCBwcm9wcywgY2FsbGJhY2sgKSB7XG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcHJvcHMgKSApIHtcblx0XHRcdGNhbGxiYWNrID0gcHJvcHM7XG5cdFx0XHRwcm9wcyA9IFsgXCIqXCIgXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cHJvcHMgPSBwcm9wcy5zcGxpdChcIiBcIik7XG5cdFx0fVxuXG5cdFx0dmFyIHByb3AsXG5cdFx0XHRpbmRleCA9IDAsXG5cdFx0XHRsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cblx0XHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoIDsgaW5kZXgrKyApIHtcblx0XHRcdHByb3AgPSBwcm9wc1sgaW5kZXggXTtcblx0XHRcdHR3ZWVuZXJzWyBwcm9wIF0gPSB0d2VlbmVyc1sgcHJvcCBdIHx8IFtdO1xuXHRcdFx0dHdlZW5lcnNbIHByb3AgXS51bnNoaWZ0KCBjYWxsYmFjayApO1xuXHRcdH1cblx0fSxcblxuXHRwcmVmaWx0ZXI6IGZ1bmN0aW9uKCBjYWxsYmFjaywgcHJlcGVuZCApIHtcblx0XHRpZiAoIHByZXBlbmQgKSB7XG5cdFx0XHRhbmltYXRpb25QcmVmaWx0ZXJzLnVuc2hpZnQoIGNhbGxiYWNrICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFuaW1hdGlvblByZWZpbHRlcnMucHVzaCggY2FsbGJhY2sgKTtcblx0XHR9XG5cdH1cbn0pO1xuXG5qUXVlcnkuc3BlZWQgPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgZm4gKSB7XG5cdHZhciBvcHQgPSBzcGVlZCAmJiB0eXBlb2Ygc3BlZWQgPT09IFwib2JqZWN0XCIgPyBqUXVlcnkuZXh0ZW5kKCB7fSwgc3BlZWQgKSA6IHtcblx0XHRjb21wbGV0ZTogZm4gfHwgIWZuICYmIGVhc2luZyB8fFxuXHRcdFx0alF1ZXJ5LmlzRnVuY3Rpb24oIHNwZWVkICkgJiYgc3BlZWQsXG5cdFx0ZHVyYXRpb246IHNwZWVkLFxuXHRcdGVhc2luZzogZm4gJiYgZWFzaW5nIHx8IGVhc2luZyAmJiAhalF1ZXJ5LmlzRnVuY3Rpb24oIGVhc2luZyApICYmIGVhc2luZ1xuXHR9O1xuXG5cdG9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5vZmYgPyAwIDogdHlwZW9mIG9wdC5kdXJhdGlvbiA9PT0gXCJudW1iZXJcIiA/IG9wdC5kdXJhdGlvbiA6XG5cdFx0b3B0LmR1cmF0aW9uIGluIGpRdWVyeS5meC5zcGVlZHMgPyBqUXVlcnkuZnguc3BlZWRzWyBvcHQuZHVyYXRpb24gXSA6IGpRdWVyeS5meC5zcGVlZHMuX2RlZmF1bHQ7XG5cblx0Ly8gTm9ybWFsaXplIG9wdC5xdWV1ZSAtIHRydWUvdW5kZWZpbmVkL251bGwgLT4gXCJmeFwiXG5cdGlmICggb3B0LnF1ZXVlID09IG51bGwgfHwgb3B0LnF1ZXVlID09PSB0cnVlICkge1xuXHRcdG9wdC5xdWV1ZSA9IFwiZnhcIjtcblx0fVxuXG5cdC8vIFF1ZXVlaW5nXG5cdG9wdC5vbGQgPSBvcHQuY29tcGxldGU7XG5cblx0b3B0LmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0Lm9sZCApICkge1xuXHRcdFx0b3B0Lm9sZC5jYWxsKCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHQucXVldWUgKSB7XG5cdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgb3B0LnF1ZXVlICk7XG5cdFx0fVxuXHR9O1xuXG5cdHJldHVybi
9673BvcHQ7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0ZmFkZVRvOiBmdW5jdGlvbiggc3BlZWQsIHRvLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXG5cdFx0Ly8gU2hvdyBhbnkgaGlkZGVuIGVsZW1lbnRzIGFmdGVyIHNldHRpbmcgb3BhY2l0eSB0byAwXG5cdFx0cmV0dXJuIHRoaXMuZmlsdGVyKCBpc0hpZGRlbiApLmNzcyggXCJvcGFjaXR5XCIsIDAgKS5zaG93KClcblxuXHRcdFx0Ly8gQW5pbWF0ZSB0byB0aGUgdmFsdWUgc3BlY2lmaWVkXG5cdFx0XHQuZW5kKCkuYW5pbWF0ZSh7IG9wYWNpdHk6IHRvIH0sIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH0sXG5cdGFuaW1hdGU6IGZ1bmN0aW9uKCBwcm9wLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHR2YXIgZW1wdHkgPSBqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcCApLFxuXHRcdFx0b3B0YWxsID0galF1ZXJ5LnNwZWVkKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApLFxuXHRcdFx0ZG9BbmltYXRpb24gPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0Ly8gT3BlcmF0ZSBvbiBhIGNvcHkgb2YgcHJvcCBzbyBwZXItcHJvcGVydHkgZWFzaW5nIHdvbid0IGJlIGxvc3Rcblx0XHRcdFx0dmFyIGFuaW0gPSBBbmltYXRpb24oIHRoaXMsIGpRdWVyeS5leHRlbmQoIHt9LCBwcm9wICksIG9wdGFsbCApO1xuXG5cdFx0XHRcdC8vIEVtcHR5IGFuaW1hdGlvbnMsIG9yIGZpbmlzaGluZyByZXNvbHZlcyBpbW1lZGlhdGVseVxuXHRcdFx0XHRpZiAoIGVtcHR5IHx8IGRhdGFfcHJpdi5nZXQoIHRoaXMsIFwiZmluaXNoXCIgKSApIHtcblx0XHRcdFx0XHRhbmltLnN0b3AoIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdGRvQW5pbWF0aW9uLmZpbmlzaCA9IGRvQW5pbWF0aW9uO1xuXG5cdFx0cmV0dXJuIGVtcHR5IHx8IG9wdGFsbC5xdWV1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0dGhpcy5lYWNoKCBkb0FuaW1hdGlvbiApIDpcblx0XHRcdHRoaXMucXVldWUoIG9wdGFsbC5xdWV1ZSwgZG9BbmltYXRpb24gKTtcblx0fSxcblx0c3RvcDogZnVuY3Rpb24oIHR5cGUsIGNsZWFyUXVldWUsIGdvdG9FbmQgKSB7XG5cdFx0dmFyIHN0b3BRdWV1ZSA9IGZ1bmN0aW9uKCBob29rcyApIHtcblx0XHRcdHZhciBzdG9wID0gaG9va3Muc3RvcDtcblx0XHRcdGRlbGV0ZSBob29rcy5zdG9wO1xuXHRcdFx0c3RvcCggZ290b0VuZCApO1xuXHRcdH07XG5cblx0XHRpZiAoIHR5cGVvZiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0Z290b0VuZCA9IGNsZWFyUXVldWU7XG5cdFx0XHRjbGVhclF1ZXVlID0gdHlwZTtcblx0XHRcdHR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICggY2xlYXJRdWV1ZSAmJiB0eXBlICE9PSBmYWxzZSApIHtcblx0XHRcdHRoaXMucXVldWUoIHR5cGUgfHwgXCJmeFwiLCBbXSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgZGVxdWV1ZSA9IHRydWUsXG5cdFx0XHRcdGluZGV4ID0gdHlwZSAhPSBudWxsICYmIHR5cGUgKyBcInF1ZXVlSG9va3NcIixcblx0XHRcdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycyxcblx0XHRcdFx0ZGF0YSA9IGRhdGFfcHJpdi5nZXQoIHRoaXMgKTtcblxuXHRcdFx0aWYgKCBpbmRleCApIHtcblx0XHRcdFx0aWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCApIHtcblx0XHRcdFx0XHRzdG9wUXVldWUoIGRhdGFbIGluZGV4IF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9yICggaW5kZXggaW4gZGF0YSApIHtcblx0XHRcdFx0XHRpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICYmIHJydW4udGVzdCggaW5kZXggKSApIHtcblx0XHRcdFx0XHRcdHN0b3BRdWV1ZSggZGF0YVsgaW5kZXggXSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkge1xuXHRcdFx0XHRpZiAoIHRpbWVyc1sgaW5kZXggXS5lbGVtID09PSB0aGlzICYmICh0eXBlID09IG51bGwgfHwgdGltZXJzWyBpbmRleCBdLnF1ZXVlID09PSB0eXBlKSApIHtcblx0XHRcdFx0XHR0aW1lcnNbIGluZGV4IF0uYW5pbS5zdG9wKCBnb3RvRW5kICk7XG5cdFx0XHRcdFx0ZGVxdWV1ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdHRpbWVycy5zcGxpY2UoIGluZGV4LCAxICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RhcnQgdGhlIG5leHQgaW4gdGhlIHF1ZXVlIGlmIHRoZSBsYXN0IHN0ZXAgd2Fzbid0IGZvcmNlZC5cblx0XHRcdC8vIFRpbWVycyBjdXJyZW50bHkgd2lsbCBjYWxsIHRoZWlyIGNvbXBsZXRlIGNhbGxiYWNrcywgd2hpY2hcblx0XHRcdC8vIHdpbGwgZGVxdWV1ZSBidXQgb25seSBpZiB0aGV5IHdlcmUgZ290b0VuZC5cblx0XHRcdGlmICggZGVxdWV1ZSB8fCAhZ290b0VuZCApIHtcblx0XHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblx0ZmluaXNoOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRpZiAoIHR5cGUgIT09IGZhbHNlICkge1xuXHRcdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGluZGV4LFxuXHRcdFx0XHRkYXRhID0gZGF0YV9wcml2LmdldCggdGhpcyApLFxuXHRcdFx0XHRxdWV1ZSA9IGRhdGFbIHR5cGUgKyBcInF1ZXVlXCIgXSxcblx0XHRcdFx0aG9va3MgPSBkYXRhWyB0eXBlICsgXCJxdWV1ZUhvb2tzXCIgXSxcblx0XHRcdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycyxcblx0XHRcdFx0bGVuZ3RoID0gcXVldWUgPyBxdWV1ZS5sZW5ndGggOiAwO1xuXG5cdFx0XHQvLyBFbmFibGUgZmluaXNoaW5nIGZsYWcgb24gcHJpdmF0ZSBkYXRhXG5cdFx0XHRkYXRhLmZpbmlzaCA9IHRydWU7XG5cblx0XHRcdC8vIEVtcHR5IHRoZSBxdWV1ZSBmaXJzdFxuXHRcdFx0alF1ZXJ5LnF1ZXVlKCB0aGlzLCB0eXBlLCBbXSApO1xuXG5cdFx0XHRpZiAoIGhvb2tzICYmIGhvb2tzLnN0b3AgKSB7XG5cdFx0XHRcdGhvb2tzLnN0b3AuY2FsbCggdGhpcywgdHJ1ZSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBMb29rIGZvciBhbnkgYWN0aXZlIGFuaW1hdGlvbnMsIGFuZCBmaW5pc2ggdGhlbVxuXHRcdFx0Zm9yICggaW5kZXggPSB0aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHtcblx0XHRcdFx0aWYgKCB0aW1lcnNbIGluZGV4I
9673F0uZWxlbSA9PT0gdGhpcyAmJiB0aW1lcnNbIGluZGV4IF0ucXVldWUgPT09IHR5cGUgKSB7XG5cdFx0XHRcdFx0dGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggdHJ1ZSApO1xuXHRcdFx0XHRcdHRpbWVycy5zcGxpY2UoIGluZGV4LCAxICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gTG9vayBmb3IgYW55IGFuaW1hdGlvbnMgaW4gdGhlIG9sZCBxdWV1ZSBhbmQgZmluaXNoIHRoZW1cblx0XHRcdGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRcdGlmICggcXVldWVbIGluZGV4IF0gJiYgcXVldWVbIGluZGV4IF0uZmluaXNoICkge1xuXHRcdFx0XHRcdHF1ZXVlWyBpbmRleCBdLmZpbmlzaC5jYWxsKCB0aGlzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gVHVybiBvZmYgZmluaXNoaW5nIGZsYWdcblx0XHRcdGRlbGV0ZSBkYXRhLmZpbmlzaDtcblx0XHR9KTtcblx0fVxufSk7XG5cbmpRdWVyeS5lYWNoKFsgXCJ0b2dnbGVcIiwgXCJzaG93XCIsIFwiaGlkZVwiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHR2YXIgY3NzRm4gPSBqUXVlcnkuZm5bIG5hbWUgXTtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHNwZWVkID09IG51bGwgfHwgdHlwZW9mIHNwZWVkID09PSBcImJvb2xlYW5cIiA/XG5cdFx0XHRjc3NGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICkgOlxuXHRcdFx0dGhpcy5hbmltYXRlKCBnZW5GeCggbmFtZSwgdHJ1ZSApLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApO1xuXHR9O1xufSk7XG5cbi8vIEdlbmVyYXRlIHNob3J0Y3V0cyBmb3IgY3VzdG9tIGFuaW1hdGlvbnNcbmpRdWVyeS5lYWNoKHtcblx0c2xpZGVEb3duOiBnZW5GeChcInNob3dcIiksXG5cdHNsaWRlVXA6IGdlbkZ4KFwiaGlkZVwiKSxcblx0c2xpZGVUb2dnbGU6IGdlbkZ4KFwidG9nZ2xlXCIpLFxuXHRmYWRlSW46IHsgb3BhY2l0eTogXCJzaG93XCIgfSxcblx0ZmFkZU91dDogeyBvcGFjaXR5OiBcImhpZGVcIiB9LFxuXHRmYWRlVG9nZ2xlOiB7IG9wYWNpdHk6IFwidG9nZ2xlXCIgfVxufSwgZnVuY3Rpb24oIG5hbWUsIHByb3BzICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gdGhpcy5hbmltYXRlKCBwcm9wcywgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTtcblx0fTtcbn0pO1xuXG5qUXVlcnkudGltZXJzID0gW107XG5qUXVlcnkuZngudGljayA9IGZ1bmN0aW9uKCkge1xuXHR2YXIgdGltZXIsXG5cdFx0aSA9IDAsXG5cdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycztcblxuXHRmeE5vdyA9IGpRdWVyeS5ub3coKTtcblxuXHRmb3IgKCA7IGkgPCB0aW1lcnMubGVuZ3RoOyBpKysgKSB7XG5cdFx0dGltZXIgPSB0aW1lcnNbIGkgXTtcblx0XHQvLyBDaGVja3MgdGhlIHRpbWVyIGhhcyBub3QgYWxyZWFkeSBiZWVuIHJlbW92ZWRcblx0XHRpZiAoICF0aW1lcigpICYmIHRpbWVyc1sgaSBdID09PSB0aW1lciApIHtcblx0XHRcdHRpbWVycy5zcGxpY2UoIGktLSwgMSApO1xuXHRcdH1cblx0fVxuXG5cdGlmICggIXRpbWVycy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5LmZ4LnN0b3AoKTtcblx0fVxuXHRmeE5vdyA9IHVuZGVmaW5lZDtcbn07XG5cbmpRdWVyeS5meC50aW1lciA9IGZ1bmN0aW9uKCB0aW1lciApIHtcblx0alF1ZXJ5LnRpbWVycy5wdXNoKCB0aW1lciApO1xuXHRpZiAoIHRpbWVyKCkgKSB7XG5cdFx0alF1ZXJ5LmZ4LnN0YXJ0KCk7XG5cdH0gZWxzZSB7XG5cdFx0alF1ZXJ5LnRpbWVycy5wb3AoKTtcblx0fVxufTtcblxualF1ZXJ5LmZ4LmludGVydmFsID0gMTM7XG5cbmpRdWVyeS5meC5zdGFydCA9IGZ1bmN0aW9uKCkge1xuXHRpZiAoICF0aW1lcklkICkge1xuXHRcdHRpbWVySWQgPSBzZXRJbnRlcnZhbCggalF1ZXJ5LmZ4LnRpY2ssIGpRdWVyeS5meC5pbnRlcnZhbCApO1xuXHR9XG59O1xuXG5qUXVlcnkuZnguc3RvcCA9IGZ1bmN0aW9uKCkge1xuXHRjbGVhckludGVydmFsKCB0aW1lcklkICk7XG5cdHRpbWVySWQgPSBudWxsO1xufTtcblxualF1ZXJ5LmZ4LnNwZWVkcyA9IHtcblx0c2xvdzogNjAwLFxuXHRmYXN0OiAyMDAsXG5cdC8vIERlZmF1bHQgc3BlZWRcblx0X2RlZmF1bHQ6IDQwMFxufTtcblxuXG4vLyBCYXNlZCBvZmYgb2YgdGhlIHBsdWdpbiBieSBDbGludCBIZWxmZXJzLCB3aXRoIHBlcm1pc3Npb24uXG4vLyBodHRwOi8vYmxpbmRzaWduYWxzLmNvbS9pbmRleC5waHAvMjAwOS8wNy9qcXVlcnktZGVsYXkvXG5qUXVlcnkuZm4uZGVsYXkgPSBmdW5jdGlvbiggdGltZSwgdHlwZSApIHtcblx0dGltZSA9IGpRdWVyeS5meCA/IGpRdWVyeS5meC5zcGVlZHNbIHRpbWUgXSB8fCB0aW1lIDogdGltZTtcblx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlLCBmdW5jdGlvbiggbmV4dCwgaG9va3MgKSB7XG5cdFx0dmFyIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCBuZXh0LCB0aW1lICk7XG5cdFx0aG9va3Muc3RvcCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y2xlYXJUaW1lb3V0KCB0aW1lb3V0ICk7XG5cdFx0fTtcblx0fSk7XG59O1xuXG5cbihmdW5jdGlvbigpIHtcblx0dmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJpbnB1dFwiICksXG5cdFx0c2VsZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJzZWxlY3RcIiApLFxuXHRcdG9wdCA9IHNlbGVjdC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJvcHRpb25cIiApICk7XG5cblx0aW5wdXQudHlwZSA9IFwiY2hlY2tib3hcIjtcblxuXHQvLyBTdXBwb3J0OiBpT1M8PTUuMSwgQW5kcm9pZDw9NC4yK1xuXHQvLyBEZWZhdWx0IHZhbHVlIGZvciBhIGNoZWNrYm94IHNob3VsZCBiZSBcIm9uXCJcblx0c3VwcG9ydC5jaGVja09uID0gaW5wdXQudmFsdWUgIT09IFwiXCI7XG5cblx0Ly8gU3VwcG9ydDogSUU8PTExK1xuXHQvLyBNdXN0IGFjY2VzcyBzZWxlY3RlZEluZGV4IHRvIG1ha2UgZGVmYXVsdCBvcHRpb25zIHNlbGVjdFxuXHRzdXBwb3J0Lm9wdFNlbGVjdGVkID0gb3B0LnNlbGVjdGVkO1xuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQ8PTIuM1xuXHQvLyBPcHRpb25zIGluc2lkZSBkaXNhYmxlZCBzZWxlY3RzIGFyZSBpbmNvcnJlY3RseSBtYXJrZWQgYXMgZGlzYWJsZWRcblx0c2VsZWN0LmRpc2FibGVkID0gdHJ1ZTtcblx0c3VwcG9ydC5vcHREaXNhYmxlZCA9ICFvcHQuZGlzYWJsZWQ7XG5cblx0Ly8gU3VwcG9ydDogSUU8PTExK1xuXHQvLyBBbiBpbnB1dCBsb3NlcyBpdHMgdmFsdWUgYWZ0ZXIgYmVjb21pbmcgYSByYWRpb1xuXHRpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApO1xuXHRpbnB1dC52YWx1ZSA9IFwidFwiO1xuXHRpbnB1dC50eXBlID0gXCJyYWR
9673pb1wiO1xuXHRzdXBwb3J0LnJhZGlvVmFsdWUgPSBpbnB1dC52YWx1ZSA9PT0gXCJ0XCI7XG59KSgpO1xuXG5cbnZhciBub2RlSG9vaywgYm9vbEhvb2ssXG5cdGF0dHJIYW5kbGUgPSBqUXVlcnkuZXhwci5hdHRySGFuZGxlO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0YXR0cjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5hdHRyLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fSxcblxuXHRyZW1vdmVBdHRyOiBmdW5jdGlvbiggbmFtZSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIHRoaXMsIG5hbWUgKTtcblx0XHR9KTtcblx0fVxufSk7XG5cbmpRdWVyeS5leHRlbmQoe1xuXHRhdHRyOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0dmFyIGhvb2tzLCByZXQsXG5cdFx0XHRuVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG5cblx0XHQvLyBkb24ndCBnZXQvc2V0IGF0dHJpYnV0ZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzXG5cdFx0aWYgKCAhZWxlbSB8fCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBGYWxsYmFjayB0byBwcm9wIHdoZW4gYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZFxuXHRcdGlmICggdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlID09PSBzdHJ1bmRlZmluZWQgKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LnByb3AoIGVsZW0sIG5hbWUsIHZhbHVlICk7XG5cdFx0fVxuXG5cdFx0Ly8gQWxsIGF0dHJpYnV0ZXMgYXJlIGxvd2VyY2FzZVxuXHRcdC8vIEdyYWIgbmVjZXNzYXJ5IGhvb2sgaWYgb25lIGlzIGRlZmluZWRcblx0XHRpZiAoIG5UeXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHtcblx0XHRcdG5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5hdHRySG9va3NbIG5hbWUgXSB8fFxuXHRcdFx0XHQoIGpRdWVyeS5leHByLm1hdGNoLmJvb2wudGVzdCggbmFtZSApID8gYm9vbEhvb2sgOiBub2RlSG9vayApO1xuXHRcdH1cblxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gbnVsbCApIHtcblx0XHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaG9va3MgJiYgXCJzZXRcIiBpbiBob29rcyAmJiAocmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApKSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgdmFsdWUgKyBcIlwiICk7XG5cdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHRcdH1cblxuXHRcdH0gZWxzZSBpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApKSAhPT0gbnVsbCApIHtcblx0XHRcdHJldHVybiByZXQ7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0ID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgbmFtZSApO1xuXG5cdFx0XHQvLyBOb24tZXhpc3RlbnQgYXR0cmlidXRlcyByZXR1cm4gbnVsbCwgd2Ugbm9ybWFsaXplIHRvIHVuZGVmaW5lZFxuXHRcdFx0cmV0dXJuIHJldCA9PSBudWxsID9cblx0XHRcdFx0dW5kZWZpbmVkIDpcblx0XHRcdFx0cmV0O1xuXHRcdH1cblx0fSxcblxuXHRyZW1vdmVBdHRyOiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0dmFyIG5hbWUsIHByb3BOYW1lLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRhdHRyTmFtZXMgPSB2YWx1ZSAmJiB2YWx1ZS5tYXRjaCggcm5vdHdoaXRlICk7XG5cblx0XHRpZiAoIGF0dHJOYW1lcyAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0d2hpbGUgKCAobmFtZSA9IGF0dHJOYW1lc1tpKytdKSApIHtcblx0XHRcdFx0cHJvcE5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7XG5cblx0XHRcdFx0Ly8gQm9vbGVhbiBhdHRyaWJ1dGVzIGdldCBzcGVjaWFsIHRyZWF0bWVudCAoIzEwODcwKVxuXHRcdFx0XHRpZiAoIGpRdWVyeS5leHByLm1hdGNoLmJvb2wudGVzdCggbmFtZSApICkge1xuXHRcdFx0XHRcdC8vIFNldCBjb3JyZXNwb25kaW5nIHByb3BlcnR5IHRvIGZhbHNlXG5cdFx0XHRcdFx0ZWxlbVsgcHJvcE5hbWUgXSA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZWxlbS5yZW1vdmVBdHRyaWJ1dGUoIG5hbWUgKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0YXR0ckhvb2tzOiB7XG5cdFx0dHlwZToge1xuXHRcdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0XHRcdGlmICggIXN1cHBvcnQucmFkaW9WYWx1ZSAmJiB2YWx1ZSA9PT0gXCJyYWRpb1wiICYmXG5cdFx0XHRcdFx0alF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCBcImlucHV0XCIgKSApIHtcblx0XHRcdFx0XHR2YXIgdmFsID0gZWxlbS52YWx1ZTtcblx0XHRcdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIHZhbHVlICk7XG5cdFx0XHRcdFx0aWYgKCB2YWwgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLnZhbHVlID0gdmFsO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn0pO1xuXG4vLyBIb29rcyBmb3IgYm9vbGVhbiBhdHRyaWJ1dGVzXG5ib29sSG9vayA9IHtcblx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIG5hbWUgKSB7XG5cdFx0aWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7XG5cdFx0XHQvLyBSZW1vdmUgYm9vbGVhbiBhdHRyaWJ1dGVzIHdoZW4gc2V0IHRvIGZhbHNlXG5cdFx0XHRqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgbmFtZSApO1xuXHRcdH1cblx0XHRyZXR1cm4gbmFtZTtcblx0fVxufTtcbmpRdWVyeS5lYWNoKCBqUXVlcnkuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCggL1xcdysvZyApLCBmdW5jdGlvbiggaSwgbmFtZSApIHtcblx0dmFyIGdldHRlciA9IGF0dHJIYW5kbGVbIG5hbWUgXSB8fCBqUXVlcnkuZmluZC5hdHRyO1xuXG5cdGF0dHJIYW5kbGVbIG5hbWUgXSA9IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHR2YXIgcmV0LCBoYW5kbGU7XG5cdFx0aWYgKCAhaXNYTUwgKSB7XG5cdFx0XHQvLyBBdm9pZCBhbiBpbmZpbml0ZSBsb29wIGJ5IHRlbXBvcmFyaWx5IHJlbW92aW5nIHRoaXMgZnVuY3Rpb24gZnJvbSB0aGUgZ2V0dGVyXG5cdFx0XHRoYW5kbGUgPSBhdHRySGFuZGxlWyBuYW1lIF0
96737XG5cdFx0XHRhdHRySGFuZGxlWyBuYW1lIF0gPSByZXQ7XG5cdFx0XHRyZXQgPSBnZXR0ZXIoIGVsZW0sIG5hbWUsIGlzWE1MICkgIT0gbnVsbCA/XG5cdFx0XHRcdG5hbWUudG9Mb3dlckNhc2UoKSA6XG5cdFx0XHRcdG51bGw7XG5cdFx0XHRhdHRySGFuZGxlWyBuYW1lIF0gPSBoYW5kbGU7XG5cdFx0fVxuXHRcdHJldHVybiByZXQ7XG5cdH07XG59KTtcblxuXG5cblxudmFyIHJmb2N1c2FibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0cHJvcDogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGpRdWVyeS5wcm9wLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fSxcblxuXHRyZW1vdmVQcm9wOiBmdW5jdGlvbiggbmFtZSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0ZGVsZXRlIHRoaXNbIGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZSBdO1xuXHRcdH0pO1xuXHR9XG59KTtcblxualF1ZXJ5LmV4dGVuZCh7XG5cdHByb3BGaXg6IHtcblx0XHRcImZvclwiOiBcImh0bWxGb3JcIixcblx0XHRcImNsYXNzXCI6IFwiY2xhc3NOYW1lXCJcblx0fSxcblxuXHRwcm9wOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0dmFyIHJldCwgaG9va3MsIG5vdHhtbCxcblx0XHRcdG5UeXBlID0gZWxlbS5ub2RlVHlwZTtcblxuXHRcdC8vIERvbid0IGdldC9zZXQgcHJvcGVydGllcyBvbiB0ZXh0LCBjb21tZW50IGFuZCBhdHRyaWJ1dGUgbm9kZXNcblx0XHRpZiAoICFlbGVtIHx8IG5UeXBlID09PSAzIHx8IG5UeXBlID09PSA4IHx8IG5UeXBlID09PSAyICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdG5vdHhtbCA9IG5UeXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKTtcblxuXHRcdGlmICggbm90eG1sICkge1xuXHRcdFx0Ly8gRml4IG5hbWUgYW5kIGF0dGFjaCBob29rc1xuXHRcdFx0bmFtZSA9IGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZTtcblx0XHRcdGhvb2tzID0galF1ZXJ5LnByb3BIb29rc1sgbmFtZSBdO1xuXHRcdH1cblxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHJldHVybiBob29rcyAmJiBcInNldFwiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkpICE9PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRyZXQgOlxuXHRcdFx0XHQoIGVsZW1bIG5hbWUgXSA9IHZhbHVlICk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApKSAhPT0gbnVsbCA/XG5cdFx0XHRcdHJldCA6XG5cdFx0XHRcdGVsZW1bIG5hbWUgXTtcblx0XHR9XG5cdH0sXG5cblx0cHJvcEhvb2tzOiB7XG5cdFx0dGFiSW5kZXg6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiBlbGVtLmhhc0F0dHJpYnV0ZSggXCJ0YWJpbmRleFwiICkgfHwgcmZvY3VzYWJsZS50ZXN0KCBlbGVtLm5vZGVOYW1lICkgfHwgZWxlbS5ocmVmID9cblx0XHRcdFx0XHRlbGVtLnRhYkluZGV4IDpcblx0XHRcdFx0XHQtMTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn0pO1xuXG5pZiAoICFzdXBwb3J0Lm9wdFNlbGVjdGVkICkge1xuXHRqUXVlcnkucHJvcEhvb2tzLnNlbGVjdGVkID0ge1xuXHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlO1xuXHRcdFx0aWYgKCBwYXJlbnQgJiYgcGFyZW50LnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdH07XG59XG5cbmpRdWVyeS5lYWNoKFtcblx0XCJ0YWJJbmRleFwiLFxuXHRcInJlYWRPbmx5XCIsXG5cdFwibWF4TGVuZ3RoXCIsXG5cdFwiY2VsbFNwYWNpbmdcIixcblx0XCJjZWxsUGFkZGluZ1wiLFxuXHRcInJvd1NwYW5cIixcblx0XCJjb2xTcGFuXCIsXG5cdFwidXNlTWFwXCIsXG5cdFwiZnJhbWVCb3JkZXJcIixcblx0XCJjb250ZW50RWRpdGFibGVcIlxuXSwgZnVuY3Rpb24oKSB7XG5cdGpRdWVyeS5wcm9wRml4WyB0aGlzLnRvTG93ZXJDYXNlKCkgXSA9IHRoaXM7XG59KTtcblxuXG5cblxudmFyIHJjbGFzcyA9IC9bXFx0XFxyXFxuXFxmXS9nO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0YWRkQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR2YXIgY2xhc3NlcywgZWxlbSwgY3VyLCBjbGF6eiwgaiwgZmluYWxWYWx1ZSxcblx0XHRcdHByb2NlZWQgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUsXG5cdFx0XHRpID0gMCxcblx0XHRcdGxlbiA9IHRoaXMubGVuZ3RoO1xuXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGogKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLmFkZENsYXNzKCB2YWx1ZS5jYWxsKCB0aGlzLCBqLCB0aGlzLmNsYXNzTmFtZSApICk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpZiAoIHByb2NlZWQgKSB7XG5cdFx0XHQvLyBUaGUgZGlzanVuY3Rpb24gaGVyZSBpcyBmb3IgYmV0dGVyIGNvbXByZXNzaWJpbGl0eSAoc2VlIHJlbW92ZUNsYXNzKVxuXHRcdFx0Y2xhc3NlcyA9ICggdmFsdWUgfHwgXCJcIiApLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbXTtcblxuXHRcdFx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRcdGVsZW0gPSB0aGlzWyBpIF07XG5cdFx0XHRcdGN1ciA9IGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgKCBlbGVtLmNsYXNzTmFtZSA/XG5cdFx0XHRcdFx0KCBcIiBcIiArIGVsZW0uY2xhc3NOYW1lICsgXCIgXCIgKS5yZXBsYWNlKCByY2xhc3MsIFwiIFwiICkgOlxuXHRcdFx0XHRcdFwiIFwiXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0aWYgKCBjdXIgKSB7XG5cdFx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdFx0d2hpbGUgKCAoY2xhenogPSBjbGFzc2VzW2orK10pICkge1xuXHRcdFx0XHRcdFx0aWYgKCBjdXIuaW5kZXhPZiggXCIgXCIgKyBjbGF6eiArIFwiIFwiICkgPCAwICkge1xuXHRcdFx0XHRcdFx0XHRjdXIgKz0gY2xhenogKyBcIiBcIjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBvbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLlxuXHRcdFx0XHRcdGZpbmFsVmFsdWUgPSBqUXVlcnkudHJpbSggY3VyICk7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLmNsYXNzTmFtZSAhPT0gZmluYWxWYWx1ZSApIHtcblx0XHRcdFx0XHRcdGVsZW0uY2xhc3NOYW1lID0gZmluYWxWYWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRyZW1vdmVDbGFzczogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBjbGFzc2VzLCBlbGVtLCBjdXIsIGNsYXp6LCBqLCBmaW5hbFZhbHVlLFxuXHRcdFx0cHJvY2VlZCA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDAgfHwgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsZW4gPSB0aGlzLmxlbmd0aDtcblxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCBqICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5yZW1vdmVDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgdGh
9673pcy5jbGFzc05hbWUgKSApO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGlmICggcHJvY2VlZCApIHtcblx0XHRcdGNsYXNzZXMgPSAoIHZhbHVlIHx8IFwiXCIgKS5tYXRjaCggcm5vdHdoaXRlICkgfHwgW107XG5cblx0XHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRlbGVtID0gdGhpc1sgaSBdO1xuXHRcdFx0XHQvLyBUaGlzIGV4cHJlc3Npb24gaXMgaGVyZSBmb3IgYmV0dGVyIGNvbXByZXNzaWJpbGl0eSAoc2VlIGFkZENsYXNzKVxuXHRcdFx0XHRjdXIgPSBlbGVtLm5vZGVUeXBlID09PSAxICYmICggZWxlbS5jbGFzc05hbWUgP1xuXHRcdFx0XHRcdCggXCIgXCIgKyBlbGVtLmNsYXNzTmFtZSArIFwiIFwiICkucmVwbGFjZSggcmNsYXNzLCBcIiBcIiApIDpcblx0XHRcdFx0XHRcIlwiXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0aWYgKCBjdXIgKSB7XG5cdFx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdFx0d2hpbGUgKCAoY2xhenogPSBjbGFzc2VzW2orK10pICkge1xuXHRcdFx0XHRcdFx0Ly8gUmVtb3ZlICphbGwqIGluc3RhbmNlc1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBjdXIuaW5kZXhPZiggXCIgXCIgKyBjbGF6eiArIFwiIFwiICkgPj0gMCApIHtcblx0XHRcdFx0XHRcdFx0Y3VyID0gY3VyLnJlcGxhY2UoIFwiIFwiICsgY2xhenogKyBcIiBcIiwgXCIgXCIgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLlxuXHRcdFx0XHRcdGZpbmFsVmFsdWUgPSB2YWx1ZSA/IGpRdWVyeS50cmltKCBjdXIgKSA6IFwiXCI7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLmNsYXNzTmFtZSAhPT0gZmluYWxWYWx1ZSApIHtcblx0XHRcdFx0XHRcdGVsZW0uY2xhc3NOYW1lID0gZmluYWxWYWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHR0b2dnbGVDbGFzczogZnVuY3Rpb24oIHZhbHVlLCBzdGF0ZVZhbCApIHtcblx0XHR2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcblxuXHRcdGlmICggdHlwZW9mIHN0YXRlVmFsID09PSBcImJvb2xlYW5cIiAmJiB0eXBlID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIHN0YXRlVmFsID8gdGhpcy5hZGRDbGFzcyggdmFsdWUgKSA6IHRoaXMucmVtb3ZlQ2xhc3MoIHZhbHVlICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLnRvZ2dsZUNsYXNzKCB2YWx1ZS5jYWxsKHRoaXMsIGksIHRoaXMuY2xhc3NOYW1lLCBzdGF0ZVZhbCksIHN0YXRlVmFsICk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCB0eXBlID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0XHQvLyBUb2dnbGUgaW5kaXZpZHVhbCBjbGFzcyBuYW1lc1xuXHRcdFx0XHR2YXIgY2xhc3NOYW1lLFxuXHRcdFx0XHRcdGkgPSAwLFxuXHRcdFx0XHRcdHNlbGYgPSBqUXVlcnkoIHRoaXMgKSxcblx0XHRcdFx0XHRjbGFzc05hbWVzID0gdmFsdWUubWF0Y2goIHJub3R3aGl0ZSApIHx8IFtdO1xuXG5cdFx0XHRcdHdoaWxlICggKGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkrKyBdKSApIHtcblx0XHRcdFx0XHQvLyBDaGVjayBlYWNoIGNsYXNzTmFtZSBnaXZlbiwgc3BhY2Ugc2VwYXJhdGVkIGxpc3Rcblx0XHRcdFx0XHRpZiAoIHNlbGYuaGFzQ2xhc3MoIGNsYXNzTmFtZSApICkge1xuXHRcdFx0XHRcdFx0c2VsZi5yZW1vdmVDbGFzcyggY2xhc3NOYW1lICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNlbGYuYWRkQ2xhc3MoIGNsYXNzTmFtZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHQvLyBUb2dnbGUgd2hvbGUgY2xhc3MgbmFtZVxuXHRcdFx0fSBlbHNlIGlmICggdHlwZSA9PT0gc3RydW5kZWZpbmVkIHx8IHR5cGUgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdFx0XHRpZiAoIHRoaXMuY2xhc3NOYW1lICkge1xuXHRcdFx0XHRcdC8vIHN0b3JlIGNsYXNzTmFtZSBpZiBzZXRcblx0XHRcdFx0XHRkYXRhX3ByaXYuc2V0KCB0aGlzLCBcIl9fY2xhc3NOYW1lX19cIiwgdGhpcy5jbGFzc05hbWUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIElmIHRoZSBlbGVtZW50IGhhcyBhIGNsYXNzIG5hbWUgb3IgaWYgd2UncmUgcGFzc2VkIGBmYWxzZWAsXG5cdFx0XHRcdC8vIHRoZW4gcmVtb3ZlIHRoZSB3aG9sZSBjbGFzc25hbWUgKGlmIHRoZXJlIHdhcyBvbmUsIHRoZSBhYm92ZSBzYXZlZCBpdCkuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBicmluZyBiYWNrIHdoYXRldmVyIHdhcyBwcmV2aW91c2x5IHNhdmVkIChpZiBhbnl0aGluZyksXG5cdFx0XHRcdC8vIGZhbGxpbmcgYmFjayB0byB0aGUgZW1wdHkgc3RyaW5nIGlmIG5vdGhpbmcgd2FzIHN0b3JlZC5cblx0XHRcdFx0dGhpcy5jbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZSB8fCB2YWx1ZSA9PT0gZmFsc2UgPyBcIlwiIDogZGF0YV9wcml2LmdldCggdGhpcywgXCJfX2NsYXNzTmFtZV9fXCIgKSB8fCBcIlwiO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9LFxuXG5cdGhhc0NsYXNzOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dmFyIGNsYXNzTmFtZSA9IFwiIFwiICsgc2VsZWN0b3IgKyBcIiBcIixcblx0XHRcdGkgPSAwLFxuXHRcdFx0bCA9IHRoaXMubGVuZ3RoO1xuXHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdGlmICggdGhpc1tpXS5ub2RlVHlwZSA9PT0gMSAmJiAoXCIgXCIgKyB0aGlzW2ldLmNsYXNzTmFtZSArIFwiIFwiKS5yZXBsYWNlKHJjbGFzcywgXCIgXCIpLmluZGV4T2YoIGNsYXNzTmFtZSApID49IDAgKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufSk7XG5cblxuXG5cbnZhciBycmV0dXJuID0gL1xcci9nO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0dmFsOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGhvb2tzLCByZXQsIGlzRnVuY3Rpb24sXG5cdFx0XHRlbGVtID0gdGhpc1swXTtcblxuXHRcdGlmICggIWFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHRpZiAoIGVsZW0gKSB7XG5cdFx0XHRcdGhvb2tzID0galF1ZXJ5LnZhbEhvb2tzWyBlbGVtLnR5cGUgXSB8fCBqUXVlcnkudmFsSG9va3NbIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSBdO1xuXG5cdFx0XHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAocmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBcInZhbHVlXCIgKSkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0ID0gZWxlbS52YWx1ZTtcblxuXHRcdFx0XHRyZXR1cm4gdHlwZW9mIHJldCA9PT0gXCJzdHJpbmdcIiA/XG5cdFx0XHRcdFx0Ly8gSGFuZGxlIG1vc3QgY29tbW9uIHN0cmluZyBjYXNlc1xuXHRcdFx0XHRcdHJldC5yZXBsYWNlKHJyZXR1cm4sIFwiXCIpIDpcblx0XHRcdFx0XHQvLyBIYW5kbGUgY2FzZXMgd2hlcmUgdmFsdWUgaXMgbnVsbC91bmRlZiBvciBudW1iZXJcblx0XHRcdFx0XHRyZXQgPT0gbnVsbCA/IFwiXCIgOiByZXQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpc0Z1bmN0aW9uID0galF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICk7XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0dmFyIHZhbDtcblxuXHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlICE9PSAxICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGlmICggaXNGdW5jdGlvbiApIHtcblx0XHRcdFx0dmFsID0gdmFsdWUuY2FsbCggdGhpcywgaSwgalF1ZXJ5KCB0aGlzICkudmFsKCkgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHZhbCA9IHZhbHVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBUcmVhdCBudWxsL3VuZGVmaW5lZCBhcyBcIlwiOyBjb252ZXJ0IG51bWJlcnMgdG8gc3RyaW5nXG5cdFx0XHRpZiAoIHZhbCA9PSBudWxsICkge1xuXHRcdFx0XHR2YWwgPSBcIlwiO
96731xuXG5cdFx0XHR9IGVsc2UgaWYgKCB0eXBlb2YgdmFsID09PSBcIm51bWJlclwiICkge1xuXHRcdFx0XHR2YWwgKz0gXCJcIjtcblxuXHRcdFx0fSBlbHNlIGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbCApICkge1xuXHRcdFx0XHR2YWwgPSBqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWUgPT0gbnVsbCA/IFwiXCIgOiB2YWx1ZSArIFwiXCI7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXG5cdFx0XHRob29rcyA9IGpRdWVyeS52YWxIb29rc1sgdGhpcy50eXBlIF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0Ly8gSWYgc2V0IHJldHVybnMgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8gbm9ybWFsIHNldHRpbmdcblx0XHRcdGlmICggIWhvb2tzIHx8ICEoXCJzZXRcIiBpbiBob29rcykgfHwgaG9va3Muc2V0KCB0aGlzLCB2YWwsIFwidmFsdWVcIiApID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdHRoaXMudmFsdWUgPSB2YWw7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cbn0pO1xuXG5qUXVlcnkuZXh0ZW5kKHtcblx0dmFsSG9va3M6IHtcblx0XHRvcHRpb246IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciB2YWwgPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCBcInZhbHVlXCIgKTtcblx0XHRcdFx0cmV0dXJuIHZhbCAhPSBudWxsID9cblx0XHRcdFx0XHR2YWwgOlxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFMTAtMTErXG5cdFx0XHRcdFx0Ly8gb3B0aW9uLnRleHQgdGhyb3dzIGV4Y2VwdGlvbnMgKCMxNDY4NiwgIzE0ODU4KVxuXHRcdFx0XHRcdGpRdWVyeS50cmltKCBqUXVlcnkudGV4dCggZWxlbSApICk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRzZWxlY3Q6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciB2YWx1ZSwgb3B0aW9uLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsXG5cdFx0XHRcdFx0aW5kZXggPSBlbGVtLnNlbGVjdGVkSW5kZXgsXG5cdFx0XHRcdFx0b25lID0gZWxlbS50eXBlID09PSBcInNlbGVjdC1vbmVcIiB8fCBpbmRleCA8IDAsXG5cdFx0XHRcdFx0dmFsdWVzID0gb25lID8gbnVsbCA6IFtdLFxuXHRcdFx0XHRcdG1heCA9IG9uZSA/IGluZGV4ICsgMSA6IG9wdGlvbnMubGVuZ3RoLFxuXHRcdFx0XHRcdGkgPSBpbmRleCA8IDAgP1xuXHRcdFx0XHRcdFx0bWF4IDpcblx0XHRcdFx0XHRcdG9uZSA/IGluZGV4IDogMDtcblxuXHRcdFx0XHQvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBzZWxlY3RlZCBvcHRpb25zXG5cdFx0XHRcdGZvciAoIDsgaSA8IG1heDsgaSsrICkge1xuXHRcdFx0XHRcdG9wdGlvbiA9IG9wdGlvbnNbIGkgXTtcblxuXHRcdFx0XHRcdC8vIElFNi05IGRvZXNuJ3QgdXBkYXRlIHNlbGVjdGVkIGFmdGVyIGZvcm0gcmVzZXQgKCMyNTUxKVxuXHRcdFx0XHRcdGlmICggKCBvcHRpb24uc2VsZWN0ZWQgfHwgaSA9PT0gaW5kZXggKSAmJlxuXHRcdFx0XHRcdFx0XHQvLyBEb24ndCByZXR1cm4gb3B0aW9ucyB0aGF0IGFyZSBkaXNhYmxlZCBvciBpbiBhIGRpc2FibGVkIG9wdGdyb3VwXG5cdFx0XHRcdFx0XHRcdCggc3VwcG9ydC5vcHREaXNhYmxlZCA/ICFvcHRpb24uZGlzYWJsZWQgOiBvcHRpb24uZ2V0QXR0cmlidXRlKCBcImRpc2FibGVkXCIgKSA9PT0gbnVsbCApICYmXG5cdFx0XHRcdFx0XHRcdCggIW9wdGlvbi5wYXJlbnROb2RlLmRpc2FibGVkIHx8ICFqUXVlcnkubm9kZU5hbWUoIG9wdGlvbi5wYXJlbnROb2RlLCBcIm9wdGdyb3VwXCIgKSApICkge1xuXG5cdFx0XHRcdFx0XHQvLyBHZXQgdGhlIHNwZWNpZmljIHZhbHVlIGZvciB0aGUgb3B0aW9uXG5cdFx0XHRcdFx0XHR2YWx1ZSA9IGpRdWVyeSggb3B0aW9uICkudmFsKCk7XG5cblx0XHRcdFx0XHRcdC8vIFdlIGRvbid0IG5lZWQgYW4gYXJyYXkgZm9yIG9uZSBzZWxlY3RzXG5cdFx0XHRcdFx0XHRpZiAoIG9uZSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBNdWx0aS1TZWxlY3RzIHJldHVybiBhbiBhcnJheVxuXHRcdFx0XHRcdFx0dmFsdWVzLnB1c2goIHZhbHVlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlcztcblx0XHRcdH0sXG5cblx0XHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0XHR2YXIgb3B0aW9uU2V0LCBvcHRpb24sXG5cdFx0XHRcdFx0b3B0aW9ucyA9IGVsZW0ub3B0aW9ucyxcblx0XHRcdFx0XHR2YWx1ZXMgPSBqUXVlcnkubWFrZUFycmF5KCB2YWx1ZSApLFxuXHRcdFx0XHRcdGkgPSBvcHRpb25zLmxlbmd0aDtcblxuXHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRvcHRpb24gPSBvcHRpb25zWyBpIF07XG5cdFx0XHRcdFx0aWYgKCAob3B0aW9uLnNlbGVjdGVkID0galF1ZXJ5LmluQXJyYXkoIG9wdGlvbi52YWx1ZSwgdmFsdWVzICkgPj0gMCkgKSB7XG5cdFx0XHRcdFx0XHRvcHRpb25TZXQgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEZvcmNlIGJyb3dzZXJzIHRvIGJlaGF2ZSBjb25zaXN0ZW50bHkgd2hlbiBub24tbWF0Y2hpbmcgdmFsdWUgaXMgc2V0XG5cdFx0XHRcdGlmICggIW9wdGlvblNldCApIHtcblx0XHRcdFx0XHRlbGVtLnNlbGVjdGVkSW5kZXggPSAtMTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdmFsdWVzO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufSk7XG5cbi8vIFJhZGlvcyBhbmQgY2hlY2tib3hlcyBnZXR0ZXIvc2V0dGVyXG5qUXVlcnkuZWFjaChbIFwicmFkaW9cIiwgXCJjaGVja2JveFwiIF0sIGZ1bmN0aW9uKCkge1xuXHRqUXVlcnkudmFsSG9va3NbIHRoaXMgXSA9IHtcblx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHRcdGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbHVlICkgKSB7XG5cdFx0XHRcdHJldHVybiAoIGVsZW0uY2hlY2tlZCA9IGpRdWVyeS5pbkFycmF5KCBqUXVlcnkoZWxlbSkudmFsKCksIHZhbHVlICkgPj0gMCApO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0aWYgKCAhc3VwcG9ydC5jaGVja09uICkge1xuXHRcdGpRdWVyeS52YWxIb29rc1sgdGhpcyBdLmdldCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKFwidmFsdWVcIikgPT09IG51bGwgPyBcIm9uXCIgOiBlbGVtLnZhbHVlO1xuXHRcdH07XG5cdH1cbn0pO1xuXG5cblxuXG4vLyBSZXR1cm4galF1ZXJ5IGZvciBhdHRyaWJ1dGVzLW9ubHkgaW5jbHVzaW9uXG5cblxualF1ZXJ5LmVhY2goIChcImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNrIFwiICtcblx0XCJtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBcIiArXG5cdFwiY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudVwiKS5zcGxpdChcIiBcIiksIGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXG5cdC8vIEhhbmRsZSBldmVudCBiaW5kaW5nXG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIGRhdGEsIGZuICkge1xuXHRcdHJldHVybi
9673Bhcmd1bWVudHMubGVuZ3RoID4gMCA/XG5cdFx0XHR0aGlzLm9uKCBuYW1lLCBudWxsLCBkYXRhLCBmbiApIDpcblx0XHRcdHRoaXMudHJpZ2dlciggbmFtZSApO1xuXHR9O1xufSk7XG5cbmpRdWVyeS5mbi5leHRlbmQoe1xuXHRob3ZlcjogZnVuY3Rpb24oIGZuT3ZlciwgZm5PdXQgKSB7XG5cdFx0cmV0dXJuIHRoaXMubW91c2VlbnRlciggZm5PdmVyICkubW91c2VsZWF2ZSggZm5PdXQgfHwgZm5PdmVyICk7XG5cdH0sXG5cblx0YmluZDogZnVuY3Rpb24oIHR5cGVzLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIG51bGwsIGRhdGEsIGZuICk7XG5cdH0sXG5cdHVuYmluZDogZnVuY3Rpb24oIHR5cGVzLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vZmYoIHR5cGVzLCBudWxsLCBmbiApO1xuXHR9LFxuXG5cdGRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApO1xuXHR9LFxuXHR1bmRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBmbiApIHtcblx0XHQvLyAoIG5hbWVzcGFjZSApIG9yICggc2VsZWN0b3IsIHR5cGVzIFssIGZuXSApXG5cdFx0cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyB0aGlzLm9mZiggc2VsZWN0b3IsIFwiKipcIiApIDogdGhpcy5vZmYoIHR5cGVzLCBzZWxlY3RvciB8fCBcIioqXCIsIGZuICk7XG5cdH1cbn0pO1xuXG5cbnZhciBub25jZSA9IGpRdWVyeS5ub3coKTtcblxudmFyIHJxdWVyeSA9ICgvXFw/Lyk7XG5cblxuXG4vLyBTdXBwb3J0OiBBbmRyb2lkIDIuM1xuLy8gV29ya2Fyb3VuZCBmYWlsdXJlIHRvIHN0cmluZy1jYXN0IG51bGwgaW5wdXRcbmpRdWVyeS5wYXJzZUpTT04gPSBmdW5jdGlvbiggZGF0YSApIHtcblx0cmV0dXJuIEpTT04ucGFyc2UoIGRhdGEgKyBcIlwiICk7XG59O1xuXG5cbi8vIENyb3NzLWJyb3dzZXIgeG1sIHBhcnNpbmdcbmpRdWVyeS5wYXJzZVhNTCA9IGZ1bmN0aW9uKCBkYXRhICkge1xuXHR2YXIgeG1sLCB0bXA7XG5cdGlmICggIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBJRTlcblx0dHJ5IHtcblx0XHR0bXAgPSBuZXcgRE9NUGFyc2VyKCk7XG5cdFx0eG1sID0gdG1wLnBhcnNlRnJvbVN0cmluZyggZGF0YSwgXCJ0ZXh0L3htbFwiICk7XG5cdH0gY2F0Y2ggKCBlICkge1xuXHRcdHhtbCA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdGlmICggIXhtbCB8fCB4bWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIFwicGFyc2VyZXJyb3JcIiApLmxlbmd0aCApIHtcblx0XHRqUXVlcnkuZXJyb3IoIFwiSW52YWxpZCBYTUw6IFwiICsgZGF0YSApO1xuXHR9XG5cdHJldHVybiB4bWw7XG59O1xuXG5cbnZhclxuXHRyaGFzaCA9IC8jLiokLyxcblx0cnRzID0gLyhbPyZdKV89W14mXSovLFxuXHRyaGVhZGVycyA9IC9eKC4qPyk6WyBcXHRdKihbXlxcclxcbl0qKSQvbWcsXG5cdC8vICM3NjUzLCAjODEyNSwgIzgxNTI6IGxvY2FsIHByb3RvY29sIGRldGVjdGlvblxuXHRybG9jYWxQcm90b2NvbCA9IC9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLFxuXHRybm9Db250ZW50ID0gL14oPzpHRVR8SEVBRCkkLyxcblx0cnByb3RvY29sID0gL15cXC9cXC8vLFxuXHRydXJsID0gL14oW1xcdy4rLV0rOikoPzpcXC9cXC8oPzpbXlxcLz8jXSpAfCkoW15cXC8/IzpdKikoPzo6KFxcZCspfCl8KS8sXG5cblx0LyogUHJlZmlsdGVyc1xuXHQgKiAxKSBUaGV5IGFyZSB1c2VmdWwgdG8gaW50cm9kdWNlIGN1c3RvbSBkYXRhVHlwZXMgKHNlZSBhamF4L2pzb25wLmpzIGZvciBhbiBleGFtcGxlKVxuXHQgKiAyKSBUaGVzZSBhcmUgY2FsbGVkOlxuXHQgKiAgICAtIEJFRk9SRSBhc2tpbmcgZm9yIGEgdHJhbnNwb3J0XG5cdCAqICAgIC0gQUZURVIgcGFyYW0gc2VyaWFsaXphdGlvbiAocy5kYXRhIGlzIGEgc3RyaW5nIGlmIHMucHJvY2Vzc0RhdGEgaXMgdHJ1ZSlcblx0ICogMykga2V5IGlzIHRoZSBkYXRhVHlwZVxuXHQgKiA0KSB0aGUgY2F0Y2hhbGwgc3ltYm9sIFwiKlwiIGNhbiBiZSB1c2VkXG5cdCAqIDUpIGV4ZWN1dGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGNvbnRpbnVlIGRvd24gdG8gXCIqXCIgaWYgbmVlZGVkXG5cdCAqL1xuXHRwcmVmaWx0ZXJzID0ge30sXG5cblx0LyogVHJhbnNwb3J0cyBiaW5kaW5nc1xuXHQgKiAxKSBrZXkgaXMgdGhlIGRhdGFUeXBlXG5cdCAqIDIpIHRoZSBjYXRjaGFsbCBzeW1ib2wgXCIqXCIgY2FuIGJlIHVzZWRcblx0ICogMykgc2VsZWN0aW9uIHdpbGwgc3RhcnQgd2l0aCB0cmFuc3BvcnQgZGF0YVR5cGUgYW5kIFRIRU4gZ28gdG8gXCIqXCIgaWYgbmVlZGVkXG5cdCAqL1xuXHR0cmFuc3BvcnRzID0ge30sXG5cblx0Ly8gQXZvaWQgY29tbWVudC1wcm9sb2cgY2hhciBzZXF1ZW5jZSAoIzEwMDk4KTsgbXVzdCBhcHBlYXNlIGxpbnQgYW5kIGV2YWRlIGNvbXByZXNzaW9uXG5cdGFsbFR5cGVzID0gXCIqL1wiLmNvbmNhdCggXCIqXCIgKSxcblxuXHQvLyBEb2N1bWVudCBsb2NhdGlvblxuXHRhamF4TG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24uaHJlZixcblxuXHQvLyBTZWdtZW50IGxvY2F0aW9uIGludG8gcGFydHNcblx0YWpheExvY1BhcnRzID0gcnVybC5leGVjKCBhamF4TG9jYXRpb24udG9Mb3dlckNhc2UoKSApIHx8IFtdO1xuXG4vLyBCYXNlIFwiY29uc3RydWN0b3JcIiBmb3IgalF1ZXJ5LmFqYXhQcmVmaWx0ZXIgYW5kIGpRdWVyeS5hamF4VHJhbnNwb3J0XG5mdW5jdGlvbiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHN0cnVjdHVyZSApIHtcblxuXHQvLyBkYXRhVHlwZUV4cHJlc3Npb24gaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIFwiKlwiXG5cdHJldHVybiBmdW5jdGlvbiggZGF0YVR5cGVFeHByZXNzaW9uLCBmdW5jICkge1xuXG5cdFx0aWYgKCB0eXBlb2YgZGF0YVR5cGVFeHByZXNzaW9uICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0ZnVuYyA9IGRhdGFUeXBlRXhwcmVzc2lvbjtcblx0XHRcdGRhdGFUeXBlRXhwcmVzc2lvbiA9I
9673FwiKlwiO1xuXHRcdH1cblxuXHRcdHZhciBkYXRhVHlwZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0ZGF0YVR5cGVzID0gZGF0YVR5cGVFeHByZXNzaW9uLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3R3aGl0ZSApIHx8IFtdO1xuXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggZnVuYyApICkge1xuXHRcdFx0Ly8gRm9yIGVhY2ggZGF0YVR5cGUgaW4gdGhlIGRhdGFUeXBlRXhwcmVzc2lvblxuXHRcdFx0d2hpbGUgKCAoZGF0YVR5cGUgPSBkYXRhVHlwZXNbaSsrXSkgKSB7XG5cdFx0XHRcdC8vIFByZXBlbmQgaWYgcmVxdWVzdGVkXG5cdFx0XHRcdGlmICggZGF0YVR5cGVbMF0gPT09IFwiK1wiICkge1xuXHRcdFx0XHRcdGRhdGFUeXBlID0gZGF0YVR5cGUuc2xpY2UoIDEgKSB8fCBcIipcIjtcblx0XHRcdFx0XHQoc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdKS51bnNoaWZ0KCBmdW5jICk7XG5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlIGFwcGVuZFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdChzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10pLnB1c2goIGZ1bmMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cblxuLy8gQmFzZSBpbnNwZWN0aW9uIGZ1bmN0aW9uIGZvciBwcmVmaWx0ZXJzIGFuZCB0cmFuc3BvcnRzXG5mdW5jdGlvbiBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggc3RydWN0dXJlLCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICkge1xuXG5cdHZhciBpbnNwZWN0ZWQgPSB7fSxcblx0XHRzZWVraW5nVHJhbnNwb3J0ID0gKCBzdHJ1Y3R1cmUgPT09IHRyYW5zcG9ydHMgKTtcblxuXHRmdW5jdGlvbiBpbnNwZWN0KCBkYXRhVHlwZSApIHtcblx0XHR2YXIgc2VsZWN0ZWQ7XG5cdFx0aW5zcGVjdGVkWyBkYXRhVHlwZSBdID0gdHJ1ZTtcblx0XHRqUXVlcnkuZWFjaCggc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdLCBmdW5jdGlvbiggXywgcHJlZmlsdGVyT3JGYWN0b3J5ICkge1xuXHRcdFx0dmFyIGRhdGFUeXBlT3JUcmFuc3BvcnQgPSBwcmVmaWx0ZXJPckZhY3RvcnkoIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKTtcblx0XHRcdGlmICggdHlwZW9mIGRhdGFUeXBlT3JUcmFuc3BvcnQgPT09IFwic3RyaW5nXCIgJiYgIXNlZWtpbmdUcmFuc3BvcnQgJiYgIWluc3BlY3RlZFsgZGF0YVR5cGVPclRyYW5zcG9ydCBdICkge1xuXHRcdFx0XHRvcHRpb25zLmRhdGFUeXBlcy51bnNoaWZ0KCBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7XG5cdFx0XHRcdGluc3BlY3QoIGRhdGFUeXBlT3JUcmFuc3BvcnQgKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSBlbHNlIGlmICggc2Vla2luZ1RyYW5zcG9ydCApIHtcblx0XHRcdFx0cmV0dXJuICEoIHNlbGVjdGVkID0gZGF0YVR5cGVPclRyYW5zcG9ydCApO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBzZWxlY3RlZDtcblx0fVxuXG5cdHJldHVybiBpbnNwZWN0KCBvcHRpb25zLmRhdGFUeXBlc1sgMCBdICkgfHwgIWluc3BlY3RlZFsgXCIqXCIgXSAmJiBpbnNwZWN0KCBcIipcIiApO1xufVxuXG4vLyBBIHNwZWNpYWwgZXh0ZW5kIGZvciBhamF4IG9wdGlvbnNcbi8vIHRoYXQgdGFrZXMgXCJmbGF0XCIgb3B0aW9ucyAobm90IHRvIGJlIGRlZXAgZXh0ZW5kZWQpXG4vLyBGaXhlcyAjOTg4N1xuZnVuY3Rpb24gYWpheEV4dGVuZCggdGFyZ2V0LCBzcmMgKSB7XG5cdHZhciBrZXksIGRlZXAsXG5cdFx0ZmxhdE9wdGlvbnMgPSBqUXVlcnkuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zIHx8IHt9O1xuXG5cdGZvciAoIGtleSBpbiBzcmMgKSB7XG5cdFx0aWYgKCBzcmNbIGtleSBdICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHQoIGZsYXRPcHRpb25zWyBrZXkgXSA/IHRhcmdldCA6ICggZGVlcCB8fCAoZGVlcCA9IHt9KSApIClbIGtleSBdID0gc3JjWyBrZXkgXTtcblx0XHR9XG5cdH1cblx0aWYgKCBkZWVwICkge1xuXHRcdGpRdWVyeS5leHRlbmQoIHRydWUsIHRhcmdldCwgZGVlcCApO1xuXHR9XG5cblx0cmV0dXJuIHRhcmdldDtcbn1cblxuLyogSGFuZGxlcyByZXNwb25zZXMgdG8gYW4gYWpheCByZXF1ZXN0OlxuICogLSBmaW5kcyB0aGUgcmlnaHQgZGF0YVR5cGUgKG1lZGlhdGVzIGJldHdlZW4gY29udGVudC10eXBlIGFuZCBleHBlY3RlZCBkYXRhVHlwZSlcbiAqIC0gcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZVxuICovXG5mdW5jdGlvbiBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9uc2VzICkge1xuXG5cdHZhciBjdCwgdHlwZSwgZmluYWxEYXRhVHlwZSwgZmlyc3REYXRhVHlwZSxcblx0XHRjb250ZW50cyA9IHMuY29udGVudHMsXG5cdFx0ZGF0YVR5cGVzID0gcy5kYXRhVHlwZXM7XG5cblx0Ly8gUmVtb3ZlIGF1dG8gZGF0YVR5cGUgYW5kIGdldCBjb250ZW50LXR5cGUgaW4gdGhlIHByb2Nlc3Ncblx0d2hpbGUgKCBkYXRhVHlwZXNbIDAgXSA9PT0gXCIqXCIgKSB7XG5cdFx0ZGF0YVR5cGVzLnNoaWZ0KCk7XG5cdFx0aWYgKCBjdCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0Y3QgPSBzLm1pbWVUeXBlIHx8IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKFwiQ29udGVudC1UeXBlXCIpO1xuXHRcdH1cblx0fVxuXG5cdC8vIENoZWNrIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGtub3duIGNvbnRlbnQtdHlwZVxuXHRpZiAoIGN0ICkge1xuXHRcdGZvciAoIHR5cGUgaW4gY29udGVudHMgKSB7XG5cdFx0XHRpZiAoIGNvbnRlbnRzWyB0eXBlIF0gJiYgY29udGVudHNbIHR5cGUgXS50ZXN0KCBjdCApICkge1xuXHRcdFx0XHRkYXRhVHlwZXMudW5zaGlmdCggdHlwZSApO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBDaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBhIHJlc3BvbnNlIGZvciB0aGUgZXhwZWN0ZWQgZGF0YVR5cGVcblx0aWYgKCBkYXRhVHlwZXNbIDAgXSBpbiByZXNwb25zZXMgKSB7XG5cdFx0ZmluYWxEYXRhVHlwZSA9IGRhdGFUeXBlc1sgMCBdO1xuXHR9IGVsc2Uge1xuXHRcdC8vIFRyeSBjb252ZXJ0aWJsZSBkYXRhVHlwZXNcblx0XHRmb3IgKCB0eXBlIGluIHJlc3BvbnNlcyApIHtcblx0XHRcdGlmICggIWRhdGFUeXBlc1sgMCBdIHx8IHMuY29udmVydGVyc1sgdHlwZSArIFwiIFwiICsgZGF0YVR5cGVzWzBdIF0gKSB7XG5cdFx0XHRcdGZpbmFsRGF0YVR5cGUgPSB0eXBlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmICggIWZpcnN0RGF0YVR5cGUgKSB7XG5cdFx0XHRcdGZpcnN0RGF0YVR5cGUgPSB0eXBlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBPciBqdXN0IHVzZSBmaXJzdCBvbmVcblx0XHRmaW5hbERhdGFUeXBlID0gZmluYWxEYXRhVHlwZSB8fCBmaXJzdERhdGFUeXBlO1xuXHR9XG5cblx0Ly8gSWYgd2UgZm91bmQgYSBkYXRhV
9673HlwZVxuXHQvLyBXZSBhZGQgdGhlIGRhdGFUeXBlIHRvIHRoZSBsaXN0IGlmIG5lZWRlZFxuXHQvLyBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlXG5cdGlmICggZmluYWxEYXRhVHlwZSApIHtcblx0XHRpZiAoIGZpbmFsRGF0YVR5cGUgIT09IGRhdGFUeXBlc1sgMCBdICkge1xuXHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIGZpbmFsRGF0YVR5cGUgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3BvbnNlc1sgZmluYWxEYXRhVHlwZSBdO1xuXHR9XG59XG5cbi8qIENoYWluIGNvbnZlcnNpb25zIGdpdmVuIHRoZSByZXF1ZXN0IGFuZCB0aGUgb3JpZ2luYWwgcmVzcG9uc2VcbiAqIEFsc28gc2V0cyB0aGUgcmVzcG9uc2VYWFggZmllbGRzIG9uIHRoZSBqcVhIUiBpbnN0YW5jZVxuICovXG5mdW5jdGlvbiBhamF4Q29udmVydCggcywgcmVzcG9uc2UsIGpxWEhSLCBpc1N1Y2Nlc3MgKSB7XG5cdHZhciBjb252MiwgY3VycmVudCwgY29udiwgdG1wLCBwcmV2LFxuXHRcdGNvbnZlcnRlcnMgPSB7fSxcblx0XHQvLyBXb3JrIHdpdGggYSBjb3B5IG9mIGRhdGFUeXBlcyBpbiBjYXNlIHdlIG5lZWQgdG8gbW9kaWZ5IGl0IGZvciBjb252ZXJzaW9uXG5cdFx0ZGF0YVR5cGVzID0gcy5kYXRhVHlwZXMuc2xpY2UoKTtcblxuXHQvLyBDcmVhdGUgY29udmVydGVycyBtYXAgd2l0aCBsb3dlcmNhc2VkIGtleXNcblx0aWYgKCBkYXRhVHlwZXNbIDEgXSApIHtcblx0XHRmb3IgKCBjb252IGluIHMuY29udmVydGVycyApIHtcblx0XHRcdGNvbnZlcnRlcnNbIGNvbnYudG9Mb3dlckNhc2UoKSBdID0gcy5jb252ZXJ0ZXJzWyBjb252IF07XG5cdFx0fVxuXHR9XG5cblx0Y3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpO1xuXG5cdC8vIENvbnZlcnQgdG8gZWFjaCBzZXF1ZW50aWFsIGRhdGFUeXBlXG5cdHdoaWxlICggY3VycmVudCApIHtcblxuXHRcdGlmICggcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdICkge1xuXHRcdFx0anFYSFJbIHMucmVzcG9uc2VGaWVsZHNbIGN1cnJlbnQgXSBdID0gcmVzcG9uc2U7XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgdGhlIGRhdGFGaWx0ZXIgaWYgcHJvdmlkZWRcblx0XHRpZiAoICFwcmV2ICYmIGlzU3VjY2VzcyAmJiBzLmRhdGFGaWx0ZXIgKSB7XG5cdFx0XHRyZXNwb25zZSA9IHMuZGF0YUZpbHRlciggcmVzcG9uc2UsIHMuZGF0YVR5cGUgKTtcblx0XHR9XG5cblx0XHRwcmV2ID0gY3VycmVudDtcblx0XHRjdXJyZW50ID0gZGF0YVR5cGVzLnNoaWZ0KCk7XG5cblx0XHRpZiAoIGN1cnJlbnQgKSB7XG5cblx0XHQvLyBUaGVyZSdzIG9ubHkgd29yayB0byBkbyBpZiBjdXJyZW50IGRhdGFUeXBlIGlzIG5vbi1hdXRvXG5cdFx0XHRpZiAoIGN1cnJlbnQgPT09IFwiKlwiICkge1xuXG5cdFx0XHRcdGN1cnJlbnQgPSBwcmV2O1xuXG5cdFx0XHQvLyBDb252ZXJ0IHJlc3BvbnNlIGlmIHByZXYgZGF0YVR5cGUgaXMgbm9uLWF1dG8gYW5kIGRpZmZlcnMgZnJvbSBjdXJyZW50XG5cdFx0XHR9IGVsc2UgaWYgKCBwcmV2ICE9PSBcIipcIiAmJiBwcmV2ICE9PSBjdXJyZW50ICkge1xuXG5cdFx0XHRcdC8vIFNlZWsgYSBkaXJlY3QgY29udmVydGVyXG5cdFx0XHRcdGNvbnYgPSBjb252ZXJ0ZXJzWyBwcmV2ICsgXCIgXCIgKyBjdXJyZW50IF0gfHwgY29udmVydGVyc1sgXCIqIFwiICsgY3VycmVudCBdO1xuXG5cdFx0XHRcdC8vIElmIG5vbmUgZm91bmQsIHNlZWsgYSBwYWlyXG5cdFx0XHRcdGlmICggIWNvbnYgKSB7XG5cdFx0XHRcdFx0Zm9yICggY29udjIgaW4gY29udmVydGVycyApIHtcblxuXHRcdFx0XHRcdFx0Ly8gSWYgY29udjIgb3V0cHV0cyBjdXJyZW50XG5cdFx0XHRcdFx0XHR0bXAgPSBjb252Mi5zcGxpdCggXCIgXCIgKTtcblx0XHRcdFx0XHRcdGlmICggdG1wWyAxIF0gPT09IGN1cnJlbnQgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gSWYgcHJldiBjYW4gYmUgY29udmVydGVkIHRvIGFjY2VwdGVkIGlucHV0XG5cdFx0XHRcdFx0XHRcdGNvbnYgPSBjb252ZXJ0ZXJzWyBwcmV2ICsgXCIgXCIgKyB0bXBbIDAgXSBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0Y29udmVydGVyc1sgXCIqIFwiICsgdG1wWyAwIF0gXTtcblx0XHRcdFx0XHRcdFx0aWYgKCBjb252ICkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIENvbmRlbnNlIGVxdWl2YWxlbmNlIGNvbnZlcnRlcnNcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGNvbnYgPT09IHRydWUgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb252ID0gY29udmVydGVyc1sgY29udjIgXTtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIE90aGVyd2lzZSwgaW5zZXJ0IHRoZSBpbnRlcm1lZGlhdGUgZGF0YVR5cGVcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCBjb252ZXJ0ZXJzWyBjb252MiBdICE9PSB0cnVlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudCA9IHRtcFsgMCBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIHRtcFsgMSBdICk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQXBwbHkgY29udmVydGVyIChpZiBub3QgYW4gZXF1aXZhbGVuY2UpXG5cdFx0XHRcdGlmICggY29udiAhPT0gdHJ1ZSApIHtcblxuXHRcdFx0XHRcdC8vIFVubGVzcyBlcnJvcnMgYXJlIGFsbG93ZWQgdG8gYnViYmxlLCBjYXRjaCBhbmQgcmV0dXJuIHRoZW1cblx0XHRcdFx0XHRpZiAoIGNvbnYgJiYgc1sgXCJ0aHJvd3NcIiBdICkge1xuXHRcdFx0XHRcdFx0cmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoICggZSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHsgc3RhdGU6IFwicGFyc2VyZXJyb3JcIiwgZXJyb3I6IGNvbnYgPyBlIDogXCJObyBjb252ZXJzaW9uIGZyb20gXCIgKyBwcmV2ICsgXCIgdG8gXCIgKyBjdXJyZW50IH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHsgc3RhdGU6IFwic3VjY2Vzc1wiLCBkYXRhOiByZXNwb25zZSB9O1xufVxuXG5qUXVlcnkuZXh0ZW5kKHtcblxuXHQvLyBDb3VudGVyIGZvciBob2xkaW5nIHRoZSBudW1iZXIgb2YgYWN0aXZlIHF1ZXJpZXNcblx0YWN0aXZlOiAwLFxuXG5cdC8vIExhc3QtTW9kaWZpZWQgaGVhZGVyIGNhY2hlIGZvciBuZXh0IHJlcXVlc3Rcblx0bGFzdE1vZGlmaWVkOiB7fSxcblx0ZXRhZzoge30sXG5cblx0YWpheFNldHRpbmdzOiB7XG5cdFx0dXJsOiBhamF4TG9jYXRpb24sXG5cdFx0dHlwZTogXCJHRVRcIixcblx0XHRpc0xvY2FsOiBybG9jYWxQcm90b2NvbC50ZXN0KCBhamF4TG9jUGFydHNbIDEgXSApLFxuXHRcdGdsb2JhbDogdHJ1ZSxcblx0XHRwcm9jZXNzRGF0YTogdHJ1ZSxcblx0XHRhc3luYzogdHJ1ZSxcblx0XHRjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIixcblx0XHQvKlxuXHRcdHRpbWVvdXQ6IDAsXG5cdFx0ZGF0YTogbnVsbCxcblx0XHRkYXRhV
9673HlwZTogbnVsbCxcblx0XHR1c2VybmFtZTogbnVsbCxcblx0XHRwYXNzd29yZDogbnVsbCxcblx0XHRjYWNoZTogbnVsbCxcblx0XHR0aHJvd3M6IGZhbHNlLFxuXHRcdHRyYWRpdGlvbmFsOiBmYWxzZSxcblx0XHRoZWFkZXJzOiB7fSxcblx0XHQqL1xuXG5cdFx0YWNjZXB0czoge1xuXHRcdFx0XCIqXCI6IGFsbFR5cGVzLFxuXHRcdFx0dGV4dDogXCJ0ZXh0L3BsYWluXCIsXG5cdFx0XHRodG1sOiBcInRleHQvaHRtbFwiLFxuXHRcdFx0eG1sOiBcImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWxcIixcblx0XHRcdGpzb246IFwiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0XCJcblx0XHR9LFxuXG5cdFx0Y29udGVudHM6IHtcblx0XHRcdHhtbDogL3htbC8sXG5cdFx0XHRodG1sOiAvaHRtbC8sXG5cdFx0XHRqc29uOiAvanNvbi9cblx0XHR9LFxuXG5cdFx0cmVzcG9uc2VGaWVsZHM6IHtcblx0XHRcdHhtbDogXCJyZXNwb25zZVhNTFwiLFxuXHRcdFx0dGV4dDogXCJyZXNwb25zZVRleHRcIixcblx0XHRcdGpzb246IFwicmVzcG9uc2VKU09OXCJcblx0XHR9LFxuXG5cdFx0Ly8gRGF0YSBjb252ZXJ0ZXJzXG5cdFx0Ly8gS2V5cyBzZXBhcmF0ZSBzb3VyY2UgKG9yIGNhdGNoYWxsIFwiKlwiKSBhbmQgZGVzdGluYXRpb24gdHlwZXMgd2l0aCBhIHNpbmdsZSBzcGFjZVxuXHRcdGNvbnZlcnRlcnM6IHtcblxuXHRcdFx0Ly8gQ29udmVydCBhbnl0aGluZyB0byB0ZXh0XG5cdFx0XHRcIiogdGV4dFwiOiBTdHJpbmcsXG5cblx0XHRcdC8vIFRleHQgdG8gaHRtbCAodHJ1ZSA9IG5vIHRyYW5zZm9ybWF0aW9uKVxuXHRcdFx0XCJ0ZXh0IGh0bWxcIjogdHJ1ZSxcblxuXHRcdFx0Ly8gRXZhbHVhdGUgdGV4dCBhcyBhIGpzb24gZXhwcmVzc2lvblxuXHRcdFx0XCJ0ZXh0IGpzb25cIjogalF1ZXJ5LnBhcnNlSlNPTixcblxuXHRcdFx0Ly8gUGFyc2UgdGV4dCBhcyB4bWxcblx0XHRcdFwidGV4dCB4bWxcIjogalF1ZXJ5LnBhcnNlWE1MXG5cdFx0fSxcblxuXHRcdC8vIEZvciBvcHRpb25zIHRoYXQgc2hvdWxkbid0IGJlIGRlZXAgZXh0ZW5kZWQ6XG5cdFx0Ly8geW91IGNhbiBhZGQgeW91ciBvd24gY3VzdG9tIG9wdGlvbnMgaGVyZSBpZlxuXHRcdC8vIGFuZCB3aGVuIHlvdSBjcmVhdGUgb25lIHRoYXQgc2hvdWxkbid0IGJlXG5cdFx0Ly8gZGVlcCBleHRlbmRlZCAoc2VlIGFqYXhFeHRlbmQpXG5cdFx0ZmxhdE9wdGlvbnM6IHtcblx0XHRcdHVybDogdHJ1ZSxcblx0XHRcdGNvbnRleHQ6IHRydWVcblx0XHR9XG5cdH0sXG5cblx0Ly8gQ3JlYXRlcyBhIGZ1bGwgZmxlZGdlZCBzZXR0aW5ncyBvYmplY3QgaW50byB0YXJnZXRcblx0Ly8gd2l0aCBib3RoIGFqYXhTZXR0aW5ncyBhbmQgc2V0dGluZ3MgZmllbGRzLlxuXHQvLyBJZiB0YXJnZXQgaXMgb21pdHRlZCwgd3JpdGVzIGludG8gYWpheFNldHRpbmdzLlxuXHRhamF4U2V0dXA6IGZ1bmN0aW9uKCB0YXJnZXQsIHNldHRpbmdzICkge1xuXHRcdHJldHVybiBzZXR0aW5ncyA/XG5cblx0XHRcdC8vIEJ1aWxkaW5nIGEgc2V0dGluZ3Mgb2JqZWN0XG5cdFx0XHRhamF4RXh0ZW5kKCBhamF4RXh0ZW5kKCB0YXJnZXQsIGpRdWVyeS5hamF4U2V0dGluZ3MgKSwgc2V0dGluZ3MgKSA6XG5cblx0XHRcdC8vIEV4dGVuZGluZyBhamF4U2V0dGluZ3Ncblx0XHRcdGFqYXhFeHRlbmQoIGpRdWVyeS5hamF4U2V0dGluZ3MsIHRhcmdldCApO1xuXHR9LFxuXG5cdGFqYXhQcmVmaWx0ZXI6IGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycyApLFxuXHRhamF4VHJhbnNwb3J0OiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMgKSxcblxuXHQvLyBNYWluIG1ldGhvZFxuXHRhamF4OiBmdW5jdGlvbiggdXJsLCBvcHRpb25zICkge1xuXG5cdFx0Ly8gSWYgdXJsIGlzIGFuIG9iamVjdCwgc2ltdWxhdGUgcHJlLTEuNSBzaWduYXR1cmVcblx0XHRpZiAoIHR5cGVvZiB1cmwgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRvcHRpb25zID0gdXJsO1xuXHRcdFx0dXJsID0gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdC8vIEZvcmNlIG9wdGlvbnMgdG8gYmUgYW4gb2JqZWN0XG5cdFx0b3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cblx0XHR2YXIgdHJhbnNwb3J0LFxuXHRcdFx0Ly8gVVJMIHdpdGhvdXQgYW50aS1jYWNoZSBwYXJhbVxuXHRcdFx0Y2FjaGVVUkwsXG5cdFx0XHQvLyBSZXNwb25zZSBoZWFkZXJzXG5cdFx0XHRyZXNwb25zZUhlYWRlcnNTdHJpbmcsXG5cdFx0XHRyZXNwb25zZUhlYWRlcnMsXG5cdFx0XHQvLyB0aW1lb3V0IGhhbmRsZVxuXHRcdFx0dGltZW91dFRpbWVyLFxuXHRcdFx0Ly8gQ3Jvc3MtZG9tYWluIGRldGVjdGlvbiB2YXJzXG5cdFx0XHRwYXJ0cyxcblx0XHRcdC8vIFRvIGtub3cgaWYgZ2xvYmFsIGV2ZW50cyBhcmUgdG8gYmUgZGlzcGF0Y2hlZFxuXHRcdFx0ZmlyZUdsb2JhbHMsXG5cdFx0XHQvLyBMb29wIHZhcmlhYmxlXG5cdFx0XHRpLFxuXHRcdFx0Ly8gQ3JlYXRlIHRoZSBmaW5hbCBvcHRpb25zIG9iamVjdFxuXHRcdFx0cyA9IGpRdWVyeS5hamF4U2V0dXAoIHt9LCBvcHRpb25zICksXG5cdFx0XHQvLyBDYWxsYmFja3MgY29udGV4dFxuXHRcdFx0Y2FsbGJhY2tDb250ZXh0ID0gcy5jb250ZXh0IHx8IHMsXG5cdFx0XHQvLyBDb250ZXh0IGZvciBnbG9iYWwgZXZlbnRzIGlzIGNhbGxiYWNrQ29udGV4dCBpZiBpdCBpcyBhIERPTSBub2RlIG9yIGpRdWVyeSBjb2xsZWN0aW9uXG5cdFx0XHRnbG9iYWxFdmVudENvbnRleHQgPSBzLmNvbnRleHQgJiYgKCBjYWxsYmFja0NvbnRleHQubm9kZVR5cGUgfHwgY2FsbGJhY2tDb250ZXh0LmpxdWVyeSApID9cblx0XHRcdFx0alF1ZXJ5KCBjYWxsYmFja0NvbnRleHQgKSA6XG5cdFx0XHRcdGpRdWVyeS5ldmVudCxcblx0XHRcdC8vIERlZmVycmVkc1xuXHRcdFx0ZGVmZXJyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKSxcblx0XHRcdGNvbXBsZXRlRGVmZXJyZWQgPSBqUXVlcnkuQ2FsbGJhY2tzKFwib25jZSBtZW1vcnlcIiksXG5cdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0c3RhdHVzQ29kZSA9IHMuc3RhdHVzQ29kZSB8fCB7fSxcblx0XHRcdC8vIEhlYWRlcnMgKHRoZXkgYXJlIHNlbnQgYWxsIGF0IG9uY2UpXG5cdFx0XHRyZXF1
9673ZXN0SGVhZGVycyA9IHt9LFxuXHRcdFx0cmVxdWVzdEhlYWRlcnNOYW1lcyA9IHt9LFxuXHRcdFx0Ly8gVGhlIGpxWEhSIHN0YXRlXG5cdFx0XHRzdGF0ZSA9IDAsXG5cdFx0XHQvLyBEZWZhdWx0IGFib3J0IG1lc3NhZ2Vcblx0XHRcdHN0ckFib3J0ID0gXCJjYW5jZWxlZFwiLFxuXHRcdFx0Ly8gRmFrZSB4aHJcblx0XHRcdGpxWEhSID0ge1xuXHRcdFx0XHRyZWFkeVN0YXRlOiAwLFxuXG5cdFx0XHRcdC8vIEJ1aWxkcyBoZWFkZXJzIGhhc2h0YWJsZSBpZiBuZWVkZWRcblx0XHRcdFx0Z2V0UmVzcG9uc2VIZWFkZXI6IGZ1bmN0aW9uKCBrZXkgKSB7XG5cdFx0XHRcdFx0dmFyIG1hdGNoO1xuXHRcdFx0XHRcdGlmICggc3RhdGUgPT09IDIgKSB7XG5cdFx0XHRcdFx0XHRpZiAoICFyZXNwb25zZUhlYWRlcnMgKSB7XG5cdFx0XHRcdFx0XHRcdHJlc3BvbnNlSGVhZGVycyA9IHt9O1xuXHRcdFx0XHRcdFx0XHR3aGlsZSAoIChtYXRjaCA9IHJoZWFkZXJzLmV4ZWMoIHJlc3BvbnNlSGVhZGVyc1N0cmluZyApKSApIHtcblx0XHRcdFx0XHRcdFx0XHRyZXNwb25zZUhlYWRlcnNbIG1hdGNoWzFdLnRvTG93ZXJDYXNlKCkgXSA9IG1hdGNoWyAyIF07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdG1hdGNoID0gcmVzcG9uc2VIZWFkZXJzWyBrZXkudG9Mb3dlckNhc2UoKSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gbWF0Y2ggPT0gbnVsbCA/IG51bGwgOiBtYXRjaDtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBSYXcgc3RyaW5nXG5cdFx0XHRcdGdldEFsbFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHN0YXRlID09PSAyID8gcmVzcG9uc2VIZWFkZXJzU3RyaW5nIDogbnVsbDtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBDYWNoZXMgdGhlIGhlYWRlclxuXHRcdFx0XHRzZXRSZXF1ZXN0SGVhZGVyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0XHRcdFx0dmFyIGxuYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0XHRcdGlmICggIXN0YXRlICkge1xuXHRcdFx0XHRcdFx0bmFtZSA9IHJlcXVlc3RIZWFkZXJzTmFtZXNbIGxuYW1lIF0gPSByZXF1ZXN0SGVhZGVyc05hbWVzWyBsbmFtZSBdIHx8IG5hbWU7XG5cdFx0XHRcdFx0XHRyZXF1ZXN0SGVhZGVyc1sgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIE92ZXJyaWRlcyByZXNwb25zZSBjb250ZW50LXR5cGUgaGVhZGVyXG5cdFx0XHRcdG92ZXJyaWRlTWltZVR5cGU6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdFx0XHRcdGlmICggIXN0YXRlICkge1xuXHRcdFx0XHRcdFx0cy5taW1lVHlwZSA9IHR5cGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRcdHN0YXR1c0NvZGU6IGZ1bmN0aW9uKCBtYXAgKSB7XG5cdFx0XHRcdFx0dmFyIGNvZGU7XG5cdFx0XHRcdFx0aWYgKCBtYXAgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIHN0YXRlIDwgMiApIHtcblx0XHRcdFx0XHRcdFx0Zm9yICggY29kZSBpbiBtYXAgKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gTGF6eS1hZGQgdGhlIG5ldyBjYWxsYmFjayBpbiBhIHdheSB0aGF0IHByZXNlcnZlcyBvbGQgb25lc1xuXHRcdFx0XHRcdFx0XHRcdHN0YXR1c0NvZGVbIGNvZGUgXSA9IFsgc3RhdHVzQ29kZVsgY29kZSBdLCBtYXBbIGNvZGUgXSBdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHQvLyBFeGVjdXRlIHRoZSBhcHByb3ByaWF0ZSBjYWxsYmFja3Ncblx0XHRcdFx0XHRcdFx0anFYSFIuYWx3YXlzKCBtYXBbIGpxWEhSLnN0YXR1cyBdICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIENhbmNlbCB0aGUgcmVxdWVzdFxuXHRcdFx0XHRhYm9ydDogZnVuY3Rpb24oIHN0YXR1c1RleHQgKSB7XG5cdFx0XHRcdFx0dmFyIGZpbmFsVGV4dCA9IHN0YXR1c1RleHQgfHwgc3RyQWJvcnQ7XG5cdFx0XHRcdFx0aWYgKCB0cmFuc3BvcnQgKSB7XG5cdFx0XHRcdFx0XHR0cmFuc3BvcnQuYWJvcnQoIGZpbmFsVGV4dCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkb25lKCAwLCBmaW5hbFRleHQgKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdC8vIEF0dGFjaCBkZWZlcnJlZHNcblx0XHRkZWZlcnJlZC5wcm9taXNlKCBqcVhIUiApLmNvbXBsZXRlID0gY29tcGxldGVEZWZlcnJlZC5hZGQ7XG5cdFx0anFYSFIuc3VjY2VzcyA9IGpxWEhSLmRvbmU7XG5cdFx0anFYSFIuZXJyb3IgPSBqcVhIUi5mYWlsO1xuXG5cdFx0Ly8gUmVtb3ZlIGhhc2ggY2hhcmFjdGVyICgjNzUzMTogYW5kIHN0cmluZyBwcm9tb3Rpb24pXG5cdFx0Ly8gQWRkIHByb3RvY29sIGlmIG5vdCBwcm92aWRlZCAocHJlZmlsdGVycyBtaWdodCBleHBlY3QgaXQpXG5cdFx0Ly8gSGFuZGxlIGZhbHN5IHVybCBpbiB0aGUgc2V0dGluZ3Mgb2JqZWN0ICgjMTAwOTM6IGNvbnNpc3RlbmN5IHdpdGggb2xkIHNpZ25hdHVyZSlcblx0XHQvLyBXZSBhbHNvIHVzZSB0aGUgdXJsIHBhcmFtZXRlciBpZiBhdmFpbGFibGVcblx0XHRzLnVybCA9ICggKCB1cmwgfHwgcy51cmwgfHwgYWpheExvY2F0aW9uICkgKyBcIlwiICkucmVwbGFjZSggcmhhc2gsIFwiXCIgKVxuXHRcdFx0LnJlcGxhY2UoIHJwcm90b2NvbCwgYWpheExvY1BhcnRzWyAxIF0gKyBcIi8vXCIgKTtcblxuXHRcdC8vIEFsaWFzIG1ldGhvZCBvcHRpb24gdG8gdHlwZSBhcyBwZXIgdGlja2V0ICMxMjAwNFxuXHRcdHMudHlwZSA9IG9wdGlvbnMubWV0aG9kIHx8IG9wdGlvbnMudHlwZSB8fCBzLm1ldGhvZCB8fCBzLnR5cGU7XG5cblx0XHQvLyBFeHRyYWN0IGRhdGFUeXBlcyBsaXN0XG5cdFx0cy5kYXRhVHlwZXMgPSBqUXVlcnkudHJpbSggcy5kYXRhVHlwZSB8fCBcIipcIiApLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3R3aGl0ZSApIHx8IFsgXCJcIiBdO1xuXG5cdFx0Ly8gQSBjcm9zcy1kb21haW4gcmVxdW
9673VzdCBpcyBpbiBvcmRlciB3aGVuIHdlIGhhdmUgYSBwcm90b2NvbDpob3N0OnBvcnQgbWlzbWF0Y2hcblx0XHRpZiAoIHMuY3Jvc3NEb21haW4gPT0gbnVsbCApIHtcblx0XHRcdHBhcnRzID0gcnVybC5leGVjKCBzLnVybC50b0xvd2VyQ2FzZSgpICk7XG5cdFx0XHRzLmNyb3NzRG9tYWluID0gISEoIHBhcnRzICYmXG5cdFx0XHRcdCggcGFydHNbIDEgXSAhPT0gYWpheExvY1BhcnRzWyAxIF0gfHwgcGFydHNbIDIgXSAhPT0gYWpheExvY1BhcnRzWyAyIF0gfHxcblx0XHRcdFx0XHQoIHBhcnRzWyAzIF0gfHwgKCBwYXJ0c1sgMSBdID09PSBcImh0dHA6XCIgPyBcIjgwXCIgOiBcIjQ0M1wiICkgKSAhPT1cblx0XHRcdFx0XHRcdCggYWpheExvY1BhcnRzWyAzIF0gfHwgKCBhamF4TG9jUGFydHNbIDEgXSA9PT0gXCJodHRwOlwiID8gXCI4MFwiIDogXCI0NDNcIiApICkgKVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHQvLyBDb252ZXJ0IGRhdGEgaWYgbm90IGFscmVhZHkgYSBzdHJpbmdcblx0XHRpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmIHR5cGVvZiBzLmRhdGEgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRzLmRhdGEgPSBqUXVlcnkucGFyYW0oIHMuZGF0YSwgcy50cmFkaXRpb25hbCApO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHByZWZpbHRlcnNcblx0XHRpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycywgcywgb3B0aW9ucywganFYSFIgKTtcblxuXHRcdC8vIElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQgaW5zaWRlIGEgcHJlZmlsdGVyLCBzdG9wIHRoZXJlXG5cdFx0aWYgKCBzdGF0ZSA9PT0gMiApIHtcblx0XHRcdHJldHVybiBqcVhIUjtcblx0XHR9XG5cblx0XHQvLyBXZSBjYW4gZmlyZSBnbG9iYWwgZXZlbnRzIGFzIG9mIG5vdyBpZiBhc2tlZCB0b1xuXHRcdC8vIERvbid0IGZpcmUgZXZlbnRzIGlmIGpRdWVyeS5ldmVudCBpcyB1bmRlZmluZWQgaW4gYW4gQU1ELXVzYWdlIHNjZW5hcmlvICgjMTUxMTgpXG5cdFx0ZmlyZUdsb2JhbHMgPSBqUXVlcnkuZXZlbnQgJiYgcy5nbG9iYWw7XG5cblx0XHQvLyBXYXRjaCBmb3IgYSBuZXcgc2V0IG9mIHJlcXVlc3RzXG5cdFx0aWYgKCBmaXJlR2xvYmFscyAmJiBqUXVlcnkuYWN0aXZlKysgPT09IDAgKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlcihcImFqYXhTdGFydFwiKTtcblx0XHR9XG5cblx0XHQvLyBVcHBlcmNhc2UgdGhlIHR5cGVcblx0XHRzLnR5cGUgPSBzLnR5cGUudG9VcHBlckNhc2UoKTtcblxuXHRcdC8vIERldGVybWluZSBpZiByZXF1ZXN0IGhhcyBjb250ZW50XG5cdFx0cy5oYXNDb250ZW50ID0gIXJub0NvbnRlbnQudGVzdCggcy50eXBlICk7XG5cblx0XHQvLyBTYXZlIHRoZSBVUkwgaW4gY2FzZSB3ZSdyZSB0b3lpbmcgd2l0aCB0aGUgSWYtTW9kaWZpZWQtU2luY2Vcblx0XHQvLyBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIgbGF0ZXIgb25cblx0XHRjYWNoZVVSTCA9IHMudXJsO1xuXG5cdFx0Ly8gTW9yZSBvcHRpb25zIGhhbmRsaW5nIGZvciByZXF1ZXN0cyB3aXRoIG5vIGNvbnRlbnRcblx0XHRpZiAoICFzLmhhc0NvbnRlbnQgKSB7XG5cblx0XHRcdC8vIElmIGRhdGEgaXMgYXZhaWxhYmxlLCBhcHBlbmQgZGF0YSB0byB1cmxcblx0XHRcdGlmICggcy5kYXRhICkge1xuXHRcdFx0XHRjYWNoZVVSTCA9ICggcy51cmwgKz0gKCBycXVlcnkudGVzdCggY2FjaGVVUkwgKSA/IFwiJlwiIDogXCI/XCIgKSArIHMuZGF0YSApO1xuXHRcdFx0XHQvLyAjOTY4MjogcmVtb3ZlIGRhdGEgc28gdGhhdCBpdCdzIG5vdCB1c2VkIGluIGFuIGV2ZW50dWFsIHJldHJ5XG5cdFx0XHRcdGRlbGV0ZSBzLmRhdGE7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCBhbnRpLWNhY2hlIGluIHVybCBpZiBuZWVkZWRcblx0XHRcdGlmICggcy5jYWNoZSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdHMudXJsID0gcnRzLnRlc3QoIGNhY2hlVVJMICkgP1xuXG5cdFx0XHRcdFx0Ly8gSWYgdGhlcmUgaXMgYWxyZWFkeSBhICdfJyBwYXJhbWV0ZXIsIHNldCBpdHMgdmFsdWVcblx0XHRcdFx0XHRjYWNoZVVSTC5yZXBsYWNlKCBydHMsIFwiJDFfPVwiICsgbm9uY2UrKyApIDpcblxuXHRcdFx0XHRcdC8vIE90aGVyd2lzZSBhZGQgb25lIHRvIHRoZSBlbmRcblx0XHRcdFx0XHRjYWNoZVVSTCArICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyBcIiZcIiA6IFwiP1wiICkgKyBcIl89XCIgKyBub25jZSsrO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuXG5cdFx0aWYgKCBzLmlmTW9kaWZpZWQgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKSB7XG5cdFx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIFwiSWYtTW9kaWZpZWQtU2luY2VcIiwgalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSApIHtcblx0XHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJJZi1Ob25lLU1hdGNoXCIsIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBjb3JyZWN0IGhlYWRlciwgaWYgZGF0YSBpcyBiZWluZyBzZW50XG5cdFx0aWYgKCBzLmRhdGEgJiYgcy5oYXNDb250ZW50ICYmIHMuY29udGVudFR5cGUgIT09IGZhbHNlIHx8IG9wdGlvbnMuY29udGVudFR5cGUgKSB7XG5cdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIkNvbnRlbnQtVHlwZVwiLCBzLmNvbnRlbnRUeXBlICk7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBBY2NlcHRzIGhlYWRlciBmb3IgdGhlIHNlcnZlciwgZGVwZW5kaW5nIG9uIHRoZSBkYXRhVHlwZVxuXHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoXG5cdFx0XHRcIkFjY2VwdFwiLFxuXHRcdFx0cy5kYXRhVHlwZXNbIDAgXSAmJiBzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWzBdIF0gP1xuXHRcdFx0XHRzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWzBdIF0gKyAoIHMuZGF0YVR5cGVzWyAwIF0gIT09IFwiKlwiID8gXCIsIFwiICsgYWxsVHlwZXMgKyBcIjsgcT0wLjAxXCIgOiBcIlwiICkgOlxuXHRcdFx0XHRzLmFjY2VwdHNbIFwiKlwiIF1cblx0XHQpO1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIGhlYWRlcnMgb3B0aW9uXG5cdFx0Zm9yICggaSBpbiBzLmhlYWRlcnMgKSB7XG5cdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBzLmhlYWRlcnNbIGkgXSApO1xuXHRcdH1cblxuXHRcdC8vIEFsbG93IGN1c3RvbSBoZWFkZXJzL21pbWV0eXBlcyBhbmQgZWFybHkgYWJvcnRcblx0XHRpZiAoIHMuYmVmb3JlU2VuZCAmJiAoIHMuYmVmb3JlU2VuZC5jYWxsKCBjYWxsYmFja0NvbnRleHQsIGpxWEhSLCBzICkgPT09IGZhbHNlIHx8IHN0YXRlID09PSA
9673yICkgKSB7XG5cdFx0XHQvLyBBYm9ydCBpZiBub3QgZG9uZSBhbHJlYWR5IGFuZCByZXR1cm5cblx0XHRcdHJldHVybiBqcVhIUi5hYm9ydCgpO1xuXHRcdH1cblxuXHRcdC8vIEFib3J0aW5nIGlzIG5vIGxvbmdlciBhIGNhbmNlbGxhdGlvblxuXHRcdHN0ckFib3J0ID0gXCJhYm9ydFwiO1xuXG5cdFx0Ly8gSW5zdGFsbCBjYWxsYmFja3Mgb24gZGVmZXJyZWRzXG5cdFx0Zm9yICggaSBpbiB7IHN1Y2Nlc3M6IDEsIGVycm9yOiAxLCBjb21wbGV0ZTogMSB9ICkge1xuXHRcdFx0anFYSFJbIGkgXSggc1sgaSBdICk7XG5cdFx0fVxuXG5cdFx0Ly8gR2V0IHRyYW5zcG9ydFxuXHRcdHRyYW5zcG9ydCA9IGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzLCBzLCBvcHRpb25zLCBqcVhIUiApO1xuXG5cdFx0Ly8gSWYgbm8gdHJhbnNwb3J0LCB3ZSBhdXRvLWFib3J0XG5cdFx0aWYgKCAhdHJhbnNwb3J0ICkge1xuXHRcdFx0ZG9uZSggLTEsIFwiTm8gVHJhbnNwb3J0XCIgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0anFYSFIucmVhZHlTdGF0ZSA9IDE7XG5cblx0XHRcdC8vIFNlbmQgZ2xvYmFsIGV2ZW50XG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggXCJhamF4U2VuZFwiLCBbIGpxWEhSLCBzIF0gKTtcblx0XHRcdH1cblx0XHRcdC8vIFRpbWVvdXRcblx0XHRcdGlmICggcy5hc3luYyAmJiBzLnRpbWVvdXQgPiAwICkge1xuXHRcdFx0XHR0aW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGpxWEhSLmFib3J0KFwidGltZW91dFwiKTtcblx0XHRcdFx0fSwgcy50aW1lb3V0ICk7XG5cdFx0XHR9XG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdHN0YXRlID0gMTtcblx0XHRcdFx0dHJhbnNwb3J0LnNlbmQoIHJlcXVlc3RIZWFkZXJzLCBkb25lICk7XG5cdFx0XHR9IGNhdGNoICggZSApIHtcblx0XHRcdFx0Ly8gUHJvcGFnYXRlIGV4Y2VwdGlvbiBhcyBlcnJvciBpZiBub3QgZG9uZVxuXHRcdFx0XHRpZiAoIHN0YXRlIDwgMiApIHtcblx0XHRcdFx0XHRkb25lKCAtMSwgZSApO1xuXHRcdFx0XHQvLyBTaW1wbHkgcmV0aHJvdyBvdGhlcndpc2Vcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbGJhY2sgZm9yIHdoZW4gZXZlcnl0aGluZyBpcyBkb25lXG5cdFx0ZnVuY3Rpb24gZG9uZSggc3RhdHVzLCBuYXRpdmVTdGF0dXNUZXh0LCByZXNwb25zZXMsIGhlYWRlcnMgKSB7XG5cdFx0XHR2YXIgaXNTdWNjZXNzLCBzdWNjZXNzLCBlcnJvciwgcmVzcG9uc2UsIG1vZGlmaWVkLFxuXHRcdFx0XHRzdGF0dXNUZXh0ID0gbmF0aXZlU3RhdHVzVGV4dDtcblxuXHRcdFx0Ly8gQ2FsbGVkIG9uY2Vcblx0XHRcdGlmICggc3RhdGUgPT09IDIgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RhdGUgaXMgXCJkb25lXCIgbm93XG5cdFx0XHRzdGF0ZSA9IDI7XG5cblx0XHRcdC8vIENsZWFyIHRpbWVvdXQgaWYgaXQgZXhpc3RzXG5cdFx0XHRpZiAoIHRpbWVvdXRUaW1lciApIHtcblx0XHRcdFx0Y2xlYXJUaW1lb3V0KCB0aW1lb3V0VGltZXIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gRGVyZWZlcmVuY2UgdHJhbnNwb3J0IGZvciBlYXJseSBnYXJiYWdlIGNvbGxlY3Rpb25cblx0XHRcdC8vIChubyBtYXR0ZXIgaG93IGxvbmcgdGhlIGpxWEhSIG9iamVjdCB3aWxsIGJlIHVzZWQpXG5cdFx0XHR0cmFuc3BvcnQgPSB1bmRlZmluZWQ7XG5cblx0XHRcdC8vIENhY2hlIHJlc3BvbnNlIGhlYWRlcnNcblx0XHRcdHJlc3BvbnNlSGVhZGVyc1N0cmluZyA9IGhlYWRlcnMgfHwgXCJcIjtcblxuXHRcdFx0Ly8gU2V0IHJlYWR5U3RhdGVcblx0XHRcdGpxWEhSLnJlYWR5U3RhdGUgPSBzdGF0dXMgPiAwID8gNCA6IDA7XG5cblx0XHRcdC8vIERldGVybWluZSBpZiBzdWNjZXNzZnVsXG5cdFx0XHRpc1N1Y2Nlc3MgPSBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMCB8fCBzdGF0dXMgPT09IDMwNDtcblxuXHRcdFx0Ly8gR2V0IHJlc3BvbnNlIGRhdGFcblx0XHRcdGlmICggcmVzcG9uc2VzICkge1xuXHRcdFx0XHRyZXNwb25zZSA9IGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29udmVydCBubyBtYXR0ZXIgd2hhdCAodGhhdCB3YXkgcmVzcG9uc2VYWFggZmllbGRzIGFyZSBhbHdheXMgc2V0KVxuXHRcdFx0cmVzcG9uc2UgPSBhamF4Q29udmVydCggcywgcmVzcG9uc2UsIGpxWEhSLCBpc1N1Y2Nlc3MgKTtcblxuXHRcdFx0Ly8gSWYgc3VjY2Vzc2Z1bCwgaGFuZGxlIHR5cGUgY2hhaW5pbmdcblx0XHRcdGlmICggaXNTdWNjZXNzICkge1xuXG5cdFx0XHRcdC8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuXG5cdFx0XHRcdGlmICggcy5pZk1vZGlmaWVkICkge1xuXHRcdFx0XHRcdG1vZGlmaWVkID0ganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoXCJMYXN0LU1vZGlmaWVkXCIpO1xuXHRcdFx0XHRcdGlmICggbW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdID0gbW9kaWZpZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG1vZGlmaWVkID0ganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoXCJldGFnXCIpO1xuXHRcdFx0XHRcdGlmICggbW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSA9IG1vZGlmaWVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGlmIG5vIGNvbnRlbnRcblx0XHRcdFx0aWYgKCBzdGF0dXMgPT09IDIwNCB8fCBzLnR5cGUgPT09IFwiSEVBRFwiICkge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcIm5vY29udGVudFwiO1xuXG5cdFx0XHRcdC8vIGlmIG5vdCBtb2RpZmllZFxuXHRcdFx0XHR9IGVsc2UgaWYgKCBzdGF0dXMgPT09IDMwNCApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJub3Rtb2RpZmllZFwiO1xuXG5cdFx0XHRcdC8vIElmIHdlIGhhdmUgZGF0YSwgbGV0J3MgY29udmVydCBpdFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSByZXNwb25zZS5zdGF0ZTtcblx0XHRcdFx0XHRzdWNjZXNzID0gcmVzcG9uc2UuZGF0YTtcblx0XHRcdFx0XHRlcnJvciA9IHJlc3BvbnNlLmVycm9yO1xuXHRcdFx0XHRcdGlzU3VjY2VzcyA9ICFlcnJvcjtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gRXh0cmFjdCBlcnJvciBmcm9tIHN0YXR1c1RleHQgYW5kIG5vcm1hbGl6ZSBmb3Igbm9uLWFib3J0c1xuXHRcdFx0XHRlcnJvciA9IHN0YXR1c1RleHQ7XG5cdFx0XHRcdGlmICggc3RhdHVzIHx8ICFzdGF0dXNUZXh0ICkge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcImVycm9yXCI7XG5cdFx0XHRcdFx0aWYgKCBzdGF0dXMgPCAwICkge1xuXHRcdFx0XHRcdFx0c3RhdHVzID0gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gU2V0IGRhdGEgZm9yIHRoZSBmYWtlIHhociBvYmplY3Rcblx0XHRcdGpxWEhSLnN0YXR1cyA9IHN0YXR1cztcblx0XHRcdGpxWEhSLnN0YXR1c1RleHQgPSAoIG5hdGl2ZVN0YXR1c1RleHQgfHwgc3RhdHVzVGV4dCApICsgXCJcIjtcblxuXHRcdFx0Ly8gU3VjY2Vzcy9FcnJvclxuXHRcdFx0aWYgKCBpc1N1Y2Nlc3MgKSB7XG5cdFx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsgc3VjY2Vzcywgc3RhdHVzVGV4dCwganFYSFIgXSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0V2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0LCBlcnJvciBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRqcVhIUi5zdGF0dXNDb2RlKCBzdGF0dXNDb2RlICk7XG5cdFx0XHRzdGF0dXNDb2RlID0gdW5kZWZpbmVkO1xuXG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggaXNTdWNjZXNzID8gXCJhamF4U3VjY2Vzc1wiIDogXCJhamF4RXJyb3JcIixcblx0XHRcdFx0XHRbIGpxWEhSLCBzLCBpc1N1Y2Nlc3MgPyBzdWNjZXNzIDogZXJyb3IgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb21wbGV0ZVxuXHRcdFx0Y29tcGxldGVEZWZlcnJlZC5maXJlV2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0IF0gKTtcblxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcblx0XHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIFwiYWpheENvbXBsZXRlXCIsIFsganFYSFIsIHMgXSApO1xuXHRcdFx0XHQvLyBIYW5kbGUgdGhlIGdsb2JhbCBBSkFYIGNvdW50ZXJcblx0XHRcdFx0aWYgKCAhKCAtLWpRdWVyeS5hY3RpdmUgKSApIHtcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlcihcImFqYXhTdG9wXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGpxWEhSO
96731xuXHR9LFxuXG5cdGdldEpTT046IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIGRhdGEsIGNhbGxiYWNrLCBcImpzb25cIiApO1xuXHR9LFxuXG5cdGdldFNjcmlwdDogZnVuY3Rpb24oIHVybCwgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5nZXQoIHVybCwgdW5kZWZpbmVkLCBjYWxsYmFjaywgXCJzY3JpcHRcIiApO1xuXHR9XG59KTtcblxualF1ZXJ5LmVhY2goIFsgXCJnZXRcIiwgXCJwb3N0XCIgXSwgZnVuY3Rpb24oIGksIG1ldGhvZCApIHtcblx0alF1ZXJ5WyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrLCB0eXBlICkge1xuXHRcdC8vIFNoaWZ0IGFyZ3VtZW50cyBpZiBkYXRhIGFyZ3VtZW50IHdhcyBvbWl0dGVkXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggZGF0YSApICkge1xuXHRcdFx0dHlwZSA9IHR5cGUgfHwgY2FsbGJhY2s7XG5cdFx0XHRjYWxsYmFjayA9IGRhdGE7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdHJldHVybiBqUXVlcnkuYWpheCh7XG5cdFx0XHR1cmw6IHVybCxcblx0XHRcdHR5cGU6IG1ldGhvZCxcblx0XHRcdGRhdGFUeXBlOiB0eXBlLFxuXHRcdFx0ZGF0YTogZGF0YSxcblx0XHRcdHN1Y2Nlc3M6IGNhbGxiYWNrXG5cdFx0fSk7XG5cdH07XG59KTtcblxuXG5qUXVlcnkuX2V2YWxVcmwgPSBmdW5jdGlvbiggdXJsICkge1xuXHRyZXR1cm4galF1ZXJ5LmFqYXgoe1xuXHRcdHVybDogdXJsLFxuXHRcdHR5cGU6IFwiR0VUXCIsXG5cdFx0ZGF0YVR5cGU6IFwic2NyaXB0XCIsXG5cdFx0YXN5bmM6IGZhbHNlLFxuXHRcdGdsb2JhbDogZmFsc2UsXG5cdFx0XCJ0aHJvd3NcIjogdHJ1ZVxuXHR9KTtcbn07XG5cblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdHdyYXBBbGw6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdHZhciB3cmFwO1xuXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkud3JhcEFsbCggaHRtbC5jYWxsKHRoaXMsIGkpICk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpZiAoIHRoaXNbIDAgXSApIHtcblxuXHRcdFx0Ly8gVGhlIGVsZW1lbnRzIHRvIHdyYXAgdGhlIHRhcmdldCBhcm91bmRcblx0XHRcdHdyYXAgPSBqUXVlcnkoIGh0bWwsIHRoaXNbIDAgXS5vd25lckRvY3VtZW50ICkuZXEoIDAgKS5jbG9uZSggdHJ1ZSApO1xuXG5cdFx0XHRpZiAoIHRoaXNbIDAgXS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHR3cmFwLmluc2VydEJlZm9yZSggdGhpc1sgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHdyYXAubWFwKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgZWxlbSA9IHRoaXM7XG5cblx0XHRcdFx0d2hpbGUgKCBlbGVtLmZpcnN0RWxlbWVudENoaWxkICkge1xuXHRcdFx0XHRcdGVsZW0gPSBlbGVtLmZpcnN0RWxlbWVudENoaWxkO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIGVsZW07XG5cdFx0XHR9KS5hcHBlbmQoIHRoaXMgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHR3cmFwSW5uZXI6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBJbm5lciggaHRtbC5jYWxsKHRoaXMsIGkpICk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHNlbGYgPSBqUXVlcnkoIHRoaXMgKSxcblx0XHRcdFx0Y29udGVudHMgPSBzZWxmLmNvbnRlbnRzKCk7XG5cblx0XHRcdGlmICggY29udGVudHMubGVuZ3RoICkge1xuXHRcdFx0XHRjb250ZW50cy53cmFwQWxsKCBodG1sICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNlbGYuYXBwZW5kKCBodG1sICk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cblx0d3JhcDogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0dmFyIGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApO1xuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaSApIHtcblx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBBbGwoIGlzRnVuY3Rpb24gPyBodG1sLmNhbGwodGhpcywgaSkgOiBodG1sICk7XG5cdFx0fSk7XG5cdH0sXG5cblx0dW53cmFwOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCAhalF1ZXJ5Lm5vZGVOYW1lKCB0aGlzLCBcImJvZHlcIiApICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5yZXBsYWNlV2l0aCggdGhpcy5jaGlsZE5vZGVzICk7XG5cdFx0XHR9XG5cdFx0fSkuZW5kKCk7XG5cdH1cbn0pO1xuXG5cbmpRdWVyeS5leHByLmZpbHRlcnMuaGlkZGVuID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdC8vIFN1cHBvcnQ6IE9wZXJhIDw9IDEyLjEyXG5cdC8vIE9wZXJhIHJlcG9ydHMgb2Zmc2V0V2lkdGhzIGFuZCBvZmZzZXRIZWlnaHRzIGxlc3MgdGhhbiB6ZXJvIG9uIHNvbWUgZWxlbWVudHNcblx0cmV0dXJuIGVsZW0ub2Zmc2V0V2lkdGggPD0gMCAmJiBlbGVtLm9mZnNldEhlaWdodCA8PSAwO1xufTtcbmpRdWVyeS5leHByLmZpbHRlcnMudmlzaWJsZSA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4gIWpRdWVyeS5leHByLmZpbHRlcnMuaGlkZGVuKCBlbGVtICk7XG59O1xuXG5cblxuXG52YXIgcjIwID0gLyUyMC9nLFxuXHRyYnJhY2tldCA9IC9cXFtcXF0kLyxcblx0ckNSTEYgPSAvXFxyP1xcbi9nLFxuXHRyc3VibWl0dGVyVHlwZXMgPSAvXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksXG5cdHJzdWJtaXR0YWJsZSA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtcblxuZnVuY3Rpb24gYnVpbGRQYXJhbXMoIHByZWZpeCwgb2JqLCB0cmFkaXRpb25hbCwgYWRkICkge1xuXHR2YXIgbmFtZTtcblxuXHRpZiAoIGpRdWVyeS5pc0FycmF
96735KCBvYmogKSApIHtcblx0XHQvLyBTZXJpYWxpemUgYXJyYXkgaXRlbS5cblx0XHRqUXVlcnkuZWFjaCggb2JqLCBmdW5jdGlvbiggaSwgdiApIHtcblx0XHRcdGlmICggdHJhZGl0aW9uYWwgfHwgcmJyYWNrZXQudGVzdCggcHJlZml4ICkgKSB7XG5cdFx0XHRcdC8vIFRyZWF0IGVhY2ggYXJyYXkgaXRlbSBhcyBhIHNjYWxhci5cblx0XHRcdFx0YWRkKCBwcmVmaXgsIHYgKTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gSXRlbSBpcyBub24tc2NhbGFyIChhcnJheSBvciBvYmplY3QpLCBlbmNvZGUgaXRzIG51bWVyaWMgaW5kZXguXG5cdFx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXggKyBcIltcIiArICggdHlwZW9mIHYgPT09IFwib2JqZWN0XCIgPyBpIDogXCJcIiApICsgXCJdXCIsIHYsIHRyYWRpdGlvbmFsLCBhZGQgKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHR9IGVsc2UgaWYgKCAhdHJhZGl0aW9uYWwgJiYgalF1ZXJ5LnR5cGUoIG9iaiApID09PSBcIm9iamVjdFwiICkge1xuXHRcdC8vIFNlcmlhbGl6ZSBvYmplY3QgaXRlbS5cblx0XHRmb3IgKCBuYW1lIGluIG9iaiApIHtcblx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXggKyBcIltcIiArIG5hbWUgKyBcIl1cIiwgb2JqWyBuYW1lIF0sIHRyYWRpdGlvbmFsLCBhZGQgKTtcblx0XHR9XG5cblx0fSBlbHNlIHtcblx0XHQvLyBTZXJpYWxpemUgc2NhbGFyIGl0ZW0uXG5cdFx0YWRkKCBwcmVmaXgsIG9iaiApO1xuXHR9XG59XG5cbi8vIFNlcmlhbGl6ZSBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzIG9yIGEgc2V0IG9mXG4vLyBrZXkvdmFsdWVzIGludG8gYSBxdWVyeSBzdHJpbmdcbmpRdWVyeS5wYXJhbSA9IGZ1bmN0aW9uKCBhLCB0cmFkaXRpb25hbCApIHtcblx0dmFyIHByZWZpeCxcblx0XHRzID0gW10sXG5cdFx0YWRkID0gZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cdFx0XHQvLyBJZiB2YWx1ZSBpcyBhIGZ1bmN0aW9uLCBpbnZva2UgaXQgYW5kIHJldHVybiBpdHMgdmFsdWVcblx0XHRcdHZhbHVlID0galF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgPyB2YWx1ZSgpIDogKCB2YWx1ZSA9PSBudWxsID8gXCJcIiA6IHZhbHVlICk7XG5cdFx0XHRzWyBzLmxlbmd0aCBdID0gZW5jb2RlVVJJQ29tcG9uZW50KCBrZXkgKSArIFwiPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KCB2YWx1ZSApO1xuXHRcdH07XG5cblx0Ly8gU2V0IHRyYWRpdGlvbmFsIHRvIHRydWUgZm9yIGpRdWVyeSA8PSAxLjMuMiBiZWhhdmlvci5cblx0aWYgKCB0cmFkaXRpb25hbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdHRyYWRpdGlvbmFsID0galF1ZXJ5LmFqYXhTZXR0aW5ncyAmJiBqUXVlcnkuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsO1xuXHR9XG5cblx0Ly8gSWYgYW4gYXJyYXkgd2FzIHBhc3NlZCBpbiwgYXNzdW1lIHRoYXQgaXQgaXMgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50cy5cblx0aWYgKCBqUXVlcnkuaXNBcnJheSggYSApIHx8ICggYS5qcXVlcnkgJiYgIWpRdWVyeS5pc1BsYWluT2JqZWN0KCBhICkgKSApIHtcblx0XHQvLyBTZXJpYWxpemUgdGhlIGZvcm0gZWxlbWVudHNcblx0XHRqUXVlcnkuZWFjaCggYSwgZnVuY3Rpb24oKSB7XG5cdFx0XHRhZGQoIHRoaXMubmFtZSwgdGhpcy52YWx1ZSApO1xuXHRcdH0pO1xuXG5cdH0gZWxzZSB7XG5cdFx0Ly8gSWYgdHJhZGl0aW9uYWwsIGVuY29kZSB0aGUgXCJvbGRcIiB3YXkgKHRoZSB3YXkgMS4zLjIgb3Igb2xkZXJcblx0XHQvLyBkaWQgaXQpLCBvdGhlcndpc2UgZW5jb2RlIHBhcmFtcyByZWN1cnNpdmVseS5cblx0XHRmb3IgKCBwcmVmaXggaW4gYSApIHtcblx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXgsIGFbIHByZWZpeCBdLCB0cmFkaXRpb25hbCwgYWRkICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSByZXN1bHRpbmcgc2VyaWFsaXphdGlvblxuXHRyZXR1cm4gcy5qb2luKCBcIiZcIiApLnJlcGxhY2UoIHIyMCwgXCIrXCIgKTtcbn07XG5cbmpRdWVyeS5mbi5leHRlbmQoe1xuXHRzZXJpYWxpemU6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBqUXVlcnkucGFyYW0oIHRoaXMuc2VyaWFsaXplQXJyYXkoKSApO1xuXHR9LFxuXHRzZXJpYWxpemVBcnJheTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCkge1xuXHRcdFx0Ly8gQ2FuIGFkZCBwcm9wSG9vayBmb3IgXCJlbGVtZW50c1wiIHRvIGZpbHRlciBvciBhZGQgZm9ybSBlbGVtZW50c1xuXHRcdFx0dmFyIGVsZW1lbnRzID0galF1ZXJ5LnByb3AoIHRoaXMsIFwiZWxlbWVudHNcIiApO1xuXHRcdFx0cmV0dXJuIGVsZW1lbnRzID8galF1ZXJ5Lm1ha2VBcnJheSggZWxlbWVudHMgKSA6IHRoaXM7XG5cdFx0fSlcblx0XHQuZmlsdGVyKGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHR5cGUgPSB0aGlzLnR5cGU7XG5cblx0XHRcdC8vIFVzZSAuaXMoIFwiOmRpc2FibGVkXCIgKSBzbyB0aGF0IGZpZWxkc2V0W2Rpc2FibGVkXSB3b3Jrc1xuXHRcdFx0cmV0dXJuIHRoaXMubmFtZSAmJiAhalF1ZXJ5KCB0aGlzICkuaXMoIFwiOmRpc2FibGVkXCIgKSAmJlxuXHRcdFx0XHRyc3VibWl0dGFibGUudGVzdCggdGhpcy5ub2RlTmFtZSApICYmICFyc3VibWl0dGVyVHlwZXMudGVzdCggdHlwZSApICYmXG5cdFx0XHRcdCggdGhpcy5jaGVja2VkIHx8ICFyY2hlY2thYmxlVHlwZS50ZXN0KCB0eXBlICkgKTtcblx0XHR9KVxuXHRcdC5tYXAoZnVuY3Rpb24oIGksIGVsZW0gKSB7XG5cdFx0XHR2YXIgdmFsID0galF1ZXJ5KCB0aGlzICkudmFsKCk7XG5cblx0XHRcdHJldHVybiB2YWwgPT0gbnVsbCA/XG5cdFx0XHRcdG51bGwgOlxuXHRcdFx0XHRqUXVlcnkuaXNBcnJheSggdmFsICkgP1xuXHRcdFx0XHRcdGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbCApIHtcblx0XHRcdFx0XHRcdHJldHVybiB7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwgXCJcXHJcXG5cIiApIH07XG5cdFx0XHRcdFx0fSkgOlxuXHRcdFx0XHRcdHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCBcIlxcclxcblwiICkgfTtcblx0XHR9KS5nZXQoKTtcblx0fVxufSk7XG5cblxualF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIgPSBmdW5jdGlvbigpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gbmV3IFhNTEh0dHBSZXF1
9673ZXN0KCk7XG5cdH0gY2F0Y2goIGUgKSB7fVxufTtcblxudmFyIHhocklkID0gMCxcblx0eGhyQ2FsbGJhY2tzID0ge30sXG5cdHhoclN1Y2Nlc3NTdGF0dXMgPSB7XG5cdFx0Ly8gZmlsZSBwcm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyBjb2RlIDAsIGFzc3VtZSAyMDBcblx0XHQwOiAyMDAsXG5cdFx0Ly8gU3VwcG9ydDogSUU5XG5cdFx0Ly8gIzE0NTA6IHNvbWV0aW1lcyBJRSByZXR1cm5zIDEyMjMgd2hlbiBpdCBzaG91bGQgYmUgMjA0XG5cdFx0MTIyMzogMjA0XG5cdH0sXG5cdHhoclN1cHBvcnRlZCA9IGpRdWVyeS5hamF4U2V0dGluZ3MueGhyKCk7XG5cbi8vIFN1cHBvcnQ6IElFOVxuLy8gT3BlbiByZXF1ZXN0cyBtdXN0IGJlIG1hbnVhbGx5IGFib3J0ZWQgb24gdW5sb2FkICgjNTI4MClcbi8vIFNlZSBodHRwczovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8yODU2NzQ2IGZvciBtb3JlIGluZm9cbmlmICggd2luZG93LmF0dGFjaEV2ZW50ICkge1xuXHR3aW5kb3cuYXR0YWNoRXZlbnQoIFwib251bmxvYWRcIiwgZnVuY3Rpb24oKSB7XG5cdFx0Zm9yICggdmFyIGtleSBpbiB4aHJDYWxsYmFja3MgKSB7XG5cdFx0XHR4aHJDYWxsYmFja3NbIGtleSBdKCk7XG5cdFx0fVxuXHR9KTtcbn1cblxuc3VwcG9ydC5jb3JzID0gISF4aHJTdXBwb3J0ZWQgJiYgKCBcIndpdGhDcmVkZW50aWFsc1wiIGluIHhoclN1cHBvcnRlZCApO1xuc3VwcG9ydC5hamF4ID0geGhyU3VwcG9ydGVkID0gISF4aHJTdXBwb3J0ZWQ7XG5cbmpRdWVyeS5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXHR2YXIgY2FsbGJhY2s7XG5cblx0Ly8gQ3Jvc3MgZG9tYWluIG9ubHkgYWxsb3dlZCBpZiBzdXBwb3J0ZWQgdGhyb3VnaCBYTUxIdHRwUmVxdWVzdFxuXHRpZiAoIHN1cHBvcnQuY29ycyB8fCB4aHJTdXBwb3J0ZWQgJiYgIW9wdGlvbnMuY3Jvc3NEb21haW4gKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNlbmQ6IGZ1bmN0aW9uKCBoZWFkZXJzLCBjb21wbGV0ZSApIHtcblx0XHRcdFx0dmFyIGksXG5cdFx0XHRcdFx0eGhyID0gb3B0aW9ucy54aHIoKSxcblx0XHRcdFx0XHRpZCA9ICsreGhySWQ7XG5cblx0XHRcdFx0eGhyLm9wZW4oIG9wdGlvbnMudHlwZSwgb3B0aW9ucy51cmwsIG9wdGlvbnMuYXN5bmMsIG9wdGlvbnMudXNlcm5hbWUsIG9wdGlvbnMucGFzc3dvcmQgKTtcblxuXHRcdFx0XHQvLyBBcHBseSBjdXN0b20gZmllbGRzIGlmIHByb3ZpZGVkXG5cdFx0XHRcdGlmICggb3B0aW9ucy54aHJGaWVsZHMgKSB7XG5cdFx0XHRcdFx0Zm9yICggaSBpbiBvcHRpb25zLnhockZpZWxkcyApIHtcblx0XHRcdFx0XHRcdHhoclsgaSBdID0gb3B0aW9ucy54aHJGaWVsZHNbIGkgXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBPdmVycmlkZSBtaW1lIHR5cGUgaWYgbmVlZGVkXG5cdFx0XHRcdGlmICggb3B0aW9ucy5taW1lVHlwZSAmJiB4aHIub3ZlcnJpZGVNaW1lVHlwZSApIHtcblx0XHRcdFx0XHR4aHIub3ZlcnJpZGVNaW1lVHlwZSggb3B0aW9ucy5taW1lVHlwZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gWC1SZXF1ZXN0ZWQtV2l0aCBoZWFkZXJcblx0XHRcdFx0Ly8gRm9yIGNyb3NzLWRvbWFpbiByZXF1ZXN0cywgc2VlaW5nIGFzIGNvbmRpdGlvbnMgZm9yIGEgcHJlZmxpZ2h0IGFyZVxuXHRcdFx0XHQvLyBha2luIHRvIGEgamlnc2F3IHB1enpsZSwgd2Ugc2ltcGx5IG5ldmVyIHNldCBpdCB0byBiZSBzdXJlLlxuXHRcdFx0XHQvLyAoaXQgY2FuIGFsd2F5cyBiZSBzZXQgb24gYSBwZXItcmVxdWVzdCBiYXNpcyBvciBldmVuIHVzaW5nIGFqYXhTZXR1cClcblx0XHRcdFx0Ly8gRm9yIHNhbWUtZG9tYWluIHJlcXVlc3RzLCB3b24ndCBjaGFuZ2UgaGVhZGVyIGlmIGFscmVhZHkgcHJvdmlkZWQuXG5cdFx0XHRcdGlmICggIW9wdGlvbnMuY3Jvc3NEb21haW4gJiYgIWhlYWRlcnNbXCJYLVJlcXVlc3RlZC1XaXRoXCJdICkge1xuXHRcdFx0XHRcdGhlYWRlcnNbXCJYLVJlcXVlc3RlZC1XaXRoXCJdID0gXCJYTUxIdHRwUmVxdWVzdFwiO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gU2V0IGhlYWRlcnNcblx0XHRcdFx0Zm9yICggaSBpbiBoZWFkZXJzICkge1xuXHRcdFx0XHRcdHhoci5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBoZWFkZXJzWyBpIF0gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIENhbGxiYWNrXG5cdFx0XHRcdGNhbGxiYWNrID0gZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRcdFx0ZGVsZXRlIHhockNhbGxiYWNrc1sgaWQgXTtcblx0XHRcdFx0XHRcdFx0Y2FsbGJhY2sgPSB4aHIub25sb2FkID0geGhyLm9uZXJyb3IgPSBudWxsO1xuXG5cdFx0XHRcdFx0XHRcdGlmICggdHlwZSA9PT0gXCJhYm9ydFwiICkge1xuXHRcdFx0XHRcdFx0XHRcdHhoci5hYm9ydCgpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCB0eXBlID09PSBcImVycm9yXCIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29tcGxldGUoXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBmaWxlOiBwcm90b2NvbCBhbHdheXMgeWllbGRzIHN0YXR1cyAwOyBzZWUgIzg2MDUsICMxNDIwN1xuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1cyxcblx0XHRcdFx0XHRcdFx0XHRcdHhoci5zdGF0dXNUZXh0XG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZShcblx0XHRcdFx0XHRcdFx0XHRcdHhoclN1Y2Nlc3NTdGF0dXNbIHhoci5zdGF0dXMgXSB8fCB4aHIuc3RhdHVzLFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1c1RleHQsXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRTlcblx0XHRcdFx0XHRcdFx0XHRcdC8vIEFjY2Vzc2luZyBiaW5hcnktZGF0YSByZXNwb25zZVRleHQgdGhyb3dzIGFuIGV4Y2VwdGlvblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gKCMxMTQyNilcblx0XHRcdFx0XHRcdFx0XHRcdHR5cGVvZiB4aHIucmVzcG9uc2VUZXh0ID09PSBcInN0cmluZ1wiID8ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0OiB4aHIucmVzcG9uc2VUZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHR9IDogdW5kZWZpbmVkLFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0Ly8gTGlzdGVuIHRvIGV2ZW50c1xuXHRcdFx0XHR4aHIub25sb2FkID0gY2FsbGJhY2soKTtcblx0XHRcdFx0eGhyLm9uZXJyb3IgPSBjYWxsYmFjayhcImVycm9yXCIpO1xuXG5cdFx0XHRcdC8vIENyZWF0ZSB0aGUgYWJvcnQgY2FsbGJhY2tcblx0XHRcdFx0Y2FsbGJhY2sgPSB4aHJDYWxsYmFja3NbIGlkIF0gPSBjYWxsYmFjayhcImFib3J0XCIpO1xuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Ly8gRG8gc2VuZCB0aGUgcmVxdWVzdCAodGhpcyBtYXkgcmFpc2UgYW4gZXhjZXB0aW9uKVxuXHRcdFx0XHRcdHhoci5zZW5kKCBvcHRpb25zLmhhc0NvbnRlbnQgJiYgb3B0aW9ucy5kYXRhIHx8IG51bGwgKTtcblx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cdFx0XHRcdFx0Ly8gIzE0NjgzOiBPbmx5IHJldGhyb3cgaWYgdGhpcyBoYXNuJ3QgYmVlbiBub3RpZmllZCBhcyBhbiBlcnJvciB5ZXRcblx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdGFib3J0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRjYWxsYmFjaygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxufSk7XG5cblxuXG5cbi8vIEluc3RhbGwgc2NyaXB0IGRhdGFUeXBlXG5qUXVlcnkuYWpheFNldHVwKHtcblx0YWNjZXB0czoge1xuXHRcdHNjcmlwdDogXCJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdFwiXG5cdH0sXG5cdGNvbnRlbn
9673RzOiB7XG5cdFx0c2NyaXB0OiAvKD86amF2YXxlY21hKXNjcmlwdC9cblx0fSxcblx0Y29udmVydGVyczoge1xuXHRcdFwidGV4dCBzY3JpcHRcIjogZnVuY3Rpb24oIHRleHQgKSB7XG5cdFx0XHRqUXVlcnkuZ2xvYmFsRXZhbCggdGV4dCApO1xuXHRcdFx0cmV0dXJuIHRleHQ7XG5cdFx0fVxuXHR9XG59KTtcblxuLy8gSGFuZGxlIGNhY2hlJ3Mgc3BlY2lhbCBjYXNlIGFuZCBjcm9zc0RvbWFpblxualF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIFwic2NyaXB0XCIsIGZ1bmN0aW9uKCBzICkge1xuXHRpZiAoIHMuY2FjaGUgPT09IHVuZGVmaW5lZCApIHtcblx0XHRzLmNhY2hlID0gZmFsc2U7XG5cdH1cblx0aWYgKCBzLmNyb3NzRG9tYWluICkge1xuXHRcdHMudHlwZSA9IFwiR0VUXCI7XG5cdH1cbn0pO1xuXG4vLyBCaW5kIHNjcmlwdCB0YWcgaGFjayB0cmFuc3BvcnRcbmpRdWVyeS5hamF4VHJhbnNwb3J0KCBcInNjcmlwdFwiLCBmdW5jdGlvbiggcyApIHtcblx0Ly8gVGhpcyB0cmFuc3BvcnQgb25seSBkZWFscyB3aXRoIGNyb3NzIGRvbWFpbiByZXF1ZXN0c1xuXHRpZiAoIHMuY3Jvc3NEb21haW4gKSB7XG5cdFx0dmFyIHNjcmlwdCwgY2FsbGJhY2s7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNlbmQ6IGZ1bmN0aW9uKCBfLCBjb21wbGV0ZSApIHtcblx0XHRcdFx0c2NyaXB0ID0galF1ZXJ5KFwiPHNjcmlwdD5cIikucHJvcCh7XG5cdFx0XHRcdFx0YXN5bmM6IHRydWUsXG5cdFx0XHRcdFx0Y2hhcnNldDogcy5zY3JpcHRDaGFyc2V0LFxuXHRcdFx0XHRcdHNyYzogcy51cmxcblx0XHRcdFx0fSkub24oXG5cdFx0XHRcdFx0XCJsb2FkIGVycm9yXCIsXG5cdFx0XHRcdFx0Y2FsbGJhY2sgPSBmdW5jdGlvbiggZXZ0ICkge1xuXHRcdFx0XHRcdFx0c2NyaXB0LnJlbW92ZSgpO1xuXHRcdFx0XHRcdFx0Y2FsbGJhY2sgPSBudWxsO1xuXHRcdFx0XHRcdFx0aWYgKCBldnQgKSB7XG5cdFx0XHRcdFx0XHRcdGNvbXBsZXRlKCBldnQudHlwZSA9PT0gXCJlcnJvclwiID8gNDA0IDogMjAwLCBldnQudHlwZSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdFx0ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0WyAwIF0gKTtcblx0XHRcdH0sXG5cdFx0XHRhYm9ydDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH1cbn0pO1xuXG5cblxuXG52YXIgb2xkQ2FsbGJhY2tzID0gW10sXG5cdHJqc29ucCA9IC8oPSlcXD8oPz0mfCQpfFxcP1xcPy87XG5cbi8vIERlZmF1bHQganNvbnAgc2V0dGluZ3NcbmpRdWVyeS5hamF4U2V0dXAoe1xuXHRqc29ucDogXCJjYWxsYmFja1wiLFxuXHRqc29ucENhbGxiYWNrOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgY2FsbGJhY2sgPSBvbGRDYWxsYmFja3MucG9wKCkgfHwgKCBqUXVlcnkuZXhwYW5kbyArIFwiX1wiICsgKCBub25jZSsrICkgKTtcblx0XHR0aGlzWyBjYWxsYmFjayBdID0gdHJ1ZTtcblx0XHRyZXR1cm4gY2FsbGJhY2s7XG5cdH1cbn0pO1xuXG4vLyBEZXRlY3QsIG5vcm1hbGl6ZSBvcHRpb25zIGFuZCBpbnN0YWxsIGNhbGxiYWNrcyBmb3IganNvbnAgcmVxdWVzdHNcbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBcImpzb24ganNvbnBcIiwgZnVuY3Rpb24oIHMsIG9yaWdpbmFsU2V0dGluZ3MsIGpxWEhSICkge1xuXG5cdHZhciBjYWxsYmFja05hbWUsIG92ZXJ3cml0dGVuLCByZXNwb25zZUNvbnRhaW5lcixcblx0XHRqc29uUHJvcCA9IHMuanNvbnAgIT09IGZhbHNlICYmICggcmpzb25wLnRlc3QoIHMudXJsICkgP1xuXHRcdFx0XCJ1cmxcIiA6XG5cdFx0XHR0eXBlb2Ygcy5kYXRhID09PSBcInN0cmluZ1wiICYmICEoIHMuY29udGVudFR5cGUgfHwgXCJcIiApLmluZGV4T2YoXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIikgJiYgcmpzb25wLnRlc3QoIHMuZGF0YSApICYmIFwiZGF0YVwiXG5cdFx0KTtcblxuXHQvLyBIYW5kbGUgaWZmIHRoZSBleHBlY3RlZCBkYXRhIHR5cGUgaXMgXCJqc29ucFwiIG9yIHdlIGhhdmUgYSBwYXJhbWV0ZXIgdG8gc2V0XG5cdGlmICgganNvblByb3AgfHwgcy5kYXRhVHlwZXNbIDAgXSA9PT0gXCJqc29ucFwiICkge1xuXG5cdFx0Ly8gR2V0IGNhbGxiYWNrIG5hbWUsIHJlbWVtYmVyaW5nIHByZWV4aXN0aW5nIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBpdFxuXHRcdGNhbGxiYWNrTmFtZSA9IHMuanNvbnBDYWxsYmFjayA9IGpRdWVyeS5pc0Z1bmN0aW9uKCBzLmpzb25wQ2FsbGJhY2sgKSA/XG5cdFx0XHRzLmpzb25wQ2FsbGJhY2soKSA6XG5cdFx0XHRzLmpzb25wQ2FsbGJhY2s7XG5cblx0XHQvLyBJbnNlcnQgY2FsbGJhY2sgaW50byB1cmwgb3IgZm9ybSBkYXRhXG5cdFx0aWYgKCBqc29uUHJvcCApIHtcblx0XHRcdHNbIGpzb25Qcm9wIF0gPSBzWyBqc29uUHJvcCBdLnJlcGxhY2UoIHJqc29ucCwgXCIkMVwiICsgY2FsbGJhY2tOYW1lICk7XG5cdFx0fSBlbHNlIGlmICggcy5qc29ucCAhPT0gZmFsc2UgKSB7XG5cdFx0XHRzLnVybCArPSAoIHJxdWVyeS50ZXN0KCBzLnVybCApID8gXCImXCIgOiBcIj9cIiApICsgcy5qc29ucCArIFwiPVwiICsgY2FsbGJhY2tOYW1lO1xuXHRcdH1cblxuXHRcdC8vIFVzZSBkYXRhIGNvbnZlcnRlciB0byByZXRyaWV2ZSBqc29uIGFmdGVyIHNjcmlwdCBleGVjdXRpb25cblx0XHRzLmNvbnZlcnRlcnNbXCJzY3JpcHQganNvblwiXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCAhcmVzcG9uc2VDb250YWluZXIgKSB7XG5cdFx0XHRcdGpRdWVyeS5lcnJvciggY2FsbGJhY2tOYW1lICsgXCIgd2FzIG5vdCBjYWxsZWRcIiApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3BvbnNlQ29udGFpbmVyWyAwIF07XG5cdFx0fTtcblxuXHRcdC8vIGZvcmNlIGpzb24gZGF0YVR5cGVcblx0XHRzLmRhdGFUeXBlc1sgMCBdID0gXCJqc29uXCI7XG5cblx0XHQvLyBJbnN0YWxsIGNhbGxiYWNrXG5cdFx0b3ZlcndyaXR0ZW4gPSB3aW5kb3dbIGNhbGxiYWNrTmFtZSBdO1xuXHRcdHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdHJlc3BvbnNlQ29udGFpbmVyID0gYXJndW1lbnRzO1xuXHRcdH07XG5cblx0XHQvLyBDbGVhbi11cCBmdW5jdGlvbiAoZmlyZXMgYWZ0ZXIgY29udmVydGVycylcblx0XHRqcVhIUi5hbHdheXMoZnVuY3Rpb24oKSB7XG5cdFx0XHQvLyBSZXN0b3JlIHByZWV4aXN0aW5nIHZhbHVlXG5cdFx0XHR3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gb3ZlcndyaXR0ZW47XG5cblx0XHRcdC8vIFNhdmUgYmFjayBhcyBmcmVlXG5cdFx0XHRpZiAoIHNbIGNhbGxiYWNrTmFtZSBdICkge1xuXHRcdFx0XHQvLyBtYWtlIHN1cmUgdGhhdCByZS11c2luZyB0aGUgb3B0aW9ucyBkb2Vzbid0IHNjcmV3IHRoaW5ncyBhcm91bmRcblx0XHRcdFx0cy5qc29ucENhbGxiYWNrID0gb3JpZ2luYWxTZXR0aW5ncy5qc29ucENhbGxiYWNrO1xuXG5cdFx0XHRcdC8vIHNhdmUgdGhlIGNhbGxiYWNrIG5hbWUgZm9yIGZ1dHVyZSB1c2Vcblx0XHRcdFx0b2xkQ2FsbGJhY2tzLnB1c2goIGNhbGxiYWNrTmFtZSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDYWxsIGlmIGl0IHdhcyBhIGZ1bmN0aW9uIGFuZCB3ZSBoYXZlIGEgcmVzcG9uc2Vcblx0XHRcdGlmICggcmVzcG9uc2VDb250YWluZXIgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIG92ZXJ3cml0dGVuICkgKSB7XG5cdFx0XHRcdG92ZXJ3cml0dGVuKCByZXNwb25zZUNvbnRhaW5lclsgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHJlc3BvbnNlQ29udGFpbmVyID0gb3ZlcndyaXR0ZW4gPSB1bmRlZmluZWQ7XG5cdFx0fSk7XG5cblx0XHQvLyBEZWxlZ2F0ZSB0byBzY3JpcHRcblx0XHRyZXR1cm4gXCJzY3JpcHRcIjtcblx0fVxufSk7XG5cblxuXG5cbi8vIGRhdGE6IHN0cmluZyBvZiBodG1sXG4vLyBjb250ZXh0IChvcHRpb25hbCk6IElmIHNwZWNpZmllZCwgdGhlIGZyYWdtZW50IHdpbGwgYmUgY3JlYXRlZCBpbiB0aGlzIGNvbnRleHQsIGRlZmF1bHRzIHRvIGRvY3VtZW50XG4vLyBrZWVwU2NyaXB0cyAob3B0aW9uYWwpOiBJZiB0cnVlLCB3aWxsIGluY2x1ZGUgc2NyaXB0cyBwYXNzZWQgaW4gdGhlIGh0bWwgc3RyaW5nXG5qUXVlcnkucGFyc2VIVE1MID0gZnVuY3Rpb24oIGRhdGEsIGNvbnRleHQsIGtlZXBTY3JpcHRzICkge1xuXHRpZiAoICFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiICkge1xuXHRcdHJldHVybi
9673BudWxsO1xuXHR9XG5cdGlmICggdHlwZW9mIGNvbnRleHQgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdGtlZXBTY3JpcHRzID0gY29udGV4dDtcblx0XHRjb250ZXh0ID0gZmFsc2U7XG5cdH1cblx0Y29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1lbnQ7XG5cblx0dmFyIHBhcnNlZCA9IHJzaW5nbGVUYWcuZXhlYyggZGF0YSApLFxuXHRcdHNjcmlwdHMgPSAha2VlcFNjcmlwdHMgJiYgW107XG5cblx0Ly8gU2luZ2xlIHRhZ1xuXHRpZiAoIHBhcnNlZCApIHtcblx0XHRyZXR1cm4gWyBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIHBhcnNlZFsxXSApIF07XG5cdH1cblxuXHRwYXJzZWQgPSBqUXVlcnkuYnVpbGRGcmFnbWVudCggWyBkYXRhIF0sIGNvbnRleHQsIHNjcmlwdHMgKTtcblxuXHRpZiAoIHNjcmlwdHMgJiYgc2NyaXB0cy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5KCBzY3JpcHRzICkucmVtb3ZlKCk7XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbXSwgcGFyc2VkLmNoaWxkTm9kZXMgKTtcbn07XG5cblxuLy8gS2VlcCBhIGNvcHkgb2YgdGhlIG9sZCBsb2FkIG1ldGhvZFxudmFyIF9sb2FkID0galF1ZXJ5LmZuLmxvYWQ7XG5cbi8qKlxuICogTG9hZCBhIHVybCBpbnRvIGEgcGFnZVxuICovXG5qUXVlcnkuZm4ubG9hZCA9IGZ1bmN0aW9uKCB1cmwsIHBhcmFtcywgY2FsbGJhY2sgKSB7XG5cdGlmICggdHlwZW9mIHVybCAhPT0gXCJzdHJpbmdcIiAmJiBfbG9hZCApIHtcblx0XHRyZXR1cm4gX2xvYWQuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHR9XG5cblx0dmFyIHNlbGVjdG9yLCB0eXBlLCByZXNwb25zZSxcblx0XHRzZWxmID0gdGhpcyxcblx0XHRvZmYgPSB1cmwuaW5kZXhPZihcIiBcIik7XG5cblx0aWYgKCBvZmYgPj0gMCApIHtcblx0XHRzZWxlY3RvciA9IGpRdWVyeS50cmltKCB1cmwuc2xpY2UoIG9mZiApICk7XG5cdFx0dXJsID0gdXJsLnNsaWNlKCAwLCBvZmYgKTtcblx0fVxuXG5cdC8vIElmIGl0J3MgYSBmdW5jdGlvblxuXHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBwYXJhbXMgKSApIHtcblxuXHRcdC8vIFdlIGFzc3VtZSB0aGF0IGl0J3MgdGhlIGNhbGxiYWNrXG5cdFx0Y2FsbGJhY2sgPSBwYXJhbXM7XG5cdFx0cGFyYW1zID0gdW5kZWZpbmVkO1xuXG5cdC8vIE90aGVyd2lzZSwgYnVpbGQgYSBwYXJhbSBzdHJpbmdcblx0fSBlbHNlIGlmICggcGFyYW1zICYmIHR5cGVvZiBwYXJhbXMgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0dHlwZSA9IFwiUE9TVFwiO1xuXHR9XG5cblx0Ly8gSWYgd2UgaGF2ZSBlbGVtZW50cyB0byBtb2RpZnksIG1ha2UgdGhlIHJlcXVlc3Rcblx0aWYgKCBzZWxmLmxlbmd0aCA+IDAgKSB7XG5cdFx0alF1ZXJ5LmFqYXgoe1xuXHRcdFx0dXJsOiB1cmwsXG5cblx0XHRcdC8vIGlmIFwidHlwZVwiIHZhcmlhYmxlIGlzIHVuZGVmaW5lZCwgdGhlbiBcIkdFVFwiIG1ldGhvZCB3aWxsIGJlIHVzZWRcblx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRkYXRhVHlwZTogXCJodG1sXCIsXG5cdFx0XHRkYXRhOiBwYXJhbXNcblx0XHR9KS5kb25lKGZ1bmN0aW9uKCByZXNwb25zZVRleHQgKSB7XG5cblx0XHRcdC8vIFNhdmUgcmVzcG9uc2UgZm9yIHVzZSBpbiBjb21wbGV0ZSBjYWxsYmFja1xuXHRcdFx0cmVzcG9uc2UgPSBhcmd1bWVudHM7XG5cblx0XHRcdHNlbGYuaHRtbCggc2VsZWN0b3IgP1xuXG5cdFx0XHRcdC8vIElmIGEgc2VsZWN0b3Igd2FzIHNwZWNpZmllZCwgbG9jYXRlIHRoZSByaWdodCBlbGVtZW50cyBpbiBhIGR1bW15IGRpdlxuXHRcdFx0XHQvLyBFeGNsdWRlIHNjcmlwdHMgdG8gYXZvaWQgSUUgJ1Blcm1pc3Npb24gRGVuaWVkJyBlcnJvcnNcblx0XHRcdFx0alF1ZXJ5KFwiPGRpdj5cIikuYXBwZW5kKCBqUXVlcnkucGFyc2VIVE1MKCByZXNwb25zZVRleHQgKSApLmZpbmQoIHNlbGVjdG9yICkgOlxuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSB1c2UgdGhlIGZ1bGwgcmVzdWx0XG5cdFx0XHRcdHJlc3BvbnNlVGV4dCApO1xuXG5cdFx0fSkuY29tcGxldGUoIGNhbGxiYWNrICYmIGZ1bmN0aW9uKCBqcVhIUiwgc3RhdHVzICkge1xuXHRcdFx0c2VsZi5lYWNoKCBjYWxsYmFjaywgcmVzcG9uc2UgfHwgWyBqcVhIUi5yZXNwb25zZVRleHQsIHN0YXR1cywganFYSFIgXSApO1xuXHRcdH0pO1xuXHR9XG5cblx0cmV0dXJuIHRoaXM7XG59O1xuXG5cblxuXG4vLyBBdHRhY2ggYSBidW5jaCBvZiBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIGNvbW1vbiBBSkFYIGV2ZW50c1xualF1ZXJ5LmVhY2goIFsgXCJhamF4U3RhcnRcIiwgXCJhamF4U3RvcFwiLCBcImFqYXhDb21wbGV0ZVwiLCBcImFqYXhFcnJvclwiLCBcImFqYXhTdWNjZXNzXCIsIFwiYWpheFNlbmRcIiBdLCBmdW5jdGlvbiggaSwgdHlwZSApIHtcblx0alF1ZXJ5LmZuWyB0eXBlIF0gPSBmdW5jdGlvbiggZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGUsIGZuICk7XG5cdH07XG59KTtcblxuXG5cblxualF1ZXJ5LmV4cHIuZmlsdGVycy5hbmltYXRlZCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4galF1ZXJ5LmdyZXAoalF1ZXJ5LnRpbWVycywgZnVuY3Rpb24oIGZuICkge1xuXHRcdHJldHVybiBlbGVtID09PSBmbi5lbGVtO1xuXHR9KS5sZW5ndGg7XG59O1xuXG5cblxuXG52YXIgZG9jRWxlbSA9IHdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbi8qKlxuICogR2V0cyBhIHdpbmRvdyBmcm9tIGFuIGVsZW1lbnRcbiAqL1xuZnVuY3Rpb24gZ2V0V2luZG93KCBlbGVtICkge1xuXHRyZXR1cm4galF1ZXJ5LmlzV2luZG93KCBlbGVtICkgPyBlbGVtIDogZWxlbS5ub2RlVHlwZSA9PT0gOSAmJiBlbGVtLmRlZmF1bHRWaWV3O1xufVxuXG5qUXVlcnkub2Zmc2V0ID0ge1xuXHRzZXRPZmZzZXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBpICkge1xuXHRcdHZhciBjdXJQb3NpdGlvbiwgY3VyTGVmdCwgY3VyQ1NTVG9wLCBjdXJUb3AsIGN1ck9mZnNldCwgY3VyQ1NTTGVmdCwgY2FsY3VsYXRlUG9zaXRpb24sXG5cdFx0XHRwb3NpdGlvbiA9IGpRdWVyeS5jc3MoIGVsZW0sIFwicG9zaXRpb25cIiApLFxuXHRcdFx0Y3VyRWxlbSA9IGpRdWVyeSggZWxlbSApLFxuXHRcdFx0cHJvcHMgP
9673SB7fTtcblxuXHRcdC8vIFNldCBwb3NpdGlvbiBmaXJzdCwgaW4tY2FzZSB0b3AvbGVmdCBhcmUgc2V0IGV2ZW4gb24gc3RhdGljIGVsZW1cblx0XHRpZiAoIHBvc2l0aW9uID09PSBcInN0YXRpY1wiICkge1xuXHRcdFx0ZWxlbS5zdHlsZS5wb3NpdGlvbiA9IFwicmVsYXRpdmVcIjtcblx0XHR9XG5cblx0XHRjdXJPZmZzZXQgPSBjdXJFbGVtLm9mZnNldCgpO1xuXHRcdGN1ckNTU1RvcCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwidG9wXCIgKTtcblx0XHRjdXJDU1NMZWZ0ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJsZWZ0XCIgKTtcblx0XHRjYWxjdWxhdGVQb3NpdGlvbiA9ICggcG9zaXRpb24gPT09IFwiYWJzb2x1dGVcIiB8fCBwb3NpdGlvbiA9PT0gXCJmaXhlZFwiICkgJiZcblx0XHRcdCggY3VyQ1NTVG9wICsgY3VyQ1NTTGVmdCApLmluZGV4T2YoXCJhdXRvXCIpID4gLTE7XG5cblx0XHQvLyBOZWVkIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHBvc2l0aW9uIGlmIGVpdGhlclxuXHRcdC8vIHRvcCBvciBsZWZ0IGlzIGF1dG8gYW5kIHBvc2l0aW9uIGlzIGVpdGhlciBhYnNvbHV0ZSBvciBmaXhlZFxuXHRcdGlmICggY2FsY3VsYXRlUG9zaXRpb24gKSB7XG5cdFx0XHRjdXJQb3NpdGlvbiA9IGN1ckVsZW0ucG9zaXRpb24oKTtcblx0XHRcdGN1clRvcCA9IGN1clBvc2l0aW9uLnRvcDtcblx0XHRcdGN1ckxlZnQgPSBjdXJQb3NpdGlvbi5sZWZ0O1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1clRvcCA9IHBhcnNlRmxvYXQoIGN1ckNTU1RvcCApIHx8IDA7XG5cdFx0XHRjdXJMZWZ0ID0gcGFyc2VGbG9hdCggY3VyQ1NTTGVmdCApIHx8IDA7XG5cdFx0fVxuXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0aW9ucyApICkge1xuXHRcdFx0b3B0aW9ucyA9IG9wdGlvbnMuY2FsbCggZWxlbSwgaSwgY3VyT2Zmc2V0ICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHRpb25zLnRvcCAhPSBudWxsICkge1xuXHRcdFx0cHJvcHMudG9wID0gKCBvcHRpb25zLnRvcCAtIGN1ck9mZnNldC50b3AgKSArIGN1clRvcDtcblx0XHR9XG5cdFx0aWYgKCBvcHRpb25zLmxlZnQgIT0gbnVsbCApIHtcblx0XHRcdHByb3BzLmxlZnQgPSAoIG9wdGlvbnMubGVmdCAtIGN1ck9mZnNldC5sZWZ0ICkgKyBjdXJMZWZ0O1xuXHRcdH1cblxuXHRcdGlmICggXCJ1c2luZ1wiIGluIG9wdGlvbnMgKSB7XG5cdFx0XHRvcHRpb25zLnVzaW5nLmNhbGwoIGVsZW0sIHByb3BzICk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3VyRWxlbS5jc3MoIHByb3BzICk7XG5cdFx0fVxuXHR9XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0b2Zmc2V0OiBmdW5jdGlvbiggb3B0aW9ucyApIHtcblx0XHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gb3B0aW9ucyA9PT0gdW5kZWZpbmVkID9cblx0XHRcdFx0dGhpcyA6XG5cdFx0XHRcdHRoaXMuZWFjaChmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0XHRqUXVlcnkub2Zmc2V0LnNldE9mZnNldCggdGhpcywgb3B0aW9ucywgaSApO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cblx0XHR2YXIgZG9jRWxlbSwgd2luLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXSxcblx0XHRcdGJveCA9IHsgdG9wOiAwLCBsZWZ0OiAwIH0sXG5cdFx0XHRkb2MgPSBlbGVtICYmIGVsZW0ub3duZXJEb2N1bWVudDtcblxuXHRcdGlmICggIWRvYyApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRkb2NFbGVtID0gZG9jLmRvY3VtZW50RWxlbWVudDtcblxuXHRcdC8vIE1ha2Ugc3VyZSBpdCdzIG5vdCBhIGRpc2Nvbm5lY3RlZCBET00gbm9kZVxuXHRcdGlmICggIWpRdWVyeS5jb250YWlucyggZG9jRWxlbSwgZWxlbSApICkge1xuXHRcdFx0cmV0dXJuIGJveDtcblx0XHR9XG5cblx0XHQvLyBTdXBwb3J0OiBCbGFja0JlcnJ5IDUsIGlPUyAzIChvcmlnaW5hbCBpUGhvbmUpXG5cdFx0Ly8gSWYgd2UgZG9uJ3QgaGF2ZSBnQkNSLCBqdXN0IHVzZSAwLDAgcmF0aGVyIHRoYW4gZXJyb3Jcblx0XHRpZiAoIHR5cGVvZiBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCAhPT0gc3RydW5kZWZpbmVkICkge1xuXHRcdFx0Ym94ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0XHR9XG5cdFx0d2luID0gZ2V0V2luZG93KCBkb2MgKTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0dG9wOiBib3gudG9wICsgd2luLnBhZ2VZT2Zmc2V0IC0gZG9jRWxlbS5jbGllbnRUb3AsXG5cdFx0XHRsZWZ0OiBib3gubGVmdCArIHdpbi5wYWdlWE9mZnNldCAtIGRvY0VsZW0uY2xpZW50TGVmdFxuXHRcdH07XG5cdH0sXG5cblx0cG9zaXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggIXRoaXNbIDAgXSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR2YXIgb2Zmc2V0UGFyZW50LCBvZmZzZXQsXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdLFxuXHRcdFx0cGFyZW50T2Zmc2V0ID0geyB0b3A6IDAsIGxlZnQ6IDAgfTtcblxuXHRcdC8vIEZpeGVkIGVsZW1lbnRzIGFyZSBvZmZzZXQgZnJvbSB3aW5kb3cgKHBhcmVudE9mZnNldCA9IHt0b3A6MCwgbGVmdDogMH0sIGJlY2F1c2UgaXQgaXMgaXRzIG9ubHkgb2Zmc2V0IHBhcmVudFxuXHRcdGlmICggalF1ZXJ5LmNzcyggZWxlbSwgXCJwb3NpdGlvblwiICkgPT09IFwiZml4ZWRcIiApIHtcblx0XHRcdC8vIEFzc3VtZSBnZXRCb3VuZGluZ0NsaWVudFJlY3QgaXMgdGhlcmUgd2hlbiBjb21wdXRlZCBwb3NpdGlvbiBpcyBmaXhlZFxuXHRcdFx0b2Zmc2V0ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBHZXQgKnJlYWwqIG9mZnNldFBhcmVudFxuXHRcdFx0b2Zmc2V0UGFyZW50ID0gdGhpcy5vZmZzZXRQYXJlbnQoKTtcblxuXHRcdFx0Ly8gR2V0IGNvcnJlY3Qgb2Zmc2V0c1xuXHRcdFx0b2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTtcblx0XHRcdGlmICggIWpRdWVyeS5ub2RlTmFtZSggb2Zmc2V0UGFyZW50WyAwIF0sIFwiaHRtbFwiICkgKSB7XG5cdFx0XHRcdHBhcmVudE9mZnNldCA9IG9mZnNldFBhcmVudC5vZmZzZXQoKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIG9mZnNldFBhcmVudCBib3JkZXJzXG5cdFx0XHRwYXJlbnRPZmZzZXQudG9wICs9IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudFsgMCBdLCBcImJvcmRlclRvcFdpZHRoXCIsIHRydWUgKTtcblx0XHRcdHBhcmVudE9mZnNldC5sZWZ0ICs9IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudFsgMCBdLCBcImJvcmRlckxlZnRXaWR0aFwiLCB0cnVlICk7XG5cdFx0fVxuXG5cdFx0Ly8gU3VidHJhY3QgcGFyZW50IG9mZnNldHMgYW5kIGVsZW1lbnQgbWFyZ2luc1xuXHRcdHJldHVybi
9673B7XG5cdFx0XHR0b3A6IG9mZnNldC50b3AgLSBwYXJlbnRPZmZzZXQudG9wIC0galF1ZXJ5LmNzcyggZWxlbSwgXCJtYXJnaW5Ub3BcIiwgdHJ1ZSApLFxuXHRcdFx0bGVmdDogb2Zmc2V0LmxlZnQgLSBwYXJlbnRPZmZzZXQubGVmdCAtIGpRdWVyeS5jc3MoIGVsZW0sIFwibWFyZ2luTGVmdFwiLCB0cnVlIClcblx0XHR9O1xuXHR9LFxuXG5cdG9mZnNldFBhcmVudDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIG9mZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50IHx8IGRvY0VsZW07XG5cblx0XHRcdHdoaWxlICggb2Zmc2V0UGFyZW50ICYmICggIWpRdWVyeS5ub2RlTmFtZSggb2Zmc2V0UGFyZW50LCBcImh0bWxcIiApICYmIGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJwb3NpdGlvblwiICkgPT09IFwic3RhdGljXCIgKSApIHtcblx0XHRcdFx0b2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIG9mZnNldFBhcmVudCB8fCBkb2NFbGVtO1xuXHRcdH0pO1xuXHR9XG59KTtcblxuLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5kIHNjcm9sbFRvcCBtZXRob2RzXG5qUXVlcnkuZWFjaCggeyBzY3JvbGxMZWZ0OiBcInBhZ2VYT2Zmc2V0XCIsIHNjcm9sbFRvcDogXCJwYWdlWU9mZnNldFwiIH0sIGZ1bmN0aW9uKCBtZXRob2QsIHByb3AgKSB7XG5cdHZhciB0b3AgPSBcInBhZ2VZT2Zmc2V0XCIgPT09IHByb3A7XG5cblx0alF1ZXJ5LmZuWyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG1ldGhvZCwgdmFsICkge1xuXHRcdFx0dmFyIHdpbiA9IGdldFdpbmRvdyggZWxlbSApO1xuXG5cdFx0XHRpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gd2luID8gd2luWyBwcm9wIF0gOiBlbGVtWyBtZXRob2QgXTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB3aW4gKSB7XG5cdFx0XHRcdHdpbi5zY3JvbGxUbyhcblx0XHRcdFx0XHQhdG9wID8gdmFsIDogd2luZG93LnBhZ2VYT2Zmc2V0LFxuXHRcdFx0XHRcdHRvcCA/IHZhbCA6IHdpbmRvdy5wYWdlWU9mZnNldFxuXHRcdFx0XHQpO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlbGVtWyBtZXRob2QgXSA9IHZhbDtcblx0XHRcdH1cblx0XHR9LCBtZXRob2QsIHZhbCwgYXJndW1lbnRzLmxlbmd0aCwgbnVsbCApO1xuXHR9O1xufSk7XG5cbi8vIFN1cHBvcnQ6IFNhZmFyaTw3KywgQ2hyb21lPDM3K1xuLy8gQWRkIHRoZSB0b3AvbGVmdCBjc3NIb29rcyB1c2luZyBqUXVlcnkuZm4ucG9zaXRpb25cbi8vIFdlYmtpdCBidWc6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTA4NFxuLy8gQmxpbmsgYnVnOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MjI5MjgwXG4vLyBnZXRDb21wdXRlZFN0eWxlIHJldHVybnMgcGVyY2VudCB3aGVuIHNwZWNpZmllZCBmb3IgdG9wL2xlZnQvYm90dG9tL3JpZ2h0O1xuLy8gcmF0aGVyIHRoYW4gbWFrZSB0aGUgY3NzIG1vZHVsZSBkZXBlbmQgb24gdGhlIG9mZnNldCBtb2R1bGUsIGp1c3QgY2hlY2sgZm9yIGl0IGhlcmVcbmpRdWVyeS5lYWNoKCBbIFwidG9wXCIsIFwibGVmdFwiIF0sIGZ1bmN0aW9uKCBpLCBwcm9wICkge1xuXHRqUXVlcnkuY3NzSG9va3NbIHByb3AgXSA9IGFkZEdldEhvb2tJZiggc3VwcG9ydC5waXhlbFBvc2l0aW9uLFxuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcblx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0XHRcdGNvbXB1dGVkID0gY3VyQ1NTKCBlbGVtLCBwcm9wICk7XG5cdFx0XHRcdC8vIElmIGN1ckNTUyByZXR1cm5zIHBlcmNlbnRhZ2UsIGZhbGxiYWNrIHRvIG9mZnNldFxuXHRcdFx0XHRyZXR1cm4gcm51bW5vbnB4LnRlc3QoIGNvbXB1dGVkICkgP1xuXHRcdFx0XHRcdGpRdWVyeSggZWxlbSApLnBvc2l0aW9uKClbIHByb3AgXSArIFwicHhcIiA6XG5cdFx0XHRcdFx0Y29tcHV0ZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xufSk7XG5cblxuLy8gQ3JlYXRlIGlubmVySGVpZ2h0LCBpbm5lcldpZHRoLCBoZWlnaHQsIHdpZHRoLCBvdXRlckhlaWdodCBhbmQgb3V0ZXJXaWR0aCBtZXRob2RzXG5qUXVlcnkuZWFjaCggeyBIZWlnaHQ6IFwiaGVpZ2h0XCIsIFdpZHRoOiBcIndpZHRoXCIgfSwgZnVuY3Rpb24oIG5hbWUsIHR5cGUgKSB7XG5cdGpRdWVyeS5lYWNoKCB7IHBhZGRpbmc6IFwiaW5uZXJcIiArIG5hbWUsIGNvbnRlbnQ6IHR5cGUsIFwiXCI6IFwib3V0ZXJcIiArIG5hbWUgfSwgZnVuY3Rpb24oIGRlZmF1bHRFeHRyYSwgZnVuY05hbWUgKSB7XG5cdFx0Ly8gTWFyZ2luIGlzIG9ubHkgZm9yIG91dGVySGVpZ2h0LCBvdXRlcldpZHRoXG5cdFx0alF1ZXJ5LmZuWyBmdW5jTmFtZSBdID0gZnVuY3Rpb24oIG1hcmdpbiwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgY2hhaW5hYmxlID0gYXJndW1lbnRzLmxlbmd0aCAmJiAoIGRlZmF1bHRFeHRyYSB8fCB0eXBlb2YgbWFyZ2luICE9PSBcImJvb2xlYW5cIiApLFxuXHRcdFx0XHRleHRyYSA9IGRlZmF1bHRFeHRyYSB8fCAoIG1hcmdpbiA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gdHJ1ZSA/IFwibWFyZ2luXCIgOiBcImJvcmRlclwiICk7XG5cblx0XHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCB2YWx1ZSApIHtcblx0XHRcdFx0dmFyIGRvYztcblxuXHRcdFx0XHRpZiAoIGpRdWVyeS5pc1dpbmRvdyggZWxlbSApICkge1xuXHRcdFx0XHRcdC8vIEFzIG9mIDUvOC8yMDEyIHRoaXMgd2lsbCB5aWVsZCBpbmNvcnJlY3QgcmVzdWx0cyBmb3IgTW9iaWxlIFNhZmFyaSwgYnV0IHRoZXJlXG5cdFx0XHRcdFx0Ly8gaXNuJ3QgYSB3aG9sZSBsb3Qgd2UgY2FuIGRvLiBTZWUgcHVsbCByZXF1ZXN0IGF0IHRoaXMgVVJMIGZvciBkaXNjdXNzaW9uOlxuXHRcdFx0XHRcdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L3B1bGwvNzY0XG5cdFx0XHRcdFx0cmV0dXJuIGVsZW0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyBcImNsaWVudFwiICsgbmFtZSBdO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gR2V0IGRvY3VtZW50IHdpZHRoIG9yIGhlaWdodFxuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdFx0ZG9jID0gZWxlbS5kb2N1bWVudEVsZW1lbnQ7XG5cblx0XHRcdFx0XHQvLyBFaXRoZXIgc2Nyb2xsW1dpZHRoL0hlaWdodF0gb3Igb2Zmc2V0W1dpZHRoL0hlaWdodF0gb3IgY2xpZW50W1dpZHRoL0hlaWdodF0sXG5cdFx0XHRcdFx0Ly8gd2hpY2hldmVyIGlzIGdy
9673ZWF0ZXN0XG5cdFx0XHRcdFx0cmV0dXJuIE1hdGgubWF4KFxuXHRcdFx0XHRcdFx0ZWxlbS5ib2R5WyBcInNjcm9sbFwiICsgbmFtZSBdLCBkb2NbIFwic2Nyb2xsXCIgKyBuYW1lIF0sXG5cdFx0XHRcdFx0XHRlbGVtLmJvZHlbIFwib2Zmc2V0XCIgKyBuYW1lIF0sIGRvY1sgXCJvZmZzZXRcIiArIG5hbWUgXSxcblx0XHRcdFx0XHRcdGRvY1sgXCJjbGllbnRcIiArIG5hbWUgXVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdFx0Ly8gR2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudCwgcmVxdWVzdGluZyBidXQgbm90IGZvcmNpbmcgcGFyc2VGbG9hdFxuXHRcdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIHR5cGUsIGV4dHJhICkgOlxuXG5cdFx0XHRcdFx0Ly8gU2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudFxuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgdHlwZSwgdmFsdWUsIGV4dHJhICk7XG5cdFx0XHR9LCB0eXBlLCBjaGFpbmFibGUgPyBtYXJnaW4gOiB1bmRlZmluZWQsIGNoYWluYWJsZSwgbnVsbCApO1xuXHRcdH07XG5cdH0pO1xufSk7XG5cblxuLy8gVGhlIG51bWJlciBvZiBlbGVtZW50cyBjb250YWluZWQgaW4gdGhlIG1hdGNoZWQgZWxlbWVudCBzZXRcbmpRdWVyeS5mbi5zaXplID0gZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzLmxlbmd0aDtcbn07XG5cbmpRdWVyeS5mbi5hbmRTZWxmID0galF1ZXJ5LmZuLmFkZEJhY2s7XG5cblxuXG5cbi8vIFJlZ2lzdGVyIGFzIGEgbmFtZWQgQU1EIG1vZHVsZSwgc2luY2UgalF1ZXJ5IGNhbiBiZSBjb25jYXRlbmF0ZWQgd2l0aCBvdGhlclxuLy8gZmlsZXMgdGhhdCBtYXkgdXNlIGRlZmluZSwgYnV0IG5vdCB2aWEgYSBwcm9wZXIgY29uY2F0ZW5hdGlvbiBzY3JpcHQgdGhhdFxuLy8gdW5kZXJzdGFuZHMgYW5vbnltb3VzIEFNRCBtb2R1bGVzLiBBIG5hbWVkIEFNRCBpcyBzYWZlc3QgYW5kIG1vc3Qgcm9idXN0XG4vLyB3YXkgdG8gcmVnaXN0ZXIuIExvd2VyY2FzZSBqcXVlcnkgaXMgdXNlZCBiZWNhdXNlIEFNRCBtb2R1bGUgbmFtZXMgYXJlXG4vLyBkZXJpdmVkIGZyb20gZmlsZSBuYW1lcywgYW5kIGpRdWVyeSBpcyBub3JtYWxseSBkZWxpdmVyZWQgaW4gYSBsb3dlcmNhc2Vcbi8vIGZpbGUgbmFtZS4gRG8gdGhpcyBhZnRlciBjcmVhdGluZyB0aGUgZ2xvYmFsIHNvIHRoYXQgaWYgYW4gQU1EIG1vZHVsZSB3YW50c1xuLy8gdG8gY2FsbCBub0NvbmZsaWN0IHRvIGhpZGUgdGhpcyB2ZXJzaW9uIG9mIGpRdWVyeSwgaXQgd2lsbCB3b3JrLlxuXG4vLyBOb3RlIHRoYXQgZm9yIG1heGltdW0gcG9ydGFiaWxpdHksIGxpYnJhcmllcyB0aGF0IGFyZSBub3QgalF1ZXJ5IHNob3VsZFxuLy8gZGVjbGFyZSB0aGVtc2VsdmVzIGFzIGFub255bW91cyBtb2R1bGVzLCBhbmQgYXZvaWQgc2V0dGluZyBhIGdsb2JhbCBpZiBhblxuLy8gQU1EIGxvYWRlciBpcyBwcmVzZW50LiBqUXVlcnkgaXMgYSBzcGVjaWFsIGNhc2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcmJ1cmtlL3JlcXVpcmVqcy93aWtpL1VwZGF0aW5nLWV4aXN0aW5nLWxpYnJhcmllcyN3aWtpLWFub25cblxuaWYgKCB0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCApIHtcblx0ZGVmaW5lKCBcImpxdWVyeVwiLCBbXSwgZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGpRdWVyeTtcblx0fSk7XG59XG5cblxuXG5cbnZhclxuXHQvLyBNYXAgb3ZlciBqUXVlcnkgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0X2pRdWVyeSA9IHdpbmRvdy5qUXVlcnksXG5cblx0Ly8gTWFwIG92ZXIgdGhlICQgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0XyQgPSB3aW5kb3cuJDtcblxualF1ZXJ5Lm5vQ29uZmxpY3QgPSBmdW5jdGlvbiggZGVlcCApIHtcblx0aWYgKCB3aW5kb3cuJCA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy4kID0gXyQ7XG5cdH1cblxuXHRpZiAoIGRlZXAgJiYgd2luZG93LmpRdWVyeSA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy5qUXVlcnkgPSBfalF1ZXJ5O1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeTtcbn07XG5cbi8vIEV4cG9zZSBqUXVlcnkgYW5kICQgaWRlbnRpZmllcnMsIGV2ZW4gaW4gQU1EXG4vLyAoIzcxMDIjY29tbWVudDoxMCwgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvcHVsbC81NTcpXG4vLyBhbmQgQ29tbW9uSlMgZm9yIGJyb3dzZXIgZW11bGF0b3JzICgjMTM1NjYpXG5pZiAoIHR5cGVvZiBub0dsb2JhbCA9PT0gc3RydW5kZWZpbmVkICkge1xuXHR3aW5kb3cualF1ZXJ5ID0gd2luZG93LiQgPSBqUXVlcnk7XG59XG5cblxuXG5cbnJldHVybiBqUXVlcnk7XG5cbn0pKTtcblxuOyBicm93c2VyaWZ5X3NoaW1fX2RlZmluZV9fbW9kdWxlX19leHBvcnRfXyh0eXBlb2YgJCAhPSBcInVuZGVmaW5lZFwiID8gJCA6IHdpbmRvdy4kKTtcblxufSkuY2FsbChnbG9iYWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZnVuY3Rpb24gZGVmaW5lRXhwb3J0KGV4KSB7IG1vZHVsZS5leHBvcnRzID0gZXg7IH0pO1xuIl19
9674},{}],3:[function(require,module,exports){
9675/*
9676     _ _      _       _
9677 ___| (_) ___| | __  (_)___
9678/ __| | |/ __| |/ /  | / __|
9679\__ \ | | (__|   < _ | \__ \
9680|___/_|_|\___|_|\_(_)/ |___/
9681                   |__/
9682
9683 Version: 1.8.0
9684  Author: Ken Wheeler
9685 Website: http://kenwheeler.github.io
9686    Docs: http://kenwheeler.github.io/slick
9687    Repo: http://github.com/kenwheeler/slick
9688  Issues: http://github.com/kenwheeler/slick/issues
9689
9690 */
9691/* global window, document, define, jQuery, setInterval, clearInterval */
9692;(function(factory) {
9693    'use strict';
9694    if (typeof define === 'function' && define.amd) {
9695        define(['jquery'], factory);
9696    } else if (typeof exports !== 'undefined') {
9697        module.exports = factory(require('jquery'));
9698    } else {
9699        factory(jQuery);
9700    }
9701
9702}(function($) {
9703    'use strict';
9704    var Slick = window.Slick || {};
9705
9706    Slick = (function() {
9707
9708        var instanceUid = 0;
9709
9710        function Slick(element, settings) {
9711
9712            var _ = this, dataSettings;
9713
9714            _.defaults = {
9715                accessibility: true,
9716                adaptiveHeight: false,
9717                appendArrows: $(element),
9718                appendDots: $(element),
9719                arrows: true,
9720                asNavFor: null,
9721                prevArrow: '<button class="slick-prev" aria-label="Previous" type="button">Previous</button>',
9722                nextArrow: '<button class="slick-next" aria-label="Next" type="button">Next</button>',
9723                autoplay: false,
9724                autoplaySpeed: 3000,
9725                centerMode: false,
9726                centerPadding: '50px',
9727                cssEase: 'ease',
9728                customPaging: function(slider, i) {
9729                    return $('<button type="button" />').text(i + 1);
9730                },
9731                dots: false,
9732                dotsClass: 'slick-dots',
9733                draggable: true,
9734                easing: 'linear',
9735                edgeFriction: 0.35,
9736                fade: false,
9737                focusOnSelect: false,
9738                focusOnChange: false,
9739                infinite: true,
9740                initialSlide: 0,
9741                lazyLoad: 'ondemand',
9742                mobileFirst: false,
9743                pauseOnHover: true,
9744                pauseOnFocus: true,
9745                pauseOnDotsHover: false,
9746                respondTo: 'window',
9747                responsive: null,
9748                rows: 1,
9749                rtl: false,
9750                slide: '',
9751                slidesPerRow: 1,
9752                slidesToShow: 1,
9753                slidesToScroll: 1,
9754                speed: 500,
9755                swipe: true,
9756                swipeToSlide: false,
9757                touchMove: true,
9758                touchThreshold: 5,
9759                useCSS: true,
9760                useTransform: true,
9761                variableWidth: false,
9762                vertical: false,
9763                verticalSwiping: false,
9764                waitForAnimate: true,
9765                zIndex: 1000
9766            };
9767
9768            _.initials = {
9769                animating: false,
9770                dragging: false,
9771                autoPlayTimer: null,
9772                currentDirection: 0,
9773                currentLeft: null,
9774                currentSlide: 0,
9775                direction: 1,
9776                $dots: null,
9777                listWidth: null,
9778                listHeight: null,
9779                loadIndex: 0,
9780                $nextArrow: null,
9781                $prevArrow: null,
9782                scrolling: false,
9783                slideCount: null,
9784                slideWidth: null,
9785                $slideTrack: null,
9786                $slides: null,
9787                sliding: false,
9788                slideOffset: 0,
9789                swipeLeft: null,
9790                swiping: false,
9791                $list: null,
9792                touchObject: {},
9793                transformsEnabled: false,
9794                unslicked: false
9795            };
9796
9797            $.extend(_, _.initials);
9798
9799            _.activeBreakpoint = null;
9800            _.animType = null;
9801            _.animProp = null;
9802            _.breakpoints = [];
9803            _.breakpointSettings = [];
9804            _.cssTransitions = false;
9805            _.focussed = false;
9806            _.interrupted = false;
9807            _.hidden = 'hidden';
9808            _.paused = true;
9809            _.positionProp = null;
9810            _.respondTo = null;
9811            _.rowCount = 1;
9812            _.shouldClick = true;
9813            _.$slider = $(element);
9814            _.$slidesCache = null;
9815            _.transformType = null;
9816            _.transitionType = null;
9817            _.visibilityChange = 'visibilitychange';
9818            _.windowWidth = 0;
9819            _.windowTimer = null;
9820
9821            dataSettings = $(element).data('slick') || {};
9822
9823            _.options = $.extend({}, _.defaults, settings, dataSettings);
9824
9825            _.currentSlide = _.options.initialSlide;
9826
9827            _.originalSettings = _.options;
9828
9829            if (typeof document.mozHidden !== 'undefined') {
9830                _.hidden = 'mozHidden';
9831                _.visibilityChange = 'mozvisibilitychange';
9832            } else if (typeof document.webkitHidden !== 'undefined') {
9833                _.hidden = 'webkitHidden';
9834                _.visibilityChange = 'webkitvisibilitychange';
9835            }
9836
9837            _.autoPlay = $.proxy(_.autoPlay, _);
9838            _.autoPlayClear = $.proxy(_.autoPlayClear, _);
9839            _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);
9840            _.changeSlide = $.proxy(_.changeSlide, _);
9841            _.clickHandler = $.proxy(_.clickHandler, _);
9842            _.selectHandler = $.proxy(_.selectHandler, _);
9843            _.setPosition = $.proxy(_.setPosition, _);
9844            _.swipeHandler = $.proxy(_.swipeHandler, _);
9845            _.dragHandler = $.proxy(_.dragHandler, _);
9846            _.keyHandler = $.proxy(_.keyHandler, _);
9847
9848            _.instanceUid = instanceUid++;
9849
9850            // A simple way to check for HTML strings
9851            // Strict HTML recognition (must start with <)
9852            // Extracted from jQuery v1.11 source
9853            _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/;
9854
9855
9856            _.registerBreakpoints();
9857            _.init(true);
9858
9859        }
9860
9861        return Slick;
9862
9863    }());
9864
9865    Slick.prototype.activateADA = function() {
9866        var _ = this;
9867
9868        _.$slideTrack.find('.slick-active').attr({
9869            'aria-hidden': 'false'
9870        }).find('a, input, button, select').attr({
9871            'tabindex': '0'
9872        });
9873
9874    };
9875
9876    Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {
9877
9878        var _ = this;
9879
9880        if (typeof(index) === 'boolean') {
9881            addBefore = index;
9882            index = null;
9883        } else if (index < 0 || (index >= _.slideCount)) {
9884            return false;
9885        }
9886
9887        _.unload();
9888
9889        if (typeof(index) === 'number') {
9890            if (index === 0 && _.$slides.length === 0) {
9891                $(markup).appendTo(_.$slideTrack);
9892            } else if (addBefore) {
9893                $(markup).insertBefore(_.$slides.eq(index));
9894            } else {
9895                $(markup).insertAfter(_.$slides.eq(index));
9896            }
9897        } else {
9898            if (addBefore === true) {
9899                $(markup).prependTo(_.$slideTrack);
9900            } else {
9901                $(markup).appendTo(_.$slideTrack);
9902            }
9903        }
9904
9905        _.$slides = _.$slideTrack.children(this.options.slide);
9906
9907        _.$slideTrack.children(this.options.slide).detach();
9908
9909        _.$slideTrack.append(_.$slides);
9910
9911        _.$slides.each(function(index, element) {
9912            $(element).attr('data-slick-index', index);
9913        });
9914
9915        _.$slidesCache = _.$slides;
9916
9917        _.reinit();
9918
9919    };
9920
9921    Slick.prototype.animateHeight = function() {
9922        var _ = this;
9923        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
9924            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
9925            _.$list.animate({
9926                height: targetHeight
9927            }, _.options.speed);
9928        }
9929    };
9930
9931    Slick.prototype.animateSlide = function(targetLeft, callback) {
9932
9933        var animProps = {},
9934            _ = this;
9935
9936        _.animateHeight();
9937
9938        if (_.options.rtl === true && _.options.vertical === false) {
9939            targetLeft = -targetLeft;
9940        }
9941        if (_.transformsEnabled === false) {
9942            if (_.options.vertical === false) {
9943                _.$slideTrack.animate({
9944                    left: targetLeft
9945                }, _.options.speed, _.options.easing, callback);
9946            } else {
9947                _.$slideTrack.animate({
9948                    top: targetLeft
9949                }, _.options.speed, _.options.easing, callback);
9950            }
9951
9952        } else {
9953
9954            if (_.cssTransitions === false) {
9955                if (_.options.rtl === true) {
9956                    _.currentLeft = -(_.currentLeft);
9957                }
9958                $({
9959                    animStart: _.currentLeft
9960                }).animate({
9961                    animStart: targetLeft
9962                }, {
9963                    duration: _.options.speed,
9964                    easing: _.options.easing,
9965                    step: function(now) {
9966                        now = Math.ceil(now);
9967                        if (_.options.vertical === false) {
9968                            animProps[_.animType] = 'translate(' +
9969                                now + 'px, 0px)';
9970                            _.$slideTrack.css(animProps);
9971                        } else {
9972                            animProps[_.animType] = 'translate(0px,' +
9973                                now + 'px)';
9974                            _.$slideTrack.css(animProps);
9975                        }
9976                    },
9977                    complete: function() {
9978                        if (callback) {
9979                            callback.call();
9980                        }
9981                    }
9982                });
9983
9984            } else {
9985
9986                _.applyTransition();
9987                targetLeft = Math.ceil(targetLeft);
9988
9989                if (_.options.vertical === false) {
9990                    animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';
9991                } else {
9992                    animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';
9993                }
9994                _.$slideTrack.css(animProps);
9995
9996                if (callback) {
9997                    setTimeout(function() {
9998
9999                        _.disableTransition();
10000
10001                        callback.call();
10002                    }, _.options.speed);
10003                }
10004
10005            }
10006
10007        }
10008
10009    };
10010
10011    Slick.prototype.getNavTarget = function() {
10012
10013        var _ = this,
10014            asNavFor = _.options.asNavFor;
10015
10016        if ( asNavFor && asNavFor !== null ) {
10017            asNavFor = $(asNavFor).not(_.$slider);
10018        }
10019
10020        return asNavFor;
10021
10022    };
10023
10024    Slick.prototype.asNavFor = function(index) {
10025
10026        var _ = this,
10027            asNavFor = _.getNavTarget();
10028
10029        if ( asNavFor !== null && typeof asNavFor === 'object' ) {
10030            asNavFor.each(function() {
10031                var target = $(this).slick('getSlick');
10032                if(!target.unslicked) {
10033                    target.slideHandler(index, true);
10034                }
10035            });
10036        }
10037
10038    };
10039
10040    Slick.prototype.applyTransition = function(slide) {
10041
10042        var _ = this,
10043            transition = {};
10044
10045        if (_.options.fade === false) {
10046            transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;
10047        } else {
10048            transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;
10049        }
10050
10051        if (_.options.fade === false) {
10052            _.$slideTrack.css(transition);
10053        } else {
10054            _.$slides.eq(slide).css(transition);
10055        }
10056
10057    };
10058
10059    Slick.prototype.autoPlay = function() {
10060
10061        var _ = this;
10062
10063        _.autoPlayClear();
10064
10065        if ( _.slideCount > _.options.slidesToShow ) {
10066            _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );
10067        }
10068
10069    };
10070
10071    Slick.prototype.autoPlayClear = function() {
10072
10073        var _ = this;
10074
10075        if (_.autoPlayTimer) {
10076            clearInterval(_.autoPlayTimer);
10077        }
10078
10079    };
10080
10081    Slick.prototype.autoPlayIterator = function() {
10082
10083        var _ = this,
10084            slideTo = _.currentSlide + _.options.slidesToScroll;
10085
10086        if ( !_.paused && !_.interrupted && !_.focussed ) {
10087
10088            if ( _.options.infinite === false ) {
10089
10090                if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {
10091                    _.direction = 0;
10092                }
10093
10094                else if ( _.direction === 0 ) {
10095
10096                    slideTo = _.currentSlide - _.options.slidesToScroll;
10097
10098                    if ( _.currentSlide - 1 === 0 ) {
10099                        _.direction = 1;
10100                    }
10101
10102                }
10103
10104            }
10105
10106            _.slideHandler( slideTo );
10107
10108        }
10109
10110    };
10111
10112    Slick.prototype.buildArrows = function() {
10113
10114        var _ = this;
10115
10116        if (_.options.arrows === true ) {
10117
10118            _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');
10119            _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');
10120
10121            if( _.slideCount > _.options.slidesToShow ) {
10122
10123                _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');
10124                _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');
10125
10126                if (_.htmlExpr.test(_.options.prevArrow)) {
10127                    _.$prevArrow.prependTo(_.options.appendArrows);
10128                }
10129
10130                if (_.htmlExpr.test(_.options.nextArrow)) {
10131                    _.$nextArrow.appendTo(_.options.appendArrows);
10132                }
10133
10134                if (_.options.infinite !== true) {
10135                    _.$prevArrow
10136                        .addClass('slick-disabled')
10137                        .attr('aria-disabled', 'true');
10138                }
10139
10140            } else {
10141
10142                _.$prevArrow.add( _.$nextArrow )
10143
10144                    .addClass('slick-hidden')
10145                    .attr({
10146                        'aria-disabled': 'true',
10147                        'tabindex': '-1'
10148                    });
10149
10150            }
10151
10152        }
10153
10154    };
10155
10156    Slick.prototype.buildDots = function() {
10157
10158        var _ = this,
10159            i, dot;
10160
10161        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
10162
10163            _.$slider.addClass('slick-dotted');
10164
10165            dot = $('<ul />').addClass(_.options.dotsClass);
10166
10167            for (i = 0; i <= _.getDotCount(); i += 1) {
10168                dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));
10169            }
10170
10171            _.$dots = dot.appendTo(_.options.appendDots);
10172
10173            _.$dots.find('li').first().addClass('slick-active');
10174
10175        }
10176
10177    };
10178
10179    Slick.prototype.buildOut = function() {
10180
10181        var _ = this;
10182
10183        _.$slides =
10184            _.$slider
10185                .children( _.options.slide + ':not(.slick-cloned)')
10186                .addClass('slick-slide');
10187
10188        _.slideCount = _.$slides.length;
10189
10190        _.$slides.each(function(index, element) {
10191            $(element)
10192                .attr('data-slick-index', index)
10193                .data('originalStyling', $(element).attr('style') || '');
10194        });
10195
10196        _.$slider.addClass('slick-slider');
10197
10198        _.$slideTrack = (_.slideCount === 0) ?
10199            $('<div class="slick-track"/>').appendTo(_.$slider) :
10200            _.$slides.wrapAll('<div class="slick-track"/>').parent();
10201
10202        _.$list = _.$slideTrack.wrap(
10203            '<div class="slick-list"/>').parent();
10204        _.$slideTrack.css('opacity', 0);
10205
10206        if (_.options.centerMode === true || _.options.swipeToSlide === true) {
10207            _.options.slidesToScroll = 1;
10208        }
10209
10210        $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');
10211
10212        _.setupInfinite();
10213
10214        _.buildArrows();
10215
10216        _.buildDots();
10217
10218        _.updateDots();
10219
10220
10221        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);
10222
10223        if (_.options.draggable === true) {
10224            _.$list.addClass('draggable');
10225        }
10226
10227    };
10228
10229    Slick.prototype.buildRows = function() {
10230
10231        var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;
10232
10233        newSlides = document.createDocumentFragment();
10234        originalSlides = _.$slider.children();
10235
10236        if(_.options.rows > 0) {
10237
10238            slidesPerSection = _.options.slidesPerRow * _.options.rows;
10239            numOfSlides = Math.ceil(
10240                originalSlides.length / slidesPerSection
10241            );
10242
10243            for(a = 0; a < numOfSlides; a++){
10244                var slide = document.createElement('div');
10245                for(b = 0; b < _.options.rows; b++) {
10246                    var row = document.createElement('div');
10247                    for(c = 0; c < _.options.slidesPerRow; c++) {
10248                        var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));
10249                        if (originalSlides.get(target)) {
10250                            row.appendChild(originalSlides.get(target));
10251                        }
10252                    }
10253                    slide.appendChild(row);
10254                }
10255                newSlides.appendChild(slide);
10256            }
10257
10258            _.$slider.empty().append(newSlides);
10259            _.$slider.children().children().children()
10260                .css({
10261                    'width':(100 / _.options.slidesPerRow) + '%',
10262                    'display': 'inline-block'
10263                });
10264
10265        }
10266
10267    };
10268
10269    Slick.prototype.checkResponsive = function(initial, forceUpdate) {
10270
10271        var _ = this,
10272            breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;
10273        var sliderWidth = _.$slider.width();
10274        var windowWidth = window.innerWidth || $(window).width();
10275
10276        if (_.respondTo === 'window') {
10277            respondToWidth = windowWidth;
10278        } else if (_.respondTo === 'slider') {
10279            respondToWidth = sliderWidth;
10280        } else if (_.respondTo === 'min') {
10281            respondToWidth = Math.min(windowWidth, sliderWidth);
10282        }
10283
10284        if ( _.options.responsive &&
10285            _.options.responsive.length &&
10286            _.options.responsive !== null) {
10287
10288            targetBreakpoint = null;
10289
10290            for (breakpoint in _.breakpoints) {
10291                if (_.breakpoints.hasOwnProperty(breakpoint)) {
10292                    if (_.originalSettings.mobileFirst === false) {
10293                        if (respondToWidth < _.breakpoints[breakpoint]) {
10294                            targetBreakpoint = _.breakpoints[breakpoint];
10295                        }
10296                    } else {
10297                        if (respondToWidth > _.breakpoints[breakpoint]) {
10298                            targetBreakpoint = _.breakpoints[breakpoint];
10299                        }
10300                    }
10301                }
10302            }
10303
10304            if (targetBreakpoint !== null) {
10305                if (_.activeBreakpoint !== null) {
10306                    if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {
10307                        _.activeBreakpoint =
10308                            targetBreakpoint;
10309                        if (_.breakpointSettings[targetBreakpoint] === 'unslick') {
10310                            _.unslick(targetBreakpoint);
10311                        } else {
10312                            _.options = $.extend({}, _.originalSettings,
10313                                _.breakpointSettings[
10314                                    targetBreakpoint]);
10315                            if (initial === true) {
10316                                _.currentSlide = _.options.initialSlide;
10317                            }
10318                            _.refresh(initial);
10319                        }
10320                        triggerBreakpoint = targetBreakpoint;
10321                    }
10322                } else {
10323                    _.activeBreakpoint = targetBreakpoint;
10324                    if (_.breakpointSettings[targetBreakpoint] === 'unslick') {
10325                        _.unslick(targetBreakpoint);
10326                    } else {
10327                        _.options = $.extend({}, _.originalSettings,
10328                            _.breakpointSettings[
10329                                targetBreakpoint]);
10330                        if (initial === true) {
10331                            _.currentSlide = _.options.initialSlide;
10332                        }
10333                        _.refresh(initial);
10334                    }
10335                    triggerBreakpoint = targetBreakpoint;
10336                }
10337            } else {
10338                if (_.activeBreakpoint !== null) {
10339                    _.activeBreakpoint = null;
10340                    _.options = _.originalSettings;
10341                    if (initial === true) {
10342                        _.currentSlide = _.options.initialSlide;
10343                    }
10344                    _.refresh(initial);
10345                    triggerBreakpoint = targetBreakpoint;
10346                }
10347            }
10348
10349            // only trigger breakpoints during an actual break. not on initialize.
10350            if( !initial && triggerBreakpoint !== false ) {
10351                _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);
10352            }
10353        }
10354
10355    };
10356
10357    Slick.prototype.changeSlide = function(event, dontAnimate) {
10358
10359        var _ = this,
10360            $target = $(event.currentTarget),
10361            indexOffset, slideOffset, unevenOffset;
10362
10363        // If target is a link, prevent default action.
10364        if($target.is('a')) {
10365            event.preventDefault();
10366        }
10367
10368        // If target is not the <li> element (ie: a child), find the <li>.
10369        if(!$target.is('li')) {
10370            $target = $target.closest('li');
10371        }
10372
10373        unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);
10374        indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;
10375
10376        switch (event.data.message) {
10377
10378            case 'previous':
10379                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;
10380                if (_.slideCount > _.options.slidesToShow) {
10381                    _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);
10382                }
10383                break;
10384
10385            case 'next':
10386                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;
10387                if (_.slideCount > _.options.slidesToShow) {
10388                    _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);
10389                }
10390                break;
10391
10392            case 'index':
10393                var index = event.data.index === 0 ? 0 :
10394                    event.data.index || $target.index() * _.options.slidesToScroll;
10395
10396                _.slideHandler(_.checkNavigable(index), false, dontAnimate);
10397                $target.children().trigger('focus');
10398                break;
10399
10400            default:
10401                return;
10402        }
10403
10404    };
10405
10406    Slick.prototype.checkNavigable = function(index) {
10407
10408        var _ = this,
10409            navigables, prevNavigable;
10410
10411        navigables = _.getNavigableIndexes();
10412        prevNavigable = 0;
10413        if (index > navigables[navigables.length - 1]) {
10414            index = navigables[navigables.length - 1];
10415        } else {
10416            for (var n in navigables) {
10417                if (index < navigables[n]) {
10418                    index = prevNavigable;
10419                    break;
10420                }
10421                prevNavigable = navigables[n];
10422            }
10423        }
10424
10425        return index;
10426    };
10427
10428    Slick.prototype.cleanUpEvents = function() {
10429
10430        var _ = this;
10431
10432        if (_.options.dots && _.$dots !== null) {
10433
10434            $('li', _.$dots)
10435                .off('click.slick', _.changeSlide)
10436                .off('mouseenter.slick', $.proxy(_.interrupt, _, true))
10437                .off('mouseleave.slick', $.proxy(_.interrupt, _, false));
10438
10439            if (_.options.accessibility === true) {
10440                _.$dots.off('keydown.slick', _.keyHandler);
10441            }
10442        }
10443
10444        _.$slider.off('focus.slick blur.slick');
10445
10446        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
10447            _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);
10448            _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);
10449
10450            if (_.options.accessibility === true) {
10451                _.$prevArrow && _.$prevArrow.off('keydown.slick', _.keyHandler);
10452                _.$nextArrow && _.$nextArrow.off('keydown.slick', _.keyHandler);
10453            }
10454        }
10455
10456        _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);
10457        _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);
10458        _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);
10459        _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);
10460
10461        _.$list.off('click.slick', _.clickHandler);
10462
10463        $(document).off(_.visibilityChange, _.visibility);
10464
10465        _.cleanUpSlideEvents();
10466
10467        if (_.options.accessibility === true) {
10468            _.$list.off('keydown.slick', _.keyHandler);
10469        }
10470
10471        if (_.options.focusOnSelect === true) {
10472            $(_.$slideTrack).children().off('click.slick', _.selectHandler);
10473        }
10474
10475        $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);
10476
10477        $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);
10478
10479        $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);
10480
10481        $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);
10482
10483    };
10484
10485    Slick.prototype.cleanUpSlideEvents = function() {
10486
10487        var _ = this;
10488
10489        _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));
10490        _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));
10491
10492    };
10493
10494    Slick.prototype.cleanUpRows = function() {
10495
10496        var _ = this, originalSlides;
10497
10498        if(_.options.rows > 0) {
10499            originalSlides = _.$slides.children().children();
10500            originalSlides.removeAttr('style');
10501            _.$slider.empty().append(originalSlides);
10502        }
10503
10504    };
10505
10506    Slick.prototype.clickHandler = function(event) {
10507
10508        var _ = this;
10509
10510        if (_.shouldClick === false) {
10511            event.stopImmediatePropagation();
10512            event.stopPropagation();
10513            event.preventDefault();
10514        }
10515
10516    };
10517
10518    Slick.prototype.destroy = function(refresh) {
10519
10520        var _ = this;
10521
10522        _.autoPlayClear();
10523
10524        _.touchObject = {};
10525
10526        _.cleanUpEvents();
10527
10528        $('.slick-cloned', _.$slider).detach();
10529
10530        if (_.$dots) {
10531            _.$dots.remove();
10532        }
10533
10534        if ( _.$prevArrow && _.$prevArrow.length ) {
10535
10536            _.$prevArrow
10537                .removeClass('slick-disabled slick-arrow slick-hidden')
10538                .removeAttr('aria-hidden aria-disabled tabindex')
10539                .css('display','');
10540
10541            if ( _.htmlExpr.test( _.options.prevArrow )) {
10542                _.$prevArrow.remove();
10543            }
10544        }
10545
10546        if ( _.$nextArrow && _.$nextArrow.length ) {
10547
10548            _.$nextArrow
10549                .removeClass('slick-disabled slick-arrow slick-hidden')
10550                .removeAttr('aria-hidden aria-disabled tabindex')
10551                .css('display','');
10552
10553            if ( _.htmlExpr.test( _.options.nextArrow )) {
10554                _.$nextArrow.remove();
10555            }
10556        }
10557
10558
10559        if (_.$slides) {
10560
10561            _.$slides
10562                .removeClass('slick-slide slick-active slick-center slick-visible slick-current')
10563                .removeAttr('aria-hidden')
10564                .removeAttr('data-slick-index')
10565                .each(function(){
10566                    $(this).attr('style', $(this).data('originalStyling'));
10567                });
10568
10569            _.$slideTrack.children(this.options.slide).detach();
10570
10571            _.$slideTrack.detach();
10572
10573            _.$list.detach();
10574
10575            _.$slider.append(_.$slides);
10576        }
10577
10578        _.cleanUpRows();
10579
10580        _.$slider.removeClass('slick-slider');
10581        _.$slider.removeClass('slick-initialized');
10582        _.$slider.removeClass('slick-dotted');
10583
10584        _.unslicked = true;
10585
10586        if(!refresh) {
10587            _.$slider.trigger('destroy', [_]);
10588        }
10589
10590    };
10591
10592    Slick.prototype.disableTransition = function(slide) {
10593
10594        var _ = this,
10595            transition = {};
10596
10597        transition[_.transitionType] = '';
10598
10599        if (_.options.fade === false) {
10600            _.$slideTrack.css(transition);
10601        } else {
10602            _.$slides.eq(slide).css(transition);
10603        }
10604
10605    };
10606
10607    Slick.prototype.fadeSlide = function(slideIndex, callback) {
10608
10609        var _ = this;
10610
10611        if (_.cssTransitions === false) {
10612
10613            _.$slides.eq(slideIndex).css({
10614                zIndex: _.options.zIndex
10615            });
10616
10617            _.$slides.eq(slideIndex).animate({
10618                opacity: 1
10619            }, _.options.speed, _.options.easing, callback);
10620
10621        } else {
10622
10623            _.applyTransition(slideIndex);
10624
10625            _.$slides.eq(slideIndex).css({
10626                opacity: 1,
10627                zIndex: _.options.zIndex
10628            });
10629
10630            if (callback) {
10631                setTimeout(function() {
10632
10633                    _.disableTransition(slideIndex);
10634
10635                    callback.call();
10636                }, _.options.speed);
10637            }
10638
10639        }
10640
10641    };
10642
10643    Slick.prototype.fadeSlideOut = function(slideIndex) {
10644
10645        var _ = this;
10646
10647        if (_.cssTransitions === false) {
10648
10649            _.$slides.eq(slideIndex).animate({
10650                opacity: 0,
10651                zIndex: _.options.zIndex - 2
10652            }, _.options.speed, _.options.easing);
10653
10654        } else {
10655
10656            _.applyTransition(slideIndex);
10657
10658            _.$slides.eq(slideIndex).css({
10659                opacity: 0,
10660                zIndex: _.options.zIndex - 2
10661            });
10662
10663        }
10664
10665    };
10666
10667    Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {
10668
10669        var _ = this;
10670
10671        if (filter !== null) {
10672
10673            _.$slidesCache = _.$slides;
10674
10675            _.unload();
10676
10677            _.$slideTrack.children(this.options.slide).detach();
10678
10679            _.$slidesCache.filter(filter).appendTo(_.$slideTrack);
10680
10681            _.reinit();
10682
10683        }
10684
10685    };
10686
10687    Slick.prototype.focusHandler = function() {
10688
10689        var _ = this;
10690
10691        _.$slider
10692            .off('focus.slick blur.slick')
10693            .on('focus.slick blur.slick', '*', function(event) {
10694
10695            event.stopImmediatePropagation();
10696            var $sf = $(this);
10697
10698            setTimeout(function() {
10699
10700                if( _.options.pauseOnFocus ) {
10701                    _.focussed = $sf.is(':focus');
10702                    _.autoPlay();
10703                }
10704
10705            }, 0);
10706
10707        });
10708    };
10709
10710    Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {
10711
10712        var _ = this;
10713        return _.currentSlide;
10714
10715    };
10716
10717    Slick.prototype.getDotCount = function() {
10718
10719        var _ = this;
10720
10721        var breakPoint = 0;
10722        var counter = 0;
10723        var pagerQty = 0;
10724
10725        if (_.options.infinite === true) {
10726            if (_.slideCount <= _.options.slidesToShow) {
10727                 ++pagerQty;
10728            } else {
10729                while (breakPoint < _.slideCount) {
10730                    ++pagerQty;
10731                    breakPoint = counter + _.options.slidesToScroll;
10732                    counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
10733                }
10734            }
10735        } else if (_.options.centerMode === true) {
10736            pagerQty = _.slideCount;
10737        } else if(!_.options.asNavFor) {
10738            pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);
10739        }else {
10740            while (breakPoint < _.slideCount) {
10741                ++pagerQty;
10742                breakPoint = counter + _.options.slidesToScroll;
10743                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
10744            }
10745        }
10746
10747        return pagerQty - 1;
10748
10749    };
10750
10751    Slick.prototype.getLeft = function(slideIndex) {
10752
10753        var _ = this,
10754            targetLeft,
10755            verticalHeight,
10756            verticalOffset = 0,
10757            targetSlide,
10758            coef;
10759
10760        _.slideOffset = 0;
10761        verticalHeight = _.$slides.first().outerHeight(true);
10762
10763        if (_.options.infinite === true) {
10764            if (_.slideCount > _.options.slidesToShow) {
10765                _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;
10766                coef = -1
10767
10768                if (_.options.vertical === true && _.options.centerMode === true) {
10769                    if (_.options.slidesToShow === 2) {
10770                        coef = -1.5;
10771                    } else if (_.options.slidesToShow === 1) {
10772                        coef = -2
10773                    }
10774                }
10775                verticalOffset = (verticalHeight * _.options.slidesToShow) * coef;
10776            }
10777            if (_.slideCount % _.options.slidesToScroll !== 0) {
10778                if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {
10779                    if (slideIndex > _.slideCount) {
10780                        _.slideOffset = ((_.options.slidesToShow - (sl
10780ideIndex - _.slideCount)) * _.slideWidth) * -1;
10781                        verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;
10782                    } else {
10783                        _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;
10784                        verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;
10785                    }
10786                }
10787            }
10788        } else {
10789            if (slideIndex + _.options.slidesToShow > _.slideCount) {
10790                _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;
10791                verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;
10792            }
10793        }
10794
10795        if (_.slideCount <= _.options.slidesToShow) {
10796            _.slideOffset = 0;
10797            verticalOffset = 0;
10798        }
10799
10800        if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) {
10801            _.slideOffset = ((_.slideWidth * Math.floor(_.options.slidesToShow)) / 2) - ((_.slideWidth * _.slideCount) / 2);
10802        } else if (_.options.centerMode === true && _.options.infinite === true) {
10803            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;
10804        } else if (_.options.centerMode === true) {
10805            _.slideOffset = 0;
10806            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);
10807        }
10808
10809        if (_.options.vertical === false) {
10810            targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;
10811        } else {
10812            targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;
10813        }
10814
10815        if (_.options.variableWidth === true) {
10816
10817            if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
10818                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
10819            } else {
10820                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);
10821            }
10822
10823            if (_.options.rtl === true) {
10824                if (targetSlide[0]) {
10825                    targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;
10826                } else {
10827                    targetLeft =  0;
10828                }
10829            } else {
10830                targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
10831            }
10832
10833            if (_.options.centerMode === true) {
10834                if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
10835                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
10836                } else {
10837                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);
10838                }
10839
10840                if (_.options.rtl === true) {
10841                    if (targetSlide[0]) {
10842                        targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;
10843                    } else {
10844                        targetLeft =  0;
10845                    }
10846                } else {
10847                    targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
10848                }
10849
10850                targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;
10851            }
10852        }
10853
10854        return targetLeft;
10855
10856    };
10857
10858    Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) {
10859
10860        var _ = this;
10861
10862        return _.options[option];
10863
10864    };
10865
10866    Slick.prototype.getNavigableIndexes = function() {
10867
10868        var _ = this,
10869            breakPoint = 0,
10870            counter = 0,
10871            indexes = [],
10872            max;
10873
10874        if (_.options.infinite === false) {
10875            max = _.slideCount;
10876        } else {
10877            breakPoint = _.options.slidesToScroll * -1;
10878            counter = _.options.slidesToScroll * -1;
10879            max = _.slideCount * 2;
10880        }
10881
10882        while (breakPoint < max) {
10883            indexes.push(breakPoint);
10884            breakPoint = counter + _.options.slidesToScroll;
10885            counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
10886        }
10887
10888        return indexes;
10889
10890    };
10891
10892    Slick.prototype.getSlick = function() {
10893
10894        return this;
10895
10896    };
10897
10898    Slick.prototype.getSlideCount = function() {
10899
10900        var _ = this,
10901            slidesTraversed, swipedSlide, centerOffset;
10902
10903        centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0;
10904
10905        if (_.options.swipeToSlide === true) {
10906            _.$slideTrack.find('.slick-slide').each(function(index, slide) {
10907                if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) {
10908                    swipedSlide = slide;
10909                    return false;
10910                }
10911            });
10912
10913            slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;
10914
10915            return slidesTraversed;
10916
10917        } else {
10918            return _.options.slidesToScroll;
10919        }
10920
10921    };
10922
10923    Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) {
10924
10925        var _ = this;
10926
10927        _.changeSlide({
10928            data: {
10929                message: 'index',
10930                index: parseInt(slide)
10931            }
10932        }, dontAnimate);
10933
10934    };
10935
10936    Slick.prototype.init = function(creation) {
10937
10938        var _ = this;
10939
10940        if (!$(_.$slider).hasClass('slick-initialized')) {
10941
10942            $(_.$slider).addClass('slick-initialized');
10943
10944            _.buildRows();
10945            _.buildOut();
10946            _.setProps();
10947            _.startLoad();
10948            _.loadSlider();
10949            _.initializeEvents();
10950            _.updateArrows();
10951            _.updateDots();
10952            _.checkResponsive(true);
10953            _.focusHandler();
10954
10955        }
10956
10957        if (creation) {
10958            _.$slider.trigger('init', [_]);
10959        }
10960
10961        if (_.options.accessibility === true) {
10962            _.initADA();
10963        }
10964
10965        if ( _.options.autoplay ) {
10966
10967            _.paused = false;
10968            _.autoPlay();
10969
10970        }
10971
10972    };
10973
10974    Slick.prototype.initADA = function() {
10975        var _ = this,
10976                numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow),
10977                tabControlIndexes = _.getNavigableIndexes().filter(function(val) {
10978                    return (val >= 0) && (val < _.slideCount);
10979                });
10980
10981        _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({
10982            'aria-hidden': 'true',
10983            'tabindex': '-1'
10984        }).find('a, input, button, select').attr({
10985            'tabindex': '-1'
10986        });
10987
10988        if (_.$dots !== null) {
10989            _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {
10990                var slideControlIndex = tabControlIndexes.indexOf(i);
10991
10992                $(this).attr({
10993                    'role': 'tabpanel',
10994                    'id': 'slick-slide' + _.instanceUid + i,
10995                    'tabindex': -1
10996                });
10997
10998                if (slideControlIndex !== -1) {
10999                   var ariaButtonControl = 'slick-slide-control' + _.instanceUid + slideControlIndex
11000                   if ($('#' + ariaButtonControl).length) {
11001                     $(this).attr({
11002                         'aria-describedby': ariaButtonControl
11003                     });
11004                   }
11005                }
11006            });
11007
11008            _.$dots.attr('role', 'tablist').find('li').each(function(i) {
11009                var mappedSlideIndex = tabControlIndexes[i];
11010
11011                $(this).attr({
11012                    'role': 'presentation'
11013                });
11014
11015                $(this).find('button').first().attr({
11016                    'role': 'tab',
11017                    'id': 'slick-slide-control' + _.instanceUid + i,
11018                    'aria-controls': 'slick-slide' + _.instanceUid + mappedSlideIndex,
11019                    'aria-label': (i + 1) + ' of ' + numDotGroups,
11020                    'aria-selected': null,
11021                    'tabindex': '-1'
11022                });
11023
11024            }).eq(_.currentSlide).find('button').attr({
11025                'aria-selected': 'true',
11026                'tabindex': '0'
11027            }).end();
11028        }
11029
11030        for (var i=_.currentSlide, max=i+_.options.slidesToShow; i < max; i++) {
11031          if (_.options.focusOnChange) {
11032            _.$slides.eq(i).attr({'tabindex': '0'});
11033          } else {
11034            _.$slides.eq(i).removeAttr('tabindex');
11035          }
11036        }
11037
11038        _.activateADA();
11039
11040    };
11041
11042    Slick.prototype.initArrowEvents = function() {
11043
11044        var _ = this;
11045
11046        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
11047            _.$prevArrow
11048               .off('click.slick')
11049               .on('click.slick', {
11050                    message: 'previous'
11051               }, _.changeSlide);
11052            _.$nextArrow
11053               .off('click.slick')
11054               .on('click.slick', {
11055                    message: 'next'
11056               }, _.changeSlide);
11057
11058            if (_.options.accessibility === true) {
11059                _.$prevArrow.on('keydown.slick', _.keyHandler);
11060                _.$nextArrow.on('keydown.slick', _.keyHandler);
11061            }
11062        }
11063
11064    };
11065
11066    Slick.prototype.initDotEvents = function() {
11067
11068        var _ = this;
11069
11070        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
11071            $('li', _.$dots).on('click.slick', {
11072                message: 'index'
11073            }, _.changeSlide);
11074
11075            if (_.options.accessibility === true) {
11076                _.$dots.on('keydown.slick', _.keyHandler);
11077            }
11078        }
11079
11080        if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.slideCount > _.options.slidesToShow) {
11081
11082            $('li', _.$dots)
11083                .on('mouseenter.slick', $.proxy(_.interrupt, _, true))
11084                .on('mouseleave.slick', $.proxy(_.interrupt, _, false));
11085
11086        }
11087
11088    };
11089
11090    Slick.prototype.initSlideEvents = function() {
11091
11092        var _ = this;
11093
11094        if ( _.options.pauseOnHover ) {
11095
11096            _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));
11097            _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));
11098
11099        }
11100
11101    };
11102
11103    Slick.prototype.initializeEvents = function() {
11104
11105        var _ = this;
11106
11107        _.initArrowEvents();
11108
11109        _.initDotEvents();
11110        _.initSlideEvents();
11111
11112        _.$list.on('touchstart.slick mousedown.slick', {
11113            action: 'start'
11114        }, _.swipeHandler);
11115        _.$list.on('touchmove.slick mousemove.slick', {
11116            action: 'move'
11117        }, _.swipeHandler);
11118        _.$list.on('touchend.slick mouseup.slick', {
11119            action: 'end'
11120        }, _.swipeHandler);
11121        _.$list.on('touchcancel.slick mouseleave.slick', {
11122            action: 'end'
11123        }, _.swipeHandler);
11124
11125        _.$list.on('click.slick', _.clickHandler);
11126
11127        $(document).on(_.visibilityChange, $.proxy(_.visibility, _));
11128
11129        if (_.options.accessibility === true) {
11130            _.$list.on('keydown.slick', _.keyHandler);
11131        }
11132
11133        if (_.options.focusOnSelect === true) {
11134            $(_.$slideTrack).children().on('click.slick', _.selectHandler);
11135        }
11136
11137        $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));
11138
11139        $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));
11140
11141        $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);
11142
11143        $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);
11144        $(_.setPosition);
11145
11146    };
11147
11148    Slick.prototype.initUI = function() {
11149
11150        var _ = this;
11151
11152        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
11153
11154            _.$prevArrow.show();
11155            _.$nextArrow.show();
11156
11157        }
11158
11159        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
11160
11161            _.$dots.show();
11162
11163        }
11164
11165    };
11166
11167    Slick.prototype.keyHandler = function(event) {
11168
11169        var _ = this;
11170         //Dont slide if the cursor is inside the form fields and arrow keys are pressed
11171        if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {
11172            if (event.keyCode === 37 && _.options.accessibility === true) {
11173                _.changeSlide({
11174                    data: {
11175                        message: _.options.rtl === true ? 'next' :  'previous'
11176                    }
11177                });
11178            } else if (event.keyCode === 39 && _.options.accessibility === true) {
11179                _.changeSlide({
11180                    data: {
11181                        message: _.options.rtl === true ? 'previous' : 'next'
11182                    }
11183                });
11184            }
11185        }
11186
11187    };
11188
11189    Slick.prototype.lazyLoad = function() {
11190
11191        var _ = this,
11192            loadRange, cloneRange, rangeStart, rangeEnd;
11193
11194        function loadImages(imagesScope) {
11195
11196            $('img[data-lazy]', imagesScope).each(function() {
11197
11198                var image = $(this),
11199                    imageSource = $(this).attr('data-lazy'),
11200                    imageSrcSet = $(this).attr('data-srcset'),
11201                    imageSizes  = $(this).attr('data-sizes') || _.$slider.attr('data-sizes'),
11202                    imageToLoad = document.createElement('img');
11203
11204                imageToLoad.onload = function() {
11205
11206                    image
11207                        .animate({ opacity: 0 }, 100, function() {
11208
11209                            if (imageSrcSet) {
11210                                image
11211                                    .attr('srcset', imageSrcSet );
11212
11213                                if (imageSizes) {
11214                                    image
11215                                        .attr('sizes', imageSizes );
11216                                }
11217                            }
11218
11219                            image
11220                                .attr('src', imageSource)
11221                                .animate({ opacity: 1 }, 200, function() {
11222                                    image
11223                                        .removeAttr('data-lazy data-srcset data-sizes')
11224                                        .removeClass('slick-loading');
11225                                });
11226                            _.$slider.trigger('lazyLoaded', [_, image, imageSource]);
11227                        });
11228
11229                };
11230
11231                imageToLoad.onerror = function() {
11232
11233                    image
11234                        .removeAttr( 'data-lazy' )
11235                        .removeClass( 'slick-loading' )
11236                        .addClass( 'slick-lazyload-error' );
11237
11238                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);
11239
11240                };
11241
11242                imageToLoad.src = imageSource;
11243
11244            });
11245
11246        }
11247
11248        if (_.options.centerMode === true) {
11249            if (_.options.infinite === true) {
11250                rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);
11251                rangeEnd = rangeStart + _.options.slidesToShow + 2;
11252            } else {
11253                rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));
11254                rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;
11255            }
11256        } else {
11257            rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;
11258            rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);
11259            if (_.options.fade === true) {
11260                if (rangeStart > 0) rangeStart--;
11261                if (rangeEnd <= _.slideCount) rangeEnd++;
11262            }
11263        }
11264
11265        loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);
11266
11267        if (_.options.lazyLoad === 'anticipated') {
11268            var prevSlide = rangeStart - 1,
11269                nextSlide = rangeEnd,
11270                $slides = _.$slider.find('.slick-slide');
11271
11272            for (var i = 0; i < _.options.slidesToScroll; i++) {
11273                if (prevSlide < 0) prevSlide = _.slideCount - 1;
11274                loadRange = loadRange.add($slides.eq(prevSlide));
11275                loadRange = loadRange.add($slides.eq(nextSlide));
11276                prevSlide--;
11277                nextSlide++;
11278            }
11279        }
11280
11281        loadImages(loadRange);
11282
11283        if (_.slideCount <= _.options.slidesToShow) {
11284            cloneRange = _.$slider.find('.slick-slide');
11285            loadImages(cloneRange);
11286        } else
11287        if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {
11288            cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);
11289            loadImages(cloneRange);
11290        } else if (_.currentSlide === 0) {
11291            cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);
11292            loadImages(cloneRange);
11293        }
11294
11295    };
11296
11297    Slick.prototype.loadSlider = function() {
11298
11299        var _ = this;
11300
11301        _.setPosition();
11302
11303        _.$slideTrack.css({
11304            opacity: 1
11305        });
11306
11307        _.$slider.removeClass('slick-loading');
11308
11309        _.initUI();
11310
11311        if (_.options.lazyLoad === 'progressive') {
11312            _.progressiveLazyLoad();
11313        }
11314
11315    };
11316
11317    Slick.prototype.next = Slick.prototype.slickNext = function() {
11318
11319        var _ = this;
11320
11321        _.changeSlide({
11322            data: {
11323                message: 'next'
11324            }
11325        });
11326
11327    };
11328
11329    Slick.prototype.orientationChange = function() {
11330
11331        var _ = this;
11332
11333        _.checkResponsive();
11334        _.setPosition();
11335
11336    };
11337
11338    Slick.prototype.pause = Slick.prototype.slickPause = function() {
11339
11340        var _ = this;
11341
11342        _.autoPlayClear();
11343        _.paused = true;
11344
11345    };
11346
11347    Slick.prototype.play = Slick.prototype.slickPlay = function() {
11348
11349        var _ = this;
11350
11351        _.autoPlay();
11352        _.options.autoplay = true;
11353        _.paused = false;
11354        _.focussed = false;
11355        _.interrupted = false;
11356
11357    };
11358
11359    Slick.prototype.postSlide = function(index) {
11360
11361        var _ = this;
11362
11363        if( !_.unslicked ) {
11364
11365            _.$slider.trigger('afterChange', [_, index]);
11366
11367            _.animating = false;
11368
11369            if (_.slideCount > _.options.slidesToShow) {
11370                _.setPosition();
11371            }
11372
11373            _.swipeLeft = null;
11374
11375            if ( _.options.autoplay ) {
11376                _.autoPlay();
11377            }
11378
11379            if (_.options.accessibility === true) {
11380                _.initADA();
11381
11382                if (_.options.focusOnChange) {
11383                    var $currentSlide = $(_.$slides.get(_.currentSlide));
11384                    $currentSlide.attr('tabindex', 0).focus();
11385                }
11386            }
11387
11388        }
11389
11390    };
11391
11392    Slick.prototype.prev = Slick.prototype.slickPrev = function() {
11393
11394        var _ = this;
11395
11396        _.changeSlide({
11397            data: {
11398                message: 'previous'
11399            }
11400        });
11401
11402    };
11403
11404    Slick.prototype.preventDefault = function(event) {
11405
11406        event.preventDefault();
11407
11408    };
11409
11410    Slick.prototype.progressiveLazyLoad = function( tryCount ) {
11411
11412        tryCount = tryCount || 1;
11413
11414        var _ = this,
11415            $imgsToLoad = $( 'img[data-lazy]', _.$slider ),
11416            image,
11417            imageSource,
11418            imageSrcSet,
11419            imageSizes,
11420            imageToLoad;
11421
11422        if ( $imgsToLoad.length ) {
11423
11424            image = $imgsToLoad.first();
11425            imageSource = image.attr('data-lazy');
11426            imageSrcSet = image.attr('data-srcset');
11427            imageSizes  = image.attr('data-sizes') || _.$slider.attr('data-sizes');
11428            imageToLoad = document.createElement('img');
11429
11430            imageToLoad.onload = function() {
11431
11432                if (imageSrcSet) {
11433                    image
11434                        .attr('srcset', imageSrcSet );
11435
11436                    if (imageSizes) {
11437                        image
11438                            .attr('sizes', imageSizes );
11439                    }
11440                }
11441
11442                image
11443                    .attr( 'src', imageSource )
11444                    .removeAttr('data-lazy data-srcset data-sizes')
11445                    .removeClass('slick-loading');
11446
11447                if ( _.options.adaptiveHeight === true ) {
11448                    _.setPosition();
11449                }
11450
11451                _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);
11452                _.progressiveLazyLoad();
11453
11454            };
11455
11456            imageToLoad.onerror = function() {
11457
11458                if ( tryCount < 3 ) {
11459
11460                    /**
11461                     * try to load the image 3 times,
11462                     * leave a slight delay so we don't get
11463                     * servers blocking the request.
11464                     */
11465                    setTimeout( function() {
11466                        _.progressiveLazyLoad( tryCount + 1 );
11467                    }, 500 );
11468
11469                } else {
11470
11471                    image
11472                        .removeAttr( 'data-lazy' )
11473                        .removeClass( 'slick-loading' )
11474                        .addClass( 'slick-lazyload-error' );
11475
11476                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);
11477
11478                    _.progressiveLazyLoad();
11479
11480                }
11481
11482            };
11483
11484            imageToLoad.src = imageSource;
11485
11486        } else {
11487
11488            _.$slider.trigger('allImagesLoaded', [ _ ]);
11489
11490        }
11491
11492    };
11493
11494    Slick.prototype.refresh = function( initializing ) {
11495
11496        var _ = this, currentSlide, lastVisibleIndex;
11497
11498        lastVisibleIndex = _.slideCount - _.options.slidesToShow;
11499
11500        // in non-infinite sliders, we don't want to go past the
11501        // last visible index.
11502        if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {
11503            _.currentSlide = lastVisibleIndex;
11504        }
11505
11506        // if less slides than to show, go to start.
11507        if ( _.slideCount <= _.options.slidesToShow ) {
11508            _.currentSlide = 0;
11509
11510        }
11511
11512        currentSlide = _.currentSlide;
11513
11514        _.destroy(true);
11515
11516        $.extend(_, _.initials, { currentSlide: currentSlide });
11517
11518        _.init();
11519
11520        if( !initializing ) {
11521
11522            _.changeSlide({
11523                data: {
11524                    message: 'index',
11525                    index: currentSlide
11526                }
11527            }, false);
11528
11529        }
11530
11531    };
11532
11533    Slick.prototype.registerBreakpoints = function() {
11534
11535        var _ = this, breakpoint, currentBreakpoint, l,
11536            responsiveSettings = _.options.responsive || null;
11537
11538        if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {
11539
11540            _.respondTo = _.options.respondTo || 'window';
11541
11542            for ( breakpoint in responsiveSettings ) {
11543
11544                l = _.breakpoints.length-1;
11545
11546                if (responsiveSettings.hasOwnProperty(breakpoint)) {
11547                    currentBreakpoint = responsiveSettings[breakpoint].breakpoint;
11548
11549                    // loop through the breakpoints and cut out any existing
11550                    // ones with the same breakpoint number, we don't want dupes.
11551                    while( l >= 0 ) {
11552                        if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {
11553                            _.breakpoints.splice(l,1);
11554                        }
11555                        l--;
11556                    }
11557
11558                    _.breakpoints.push(currentBreakpoint);
11559                    _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;
11560
11561                }
11562
11563            }
11564
11565            _.breakpoints.sort(function(a, b) {
11566                return ( _.options.mobileFirst ) ? a-b : b-a;
11567            });
11568
11569        }
11570
11571    };
11572
11573    Slick.prototype.reinit = function() {
11574
11575        var _ = this;
11576
11577        _.$slides =
11578            _.$slideTrack
11579                .children(_.options.slide)
11580                .addClass('slick-slide');
11581
11582        _.slideCount = _.$slides.length;
11583
11584        if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {
11585            _.currentSlide = _.currentSlide - _.options.slidesToScroll;
11586        }
11587
11588        if (_.slideCount <= _.options.slidesToShow) {
11589            _.currentSlide = 0;
11590        }
11591
11592        _.registerBreakpoints();
11593
11594        _.setProps();
11595        _.setupInfinite();
11596        _.buildArrows();
11597        _.updateArrows();
11598        _.initArrowEvents();
11599        _.buildDots();
11600        _.updateDots();
11601        _.initDotEvents();
11602        _.cleanUpSlideEvents();
11603        _.initSlideEvents();
11604
11605        _.checkResponsive(false, true);
11606
11607        if (_.options.focusOnSelect === true) {
11608            $(_.$slideTrack).children().on('click.slick', _.selectHandler);
11609        }
11610
11611        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);
11612
11613        _.setPosition();
11614        _.focusHandler();
11615
11616        _.paused = !_.options.autoplay;
11617        _.autoPlay();
11618
11619        _.$slider.trigger('reInit', [_]);
11620
11621    };
11622
11623    Slick.prototype.resize = function() {
11624
11625        var _ = this;
11626
11627        if ($(window).width() !== _.windowWidth) {
11628            clearTimeout(_.windowDelay);
11629            _.windowDelay = window.setTimeout(function() {
11630                _.windowWidth = $(window).width();
11631                _.checkResponsive();
11632                if( !_.unslicked ) { _.setPosition(); }
11633            }, 50);
11634        }
11635    };
11636
11637    Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {
11638
11639        var _ = this;
11640
11641        if (typeof(index) === 'boolean') {
11642            removeBefore = index;
11643            index = removeBefore === true ? 0 : _.slideCount - 1;
11644        } else {
11645            index = removeBefore === true ? --index : index;
11646        }
11647
11648        if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {
11649            return false;
11650        }
11651
11652        _.unload();
11653
11654        if (removeAll === true) {
11655            _.$slideTrack.children().remove();
11656        } else {
11657            _.$slideTrack.children(this.options.slide).eq(index).remove();
11658        }
11659
11660        _.$slides = _.$slideTrack.children(this.options.slide);
11661
11662        _.$slideTrack.children(this.options.slide).detach();
11663
11664        _.$slideTrack.append(_.$slides);
11665
11666        _.$slidesCache = _.$slides;
11667
11668        _.reinit();
11669
11670    };
11671
11672    Slick.prototype.setCSS = function(position) {
11673
11674        var _ = this,
11675            positionProps = {},
11676            x, y;
11677
11678        if (_.options.rtl === true) {
11679            position = -position;
11680        }
11681        x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';
11682        y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';
11683
11684        positionProps[_.positionProp] = position;
11685
11686        if (_.transformsEnabled === false) {
11687            _.$slideTrack.css(positionProps);
11688        } else {
11689            positionProps = {};
11690            if (_.cssTransitions === false) {
11691                positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';
11692                _.$slideTrack.css(positionProps);
11693            } else {
11694                positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';
11695                _.$slideTrack.css(positionProps);
11696            }
11697        }
11698
11699    };
11700
11701    Slick.prototype.setDimensions = function() {
11702
11703        var _ = this;
11704
11705        if (_.options.vertical === false) {
11706            if (_.options.centerMode === true) {
11707                _.$list.css({
11708                    padding: ('0px ' + _.options.centerPadding)
11709                });
11710            }
11711        } else {
11712            _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);
11713            if (_.options.centerMode === true) {
11714                _.$list.css({
11715                    padding: (_.options.centerPadding + ' 0px')
11716                });
11717            }
11718        }
11719
11720        _.listWidth = _.$list.width();
11721        _.listHeight = _.$list.height();
11722
11723
11724        if (_.options.vertical === false && _.options.variableWidth === false) {
11725            _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);
11726            _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));
11727
11728        } else if (_.options.variableWidth === true) {
11729            _.$slideTrack.width(5000 * _.slideCount);
11730        } else {
11731            _.slideWidth = Math.ceil(_.listWidth);
11732            _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));
11733        }
11734
11735        var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();
11736        if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);
11737
11738    };
11739
11740    Slick.prototype.setFade = function() {
11741
11742        var _ = this,
11743            targetLeft;
11744
11745        _.$slides.each(function(index, element) {
11746            targetLeft = (_.slideWidth * index) * -1;
11747            if (_.options.rtl === true) {
11748                $(element).css({
11749                    position: 'relative',
11750                    right: targetLeft,
11751                    top: 0,
11752                    zIndex: _.options.zIndex - 2,
11753                    opacity: 0
11754                });
11755            } else {
11756                $(element).css({
11757                    position: 'relative',
11758                    left: targetLeft,
11759                    top: 0,
11760                    zIndex: _.options.zIndex - 2,
11761                    opacity: 0
11762                });
11763            }
11764        });
11765
11766        _.$slides.eq(_.currentSlide).css({
11767            zIndex: _.options.zIndex - 1,
11768            opacity: 1
11769        });
11770
11771    };
11772
11773    Slick.prototype.setHeight = function() {
11774
11775        var _ = this;
11776
11777        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
11778            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
11779            _.$list.css('height', targetHeight);
11780        }
11781
11782    };
11783
11784    Slick.prototype.setOption =
11785    Slick.prototype.slickSetOption = function() {
11786
11787        /**
11788         * accepts arguments in format of:
11789         *
11790         *  - for changing a single option's value:
11791         *     .slick("setOption", option, value, refresh )
11792         *
11793         *  - for changing a set of responsive options:
11794         *     .slick("setOption", 'responsive', [{}, ...], refresh )
11795         *
11796         *  - for updating multiple values at once (not responsive)
11797         *     .slick("setOption", { 'option': value, ... }, refresh )
11798         */
11799
11800        var _ = this, l, item, option, value, refresh = false, t
11800ype;
11801
11802        if( $.type( arguments[0] ) === 'object' ) {
11803
11804            option =  arguments[0];
11805            refresh = arguments[1];
11806            type = 'multiple';
11807
11808        } else if ( $.type( arguments[0] ) === 'string' ) {
11809
11810            option =  arguments[0];
11811            value = arguments[1];
11812            refresh = arguments[2];
11813
11814            if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {
11815
11816                type = 'responsive';
11817
11818            } else if ( typeof arguments[1] !== 'undefined' ) {
11819
11820                type = 'single';
11821
11822            }
11823
11824        }
11825
11826        if ( type === 'single' ) {
11827
11828            _.options[option] = value;
11829
11830
11831        } else if ( type === 'multiple' ) {
11832
11833            $.each( option , function( opt, val ) {
11834
11835                _.options[opt] = val;
11836
11837            });
11838
11839
11840        } else if ( type === 'responsive' ) {
11841
11842            for ( item in value ) {
11843
11844                if( $.type( _.options.responsive ) !== 'array' ) {
11845
11846                    _.options.responsive = [ value[item] ];
11847
11848                } else {
11849
11850                    l = _.options.responsive.length-1;
11851
11852                    // loop through the responsive object and splice out duplicates.
11853                    while( l >= 0 ) {
11854
11855                        if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {
11856
11857                            _.options.responsive.splice(l,1);
11858
11859                        }
11860
11861                        l--;
11862
11863                    }
11864
11865                    _.options.responsive.push( value[item] );
11866
11867                }
11868
11869            }
11870
11871        }
11872
11873        if ( refresh ) {
11874
11875            _.unload();
11876            _.reinit();
11877
11878        }
11879
11880    };
11881
11882    Slick.prototype.setPosition = function() {
11883
11884        var _ = this;
11885
11886        _.setDimensions();
11887
11888        _.setHeight();
11889
11890        if (_.options.fade === false) {
11891            _.setCSS(_.getLeft(_.currentSlide));
11892        } else {
11893            _.setFade();
11894        }
11895
11896        _.$slider.trigger('setPosition', [_]);
11897
11898    };
11899
11900    Slick.prototype.setProps = function() {
11901
11902        var _ = this,
11903            bodyStyle = document.body.style;
11904
11905        _.positionProp = _.options.vertical === true ? 'top' : 'left';
11906
11907        if (_.positionProp === 'top') {
11908            _.$slider.addClass('slick-vertical');
11909        } else {
11910            _.$slider.removeClass('slick-vertical');
11911        }
11912
11913        if (bodyStyle.WebkitTransition !== undefined ||
11914            bodyStyle.MozTransition !== undefined ||
11915            bodyStyle.msTransition !== undefined) {
11916            if (_.options.useCSS === true) {
11917                _.cssTransitions = true;
11918            }
11919        }
11920
11921        if ( _.options.fade ) {
11922            if ( typeof _.options.zIndex === 'number' ) {
11923                if( _.options.zIndex < 3 ) {
11924                    _.options.zIndex = 3;
11925                }
11926            } else {
11927                _.options.zIndex = _.defaults.zIndex;
11928            }
11929        }
11930
11931        if (bodyStyle.OTransform !== undefined) {
11932            _.animType = 'OTransform';
11933            _.transformType = '-o-transform';
11934            _.transitionType = 'OTransition';
11935            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
11936        }
11937        if (bodyStyle.MozTransform !== undefined) {
11938            _.animType = 'MozTransform';
11939            _.transformType = '-moz-transform';
11940            _.transitionType = 'MozTransition';
11941            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;
11942        }
11943        if (bodyStyle.webkitTransform !== undefined) {
11944            _.animType = 'webkitTransform';
11945            _.transformType = '-webkit-transform';
11946            _.transitionType = 'webkitTransition';
11947            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
11948        }
11949        if (bodyStyle.msTransform !== undefined) {
11950            _.animType = 'msTransform';
11951            _.transformType = '-ms-transform';
11952            _.transitionType = 'msTransition';
11953            if (bodyStyle.msTransform === undefined) _.animType = false;
11954        }
11955        if (bodyStyle.transform !== undefined && _.animType !== false) {
11956            _.animType = 'transform';
11957            _.transformType = 'transform';
11958            _.transitionType = 'transition';
11959        }
11960        _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);
11961    };
11962
11963
11964    Slick.prototype.setSlideClasses = function(index) {
11965
11966        var _ = this,
11967            centerOffset, allSlides, indexOffset, remainder;
11968
11969        allSlides = _.$slider
11970            .find('.slick-slide')
11971            .removeClass('slick-active slick-center slick-current')
11972            .attr('aria-hidden', 'true');
11973
11974        _.$slides
11975            .eq(index)
11976            .addClass('slick-current');
11977
11978        if (_.options.centerMode === true) {
11979
11980            var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0;
11981
11982            centerOffset = Math.floor(_.options.slidesToShow / 2);
11983
11984            if (_.options.infinite === true) {
11985
11986                if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {
11987                    _.$slides
11988                        .slice(index - centerOffset + evenCoef, index + centerOffset + 1)
11989                        .addClass('slick-active')
11990                        .attr('aria-hidden', 'false');
11991
11992                } else {
11993
11994                    indexOffset = _.options.slidesToShow + index;
11995                    allSlides
11996                        .slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2)
11997                        .addClass('slick-active')
11998                        .attr('aria-hidden', 'false');
11999
12000                }
12001
12002                if (index === 0) {
12003
12004                    allSlides
12005                        .eq(allSlides.length - 1 - _.options.slidesToShow)
12006                        .addClass('slick-center');
12007
12008                } else if (index === _.slideCount - 1) {
12009
12010                    allSlides
12011                        .eq(_.options.slidesToShow)
12012                        .addClass('slick-center');
12013
12014                }
12015
12016            }
12017
12018            _.$slides
12019                .eq(index)
12020                .addClass('slick-center');
12021
12022        } else {
12023
12024            if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {
12025
12026                _.$slides
12027                    .slice(index, index + _.options.slidesToShow)
12028                    .addClass('slick-active')
12029                    .attr('aria-hidden', 'false');
12030
12031            } else if (allSlides.length <= _.options.slidesToShow) {
12032
12033                allSlides
12034                    .addClass('slick-active')
12035                    .attr('aria-hidden', 'false');
12036
12037            } else {
12038
12039                remainder = _.slideCount % _.options.slidesToShow;
12040                indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;
12041
12042                if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {
12043
12044                    allSlides
12045                        .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)
12046                        .addClass('slick-active')
12047                        .attr('aria-hidden', 'false');
12048
12049                } else {
12050
12051                    allSlides
12052                        .slice(indexOffset, indexOffset + _.options.slidesToShow)
12053                        .addClass('slick-active')
12054                        .attr('aria-hidden', 'false');
12055
12056                }
12057
12058            }
12059
12060        }
12061
12062        if (_.options.lazyLoad === 'ondemand' || _.options.lazyLoad === 'anticipated') {
12063            _.lazyLoad();
12064        }
12065    };
12066
12067    Slick.prototype.setupInfinite = function() {
12068
12069        var _ = this,
12070            i, slideIndex, infiniteCount;
12071
12072        if (_.options.fade === true) {
12073            _.options.centerMode = false;
12074        }
12075
12076        if (_.options.infinite === true && _.options.fade === false) {
12077
12078            slideIndex = null;
12079
12080            if (_.slideCount > _.options.slidesToShow) {
12081
12082                if (_.options.centerMode === true) {
12083                    infiniteCount = _.options.slidesToShow + 1;
12084                } else {
12085                    infiniteCount = _.options.slidesToShow;
12086                }
12087
12088                for (i = _.slideCount; i > (_.slideCount -
12089                        infiniteCount); i -= 1) {
12090                    slideIndex = i - 1;
12091                    $(_.$slides[slideIndex]).clone(true).attr('id', '')
12092                        .attr('data-slick-index', slideIndex - _.slideCount)
12093                        .prependTo(_.$slideTrack).addClass('slick-cloned');
12094                }
12095                for (i = 0; i < infiniteCount  + _.slideCount; i += 1) {
12096                    slideIndex = i;
12097                    $(_.$slides[slideIndex]).clone(true).attr('id', '')
12098                        .attr('data-slick-index', slideIndex + _.slideCount)
12099                        .appendTo(_.$slideTrack).addClass('slick-cloned');
12100                }
12101                _.$slideTrack.find('.slick-cloned').find('[id]').each(function() {
12102                    $(this).attr('id', '');
12103                });
12104
12105            }
12106
12107        }
12108
12109    };
12110
12111    Slick.prototype.interrupt = function( toggle ) {
12112
12113        var _ = this;
12114
12115        if( !toggle ) {
12116            _.autoPlay();
12117        }
12118        _.interrupted = toggle;
12119
12120    };
12121
12122    Slick.prototype.selectHandler = function(event) {
12123
12124        var _ = this;
12125
12126        var targetElement =
12127            $(event.target).is('.slick-slide') ?
12128                $(event.target) :
12129                $(event.target).parents('.slick-slide');
12130
12131        var index = parseInt(targetElement.attr('data-slick-index'));
12132
12133        if (!index) index = 0;
12134
12135        if (_.slideCount <= _.options.slidesToShow) {
12136
12137            _.slideHandler(index, false, true);
12138            return;
12139
12140        }
12141
12142        _.slideHandler(index);
12143
12144    };
12145
12146    Slick.prototype.slideHandler = function(index, sync, dontAnimate) {
12147
12148        var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,
12149            _ = this, navTarget;
12150
12151        sync = sync || false;
12152
12153        if (_.animating === true && _.options.waitForAnimate === true) {
12154            return;
12155        }
12156
12157        if (_.options.fade === true && _.currentSlide === index) {
12158            return;
12159        }
12160
12161        if (sync === false) {
12162            _.asNavFor(index);
12163        }
12164
12165        targetSlide = index;
12166        targetLeft = _.getLeft(targetSlide);
12167        slideLeft = _.getLeft(_.currentSlide);
12168
12169        _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;
12170
12171        if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {
12172            if (_.options.fade === false) {
12173                targetSlide = _.currentSlide;
12174                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {
12175                    _.animateSlide(slideLeft, function() {
12176                        _.postSlide(targetSlide);
12177                    });
12178                } else {
12179                    _.postSlide(targetSlide);
12180                }
12181            }
12182            return;
12183        } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {
12184            if (_.options.fade === false) {
12185                targetSlide = _.currentSlide;
12186                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {
12187                    _.animateSlide(slideLeft, function() {
12188                        _.postSlide(targetSlide);
12189                    });
12190                } else {
12191                    _.postSlide(targetSlide);
12192                }
12193            }
12194            return;
12195        }
12196
12197        if ( _.options.autoplay ) {
12198            clearInterval(_.autoPlayTimer);
12199        }
12200
12201        if (targetSlide < 0) {
12202            if (_.slideCount % _.options.slidesToScroll !== 0) {
12203                animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);
12204            } else {
12205                animSlide = _.slideCount + targetSlide;
12206            }
12207        }
12207 else if (targetSlide >= _.slideCount) {
12208            if (_.slideCount % _.options.slidesToScroll !== 0) {
12209                animSlide = 0;
12210            } else {
12211                animSlide = targetSlide - _.slideCount;
12212            }
12213        } else {
12214            animSlide = targetSlide;
12215        }
12216
12217        _.animating = true;
12218
12219        _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);
12220
12221        oldSlide = _.currentSlide;
12222        _.currentSlide = animSlide;
12223
12224        _.setSlideClasses(_.currentSlide);
12225
12226        if ( _.options.asNavFor ) {
12227
12228            navTarget = _.getNavTarget();
12229            navTarget = navTarget.slick('getSlick');
12230
12231            if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {
12232                navTarget.setSlideClasses(_.currentSlide);
12233            }
12234
12235        }
12236
12237        _.updateDots();
12238        _.updateArrows();
12239
12240        if (_.options.fade === true) {
12241            if (dontAnimate !== true) {
12242
12243                _.fadeSlideOut(oldSlide);
12244
12245                _.fadeSlide(animSlide, function() {
12246                    _.postSlide(animSlide);
12247                });
12248
12249            } else {
12250                _.postSlide(animSlide);
12251            }
12252            _.animateHeight();
12253            return;
12254        }
12255
12256        if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {
12257            _.animateSlide(targetLeft, function() {
12258                _.postSlide(animSlide);
12259            });
12260        } else {
12261            _.postSlide(animSlide);
12262        }
12263
12264    };
12265
12266    Slick.prototype.startLoad = function() {
12267
12268        var _ = this;
12269
12270        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
12271
12272            _.$prevArrow.hide();
12273            _.$nextArrow.hide();
12274
12275        }
12276
12277        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
12278
12279            _.$dots.hide();
12280
12281        }
12282
12283        _.$slider.addClass('slick-loading');
12284
12285    };
12286
12287    Slick.prototype.swipeDirection = function() {
12288
12289        var xDist, yDist, r, swipeAngle, _ = this;
12290
12291        xDist = _.touchObject.startX - _.touchObject.curX;
12292        yDist = _.touchObject.startY - _.touchObject.curY;
12293        r = Math.atan2(yDist, xDist);
12294
12295        swipeAngle = Math.round(r * 180 / Math.PI);
12296        if (swipeAngle < 0) {
12297            swipeAngle = 360 - Math.abs(swipeAngle);
12298        }
12299
12300        if ((swipeAngle <= 45) && (swipeAngle >= 0)) {
12301            return (_.options.rtl === false ? 'left' : 'right');
12302        }
12303        if ((swipeAngle <= 360) && (swipeAngle >= 315)) {
12304            return (_.options.rtl === false ? 'left' : 'right');
12305        }
12306        if ((swipeAngle >= 135) && (swipeAngle <= 225)) {
12307            return (_.options.rtl === false ? 'right' : 'left');
12308        }
12309        if (_.options.verticalSwiping === true) {
12310            if ((swipeAngle >= 35) && (swipeAngle <= 135)) {
12311                return 'down';
12312            } else {
12313                return 'up';
12314            }
12315        }
12316
12317        return 'vertical';
12318
12319    };
12320
12321    Slick.prototype.swipeEnd = function(event) {
12322
12323        var _ = this,
12324            slideCount,
12325            direction;
12326
12327        _.dragging = false;
12328        _.swiping = false;
12329
12330        if (_.scrolling) {
12331            _.scrolling = false;
12332            return false;
12333        }
12334
12335        _.interrupted = false;
12336        _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;
12337
12338        if ( _.touchObject.curX === undefined ) {
12339            return false;
12340        }
12341
12342        if ( _.touchObject.edgeHit === true ) {
12343            _.$slider.trigger('edge', [_, _.swipeDirection() ]);
12344        }
12345
12346        if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {
12347
12348            direction = _.swipeDirection();
12349
12350            switch ( direction ) {
12351
12352                case 'left':
12353                case 'down':
12354
12355                    slideCount =
12356                        _.options.swipeToSlide ?
12357                            _.checkNavigable( _.currentSlide + _.getSlideCount() ) :
12358                            _.currentSlide + _.getSlideCount();
12359
12360                    _.currentDirection = 0;
12361
12362                    break;
12363
12364                case 'right':
12365                case 'up':
12366
12367                    slideCount =
12368                        _.options.swipeToSlide ?
12369                            _.checkNavigable( _.currentSlide - _.getSlideCount() ) :
12370                            _.currentSlide - _.getSlideCount();
12371
12372                    _.currentDirection = 1;
12373
12374                    break;
12375
12376                default:
12377
12378
12379            }
12380
12381            if( direction != 'vertical' ) {
12382
12383                _.slideHandler( slideCount );
12384                _.touchObject = {};
12385                _.$slider.trigger('swipe', [_, direction ]);
12386
12387            }
12388
12389        } else {
12390
12391            if ( _.touchObject.startX !== _.touchObject.curX ) {
12392
12393                _.slideHandler( _.currentSlide );
12394                _.touchObject = {};
12395
12396            }
12397
12398        }
12399
12400    };
12401
12402    Slick.prototype.swipeHandler = function(event) {
12403
12404        var _ = this;
12405
12406        if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {
12407            return;
12408        } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {
12409            return;
12410        }
12411
12412        _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?
12413            event.originalEvent.touches.length : 1;
12414
12415        _.touchObject.minSwipe = _.listWidth / _.options
12416            .touchThreshold;
12417
12418        if (_.options.verticalSwiping === true) {
12419            _.touchObject.minSwipe = _.listHeight / _.options
12420                .touchThreshold;
12421        }
12422
12423        switch (event.data.action) {
12424
12425            case 'start':
12426                _.swipeStart(event);
12427                break;
12428
12429            case 'move':
12430                _.swipeMove(event);
12431                break;
12432
12433            case 'end':
12434                _.swipeEnd(event);
12435                break;
12436
12437        }
12438
12439    };
12440
12441    Slick.prototype.swipeMove = function(event) {
12442
12443        var _ = this,
12444            edgeWasHit = false,
12445            curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength;
12446
12447        touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;
12448
12449        if (!_.dragging || _.scrolling || touches && touches.length !== 1) {
12450            return false;
12451        }
12452
12453        curLeft = _.getLeft(_.currentSlide);
12454
12455        _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;
12456        _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;
12457
12458        _.touchObject.swipeLength = Math.round(Math.sqrt(
12459            Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));
12460
12461        verticalSwipeLength = Math.round(Math.sqrt(
12462            Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));
12463
12464        if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) {
12465            _.scrolling = true;
12466            return false;
12467        }
12468
12469        if (_.options.verticalSwiping === true) {
12470            _.touchObject.swipeLength = verticalSwipeLength;
12471        }
12472
12473        swipeDirection = _.swipeDirection();
12474
12475        if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {
12476            _.swiping = true;
12477            event.preventDefault();
12478        }
12479
12480        positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);
12481        if (_.options.verticalSwiping === true) {
12482            positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;
12483        }
12484
12485
12486        swipeLength = _.touchObject.swipeLength;
12487
12488        _.touchObject.edgeHit = false;
12489
12490        if (_.options.infinite === false) {
12491            if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {
12492                swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;
12493                _.touchObject.edgeHit = true;
12494            }
12495        }
12496
12497        if (_.options.vertical === false) {
12498            _.swipeLeft = curLeft + swipeLength * positionOffset;
12499        } else {
12500            _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;
12501        }
12502        if (_.options.verticalSwiping === true) {
12503            _.swipeLeft = curLeft + swipeLength * positionOffset;
12504        }
12505
12506        if (_.options.fade === true || _.options.touchMove === false) {
12507            return false;
12508        }
12509
12510        if (_.animating === true) {
12511            _.swipeLeft = null;
12512            return false;
12513        }
12514
12515        _.setCSS(_.swipeLeft);
12516
12517    };
12518
12519    Slick.prototype.swipeStart = function(event) {
12520
12521        var _ = this,
12522            touches;
12523
12524        _.interrupted = true;
12525
12526        if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {
12527            _.touchObject = {};
12528            return false;
12529        }
12530
12531        if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {
12532            touches = event.originalEvent.touches[0];
12533        }
12534
12535        _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;
12536        _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;
12537
12538        _.dragging = true;
12539
12540    };
12541
12542    Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() {
12543
12544        var _ = this;
12545
12546        if (_.$slidesCache !== null) {
12547
12548            _.unload();
12549
12550            _.$slideTrack.children(this.options.slide).detach();
12551
12552            _.$slidesCache.appendTo(_.$slideTrack);
12553
12554            _.reinit();
12555
12556        }
12557
12558    };
12559
12560    Slick.prototype.unload = function() {
12561
12562        var _ = this;
12563
12564        $('.slick-cloned', _.$slider).remove();
12565
12566        if (_.$dots) {
12567            _.$dots.remove();
12568        }
12569
12570        if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {
12571            _.$prevArrow.remove();
12572        }
12573
12574        if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {
12575            _.$nextArrow.remove();
12576        }
12577
12578        _.$slides
12579            .removeClass('slick-slide slick-active slick-visible slick-current')
12580            .attr('aria-hidden', 'true')
12581            .css('width', '');
12582
12583    };
12584
12585    Slick.prototype.unslick = function(fromBreakpoint) {
12586
12587        var _ = this;
12588        _.$slider.trigger('unslick', [_, fromBreakpoint]);
12589        _.destroy();
12590
12591    };
12592
12593    Slick.prototype.updateArrows = function() {
12594
12595        var _ = this,
12596            centerOffset;
12597
12598        centerOffset = Math.floor(_.options.slidesToShow / 2);
12599
12600        if ( _.options.arrows === true &&
12601            _.slideCount > _.options.slidesToShow &&
12602            !_.options.infinite ) {
12603
12604            _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
12605            _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
12606
12607            if (_.currentSlide === 0) {
12608
12609                _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
12610                _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
12611
12612            } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {
12613
12614                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
12615                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
12616
12617            } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {
12618
12619                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
12620                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
12621
12622            }
12623
12624        }
12625
12626    };
12627
12628    Slick.prototype.updateDots = function() {
12629
12630        var _ = this;
12631
12632        if (_.$dots !== null) {
12633
12634            _.$dots
12635                .find('li')
12636                    .removeClass('slick-active')
12637                    .end();
12638
12639            _.$dots
12640                .find('li')
12641                .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))
12642                .addClass('slick-active');
12643
12644        }
12645
12646    };
12647
12648    Slick.prototype.visibility = function() {
12649
12650        var _ = this;
12651
12652        if ( _.options.autoplay ) {
12653
12654            if ( document[_.hidden] ) {
12655
12656                _.interrupted = true;
12657
12658            } else {
12659
12660                _.interrupted = false;
12661
12662            }
12663
12664        }
12665
12666    };
12667
12668    $.fn.slick = function() {
12669        var _ = this,
12670            opt = arguments[0],
12671            args = Array.prototype.slice.call(arguments, 1),
12672            l = _.length,
12673            i,
12674            ret;
12675        for (i = 0; i < l; i++) {
12676            if (typeof opt == 'object' || typeof opt == 'undefined')
12677                _[i].slick = new Slick(_[i], opt);
12678            else
12679                ret = _[i].slick[opt].apply(_[i].slick, args);
12680            if (typeof ret != 'undefined') return ret;
12681        }
12682        return _;
12683    };
12684
12685}));
12686
12687},{"jquery":2}],4:[function(require,module,exports){
12688(function (global
vendor: 68,394 bytes, lines 12688-14732
12688){
12689(function (global, factory) {
12690  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
12691  typeof define === 'function' && define.amd ? define('underscore', factory) :
12692  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () {
12693    var current = global._;
12694    var exports = global._ = factory();
12695    exports.noConflict = function () { global._ = current; return exports; };
12696  }()));
12697}(this, (function () {
12698  //     Underscore.js 1.13.1
12699  //     https://underscorejs.org
12700  //     (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors
12701  //     Underscore may be freely distributed under the MIT license.
12702
12703  // Current version.
12704  var VERSION = '1.13.1';
12705
12706  // Establish the root object, `window` (`self`) in the browser, `global`
12707  // on the server, or `this` in some virtual machines. We use `self`
12708  // instead of `window` for `WebWorker` support.
12709  var root = typeof self == 'object' && self.self === self && self ||
12710            typeof global == 'object' && global.global === global && global ||
12711            Function('return this')() ||
12712            {};
12713
12714  // Save bytes in the minified (but not gzipped) version:
12715  var ArrayProto = Array.prototype, ObjProto = Object.prototype;
12716  var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;
12717
12718  // Create quick reference variables for speed access to core prototypes.
12719  var push = ArrayProto.push,
12720      slice = ArrayProto.slice,
12721      toString = ObjProto.toString,
12722      hasOwnProperty = ObjProto.hasOwnProperty;
12723
12724  // Modern feature detection.
12725  var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',
12726      supportsDataView = typeof DataView !== 'undefined';
12727
12728  // All **ECMAScript 5+** native function implementations that we hope to use
12729  // are declared here.
12730  var nativeIsArray = Array.isArray,
12731      nativeKeys = Object.keys,
12732      nativeCreate = Object.create,
12733      nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;
12734
12735  // Create references to these builtin functions because we override them.
12736  var _isNaN = isNaN,
12737      _isFinite = isFinite;
12738
12739  // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.
12740  var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');
12741  var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',
12742    'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];
12743
12744  // The largest integer that can be represented exactly.
12745  var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;
12746
12747  // Some functions take a variable number of arguments, or a few expected
12748  // arguments at the beginning and then a variable number of values to operate
12749  // on. This helper accumulates all remaining arguments past the function’s
12750  // argument length (or an explicit `startIndex`), into an array that becomes
12751  // the last argument. Similar to ES6’s "rest parameter".
12752  function restArguments(func, startIndex) {
12753    startIndex = startIndex == null ? func.length - 1 : +startIndex;
12754    return function() {
12755      var length = Math.max(arguments.length - startIndex, 0),
12756          rest = Array(length),
12757          index = 0;
12758      for (; index < length; index++) {
12759        rest[index] = arguments[index + startIndex];
12760      }
12761      switch (startIndex) {
12762        case 0: return func.call(this, rest);
12763        case 1: return func.call(this, arguments[0], rest);
12764        case 2: return func.call(this, arguments[0], arguments[1], rest);
12765      }
12766      var args = Array(startIndex + 1);
12767      for (index = 0; index < startIndex; index++) {
12768        args[index] = arguments[index];
12769      }
12770      args[startIndex] = rest;
12771      return func.apply(this, args);
12772    };
12773  }
12774
12775  // Is a given variable an object?
12776  function isObject(obj) {
12777    var type = typeof obj;
12778    return type === 'function' || type === 'object' && !!obj;
12779  }
12780
12781  // Is a given value equal to null?
12782  function isNull(obj) {
12783    return obj === null;
12784  }
12785
12786  // Is a given variable undefined?
12787  function isUndefined(obj) {
12788    return obj === void 0;
12789  }
12790
12791  // Is a given value a boolean?
12792  function isBoolean(obj) {
12793    return obj === true || obj === false || toString.call(obj) === '[object Boolean]';
12794  }
12795
12796  // Is a given value a DOM element?
12797  function isElement(obj) {
12798    return !!(obj && obj.nodeType === 1);
12799  }
12800
12801  // Internal function for creating a `toString`-based type tester.
12802  function tagTester(name) {
12803    var tag = '[object ' + name + ']';
12804    return function(obj) {
12805      return toString.call(obj) === tag;
12806    };
12807  }
12808
12809  var isString = tagTester('String');
12810
12811  var isNumber = tagTester('Number');
12812
12813  var isDate = tagTester('Date');
12814
12815  var isRegExp = tagTester('RegExp');
12816
12817  var isError = tagTester('Error');
12818
12819  var isSymbol = tagTester('Symbol');
12820
12821  var isArrayBuffer = tagTester('ArrayBuffer');
12822
12823  var isFunction = tagTester('Function');
12824
12825  // Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old
12826  // v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).
12827  var nodelist = root.document && root.document.childNodes;
12828  if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {
12829    isFunction = function(obj) {
12830      return typeof obj == 'function' || false;
12831    };
12832  }
12833
12834  var isFunction$1 = isFunction;
12835
12836  var hasObjectTag = tagTester('Object');
12837
12838  // In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.
12839  // In IE 11, the most common among them, this problem also applies to
12840  // `Map`, `WeakMap` and `Set`.
12841  var hasStringTagBug = (
12842        supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))
12843      ),
12844      isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));
12845
12846  var isDataView = tagTester('DataView');
12847
12848  // In IE 10 - Edge 13, we need a different heuristic
12849  // to determine whether an object is a `DataView`.
12850  function ie10IsDataView(obj) {
12851    return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer);
12852  }
12853
12854  var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView);
12855
12856  // Is a given value an array?
12857  // Delegates to ECMA5's native `Array.isArray`.
12858  var isArray = nativeIsArray || tagTester('Array');
12859
12860  // Internal function to check whether `key` is an own property name of `obj`.
12861  function has$1(obj, key) {
12862    return obj != null && hasOwnProperty.call(obj, key);
12863  }
12864
12865  var isArguments = tagTester('Arguments');
12866
12867  // Define a fallback version of the method in browsers (ahem, IE < 9), where
12868  // there isn't any inspectable "Arguments" type.
12869  (function() {
12870    if (!isArguments(arguments)) {
12871      isArguments = function(obj) {
12872        return has$1(obj, 'callee');
12873      };
12874    }
12875  }());
12876
12877  var isArguments$1 = isArguments;
12878
12879  // Is a given object a finite number?
12880  function isFinite$1(obj) {
12881    return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));
12882  }
12883
12884  // Is the given value `NaN`?
12885  function isNaN$1(obj) {
12886    return isNumber(obj) && _isNaN(obj);
12887  }
12888
12889  // Predicate-generating function. Often useful outside of Underscore.
12890  function constant(value) {
12891    return function() {
12892      return value;
12893    };
12894  }
12895
12896  // Common internal logic for `isArrayLike` and `isBufferLike`.
12897  function createSizePropertyCheck(getSizeProperty) {
12898    return function(collection) {
12899      var sizeProperty = getSizeProperty(collection);
12900      return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;
12901    }
12902  }
12903
12904  // Internal helper to generate a function to obtain property `key` from `obj`.
12905  function shallowProperty(key) {
12906    return function(obj) {
12907      return obj == null ? void 0 : obj[key];
12908    };
12909  }
12910
12911  // Internal helper to obtain the `byteLength` property of an object.
12912  var getByteLength = shallowProperty('byteLength');
12913
12914  // Internal helper to determine whether we should spend extensive checks against
12915  // `ArrayBuffer` et al.
12916  var isBufferLike = createSizePropertyCheck(getByteLength);
12917
12918  // Is a given value a typed array?
12919  var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;
12920  function isTypedArray(obj) {
12921    // `ArrayBuffer.isView` is the most future-proof, so use it when available.
12922    // Otherwise, fall back on the above regular expression.
12923    return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) :
12924                  isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));
12925  }
12926
12927  var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false);
12928
12929  // Internal helper to obtain the `length` property of an object.
12930  var getLength = shallowProperty('length');
12931
12932  // Internal helper to create a simple lookup structure.
12933  // `collectNonEnumProps` used to depend on `_.contains`, but this led to
12934  // circular imports. `emulatedSet` is a one-off solution that only works for
12935  // arrays of strings.
12936  function emulatedSet(keys) {
12937    var hash = {};
12938    for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;
12939    return {
12940      contains: function(key) { return hash[key]; },
12941      push: function(key) {
12942        hash[key] = true;
12943        return keys.push(key);
12944      }
12945    };
12946  }
12947
12948  // Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't
12949  // be iterated by `for key in ...` and thus missed. Extends `keys` in place if
12950  // needed.
12951  function collectNonEnumProps(obj, keys) {
12952    keys = emulatedSet(keys);
12953    var nonEnumIdx = nonEnumerableProps.length;
12954    var constructor = obj.constructor;
12955    var proto = isFunction$1(constructor) && constructor.prototype || ObjProto;
12956
12957    // Constructor is a special case.
12958    var prop = 'constructor';
12959    if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop);
12960
12961    while (nonEnumIdx--) {
12962      prop = nonEnumerableProps[nonEnumIdx];
12963      if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {
12964        keys.push(prop);
12965      }
12966    }
12967  }
12968
12969  // Retrieve the names of an object's own properties.
12970  // Delegates to **ECMAScript 5**'s native `Object.keys`.
12971  function keys(obj) {
12972    if (!isObject(obj)) return [];
12973    if (nativeKeys) return nativeKeys(obj);
12974    var keys = [];
12975    for (var key in obj) if (has$1(obj, key)) keys.push(key);
12976    // Ahem, IE < 9.
12977    if (hasEnumBug) collectNonEnumProps(obj, keys);
12978    return keys;
12979  }
12980
12981  // Is a given array, string, or object empty?
12982  // An "empty" object has no enumerable own-properties.
12983  function isEmpty(obj) {
12984    if (obj == null) return true;
12985    // Skip the more expensive `toString`-based type checks if `obj` has no
12986    // `.length`.
12987    var length = getLength(obj);
12988    if (typeof length == 'number' && (
12989      isArray(obj) || isString(obj) || isArguments$1(obj)
12990    )) return length === 0;
12991    return getLength(keys(obj)) === 0;
12992  }
12993
12994  // Returns whether an object has a given set of `key:value` pairs.
12995  function isMatch(object, attrs) {
12996    var _keys = keys(attrs), length = _keys.length;
12997    if (object == null) return !length;
12998    var obj = Object(object);
12999    for (var i = 0; i < length; i++) {
13000      var key = _keys[i];
13001      if (attrs[key] !== obj[key] || !(key in obj)) return false;
13002    }
13003    return true;
13004  }
13005
13006  // If Underscore is called as a function, it returns a wrapped object that can
13007  // be used OO-style. This wrapper holds altered versions of all functions added
13008  // through `_.mixin`. Wrapped objects may be chained.
13009  function _$1(obj) {
13010    if (obj instanceof _$1) return obj;
13011    if (!(this instanceof _$1)) return new _$1(obj);
13012    this._wrapped = obj;
13013  }
13014
13015  _$1.VERSION = VERSION;
13016
13017  // Extracts the result from a wrapped and chained object.
13018  _$1.prototype.value = function() {
13019    return this._wrapped;
13020  };
13021
13022  // Provide unwrapping proxies for some methods used in engine operations
13023  // such as arithmetic and JSON stringification.
13024  _$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value;
13025
13026  _$1.prototype.toString = function() {
13027    return String(this._wrapped);
13028  };
13029
13030  // Internal function to wrap or shallow-copy an ArrayBuffer,
13031  // typed array or DataView to a new view, reusing the buffer.
13032  function toBufferView(bufferSource) {
13033    return new Uint8Array(
13034      bufferSource.buffer || bufferSource,
13035      bufferSource.byteOffset || 0,
13036      getByteLength(bufferSource)
13037    );
13038  }
13039
13040  // We use this string twice, so give it a name for minification.
13041  var tagDataView = '[object DataView]';
13042
13043  // Internal recursive comparison function for `_.isEqual`.
13044  function eq(a, b, aStack, bStack) {
13045    // Identical objects are equal. `0 === -0`, but they aren't identical.
13046    // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).
13047    if (a === b) return a !== 0 || 1 / a === 1 / b;
13048    // `null` or `undefined` only equal to itself (strict comparison).
13049    if (a == null || b == null) return false;
13050    // `NaN`s are equivalent, but non-reflexive.
13051    if (a !== a) return b !== b;
13052    // Exhaust primitive checks
13053    var type = typeof a;
13054    if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;
13055    return deepEq(a, b, aStack, bStack);
13056  }
13057
13058  // Internal recursive comparison function for `_.isEqual`.
13059  function deepEq(a, b, aStack, bStack) {
13060    // Unwrap any wrapped objects.
13061    if (a instanceof _$1) a = a._wrapped;
13062    if (b instanceof _$1) b = b._wrapped;
13063    // Compare `[[Class]]` names.
13064    var className = toString.call(a);
13065    if (className !== toString.call(b)) return false;
13066    // Work around a bug in IE 10 - Edge 13.
13067    if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) {
13068      if (!isDataView$1(b)) return false;
13069      className = tagDataView;
13070    }
13071    switch (className) {
13072      // These types are compared by value.
13073      case '[object RegExp]':
13074        // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')
13075      case '[object String]':
13076        // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
13077        // equivalent to `new String("5")`.
13078        return '' + a === '' + b;
13079      case '[object Number]':
13080        // `NaN`s are equivalent, but non-reflexive.
13081        // Object(NaN) is equivalent to NaN.
13082        if (+a !== +a) return +b !== +b;
13083        // An `egal` comparison is performed for other numeric values.
13084        return +a === 0 ? 1 / +a === 1 / b : +a === +b;
13085      case '[object Date]':
13086      case '[object Boolean]':
13087        // Coerce dates and booleans to numeric primitive values. Dates are compared by their
13088        // millisecond representations. Note that invalid dates with millisecond representations
13089        // of `NaN` are not equivalent.
13090        return +a === +b;
13091      case '[object Symbol]':
13092        return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);
13093      case '[object ArrayBuffer]':
13094      case tagDataView:
13095        // Coerce to typed array so we can fall through.
13096        return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);
13097    }
13098
13099    var areArrays = className === '[object Array]';
13100    if (!areArrays && isTypedArray$1(a)) {
13101        var byteLength = getByteLength(a);
13102        if (byteLength !== getByteLength(b)) return false;
13103        if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;
13104        areArrays = true;
13105    }
13106    if (!areArrays) {
13107      if (typeof a != 'object' || typeof b != 'object') return false;
13108
13109      // Objects with different constructors are not equivalent, but `Object`s or `Array`s
13110      // from different frames are.
13111      var aCtor = a.constructor, bCtor = b.constructor;
13112      if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor &&
13113                               isFunction$1(bCtor) && bCtor instanceof bCtor)
13114                          && ('constructor' in a && 'constructor' in b)) {
13115        return false;
13116      }
13117    }
13118    // Assume equality for cyclic structures. The algorithm for detecting cyclic
13119    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
13120
13121    // Initializing stack of traversed objects.
13122    // It's done here since we only need them for objects and arrays comparison.
13123    aStack = aStack || [];
13124    bStack = bStack || [];
13125    var length = aStack.length;
13126    while (length--) {
13127      // Linear search. Performance is inversely proportional to the number of
13128      // unique nested structures.
13129      if (aStack[length] === a) return bStack[length] === b;
13130    }
13131
13132    // Add the first object to the stack of traversed objects.
13133    aStack.push(a);
13134    bStack.push(b);
13135
13136    // Recursively compare objects and arrays.
13137    if (areArrays) {
13138      // Compare array lengths to determine if a deep comparison is necessary.
13139      length = a.length;
13140      if (length !== b.length) return false;
13141      // Deep compare the contents, ignoring non-numeric properties.
13142      while (length--) {
13143        if (!eq(a[length], b[length], aStack, bStack)) return false;
13144      }
13145    } else {
13146      // Deep compare objects.
13147      var _keys = keys(a), key;
13148      length = _keys.length;
13149      // Ensure that both objects contain the same number of properties before comparing deep equality.
13150      if (keys(b).length !== length) return false;
13151      while (length--) {
13152        // Deep compare each member
13153        key = _keys[length];
13154        if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false;
13155      }
13156    }
13157    // Remove the first object from the stack of traversed objects.
13158    aStack.pop();
13159    bStack.pop();
13160    return true;
13161  }
13162
13163  // Perform a deep comparison to check if two objects are equal.
13164  function isEqual(a, b) {
13165    return eq(a, b);
13166  }
13167
13168  // Retrieve all the enumerable property names of an object.
13169  function allKeys(obj) {
13170    if (!isObject(obj)) return [];
13171    var keys = [];
13172    for (var key in obj) keys.push(key);
13173    // Ahem, IE < 9.
13174    if (hasEnumBug) collectNonEnumProps(obj, keys);
13175    return keys;
13176  }
13177
13178  // Since the regular `Object.prototype.toString` type tests don't work for
13179  // some types in IE 11, we use a fingerprinting heuristic instead, based
13180  // on the methods. It's not great, but it's the best we got.
13181  // The fingerprint method lists are defined below.
13182  function ie11fingerprint(methods) {
13183    var length = getLength(methods);
13184    return function(obj) {
13185      if (obj == null) return false;
13186      // `Map`, `WeakMap` and `Set` have no enumerable keys.
13187      var keys = allKeys(obj);
13188      if (getLength(keys)) return false;
13189      for (var i = 0; i < length; i++) {
13190        if (!isFunction$1(obj[methods[i]])) return false;
13191      }
13192      // If we are testing against `WeakMap`, we need to ensure that
13193      // `obj` doesn't have a `forEach` method in order to distinguish
13194      // it from a regular `Map`.
13195      return methods !== weakMapMethods || !isFunction$1(obj[forEachName]);
13196    };
13197  }
13198
13199  // In the interest of compact minification, we write
13200  // each string in the fingerprints only once.
13201  var forEachName = 'forEach',
13202      hasName = 'has',
13203      commonInit = ['clear', 'delete'],
13204      mapTail = ['get', hasName, 'set'];
13205
13206  // `Map`, `WeakMap` and `Set` each have slightly different
13207  // combinations of the above sublists.
13208  var mapMethods = commonInit.concat(forEachName, mapTail),
13209      weakMapMethods = commonInit.concat(mapTail),
13210      setMethods = ['add'].concat(commonInit, forEachName, hasName);
13211
13212  var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');
13213
13214  var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');
13215
13216  var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');
13217
13218  var isWeakSet = tagTester('WeakSet');
13219
13220  // Retrieve the values of an object's properties.
13221  function values(obj) {
13222    var _keys = keys(obj);
13223    var length = _keys.length;
13224    var values = Array(length);
13225    for (var i = 0; i < length; i++) {
13226      values[i] = obj[_keys[i]];
13227    }
13228    return values;
13229  }
13230
13231  // Convert an object into a list of `[key, value]` pairs.
13232  // The opposite of `_.object` with one argument.
13233  function pairs(obj) {
13234    var _keys = keys(obj);
13235    var length = _keys.length;
13236    var pairs = Array(length);
13237    for (var i = 0; i < length; i++) {
13238      pairs[i] = [_keys[i], obj[_keys[i]]];
13239    }
13240    return pairs;
13241  }
13242
13243  // Invert the keys and values of an object. The values must be serializable.
13244  function invert(obj) {
13245    var result = {};
13246    var _keys = keys(obj);
13247    for (var i = 0, length = _keys.length; i < length; i++) {
13248      result[obj[_keys[i]]] = _keys[i];
13249    }
13250    return result;
13251  }
13252
13253  // Return a sorted list of the function names available on the object.
13254  function functions(obj) {
13255    var names = [];
13256    for (var key in obj) {
13257      if (isFunction$1(obj[key])) names.push(key);
13258    }
13259    return names.sort();
13260  }
13261
13262  // An internal function for creating assigner functions.
13263  function createAssigner(keysFunc, defaults) {
13264    return function(obj) {
13265      var length = arguments.length;
13266      if (defaults) obj = Object(obj);
13267      if (length < 2 || obj == null) return obj;
13268      for (var index = 1; index < length; index++) {
13269        var source = arguments[index],
13270            keys = keysFunc(source),
13271            l = keys.length;
13272        for (var i = 0; i < l; i++) {
13273          var key = keys[i];
13274          if (!defaults || obj[key] === void 0) obj[key] = source[key];
13275        }
13276      }
13277      return obj;
13278    };
13279  }
13280
13281  // Extend a given object with all the properties in passed-in object(s).
13282  var extend = createAssigner(allKeys);
13283
13284  // Assigns a given object with all the own properties in the passed-in
13285  // object(s).
13286  // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)
13287  var extendOwn = createAssigner(keys);
13288
13289  // Fill in a given object with default properties.
13290  var defaults = createAssigner(allKeys, true);
13291
13292  // Create a naked function reference for surrogate-prototype-swapping.
13293  function ctor() {
13294    return function(){};
13295  }
13296
13297  // An internal function for creating a new object that inherits from another.
13298  function baseCreate(prototype) {
13299    if (!isObject(prototype)) return {};
13300    if (nativeCreate) return nativeCreate(prototype);
13301    var Ctor = ctor();
13302    Ctor.prototype = prototype;
13303    var result = new Ctor;
13304    Ctor.prototype = null;
13305    return result;
13306  }
13307
13308  // Creates an object that inherits from the given prototype object.
13309  // If additional properties are provided then they will be added to the
13310  // created object.
13311  function create(prototype, props) {
13312    var result = baseCreate(prototype);
13313    if (props) extendOwn(result, props);
13314    return result;
13315  }
13316
13317  // Create a (shallow-cloned) duplicate of an object.
13318  function clone(obj) {
13319    if (!isObject(obj)) return obj;
13320    return isArray(obj) ? obj.slice() : extend({}, obj);
13321  }
13322
13323  // Invokes `interceptor` with the `obj` and then returns `obj`.
13324  // The primary purpose of this method is to "tap into" a method chain, in
13325  // order to perform operations on intermediate results within the chain.
13326  function tap(obj, interceptor) {
13327    interceptor(obj);
13328    return obj;
13329  }
13330
13331  // Normalize a (deep) property `path` to array.
13332  // Like `_.iteratee`, this function can be customized.
13333  function toPath$1(path) {
13334    return isArray(path) ? path : [path];
13335  }
13336  _$1.toPath = toPath$1;
13337
13338  // Internal wrapper for `_.toPath` to enable minification.
13339  // Similar to `cb` for `_.iteratee`.
13340  function toPath(path) {
13341    return _$1.toPath(path);
13342  }
13343
13344  // Internal function to obtain a nested property in `obj` along `path`.
13345  function deepGet(obj, path) {
13346    var length = path.length;
13347    for (var i = 0; i < length; i++) {
13348      if (obj == null) return void 0;
13349      obj = obj[path[i]];
13350    }
13351    return length ? obj : void 0;
13352  }
13353
13354  // Get the value of the (deep) property on `path` from `object`.
13355  // If any property in `path` does not exist or if the value is
13356  // `undefined`, return `defaultValue` instead.
13357  // The `path` is normalized through `_.toPath`.
13358  function get(object, path, defaultValue) {
13359    var value = deepGet(object, toPath(path));
13360    return isUndefined(value) ? defaultValue : value;
13361  }
13362
13363  // Shortcut function for checking if an object has a given property directly on
13364  // itself (in other words, not on a prototype). Unlike the internal `has`
13365  // function, this public version can also traverse nested properties.
13366  function has(obj, path) {
13367    path = toPath(path);
13368    var length = path.length;
13369    for (var i = 0; i < length; i++) {
13370      var key = path[i];
13371      if (!has$1(obj, key)) return false;
13372      obj = obj[key];
13373    }
13374    return !!length;
13375  }
13376
13377  // Keep the identity function around for default iteratees.
13378  function identity(value) {
13379    return value;
13380  }
13381
13382  // Returns a predicate for checking whether an object has a given set of
13383  // `key:value` pairs.
13384  function matcher(attrs) {
13385    attrs = extendOwn({}, attrs);
13386    return function(obj) {
13387      return isMatch(obj, attrs);
13388    };
13389  }
13390
13391  // Creates a function that, when passed an object, will traverse that object’s
13392  // properties down the given `path`, specified as an array of keys or indices.
13393  function property(path) {
13394    path = toPath(path);
13395    return function(obj) {
13396      return deepGet(obj, path);
13397    };
13398  }
13399
13400  // Internal function that returns an efficient (for current engines) version
13401  // of the passed-in callback, to be repeatedly applied in other Underscore
13402  // functions.
13403  function optimizeCb(func, context, argCount) {
13404    if (context === void 0) return func;
13405    switch (argCount == null ? 3 : argCount) {
13406      case 1: return function(value) {
13407        return func.call(context, value);
13408      };
13409      // The 2-argument case is omitted because we’re not using it.
13410      case 3: return function(value, index, collection) {
13411        return func.call(context, value, index, collection);
13412      };
13413      case 4: return function(accumulator, value, index, collection) {
13414        return func.call(context, accumulator, value, index, collection);
13415      };
13416    }
13417    return function() {
13418      return func.apply(context, arguments);
13419    };
13420  }
13421
13422  // An internal function to generate callbacks that can be applied to each
13423  // element in a collection, returning the desired result — either `_.identity`,
13424  // an arbitrary callback, a property matcher, or a property accessor.
13425  function baseIteratee(value, context, argCount) {
13426    if (value == null) return identity;
13427    if (isFunction$1(value)) return optimizeCb(value, context, argCount);
13428    if (isObject(value) && !isArray(value)) return matcher(value);
13429    return property(value);
13430  }
13431
13432  // External wrapper for our callback generator. Users may customize
13433  // `_.iteratee` if they want additional predicate/iteratee shorthand styles.
13434  // This abstraction hides the internal-only `argCount` argument.
13435  function iteratee(value, context) {
13436    return baseIteratee(value, context, Infinity);
13437  }
13438  _$1.iteratee = iteratee;
13439
13440  // The function we call internally to generate a callback. It invokes
13441  // `_.iteratee` if overridden, otherwise `baseIteratee`.
13442  function cb(value, context, argCount) {
13443    if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context);
13444    return baseIteratee(value, context, argCount);
13445  }
13446
13447  // Returns the results of applying the `iteratee` to each element of `obj`.
13448  // In contrast to `_.map` it returns an object.
13449  function mapObject(obj, iteratee, context) {
13450    iteratee = cb(iteratee, context);
13451    var _keys = keys(obj),
13452        length = _keys.length,
13453        results = {};
13454    for (var index = 0; index < length; index++) {
13455      var currentKey = _keys[index];
13456      results[currentKey] = iteratee(obj[currentKey], currentKey, obj);
13457    }
13458    return results;
13459  }
13460
13461  // Predicate-generating function. Often useful outside of Underscore.
13462  function noop(){}
13463
13464  // Generates a function for a given object that returns a given property.
13465  function propertyOf(obj) {
13466    if (obj == null) return noop;
13467    return function(path) {
13468      return get(obj, path);
13469    };
13470  }
13471
13472  // Run a function **n** times.
13473  function times(n, iteratee, context) {
13474    var accum = Array(Math.max(0, n));
13475    iteratee = optimizeCb(iteratee, context, 1);
13476    for (var i = 0; i < n; i++) accum[i] = iteratee(i);
13477    return accum;
13478  }
13479
13480  // Return a random integer between `min` and `max` (inclusive).
13481  function random(min, max) {
13482    if (max == null) {
13483      max = min;
13484      min = 0;
13485    }
13486    return min + Math.floor(Math.random() * (max - min + 1));
13487  }
13488
13489  // A (possibly faster) way to get the current timestamp as an integer.
13490  var now = Date.now || function() {
13491    return new Date().getTime();
13492  };
13493
13494  // Internal helper to generate functions for escaping and unescaping strings
13495  // to/from HTML interpolation.
13496  function createEscaper(map) {
13497    var escaper = function(match) {
13498      return map[match];
13499    };
13500    // Regexes for identifying a key that needs to be escaped.
13501    var source = '(?:' + keys(map).join('|') + ')';
13502    var testRegexp = RegExp(source);
13503    var replaceRegexp = RegExp(source, 'g');
13504    return function(string) {
13505      string = string == null ? '' : '' + string;
13506      return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;
13507    };
13508  }
13509
13510  // Internal list of HTML entities for escaping.
13511  var escapeMap = {
13512    '&': '&amp;',
13513    '<': '&lt;',
13514    '>': '&gt;',
13515    '"': '&quot;',
13516    "'": '&#x27;',
13517    '`': '&#x60;'
13518  };
13519
13520  // Function for escaping strings to HTML interpolation.
13521  var _escape = createEscaper(escapeMap);
13522
13523  // Internal list of HTML entities for unescaping.
13524  var unescapeMap = invert(escapeMap);
13525
13526  // Function for unescaping strings from HTML interpolation.
13527  var _unescape = createEscaper(unescapeMap);
13528
13529  // By default, Underscore uses ERB-style template delimiters. Change the
13530  // following template settings to use alternative delimiters.
13531  var templateSettings = _$1.templateSettings = {
13532    evaluate: /<%([\s\S]+?)%>/g,
13533    interpolate: /<%=([\s\S]+?)%>/g,
13534    escape: /<%-([\s\S]+?)%>/g
13535  };
13536
13537  // When customizing `_.templateSettings`, if you don't want to define an
13538  // interpolation, evaluation or escaping regex, we need one that is
13539  // guaranteed not to match.
13540  var noMatch = /(.)^/;
13541
13542  // Certain characters need to be escaped so that they can be put into a
13543  // string literal.
13544  var escapes = {
13545    "'": "'",
13546    '\\': '\\',
13547    '\r': 'r',
13548    '\n': 'n',
13549    '\u2028': 'u2028',
13550    '\u2029': 'u2029'
13551  };
13552
13553  var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g;
13554
13555  function escapeChar(match) {
13556    return '\\' + escapes[match];
13557  }
13558
13559  // In order to prevent third-party code injection through
13560  // `_.templateSettings.variable`, we test it against the following regular
13561  // expression. It is intentionally a bit more liberal than just matching valid
13562  // identifiers, but still prevents possible loopholes through defaults or
13563  // destructuring assignment.
13564  var bareIdentifier = /^\s*(\w|\$)+\s*$/;
13565
13566  // JavaScript micro-templating, similar to John Resig's implementation.
13567  // Underscore templating handles arbitrary delimiters, preserves whitespace,
13568  // and correctly escapes quotes within interpolated code.
13569  // NB: `oldSettings` only exists for backwards compatibility.
13570  function template(text, settings, oldSettings) {
13571    if (!settings && oldSettings) settings = oldSettings;
13572    settings = defaults({}, settings, _$1.templateSettings);
13573
13574    // Combine delimiters into one regular expression via alternation.
13575    var matcher = RegExp([
13576      (settings.escape || noMatch).source,
13577      (settings.interpolate || noMatch).source,
13578      (settings.evaluate || noMatch).source
13579    ].join('|') + '|$', 'g');
13580
13581    // Compile the template source, escaping string literals appropriately.
13582    var index = 0;
13583    var source = "__p+='";
13584    text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
13585      source += text.slice(index, offset).replace(escapeRegExp, escapeChar);
13586      index = offset + match.length;
13587
13588      if (escape) {
13589        source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
13590      } else if (interpolate) {
13591        source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
13592      } else if (evaluate) {
13593        source += "';\n" + evaluate + "\n__p+='";
13594      }
13595
13596      // Adobe VMs need the match returned to produce the correct offset.
13597      return match;
13598    });
13599    source += "';\n";
13600
13601    var argument = settings.variable;
13602    if (argument) {
13603      // Insure against third-party code injection. (CVE-2021-23358)
13604      if (!bareIdentifier.test(argument)) throw new Error(
13605        'variable is not a bare identifier: ' + argument
13606      );
13607    } else {
13608      // If a variable is not specified, place data values in local scope.
13609      source = 'with(obj||{}){\n' + source + '}\n';
13610      argument = 'obj';
13611    }
13612
13613    source = "var __t,__p='',__j=Array.prototype.join," +
13614      "print=function(){__p+=__j.call(arguments,'');};\n" +
13615      source + 'return __p;\n';
13616
13617    var render;
13618    try {
13619      render = new Function(argument, '_', source);
13620    } catch (e) {
13621      e.source = source;
13622      throw e;
13623    }
13624
13625    var template = function(data) {
13626      return render.call(this, data, _$1);
13627    };
13628
13629    // Provide the compiled source as a convenience for precompilation.
13630    template.source = 'function(' + argument + '){\n' + source + '}';
13631
13632    return template;
13633  }
13634
13635  // Traverses the children of `obj` along `path`. If a child is a function, it
13636  // is invoked with its parent as context. Returns the value of the final
13637  // child, or `fallback` if any child is undefined.
13638  function result(obj, path, fallback) {
13639    path = toPath(path);
13640    var length = path.length;
13641    if (!length) {
13642      return isFunction$1(fallback) ? fallback.call(obj) : fallback;
13643    }
13644    for (var i = 0; i < length; i++) {
13645      var prop = obj == null ? void 0 : obj[path[i]];
13646      if (prop === void 0) {
13647        prop = fallback;
13648        i = length; // Ensure we don't continue iterating.
13649      }
13650      obj = isFunction$1(prop) ? prop.call(obj) : prop;
13651    }
13652    return obj;
13653  }
13654
13655  // Generate a unique integer id (unique within the entire client session).
13656  // Useful for temporary DOM ids.
13657  var idCounter = 0;
13658  function uniqueId(prefix) {
13659    var id = ++idCounter + '';
13660    return prefix ? prefix + id : id;
13661  }
13662
13663  // Start chaining a wrapped Underscore object.
13664  function chain(obj) {
13665    var instance = _$1(obj);
13666    instance._chain = true;
13667    return instance;
13668  }
13669
13670  // Internal function to execute `sourceFunc` bound to `context` with optional
13671  // `args`. Determines whether to execute a function as a constructor or as a
13672  // normal function.
13673  function executeBound(sourceFunc, boundFunc, context, callingContext, args) {
13674    if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);
13675    var self = baseCreate(sourceFunc.prototype);
13676    var result = sourceFunc.apply(self, args);
13677    if (isObject(result)) return result;
13678    return self;
13679  }
13680
13681  // Partially apply a function by creating a version that has had some of its
13682  // arguments pre-filled, without changing its dynamic `this` context. `_` acts
13683  // as a placeholder by default, allowing any combination of arguments to be
13684  // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.
13685  var partial = restArguments(function(func, boundArgs) {
13686    var placeholder = partial.placeholder;
13687    var bound = function() {
13688      var position = 0, length = boundArgs.length;
13689      var args = Array(length);
13690      for (var i = 0; i < length; i++) {
13691        args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];
13692      }
13693      while (position < arguments.length) args.push(arguments[position++]);
13694      return executeBound(func, bound, this, this, args);
13695    };
13696    return bound;
13697  });
13698
13699  partial.placeholder = _$1;
13700
13701  // Create a function bound to a given object (assigning `this`, and arguments,
13702  // optionally).
13703  var bind = restArguments(function(func, context, args) {
13704    if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function');
13705    var bound = restArguments(function(callArgs) {
13706      return executeBound(func, bound, context, this, args.concat(callArgs));
13707    });
13708    return bound;
13709  });
13710
13711  // Internal helper for collection methods to determine whether a collection
13712  // should be iterated as an array or as an object.
13713  // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength
13714  // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094
13715  var isArrayLike = createSizePropertyCheck(getLength);
13716
13717  // Internal implementation of a recursive `flatten` function.
13718  function flatten$1(input, depth, strict, output) {
13719    output = output || [];
13720    if (!depth && depth !== 0) {
13721      depth = Infinity;
13722    } else if (depth <= 0) {
13723      return output.concat(input);
13724    }
13725    var idx = output.length;
13726    for (var i = 0, length = getLength(input); i < length; i++) {
13727      var value = input[i];
13728      if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) {
13729        // Flatten current level of array or arguments object.
13730        if (depth > 1) {
13731          flatten$1(value, depth - 1, strict, output);
13732          idx = output.length;
13733        } else {
13734          var j = 0, len = value.length;
13735          while (j < len) output[idx++] = value[j++];
13736        }
13737      } else if (!strict) {
13738        output[idx++] = value;
13739      }
13740    }
13741    return output;
13742  }
13743
13744  // Bind a number of an object's methods to that object. Remaining arguments
13745  // are the method names to be bound. Useful for ensuring that all callbacks
13746  // defined on an object belong to it.
13747  var bindAll = restArguments(function(obj, keys) {
13748    keys = flatten$1(keys, false, false);
13749    var index = keys.length;
13750    if (index < 1) throw new Error('bindAll must be passed function names');
13751    while (index--) {
13752      var key = keys[index];
13753      obj[key] = bind(obj[key], obj);
13754    }
13755    return obj;
13756  });
13757
13758  // Memoize an expensive function by storing its results.
13759  function memoize(func, hasher) {
13760    var memoize = function(key) {
13761      var cache = memoize.cache;
13762      var address = '' + (hasher ? hasher.apply(this, arguments) : key);
13763      if (!has$1(cache, address)) cache[address] = func.apply(this, arguments);
13764      return cache[address];
13765    };
13766    memoize.cache = {};
13767    return memoize;
13768  }
13769
13770  // Delays a function for the given number of milliseconds, and then calls
13771  // it with the arguments supplied.
13772  var delay = restArguments(function(func, wait, args) {
13773    return setTimeout(function() {
13774      return func.apply(null, args);
13775    }, wait);
13776  });
13777
13778  // Defers a function, scheduling it to run after the current call stack has
13779  // cleared.
13780  var defer = partial(delay, _$1, 1);
13781
13782  // Returns a function, that, when invoked, will only be triggered at most once
13783  // during a given window of time. Normally, the throttled function will run
13784  // as much as it can, without ever going more than once per `wait` duration;
13785  // but if you'd like to disable the execution on the leading edge, pass
13786  // `{leading: false}`. To disable execution on the trailing edge, ditto.
13787  function throttle(func, wait, options) {
13788    var timeout, context, args, result;
13789    var previous = 0;
13790    if (!options) options = {};
13791
13792    var later = function() {
13793      previous = options.leading === false ? 0 : now();
13794      timeout = null;
13795      result = func.apply(context, args);
13796      if (!timeout) context = args = null;
13797    };
13798
13799    var throttled = function() {
13800      var _now = now();
13801      if (!previous && options.leading === false) previous = _now;
13802      var remaining = wait - (_now - previous);
13803      context = this;
13804      args = arguments;
13805      if (remaining <= 0 || remaining > wait) {
13806        if (timeout) {
13807          clearTimeout(timeout);
13808          timeout = null;
13809        }
13810        previous = _now;
13811        result = func.apply(context, args);
13812        if (!timeout) context = args = null;
13813      } else if (!timeout && options.trailing !== false) {
13814        timeout = setTimeout(later, remaining);
13815      }
13816      return result;
13817    };
13818
13819    throttled.cancel = function() {
13820      clearTimeout(timeout);
13821      previous = 0;
13822      timeout = context = args = null;
13823    };
13824
13825    return throttled;
13826  }
13827
13828  // When a sequence of calls of the returned function ends, the argument
13829  // function is triggered. The end of a sequence is defined by the `wait`
13830  // parameter. If `immediate` is passed, the argument function will be
13831  // triggered at the beginning of the sequence instead of at the end.
13832  function debounce(func, wait, immediate) {
13833    var timeout, previous, args, result, context;
13834
13835    var later = function() {
13836      var passed = now() - previous;
13837      if (wait > passed) {
13838        timeout = setTimeout(later, wait - passed);
13839      } else {
13840        timeout = null;
13841        if (!immediate) result = func.apply(context, args);
13842        // This check is needed because `func` can recursively invoke `debounced`.
13843        if (!timeout) args = context = null;
13844      }
13845    };
13846
13847    var debounced = restArguments(function(_args) {
13848      context = this;
13849      args = _args;
13850      previous = now();
13851      if (!timeout) {
13852        timeout = setTimeout(later, wait);
13853        if (immediate) result = func.apply(context, args);
13854      }
13855      return result;
13856    });
13857
13858    debounced.cancel = function() {
13859      clearTimeout(timeout);
13860      timeout = args = context = null;
13861    };
13862
13863    return debounced;
13864  }
13865
13866  // Returns the first function passed as an argument to the second,
13867  // allowing you to adjust arguments, run code before and after, and
13868  // conditionally execute the original function.
13869  function wrap(func, wrapper) {
13870    return partial(wrapper, func);
13871  }
13872
13873  // Returns a negated version of the passed-in predicate.
13874  function negate(predicate) {
13875    return function() {
13876      return !predicate.apply(this, arguments);
13877    };
13878  }
13879
13880  // Returns a function that is the composition of a list of functions, each
13881  // consuming the return value of the function that follows.
13882  function compose() {
13883    var args = arguments;
13884    var start = args.length - 1;
13885    return function() {
13886      var i = start;
13887      var result = args[start].apply(this, arguments);
13888      while (i--) result = args[i].call(this, result);
13889      return result;
13890    };
13891  }
13892
13893  // Returns a function that will only be executed on and after the Nth call.
13894  function after(times, func) {
13895    return function() {
13896      if (--times < 1) {
13897        return func.apply(this, arguments);
13898      }
13899    };
13900  }
13901
13902  // Returns a function that will only be executed up to (but not including) the
13903  // Nth call.
13904  function before(times, func) {
13905    var memo;
13906    return function() {
13907      if (--times > 0) {
13908        memo = func.apply(this, arguments);
13909      }
13910      if (times <= 1) func = null;
13911      return memo;
13912    };
13913  }
13914
13915  // Returns a function that will be executed at most one time, no matter how
13916  // often you call it. Useful for lazy initialization.
13917  var once = partial(before, 2);
13918
13919  // Returns the first key on an object that passes a truth test.
13920  function findKey(obj, predicate, context) {
13921    predicate = cb(predicate, context);
13922    var _keys = keys(obj), key;
13923    for (var i = 0, length = _keys.length; i < length; i++) {
13924      key = _keys[i];
13925      if (predicate(obj[key], key, obj)) return key;
13926    }
13927  }
13928
13929  // Internal function to generate `_.findIndex` and `_.findLastIndex`.
13930  function createPredicateIndexFinder(dir) {
13931    return function(array, predicate, context) {
13932      predicate = cb(predicate, context);
13933      var length = getLength(array);
13934      var index = dir > 0 ? 0 : length - 1;
13935      for (; index >= 0 && index < length; index += dir) {
13936        if (predicate(array[index], index, array)) return index;
13937      }
13938      return -1;
13939    };
13940  }
13941
13942  // Returns the first index on an array-like that passes a truth test.
13943  var findIndex = createPredicateIndexFinder(1);
13944
13945  // Returns the last index on an array-like that passes a truth test.
13946  var findLastIndex = createPredicateIndexFinder(-1);
13947
13948  // Use a comparator function to figure out the smallest index at which
13949  // an object should be inserted so as to maintain order. Uses binary search.
13950  function sortedIndex(array, obj, iteratee, context) {
13951    iteratee = cb(iteratee, context, 1);
13952    var value = iteratee(obj);
13953    var low = 0, high = getLength(array);
13954    while (low < high) {
13955      var mid = Math.floor((low + high) / 2);
13956      if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;
13957    }
13958    return low;
13959  }
13960
13961  // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.
13962  function createIndexFinder(dir, predicateFind, sortedIndex) {
13963    return function(array, item, idx) {
13964      var i = 0, length = getLength(array);
13965      if (typeof idx == 'number') {
13966        if (dir > 0) {
13967          i = idx >= 0 ? idx : Math.max(idx + length, i);
13968        } else {
13969          length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;
13970        }
13971      } else if (sortedIndex && idx && length) {
13972        idx = sortedIndex(array, item);
13973        return array[idx] === item ? idx : -1;
13974      }
13975      if (item !== item) {
13976        idx = predicateFind(slice.call(array, i, length), isNaN$1);
13977        return idx >= 0 ? idx + i : -1;
13978      }
13979      for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {
13980        if (array[idx] === item) return idx;
13981      }
13982      return -1;
13983    };
13984  }
13985
13986  // Return the position of the first occurrence of an item in an array,
13987  // or -1 if the item is not included in the array.
13988  // If the array is large and already in sort order, pass `true`
13989  // for **isSorted** to use binary search.
13990  var indexOf = createIndexFinder(1, findIndex, sortedIndex);
13991
13992  // Return the position of the last occurrence of an item in an array,
13993  // or -1 if the item is not included in the array.
13994  var lastIndexOf = createIndexFinder(-1, findLastIndex);
13995
13996  // Return the first value which passes a truth test.
13997  function find(obj, predicate, context) {
13998    var keyFinder = isArrayLike(obj) ? findIndex : findKey;
13999    var key = keyFinder(obj, predicate, context);
14000    if (key !== void 0 && key !== -1) return obj[key];
14001  }
14002
14003  // Convenience version of a common use case of `_.find`: getting the first
14004  // object containing specific `key:value` pairs.
14005  function findWhere(obj, attrs) {
14006    return find(obj, matcher(attrs));
14007  }
14008
14009  // The cornerstone for collection functions, an `each`
14010  // implementation, aka `forEach`.
14011  // Handles raw objects in addition to array-likes. Treats all
14012  // sparse array-likes as if they were dense.
14013  function each(obj, iteratee, context) {
14014    iteratee = optimizeCb(iteratee, context);
14015    var i, length;
14016    if (isArrayLike(obj)) {
14017      for (i = 0, length = obj.length; i < length; i++) {
14018        iteratee(obj[i], i, obj);
14019      }
14020    } else {
14021      var _keys = keys(obj);
14022      for (i = 0, length = _keys.length; i < length; i++) {
14023        iteratee(obj[_keys[i]], _keys[i], obj);
14024      }
14025    }
14026    return obj;
14027  }
14028
14029  // Return the results of applying the iteratee to each element.
14030  function map(obj, iteratee, context) {
14031    iteratee = cb(iteratee, context);
14032    var _keys = !isArrayLike(obj) && keys(obj),
14033        length = (_keys || obj).length,
14034        results = Array(length);
14035    for (var index = 0; index < length; index++) {
14036      var currentKey = _keys ? _keys[index] : index;
14037      results[index] = iteratee(obj[currentKey], currentKey, obj);
14038    }
14039    return results;
14040  }
14041
14042  // Internal helper to create a reducing function, iterating left or right.
14043  function createReduce(dir) {
14044    // Wrap code that reassigns argument variables in a separate function than
14045    // the one that accesses `arguments.length` to avoid a perf hit. (#1991)
14046    var reducer = function(obj, iteratee, memo, initial) {
14047      var _keys = !isArrayLike(obj) && keys(obj),
14048          length = (_keys || obj).length,
14049          index = dir > 0 ? 0 : length - 1;
14050      if (!initial) {
14051        memo = obj[_keys ? _keys[index] : index];
14052        index += dir;
14053      }
14054      for (; index >= 0 && index < length; index += dir) {
14055        var currentKey = _keys ? _keys[index] : index;
14056        memo = iteratee(memo, obj[currentKey], currentKey, obj);
14057      }
14058      return memo;
14059    };
14060
14061    return function(obj, iteratee, memo, context) {
14062      var initial = arguments.length >= 3;
14063      return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);
14064    };
14065  }
14066
14067  // **Reduce** builds up a single result from a list of values, aka `inject`,
14068  // or `foldl`.
14069  var reduce = createReduce(1);
14070
14071  // The right-associative version of reduce, also known as `foldr`.
14072  var reduceRight = createReduce(-1);
14073
14074  // Return all the elements that pass a truth test.
14075  function filter(obj, predicate, context) {
14076    var results = [];
14077    predicate = cb(predicate, context);
14078    each(obj, function(value, index, list) {
14079      if (predicate(value, index, list)) results.push(value);
14080    });
14081    return results;
14082  }
14083
14084  // Return all the elements for which a truth test fails.
14085  function reject(obj, predicate, context) {
14086    return filter(obj, negate(cb(predicate)), context);
14087  }
14088
14089  // Determine whether all of the elements pass a truth test.
14090  function every(obj, predicate, context) {
14091    predicate = cb(predicate, context);
14092    var _keys = !isArrayLike(obj) && keys(obj),
14093        length = (_keys || obj).length;
14094    for (var index = 0; index < length; index++) {
14095      var currentKey = _keys ? _keys[index] : index;
14096      if (!predicate(obj[currentKey], currentKey, obj)) return false;
14097    }
14098    return true;
14099  }
14100
14101  // Determine if at least one element in the object passes a truth test.
14102  function some(obj, predicate, context) {
14103    predicate = cb(predicate, context);
14104    var _keys = !isArrayLike(obj) && keys(obj),
14105        length = (_keys || obj).length;
14106    for (var index = 0; index < length; index++) {
14107      var currentKey = _keys ? _keys[index] : index;
14108      if (predicate(obj[currentKey], currentKey, obj)) return true;
14109    }
14110    return false;
14111  }
14112
14113  // Determine if the array or object contains a given item (using `===`).
14114  function contains(obj, item, fromIndex, guard) {
14115    if (!isArrayLike(obj)) obj = values(obj);
14116    if (typeof fromIndex != 'number' || guard) fromIndex = 0;
14117    return indexOf(obj, item, fromIndex) >= 0;
14118  }
14119
14120  // Invoke a method (with arguments) on every item in a collection.
14121  var invoke = restArguments(function(obj, path, args) {
14122    var contextPath, func;
14123    if (isFunction$1(path)) {
14124      func = path;
14125    } else {
14126      path = toPath(path);
14127      contextPath = path.slice(0, -1);
14128      path = path[path.length - 1];
14129    }
14130    return map(obj, function(context) {
14131      var method = func;
14132      if (!method) {
14133        if (contextPath && contextPath.length) {
14134          context = deepGet(context, contextPath);
14135        }
14136        if (context == null) return void 0;
14137        method = context[path];
14138      }
14139      return method == null ? method : method.apply(context, args);
14140    });
14141  });
14142
14143  // Convenience version of a common use case of `_.map`: fetching a property.
14144  function pluck(obj, key) {
14145    return map(obj, property(key));
14146  }
14147
14148  // Convenience version of a common use case of `_.filter`: selecting only
14149  // objects containing specific `key:value` pairs.
14150  function where(obj, attrs) {
14151    return filter(obj, matcher(attrs));
14152  }
14153
14154  // Return the maximum element (or element-based computation).
14155  function max(obj, iteratee, context) {
14156    var result = -Infinity, lastComputed = -Infinity,
14157        value, computed;
14158    if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {
14159      obj = isArrayLike(obj) ? obj : values(obj);
14160      for (var i = 0, length = obj.length; i < length; i++) {
14161        value = obj[i];
14162        if (value != null && value > result) {
14163          result = value;
14164        }
14165      }
14166    } else {
14167      iteratee = cb(iteratee, context);
14168      each(obj, function(v, index, list) {
14169        computed = iteratee(v, index, list);
14170        if (computed > lastComputed || computed === -Infinity && result === -Infinity) {
14171          result = v;
14172          lastComputed = computed;
14173        }
14174      });
14175    }
14176    return result;
14177  }
14178
14179  // Return the minimum element (or element-based computation).
14180  function min(obj, iteratee, context) {
14181    var result = Infinity, lastComputed = Infinity,
14182        value, computed;
14183    if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {
14184      obj = isArrayLike(obj) ? obj : values(obj);
14185      for (var i = 0, length = obj.length; i < length; i++) {
14186        value = obj[i];
14187        if (value != null && value < result) {
14188          result = value;
14189        }
14190      }
14191    } else {
14192      iteratee = cb(iteratee, context);
14193      each(obj, function(v, index, list) {
14194        computed = iteratee(v, index, list);
14195        if (computed < lastComputed || computed === Infinity && result === Infinity) {
14196          result = v;
14197          lastComputed = computed;
14198        }
14199      });
14200    }
14201    return result;
14202  }
14203
14204  // Sample **n** random values from a collection using the modern version of the
14205  // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).
14206  // If **n** is not specified, returns a single random element.
14207  // The internal `guard` argument allows it to work with `_.map`.
14208  function sample(obj, n, guard) {
14209    if (n == null || guard) {
14210      if (!isArrayLike(obj)) obj = values(obj);
14211      return obj[random(obj.length - 1)];
14212    }
14213    var sample = isArrayLike(obj) ? clone(obj) : values(obj);
14214    var length = getLength(sample);
14215    n = Math.max(Math.min(n, length), 0);
14216    var last = length - 1;
14217    for (var index = 0; index < n; index++) {
14218      var rand = random(index, last);
14219      var temp = sample[index];
14220      sample[index] = sample[rand];
14221      sample[rand] = temp;
14222    }
14223    return sample.slice(0, n);
14224  }
14225
14226  // Shuffle a collection.
14227  function shuffle(obj) {
14228    return sample(obj, Infinity);
14229  }
14230
14231  // Sort the object's values by a criterion produced by an iteratee.
14232  function sortBy(obj, iteratee, context) {
14233    var index = 0;
14234    iteratee = cb(iteratee, context);
14235    return pluck(map(obj, function(value, key, list) {
14236      return {
14237        value: value,
14238        index: index++,
14239        criteria: iteratee(value, key, list)
14240      };
14241    }).sort(function(left, right) {
14242      var a = left.criteria;
14243      var b = right.criteria;
14244      if (a !== b) {
14245        if (a > b || a === void 0) return 1;
14246        if (a < b || b === void 0) return -1;
14247      }
14248      return left.index - right.index;
14249    }), 'value');
14250  }
14251
14252  // An internal function used for aggregate "group by" operations.
14253  function group(behavior, partition) {
14254    return function(obj, iteratee, context) {
14255      var result = partition ? [[], []] : {};
14256      iteratee = cb(iteratee, context);
14257      each(obj, function(value, index) {
14258        var key = iteratee(value, index, obj);
14259        behavior(result, value, key);
14260      });
14261      return result;
14262    };
14263  }
14264
14265  // Groups the object's values by a criterion. Pass either a string attribute
14266  // to group by, or a function that returns the criterion.
14267  var groupBy = group(function(result, value, key) {
14268    if (has$1(result, key)) result[key].push(value); else result[key] = [value];
14269  });
14270
14271  // Indexes the object's values by a criterion, similar to `_.groupBy`, but for
14272  // when you know that your index values will be unique.
14273  var indexBy = group(function(result, value, key) {
14274    result[key] = value;
14275  });
14276
14277  // Counts instances of an object that group by a certain criterion. Pass
14278  // either a string attribute to count by, or a function that returns the
14279  // criterion.
14280  var countBy = group(function(result, value, key) {
14281    if (has$1(result, key)) result[key]++; else result[key] = 1;
14282  });
14283
14284  // Split a collection into two arrays: one whose elements all pass the given
14285  // truth test, and one whose elements all do not pass the truth test.
14286  var partition = group(function(result, value, pass) {
14287    result[pass ? 0 : 1].push(value);
14288  }, true);
14289
14290  // Safely create a real, live array from anything iterable.
14291  var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;
14292  function toArray(obj) {
14293    if (!obj) return [];
14294    if (isArray(obj)) return slice.call(obj);
14295    if (isString(obj)) {
14296      // Keep surrogate pair characters together.
14297      return obj.match(reStrSymbol);
14298    }
14299    if (isArrayLike(obj)) return map(obj, identity);
14300    return values(obj);
14301  }
14302
14303  // Return the number of elements in a collection.
14304  function size(obj) {
14305    if (obj == null) return 0;
14306    return isArrayLike(obj) ? obj.length : keys(obj).length;
14307  }
14308
14309  // Internal `_.pick` helper function to determine whether `key` is an enumerable
14310  // property name of `obj`.
14311  function keyInObj(value, key, obj) {
14312    return key in obj;
14313  }
14314
14315  // Return a copy of the object only containing the allowed properties.
14316  var pick = restArguments(function(obj, keys) {
14317    var result = {}, iteratee = keys[0];
14318    if (obj == null) return result;
14319    if (isFunction$1(iteratee)) {
14320      if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);
14321      keys = allKeys(obj);
14322    } else {
14323      iteratee = keyInObj;
14324      keys = flatten$1(keys, false, false);
14325      obj = Object(obj);
14326    }
14327    for (var i = 0, length = keys.length; i < length; i++) {
14328      var key = keys[i];
14329      var value = obj[key];
14330      if (iteratee(value, key, obj)) result[key] = value;
14331    }
14332    return result;
14333  });
14334
14335  // Return a copy of the object without the disallowed properties.
14336  var omit = restArguments(function(obj, keys) {
14337    var iteratee = keys[0], context;
14338    if (isFunction$1(iteratee)) {
14339      iteratee = negate(iteratee);
14340      if (keys.length > 1) context = keys[1];
14341    } else {
14342      keys = map(flatten$1(keys, false, false), String);
14343      iteratee = function(value, key) {
14344        return !contains(keys, key);
14345      };
14346    }
14347    return pick(obj, iteratee, context);
14348  });
14349
14350  // Returns everything but the last entry of the array. Especially useful on
14351  // the arguments object. Passing **n** will return all the values in
14352  // the array, excluding the last N.
14353  function initial(array, n, guard) {
14354    return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));
14355  }
14356
14357  // Get the first element of an array. Passing **n** will return the first N
14358  // values in the array. The **guard** check allows it to work with `_.map`.
14359  function first(array, n, guard) {
14360    if (array == null || array.length < 1) return n == null || guard ? void 0 : [];
14361    if (n == null || guard) return array[0];
14362    return initial(array, array.length - n);
14363  }
14364
14365  // Returns everything but the first entry of the `array`. Especially useful on
14366  // the `arguments` object. Passing an **n** will return the rest N values in the
14367  // `array`.
14368  function rest(array, n, guard) {
14369    return slice.call(array, n == null || guard ? 1 : n);
14370  }
14371
14372  // Get the last element of an array. Passing **n** will return the last N
14373  // values in the array.
14374  function last(array, n, guard) {
14375    if (array == null || array.length < 1) return n == null || guard ? void 0 : [];
14376    if (n == null || guard) return array[array.length - 1];
14377    return rest(array, Math.max(0, array.length - n));
14378  }
14379
14380  // Trim out all falsy values from an array.
14381  function compact(array) {
14382    return filter(array, Boolean);
14383  }
14384
14385  // Flatten out an array, either recursively (by default), or up to `depth`.
14386  // Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.
14387  function flatten(array, depth) {
14388    return flatten$1(array, depth, false);
14389  }
14390
14391  // Take the difference between one array and a number of other arrays.
14392  // Only the elements present in just the first array will remain.
14393  var difference = restArguments(function(array, rest) {
14394    rest = flatten$1(rest, true, true);
14395    return filter(array, function(value){
14396      return !contains(rest, value);
14397    });
14398  });
14399
14400  // Return a version of the array that does not contain the specified value(s).
14401  var without = restArguments(function(array, otherArrays) {
14402    return difference(array, otherArrays);
14403  });
14404
14405  // Produce a duplicate-free version of the array. If the array has already
14406  // been sorted, you have the option of using a faster algorithm.
14407  // The faster algorithm will not work with an iteratee if the iteratee
14408  // is not a one-to-one function, so providing an iteratee will disable
14409  // the faster algorithm.
14410  function uniq(array, isSorted, iteratee, context) {
14411    if (!isBoolean(isSorted)) {
14412      context = iteratee;
14413      iteratee = isSorted;
14414      isSorted = false;
14415    }
14416    if (iteratee != null) iteratee = cb(iteratee, context);
14417    var result = [];
14418    var seen = [];
14419    for (var i = 0, length = getLength(array); i < length; i++) {
14420      var value = array[i],
14421          computed = iteratee ? iteratee(value, i, array) : value;
14422      if (isSorted && !iteratee) {
14423        if (!i || seen !== computed) result.push(value);
14424        seen = computed;
14425      } else if (iteratee) {
14426        if (!contains(seen, computed)) {
14427          seen.push(computed);
14428          result.push(value);
14429        }
14430      } else if (!contains(result, value)) {
14431        result.push(value);
14432      }
14433    }
14434    return result;
14435  }
14436
14437  // Produce an array that contains the union: each distinct element from all of
14438  // the passed-in arrays.
14439  var union = restArguments(function(arrays) {
14440    return uniq(flatten$1(arrays, true, true));
14441  });
14442
14443  // Produce an array that contains every item shared between all the
14444  // passed-in arrays.
14445  function intersection(array) {
14446    var result = [];
14447    var argsLength = arguments.length;
14448    for (var i = 0, length = getLength(array); i < length; i++) {
14449      var item = array[i];
14450      if (contains(result, item)) continue;
14451      var j;
14452      for (j = 1; j < argsLength; j++) {
14453        if (!contains(arguments[j], item)) break;
14454      }
14455      if (j === argsLength) result.push(item);
14456    }
14457    return result;
14458  }
14459
14460  // Complement of zip. Unzip accepts an array of arrays and groups
14461  // each array's elements on shared indices.
14462  function unzip(array) {
14463    var length = array && max(array, getLength).length || 0;
14464    var result = Array(length);
14465
14466    for (var index = 0; index < length; index++) {
14467      result[index] = pluck(array, index);
14468    }
14469    return result;
14470  }
14471
14472  // Zip together multiple lists into a single array -- elements that share
14473  // an index go together.
14474  var zip = restArguments(unzip);
14475
14476  // Converts lists into objects. Pass either a single array of `[key, value]`
14477  // pairs, or two parallel arrays of the same length -- one of keys, and one of
14478  // the corresponding values. Passing by pairs is the reverse of `_.pairs`.
14479  function object(list, values) {
14480    var result = {};
14481    for (var i = 0, length = getLength(list); i < length; i++) {
14482      if (values) {
14483        result[list[i]] = values[i];
14484      } else {
14485        result[list[i][0]] = list[i][1];
14486      }
14487    }
14488    return result;
14489  }
14490
14491  // Generate an integer Array containing an arithmetic progression. A port of
14492  // the native Python `range()` function. See
14493  // [the Python documentation](https://docs.python.org/library/functions.html#range).
14494  function range(start, stop, step) {
14495    if (stop == null) {
14496      stop = start || 0;
14497      start = 0;
14498    }
14499    if (!step) {
14500      step = stop < start ? -1 : 1;
14501    }
14502
14503    var length = Math.max(Math.ceil((stop - start) / step), 0);
14504    var range = Array(length);
14505
14506    for (var idx = 0; idx < length; idx++, start += step) {
14507      range[idx] = start;
14508    }
14509
14510    return range;
14511  }
14512
14513  // Chunk a single array into multiple arrays, each containing `count` or fewer
14514  // items.
14515  function chunk(array, count) {
14516    if (count == null || count < 1) return [];
14517    var result = [];
14518    var i = 0, length = array.length;
14519    while (i < length) {
14520      result.push(slice.call(array, i, i += count));
14521    }
14522    return result;
14523  }
14524
14525  // Helper function to continue chaining intermediate results.
14526  function chainResult(instance, obj) {
14527    return instance._chain ? _$1(obj).chain() : obj;
14528  }
14529
14530  // Add your own custom functions to the Underscore object.
14531  function mixin(obj) {
14532    each(functions(obj), function(name) {
14533      var func = _$1[name] = obj[name];
14534      _$1.prototype[name] = function() {
14535        var args = [this._wrapped];
14536        push.apply(args, arguments);
14537        return chainResult(this, func.apply(_$1, args));
14538      };
14539    });
14540    return _$1;
14541  }
14542
14543  // Add all mutator `Array` functions to the wrapper.
14544  each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
14545    var method = ArrayProto[name];
14546    _$1.prototype[name] = function() {
14547      var obj = this._wrapped;
14548      if (obj != null) {
14549        method.apply(obj, arguments);
14550        if ((name === 'shift' || name === 'splice') && obj.length === 0) {
14551          delete obj[0];
14552        }
14553      }
14554      return chainResult(this, obj);
14555    };
14556  });
14557
14558  // Add all accessor `Array` functions to the wrapper.
14559  each(['concat', 'join', 'slice'], function(name) {
14560    var method = ArrayProto[name];
14561    _$1.prototype[name] = function() {
14562      var obj = this._wrapped;
14563      if (obj != null) obj = method.apply(obj, arguments);
14564      return chainResult(this, obj);
14565    };
14566  });
14567
14568  // Named Exports
14569
14570  var allExports = {
14571    __proto__: null,
14572    VERSION: VERSION,
14573    restArguments: restArguments,
14574    isObject: isObject,
14575    isNull: isNull,
14576    isUndefined: isUndefined,
14577    isBoolean: isBoolean,
14578    isElement: isElement,
14579    isString: isString,
14580    isNumber: isNumber,
14581    isDate: isDate,
14582    isRegExp: isRegExp,
14583    isError: isError,
14584    isSymbol: isSymbol,
14585    isArrayBuffer: isArrayBuffer,
14586    isDataView: isDataView$1,
14587    isArray: isArray,
14588    isFunction: isFunction$1,
14589    isArguments: isArguments$1,
14590    isFinite: isFinite$1,
14591    isNaN: isNaN$1,
14592    isTypedArray: isTypedArray$1,
14593    isEmpty: isEmpty,
14594    isMatch: isMatch,
14595    isEqual: isEqual,
14596    isMap: isMap,
14597    isWeakMap: isWeakMap,
14598    isSet: isSet,
14599    isWeakSet: isWeakSet,
14600    keys: keys,
14601    allKeys: allKeys,
14602    values: values,
14603    pairs: pairs,
14604    invert: invert,
14605    functions: functions,
14606    methods: functions,
14607    extend: extend,
14608    extendOwn: extendOwn,
14609    assign: extendOwn,
14610    defaults: defaults,
14611    create: create,
14612    clone: clone,
14613    tap: tap,
14614    get: get,
14615    has: has,
14616    mapObject: mapObject,
14617    identity: identity,
14618    constant: constant,
14619    noop: noop,
14620    toPath: toPath$1,
14621    property: property,
14622    propertyOf: propertyOf,
14623    matcher: matcher,
14624    matches: matcher,
14625    times: times,
14626    random: random,
14627    now: now,
14628    escape: _escape,
14629    unescape: _unescape,
14630    templateSettings: templateSettings,
14631    template: template,
14632    result: result,
14633    uniqueId: uniqueId,
14634    chain: chain,
14635    iteratee: iteratee,
14636    partial: partial,
14637    bind: bind,
14638    bindAll: bindAll,
14639    memoize: memoize,
14640    delay: delay,
14641    defer: defer,
14642    throttle: throttle,
14643    debounce: debounce,
14644    wrap: wrap,
14645    negate: negate,
14646    compose: compose,
14647    after: after,
14648    before: before,
14649    once: once,
14650    findKey: findKey,
14651    findIndex: findIndex,
14652    findLastIndex: findLastIndex,
14653    sortedIndex: sortedIndex,
14654    indexOf: indexOf,
14655    lastIndexOf: lastIndexOf,
14656    find: find,
14657    detect: find,
14658    findWhere: findWhere,
14659    each: each,
14660    forEach: each,
14661    map: map,
14662    collect: map,
14663    reduce: reduce,
14664    foldl: reduce,
14665    inject: reduce,
14666    reduceRight: reduceRight,
14667    foldr: reduceRight,
14668    filter: filter,
14669    select: filter,
14670    reject: reject,
14671    every: every,
14672    all: every,
14673    some: some,
14674    any: some,
14675    contains: contains,
14676    includes: contains,
14677    include: contains,
14678    invoke: invoke,
14679    pluck: pluck,
14680    where: where,
14681    max: max,
14682    min: min,
14683    shuffle: shuffle,
14684    sample: sample,
14685    sortBy: sortBy,
14686    groupBy: groupBy,
14687    indexBy: indexBy,
14688    countBy: countBy,
14689    partition: partition,
14690    toArray: toArray,
14691    size: size,
14692    pick: pick,
14693    omit: omit,
14694    first: first,
14695    head: first,
14696    take: first,
14697    initial: initial,
14698    last: last,
14699    rest: rest,
14700    tail: rest,
14701    drop: rest,
14702    compact: compact,
14703    flatten: flatten,
14704    without: without,
14705    uniq: uniq,
14706    unique: uniq,
14707    union: union,
14708    intersection: intersection,
14709    difference: difference,
14710    unzip: unzip,
14711    transpose: unzip,
14712    zip: zip,
14713    object: object,
14714    range: range,
14715    chunk: chunk,
14716    mixin: mixin,
14717    'default': _$1
14718  };
14719
14720  // Default Export
14721
14722  // Add all of the Underscore functions to the wrapper object.
14723  var _ = mixin(allExports);
14724  // Legacy Node.js API.
14725  _._ = _;
14726
14727  return _;
14728
14729})));
14730
14731
14732}).call(this
14732,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
14733//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy91bmRlcnNjb3JlL3VuZGVyc2NvcmUtdW1kLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDpcbiAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKCd1bmRlcnNjb3JlJywgZmFjdG9yeSkgOlxuICAoZ2xvYmFsID0gdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsVGh
14733pcyA6IGdsb2JhbCB8fCBzZWxmLCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBjdXJyZW50ID0gZ2xvYmFsLl87XG4gICAgdmFyIGV4cG9ydHMgPSBnbG9iYWwuXyA9IGZhY3RvcnkoKTtcbiAgICBleHBvcnRzLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7IGdsb2JhbC5fID0gY3VycmVudDsgcmV0dXJuIGV4cG9ydHM7IH07XG4gIH0oKSkpO1xufSh0aGlzLCAoZnVuY3Rpb24gKCkge1xuICAvLyAgICAgVW5kZXJzY29yZS5qcyAxLjEzLjFcbiAgLy8gICAgIGh0dHBzOi8vdW5kZXJzY29yZWpzLm9yZ1xuICAvLyAgICAgKGMpIDIwMDktMjAyMSBKZXJlbXkgQXNoa2VuYXMsIEp1bGlhbiBHb25nZ3JpanAsIGFuZCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAgLy8gICAgIFVuZGVyc2NvcmUgbWF5IGJlIGZyZWVseSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG5cbiAgLy8gQ3VycmVudCB2ZXJzaW9uLlxuICB2YXIgVkVSU0lPTiA9ICcxLjEzLjEnO1xuXG4gIC8vIEVzdGFibGlzaCB0aGUgcm9vdCBvYmplY3QsIGB3aW5kb3dgIChgc2VsZmApIGluIHRoZSBicm93c2VyLCBgZ2xvYmFsYFxuICAvLyBvbiB0aGUgc2VydmVyLCBvciBgdGhpc2AgaW4gc29tZSB2aXJ0dWFsIG1hY2hpbmVzLiBXZSB1c2UgYHNlbGZgXG4gIC8vIGluc3RlYWQgb2YgYHdpbmRvd2AgZm9yIGBXZWJXb3JrZXJgIHN1cHBvcnQuXG4gIHZhciByb290ID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZi5zZWxmID09PSBzZWxmICYmIHNlbGYgfHxcbiAgICAgICAgICAgIHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsLmdsb2JhbCA9PT0gZ2xvYmFsICYmIGdsb2JhbCB8fFxuICAgICAgICAgICAgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKSB8fFxuICAgICAgICAgICAge307XG5cbiAgLy8gU2F2ZSBieXRlcyBpbiB0aGUgbWluaWZpZWQgKGJ1dCBub3QgZ3ppcHBlZCkgdmVyc2lvbjpcbiAgdmFyIEFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGUsIE9ialByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbiAgdmFyIFN5bWJvbFByb3RvID0gdHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgPyBTeW1ib2wucHJvdG90eXBlIDogbnVsbDtcblxuICAvLyBDcmVhdGUgcXVpY2sgcmVmZXJlbmNlIHZhcmlhYmxlcyBmb3Igc3BlZWQgYWNjZXNzIHRvIGNvcmUgcHJvdG90eXBlcy5cbiAgdmFyIHB1c2ggPSBBcnJheVByb3RvLnB1c2gsXG4gICAgICBzbGljZSA9IEFycmF5UHJvdG8uc2xpY2UsXG4gICAgICB0b1N0cmluZyA9IE9ialByb3RvLnRvU3RyaW5nLFxuICAgICAgaGFzT3duUHJvcGVydHkgPSBPYmpQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuICAvLyBNb2Rlcm4gZmVhdHVyZSBkZXRlY3Rpb24uXG4gIHZhciBzdXBwb3J0c0FycmF5QnVmZmVyID0gdHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyxcbiAgICAgIHN1cHBvcnRzRGF0YVZpZXcgPSB0eXBlb2YgRGF0YVZpZXcgIT09ICd1bmRlZmluZWQnO1xuXG4gIC8vIEFsbCAqKkVDTUFTY3JpcHQgNSsqKiBuYXRpdmUgZnVuY3Rpb24gaW1wbGVtZW50YXRpb25zIHRoYXQgd2UgaG9wZSB0byB1c2VcbiAgLy8gYXJlIGRlY2xhcmVkIGhlcmUuXG4gIHZhciBuYXRpdmVJc0FycmF5ID0gQXJyYXkuaXNBcnJheSxcbiAgICAgIG5hdGl2ZUtleXMgPSBPYmplY3Qua2V5cyxcbiAgICAgIG5hdGl2ZUNyZWF0ZSA9IE9iamVjdC5jcmVhdGUsXG4gICAgICBuYXRpdmVJc1ZpZXcgPSBzdXBwb3J0c0FycmF5QnVmZmVyICYmIEFycmF5QnVmZmVyLmlzVmlldztcblxuICAvLyBDcmVhdGUgcmVmZXJlbmNlcyB0byB0aGVzZSBidWlsdGluIGZ1bmN0aW9ucyBiZWNhdXNlIHdlIG92ZXJyaWRlIHRoZW0uXG4gIHZhciBfaXNOYU4gPSBpc05hTixcbiAgICAgIF9pc0Zpbml0ZSA9IGlzRmluaXRlO1xuXG4gIC8vIEtleXMgaW4gSUUgPCA5IHRoYXQgd29uJ3QgYmUgaXRlcmF0ZWQgYnkgYGZvciBrZXkgaW4gLi4uYCBhbmQgdGh1cyBtaXNzZWQuXG4gIHZhciBoYXNFbnVtQnVnID0gIXt0b1N0cmluZzogbnVsbH0ucHJvcGVydHlJc0VudW1lcmFibGUoJ3RvU3RyaW5nJyk7XG4gIHZhciBub25FbnVtZXJhYmxlUHJvcHMgPSBbJ3ZhbHVlT2YnLCAnaXNQcm90b3R5cGVPZicsICd0b1N0cmluZycsXG4gICAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJ2hhc093blByb3BlcnR5JywgJ3RvTG9jYWxlU3RyaW5nJ107XG5cbiAgLy8gVGhlIGxhcmdlc3QgaW50ZWdlciB0aGF0IGNhbiBiZSByZXByZXNlbnRlZCBleGFjdGx5LlxuICB2YXIgTUFYX0FSUkFZX0lOREVYID0gTWF0aC5wb3coMiwgNTMpIC0gMTtcblxuICAvLyBTb21lIGZ1bmN0aW9ucyB0YWtlIGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50cywgb3IgYSBmZXcgZXhwZWN0ZWRcbiAgLy8gYXJndW1lbnRzIGF0IHRoZSBiZWdpbm5pbmcgYW5kIHRoZW4gYSB2YXJpYWJsZSBudW1iZXIgb2YgdmFsdWVzIHRvIG9wZXJhdGVcbiAgLy8gb24uIFRoaXMgaGVscGVyIGFjY3VtdWxhdGVzIGFsbCByZW1haW5pbmcgYXJndW1lbnRzIHBhc3QgdGhlIGZ1bmN0aW9u4oCZc1xuICAvLyBhcmd1bWVudCBsZW5ndGggKG9yIGFuIGV4cGxpY2l0IGBzdGFydEluZGV4YCksIGludG8gYW4gYXJyYXkgdGhhdCBiZWNvbWVzXG4gIC8vIHRoZSBsYXN0IGFyZ3VtZW50LiBTaW1pbGFyIHRvIEVTNuKAmXMgXCJyZXN0IHBhcmFtZXRlclwiLlxuICBmdW5jdGlvbiByZXN0QXJndW1lbnRzKGZ1bmMsIHN0YXJ0SW5kZXgpIHtcbiAgICBzdGFydEluZGV4ID0gc3RhcnRJbmRleCA9PSBudWxsID8gZnVuYy5sZW5ndGggLSAxIDogK3N0YXJ0SW5kZXg7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGxlbmd0aCA9IE1hdGgubWF4KGFyZ3VtZW50cy5sZW5ndGggLSBzdGFydEluZGV4LCAwKSxcbiAgICAgICAgICByZXN0ID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgICAgICBpbmRleCA9IDA7XG4gICAgICBmb3IgKDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgcmVzdFtpbmRleF0gPSBhcmd1bWVudHNbaW5kZXggKyBzdGFydEluZGV4XTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAoc3RhcnRJbmRleCkge1xuICAgICAgICBjYXNlIDA6IHJldHVybi
14733BmdW5jLmNhbGwodGhpcywgcmVzdCk7XG4gICAgICAgIGNhc2UgMTogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzLCBhcmd1bWVudHNbMF0sIHJlc3QpO1xuICAgICAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpcywgYXJndW1lbnRzWzBdLCBhcmd1bWVudHNbMV0sIHJlc3QpO1xuICAgICAgfVxuICAgICAgdmFyIGFyZ3MgPSBBcnJheShzdGFydEluZGV4ICsgMSk7XG4gICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBzdGFydEluZGV4OyBpbmRleCsrKSB7XG4gICAgICAgIGFyZ3NbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4XTtcbiAgICAgIH1cbiAgICAgIGFyZ3Nbc3RhcnRJbmRleF0gPSByZXN0O1xuICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIElzIGEgZ2l2ZW4gdmFyaWFibGUgYW4gb2JqZWN0P1xuICBmdW5jdGlvbiBpc09iamVjdChvYmopIHtcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiBvYmo7XG4gICAgcmV0dXJuIHR5cGUgPT09ICdmdW5jdGlvbicgfHwgdHlwZSA9PT0gJ29iamVjdCcgJiYgISFvYmo7XG4gIH1cblxuICAvLyBJcyBhIGdpdmVuIHZhbHVlIGVxdWFsIHRvIG51bGw/XG4gIGZ1bmN0aW9uIGlzTnVsbChvYmopIHtcbiAgICByZXR1cm4gb2JqID09PSBudWxsO1xuICB9XG5cbiAgLy8gSXMgYSBnaXZlbiB2YXJpYWJsZSB1bmRlZmluZWQ/XG4gIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKG9iaikge1xuICAgIHJldHVybiBvYmogPT09IHZvaWQgMDtcbiAgfVxuXG4gIC8vIElzIGEgZ2l2ZW4gdmFsdWUgYSBib29sZWFuP1xuICBmdW5jdGlvbiBpc0Jvb2xlYW4ob2JqKSB7XG4gICAgcmV0dXJuIG9iaiA9PT0gdHJ1ZSB8fCBvYmogPT09IGZhbHNlIHx8IHRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgQm9vbGVhbl0nO1xuICB9XG5cbiAgLy8gSXMgYSBnaXZlbiB2YWx1ZSBhIERPTSBlbGVtZW50P1xuICBmdW5jdGlvbiBpc0VsZW1lbnQob2JqKSB7XG4gICAgcmV0dXJuICEhKG9iaiAmJiBvYmoubm9kZVR5cGUgPT09IDEpO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgYHRvU3RyaW5nYC1iYXNlZCB0eXBlIHRlc3Rlci5cbiAgZnVuY3Rpb24gdGFnVGVzdGVyKG5hbWUpIHtcbiAgICB2YXIgdGFnID0gJ1tvYmplY3QgJyArIG5hbWUgKyAnXSc7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwob2JqKSA9PT0gdGFnO1xuICAgIH07XG4gIH1cblxuICB2YXIgaXNTdHJpbmcgPSB0YWdUZXN0ZXIoJ1N0cmluZycpO1xuXG4gIHZhciBpc051bWJlciA9IHRhZ1Rlc3RlcignTnVtYmVyJyk7XG5cbiAgdmFyIGlzRGF0ZSA9IHRhZ1Rlc3RlcignRGF0ZScpO1xuXG4gIHZhciBpc1JlZ0V4cCA9IHRhZ1Rlc3RlcignUmVnRXhwJyk7XG5cbiAgdmFyIGlzRXJyb3IgPSB0YWdUZXN0ZXIoJ0Vycm9yJyk7XG5cbiAgdmFyIGlzU3ltYm9sID0gdGFnVGVzdGVyKCdTeW1ib2wnKTtcblxuICB2YXIgaXNBcnJheUJ1ZmZlciA9IHRhZ1Rlc3RlcignQXJyYXlCdWZmZXInKTtcblxuICB2YXIgaXNGdW5jdGlvbiA9IHRhZ1Rlc3RlcignRnVuY3Rpb24nKTtcblxuICAvLyBPcHRpbWl6ZSBgaXNGdW5jdGlvbmAgaWYgYXBwcm9wcmlhdGUuIFdvcmsgYXJvdW5kIHNvbWUgYHR5cGVvZmAgYnVncyBpbiBvbGRcbiAgLy8gdjgsIElFIDExICgjMTYyMSksIFNhZmFyaSA4ICgjMTkyOSksIGFuZCBQaGFudG9tSlMgKCMyMjM2KS5cbiAgdmFyIG5vZGVsaXN0ID0gcm9vdC5kb2N1bWVudCAmJiByb290LmRvY3VtZW50LmNoaWxkTm9kZXM7XG4gIGlmICh0eXBlb2YgLy4vICE9ICdmdW5jdGlvbicgJiYgdHlwZW9mIEludDhBcnJheSAhPSAnb2JqZWN0JyAmJiB0eXBlb2Ygbm9kZWxpc3QgIT0gJ2Z1bmN0aW9uJykge1xuICAgIGlzRnVuY3Rpb24gPSBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09ICdmdW5jdGlvbicgfHwgZmFsc2U7XG4gICAgfTtcbiAgfVxuXG4gIHZhciBpc0Z1bmN0aW9uJDEgPSBpc0Z1bmN0aW9uO1xuXG4gIHZhciBoYXNPYmplY3RUYWcgPSB0YWdUZXN0ZXIoJ09iamVjdCcpO1xuXG4gIC8vIEluIElFIDEwIC0gRWRnZSAxMywgYERhdGFWaWV3YCBoYXMgc3RyaW5nIHRhZyBgJ1tvYmplY3QgT2JqZWN0XSdgLlxuICAvLyBJbiBJRSAxMSwgdGhlIG1vc3QgY29tbW9uIGFtb25nIHRoZW0sIHRoaXMgcHJvYmxlbSBhbHNvIGFwcGxpZXMgdG9cbiAgLy8gYE1hcGAsIGBXZWFrTWFwYCBhbmQgYFNldGAuXG4gIHZhciBoYXNTdHJpbmdUYWdCdWcgPSAoXG4gICAgICAgIHN1cHBvcnRzRGF0YVZpZXcgJiYgaGFzT2JqZWN0VGFnKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoOCkpKVxuICAgICAgKSxcbiAgICAgIGlzSUUxMSA9ICh0eXBlb2YgTWFwICE9PSAndW5kZWZpbmVkJyAmJiBoYXNPYmplY3RUYWcobmV3IE1hcCkpO1xuXG4gIHZhciBpc0RhdGFWaWV3ID0gdGFnVGVzdGVyKCdEYXRhVmlldycpO1xuXG4gIC8vIEluIElFIDEwIC0gRWRnZSAxMywgd2UgbmVlZCBhIGRpZmZlcmVudCBoZXVyaXN0aWNcbiAgLy8gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW4gb2JqZWN0IGlzIGEgYERhdGFWaWV3YC5cbiAgZnVuY3Rpb24gaWUxMElzRGF0YVZpZXcob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAhPSBudWxsICYmIGlzRnVuY3Rpb24kMShvYmouZ2V0SW50OCkgJiYgaXNBcnJheUJ1ZmZlcihvYmouYnVmZmVyKTtcbiAgfVxuXG4gIHZhciBpc0RhdGFWaWV3JDEgPSAoaGFzU3RyaW5nVGFnQnVnID8gaWUxMElzRGF0YVZpZXcgOiBpc0RhdGFWaWV3KTtcblxuICAvLyBJcyBhIGdpdmVuIHZhbHVlIGFuIGFycmF5P1xuICAvLyBEZWxlZ2F0ZXMgdG8gRUNNQTUncyBuYXRpdmUgYEFycmF5LmlzQXJyYXlgLlxuICB2YXIgaXNBcnJheSA9IG5hdGl2ZUlzQXJyYXkgfHwgdGFnVGVzdGVyKCdBcnJheScpO1xuXG4gIC8vIEludGVybmFsIGZ1bmN0aW9uIHRvIGNoZWNrIHdoZXRoZXIgYGtleWAgaXMgYW4gb3duIHByb3BlcnR5IG5hbWUgb2YgYG9iamAuXG4gIGZ1bmN0aW9uIGhhcyQxKG9iaiwga2V5KSB7XG4gICAgcmV0dXJuIG9iaiAhPSBudWxsICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpO1xuICB9XG5cbiAgdmFyIGlzQXJndW1lbnRzID0gdGFnVGVzdGVyKCdBcmd1bWVudHMnKTtcblxuICAvLyBEZWZpbmUgYSBmYWxsYmFjayB2ZXJzaW9uIG9mIHRoZSBtZXRob2QgaW4gYnJvd3NlcnMgKGFoZW0sIElFIDwgOSksIHdoZXJlXG4gIC8vIHRoZXJlIGlzbid0IGFueSBpbnNwZWN0YWJsZSBcIkFyZ3VtZW50c1wiIHR5cGUuXG4gIChmdW5jdGlvbigpIHtcbiAgICBpZiAoIWlzQXJndW1lbnRzKGFyZ3VtZW50cykpIHtcbiAgICAgIGlzQXJndW1lbnRzID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgICAgI
14733HJldHVybiBoYXMkMShvYmosICdjYWxsZWUnKTtcbiAgICAgIH07XG4gICAgfVxuICB9KCkpO1xuXG4gIHZhciBpc0FyZ3VtZW50cyQxID0gaXNBcmd1bWVudHM7XG5cbiAgLy8gSXMgYSBnaXZlbiBvYmplY3QgYSBmaW5pdGUgbnVtYmVyP1xuICBmdW5jdGlvbiBpc0Zpbml0ZSQxKG9iaikge1xuICAgIHJldHVybiAhaXNTeW1ib2wob2JqKSAmJiBfaXNGaW5pdGUob2JqKSAmJiAhaXNOYU4ocGFyc2VGbG9hdChvYmopKTtcbiAgfVxuXG4gIC8vIElzIHRoZSBnaXZlbiB2YWx1ZSBgTmFOYD9cbiAgZnVuY3Rpb24gaXNOYU4kMShvYmopIHtcbiAgICByZXR1cm4gaXNOdW1iZXIob2JqKSAmJiBfaXNOYU4ob2JqKTtcbiAgfVxuXG4gIC8vIFByZWRpY2F0ZS1nZW5lcmF0aW5nIGZ1bmN0aW9uLiBPZnRlbiB1c2VmdWwgb3V0c2lkZSBvZiBVbmRlcnNjb3JlLlxuICBmdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICB9XG5cbiAgLy8gQ29tbW9uIGludGVybmFsIGxvZ2ljIGZvciBgaXNBcnJheUxpa2VgIGFuZCBgaXNCdWZmZXJMaWtlYC5cbiAgZnVuY3Rpb24gY3JlYXRlU2l6ZVByb3BlcnR5Q2hlY2soZ2V0U2l6ZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24pIHtcbiAgICAgIHZhciBzaXplUHJvcGVydHkgPSBnZXRTaXplUHJvcGVydHkoY29sbGVjdGlvbik7XG4gICAgICByZXR1cm4gdHlwZW9mIHNpemVQcm9wZXJ0eSA9PSAnbnVtYmVyJyAmJiBzaXplUHJvcGVydHkgPj0gMCAmJiBzaXplUHJvcGVydHkgPD0gTUFYX0FSUkFZX0lOREVYO1xuICAgIH1cbiAgfVxuXG4gIC8vIEludGVybmFsIGhlbHBlciB0byBnZW5lcmF0ZSBhIGZ1bmN0aW9uIHRvIG9idGFpbiBwcm9wZXJ0eSBga2V5YCBmcm9tIGBvYmpgLlxuICBmdW5jdGlvbiBzaGFsbG93UHJvcGVydHkoa2V5KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiA9PSBudWxsID8gdm9pZCAwIDogb2JqW2tleV07XG4gICAgfTtcbiAgfVxuXG4gIC8vIEludGVybmFsIGhlbHBlciB0byBvYnRhaW4gdGhlIGBieXRlTGVuZ3RoYCBwcm9wZXJ0eSBvZiBhbiBvYmplY3QuXG4gIHZhciBnZXRCeXRlTGVuZ3RoID0gc2hhbGxvd1Byb3BlcnR5KCdieXRlTGVuZ3RoJyk7XG5cbiAgLy8gSW50ZXJuYWwgaGVscGVyIHRvIGRldGVybWluZSB3aGV0aGVyIHdlIHNob3VsZCBzcGVuZCBleHRlbnNpdmUgY2hlY2tzIGFnYWluc3RcbiAgLy8gYEFycmF5QnVmZmVyYCBldCBhbC5cbiAgdmFyIGlzQnVmZmVyTGlrZSA9IGNyZWF0ZVNpemVQcm9wZXJ0eUNoZWNrKGdldEJ5dGVMZW5ndGgpO1xuXG4gIC8vIElzIGEgZ2l2ZW4gdmFsdWUgYSB0eXBlZCBhcnJheT9cbiAgdmFyIHR5cGVkQXJyYXlQYXR0ZXJuID0gL1xcW29iamVjdCAoKEl8VWkpbnQoOHwxNnwzMil8RmxvYXQoMzJ8NjQpfFVpbnQ4Q2xhbXBlZHxCaWcoSXxVaSludDY0KUFycmF5XFxdLztcbiAgZnVuY3Rpb24gaXNUeXBlZEFycmF5KG9iaikge1xuICAgIC8vIGBBcnJheUJ1ZmZlci5pc1ZpZXdgIGlzIHRoZSBtb3N0IGZ1dHVyZS1wcm9vZiwgc28gdXNlIGl0IHdoZW4gYXZhaWxhYmxlLlxuICAgIC8vIE90aGVyd2lzZSwgZmFsbCBiYWNrIG9uIHRoZSBhYm92ZSByZWd1bGFyIGV4cHJlc3Npb24uXG4gICAgcmV0dXJuIG5hdGl2ZUlzVmlldyA/IChuYXRpdmVJc1ZpZXcob2JqKSAmJiAhaXNEYXRhVmlldyQxKG9iaikpIDpcbiAgICAgICAgICAgICAgICAgIGlzQnVmZmVyTGlrZShvYmopICYmIHR5cGVkQXJyYXlQYXR0ZXJuLnRlc3QodG9TdHJpbmcuY2FsbChvYmopKTtcbiAgfVxuXG4gIHZhciBpc1R5cGVkQXJyYXkkMSA9IHN1cHBvcnRzQXJyYXlCdWZmZXIgPyBpc1R5cGVkQXJyYXkgOiBjb25zdGFudChmYWxzZSk7XG5cbiAgLy8gSW50ZXJuYWwgaGVscGVyIHRvIG9idGFpbiB0aGUgYGxlbmd0aGAgcHJvcGVydHkgb2YgYW4gb2JqZWN0LlxuICB2YXIgZ2V0TGVuZ3RoID0gc2hhbGxvd1Byb3BlcnR5KCdsZW5ndGgnKTtcblxuICAvLyBJbnRlcm5hbCBoZWxwZXIgdG8gY3JlYXRlIGEgc2ltcGxlIGxvb2t1cCBzdHJ1Y3R1cmUuXG4gIC8vIGBjb2xsZWN0Tm9uRW51bVByb3BzYCB1c2VkIHRvIGRlcGVuZCBvbiBgXy5jb250YWluc2AsIGJ1dCB0aGlzIGxlZCB0b1xuICAvLyBjaXJj
14733dWxhciBpbXBvcnRzLiBgZW11bGF0ZWRTZXRgIGlzIGEgb25lLW9mZiBzb2x1dGlvbiB0aGF0IG9ubHkgd29ya3MgZm9yXG4gIC8vIGFycmF5cyBvZiBzdHJpbmdzLlxuICBmdW5jdGlvbiBlbXVsYXRlZFNldChrZXlzKSB7XG4gICAgdmFyIGhhc2ggPSB7fTtcbiAgICBmb3IgKHZhciBsID0ga2V5cy5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgKytpKSBoYXNoW2tleXNbaV1dID0gdHJ1ZTtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGFpbnM6IGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gaGFzaFtrZXldOyB9LFxuICAgICAgcHVzaDogZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIGhhc2hba2V5XSA9IHRydWU7XG4gICAgICAgIHJldHVybiBrZXlzLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgaGVscGVyLiBDaGVja3MgYGtleXNgIGZvciB0aGUgcHJlc2VuY2Ugb2Yga2V5cyBpbiBJRSA8IDkgdGhhdCB3b24ndFxuICAvLyBiZSBpdGVyYXRlZCBieSBgZm9yIGtleSBpbiAuLi5gIGFuZCB0aHVzIG1pc3NlZC4gRXh0ZW5kcyBga2V5c2AgaW4gcGxhY2UgaWZcbiAgLy8gbmVlZGVkLlxuICBmdW5jdGlvbiBjb2xsZWN0Tm9uRW51bVByb3BzKG9iaiwga2V5cykge1xuICAgIGtleXMgPSBlbXVsYXRlZFNldChrZXlzKTtcbiAgICB2YXIgbm9uRW51bUlkeCA9IG5vbkVudW1lcmFibGVQcm9wcy5sZW5ndGg7XG4gICAgdmFyIGNvbnN0cnVjdG9yID0gb2JqLmNvbnN0cnVjdG9yO1xuICAgIHZhciBwcm90byA9IGlzRnVuY3Rpb24kMShjb25zdHJ1Y3RvcikgJiYgY29uc3RydWN0b3IucHJvdG90eXBlIHx8IE9ialByb3RvO1xuXG4gICAgLy8gQ29uc3RydWN0b3IgaXMgYSBzcGVjaWFsIGNhc2UuXG4gICAgdmFyIHByb3AgPSAnY29uc3RydWN0b3InO1xuICAgIGlmIChoYXMkMShvYmosIHByb3ApICYmICFrZXlzLmNvbnRhaW5zKHByb3ApKSBrZXlzLnB1c2gocHJvcCk7XG5cbiAgICB3aGlsZSAobm9uRW51bUlkeC0tKSB7XG4gICAgICBwcm9wID0gbm9uRW51bWVyYWJsZVByb3BzW25vbkVudW1JZHhdO1xuICAgICAgaWYgKHByb3AgaW4gb2JqICYmIG9ialtwcm9wXSAhPT0gcHJvdG9bcHJvcF0gJiYgIWtleXMuY29udGFpbnMocHJvcCkpIHtcbiAgICAgICAga2V5cy5wdXNoKHByb3ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJldHJpZXZlIHRoZSBuYW1lcyBvZiBhbiBvYmplY3QncyBvd24gcHJvcGVydGllcy5cbiAgLy8gRGVsZWdhdGVzIHRvICoqRUNNQVNjcmlwdCA1KioncyBuYXRpdmUgYE9iamVjdC5rZXlzYC5cbiAgZnVuY3Rpb24ga2V5cyhvYmopIHtcbiAgICBpZiAoIWlzT2JqZWN0KG9iaikpIHJldHVybiBbXTtcbiAgICBpZiAobmF0aXZlS2V5cykgcmV0dXJuIG5hdGl2ZUtleXMob2JqKTtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmopIGlmIChoYXMkMShvYmosIGtleSkpIGtleXMucHVzaChrZXkpO1xuICAgIC8vIEFoZW0sIElFIDwgOS5cbiAgICBpZiAoaGFzRW51bUJ1ZykgY29sbGVjdE5vbkVudW1Qcm9wcyhvYmosIGtleXMpO1xuICAgIHJldHVybiBrZXlzO1xuICB9XG5cbiAgLy8gSXMgYSBnaXZlbiBhcnJheSwgc3RyaW5nLCBvciBvYmplY3QgZW1wdHk/XG4gIC8vIEFuIFwiZW1wdHlcIiBvYmplY3QgaGFzIG5vIGVudW1lcmFibGUgb3duLXByb3BlcnRpZXMuXG4gIGZ1bmN0aW9uIGlzRW1wdHkob2JqKSB7XG4gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBTa2lwIHRoZSBtb3JlIGV4cGVuc2l2ZSBgdG9TdHJpbmdgLWJhc2VkIHR5cGUgY2hlY2tzIGlmIGBvYmpgIGhhcyBub1xuICAgIC8vIGAubGVuZ3RoYC5cbiAgICB2YXIgbGVuZ3RoID0gZ2V0TGVuZ3RoKG9iaik7XG4gICAgaWYgKHR5cGVvZiBsZW5ndGggPT0gJ251bWJlcicgJiYgKFxuICAgICAgaXNBcnJheShvYmopIHx8IGlzU3RyaW5nKG9iaikgfHwgaXNBcmd1bWVudHMkMShvYmopXG4gICAgKSkgcmV0dXJuIGxlbmd0aCA9PT0gMDtcbiAgICByZXR1cm4gZ2V0TGVuZ3RoKGtleXMob2JqKSkgPT09IDA7XG4gIH1cblxuICAvLyBSZXR1cm5zIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHNldCBvZiBga2V5OnZhbHVlYCBwYWlycy5cbiAgZnVuY3Rpb24gaXNNYXRjaChvYmplY3QsIGF0dHJzKSB7XG4gICAgdmFyIF9rZXlzID0ga2V5cyhhdHRycyksIGxlbmd0aCA9IF9rZXlzLmxlbmd0aDtcbiAgICBpZiAob2JqZWN0ID09IG51bGwpIHJldHVybiAhbGVuZ3RoO1xuICAgIHZhciBvYmogPSBPYmplY3Qob2JqZWN0KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2Y
14733XIga2V5ID0gX2tleXNbaV07XG4gICAgICBpZiAoYXR0cnNba2V5XSAhPT0gb2JqW2tleV0gfHwgIShrZXkgaW4gb2JqKSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIElmIFVuZGVyc2NvcmUgaXMgY2FsbGVkIGFzIGEgZnVuY3Rpb24sIGl0IHJldHVybnMgYSB3cmFwcGVkIG9iamVjdCB0aGF0IGNhblxuICAvLyBiZSB1c2VkIE9PLXN0eWxlLiBUaGlzIHdyYXBwZXIgaG9sZHMgYWx0ZXJlZCB2ZXJzaW9ucyBvZiBhbGwgZnVuY3Rpb25zIGFkZGVkXG4gIC8vIHRocm91Z2ggYF8ubWl4aW5gLiBXcmFwcGVkIG9iamVjdHMgbWF5IGJlIGNoYWluZWQuXG4gIGZ1bmN0aW9uIF8kMShvYmopIHtcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgXyQxKSByZXR1cm4gb2JqO1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBfJDEpKSByZXR1cm4gbmV3IF8kMShvYmopO1xuICAgIHRoaXMuX3dyYXBwZWQgPSBvYmo7XG4gIH1cblxuICBfJDEuVkVSU0lPTiA9IFZFUlNJT047XG5cbiAgLy8gRXh0cmFjdHMgdGhlIHJlc3VsdCBmcm9tIGEgd3JhcHBlZCBhbmQgY2hhaW5lZCBvYmplY3QuXG4gIF8kMS5wcm90b3R5cGUudmFsdWUgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JhcHBlZDtcbiAgfTtcblxuICAvLyBQcm92aWRlIHVud3JhcHBpbmcgcHJveGllcyBmb3Igc29tZSBtZXRob2RzIHVzZWQgaW4gZW5naW5lIG9wZXJhdGlvbnNcbiAgLy8gc3VjaCBhcyBhcml0aG1ldGljIGFuZCBKU09OIHN0cmluZ2lmaWNhdGlvbi5cbiAgXyQxLnByb3RvdHlwZS52YWx1ZU9mID0gXyQxLnByb3RvdHlwZS50b0pTT04gPSBfJDEucHJvdG90eXBlLnZhbHVlO1xuXG4gIF8kMS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gU3RyaW5nKHRoaXMuX3dyYXBwZWQpO1xuICB9O1xuXG4gIC8vIEludGVybmFsIGZ1bmN0aW9uIHRvIHdyYXAgb3Igc2hhbGxvdy1jb3B5IGFuIEFycmF5QnVmZmVyLFxuICAvLyB0eXBlZCBhcnJheSBvciBEYXRhVmlldyB0byBhIG5ldyB2aWV3LCByZXVzaW5nIHRoZSBidWZmZXIuXG4gIGZ1bmN0aW9uIHRvQnVmZmVyVmlldy
14733hidWZmZXJTb3VyY2UpIHtcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoXG4gICAgICBidWZmZXJTb3VyY2UuYnVmZmVyIHx8IGJ1ZmZlclNvdXJjZSxcbiAgICAgIGJ1ZmZlclNvdXJjZS5ieXRlT2Zmc2V0IHx8IDAsXG4gICAgICBnZXRCeXRlTGVuZ3RoKGJ1ZmZlclNvdXJjZSlcbiAgICApO1xuICB9XG5cbiAgLy8gV2UgdXNlIHRoaXMgc3RyaW5nIHR3aWNlLCBzbyBnaXZlIGl0IGEgbmFtZSBmb3IgbWluaWZpY2F0aW9uLlxuICB2YXIgdGFnRGF0YVZpZXcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuXG4gIC8vIEludGVybmFsIHJlY3Vyc2l2ZSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBgXy5pc0VxdWFsYC5cbiAgZnVuY3Rpb24gZXEoYSwgYiwgYVN0YWNrLCBiU3RhY2spIHtcbiAgICAvLyBJZGVudGljYWwgb2JqZWN0cyBhcmUgZXF1YWwuIGAwID09PSAtMGAsIGJ1dCB0aGV5IGFyZW4ndCBpZGVudGljYWwuXG4gICAgLy8gU2VlIHRoZSBbSGFybW9ueSBgZWdhbGAgcHJvcG9zYWxdKGh0dHBzOi8vd2lraS5lY21hc2NyaXB0Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmVnYWwpLlxuICAgIGlmIChhID09PSBiKSByZXR1cm4gYSAhPT0gMCB8fCAxIC8gYSA9PT0gMSAvIGI7XG4gICAgLy8gYG51bGxgIG9yIGB1bmRlZmluZWRgIG9ubHkgZXF1YWwgdG8gaXRzZWxmIChzdHJpY3QgY29tcGFyaXNvbikuXG4gICAgaWYgKGEgPT0gbnVsbCB8fCBiID09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICAvLyBgTmFOYHMgYXJlIGVxdWl2YWxlbnQsIGJ1dCBub24tcmVmbGV4aXZlLlxuICAgIGlmIChhICE9PSBhKSByZXR1cm4gYiAhPT0gYjtcbiAgICAvLyBFeGhhdXN0IHByaW1pdGl2ZSBjaGVja3NcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiBhO1xuICAgIGlmICh0eXBlICE9PSAnZnVuY3Rpb24nICYmIHR5cGUgIT09ICdvYmplY3QnICYmIHR5cGVvZiBiICE9ICdvYmplY3QnKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGRlZXBFcShhLCBiLCBhU3RhY2ssIGJTdGFjayk7XG4gIH1cblxuICAvLyBJbnRlcm5hbCByZWN1cnNpdmUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgYF8uaXNFcXVhbGAuXG4gIGZ1bmN0aW9uIGRlZXBFcShhLCBiLCBhU3RhY2ssIGJTdGFjaykge1xuICAgIC8vIFVud3JhcCBhbnkgd3JhcHBlZCBvYmplY3RzLlxuICAgIGlmIChhIGluc3RhbmNlb2YgXyQxKSBhID0gYS5fd3JhcHBlZDtcbiAgICBpZiAoYiBpbnN0YW5jZW9mIF8kMSkgYiA9IGIuX3dyYXBwZWQ7XG4gICAgLy8gQ29tcGFyZSBgW1tDbGFzc11dYCBuYW1lcy5cbiAgICB2YXIgY2xhc3NOYW1lID0gdG9TdHJpbmcuY2FsbChhKTtcbiAgICBpZiAoY2xhc3NOYW1lICE9PSB0b1N0cmluZy5jYWxsKGIpKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gV29yayBhcm91bmQgYSBidWcgaW4gSUUgMTAgLSBFZGdlIDEzLlxuICAgIGlmIChoYXNTdHJpbmdUYWdCdWcgJiYgY2xhc3NOYW1lID09ICdbb2JqZWN0IE9iamVjdF0nICYmIGlzRGF0YVZpZXckMShhKSkge1xuICAgICAgaWYgKCFpc0RhdGFWaWV3JDEoYikpIHJldHVybiBmYWxzZTtcbiAgICAgIGNsYXNzTmFtZSA9IHRhZ0RhdGFWaWV3O1xuICAgIH1cbiAgICBzd2l0Y2ggKGNsYXNzTmFtZSkge1xuICAgICAgLy8gVGhlc2UgdHlwZXMgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlLlxuICAgICAgY2FzZSAnW29iamVjdCBSZWdFeHBdJzpcbiAgICAgICAgLy8gUmVnRXhwcyBhcmUgY29lcmNlZCB0byBzdHJpbmdzIGZvciBjb21wYXJpc29uIChOb3RlOiAnJyArIC9hL2kgPT09ICcvYS9pJylcbiAgICAgIGNhc2UgJ1tvYmplY3QgU3RyaW5nXSc6XG4gICAgICAgIC8vIFByaW1pdGl2ZXMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgb2JqZWN0IHdyYXBwZXJzIGFyZSBlcXVpdmFsZW50OyB0aHVzLCBgXCI1XCJgIGlzXG4gICAgICAgIC8vIGVxdWl2YWxlbnQgdG8gYG5ldyBTdHJpbmcoXCI1XCIpYC5cbiAgICAgICAgcmV0dXJuICcnICsgYSA9PT0gJycgKyBiO1xuICAgICAgY2FzZSAnW29iamVjdCBOdW1iZXJdJzpcbiAgICAgICAgLy8gYE5hTmBzIGFyZSBlcXVpdmFsZW50LCBidXQgbm9uLXJlZmxleGl2ZS5cbiAgICAgICAgLy8gT2JqZWN0KE5hTikgaXMgZXF1aXZhbGVudCB0byBOYU4uXG4gICAgICAgIGlmICgrYSAhPT0gK2EpIHJldHVybiArYiAhPT0gK2I7XG4gICAgICAgIC8vIEFuIGBlZ2FsYCBjb21wYXJpc29uIGlzIHBlcmZvcm1lZCBmb3Igb3RoZXIgbnVtZXJpYyB2YWx1ZXMuXG4gICAgICAgIHJldHVybiArYSA9PT0gMCA/IDEgLyArYSA9PT0gMSAvIGIgOiArYSA9PT0gK2I7XG4gICAgICBjYXNlICdbb2JqZWN0IERhdGVdJzpcbiAgICAgIGNhc2UgJ1tvYmplY3QgQm9vbGVhbl0nOlxuICAgICAgICAvLyBDb2VyY2UgZGF0ZXMgYW5kIGJvb2xlYW5zIHRvIG51bWVyaWMgcHJpbWl0aXZlIHZhbHVlcy4gRGF0ZXMgYXJlIGNvbXBhcmVkIGJ5IHRoZWlyXG4gICAgICAgIC8vIG1pbGxpc2Vjb25kIHJlcHJlc2VudGF0aW9ucy4gTm90ZSB0aGF0IGludmFsaWQgZGF0ZXMgd2l0aCBtaWxsaXNlY29uZCByZXByZXNlbnRhdGlvbnNcbiAgICAgICAgLy8gb2YgYE5hTmAgYXJlIG5vdCBlcXVpdmFsZW50LlxuICAgICAgICByZXR1cm4gK2EgPT09ICtiO1xuICAgICAgY2FzZSAnW29iamVjdCBTeW1ib2xdJzpcbiAgICAgICAgcmV0dXJuIFN5bWJvbFByb3RvLnZhbHVlT2YuY2FsbChhKSA9PT0gU3ltYm9sUHJvdG8udmFsdWVPZi5jYWxsKGIpO1xuICAgICAgY2FzZSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nOlxuICAgICAgY2FzZSB0YWdEYXRhVmlldzpcbiAgICAgICAgLy8gQ29lcmNlIHRvIHR5cGVkIGFycmF5IHNvIHdlIGNhbiBmYWxsIHRocm91Z2guXG4gICAgICAgIHJldHVybiBkZWVwRXEodG9CdWZmZXJWaWV3KGEpLCB0b0J1ZmZlclZpZXcoYiksIGFTdGFjaywgYlN0YWNrKTtcbiAgICB9XG5cbiAgICB2YXIgYXJlQXJyYXlzID0gY2xhc3NOYW1lID09PSAnW29iamVjdCBBcnJheV0nO1xuICAgIGlmICghYXJlQXJyYXlzICYmIGlzVHlwZWRBcnJheSQxKGEpKSB7XG4gICAgICAgIHZhciBieXRlTGVuZ3RoID0gZ2V0Qnl0ZUxlbmd0aChhKTtcbiAgICAgICAgaWYgKGJ5dGVMZW5ndGggIT09IGdldEJ5dGVMZW5ndGgoYikpIHJldHVybi
14733BmYWxzZTtcbiAgICAgICAgaWYgKGEuYnVmZmVyID09PSBiLmJ1ZmZlciAmJiBhLmJ5dGVPZmZzZXQgPT09IGIuYnl0ZU9mZnNldCkgcmV0dXJuIHRydWU7XG4gICAgICAgIGFyZUFycmF5cyA9IHRydWU7XG4gICAgfVxuICAgIGlmICghYXJlQXJyYXlzKSB7XG4gICAgICBpZiAodHlwZW9mIGEgIT0gJ29iamVjdCcgfHwgdHlwZW9mIGIgIT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcblxuICAgICAgLy8gT2JqZWN0cyB3aXRoIGRpZmZlcmVudCBjb25zdHJ1Y3RvcnMgYXJlIG5vdCBlcXVpdmFsZW50LCBidXQgYE9iamVjdGBzIG9yIGBBcnJheWBzXG4gICAgICAvLyBmcm9tIGRpZmZlcmVudCBmcmFtZXMgYXJlLlxuICAgICAgdmFyIGFDdG9yID0gYS5jb25zdHJ1Y3RvciwgYkN0b3IgPSBiLmNvbnN0cnVjdG9yO1xuICAgICAgaWYgKGFDdG9yICE9PSBiQ3RvciAmJiAhKGlzRnVuY3Rpb24kMShhQ3RvcikgJiYgYUN0b3IgaW5zdGFuY2VvZiBhQ3RvciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRnVuY3Rpb24kMShiQ3RvcikgJiYgYkN0b3IgaW5zdGFuY2VvZiBiQ3RvcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCdjb25zdHJ1Y3RvcicgaW4gYSAmJiAnY29uc3RydWN0b3InIGluIGIpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gQXNzdW1lIGVxdWFsaXR5IGZvciBjeWNsaWMgc3RydWN0dXJlcy4gVGhlIGFsZ29yaXRobSBmb3IgZGV0ZWN0aW5nIGN5Y2xpY1xuICAgIC8vIHN0cnVjdHVyZXMgaXMgYWRhcHRlZCBmcm9tIEVTIDUuMSBzZWN0aW9uIDE1LjEyLjMsIGFic3RyYWN0IG9wZXJhdGlvbiBgSk9gLlxuXG4gICAgLy8gSW5pdGlhbGl6aW5nIHN0YWNrIG9mIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgIC8vIEl0J3MgZG9uZSBoZXJlIHNpbmNlIHdlIG9ubHkgbmVlZCB0aGVtIGZvciBvYmplY3RzIGFuZCBhcnJheXMgY29tcGFyaXNvbi5cbiAgICBhU3RhY2sgPSBhU3RhY2sgfHwgW107XG4gICAgYlN0YWNrID0gYlN0YWNrIHx8IFtdO1xuICAgIHZhciBsZW5ndGggPSBhU3RhY2subGVuZ3RoO1xuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgLy8gTGluZWFyIHNlYXJjaC4gUGVyZm9ybWFuY2UgaXMgaW52ZXJzZWx5IHByb3BvcnRpb25hbCB0byB0aGUgbnVtYmVyIG9mXG4gICAgICAvLyB1bmlxdWUgbmVzdGVkIHN0cnVjdHVyZXMuXG4gICAgICBpZiAoYVN0YWNrW2xlbmd0aF0gPT09IGEpIHJldHVybiBiU3RhY2tbbGVuZ3RoXSA9PT0gYjtcbiAgICB9XG5cbiAgICAvLyBBZGQgdGhlIGZpcnN0IG9iamVjdCB0byB0aGUgc3RhY2sgb2YgdHJhdmVyc2VkIG9iamVjdHMuXG4gICAgYVN0YWNrLnB1c2goYSk7XG4gICAgYlN0YWNrLnB1c2goYik7XG5cbiAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgYW5kIGFycmF5cy5cbiAgICBpZiAoYXJlQXJyYXlzKSB7XG4gICAgICAvLyBDb21wYXJlIGFycmF5IGxlbmd0aHMgdG8gZGV0ZXJtaW5lIGlmIGEgZGVlcCBjb21wYXJpc29uIGlzIG5lY2Vzc2FyeS5cbiAgICAgIGxlbmd0aCA9IGEubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgIC8vIERlZXAgY29tcGFyZSB0aGUgY29udGVudHMsIGlnbm9yaW5nIG5vbi1udW1lcmljIHByb3BlcnRpZXMuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgaWYgKCFlcShhW2xlbmd0aF0sIGJbbGVuZ3RoXSwgYVN0YWNrLCBiU3RhY2spKSByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERlZXAgY29tcGFyZSBvYmplY3RzLlxuICAgICAgdmFyIF9rZXlzID0ga2V5cyhhKSwga2V5O1xuICAgICAgbGVuZ3RoID0gX2tleXMubGVuZ3RoO1xuICAgICAgLy8gRW5zdXJlIHRoYXQgYm90aCBvYmplY3RzIGNvbnRhaW4gdGhlIHNhbWUgbnVtYmVyIG9mIHByb3BlcnRpZXMgYmVmb3JlIGNvbXBhcmluZyBkZWVwIGVxdWFsaXR5LlxuICAgICAgaWYgKGtleXMoYikubGVuZ3RoICE9PSBsZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICAvLyBEZWVwIGNvbXBhcmUgZWFjaCBtZW1iZXJcbiAgICAgICAga2V5ID0gX2tleXNbbGVuZ3RoXTtcbiAgICAgICAgaWYgKCEoaGFzJDEoYiwga2V5KSAmJiBlcShhW2tleV0sIGJba2V5XSwgYVN0YWNrLCBiU3RhY2spKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBSZW1vdmUgdGhlIGZpcnN0IG9iamVjdCBmcm9tIHRoZSBzdGFjayBvZiB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAgICBhU3RhY2sucG9wKCk7XG4gICAgYlN0YWNrLnBvcCgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gUGVyZm9ybSBhIGRlZXAgY29tcGFyaXNvbiB0byBjaGVjayBpZiB0d28gb2JqZWN0cyBhcmUgZXF1YWwuXG4gIGZ1bmN0aW9uIGlzRXF1YWwoYSwgYikge1xuICAgIHJldHVybiBlcShhLCBiKTtcbiAgfVxuXG4gIC8vIFJldHJpZXZlIGFsbCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBhbiBvYmplY3QuXG4gIGZ1bmN0aW9uIGFsbEtleXMob2JqKSB7XG4gICAgaWYgKCFpc09iamVjdChvYmopKSByZXR1cm4gW107XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSBrZXlzLnB1c2goa2V5KTtcbiAgICAvLyBBaGVtLCBJRSA8IDkuXG4gICAgaWYgKGhhc0VudW1CdWcpIGNvbGxlY3ROb25FbnVtUHJvcHMob2JqLCBrZXlzKTtcbiAgICByZXR1cm4ga2V5cztcbiAgfVxuXG4gIC8vIFNpbmNlIHRoZSByZWd1bGFyIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYCB0eXBlIHRlc3RzIGRvbid0IHdvcmsgZm9yXG4gIC8vIHNvbWUgdHlwZXMgaW4gSUUgMTEsIHdlIHVzZSBhIGZpbmdlcnByaW50aW5nIGhldXJpc3RpYyBpbnN0ZWFkLCBiYXNlZFxuICAvLyBvbiB0aGUgbWV0aG9kcy4gSXQncyBub3QgZ3JlYXQsIGJ1dCBpdCdzIHRoZSBiZXN0IHdlIGdvdC5cbiAgLy8gVGhlIGZpbmdlcnByaW50IG1ldGhvZCBsaXN0cyBhcmUgZGVmaW5lZCBiZWxvdy5cbiAgZnVuY3Rpb24gaWUxMWZpbmdlcnByaW50KG1ldGhvZHMpIHtcbiAgICB2YXIgbGVuZ3RoID0gZ2V0TGVuZ3RoKG1ldGhvZHMpO1xuICAgIHJldHVybi
14733BmdW5jdGlvbihvYmopIHtcbiAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICAgICAgLy8gYE1hcGAsIGBXZWFrTWFwYCBhbmQgYFNldGAgaGF2ZSBubyBlbnVtZXJhYmxlIGtleXMuXG4gICAgICB2YXIga2V5cyA9IGFsbEtleXMob2JqKTtcbiAgICAgIGlmIChnZXRMZW5ndGgoa2V5cykpIHJldHVybiBmYWxzZTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCFpc0Z1bmN0aW9uJDEob2JqW21ldGhvZHNbaV1dKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gSWYgd2UgYXJlIHRlc3RpbmcgYWdhaW5zdCBgV2Vha01hcGAsIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXRcbiAgICAgIC8vIGBvYmpgIGRvZXNuJ3QgaGF2ZSBhIGBmb3JFYWNoYCBtZXRob2QgaW4gb3JkZXIgdG8gZGlzdGluZ3Vpc2hcbiAgICAgIC8vIGl0IGZyb20gYSByZWd1bGFyIGBNYXBgLlxuICAgICAgcmV0dXJuIG1ldGhvZHMgIT09IHdlYWtNYXBNZXRob2RzIHx8ICFpc0Z1bmN0aW9uJDEob2JqW2ZvckVhY2hOYW1lXSk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIEluIHRoZSBpbnRlcmVzdCBvZiBjb21wYWN0IG1pbmlmaWNhdGlvbiwgd2Ugd3JpdGVcbiAgLy8gZWFjaCBzdHJpbmcgaW4gdGhlIGZpbmdlcnByaW50cyBvbmx5IG9uY2UuXG4gIHZhciBmb3JFYWNoTmFtZSA9ICdmb3JFYWNoJyxcbiAgICAgIGhhc05hbWUgPSAnaGFzJyxcbiAgICAgIGNvbW1vbkluaXQgPSBbJ2NsZWFyJywgJ2RlbGV0ZSddLFxuICAgICAgbWFwVGFpbCA9IFsnZ2V0JywgaGFzTmFtZSwgJ3NldCddO1xuXG4gIC8vIGBNYXBgLCBgV2Vha01hcGAgYW5kIGBTZXRgIGVhY2ggaGF2ZSBzbGlnaHRseSBkaWZmZXJlbnRcbiAgLy8gY29tYmluYXRpb25zIG9mIHRoZSBhYm92ZSBzdWJsaXN0cy5cbiAgdmFyIG1hcE1ldGhvZHMgPSBjb21tb25Jbml0LmNvbmNhdChmb3JFYWNoTmFtZSwgbWFwVGFpbCksXG4gICAgICB3ZWFrTWFwTWV0aG9kcyA9IGNvbW1vbkluaXQuY29uY2F0KG1hcFRhaWwpLFxuICAgICAgc2V0TWV0aG9kcyA9IFsnYWRkJ10uY29uY2F0KGNvbW1vbkluaXQsIGZvckVhY2hOYW1lLCBoYXNOYW1lKTtcblxuICB2YXIgaXNNYXAgPSBpc0lFMTEgPyBpZTExZmluZ2VycHJpbnQobWFwTWV0aG9kcykgOiB0YWdUZXN0ZXIoJ01hcCcpO1xuXG4gIHZhciBpc1dlYWtNYXAgPSBpc0lFMTEgPyBpZTExZmluZ2VycHJpbnQod2Vha01hcE1ldGhvZHMpIDogdGFnVGVzdGVyKCdXZWFrTWFwJyk7XG5cbiAgdmFyIGlzU2V0ID0gaXNJRTExID8gaWUxMWZpbmdlcnByaW50KHNldE1ldGhvZHMpIDogdGFnVGVzdGVyKCdTZXQnKTtcblxuICB2YXIgaXNXZWFrU2V0ID0gdGFnVGVzdGVyKCdXZWFrU2V0Jyk7XG5cbiAgLy8gUmV0cmlldmUgdGhlIHZhbHVlcyBvZiBhbiBvYmplY3QncyBwcm9wZXJ0aWVzLlxuICBmdW5jdGlvbiB2YWx1ZXMob2JqKSB7XG4gICAgdmFyIF9rZXlzID0ga2V5cyhvYmopO1xuICAgIHZhciBsZW5ndGggPSBfa2V5cy5sZW5ndGg7XG4gICAgdmFyIHZhbHVlcyA9IEFycmF5KGxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFsdWVzW2ldID0gb2JqW19rZXlzW2ldXTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfVxuXG4gIC8vIENvbnZlcnQgYW4gb2JqZWN0IGludG8gYSBsaXN0IG9mIGBba2V5LCB2YWx1ZV1gIHBhaXJzLlxuICAvLyBUaGUgb3Bwb3NpdGUgb2YgYF8ub2JqZWN0YCB3aXRoIG9uZSBhcmd1bWVudC5cbiAgZnVuY3Rpb24gcGFpcnMob2JqKSB7XG4gICAgdmFyIF9rZXlzID0ga2V5cyhvYmopO1xuICAgIHZhciBsZW5ndGggPSBfa2V5cy5sZW5ndGg7XG4gICAgdmFyIHBhaXJzID0gQXJyYXkobGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBwYWlyc1tpXSA9IFtfa2V5c1tpXSwgb2JqW19rZXlzW2ldXV07XG4gICAgfVxuICAgIHJldHVybiBwYWlycztcbiAgfVxuXG4gIC8vIEludmVydCB0aGUga2V5cyBhbmQgdmFsdWVzIG9mIGFuIG9iamVjdC4gVGhlIHZhbHVlcyBtdXN0IGJlIHNlcmlhbGl6YWJsZS5cbiAgZnVuY3Rpb24gaW52ZXJ0KG9iaikge1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICB2YXIgX2tleXMgPSBrZXlzKG9iaik7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IF9rZXlzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICByZXN1bHRbb2JqW19rZXlzW2ldXV0gPSBfa2V5c1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIFJldHVybiBhIHNvcnRlZCBsaXN0IG9mIHRoZSBmdW5jdGlvbiBuYW1lcyBhdmFpbGFibGUgb24gdGhlIG9iamVjdC5cbiAgZnVuY3Rpb24gZnVuY3Rpb25zKG9iaikge1xuICAgIHZhciBuYW1lcyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChpc0Z1bmN0aW9uJDEob2JqW2tleV0pKSBuYW1lcy5wdXNoKGtleSk7XG4gICAgfVxuICAgIHJldHVybiBuYW1lcy5zb3J0KCk7XG4gIH1cblxuICAvLyBBbiBpbnRlcm5hbCBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgYXNzaWduZXIgZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBjcmVhdGVBc3NpZ25lcihrZXlzRnVuYywgZGVmYXVsdHMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqKSB7XG4gICAgICB2Y
14733XIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIGlmIChkZWZhdWx0cykgb2JqID0gT2JqZWN0KG9iaik7XG4gICAgICBpZiAobGVuZ3RoIDwgMiB8fCBvYmogPT0gbnVsbCkgcmV0dXJuIG9iajtcbiAgICAgIGZvciAodmFyIGluZGV4ID0gMTsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpbmRleF0sXG4gICAgICAgICAgICBrZXlzID0ga2V5c0Z1bmMoc291cmNlKSxcbiAgICAgICAgICAgIGwgPSBrZXlzLmxlbmd0aDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICBpZiAoIWRlZmF1bHRzIHx8IG9ialtrZXldID09PSB2b2lkIDApIG9ialtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfTtcbiAgfVxuXG4gIC8vIEV4dGVuZCBhIGdpdmVuIG9iamVjdCB3aXRoIGFsbCB0aGUgcHJvcGVydGllcyBpbiBwYXNzZWQtaW4gb2JqZWN0KHMpLlxuICB2YXIgZXh0ZW5kID0gY3JlYXRlQXNzaWduZXIoYWxsS2V5cyk7XG5cbiAgLy8gQXNzaWducyBhIGdpdmVuIG9iamVjdCB3aXRoIGFsbCB0aGUgb3duIHByb3BlcnRpZXMgaW4gdGhlIHBhc3NlZC1pblxuICAvLyBvYmplY3QocykuXG4gIC8vIChodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvYXNzaWduKVxuICB2YXIgZXh0ZW5kT3duID0gY3JlYXRlQXNzaWduZXIoa2V5cyk7XG5cbiAgLy8gRmlsbCBpbiBhIGdpdmVuIG9iamVjdCB3aXRoIGRlZmF1bHQgcHJvcGVydGllcy5cbiAgdmFyIGRlZmF1bHRzID0gY3JlYXRlQXNzaWduZXIoYWxsS2V5cywgdHJ1ZSk7XG5cbiAgLy8gQ3JlYXRlIGEgbmFrZWQgZnVuY3Rpb24gcmVmZXJlbmNlIGZvciBzdXJyb2dhdGUtcHJvdG90eXBlLXN3YXBwaW5nLlxuICBmdW5jdGlvbiBjdG9yKCkge1xuICAgIHJldHVybiBmdW5jdGlvbigpe307XG4gIH1cblxuICAvLyBBbiBpbnRlcm5hbCBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgYSBuZXcgb2JqZWN0IHRoYXQgaW5oZXJpdHMgZnJvbSBhbm90aGVyLlxuICBmdW5jdGlvbiBiYXNlQ3JlYXRlKHByb3RvdHlwZSkge1xuICAgIGlmICghaXNPYmplY3QocHJvdG90eXBlKSkgcmV0dXJuIHt9O1xuICAgIGlmIChuYXRpdmVDcmVhdGUpIHJldHVybiBuYXRpdmVDcmVhdGUocHJvdG90eXBlKTtcbiAgICB2YXIgQ3RvciA9IGN0b3IoKTtcbiAgICBDdG9yLnByb3RvdHlwZSA9IHByb3RvdHlwZTtcbiAgICB2YXIgcmVzdWx0ID0gbmV3IEN0b3I7XG4gICAgQ3Rvci5wcm90b3R5cGUgPSBudWxsO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBDcmVhdGVzIGFuIG9iamVjdCB0aGF0IGluaGVyaXRzIGZyb20gdGhlIGdpdmVuIHByb3RvdHlwZSBvYmplY3QuXG4gIC8vIElmIGFkZGl0aW9uYWwgcHJvcGVydGllcyBhcmUgcHJvdmlkZWQgdGhlbiB0aGV5IHdpbGwgYmUgYWRkZWQgdG8gdGhlXG4gIC8vIGNyZWF0ZWQgb2JqZWN0LlxuICBmdW5jdGlvbiBjcmVhdGUocHJvdG90eXBlLCBwcm9wcykge1xuICAgIHZhciByZXN1bHQgPSBiYXNlQ3JlYXRlKHByb3RvdHlwZSk7XG4gICAgaWYgKHByb3BzKSBleHRlbmRPd24ocmVzdWx0LCBwcm9wcyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIENyZWF0ZSBhIChzaGFsbG93LWNsb25lZCkgZHVwbGljYXRlIG9mIGFuIG9iamVjdC5cbiAgZnVuY3Rpb24gY2xvbmUob2JqKSB7XG4gICAgaWYgKCFpc09iamVjdChvYmopKSByZXR1cm4gb2JqO1xuICAgIHJldHVybiBpc0FycmF5KG9iaikgPyBvYmouc2xpY2UoKSA6IGV4dGVuZCh7fSwgb2JqKTtcbiAgfVxuXG4gIC8vIEludm9rZXMgYGludGVyY2VwdG9yYCB3aXRoIHRoZSBgb2JqYCBhbmQgdGhlbiByZXR1cm5zIGBvYmpgLlxuICAvLyBUaGUgcHJpbWFyeSBwdXJwb3NlIG9mIHRoaXMgbWV0aG9kIGlzIHRvIFwidGFwIGludG9cIiBhIG1ldGhvZCBjaGFpbiwgaW5cbiAgLy8gb3JkZXIgdG8gcGVyZm9ybSBvcGVyYXRpb25zIG9uIGludGVybWVkaWF0ZSByZXN1bHRzIHdpdGhpbiB0aGUgY2hhaW4uXG4gIGZ1bmN0aW9uIHRhcChvYmosIGludGVyY2VwdG9yKSB7XG4gICAgaW50ZXJjZXB0b3Iob2JqKTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLy8gTm9ybWFsaXplIGEgKGRlZXApIHByb3BlcnR5IGBwYXRoYCB0byBhcnJheS5cbiAgLy8gTGlrZSBgXy5pdGVyYXRlZWAsIHRoaXMgZnVuY3Rpb24gY2FuIGJlIGN1c3RvbWl6ZWQuXG4gIGZ1bmN0aW9uIHRvUGF0aCQxKHBhdGgpIHtcbiAgICByZXR1cm4gaXNBcnJheShwYXRoKSA/IHBhdGggOiBbcGF0aF07XG4gIH1cbiAgXyQxLnRvUGF0aCA9IHRvUGF0aCQxO1xuXG4gIC8vIEludGVybmFsIHdyYXBwZXIgZm9yIGBfLnRvUGF0aGAgdG8gZW5hYmxlIG1pbmlmaWNhdGlvbi5cbiAgLy8gU2ltaWxhciB0byBgY2JgIGZvciBgXy5pdGVyYXRlZWAuXG4gIGZ1bmN0aW9uIHRvUGF0aChwYXRoKSB7XG4gICAgcmV0dXJuIF8kMS50b1BhdGgocGF0aCk7XG4gIH1cblxuICAvLyBJbnRlcm5hbCBmdW5jdGlvbiB0byBvYnRhaW4gYSBuZXN0ZWQgcHJvcGVydHkgaW4gYG9iamAgYWxvbmcgYHBhdGhgLlxuICBmdW5jdGlvbiBkZWVwR2V0KG9iaiwgcGF0aCkge1xuICAgIHZhciBsZW5ndGggPSBwYXRoLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiB2b2lkIDA7XG4gICAgICBvYmogPSBvYmpbcGF0aFtpXV07XG4gICAgfVxuICAgIHJldHVybiBsZW5ndGggPyBvYmogOiB2b2lkIDA7XG4gIH1cblxuICAvLyBHZXQgdGhlIHZhbHVlIG9mIHRoZSAoZGVlcCkgcHJvcGVydHkgb24gYHBhdGhgIGZyb20gYG9iamVjdGAuXG4gIC8vIElmIGFueSBwcm9wZXJ0eSBpbiBgcGF0aGAgZG9lcyBub3QgZXhpc3Qgb3IgaWYgdGhlIHZhbHVlIGlzXG4gIC8vIGB1bmRlZmluZWRgLCByZXR1cm4gYGRlZmF1bHRWYWx1ZWAgaW5zdGVhZC5cbiAgLy8gVGhlIGBwYXRoYCBpcyBub3JtYWxpem
14733VkIHRocm91Z2ggYF8udG9QYXRoYC5cbiAgZnVuY3Rpb24gZ2V0KG9iamVjdCwgcGF0aCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgdmFyIHZhbHVlID0gZGVlcEdldChvYmplY3QsIHRvUGF0aChwYXRoKSk7XG4gICAgcmV0dXJuIGlzVW5kZWZpbmVkKHZhbHVlKSA/IGRlZmF1bHRWYWx1ZSA6IHZhbHVlO1xuICB9XG5cbiAgLy8gU2hvcnRjdXQgZnVuY3Rpb24gZm9yIGNoZWNraW5nIGlmIGFuIG9iamVjdCBoYXMgYSBnaXZlbiBwcm9wZXJ0eSBkaXJlY3RseSBvblxuICAvLyBpdHNlbGYgKGluIG90aGVyIHdvcmRzLCBub3Qgb24gYSBwcm90b3R5cGUpLiBVbmxpa2UgdGhlIGludGVybmFsIGBoYXNgXG4gIC8vIGZ1bmN0aW9uLCB0aGlzIHB1YmxpYyB2ZXJzaW9uIGNhbiBhbHNvIHRyYXZlcnNlIG5lc3RlZCBwcm9wZXJ0aWVzLlxuICBmdW5jdGlvbiBoYXMob2JqLCBwYXRoKSB7XG4gICAgcGF0aCA9IHRvUGF0aChwYXRoKTtcbiAgICB2YXIgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IHBhdGhbaV07XG4gICAgICBpZiAoIWhhcyQxKG9iaiwga2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgb2JqID0gb2JqW2tleV07XG4gICAgfVxuICAgIHJldHVybiAhIWxlbmd0aDtcbiAgfVxuXG4gIC8vIEtlZXAgdGhlIGlkZW50aXR5IGZ1bmN0aW9uIGFyb3VuZCBmb3IgZGVmYXVsdCBpdGVyYXRlZXMuXG4gIGZ1bmN0aW9uIGlkZW50aXR5KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLy8gUmV0dXJucyBhIHByZWRpY2F0ZSBmb3IgY2hlY2tpbmcgd2hldGhlciBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gc2V0IG9mXG4gIC8vIGBrZXk6dmFsdWVgIHBhaXJzLlxuICBmdW5jdGlvbiBtYXRjaGVyKGF0dHJzKSB7XG4gICAgYXR0cnMgPSBleHRlbmRPd24oe30sIGF0dHJzKTtcbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gaXNNYXRjaChvYmosIGF0dHJzKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQsIHdoZW4gcGFzc2VkIGFuIG9iamVjdCwgd2lsbCB0cmF2ZXJzZSB0aGF0IG9iamVjdOKAmXNcbiAgLy8gcHJvcGVydGllcyBkb3duIHRoZSBnaXZlbiBgcGF0aGAsIHNwZWNpZmllZCBhcyBhbiBhcnJheSBvZiBrZXlzIG9yIGluZGljZXMuXG4gIGZ1bmN0aW9uIHByb3BlcnR5KHBhdGgpIHtcbiAgICBwYXRoID0gdG9QYXRoKHBhdGgpO1xuICAgIHJldHVybiBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBkZWVwR2V0KG9iaiwgcGF0aCk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIEludGVybmFsIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBlZmZpY2llbnQgKGZvciBjdXJyZW50IGVuZ2luZXMpIHZlcnNpb25cbiAgLy8gb2YgdGhlIHBhc3NlZC1pbiBjYWxsYmFjaywgdG8gYmUgcmVwZWF0ZWRseSBhcHBsaWVkIGluIG90aGVyIFVuZGVyc2NvcmVcbiAgLy8gZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBvcHRpbWl6ZUNiKGZ1bmMsIGNvbnRleHQsIGFyZ0NvdW50KSB7XG4gICAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkgcmV0dXJuIGZ1bmM7XG4gICAgc3dpdGNoIChhcmdDb3VudCA9PSBudWxsID8gMyA6IGFyZ0NvdW50KSB7XG4gICAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gZnVuYy5jYWxsKGNvbnRleHQsIHZhbHVlKTtcbiAgICAgIH07XG4gICAgICAvLyBUaGUgMi1hcmd1bWVudCBjYXNlIGlzIG9taXR0ZWQgYmVjYXVzZSB3ZeKAmXJlIG5vdCB1c2luZyBpdC5cbiAgICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgICAgICByZXR1cm4gZnVuYy5jYWxsKGNvbnRleHQsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgICB9O1xuICAgICAgY2FzZSA0OiByZXR1cm4gZnVuY3Rpb24oYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgICAgICByZXR1cm4gZnVuYy5jYWxsKGNvbnRleHQsIGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gQW4gaW50ZXJuYWwgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgY2FsbGJhY2tzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gZWFjaFxuICAvLyBlbGVtZW50IGluIGEgY29sbGVjdGlvbiwgcmV0dXJuaW5nIHRoZSBkZXNpcmVkIHJlc3VsdCDigJQgZWl0aGVyIGBfLmlkZW50aXR5YCxcbiAgLy8gYW4gYXJiaXRyYXJ5IGNhbGxiYWNrLCBhIHByb3BlcnR5IG1hdGNoZXIsIG9yIGEgcHJvcGVydHkgYWNjZXNzb3IuXG4gIGZ1bmN0aW9uIGJhc2VJdGVyYXRlZSh2YWx1ZSwgY29udGV4dCwgYXJnQ291bnQpIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIGlkZW50aXR5O1xuICAgIGlmIChpc0Z1bmN0aW9uJDEodmFsdWUpKSByZXR1cm4gb3B0aW1pemVDYih2YWx1ZSwgY29udGV4dCwgYXJnQ291bnQpO1xuICAgIGlmIChpc09iamVjdCh2YWx1ZSkgJiYgIWlzQXJyYXkodmFsdWUpKSByZXR1cm4gbWF0Y2hlcih2YWx1ZSk7XG4gICAgcmV0dXJuIHByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIC8vIEV4dGVybmFsIHdyYXBwZXIgZm9yIG91ciBjYWxsYmFjayBnZW5lcmF0b3IuIFVzZXJzIG1heSBjdXN0b21pemVcbiAgLy8gYF8uaXRlcmF0ZWVgIGlmIHRoZXkgd2FudCBhZGRpdGlvbmFsIHByZWRpY2F0ZS9pdGVyYXRlZSBzaG9ydGhhbmQgc3R5bGVzLlxuICAvLyBUaGlzIGFic3RyYWN0aW9uIGhpZGVzIHRoZSBpbnRlcm5hbC1vbmx5IGBhcmdDb3VudGAgYXJndW1lbnQuXG4gIGZ1bmN0aW9uIGl0ZXJhdGVlKHZhbHVlLCBjb250ZXh0KSB7XG4gICAgcmV0dXJuIGJhc2VJdGVyYXRlZSh2YWx1ZSwgY29udGV4dCwgSW5maW5pdHkpO1xuICB9XG4gIF8kMS5pdGVyYXRlZSA9IGl0ZXJhdGVlO1xuXG4gIC8vIFRoZSBmdW5jdGlvbiB3ZSBjYWxsIGludGVybmFsbHkgdG8gZ2VuZXJhdGUgYSBjYWxsYmFjay4gSXQgaW52b2tlc1xuICAvLyBgXy5pdGVyYXRlZWAgaWYgb3ZlcnJpZGRlbiwgb3RoZXJ3aXNlIGBiYXNlSXRlcmF0ZWVgLlxuICBmdW5jdGlvbiBjYih2YWx1ZSwgY29udGV4dCwgYXJnQ291bnQpIHtcbiAgICBpZiAoXyQxLml0ZXJhdGVlICE9PSBpdGVyYXRlZSkgcmV0dXJuIF8kMS5pdGVyYXRlZSh2YWx1ZSwgY29udGV4dCk7XG4gICAgcmV0dXJuIGJhc2VJdGVyYXRlZSh2YWx1ZSwgY29udGV4dCwgYXJnQ291bnQpO1xuICB9XG5cbiAgLy8gUmV0dXJucyB0aGUgcmVzdWx0cyBvZiBhcHBseWluZyB0aGUgYGl0ZXJhdGVlYCB0byBlYWNoIGVsZW1lbnQgb2YgYG9iamAuXG4gIC8vIEluIGNvbnRyYXN0IHRvIGBfLm1hcGAgaXQgcmV0dXJucyBhbiBvYmplY3QuXG4gIGZ1bmN0aW9uIG1hcE9iamVjdChvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgdmFyIF9rZXlzID0ga2V5cyhvYmopLFxuICAgICAgICBsZW5ndGggPSBfa2V5cy5sZW5ndGgsXG4gICAgICAgI
14733HJlc3VsdHMgPSB7fTtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICB2YXIgY3VycmVudEtleSA9IF9rZXlzW2luZGV4XTtcbiAgICAgIHJlc3VsdHNbY3VycmVudEtleV0gPSBpdGVyYXRlZShvYmpbY3VycmVudEtleV0sIGN1cnJlbnRLZXksIG9iaik7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgLy8gUHJlZGljYXRlLWdlbmVyYXRpbmcgZnVuY3Rpb24uIE9mdGVuIHVzZWZ1bCBvdXRzaWRlIG9mIFVuZGVyc2NvcmUuXG4gIGZ1bmN0aW9uIG5vb3AoKXt9XG5cbiAgLy8gR2VuZXJhdGVzIGEgZnVuY3Rpb24gZm9yIGEgZ2l2ZW4gb2JqZWN0IHRoYXQgcmV0dXJucyBhIGdpdmVuIHByb3BlcnR5LlxuICBmdW5jdGlvbiBwcm9wZXJ0eU9mKG9iaikge1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIG5vb3A7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgIHJldHVybiBnZXQob2JqLCBwYXRoKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gUnVuIGEgZnVuY3Rpb24gKipuKiogdGltZXMuXG4gIGZ1bmN0aW9uIHRpbWVzKG4sIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgdmFyIGFjY3VtID0gQXJyYXkoTWF0aC5tYXgoMCwgbikpO1xuICAgIGl0ZXJhdGVlID0gb3B0aW1pemVDYihpdGVyYXRlZSwgY29udGV4dCwgMSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIGFjY3VtW2ldID0gaXRlcmF0ZWUoaSk7XG4gICAgcmV0dXJuIGFjY3VtO1xuICB9XG5cbiAgLy8gUmV0dXJuIGEgcmFuZG9tIGludGVnZXIgYmV0d2VlbiBgbWluYCBhbmQgYG1heGAgKGluY2x1c2l2ZSkuXG4gIGZ1bmN0aW9uIHJhbmRvbShtaW4sIG1heCkge1xuICAgIGlmIChtYXggPT0gbnVsbCkge1xuICAgICAgbWF4ID0gbWluO1xuICAgICAgbWluID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIG1pbiArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSk7XG4gIH1cblxuICAvLyBBIChwb3NzaWJseSBmYXN0ZXIpIHdheSB0byBnZXQgdGhlIGN1cnJlbnQgdGltZXN0YW1wIGFzIGFuIGludGVnZXIuXG4gIHZhciBub3cgPSBEYXRlLm5vdyB8fCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gIH07XG5cbiAgLy8gSW50ZXJuYWwgaGVscGVyIHRvIGdlbmVyYXRlIGZ1bmN0aW9ucyBmb3IgZXNjYXBpbmcgYW5kIHVuZXNjYXBpbmcgc3RyaW5nc1xuICAvLyB0by9mcm9tIEhUTUwgaW50ZXJwb2xhdGlvbi5cbiAgZnVuY3Rpb24gY3JlYXRlRXNjYXBlcihtYXApIHtcbiAgICB2YXIgZXNjYXBlciA9IGZ1bmN0aW9uKG1hdGNoKSB7XG4gICAgICByZXR1cm4gbWFwW21hdGNoXTtcbiAgICB9O1xuICAgIC8vIFJlZ2V4ZXMgZm9yIGlkZW50aWZ5aW5nIGEga2V5IHRoYXQgbmVlZHMgdG8gYmUgZXNjYXBlZC5cbiAgICB2YXIgc291cmNlID0gJyg/OicgKyBrZXlzKG1hcCkuam9pbignfCcpICsgJyknO1xuICAgIHZhciB0ZXN0UmVnZXhwID0gUmVnRXhwKHNvdXJjZSk7XG4gICAgdmFyIHJlcGxhY2VSZWdleHAgPSBSZWdFeHAoc291cmNlLCAnZycpO1xuICAgIHJldHVybiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHN0cmluZyA9PSBudWxsID8gJycgOiAnJyArIHN0cmluZztcbiAgICAgIHJldHVybiB0ZXN0UmVnZXhwLnRlc3Qoc3RyaW5nKSA/IHN0cmluZy5yZXBsYWNlKHJlcGxhY2VSZWdleHAsIGVzY2FwZXIpIDogc3RyaW5nO1xuICAgIH07XG4gIH1cblxuICAvLyBJbnRlcm5hbCBsaXN0IG9mIEhUTUwgZW50aXRpZXMgZm9yIGVzY2FwaW5nLlxuICB2YXIgZXNjYXBlTWFwID0ge1xuICAgICcmJzogJyZhbXA7JyxcbiAgICAnPCc6ICcmbHQ7JyxcbiAgICAnPic6ICcmZ3Q7JyxcbiAgICAnXCInOiAnJnF1b3Q7JyxcbiAgICBcIidcIjogJyYjeDI3OycsXG4gICAgJ2AnOiAnJiN4NjA7J1xuICB9O1xuXG4gIC8vIEZ1bmN0aW9uIGZvciBlc2NhcGluZyBzdHJpbmdzIHRvIEhUTUwgaW50ZXJwb2xhdGlvbi5cbiAgdmFyIF9lc2NhcGUgPSBjcmVhdGVFc2NhcGVyKGVzY2FwZU1hcCk7XG5cbiAgLy8gSW50ZXJuYWwgbGlzdCBvZiBIVE1MIGVudGl0aWVzIGZvciB1bmVzY2FwaW5nLlxuICB2YXIgdW5lc2NhcGVNYXAgPSBpbnZlcnQoZXNjYXBlTWFwKTtcblxuICAvLyBGdW5jdGlvbiBmb3IgdW5lc2NhcGluZyBzdHJpbmdzIGZyb20gSFRNTCBpbnRlcnBvbGF0aW9uLlxuICB2YXIgX3VuZXNjYXBlID0gY3JlYXRlRXNjYXBlcih1bmVzY2FwZU1hcCk7XG5cbiAgLy8gQnkgZGVmYXVsdCwgVW5kZXJzY29yZSB1c2VzIEVSQi1zdHlsZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLiBDaGFuZ2UgdGhlXG4gIC8vIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy5cbiAgdmFyIHRlbXBsYXRlU2V0dGluZ3MgPSBfJDEudGVtcGxhdGVTZXR0aW5ncyA9IHtcbiAgICBldmFsdWF0ZTogLzwlKFtcXHNcXFNdKz8pJT4vZyxcbiAgICBpbnRlcnBvbGF0ZTogLzwlPShbXFxzXFxTXSs/KSU+L2csXG4gICAgZXNjYXBlOiAvPCUtKFtcXHNcXFNdKz8pJT4vZ1xuICB9O1xuXG4gIC8vIFdoZW4gY3VzdG9taXppbmcgYF8udGVtcGxhdGVTZXR0aW5nc2AsIGlmIHlvdSBkb24ndCB3YW50IHRvIGRlZmluZSBhblxuICAvLyBpbnRlcnBvbGF0aW9uLCBldmFsdWF0aW9uIG9yIGVzY2FwaW5nIHJlZ2V4LCB3ZSBuZWVkIG9uZSB0aGF0IGlzXG4gIC8vIGd1YXJhbnRlZWQgbm90IHRvIG1hdGNoLlxuICB2YXIgbm9NYXRjaCA9IC8oLileLztcblxuICAvLyBDZXJ0YWluIGNoYXJhY3RlcnMgbmVlZCB0byBiZSBlc2NhcGVkIHNvIHRoYXQgdGhleSBjYW4gYmUgcHV0IGludG8gYVxuICAvLyBzdHJpbmcgbGl0ZXJhbC5cbiAgdmFyIGVzY2FwZXMgPSB7XG4gICAgXCInXCI6IFwiJ1wiLFxuICAgICdcXFxcJzogJ1xcXFwnLFxuICAgICdcXHInOiAncicsXG4gICAgJ1xcbic6ICduJyxcbiAgICAnXFx1MjAyOCc6ICd1MjAyOCcsXG4gICAgJ1xcdTIwMjknOiAndTIwMjknXG4gIH07XG5cbiAgdmFyIGVzY2FwZVJlZ0V4cCA9IC9cXFxcfCd8XFxyfFxcbnxcXHUyMDI4fFxcdTIwMjkvZztcblxuICBmdW5jdGlvbiBlc2NhcGVDaGFyKG1hdGNoKSB7XG4gICAgcmV0dXJuICdcXFxcJyArIGVzY2FwZXNbbWF0Y2hdO1xuICB9XG5cbiAgLy8gSW4gb3JkZXIgdG8gcHJldmVudCB0aGlyZC1wYXJ0eSBjb2RlIGluamVjdGlvbiB0aHJvdWdoXG4gIC8vIGBfLnRlbXBsYXRlU2V0dGluZ3MudmFyaWFibGVgLCB3ZSB0ZXN0IGl0IGFnYWluc3QgdGhlIGZvbGxvd2luZyByZWd1bGFyXG4gIC8vIGV4cHJlc3Npb24uIEl0IGlzIGludGVudGlvbmFsbHkgYSBiaXQgbW9yZSBsaWJlcmFsIHRoYW4ganVzdCBtYXRjaGluZyB2YWxpZFxuICAvLyBpZGVudGlmaWVycywgYnV0IHN0aWxsIHByZXZlbn
14733RzIHBvc3NpYmxlIGxvb3Bob2xlcyB0aHJvdWdoIGRlZmF1bHRzIG9yXG4gIC8vIGRlc3RydWN0dXJpbmcgYXNzaWdubWVudC5cbiAgdmFyIGJhcmVJZGVudGlmaWVyID0gL15cXHMqKFxcd3xcXCQpK1xccyokLztcblxuICAvLyBKYXZhU2NyaXB0IG1pY3JvLXRlbXBsYXRpbmcsIHNpbWlsYXIgdG8gSm9obiBSZXNpZydzIGltcGxlbWVudGF0aW9uLlxuICAvLyBVbmRlcnNjb3JlIHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJpdHJhcnkgZGVsaW1pdGVycywgcHJlc2VydmVzIHdoaXRlc3BhY2UsXG4gIC8vIGFuZCBjb3JyZWN0bHkgZXNjYXBlcyBxdW90ZXMgd2l0aGluIGludGVycG9sYXRlZCBjb2RlLlxuICAvLyBOQjogYG9sZFNldHRpbmdzYCBvbmx5IGV4aXN0cyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG4gIGZ1bmN0aW9uIHRlbXBsYXRlKHRleHQsIHNldHRpbmdzLCBvbGRTZXR0aW5ncykge1xuICAgIGlmICghc2V0dGluZ3MgJiYgb2xkU2V0dGluZ3MpIHNldHRpbmdzID0gb2xkU2V0dGluZ3M7XG4gICAgc2V0dGluZ3MgPSBkZWZhdWx0cyh7fSwgc2V0dGluZ3MsIF8kMS50ZW1wbGF0ZVNldHRpbmdzKTtcblxuICAgIC8vIENvbWJpbmUgZGVsaW1pdGVycyBpbnRvIG9uZSByZWd1bGFyIGV4cHJlc3Npb24gdmlhIGFsdGVybmF0aW9uLlxuICAgIHZhciBtYXRjaGVyID0gUmVnRXhwKFtcbiAgICAgIChzZXR0aW5ncy5lc2NhcGUgfHwgbm9NYXRjaCkuc291cmNlLFxuICAgICAgKHNldHRpbmdzLmludGVycG9sYXRlIHx8IG5vTWF0Y2gpLnNvdXJjZSxcbiAgICAgIChzZXR0aW5ncy5ldmFsdWF0ZSB8fCBub01hdGNoKS5zb3VyY2VcbiAgICBdLmpvaW4oJ3wnKSArICd8JCcsICdnJyk7XG5cbiAgICAvLyBDb21waWxlIHRoZSB0ZW1wbGF0ZSBzb3VyY2UsIGVzY2FwaW5nIHN0cmluZyBsaXRlcmFscyBhcHByb3ByaWF0ZWx5LlxuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIHNvdXJjZSA9IFwiX19wKz0nXCI7XG4gICAgdGV4dC5yZXBsYWNlKG1hdGNoZXIsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFsdWF0ZSwgb2Zmc2V0KSB7XG4gICAgICBzb3VyY2UgKz0gdGV4dC5zbGljZShpbmRleCwgb2Zmc2V0KS5yZXBsYWNlKGVzY2FwZVJlZ0V4cCwgZXNjYXBlQ2hhcik7XG4gICAgICBpbmRleCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDtcblxuICAgICAgaWYgKGVzY2FwZSkge1xuICAgICAgICBzb3VyY2UgKz0gXCInK1xcbigoX190PShcIiArIGVzY2FwZSArIFwiKSk9PW51bGw/Jyc6Xy5lc2NhcGUoX190KSkrXFxuJ1wiO1xuICAgICAgfSBlbHNlIGlmIChpbnRlcnBvbGF0ZSkge1xuICAgICAgICBzb3VyY2UgKz0gXCInK1xcbigoX190PShcIiArIGludGVycG9sYXRlICsgXCIpKT09bnVsbD8nJzpfX3QpK1xcbidcIjtcbiAgICAgIH0gZWxzZSBpZiAoZXZhbHVhdGUpIHtcbiAgICAgICAgc291cmNlICs9IFwiJztcXG5cIiArIGV2YWx1YXRlICsgXCJcXG5fX3ArPSdcIjtcbiAgICAgIH1cblxuICAgICAgLy8gQWRvYmUgVk1zIG5lZWQgdGhlIG1hdGNoIHJldHVybmVkIHRvIHByb2R1Y2UgdGhlIGNvcnJlY3Qgb2Zmc2V0LlxuICAgICAgcmV0dXJuIG1hdGNoO1xuICAgIH0pO1xuICAgIHNvdXJjZSArPSBcIic7XFxuXCI7XG5cbiAgICB2YXIgYXJndW1lbnQgPSBzZXR0aW5ncy52YXJpYWJsZTtcbiAgICBpZiAoYXJndW1lbnQpIHtcbiAgICAgIC8vIEluc3VyZSBhZ2FpbnN0IHRoaXJkLXBhcnR5IGNvZGUgaW5qZWN0aW9uLiAoQ1ZFLTIwMjEtMjMzNTgpXG4gICAgICBpZiAoIWJhcmVJZGVudGlmaWVyLnRlc3QoYXJndW1lbnQpKSB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICd2YXJpYWJsZSBpcyBub3QgYSBiYXJlIGlkZW50aWZpZXI6ICcgKyBhcmd1bWVudFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgYSB2YXJpYWJsZSBpcyBub3Qgc3BlY2lmaWVkLCBwbGFjZSBkYXRhIHZhbHVlcyBpbiBsb2NhbCBzY29wZS5cbiAgICAgIHNvdXJjZSA9ICd3aXRoKG9ianx8e30pe1xcbicgKyBzb3VyY2UgKyAnfVxcbic7XG4gICAgICBhcmd1bWVudCA9ICdvYmonO1xuICAgIH1cblxuICAgIHNvdXJjZSA9IFwidmFyIF9fdCxfX3A9JycsX19qPUFycmF5LnByb3RvdHlwZS5qb2luLFwiICtcbiAgICAgIFwicHJpbnQ9ZnVuY3Rpb24oKXtfX3ArPV9fai5jYWxsKGFyZ3VtZW50cywnJyk7fTtcXG5cIiArXG4gICAgICBzb3VyY2UgKyAncmV0dXJuIF9fcDtcXG4nO1xuXG4gICAgdmFyIHJlbmRlcjtcbiAgICB0cnkge1xuICAgICAgcmVuZGVyID0gbmV3IEZ1bmN0aW9uKGFyZ3VtZW50LCAnXycsIHNvdXJjZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZS5zb3VyY2UgPSBzb3VyY2U7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cblxuICAgIHZhciB0ZW1wbGF0ZSA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgIHJldHVybiByZW5kZXIuY2FsbCh0aGlzLCBkYXRhLCBfJDEpO1xuICAgIH07XG5cbiAgICAvLyBQcm92aWRlIHRoZSBjb21waWxlZCBzb3VyY2UgYXMgYSBjb252ZW5pZW5jZSBmb3IgcHJlY29tcGlsYXRpb24uXG4gICAgdGVtcGxhdGUuc291cmNlID0gJ2Z1bmN0aW9uKCcgKyBhcmd1bWVudCArICcpe1xcbicgKyBzb3VyY2UgKyAnfSc7XG5cbiAgICByZXR1cm4gdGVtcGxhdGU7XG4gIH1cblxuICAvLyBUcmF2ZXJzZXMgdGhlIGNoaWxkcmVuIG9mIGBvYmpgIGFsb25nIGBwYXRoYC4gSWYgYSBjaGlsZCBpcyBhIGZ1bmN0aW9uLCBpdFxuICAvLyBpcyBpbnZva2VkIHdpdGggaXRzIHBhcmVudCBhcyBjb250ZXh0LiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZmluYWxcbiAgLy8gY2hpbGQsIG9yIGBmYWxsYmFja2AgaWYgYW55IGNoaWxkIGlzIHVuZGVmaW5lZC5cbiAgZnVuY3Rpb24gcmVzdWx0KG9iaiwgcGF0aCwgZmFsbGJhY2spIHtcbiAgICBwYXRoID0gdG9QYXRoKHBhdGgpO1xuICAgIHZhciBsZW5ndGggPSBwYXRoLmxlbmd0aDtcbiAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgcmV0dXJuIGlzRnVuY3Rpb24kMShmYWxsYmFjaykgPyBmYWxsYmFjay5jYWxsKG9iaikgOiBmYWxsYmFjaztcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHByb3AgPSBvYmogPT0gbnVsbCA/IHZvaWQgMCA6IG9ialtwYXRoW2ldXTtcbiAgICAgIGlmIChwcm9wID09PSB2b2lkIDApIHtcbiAgICAgICAgcHJvcCA9IGZhbGxiYWNrO1xuICAgICAgICBpID0gbGVuZ3RoOyAvLyBFbnN1cmUgd2UgZG9uJ3QgY29udGludWUgaXRlcmF0aW5nLlxuICAgICAgfVxuICAgICAgb2JqID0gaXNGdW5jdGlvbiQxKHByb3ApID8gcHJvcC5jYWxsKG9iaikgOiBwcm9wO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLy8gR2VuZXJhdGUgYSB1bmlxdWUgaW50ZWdlciBpZCAodW5pcXVlIHdpdGhpbiB0aGUgZW50aXJlIGNsaWVudCBzZXNzaW9uKS5cbiAgLy8gVXNlZnVsIGZvciB0ZW1wb3JhcnkgRE9NIGlkcy5cbiAgdmFyIGlkQ291bnRlciA9IDA7XG4gIGZ1bmN0aW9uIHVuaXF1ZUlkKHByZWZpeCkge1xuICAgIHZhciBpZCA9ICsraWRDb3VudGVyICsgJyc7XG4gICAgcmV0dXJuIHByZWZpeCA/IHByZWZpeCArIGlkIDogaWQ7XG4gIH1cblxuICAvLyBTdGFydCBjaGFpbmluZyBhIHdyYXBwZWQgVW5kZXJzY29yZSBvYmplY3QuXG4gIGZ1bmN0aW9uIGNoYWluKG9iaikge1xuICAgIHZhciBpbnN0YW5jZSA9IF8kMShvYmopO1xuICAgIGluc3RhbmNlLl9jaGFpbiA9IHRydWU7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgZnVuY3Rpb24gdG8gZXhlY3V0ZSBgc291cmNlRnVuY2AgYm91bmQgdG8gYGNvbnRleHRgIHdpdGggb3B0aW9uYWxcbiAgLy8gYGFyZ3NgLiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZXhlY3V0ZSBhIGZ1bmN0aW9uIGFzIGEgY29uc3RydWN0b3Igb3IgYXMgYVxuICAvLyBub3JtYWwgZnVuY3Rpb24uXG4gIGZ1bmN0aW9uIGV4ZWN1dGVCb3VuZChzb3VyY2VGdW5jLCBib3VuZEZ1bmMsIGNvbnRleHQsIGNhbGxpbmdDb250ZXh0LCBhcmdzKSB7XG4gICAgaWYgKCEoY2FsbGluZ0NvbnRleHQgaW5zdGFuY2VvZiBib3VuZEZ1bmMpKSByZXR1cm4gc291cmNlRnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICB2YXIgc2VsZiA9IGJhc2VDcmVhdGUoc291cmNlRnVuYy5wcm90b3R5cGUpO1xuICAgIHZhciByZXN1bHQgPSBzb3VyY2VGdW5jLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICAgIGlmIChpc09iamVjdChyZXN1bHQpKSByZXR1cm4gcmVzdWx0O1xuICAgIHJldHVybi
14733BzZWxmO1xuICB9XG5cbiAgLy8gUGFydGlhbGx5IGFwcGx5IGEgZnVuY3Rpb24gYnkgY3JlYXRpbmcgYSB2ZXJzaW9uIHRoYXQgaGFzIGhhZCBzb21lIG9mIGl0c1xuICAvLyBhcmd1bWVudHMgcHJlLWZpbGxlZCwgd2l0aG91dCBjaGFuZ2luZyBpdHMgZHluYW1pYyBgdGhpc2AgY29udGV4dC4gYF9gIGFjdHNcbiAgLy8gYXMgYSBwbGFjZWhvbGRlciBieSBkZWZhdWx0LCBhbGxvd2luZyBhbnkgY29tYmluYXRpb24gb2YgYXJndW1lbnRzIHRvIGJlXG4gIC8vIHByZS1maWxsZWQuIFNldCBgXy5wYXJ0aWFsLnBsYWNlaG9sZGVyYCBmb3IgYSBjdXN0b20gcGxhY2Vob2xkZXIgYXJndW1lbnQuXG4gIHZhciBwYXJ0aWFsID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihmdW5jLCBib3VuZEFyZ3MpIHtcbiAgICB2YXIgcGxhY2Vob2xkZXIgPSBwYXJ0aWFsLnBsYWNlaG9sZGVyO1xuICAgIHZhciBib3VuZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHBvc2l0aW9uID0gMCwgbGVuZ3RoID0gYm91bmRBcmdzLmxlbmd0aDtcbiAgICAgIHZhciBhcmdzID0gQXJyYXkobGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYXJnc1tpXSA9IGJvdW5kQXJnc1tpXSA9PT0gcGxhY2Vob2xkZXIgPyBhcmd1bWVudHNbcG9zaXRpb24rK10gOiBib3VuZEFyZ3NbaV07XG4gICAgICB9XG4gICAgICB3aGlsZSAocG9zaXRpb24gPCBhcmd1bWVudHMubGVuZ3RoKSBhcmdzLnB1c2goYXJndW1lbnRzW3Bvc2l0aW9uKytdKTtcbiAgICAgIHJldHVybiBleGVjdXRlQm91bmQoZnVuYywgYm91bmQsIHRoaXMsIHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gICAgcmV0dXJuIGJvdW5kO1xuICB9KTtcblxuICBwYXJ0aWFsLnBsYWNlaG9sZGVyID0gXyQxO1xuXG4gIC8vIENyZWF0ZSBhIGZ1bmN0aW9uIGJvdW5kIHRvIGEgZ2l2ZW4gb2JqZWN0IChhc3NpZ25pbmcgYHRoaXNgLCBhbmQgYXJndW1lbnRzLFxuICAvLyBvcHRpb25hbGx5KS5cbiAgdmFyIGJpbmQgPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKGZ1bmMsIGNvbnRleHQsIGFyZ3MpIHtcbiAgICBpZiAoIWlzRnVuY3Rpb24kMShmdW5jKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQmluZCBtdXN0IGJlIGNhbGxlZCBvbiBhIGZ1bmN0aW9uJyk7XG4gICAgdmFyIGJvdW5kID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihjYWxsQXJncykge1xuICAgICAgcmV0dXJuIGV4ZWN1dGVCb3VuZChmdW5jLCBib3VuZCwgY29udGV4dCwgdGhpcywgYXJncy5jb25jYXQoY2FsbEFyZ3MpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYm91bmQ7XG4gIH0pO1xuXG4gIC8vIEludGVybmFsIGhlbHBlciBmb3IgY29sbGVjdGlvbiBtZXRob2RzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgY29sbGVjdGlvblxuICAvLyBzaG91bGQgYmUgaXRlcmF0ZWQgYXMgYW4gYXJyYXkgb3IgYXMgYW4gb2JqZWN0LlxuICAvLyBSZWxhdGVkOiBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtdG9sZW5ndGhcbiAgLy8gQXZvaWRzIGEgdmVyeSBuYXN0eSBpT1MgOCBKSVQgYnVnIG9uIEFSTS02NC4gIzIwOTRcbiAgdmFyIGlzQXJyYXlMaWtlID0gY3JlYXRlU2l6ZVByb3BlcnR5Q2hlY2soZ2V0TGVuZ3RoKTtcblxuICAvLyBJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiBhIHJlY3Vyc2l2ZSBgZmxhdHRlbmAgZnVuY3Rpb24uXG4gIGZ1bmN0aW9uIGZsYXR0ZW4kMShpbnB1dCwgZGVwdGgsIHN0cmljdCwgb3V0cHV0KSB7XG4gICAgb3V0cHV0ID0gb3V0cHV0IHx8IFtdO1xuICAgIGlmICghZGVwdGggJiYgZGVwdGggIT09IDApIHtcbiAgICAgIGRlcHRoID0gSW5maW5pdHk7XG4gICAgfSBlbHNlIGlmIChkZXB0aCA8PSAwKSB7XG4gICAgICByZXR1cm4gb3V0cHV0LmNvbmNhdChpbnB1dCk7XG4gICAgfVxuICAgIHZhciBpZHggPSBvdXRwdXQubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBnZXRMZW5ndGgoaW5wdXQpOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB2YWx1ZSA9IGlucHV0W2ldO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSAmJiAoaXNBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHMkMSh2YWx1ZSkpKSB7XG4gICAgICAgIC8vIEZsYXR0ZW4gY3VycmVudCBsZXZlbCBvZiBhcnJheSBvciBhcmd1bWVudHMgb2JqZWN0LlxuICAgICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgICAgZmxh
14733dHRlbiQxKHZhbHVlLCBkZXB0aCAtIDEsIHN0cmljdCwgb3V0cHV0KTtcbiAgICAgICAgICBpZHggPSBvdXRwdXQubGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBqID0gMCwgbGVuID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgIHdoaWxlIChqIDwgbGVuKSBvdXRwdXRbaWR4KytdID0gdmFsdWVbaisrXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghc3RyaWN0KSB7XG4gICAgICAgIG91dHB1dFtpZHgrK10gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfVxuXG4gIC8vIEJpbmQgYSBudW1iZXIgb2YgYW4gb2JqZWN0J3MgbWV0aG9kcyB0byB0aGF0IG9iamVjdC4gUmVtYWluaW5nIGFyZ3VtZW50c1xuICAvLyBhcmUgdGhlIG1ldGhvZCBuYW1lcyB0byBiZSBib3VuZC4gVXNlZnVsIGZvciBlbnN1cmluZyB0aGF0IGFsbCBjYWxsYmFja3NcbiAgLy8gZGVmaW5lZCBvbiBhbiBvYmplY3QgYmVsb25nIHRvIGl0LlxuICB2YXIgYmluZEFsbCA9IHJlc3RBcmd1bWVudHMoZnVuY3Rpb24ob2JqLCBrZXlzKSB7XG4gICAga2V5cyA9IGZsYXR0ZW4kMShrZXlzLCBmYWxzZSwgZmFsc2UpO1xuICAgIHZhciBpbmRleCA9IGtleXMubGVuZ3RoO1xuICAgIGlmIChpbmRleCA8IDEpIHRocm93IG5ldyBFcnJvcignYmluZEFsbCBtdXN0IGJlIHBhc3NlZCBmdW5jdGlvbiBuYW1lcycpO1xuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpbmRleF07XG4gICAgICBvYmpba2V5XSA9IGJpbmQob2JqW2tleV0sIG9iaik7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH0pO1xuXG4gIC8vIE1lbW9pemUgYW4gZXhwZW5zaXZlIGZ1bmN0aW9uIGJ5IHN0b3JpbmcgaXRzIHJlc3VsdHMuXG4gIGZ1bmN0aW9uIG1lbW9pemUoZnVuYywgaGFzaGVyKSB7XG4gICAgdmFyIG1lbW9pemUgPSBmdW5jdGlvbihrZXkpIHtcbiAgICAgIHZhciBjYWNoZSA9IG1lbW9pemUuY2FjaGU7XG4gICAgICB2Y
14733XIgYWRkcmVzcyA9ICcnICsgKGhhc2hlciA/IGhhc2hlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDoga2V5KTtcbiAgICAgIGlmICghaGFzJDEoY2FjaGUsIGFkZHJlc3MpKSBjYWNoZVthZGRyZXNzXSA9IGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIHJldHVybiBjYWNoZVthZGRyZXNzXTtcbiAgICB9O1xuICAgIG1lbW9pemUuY2FjaGUgPSB7fTtcbiAgICByZXR1cm4gbWVtb2l6ZTtcbiAgfVxuXG4gIC8vIERlbGF5cyBhIGZ1bmN0aW9uIGZvciB0aGUgZ2l2ZW4gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgYW5kIHRoZW4gY2FsbHNcbiAgLy8gaXQgd2l0aCB0aGUgYXJndW1lbnRzIHN1cHBsaWVkLlxuICB2YXIgZGVsYXkgPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKGZ1bmMsIHdhaXQsIGFyZ3MpIHtcbiAgICByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmdW5jLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH0sIHdhaXQpO1xuICB9KTtcblxuICAvLyBEZWZlcnMgYSBmdW5jdGlvbiwgc2NoZWR1bGluZyBpdCB0byBydW4gYWZ0ZXIgdGhlIGN1cnJlbnQgY2FsbCBzdGFjayBoYXNcbiAgLy8gY2xlYXJlZC5cbiAgdmFyIGRlZmVyID0gcGFydGlhbChkZWxheSwgXyQxLCAxKTtcblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24sIHRoYXQsIHdoZW4gaW52b2tlZCwgd2lsbCBvbmx5IGJlIHRyaWdnZXJlZCBhdCBtb3N0IG9uY2VcbiAgLy8gZHVyaW5nIGEgZ2l2ZW4gd2luZG93IG9mIHRpbWUuIE5vcm1hbGx5LCB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uIHdpbGwgcnVuXG4gIC8vIGFzIG11Y2ggYXMgaXQgY2FuLCB3aXRob3V0IGV2ZXIgZ29pbmcgbW9yZSB0aGFuIG9uY2UgcGVyIGB3YWl0YCBkdXJhdGlvbjtcbiAgLy8gYnV0IGlmIHlvdSdkIGxpa2UgdG8gZGlzYWJsZSB0aGUgZXhlY3V0aW9uIG9uIHRoZSBsZWFkaW5nIGVkZ2UsIHBhc3NcbiAgLy8gYHtsZWFkaW5nOiBmYWxzZX1gLiBUbyBkaXNhYmxlIGV4ZWN1dGlvbiBvbiB0aGUgdHJhaWxpbmcgZWRnZSwgZGl0dG8uXG4gIGZ1bmN0aW9uIHRocm90dGxlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgICB2YXIgdGltZW91dCwgY29udGV4dCwgYXJncywgcmVzdWx0O1xuICAgIHZhciBwcmV2aW91cyA9IDA7XG4gICAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge307XG5cbiAgICB2YXIgbGF0ZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHByZXZpb3VzID0gb3B0aW9ucy5sZWFkaW5nID09PSBmYWxzZSA/IDAgOiBub3coKTtcbiAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgIGlmICghdGltZW91dCkgY29udGV4dCA9IGFyZ3MgPSBudWxsO1xuICAgIH07XG5cbiAgICB2YXIgdGhyb3R0bGVkID0gZnVuY3Rpb24oKSB7XG4gICAgICB2Y
14733XIgX25vdyA9IG5vdygpO1xuICAgICAgaWYgKCFwcmV2aW91cyAmJiBvcHRpb25zLmxlYWRpbmcgPT09IGZhbHNlKSBwcmV2aW91cyA9IF9ub3c7XG4gICAgICB2YXIgcmVtYWluaW5nID0gd2FpdCAtIChfbm93IC0gcHJldmlvdXMpO1xuICAgICAgY29udGV4dCA9IHRoaXM7XG4gICAgICBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgaWYgKHJlbWFpbmluZyA8PSAwIHx8IHJlbWFpbmluZyA+IHdhaXQpIHtcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcHJldmlvdXMgPSBfbm93O1xuICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgICBpZiAoIXRpbWVvdXQpIGNvbnRleHQgPSBhcmdzID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoIXRpbWVvdXQgJiYgb3B0aW9ucy50cmFpbGluZyAhPT0gZmFsc2UpIHtcbiAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHJlbWFpbmluZyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICB0aHJvdHRsZWQuY2FuY2VsID0gZnVuY3Rpb24oKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICBwcmV2aW91cyA9IDA7XG4gICAgICB0aW1lb3V0ID0gY29udGV4dCA9IGFyZ3MgPSBudWxsO1xuICAgIH07XG5cbiAgICByZXR1cm4gdGhyb3R0bGVkO1xuICB9XG5cbiAgLy8gV2hlbiBhIHNlcXVlbmNlIG9mIGNhbGxzIG9mIHRoZSByZXR1cm5lZCBmdW5jdGlvbiBlbmRzLCB0aGUgYXJndW1lbnRcbiAgLy8gZnVuY3Rpb24gaXMgdHJpZ2dlcmVkLiBUaGUgZW5kIG9mIGEgc2VxdWVuY2UgaXMgZGVmaW5lZCBieSB0aGUgYHdhaXRgXG4gIC8vIHBhcmFtZXRlci4gSWYgYGltbWVkaWF0ZWAgaXMgcGFzc2VkLCB0aGUgYXJndW1lbnQgZnVuY3Rpb24gd2lsbCBiZVxuICAvLyB0cmlnZ2VyZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VxdWVuY2UgaW5zdGVhZCBvZiBhdCB0aGUgZW5kLlxuICBmdW5jdGlvbiBkZWJvdW5jZShmdW5jLCB3YWl0LCBpbW1lZGlhdGUpIHtcbiAgICB2YXIgdGltZW91dCwgcHJldmlvdXMsIGFyZ3MsIHJlc3VsdCwgY29udGV4dDtcblxuICAgIHZhciBsYXRlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHBhc3NlZCA9IG5vdygpIC0gcHJldmlvdXM7XG4gICAgICBpZiAod2FpdCA+IHBhc3NlZCkge1xuICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgd2FpdCAtIHBhc3NlZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgaWYgKCFpbW1lZGlhdGUpIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgIC8vIFRoaXMgY2hlY2sgaXMgbmVlZGVkIGJlY2F1c2UgYGZ1bmNgIGNhbiByZWN1cnNpdmVseSBpbnZva2UgYGRlYm91bmNlZGAuXG4gICAgICAgIGlmICghdGltZW91dCkgYXJncyA9IGNvbnRleHQgPSBudWxsO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgZGVib3VuY2VkID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihfYXJncykge1xuICAgICAgY29udGV4dCA9IHRoaXM7XG4gICAgICBhcmdzID0gX2FyZ3M7XG4gICAgICBwcmV2aW91cyA9IG5vdygpO1xuICAgICAgaWYgKCF0aW1lb3V0KSB7XG4gICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0KTtcbiAgICAgICAgaWYgKGltbWVkaWF0ZSkgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICBkZWJvdW5jZWQuY2FuY2VsID0gZnVuY3Rpb24oKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICB0aW1lb3V0ID0gYXJncyA9IGNvbnRleHQgPSBudWxsO1xuICAgIH07XG5cbiAgICByZXR1cm4gZGVib3VuY2VkO1xuICB9XG5cbiAgLy8gUmV0dXJucyB0aGUgZmlyc3QgZnVuY3Rpb24gcGFzc2VkIGFzIGFuIGFyZ3VtZW50IHRvIHRoZSBzZWNvbmQsXG4gIC8vIGFsbG93aW5nIHlvdSB0byBhZGp1c3QgYXJndW1lbnRzLCBydW4gY29kZSBiZWZvcmUgYW5kIGFmdGVyLCBhbmRcbiAgLy8gY29uZGl0aW9uYWxseSBleGVjdXRlIHRoZSBvcmlnaW5hbCBmdW5jdGlvbi5cbiAgZnVuY3Rpb24gd3JhcChmdW5jLCB3cmFwcGVyKSB7XG4gICAgcmV0dXJuIHBhcnRpYWwod3JhcHBlciwgZnVuYyk7XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgbmVnYXRlZCB2ZXJzaW9uIG9mIHRoZSBwYXNzZWQtaW4gcHJlZGljYXRlLlxuICBmdW5jdGlvbiBuZWdhdGUocHJlZGljYXRlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuICFwcmVkaWNhdGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgaXMgdGhlIGNvbXBvc2l0aW9uIG9mIGEgbGlzdCBvZiBmdW5jdGlvbnMsIGVhY2hcbiAgLy8gY29uc3VtaW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgZm9sbG93cy5cbiAgZnVuY3Rpb24gY29tcG9zZSgpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICB2YXIgc3RhcnQgPSBhcmdzLmxlbmd0aCAtIDE7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGkgPSBzdGFydDtcbiAgICAgIHZhciByZXN1bHQgPSBhcmdzW3N0YXJ0XS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgd2hpbGUgKGktLSkgcmVzdWx0ID0gYXJnc1tpXS5jYWxsKHRoaXMsIHJlc3VsdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCB3aWxsIG9ubHkgYmUgZXhlY3V0ZWQgb24gYW5kIGFmdGVyIHRoZSBOdGggY2FsbC5cbiAgZnVuY3Rpb24gYWZ0ZXIodGltZXMsIGZ1bmMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoLS10aW1lcyA8IDEpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBvbmx5IGJlIGV4ZWN1dGVkIHVwIHRvIChidXQgbm90IGluY2x1ZGluZykgdGhlXG4gIC8vIE50aCBjYWxsLlxuICBmdW5jdGlvbiBiZWZvcmUo
14733dGltZXMsIGZ1bmMpIHtcbiAgICB2YXIgbWVtbztcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoLS10aW1lcyA+IDApIHtcbiAgICAgICAgbWVtbyA9IGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aW1lcyA8PSAxKSBmdW5jID0gbnVsbDtcbiAgICAgIHJldHVybiBtZW1vO1xuICAgIH07XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGF0IG1vc3Qgb25lIHRpbWUsIG5vIG1hdHRlciBob3dcbiAgLy8gb2Z0ZW4geW91IGNhbGwgaXQuIFVzZWZ1bCBmb3IgbGF6eSBpbml0aWFsaXphdGlvbi5cbiAgdmFyIG9uY2UgPSBwYXJ0aWFsKGJlZm9yZSwgMik7XG5cbiAgLy8gUmV0dXJucyB0aGUgZmlyc3Qga2V5IG9uIGFuIG9iamVjdCB0aGF0IHBhc3NlcyBhIHRydXRoIHRlc3QuXG4gIGZ1bmN0aW9uIGZpbmRLZXkob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICBwcmVkaWNhdGUgPSBjYihwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIHZhciBfa2V5cyA9IGtleXMob2JqKSwga2V5O1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBfa2V5cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAga2V5ID0gX2tleXNbaV07XG4gICAgICBpZiAocHJlZGljYXRlKG9ialtrZXldLCBrZXksIG9iaikpIHJldHVybiBrZXk7XG4gICAgfVxuICB9XG5cbiAgLy8gSW50ZXJuYWwgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgYF8uZmluZEluZGV4YCBhbmQgYF8uZmluZExhc3RJbmRleGAuXG4gIGZ1bmN0aW9uIGNyZWF0ZVByZWRpY2F0ZUluZGV4RmluZGVyKGRpcikge1xuICAgIHJldHVybiBmdW5jdGlvbihhcnJheSwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgICBwcmVkaWNhdGUgPSBjYihwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgICAgdmFyIGxlbmd0aCA9IGdldExlbmd0aChhcnJheSk7XG4gICAgICB2Y
14733XIgaW5kZXggPSBkaXIgPiAwID8gMCA6IGxlbmd0aCAtIDE7XG4gICAgICBmb3IgKDsgaW5kZXggPj0gMCAmJiBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gZGlyKSB7XG4gICAgICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfTtcbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIGZpcnN0IGluZGV4IG9uIGFuIGFycmF5LWxpa2UgdGhhdCBwYXNzZXMgYSB0cnV0aCB0ZXN0LlxuICB2YXIgZmluZEluZGV4ID0gY3JlYXRlUHJlZGljYXRlSW5kZXhGaW5kZXIoMSk7XG5cbiAgLy8gUmV0dXJucyB0aGUgbGFzdCBpbmRleCBvbiBhbiBhcnJheS1saWtlIHRoYXQgcGFzc2VzIGEgdHJ1dGggdGVzdC5cbiAgdmFyIGZpbmRMYXN0SW5kZXggPSBjcmVhdGVQcmVkaWNhdGVJbmRleEZpbmRlcigtMSk7XG5cbiAgLy8gVXNlIGEgY29tcGFyYXRvciBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IHRoZSBzbWFsbGVzdCBpbmRleCBhdCB3aGljaFxuICAvLyBhbiBvYmplY3Qgc2hvdWxkIGJlIGluc2VydGVkIHNvIGFzIHRvIG1haW50YWluIG9yZGVyLiBVc2VzIGJpbmFyeSBzZWFyY2guXG4gIGZ1bmN0aW9uIHNvcnRlZEluZGV4KGFycmF5LCBvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCwgMSk7XG4gICAgdmFyIHZhbHVlID0gaXRlcmF0ZWUob2JqKTtcbiAgICB2YXIgbG93ID0gMCwgaGlnaCA9IGdldExlbmd0aChhcnJheSk7XG4gICAgd2hpbGUgKGxvdyA8IGhpZ2gpIHtcbiAgICAgIHZhciBtaWQgPSBNYXRoLmZsb29yKChsb3cgKyBoaWdoKSAvIDIpO1xuICAgICAgaWYgKGl0ZXJhdGVlKGFycmF5W21pZF0pIDwgdmFsdWUpIGxvdyA9IG1pZCArIDE7IGVsc2UgaGlnaCA9IG1pZDtcbiAgICB9XG4gICAgcmV0dXJuIGxvdztcbiAgfVxuXG4gIC8vIEludGVybmFsIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIHRoZSBgXy5pbmRleE9mYCBhbmQgYF8ubGFzdEluZGV4T2ZgIGZ1bmN0aW9ucy5cbiAgZnVuY3Rpb24gY3JlYXRlSW5kZXhGaW5kZXIoZGlyLCBwcmVkaWNhdGVGaW5kLCBzb3J0ZWRJbmRleCkge1xuICAgIHJldHVybiBmdW5jdGlvbihhcnJheSwgaXRlbSwgaWR4KSB7XG4gICAgICB2Y
14733XIgaSA9IDAsIGxlbmd0aCA9IGdldExlbmd0aChhcnJheSk7XG4gICAgICBpZiAodHlwZW9mIGlkeCA9PSAnbnVtYmVyJykge1xuICAgICAgICBpZiAoZGlyID4gMCkge1xuICAgICAgICAgIGkgPSBpZHggPj0gMCA/IGlkeCA6IE1hdGgubWF4KGlkeCArIGxlbmd0aCwgaSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGVuZ3RoID0gaWR4ID49IDAgPyBNYXRoLm1pbihpZHggKyAxLCBsZW5ndGgpIDogaWR4ICsgbGVuZ3RoICsgMTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzb3J0ZWRJbmRleCAmJiBpZHggJiYgbGVuZ3RoKSB7XG4gICAgICAgIGlkeCA9IHNvcnRlZEluZGV4KGFycmF5LCBpdGVtKTtcbiAgICAgICAgcmV0dXJuIGFycmF5W2lkeF0gPT09IGl0ZW0gPyBpZHggOiAtMTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtICE9PSBpdGVtKSB7XG4gICAgICAgIGlkeCA9IHByZWRpY2F0ZUZpbmQoc2xpY2UuY2FsbChhcnJheSwgaSwgbGVuZ3RoKSwgaXNOYU4kMSk7XG4gICAgICAgIHJldHVybiBpZHggPj0gMCA/IGlkeCArIGkgOiAtMTtcbiAgICAgIH1cbiAgICAgIGZvciAoaWR4ID0gZGlyID4gMCA/IGkgOiBsZW5ndGggLSAxOyBpZHggPj0gMCAmJiBpZHggPCBsZW5ndGg7IGlkeCArPSBkaXIpIHtcbiAgICAgICAgaWYgKGFycmF5W2lkeF0gPT09IGl0ZW0pIHJldHVybiBpZHg7XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfTtcbiAgfVxuXG4gIC8vIFJldHVybiB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYW4gaXRlbSBpbiBhbiBhcnJheSxcbiAgLy8gb3IgLTEgaWYgdGhlIGl0ZW0gaXMgbm90IGluY2x1ZGVkIGluIHRoZSBhcnJheS5cbiAgLy8gSWYgdGhlIGFycmF5IGlzIGxhcmdlIGFuZCBhbHJlYWR5IGluIHNvcnQgb3JkZXIsIHBhc3MgYHRydWVgXG4gIC8vIGZvciAqKmlzU29ydGVkKiogdG8gdXNlIGJpbmFyeSBzZWFyY2guXG4gIHZhciBpbmRleE9mID0gY3JlYXRlSW5kZXhGaW5kZXIoMSwgZmluZEluZGV4LCBzb3J0ZWRJbmRleCk7XG5cbiAgLy8gUmV0dXJuIHRoZSBwb3NpdGlvbiBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIGFuIGl0ZW0gaW4gYW4gYXJyYXksXG4gIC8vIG9yIC0xIGlmIHRoZSBpdGVtIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgYXJyYXkuXG4gIHZhciBsYXN0SW5kZXhPZiA9IGNyZWF0ZUluZGV4RmluZGVyKC0xLCBmaW5kTGFzdEluZGV4KTtcblxuICAvLyBSZXR1cm4gdGhlIGZpcnN0IHZhbHVlIHdoaWNoIHBhc3NlcyBhIHRydXRoIHRlc3QuXG4gIGZ1bmN0aW9uIGZpbmQob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICB2YXIga2V5RmluZGVyID0gaXNBcnJheUxpa2Uob2JqKSA/IGZpbmRJbmRleCA6IGZpbmRLZXk7XG4gICAgdmFyIGtleSA9IGtleUZpbmRlcihvYmosIHByZWRpY2F0ZSwgY29udGV4dCk7XG4gICAgaWYgKGtleSAhPT0gdm9pZCAwICYmIGtleSAhPT0gLTEpIHJldHVybiBvYmpba2V5XTtcbiAgfVxuXG4gIC8vIENvbnZlbmllbmNlIHZlcnNpb24gb2YgYSBjb21tb24gdXNlIGNhc2Ugb2YgYF8uZmluZGA6IGdldHRpbmcgdGhlIGZpcnN0XG4gIC8vIG9iamVjdCBjb250YWluaW5nIHNwZWNpZmljIGBrZXk6dmFsdWVgIHBhaXJzLlxuICBmdW5jdGlvbiBmaW5kV2hlcmUob2JqLCBhdHRycykge1xuICAgIHJldHVybiBmaW5kKG9iaiwgbWF0Y2hlcihhdHRycykpO1xuICB9XG5cbiAgLy8gVGhlIGNvcm5lcnN0b25lIGZvciBjb2xsZWN0aW9uIGZ1bmN0aW9ucywgYW4gYGVhY2hgXG4gIC8vIGltcGxlbWVudGF0aW9uLCBha2EgYGZvckVhY2hgLlxuICAvLyBIYW5kbGVzIHJhdyBvYmplY3RzIGluIGFkZGl0aW9uIHRvIGFycmF5LWxpa2VzLiBUcmVhdHMgYWxsXG4gIC8vIHNwYXJzZSBhcnJheS1saWtlcyBhcyBpZiB0aGV5IHdlcmUgZGVuc2UuXG4gIGZ1bmN0aW9uIGVhY2gob2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIGl0ZXJhdGVlID0gb3B0aW1pemVDYihpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgdmFyIGksIGxlbmd0aDtcbiAgICBpZiAoaXNBcnJheUxpa2Uob2JqKSkge1xuICAgICAgZm9yIChpID0gMCwgbGVuZ3RoID0gb2JqLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGl0ZXJhdGVlKG9ialtpXSwgaSwgb2JqKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIF9rZXlzID0ga2V5cyhvYmopO1xuICAgICAgZm9yIChpID0gMCwgbGVuZ3RoID0gX2tleXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaXRlcmF0ZWUob2JqW19rZXlzW2ldXSwgX2tleXNbaV0sIG9iaik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvLyBSZXR1cm4gdGhlIHJlc3VsdHMgb2YgYXBwbHlpbmcgdGhlIGl0ZXJhdGVlIHRvIGVhY2ggZWxlbWVudC5cbiAgZnVuY3Rpb24gbWFwKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICBpdGVyYXRlZSA9IGNiKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICB2YXIgX2tleXMgPSAhaXNBcnJheUxpa2Uob2JqKSAmJiBrZXlzKG9iaiksXG4gICAgICAgIGxlbmd0aCA9IChfa2V5cyB8fCBvYmopLmxlbmd0aCxcbiAgICAgICAgcmVzdWx0cyA9IEFycmF5KGxlbmd0aCk7XG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgdmFyIGN1cnJlbnRLZXkgPSBfa2V5cyA/IF9rZXlzW2luZGV4XSA6IGluZGV4O1xuICAgICAgcmVzdWx0c1tpbmRleF0gPSBpdGVyYXRlZShvYmpbY3VycmVudEtleV0sIGN1cnJlbnRLZXksIG9iaik7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgaGVscGVyIHRvIGNyZWF0ZSBhIHJlZHVjaW5nIGZ1bmN0aW9uLCBpdGVyYXRpbmcgbGVmdCBvciByaWdodC5cbiAgZnVuY3Rpb24gY3JlYXRlUmVkdWNlKGRpcikge1xuICAgIC8vIFdyYXAgY29kZSB0aGF0IHJlYXNzaWducyBhcmd1bWVudCB2YXJpYWJsZXMgaW4gYSBzZXBhcmF0ZSBmdW5jdGlvbiB0aGFuXG4gICAgLy8gdGhlIG9uZSB0aGF0IGFjY2Vzc2VzIGBhcmd1bWVudHMubGVuZ3RoYCB0byBhdm9pZCBhIHBlcmYgaGl0LiAoIzE5OTEpXG4gICAgdmFyIHJlZHVjZXIgPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBtZW1vLCBpbml0aWFsKSB7XG4gICAgICB2Y
14733XIgX2tleXMgPSAhaXNBcnJheUxpa2Uob2JqKSAmJiBrZXlzKG9iaiksXG4gICAgICAgICAgbGVuZ3RoID0gKF9rZXlzIHx8IG9iaikubGVuZ3RoLFxuICAgICAgICAgIGluZGV4ID0gZGlyID4gMCA/IDAgOiBsZW5ndGggLSAxO1xuICAgICAgaWYgKCFpbml0aWFsKSB7XG4gICAgICAgIG1lbW8gPSBvYmpbX2tleXMgPyBfa2V5c1tpbmRleF0gOiBpbmRleF07XG4gICAgICAgIGluZGV4ICs9IGRpcjtcbiAgICAgIH1cbiAgICAgIGZvciAoOyBpbmRleCA+PSAwICYmIGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSBkaXIpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRLZXkgPSBfa2V5cyA/IF9rZXlzW2luZGV4XSA6IGluZGV4O1xuICAgICAgICBtZW1vID0gaXRlcmF0ZWUobWVtbywgb2JqW2N1cnJlbnRLZXldLCBjdXJyZW50S2V5LCBvYmopO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1lbW87XG4gICAgfTtcblxuICAgIHJldHVybiBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBtZW1vLCBjb250ZXh0KSB7XG4gICAgICB2YXIgaW5pdGlhbCA9IGFyZ3VtZW50cy5sZW5ndGggPj0gMztcbiAgICAgIHJldHVybiByZWR1Y2VyKG9iaiwgb3B0aW1pemVDYihpdGVyYXRlZSwgY29udGV4dCwgNCksIG1lbW8sIGluaXRpYWwpO1xuICAgIH07XG4gIH1cblxuICAvLyAqKlJlZHVjZSoqIGJ1aWxkcyB1cCBhIHNpbmdsZSByZXN1bHQgZnJvbSBhIGxpc3Qgb2YgdmFsdWVzLCBha2EgYGluamVjdGAsXG4gIC8vIG9yIGBmb2xkbGAuXG4gIHZhciByZWR1Y2UgPSBjcmVhdGVSZWR1Y2UoMSk7XG5cbiAgLy8gVGhlIHJpZ2h0LWFzc29jaWF0aXZlIHZlcnNpb24gb2YgcmVkdWNlLCBhbHNvIGtub3duIGFzIGBmb2xkcmAuXG4gIHZhciByZWR1Y2VSaWdodCA9IGNyZWF0ZVJlZHVjZSgtMSk7XG5cbiAgLy8gUmV0dXJuIGFsbCB0aGUgZWxlbWVudHMgdGhhdCBwYXNzIGEgdHJ1dGggdGVzdC5cbiAgZnVuY3Rpb24gZmlsdGVyKG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgICBwcmVkaWNhdGUgPSBjYihwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIGVhY2gob2JqLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGxpc3QpIHtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBsaXN0KSkgcmVzdWx0cy5wdXNoKHZhbHVlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8vIFJldHVybiBhbGwgdGhlIGVsZW1lbnRzIGZvciB3aGljaCBhIHRydXRoIHRlc3QgZmFpbHMuXG4gIGZ1bmN0aW9uIHJlamVjdChvYmosIHByZWRpY2F0ZSwgY29udGV4dCkge1xuICAgIHJldHVybiBmaWx0ZXIob2JqLCBuZWdhdGUoY2IocHJlZGljYXRlKSksIGNvbnRleHQpO1xuICB9XG5cbiAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgYWxsIG9mIHRoZSBlbGVtZW50cyBwYXNzIGEgdHJ1dGggdGVzdC5cbiAgZnVuY3Rpb24gZXZlcnkob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICBwcmVkaWNhdGUgPSBjYihwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIHZhciBfa2V5cyA9ICFpc0FycmF5TGlrZShvYmopICYmIGtleXMob2JqKSxcbiAgICAgICAgbGVuZ3RoID0gKF9rZXlzIHx8IG9iaikubGVuZ3RoO1xuICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHZhciBjdXJyZW50S2V5ID0gX2tleXMgPyBfa2V5c1tpbmRleF0gOiBpbmRleDtcbiAgICAgIGlmICghcHJlZGljYXRlKG9ialtjdXJyZW50S2V5XSwgY3VycmVudEtleSwgb2JqKSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIERldGVybWluZSBpZiBhdCBsZWFzdCBvbmUgZWxlbWVudCBpbiB0aGUgb2JqZWN0IHBhc3NlcyBhIHRydXRoIHRlc3QuXG4gIGZ1bmN0aW9uIHNvbWUob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICBwcmVkaWNhdGUgPSBjYihwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIHZhciBfa2V5cyA9ICFpc0FycmF5TGlrZShvYmopICYmIGtleXMob2JqKSxcbiAgICAgICAgbGVuZ3RoID0gKF9rZXlzIHx8IG9iaikubGVuZ3RoO1xuICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHZhciBjdXJyZW50S2V5ID0gX2tleXMgPyBfa2V5c1tpbmRleF0gOiBpbmRleDtcbiAgICAgIGlmIChwcmVkaWNhdGUob2JqW2N1cnJlbnRLZXldLCBjdXJyZW50S2V5LCBvYmopKSByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBhcnJheSBvciBvYmplY3QgY29udGFpbnMgYSBnaXZlbiBpdGVtICh1c2luZyBgPT09YCkuXG4gIGZ1bmN0aW9uIGNvbnRhaW5zKG9iaiwgaXRlbSwgZnJvbUluZGV4LCBndWFyZCkge1xuICAgIGlmICghaXNBcnJheUxpa2Uob2JqKSkgb2JqID0gdmFsdWVzKG9iaik7XG4gICAgaWYgKHR5cGVvZiBmcm9tSW5kZXggIT0gJ251bWJlcicgfHwgZ3VhcmQpIGZyb21JbmRleCA9IDA7XG4gICAgcmV0dXJuIGluZGV4T2Yob2JqLCBpdGVtLCBmcm9tSW5kZXgpID49IDA7XG4gIH1cblxuICAvLyBJbnZva2UgYSBtZXRob2QgKHdpdGggYXJndW1lbnRzKSBvbiBldmVyeSBpdGVtIGluIGEgY29sbGVjdGlvbi5cbiAgdmFyIGludm9rZSA9IHJlc3RBcmd1bWVudHMoZnVuY3Rpb24ob2JqLCBwYXRoLCBhcmdzKSB7XG4gICAgdmFyIGNvbnRleHRQYXRoLCBmdW5jO1xuICAgIGlmIChpc0Z1bmN0aW9uJDEocGF0aCkpIHtcbiAgICAgIGZ1bmMgPSBwYXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXRoID0gdG9QYXRoKHBhdGgpO1xuICAgICAgY29udGV4dFBhdGggPSBwYXRoLnNsaWNlKDAsIC0xKTtcbiAgICAgIHBhdGggPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gICAgfVxuICAgIHJldHVybiBtYXAob2JqLCBmdW5jdGlvbihjb250ZXh0KSB7XG4gICAgICB2Y
14733XIgbWV0aG9kID0gZnVuYztcbiAgICAgIGlmICghbWV0aG9kKSB7XG4gICAgICAgIGlmIChjb250ZXh0UGF0aCAmJiBjb250ZXh0UGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICBjb250ZXh0ID0gZGVlcEdldChjb250ZXh0LCBjb250ZXh0UGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRleHQgPT0gbnVsbCkgcmV0dXJuIHZvaWQgMDtcbiAgICAgICAgbWV0aG9kID0gY29udGV4dFtwYXRoXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtZXRob2QgPT0gbnVsbCA/IG1ldGhvZCA6IG1ldGhvZC5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gQ29udmVuaWVuY2UgdmVyc2lvbiBvZiBhIGNvbW1vbiB1c2UgY2FzZSBvZiBgXy5tYXBgOiBmZXRjaGluZyBhIHByb3BlcnR5LlxuICBmdW5jdGlvbiBwbHVjayhvYmosIGtleSkge1xuICAgIHJldHVybiBtYXAob2JqLCBwcm9wZXJ0eShrZXkpKTtcbiAgfVxuXG4gIC8vIENvbnZlbmllbmNlIHZlcnNpb24gb2YgYSBjb21tb24gdXNlIGNhc2Ugb2YgYF8uZmlsdGVyYDogc2VsZWN0aW5nIG9ubHlcbiAgLy8gb2JqZWN0cyBjb250YWluaW5nIHNwZWNpZmljIGBrZXk6dmFsdWVgIHBhaXJzLlxuICBmdW5jdGlvbiB3aGVyZShvYmosIGF0dHJzKSB7XG4gICAgcmV0dXJuIGZpbHRlcihvYmosIG1hdGNoZXIoYXR0cnMpKTtcbiAgfVxuXG4gIC8vIFJldHVybiB0aGUgbWF4aW11bSBlbGVtZW50IChvciBlbGVtZW50LWJhc2VkIGNvbXB1dGF0aW9uKS5cbiAgZnVuY3Rpb24gbWF4KG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICB2YXIgcmVzdWx0ID0gLUluZmluaXR5LCBsYXN0Q29tcHV0ZWQgPSAtSW5maW5pdHksXG4gICAgICAgIHZhbHVlLCBjb21wdXRlZDtcbiAgICBpZiAoaXRlcmF0ZWUgPT0gbnVsbCB8fCB0eXBlb2YgaXRlcmF0ZWUgPT0gJ251bWJlcicgJiYgdHlwZW9mIG9ialswXSAhPSAnb2JqZWN0JyAmJiBvYmogIT0gbnVsbCkge1xuICAgICAgb2JqID0gaXNBcnJheUxpa2Uob2JqKSA/IG9iaiA6IHZhbHVlcyhvYmopO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IG9iai5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICB2YWx1ZSA9IG9ialtpXTtcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUgPiByZXN1bHQpIHtcbiAgICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpdGVyYXRlZSA9IGNiKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICAgIGVhY2gob2JqLCBmdW5jdGlvbih2LCBpbmRleCwgbGlzdCkge1xuICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlKHYsIGluZGV4LCBsaXN0KTtcbiAgICAgICAgaWYgKGNvbXB1dGVkID4gbGFzdENvbXB1dGVkIHx8IGNvbXB1dGVkID09PSAtSW5maW5pdHkgJiYgcmVzdWx0ID09PSAtSW5maW5pdHkpIHtcbiAgICAgICAgICByZXN1bHQgPSB2O1xuICAgICAgICAgIGxhc3RDb21wdXRlZCA9IGNvbXB1dGVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIFJldHVybiB0aGUgbWluaW11bSBlbGVtZW50IChvciBlbGVtZW50LWJhc2VkIGNvbXB1dGF0aW9uKS5cbiAgZnVuY3Rpb24gbWluKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICB2YXIgcmVzdWx0ID0gSW5maW5pdHksIGxhc3RDb21wdXRlZCA9IEluZmluaXR5LFxuICAgICAgICB2YWx1ZSwgY29tcHV0ZWQ7XG4gICAgaWYgKGl0ZXJhdGVlID09IG51bGwgfHwgdHlwZW9mIGl0ZXJhdGVlID09ICdudW1iZXInICYmIHR5cGVvZiBvYmpbMF0gIT0gJ29iamVjdCcgJiYgb2JqICE9IG51bGwpIHtcbiAgICAgIG9iaiA9IGlzQXJyYXlMaWtlKG9iaikgPyBvYmogOiB2YWx1ZXMob2JqKTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBvYmoubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFsdWUgPSBvYmpbaV07XG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlIDwgcmVzdWx0KSB7XG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgICBlYWNoKG9iaiwgZnVuY3Rpb24odiwgaW5kZXgsIGxpc3QpIHtcbiAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSh2LCBpbmRleCwgbGlzdCk7XG4gICAgICAgIGlmIChjb21wdXRlZCA8IGxhc3RDb21wdXRlZCB8fCBjb21wdXRlZCA9PT0gSW5maW5pdHkgJiYgcmVzdWx0ID09PSBJbmZpbml0eSkge1xuICAgICAgICAgIHJlc3VsdCA9IHY7XG4gICAgICAgICAgbGFzdENvbXB1dGVkID0gY29tcHV0ZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gU2FtcGxlICoqbioqIHJhbmRvbSB2YWx1ZXMgZnJvbSBhIGNvbGxlY3Rpb24gdXNpbmcgdGhlIG1vZGVybiB2ZXJzaW9uIG9mIHRoZVxuICAvLyBbRmlzaGVyLVlhdGVzIHNodWZmbGVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Zpc2hlcuKAk1lhdGVzX3NodWZmbGUpLlxuICAvLyBJZiAqKm4qKiBpcyBub3Qgc3BlY2lmaWVkLCByZXR1cm5zIGEgc2luZ2xlIHJhbmRvbSBlbGVtZW50LlxuICAvLyBUaGUgaW50ZXJuYWwgYGd1YXJkYCBhcmd1bWVudCBhbGxvd3MgaXQgdG8gd29yayB3aXRoIGBfLm1hcGAuXG4gIGZ1bmN0aW9uIHNhbXBsZShvYmosIG4sIGd1YXJkKSB7XG4gICAgaWYgKG4gPT0gbnVsbCB8fCBndWFyZCkge1xuICAgICAgaWYgKCFpc0FycmF5TGlrZShvYmopKSBvYmogPSB2YWx1ZXMob2JqKTtcbiAgICAgIHJldHVybiBvYmpbcmFuZG9tKG9iai5sZW5ndGggLSAxKV07XG4gICAgfVxuICAgIHZhciBzYW1wbGUgPSBpc0FycmF5TGlrZShvYmopID8gY2xvbmUob2JqKSA6IHZhbHVlcyhvYmopO1xuICAgIHZhciBsZW5ndGggPSBnZXRMZW5ndGgoc2FtcGxlKTtcbiAgICBuID0gTWF0aC5tYXgoTWF0aC5taW4obiwgbGVuZ3RoKSwgMCk7XG4gICAgdmFyIGxhc3QgPSBsZW5ndGggLSAxO1xuICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBuOyBpbmRleCsrKSB7XG4gICAgICB2Y
14733XIgcmFuZCA9IHJhbmRvbShpbmRleCwgbGFzdCk7XG4gICAgICB2YXIgdGVtcCA9IHNhbXBsZVtpbmRleF07XG4gICAgICBzYW1wbGVbaW5kZXhdID0gc2FtcGxlW3JhbmRdO1xuICAgICAgc2FtcGxlW3JhbmRdID0gdGVtcDtcbiAgICB9XG4gICAgcmV0dXJuIHNhbXBsZS5zbGljZSgwLCBuKTtcbiAgfVxuXG4gIC8vIFNodWZmbGUgYSBjb2xsZWN0aW9uLlxuICBmdW5jdGlvbiBzaHVmZmxlKG9iaikge1xuICAgIHJldHVybiBzYW1wbGUob2JqLCBJbmZpbml0eSk7XG4gIH1cblxuICAvLyBTb3J0IHRoZSBvYmplY3QncyB2YWx1ZXMgYnkgYSBjcml0ZXJpb24gcHJvZHVjZWQgYnkgYW4gaXRlcmF0ZWUuXG4gIGZ1bmN0aW9uIHNvcnRCeShvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICBpdGVyYXRlZSA9IGNiKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICByZXR1cm4gcGx1Y2sobWFwKG9iaiwgZnVuY3Rpb24odmFsdWUsIGtleSwgbGlzdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBpbmRleDogaW5kZXgrKyxcbiAgICAgICAgY3JpdGVyaWE6IGl0ZXJhdGVlKHZhbHVlLCBrZXksIGxpc3QpXG4gICAgICB9O1xuICAgIH0pLnNvcnQoZnVuY3Rpb24obGVmdCwgcmlnaHQpIHtcbiAgICAgIHZhciBhID0gbGVmdC5jcml0ZXJpYTtcbiAgICAgIHZhciBiID0gcmlnaHQuY3JpdGVyaWE7XG4gICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICBpZiAoYSA+IGIgfHwgYSA9PT0gdm9pZCAwKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgPCBiIHx8IGIgPT09IHZvaWQgMCkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxlZnQuaW5kZXggLSByaWdodC5pbmRleDtcbiAgICB9KSwgJ3ZhbHVlJyk7XG4gIH1cblxuICAvLyBBbiBpbnRlcm5hbCBmdW5jdGlvbiB1c2VkIGZvciBhZ2dyZWdhdGUgXCJncm91cCBieVwiIG9wZXJhdGlvbnMuXG4gIGZ1bmN0aW9uIGdyb3VwKGJlaGF2aW9yLCBwYXJ0aXRpb24pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgICAgdmFyIHJlc3VsdCA9IHBhcnRpdGlvbiA/IFtbXSwgW11dIDoge307XG4gICAgICBpdGVyYXRlZSA9IGNiKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICAgIGVhY2gob2JqLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHtcbiAgICAgICAgdmFyIGtleSA9IGl0ZXJhdGVlKHZhbHVlLCBpbmRleCwgb2JqKTtcbiAgICAgICAgYmVoYXZpb3IocmVzdWx0LCB2YWx1ZSwga2V5KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICB9XG5cbiAgLy8gR3JvdXBzIHRoZSBvYmplY3QncyB2YWx1ZXMgYnkgYSBjcml0ZXJpb24uIFBhc3MgZWl0aGVyIGEgc3RyaW5nIGF0dHJpYnV0ZVxuICAvLyB0byBncm91cCBieSwgb3IgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGNyaXRlcmlvbi5cbiAgdmFyIGdyb3VwQnkgPSBncm91cChmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICBpZiAoaGFzJDEocmVzdWx0LCBrZXkpKSByZXN1bHRba2V5XS5wdXNoKHZhbHVlKTsgZWxzZSByZXN1bHRba2V5XSA9IFt2YWx1ZV07XG4gIH0pO1xuXG4gIC8vIEluZGV4ZXMgdGhlIG9iamVjdCdzIHZhbHVlcyBieSBhIGNyaXRlcmlvbiwgc2ltaWxhciB0byBgXy5ncm91cEJ5YCwgYnV0IGZvclxuICAvLyB3aGVuIHlvdSBrbm93IHRoYXQgeW91ciBpbmRleCB2YWx1ZXMgd2lsbCBiZSB1bmlxdWUuXG4gIHZhciBpbmRleEJ5ID0gZ3JvdXAoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgcmVzdWx0W2tleV0gPSB2YWx1ZTtcbiAgfSk7XG5cbiAgLy8gQ291bnRzIGluc3RhbmNlcyBvZiBhbiBvYmplY3QgdGhhdCBncm91cCBieSBhIGNlcnRhaW4gY3JpdGVyaW9uLiBQYXNzXG4gIC8vIGVpdGhlciBhIHN0cmluZyBhdHRyaWJ1dGUgdG8gY291bnQgYnksIG9yIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZVxuICAvLyBjcml0ZXJpb24uXG4gIHZhciBjb3VudEJ5ID0gZ3JvdXAoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgaWYgKGhhcyQxKHJlc3VsdCwga2V5KSkgcmVzdWx0W2tleV0rKzsgZWxzZSByZXN1bHRba2V5XSA9IDE7XG4gIH0pO1xuXG4gIC8vIFNwbGl0IGEgY29sbGVjdGlvbiBpbnRvIHR3byBhcnJheXM6IG9uZSB3aG9zZSBlbGVtZW50cyBhbGwgcGFzcyB0aGUgZ2l2ZW5cbiAgLy8gdHJ1dGggdGVzdCwgYW5kIG9uZSB3aG9zZSBlbGVtZW50cyBhbGwgZG8gbm90IHBhc3MgdGhlIHRydXRoIHRlc3QuXG4gIHZhciBwYXJ0aXRpb24gPSBncm91cChmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBwYXNzKSB7XG4gICAgcmVzdWx0W3Bhc3MgPyAwIDogMV0ucHVzaCh2YWx1ZSk7XG4gIH0sIHRydWUpO1xuXG4gIC8vIFNhZmVseSBjcmVhdGUgYSByZWFsLCBsaXZlIGFycmF5IGZyb20gYW55dGhpbmcgaXRlcmFibGUuXG4gIHZhciByZVN0clN5bWJvbCA9IC9bXlxcdWQ4MDAtXFx1ZGZmZl18W1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXXxbXFx1ZDgwMC1cXHVkZmZmXS9nO1xuICBmdW5jdGlvbiB0b0FycmF5KG9iaikge1xuICAgIGlmICghb2JqKSByZXR1cm4gW107XG4gICAgaWYgKGlzQXJyYXkob2JqKSkgcmV0dXJuIHNsaWNlLmNhbGwob2JqKTtcbiAgICBpZiAoaXNTdHJpbmcob2JqKSkge1xuICAgICAgLy8gS2VlcCBzdXJyb2dhdGUgcGFpciBjaGFyYWN0ZXJzIHRvZ2V0aGVyLlxuICAgICAgcmV0dXJuIG9iai5tYXRjaChyZVN0clN5bWJvbCk7XG4gICAgfVxuICAgIGlmIChpc0FycmF5TGlrZShvYmopKSByZXR1cm4gbWFwKG9iaiwgaWRlbnRpdHkpO1xuICAgIHJldHVybiB2YWx1ZXMob2JqKTtcbiAgfVxuXG4gIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgY29sbGVjdGlvbi5cbiAgZnVuY3Rpb24gc2l6ZShvYmopIHtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiAwO1xuICAgIHJldHVybiBpc0FycmF5TGlrZShvYmopID8gb2JqLmxlbmd0aCA6IGtleXMob2JqKS5sZW5ndGg7XG4gIH1cblxuICAvLyBJbnRlcm5hbCBgXy5waWNrYCBoZWxwZXIgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYGtleWAgaXMgYW4gZW51bWVyYWJsZVxuICAvLyBwcm9wZXJ0eSBuYW1lIG9mIGBvYmpgLlxuICBmdW5jdGlvbiBrZXlJbk9iaih2YWx1ZSwga2V5LCBvYmopIHtcbiAgICByZXR1cm4ga2V5IGluIG9iajtcbiAgfVxuXG4gIC8vIFJldHVybi
14733BhIGNvcHkgb2YgdGhlIG9iamVjdCBvbmx5IGNvbnRhaW5pbmcgdGhlIGFsbG93ZWQgcHJvcGVydGllcy5cbiAgdmFyIHBpY2sgPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKG9iaiwga2V5cykge1xuICAgIHZhciByZXN1bHQgPSB7fSwgaXRlcmF0ZWUgPSBrZXlzWzBdO1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIHJlc3VsdDtcbiAgICBpZiAoaXNGdW5jdGlvbiQxKGl0ZXJhdGVlKSkge1xuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMSkgaXRlcmF0ZWUgPSBvcHRpbWl6ZUNiKGl0ZXJhdGVlLCBrZXlzWzFdKTtcbiAgICAgIGtleXMgPSBhbGxLZXlzKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZXJhdGVlID0ga2V5SW5PYmo7XG4gICAgICBrZXlzID0gZmxhdHRlbiQxKGtleXMsIGZhbHNlLCBmYWxzZSk7XG4gICAgICBvYmogPSBPYmplY3Qob2JqKTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGtleXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgICAgdmFyIHZhbHVlID0gb2JqW2tleV07XG4gICAgICBpZiAoaXRlcmF0ZWUodmFsdWUsIGtleSwgb2JqKSkgcmVzdWx0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG5cbiAgLy8gUmV0dXJuIGEgY29weSBvZiB0aGUgb2JqZWN0IHdpdGhvdXQgdGhlIGRpc2FsbG93ZWQgcHJvcGVydGllcy5cbiAgdmFyIG9taXQgPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKG9iaiwga2V5cykge1xuICAgIHZhciBpdGVyYXRlZSA9IGtleXNbMF0sIGNvbnRleHQ7XG4gICAgaWYgKGlzRnVuY3Rpb24kMShpdGVyYXRlZSkpIHtcbiAgICAgIGl0ZXJhdGVlID0gbmVnYXRlKGl0ZXJhdGVlKTtcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDEpIGNvbnRleHQgPSBrZXlzWzFdO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlzID0gbWFwKGZsYXR0ZW4kMShrZXlzLCBmYWxzZSwgZmFsc2UpLCBTdHJpbmcpO1xuICAgICAgaXRlcmF0ZWUgPSBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICAgIHJldHVybiAhY29udGFpbnMoa2V5cywga2V5KTtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBwaWNrKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpO1xuICB9KTtcblxuICAvLyBSZXR1cm5zIGV2ZXJ5dGhpbmcgYnV0IHRoZSBsYXN0IGVudHJ5IG9mIHRoZSBhcnJheS4gRXNwZWNpYWxseSB1c2VmdWwgb25cbiAgLy8gdGhlIGFyZ3VtZW50cyBvYmplY3QuIFBhc3NpbmcgKipuKiogd2lsbCByZXR1cm4gYWxsIHRoZSB2YWx1ZXMgaW5cbiAgLy8gdGhlIGFycmF5LCBleGNsdWRpbmcgdGhlIGxhc3QgTi5cbiAgZnVuY3Rpb24gaW5pdGlhbChhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICByZXR1cm4gc2xpY2UuY2FsbChhcnJheSwgMCwgTWF0aC5tYXgoMCwgYXJyYXkubGVuZ3RoIC0gKG4gPT0gbnVsbCB8fCBndWFyZCA/IDEgOiBuKSkpO1xuICB9XG5cbiAgLy8gR2V0IHRoZSBmaXJzdCBlbGVtZW50IG9mIGFuIGFycmF5LiBQYXNzaW5nICoqbioqIHdpbGwgcmV0dXJuIHRoZSBmaXJzdCBOXG4gIC8vIHZhbHVlcyBpbiB0aGUgYXJyYXkuIFRoZSAqKmd1YXJkKiogY2hlY2sgYWxsb3dzIGl0IHRvIHdvcmsgd2l0aCBgXy5tYXBgLlxuICBmdW5jdGlvbiBmaXJzdChhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICBpZiAoYXJyYXkgPT0gbnVsbCB8fCBhcnJheS5sZW5ndGggPCAxKSByZXR1cm4gbiA9PSBudWxsIHx8IGd1YXJkID8gdm9pZCAwIDogW107XG4gICAgaWYgKG4gPT0gbnVsbCB8fCBndWFyZCkgcmV0dXJuIGFycmF5WzBdO1xuICAgIHJldHVybiBpbml0aWFsKGFycmF5LCBhcnJheS5sZW5ndGggLSBuKTtcbiAgfVxuXG4gIC8vIFJldHVybnMgZXZlcnl0aGluZyBidXQgdGhlIGZpcnN0IGVudHJ5IG9mIHRoZSBgYXJyYXlgLiBFc3BlY2lhbGx5IHVzZWZ1bCBvblxuICAvLyB0aGUgYGFyZ3VtZW50c2Agb2JqZWN0LiBQYXNzaW5nIGFuICoqbioqIHdpbGwgcmV0dXJuIHRoZSByZXN0IE4gdmFsdWVzIGluIHRoZVxuICAvLyBgYXJyYXlgLlxuICBmdW5jdGlvbiByZXN0KGFycmF5LCBuLCBndWFyZCkge1xuICAgIHJldHVybiBzbGljZS5jYWxsKGFycmF5LCBuID09IG51bGwgfHwgZ3VhcmQgPyAxIDogbik7XG4gIH1cblxuICAvLyBHZXQgdGhlIGxhc3QgZWxlbWVudCBvZiBhbiBhcnJheS4gUGFzc2luZyAqKm4qKiB3aWxsIHJldHVybiB0aGUgbGFzdCBOXG4gIC8vIHZhbHVlcyBpbiB0aGUgYXJyYXkuXG4gIGZ1bmN0aW9uIGxhc3QoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgaWYgKGFycmF5ID09IG51bGwgfHwgYXJyYXkubGVuZ3RoIDwgMSkgcmV0dXJuIG4gPT0gbnVsbCB8fCBndWFyZCA/IHZvaWQgMCA6IFtdO1xuICAgIGlmIChuID09IG51bGwgfHwgZ3VhcmQpIHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTtcbiAgICByZXR1cm4gcmVzdChhcnJheSwgTWF0aC5tYXgoMCwgYXJyYXkubGVuZ3RoIC0gbikpO1xuICB9XG5cbiAgLy8gVHJpbSBvdXQgYWxsIGZhbHN5IHZhbHVlcyBmcm9tIGFuIGFycmF5LlxuICBmdW5jdGlvbiBjb21wYWN0KGFycmF5KSB7XG4gICAgcmV0dXJuIGZpbHRlcihhcnJheSwgQm9vbGVhbik7XG4gIH1cblxuICAvLyBGbGF0dGVuIG91dCBhbiBhcnJheSwgZWl0aGVyIHJlY3Vyc2l2ZWx5IChieSBkZWZhdWx0KSwgb3IgdXAgdG8gYGRlcHRoYC5cbiAgLy8gUGFzc2luZyBgdHJ1ZWAgb3IgYGZhbHNlYCBhcyBgZGVwdGhgIG1lYW5zIGAxYCBvciBgSW5maW5pdHlgLCByZXNwZWN0aXZlbHkuXG4gIGZ1bmN0aW9uIGZsYXR0ZW4oYXJyYXksIGRlcHRoKSB7XG4gICAgcmV0dXJuIGZsYXR0ZW4kMShhcnJheSwgZGVwdGgsIGZhbHNlKTtcbiAgfVxuXG4gIC8vIFRha2UgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBvbmUgYXJyYXkgYW5kIGEgbnVtYmVyIG9mIG90aGVyIGFycmF5cy5cbiAgLy8gT25seSB0aGUgZWxlbWVudHMgcHJlc2VudCBpbiBqdXN0IHRoZSBmaXJzdCBhcnJheSB3aWxsIHJlbWFpbi5cbiAgdmFyIGRpZmZlcmVuY2UgPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKGFycmF5LCByZXN0KSB7XG4gICAgcmVzdCA9IGZsYXR0ZW4kMShyZXN0LCB0cnVlLCB0cnVlKTtcbiAgICByZXR1cm4gZmlsdGVyKGFycmF5LCBmdW5jdGlvbih2YWx1ZSl7XG4gICAgICByZXR1cm4gIWNvbnRhaW5zKHJlc3QsIHZhbHVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gUmV0dXJuIGEgdmVyc2lvbiBvZiB0aGUgYXJyYXkgdGhhdCBkb2VzIG5vdCBjb250YWluIHRoZSBzcGVjaWZpZWQgdmFsdWUocykuXG4gI
14733HZhciB3aXRob3V0ID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihhcnJheSwgb3RoZXJBcnJheXMpIHtcbiAgICByZXR1cm4gZGlmZmVyZW5jZShhcnJheSwgb3RoZXJBcnJheXMpO1xuICB9KTtcblxuICAvLyBQcm9kdWNlIGEgZHVwbGljYXRlLWZyZWUgdmVyc2lvbiBvZiB0aGUgYXJyYXkuIElmIHRoZSBhcnJheSBoYXMgYWxyZWFkeVxuICAvLyBiZWVuIHNvcnRlZCwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiB1c2luZyBhIGZhc3RlciBhbGdvcml0aG0uXG4gIC8vIFRoZSBmYXN0ZXIgYWxnb3JpdGhtIHdpbGwgbm90IHdvcmsgd2l0aCBhbiBpdGVyYXRlZSBpZiB0aGUgaXRlcmF0ZWVcbiAgLy8gaXMgbm90IGEgb25lLXRvLW9uZSBmdW5jdGlvbiwgc28gcHJvdmlkaW5nIGFuIGl0ZXJhdGVlIHdpbGwgZGlzYWJsZVxuICAvLyB0aGUgZmFzdGVyIGFsZ29yaXRobS5cbiAgZnVuY3Rpb24gdW5pcShhcnJheSwgaXNTb3J0ZWQsIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaWYgKCFpc0Jvb2xlYW4oaXNTb3J0ZWQpKSB7XG4gICAgICBjb250ZXh0ID0gaXRlcmF0ZWU7XG4gICAgICBpdGVyYXRlZSA9IGlzU29ydGVkO1xuICAgICAgaXNTb3J0ZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGl0ZXJhdGVlICE9IG51bGwpIGl0ZXJhdGVlID0gY2IoaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgc2VlbiA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBnZXRMZW5ndGgoYXJyYXkpOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2ldLFxuICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSwgaSwgYXJyYXkpIDogdmFsdWU7XG4gICAgICBpZiAoaXNTb3J0ZWQgJiYgIWl0ZXJhdGVlKSB7XG4gICAgICAgIGlmICghaSB8fCBzZWVuICE9PSBjb21wdXRlZCkgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICBzZWVuID0gY29tcHV0ZWQ7XG4gICAgICB9IGVsc2UgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgIGlmICghY29udGFpbnMoc2VlbiwgY29tcHV0ZWQpKSB7XG4gICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIWNvbnRhaW5zKHJlc3VsdCwgdmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIFByb2R1Y2UgYW4gYXJyYXkgdGhhdCBjb250YWlucyB0aGUgdW5pb246IGVhY2ggZGlzdGluY3QgZWxlbWVudCBmcm9tIGFsbCBvZlxuICAvLyB0aGUgcGFzc2VkLWluIGFycmF5cy5cbiAgdmFyIHVuaW9uID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihhcnJheXMpIHtcbiAgICByZXR1cm4gdW5pcShmbGF0dGVuJDEoYXJyYXlzLCB0cnVlLCB0cnVlKSk7XG4gIH0pO1xuXG4gIC8vIFByb2R1Y2UgYW4gYXJyYXkgdGhhdCBjb250YWlucyBldmVyeSBpdGVtIHNoYXJlZCBiZXR3ZWVuIGFsbCB0aGVcbiAgLy8gcGFzc2VkLWluIGFycmF5cy5cbiAgZnVuY3Rpb24gaW50ZXJzZWN0aW9uKGFycmF5KSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBhcmdzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2V0TGVuZ3RoKGFycmF5KTsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2Y
14733XIgaXRlbSA9IGFycmF5W2ldO1xuICAgICAgaWYgKGNvbnRhaW5zKHJlc3VsdCwgaXRlbSkpIGNvbnRpbnVlO1xuICAgICAgdmFyIGo7XG4gICAgICBmb3IgKGogPSAxOyBqIDwgYXJnc0xlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmICghY29udGFpbnMoYXJndW1lbnRzW2pdLCBpdGVtKSkgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoaiA9PT0gYXJnc0xlbmd0aCkgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBDb21wbGVtZW50IG9mIHppcC4gVW56aXAgYWNjZXB0cyBhbiBhcnJheSBvZiBhcnJheXMgYW5kIGdyb3Vwc1xuICAvLyBlYWNoIGFycmF5J3MgZWxlbWVudHMgb24gc2hhcmVkIGluZGljZXMuXG4gIGZ1bmN0aW9uIHVuemlwKGFycmF5KSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ICYmIG1heChhcnJheSwgZ2V0TGVuZ3RoKS5sZW5ndGggfHwgMDtcbiAgICB2YXIgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHJlc3VsdFtpbmRleF0gPSBwbHVjayhhcnJheSwgaW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gWmlwIHRvZ2V0aGVyIG11bHRpcGxlIGxpc3RzIGludG8gYSBzaW5nbGUgYXJyYXkgLS0gZWxlbWVudHMgdGhhdCBzaGFyZVxuICAvLyBhbiBpbmRleCBnbyB0b2dldGhlci5cbiAgdmFyIHppcCA9IHJlc3RBcmd1bWVudHModW56aXApO1xuXG4gIC8vIENvbnZlcnRzIGxpc3RzIGludG8gb2JqZWN0cy4gUGFzcyBlaXRoZXIgYSBzaW5nbGUgYXJyYXkgb2YgYFtrZXksIHZhbHVlXWBcbiAgLy8gcGFpcnMsIG9yIHR3byBwYXJhbGxlbCBhcnJheXMgb2YgdGhlIHNhbWUgbGVuZ3RoIC0tIG9uZSBvZiBrZXlzLCBhbmQgb25lIG9mXG4gIC8vIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcy4gUGFzc2luZyBieSBwYWlycyBpcyB0aGUgcmV2ZXJzZSBvZiBgXy5wYWlyc2AuXG4gIGZ1bmN0aW9uIG9iamVjdChsaXN0LCB2YWx1ZXMpIHtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGdldExlbmd0aChsaXN0KTsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodmFsdWVzKSB7XG4gICAgICAgIHJlc3VsdFtsaXN0W2ldXSA9IHZhbHVlc1tpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdFtsaXN0W2ldWzBdXSA9IGxpc3RbaV1bMV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBHZW5lcmF0ZSBhbiBpbnRlZ2VyIEFycmF5IGNvbnRhaW5pbmcgYW4gYXJpdGhtZXRpYyBwcm9ncmVzc2lvbi4gQSBwb3J0IG9mXG4gIC8vIHRoZSBuYXRpdmUgUHl0aG9uIGByYW5nZSgpYCBmdW5jdGlvbi4gU2VlXG4gIC8vIFt0aGUgUHl0aG9uIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkvZnVuY3Rpb25zLmh0bWwjcmFuZ2UpLlxuICBmdW5jdGlvbiByYW5nZShzdGFydCwgc3RvcCwgc3RlcCkge1xuICAgIGlmIChzdG9wID09IG51bGwpIHtcbiAgICAgIHN0b3AgPSBzdGFydCB8fCAwO1xuICAgICAgc3RhcnQgPSAwO1xuICAgIH1cbiAgICBpZiAoIXN0ZXApIHtcbiAgICAgIHN0ZXAgPSBzdG9wIDwgc3RhcnQgPyAtMSA6IDE7XG4gICAgfVxuXG4gICAgdmFyIGxlbmd0aCA9IE1hdGgubWF4KE1hdGguY2VpbCgoc3RvcCAtIHN0YXJ0KSAvIHN0ZXApLCAwKTtcbiAgICB2YXIgcmFuZ2UgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwgbGVuZ3RoOyBpZHgrKywgc3RhcnQgKz0gc3RlcCkge1xuICAgICAgcmFuZ2VbaWR4XSA9IHN0YXJ0O1xuICAgIH1cblxuICAgIHJldHVybiByYW5nZTtcbiAgfVxuXG4gIC8vIENodW5rIGEgc2luZ2xlIGFycmF5IGludG8gbXVsdGlwbGUgYXJyYXlzLCBlYWNoIGNvbnRhaW5pbmcgYGNvdW50YCBvciBmZXdlclxuICAvLyBpdGVtcy5cbiAgZnVuY3Rpb24gY2h1bmsoYXJyYXksIGNvdW50KSB7XG4gICAgaWYgKGNvdW50ID09IG51bGwgfHwgY291bnQgPCAxKSByZXR1cm4gW107XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBpID0gMCwgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7XG4gICAgICByZXN1bHQucHVzaChzbGljZS5jYWxsKGFycmF5LCBpLCBpICs9IGNvdW50KSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY29udGludWUgY2hhaW5pbmcgaW50ZXJtZWRpYXRlIHJlc3VsdHMuXG4gIGZ1bmN0aW9uIGNoYWluUmVzdWx0KGluc3RhbmNlLCBvYmopIHtcbiAgICByZXR1cm4gaW5zdGFuY2UuX2NoYWluID8gXyQxKG9iaikuY2hhaW4oKSA6IG9iajtcbiAgfVxuXG4gIC8vIEFkZCB5b3VyIG93biBjdXN0b20gZnVuY3Rpb25zIHRvIHRoZSBVbmRlcnNjb3JlIG9iamVjdC5cbiAgZnVuY3Rpb24gbWl4aW4ob2JqKSB7XG4gICAgZWFjaChmdW5jdGlvbnMob2JqKSwgZnVuY3Rpb24obmFtZSkge1xuICAgICAgdmFyIGZ1bmMgPSBfJDFbbmFtZV0gPSBvYmpbbmFtZV07XG4gICAgICBfJDEucHJvdG90eXBlW25hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gW3RoaXMuX3dyYXBwZWRdO1xuICAgICAgICBwdXNoLmFwcGx5KGFyZ3MsIGFyZ3VtZW50cyk7XG4gICAgICAgIHJldHVybiBjaGFpblJlc3VsdCh0aGlzLCBmdW5jLmFwcGx5KF8kMSwgYXJncykpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gXyQxO1xuICB9XG5cbiAgLy8gQWRkIGFsbCBtdXRhdG9yIGBBcnJheWAgZnVuY3Rpb25zIHRvIHRoZSB3cmFwcGVyLlxuICBlYWNoKFsncG9wJywgJ3B1c2gnLCAncmV2ZXJzZScsICdzaGlmdCcsICdzb3J0JywgJ3NwbGljZScsICd1bnNoaWZ0J10sIGZ1bmN0aW9uKG5hbWUpIHtcbiAgICB2YXIgbWV0aG9kID0gQXJyYXlQcm90b1tuYW1lXTtcbiAgICBfJDEucHJvdG90eXBlW25hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICB2Y
14733XIgb2JqID0gdGhpcy5fd3JhcHBlZDtcbiAgICAgIGlmIChvYmogIT0gbnVsbCkge1xuICAgICAgICBtZXRob2QuYXBwbHkob2JqLCBhcmd1bWVudHMpO1xuICAgICAgICBpZiAoKG5hbWUgPT09ICdzaGlmdCcgfHwgbmFtZSA9PT0gJ3NwbGljZScpICYmIG9iai5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBkZWxldGUgb2JqWzBdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gY2hhaW5SZXN1bHQodGhpcywgb2JqKTtcbiAgICB9O1xuICB9KTtcblxuICAvLyBBZGQgYWxsIGFjY2Vzc29yIGBBcnJheWAgZnVuY3Rpb25zIHRvIHRoZSB3cmFwcGVyLlxuICBlYWNoKFsnY29uY2F0JywgJ2pvaW4nLCAnc2xpY2UnXSwgZnVuY3Rpb24obmFtZSkge1xuICAgIHZhciBtZXRob2QgPSBBcnJheVByb3RvW25hbWVdO1xuICAgIF8kMS5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBvYmogPSB0aGlzLl93cmFwcGVkO1xuICAgICAgaWYgKG9iaiAhPSBudWxsKSBvYmogPSBtZXRob2QuYXBwbHkob2JqLCBhcmd1bWVudHMpO1xuICAgICAgcmV0dXJuIGNoYWluUmVzdWx0KHRoaXMsIG9iaik7XG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gTmFtZWQgRXhwb3J0c1xuXG4gIHZhciBhbGxFeHBvcnRzID0ge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBWRVJTSU9OOiBWRVJTSU9OLFxuICAgIHJlc3RBcmd1bWVudHM6IHJlc3RBcmd1bWVudHMsXG4gICAgaXNPYmplY3Q6IGlzT2JqZWN0LFxuICAgIGlzTnVsbDogaXNOdWxsLFxuICAgIGlzVW5kZWZpbmVkOiBpc1VuZGVmaW5lZCxcbiAgICBpc0Jvb2xlYW46IGlzQm9vbGVhbixcbiAgICBpc0VsZW1lbnQ6IGlzRWxlbWVudCxcbiAgICBpc1N0cmluZzogaXNTdHJpbmcsXG4gICAgaXNOdW1iZXI6IGlzTnVtYmVyLFxuICAgIGlzRGF0ZTogaXNEYXRlLFxuICAgIGlzUmVnRXhwOiBpc1JlZ0V4cCxcbiAgICBpc0Vycm9yOiBpc0Vycm9yLFxuICAgIGlzU3ltYm9sOiBpc1N5bWJvbCxcbiAgICBpc0FycmF5QnVmZmVyOiBpc0FycmF5QnVmZmVyLFxuICAgIGlzRGF0YVZpZXc6IGlzRGF0YVZpZXckMSxcbiAgICBpc0FycmF5OiBpc0FycmF5LFxuICAgIGlzRnVuY3Rpb246IGlzRnVuY3Rpb24kMSxcbiAgICBpc0FyZ3VtZW50czogaXNBcmd1bWVudHMkMSxcbiAgICBpc0Zpbml0ZTogaXNGaW5pdGUkMSxcbiAgICBpc05hTjogaXNOYU4kMSxcbiAgICBpc1R5cGVkQXJyYXk6IGlzVHlwZWRBcnJheSQxLFxuICAgIGlzRW1wdHk6IGlzRW1wdHksXG4gICAgaXNNYXRjaDogaXNNYXRjaCxcbiAgICBpc0VxdWFsOiBpc0VxdWFsLFxuICAgIGlzTWFwOiBpc01hcCxcbiAgICBpc1dlYWtNYXA6IGlzV2Vha01hcCxcbiAgICBpc1NldDogaXNTZXQsXG4gICAgaXNXZWFrU2V0OiBpc1dlYWtTZXQsXG4gICAga2V5czoga2V5cyxcbiAgICBhbGxLZXlzOiBhbGxLZXlzLFxuICAgIHZhbHVlczogdmFsdWVzLFxuICAgIHBhaXJzOiBwYWlycyxcbiAgICBpbnZlcnQ6IGludmVydCxcbiAgICBmdW5jdGlvbnM6IGZ1bmN0aW9ucyxcbiAgICBtZXRob2RzOiBmdW5jdGlvbnMsXG4gICAgZXh0ZW5kOiBleHRlbmQsXG4gICAgZXh0ZW5kT3duOiBleHRlbmRPd24sXG4gICAgYXNzaWduOiBleHRlbmRPd24sXG4gICAgZGVmYXVsdHM6IGRlZmF1bHRzLFxuICAgIGNyZWF0ZTogY3JlYXRlLFxuICAgIGNsb25lOiBjbG9uZSxcbiAgICB0YXA6IHRhcCxcbiAgICBnZXQ6IGdldCxcbiAgICBoYXM6IGhhcyxcbiAgICBtYXBPYmplY3Q6IG1hcE9iamVjdCxcbiAgICBpZGVudGl0eTogaWRlbnRpdHksXG4gICAgY29uc3RhbnQ6IGNvbnN0YW50LFxuICAgIG5vb3A6IG5vb3AsXG4gICAgdG9QYXRoOiB0b1BhdGgkMSxcbiAgICBwcm9wZXJ0eTogcHJvcGVydHksXG4gICAgcHJvcGVydHlPZjogcHJvcGVydHlPZixcbiAgICBtYXRjaGVyOiBtYXRjaGVyLFxuICAgIG1hdGNoZXM6IG1hdGNoZXIsXG4gICAgdGltZXM6IHRpbWVzLFxuICAgIHJhbmRvbTogcmFuZG9tLFxuICAgIG5vdzogbm93LFxuICAgIGVzY2FwZTogX2VzY2FwZSxcbiAgICB1bmVzY2FwZTogX3VuZXNjYXBlLFxuICAgIHRlbXBsYXRlU2V0dGluZ3M6IHRlbXBsYXRlU2V0dGluZ3MsXG4gICAgdGVtcGxhdGU6IHRlbXBsYXRlLFxuICAgIHJlc3VsdDogcmVzdWx0LFxuICAgIHVuaXF1ZUlkOiB1bmlxdWVJZCxcbiAgICBjaGFpbjogY2hhaW4sXG4gICAgaXRlcmF0ZWU6IGl0ZXJhdGVlLFxuICAgIHBhcnRpYWw6IHBhcnRpYWwsXG4gICAgYmluZDogYmluZCxcbiAgICBiaW5kQWxsOiBiaW5kQWxsLFxuICAgIG1lbW9pemU6IG1lbW9pemUsXG4gICAgZGVsYXk6IGRlbGF5LFxuICAgIGRlZmVyOiBkZWZlcixcbiAgICB0aHJvdHRsZTogdGhyb3R0bGUsXG4gICAgZGVib3VuY2U6IGRlYm91bmNlLFxuICAgIHdyYXA6IHdyYXAsXG4gICAgbmVnYXRlOiBuZWdhdGUsXG4gICAgY29tcG9zZTogY29tcG9zZSxcbiAgICBhZnRlcjogYWZ0ZXIsXG4gICAgYmVmb3JlOiBiZWZvcmUsXG4gICAgb25jZTogb25jZSxcbiAgICBmaW5kS2V5OiBmaW5kS2V5LFxuICAgIGZpbmRJbmRleDogZmluZEluZGV4LFxuICAgIGZpbmRMYXN0SW5kZXg6IGZpbmRMYXN0SW5kZXgsXG4gICAgc29ydGVkSW5kZXg6IHNvcnRlZEluZGV4LFxuICAgIGluZGV4T2Y6IGluZGV4T2YsXG4gICAgbGFzdEluZGV4T2Y6IGxhc3RJbmRleE9mLFxuICAgIGZpbmQ6IGZpbmQsXG4gICAgZGV0ZWN0OiBmaW5kLFxuICAgIGZpbmRXaGVyZTogZmluZFdoZXJlLFxuICAgIGVhY2g6IGVhY2gsXG4gICAgZm9yRWFjaDogZWFjaCxcbiAgICBtYXA6IG1hcCxcbiAgICBjb2xsZWN0OiBtYXAsXG4gICAgcmVkdWNlOiByZWR1Y2UsXG4gICAgZm9sZGw6IHJlZHVjZSxcbiAgICBpbmplY3Q6IHJlZHVjZSxcbiAgICByZWR1Y2VSaWdodDogcmVkdWNlUmlnaHQsXG4gICAgZm9sZHI6IHJlZHVjZVJpZ2h0LFxuICAgIGZpbHRlcjogZmlsdGVyLFxuICAgIHNlbGVjdDogZmlsdGVyLFxuICAgIHJlamVjdDogcmVqZWN0LFxuICAgIGV2ZXJ5OiBldmVyeSxcbiAgICBhbGw6IGV2ZXJ5LFxuICAgIHNvbWU6IHNvbWUsXG4gICAgYW55OiBzb21lLFxuICAgIGNvbnRhaW5zOiBjb250YWlucyxcbiAgICBpbmNsdWRlczogY29udGFpbnMsXG4gICAgaW5jbHVkZTogY29udGFpbnMsXG4gICAgaW52b2tlOiBpbnZva2UsXG4gICAgcGx1Y2s6IHBsdWNrLFxuICAgIHdoZXJlOiB3aGVyZSxcbiAgICBtYXg6IG1heCxcbiAgICBtaW46IG1pbixcbiAgICBzaHVmZmxlOiBzaHVmZmxlLFxuICAgIHNhbXBsZTogc2FtcGxlLFxuICAgIHNvcnRCeTogc29ydEJ5LFxuICAgIGdyb3VwQnk6IGdyb3VwQnksXG4gICAgaW5kZXhCeTogaW5kZXhCeSxcbiAgICBjb3VudEJ5OiBjb3VudEJ5LFxuICAgIHBhcnRpdGlvbjogcGFydGl0aW9uLFxuICAgIHRvQXJyYXk6IHRvQXJyYXksXG4gICAgc2l6ZTogc2l6ZSxcbiAgICBwaWNrOiBwaWNrLFxuICAgIG9taXQ6IG9taXQsXG4gICAgZmlyc3Q6IGZpcnN0LFxuICAgIGhlYWQ6IGZpcnN0LFxuICAgIHRha2U6IGZpcnN0LFxuICAgIGluaXRpYWw6IGluaXRpYWwsXG4gICAgbGFzdDogbGFzdCxcbiAgICByZXN0OiByZXN0LFxuICAgIHRhaWw6IHJlc3QsXG4gICAgZHJvcDogcmVzdCxcbiAgICBjb21wYWN0OiBjb21wYWN0LFxuICAgIGZsYXR0ZW46IGZsYXR0ZW4sXG4gICAgd2l0aG91dDogd2l0aG91dCxcbiAgICB1bmlxOiB1bmlxLFxuICAgIHVuaXF1ZTogdW5pcSxcbiAgICB1bmlvbjogdW5pb24sXG4gICAgaW50ZXJzZWN0aW9uOiBpbnRlcnNlY3Rpb24sXG4gICAgZGlmZmVyZW5jZTogZGlmZmVyZW5jZSxcbiAgICB1bnppcDogdW56aXAsXG4gICAgdHJhbnNwb3NlOiB1bnppcCxcbiAgICB6aXA6IHppcCxcbiAgICBvYmplY3Q6IG9iamVjdCxcbiAgICByYW5nZTogcmFuZ2UsXG4gICAgY2h1bms6IGNodW5rLFxuICAgIG1peGluOiBtaXhpbixcbiAgICAnZGVmYXVsdCc6IF8kMVxuICB9O1xuXG4gIC8vIERlZmF1bHQgRXhwb3J0XG5cbiAgLy8gQWRkIGFsbCBvZiB0aGUgVW5kZXJzY29yZSBmdW5jdGlvbnMgdG8gdGhlIHdyYXBwZXIgb2JqZWN0LlxuICB2YXIgXyA9IG1peGluKGFsbEV4cG9ydHMpO1xuICAvLyBMZWdhY3kgTm9kZS5qcyBBUEkuXG4gIF8uXyA9IF87XG5cbiAgcmV0dXJuIF87XG5cbn0pKSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD11bmRlcnNjb3JlLXVtZC5qcy5tYXBcbiJdfQ==
14734},{}],5:[function(require,module,exports){
14735var $ = require('jquery');
14736var breakpoint = require("./app-breakpoints");
14737
14738$(function(){
14739    $('.accordion').find('.accordion-toggle').click(function(){
14740        if(!$(this).hasClass('accordion-toggle--open')) {
14741            $('.accordion').find('.accordion-toggle--open').removeClass("accordion-toggle--open").next().slideToggle('fast');
14742
14743            $(this).toggleClass("accordion-toggle--open").next().slideToggle('fast', function(){
14744                if(breakpoint() != "smartphone") {
14745	                $('html, body').animate({
14746	                   scrollTop: $(this).offset().top - ( ($('.c-navigation').outerHeight(true) * 2) + ($(this).prev().outerHeight(true) * 2))
14747	               }, 500);
14748         		}
14749            });
14750        } else {
14751            $(this).toggleClass("accordion-toggle--open").next().slideToggle('fast');
14752        }
14753
14754    });
14755});
14756
14757/*
14758var breakpoint = require("./app-breakpoints");
14759
14760jQuery( document ).ready(function( $ ) {
14761    $('.accordion').find('.accordion-toggle').click(function(){
14762
14763        if(!$(this).hasClass('accordion-toggle--open')) {
14764            $('.accordion').find('.accordion-toggle--open').removeClass("accordion-toggle--open").next().slideToggle('fast');
14765
14766            $(this).toggleClass("accordion-toggle--open").next().slideToggle('fast', function(){
14767                if(breakpoint() != "smartphone") {
14768	                $('html, body').animate({
14769	                   scrollTop: $(this).offset().top - ( ($('.navigation').outerHeight(true) * 2) + ($(this).prev().outerHeight(true) * 2))
14770	               }, 500);
14771         		}
14772            });
14773        } else {
14774            $(this).toggleClass("accordion-toggle--open").next().slideToggle('fast');
14775        }
14776
14777    });
14778});
14779
14780 */
14781},{"./app-breakpoints":6,"jquery":2}],6:[function(require,module,exports){
14782module.exports = function(selector) {
14783    return window.getComputedStyle(document.querySelector('body'), ':before').getPropertyValue('content');
14784};
14785
14786},{}],7:[function(require,module,exports){
14787var styles = [
14788    {
14789        "featureType": "administrative",
14790        "elementType": "labels.text.fill",
14791        "stylers": [
14792            {
14793                "color": "#444444"
14794            }
14795        ]
14796    },
14797    {
14798        "featureType": "landscape",
14799        "elementType": "all",
14800        "stylers": [
14801            {
14802                "color": "#f2f2f2"
14803            }
14804        ]
14805    },
14806    {
14807        "featureType": "poi",
14808        "elementType": "all",
14809        "stylers": [
14810            {
14811                "visibility": "off"
14812            }
14813        ]
14814    },
14815    {
14816        "featureType": "road",
14817        "elementType": "all",
14818        "stylers": [
14819            {
14820                "saturation": -100
14821            },
14822            {
14823                "lightness": 45
14824            }
14825        ]
14826    },
14827    {
14828        "featureType": "road.highway",
14829        "elementType": "all",
14830        "stylers": [
14831            {
14832                "visibility": "simplified"
14833            }
14834        ]
14835    },
14836    {
14837        "featureType": "road.arterial",
14838        "elementType": "labels.icon",
14839        "stylers": [
14840            {
14841                "visibility": "off"
14842            }
14843        ]
14844    },
14845    {
14846        "featureType": "transit",
14847        "elementType": "all",
14848        "stylers": [
14849            {
14850                "visibility": "off"
14851            }
14852        ]
14853    },
14854    {
14855        "featureType": "water",
14856        "elementType": "all",
14857        "stylers": [
14858            {
14859                "color": "#46bcec"
14860            },
14861            {
14862                "visibility": "on"
14863            }
14864        ]
14865    }
14866]
14867;
14868
14869window.initialize = function() {
14870	var pin = [];
14871	var infowindow =  new google.maps.InfoWindow({
14872        content: ""
14873    });
14874	var bounds = new google.maps.LatLngBounds();
14875	var zoom = 8;
14876
14877	var styledMap = new google.maps.StyledMapType(styles, {name: "custom-map"});
14878
14879
14880	var options = {
14881        zoom      : zoom,
14882       // center    : latLng,
14883        scrollwheel: false,
14884        mapTypeId : google.maps.MapTypeId.TERRAIN, // Type de carte, différentes valeurs possible HYBRID, ROADMAP, SATELLITE, TERRAIN
14885        maxZoom   : 20,
14886        mapTypeControlOptions: {
14887            mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'map_style']
14888        },
14889        zoomControl: true
14890    };
14891
14892	if($('.pin').length) {
14893    	$('.pin').each(function(){
14894			var data = {
14895	        	"lat": $(this).attr("data-lat"),
14896	        	"lng": $(this).attr("data-_lng"),
14897	        	"pin": $(this).attr("data-pin")
14898    		};
14899
14900    		pin.push(data);
14901    	});
14902    }
14903
14904    if(pin.length) {
14905    	var lat = pin[0]['lat'];
14906    	var latLng = new google.maps.LatLng(pin[0]['lat'], pin[0]['lng']);
14907    	var marker_pin = pin[0]['pin'];
14908		options.center = latLng;
14909	}
14910
14911	map = new google.maps.Map(document.getElementById('google'), options);
14912	map.mapTypes.set('map_style', styledMap);
14913	map.setMapTypeId('map_style');
14914
14915	if(pin.length) {
14916		for (var i = 0; i < pin.length; i++) {
14917			var marker = new google.maps.Marker({
14918				map: map,
14919				position: new google.maps.LatLng(pin[i]['lat'], pin[i]['lng']),
14920				icon: new google.maps.MarkerImage(pin[i]['pin'])
14921			});
14922		}
14923	}
14924}
14925
14926function loadScript() {
14927  var script = document.createElement('script');
14928  script.type = 'text/javascript';
14929  script.src = 'https://maps.googleapis.com/maps/api/js?v=3.exp' +
14930      '&callback=initialize&key=AIzaSyD8QupjQlwa8RvnBHFITw436BvRgBgdbN4';
14931  document.body.appendChild(script);
14932}
14933
14934if (document.getElementById("google")) {
14935    window.onload = loadScript;
14936}
14937},{}]},{},[1])
14938//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvamF2YXNjcmlwdHMvY29tbW9uLmpzIiwiYm93ZXJfY29tcG9uZW50cy9qcXVlcnkvZGlzdC9qcXVlcnkuanMiLCJib3dlcl9jb21wb25lbnRzL3NsaWNrLWNhcm91c2VsL3NsaWNrL3NsaWNrLmpzIiwibm9kZV9tb2R1bGVzL3VuZGVyc2NvcmUvdW5kZXJzY29yZS11bWQuanMiLCJzcmMvamF2YXNjcmlwdHMvYXBwLWFjY29yZGlvbi5qcyIsInNyYy9qYXZhc2NyaXB0cy9hcHAtYnJlYWtwb2ludHMuanMiLCJzcmMvamF2YXNjcmlwdHMvYXBwLW1hcC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbmNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD
14938QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB
14938QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB
14938O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB
14938Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsZ1NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB
14938Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuOEZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB
14938Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3L0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdDQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfS
14938xsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwidmFyICQgPSByZXF1aXJlKFwianF1ZXJ5XCIpO1xyXG52YXIgYnJlYWtwb2ludCA9IHJlcXVpcmUoJy4vYXBwLWJyZWFrcG9pbnRzJyk7XHJcbnJlcXVpcmUoJy4vYXBwLWFjY29yZGlvbicpO1xyXG52YXIgc2xpY2sgPSByZXF1aXJlKFwic2xpY2tcIik7XHJcbnZhciBfID0gcmVxdWlyZSgndW5kZXJzY29yZScpO1xyXG52YXIgX2dyaWRTaXplID0gYnJlYWtwb2ludCgpLm1hdGNoKC8oXFxkKykvZyk7XHJcbnZhciBfd2luU2l6ZSA9ICQod2luZG93KS53aWR0aCgpO1xyXG52YXJcdF9ncmlkTGFiZWwgPSBicmVha3BvaW50KCkucmVwbGFjZSgvXFxkKy9nLCAnJykucmVwbGFjZShcIiBcIiwgXCJcIikucmVwbGFjZSgvXFxcIi9nLCBcIlwiKTtcclxuXHJcbnZhciBzdGlja3kgPSAkKCcuYy1uYXZpZ2F0aW9uJykub2Zmc2V0KCkudG9wO1xyXG5cclxucmVxdWlyZSgnLi9hcHAtbWFwJyk7XHJcblxyXG4kKGZ1bmN0aW9uKCkge1xyXG5cdCQoJy5jYXJvdXNlbCcpLnNsaWNrKHtcclxuXHRcdGF1dG9wbGF5OiB0cnVlLFxyXG5cdFx0cmVzcG9uc2l2ZTogZmFsc2UsXHJcblx0XHRmYWRlOiB0cnVlLFxyXG5cdFx0ZG90czogZmFsc2UsXHJcblx0XHRhdXRvcGxheVNwZWVkOiA4NTAwLFxyXG5cdFx0YXJyb3dzOiBmYWxzZVxyXG5cdH0pO1xyXG5cclxuXHQkKCcuY2Fyb3VzZWwtZWxlbWVudCcpLnNsaWNrKHtcclxuXHRcdGF1dG9wbGF5OiB0cnVlLFxyXG5cdFx0cmVzcG9uc2l2ZTogW1xyXG5cdFx0e1xyXG5cdFx0IGJyZWFrcG9pbnQ6IDc2NyxcclxuXHQgICAgICBzZXR0aW5nczoge1xyXG5cdCAgICAgICAgc2xpZGVzVG9TaG93OiAxLFxyXG5cdCAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDFcclxuXHQgICAgICB9XHJcblx0XHR9XSxcclxuXHRcdC8vZmFkZTogdHJ1ZSxcclxuXHRcdGRvdHM6IHRydWUsXHJcblx0XHRzbGlkZXNUb1Nob3c6IDIsXHJcbiBcdFx0c2xpZGVzVG9TY3JvbGw6IDIsXHJcblx0XHRhcnJvd3M6IGZhbHNlXHJcblx0fSk7XHJcblxyXG5cclxuXHQkKFwiLnBvc3QgLml0ZW0gLml0ZW0tbWVkaWFcIikuY2xpY2soZnVuY3Rpb24oKSB7XHJcblx0XHRpZiggJCh0aGlzKS5maW5kKFwiYVwiKS5hdHRyKFwiaHJlZlwiKSApIHtcclxuXHQgXHRcdCB3aW5kb3cubG9jYXRpb24gPSAkKHRoaXMpLmZpbmQoXCJhXCIpLmF0dHIoXCJocmVmXCIpO1xyXG5cdFx0fVxyXG5cdCAgcmV0dXJuIGZhbHNlO1xyXG5cdH0pO1xyXG5cclxuXHQkKHdpbmRvdykuc2Nyb2xsKGZ1bmN0aW9uKCkge1xyXG5cdFx0Y29uc29sZS5sb2coX2dyaWRMYWJlbCk7XHJcblxyXG5cdFx0aWYoX2dyaWRMYWJlbCAhPSBcInNtYXJ0cGhvbmVcIikge1xyXG5cdFx0XHRpZiAoJCh0aGlzKS5zY3JvbGxUb3AoKSA+IHN0aWNreSl7XHJcblx0XHQgICBcdCAkKCcuYy1uYXZpZ2F0aW9uJykuYWRkQ2xhc3MoXCJzdGlja3lcIik7XHJcblx0XHRcdCAgfSBlbHNlIHtcclxuXHRcdFx0ICAgICQoJy5jLW5hdmlnYXRpb24nKS5yZW1vdmVDbGFzcyhcInN0aWNreVwiKTtcclxuXHRcdFx0ICB9XHJcblx0XHR9XHJcblx0fSk7XHJcblxyXG5cdCQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcubmF2LXRyaWdnZXInLCBmdW5jdGlvbihlKSB7XHJcblx0XHQkKHRoaXMpLnRvZ2dsZUNsYXNzKCdpcy1hY3RpdmUnKTtcclxuXHRcdCQoJyNtZW51LW1vYmlsZScpLnNsaWRlVG9nZ2xlKCk7XHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fSk7XHJcblxyXG5cdCQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgXCIubmV3LXdpbmRvd1wiLCBmdW5jdGlvbiAoKSB7XHJcblxyXG5cdFx0dmFyIHcgPSA1MDA7XHJcblx0XHR2YXIgaCA9IDUwMDtcclxuXHJcblx0XHR2YXIgZHVhbFNjcmVlbkxlZnQgPSB3aW5kb3cuc2NyZWVuTGVmdCAhPSB1bmRlZmluZWQgPyB3aW5kb3cuc2NyZWVuTGVmdCA6IHNjcmVlbi5sZWZ0O1xyXG5cdFx0dmFyIGR1YWxTY3JlZW5Ub3AgPSB3aW5kb3cuc2NyZWVuVG9wICE9IHVuZGVmaW5lZCA/IHdpbmRvdy5zY3JlZW5Ub3AgOiBzY3JlZW4udG9wO1xyXG5cclxuXHRcdHZhciB3aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoID8gd2luZG93LmlubmVyV2lkdGggOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggOiBzY3JlZW4ud2lkdGg7XHJcbiAgIFx0XHR2YXIgaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0ID8gd2luZG93LmlubmVySGVpZ2h0IDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCA/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgOiBzY3JlZW4uaGVpZ2h0O1xyXG5cclxuICAgXHRcdHZhciB0aXRsZSA9ICQodGhpcykuYXR0cignZGF0YS10aXRsZScpO1xyXG4gICBcdFx0dmFyIHVybCA9ICQodGhpcykuYXR0cignaHJlZicpO1xyXG5cclxuXHRcdHZhciBsZWZ0ID0gKCh3aWR0aCAvIDIpIC0gKHcgLyAyKSkgKyBkdWFsU2NyZWVuTGVmdDtcclxuXHRcdHZhciB0b3AgPSAoKGhlaWdodCAvIDIpIC0gKGggLyAyKSkgKyBkdWFsU2NyZWVuVG9wO1xyXG5cdFx0dmFyIG5ld1dpbmRvdyA9IHdpbmRvdy5vcGVuKHVybCwgdGl0bGUsICdzY3JvbGxiYXJzPXllcywgd2lkdGg9JyArIHcgKyAnLCBoZWlnaHQ9JyArIGggKyA
14938nLCB0b3A9JyArIHRvcCArICcsIGxlZnQ9JyArIGxlZnQpO1xyXG5cclxuXHRcdGlmICh3aW5kb3cuZm9jdXMpIHtcclxuXHQgICAgICAgbmV3V2luZG93LmZvY3VzKCk7XHJcblx0ICAgIH1cclxuXHJcbiAgIFx0XHRyZXR1cm4gZmFsc2U7XHJcbiAgICB9KTtcclxuXHJcbiAgICAkKHdpbmRvdykucmVzaXplKGZ1bmN0aW9uKCl7XHJcblx0XHRfZ3JpZFNpemUgPSBicmVha3BvaW50KCkubWF0Y2goLyhcXGQrKS9nKTtcclxuXHRcdF93aW5TaXplID0gJCh3aW5kb3cpLndpZHRoKCk7XHJcblx0XHRfbWFyZ2luID0gKF93aW5TaXplIC0gX2dyaWRTaXplKSAvIDI7XHJcblxyXG5cdFx0X2dyaWRMYWJlbCA9IGJyZWFrcG9pbnQoKS5yZXBsYWNlKC9cXGQrL2csICcnKS5yZXBsYWNlKCcgJywnJyk7XHJcblxyXG5cdFx0aWYoX2dyaWRMYWJlbCA9PSBcInNtYXJ0cGhvbmVcIikge1xyXG5cdFx0XHQkKCcuYy1uYXZpZ2F0aW9uJykucmVtb3ZlQ2xhc3MoXCJzdGlja3lcIik7XHJcblx0XHR9XHJcblxyXG5cdH0pLnJlc2l6ZSgpO1xyXG5cclxuXHJcblx0XHJcblx0JChcIi5jLWFsaW1lbnRhaXJlIC5saXN0IGFcIikuY2xpY2soZnVuY3Rpb24gKCkge1xyXG5cdFx0JChcIi5jLWFsaW1lbnRhaXJlIC5saXN0IGxpXCIpLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpLFxyXG5cdFx0JCh0aGlzKS5wYXJlbnQoKS5hZGRDbGFzcyhcImFjdGl2ZVwiKSxcclxuXHRcdCQoXCIuYy1hbGltZW50YWlyZSAuY29udGVudEJveFwiKS5oaWRlKCksXHJcblx0XHQkKFwiLmMtYWxpbWVudGFpcmUgLmNvbnRlbnRCb3hbZGF0YS1pZD1cIiArICQodGhpcykuYXR0cihcImRhdGEtaWRcIikgKyBcIl1cIikuZmFkZUluKCk7XHJcblx0fSk7XHJcblx0JChcIi5jLWFsaW1lbnRhaXJlIC5saXN0IGxpOmVxKDApIGFcIikudHJpZ2dlcihcImNsaWNrXCIpO1xyXG5cdCQoXCIuY2Fyb3VzZWxcIikuc2xpY2soeyBhdXRvcGxheTogITAsIHJlc3BvbnNpdmU6ICExLCBmYWRlOiAhMCwgZG90czogITEsIGF1dG9wbGF5U3BlZWQ6IDg1MDAsIGFycm93czogITEgfSk7XHJcblx0JChcIi5jYXJvdXNlbC1lbGVtZW50XCIpLnNsaWNrKHsgYXV0b3BsYXk6ICEwLCByZXNwb25zaXZlOiBbeyBicmVha3BvaW50OiA3NjcsIHNldHRpbmdzOiB7IHNsaWRlc1RvU2hvdzogMSwgc2xpZGVzVG9TY3JvbGw6IDEgfSB9XSwgZG90czogITAsIHNsaWRlc1RvU2hvdzogMiwgc2xpZGVzVG9TY3JvbGw6IDIsIGFycm93czogITEgfSk7XHJcblx0JChcIi5wb3N0IC5pdGVtIC5pdGVtLW1lZGlhXCIpLmNsaWNrKGZ1bmN0aW9uICgpIHtcclxuXHRcdHJldHVybiAkKHRoaXMpLmZpbmQoXCJhXCIpLmF0dHIoXCJocmVmXCIpICYmICh3aW5kb3cubG9jYXRpb24gPSAkKHRoaXMpLmZpbmQoXCJhXCIpLmF0dHIoXCJocmVmXCIpKSwgITE7XHJcblx0fSk7XHJcblx0JCh3aW5kb3cpLnNjcm9sbChmdW5jdGlvbiAoKSB7XHJcblx0XHRcInNtYXJ0cGhvbmVcIiAhPSBhICYmICgkKHRoaXMpLnNjcm9sbFRvcCgpID4gbCA/ICQoXCIuYy1uYXZpZ2F0aW9uXCIpLmFkZENsYXNzKFwic3RpY2t5XCIpIDogJChcIi5jLW5hdmlnYXRpb25cIikucmVtb3ZlQ2xhc3MoXCJzdGlja3lcIikpO1xyXG5cdH0pO1xyXG5cdCQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgXCIubmF2LXRyaWdnZXJcIiwgZnVuY3Rpb24gKGUpIHtcclxuXHRcdHJldHVybiAkKHRoaXMpLnRvZ2dsZUNsYXNzKFwiaXMtYWN0aXZlXCIpLCAkKFwiI21lbnUtbW9iaWxlXCIpLnNsaWRlVG9nZ2xlKCksICExO1xyXG5cdH0pO1xyXG5cdCQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgXCIubmV3LXdpbmRvd1wiLCBmdW5jdGlvbiAoKSB7XHJcblx0XHR2YXIgZSA9IDUwMCxcclxuXHRcdFx0dCA9IDUwMCxcclxuXHRcdFx0biA9IHZvaWQgMCAhPSB3aW5kb3cuc2NyZWVuTGVmdCA/IHdpbmRvdy5zY3JlZW5MZWZ0IDogc2NyZWVuLmxlZnQsXHJcblx0XHRcdG8gPSB2b2lkIDAgIT0gd2luZG93LnNjcmVlblRvcCA/IHdpbmRvdy5zY3JlZW5Ub3AgOiBzY3JlZW4udG9wLFxyXG5cdFx0XHRyID0gd2luZG93LmlubmVyV2lkdGggPyB3aW5kb3cuaW5uZXJXaWR0aCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCA/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCA6IHNjcmVlbi53aWR0aCxcclxuXHRcdFx0cyA9IHdpbmRvdy5pbm5lckhlaWdodCA/IHdpbmRvdy5pbm5lckhlaWdodCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IDogc2NyZWVuLmhlaWdodCxcclxuXHRcdFx0YSA9ICQodGhpcykuYXR0cihcImRhdGEtdGl0bGVcIiksXHJcblx0XHRcdGwgPSAkKHRoaXMpLmF0dHIoXCJocmVmXCIpLFxyXG5cdFx0XHRjID0gciAvIDIgLSBlIC8gMiArIG4sXHJcblx0XHRcdHUgPSBzIC8gMiAtIHQgLyAyICsgbyxcclxuXHRcdFx0ZCA9IHdpbmRvdy5vcGVuKGwsIGEsIFwic2Nyb2xsYmFycz15ZXMsIHdpZHRoPVwiICsgZSArIFwiLCBoZWlnaHQ9XCIgKyB0ICsgXCIsIHRvcD1cIiArIHUgKyBcIiwgbGVmdD1cIiArIGMpO1xyXG5cdFx0cmV0dXJuIHdpbmRvdy5mb2N1cyAmJiBkLmZvY3VzKCksICExO1xyXG5cdH0pO1xyXG5cdCQod2luZG93KS5yZXNpemUoZnVuY3Rpb24gKCkge1xyXG5cdFx0XHQociA9IG8oKS5tYXRjaCgvKFxcZCspL2cpKSwgKHMgPSBpKHdpbmRvdykud2lkdGgoKSksIChfbWFyZ2luID0gKHMgLSByKSAvID
14938IpLCAoYSA9IG8oKS5yZXBsYWNlKC9cXGQrL2csIFwiXCIpLnJlcGxhY2UoXCIgXCIsIFwiXCIpKSwgXCJzbWFydHBob25lXCIgPT0gYSAmJiBpKFwiLmMtbmF2aWdhdGlvblwiKS5yZW1vdmVDbGFzcyhcInN0aWNreVwiKTtcclxuXHR9KS5yZXNpemUoKTtcclxuXHRcdFxyXG5cdC8qXHJcblx0ZnVuY3Rpb24gUG9wdXBDZW50ZXIodXJsLCB0aXRsZSwgdywgaCkge1xyXG4gICAgLy8gRml4ZXMgZHVhbC1zY3JlZW4gcG9zaXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgTW9zdCBicm93c2VycyAgICAgIEZpcmVmb3hcclxuXHJcbiAgICAvLyBQdXRzIGZvY3VzIG9uIHRoZSBuZXdXaW5kb3dcclxuICAgIGlmICh3aW5kb3cuZm9jdXMpIHtcclxuICAgICAgICBuZXdXaW5kb3cuZm9jdXMoKTtcclxuICAgIH1cclxufVxyXG5cdCAqL1xyXG59KTtcclxuXHJcbi8qdmFyICQgPSByZXF1aXJlKFwianF1ZXJ5XCIpO1xyXG52YXIgc3RpY2tfaW5fcGFyZW50ID0gcmVxdWlyZShcInN0aWNreS1raXRcIik7XHJcbnZhciBzbGljayA9IHJlcXVpcmUoXCJzbGlja1wiKTtcclxudmFyIGJyZWFrcG9pbnQgPSByZXF1aXJlKCcuL2FwcC1icmVha3BvaW50cycpO1xyXG52YXIgc2FtZWhlaWdodCA9IHJlcXVpcmUoJy4vYXBwLXNhbWVoZWlnaHQnKTtcclxudmFyIFR3ZWVuTWF4ID0gcmVxdWlyZSgnVHdlZW5NYXgnKTtcclxudmFyIF8gPSByZXF1aXJlKCd1bmRlcnNjb3JlJyk7XHJcblxyXG52YXIgX2dyaWRTaXplID0gYnJlYWtwb2ludCgpLm1hdGNoKC8oXFxkKykvZyk7XHJcbnZhciBfd2luU2l6ZSA9ICQod2luZG93KS53aWR0aCgpO1xyXG52YXIgY3VycmVudCA9IDA7XHJcbnZhciBuZXh0ID0gMDtcclxudmFyIHByZXYgPSAwO1xyXG52YXJcdF9ncmlkTGFiZWwgPSBicmVha3BvaW50KCkucmVwbGFjZSgvXFxkKy9nLCAnJykucmVwbGFjZShcIiBcIiwgXCJcIikucmVwbGFjZSgvXFxcIi9nLCBcIlwiKTtcclxudmFyIGRlYm91bmNlZExheW91dCA9IF8uZGVib3VuY2UoX3Jlc2l6ZSwgMzAwKTtcclxuXHJcbnZhciBzbGlja1ZhciA9IHtcclxuXHRjZW50ZXJNb2RlOiB0cnVlLFxyXG5cdGF1dG9wbGF5OiAoKF9ncmlkU2l6ZSA+IDc2OCkgPyB0cnVlIDogZmFsc2UpLFxyXG5cdHZhcmlhYmxlV2lkdGg6IHRydWUsXHJcblx0c2xpZGVzVG9TaG93OiAoKF9ncmlkU2l6ZSA+IDc2OCkgPyAzIDogMSksXHJcblx0aW5maW5pdGU6IGZhbHNlLFxyXG5cdGluaXRpYWxTbGlkZTogMSxcclxuXHRjZW50ZXJQYWRkaW5nOiAnMCcsXHJcblx0ZHJhZ2dhYmxlOiBmYWxzZVxyXG59O1xyXG5cclxuJChmdW5jdGlvbigpIHtcclxuXHRfZ3JpZFNpemUgPSBicmVha3BvaW50KCkubWF0Y2goLyhcXGQrKS9nKTtcclxuXHRfd2luU2l6ZSA9ICQod2luZG93KS53aWR0aCgpO1xyXG5cdHZhciBfbWFyZ2luID0gKF93aW5TaXplIC0gX2dyaWRTaXplKSAvIDI7XHJcblx0X2dyaWRMYWJlbCA9IGJyZWFrcG9pbnQoKS5yZXBsYWNlKC9cXGQrL2csICcnKS5yZXBsYWNlKFwiIFwiLCBcIlwiKS5yZXBsYWNlKC9cXFwiL2csIFwiXCIpO1xyXG5cclxuXHQkKCcuZmItc2hhcmUnKS5jbGljayhmdW5jdGlvbihlKSB7XHJcblx0XHRlLnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHR3aW5kb3cub3BlbigkKHRoaXMpLmF0dHIoJ2hyZWYnKSwgJ2ZiU2hhcmVXaW5kb3cnLFxyXG5cdFx0XHQnaGVpZ2h0PTQ1MCwgd2lkdGg9NTUwLCB0b3A9JyArICgkKHdpbmRvdykuaGVpZ2h0KCkgLyAyIC0gMjc1KSArXHJcblx0XHRcdCcsIGxlZnQ9JyArICgkKHdpbmRvdykud2lkdGgoKSAvIDIgLSAyMjUpICtcclxuXHRcdFx0JywgdG9vbGJhcj0wLCBsb2NhdGlvbj0wLCBtZW51YmFyPTAsIGRpcmVjdG9yaWVzPTAsIHNjcm9sbGJhcnM9MCcpO1xyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH0pO1xyXG5cclxuY29uc29sZS5sb2coX2dyaWRMYWJlbCk7XHJcblxyXG5cdGlmIChfZ3JpZExhYmVsICE9PSBcInNtYXJ0cGhvbmVcIiAmJiBfZ3JpZExhYmVsICE9PSBcInRhYmxldFwiICkge1xyXG5cdFx0JChcIiNzdGljay1pbi1wYXJlbnRcIikuc3RpY2tfaW5fcGFyZW50KHtcclxuXHRcdFx0cGFyZW50OiAnLnNvdXJjZS1fcHJvZHVjdF9jYXQnLFxyXG5cdFx0XHRzdGlja3lfY2xhc3M6ICdpcy1zdHVjaycsXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdCQod2luZG93KS5yZXNpemUoZGVib3VuY2VkTGF5b3V0KTtcclxuXHRfcmVzaXplKCk7XHJcblxyXG5cdCQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcubmF2LXRyaWdnZXInLCBmdW5jdGlvbihlKSB7XHJcblxyXG5cdFx0JCh0aGlzKS50b2dnbGVDbGFzcygnaXMtYWN0aXZlJyk7XHJcblx0XHQkKCcjbWVudS1tb2JpbGUnKS5zbGlkZVRvZ2dsZSgpO1xyXG5cclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHR9KTtcclxuXHJcblx0JChkb2N1bWVudCkub24oJ21vdXNlZW50ZXInLCAnLm1lbnUtaXRlbScsIGZ1bmN0aW9uKCkge1xyXG5cdFx0aWYgKF9ncmlkU2l6ZSA+IDc2OCkge1xyXG5cdFx0XHR2YXIgaGVpZ2h0ID0gJCgnLnN1Yi1tZW51IHVsJywgdGhpcykub3V0ZXJIZWlnaHQodHJ1ZSk7XHJcblxyXG5cdFx0XHRpZiAoaGVpZ2h0KSB7XHJcblx0XHRcdFx0VHdlZW5NYXguc2V0KFsnLm1lbnUtZGVwdGgtMScsICcubWVudS1kZXB0aC0yJ10sIHtcclxuXHRcdFx0XHRcdGhlaWdodDogaGVpZ2h0XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9KTtcclxuXHJcblx0JChkb2N1bWVudCkub24oJ21vdXNlZW50ZXInLCAnLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4nLCBmdW5jdGlvbigpIHtcclxuXHRcdGlmIChfZ3JpZFNpemUgPiA3NjgpIHtcclxuXHRcdFx0dmFyIHBhZGRpbmcgPSAkKHRoaXMpLm9mZnNldCgpLmxlZnQ7XHJcblx0XHRcdHZhciBncmlkID0gJCgnI21lbnUtbWVudS1wcmltYWlyZScpLm91dGVyV2lkdGgoKTtcclxuXHJcblx0XHRcdCQodGhpcykuY2hpbGRyZW4oJ2Rpdi5tZW51LWRlcHRoLTEnKS5jc3Moe1xyXG5cdFx0XHRcdHBhZGRpbmdMZWZ0OiBwYWRkaW5nXHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0JCgnLm1lbnUtaXRlbS1kZXB0aC0xJykuY3NzKHtcclxuXHRcdFx0XHR3aWR0aDogZ3JpZCAqIDAuM1xyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRcdCQoJy5tZW51LWRlcHRoLTInKS5jc3Moe1xyXG5cdFx0XHRcdGxlZnQ6IGdyaWQgKiAwLjNcclxuXHRcdFx0fSkuY2hpbGRyZW4oJ3VsJykuY3NzKHtcclxuXHRcdFx0XHR3aWR0aDogZ3JpZCAqIDAuN1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9KTtcclxuXHJcblxyXG5cdCQoJy5zbGlkZXInKS5zbGljayh7XHJcblx0XHRhdXRvcGxheTogdHJ1ZSxcclxuXHRcdGZhZGU6IHRydWUsXHJcblx0XHRkb3RzOiB0cnVlLFxyXG5cdFx0YXJyb3dzOiBmYWxzZVxyXG5cdH0pO1xyXG5cclxuXHQkKCcucHJvZHVjdC1mb3JtYXRzLXNsaWRlcicpLnNsaWNrKHtcclxuXHRcdHNsaWRlc1RvU2hvdzogMSxcclxuXHRcdHNsaWRlc1RvU2Nyb2xsOiAxLFxyXG5cdFx0ZmFkZTogdHJ1ZSxcclxuXHRcdGNlbnRlck1vZGU6IHRydWUsXHJcblx0XHRhc05hdkZvcjogJy5wcm9kdWN0LWZvcm1hdHMtbmF2JyxcclxuXHR9KTtcclxuXHJcblx0JCgnLnByb2R1Y3QtZm9ybWF0cy1uYXYnKS5zbGljayh7XHJcblx0XHRzbGlkZXNUb1Nob3c6IDQsXHJcblx0XHRzbGlkZXNUb1Njcm9sbDogNCxcclxuXHRcdGNlbnRlclBhZGRpbmc6IDAsXHJcblx0XHRhc05hdkZvcjogJy5wcm9kdWN0LWZvcm1hdHMtc2xpZGVyJyxcclxuXHRcdGZvY3VzT25TZWxlY3Q6IHRydWUsXHJcblx0XHR2YXJpYWJsZVdpZHRoOiB0cnVlLFxyXG5cdFx0dXNlVHJhbnNmb3JtOiBmYWxzZSxcclxuXHR9KTtcclxuXHJcblx0JCgnLnJlbGF0ZWQtcHJvZHVjdHMtc2xpZGVyJykuc2xpY2soe1xyXG5cdFx0YWRhcH
14938RpdmVIZWlnaHQ6IHRydWUsXHJcblx0XHRkb3RzOiB0cnVlLFxyXG5cdH0pO1xyXG5cclxuXHQkKCcucmVsYXRlZC1wcm9kdWN0cy1zbGlkZXInKS5vbignc2V0UG9zaXRpb24nLCBmdW5jdGlvbihldmVudCwgc2xpY2ssXHJcblx0XHRkaXJlY3Rpb24pIHtcclxuXHRcdF9yZXNpemUoKTtcclxuXHR9KTtcclxuXHJcbn0pO1xyXG5cclxudmFyIHJ1blNsaWNrID0gZnVuY3Rpb24oKSB7XHJcblx0Y3VycmVudCA9IDA7XHJcblx0bmV4dCA9IDA7XHJcblx0cHJldiA9IDA7XHJcblxyXG5cdGlmICgkKCcuY2Fyb3VzZWwnKS5maW5kKCcuYy1saXN0LWl0ZW0tY2Fyb3VzZWwnKS5sZW5ndGggPj0gMykge1xyXG5cdFx0dmFyIGNhcm91c2VsID0gJCgnLmNhcm91c2VsJyk7XHJcblx0XHRpZiAoJChjYXJvdXNlbCkuaGFzQ2xhc3MoJ3NsaWNrLXNsaWRlcicpKSBjYXJvdXNlbC5zbGljaygndW5zbGljaycpO1xyXG5cclxuXHRcdGNhcm91c2VsLm9uKCdpbml0JywgZnVuY3Rpb24oc2xpY2spIHtcclxuXHRcdFx0aWYgKF9ncmlkU2l6ZSA+IDc2OCkge1xyXG5cdFx0XHRcdGN1cnJlbnQgPSBjYXJvdXNlbC5maW5kKCcuc2xpY2stY3VycmVudCcpO1xyXG5cdFx0XHRcdHByZXYgPSBjdXJyZW50LnByZXYoKTtcclxuXHRcdFx0XHRuZXh0ID0gY3VycmVudC5uZXh0KCk7XHJcblx0XHRcdFx0VHdlZW5NYXguc2V0KFtwcmV2LCBuZXh0XSwge1xyXG5cdFx0XHRcdFx0YXV0b0FscGhhOiAxLFxyXG5cdFx0XHRcdFx0c2NhbGU6IDAuN1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFR3ZWVuTWF4LnNldChjdXJyZW50LCB7XHJcblx0XHRcdFx0XHRzY2FsZTogMSxcclxuXHRcdFx0XHRcdGF1dG9BbHBoYTogMVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRjYXJvdXNlbC5zbGljayhzbGlja1Zhcikub24oJ2JlZm9yZUNoYW5nZScsIGZ1bmN0aW9uKGV2ZW50LCBzbGljayxcclxuXHRcdFx0Y3VycmVudFNsaWRlLCBuZXh0U2xpZGUpIHtcclxuXHRcdFx0aWYgKF9ncmlkU2l6ZSA+IDc2OCkge1xyXG5cclxuXHRcdFx0XHRpZiAoTWF0aC5hYnMobmV4dFNsaWRlIC0gY3VycmVudFNsaWRlKSA9PSAxKSB7XHJcblx0XHRcdFx0XHRkaXJlY3Rpb24gPSAobmV4dFNsaWRlIC0gY3VycmVudFNsaWRlID4gMCkgPyBcInJpZ2h0XCIgOiBcImxlZnRcIjtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0ZGlyZWN0aW9uID0gKG5leHRTbGlkZSAtIGN1cnJlbnRTbGlkZSA+IDApID8gXCJsZWZ0XCIgOiBcInJpZ2h0XCI7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFR3ZWVuTWF4LnRvKHNsaWNrLiRzbGlkZXMuZXEoY3VycmVudFNsaWRlKSwgMC4xLCB7XHJcblx0XHRcdFx0XHRzY2FsZTogMC43LFxyXG5cdFx0XHRcdFx0YXV0b0FscGhhOiAxXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0VHdlZW5NYXgudG8oc2xpY2suJHNsaWRlcy5lcShuZXh0U2xpZGUpLCAwLjEsIHtcclxuXHRcdFx0XHRcdGF1dG9BbHBoYTogMSxcclxuXHRcdFx0XHRcdHNjYWxlOiAxXHJcblx0XHRcdFx0fSk7XHJcblxyXG5cdFx0XHRcdGlmIChkaXJlY3Rpb24gPT09IFwicmlnaHRcIikge1xyXG5cdFx0XHRcdFx0Ly9lZGdlXHJcblx0XHRcdFx0XHRUd2Vlbk1heC50byhzbGljay4kc2xpZGVzLmVxKGN1cnJlbnRTbGlkZSAtIDEpLCAwLjEsIHtcclxuXHRcdFx0XHRcdFx0YXV0b0FscGhhOiAwXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFR3ZWVuTWF4LnRvKHNsaWNrLiRzbGlkZXMuZXEobmV4dFNsaWRlICsgMSksIDAuMSwge1xyXG5cdFx0XHRcdFx0XHRhdXRvQWxwaGE6IDEsXHJcblx0XHRcdFx0XHRcdHNjYWxlOiAwLjdcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRUd2Vlbk1heC50byhzbGljay4kc2xpZGVzLmVxKGN1cnJlbnRTbGlkZSArIDEpLCAwLjEsIHtcclxuXHRcdFx0XHRcdFx0YXV0b0FscGhhOiAwXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFR3ZWVuTWF4LnRvKHNsaWNrLiRzbGlkZXMuZXEobmV4dFNsaWRlIC0gMSksIDAuMSwge1xyXG5cdFx0XHRcdFx0XHRhdXRvQWxwaGE6IDEsXHJcblx0XHRcdFx0XHRcdHNjYWxlOiAwLjdcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdH0gZWxzZSBpZiAoJCgnLmMtc2VjdGlvbi5oYXMtc291cmNlIC5jLWxpc3RpbmcgLmMtbGlzdC1pdGVtJykubGVuZ3RoID49IDMpIHtcclxuXHJcblx0XHR2YXIgY2Fyb3VzZWwgPSAkKCcuYy1zZWN0aW9uLmhhcy1zb3VyY2UgLmMtbGlzdGluZ19fd3JhcHBlcicpO1xyXG5cdFx0aWYgKCQoY2Fyb3VzZWwpLmhhc0NsYXNzKCdzbGljay1zbGlkZXInKSkgY2Fyb3VzZWwuc2xpY2soJ3Vuc2xpY2snKTtcclxuXHJcblx0XHQvLyBpZiggJChjYXJvdXNlbCkuZmluZCgnLmMtbGlzdC1pdGVtLWNhcm91c2VsJykubGVuZ3RoID4gMykge1xyXG5cdFx0Y2Fyb3VzZWwub24oJ2luaXQnLCBmdW5jdGlvbihzbGljaykge1xyXG5cdFx0XHRpZiAoX2dyaWRTaXplID4gNzY4KSB7XHJcblx0XHRcdFx0Y3VycmVudCA9IGNhcm91c2VsLmZpbmQoJy5zbGljay1jdXJyZW50Jyk7XHJcblx0XHRcdFx0cHJldiA9IGN1cnJlbnQucHJldigpO1xyXG5cdFx0XHRcdG5leHQgPSBjdXJyZW50Lm5leHQoKTtcclxuXHJcblx0XHRcdFx0VHdlZW5NYXguc2V0KFtwcmV2LCBuZXh0XSwge1xyXG5cdFx0XHRcdFx0YXV0b0FscGhhOiAxXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0VHdlZW5NYXguc2V0KGN1cnJlbnQsIHtcclxuXHRcdFx0XHRcdGF1dG9BbHBoYTogMVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRjYXJvdXNlbC5zbGljayhzbGlja1Zhcikub24oJ2JlZm9yZUNoYW5nZScsIGZ1bmN0aW9uKGV2ZW50LCBzbGljayxcclxuXHRcdFx0Y3VycmVudFNsaWRlLCBuZXh0U2xpZGUpIHtcclxuXHRcdFx0aWYgKF9ncmlkU2l6ZSA+IDc2OCkge1xyXG5cdFx0XHRcdGlmIChNYXRoLmFicyhuZXh0U2xpZGUgLSBjdXJyZW50U2xpZGUpID09IDEpIHtcclxuXHRcdFx0XHRcdGRpcmVjdGlvbiA9IChuZXh0U2xpZGUgLSBjdXJyZW50U2xpZGUgPiAwKSA/IFwicmlnaHRcIiA6IFwibGVmdFwiO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRkaXJlY3Rpb24gPSAobmV4dFNsaWRlIC0gY3VycmVudFNsaWRlID4gMCkgPyBcImxlZnRcIiA6IFwicmlnaHRcIjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0VHdlZW5NYXgudG8oc2xpY2suJHNsaWRlcy5lcShjdXJyZW50U2xpZGUpLCAwLjEsIHtcclxuXHRcdFx0XHRcdGF1dG9BbHBoYTogMVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFR3ZWVuTWF4LnRvKHNsaWNrLiRzbGlkZXMuZXEobmV4dFNsaWRlKSwgMC4xLCB7XHJcblx0XHRcdFx0XHRhdXRvQWxwaGE6IDFcclxuXHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdFx0aWYgKGRpcmVjdGlvbiA9PT0gXCJyaWdodFwiKSB7XHJcblx0XHRcdFx0XHQvL2VkZ2VcclxuXHRcdFx0XHRcdFR3ZWVuTWF4LnRvKHNsaWNrLiRzbGlkZXMuZXEoY3VycmVudFNsaWRlIC0gMSksIDAuMSwge1xyXG5cdFx0XHRcdFx0XHRhdXRvQWxwaGE6IDBcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0VHdlZW5NYXgudG8oc2xpY2suJHNsaWRlcy5lcShuZXh0U2xpZGUgKyAxKSwgMC4xLCB7XHJcblx0XHRcdFx0XHRcdGF1dG9BbHBoYTogMVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFR3ZWVuTWF4LnRvKHNsaWNrLiRzbGlkZXMuZXEoY3VycmVudFNsaWRlICsgMSksIDAuMSwge1xyXG5cdFx0XHRcdFx0XHRhdXRvQWxwaGE6IDBcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0VHdlZW5NYXgudG8oc2xpY2suJHNsaWRlcy5lcShuZXh0U2xpZGUgLSAxKSwgMC4xLCB7XHJcblx0XHRcdFx0XHRcdGF1dG9BbHBoYTogMVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblx0Ly8gfVxyXG59XHJcblxyXG4kKHdpbmRvdykucmVzaXplKGZ1bmN0aW9uKCl7XHJcblx0X2dyaWRTaXplID0gYnJlYWtwb2ludCgpLm1hdGNoKC8oXFxkKykvZyk7XHJcblx0X2dyaWRMYWJlbCA9IGJyZWFrcG9pbnQoKS5yZXBsYWNlKC9cXGQrL2csICcnKS5yZXBsYWNlKFwiIFwiLCBcIlwiKS5yZXBsYWNlKC9cXFwiL2csIFwiXCIpO1xyXG5cdF93aW5TaXplID0gJCh3aW5kb3cpLndpZHRoKCk7XHJcblx0X21hcmdpbiA9IChfd2luU2l6ZSAtIF9ncmlkU2l6ZSkgLyAyO1xyXG5cdG1heEhlaWdodCA9IC0xO1xyXG5cclxuXHRpZiAoX2dyaWRTaXplID4gMTIwMCkge1xyXG5cdFx0JCgnLmMtc2VjdGlvbi0taGVhZGVyLmhhcy10aHVtYm5haWwgLmMtc2VjdGlvbl9fd3JhcHBlcicpLmNzcyh7XHJcblx0XHRcdHBhZGRpbmdMZWZ0OiBfbWFyZ2luXHJcblx0XHR9KTtcclxuXHR9XHJcbn0pXHJcblxyXG5mdW5jdGlvbiBfcmVzaXplKCkge1xyXG5cdGNvbnNvbGUubG9nKFwicmVzaXplIG9uY2VcIik7XHJcblx0X2dyaWRTaXplID0gYnJlYWtwb2ludCgpLm1hdGNoKC8oXFxkKykvZyk7XHJcblx0X2dyaWRMYWJlbCA9IGJyZWFrcG9pbnQoKS5yZXBsYWNlKC9cXGQrL2csICcnKS5yZXBsYWNlKFwiIFwiLCBcIlwiKS5yZXBsYWNlKC9cXFwiL2csIFwiXCIpO1xyXG5cdF93aW5TaXplID0gJCh3aW5kb3cpLndpZHRoKCk7XHJcblx0X21hcmdpbiA9IChfd2luU2l6ZSAtIF9ncmlkU2l6ZSkgLyAyO1xyXG5cdG1heEhlaWdodCA9IC0xO1xyXG5cclxuXHQvL1Jlc2V0XHJcblx0JCgnLmMtc2VjdGlvbi0taGVhZGVyLmhhcy10aHVtYm5haWwgLmMtc2VjdGlvbl9fd3JhcHBlcicpLmNzcygncGFkZGluZ0xlZnQnLFxyXG5cdFx0JycpO1xyXG5cclxuXHQkKCcubWVudS1kZXB0aC0xLCAubWVudS1kZXB0aC0yJykuY3NzKHtcclxuXHRcdG1pbkhlaWdodDogJCgnLm1lbnUtZGVwdGgtMScpLmZpbmQoJ3VsJykuZXEoMCkub3V0ZXJIZWlnaHQodHJ1ZSlcclxuXHR9KTtcclxuXHJcblx0aWYgKF9ncmlkU2l6ZSA+IDEyMDApIHtcclxuXHRcdCQoJy5jLXNlY3Rpb24tLWhlYWRlci5oYXMtdGh1bWJuYWlsIC5jLXNlY3Rpb25fX3dyYXBwZXInKS5jc3Moe1xyXG5cdFx0XHRwYWRkaW5nTGVmdDogX21hcmdpblxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRpZiAoJCgnLnNhbWUtaGVpZ2h0JykubGVuZ3RoICYmIF9ncmlkTGFiZWwgIT09IFwic21hcnRwaG9uZVwiKSB7XHJcblx0XHQkKCcuc2FtZS1oZWlnaHQnKS5lcXVhbFJvd0hlaWdodHMoKTtcclxuXHR9XHJcblxyXG5cdHJ1blNsaWNrKCk7XHJcbn1cclxuKi8iLCIoZnVuY3Rpb24gKGdsb2JhbCl7XG47IHZhciBfX2Jyb3dzZXJpZnlfc2hpbV9yZXF1aXJlX189cmVxdWlyZTsoZnVuY3Rpb24gYnJvd3NlcmlmeVNoaW0obW9kdWxlLCBleHBvcnRzLCByZXF1aXJlLCBkZWZpbmUsIGJyb3dzZXJpZnlfc2hpbV9fZGVmaW5lX19tb2R1bGVfX2V4cG9ydF9fKSB7XG4vKiFcbiAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjIuMS40XG4gKiBodHRwOi8vanF1ZXJ5LmNvbS9cbiAqXG4gKiBJbmNsdWRlcyBTaXp6bGUuanNcbiAqIGh0dHA6Ly9zaXp6bGVqcy5jb20vXG4gKlxuICogQ29weXJpZ2h0IDIwMDUsIDIwMTQgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKlxuICogRGF0ZTogMjAxNS0wNC0yOFQxNjowMVpcbiAqL1xuXG4oZnVuY3Rpb24oIGdsb2JhbCwgZmFjdG9yeSApIHtcblxuXHRpZiAoIHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcIm9iamVjdFwiICkge1xuXHRcdC8vIEZvciBDb21tb25KUyBhbmQgQ29tbW9uSlMtbGlrZSBlbnZpcm9ubWVud
14938HMgd2hlcmUgYSBwcm9wZXIgYHdpbmRvd2Bcblx0XHQvLyBpcyBwcmVzZW50LCBleGVjdXRlIHRoZSBmYWN0b3J5IGFuZCBnZXQgalF1ZXJ5LlxuXHRcdC8vIEZvciBlbnZpcm9ubWVudHMgdGhhdCBkbyBub3QgaGF2ZSBhIGB3aW5kb3dgIHdpdGggYSBgZG9jdW1lbnRgXG5cdFx0Ly8gKHN1Y2ggYXMgTm9kZS5qcyksIGV4cG9zZSBhIGZhY3RvcnkgYXMgbW9kdWxlLmV4cG9ydHMuXG5cdFx0Ly8gVGhpcyBhY2NlbnR1YXRlcyB0aGUgbmVlZCBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgcmVhbCBgd2luZG93YC5cblx0XHQvLyBlLmcuIHZhciBqUXVlcnkgPSByZXF1aXJlKFwianF1ZXJ5XCIpKHdpbmRvdyk7XG5cdFx0Ly8gU2VlIHRpY2tldCAjMTQ1NDkgZm9yIG1vcmUgaW5mby5cblx0XHRtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbC5kb2N1bWVudCA/XG5cdFx0XHRmYWN0b3J5KCBnbG9iYWwsIHRydWUgKSA6XG5cdFx0XHRmdW5jdGlvbiggdyApIHtcblx0XHRcdFx0aWYgKCAhdy5kb2N1bWVudCApIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoIFwialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudFwiICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGZhY3RvcnkoIHcgKTtcblx0XHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0ZmFjdG9yeSggZ2xvYmFsICk7XG5cdH1cblxuLy8gUGFzcyB0aGlzIGlmIHdpbmRvdyBpcyBub3QgZGVmaW5lZCB5ZXRcbn0odHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHRoaXMsIGZ1bmN0aW9uKCB3aW5kb3csIG5vR2xvYmFsICkge1xuXG4vLyBTdXBwb3J0OiBGaXJlZm94IDE4K1xuLy8gQ2FuJ3QgYmUgaW4gc3RyaWN0IG1vZGUsIHNldmVyYWwgbGlicyBpbmNsdWRpbmcgQVNQLk5FVCB0cmFjZVxuLy8gdGhlIHN0YWNrIHZpYSBhcmd1bWVudHMuY2FsbGVyLmNhbGxlZSBhbmQgRmlyZWZveCBkaWVzIGlmXG4vLyB5b3UgdHJ5IHRvIHRyYWNlIHRocm91Z2ggXCJ1c2Ugc3RyaWN0XCIgY2FsbCBjaGFpbnMuICgjMTMzMzUpXG4vL1xuXG52YXIgYXJyID0gW107XG5cbnZhciBzbGljZSA9IGFyci5zbGljZTtcblxudmFyIGNvbmNhdCA9IGFyci5jb25jYXQ7XG5cbnZhciBwdXNoID0gYXJyLnB1c2g7XG5cbnZhciBpbmRleE9mID0gYXJyLmluZGV4T2Y7XG5cbnZhciBjbGFzczJ0eXBlID0ge307XG5cbnZhciB0b1N0cmluZyA9IGNsYXNzMnR5cGUudG9TdHJpbmc7XG5cbnZhciBoYXNPd24gPSBjbGFzczJ0eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgc3VwcG9ydCA9IHt9O1xuXG5cblxudmFyXG5cdC8vIFVzZSB0aGUgY29ycmVjdCBkb2N1bWVudCBhY2NvcmRpbmdseSB3aXRoIHdpbmRvdyBhcmd1bWVudCAoc2FuZGJveClcblx0ZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQsXG5cblx0dmVyc2lvbiA9I
14938FwiMi4xLjRcIixcblxuXHQvLyBEZWZpbmUgYSBsb2NhbCBjb3B5IG9mIGpRdWVyeVxuXHRqUXVlcnkgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7XG5cdFx0Ly8gVGhlIGpRdWVyeSBvYmplY3QgaXMgYWN0dWFsbHkganVzdCB0aGUgaW5pdCBjb25zdHJ1Y3RvciAnZW5oYW5jZWQnXG5cdFx0Ly8gTmVlZCBpbml0IGlmIGpRdWVyeSBpcyBjYWxsZWQgKGp1c3QgYWxsb3cgZXJyb3IgdG8gYmUgdGhyb3duIGlmIG5vdCBpbmNsdWRlZClcblx0XHRyZXR1cm4gbmV3IGpRdWVyeS5mbi5pbml0KCBzZWxlY3RvciwgY29udGV4dCApO1xuXHR9LFxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQ8NC4xXG5cdC8vIE1ha2Ugc3VyZSB3ZSB0cmltIEJPTSBhbmQgTkJTUFxuXHRydHJpbSA9IC9eW1xcc1xcdUZFRkZcXHhBMF0rfFtcXHNcXHVGRUZGXFx4QTBdKyQvZyxcblxuXHQvLyBNYXRjaGVzIGRhc2hlZCBzdHJpbmcgZm9yIGNhbWVsaXppbmdcblx0cm1zUHJlZml4ID0gL14tbXMtLyxcblx0cmRhc2hBbHBoYSA9IC8tKFtcXGRhLXpdKS9naSxcblxuXHQvLyBVc2VkIGJ5IGpRdWVyeS5jYW1lbENhc2UgYXMgY2FsbGJhY2sgdG8gcmVwbGFjZSgpXG5cdGZjYW1lbENhc2UgPSBmdW5jdGlvbiggYWxsLCBsZXR0ZXIgKSB7XG5cdFx0cmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpO1xuXHR9O1xuXG5qUXVlcnkuZm4gPSBqUXVlcnkucHJvdG90eXBlID0ge1xuXHQvLyBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIGpRdWVyeSBiZWluZyB1c2VkXG5cdGpxdWVyeTogdmVyc2lvbixcblxuXHRjb25zdHJ1Y3RvcjogalF1ZXJ5LFxuXG5cdC8vIFN0YXJ0IHdpdGggYW4gZW1wdHkgc2VsZWN0b3Jcblx0c2VsZWN0b3I6IFwiXCIsXG5cblx0Ly8gVGhlIGRlZmF1bHQgbGVuZ3RoIG9mIGEgalF1ZXJ5IG9iamVjdCBpcyAwXG5cdGxlbmd0aDogMCxcblxuXHR0b0FycmF5OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApO1xuXHR9LFxuXG5cdC8vIEdldCB0aGUgTnRoIGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgZWxlbWVudCBzZXQgT1Jcblx0Ly8gR2V0IHRoZSB3aG9sZSBtYXRjaGVkIGVsZW1lbnQgc2V0IGFzIGEgY2xlYW4gYXJyYXlcblx0Z2V0OiBmdW5jdGlvbiggbnVtICkge1xuXHRcdHJldHVybiBudW0gIT0gbnVsbCA/XG5cblx0XHRcdC8vIFJldHVybiBqdXN0IHRoZSBvbmUgZWxlbWVudCBmcm9tIHRoZSBzZXRcblx0XHRcdCggbnVtIDwgMCA/IHRoaXNbIG51bSArIHRoaXMubGVuZ3RoIF0gOiB0aGlzWyBudW0gXSApIDpcblxuXHRcdFx0Ly8gUmV0dXJuIGFsbCB0aGUgZWxlbWVudHMgaW4gYSBjbGVhbiBhcnJheVxuXHRcdFx0c2xpY2UuY2FsbCggdGhpcyApO1xuXHR9LFxuXG5cdC8vIFRha2UgYW4gYXJyYXkgb2YgZWxlbWVudHMgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2tcblx0Ly8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQgZWxlbWVudCBzZXQpXG5cdHB1c2hTdGFjazogZnVuY3Rpb24oIGVsZW1zICkge1xuXG5cdFx0Ly8gQnVpbGQgYSBuZXcgalF1ZXJ5IG1hdGNoZWQgZWxlbWVudCBzZXRcblx0XHR2YXIgcmV0ID0galF1ZXJ5Lm1lcmdlKCB0aGlzLmNvbnN0cnVjdG9yKCksIGVsZW1zICk7XG5cblx0XHQvLyBBZGQgdGhlIG9sZCBvYmplY3Qgb250byB0aGUgc3RhY2sgKGFzIGEgcmVmZXJlbmNlKVxuXHRcdHJldC5wcmV2T2JqZWN0ID0gdGhpcztcblx0XHRyZXQuY29udGV4dCA9IHRoaXMuY29udGV4dDtcblxuXHRcdC8vIFJldHVybiB0aGUgbmV3bHktZm9ybWVkIGVsZW1lbnQgc2V0XG5cdFx0cmV0dXJuIHJldDtcblx0fSxcblxuXHQvLyBFeGVjdXRlIGEgY2FsbGJhY2sgZm9yIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgc2V0LlxuXHQvLyAoWW91IGNhbiBzZWVkIHRoZSBhcmd1bWVudHMgd2l0aCBhbiBhcnJheSBvZiBhcmdzLCBidXQgdGhpcyBpc1xuXHQvLyBvbmx5IHVzZWQgaW50ZXJuYWxseS4pXG5cdGVhY2g6IGZ1bmN0aW9uKCBjYWxsYmFjaywgYXJncyApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmVhY2goIHRoaXMsIGNhbGxiYWNrLCBhcmdzICk7XG5cdH0sXG5cblx0bWFwOiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkubWFwKHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBpICkge1xuXHRcdFx0cmV0dXJuIGNhbGxiYWNrLmNhbGwoIGVsZW0sIGksIGVsZW0gKTtcblx0XHR9KSk7XG5cdH0sXG5cblx0c2xpY2U6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggc2xpY2UuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApICk7XG5cdH0sXG5cblx0Zmlyc3Q6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLmVxKCAwICk7XG5cdH0sXG5cblx0bGFzdDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZXEoIC0xICk7XG5cdH0sXG5cblx0ZXE6IGZ1bmN0aW9uKCBpICkge1xuXHRcdHZhciBsZW4gPSB0aGlzLmxlbmd0aCxcblx0XHRcdGogPSAraSArICggaSA8IDAgPyBsZW4gOiAwICk7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqID49IDAgJiYgaiA8IGxlbiA/IFsgdGhpc1tqXSBdIDogW10gKTtcblx0fSxcblxuXHRlbmQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLnByZXZPYmplY3QgfHwgdGhpcy5jb25zdHJ1Y3RvcihudWxsKTtcblx0fSxcblxuXHQvLyBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuXG5cdC8vIEJlaGF2ZXMgbGlrZSBhbiBBcnJheSdzIG1ldGhvZCwgbm90IGxpa2UgYSBqUXVlcnkgbWV0aG9kLlxuXHRwdXNoOiBwdXNoLFxuXHRzb3J0OiBhcnIuc29ydCxcblx0c3BsaWNlOiBhcnIuc3BsaWNlXG59O1xuXG5qUXVlcnkuZXh0ZW5kID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkge1xuXHR2YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNBcnJheSwgY2xvbmUsXG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWzBdIHx8IHt9LFxuXHRcdGkgPSAxLFxuXHRcdGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cdFx0ZGVlcCA9IGZhbHNlO1xuXG5cdC8vIEhhbmRsZSBhIGRlZXAgY29weSBzaXR1YXRpb25cblx0aWYgKCB0eXBlb2YgdGFyZ2V0ID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRkZWVwID0gdGFyZ2V0O1xuXG5cdFx0Ly8gU2tpcCB0aGUgYm9vbGVhbiBhbmQgdGhlI
14938HRhcmdldFxuXHRcdHRhcmdldCA9IGFyZ3VtZW50c1sgaSBdIHx8IHt9O1xuXHRcdGkrKztcblx0fVxuXG5cdC8vIEhhbmRsZSBjYXNlIHdoZW4gdGFyZ2V0IGlzIGEgc3RyaW5nIG9yIHNvbWV0aGluZyAocG9zc2libGUgaW4gZGVlcCBjb3B5KVxuXHRpZiAoIHR5cGVvZiB0YXJnZXQgIT09IFwib2JqZWN0XCIgJiYgIWpRdWVyeS5pc0Z1bmN0aW9uKHRhcmdldCkgKSB7XG5cdFx0dGFyZ2V0ID0ge307XG5cdH1cblxuXHQvLyBFeHRlbmQgalF1ZXJ5IGl0c2VsZiBpZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBwYXNzZWRcblx0aWYgKCBpID09PSBsZW5ndGggKSB7XG5cdFx0dGFyZ2V0ID0gdGhpcztcblx0XHRpLS07XG5cdH1cblxuXHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHQvLyBPbmx5IGRlYWwgd2l0aCBub24tbnVsbC91bmRlZmluZWQgdmFsdWVzXG5cdFx0aWYgKCAob3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdKSAhPSBudWxsICkge1xuXHRcdFx0Ly8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdFxuXHRcdFx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdFx0XHRzcmMgPSB0YXJnZXRbIG5hbWUgXTtcblx0XHRcdFx0Y29weSA9IG9wdGlvbnNbIG5hbWUgXTtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wXG5cdFx0XHRcdGlmICggdGFyZ2V0ID09PSBjb3B5ICkge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlzXG5cdFx0XHRcdGlmICggZGVlcCAmJiBjb3B5ICYmICggalF1ZXJ5LmlzUGxhaW5PYmplY3QoY29weSkgfHwgKGNvcHlJc0FycmF5ID0galF1ZXJ5LmlzQXJyYXkoY29weSkpICkgKSB7XG5cdFx0XHRcdFx0aWYgKCBjb3B5SXNBcnJheSApIHtcblx0XHRcdFx0XHRcdGNvcHlJc0FycmF5ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRjbG9uZSA9IHNyYyAmJiBqUXVlcnkuaXNBcnJheShzcmMpID8gc3JjIDogW107XG5cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmMgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3Qoc3JjKSA/IHNyYyA6IHt9O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbVxuXHRcdFx0XHRcdHRhcmdldFsgbmFtZSBdID0galF1ZXJ5LmV4dGVuZCggZGVlcCwgY2xvbmUsIGNvcHkgKTtcblxuXHRcdFx0XHQvLyBEb24ndCBicmluZyBpbiB1bmRlZmluZWQgdmFsdWVzXG5cdFx0XHRcdH0gZWxzZSBpZiAoIGNvcHkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHR0YXJnZXRbIG5hbWUgXSA9IGNvcHk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIG1vZGlmaWVkIG9iamVjdFxuXHRyZXR1cm4gdGFyZ2V0O1xufTtcblxualF1ZXJ5LmV4dGVuZCh7XG5cdC8vIFVuaXF1ZSBmb3IgZWFjaCBjb3B5IG9mIGpRdWVyeSBvbiB0aGUgcGFnZVxuXHRleHBhbmRvOiBcImpRdWVyeVwiICsgKCB2ZXJzaW9uICsgTWF0aC5yYW5kb20oKSApLnJlcGxhY2UoIC9cXEQvZywgXCJcIiApLFxuXG5cdC8vIEFzc3VtZSBqUXVlcnkgaXMgcmVhZHkgd2l0aG91dCB0aGUgcmVhZHkgbW9kdWxlXG5cdGlzUmVhZHk6IHRydWUsXG5cblx0ZXJyb3I6IGZ1bmN0aW9uKCBtc2cgKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCBtc2cgKTtcblx0fSxcblxuXHRub29wOiBmdW5jdGlvbigpIHt9LFxuXG5cdGlzRnVuY3Rpb246IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS50eXBlKG9iaikgPT09IFwiZnVuY3Rpb25cIjtcblx0fSxcblxuXHRpc0FycmF5OiBBcnJheS5pc0FycmF5LFxuXG5cdGlzV2luZG93OiBmdW5jdGlvbiggb2JqICkge1xuXHRcdHJldHVybiBvYmogIT0gbnVsbCAmJiBvYmogPT09IG9iai53aW5kb3c7XG5cdH0sXG5cblx0aXNOdW1lcmljOiBmdW5jdGlvbiggb2JqICkge1xuXHRcdC8vIHBhcnNlRmxvYXQgTmFOcyBudW1lcmljLWNhc3QgZmFsc2UgcG9zaXRpdmVzIChudWxsfHRydWV8ZmFsc2V8XCJcIilcblx0XHQvLyAuLi5idXQgbWlzaW50ZXJwcmV0cyBsZWFkaW5nLW51bWJlciBzdHJpbmdzLCBwYXJ0aWN1bGFybHkgaGV4IGxpdGVyYWxzIChcIjB4Li4uXCIpXG5cdFx0Ly8gc3VidHJhY3Rpb24gZm9yY2VzIGluZmluaXRpZXMgdG8gTmFOXG5cdFx0Ly8gYWRkaW5nIDEgY29ycmVjdHMgbG9zcyBvZiBwcmVjaXNpb24gZnJvbSBwYXJzZUZsb2F0ICgjMTUxMDApXG5cdFx0cmV0dXJuICFqUXVlcnkuaXNBcnJheSggb2JqICkgJiYgKG9iaiAtIHBhcnNlRmxvYXQoIG9iaiApICsgMSkgPj0gMDtcblx0fSxcblxuXHRpc1BsYWluT2JqZWN0OiBmdW5jdGlvbiggb2JqICkge1xuXHRcdC8vIE5vdCBwbGFpbiBvYmplY3RzOlxuXHRcdC8vIC0gQW55IG9iamVjdCBvciB2YWx1ZSB3aG9zZSBpbnRlcm5hbCBbW0NsYXNzXV0gcHJvcGVydHkgaXMgbm90IFwiW29iamVjdCBPYmplY3RdXCJcblx0XHQvLyAtIERPTSBub2Rlc1xuXHRcdC8vIC0gd2luZG93XG5cdFx0aWYgKCBqUXVlcnkudHlwZSggb2JqICkgIT09IFwib2JqZWN0XCIgfHwgb2JqLm5vZGVUeXBlIHx8IGpRdWVyeS5pc1dpbmRvdyggb2JqICkgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0aWYgKCBvYmouY29uc3RydWN0b3IgJiZcblx0XHRcdFx0IWhhc093bi5jYWxsKCBvYmouY29uc3RydWN0b3IucHJvdG90eXBlLCBcImlzUHJvdG90eXBlT2ZcIiApICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIElmIHRoZSBmdW5jdGlvbiBoYXNuJ3QgcmV0dXJuZWQgYWxyZWFkeSwgd2UncmUgY29uZmlkZW50IHRoYXRcblx0XHQvLyB8b2JqfCBpcyBhIHBsYWluIG9iamVjdCwgY3JlYXRlZCBieSB7fSBvciBjb25zdHJ1Y3RlZCB3aXRoIG5ldyBPYmplY3Rcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblxuXHRpc0VtcHR5T2JqZWN0OiBmdW5jdGlvbiggb2JqICkge1xuXHRcdHZhciBuYW1lO1xuXHRcdGZvciAoIG5hbWUgaW4gb2JqICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblxuXHR0eXBlOiBmdW5jdGlvbiggb2JqICkge1xuXHRcdGlmICggb2JqID09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gb2JqICsgXCJcIjtcblx0XHR9XG5cdFx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LjAsIGlPUzw2IChmdW5jdGlvbmlzaCBSZWdFeHApXG5cdFx0cmV0dXJuIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIG9iaiA9PT0gXCJmdW5jdGlvblwiID9cblx0XHRcdGNsYXNzMnR5cGVbIHRvU3RyaW5nLmNhbGwob2JqKSBdIHx8IFwib2JqZWN0XCIgOlxuXHRcdFx0dHlwZW9mIG9iajtcblx0fSxcblxuXHQvLyBFdmFsdWF0ZXMgYSBzY3JpcHQgaW4gYSBnbG9iYWwgY29udGV4dFxuXHRnbG9iYWxFdmFsOiBmdW5jdGlvbiggY29kZSApIHtcblx0XHR2YXIgc2NyaXB0LFxuXHRcdFx0aW5kaXJlY3QgPSBldmFsO1xuXG5cdFx0Y29kZSA9IGpRdWVyeS50cmltKCBjb2RlICk7XG5cblx0XHRpZiAoIGNvZGUgKSB7XG5cdFx0XHQvLyBJZiB0aGUgY29kZSBpbmNsdWRlcyBhIHZhbGlkLCBwcm9sb2d1ZSBwb3NpdGlvblxuXHRcdFx0Ly8gc3RyaWN0IG1vZGUgcHJhZ21hLCBleGVjdXRlIGNvZGUgYnkgaW5qZWN0aW5nIGFcblx0XHRcdC8vIHNjcmlwdCB0YWcgaW50byB0aGUgZG9jdW1lbnQuXG5cdFx0XHRpZiAoIGNvZGUuaW5kZXhPZihcInVzZSBzdHJpY3RcIikgPT09IDEgKSB7XG5cdFx0XHRcdHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG5cdFx0XHRcdHNjcmlwdC50ZXh0ID0gY29kZTtcblx0XHRcdFx0ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0ICkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggc2NyaXB0ICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gT3RoZXJ3aXNlLCBhdm9pZCB0aGUgRE9NIG5vZGUgY3JlYXRpb24sIGluc2VydGlvblxuXHRcdFx0Ly8gYW5kIHJlbW92YWwgYnkgdXNpbmcgYW4gaW5kaXJlY3QgZ2xvYmFsIGV2YWxcblx0XHRcdFx0aW5kaXJlY3QoIGNvZGUgKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0Ly8gQ29udmVydCBkYXNoZWQgdG8gY2FtZWxDYXNlOyB1c2VkIGJ5IHRoZSBjc3MgYW5kIGRhdGEgbW9kdWxlc1xuXHQvLyBTdXBwb3J0OiBJRTktMTErXG5cdC8vIE1pY3Jvc29mdCBmb3Jnb3QgdG8gaHVtcCB0aGVpciB2ZW5kb3IgcHJlZml4ICgjOTU3Milcblx0Y2FtZWxDYXNlOiBmdW5jdGlvbiggc3RyaW5nICkge1xuXHRcdHJldHVybi
14938BzdHJpbmcucmVwbGFjZSggcm1zUHJlZml4LCBcIm1zLVwiICkucmVwbGFjZSggcmRhc2hBbHBoYSwgZmNhbWVsQ2FzZSApO1xuXHR9LFxuXG5cdG5vZGVOYW1lOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHtcblx0XHRyZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKTtcblx0fSxcblxuXHQvLyBhcmdzIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5XG5cdGVhY2g6IGZ1bmN0aW9uKCBvYmosIGNhbGxiYWNrLCBhcmdzICkge1xuXHRcdHZhciB2YWx1ZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0bGVuZ3RoID0gb2JqLmxlbmd0aCxcblx0XHRcdGlzQXJyYXkgPSBpc0FycmF5bGlrZSggb2JqICk7XG5cblx0XHRpZiAoIGFyZ3MgKSB7XG5cdFx0XHRpZiAoIGlzQXJyYXkgKSB7XG5cdFx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHRcdHZhbHVlID0gY2FsbGJhY2suYXBwbHkoIG9ialsgaSBdLCBhcmdzICk7XG5cblx0XHRcdFx0XHRpZiAoIHZhbHVlID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9yICggaSBpbiBvYmogKSB7XG5cdFx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjay5hcHBseSggb2JqWyBpIF0sIGFyZ3MgKTtcblxuXHRcdFx0XHRcdGlmICggdmFsdWUgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBBIHNwZWNpYWwsIGZhc3QsIGNhc2UgZm9yIHRoZSBtb3N0IGNvbW1vbiB1c2Ugb2YgZWFjaFxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoIGlzQXJyYXkgKSB7XG5cdFx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHRcdHZhbHVlID0gY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICk7XG5cblx0XHRcdFx0XHRpZiAoIHZhbHVlID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9yICggaSBpbiBvYmogKSB7XG5cdFx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjay5jYWxsKCBvYmpbIGkgXSwgaSwgb2JqWyBpIF0gKTtcblxuXHRcdFx0XHRcdGlmICggdmFsdWUgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG9iajtcblx0fSxcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkPDQuMVxuXHR0cmltOiBmdW5jdGlvbiggdGV4dCApIHtcblx0XHRyZXR1cm4gdGV4dCA9PSBudWxsID9cblx0XHRcdFwiXCIgOlxuXHRcdFx0KCB0ZXh0ICsgXCJcIiApLnJlcGxhY2UoIHJ0cmltLCBcIlwiICk7XG5cdH0sXG5cblx0Ly8gcmVzdWx0cyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seVxuXHRtYWtlQXJyYXk6IGZ1bmN0aW9uKCBhcnIsIHJlc3VsdHMgKSB7XG5cdFx0dmFyIHJldCA9IHJlc3VsdHMgfHwgW107XG5cblx0XHRpZiAoIGFyciAhPSBudWxsICkge1xuXHRcdFx0aWYgKCBpc0FycmF
149385bGlrZSggT2JqZWN0KGFycikgKSApIHtcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCByZXQsXG5cdFx0XHRcdFx0dHlwZW9mIGFyciA9PT0gXCJzdHJpbmdcIiA/XG5cdFx0XHRcdFx0WyBhcnIgXSA6IGFyclxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cHVzaC5jYWxsKCByZXQsIGFyciApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiByZXQ7XG5cdH0sXG5cblx0aW5BcnJheTogZnVuY3Rpb24oIGVsZW0sIGFyciwgaSApIHtcblx0XHRyZXR1cm4gYXJyID09IG51bGwgPyAtMSA6IGluZGV4T2YuY2FsbCggYXJyLCBlbGVtLCBpICk7XG5cdH0sXG5cblx0bWVyZ2U6IGZ1bmN0aW9uKCBmaXJzdCwgc2Vjb25kICkge1xuXHRcdHZhciBsZW4gPSArc2Vjb25kLmxlbmd0aCxcblx0XHRcdGogPSAwLFxuXHRcdFx0aSA9IGZpcnN0Lmxlbmd0aDtcblxuXHRcdGZvciAoIDsgaiA8IGxlbjsgaisrICkge1xuXHRcdFx0Zmlyc3RbIGkrKyBdID0gc2Vjb25kWyBqIF07XG5cdFx0fVxuXG5cdFx0Zmlyc3QubGVuZ3RoID0gaTtcblxuXHRcdHJldHVybiBmaXJzdDtcblx0fSxcblxuXHRncmVwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBpbnZlcnQgKSB7XG5cdFx0dmFyIGNhbGxiYWNrSW52ZXJzZSxcblx0XHRcdG1hdGNoZXMgPSBbXSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0bGVuZ3RoID0gZWxlbXMubGVuZ3RoLFxuXHRcdFx0Y2FsbGJhY2tFeHBlY3QgPSAhaW52ZXJ0O1xuXG5cdFx0Ly8gR28gdGhyb3VnaCB0aGUgYXJyYXksIG9ubHkgc2F2aW5nIHRoZSBpdGVtc1xuXHRcdC8vIHRoYXQgcGFzcyB0aGUgdmFsaWRhdG9yIGZ1bmN0aW9uXG5cdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRjYWxsYmFja0ludmVyc2UgPSAhY2FsbGJhY2soIGVsZW1zWyBpIF0sIGkgKTtcblx0XHRcdGlmICggY2FsbGJhY2tJbnZlcnNlICE9PSBjYWxsYmFja0V4cGVjdCApIHtcblx0XHRcdFx0bWF0Y2hlcy5wdXNoKCBlbGVtc1sgaSBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1hdGNoZXM7XG5cdH0sXG5cblx0Ly8gYXJnIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5XG5cdG1hcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgYXJnICkge1xuXHRcdHZhciB2YWx1ZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0bGVuZ3RoID0gZWxlbXMubGVuZ3RoLFxuXHRcdFx0aXNBcnJheSA9IGlzQXJyYXlsaWtlKCBlbGVtcyApLFxuXHRcdFx0cmV0ID0gW107XG5cblx0XHQvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgdHJhbnNsYXRpbmcgZWFjaCBvZiB0aGUgaXRlbXMgdG8gdGhlaXIgbmV3IHZhbHVlc1xuXHRcdGlmICggaXNBcnJheSApIHtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHR2YWx1ZSA9IGNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTtcblxuXHRcdFx0XHRpZiAoIHZhbHVlICE9IG51bGwgKSB7XG5cdFx0XHRcdFx0cmV0LnB1c2goIHZhbHVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdC8vIEdvIHRocm91Z2ggZXZlcnkga2V5IG9uIHRoZSBvYmplY3QsXG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoIGkgaW4gZWxlbXMgKSB7XG5cdFx0XHRcdHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGksIGFyZyApO1xuXG5cdFx0XHRcdGlmICggdmFsdWUgIT0gbnVsbCApIHtcblx0XHRcdFx0XHRyZXQucHVzaCggdmFsdWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXNcblx0XHRyZXR1cm4gY29uY2F0LmFwcGx5KCBbXSwgcmV0ICk7XG5cdH0sXG5cblx0Ly8gQSBnbG9iYWwgR1VJRCBjb3VudGVyIGZvciBvYmplY3RzXG5cdGd1aWQ6IDEsXG5cblx0Ly8gQmluZCBhIGZ1bmN0aW9uIHRvIGEgY29udGV4dCwgb3B0aW9uYWxseSBwYXJ0aWFsbHkgYXBwbHlpbmcgYW55XG5cdC8vIGFyZ3VtZW50cy5cblx0cHJveHk6IGZ1bmN0aW9uKCBmbiwgY29udGV4dCApIHtcblx0XHR2YXIgdG1wLCBhcmdzLCBwcm94eTtcblxuXHRcdGlmICggdHlwZW9mIGNvbnRleHQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHR0bXAgPSBmblsgY29udGV4dCBdO1xuXHRcdFx0Y29udGV4dCA9IGZuO1xuXHRcdFx0Zm4gPSB0bXA7XG5cdFx0fVxuXG5cdFx0Ly8gUXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRhcmdldCBpcyBjYWxsYWJsZSwgaW4gdGhlIHNwZWNcblx0XHQvLyB0aGlzIHRocm93cyBhIFR5cGVFcnJvciwgYnV0IHdlIHdpbGwganVzdCByZXR1cm4gdW5kZWZpbmVkLlxuXHRcdGlmICggIWpRdWVyeS5pc0Z1bmN0aW9uKCBmbiApICkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHQvLyBTaW11bGF0ZWQgYmluZFxuXHRcdGFyZ3MgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMsIDIgKTtcblx0XHRwcm94eSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIGZuLmFwcGx5KCBjb250ZXh0IHx8IHRoaXMsIGFyZ3MuY29uY2F0KCBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSApICk7XG5cdFx0fTtcblxuXHRcdC8vIFNldCB0aGUgZ3VpZCBvZiB1bmlxdWUgaGFuZGxlciB0byB0aGUgc2FtZSBvZiBvcmlnaW5hbCBoYW5kbGVyLCBzbyBpdCBjYW4gYmUgcmVtb3ZlZFxuXHRcdHByb3h5Lmd1aWQgPSBmbi5ndWlkID0gZm4uZ3VpZCB8fCBqUXVlcnkuZ3VpZCsrO1xuXG5cdFx0cmV0dXJuIHByb3h5O1xuXHR9LFxuXG5cdG5vdzogRGF0ZS5ub3csXG5cblx0Ly8galF1ZXJ5LnN1cHBvcnQgaXMgbm90IHVzZWQgaW4gQ29yZSBidXQgb3RoZXIgcHJvamVjdHMgYXR0YWNoIHRoZWlyXG5cdC8vIHByb3BlcnRpZXMgdG8gaXQgc28gaXQgbmVlZHMgdG8gZXhpc3QuXG5cdHN1cHBvcnQ6IHN1cHBvcnRcbn0pO1xuXG4vLyBQb3B1bGF0ZSB0aGUgY2xhc3MydHlwZSBtYXBcbmpRdWVyeS5lYWNoKFwiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvclwiLnNwbGl0KFwiIFwiKSwgZnVuY3Rpb24oaSwgbmFtZSkge1xuXHRjbGFzczJ0eXBlWyBcIltvYmplY3QgXCIgKyBuYW1lICsgXCJdXCIgXSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcbn0pO1xuXG5mdW5jdGlvbiBpc0FycmF
149385bGlrZSggb2JqICkge1xuXG5cdC8vIFN1cHBvcnQ6IGlPUyA4LjIgKG5vdCByZXByb2R1Y2libGUgaW4gc2ltdWxhdG9yKVxuXHQvLyBgaW5gIGNoZWNrIHVzZWQgdG8gcHJldmVudCBKSVQgZXJyb3IgKGdoLTIxNDUpXG5cdC8vIGhhc093biBpc24ndCB1c2VkIGhlcmUgZHVlIHRvIGZhbHNlIG5lZ2F0aXZlc1xuXHQvLyByZWdhcmRpbmcgTm9kZWxpc3QgbGVuZ3RoIGluIElFXG5cdHZhciBsZW5ndGggPSBcImxlbmd0aFwiIGluIG9iaiAmJiBvYmoubGVuZ3RoLFxuXHRcdHR5cGUgPSBqUXVlcnkudHlwZSggb2JqICk7XG5cblx0aWYgKCB0eXBlID09PSBcImZ1bmN0aW9uXCIgfHwgalF1ZXJ5LmlzV2luZG93KCBvYmogKSApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRpZiAoIG9iai5ub2RlVHlwZSA9PT0gMSAmJiBsZW5ndGggKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRyZXR1cm4gdHlwZSA9PT0gXCJhcnJheVwiIHx8IGxlbmd0aCA9PT0gMCB8fFxuXHRcdHR5cGVvZiBsZW5ndGggPT09IFwibnVtYmVyXCIgJiYgbGVuZ3RoID4gMCAmJiAoIGxlbmd0aCAtIDEgKSBpbiBvYmo7XG59XG52YXIgU2l6emxlID1cbi8qIVxuICogU2l6emxlIENTUyBTZWxlY3RvciBFbmdpbmUgdjIuMi4wLXByZVxuICogaHR0cDovL3NpenpsZWpzLmNvbS9cbiAqXG4gKiBDb3B5cmlnaHQgMjAwOCwgMjAxNCBqUXVlcnkgRm91bmRhdGlvbiwgSW5jLiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2VcbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqXG4gKiBEYXRlOiAyMDE0LTEyLTE2XG4gKi9cbihmdW5jdGlvbiggd2luZG93ICkge1xuXG52YXIgaSxcblx0c3VwcG9ydCxcblx0RXhwcixcblx0Z2V0VGV4dCxcblx0aXNYTUwsXG5cdHRva2VuaXplLFxuXHRjb21waWxlLFxuXHRzZWxlY3QsXG5cdG91dGVybW9zdENvbnRleHQsXG5cdHNvcnRJbnB1dCxcblx0aGFzRHVwbGljYXRlLFxuXG5cdC8vIExvY2FsIGRvY3VtZW50IHZhcnNcblx0c2V0RG9jdW1lbnQsXG5cdGRvY3VtZW50LFxuXHRkb2NFbGVtLFxuXHRkb2N1bWVudElzSFRNTCxcblx0cmJ1Z2d5UVNBLFxuXHRyYnVnZ3lNYXRjaGVzLFxuXHRtYXRjaGVzLFxuXHRjb250YWlucyxcblxuXHQvLyBJbnN0YW5jZS1zcGVjaWZpYyBkYXRhXG5cdGV4cGFuZG8gPSBcInNpenpsZVwiICsgMSAqIG5ldyBEYXRlKCksXG5cdHByZWZlcnJlZERvYyA9IHdpbmRvdy5kb2N1bWVudCxcblx0ZGlycnVucyA9IDAsXG5cdGRvbmUgPSAwLFxuXHRjbGFzc0NhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0dG9rZW5DYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdGNvbXBpbGVyQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHRzb3J0T3JkZXIgPSBmdW5jdGlvbiggYSwgYiApIHtcblx0XHRpZiAoIGEgPT09IGIgKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGUgPSB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gMDtcblx0fSxcblxuXHQvLyBHZW5lcmFsLXB1cnBvc2UgY29uc3RhbnRzXG5cdE1BWF9ORUdBVElWRSA9IDEgPDwgMzEsXG5cblx0Ly8gSW5zdGFuY2UgbWV0aG9kc1xuXHRoYXNPd24gPSAoe30pLmhhc093blByb3BlcnR5LFxuXHRhcnIgPSBbXSxcblx0cG9wID0gYXJyLnBvcCxcblx0cHVzaF9uYXRpdmUgPSBhcnIucHVzaCxcblx0cHVzaCA9IGFyci5wdXNoLFxuXHRzbGljZSA9IGFyci5zbGljZSxcblx0Ly8gVXNlIGEgc3RyaXBwZWQtZG93biBpbmRleE9mIGFzIGl0J3MgZmFzdGVyIHRoYW4gbmF0aXZlXG5cdC8vIGh0dHA6Ly9qc3BlcmYuY29tL3Rob3ItaW5kZXhvZi12cy1mb3IvNVxuXHRpbmRleE9mID0gZnVuY3Rpb24oIGxpc3QsIGVsZW0gKSB7XG5cdFx0dmFyIGkgPSAwLFxuXHRcdFx0bGVuID0gbGlzdC5sZW5ndGg7XG5cdFx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRpZiAoIGxpc3RbaV0gPT09IGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiBpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gLTE7XG5cdH0sXG5cblx0Ym9vbGVhbnMgPSBcImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkXCIsXG5cblx0Ly8gUmVndWxhciBleHByZXNzaW9uc1xuXG5cdC8vIFdoaXRlc3BhY2UgY2hhcmFjdGVycyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXNlbGVjdG9ycy8jd2hpdGVzcGFjZVxuXHR3aGl0ZXNwYWNlID0gXCJbXFxcXHgyMFxcXFx0XFxcXHJcXFxcblxcXFxmXVwiLFxuXHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXN5bnRheC8jY2hhcmFjdGVyc1xuXHRjaGFyYWN0ZXJFbmNvZGluZyA9IFwiKD86XFxcXFxcXFwufFtcXFxcdy1dfFteXFxcXHgwMC1cXFxceGEwXSkrXCIsXG5cblx0Ly8gTG9vc2VseSBtb2RlbGVkIG9uIENTUyBpZGVudGlmaWVyIGNoYXJhY3RlcnNcblx0Ly8gQW4gdW5xdW90ZWQgdmFsdWUgc2hvdWxkIGJlIGEgQ1NTIGlkZW50aWZpZXIgaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zZWxlY3RvcnMvI2F0dHJpYnV0ZS1zZWxlY3RvcnNcblx0Ly8gUHJvcGVyIHN5bnRheDogaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI3ZhbHVlLWRlZi1pZGVudGlmaWVyXG5cdGlkZW50aWZpZXIgPSBjaGFyYWN0ZXJFbmNvZGluZy5yZXBsYWNlKCBcIndcIiwgXCJ3I1wiICksXG5cblx0Ly8gQXR0cmlidXRlIHNlbGVjdG9yczogaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNhdHRyaWJ1dGUtc2VsZWN0b3JzXG5cdGF0dHJpYnV0ZXMgPSBcIlxcXFxbXCIgKyB3aGl0ZXNwYWNlICsgXCIqKFwiICsgY2hhcmFjdGVyRW5jb2RpbmcgKyBcIikoPzpcIiArIHdoaXRlc3BhY2UgK1xuXHRcdC8vIE9wZXJhdG9yIChjYXB0dXJlIDIpXG5cdFx0XCIqKFsqXiR8IX5dPz0pXCIgKyB3aGl0ZXNwYWNlICtcblx0XHQvLyBcIkF0dHJpYnV0ZSB2YWx1ZXMgbXVzdCBiZSBDU1MgaWRlbnRpZmllcnMgW2NhcHR1cmUgNV0gb3Igc3RyaW5ncyBbY2FwdHVyZSAzIG9yIGNhcHR1cmUgNF1cIlxuXHRcdFwiKig/OicoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcInwoXCIgKyBpZGVudGlmaWVyICsgXCIpKXwpXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcIipcXFxcXVwiLFxuXG5cdHBzZXVkb3MgPSBcIjooXCIgKyBjaGFyYWN0ZXJFbmNvZGluZyArIFwiKSg/OlxcXFwoKFwiICtcblx0XHQvLyBUbyByZWR1Y2UgdGhlIG51bWJlciBvZiBzZWxlY3RvcnMgbmVlZGluZyB0b2tlbml6ZSBpbiB0aGUgcHJlRmlsdGVyLCBwcmVmZXIgYXJndW1lbnRzOlxuXHRcdC8vIDEuIHF1b3RlZCAoY2FwdHVyZSAzOyBjYXB0dXJlIDQgb3IgY2FwdHVyZSA1KVxuXHRcdFwiKCcoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcIil8XCIgK1xuXHRcdC8vIDIuIHNpbXBsZSAoY2FwdHVyZSA2KVxuXHRcdFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcKClbXFxcXF1dfFwiICsgYXR0cmlidXRlcyArIFwiKSopfFwiICtcblx0XHQvLyAzLiBhbnl0aGluZyBlbHNlIChjYXB0dXJlIDIpXG5cdFx0XCIuKlwiICtcblx0XHRcIilcXFxcKXwpXCIsXG5cblx0Ly8gTGVhZGluZyBhbmQgbm9uLWVzY2FwZWQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgY2FwdHVyaW5nIHNvbWUgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBwcmVjZWRpbmcgdGhlIGxhdHRlclxuXHRyd2hpdGVzcGFjZSA9IG5ldyBSZWdFeHAoIHdoaXRlc3BhY2UgKyBcIitcIiwgXCJnXCIgKSxcblx0cnRyaW0gPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIit8KCg/Ol58W15cXFxcXFxcXF0pKD86XFxcXFxcXFwuKSopXCIgKyB3aGl0ZXNwYWNlICsgXCIrJFwiLCBcImdcIiApLFxuXG5cdHJjb21tYSA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiKixcIiArIHdoaXRlc3BhY2UgKyBcIipcIiApLFxuXHRyY29tYmluYXRvcnMgPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIiooWz4rfl18XCIgKyB3aGl0ZXNwYWNlICsgXCIpXCIgKyB3aGl0ZXNwYWNlICsgXCIqXCIgKSxcblxuXHRyYXR0cmlidXRlUXVvdGVzID0gbmV3IFJlZ0V4cCggXCI9XCIgKyB3aGl0ZXNwYWNlICsgXCIqKFteXFxcXF0nXFxcIl0qPylcIiArIH
14938doaXRlc3BhY2UgKyBcIipcXFxcXVwiLCBcImdcIiApLFxuXG5cdHJwc2V1ZG8gPSBuZXcgUmVnRXhwKCBwc2V1ZG9zICksXG5cdHJpZGVudGlmaWVyID0gbmV3IFJlZ0V4cCggXCJeXCIgKyBpZGVudGlmaWVyICsgXCIkXCIgKSxcblxuXHRtYXRjaEV4cHIgPSB7XG5cdFx0XCJJRFwiOiBuZXcgUmVnRXhwKCBcIl4jKFwiICsgY2hhcmFjdGVyRW5jb2RpbmcgKyBcIilcIiApLFxuXHRcdFwiQ0xBU1NcIjogbmV3IFJlZ0V4cCggXCJeXFxcXC4oXCIgKyBjaGFyYWN0ZXJFbmNvZGluZyArIFwiKVwiICksXG5cdFx0XCJUQUdcIjogbmV3IFJlZ0V4cCggXCJeKFwiICsgY2hhcmFjdGVyRW5jb2RpbmcucmVwbGFjZSggXCJ3XCIsIFwidypcIiApICsgXCIpXCIgKSxcblx0XHRcIkFUVFJcIjogbmV3IFJlZ0V4cCggXCJeXCIgKyBhdHRyaWJ1dGVzICksXG5cdFx0XCJQU0VVRE9cIjogbmV3IFJlZ0V4cCggXCJeXCIgKyBwc2V1ZG9zICksXG5cdFx0XCJDSElMRFwiOiBuZXcgUmVnRXhwKCBcIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcXFwoXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcdFwiKihldmVufG9kZHwoKFsrLV18KShcXFxcZCopbnwpXCIgKyB3aGl0ZXNwYWNlICsgXCIqKD86KFsrLV18KVwiICsgd2hpdGVzcGFjZSArXG5cdFx0XHRcIiooXFxcXGQrKXwpKVwiICsgd2hpdGVzcGFjZSArIFwiKlxcXFwpfClcIiwgXCJpXCIgKSxcblx0XHRcImJvb2xcIjogbmV3IFJlZ0V4cCggXCJeKD86XCIgKyBib29sZWFucyArIFwiKSRcIiwgXCJpXCIgKSxcblx0XHQvLyBGb3IgdXNlIGluIGxpYnJhcmllcyBpbXBsZW1lbnRpbmcgLmlzKClcblx0XHQvLyBXZSB1c2UgdGhpcyBmb3IgUE9TIG1hdGNoaW5nIGluIGBzZWxlY3RgXG5cdFx0XCJuZWVkc0NvbnRleHRcIjogbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXFxcKFwiICtcblx0XHRcdHdoaXRlc3BhY2UgKyBcIiooKD86LVxcXFxkKT9cXFxcZCopXCIgKyB3aGl0ZXNwYWNlICsgXCIqXFxcXCl8KSg/PVteLV18JClcIiwgXCJpXCIgKVxuXHR9LFxuXG5cdHJpbnB1dHMgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFxuXHRyaGVhZGVyID0gL15oXFxkJC9pLFxuXG5cdHJuYXRpdmUgPSAvXltee10rXFx7XFxzKlxcW25hdGl2ZSBcXHcvLFxuXG5cdC8vIEVhc2lseS1wYXJzZWFibGUvcmV0cmlldmFibGUgSUQgb3IgVEFHIG9yIENMQVNTIHNlbGVjdG9yc1xuXHRycXVpY2tFeHByID0gL14oPzojKFtcXHctXSspfChcXHcrKXxcXC4oW1xcdy1dKykpJC8sXG5cblx0cnNpYmxpbmcgPSAvWyt+XS8sXG5cdHJlc2NhcGUgPSAvJ3xcXFxcL2csXG5cblx0Ly8gQ1NTIGVzY2FwZXMgaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI2VzY2FwZWQtY2hhcmFjdGVyc1xuXHRydW5lc2NhcGUgPSBuZXcgUmVnRXhwKCBcIlxcXFxcXFxcKFtcXFxcZGEtZl17MSw2fVwiICsgd2hpdGVzcGFjZSArIFwiP3woXCIgKyB3aGl0ZXNwYWNlICsgXCIpfC4pXCIsIFwiaWdcIiApLFxuXHRmdW5lc2NhcGUgPSBmdW5jdGlvbiggXywgZXNjYXBlZCwgZXNjYXBlZFdoaXRlc3BhY2UgKSB7XG5cdFx0dmFyIGhpZ2ggPSBcIjB4XCIgKyBlc2NhcGVkIC0gMHgxMDAwMDtcblx0XHQvLyBOYU4gbWVhbnMgbm9uLWNvZGVwb2ludFxuXHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3g8MjRcblx0XHQvLyBXb3JrYXJvdW5kIGVycm9uZW91cyBudW1lcmljIGludGVycHJldGF0aW9uIG9mICtcIjB4XCJcblx0XHRyZXR1cm4gaGlnaCAhPT0gaGlnaCB8fCBlc2NhcGVkV2hpdGVzcGFjZSA/XG5cdFx0XHRlc2NhcGVkIDpcblx0XHRcdGhpZ2ggPCAwID9cblx0XHRcdFx0Ly8gQk1QIGNvZGVwb2ludFxuXHRcdFx0XHRTdHJpbmcuZnJvbUNoYXJDb2RlKCBoaWdoICsgMHgxMDAwMCApIDpcblx0XHRcdFx0Ly8gU3VwcGxlbWVudGFsIFBsYW5lIGNvZGVwb2ludCAoc3Vycm9nYXRlIHBhaXIpXG5cdFx0XHRcdFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggPj4gMTAgfCAweEQ4MDAsIGhpZ2ggJiAweDNGRiB8IDB4REMwMCApO1xuXHR9LFxuXG5cdC8vIFVzZWQgZm9yIGlmcmFtZXNcblx0Ly8gU2VlIHNldERvY3VtZW50KClcblx0Ly8gUmVtb3ZpbmcgdGhlIGZ1bmN0aW9uIHdyYXBwZXIgY2F1c2VzIGEgXCJQZXJtaXNzaW9uIERlbmllZFwiXG5cdC8vIGVycm9yIGluIElFXG5cdHVubG9hZEhhbmRsZXIgPSBmdW5jdGlvbigpIHtcblx0XHRzZXREb2N1bWVudCgpO1xuXHR9O1xuXG4vLyBPcHRpbWl6ZSBmb3IgcHVzaC5hcHBseSggXywgTm9kZUxpc3QgKVxudHJ5IHtcblx0cHVzaC5hcHBseShcblx0XHQoYXJyID0gc2xpY2UuY2FsbCggcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMgKSksXG5cdFx0cHJlZmVycmVkRG9jLmNoaWxkTm9kZXNcblx0KTtcblx0Ly8gU3VwcG9ydDogQW5kcm9pZDw0LjBcblx0Ly8gRGV0ZWN0IHNpbGVudGx5IGZhaWxpbmcgcHVzaC5hcHBseVxuXHRhcnJbIHByZWZlcnJlZERvYy5jaGlsZE5vZGVzLmxlbmd0aCBdLm5vZGVUeXBlO1xufSBjYXRjaCAoIGUgKSB7XG5cdHB1c2ggPSB7IGFwcGx5OiBhcnIubGVuZ3RoID9cblxuXHRcdC8vIExldmVyYWdlIHNsaWNlIGlmIHBvc3NpYmxlXG5cdFx0ZnVuY3Rpb24oIHRhcmdldCwgZWxzICkge1xuXHRcdFx0cHVzaF9uYXRpdmUuYXBwbHkoIHRhcmdldCwgc2xpY2UuY2FsbChlbHMpICk7XG5cdFx0fSA6XG5cblx0XHQvLyBTdXBwb3J0OiBJRTw5XG5cdFx0Ly8gT3RoZXJ3aXNlIGFwcGVuZCBkaXJlY3RseVxuXHRcdGZ1bmN0aW9uKCB0YXJnZXQsIGVscyApIHtcblx0XHRcdHZhciBqID0gdGFyZ2V0Lmxlbmd0aCxcblx0XHRcdFx0aSA9IDA7XG5cdFx0XHQvLyBDYW4ndCB0cnVzdCBOb2RlTGlzdC5sZW5ndGhcblx0XHRcdHdoaWxlICggKHRhcmdldFtqKytdID0gZWxzW2krK10pICkge31cblx0XHRcdHRhcmdldC5sZW5ndGggPSBqIC0gMTtcblx0XHR9XG5cdH07XG59XG5cbmZ1bmN0aW9uIFNpenpsZSggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7XG5cdHZhciBtYXRjaCwgZWxlbSwgbSwgbm9kZVR5cGUsXG5cdFx0Ly8gUVNBIHZhcnNcblx0XHRpLCBncm91cHMsIG9sZCwgbmlkLCBuZXdDb250ZXh0LCBuZXdTZWxlY3RvcjtcblxuXHRpZiAoICggY29udGV4dCA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogcHJlZmVycmVkRG9jICkgIT09IGRvY3VtZW50ICkge1xuXHRcdHNldERvY3VtZW50KCBjb250ZXh0ICk7XG5cdH1cblxuXHRjb250ZXh0ID0gY29udGV4dCB8fCBkb2N1bWVudDtcblx0cmVzdWx0cyA9IHJlc3VsdHMgfHwgW107XG5cdG5vZGVUeXBlID0gY29udGV4dC5ub2RlVHlwZTtcblxuXHRpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gXCJzdHJpbmdcIiB8fCAhc2VsZWN0b3IgfHxcblx0XHRub2RlVHlwZSAhPT0gMSAmJi
14938Bub2RlVHlwZSAhPT0gOSAmJiBub2RlVHlwZSAhPT0gMTEgKSB7XG5cblx0XHRyZXR1cm4gcmVzdWx0cztcblx0fVxuXG5cdGlmICggIXNlZWQgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cblx0XHQvLyBUcnkgdG8gc2hvcnRjdXQgZmluZCBvcGVyYXRpb25zIHdoZW4gcG9zc2libGUgKGUuZy4sIG5vdCB1bmRlciBEb2N1bWVudEZyYWdtZW50KVxuXHRcdGlmICggbm9kZVR5cGUgIT09IDExICYmIChtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKSkgKSB7XG5cdFx0XHQvLyBTcGVlZC11cDogU2l6emxlKFwiI0lEXCIpXG5cdFx0XHRpZiAoIChtID0gbWF0Y2hbMV0pICkge1xuXHRcdFx0XHRpZiAoIG5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBtICk7XG5cdFx0XHRcdFx0Ly8gQ2hlY2sgcGFyZW50Tm9kZSB0byBjYXRjaCB3aGVuIEJsYWNrYmVycnkgNC42IHJldHVybnNcblx0XHRcdFx0XHQvLyBub2RlcyB0aGF0IGFyZSBubyBsb25nZXIgaW4gdGhlIGRvY3VtZW50IChqUXVlcnkgIzY5NjMpXG5cdFx0XHRcdFx0aWYgKCBlbGVtICYmIGVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0XHRcdC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBJRSwgT3BlcmEsIGFuZCBXZWJraXQgcmV0dXJuIGl0ZW1zXG5cdFx0XHRcdFx0XHQvLyBieSBuYW1lIGluc3RlYWQgb2YgSURcblx0XHRcdFx0XHRcdGlmICggZWxlbS5pZCA9PT0gbSApIHtcblx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gQ29udGV4dCBpcyBub3QgYSBkb2N1bWVudFxuXHRcdFx0XHRcdGlmICggY29udGV4dC5vd25lckRvY3VtZW50ICYmIChlbGVtID0gY29udGV4dC5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBtICkpICYmXG5cdFx0XHRcdFx0XHRjb250YWlucyggY29udGV4dCwgZWxlbSApICYmIGVsZW0uaWQgPT09IG0gKSB7XG5cdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHQvLyBTcGVlZC11cDogU2l6emxlKFwiVEFHXCIpXG5cdFx0XHR9IGVsc2UgaWYgKCBtYXRjaFsyXSApIHtcblx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggc2VsZWN0b3IgKSApO1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblxuXHRcdFx0Ly8gU3BlZWQtdXA6IFNpenpsZShcIi5DTEFTU1wiKVxuXHRcdFx0fSBlbHNlIGlmICggKG0gPSBtYXRjaFszXSkgJiYgc3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICkge1xuXHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIG0gKSApO1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBRU0EgcGF0aFxuXHRcdGlmICggc3VwcG9ydC5xc2EgJiYgKCFyYnVnZ3lRU0EgfHwgIXJidWdneVFTQS50ZXN0KCBzZWxlY3RvciApKSApIHtcblx0XHRcdG5pZCA9IG9sZCA9IGV4cGFuZG87XG5cdFx0XHRuZXdDb250ZXh0ID0gY29udGV4dDtcblx0XHRcdG5ld1NlbGVjdG9yID0gbm9kZVR5cGUgIT09IDEgJiYgc2VsZWN0b3I7XG5cblx0XHRcdC8vIHFTQSB3b3JrcyBzdHJhbmdlbHkgb24gRWxlbWVudC1yb290ZWQgcXVlcmllc1xuXHRcdFx0Ly8gV2UgY2FuIHdvcmsgYXJvdW5kIHRoaXMgYnkgc3BlY2lmeWluZyBhbiBleHRyYSBJRCBvbiB0aGUgcm9vdFxuXHRcdFx0Ly8gYW5kIHdvcmtpbmcgdXAgZnJvbSB0aGVyZSAoVGhhbmtzIHRvIEFuZHJldyBEdXBvbnQgZm9yIHRoZSB0ZWNobmlxdWUpXG5cdFx0XHQvLyBJRSA4IGRvZXNuJ3Qgd29yayBvbiBvYmplY3QgZWxlbWVudHNcblx0XHRcdGlmICggbm9kZVR5cGUgPT09IDEgJiYgY29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSBcIm9iamVjdFwiICkge1xuXHRcdFx0XHRncm91cHMgPSB0b2tlbml6ZSggc2VsZWN0b3IgKTtcblxuXHRcdFx0XHRpZiAoIChvbGQgPSBjb250ZXh0LmdldEF0dHJpYnV0ZShcImlkXCIpKSApIHtcblx0XHRcdFx0XHRuaWQgPSBvbGQucmVwbGFjZSggcmVzY2FwZSwgXCJcXFxcJCZcIiApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnRleHQuc2V0QXR0cmlidXRlKCBcImlkXCIsIG5pZCApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG5pZCA9IFwiW2lkPSdcIiArIG5pZCArIFwiJ10gXCI7XG5cblx0XHRcdFx0aSA9IGdyb3Vwcy5sZW5ndGg7XG5cdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdGdyb3Vwc1tpXSA9IG5pZCArIHRvU2VsZWN0b3IoIGdyb3Vwc1tpXSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG5ld0NvbnRleHQgPSByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fCBjb250ZXh0O1xuXHRcdFx0XHRuZXdTZWxlY3RvciA9IGdyb3Vwcy5qb2luKFwiLFwiKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBuZXdTZWxlY3RvciApIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLFxuXHRcdFx0XHRcdFx0bmV3Q29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCBuZXdTZWxlY3RvciApXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0fSBjYXRjaChxc2FFcnJvcikge1xuXHRcdFx0XHR9IGZpbmFsbHkge1xuXHRcdFx0XHRcdGlmICggIW9sZCApIHtcblx0XHRcdFx0XHRcdGNvbnRleHQucmVtb3ZlQXR0cmlidXRlKFwiaWRcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWxsIG90aGVyc1xuXHRyZXR1cm4gc2VsZWN0KCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICksIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUga2V5LXZhbHVlIGNhY2hlcyBvZiBsaW1pdGVkIHNpemVcbiAqIEByZXR1cm5zIHtGdW5jdGlvbihzdHJpbmcsIE9iamVjdCl9IFJldHVybnMgdGhlIE9iamVjdCBkYXRhIGFmdGVyIHN0b3JpbmcgaXQgb24gaXRzZWxmIHdpdGhcbiAqXHRwcm9wZXJ0eSBuYW1lIHRoZSAoc3BhY2Utc3VmZml4ZWQpIHN0cmluZyBhbmQgKGlmIHRoZSBjYWNoZSBpcyBsYXJnZXIgdGhhbiBFeHByLmNhY2hlTGVuZ3RoKVxuICpcdGRlbGV0aW5nIHRoZSBvbGRlc3QgZW50cnlcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ2FjaGUoKSB7XG5cdHZhciBrZXlzID0gW107XG5cblx0ZnVuY3Rpb24gY2FjaGUoIGtleSwgdmFsdWUgKSB7XG5cdFx0Ly8gVXNlIChrZXkgKyBcIiBcIikgdG8gYXZvaWQgY29sbGlzaW9uIHdpdGggbmF0aXZlIHByb3RvdHlwZSBwcm9wZXJ0aWVzIChzZWUgSXNzdWUgIzE1Nylcblx0XHRpZiAoIGtleXMucHVzaCgga2V5ICsgXCIgXCIgKSA+IEV4cHIuY2FjaGVMZW5ndGggKSB7XG5cdFx0XHQvLyBPbmx5IGtlZXAgdGhlIG1vc3QgcmVjZW50IGVudHJpZXNcblx0XHRcdGRlbGV0ZSBjYWNoZVsga2V5cy5zaGlmdCgpIF07XG5cdFx0fVxuXHRcdHJldHVybiAoY2FjaGVbIGtleSArIFwiIFwiIF0gPSB2YWx1ZSk7XG5cdH1cblx0cmV0dXJuIGNhY2hlO1xufVxuXG4vKipcbiAqIE1hcmsgYSBmdW5jdGlvbiBmb3Igc3BlY2lhbCB1c2UgYnkgU2l6emxlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gbWFya1xuICovXG5mdW5jdGlvbiBtYXJrRnVuY3Rpb24oIGZuICkge1xuXHRmblsgZXhwYW5kbyBdID0gdHJ1ZTtcblx0cmV0dXJuIGZuO1xufVxuXG4vKipcbiAqIFN1cHBvcnQgdGVzdGluZyB1c2luZyBhbiBlbGVtZW50XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBQYXNzZWQgdGhlIGNyZWF0ZWQgZGl2IGFuZCBleHBlY3RzIGEgYm9vbGVhbiByZXN1bHRcbiAqL1xuZnVuY3Rpb24gYXNzZXJ0KCBmbiApIHtcblx0dmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cblx0dHJ5IHtcblx0XHRyZXR1cm4gISFmbiggZGl2ICk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0gZmluYWxseSB7XG5cdFx0Ly8gUmVtb3ZlIGZyb20gaXRzIHBhcmVudCBieSBkZWZh
14938dWx0XG5cdFx0aWYgKCBkaXYucGFyZW50Tm9kZSApIHtcblx0XHRcdGRpdi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBkaXYgKTtcblx0XHR9XG5cdFx0Ly8gcmVsZWFzZSBtZW1vcnkgaW4gSUVcblx0XHRkaXYgPSBudWxsO1xuXHR9XG59XG5cbi8qKlxuICogQWRkcyB0aGUgc2FtZSBoYW5kbGVyIGZvciBhbGwgb2YgdGhlIHNwZWNpZmllZCBhdHRyc1xuICogQHBhcmFtIHtTdHJpbmd9IGF0dHJzIFBpcGUtc2VwYXJhdGVkIGxpc3Qgb2YgYXR0cmlidXRlc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciBUaGUgbWV0aG9kIHRoYXQgd2lsbCBiZSBhcHBsaWVkXG4gKi9cbmZ1bmN0aW9uIGFkZEhhbmRsZSggYXR0cnMsIGhhbmRsZXIgKSB7XG5cdHZhciBhcnIgPSBhdHRycy5zcGxpdChcInxcIiksXG5cdFx0aSA9IGF0dHJzLmxlbmd0aDtcblxuXHR3aGlsZSAoIGktLSApIHtcblx0XHRFeHByLmF0dHJIYW5kbGVbIGFycltpXSBdID0gaGFuZGxlcjtcblx0fVxufVxuXG4vKipcbiAqIENoZWNrcyBkb2N1bWVudCBvcmRlciBvZiB0d28gc2libGluZ3NcbiAqIEBwYXJhbSB7RWxlbWVudH0gYVxuICogQHBhcmFtIHtFbGVtZW50fSBiXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBSZXR1cm5zIGxlc3MgdGhhbiAwIGlmIGEgcHJlY2VkZXMgYiwgZ3JlYXRlciB0aGFuIDAgaWYgYSBmb2xsb3dzIGJcbiAqL1xuZnVuY3Rpb24gc2libGluZ0NoZWNrKCBhLCBiICkge1xuXHR2YXIgY3VyID0gYiAmJiBhLFxuXHRcdGRpZmYgPSBjdXIgJiYgYS5ub2RlVHlwZSA9PT0gMSAmJiBiLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHQoIH5iLnNvdXJjZUluZGV4IHx8IE1BWF9ORUdBVElWRSApIC1cblx0XHRcdCggfmEuc291cmNlSW5kZXggfHwgTUFYX05FR0FUSVZFICk7XG5cblx0Ly8gVXNlIElFIHNvdXJjZUluZGV4IGlmIGF2YWlsYWJsZSBvbiBib3RoIG5vZGVzXG5cdGlmICggZGlmZiApIHtcblx0XHRyZXR1cm4gZGlmZjtcblx0fVxuXG5cdC8vIENoZWNrIGlmIGIgZm9sbG93cyBhXG5cdGlmICggY3VyICkge1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5uZXh0U2libGluZykgKSB7XG5cdFx0XHRpZiAoIGN1ciA9PT0gYiApIHtcblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBhID8gMSA6IC0xO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgaW5wdXQgdHlwZXNcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUlucHV0UHNldWRvKCB0eXBlICkge1xuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0cmV0dXJuIG5hbWUgPT09IFwiaW5wdXRcIiAmJiBlbGVtLnR5cGUgPT09IHR5cGU7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBidXR0b25zXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICovXG5mdW5jdGlvbiBjcmVhdGVCdXR0b25Qc2V1ZG8oIHR5cGUgKSB7XG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRyZXR1cm4gKG5hbWUgPT09IFwiaW5wdXRcIiB8fCBuYW1lID09PSBcImJ1dHRvblwiKSAmJiBlbGVtLnR5cGUgPT09IHR5cGU7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBwb3NpdGlvbmFsc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZm5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZm4gKSB7XG5cdHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIGFyZ3VtZW50ICkge1xuXHRcdGFyZ3VtZW50ID0gK2FyZ3VtZW50O1xuXHRcdHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMgKSB7XG5cdFx0XHR2YXIgaixcblx0XHRcdFx0bWF0Y2hJbmRleGVzID0gZm4oIFtdLCBzZWVkLmxlbmd0aCwgYXJndW1lbnQgKSxcblx0XHRcdFx0aSA9IG1hdGNoSW5kZXhlcy5sZW5ndGg7XG5cblx0XHRcdC8vIE1hdGNoIGVsZW1lbnRzIGZvdW5kIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXhlc1xuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGlmICggc2VlZFsgKGogPSBtYXRjaEluZGV4ZXNbaV0pIF0gKSB7XG5cdFx0XHRcdFx0c2VlZFtqXSA9ICEobWF0Y2hlc1tqXSA9IHNlZWRbal0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0pO1xufVxuXG4vKipcbiAqIENoZWNrcyBhIG5vZGUgZm9yIHZhbGlkaXR5IGFzIGEgU2l6emxlIGNvbnRleHRcbiAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3Q9fSBjb250ZXh0XG4gKiBAcmV0dXJucyB7RWxlbWVudHxPYmplY3R8Qm9vbGVhbn0gVGhlIGlucHV0IG5vZGUgaWYgYWNjZXB0YWJsZSwgb3RoZXJ3aXNlIGEgZmFsc3kgdmFsdWVcbiAqL1xuZnVuY3Rpb24gdGVzdENvbnRleHQoIGNvbnRleHQgKSB7XG5cdHJldHVybiBjb250ZXh0ICYmIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnRleHQ7XG59XG5cbi8vIEV4cG9zZSBzdXBwb3J0IHZhcnMgZm9yIGNvbnZlbmllbmNlXG5zdXBwb3J0ID0gU2l6emxlLnN1cHBvcnQgPSB7fTtcblxuLyoqXG4gKiBEZXRlY3RzIFhNTCBub2Rlc1xuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdH0gZWxlbSBBbiBlbGVtZW50IG9yIGEgZG9jdW1lbnRcbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmZiBlbGVtIGlzIGEgbm9uLUhUTUwgWE1MIG5vZGVcbiAqL1xuaXNYTUwgPSBTaXp6bGUuaXNYTUwgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0Ly8gZG9jdW1lbnRFbGVtZW50IGlzIHZlcmlmaWVkIGZvciBjYXNlcyB3aGVyZSBpdCBkb2Vzbid0IHlldCBleGlzdFxuXHQvLyAoc3VjaCBhcyBsb2FkaW5nIGlmcmFtZXMgaW4gSUUgLSAjNDgzMylcblx0dmFyIGRvY3VtZW50RWxlbWVudCA9IGVsZW0gJiYgKGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtKS5kb2N1bWVudEVsZW1lbnQ7XG5cdHJldHVybi
14938Bkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQubm9kZU5hbWUgIT09IFwiSFRNTFwiIDogZmFsc2U7XG59O1xuXG4vKipcbiAqIFNldHMgZG9jdW1lbnQtcmVsYXRlZCB2YXJpYWJsZXMgb25jZSBiYXNlZCBvbiB0aGUgY3VycmVudCBkb2N1bWVudFxuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdH0gW2RvY10gQW4gZWxlbWVudCBvciBkb2N1bWVudCBvYmplY3QgdG8gdXNlIHRvIHNldCB0aGUgZG9jdW1lbnRcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGN1cnJlbnQgZG9jdW1lbnRcbiAqL1xuc2V0RG9jdW1lbnQgPSBTaXp6bGUuc2V0RG9jdW1lbnQgPSBmdW5jdGlvbiggbm9kZSApIHtcblx0dmFyIGhhc0NvbXBhcmUsIHBhcmVudCxcblx0XHRkb2MgPSBub2RlID8gbm9kZS5vd25lckRvY3VtZW50IHx8IG5vZGUgOiBwcmVmZXJyZWREb2M7XG5cblx0Ly8gSWYgbm8gZG9jdW1lbnQgYW5kIGRvY3VtZW50RWxlbWVudCBpcyBhdmFpbGFibGUsIHJldHVyblxuXHRpZiAoIGRvYyA9PT0gZG9jdW1lbnQgfHwgZG9jLm5vZGVUeXBlICE9PSA5IHx8ICFkb2MuZG9jdW1lbnRFbGVtZW50ICkge1xuXHRcdHJldHVybiBkb2N1bWVudDtcblx0fVxuXG5cdC8vIFNldCBvdXIgZG9jdW1lbnRcblx0ZG9jdW1lbnQgPSBkb2M7XG5cdGRvY0VsZW0gPSBkb2MuZG9jdW1lbnRFbGVtZW50O1xuXHRwYXJlbnQgPSBkb2MuZGVmYXVsdFZpZXc7XG5cblx0Ly8gU3VwcG9ydDogSUU+OFxuXHQvLyBJZiBpZnJhbWUgZG9jdW1lbnQgaXMgYXNzaWduZWQgdG8gXCJkb2N1bWVudFwiIHZhcmlhYmxlIGFuZCBpZiBpZnJhbWUgaGFzIGJlZW4gcmVsb2FkZWQsXG5cdC8vIElFIHdpbGwgdGhyb3cgXCJwZXJtaXNzaW9uIGRlbmllZFwiIGVycm9yIHdoZW4gYWNjZXNzaW5nIFwiZG9jdW1lbnRcIiB2YXJpYWJsZSwgc2VlIGpRdWVyeSAjMTM5MzZcblx0Ly8gSUU2LTggZG8gbm90IHN1cHBvcnQgdGhlIGRlZmF1bHRWaWV3IHByb3BlcnR5IHNvIHBhcmVudCB3aWxsIGJlIHVuZGVmaW5lZFxuXHRpZiAoIHBhcmVudCAmJiBwYXJlbnQgIT09IHBhcmVudC50b3AgKSB7XG5cdFx0Ly8gSUUxMSBkb2VzIG5vdCBoYXZlIGF0dGFjaEV2ZW50LCBzbyBhbGwgbXVzdCBzdWZmZXJcblx0XHRpZiAoIHBhcmVudC5hZGRFdmVudExpc3RlbmVyICkge1xuXHRcdFx0cGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoIFwidW5sb2FkXCIsIHVubG9hZEhhbmRsZXIsIGZhbHNlICk7XG5cdFx0fSBlbHNlIGlmICggcGFyZW50LmF0dGFjaEV2ZW50ICkge1xuXHRcdFx0cGFyZW50LmF0dGFjaEV2ZW50KCBcIm9udW5sb2FkXCIsIHVubG9hZEhhbmRsZXIgKTtcblx0XHR9XG5cdH1cblxuXHQvKiBTdXBwb3J0IHRlc3RzXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0ZG9jdW1lbnRJc0hUTUwgPSAhaXNYTUwoIGRvYyApO1xuXG5cdC8qIEF0dHJpYnV0ZXNcblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8vIFN1cHBvcnQ6IElFPDhcblx0Ly8gVmVyaWZ5IHRoYXQgZ2V0QXR0cmlidXRlIHJlYWxseSByZXR1cm5zIGF0dHJpYnV0ZXMgYW5kIG5vdCBwcm9wZXJ0aWVzXG5cdC8vIChleGNlcHRpbmcgSUU4IGJvb2xlYW5zKVxuXHRzdXBwb3J0LmF0dHJpYnV0ZXMgPSBhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcblx0XHRkaXYuY2xhc3NOYW1lID0gXCJpXCI7XG5cdFx0cmV0dXJuICFkaXYuZ2V0QXR0cmlidXRlKFwiY2xhc3NOYW1lXCIpO1xuXHR9KTtcblxuXHQvKiBnZXRFbGVtZW50KHMpQnkqXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBDaGVjayBpZiBnZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIikgcmV0dXJucyBvbmx5IGVsZW1lbnRzXG5cdHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcblx0XHRkaXYuYXBwZW5kQ2hpbGQoIGRvYy5jcmVhdGVDb21tZW50KFwiXCIpICk7XG5cdFx0cmV0dXJuICFkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpLmxlbmd0aDtcblx0fSk7XG5cblx0Ly8gU3VwcG9ydDogSUU8OVxuXHRzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBybmF0aXZlLnRlc3QoIGRvYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICk7XG5cblx0Ly8gU3VwcG9ydDogSUU8MTBcblx0Ly8gQ2hlY2sgaWYgZ2V0RWxlbWVudEJ5SWQgcmV0dXJucyBlbGVtZW50cyBieSBuYW1lXG5cdC8vIFRoZSBicm9rZW4gZ2V0RWxlbWVudEJ5SWQgbWV0aG9kcyBkb24ndCBwaWNrIHVwIHByb2dyYW1hdGljYWxseS1zZXQgbmFtZXMsXG5cdC8vIHNvIHVzZSBhIHJvdW5kYWJvdXQgZ2V0RWxlbWVudHNCeU5hbWUgdGVzdFxuXHRzdXBwb3J0LmdldEJ5SWQgPSBhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcblx0XHRkb2NFbGVtLmFwcGVuZENoaWxkKCBkaXYgKS5pZCA9IGV4cGFuZG87XG5cdFx0cmV0dXJuICFkb2MuZ2V0RWxlbWVudHNCeU5hbWUgfHwgIWRvYy5nZXRFbGVtZW50c0J5TmFtZSggZXhwYW5kbyApLmxlbmd0aDtcblx0fSk7XG5cblx0Ly8gSUQgZmluZCBhbmQgZmlsdGVyXG5cdGlmICggc3VwcG9ydC5nZXRCeUlkICkge1xuXHRcdEV4cHIuZmluZFtcIklEXCJdID0gZnVuY3Rpb24oIGlkLCBjb250ZXh0ICkge1xuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkb2N1bWVudElzSFRNTCApIHtcblx0XHRcdFx0dmFyIG0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBpZCApO1xuXHRcdFx0XHQvLyBDaGVjayBwYXJlbnROb2RlIHRvIGNhdGNoIHdoZW4gQmxhY2tiZXJyeSA0LjYgcmV0dXJuc1xuXHRcdFx0XHQvLyBub2RlcyB0aGF0IGFyZSBubyBsb25nZXIgaW4gdGhlIGRvY3VtZW50ICM2OTYzXG5cdFx0XHRcdHJldHVybiBtICYmIG0ucGFyZW50Tm9kZSA/IFsgbSBdIDogW107XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRFeHByLmZpbHRlcltcIklEXCJdID0gZnVuY3Rpb24oIGlkICkge1xuXHRcdFx0dmFyIGF0dHJJZCA9IGlkLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybi
14938BlbGVtLmdldEF0dHJpYnV0ZShcImlkXCIpID09PSBhdHRySWQ7XG5cdFx0XHR9O1xuXHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0Ly8gU3VwcG9ydDogSUU2Lzdcblx0XHQvLyBnZXRFbGVtZW50QnlJZCBpcyBub3QgcmVsaWFibGUgYXMgYSBmaW5kIHNob3J0Y3V0XG5cdFx0ZGVsZXRlIEV4cHIuZmluZFtcIklEXCJdO1xuXG5cdFx0RXhwci5maWx0ZXJbXCJJRFwiXSA9ICBmdW5jdGlvbiggaWQgKSB7XG5cdFx0XHR2YXIgYXR0cklkID0gaWQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0dmFyIG5vZGUgPSB0eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGVOb2RlICE9PSBcInVuZGVmaW5lZFwiICYmIGVsZW0uZ2V0QXR0cmlidXRlTm9kZShcImlkXCIpO1xuXHRcdFx0XHRyZXR1cm4gbm9kZSAmJiBub2RlLnZhbHVlID09PSBhdHRySWQ7XG5cdFx0XHR9O1xuXHRcdH07XG5cdH1cblxuXHQvLyBUYWdcblx0RXhwci5maW5kW1wiVEFHXCJdID0gc3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFtZSA/XG5cdFx0ZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHtcblx0XHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IFwidW5kZWZpbmVkXCIgKSB7XG5cdFx0XHRcdHJldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgKTtcblxuXHRcdFx0Ly8gRG9jdW1lbnRGcmFnbWVudCBub2RlcyBkb24ndCBoYXZlIGdFQlROXG5cdFx0XHR9IGVsc2UgaWYgKCBzdXBwb3J0LnFzYSApIHtcblx0XHRcdFx0cmV0dXJuIGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggdGFnICk7XG5cdFx0XHR9XG5cdFx0fSA6XG5cblx0XHRmdW5jdGlvbiggdGFnLCBjb250ZXh0ICkge1xuXHRcdFx0dmFyIGVsZW0sXG5cdFx0XHRcdHRtcCA9IFtdLFxuXHRcdFx0XHRpID0gMCxcblx0XHRcdFx0Ly8gQnkgaGFwcHkgY29pbmNpZGVuY2UsIGEgKGJyb2tlbikgZ0VCVE4gYXBwZWFycyBvbiBEb2N1bWVudEZyYWdtZW50IG5vZGVzIHRvb1xuXHRcdFx0XHRyZXN1bHRzID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7XG5cblx0XHRcdC8vIEZpbHRlciBvdXQgcG9zc2libGUgY29tbWVudHNcblx0XHRcdGlmICggdGFnID09PSBcIipcIiApIHtcblx0XHRcdFx0d2hpbGUgKCAoZWxlbSA9IHJlc3VsdHNbaSsrXSkgKSB7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRcdFx0dG1wLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdG1wO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0fTtcblxuXHQvLyBDbGFzc1xuXHRFeHByLmZpbmRbXCJDTEFTU1wiXSA9IHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJiBmdW5jdGlvbiggY2xhc3NOYW1lLCBjb250ZXh0ICkge1xuXHRcdGlmICggZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBjbGFzc05hbWUgKTtcblx0XHR9XG5cdH07XG5cblx0LyogUVNBL21hdGNoZXNTZWxlY3RvclxuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gUVNBIGFuZCBtYXRjaGVzU2VsZWN0b3Igc3VwcG9ydFxuXG5cdC8vIG1hdGNoZXNTZWxlY3Rvcig6YWN0aXZlKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoSUU5L09wZXJhIDExLjUpXG5cdHJidWdneU1hdGNoZXMgPSBbXTtcblxuXHQvLyBxU2EoOmZvY3VzKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoQ2hyb21lIDIxKVxuXHQvLyBXZSBhbGxvdyB0aGlzIGJlY2F1c2Ugb2YgYSBidWcgaW4gSUU4LzkgdGhhdCB0aHJvd3MgYW4gZXJyb3Jcblx0Ly8gd2hlbmV2ZXIgYGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRgIGlzIGFjY2Vzc2VkIG9uIGFuIGlmcmFtZVxuXHQvLyBTbywgd2UgYWxsb3cgOmZvY3VzIHRvIHBhc3MgdGhyb3VnaCBRU0EgYWxsIHRoZSB0aW1lIHRvIGF2b2lkIHRoZSBJRSBlcnJvclxuXHQvLyBTZWUgaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTMzNzhcblx0cmJ1Z2d5UVNBID0gW107XG5cblx0aWYgKCAoc3VwcG9ydC5xc2EgPSBybmF0aXZlLnRlc3QoIGRvYy5xdWVyeVNlbGVjdG9yQWxsICkpICkge1xuXHRcdC8vIEJ1aWxkIFFTQSByZWdleFxuXHRcdC8vIFJlZ2V4IHN0cmF0ZWd5IGFkb3B0ZWQgZnJvbSBEaWVnbyBQZXJpbmlcblx0XHRhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcblx0XHRcdC8vIFNlbGVjdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nIG9uIHB1cnBvc2Vcblx0XHRcdC8vIFRoaXMgaXMgdG8gdGVzdCBJRSdzIHRyZWF0bWVudCBvZiBub3QgZXhwbGljaXRseVxuXHRcdFx0Ly8gc2V0dGluZyBhIGJvb2xlYW4gY29udGVudCBhdHRyaWJ1dGUsXG5cdFx0XHQvLyBzaW5jZSBpdHMgcHJlc2VuY2Ugc2hvdWxkIGJlIGVub3VnaFxuXHRcdFx0Ly8gaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzNTlcblx0XHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGRpdiApLmlubmVySFRNTCA9IFwiPGEgaWQ9J1wiICsgZXhwYW5kbyArIFwiJz48L2E+XCIgK1xuXHRcdFx0XHRcIjxzZWxlY3QgaWQ9J1wiICsgZXhwYW5kbyArIFwiLVxcZl0nIG1zYWxsb3djYXB0dXJlPScnPlwiICtcblx0XHRcdFx0XCI8b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PlwiO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRTgsIE9wZXJhIDExLTEyLjE2XG5cdFx0XHQvLyBOb3RoaW5nIHNob3VsZCBiZSBzZWxlY3RlZCB3aGVuIGVtcHR5IHN0cmluZ3MgZm9sbG93IF49IG9yICQ9IG9y
14938ICo9XG5cdFx0XHQvLyBUaGUgdGVzdCBhdHRyaWJ1dGUgbXVzdCBiZSB1bmtub3duIGluIE9wZXJhIGJ1dCBcInNhZmVcIiBmb3IgV2luUlRcblx0XHRcdC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9oaDQ2NTM4OC5hc3B4I2F0dHJpYnV0ZV9zZWN0aW9uXG5cdFx0XHRpZiAoIGRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiW21zYWxsb3djYXB0dXJlXj0nJ11cIikubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJbKl4kXT1cIiArIHdoaXRlc3BhY2UgKyBcIiooPzonJ3xcXFwiXFxcIilcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRThcblx0XHRcdC8vIEJvb2xlYW4gYXR0cmlidXRlcyBhbmQgXCJ2YWx1ZVwiIGFyZSBub3QgdHJlYXRlZCBjb3JyZWN0bHlcblx0XHRcdGlmICggIWRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiW3NlbGVjdGVkXVwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIlxcXFxbXCIgKyB3aGl0ZXNwYWNlICsgXCIqKD86dmFsdWV8XCIgKyBib29sZWFucyArIFwiKVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZTwyOSwgQW5kcm9pZDw0LjIrLCBTYWZhcmk8Ny4wKywgaU9TPDcuMCssIFBoYW50b21KUzwxLjkuNytcblx0XHRcdGlmICggIWRpdi5xdWVyeVNlbGVjdG9yQWxsKCBcIltpZH49XCIgKyBleHBhbmRvICsgXCItXVwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaChcIn49XCIpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBXZWJraXQvT3BlcmEgLSA6Y2hlY2tlZCBzaG91bGQgcmV0dXJuIHNlbGVjdGVkIG9wdGlvbiBlbGVtZW50c1xuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWRcblx0XHRcdC8vIElFOCB0aHJvd3MgZXJyb3IgaGVyZSBhbmQgd2lsbCBub3Qgc2VlIGxhdGVyIHRlc3RzXG5cdFx0XHRpZiAoICFkaXYucXVlcnlTZWxlY3RvckFsbChcIjpjaGVja2VkXCIpLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goXCI6Y2hlY2tlZFwiKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3VwcG9ydDogU2FmYXJpIDgrLCBpT1MgOCtcblx0XHRcdC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY4NTFcblx0XHRcdC8vIEluLXBhZ2UgYHNlbGVjdG9yI2lkIHNpYmluZy1jb21iaW5hdG9yIHNlbGVjdG9yYCBmYWlsc1xuXHRcdFx0aWYgKCAhZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoIFwiYSNcIiArIGV4cGFuZG8gKyBcIisqXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKFwiLiMuK1srfl1cIik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcblx0XHRcdC8vIFN1cHBvcnQ6IFdpbmRvd3MgOCBOYXRpdmUgQXBwc1xuXHRcdFx0Ly8gVGhlIHR5cGUgYW5kIG5hbWUgYXR0cmlidXRlcyBhcmUgcmVzdHJpY3RlZCBkdXJpbmcgLmlubmVySFRNTCBhc3NpZ25tZW50XG5cdFx0XHR2YXIgaW5wdXQgPSBkb2MuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuXHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCBcInR5cGVcIiwgXCJoaWRkZW5cIiApO1xuXHRcdFx0ZGl2LmFwcGVuZENoaWxkKCBpbnB1dCApLnNldEF0dHJpYnV0ZSggXCJuYW1lXCIsIFwiRFwiICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOFxuXHRcdFx0Ly8gRW5mb3JjZSBjYXNlLXNlbnNpdGl2aXR5IG9mIG5hbWUgYXR0cmlidXRlXG5cdFx0XHRpZiAoIGRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiW25hbWU9ZF1cIikubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJuYW1lXCIgKyB3aGl0ZXNwYWNlICsgXCIqWypeJHwhfl0/PVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEZGID
14938MuNSAtIDplbmFibGVkLzpkaXNhYmxlZCBhbmQgaGlkZGVuIGVsZW1lbnRzIChoaWRkZW4gZWxlbWVudHMgYXJlIHN0aWxsIGVuYWJsZWQpXG5cdFx0XHQvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUgYW5kIHdpbGwgbm90IHNlZSBsYXRlciB0ZXN0c1xuXHRcdFx0aWYgKCAhZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCI6ZW5hYmxlZFwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIjplbmFibGVkXCIsIFwiOmRpc2FibGVkXCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gT3BlcmEgMTAtMTEgZG9lcyBub3QgdGhyb3cgb24gcG9zdC1jb21tYSBpbnZhbGlkIHBzZXVkb3Ncblx0XHRcdGRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiKiw6eFwiKTtcblx0XHRcdHJidWdneVFTQS5wdXNoKFwiLC4qOlwiKTtcblx0XHR9KTtcblx0fVxuXG5cdGlmICggKHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yID0gcm5hdGl2ZS50ZXN0KCAobWF0Y2hlcyA9IGRvY0VsZW0ubWF0Y2hlcyB8fFxuXHRcdGRvY0VsZW0ud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8XG5cdFx0ZG9jRWxlbS5tb3pNYXRjaGVzU2VsZWN0b3IgfHxcblx0XHRkb2NFbGVtLm9NYXRjaGVzU2VsZWN0b3IgfHxcblx0XHRkb2NFbGVtLm1zTWF0Y2hlc1NlbGVjdG9yKSApKSApIHtcblxuXHRcdGFzc2VydChmdW5jdGlvbiggZGl2ICkge1xuXHRcdFx0Ly8gQ2hlY2sgdG8gc2VlIGlmIGl0J3MgcG9zc2libGUgdG8gZG8gbWF0Y2hlc1NlbGVjdG9yXG5cdFx0XHQvLyBvbiBhIGRpc2Nvbm5lY3RlZCBub2RlIChJRSA5KVxuXHRcdFx0c3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCA9IG1hdGNoZXMuY2FsbCggZGl2LCBcImRpdlwiICk7XG5cblx0XHRcdC8vIFRoaXMgc2hvdWxkIGZhaWwgd2l0aCBhbiBleGNlcHRpb25cblx0XHRcdC8vIEdlY2tvIGRvZXMgbm90IGVycm9yLCByZXR1cm5zIGZhbHNlIGluc3RlYWRcblx0XHRcdG1hdGNoZXMuY2FsbCggZGl2LCBcIltzIT0nJ106eFwiICk7XG5cdFx0XHRyYnVnZ3lNYXRjaGVzLnB1c2goIFwiIT1cIiwgcHNldWRvcyApO1xuXHRcdH0pO1xuXHR9XG5cblx0cmJ1Z2d5UVNBID0gcmJ1Z2d5UVNBLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCByYnVnZ3lRU0Euam9pbihcInxcIikgKTtcblx0cmJ1Z2d5TWF0Y2hlcyA9IHJidWdneU1hdGNoZXMubGVuZ3RoICYmIG5ldyBSZWdFeHAoIHJidWdneU1hdGNoZXMuam9pbihcInxcIikgKTtcblxuXHQvKiBDb250YWluc1xuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdGhhc0NvbXBhcmUgPSBybmF0aXZlLnRlc3QoIGRvY0VsZW0uY29tcGFyZURvY3VtZW50UG9zaXRpb24gKTtcblxuXHQvLyBFbGVtZW50IGNvbnRhaW5zIGFub3RoZXJcblx0Ly8gUHVycG9zZWZ1bGx5IGRvZXMgbm90IGltcGxlbWVudCBpbmNsdXNpdmUgZGVzY2VuZGVudFxuXHQvLyBBcyBpbiwgYW4gZWxlbWVudCBkb2VzIG5vdCBjb250YWluIGl0c2VsZlxuXHRjb250YWlucyA9IGhhc0NvbXBhcmUgfHwgcm5hdGl2ZS50ZXN0KCBkb2NFbGVtLmNvbnRhaW5zICkgP1xuXHRcdGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdFx0dmFyIGFkb3duID0gYS5ub2RlVHlwZSA9PT0gOSA/IGEuZG9jdW1lbnRFbGVtZW50IDogYSxcblx0XHRcdFx0YnVwID0gYiAmJiBiLnBhcmVudE5vZGU7XG5cdFx0XHRyZXR1cm4gYSA9PT0gYnVwIHx8ICEhKCBidXAgJiYgYnVwLm5vZGVUeXBlID09PSAxICYmIChcblx0XHRcdFx0YWRvd24uY29udGFpbnMgP1xuXHRcdFx0XHRcdGFkb3duLmNvbnRhaW5zKCBidXAgKSA6XG5cdFx0XHRcdFx0YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBidXAgKSAmIDE2XG5cdFx0XHQpKTtcblx0XHR9IDpcblx0XHRmdW5jdGlvbiggYSwgYiApIHtcblx0XHRcdGlmICggYiApIHtcblx0XHRcdFx0d2hpbGUgKCAoYiA9IGIucGFyZW50Tm9kZSkgKSB7XG5cdFx0XHRcdFx0aWYgKCBiID09PSBhICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fTtcblxuXHQvKiBTb3J0aW5nXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBEb2N1bWVudCBvcmRlciBzb3J0aW5nXG5cdHNvcnRPcmRlciA9IGhhc0NvbXBhcmUgP1xuXHRmdW5jdGlvbiggYSwgYiApIHtcblxuXHRcdC8vIEZsYWcgZm9yIGR1cGxpY2F0ZSByZW1vdmFsXG5cdFx0aWYgKCBhID09PSBiICkge1xuXHRcdFx0aGFzRHVwbGljYXRlID0gdHJ1ZTtcblx0XHRcdHJldHVybiAwO1xuXHRcdH1cblxuXHRcdC8vIFNvcnQgb24gbWV0aG9kIGV4aXN0ZW5jZSBpZiBvbmx5IG9uZSBpbnB1dCBoYXMgY29tcGFyZURvY3VtZW50UG9zaXRpb25cblx0XHR2YXIgY29tcGFyZSA9ICFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIC0gIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb247XG5cdFx0aWYgKCBjb21wYXJlICkge1xuXHRcdFx0cmV0dXJuIGNvbXBhcmU7XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsY3VsYXRlIHBvc2l0aW9uIGlmIGJvdGggaW5wdXRzIGJlbG9uZyB0byB0aGUgc2FtZSBkb2N1bWVudFxuXHRcdGNvbXBhcmUgPSAoIGEub3duZXJEb2N1bWVudCB8fCBhICkgPT09ICggYi5vd25lckRvY3VtZW50IHx8IGIgKSA/XG5cdFx0XHRhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBiICkgOlxuXG5cdFx0XHQvLyBPdGhlcndpc2Ugd2Uga25vdyB0aGV5IGFyZSBkaXNjb25uZWN0ZWRcblx0XHRcdDE7XG5cblx0XHQvLyBEaXNjb25uZWN0ZWQgbm9kZXNcblx0XHRpZiAoIGNvbXBhcmUgJiAxIHx8XG5cdFx0XHQoIXN1cHBvcnQuc29ydERldGFjaGVkICYmIGIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGEgKSA9PT0gY29tcGFyZSkgKSB7XG5cblx0XHRcdC8vIENob29zZSB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IGlzIHJlbGF0ZWQgdG8gb3VyIHByZWZlcnJlZCBkb2N1bWVudFxuXHRcdFx0aWYgKCBhID09PSBkb2MgfHwgYS5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWREb2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBhKSApIHtcblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBiID09PSBkb2MgfHwgYi5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWREb2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBiKSApIHtcblx0XHRcdFx0cmV0dXJuIDE7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE1haW50YWluIG9yaWdpbmFsIG9yZGVyXG5cdFx0XHRyZXR1cm4gc29ydElucHV0ID9cblx0XHRcdFx0KCBpbmRleE9mKCBzb3J0SW5wdXQsIGEgKSAtIGluZGV4T2YoIHNvcnRJbnB1dCwgYiApICkgOlxuXHRcdFx0XHQwO1xuXHRcdH1cblxuXHRcdHJldHVybi
14938Bjb21wYXJlICYgNCA/IC0xIDogMTtcblx0fSA6XG5cdGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdC8vIEV4aXQgZWFybHkgaWYgdGhlIG5vZGVzIGFyZSBpZGVudGljYWxcblx0XHRpZiAoIGEgPT09IGIgKSB7XG5cdFx0XHRoYXNEdXBsaWNhdGUgPSB0cnVlO1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0dmFyIGN1cixcblx0XHRcdGkgPSAwLFxuXHRcdFx0YXVwID0gYS5wYXJlbnROb2RlLFxuXHRcdFx0YnVwID0gYi5wYXJlbnROb2RlLFxuXHRcdFx0YXAgPSBbIGEgXSxcblx0XHRcdGJwID0gWyBiIF07XG5cblx0XHQvLyBQYXJlbnRsZXNzIG5vZGVzIGFyZSBlaXRoZXIgZG9jdW1lbnRzIG9yIGRpc2Nvbm5lY3RlZFxuXHRcdGlmICggIWF1cCB8fCAhYnVwICkge1xuXHRcdFx0cmV0dXJuIGEgPT09IGRvYyA/IC0xIDpcblx0XHRcdFx0YiA9PT0gZG9jID8gMSA6XG5cdFx0XHRcdGF1cCA/IC0xIDpcblx0XHRcdFx0YnVwID8gMSA6XG5cdFx0XHRcdHNvcnRJbnB1dCA/XG5cdFx0XHRcdCggaW5kZXhPZiggc29ydElucHV0LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDpcblx0XHRcdFx0MDtcblxuXHRcdC8vIElmIHRoZSBub2RlcyBhcmUgc2libGluZ3MsIHdlIGNhbiBkbyBhIHF1aWNrIGNoZWNrXG5cdFx0fSBlbHNlIGlmICggYXVwID09PSBidXAgKSB7XG5cdFx0XHRyZXR1cm4gc2libGluZ0NoZWNrKCBhLCBiICk7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXJ3aXNlIHdlIG5lZWQgZnVsbCBsaXN0cyBvZiB0aGVpciBhbmNlc3RvcnMgZm9yIGNvbXBhcmlzb25cblx0XHRjdXIgPSBhO1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHtcblx0XHRcdGFwLnVuc2hpZnQoIGN1ciApO1xuXHRcdH1cblx0XHRjdXIgPSBiO1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHtcblx0XHRcdGJwLnVuc2hpZnQoIGN1ciApO1xuXHRcdH1cblxuXHRcdC8vIFdhbGsgZG93biB0aGUgdHJlZSBsb29raW5nIGZvciBhIGRpc2NyZXBhbmN5XG5cdFx0d2hpbGUgKCBhcFtpXSA9PT0gYnBbaV0gKSB7XG5cdFx0XHRpKys7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGkgP1xuXHRcdFx0Ly8gRG8gYSBzaWJsaW5nIGNoZWNrIGlmIHRoZSBub2RlcyBoYXZlIGEgY29tbW9uIGFuY2VzdG9yXG5cdFx0XHRzaWJsaW5nQ2hlY2soIGFwW2ldLCBicFtpXSApIDpcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIG5vZGVzIGluIG91ciBkb2N1bWVudCBzb3J0IGZpcnN0XG5cdFx0XHRhcFtpXSA9PT0gcHJlZmVycmVkRG9jID8gLTEgOlxuXHRcdFx0YnBbaV0gPT09IHByZWZlcnJlZERvYyA/IDEgOlxuXHRcdFx0MDtcblx0fTtcblxuXHRyZXR1cm4gZG9jO1xufTtcblxuU2l6emxlLm1hdGNoZXMgPSBmdW5jdGlvbiggZXhwciwgZWxlbWVudHMgKSB7XG5cdHJldHVybiBTaXp6bGUoIGV4cHIsIG51bGwsIG51bGwsIGVsZW1lbnRzICk7XG59O1xuXG5TaXp6bGUubWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24oIGVsZW0sIGV4cHIgKSB7XG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHRpZiAoICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGVsZW0gKTtcblx0fVxuXG5cdC8vIE1ha2Ugc3VyZSB0aGF0IGF0dHJpYnV0ZSBzZWxlY3RvcnMgYXJlIHF1b3RlZFxuXHRleHByID0gZXhwci5yZXBsYWNlKCByYXR0cmlidXRlUXVvdGVzLCBcIj0nJDEnXVwiICk7XG5cblx0aWYgKCBzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciAmJiBkb2N1bWVudElzSFRNTCAmJlxuXHRcdCggIXJidWdneU1hdGNoZXMgfHwgIXJidWdneU1hdGNoZXMudGVzdCggZXhwciApICkgJiZcblx0XHQoICFyYnVnZ3lRU0EgICAgIHx8ICFyYnVnZ3lRU0EudGVzdCggZXhwciApICkgKSB7XG5cblx0XHR0cnkge1xuXHRcdFx0dmFyIHJldCA9IG1hdGNoZXMuY2FsbCggZWxlbSwgZXhwciApO1xuXG5cdFx0XHQvLyBJRSA5J3MgbWF0Y2hlc1NlbGVjdG9yIHJldHVybnMgZmFsc2Ugb24gZGlzY29ubmVjdGVkIG5vZGVzXG5cdFx0XHRpZiAoIHJldCB8fCBzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoIHx8XG5cdFx0XHRcdFx0Ly8gQXMgd2VsbCwgZGlzY29ubmVjdGVkIG5vZGVzIGFyZSBzYWlkIHRvIGJlIGluIGEgZG9jdW1lbnRcblx0XHRcdFx0XHQvLyBmcmFnbWVudCBpbiBJRSA5XG5cdFx0XHRcdFx0ZWxlbS5kb2N1bWVudCAmJiBlbGVtLmRvY3VtZW50Lm5vZGVUeXBlICE9PSAxMSApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7fVxuXHR9XG5cblx0cmV0dXJuIFNpenpsZSggZXhwciwgZG9jdW1lbnQsIG51bGwsIFsgZWxlbSBdICkubGVuZ3RoID4gMDtcbn07XG5cblNpenpsZS5jb250YWlucyA9IGZ1bmN0aW9uKCBjb250ZXh0LCBlbGVtICkge1xuXHQvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWRcblx0aWYgKCAoIGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0ICkgIT09IGRvY3VtZW50ICkge1xuXHRcdHNldERvY3VtZW50KCBjb250ZXh0ICk7XG5cdH1cblx0cmV0dXJuIGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICk7XG59O1xuXG5TaXp6bGUuYXR0ciA9IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHQvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWRcblx0aWYgKCAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtICkgIT09IGRvY3VtZW50ICkge1xuXHRcdHNldERvY3VtZW50KCBlbGVtICk7XG5cdH1cblxuXHR2YXIgZm4gPSBFeHByLmF0dHJIYW5kbGVbIG5hbWUudG9Mb3dlckNhc2UoKSBdLFxuXHRcdC8vIERvbid0IGdldCBmb29sZWQgYnkgT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzIChqUXVlcnkgIzEzODA3KVxuXHRcdHZhbCA9IGZuICYmIGhhc093bi5jYWxsKCBFeHByLmF0dHJIYW5kbGUsIG5hbWUudG9Mb3dlckNhc2UoKSApID9cblx0XHRcdGZuKCBlbGVtLCBuYW1lLCAhZG9jdW1lbnRJc0hUTUwgKSA6XG5cdFx0XHR1bmRlZmluZWQ7XG5cblx0cmV0dXJuIHZhbCAhPT0gdW5kZWZpbmVkID9cblx0XHR2YWwgOlxuXHRcdHN1cHBvcnQuYXR0cmlidXRlcyB8fCAhZG9jdW1lbnRJc0hUTUwgP1xuXHRcdFx0ZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKSA6XG5cdFx0XHQodmFsID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpKSAmJiB2YWwuc3BlY2lmaWVkID9cblx0XHRcdFx0dmFsLnZhbHVlIDpcblx0XHRcdFx0bnVsbDtcbn07XG5cblNpenpsZS5lcnJvciA9IGZ1bmN0aW9uKCBtc2cgKSB7XG5cdHRocm93IG5ldyBFcnJvciggXCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiBcIiArIG1zZyApO1xufTtcblxuLyoqXG4gKiBEb2N1bWVudCBzb3J0aW5nIGFuZCByZW1vdmluZyBkdXBsaWNhdGVzXG4gKiBAcGFyYW0ge0FycmF5TGlrZX0gcmVzdWx0c1xuICovXG5TaXp6bGUudW5pcXVlU29ydCA9IGZ1bmN0aW9uKCByZXN1bHRzICkge1xuXHR2YXIgZWxlbSxcblx0XHRkdXBsaWNhdGVzID0gW10sXG5cdFx0aiA9IDAsXG5cdFx0aSA9IDA7XG5cblx0Ly8gVW5sZXNzIHdlICprbm93KiB3ZSBjYW4gZGV0ZWN0IGR1cGxpY2F0ZXMsIGFzc3VtZSB0aGVpciBwcmVzZW5jZVxuXHRoYXNEdXBsaWNhdGUgPSAhc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzO1xuXHRzb3J0SW5wdXQgPSAhc3VwcG9ydC5zb3J0U3RhYmxlICYmIHJlc3VsdHMuc2xpY2UoIDAgKTtcblx0cmVzdWx0cy5zb3J0KCBzb3J0T3JkZXIgKTtcblxuXHRpZiAoIGhhc0R1cGxpY2F0ZSApIHtcblx0XHR3aGlsZSAoIChlbGVtID0gcmVzdWx0c1tpKytdKSApIHtcblx0XHRcdGlmICggZWxlbSA9PT0gcmVzdWx0c1sgaSBdICkge1xuXHRcdFx0XHRqID0gZHVwbGljYXRlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHd
14938oaWxlICggai0tICkge1xuXHRcdFx0cmVzdWx0cy5zcGxpY2UoIGR1cGxpY2F0ZXNbIGogXSwgMSApO1xuXHRcdH1cblx0fVxuXG5cdC8vIENsZWFyIGlucHV0IGFmdGVyIHNvcnRpbmcgdG8gcmVsZWFzZSBvYmplY3RzXG5cdC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L3NpenpsZS9wdWxsLzIyNVxuXHRzb3J0SW5wdXQgPSBudWxsO1xuXG5cdHJldHVybiByZXN1bHRzO1xufTtcblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRoZSB0ZXh0IHZhbHVlIG9mIGFuIGFycmF5IG9mIERPTSBub2Rlc1xuICogQHBhcmFtIHtBcnJheXxFbGVtZW50fSBlbGVtXG4gKi9cbmdldFRleHQgPSBTaXp6bGUuZ2V0VGV4dCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHR2YXIgbm9kZSxcblx0XHRyZXQgPSBcIlwiLFxuXHRcdGkgPSAwLFxuXHRcdG5vZGVUeXBlID0gZWxlbS5ub2RlVHlwZTtcblxuXHRpZiAoICFub2RlVHlwZSApIHtcblx0XHQvLyBJZiBubyBub2RlVHlwZSwgdGhpcyBpcyBleHBlY3RlZCB0byBiZSBhbiBhcnJheVxuXHRcdHdoaWxlICggKG5vZGUgPSBlbGVtW2krK10pICkge1xuXHRcdFx0Ly8gRG8gbm90IHRyYXZlcnNlIGNvbW1lbnQgbm9kZXNcblx0XHRcdHJldCArPSBnZXRUZXh0KCBub2RlICk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0gMSB8fCBub2RlVHlwZSA9PT0gOSB8fCBub2RlVHlwZSA9PT0gMTEgKSB7XG5cdFx0Ly8gVXNlIHRleHRDb250ZW50IGZvciBlbGVtZW50c1xuXHRcdC8vIGlubmVyVGV4dCB1c2FnZSByZW1vdmVkIGZvciBjb25zaXN0ZW5jeSBvZiBuZXcgbGluZXMgKGpRdWVyeSAjMTExNTMpXG5cdFx0aWYgKCB0eXBlb2YgZWxlbS50ZXh0Q29udGVudCA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiBlbGVtLnRleHRDb250ZW50O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBUcmF2ZXJzZSBpdHMgY2hpbGRyZW5cblx0XHRcdGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkge1xuXHRcdFx0XHRyZXQgKz0gZ2V0VGV4dCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDMgfHwgbm9kZVR5cGUgPT09IDQgKSB7XG5cdFx0cmV0dXJuIGVsZW0ubm9kZVZhbHVlO1xuXHR9XG5cdC8vIERvIG5vdCBpbmNsdWRlIGNvbW1lbnQgb3IgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBub2Rlc1xuXG5cdHJldHVybiByZXQ7XG59O1xuXG5FeHByID0gU2l6emxlLnNlbGVjdG9ycyA9IHtcblxuXHQvLyBDYW4gYmUgYWRqdXN0ZWQgYnkgdGhlIHVzZXJcblx0Y2FjaGVMZW5ndGg6IDUwLFxuXG5cdGNyZWF0ZVBzZXVkbzogbWFya0Z1bmN0aW9uLFxuXG5cdG1hdGNoOiBtYXRjaEV4cHIsXG5cblx0YXR0ckhhbmRsZToge30sXG5cblx0ZmluZDoge30sXG5cblx0cmVsYXRpdmU6IHtcblx0XHRcIj5cIjogeyBkaXI6IFwicGFyZW50Tm9kZVwiLCBmaXJzdDogdHJ1ZSB9LFxuXHRcdFwiIFwiOiB7IGRpcjogXCJwYXJlbnROb2RlXCIgfSxcblx0XHRcIitcIjogeyBkaXI6IFwicHJldmlvdXNTaWJsaW5nXCIsIGZpcnN0OiB0cnVlIH0sXG5cdFx0XCJ+XCI6IHsgZGlyOiBcInByZXZpb3VzU2libGluZ1wiIH1cblx0fSxcblxuXHRwcmVGaWx0ZXI6IHtcblx0XHRcIkFUVFJcIjogZnVuY3Rpb24oIG1hdGNoICkge1xuXHRcdFx0bWF0Y2hbMV0gPSBtYXRjaFsxXS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXG5cdFx0XHQvLyBNb3ZlIHRoZSBnaXZlbiB2YWx1ZSB0byBtYXRjaFszXSB3aGV0aGVyIHF1b3RlZCBvciB1bnF1b3RlZFxuXHRcdFx0bWF0Y2hbM10gPSAoIG1hdGNoWzNdIHx8IG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8IFwiXCIgKS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXG5cdFx0XHRpZiAoIG1hdGNoWzJdID09PSBcIn49XCIgKSB7XG5cdFx0XHRcdG1hdGNoWzNdID0gXCIgXCIgKyBtYXRjaFszXSArIFwiIFwiO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDQgKTtcblx0XHR9LFxuXG5cdFx0XCJDSElMRFwiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHQvKiBtYXRjaGVzIGZyb20gbWF0Y2hFeHByW1wiQ0hJTERcIl1cblx0XHRcdFx0MSB0eXBlIChvbmx5fG50aHwuLi4pXG5cdFx0XHRcdDIgd2hhdCAoY2hpbGR8b2YtdHlwZSlcblx0XHRcdFx0MyBhcmd1bWVudCAoZXZlbnxvZGR8XFxkKnxcXGQqbihbKy1dXFxkKyk/fC4uLilcblx0XHRcdFx0NCB4bi1jb21wb25lbnQgb2YgeG4reSBhcmd1bWVudCAoWystXT9cXGQqbnwpXG5cdFx0XHRcdDUgc2lnbiBvZiB4bi1jb21wb25lbnRcblx0XHRcdFx0NiB4IG9mIHhuLWNvbXBvbmVudFxuXHRcdFx0XHQ3IHNpZ24gb2YgeS1jb21wb25lbnRcblx0XHRcdFx0OCB5IG9mIHktY29tcG9uZW50XG5cdFx0XHQqL1xuXHRcdFx0bWF0Y2hbMV0gPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpO1xuXG5cdFx0XHRpZiAoIG1hdGNoWzFdLnNsaWNlKCAwLCAzICkgPT09IFwibnRoXCIgKSB7XG5cdFx0XHRcdC8vIG50aC0qIHJlcXVpcmVzIGFyZ3VtZW50XG5cdFx0XHRcdGlmICggIW1hdGNoWzNdICkge1xuXHRcdFx0XHRcdFNpenpsZS5lcnJvciggbWF0Y2hbMF0gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIG51bWVyaWMgeCBhbmQgeSBwYXJhbWV0ZXJzIGZvciBFeHByLmZpbHRlci5DSElMRFxuXHRcdFx0XHQvLyByZW1lbWJlciB0aGF0IGZhbHNlL3RydWUgY2FzdCByZXNwZWN0aXZlbHkgdG8gMC8xXG5cdFx0XHRcdG1hdGNoWzRdID0gKyggbWF0Y2hbNF0gPyBtYXRjaFs1XSArIChtYXRjaFs2XSB8fCAxKSA6IDIgKiAoIG1hdGNoWzNdID09PSBcImV2ZW5cIiB8fCBtYXRjaFszXSA9PT0gXCJvZGRcIiApICk7XG5cdFx0XHRcdG1hdGNoWzVdID0gKyggKCBtYXRjaFs3XSArIG1hdGNoWzhdICkgfHwgbWF0Y2hbM10gPT09IFwib2RkXCIgKTtcblxuXHRcdFx0Ly8gb3RoZXIgdHlwZXMgcHJvaGliaXQgYXJndW1lbnRzXG5cdFx0XHR9IGVsc2UgaWYgKCBtYXRjaFszXSApIHtcblx0XHRcdFx0U2l6emxlLmVycm9yKCBtYXRjaFswXSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbWF0Y2g7XG5cdFx0fSxcblxuXHRcdFwiUFNFVURPXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblx0XHRcdHZhciBleGNlc3MsXG5cdFx0XHRcdHVucXVvdGVkID0gIW1hdGNoWzZdICYmIG1hdGNoWzJdO1xuXG5cdFx0XHRpZiAoIG1hdGNoRXhwcltcIkNISUxEXCJdLnRlc3QoIG1hdGNoWzBdICkgKSB7XG5cdFx0XHRcdHJldHVybi
14938BudWxsO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBY2NlcHQgcXVvdGVkIGFyZ3VtZW50cyBhcy1pc1xuXHRcdFx0aWYgKCBtYXRjaFszXSApIHtcblx0XHRcdFx0bWF0Y2hbMl0gPSBtYXRjaFs0XSB8fCBtYXRjaFs1XSB8fCBcIlwiO1xuXG5cdFx0XHQvLyBTdHJpcCBleGNlc3MgY2hhcmFjdGVycyBmcm9tIHVucXVvdGVkIGFyZ3VtZW50c1xuXHRcdFx0fSBlbHNlIGlmICggdW5xdW90ZWQgJiYgcnBzZXVkby50ZXN0KCB1bnF1b3RlZCApICYmXG5cdFx0XHRcdC8vIEdldCBleGNlc3MgZnJvbSB0b2tlbml6ZSAocmVjdXJzaXZlbHkpXG5cdFx0XHRcdChleGNlc3MgPSB0b2tlbml6ZSggdW5xdW90ZWQsIHRydWUgKSkgJiZcblx0XHRcdFx0Ly8gYWR2YW5jZSB0byB0aGUgbmV4dCBjbG9zaW5nIHBhcmVudGhlc2lzXG5cdFx0XHRcdChleGNlc3MgPSB1bnF1b3RlZC5pbmRleE9mKCBcIilcIiwgdW5xdW90ZWQubGVuZ3RoIC0gZXhjZXNzICkgLSB1bnF1b3RlZC5sZW5ndGgpICkge1xuXG5cdFx0XHRcdC8vIGV4Y2VzcyBpcyBhIG5lZ2F0aXZlIGluZGV4XG5cdFx0XHRcdG1hdGNoWzBdID0gbWF0Y2hbMF0uc2xpY2UoIDAsIGV4Y2VzcyApO1xuXHRcdFx0XHRtYXRjaFsyXSA9IHVucXVvdGVkLnNsaWNlKCAwLCBleGNlc3MgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmV0dXJuIG9ubHkgY2FwdHVyZXMgbmVlZGVkIGJ5IHRoZSBwc2V1ZG8gZmlsdGVyIG1ldGhvZCAodHlwZSBhbmQgYXJndW1lbnQpXG5cdFx0XHRyZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDMgKTtcblx0XHR9XG5cdH0sXG5cblx0ZmlsdGVyOiB7XG5cblx0XHRcIlRBR1wiOiBmdW5jdGlvbiggbm9kZU5hbWVTZWxlY3RvciApIHtcblx0XHRcdHZhciBub2RlTmFtZSA9IG5vZGVOYW1lU2VsZWN0b3IucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIG5vZGVOYW1lU2VsZWN0b3IgPT09IFwiKlwiID9cblx0XHRcdFx0ZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlOyB9IDpcblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBub2RlTmFtZTtcblx0XHRcdFx0fTtcblx0XHR9LFxuXG5cdFx0XCJDTEFTU1wiOiBmdW5jdGlvbiggY2xhc3NOYW1lICkge1xuXHRcdFx0dmFyIHBhdHRlcm4gPSBjbGFzc0NhY2hlWyBjbGFzc05hbWUgKyBcIiBcIiBdO1xuXG5cdFx0XHRyZXR1cm4gcGF0dGVybiB8fFxuXHRcdFx0XHQocGF0dGVybiA9IG5ldyBSZWdFeHAoIFwiKF58XCIgKyB3aGl0ZXNwYWNlICsgXCIpXCIgKyBjbGFzc05hbWUgKyBcIihcIiArIHdoaXRlc3BhY2UgKyBcInwkKVwiICkpICYmXG5cdFx0XHRcdGNsYXNzQ2FjaGUoIGNsYXNzTmFtZSwgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhdHRlcm4udGVzdCggdHlwZW9mIGVsZW0uY2xhc3NOYW1lID09PSBcInN0cmluZ1wiICYmIGVsZW0uY2xhc3NOYW1lIHx8IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBlbGVtLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpIHx8IFwiXCIgKTtcblx0XHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdFwiQVRUUlwiOiBmdW5jdGlvbiggbmFtZSwgb3BlcmF0b3IsIGNoZWNrICkge1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgcmVzdWx0ID0gU2l6emxlLmF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdFx0XHRpZiAoIHJlc3VsdCA9PSBudWxsICkge1xuXHRcdFx0XHRcdHJldHVybiBvcGVyYXRvciA9PT0gXCIhPVwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICggIW9wZXJhdG9yICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmVzdWx0ICs9IFwiXCI7XG5cblx0XHRcdFx0cmV0dXJuIG9wZXJhdG9yID09PSBcIj1cIiA/IHJlc3VsdCA9PT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIiE9XCIgPyByZXN1bHQgIT09IGNoZWNrIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCJePVwiID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPT09IDAgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIio9XCIgPyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCIkPVwiID8gY2hlY2sgJiYgcmVzdWx0LnNsaWNlKCAtY2hlY2subGVuZ3RoICkgPT09IGNoZWNrIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCJ+PVwiID8gKCBcIiBcIiArIHJlc3VsdC5yZXBsYWNlKCByd2hpdGVzcGFjZSwgXCIgXCIgKSArIFwiIFwiICkuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCJ8PVwiID8gcmVzdWx0ID09PSBjaGVjayB8fCByZXN1bHQuc2xpY2UoIDAsIGNoZWNrLmxlbmd0aCArIDEgKSA9PT0gY2hlY2sgKyBcIi1cIiA6XG5cdFx0XHRcdFx0ZmFsc2U7XG5cdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIkNISUxEXCI6IGZ1bmN0aW9uKCB0eXBlLCB3aGF0LCBhcmd1bWVudCwgZmlyc3QsIGxhc3QgKSB7XG5cdFx0XHR2YXIgc2ltcGxlID0gdHlwZS5zbGljZSggMCwgMyApICE9PSBcIm50aFwiLFxuXHRcdFx0XHRmb3J3YXJkID0gdHlwZS5zbGljZSggLTQgKSAhPT0gXCJsYXN0XCIsXG5cdFx0XHRcdG9mVHlwZSA9IHdoYXQgPT09IFwib2YtdHlwZVwiO1xuXG5cdFx0XHRyZXR1cm4gZmlyc3QgPT09IDEgJiYgbGFzdCA9PT0gMCA/XG5cblx0XHRcdFx0Ly8gU2hvcnRjdXQgZm9yIDpudGgtKihuKVxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gISFlbGVtLnBhcmVudE5vZGU7XG5cdFx0XHRcdH0gOlxuXG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHRcdFx0dmFyIGNhY2hlLCBvdXRlckNhY2hlLCBub2RlLCBkaWZmLCBub2RlSW5kZXgsIHN0YXJ0LFxuXHRcdFx0XHRcdFx0ZGlyID0gc2ltcGxlICE9PSBmb3J3YXJkID8gXCJuZXh0U2libGluZ1wiIDogXCJwcmV2aW91c1NpYmxpbmdcIixcblx0XHRcdFx0XHRcdHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZSxcblx0XHRcdFx0XHRcdG5hbW
14938UgPSBvZlR5cGUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLFxuXHRcdFx0XHRcdFx0dXNlQ2FjaGUgPSAheG1sICYmICFvZlR5cGU7XG5cblx0XHRcdFx0XHRpZiAoIHBhcmVudCApIHtcblxuXHRcdFx0XHRcdFx0Ly8gOihmaXJzdHxsYXN0fG9ubHkpLShjaGlsZHxvZi10eXBlKVxuXHRcdFx0XHRcdFx0aWYgKCBzaW1wbGUgKSB7XG5cdFx0XHRcdFx0XHRcdHdoaWxlICggZGlyICkge1xuXHRcdFx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtO1xuXHRcdFx0XHRcdFx0XHRcdHdoaWxlICggKG5vZGUgPSBub2RlWyBkaXIgXSkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIG9mVHlwZSA/IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZSA6IG5vZGUubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Ly8gUmV2ZXJzZSBkaXJlY3Rpb24gZm9yIDpvbmx5LSogKGlmIHdlIGhhdmVuJ3QgeWV0IGRvbmUgc28pXG5cdFx0XHRcdFx0XHRcdFx0c3RhcnQgPSBkaXIgPSB0eXBlID09PSBcIm9ubHlcIiAmJiAhc3RhcnQgJiYgXCJuZXh0U2libGluZ1wiO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRzdGFydCA9IFsgZm9yd2FyZCA/IHBhcmVudC5maXJzdENoaWxkIDogcGFyZW50Lmxhc3RDaGlsZCBdO1xuXG5cdFx0XHRcdFx0XHQvLyBub24teG1sIDpudGgtY2hpbGQoLi4uKSBzdG9yZXMgY2FjaGUgZGF0YSBvbiBgcGFyZW50YFxuXHRcdFx0XHRcdFx0aWYgKCBmb3J3YXJkICYmIHVzZUNhY2hlICkge1xuXHRcdFx0XHRcdFx0XHQvLyBTZWVrIGBlbGVtYCBmcm9tIGEgcHJldmlvdXNseS1jYWNoZWQgaW5kZXhcblx0XHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IHBhcmVudFsgZXhwYW5kbyBdIHx8IChwYXJlbnRbIGV4cGFuZG8gXSA9IHt9KTtcblx0XHRcdFx0XHRcdFx0Y2FjaGUgPSBvdXRlckNhY2hlWyB0eXBlIF0gfHwgW107XG5cdFx0XHRcdFx0XHRcdG5vZGVJbmRleCA9IGNhY2hlWzBdID09PSBkaXJydW5zICYmIGNhY2hlWzFdO1xuXHRcdFx0XHRcdFx0XHRkaWZmID0gY2FjaGVbMF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbMl07XG5cdFx0XHRcdFx0XHRcdG5vZGUgPSBub2RlSW5kZXggJiYgcGFyZW50LmNoaWxkTm9kZXNbIG5vZGVJbmRleCBdO1xuXG5cdFx0XHRcdFx0XHRcdHdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRpciBdIHx8XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBGYWxsYmFjayB0byBzZWVraW5nIGBlbGVtYCBmcm9tIHRoZSBzdGFydFxuXHRcdFx0XHRcdFx0XHRcdChkaWZmID0gbm9kZUluZGV4ID0gMCkgfHwgc3RhcnQucG9wKCkpICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gV2hlbiBmb3VuZCwgY2FjaGUgaW5kZXhlcyBvbiBgcGFyZW50YCBhbmQgYnJlYWtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIG5vZGUubm9kZVR5cGUgPT09IDEgJiYgKytkaWZmICYmIG5vZGUgPT09IGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlWyB0eXBlIF0gPSBbIGRpcnJ1bnMsIG5vZGVJbmRleCwgZGlmZiBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIFVzZSBwcmV2aW91c2x5LWNhY2hlZCBlbGVtZW50IGluZGV4IGlmIGF2YWlsYWJsZVxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICggdXNlQ2FjaGUgJiYgKGNhY2hlID0gKGVsZW1bIGV4cGFuZG8gXSB8fCAoZWxlbVsgZXhwYW5kbyBdID0ge30pKVsgdHlwZSBdKSAmJiBjYWNoZVswXSA9PT0gZGlycnVucyApIHtcblx0XHRcdFx0XHRcdFx0ZGlmZiA9IGNhY2hlWzFdO1xuXG5cdFx0XHRcdFx0XHQvLyB4bWwgOm50aC1jaGlsZCguLi4pIG9yIDpudGgtbGFzdC1jaGlsZCguLi4pIG9yIDpudGgoLWxhc3QpPy1vZi10eXBlKC4uLilcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdC8vIFVzZSB0aGUgc2FtZSBsb29wIGFzIGFib3ZlIHRvIHNlZWsgYGVsZW1gIGZyb20gdGhlIHN0YXJ0XG5cdFx0XHRcdFx0XHRcdHdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRpciBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0KGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoICggb2ZUeXBlID8gbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDogbm9kZS5ub2RlVHlwZSA9PT0gMSApICYmICsrZGlmZiApIHtcblx0XHRcdFx0XHRcdFx0XHRcdC8vIENhY2hlIHRoZSBpbmRleCBvZiBlYWNoIGVuY291bnRlcmVkIGVsZW1lbnRcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggdXNlQ2FjaGUgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdChub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9KSlbIHR5cGUgXSA9IFsgZGlycnVucywgZGlmZiBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIG5vZGUgPT09IGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBJbmNvcnBvcmF0ZSB0aGUgb2Zmc2V0LCB0aGVuIGNoZWNrIGFnYWluc3QgY3ljbGUgc2l6ZVxuXHRcdFx0XHRcdFx0ZGlmZiAtPSBsYXN0O1xuXHRcdFx0XHRcdFx0cmV0dXJuIGRpZmYgPT09IGZpcnN0IHx8ICggZGlmZiAlIGZpcnN0ID09PSAwICYmIGRpZmYgLyBmaXJzdCA+PSAwICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIlBTRVVET1wiOiBmdW5jdGlvbiggcHNldWRvLCBhcmd1bWVudCApIHtcblx0XHRcdC8vIHBzZXVkby1jbGFzcyBuYW1lcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZVxuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNwc2V1ZG8tY2xhc3Nlc1xuXHRcdFx0Ly8gUHJpb3JpdGl6ZSBieSBjYXNlIHNlbnNpdGl2aXR5IGluIGNhc2UgY3VzdG9tIHBzZXVkb3MgYXJlIGFkZGVkIHdpdGggdXBwZXJjYXNlIGxldHRlcnNcblx0XHRcdC8vIFJlbWVtYmVyIHRoYXQgc2V0RmlsdGVycyBpbmhlcml0cyBmcm9tIHBzZXVkb3Ncblx0XHRcdHZhciBhcmdzLFxuXHRcdFx0XHRmbiA9IEV4cHIucHNldWRvc1sgcHNldWRvIF0gfHwgRXhwci5zZXRGaWx0ZXJzWyBwc2V1ZG8udG9Mb3dlckNhc2UoKSBdIHx8XG5cdFx0XHRcdFx0U2l6emxlLmVycm9yKCBcInVuc3VwcG9ydGVkIHBzZXVkbzogXCIgKyBwc2V1ZG8gKTtcblxuXHRcdFx0Ly8gVGhlIHVzZXIgbWF5IHVzZSBjcmVhdGVQc2V1ZG8gdG8gaW5kaWNhdGUgdGhhdFxuXHRcdFx0Ly8gYXJndW1lbnRzIGFyZSBuZWVkZWQgdG8gY3JlYXRlIHRoZSBmaWx0ZXIgZnVuY3Rpb25cblx0XHRcdC8vIGp1c3QgYXMgU2l6emxlIGRvZXNcblx0XHRcdGlmICggZm5bIGV4cGFuZG8gXSApIHtcblx0XHRcdFx0cmV0dXJuIGZuKCBhcmd1bWVudCApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBCdXQgbWFpbnRhaW4gc3VwcG9ydCBmb3Igb2xkIHNpZ25hdHVyZXNcblx0XHRcdGlmICggZm4ubGVuZ3RoID4gMSApIHtcblx0XHRcdFx0YXJncyA9IFsgcHNldWRvLCBwc2V1ZG8sIFwiXCIsIGFyZ3VtZW50IF07XG5cdFx0XHRcdHJldHVybi
14938BFeHByLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoIHBzZXVkby50b0xvd2VyQ2FzZSgpICkgP1xuXHRcdFx0XHRcdG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHtcblx0XHRcdFx0XHRcdHZhciBpZHgsXG5cdFx0XHRcdFx0XHRcdG1hdGNoZWQgPSBmbiggc2VlZCwgYXJndW1lbnQgKSxcblx0XHRcdFx0XHRcdFx0aSA9IG1hdGNoZWQubGVuZ3RoO1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRcdGlkeCA9IGluZGV4T2YoIHNlZWQsIG1hdGNoZWRbaV0gKTtcblx0XHRcdFx0XHRcdFx0c2VlZFsgaWR4IF0gPSAhKCBtYXRjaGVzWyBpZHggXSA9IG1hdGNoZWRbaV0gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSA6XG5cdFx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZm4oIGVsZW0sIDAsIGFyZ3MgKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZm47XG5cdFx0fVxuXHR9LFxuXG5cdHBzZXVkb3M6IHtcblx0XHQvLyBQb3RlbnRpYWxseSBjb21wbGV4IHBzZXVkb3Ncblx0XHRcIm5vdFwiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdFx0Ly8gVHJpbSB0aGUgc2VsZWN0b3IgcGFzc2VkIHRvIGNvbXBpbGVcblx0XHRcdC8vIHRvIGF2b2lkIHRyZWF0aW5nIGxlYWRpbmcgYW5kIHRyYWlsaW5nXG5cdFx0XHQvLyBzcGFjZXMgYXMgY29tYmluYXRvcnNcblx0XHRcdHZhciBpbnB1dCA9IFtdLFxuXHRcdFx0XHRyZXN1bHRzID0gW10sXG5cdFx0XHRcdG1hdGNoZXIgPSBjb21waWxlKCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICkgKTtcblxuXHRcdFx0cmV0dXJuIG1hdGNoZXJbIGV4cGFuZG8gXSA/XG5cdFx0XHRcdG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcywgY29udGV4dCwgeG1sICkge1xuXHRcdFx0XHRcdHZhciBlbGVtLFxuXHRcdFx0XHRcdFx0dW5tYXRjaGVkID0gbWF0Y2hlciggc2VlZCwgbnVsbCwgeG1sLCBbXSApLFxuXHRcdFx0XHRcdFx0aSA9IHNlZWQubGVuZ3RoO1xuXG5cdFx0XHRcdFx0Ly8gTWF0Y2ggZWxlbWVudHMgdW5tYXRjaGVkIGJ5IGBtYXRjaGVyYFxuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoZWxlbSA9IHVubWF0Y2hlZFtpXSkgKSB7XG5cdFx0XHRcdFx0XHRcdHNlZWRbaV0gPSAhKG1hdGNoZXNbaV0gPSBlbGVtKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pIDpcblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHRpbnB1dFswXSA9IGVsZW07XG5cdFx0XHRcdFx0bWF0Y2hlciggaW5wdXQsIG51bGwsIHhtbCwgcmVzdWx0cyApO1xuXHRcdFx0XHRcdC8vIERvbid0IGtlZXAgdGhlIGVsZW1lbnQgKGlzc3VlICMyOTkpXG5cdFx0XHRcdFx0aW5wdXRbMF0gPSBudWxsO1xuXHRcdFx0XHRcdHJldHVybiAhcmVzdWx0cy5wb3AoKTtcblx0XHRcdFx0fTtcblx0XHR9KSxcblxuXHRcdFwiaGFzXCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiBTaXp6bGUoIHNlbGVjdG9yLCBlbGVtICkubGVuZ3RoID4gMDtcblx0XHRcdH07XG5cdFx0fSksXG5cblx0XHRcImNvbnRhaW5zXCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggdGV4dCApIHtcblx0XHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHJldHVybiAoIGVsZW0udGV4dENvbnRlbnQgfHwgZWxlbS5pbm5lclRleHQgfHwgZ2V0VGV4dCggZWxlbSApICkuaW5kZXhPZiggdGV4dCApID4gLTE7XG5cdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0Ly8gXCJXaGV0aGVyIGFuIGVsZW1lbnQgaXMgcmVwcmVzZW50ZWQgYnkgYSA6bGFuZygpIHNlbGVjdG9yXG5cdFx0Ly8gaXMgYmFzZWQgc29sZWx5IG9uIHRoZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWVcblx0XHQvLyBiZWluZyBlcXVhbCB0byB0aGUgaWRlbnRpZmllciBDLFxuXHRcdC8vIG9yIGJlZ2lubmluZyB3aXRoIHRoZSBpZGVudGlmaWVyIEMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgXCItXCIuXG5cdFx0Ly8gVGhlIG1hdGNoaW5nIG9mIEMgYWdhaW5zdCB0aGUgZWxlbWVudCdzIGxhbmd1YWdlIHZhbHVlIGlzIHBlcmZvcm1lZCBjYXNlLWluc2Vuc2l0aXZlbHkuXG5cdFx0Ly8gVGhlIGlkZW50aWZpZXIgQyBkb2VzIG5vdCBoYXZlIHRvIGJlIGEgdmFsaWQgbGFuZ3VhZ2UgbmFtZS5cIlxuXHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jbGFuZy1wc2V1ZG9cblx0XHRcImxhbmdcIjogbWFya0Z1bmN0aW9uKCBmdW5jdGlvbiggbGFuZyApIHtcblx0XHRcdC8vIGxhbmcgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGlkZW50aWZpZXJcblx0XHRcdGlmICggIXJpZGVudGlmaWVyLnRlc3QobGFuZyB8fCBcIlwiKSApIHtcblx0XHRcdFx0U2l6emxlLmVycm9yKCBcInVuc3VwcG9ydGVkIGxhbmc6IFwiICsgbGFuZyApO1xuXHRcdFx0fVxuXHRcdFx0bGFuZyA9IGxhbmcucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgZWxlbUxhbmc7XG5cdFx0XHRcdGRvIHtcblx0XHRcdFx0XHRpZiAoIChlbGVtTGFuZyA9IGRvY3VtZW50SXNIVE1MID9cblx0XHRcdFx0XHRcdGVsZW0ubGFuZyA6XG5cdFx0XHRcdFx0XHRlbGVtLmdldEF0dHJpYnV0ZShcInhtbDpsYW5nXCIpIHx8IGVsZW0uZ2V0QXR0cmlidXRlKFwibGFuZ1wiKSkgKSB7XG5cblx0XHRcdFx0XHRcdGVsZW1MYW5nID0gZWxlbUxhbmcudG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtTGFuZyA9PT0gbGFuZyB8fCBlbGVtTGFuZy5pbmRleE9mKCBsYW5nICsgXCItXCIgKSA9PT0gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gd2hpbGUgKCAoZWxlbSA9IGVsZW0ucGFyZW50Tm9kZSkgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0Ly8gTWlzY2VsbGFuZW91c1xuXHRcdFwidGFyZ2V0XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIGhhc2ggPSB3aW5kb3cubG9jYXRpb24gJiYgd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cdFx0XHRyZXR1cm4gaGFzaCAmJiBoYXNoLnNsaWNlKCAxICkgPT09IGVsZW0uaWQ7XG5cdFx0fSxcblxuXHRcdFwicm9vdFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybi
14938BlbGVtID09PSBkb2NFbGVtO1xuXHRcdH0sXG5cblx0XHRcImZvY3VzXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgKCFkb2N1bWVudC5oYXNGb2N1cyB8fCBkb2N1bWVudC5oYXNGb2N1cygpKSAmJiAhIShlbGVtLnR5cGUgfHwgZWxlbS5ocmVmIHx8IH5lbGVtLnRhYkluZGV4KTtcblx0XHR9LFxuXG5cdFx0Ly8gQm9vbGVhbiBwcm9wZXJ0aWVzXG5cdFx0XCJlbmFibGVkXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGZhbHNlO1xuXHRcdH0sXG5cblx0XHRcImRpc2FibGVkXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IHRydWU7XG5cdFx0fSxcblxuXHRcdFwiY2hlY2tlZFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdC8vIEluIENTUzMsIDpjaGVja2VkIHNob3VsZCByZXR1cm4gYm90aCBjaGVja2VkIGFuZCBzZWxlY3RlZCBlbGVtZW50c1xuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWRcblx0XHRcdHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiAobm9kZU5hbWUgPT09IFwiaW5wdXRcIiAmJiAhIWVsZW0uY2hlY2tlZCkgfHwgKG5vZGVOYW1lID09PSBcIm9wdGlvblwiICYmICEhZWxlbS5zZWxlY3RlZCk7XG5cdFx0fSxcblxuXHRcdFwic2VsZWN0ZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHQvLyBBY2Nlc3NpbmcgdGhpcyBwcm9wZXJ0eSBtYWtlcyBzZWxlY3RlZC1ieS1kZWZhdWx0XG5cdFx0XHQvLyBvcHRpb25zIGluIFNhZmFyaSB3b3JrIHByb3Blcmx5XG5cdFx0XHRpZiAoIGVsZW0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0ZWxlbS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBlbGVtLnNlbGVjdGVkID09PSB0cnVlO1xuXHRcdH0sXG5cblx0XHQvLyBDb250ZW50c1xuXHRcdFwiZW1wdHlcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2VtcHR5LXBzZXVkb1xuXHRcdFx0Ly8gOmVtcHR5IGlzIG5lZ2F0ZWQgYnkgZWxlbWVudCAoMSkgb3IgY29udGVudCBub2RlcyAodGV4dDogMzsgY2RhdGE6IDQ7IGVudGl0eSByZWY6IDUpLFxuXHRcdFx0Ly8gICBidXQgbm90IGJ5IG90aGVycyAoY29tbWVudDogODsgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbjogNzsgZXRjLilcblx0XHRcdC8vIG5vZGVUeXBlIDwgNiB3b3JrcyBiZWNhdXNlIGF0dHJpYnV0ZXMgKDIpIGRvIG5vdCBhcHBlYXIgYXMgY2hpbGRyZW5cblx0XHRcdGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkge1xuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPCA2ICkge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSxcblxuXHRcdFwicGFyZW50XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuICFFeHByLnBzZXVkb3NbXCJlbXB0eVwiXSggZWxlbSApO1xuXHRcdH0sXG5cblx0XHQvLyBFbGVtZW50L2lucHV0IHR5cGVzXG5cdFx0XCJoZWFkZXJcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gcmhlYWRlci50ZXN0KCBlbGVtLm5vZGVOYW1lICk7XG5cdFx0fSxcblxuXHRcdFwiaW5wdXRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gcmlucHV0cy50ZXN0KCBlbGVtLm5vZGVOYW1lICk7XG5cdFx0fSxcblxuXHRcdFwiYnV0dG9uXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gbmFtZSA9PT0gXCJpbnB1dFwiICYmIGVsZW0udHlwZSA9PT0gXCJidXR0b25cIiB8fCBuYW1lID09PSBcImJ1dHRvblwiO1xuXHRcdH0sXG5cblx0XHRcInRleHRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgYXR0cjtcblx0XHRcdHJldHVybiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIiAmJlxuXHRcdFx0XHRlbGVtLnR5cGUgPT09IFwidGV4dFwiICYmXG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUU8OFxuXHRcdFx0XHQvLyBOZXcgSFRNTDUgYXR0cmlidXRlIHZhbHVlcyAoZS5nLiwgXCJzZWFyY2hcIikgYXBwZWFyIHdpdGggZWxlbS50eXBlID09PSBcInRleHRcIlxuXHRcdFx0XHQoIChhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpKSA9PSBudWxsIHx8IGF0dHIudG9Mb3dlckNhc2UoKSA9PT0gXCJ0ZXh0XCIgKTtcblx0XHR9LFxuXG5cdFx0Ly8gUG9zaXRpb24taW4tY29sbGVjdGlvblxuXHRcdFwiZmlyc3RcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBbIDAgXTtcblx0XHR9KSxcblxuXHRcdFwibGFzdFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHtcblx0XHRcdHJldHVybiBbIGxlbmd0aCAtIDEgXTtcblx0XHR9KSxcblxuXHRcdFwiZXFcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0cmV0dXJuIFsgYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudCBdO1xuXHRcdH0pLFxuXG5cdFx0XCJldmVuXCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkge1xuXHRcdFx0dmFyIGkgPSAwO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpICs9IDIgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pLFxuXG5cdFx0XCJvZGRcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7XG5cdFx0XHR2YXIgaSA9IDE7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybi
14938BtYXRjaEluZGV4ZXM7XG5cdFx0fSksXG5cblx0XHRcImx0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHtcblx0XHRcdHZhciBpID0gYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudDtcblx0XHRcdGZvciAoIDsgLS1pID49IDA7ICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KSxcblxuXHRcdFwiZ3RcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0dmFyIGkgPSBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50O1xuXHRcdFx0Zm9yICggOyArK2kgPCBsZW5ndGg7ICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KVxuXHR9XG59O1xuXG5FeHByLnBzZXVkb3NbXCJudGhcIl0gPSBFeHByLnBzZXVkb3NbXCJlcVwiXTtcblxuLy8gQWRkIGJ1dHRvbi9pbnB1dCB0eXBlIHBzZXVkb3NcbmZvciAoIGkgaW4geyByYWRpbzogdHJ1ZSwgY2hlY2tib3g6IHRydWUsIGZpbGU6IHRydWUsIHBhc3N3b3JkOiB0cnVlLCBpbWFnZTogdHJ1ZSB9ICkge1xuXHRFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUlucHV0UHNldWRvKCBpICk7XG59XG5mb3IgKCBpIGluIHsgc3VibWl0OiB0cnVlLCByZXNldDogdHJ1ZSB9ICkge1xuXHRFeHByLnBzZXVkb3NbIGkgXSA9IGNyZWF0ZUJ1dHRvblBzZXVkbyggaSApO1xufVxuXG4vLyBFYXN5IEFQSSBmb3IgY3JlYXRpbmcgbmV3IHNldEZpbHRlcnNcbmZ1bmN0aW9uIHNldEZpbHRlcnMoKSB7fVxuc2V0RmlsdGVycy5wcm90b3R5cGUgPSBFeHByLmZpbHRlcnMgPSBFeHByLnBzZXVkb3M7XG5FeHByLnNldEZpbHRlcnMgPSBuZXcgc2V0RmlsdGVycygpO1xuXG50b2tlbml6ZSA9IFNpenpsZS50b2tlbml6ZSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgcGFyc2VPbmx5ICkge1xuXHR2YXIgbWF0Y2hlZCwgbWF0Y2gsIHRva2VucywgdHlwZSxcblx0XHRzb0ZhciwgZ3JvdXBzLCBwcmVGaWx0ZXJzLFxuXHRcdGNhY2hlZCA9IHRva2VuQ2FjaGVbIHNlbGVjdG9yICsgXCIgXCIgXTtcblxuXHRpZiAoIGNhY2hlZCApIHtcblx0XHRyZXR1cm4gcGFyc2VPbmx5ID8gMCA6IGNhY2hlZC5zbGljZSggMCApO1xuXHR9XG5cblx0c29GYXIgPSBzZWxlY3Rvcjtcblx0Z3JvdXBzID0gW107XG5cdHByZUZpbHRlcnMgPSBFeHByLnByZUZpbHRlcjtcblxuXHR3aGlsZSAoIHNvRmFyICkge1xuXG5cdFx0Ly8gQ29tbWEgYW5kIGZpcnN0IHJ1blxuXHRcdGlmICggIW1hdGNoZWQgfHwgKG1hdGNoID0gcmNvbW1hLmV4ZWMoIHNvRmFyICkpICkge1xuXHRcdFx0aWYgKCBtYXRjaCApIHtcblx0XHRcdFx0Ly8gRG9uJ3QgY29uc3VtZSB0cmFpbGluZyBjb21tYXMgYXMgdmFsaWRcblx0XHRcdFx0c29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hbMF0ubGVuZ3RoICkgfHwgc29GYXI7XG5cdFx0XHR9XG5cdFx0XHRncm91cHMucHVzaCggKHRva2VucyA9IFtdKSApO1xuXHRcdH1cblxuXHRcdG1hdGNoZWQgPSBmYWxzZTtcblxuXHRcdC8vIENvbWJpbmF0b3JzXG5cdFx0aWYgKCAobWF0Y2ggPSByY29tYmluYXRvcnMuZXhlYyggc29GYXIgKSkgKSB7XG5cdFx0XHRtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTtcblx0XHRcdHRva2Vucy5wdXNoKHtcblx0XHRcdFx0dmFsdWU6IG1hdGNoZWQsXG5cdFx0XHRcdC8vIENhc3QgZGVzY2VuZGFudCBjb21iaW5hdG9ycyB0byBzcGFjZVxuXHRcdFx0XHR0eXBlOiBtYXRjaFswXS5yZXBsYWNlKCBydHJpbSwgXCIgXCIgKVxuXHRcdFx0fSk7XG5cdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApO1xuXHRcdH1cblxuXHRcdC8vIEZpbHRlcnNcblx0XHRmb3IgKCB0eXBlIGluIEV4cHIuZmlsdGVyICkge1xuXHRcdFx0aWYgKCAobWF0Y2ggPSBtYXRjaEV4cHJbIHR5cGUgXS5leGVjKCBzb0ZhciApKSAmJiAoIXByZUZpbHRlcnNbIHR5cGUgXSB8fFxuXHRcdFx0XHQobWF0Y2ggPSBwcmVGaWx0ZXJzWyB0eXBlIF0oIG1hdGNoICkpKSApIHtcblx0XHRcdFx0bWF0Y2hlZCA9IG1hdGNoLnNoaWZ0KCk7XG5cdFx0XHRcdHRva2Vucy5wdXNoKHtcblx0XHRcdFx0XHR2YWx1ZTogbWF0Y2hlZCxcblx0XHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRcdG1hdGNoZXM6IG1hdGNoXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaGVkLmxlbmd0aCApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggIW1hdGNoZWQgKSB7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgaW52YWxpZCBleGNlc3Ncblx0Ly8gaWYgd2UncmUganVzdCBwYXJzaW5nXG5cdC8vIE90aGVyd2lzZSwgdGhyb3cgYW4gZXJyb3Igb3IgcmV0dXJuIHRva2Vuc1xuXHRyZXR1cm4gcGFyc2VPbmx5ID9cblx0XHRzb0Zhci5sZW5ndGggOlxuXHRcdHNvRmFyID9cblx0XHRcdFNpenpsZS5lcnJvciggc2VsZWN0b3IgKSA6XG5cdFx0XHQvLyBDYWNoZSB0aGUgdG9rZW5zXG5cdFx0XHR0b2tlbkNhY2hlKCBzZWxlY3RvciwgZ3JvdXBzICkuc2xpY2UoIDAgKTtcbn07XG5cbmZ1bmN0aW9uIHRvU2VsZWN0b3IoIHRva2VucyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGxlbiA9IHRva2Vucy5sZW5ndGgsXG5cdFx0c2VsZWN0b3IgPSBcIlwiO1xuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRzZWxlY3RvciArPSB0b2tlbnNbaV0udmFsdWU7XG5cdH1cblx0cmV0dXJuIHNlbGVjdG9yO1xufVxuXG5mdW5jdGlvbiBhZGRDb21iaW5hdG9yKCBtYXRjaGVyLCBjb21iaW5hdG9yLCBiYXNlICkge1xuXHR2YXIgZGlyID0gY29tYmluYXRvci5kaXIsXG5cdFx0Y2hlY2tOb25FbGVtZW50cyA9IGJhc2UgJiYgZGlyID09PSBcInBhcmVudE5vZGVcIixcblx0XHRkb25lTmFtZSA9IGRvbmUrKztcblxuXHRyZXR1cm4gY29tYmluYXRvci5maXJzdCA/XG5cdFx0Ly8gQ2hlY2sgYWdhaW5zdCBjbG9zZXN0IGFuY2VzdG9yL3ByZWNlZGluZyBlbGVtZW50XG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7XG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdHJldHVybi
14938BtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gOlxuXG5cdFx0Ly8gQ2hlY2sgYWdhaW5zdCBhbGwgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRzXG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciBvbGRDYWNoZSwgb3V0ZXJDYWNoZSxcblx0XHRcdFx0bmV3Q2FjaGUgPSBbIGRpcnJ1bnMsIGRvbmVOYW1lIF07XG5cblx0XHRcdC8vIFdlIGNhbid0IHNldCBhcmJpdHJhcnkgZGF0YSBvbiBYTUwgbm9kZXMsIHNvIHRoZXkgZG9uJ3QgYmVuZWZpdCBmcm9tIGRpciBjYWNoaW5nXG5cdFx0XHRpZiAoIHhtbCApIHtcblx0XHRcdFx0d2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHtcblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0d2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHtcblx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBlbGVtWyBleHBhbmRvIF0gfHwgKGVsZW1bIGV4cGFuZG8gXSA9IHt9KTtcblx0XHRcdFx0XHRcdGlmICggKG9sZENhY2hlID0gb3V0ZXJDYWNoZVsgZGlyIF0pICYmXG5cdFx0XHRcdFx0XHRcdG9sZENhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgb2xkQ2FjaGVbIDEgXSA9PT0gZG9uZU5hbWUgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gQXNzaWduIHRvIG5ld0NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVudHNcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChuZXdDYWNoZVsgMiBdID0gb2xkQ2FjaGVbIDIgXSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHQvLyBSZXVzZSBuZXdjYWNoZSBzbyByZXN1bHRzIGJhY2stcHJvcGFnYXRlIHRvIHByZXZpb3VzIGVsZW1lbnRzXG5cdFx0XHRcdFx0XHRcdG91dGVyQ2FjaGVbIGRpciBdID0gbmV3Q2FjaGU7XG5cblx0XHRcdFx0XHRcdFx0Ly8gQSBtYXRjaCBtZWFucyB3ZSdyZSBkb25lOyBhIGZhaWwgbWVhbnMgd2UgaGF2ZSB0byBrZWVwIGNoZWNraW5nXG5cdFx0XHRcdFx0XHRcdGlmICggKG5ld0NhY2hlWyAyIF0gPSBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xufVxuXG5mdW5jdGlvbiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSB7XG5cdHJldHVybiBtYXRjaGVycy5sZW5ndGggPiAxID9cblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0dmFyIGkgPSBtYXRjaGVycy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCAhbWF0Y2hlcnNbaV0oIGVsZW0sIGNvbnRleHQsIHhtbCApICkge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSA6XG5cdFx0bWF0Y2hlcnNbMF07XG59XG5cbmZ1bmN0aW9uIG11bHRpcGxlQ29udGV4dHMoIHNlbGVjdG9yLCBjb250ZXh0cywgcmVzdWx0cyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGxlbiA9IGNvbnRleHRzLmxlbmd0aDtcblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0U2l6emxlKCBzZWxlY3RvciwgY29udGV4dHNbaV0sIHJlc3VsdHMgKTtcblx0fVxuXHRyZXR1cm4gcmVzdWx0cztcbn1cblxuZnVuY3Rpb24gY29uZGVuc2UoIHVubWF0Y2hlZCwgbWFwLCBmaWx0ZXIsIGNvbnRleHQsIHhtbCApIHtcblx0dmFyIGVsZW0sXG5cdFx0bmV3VW5tYXRjaGVkID0gW10sXG5cdFx0aSA9IDAsXG5cdFx0bGVuID0gdW5tYXRjaGVkLmxlbmd0aCxcblx0XHRtYXBwZWQgPSBtYXAgIT0gbnVsbDtcblxuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRpZiAoIChlbGVtID0gdW5tYXRjaGVkW2ldKSApIHtcblx0XHRcdGlmICggIWZpbHRlciB8fCBmaWx0ZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkge1xuXHRcdFx0XHRuZXdVbm1hdGNoZWQucHVzaCggZWxlbSApO1xuXHRcdFx0XHRpZiAoIG1hcHBlZCApIHtcblx0XHRcdFx0XHRtYXAucHVzaCggaSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG5ld1VubWF0Y2hlZDtcbn1cblxuZnVuY3Rpb24gc2V0TWF0Y2hlciggcHJlRmlsdGVyLCBzZWxlY3RvciwgbWF0Y2hlciwgcG9zdEZpbHRlciwgcG9zdEZpbmRlciwgcG9zdFNlbGVjdG9yICkge1xuXHRpZiAoIHBvc3RGaWx0ZXIgJiYgIXBvc3RGaWx0ZXJbIGV4cGFuZG8gXSApIHtcblx0XHRwb3N0RmlsdGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbHRlciApO1xuXHR9XG5cdGlmICggcG9zdEZpbmRlciAmJiAhcG9zdEZpbmRlclsgZXhwYW5kbyBdICkge1xuXHRcdHBvc3RGaW5kZXIgPSBzZXRNYXRjaGVyKCBwb3N0RmluZGVyLCBwb3N0U2VsZWN0b3IgKTtcblx0fVxuXHRyZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCByZXN1bHRzLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0dmFyIHRlbXAsIGksIGVsZW0sXG5cdFx0XHRwcmVNYXAgPSBbXSxcblx0XHRcdHBvc3RNYXAgPSBbXSxcblx0XHRcdHByZWV4aXN0aW5nID0gcmVzdWx0cy5sZW5ndGgsXG5cblx0XHRcdC8vIEdldCBpbml0aWFsIGVsZW1lbnRzIGZyb20gc2VlZCBvciBjb250ZXh0XG5cdFx0XHRlbGVtcyA9IHNlZWQgfHwgbXVsdGlwbGVDb250ZXh0cyggc2VsZWN0b3IgfHwgXCIqXCIsIGNvbnRleHQubm9kZVR5cGUgPyBbIGNvbnRleHQgXSA6IGNvbnRleHQsIFtdICksXG5cblx0XHRcdC8vIFByZWZpbHRlciB0byBnZXQgbWF0Y2hlciBpbnB1dCwgcHJlc2VydmluZyBhIG
149381hcCBmb3Igc2VlZC1yZXN1bHRzIHN5bmNocm9uaXphdGlvblxuXHRcdFx0bWF0Y2hlckluID0gcHJlRmlsdGVyICYmICggc2VlZCB8fCAhc2VsZWN0b3IgKSA/XG5cdFx0XHRcdGNvbmRlbnNlKCBlbGVtcywgcHJlTWFwLCBwcmVGaWx0ZXIsIGNvbnRleHQsIHhtbCApIDpcblx0XHRcdFx0ZWxlbXMsXG5cblx0XHRcdG1hdGNoZXJPdXQgPSBtYXRjaGVyID9cblx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBhIHBvc3RGaW5kZXIsIG9yIGZpbHRlcmVkIHNlZWQsIG9yIG5vbi1zZWVkIHBvc3RGaWx0ZXIgb3IgcHJlZXhpc3RpbmcgcmVzdWx0cyxcblx0XHRcdFx0cG9zdEZpbmRlciB8fCAoIHNlZWQgPyBwcmVGaWx0ZXIgOiBwcmVleGlzdGluZyB8fCBwb3N0RmlsdGVyICkgP1xuXG5cdFx0XHRcdFx0Ly8gLi4uaW50ZXJtZWRpYXRlIHByb2Nlc3NpbmcgaXMgbmVjZXNzYXJ5XG5cdFx0XHRcdFx0W10gOlxuXG5cdFx0XHRcdFx0Ly8gLi4ub3RoZXJ3aXNlIHVzZSByZXN1bHRzIGRpcmVjdGx5XG5cdFx0XHRcdFx0cmVzdWx0cyA6XG5cdFx0XHRcdG1hdGNoZXJJbjtcblxuXHRcdC8vIEZpbmQgcHJpbWFyeSBtYXRjaGVzXG5cdFx0aWYgKCBtYXRjaGVyICkge1xuXHRcdFx0bWF0Y2hlciggbWF0Y2hlckluLCBtYXRjaGVyT3V0LCBjb250ZXh0LCB4bWwgKTtcblx0XHR9XG5cblx0XHQvLyBBcHBseSBwb3N0RmlsdGVyXG5cdFx0aWYgKCBwb3N0RmlsdGVyICkge1xuXHRcdFx0dGVtcCA9IGNvbmRlbnNlKCBtYXRjaGVyT3V0LCBwb3N0TWFwICk7XG5cdFx0XHRwb3N0RmlsdGVyKCB0ZW1wLCBbXSwgY29udGV4dCwgeG1sICk7XG5cblx0XHRcdC8vIFVuLW1hdGNoIGZhaWxpbmcgZWxlbWVudHMgYnkgbW92aW5nIHRoZW0gYmFjayB0byBtYXRjaGVySW5cblx0XHRcdGkgPSB0ZW1wLmxlbmd0aDtcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRpZiAoIChlbGVtID0gdGVtcFtpXSkgKSB7XG5cdFx0XHRcdFx0bWF0Y2hlck91dFsgcG9zdE1hcFtpXSBdID0gIShtYXRjaGVySW5bIHBvc3RNYXBbaV0gXSA9IGVsZW0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0aWYgKCBwb3N0RmluZGVyIHx8IHByZUZpbHRlciApIHtcblx0XHRcdFx0aWYgKCBwb3N0RmluZGVyICkge1xuXHRcdFx0XHRcdC8vIEdldCB0aGUgZmluYWwgbWF0Y2hlck91dCBieSBjb25kZW5zaW5nIHRoaXMgaW50ZXJtZWRpYXRlIGludG8gcG9zdEZpbmRlciBjb250ZXh0c1xuXHRcdFx0XHRcdHRlbXAgPSBbXTtcblx0XHRcdFx0XHRpID0gbWF0Y2hlck91dC5sZW5ndGg7XG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRpZiAoIChlbGVtID0gbWF0Y2hlck91dFtpXSkgKSB7XG5cdFx0XHRcdFx0XHRcdC8vIFJlc3RvcmUgbWF0Y2hlckluIHNpbmNlIGVsZW0gaXMgbm90IHlldCBhIGZpbmFsIG1hdGNoXG5cdFx0XHRcdFx0XHRcdHRlbXAucHVzaCggKG1hdGNoZXJJbltpXSA9IGVsZW0pICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHBvc3RGaW5kZXIoIG51bGwsIChtYXRjaGVyT3V0ID0gW10pLCB0ZW1wLCB4bWwgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIE1vdmUgbWF0Y2hlZCBlbGVtZW50cyBmcm9tIHNlZWQgdG8gcmVzdWx0cyB0byBrZWVwIHRoZW0gc3luY2hyb25pemVkXG5cdFx0XHRcdGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDtcblx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0aWYgKCAoZWxlbSA9IG1hdGNoZXJPdXRbaV0pICYmXG5cdFx0XHRcdFx0XHQodGVtcCA9IHBvc3RGaW5kZXIgPyBpbmRleE9mKCBzZWVkLCBlbGVtICkgOiBwcmVNYXBbaV0pID4gLTEgKSB7XG5cblx0XHRcdFx0XHRcdHNlZWRbdGVtcF0gPSAhKHJlc3VsdHNbdGVtcF0gPSBlbGVtKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdC8vIEFkZCBlbGVtZW50cyB0byByZXN1bHRzLCB0aHJvdWdoIHBvc3RGaW5kZXIgaWYgZGVmaW5lZFxuXHRcdH0gZWxzZSB7XG5cdFx0XHRtYXRjaGVyT3V0ID0gY29uZGVuc2UoXG5cdFx0XHRcdG1hdGNoZXJPdXQgPT09IHJlc3VsdHMgP1xuXHRcdFx0XHRcdG1hdGNoZXJPdXQuc3BsaWNlKCBwcmVleGlzdGluZywgbWF0Y2hlck91dC5sZW5ndGggKSA6XG5cdFx0XHRcdFx0bWF0Y2hlck91dFxuXHRcdFx0KTtcblx0XHRcdGlmICggcG9zdEZpbmRlciApIHtcblx0XHRcdFx0cG9zdEZpbmRlciggbnVsbCwgcmVzdWx0cywgbWF0Y2hlck91dCwgeG1sICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBtYXRjaGVyT3V0ICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hlckZyb21Ub2tlbnMoIHRva2VucyApIHtcblx0dmFyIGNoZWNrQ29udGV4dCwgbWF0Y2hlciwgaixcblx0XHRsZW4gPSB0b2tlbnMubGVuZ3RoLFxuXHRcdGxlYWRpbmdSZWxhdGl2ZSA9IEV4cHIucmVsYXRpdmVbIHRva2Vuc1swXS50eXBlIF0sXG5cdFx0aW1wbGljaXRSZWxhdGl2ZSA9IGxlYWRpbmdSZWxhdGl2ZSB8fCBFeHByLnJlbGF0aXZlW1wiIFwiXSxcblx0XHRpID0gbGVhZGluZ1JlbGF0aXZlID8gMSA6IDAsXG5cblx0XHQvLyBUaGUgZm91bmRhdGlvbmFsIG1hdGNoZXIgZW5zdXJlcyB0aGF0IGVsZW1lbnRzIGFyZSByZWFjaGFibGUgZnJvbSB0b3AtbGV2ZWwgY29udGV4dChzKVxuXHRcdG1hdGNoQ29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGNoZWNrQ29udGV4dDtcblx0XHR9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksXG5cdFx0bWF0Y2hBbnlDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gaW5kZXhPZiggY2hlY2tDb250ZXh0LCBlbGVtICkgPiAtMTtcblx0XHR9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksXG5cdFx0bWF0Y2hlcnMgPSBbIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR2YXIgcmV0ID0gKCAhbGVhZGluZ1JlbGF0aXZlICYmICggeG1sIHx8IGNvbnRleHQgIT09IG91
14938dGVybW9zdENvbnRleHQgKSApIHx8IChcblx0XHRcdFx0KGNoZWNrQ29udGV4dCA9IGNvbnRleHQpLm5vZGVUeXBlID9cblx0XHRcdFx0XHRtYXRjaENvbnRleHQoIGVsZW0sIGNvbnRleHQsIHhtbCApIDpcblx0XHRcdFx0XHRtYXRjaEFueUNvbnRleHQoIGVsZW0sIGNvbnRleHQsIHhtbCApICk7XG5cdFx0XHQvLyBBdm9pZCBoYW5naW5nIG9udG8gZWxlbWVudCAoaXNzdWUgIzI5OSlcblx0XHRcdGNoZWNrQ29udGV4dCA9IG51bGw7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH0gXTtcblxuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRpZiAoIChtYXRjaGVyID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zW2ldLnR5cGUgXSkgKSB7XG5cdFx0XHRtYXRjaGVycyA9IFsgYWRkQ29tYmluYXRvcihlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSwgbWF0Y2hlcikgXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWF0Y2hlciA9IEV4cHIuZmlsdGVyWyB0b2tlbnNbaV0udHlwZSBdLmFwcGx5KCBudWxsLCB0b2tlbnNbaV0ubWF0Y2hlcyApO1xuXG5cdFx0XHQvLyBSZXR1cm4gc3BlY2lhbCB1cG9uIHNlZWluZyBhIHBvc2l0aW9uYWwgbWF0Y2hlclxuXHRcdFx0aWYgKCBtYXRjaGVyWyBleHBhbmRvIF0gKSB7XG5cdFx0XHRcdC8vIEZpbmQgdGhlIG5leHQgcmVsYXRpdmUgb3BlcmF0b3IgKGlmIGFueSkgZm9yIHByb3BlciBoYW5kbGluZ1xuXHRcdFx0XHRqID0gKytpO1xuXHRcdFx0XHRmb3IgKCA7IGogPCBsZW47IGorKyApIHtcblx0XHRcdFx0XHRpZiAoIEV4cHIucmVsYXRpdmVbIHRva2Vuc1tqXS50eXBlIF0gKSB7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHNldE1hdGNoZXIoXG5cdFx0XHRcdFx0aSA+IDEgJiYgZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICksXG5cdFx0XHRcdFx0aSA+IDEgJiYgdG9TZWxlY3Rvcihcblx0XHRcdFx0XHRcdC8vIElmIHRoZSBwcmVjZWRpbmcgdG9rZW4gd2FzIGEgZGVzY2VuZGFudCBjb21iaW5hdG9yLCBpbnNlcnQgYW4gaW1wbGljaXQgYW55LWVsZW1lbnQgYCpgXG5cdFx0XHRcdFx0XHR0b2tlbnMuc2xpY2UoIDAsIGkgLSAxICkuY29uY2F0KHsgdmFsdWU6IHRva2Vuc1sgaSAtIDIgXS50eXBlID09PSBcIiBcIiA/IFwiKlwiIDogXCJcIiB9KVxuXHRcdFx0XHRcdCkucmVwbGFjZSggcnRyaW0sIFwiJDFcIiApLFxuXHRcdFx0XHRcdG1hdGNoZXIsXG5cdFx0XHRcdFx0aSA8IGogJiYgbWF0Y2hlckZyb21Ub2tlbnMoIHRva2Vucy5zbGljZSggaSwgaiApICksXG5cdFx0XHRcdFx0aiA8IGxlbiAmJiBtYXRjaGVyRnJvbVRva2VucyggKHRva2VucyA9IHRva2Vucy5zbGljZSggaiApKSApLFxuXHRcdFx0XHRcdGogPCBsZW4gJiYgdG9TZWxlY3RvciggdG9rZW5zIClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdG1hdGNoZXJzLnB1c2goIG1hdGNoZXIgKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNoZXJzLCBzZXRNYXRjaGVycyApIHtcblx0dmFyIGJ5U2V0ID0gc2V0TWF0Y2hlcnMubGVuZ3RoID4gMCxcblx0XHRieUVsZW1lbnQgPSBlbGVtZW50TWF0Y2hlcnMubGVuZ3RoID4gMCxcblx0XHRzdXBlck1hdGNoZXIgPSBmdW5jdGlvbiggc2VlZCwgY29udGV4dCwgeG1sLCByZXN1bHRzLCBvdXRlcm1vc3QgKSB7XG5cdFx0XHR2YXIgZWxlbSwgaiwgbWF0Y2hlcixcblx0XHRcdFx0bWF0Y2hlZENvdW50ID0gMCxcblx0XHRcdFx0aSA9IFwiMFwiLFxuXHRcdFx0XHR1bm1hdGNoZWQgPSBzZWVkICYmIFtdLFxuXHRcdFx0XHRzZXRNYXRjaGVkID0gW10sXG5cdFx0XHRcdGNvbnRleHRCYWNrdXAgPSBvdXRlcm1vc3RDb250ZXh0LFxuXHRcdFx0XHQvLyBXZSBtdXN0IGFsd2F5cyBoYXZlIGVpdGhlciBzZWVkIGVsZW1lbnRzIG9yIG91dGVybW9zdCBjb250ZXh0XG5cdFx0XHRcdGVsZW1zID0gc2VlZCB8fCBieUVsZW1lbnQgJiYgRXhwci5maW5kW1wiVEFHXCJdKCBcIipcIiwgb3V0ZXJtb3N0ICksXG5cdFx0XHRcdC8vIFVzZSBpbnRlZ2VyIGRpcnJ1bnMgaWZmIHRoaXMgaXMgdGhlIG91dGVybW9zdCBtYXRjaGVyXG5cdFx0XHRcdGRpcnJ1bnNVbmlxdWUgPSAoZGlycnVucyArPSBjb250ZXh0QmFja3VwID09IG51bGwgPyAxIDogTWF0aC5yYW5kb20oKSB8fCAwLjEpLFxuXHRcdFx0XHRsZW4gPSBlbGVtcy5sZW5ndGg7XG5cblx0XHRcdGlmICggb3V0ZXJtb3N0ICkge1xuXHRcdFx0XHRvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4dCAhPT0gZG9jdW1lbnQgJiYgY29udGV4dDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIGVsZW1lbnRzIHBhc3NpbmcgZWxlbWVudE1hdGNoZXJzIGRpcmVjdGx5IHRvIHJlc3VsdHNcblx0XHRcdC8vIEtlZXAgYGlgIGEgc3RyaW5nIGlmIHRoZXJlIGFyZSBubyBlbGVtZW50cyBzbyBgbWF0Y2hlZENvdW50YCB3aWxsIGJlIFwiMDBcIiBiZWxvd1xuXHRcdFx0Ly8gU3VwcG9ydDogSUU8OSwgU2FmYXJpXG5cdFx0XHQvLyBUb2xlcmF0ZSBOb2RlTGlzdCBwcm9wZXJ0aWVzIChJRTogXCJsZW5ndGhcIjsgU2FmYXJpOiA8bnVtYmVyPikgbWF0Y2hpbmcgZWxlbWVudHMgYnkgaWRcblx0XHRcdGZvciAoIDsgaSAhPT0gbGVuICYmIChlbGVtID0gZWxlbXNbaV0pICE9IG51bGw7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBieUVsZW1lbnQgJiYgZWxlbSApIHtcblx0XHRcdFx0XHRqID0gMDtcblx0XHRcdFx0XHR3aGlsZSAoIChtYXRjaGVyID0gZWxlbWVudE1hdGNoZXJzW2orK10pICkge1xuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblx0XHRcdFx0XHRcdGRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFRyYWNrIHVubWF0Y2hlZCBlbGVtZW50cyBmb3Igc2V0IGZpbHRlcnNcblx0XHRcdFx0aWYgKCBieVNldCApIHtcblx0XHRcdFx0XHQvLyBUaGV5IHdpbGwgaGF2ZSBnb25lIHRocm91Z2ggYWxsIHBvc3NpYmxlIG1hdGNoZXJzXG5cdFx0XHRcdFx0aWYgKCAoZWxlbSA9ICFtYXRjaGVyICYmIGVsZW0pICkge1xuXHRcdFx0XHRcdFx0bWF0Y2hlZENvdW50LS07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gTGVuZ3RoZW4gdGhlIGFycmF5IGZvciBldmVyeSBlbGVtZW50LCBtYXRjaGVkIG9yIG5vdFxuXHRcdFx0XHRcdGlmICggc2VlZCApIHtcblx0XHRcdFx0XHRcdHVubWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFwcGx5IHNldCBmaWx0ZXJzIHRvIHVubWF0Y2hlZCBlbGVtZW50c1xuXHRcdFx0bWF0Y2hlZENvdW50ICs9IGk7XG5cdFx0XHRpZiAoIGJ5U2V0ICYmIGkgIT09IG1hdGNoZWRDb3VudCApIHtcblx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdHdoaWxlICggKG1hdGNoZXIgPSBzZXRNYXRjaGVyc1tqKytdKSApIHtcblx0XHRcdFx0XHRtYXRjaGVyKCB1bm1hdGNoZWQsIHNldE1hdGNoZWQsIGNvbnRleHQsIHhtbCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0XHRcdC8vIFJlaW50ZWdyYXRlIGVsZW1lbnQgbWF0Y2hlcyB0byBlbGltaW5hdGUgdGhlIG5lZWQgZm9yIHNvcnRpbmdcblx0XHRcdFx0XHRpZiAoIG1hdGNoZWRDb3VudCA+IDAgKSB7XG5cdFx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCAhKHVubWF0Y2hlZFtpXSB8fCBzZXRNYXRjaGVkW2ldKSApIHtcblx0XHRcdFx0XHRcdFx0XHRzZXRNYXRjaGVkW2ldID0gcG9wLmNhbGwoIHJlc3VsdHMgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIERpc2NhcmQgaW5kZXggcGxhY2Vob2xkZXIgdmFsdWVzIHRvIGdldCBvbmx5IGFjdHVhbCBtYXRjaGVzXG5cdFx0XHRcdFx0c2V0TWF0Y2hlZCA9IGNvbmRlbnNlKCBzZXRNYXRjaGVkICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBZGQgbWF0Y2hlcyB0byByZXN1bHRzXG5cdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIHNldE1hdGNoZWQgKTtcblxuXHRcdFx0XHQvLyBTZWVkbGVzcyBzZXQgbWF0Y2hlcyBzdWNjZWVkaW5nIG11bHRpcGxlIHN1Y2Nlc3NmdWwgbWF0Y2hlcnMgc3RpcHVsYXRlIHNvcnRpbmdcblx0XHRcdFx0aWYgKCBvdXRlcm1vc3QgJiYgIXNlZWQgJiYgc2V0TWF0Y2hlZC5sZW5ndGggPiAwICYmXG5cdFx0XHRcdFx0KCBtYXRjaGVkQ291bnQgKyBzZXRNYXRjaGVycy5sZW5ndGggKSA+IDEgKSB7XG5cblx0XHRcdFx0XHRTaXp6bGUudW5pcXVlU29ydCggcmVzdWx0cyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIE92ZXJyaWRlIG1hbmlwdWxhdGlvbiBvZiBnbG9iYWxzIGJ5IG5lc3RlZCBtYXRjaGVyc1xuXHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cdFx0XHRcdGRpcnJ1bnMgP
14938SBkaXJydW5zVW5pcXVlO1xuXHRcdFx0XHRvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4dEJhY2t1cDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHVubWF0Y2hlZDtcblx0XHR9O1xuXG5cdHJldHVybiBieVNldCA/XG5cdFx0bWFya0Z1bmN0aW9uKCBzdXBlck1hdGNoZXIgKSA6XG5cdFx0c3VwZXJNYXRjaGVyO1xufVxuXG5jb21waWxlID0gU2l6emxlLmNvbXBpbGUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIG1hdGNoIC8qIEludGVybmFsIFVzZSBPbmx5ICovICkge1xuXHR2YXIgaSxcblx0XHRzZXRNYXRjaGVycyA9IFtdLFxuXHRcdGVsZW1lbnRNYXRjaGVycyA9IFtdLFxuXHRcdGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGVbIHNlbGVjdG9yICsgXCIgXCIgXTtcblxuXHRpZiAoICFjYWNoZWQgKSB7XG5cdFx0Ly8gR2VuZXJhdGUgYSBmdW5jdGlvbiBvZiByZWN1cnNpdmUgZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgZWFjaCBlbGVtZW50XG5cdFx0aWYgKCAhbWF0Y2ggKSB7XG5cdFx0XHRtYXRjaCA9IHRva2VuaXplKCBzZWxlY3RvciApO1xuXHRcdH1cblx0XHRpID0gbWF0Y2gubGVuZ3RoO1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0Y2FjaGVkID0gbWF0Y2hlckZyb21Ub2tlbnMoIG1hdGNoW2ldICk7XG5cdFx0XHRpZiAoIGNhY2hlZFsgZXhwYW5kbyBdICkge1xuXHRcdFx0XHRzZXRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGVsZW1lbnRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDYWNoZSB0aGUgY29tcGlsZWQgZnVuY3Rpb25cblx0XHRjYWNoZWQgPSBjb21waWxlckNhY2hlKCBzZWxlY3RvciwgbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNoZXJzICkgKTtcblxuXHRcdC8vIFNhdmUgc2VsZWN0b3IgYW5kIHRva2VuaXphdGlvblxuXHRcdGNhY2hlZC5zZWxlY3RvciA9IHNlbGVjdG9yO1xuXHR9XG5cdHJldHVybiBjYWNoZWQ7XG59O1xuXG4vKipcbiAqIEEgbG93LWxldmVsIHNlbGVjdGlvbiBmdW5jdGlvbiB0aGF0IHdvcmtzIHdpdGggU2l6emxlJ3MgY29tcGlsZWRcbiAqICBzZWxlY3RvciBmdW5jdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfEZ1bmN0aW9ufSBzZWxlY3RvciBBIHNlbGVjdG9yIG9yIGEgcHJlLWNvbXBpbGVkXG4gKiAgc2VsZWN0b3IgZnVuY3Rpb24gYnVpbHQgd2l0aCBTaXp6bGUuY29tcGlsZVxuICogQHBhcmFtIHtFbGVtZW50fSBjb250ZXh0XG4gKiBAcGFyYW0ge0FycmF5fSBbcmVzdWx0c11cbiAqIEBwYXJhbSB7QXJyYXl9IFtzZWVkXSBBIHNldCBvZiBlbGVtZW50cyB0byBtYXRjaCBhZ2FpbnN0XG4gKi9cbnNlbGVjdCA9IFNpenpsZS5zZWxlY3QgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7XG5cdHZhciBpLCB0b2tlbnMsIHRva2VuLCB0eXBlLCBmaW5kLFxuXHRcdGNvbXBpbGVkID0gdHlwZW9mIHNlbGVjdG9yID09PSBcImZ1bmN0aW9uXCIgJiYgc2VsZWN0b3IsXG5cdFx0bWF0Y2ggPSAhc2VlZCAmJiB0b2tlbml6ZSggKHNlbGVjdG9yID0gY29tcGlsZWQuc2VsZWN0b3IgfHwgc2VsZWN0b3IpICk7XG5cblx0cmVzdWx0cyA9IHJlc3VsdHMgfHwgW107XG5cblx0Ly8gVHJ5IHRvIG1pbmltaXplIG9wZXJhdGlvbnMgaWYgdGhlcmUgaXMgbm8gc2VlZCBhbmQgb25seSBvbmUgZ3JvdXBcblx0aWYgKCBtY
14938XRjaC5sZW5ndGggPT09IDEgKSB7XG5cblx0XHQvLyBUYWtlIGEgc2hvcnRjdXQgYW5kIHNldCB0aGUgY29udGV4dCBpZiB0aGUgcm9vdCBzZWxlY3RvciBpcyBhbiBJRFxuXHRcdHRva2VucyA9IG1hdGNoWzBdID0gbWF0Y2hbMF0uc2xpY2UoIDAgKTtcblx0XHRpZiAoIHRva2Vucy5sZW5ndGggPiAyICYmICh0b2tlbiA9IHRva2Vuc1swXSkudHlwZSA9PT0gXCJJRFwiICYmXG5cdFx0XHRcdHN1cHBvcnQuZ2V0QnlJZCAmJiBjb250ZXh0Lm5vZGVUeXBlID09PSA5ICYmIGRvY3VtZW50SXNIVE1MICYmXG5cdFx0XHRcdEV4cHIucmVsYXRpdmVbIHRva2Vuc1sxXS50eXBlIF0gKSB7XG5cblx0XHRcdGNvbnRleHQgPSAoIEV4cHIuZmluZFtcIklEXCJdKCB0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UocnVuZXNjYXBlLCBmdW5lc2NhcGUpLCBjb250ZXh0ICkgfHwgW10gKVswXTtcblx0XHRcdGlmICggIWNvbnRleHQgKSB7XG5cdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXG5cdFx0XHQvLyBQcmVjb21waWxlZCBtYXRjaGVycyB3aWxsIHN0aWxsIHZlcmlmeSBhbmNlc3RyeSwgc28gc3RlcCB1cCBhIGxldmVsXG5cdFx0XHR9IGVsc2UgaWYgKCBjb21waWxlZCApIHtcblx0XHRcdFx0Y29udGV4dCA9IGNvbnRleHQucGFyZW50Tm9kZTtcblx0XHRcdH1cblxuXHRcdFx0c2VsZWN0b3IgPSBzZWxlY3Rvci5zbGljZSggdG9rZW5zLnNoaWZ0KCkudmFsdWUubGVuZ3RoICk7XG5cdFx0fVxuXG5cdFx0Ly8gRmV0Y2ggYSBzZWVkIHNldCBmb3IgcmlnaHQtdG8tbGVmdCBtYXRjaGluZ1xuXHRcdGkgPSBtYXRjaEV4cHJbXCJuZWVkc0NvbnRleHRcIl0udGVzdCggc2VsZWN0b3IgKSA/IDAgOiB0b2tlbnMubGVuZ3RoO1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0dG9rZW4gPSB0b2tlbnNbaV07XG5cblx0XHRcdC8vIEFib3J0IGlmIHdlIGhpdCBhIGNvbWJpbmF0b3Jcblx0XHRcdGlmICggRXhwci5yZWxhdGl2ZVsgKHR5cGUgPSB0b2tlbi50eXBlKSBdICkge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmICggKGZpbmQgPSBFeHByLmZpbmRbIHR5cGUgXSkgKSB7XG5cdFx0XHRcdC8vIFNlYXJjaCwgZXhwYW5kaW5nIGNvbnRleHQgZm9yIGxlYWRpbmcgc2libGluZyBjb21iaW5hdG9yc1xuXHRcdFx0XHRpZiAoIChzZWVkID0gZmluZChcblx0XHRcdFx0XHR0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICksXG5cdFx0XHRcdFx0cnNpYmxpbmcudGVzdCggdG9rZW5zWzBdLnR5cGUgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHwgY29udGV4dFxuXHRcdFx0XHQpKSApIHtcblxuXHRcdFx0XHRcdC8vIElmIHNlZWQgaXMgZW1wdHkgb3Igbm8gdG9rZW5zIHJlbWFpbiwgd2UgY2FuIHJldHVybiBlYXJseVxuXHRcdFx0XHRcdHRva2Vucy5zcGxpY2UoIGksIDEgKTtcblx0XHRcdFx0XHRzZWxlY3RvciA9IHNlZWQubGVuZ3RoICYmIHRvU2VsZWN0b3IoIHRva2VucyApO1xuXHRcdFx0XHRcdGlmICggIXNlbGVjdG9yICkge1xuXHRcdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgc2VlZCApO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBDb21waWxlIGFuZCBleGVjdXRlIGEgZmlsdGVyaW5nIGZ1bmN0aW9uIGlmIG9uZSBpcyBub3QgcHJvdmlkZWRcblx0Ly8gUHJvdmlkZSBgbWF0Y2hgIHRvIGF2b2lkIHJldG9rZW5pemF0aW9uIGlmIHdlIG1vZGlmaWVkIHRoZSBzZWxlY3RvciBhYm92ZVxuXHQoIGNvbXBpbGVkIHx8IGNvbXBpbGUoIHNlbGVjdG9yLCBtYXRjaCApICkoXG5cdFx0c2VlZCxcblx0XHRjb250ZXh0LFxuXHRcdCFkb2N1bWVudElzSFRNTCxcblx0XHRyZXN1bHRzLFxuXHRcdHJzaWJsaW5nLnRlc3QoIHNlbGVjdG9yICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHRcblx0KTtcblx0cmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vLyBPbmUtdGltZSBhc3NpZ25tZW50c1xuXG4vLyBTb3J0IHN0YWJpbGl0eVxuc3VwcG9ydC5zb3J0U3RhYmxlID0gZXhwYW5kby5zcGxpdChcIlwiKS5zb3J0KCBzb3J0T3JkZXIgKS5qb2luKFwiXCIpID09PSBleHBhbmRvO1xuXG4vLyBTdXBwb3J0OiBDaHJvbWUgMTQtMzUrXG4vLyBBbHdheXMgYXNzdW1lIGR1cGxpY2F0ZXMgaWYgdGhleSBhcmVuJ3QgcGFzc2VkIHRvIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uXG5zdXBwb3J0LmRldGVjdER1cGxpY2F0ZXMgPSAhIWhhc0R1cGxpY2F0ZTtcblxuLy8gSW5pdGlhbGl6ZSBhZ2FpbnN0IHRoZSBkZWZhdWx0IGRvY3VtZW50XG5zZXREb2N1bWVudCgpO1xuXG4vLyBTdXBwb3J0OiBXZWJraXQ8NTM3LjMyIC0gU2FmYXJpIDYuMC4zL0Nocm9tZSAyNSAoZml4ZWQgaW4gQ2hyb21lIDI3KVxuLy8gRGV0YWNoZWQgbm9kZXMgY29uZm91bmRpbmdseSBmb2xsb3cgKmVhY2ggb3RoZXIqXG5zdXBwb3J0LnNvcnREZXRhY2hlZCA9IGFzc2VydChmdW5jdGlvbiggZGl2MSApIHtcblx0Ly8gU2hvdWxkIHJldHVybiAxLCBidXQgcmV0dXJucyA0IChmb2xsb3dpbmcpXG5cdHJldHVybiBkaXYxLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpICkgJiAxO1xufSk7XG5cbi8vIFN1cHBvcnQ6IElFPDhcbi8vIFByZXZlbnQgYXR0cmlidXRlL3Byb3BlcnR5IFwiaW50ZXJwb2xhdGlvblwiXG4vLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM1MzY0MjklMjhWUy44NSUyOS5hc3B4XG5pZiAoICFhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcblx0ZGl2LmlubmVySFRNTCA9IFwiPGEgaHJlZj0nIyc+PC9hPlwiO1xuXHRyZXR1cm4gZGl2LmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSA9PT0gXCIjXCIgO1xufSkgKSB7XG5cdGFkZEhhbmRsZSggXCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoXCIsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHRpZiAoICFpc1hNTCApIHtcblx0XHRcdHJldHVybi
14938BlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSwgbmFtZS50b0xvd2VyQ2FzZSgpID09PSBcInR5cGVcIiA/IDEgOiAyICk7XG5cdFx0fVxuXHR9KTtcbn1cblxuLy8gU3VwcG9ydDogSUU8OVxuLy8gVXNlIGRlZmF1bHRWYWx1ZSBpbiBwbGFjZSBvZiBnZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKVxuaWYgKCAhc3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcblx0ZGl2LmlubmVySFRNTCA9IFwiPGlucHV0Lz5cIjtcblx0ZGl2LmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCBcInZhbHVlXCIsIFwiXCIgKTtcblx0cmV0dXJuIGRpdi5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSggXCJ2YWx1ZVwiICkgPT09IFwiXCI7XG59KSApIHtcblx0YWRkSGFuZGxlKCBcInZhbHVlXCIsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHRpZiAoICFpc1hNTCAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIiApIHtcblx0XHRcdHJldHVybiBlbGVtLmRlZmF1bHRWYWx1ZTtcblx0XHR9XG5cdH0pO1xufVxuXG4vLyBTdXBwb3J0OiBJRTw5XG4vLyBVc2UgZ2V0QXR0cmlidXRlTm9kZSB0byBmZXRjaCBib29sZWFucyB3aGVuIGdldEF0dHJpYnV0ZSBsaWVzXG5pZiAoICFhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcblx0cmV0dXJuIGRpdi5nZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKSA9PSBudWxsO1xufSkgKSB7XG5cdGFkZEhhbmRsZSggYm9vbGVhbnMsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHR2YXIgdmFsO1xuXHRcdGlmICggIWlzWE1MICkge1xuXHRcdFx0cmV0dXJuIGVsZW1bIG5hbWUgXSA9PT0gdHJ1ZSA/IG5hbWUudG9Mb3dlckNhc2UoKSA6XG5cdFx0XHRcdFx0KHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApKSAmJiB2YWwuc3BlY2lmaWVkID9cblx0XHRcdFx0XHR2YWwudmFsdWUgOlxuXHRcdFx0XHRudWxsO1xuXHRcdH1cblx0fSk7XG59XG5cbnJldHVybiBTaXp6bGU7XG5cbn0pKCB3aW5kb3cgKTtcblxuXG5cbmpRdWVyeS5maW5kID0gU2l6emxlO1xualF1ZXJ5LmV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzO1xualF1ZXJ5LmV4cHJbXCI6XCJdID0galF1ZXJ5LmV4cHIucHNldWRvcztcbmpRdWVyeS51bmlxdWUgPSBTaXp6bGUudW5pcXVlU29ydDtcbmpRdWVyeS50ZXh0ID0gU2l6emxlLmdldFRleHQ7XG5qUXVlcnkuaXNYTUxEb2MgPSBTaXp6bGUuaXNYTUw7XG5qUXVlcnkuY29udGFpbnMgPSBTaXp6bGUuY29udGFpbnM7XG5cblxuXG52YXIgcm5lZWRzQ29udGV4dCA9IGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dDtcblxudmFyIHJzaW5nbGVUYWcgPSAoL148KFxcdyspXFxzKlxcLz8+KD86PFxcL1xcMT58KSQvKTtcblxuXG5cbnZhciByaXNTaW1wbGUgPSAvXi5bXjojXFxbXFwuLF0qJC87XG5cbi8vIEltcGxlbWVudCB0aGUgaWRlbnRpY2FsIGZ1bmN0aW9uYWxpdHkgZm9yIGZpbHRlciBhbmQgbm90XG5mdW5jdGlvbiB3aW5ub3coIGVsZW1lbnRzLCBxdWFsaWZpZXIsIG5vdCApIHtcblx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcXVhbGlmaWVyICkgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7XG5cdFx0XHQvKiBqc2hpbnQgLVcwMTggKi9cblx0XHRcdHJldHVybiAhIXF1YWxpZmllci5jYWxsKCBlbGVtLCBpLCBlbGVtICkgIT09IG5vdDtcblx0XHR9KTtcblxuXHR9XG5cblx0aWYgKCBxdWFsaWZpZXIubm9kZVR5cGUgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCBlbGVtID09PSBxdWFsaWZpZXIgKSAhPT0gbm90O1xuXHRcdH0pO1xuXG5cdH1cblxuXHRpZiAoIHR5cGVvZiBxdWFsaWZpZXIgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0aWYgKCByaXNTaW1wbGUudGVzdCggcXVhbGlmaWVyICkgKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LmZpbHRlciggcXVhbGlmaWVyLCBlbGVtZW50cywgbm90ICk7XG5cdFx0fVxuXG5cdFx0cXVhbGlmaWVyID0galF1ZXJ5LmZpbHRlciggcXVhbGlmaWVyLCBlbGVtZW50cyApO1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuICggaW5kZXhPZi5jYWxsKCBxdWFsaWZpZXIsIGVsZW0gKSA+PSAwICkgIT09IG5vdDtcblx0fSk7XG59XG5cbmpRdWVyeS5maWx0ZXIgPSBmdW5jdGlvbiggZXhwciwgZWxlbXMsIG5vdCApIHtcblx0dmFyIGVsZW0gPSBlbGVtc1sgMCBdO1xuXG5cdGlmICggbm90ICkge1xuXHRcdGV4cHIgPSBcIjpub3QoXCIgKyBleHByICsgXCIpXCI7XG5cdH1cblxuXHRyZXR1cm4gZWxlbXMubGVuZ3RoID09PSAxICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgP1xuXHRcdGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggZWxlbSwgZXhwciApID8gWyBlbGVtIF0gOiBbXSA6XG5cdFx0alF1ZXJ5LmZpbmQubWF0Y2hlcyggZXhwciwgalF1ZXJ5LmdyZXAoIGVsZW1zLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtLm5vZGVUeXBlID09PSAxO1xuXHRcdH0pKTtcbn07XG5cbmpRdWVyeS5mbi5leHRlbmQoe1xuXHRmaW5kOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dmFyIGksXG5cdFx0XHRsZW4gPSB0aGlzLmxlbmd0aCxcblx0XHRcdHJldCA9IFtdLFxuXHRcdFx0c2VsZiA9IHRoaXM7XG5cblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5KCBzZWxlY3RvciApLmZpbHRlcihmdW5jdGlvbigpIHtcblx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0XHRpZiAoIGpRdWVyeS5jb250YWlucyggc2VsZlsgaSBdLCB0aGlzICkgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pICk7XG5cdFx0fVxuXG5cdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdGpRdWVyeS5maW5kKCBzZWxlY3Rvciwgc2VsZlsgaSBdLCByZXQgKTtcblx0XHR9XG5cblx0XHQvLyBOZWVkZWQgYmVjYXVzZSAkKCBzZWxlY3RvciwgY29udGV4dCApIGJlY29tZXMgJCggY29udGV4dCApLmZpbmQoIHNlbGVjdG9yIClcblx0XHRyZXQgPSB0aGlzLnB1c2hTdGFjayggbGVuID4gMSA/IGpRdWVyeS51bmlxdWUoIHJldCApIDogcmV0ICk7XG5cdFx0cmV0LnNlbGVjdG9yID0gdGh
14938pcy5zZWxlY3RvciA/IHRoaXMuc2VsZWN0b3IgKyBcIiBcIiArIHNlbGVjdG9yIDogc2VsZWN0b3I7XG5cdFx0cmV0dXJuIHJldDtcblx0fSxcblx0ZmlsdGVyOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3aW5ub3codGhpcywgc2VsZWN0b3IgfHwgW10sIGZhbHNlKSApO1xuXHR9LFxuXHRub3Q6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyh0aGlzLCBzZWxlY3RvciB8fCBbXSwgdHJ1ZSkgKTtcblx0fSxcblx0aXM6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gISF3aW5ub3coXG5cdFx0XHR0aGlzLFxuXG5cdFx0XHQvLyBJZiB0aGlzIGlzIGEgcG9zaXRpb25hbC9yZWxhdGl2ZSBzZWxlY3RvciwgY2hlY2sgbWVtYmVyc2hpcCBpbiB0aGUgcmV0dXJuZWQgc2V0XG5cdFx0XHQvLyBzbyAkKFwicDpmaXJzdFwiKS5pcyhcInA6bGFzdFwiKSB3b24ndCByZXR1cm4gdHJ1ZSBmb3IgYSBkb2Mgd2l0aCB0d28gXCJwXCIuXG5cdFx0XHR0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgJiYgcm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApID9cblx0XHRcdFx0alF1ZXJ5KCBzZWxlY3RvciApIDpcblx0XHRcdFx0c2VsZWN0b3IgfHwgW10sXG5cdFx0XHRmYWxzZVxuXHRcdCkubGVuZ3RoO1xuXHR9XG59KTtcblxuXG4vLyBJbml0aWFsaXplIGEgalF1ZXJ5IG9iamVjdFxuXG5cbi8vIEEgY2VudHJhbCByZWZlcmVuY2UgdG8gdGhlIHJvb3QgalF1ZXJ5KGRvY3VtZW50KVxudmFyIHJvb3RqUXVlcnksXG5cblx0Ly8gQSBzaW1wbGUgd2F5IHRvIGNoZWNrIGZvciBIVE1MIHN0cmluZ3Ncblx0Ly8gUHJpb3JpdGl6ZSAjaWQgb3ZlciA8dGFnPiB0byBhdm9pZCBYU1MgdmlhIGxvY2F0aW9uLmhhc2ggKCM5NTIxKVxuXHQvLyBTdHJpY3QgSFRNTCByZWNvZ25pdGlvbiAoIzExMjkwOiBtdXN0IHN0YXJ0IHdpdGggPClcblx0cnF1aWNrRXhwciA9IC9eKD86XFxzKig8W1xcd1xcV10rPilbXj5dKnwjKFtcXHctXSopKSQvLFxuXG5cdGluaXQgPSBqUXVlcnkuZm4uaW5pdCA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblx0XHR2YXIgbWF0Y2gsIGVsZW07XG5cblx0XHQvLyBIQU5ETEU6ICQoXCJcIiksICQobnVsbCksICQodW5kZWZpbmVkKSwgJChmYWxzZSlcblx0XHRpZiAoICFzZWxlY3RvciApIHtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblxuXHRcdC8vIEhhbmRsZSBIVE1MIHN0cmluZ3Ncblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGlmICggc2VsZWN0b3JbMF0gPT09IFwiPFwiICYmIHNlbGVjdG9yWyBzZWxlY3Rvci5sZW5ndGggLSAxIF0gPT09IFwiPlwiICYmIHNlbGVjdG9yLmxlbmd0aCA+PSAzICkge1xuXHRcdFx0XHQvLyBBc3N1bWUgdGhhdCBzdHJpbmdzIHRoYXQgc3RhcnQgYW5kIGVuZCB3aXRoIDw+IGFyZSBIVE1MIGFuZCBza2lwIHRoZSByZWdleCBjaGVja1xuXHRcdFx0XHRtYXRjaCA9IFsgbnVsbCwgc2VsZWN0b3IsIG51bGwgXTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE1hdGNoIGh0bWwgb3IgbWFrZSBzdXJlIG5vIGNvbnRleHQgaXMgc3BlY2lmaWVkIGZvciAjaWRcblx0XHRcdGlmICggbWF0Y2ggJiYgKG1hdGNoWzFdIHx8ICFjb250ZXh0KSApIHtcblxuXHRcdFx0XHQvLyBIQU5ETEU6ICQoaHRtbCkgLT4gJChhcnJheSlcblx0XHRcdFx0aWYgKCBtYXRjaFsxXSApIHtcblx0XHRcdFx0XHRjb250ZXh0ID0gY29udGV4dCBpbnN0YW5jZW9mIGpRdWVyeSA/IGNvbnRleHRbMF0gOiBjb250ZXh0O1xuXG5cdFx0XHRcdFx0Ly8gT3B0aW9uIHRvIHJ1biBzY3JpcHRzIGlzIHRydWUgZm9yIGJhY2stY29tcGF0XG5cdFx0XHRcdFx0Ly8gSW50ZW50aW9uYWxseSBsZXQgdGhlIGVycm9yIGJlIHRocm93biBpZiBwYXJzZUhUTUwgaXMgbm90IHByZXNlbnRcblx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIHRoaXMsIGpRdWVyeS5wYXJzZUhUTUwoXG5cdFx0XHRcdFx0XHRtYXRjaFsxXSxcblx0XHRcdFx0XHRcdGNvbnRleHQgJiYgY29udGV4dC5ub2RlVHlwZSA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogZG9jdW1lbnQsXG5cdFx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0KSApO1xuXG5cdFx0XHRcdFx0Ly8gSEFORExFOiAkKGh0bWwsIHByb3BzKVxuXHRcdFx0XHRcdGlmICggcnNpbmdsZVRhZy50ZXN0KCBtYXRjaFsxXSApICYmIGpRdWVyeS5pc1BsYWluT2JqZWN0KCBjb250ZXh0ICkgKSB7XG5cdFx0XHRcdFx0XHRmb3IgKCBtYXRjaCBpbiBjb250ZXh0ICkge1xuXHRcdFx0XHRcdFx0XHQvLyBQcm9wZXJ0aWVzIG9mIGNvbnRleHQgYXJlIGNhbGxlZCBhcyBtZXRob2RzIGlmIHBvc3NpYmxlXG5cdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHRoaXNbIG1hdGNoIF0gKSApIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzWyBtYXRjaCBdKCBjb250ZXh0WyBtYXRjaCBdICk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gLi4uYW5kIG90aGVyd2lzZSBzZXQgYXMgYXR0cmlidXRlc1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuYXR0ciggbWF0Y2gsIGNvbnRleHRbIG1hdGNoIF0gKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXG5cdFx0XHRcdC8vIEhBTkRMRTogJCgjaWQpXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBtYXRjaFsyXSApO1xuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogQmxhY2tiZXJyeSA0LjZcblx0XHRcdFx0XHQvLyBnRUJJRCByZXR1cm5zIG5vZGVzIG5vIGxvbmdlciBpbiB0aGUgZG9jdW1lbnQgKCM2OTYzKVxuXHRcdFx0XHRcdGlmICggZWxlbSAmJiBlbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdFx0XHQvLyBJbmplY3QgdGhlIGVsZW1lbnQgZGlyZWN0bHkgaW50byB0aGUgalF1ZXJ5IG9iamVjdFxuXHRcdFx0XHRcdFx0dGhpcy5sZW5ndGggPSAxO1xuXHRcdFx0XHRcdFx0dGhpc1swXSA9IGVsZW07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dGhpcy5jb250ZXh0ID0gZG9jdW1lbnQ7XG5cdFx0XHRcdFx0dGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yO1xuXHRcdFx0XHRcdHJldHVybi
14938B0aGlzO1xuXHRcdFx0XHR9XG5cblx0XHRcdC8vIEhBTkRMRTogJChleHByLCAkKC4uLikpXG5cdFx0XHR9IGVsc2UgaWYgKCAhY29udGV4dCB8fCBjb250ZXh0LmpxdWVyeSApIHtcblx0XHRcdFx0cmV0dXJuICggY29udGV4dCB8fCByb290alF1ZXJ5ICkuZmluZCggc2VsZWN0b3IgKTtcblxuXHRcdFx0Ly8gSEFORExFOiAkKGV4cHIsIGNvbnRleHQpXG5cdFx0XHQvLyAod2hpY2ggaXMganVzdCBlcXVpdmFsZW50IHRvOiAkKGNvbnRleHQpLmZpbmQoZXhwcilcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmNvbnN0cnVjdG9yKCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKTtcblx0XHRcdH1cblxuXHRcdC8vIEhBTkRMRTogJChET01FbGVtZW50KVxuXHRcdH0gZWxzZSBpZiAoIHNlbGVjdG9yLm5vZGVUeXBlICkge1xuXHRcdFx0dGhpcy5jb250ZXh0ID0gdGhpc1swXSA9IHNlbGVjdG9yO1xuXHRcdFx0dGhpcy5sZW5ndGggPSAxO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cblx0XHQvLyBIQU5ETEU6ICQoZnVuY3Rpb24pXG5cdFx0Ly8gU2hvcnRjdXQgZm9yIGRvY3VtZW50IHJlYWR5XG5cdFx0fSBlbHNlIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHNlbGVjdG9yICkgKSB7XG5cdFx0XHRyZXR1cm4gdHlwZW9mIHJvb3RqUXVlcnkucmVhZHkgIT09IFwidW5kZWZpbmVkXCIgP1xuXHRcdFx0XHRyb290alF1ZXJ5LnJlYWR5KCBzZWxlY3RvciApIDpcblx0XHRcdFx0Ly8gRXhlY3V0ZSBpbW1lZGlhdGVseSBpZiByZWFkeSBpcyBub3QgcHJlc2VudFxuXHRcdFx0XHRzZWxlY3RvciggalF1ZXJ5ICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBzZWxlY3Rvci5zZWxlY3RvciAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0dGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yLnNlbGVjdG9yO1xuXHRcdFx0dGhpcy5jb250ZXh0ID0gc2VsZWN0b3IuY29udGV4dDtcblx0XHR9XG5cblx0XHRyZXR1cm4galF1ZXJ5Lm1ha2VBcnJheSggc2VsZWN0b3IsIHRoaXMgKTtcblx0fTtcblxuLy8gR2l2ZSB0aGUgaW5pdCBmdW5jdGlvbiB0aGUgalF1ZXJ5IH
14938Byb3RvdHlwZSBmb3IgbGF0ZXIgaW5zdGFudGlhdGlvblxuaW5pdC5wcm90b3R5cGUgPSBqUXVlcnkuZm47XG5cbi8vIEluaXRpYWxpemUgY2VudHJhbCByZWZlcmVuY2VcbnJvb3RqUXVlcnkgPSBqUXVlcnkoIGRvY3VtZW50ICk7XG5cblxudmFyIHJwYXJlbnRzcHJldiA9IC9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLFxuXHQvLyBNZXRob2RzIGd1YXJhbnRlZWQgdG8gcHJvZHVjZSBhIHVuaXF1ZSBzZXQgd2hlbiBzdGFydGluZyBmcm9tIGEgdW5pcXVlIHNldFxuXHRndWFyYW50ZWVkVW5pcXVlID0ge1xuXHRcdGNoaWxkcmVuOiB0cnVlLFxuXHRcdGNvbnRlbnRzOiB0cnVlLFxuXHRcdG5leHQ6IHRydWUsXG5cdFx0cHJldjogdHJ1ZVxuXHR9O1xuXG5qUXVlcnkuZXh0ZW5kKHtcblx0ZGlyOiBmdW5jdGlvbiggZWxlbSwgZGlyLCB1bnRpbCApIHtcblx0XHR2YXIgbWF0Y2hlZCA9IFtdLFxuXHRcdFx0dHJ1bmNhdGUgPSB1bnRpbCAhPT0gdW5kZWZpbmVkO1xuXG5cdFx0d2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSAmJiBlbGVtLm5vZGVUeXBlICE9PSA5ICkge1xuXHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRpZiAoIHRydW5jYXRlICYmIGpRdWVyeSggZWxlbSApLmlzKCB1bnRpbCApICkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1hdGNoZWQucHVzaCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gbWF0Y2hlZDtcblx0fSxcblxuXHRzaWJsaW5nOiBmdW5jdGlvbiggbiwgZWxlbSApIHtcblx0XHR2YXIgbWF0Y2hlZCA9IFtdO1xuXG5cdFx0Zm9yICggOyBuOyBuID0gbi5uZXh0U2libGluZyApIHtcblx0XHRcdGlmICggbi5ub2RlVHlwZSA9PT0gMSAmJiBuICE9PSBlbGVtICkge1xuXHRcdFx0XHRtYXRjaGVkLnB1c2goIG4gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gbWF0Y2hlZDtcblx0fVxufSk7XG5cbmpRdWVyeS5mbi5leHRlbmQoe1xuXHRoYXM6IGZ1bmN0aW9uKCB0YXJnZXQgKSB7XG5cdFx0dmFyIHRhcmdldHMgPSBqUXVlcnkoIHRhcmdldCwgdGhpcyApLFxuXHRcdFx0bCA9IHRhcmdldHMubGVuZ3RoO1xuXG5cdFx0cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGkgPSAwO1xuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRpZiAoIGpRdWVyeS5jb250YWlucyggdGhpcywgdGFyZ2V0c1tpXSApICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cblx0Y2xvc2VzdDogZnVuY3Rpb24oIHNlbGVjdG9ycywgY29udGV4dCApIHtcblx0XHR2YXIgY3VyLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRtYXRjaGVkID0gW10sXG5cdFx0XHRwb3MgPSBybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9ycyApIHx8IHR5cGVvZiBzZWxlY3RvcnMgIT09IFwic3RyaW5nXCIgP1xuXHRcdFx0XHRqUXVlcnkoIHNlbGVjdG9ycywgY29udGV4dCB8fCB0aGlzLmNvbnRleHQgKSA6XG5cdFx0XHRcdDA7XG5cblx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRmb3IgKCBjdXIgPSB0aGlzW2ldOyBjdXIgJiYgY3VyICE9PSBjb250ZXh0OyBjdXIgPSBjdXIucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0Ly8gQWx3YXlzIHNraXAgZG9jdW1lbnQgZnJhZ21lbnRzXG5cdFx0XHRcdGlmICggY3VyLm5vZGVUeXBlIDwgMTEgJiYgKHBvcyA/XG5cdFx0XHRcdFx0cG9zLmluZGV4KGN1cikgPiAtMSA6XG5cblx0XHRcdFx0XHQvLyBEb24ndCBwYXNzIG5vbi1lbGVtZW50cyB0byBTaXp6bGVcblx0XHRcdFx0XHRjdXIubm9kZVR5cGUgPT09IDEgJiZcblx0XHRcdFx0XHRcdGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvcihjdXIsIHNlbGVjdG9ycykpICkge1xuXG5cdFx0XHRcdFx0bWF0Y2hlZC5wdXNoKCBjdXIgKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggbWF0Y2hlZC5sZW5ndGggPiAxID8galF1ZXJ5LnVuaXF1ZSggbWF0Y2hlZCApIDogbWF0Y2hlZCApO1xuXHR9LFxuXG5cdC8vIERldGVybWluZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCB3aXRoaW4gdGhlIHNldFxuXHRpbmRleDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBObyBhcmd1bWVudCwgcmV0dXJuIGluZGV4IGluIHBhcmVudFxuXHRcdGlmICggIWVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCB0aGlzWyAwIF0gJiYgdGhpc1sgMCBdLnBhcmVudE5vZGUgKSA/IHRoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTE7XG5cdFx0fVxuXG5cdFx0Ly8gSW5kZXggaW4gc2VsZWN0b3Jcblx0XHRpZiAoIHR5cGVvZiBlbGVtID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIGluZGV4T2YuY2FsbCggalF1ZXJ5KCBlbGVtICksIHRoaXNbIDAgXSApO1xuXHRcdH1cblxuXHRcdC8vIExvY2F0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudFxuXHRcdHJldHVybiBpbmRleE9mLmNhbGwoIHRoaXMsXG5cblx0XHRcdC8vIElmIGl0IHJlY2VpdmVzIGEgalF1ZXJ5IG9iamVjdCwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgdXNlZFxuXHRcdFx0ZWxlbS5qcXVlcnkgPyBlbGVtWyAwIF0gOiBlbGVtXG5cdFx0KTtcblx0fSxcblxuXHRhZGQ6IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soXG5cdFx0XHRqUXVlcnkudW5pcXVlKFxuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIHRoaXMuZ2V0KCksIGpRdWVyeSggc2VsZWN0b3IsIGNvbnRleHQgKSApXG5cdFx0XHQpXG5cdFx0KTtcblx0fSxcblxuXHRhZGRCYWNrOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHRoaXMuYWRkKCBzZWxlY3RvciA9PSBudWxsID9cblx0XHRcdHRoaXMucHJldk9iamVjdCA6IHRoaXMucHJldk9iamVjdC5maWx0ZXIoc2VsZWN0b3IpXG5cdFx0KTtcblx0fVxufSk7XG5cbmZ1bmN0aW9uIHNpYmxpbmcoIGN1ciwgZGlyICkge1xuXHR3aGlsZSAoIChjdXIgPSBjdXJbZGlyXSkgJiYgY3VyLm5vZGVUeXBlICE9PSAxICkge31cblx0cmV0dXJuIGN1cjtcbn1cblxualF1ZXJ5LmVhY2goe1xuXHRwYXJlbnQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7XG5cdFx0cmV0dXJuIHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgIT09IDExID8gcGFyZW50IDogbnVsbDtcblx0fSxcblx0cGFyZW50czogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sIFwicGFyZW50Tm9kZVwiICk7XG5cdH0sXG5cdHBhcmVudHNVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkge1xuXHRcdHJldHVybi
14938BqUXVlcnkuZGlyKCBlbGVtLCBcInBhcmVudE5vZGVcIiwgdW50aWwgKTtcblx0fSxcblx0bmV4dDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmcoIGVsZW0sIFwibmV4dFNpYmxpbmdcIiApO1xuXHR9LFxuXHRwcmV2OiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gc2libGluZyggZWxlbSwgXCJwcmV2aW91c1NpYmxpbmdcIiApO1xuXHR9LFxuXHRuZXh0QWxsOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmRpciggZWxlbSwgXCJuZXh0U2libGluZ1wiICk7XG5cdH0sXG5cdHByZXZBbGw6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiICk7XG5cdH0sXG5cdG5leHRVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkge1xuXHRcdHJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIsIHVudGlsICk7XG5cdH0sXG5cdHByZXZVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkge1xuXHRcdHJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiLCB1bnRpbCApO1xuXHR9LFxuXHRzaWJsaW5nczogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5zaWJsaW5nKCAoIGVsZW0ucGFyZW50Tm9kZSB8fCB7fSApLmZpcnN0Q2hpbGQsIGVsZW0gKTtcblx0fSxcblx0Y2hpbGRyZW46IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBqUXVlcnkuc2libGluZyggZWxlbS5maXJzdENoaWxkICk7XG5cdH0sXG5cdGNvbnRlbnRzOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZWxlbS5jb250ZW50RG9jdW1lbnQgfHwgalF1ZXJ5Lm1lcmdlKCBbXSwgZWxlbS5jaGlsZE5vZGVzICk7XG5cdH1cbn0sIGZ1bmN0aW9uKCBuYW1lLCBmbiApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggdW50aWwsIHNlbGVjdG9yICkge1xuXHRcdHZhciBtYXRjaGVkID0galF1ZXJ5Lm1hcCggdGhpcywgZm4sIHVudGlsICk7XG5cblx0XHRpZiAoIG5hbWUuc2xpY2UoIC01ICkgIT09IFwiVW50aWxcIiApIHtcblx0XHRcdHNlbGVjdG9yID0gdW50aWw7XG5cdFx0fVxuXG5cdFx0aWYgKCBzZWxlY3RvciAmJiB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRtYXRjaGVkID0galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIG1hdGNoZWQgKTtcblx0XHR9XG5cblx0XHRpZiAoIHRoaXMubGVuZ3RoID4gMSApIHtcblx0XHRcdC8vIFJlbW92ZSBkdXBsaWNhdGVzXG5cdFx0XHRpZiAoICFndWFyYW50ZWVkVW5pcXVlWyBuYW1lIF0gKSB7XG5cdFx0XHRcdGpRdWVyeS51bmlxdWUoIG1hdGNoZWQgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmV2ZXJzZSBvcmRlciBmb3IgcGFyZW50cyogYW5kIHByZXYtZGVyaXZhdGl2ZXNcblx0XHRcdGlmICggcnBhcmVudHNwcmV2LnRlc3QoIG5hbWUgKSApIHtcblx0XHRcdFx0bWF0Y2hlZC5yZXZlcnNlKCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkICk7XG5cdH07XG59KTtcbnZhciBybm90d2hpdGUgPSAoL1xcUysvZyk7XG5cblxuXG4vLyBTdHJpbmcgdG8gT2JqZWN0IG9wdGlvbnMgZm9ybWF0IGNhY2hlXG52YXIgb3B0aW9uc0NhY2hlID0ge307XG5cbi8vIENvbnZlcnQgU3RyaW5nLWZvcm1hdHRlZCBvcHRpb25zIGludG8gT2JqZWN0LWZvcm1hdHRlZCBvbmVzIGFuZCBzdG9yZSBpbiBjYWNoZVxuZnVuY3Rpb24gY3JlYXRlT3B0aW9ucyggb3B0aW9ucyApIHtcblx0dmFyIG9iamVjdCA9IG9wdGlvbnNDYWNoZVsgb3B0aW9ucyBdID0ge307XG5cdGpRdWVyeS5lYWNoKCBvcHRpb25zLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbXSwgZnVuY3Rpb24oIF8sIGZsYWcgKSB7XG5cdFx0b2JqZWN0WyBmbGFnIF0gPSB0cnVlO1xuXHR9KTtcblx0cmV0dXJuIG9iamVjdDtcbn1cblxuLypcbiAqIENyZWF0ZSBhIGNhbGxiYWNrIGxpc3QgdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOlxuICpcbiAqXHRvcHRpb25zOiBhbiBvcHRpb25hbCBsaXN0IG9mIHNwYWNlLXNlcGFyYXRlZCBvcHRpb25zIHRoYXQgd2lsbCBjaGFuZ2UgaG93XG4gKlx0XHRcdHRoZSBjYWxsYmFjayBsaXN0IGJlaGF2ZXMgb3IgYSBtb3JlIHRyYWRpdGlvbmFsIG9wdGlvbiBvYmplY3RcbiAqXG4gKiBCeSBkZWZhdWx0IGEgY2FsbGJhY2sgbGlzdCB3aWxsIGFjdCBsaWtlIGFuIGV2ZW50IGNhbGxiYWNrIGxpc3QgYW5kIGNhbiBiZVxuICogXCJmaXJlZFwiIG11bHRpcGxlIHRpbWVzLlxuICpcbiAqIFBvc3NpYmxlIG9wdGlvbnM6XG4gKlxuICpcdG9uY2U6XHRcdFx0d2lsbCBlbnN1cmUgdGhlIGNhbGxiYWNrIGxpc3QgY2FuIG9ubHkgYmUgZmlyZWQgb25jZSAobGlrZSBhIERlZmVycmVkKVxuICpcbiAqXHRtZW1vcnk6XHRcdFx0d2lsbCBrZWVwIHRyYWNrIG9mIHByZXZpb3VzIHZhbHVlcyBhbmQgd2lsbCBjYWxsIGFueSBjYWxsYmFjayBhZGRlZFxuICpcdFx0XHRcdFx0YWZ0ZXIgdGhlIGxpc3QgaGFzIGJlZW4gZmlyZWQgcmlnaHQgYXdheSB3aXRoIHRoZSBsYXRlc3QgXCJtZW1vcml6ZWRcIlxuICpcdFx0XHRcdFx0dmFsdWVzIChsaWtlIGEgRGVmZXJyZWQpXG4gKlxuICpcdHVuaXF1ZTpcdFx0XHR3aWxsIGVuc3VyZSBhIGNhbGxiYWNrIGNhbiBvbmx5IGJlIGFkZGVkIG9uY2UgKG5vIGR1cGxpY2F0ZSBpbiB0aGUgbGlzdClcbiAqXG4gKlx0c3RvcE9uRmFsc2U6XHRpbnRlcnJ1cHQgY2FsbGluZ3Mgd2hlbiBhIGNhbGxiYWNrIHJldHVybnMgZmFsc2VcbiAqXG4gKi9cbmpRdWVyeS5DYWxsYmFja3MgPSBmdW5jdGlvbiggb3B0aW9ucyApIHtcblxuXHQvLyBDb252ZXJ0IG9wdGlvbnMgZnJvbSBTdHJpbmctZm9ybWF0dGVkIHRvIE9iamVjdC1mb3JtYXR0ZWQgaWYgbmVlZGVkXG5cdC8vICh3ZSBjaGVjayBpbiBjYWNoZSBmaXJzdClcblx0b3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiID9cblx0XHQoIG9wdGlvbnNDYWNoZVsgb3B0aW9ucyBdIHx8IGNyZWF0ZU9wdGlvbnMoIG9wdGlvbnMgKSApIDpcblx0XHRqUXVlcnkuZXh0ZW5kKCB7fSwgb3B0aW9ucyApO1xuXG5cdHZhciAvLyBMYXN0IGZpcmUgdmFsdWUgKGZvciBub24tZm9yZ2V0dGFibGUgbGlzdHMpXG5cdFx0bWVtb3J5LFxuXHRcdC8vIEZsYWcgdG8ga25vdyBpZiBsaXN0IHdhcyBhbHJlYWR5IGZpcmVkXG5cdFx0ZmlyZWQsXG5cdFx0Ly8gRmxhZyB0byBrbm93IGlmIGxpc3QgaXMgY3VycmVudGx5IGZpcmluZ1xuXHRcdGZpcmluZyxcblx0XHQvLyBGaXJzdCBjYWxsYmFjayB0byBmaXJlICh1c2VkIGludGVybmFsbHkgYnkgYWRkIGFuZCBmaXJlV2l0aClcblx0XHRmaXJpbmdTdGFydCxcblx0XHQvLyBFbmQgb2YgdGhlIGxvb3Agd2hlbiBmaXJpbmdcblx0XHRmaXJpbmdMZW5ndGgsXG5cdFx0Ly8gSW5kZXggb2YgY3VycmVudGx5IGZpcmluZyBjYWxsYmFjayAobW9kaWZpZWQgYnkgcmVtb3ZlIGlmIG5lZWRlZClcblx0XHRmaXJpbmdJbmRleCxcblx0XHQvLyBBY3R1YWwgY2FsbGJhY2sgbGlzdFxuXHRcdGxpc3QgPSBbXSxcblx0XHQvLyBTdGFjayBvZiBmaXJlIGNhbGxzIGZvciByZXBlYXRhYmxlIGxpc3RzXG5cdFx0c3RhY2sgPSAhb3B0aW9ucy5vbmNlICYmIFtdLFxuXHRcdC8vIEZpcmUgY2FsbGJhY2tzXG5cdFx0ZmlyZSA9IGZ1bmN0aW9uKCBkYXRhICkge1xuXHRcdFx0bWVtb3J5ID0gb3B0aW9ucy5tZW1vcnkgJiYgZGF0YTtcblx0XHRcdGZpcmVkID0gdHJ1ZTtcblx0XHRcdGZpcmluZ0luZGV4ID0gZmlyaW5nU3RhcnQgfHwgMDtcblx0XHRcdGZpcmluZ1N0YXJ0ID0gMDtcblx0XHRcdGZpcmluZ0xlbmd0aCA9IGxpc3QubGVuZ3RoO1xuXHRcdFx0ZmlyaW5nID0gdHJ1ZTtcblx0XHRcdGZvciAoIDsgbGlzdCAmJiBmaXJpbmdJbmRleCA8IGZpcmluZ0xlbmd0aDsgZmlyaW5nSW5kZXgrKyApIHtcblx0XHRcdFx0aWYgKCBsaXN0WyBmaXJpbmdJbmRleCBdLmFwcGx5KCBkYXRhWyAwIF0sIGRhdGFbIDEgXSApID09PSBmYWxzZSAmJiBvcHRpb25zLnN0b3BPbkZhbHNlICkge1xuXHRcdFx0XHRcdG1lbW9yeSA9IGZ
14938hbHNlOyAvLyBUbyBwcmV2ZW50IGZ1cnRoZXIgY2FsbHMgdXNpbmcgYWRkXG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZpcmluZyA9IGZhbHNlO1xuXHRcdFx0aWYgKCBsaXN0ICkge1xuXHRcdFx0XHRpZiAoIHN0YWNrICkge1xuXHRcdFx0XHRcdGlmICggc3RhY2subGVuZ3RoICkge1xuXHRcdFx0XHRcdFx0ZmlyZSggc3RhY2suc2hpZnQoKSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmICggbWVtb3J5ICkge1xuXHRcdFx0XHRcdGxpc3QgPSBbXTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzZWxmLmRpc2FibGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Ly8gQWN0dWFsIENhbGxiYWNrcyBvYmplY3Rcblx0XHRzZWxmID0ge1xuXHRcdFx0Ly8gQWRkIGEgY2FsbGJhY2sgb3IgYSBjb2xsZWN0aW9uIG9mIGNhbGxiYWNrcyB0byB0aGUgbGlzdFxuXHRcdFx0YWRkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBsaXN0ICkge1xuXHRcdFx0XHRcdC8vIEZpcnN0LCB3ZSBzYXZlIHRoZSBjdXJyZW50IGxlbmd0aFxuXHRcdFx0XHRcdHZhciBzdGFydCA9IGxpc3QubGVuZ3RoO1xuXHRcdFx0XHRcdChmdW5jdGlvbiBhZGQoIGFyZ3MgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZWFjaCggYXJncywgZnVuY3Rpb24oIF8sIGFyZyApIHtcblx0XHRcdFx0XHRcdFx0dmFyIHR5cGUgPSBqUXVlcnkudHlwZSggYXJnICk7XG5cdFx0XHRcdFx0XHRcdGlmICggdHlwZSA9PT0gXCJmdW5jdGlvblwiICkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICggIW9wdGlvbnMudW5pcXVlIHx8ICFzZWxmLmhhcyggYXJnICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsaXN0LnB1c2goIGFyZyApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggYXJnICYmIGFyZy5sZW5ndGggJiYgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBJbnNwZWN0IHJlY3Vyc2l2ZWx5XG5cdFx0XHRcdFx0XHRcdFx0YWRkKCBhcmcgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSkoIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRcdC8vIERvIHdlIG5lZWQgdG8gYWRkIHRoZSBjYWxsYmFja3MgdG8gdGhlXG5cdFx0XHRcdFx0Ly8gY3VycmVudCBmaXJpbmcgYmF0Y2g/XG5cdFx0XHRcdFx0aWYgKCBmaXJpbmcgKSB7XG5cdFx0XHRcdFx0XHRmaXJpbmdMZW5ndGggPSBsaXN0Lmxlbmd0aDtcblx0XHRcdFx0XHQvLyBXaXRoIG1lbW9yeSwgaWYgd2UncmUgbm90IGZpcmluZyB0aGVuXG5cdFx0XHRcdFx0Ly8gd2Ugc2hvdWxkIGNhbGwgcmlnaHQgYXdheVxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoIG1lbW9yeSApIHtcblx0XHRcdFx0XHRcdGZpcmluZ1N0YXJ0ID0gc3RhcnQ7XG5cdFx0XHRcdFx0XHRmaXJlKCBtZW1vcnkgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gUmVtb3ZlIGEgY2FsbGJhY2sgZnJvbSB0aGUgbGlzdFxuXHRcdFx0cmVtb3ZlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBsaXN0ICkge1xuXHRcdFx0XHRcdGpRdWVyeS5lYWNoKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7XG5cdFx0XHRcdFx0XHR2YXIgaW5kZXg7XG5cdFx0XHRcdFx0XHR3aGlsZSAoICggaW5kZXggPSBqUXVlcnkuaW5BcnJheSggYXJnLCBsaXN0LCBpbmRleCApICkgPiAtMSApIHtcblx0XHRcdFx0XHRcdFx0bGlzdC5zcGxpY2UoIGluZGV4LCAxICk7XG5cdFx0XHRcdFx0XHRcdC8vIEhhbmRsZSBmaXJpbmcgaW5kZXhlc1xuXHRcdFx0XHRcdFx0XHRpZiAoIGZpcmluZyApIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGluZGV4IDw9IGZpcmluZ0xlbmd0aCApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGZpcmluZ0xlbmd0aC0tO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZiAoIGluZGV4IDw9IGZpcmluZ0luZGV4ICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXgtLTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cdFx0XHQvLyBDaGVjayBpZiBhIGdpdmVuIGNhbGxiYWNrIGlzIGluIHRoZSBsaXN0LlxuXHRcdFx0Ly8gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybiB3aGV0aGVyIG9yIG5vdCBsaXN0IGhhcyBjYWxsYmFja3MgYXR0YWNoZWQuXG5cdFx0XHRoYXM6IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRcdFx0cmV0dXJuIGZuID8galF1ZXJ5LmluQXJyYXkoIGZuLCBsaXN0ICkgPiAtMSA6ICEhKCBsaXN0ICYmIGxpc3QubGVuZ3RoICk7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gUmVtb3ZlIGFsbCBjYWxsYmFja3MgZnJvbSB0aGUgbGlzdFxuXHRcdFx0ZW1wdHk6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRsaXN0ID0gW107XG5cdFx0XHRcdGZpcmluZ0xlbmd0aCA9IDA7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdC8vIEhhdmUgdGhlIGxpc3QgZG8gbm90aGluZyBhbnltb3JlXG5cdFx0XHRkaXNhYmxlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0bGlzdCA9IHN0YWNrID0gbWVtb3J5ID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cdFx0XHQvLyBJcyBpdCBkaXNhYmxlZD9cblx0XHRcdGRpc2FibGVkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICFsaXN0O1xuXHRcdFx0fSxcblx0XHRcdC8vIExvY2sgdGhlIGxpc3QgaW4gaXRzIGN1cnJlbnQgc3RhdGVcblx0XHRcdGxvY2s6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRzdGFjayA9IHVuZGVmaW5lZDtcblx0XHRcdFx0aWYgKCAhbWVtb3J5ICkge1xuXHRcdFx0XHRcdHNlbGYuZGlzYWJsZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdC8vIElzIGl0IGxvY2tlZD9cblx0XHRcdGxvY2tlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhc3RhY2s7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gQ2FsbCBhbGwgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGNvbnRleHQgYW5kIGFyZ3VtZW50c1xuXHRcdFx0ZmlyZVdpdGg6IGZ1bmN0aW9uKCBjb250ZXh0LCBhcmdzICkge1xuXHRcdFx0XHRpZiAoIGxpc3QgJiYgKCAhZmlyZWQgfHwgc3RhY2sgKSApIHtcblx0XHRcdFx0XHRhcmdzID0gYXJncyB8fCBbXTtcblx0XHRcdFx0XHRhcmdzID0gWyBjb250ZXh0LCBhcmdzLnNsaWNlID8gYXJncy5zbGljZSgpIDogYXJncyBdO1xuXHRcdFx0XHRcdGlmICggZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0c3RhY2sucHVzaCggYXJncyApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRmaXJlKCBhcmdzICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybi
14938B0aGlzO1xuXHRcdFx0fSxcblx0XHRcdC8vIENhbGwgYWxsIHRoZSBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzXG5cdFx0XHRmaXJlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0c2VsZi5maXJlV2l0aCggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdC8vIFRvIGtub3cgaWYgdGhlIGNhbGxiYWNrcyBoYXZlIGFscmVhZHkgYmVlbiBjYWxsZWQgYXQgbGVhc3Qgb25jZVxuXHRcdFx0ZmlyZWQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gISFmaXJlZDtcblx0XHRcdH1cblx0XHR9O1xuXG5cdHJldHVybiBzZWxmO1xufTtcblxuXG5qUXVlcnkuZXh0ZW5kKHtcblxuXHREZWZlcnJlZDogZnVuY3Rpb24oIGZ1bmMgKSB7XG5cdFx0dmFyIHR1cGxlcyA9IFtcblx0XHRcdFx0Ly8gYWN0aW9uLCBhZGQgbGlzdGVuZXIsIGxpc3RlbmVyIGxpc3QsIGZpbmFsIHN0YXRlXG5cdFx0XHRcdFsgXCJyZXNvbHZlXCIsIFwiZG9uZVwiLCBqUXVlcnkuQ2FsbGJhY2tzKFwib25jZSBtZW1vcnlcIiksIFwicmVzb2x2ZWRcIiBdLFxuXHRcdFx0XHRbIFwicmVqZWN0XCIsIFwiZmFpbFwiLCBqUXVlcnkuQ2FsbGJhY2tzKFwib25jZSBtZW1vcnlcIiksIFwicmVqZWN0ZWRcIiBdLFxuXHRcdFx0XHRbIFwibm90aWZ5XCIsIFwicHJvZ3Jlc3NcIiwgalF1ZXJ5LkNhbGxiYWNrcyhcIm1lbW9yeVwiKSBdXG5cdFx0XHRdLFxuXHRcdFx0c3RhdGUgPSBcInBlbmRpbmdcIixcblx0XHRcdHByb21pc2UgPSB7XG5cdFx0XHRcdHN0YXRlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gc3RhdGU7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFsd2F5czogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0ZGVmZXJyZWQuZG9uZSggYXJndW1lbnRzICkuZmFpbCggYXJndW1lbnRzICk7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRoZW46IGZ1bmN0aW9uKCAvKiBmbkRvbmUsIGZuRmFpbCwgZm5Qcm9ncmVzcyAqLyApIHtcblx0XHRcdFx0XHR2YXIgZm5zID0gYXJndW1lbnRzO1xuXHRcdFx0XHRcdHJldHVybiBqUXVlcnkuRGVmZXJyZWQoZnVuY3Rpb24oIG5ld0RlZmVyICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIGksIHR1cGxlICkge1xuXHRcdFx0XHRcdFx0XHR2YXIgZm4gPSBqUXVlcnkuaXNGdW5jdGlvbiggZm5zWyBpIF0gKSAmJiBmbnNbIGkgXTtcblx0XHRcdFx0XHRcdFx0Ly8gZGVmZXJyZWRbIGRvbmUgfCBmYWlsIHwgcHJvZ3Jlc3MgXSBmb3IgZm9yd2FyZGluZyBhY3Rpb25zIHRvIG5ld0RlZmVyXG5cdFx0XHRcdFx0XHRcdGRlZmVycmVkWyB0dXBsZVsxXSBdKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciByZXR1cm5lZCA9IGZuICYmIGZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIHJldHVybmVkICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCByZXR1cm5lZC5wcm9taXNlICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZC5wcm9taXNlKClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LmRvbmUoIG5ld0RlZmVyLnJlc29sdmUgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuZmFpbCggbmV3RGVmZXIucmVqZWN0IClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LnByb2dyZXNzKCBuZXdEZWZlci5ub3RpZnkgKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXJbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdKCB0aGlzID09PSBwcm9taXNlID8gbmV3RGVmZXIucHJvbWlzZSgpIDogdGhpcywgZm4gPyBbIHJldHVybmVkIF0gOiBhcmd1bWVudHMgKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRmbnMgPSBudWxsO1xuXHRcdFx0XHRcdH0pLnByb21pc2UoKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0Ly8gR2V0IGEgcHJvbWlzZSBmb3IgdGhpcyBkZWZlcnJlZFxuXHRcdFx0XHQvLyBJZiBvYmogaXMgcHJvdmlkZWQsIHRoZSBwcm9taXNlIGFzcGVjdCBpcyBhZGRlZCB0byB0aGUgb2JqZWN0XG5cdFx0XHRcdHByb21pc2U6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9iaiAhPSBudWxsID8galF1ZXJ5LmV4dGVuZCggb2JqLCBwcm9taXNlICkgOiBwcm9taXNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0ZGVmZXJyZWQgPSB7fTtcblxuXHRcdC8vIEtlZXAgcGlwZSBmb3IgYmFjay1jb21wYXRcblx0XHRwcm9taXNlLnBpcGUgPSBwcm9taXNlLnRoZW47XG5cblx0XHQvLyBBZGQgbGlzdC1zcGVjaWZpYyBtZXRob2RzXG5cdFx0alF1ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIGksIHR1cGxlICkge1xuXHRcdFx0dmFyIGxpc3QgPSB0dXBsZVsgMiBdLFxuXHRcdFx0XHRzdGF0ZVN0cmluZyA9IHR1cGxlWyAzIF07XG5cblx0XHRcdC8vIHByb21pc2VbIGRvbmUgfCBmYWlsIHwgcHJvZ3Jlc3MgXSA9IGxpc3QuYWRkXG5cdFx0XHRwcm9taXNlWyB0dXBsZVsxXSBdID0gbGlzdC5hZGQ7XG5cblx0XHRcdC8vIEhhbmRsZSBzdGF0ZVxuXHRcdFx0aWYgKCBzdGF0ZVN0cmluZyApIHtcblx0XHRcdFx0bGlzdC5hZGQoZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0Ly8gc3RhdGUgPSBbIHJlc29sdmVkIHwgcmVqZWN0ZWQgXVxuXHRcdFx0XHRcdHN0YXRlID0gc3RhdGVTdHJpbmc7XG5cblx0XHRcdFx0Ly8gWyByZWplY3RfbGlzdCB8IHJlc29sdmVfbGlzdCBdLmRpc2FibGU7IHByb2dyZXNzX2xpc3QubG9ja1xuXHRcdFx0XHR9LCB0dXBsZXNbIGkgXiAxIF1bIDIgXS5kaXNhYmxlLCB0dXBsZXNbIDIgXVsgMiBdLmxvY2sgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gZGVmZXJyZWRbIHJlc29sdmUgfCByZWplY3QgfCBub3RpZnkgXVxuXHRcdFx0ZGVmZXJyZWRbIHR1cGxlWzBdIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGVmZXJyZWRbIHR1cGxlWzBdICsgXCJXaXRoXCIgXSggdGhpcyA9PT0gZGVmZXJyZWQgPyBwcm9taXNlIDogdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fTtcblx0XHRcdGRlZmVycmVkWyB0dXBsZVswXSArIFwiV2l0aFwiIF0gPSBsaXN0LmZpcmVXaXRoO1xuXHRcdH0pO1xuXG5cdFx0Ly8gTWFrZSB0aGUgZGVmZXJyZWQgYSBwcm9taXNlXG5cdFx0cHJvbWlzZS5wcm9taXNlKCBkZWZlcnJlZCApO1xuXG5cdFx0Ly8gQ2FsbCBnaXZlbiBmdW5jIGlmIGFueVxuXHRcdGlmICggZnVuYyApIHtcblx0XHRcdGZ1bmMuY2FsbCggZGVmZXJyZWQsIGRlZmVycmVkICk7XG5cdFx0fVxuXG5cdFx0Ly8gQWxsIGRvbmUhXG5cdFx0cmV0dXJuIGRlZmVycmVkO1xuXHR9LFxuXG5cdC8vIERlZmVycmVkIGhlbHBlclxuXHR3aGVuOiBmdW5jdGlvbiggc3Vib3JkaW5hdGUgLyogLCAuLi4sIHN1Ym9yZGluYX
14938RlTiAqLyApIHtcblx0XHR2YXIgaSA9IDAsXG5cdFx0XHRyZXNvbHZlVmFsdWVzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzICksXG5cdFx0XHRsZW5ndGggPSByZXNvbHZlVmFsdWVzLmxlbmd0aCxcblxuXHRcdFx0Ly8gdGhlIGNvdW50IG9mIHVuY29tcGxldGVkIHN1Ym9yZGluYXRlc1xuXHRcdFx0cmVtYWluaW5nID0gbGVuZ3RoICE9PSAxIHx8ICggc3Vib3JkaW5hdGUgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIHN1Ym9yZGluYXRlLnByb21pc2UgKSApID8gbGVuZ3RoIDogMCxcblxuXHRcdFx0Ly8gdGhlIG1hc3RlciBEZWZlcnJlZC4gSWYgcmVzb2x2ZVZhbHVlcyBjb25zaXN0IG9mIG9ubHkgYSBzaW5nbGUgRGVmZXJyZWQsIGp1c3QgdXNlIHRoYXQuXG5cdFx0XHRkZWZlcnJlZCA9IHJlbWFpbmluZyA9PT0gMSA/IHN1Ym9yZGluYXRlIDogalF1ZXJ5LkRlZmVycmVkKCksXG5cblx0XHRcdC8vIFVwZGF0ZSBmdW5jdGlvbiBmb3IgYm90aCByZXNvbHZlIGFuZCBwcm9ncmVzcyB2YWx1ZXNcblx0XHRcdHVwZGF0ZUZ1bmMgPSBmdW5jdGlvbiggaSwgY29udGV4dHMsIHZhbHVlcyApIHtcblx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdFx0XHRjb250ZXh0c1sgaSBdID0gdGhpcztcblx0XHRcdFx0XHR2YWx1ZXNbIGkgXSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gc2xpY2UuY2FsbCggYXJndW1lbnRzICkgOiB2YWx1ZTtcblx0XHRcdFx0XHRpZiAoIHZhbHVlcyA9PT0gcHJvZ3Jlc3NWYWx1ZXMgKSB7XG5cdFx0XHRcdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoKCBjb250ZXh0cywgdmFsdWVzICk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICggISggLS1yZW1haW5pbmcgKSApIHtcblx0XHRcdFx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBjb250ZXh0cywgdmFsdWVzICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblxuXHRcdFx0cHJvZ3Jlc3NWYWx1ZXMsIHByb2dyZXNzQ29udGV4dHMsIHJlc29sdmVDb250ZXh0cztcblxuXHRcdC8vIEFkZCBsaXN0ZW5lcnMgdG8gRGVmZXJyZWQgc3Vib3JkaW5hdGVzOyB0cmVhdCBvdGhlcnMgYXMgcmVzb2x2ZWRcblx0XHRpZiAoIGxlbmd0aCA+IDEgKSB7XG5cdFx0XHRwcm9ncmVzc1ZhbHVlcyA9IG5ldyBBcnJheSggbGVuZ3RoICk7XG5cdFx0XHRwcm9ncmVzc0NvbnRleHRzID0gbmV3IEFycmF5KCBsZW5ndGggKTtcblx0XHRcdHJlc29sdmVDb250ZXh0cyA9IG5ldyBBcnJheSggbGVuZ3RoICk7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0aWYgKCByZXNvbHZlVmFsdWVzWyBpIF0gJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIHJlc29sdmVWYWx1ZXNbIGkgXS5wcm9taXNlICkgKSB7XG5cdFx0XHRcdFx0cmVzb2x2ZVZhbHVlc1sgaSBdLnByb21pc2UoKVxuXHRcdFx0XHRcdFx0LmRvbmUoIHVwZGF0ZUZ1bmMoIGksIHJlc29sdmVDb250ZXh0cywgcmVzb2x2ZVZhbHVlcyApIClcblx0XHRcdFx0XHRcdC5mYWlsKCBkZWZlcnJlZC5yZWplY3QgKVxuXHRcdFx0XHRcdFx0LnByb2dyZXNzKCB1cGRhdGVGdW5jKCBpLCBwcm9ncmVzc0NvbnRleHRzLCBwcm9ncmVzc1ZhbHVlcyApICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0LS1yZW1haW5pbmc7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBJZiB3ZSdyZSBub3Qgd2FpdGluZyBvbiBhbnl0aGluZywgcmVzb2x2ZSB0aGUgbWFzdGVyXG5cdFx0aWYgKCAhcmVtYWluaW5nICkge1xuXHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIHJlc29sdmVDb250ZXh0cywgcmVzb2x2ZVZhbHVlcyApO1xuXHRcdH1cblxuXHRcdHJldHVybiBkZWZlcnJlZC5wcm9taXNlKCk7XG5cdH1cbn0pO1xuXG5cbi8vIFRoZSBkZWZlcnJlZCB1c2VkIG9uIERPTSByZWFkeVxudmFyIHJlYWR5TGlzdDtcblxualF1ZXJ5LmZuLnJlYWR5ID0gZnVuY3Rpb24oIGZuICkge1xuXHQvLyBBZGQgdGhlIGNhbGxiYWNrXG5cdGpRdWVyeS5yZWFkeS5wcm9taXNlKCkuZG9uZSggZm4gKTtcblxuXHRyZXR1cm4gdGhpcztcbn07XG5cbmpRdWVyeS5leHRlbmQoe1xuXHQvLyBJcyB0aGUgRE9NIHJlYWR5IHRvIGJlIHVzZWQ/IFNldCB0byB0cnVlIG9uY2UgaXQgb2NjdXJzLlxuXHRpc1JlYWR5OiBmYWxzZSxcblxuXHQvLyBBIGNvdW50ZXIgdG8gdHJhY2sgaG93IG1hbnkgaXRlbXMgdG8gd2FpdCBmb3IgYmVmb3JlXG5cdC8vIHRoZSByZWFkeSBldmVudCBmaXJlcy4gU2VlICM2NzgxXG5cdHJlYWR5V2FpdDogMSxcblxuXHQvLyBIb2xkIChvciByZWxlYXNlKSB0aGUgcmVhZHkgZXZlbnRcblx0aG9sZFJlYWR5OiBmdW5jdGlvbiggaG9sZCApIHtcblx0XHRpZiAoIGhvbGQgKSB7XG5cdFx0XHRqUXVlcnkucmVhZHlXYWl0Kys7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGpRdWVyeS5yZWFkeSggdHJ1ZSApO1xuXHRcdH1cblx0fSxcblxuXHQvLyBIYW5kbGUgd2hlbiB0aGUgRE9NIGlzIHJlYWR5XG5cdHJlYWR5OiBmdW5jdGlvbiggd2FpdCApIHtcblxuXHRcdC8vIEFib3J0IGlmIHRoZXJlIGFyZSBwZW5kaW5nIGhvbGRzIG9yIHdlJ3JlIGFscmVhZHkgcmVhZHlcblx0XHRpZiAoIHdhaXQgPT09IHRydWUgPyAtLWpRdWVyeS5yZWFkeVdhaXQgOiBqUXVlcnkuaXNSZWFkeSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBSZW1lbWJlciB0aGF0IHRoZSBET00gaXMgcmVhZHlcblx0XHRqUXVlcnkuaXNSZWFkeSA9IHRydWU7XG5cblx0XHQvLyBJZiBhIG5vcm1hbCBET00gUmVhZHkgZXZlbnQgZmlyZWQsIGRlY3JlbWVudCwgYW5kIHdhaXQgaWYgbmVlZCBiZVxuXHRcdGlmICggd2FpdCAhPT0gdHJ1ZSAmJiAtLWpRdWVyeS5yZWFkeVdhaXQgPiAwICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIElmIHRoZXJlIGFyZSBmdW5jdGlvbnMgYm91bmQsIHRvIGV4ZWN1dGVcblx0XHRyZWFkeUxpc3QucmVzb2x2ZVdpdGgoIGRvY3VtZW50LCBbIGpRdWVyeSBdICk7XG5cblx0XHQvLyBUcmlnZ2VyIGFueSBib3VuZCByZWFkeSBldmVudHNcblx0XHRpZiAoIGpRdWVyeS5mbi50cmlnZ2VySGFuZGxlciApIHtcblx0XHRcdGpRdWVyeSggZG9jdW1lbnQgKS50cmlnZ2VySGFuZGxlciggXCJyZWFkeVwiICk7XG5cdFx0XHRqUXVlcnkoIGRvY3VtZW50ICkub2ZmKCBcInJlYWR5XCIgKTtcblx0XHR9XG5cdH1cbn0pO1xuXG4vKipcbiAqIFRoZSByZWFkeSBldmVudCBoYW5kbGVyIGFuZCBzZWxmIGNsZWFudXAgbWV0aG9kXG4gKi9cbmZ1bmN0aW9uIGNvbXBsZXRlZCgpIHtcblx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggXCJET01Db250ZW50TG9hZGVkXCIsIGNvbXBsZXRlZCwgZmFsc2UgKTtcblx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIFwibG9h
14938ZFwiLCBjb21wbGV0ZWQsIGZhbHNlICk7XG5cdGpRdWVyeS5yZWFkeSgpO1xufVxuXG5qUXVlcnkucmVhZHkucHJvbWlzZSA9IGZ1bmN0aW9uKCBvYmogKSB7XG5cdGlmICggIXJlYWR5TGlzdCApIHtcblxuXHRcdHJlYWR5TGlzdCA9IGpRdWVyeS5EZWZlcnJlZCgpO1xuXG5cdFx0Ly8gQ2F0Y2ggY2FzZXMgd2hlcmUgJChkb2N1bWVudCkucmVhZHkoKSBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGJyb3dzZXIgZXZlbnQgaGFzIGFscmVhZHkgb2NjdXJyZWQuXG5cdFx0Ly8gV2Ugb25jZSB0cmllZCB0byB1c2UgcmVhZHlTdGF0ZSBcImludGVyYWN0aXZlXCIgaGVyZSwgYnV0IGl0IGNhdXNlZCBpc3N1ZXMgbGlrZSB0aGUgb25lXG5cdFx0Ly8gZGlzY292ZXJlZCBieSBDaHJpc1MgaGVyZTogaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIyODIjY29tbWVudDoxNVxuXHRcdGlmICggZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiICkge1xuXHRcdFx0Ly8gSGFuZGxlIGl0IGFzeW5jaHJvbm91c2x5IHRvIGFsbG93IHNjcmlwdHMgdGhlIG9wcG9ydHVuaXR5IHRvIGRlbGF5IHJlYWR5XG5cdFx0XHRzZXRUaW1lb3V0KCBqUXVlcnkucmVhZHkgKTtcblxuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIFVzZSB0aGUgaGFuZHkgZXZlbnQgY2FsbGJhY2tcblx0XHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIFwiRE9NQ29udGVudExvYWRlZFwiLCBjb21wbGV0ZWQsIGZhbHNlICk7XG5cblx0XHRcdC8vIEEgZmFsbGJhY2sgdG8gd2luZG93Lm9ubG9hZCwgdGhhdCB3aWxsIGFsd2F5cyB3b3JrXG5cdFx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggXCJsb2FkXCIsIGNvbXBsZXRlZCwgZmFsc2UgKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlYWR5TGlzdC5wcm9taXNlKCBvYmogKTtcbn07XG5cbi8vIEtpY2sgb2ZmIHRoZSBET00gcmVhZHkgY2hlY2sgZXZlbiBpZiB0aGUgdXNlciBkb2VzIG5vdFxualF1ZXJ5LnJlYWR5LnByb21pc2UoKTtcblxuXG5cblxuLy8gTXVsdGlmdW5jdGlvbmFsIG1ldGhvZCB0byBnZXQgYW5kIHNldCB2YWx1ZXMgb2YgYSBjb2xsZWN0aW9uXG4vLyBUaGUgdmFsdWUvcyBjYW4gb3B0aW9uYWxseSBiZSBleGVjdXRlZCBpZiBpdCdzIGEgZnVuY3Rpb25cbnZhciBhY2Nlc3MgPSBqUXVlcnkuYWNjZXNzID0gZnVuY3Rpb24oIGVsZW1zLCBmbiwga2V5LCB2YWx1ZSwgY2hhaW5hYmxlLCBlbXB0eUdldCwgcmF3ICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gZWxlbXMubGVuZ3RoLFxuXHRcdGJ1bGsgPSBrZXkgPT0gbnVsbDtcblxuXHQvLyBTZXRzIG1hbnkgdmFsdWVzXG5cdGlmICggalF1ZXJ5LnR5cGUoIGtleSApID09PSBcIm9iamVjdFwiICkge1xuXHRcdGNoYWluYWJsZSA9IHRydWU7XG5cdFx0Zm9yICggaSBpbiBrZXkgKSB7XG5cdFx0XHRqUXVlcnkuYWNjZXNzKCBlbGVtcywgZm4sIGksIGtleVtpXSwgdHJ1ZSwgZW1wdHlHZXQsIHJhdyApO1xuXHRcdH1cblxuXHQvLyBTZXRzIG9uZSB2YWx1ZVxuXHR9IGVsc2UgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdGNoYWluYWJsZSA9IHRydWU7XG5cblx0XHRpZiAoICFqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJhdyA9IHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKCBidWxrICkge1xuXHRcdFx0Ly8gQnVsayBvcGVyYXRpb25zIHJ1biBhZ2FpbnN0IHRoZSBlbnRpcmUgc2V0XG5cdFx0XHRpZiAoIHJhdyApIHtcblx0XHRcdFx0Zm4uY2FsbCggZWxlbXMsIHZhbHVlICk7XG5cdFx0XHRcdGZuID0gbnVsbDtcblxuXHRcdFx0Ly8gLi4uZXhjZXB0IHdoZW4gZXhlY3V0aW5nIGZ1bmN0aW9uIHZhbHVlc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YnVsayA9IGZuO1xuXHRcdFx0XHRmbiA9IGZ1bmN0aW9uKCBlbGVtLCBrZXksIHZhbHVlICkge1xuXHRcdFx0XHRcdHJldHVybiBidWxrLmNhbGwoIGpRdWVyeSggZWxlbSApLCB2YWx1ZSApO1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggZm4gKSB7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0Zm4oIGVsZW1zW2ldLCBrZXksIHJhdyA/IHZhbHVlIDogdmFsdWUuY2FsbCggZWxlbXNbaV0sIGksIGZuKCBlbGVtc1tpXSwga2V5ICkgKSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBjaGFpbmFibGUgP1xuXHRcdGVsZW1zIDpcblxuXHRcdC8vIEdldHNcblx0XHRidWxrID9cblx0XHRcdGZuLmNhbGwoIGVsZW1zICkgOlxuXHRcdFx0bGVuID8gZm4oIGVsZW1zWzBdLCBrZXkgKSA6IGVtcHR5R2V0O1xufTtcblxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhbiBvYmplY3QgY2FuIGhhdmUgZGF0YVxuICovXG5qUXVlcnkuYWNjZXB0RGF0YSA9IGZ1bmN0aW9uKCBvd25lciApIHtcblx0Ly8gQWNjZXB0cyBvbmx5OlxuXHQvLyAgLSBOb2RlXG5cdC8vICAgIC0gTm9kZS5FTEVNRU5UX05PREVcblx0Ly8gICAgLSBOb2RlLkRPQ1VNRU5UX05PREVcblx0Ly8gIC0gT2JqZWN0XG5cdC8vICAgIC0gQW55XG5cdC8qIGpzaGludCAtVzAxOCAqL1xuXHRyZXR1cm4gb3duZXIubm9kZVR5cGUgPT09IDEgfHwgb3duZXIubm9kZVR5cGUgPT09IDkgfHwgISggK293bmVyLm5vZGVUeXBlICk7XG59O1xuXG5cbmZ1bmN0aW9uIERhdGEoKSB7XG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQ8NCxcblx0Ly8gT2xkIFdlYktpdCBkb2VzIG5vdCBoYXZlIE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucy9mcmVlemUgbWV0aG9kLFxuXHQvLyByZXR1cm4gbmV3IGVtcHR5IG9iamVjdCBpbnN0ZWFkIHdpdGggbm8gW1tzZXRdXSBhY2Nlc3NvclxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIHRoaXMuY2FjaGUgPSB7fSwgMCwge1xuXHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4ge307XG5cdFx0fVxuXHR9KTtcblxuXHR0aGlzLmV4cGFuZG8gPSBqUXVlcnkuZXhwYW5kbyArIERhdGEudWlkKys7XG59XG5cbkRhdGEudWlkID0gMTtcbkRhdGEuYWNjZXB0cyA9IGpRdWVyeS5hY2NlcHREYXRhO1xuXG5EYXRhLnByb3RvdHlwZSA9IHtcblx0a2V5OiBmdW5jdGlvbiggb3duZXIgKSB7XG5cdFx0Ly8gV2UgY2FuIGFjY2VwdCBkYXRhIGZvciBub24tZWxlbWVudCBub2RlcyBpbiBtb2Rlcm4gYnJvd3NlcnMsXG5cdFx0Ly8gYnV0IHdlIHNob3VsZCBub3QsIHNlZSAjODMzNS5cblx0XHQvLyBBbHdheXMgcmV0dXJuIHRoZSBrZXkgZm9yIGEgZnJvemVuIG9iamVjdC5cblx0XHRpZiAoICFEYXRhLmFjY2VwdHMoIG93bmVyICkgKSB7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHR2YXIgZGVzY3JpcHRvciA9IHt9LFxuXHRcdFx0Ly8gQ2hlY2sgaWYgdGhlIG93bmVyIG9iamVjdCBhbHJlYWR5IGhhcyBhIGNhY2hlIGtleVxuXHRcdFx0dW5sb2NrID0gb3duZXJbI
14938HRoaXMuZXhwYW5kbyBdO1xuXG5cdFx0Ly8gSWYgbm90LCBjcmVhdGUgb25lXG5cdFx0aWYgKCAhdW5sb2NrICkge1xuXHRcdFx0dW5sb2NrID0gRGF0YS51aWQrKztcblxuXHRcdFx0Ly8gU2VjdXJlIGl0IGluIGEgbm9uLWVudW1lcmFibGUsIG5vbi13cml0YWJsZSBwcm9wZXJ0eVxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ZGVzY3JpcHRvclsgdGhpcy5leHBhbmRvIF0gPSB7IHZhbHVlOiB1bmxvY2sgfTtcblx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIG93bmVyLCBkZXNjcmlwdG9yICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQ8NFxuXHRcdFx0Ly8gRmFsbGJhY2sgdG8gYSBsZXNzIHNlY3VyZSBkZWZpbml0aW9uXG5cdFx0XHR9IGNhdGNoICggZSApIHtcblx0XHRcdFx0ZGVzY3JpcHRvclsgdGhpcy5leHBhbmRvIF0gPSB1bmxvY2s7XG5cdFx0XHRcdGpRdWVyeS5leHRlbmQoIG93bmVyLCBkZXNjcmlwdG9yICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRW5zdXJlIHRoZSBjYWNoZSBvYmplY3Rcblx0XHRpZiAoICF0aGlzLmNhY2hlWyB1bmxvY2sgXSApIHtcblx0XHRcdHRoaXMuY2FjaGVbIHVubG9jayBdID0ge307XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHVubG9jaztcblx0fSxcblx0c2V0OiBmdW5jdGlvbiggb3duZXIsIGRhdGEsIHZhbHVlICkge1xuXHRcdHZhciBwcm9wLFxuXHRcdFx0Ly8gVGhlcmUgbWF5IGJlIGFuIHVubG9jayBhc3NpZ25lZCB0byB0aGlzIG5vZGUsXG5cdFx0XHQvLyBpZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgdGhpcyBcIm93bmVyXCIsIGNyZWF0ZSBvbmUgaW5saW5lXG5cdFx0XHQvLyBhbmQgc2V0IHRoZSB1bmxvY2sgYXMgdGhvdWdoIGFuIG93bmVyIGVudHJ5IGhhZCBhbHdheXMgZXhpc3RlZFxuXHRcdFx0dW5sb2NrID0gdGhpcy5rZXkoIG93bmVyICksXG5cdFx0XHRjYWNoZSA9IHRoaXMuY2FjaGVbIHVubG9jayBdO1xuXG5cdFx0Ly8gSGFuZGxlOiBbIG93bmVyLCBrZXksIHZhbHVlIF0gYXJnc1xuXHRcdGlmICggdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRjYWNoZVsgZGF0YSBdID0gdmFsdWU7XG5cblx0XHQvLyBIYW5kbGU6IFsgb3duZXIsIHsgcHJvcGVydGllcyB9IF0gYXJnc1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBGcmVzaCBhc3NpZ25tZW50cyBieSBvYmplY3QgYXJlIHNoYWxsb3cgY29waWVkXG5cdFx0XHRpZiAoIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBjYWNoZSApICkge1xuXHRcdFx0XHRqUXVlcnkuZXh0ZW5kKCB0aGlzLmNhY2hlWyB1bmxvY2sgXSwgZGF0YSApO1xuXHRcdFx0Ly8gT3RoZXJ3aXNlLCBjb3B5IHRoZSBwcm9wZXJ0aWVzIG9uZS1ieS1vbmUgdG8gdGhlIGNhY2hlIG9iamVjdFxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9yICggcHJvcCBpbiBkYXRhICkge1xuXHRcdFx0XHRcdGNhY2hlWyBwcm9wIF0gPSBkYXRhWyBwcm9wIF07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGNhY2hlO1xuXHR9LFxuXHRnZXQ6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkge1xuXHRcdC8vIEVpdGhlciBhIHZhbGlkIGNhY2hlIGlzIGZvdW5kLCBvciB3aWxsIGJlIGNyZWF0ZWQuXG5cdFx0Ly8gTmV3IGNhY2hlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZSB1bmxvY2sgcmV0dXJuZWQsXG5cdFx0Ly8gYWxsb3dpbmcgZGlyZWN0IGFjY2VzcyB0byB0aGUgbmV3bHkgY3JlYXRlZFxuXHRcdC8vIGVtcHR5IGRhdGEgb2JqZWN0LiBBIHZhbGlkIG93bmVyIG9iamVjdCBtdXN0IGJlIHByb3ZpZGVkLlxuXHRcdHZhciBjYWNoZSA9IHRoaXMuY2FjaGVbIHRoaXMua2V5KCBvd25lciApIF07XG5cblx0XHRyZXR1cm4ga2V5ID09PSB1bmRlZmluZWQgP1xuXHRcdFx0Y2FjaGUgOiBjYWNoZVsga2V5IF07XG5cdH0sXG5cdGFjY2VzczogZnVuY3Rpb24oIG93bmVyLCBrZXksIHZhbHVlICkge1xuXHRcdHZhciBzdG9yZWQ7XG5cdFx0Ly8gSW4gY2FzZXMgd2hlcmUgZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBObyBrZXkgd2FzIHNwZWNpZmllZFxuXHRcdC8vICAgMi4gQSBzdHJpbmcga2V5IHdhcyBzcGVjaWZpZWQsIGJ1dCBubyB2YWx1ZSBwcm92aWRlZFxuXHRcdC8vXG5cdFx0Ly8gVGFrZSB0aGUgXCJyZWFkXCIgcGF0aCBhbmQgYWxsb3cgdGhlIGdldCBtZXRob2QgdG8gZGV0ZXJtaW5lXG5cdFx0Ly8gd2hpY2ggdmFsdWUgdG8gcmV0dXJuLCByZXNwZWN0aXZlbHkgZWl0aGVyOlxuXHRcdC8vXG5cdFx0Ly8gICAxLiBUaGUgZW50aXJlIGNhY2hlIG9iamVjdFxuXHRcdC8vICAgMi4gVGhlIGRhdGEgc3RvcmVkIGF0IHRoZSBrZXlcblx0XHQvL1xuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgfHxcblx0XHRcdFx0KChrZXkgJiYgdHlwZW9mIGtleSA9PT0gXCJzdHJpbmdcIikgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgKSB7XG5cblx0XHRcdHN0b3JlZCA9IHRoaXMuZ2V0KCBvd25lciwga2V5ICk7XG5cblx0XHRcdHJldHVybiBzdG9yZWQgIT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHN0b3JlZCA6IHRoaXMuZ2V0KCBvd25lciwgalF1ZXJ5LmNhbWVsQ2FzZShrZXkpICk7XG5cdFx0fVxuXG5cdFx0Ly8gWypdV2hlbiB0aGUga2V5IGlzIG5vdCBhIHN0cmluZywgb3IgYm90aCBhIGtleSBhbmQgdmFsdWVcblx0XHQvLyBhcmUgc3BlY2lmaWVkLCBzZXQgb3IgZXh0ZW5kIChleGlzdGluZyBvYmplY3RzKSB3aXRoIGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gQW4gb2JqZWN0IG9mIHByb3BlcnRpZXNcblx0XHQvLyAgIDIuIEEga2V5IGFuZCB2YWx1ZVxuXHRcdC8vXG5cdFx0dGhpcy5zZXQoIG93bmVyLCBrZXksIHZhbHVlICk7XG5cblx0XHQvLyBTaW5jZSB0aGUgXCJzZXRcIiBwYXRoIGNhbiBoYXZlIHR3byBwb3NzaWJsZSBlbnRyeSBwb2ludHNcblx0XHQvLyByZXR1cm4gdGhlIGV4cGVjdGVkIGRhdGEgYmFzZWQgb24gd2hpY2ggcGF0aCB3YXMgdGFrZW5bKl1cblx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoga2V5O1xuXHR9LFxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkge1xuXHRcdHZhciBpLCBuYW1lLCBjYW1lbCxcblx0XHRcdHVubG9jayA9IHRoaXMua2V5KCBvd25lciApLFxuXHRcdFx0Y2FjaGUgPSB0aGlzLmNhY2hlWyB1bmxvY2sgXTtcblxuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHR0aGlzLmNhY2hlWyB1bmxvY2sgXSA9IHt9O1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFN1cHBvcnQgYXJyYXkgb3Igc3BhY2Ugc2VwYXJhdGVkIHN0cmluZyBvZiBrZXlzXG5cdFx0XHRpZiAoIGpRdWVyeS5pc0FycmF
149385KCBrZXkgKSApIHtcblx0XHRcdFx0Ly8gSWYgXCJuYW1lXCIgaXMgYW4gYXJyYXkgb2Yga2V5cy4uLlxuXHRcdFx0XHQvLyBXaGVuIGRhdGEgaXMgaW5pdGlhbGx5IGNyZWF0ZWQsIHZpYSAoXCJrZXlcIiwgXCJ2YWxcIikgc2lnbmF0dXJlLFxuXHRcdFx0XHQvLyBrZXlzIHdpbGwgYmUgY29udmVydGVkIHRvIGNhbWVsQ2FzZS5cblx0XHRcdFx0Ly8gU2luY2UgdGhlcmUgaXMgbm8gd2F5IHRvIHRlbGwgX2hvd18gYSBrZXkgd2FzIGFkZGVkLCByZW1vdmVcblx0XHRcdFx0Ly8gYm90aCBwbGFpbiBrZXkgYW5kIGNhbWVsQ2FzZSBrZXkuICMxMjc4NlxuXHRcdFx0XHQvLyBUaGlzIHdpbGwgb25seSBwZW5hbGl6ZSB0aGUgYXJyYXkgYXJndW1lbnQgcGF0aC5cblx0XHRcdFx0bmFtZSA9IGtleS5jb25jYXQoIGtleS5tYXAoIGpRdWVyeS5jYW1lbENhc2UgKSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2FtZWwgPSBqUXVlcnkuY2FtZWxDYXNlKCBrZXkgKTtcblx0XHRcdFx0Ly8gVHJ5IHRoZSBzdHJpbmcgYXMgYSBrZXkgYmVmb3JlIGFueSBtYW5pcHVsYXRpb25cblx0XHRcdFx0aWYgKCBrZXkgaW4gY2FjaGUgKSB7XG5cdFx0XHRcdFx0bmFtZSA9IFsga2V5LCBjYW1lbCBdO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIElmIGEga2V5IHdpdGggdGhlIHNwYWNlcyBleGlzdHMsIHVzZSBpdC5cblx0XHRcdFx0XHQvLyBPdGhlcndpc2UsIGNyZWF0ZSBhbiBhcnJheSBieSBtYXRjaGluZyBub24td2hpdGVzcGFjZVxuXHRcdFx0XHRcdG5hbWUgPSBjYW1lbDtcblx0XHRcdFx0XHRuYW1lID0gbmFtZSBpbiBjYWNoZSA/XG5cdFx0XHRcdFx0XHRbIG5hbWUgXSA6ICggbmFtZS5tYXRjaCggcm5vdHdoaXRlICkgfHwgW10gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpID0gbmFtZS5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0ZGVsZXRlIGNhY2hlWyBuYW1lWyBpIF0gXTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdGhhc0RhdGE6IGZ1bmN0aW9uKCBvd25lciApIHtcblx0XHRyZXR1cm4gIWpRdWVyeS5pc0VtcHR5T2JqZWN0KFxuXHRcdFx0dGhpcy5jYWNoZVsgb3duZXJbIHRoaXMuZXhwYW5kbyBdIF0gfHwge31cblx0XHQpO1xuXHR9LFxuXHRkaXNjYXJkOiBmdW5jdGlvbiggb3duZXIgKSB7XG5cdFx0aWYgKCBvd25lclsgdGhpcy5leHBhbmRvIF0gKSB7XG5cdFx0XHRkZWxldGUgdGhpcy5jYWNoZVsgb3duZXJbIHRoaXMuZXhwYW5kbyBdIF07XG5cdFx0fVxuXHR9XG59O1xudmFyIGRhdGFfcHJpdiA9IG5ldyBEYXRhKCk7XG5cbnZhciBkYXRhX3VzZXIgPSBuZXcgRGF0YSgpO1xuXG5cblxuLy9cdEltcGxlbWVudGF0aW9uIFN1bW1hcnlcbi8vXG4vL1x0MS4gRW5mb3JjZSBBUEkgc3VyZmFjZSBhbmQgc2VtYW50aWMgY29tcGF0aWJpbGl0eSB3aXRoIDEuOS54IGJyYW5jaFxuLy9cdDIuIEltcHJvdmUgdGhlIG1vZHVsZSdzIG1haW50YWluYWJpbGl0eSBieSByZWR1Y2luZyB0aGUgc3RvcmFnZVxuLy9cdFx0cGF0aHMgdG8gYSBzaW5nbGUgbWVjaGFuaXNtLlxuLy9cdDMuIFVzZSB0aGUgc2FtZSBzaW5nbGUgbWVjaGFuaXNtIHRvIHN1cHBvcnQgXCJwcml2YXRlXCIgYW5kIFwidXNlclwiIGRhdGEuXG4vL1x0NC4gX05ldmVyXyBleHBvc2UgXCJwcml2YXRlXCIgZGF0YSB0byB1c2VyIGNvZGUgKFRPRE86IERyb3AgX2RhdGEsIF9yZW1vdmVEYXRhKVxuLy9cdDUuIEF2b2lkIGV4cG9zaW5nIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb24gdXNlciBvYmplY3RzIChlZy4gZXhwYW5kbyBwcm9wZXJ0aWVzKVxuLy9cdDYuIFByb3ZpZGUgYSBjbGVhciBwYXRoIGZvciBpbXBsZW1lbnRhdGlvbiB1cGdyYWRlIHRvIFdlYWtNYXAgaW4gMjAxNFxuXG52YXIgcmJyYWNlID0gL14oPzpcXHtbXFx3XFxXXSpcXH18XFxbW1xcd1xcV10qXFxdKSQvLFxuXHRybXVsdGlEYXNoID0gLyhbQS1aXSkvZztcblxuZnVuY3Rpb24gZGF0YUF0dHIoIGVsZW0sIGtleSwgZGF0YSApIHtcblx0dmFyIG5hbWU7XG5cblx0Ly8gSWYgbm90aGluZyB3YXMgZm91bmQgaW50ZXJuYWxseSwgdHJ5IHRvIGZldGNoIGFueVxuXHQvLyBkYXRhIGZyb20gdGhlIEhUTUw1IGRhdGEtKiBhdHRyaWJ1dGVcblx0aWYgKCBkYXRhID09PSB1bmRlZmluZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRuYW1lID0gXCJkYXRhLVwiICsga2V5LnJlcGxhY2UoIHJtdWx0aURhc2gsIFwiLSQxXCIgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdGRhdGEgPSBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApO1xuXG5cdFx0aWYgKCB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGRhdGEgPSBkYXRhID09PSBcInRydWVcIiA/IHRydWUgOlxuXHRcdFx0XHRcdGRhdGEgPT09IFwiZmFsc2VcIiA/IGZhbHNlIDpcblx0XHRcdFx0XHRkYXRhID09PSBcIm51bGxcIiA/IG51bGwgOlxuXHRcdFx0XHRcdC8vIE9ubHkgY29udmVydCB0byBhIG51bWJlciBpZiBpdCBkb2Vzbid0IGNoYW5nZSB0aGUgc3RyaW5nXG5cdFx0XHRcdFx0K2RhdGEgKyBcIlwiID09PSBkYXRhID8gK2RhdGEgOlxuXHRcdFx0XHRcdHJicmFjZS50ZXN0KCBkYXRhICkgPyBqUXVlcnkucGFyc2VKU09OKCBkYXRhICkgOlxuXHRcdFx0XHRcdGRhdGE7XG5cdFx0XHR9IGNhdGNoKCBlICkge31cblxuXHRcdFx0Ly8gTWFrZSBzdXJlIHdlIHNldCB0aGUgZGF0YSBzbyBpdCBpc24ndCBjaGFuZ2VkIGxhdGVyXG5cdFx0XHRkYXRhX3VzZXIuc2V0KCBlbGVtLCBrZXksIGRhdGEgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGRhdGE7XG59XG5cbmpRdWVyeS5leHRlbmQoe1xuXHRoYXNEYXRhOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGF0YV91c2VyLmhhc0RhdGEoIGVsZW0gKSB8fCBkYXRhX3ByaXYuaGFzRGF0YSggZWxlbSApO1xuXHR9LFxuXG5cdGRhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRhICkge1xuXHRcdHJldHVybiBkYXRhX3VzZXIuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7XG5cdH0sXG5cblx0cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbW
14938UgKSB7XG5cdFx0ZGF0YV91c2VyLnJlbW92ZSggZWxlbSwgbmFtZSApO1xuXHR9LFxuXG5cdC8vIFRPRE86IE5vdyB0aGF0IGFsbCBjYWxscyB0byBfZGF0YSBhbmQgX3JlbW92ZURhdGEgaGF2ZSBiZWVuIHJlcGxhY2VkXG5cdC8vIHdpdGggZGlyZWN0IGNhbGxzIHRvIGRhdGFfcHJpdiBtZXRob2RzLCB0aGVzZSBjYW4gYmUgZGVwcmVjYXRlZC5cblx0X2RhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRhICkge1xuXHRcdHJldHVybiBkYXRhX3ByaXYuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7XG5cdH0sXG5cblx0X3JlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHRcdGRhdGFfcHJpdi5yZW1vdmUoIGVsZW0sIG5hbWUgKTtcblx0fVxufSk7XG5cbmpRdWVyeS5mbi5leHRlbmQoe1xuXHRkYXRhOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHtcblx0XHR2YXIgaSwgbmFtZSwgZGF0YSxcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF0sXG5cdFx0XHRhdHRycyA9IGVsZW0gJiYgZWxlbS5hdHRyaWJ1dGVzO1xuXG5cdFx0Ly8gR2V0cyBhbGwgdmFsdWVzXG5cdFx0aWYgKCBrZXkgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGlmICggdGhpcy5sZW5ndGggKSB7XG5cdFx0XHRcdGRhdGEgPSBkYXRhX3VzZXIuZ2V0KCBlbGVtICk7XG5cblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICFkYXRhX3ByaXYuZ2V0KCBlbGVtLCBcImhhc0RhdGFBdHRyc1wiICkgKSB7XG5cdFx0XHRcdFx0aSA9IGF0dHJzLmxlbmd0aDtcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUxMStcblx0XHRcdFx0XHRcdC8vIFRoZSBhdHRycyBlbGVtZW50cyBjYW4gYmUgbnVsbCAoIzE0ODk0KVxuXHRcdFx0XHRcdFx0aWYgKCBhdHRyc1sgaSBdICkge1xuXHRcdFx0XHRcdFx0XHRuYW1lID0gYXR0cnNbIGkgXS5uYW1lO1xuXHRcdFx0XHRcdFx0XHRpZiAoIG5hbWUuaW5kZXhPZiggXCJkYXRhLVwiICkgPT09IDAgKSB7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUuc2xpY2UoNSkgKTtcblx0XHRcdFx0XHRcdFx0XHRkYXRhQXR0ciggZWxlbSwgbmFtZSwgZGF0YVsgbmFtZSBdICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZGF0YV9wcml2LnNldCggZWxlbSwgXCJoYXNEYXRhQXR0cnNcIiwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBkYXRhO1xuXHRcdH1cblxuXHRcdC8vIFNldHMgbXVsdGlwbGUgdmFsdWVzXG5cdFx0aWYgKCB0eXBlb2Yga2V5ID09PSBcIm9iamVjdFwiICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGF0YV91c2VyLnNldCggdGhpcywga2V5ICk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgZGF0YSxcblx0XHRcdFx0Y2FtZWxLZXkgPSBqUXVlcnkuY2FtZWxDYXNlKCBrZXkgKTtcblxuXHRcdFx0Ly8gVGhlIGNhbGxpbmcgalF1ZXJ5IG9iamVjdCAoZWxlbWVudCBtYXRjaGVzKSBpcyBub3QgZW1wdHlcblx0XHRcdC8vIChhbmQgdGhlcmVmb3JlIGhhcyBhbiBlbGVtZW50IGFwcGVhcnMgYXQgdGhpc1sgMCBdKSBhbmQgdGhlXG5cdFx0XHQvLyBgdmFsdWVgIHBhcmFtZXRlciB3YXMgbm90IHVuZGVmaW5lZC4gQW4gZW1wdHkgalF1ZXJ5IG9iamVjdFxuXHRcdFx0Ly8gd2lsbCByZXN1bHQgaW4gYHVuZGVmaW5lZGAgZm9yIGVsZW0gPSB0aGlzWyAwIF0gd2hpY2ggd2lsbFxuXHRcdFx0Ly8gdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFuIGF0dGVtcHQgdG8gcmVhZCBhIGRhdGEgY2FjaGUgaXMgbWFkZS5cblx0XHRcdGlmICggZWxlbSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHQvLyBBdHRlbXB0IHRvIGdldCBkYXRhIGZyb20gdGhlIGNhY2hlXG5cdFx0XHRcdC8vIHdpdGggdGhlIGtleSBhcy1pc1xuXHRcdFx0XHRkYXRhID0gZGF0YV91c2VyLmdldCggZWxlbSwga2V5ICk7XG5cdFx0XHRcdGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQXR0ZW1wdCB0byBnZXQgZGF0YSBmcm9tIHRoZSBjYWNoZVxuXHRcdFx0XHQvLyB3aXRoIHRoZSBrZXkgY2FtZWxpemVkXG5cdFx0XHRcdGRhdGEgPSBkYXRhX3VzZXIuZ2V0KCBlbGVtLCBjYW1lbEtleSApO1xuXHRcdFx0XHRpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEF0dGVtcHQgdG8gXCJkaXNjb3ZlclwiIHRoZSBkYXRhIGluXG5cdFx0XHRcdC8vIEhUTUw1IGN1c3RvbSBkYXRhLSogYXR0cnNcblx0XHRcdFx0ZGF0YSA9IGRhdGFBdHRyKCBlbGVtLCBjYW1lbEtleSwgdW5kZWZpbmVkICk7XG5cdFx0XHRcdGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gV2UgdHJpZWQgcmVhbGx5IGhhcmQsIGJ1dCB0aGUgZGF0YSBkb2Vzbid0IGV4aXN0LlxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNldCB0aGUgZGF0YS4uLlxuXHRcdFx0dGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHQvLyBGaXJzdCwgYXR0ZW1wdCB0byBzdG9yZSBhIGNvcHkgb3IgcmVmZXJlbmNlIG9mIGFueVxuXHRcdFx0XHQvLyBkYXRhIHRoYXQgbWlnaHQndmUgYmVlbiBzdG9yZSB3aXRoIGEgY2FtZWxDYXNlZCBrZXkuXG5cdFx0XHRcdHZhciBkYXRhID0gZGF0YV91c2VyLmdldCggdGhpcywgY2FtZWxLZXkgKTtcblxuXHRcdFx0XHQvLyBGb3IgSFRNTDUgZGF0YS0qIGF0dHJpYnV0ZSBpbnRlcm9wLCB3ZSBoYXZlIHRvXG5cdFx0XHRcdC8vIHN0b3JlIHByb3BlcnR5IG5hbWVzIHdpdGggZGFzaGVzIGluIGEgY2FtZWxDYXNlIGZvcm0uXG5cdFx0XHRcdC8vIFRoaXMgbWlnaHQgbm90IGFwcGx5IHRvIGFsbCBwcm9wZXJ0aWVzLi4uKlxuXHRcdFx0XHRkYXRhX3VzZXIuc2V0KCB0aGlzLCBjYW1lbEtleSwgdmFsdWUgKTtcblxuXHRcdFx0XHQvLyAqLi4uIEluIHRoZSBjYXNlIG9mIHByb3BlcnRpZXMgdGhhdCBtaWdodCBfYWN0dWFsbHlfXG5cdFx0XHRcdC8vIGhhdmUgZGFzaGVzLCB3ZSBuZWVkIHRvIGFsc28gc3RvcmUgYSBjb3B5IG9mIHRoYXRcblx0XHRcdFx0Ly8gdW5jaGFuZ2VkIHByb3BlcnR5LlxuXHRcdFx0XHRpZiAoIGtleS5pbmRleE9mKFwiLVwiKSAhPT0gLTEgJiYgZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdGRhdGFfdXNlci5zZXQoIHRoaXMsIGtleSwgdmFsdWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxLCBudWxsLCB0cnVlICk7XG5cdH0sXG5cblx0cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGtleSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0ZGF0YV91c2VyLnJlbW92ZSggdGhpcywga2V5ICk7XG5cdFx0fSk7XG5cdH1cbn0pO1xuXG5cbmpRdWVyeS5leHRlbmQoe1xuXHRxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIHF1ZXVlO1xuXG5cdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0dHlwZSA9ICggdHlwZSB8fCBcImZ4XCIgKSArIFwicXVldWVcIjtcblx0XHRcdHF1ZXVlID0gZGF0YV9wcml2LmdldCggZWxlbSwgdHlwZSApO1xuXG5cdFx0XHQvLyBTcGVlZCB1cCBkZXF1ZXVlIGJ5IGdldHRpbmcgb3V0IHF1aWNrbHkgaWYgdGhpcyBpcyBqdXN0IGEgbG9va3VwXG5cdFx0XHRpZiAoIGRhdGEgKSB7XG5cdFx0XHRcdGlmICggIXF1ZXVlIHx8IGpRdWVyeS5pc0FycmF
149385KCBkYXRhICkgKSB7XG5cdFx0XHRcdFx0cXVldWUgPSBkYXRhX3ByaXYuYWNjZXNzKCBlbGVtLCB0eXBlLCBqUXVlcnkubWFrZUFycmF5KGRhdGEpICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cXVldWUucHVzaCggZGF0YSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcXVldWUgfHwgW107XG5cdFx0fVxuXHR9LFxuXG5cdGRlcXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkge1xuXHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRcdHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggZWxlbSwgdHlwZSApLFxuXHRcdFx0c3RhcnRMZW5ndGggPSBxdWV1ZS5sZW5ndGgsXG5cdFx0XHRmbiA9IHF1ZXVlLnNoaWZ0KCksXG5cdFx0XHRob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcyggZWxlbSwgdHlwZSApLFxuXHRcdFx0bmV4dCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggZWxlbSwgdHlwZSApO1xuXHRcdFx0fTtcblxuXHRcdC8vIElmIHRoZSBmeCBxdWV1ZSBpcyBkZXF1ZXVlZCwgYWx3YXlzIHJlbW92ZSB0aGUgcHJvZ3Jlc3Mgc2VudGluZWxcblx0XHRpZiAoIGZuID09PSBcImlucHJvZ3Jlc3NcIiApIHtcblx0XHRcdGZuID0gcXVldWUuc2hpZnQoKTtcblx0XHRcdHN0YXJ0TGVuZ3RoLS07XG5cdFx0fVxuXG5cdFx0aWYgKCBmbiApIHtcblxuXHRcdFx0Ly8gQWRkIGEgcHJvZ3Jlc3Mgc2VudGluZWwgdG8gcHJldmVudCB0aGUgZnggcXVldWUgZnJvbSBiZWluZ1xuXHRcdFx0Ly8gYXV0b21hdGljYWxseSBkZXF1ZXVlZFxuXHRcdFx0aWYgKCB0eXBlID09PSBcImZ4XCIgKSB7XG5cdFx0XHRcdHF1ZXVlLnVuc2hpZnQoIFwiaW5wcm9ncmVzc1wiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENsZWFyIHVwIHRoZSBsYXN0IHF1ZXVlIHN0b3AgZnVuY3Rpb25cblx0XHRcdGRlbGV0ZSBob29rcy5zdG9wO1xuXHRcdFx0Zm4uY2FsbCggZWxlbSwgbmV4dCwgaG9va3MgKTtcblx0XHR9XG5cblx0XHRpZiAoICFzdGFydExlbmd0aCAmJiBob29rcyApIHtcblx0XHRcdGhvb2tzLmVtcHR5LmZpcmUoKTtcblx0XHR9XG5cdH0sXG5cblx0Ly8gTm90IHB1YmxpYyAtIGdlbmVyYXRlIGEgcXVldWVIb29rcyBvYmplY3QsIG9yIHJldHVybiB0aGUgY3VycmVudCBvbmVcblx0X3F1ZXVlSG9va3M6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkge1xuXHRcdHZhciBrZXkgPSB0eXBlICsgXCJxdWV1ZUhvb2tzXCI7XG5cdFx0cmV0dXJuIGRhdGFfcHJpdi5nZXQoIGVsZW0sIGtleSApIHx8IGRhdGFfcHJpdi5hY2Nlc3MoIGVsZW0sIGtleSwge1xuXHRcdFx0ZW1wdHk6IGpRdWVyeS5DYWxsYmFja3MoXCJvbmNlIG1lbW9yeVwiKS5hZGQoZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGRhdGFfcHJpdi5yZW1vdmUoIGVsZW0sIFsgdHlwZSArIFwicXVldWVcIiwga2V5IF0gKTtcblx0XHRcdH0pXG5cdFx0fSk7XG5cdH1cbn0pO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0cXVldWU6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkge1xuXHRcdHZhciBzZXR0ZXIgPSAyO1xuXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGRhdGEgPSB0eXBlO1xuXHRcdFx0dHlwZSA9IFwiZnhcIjtcblx0XHRcdHNldHRlci0tO1xuXHRcdH1cblxuXHRcdGlmICggYXJndW1lbnRzLmxlbmd0aCA8IHNldHRlciApIHtcblx0XHRcdHJldHVybiBqUXVlcnkucXVldWUoIHRoaXNbMF0sIHR5cGUgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZGF0YSA9PT0gdW5kZWZpbmVkID9cblx0XHRcdHRoaXMgOlxuXHRcdFx0dGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgcXVldWUgPSBqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIGRhdGEgKTtcblxuXHRcdFx0XHQvLyBFbnN1cmUgYSBob29rcyBmb3IgdGhpcyBxdWV1ZVxuXHRcdFx0XHRqUXVlcnkuX3F1ZXVlSG9va3MoIHRoaXMsIHR5cGUgKTtcblxuXHRcdFx0XHRpZiAoIHR5cGUgPT09IFwiZnhcIiAmJiBxdWV1ZVswXSAhPT0gXCJpbnByb2dyZXNzXCIgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdH0sXG5cdGRlcXVldWU6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApO1xuXHRcdH0pO1xuXHR9LFxuXHRjbGVhclF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRyZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSB8fCBcImZ4XCIsIFtdICk7XG5cdH0sXG5cdC8vIEdldCBhIHByb21pc2UgcmVzb2x2ZWQgd2hlbiBxdWV1ZXMgb2YgYSBjZXJ0YWluIHR5cGVcblx0Ly8gYXJlIGVtcHRpZWQgKGZ4IGlzIHRoZSB0eXBlIGJ5IGRlZmF1bHQpXG5cdHByb21pc2U6IGZ1bmN0aW9uKCB0eXBlLCBvYmogKSB7XG5cdFx0dmFyIHRtcCxcblx0XHRcdGNvdW50ID0gMSxcblx0XHRcdGRlZmVyID0galF1ZXJ5LkRlZmVycmVkKCksXG5cdFx0XHRlbGVtZW50cyA9IHRoaXMsXG5cdFx0XHRpID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRyZXNvbHZlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggISggLS1jb3VudCApICkge1xuXHRcdFx0XHRcdGRlZmVyLnJlc29sdmVXaXRoKCBlbGVtZW50cywgWyBlbGVtZW50cyBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHRpZiAoIHR5cGVvZiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0b2JqID0gdHlwZTtcblx0XHRcdHR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0dG1wID0gZGF0YV9wcml2LmdldCggZWxlbWVudHNbIGkgXSwgdHlwZSArIFwicXVldWVIb29rc1wiICk7XG5cdFx0XHRpZiAoIHRtcCAmJiB0bXAuZW1wdHkgKSB7XG5cdFx0XHRcdGNvdW50Kys7XG5cdFx0XHRcdHRtcC5lbXB0eS5hZGQoIHJlc29sdmUgKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmVzb2x2ZSgpO1xuXHRcdHJldHVybiBkZWZlci5wcm9taXNlKCBvYmogKTtcblx0fVxufSk7XG52YXIgcG51bSA9ICgvWystXT8oPzpcXGQqXFwufClcXGQrKD86W2VFXVsrLV0/XFxkK3wpLykuc291cmNlO1xuXG52YXIgY3NzRXhwYW5kID0gWyBcIlRvcFwiLCBcIlJpZ2h0XCIsIFwiQm90dG9tXCIsIFwiTGVmdFwiIF07XG5cbnZhciBpc0hpZGRlbiA9IGZ1bmN0aW9uKCBlbGVtLCBlbCApIHtcblx0XHQvLyBpc0hpZGRlbiBtaWdodCBiZSBjYWxsZWQgZnJvbSBqUXVlcnkjZmlsdGVyIGZ1bmN0aW9uO1xuXHRcdC8vIGluIHRoYXQgY2FzZSwgZWxlbWVudCB3aWxsIGJlIHNlY29uZCBhcmd1bWVudFxuXHRcdGVsZW0gPSBlbCB8fCBlbGVtO1xuXHRcdHJldHVybi
14938BqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApID09PSBcIm5vbmVcIiB8fCAhalF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTtcblx0fTtcblxudmFyIHJjaGVja2FibGVUeXBlID0gKC9eKD86Y2hlY2tib3h8cmFkaW8pJC9pKTtcblxuXG5cbihmdW5jdGlvbigpIHtcblx0dmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLFxuXHRcdGRpdiA9IGZyYWdtZW50LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICkgKSxcblx0XHRpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApO1xuXG5cdC8vIFN1cHBvcnQ6IFNhZmFyaTw9NS4xXG5cdC8vIENoZWNrIHN0YXRlIGxvc3QgaWYgdGhlIG5hbWUgaXMgc2V0ICgjMTEyMTcpXG5cdC8vIFN1cHBvcnQ6IFdpbmRvd3MgV2ViIEFwcHMgKFdXQSlcblx0Ly8gYG5hbWVgIGFuZCBgdHlwZWAgbXVzdCB1c2UgLnNldEF0dHJpYnV0ZSBmb3IgV1dBICgjMTQ5MDEpXG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIFwicmFkaW9cIiApO1xuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwiY2hlY2tlZFwiLCBcImNoZWNrZWRcIiApO1xuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwibmFtZVwiLCBcInRcIiApO1xuXG5cdGRpdi5hcHBlbmRDaGlsZCggaW5wdXQgKTtcblxuXHQvLyBTdXBwb3J0OiBTYWZhcmk8PTUuMSwgQW5kcm9pZDw0LjJcblx0Ly8gT2xkZXIgV2ViS2l0IGRvZXNuJ3QgY2xvbmUgY2hlY2tlZCBzdGF0ZSBjb3JyZWN0bHkgaW4gZnJhZ21lbnRzXG5cdHN1cHBvcnQuY2hlY2tDbG9uZSA9IGRpdi5jbG9uZU5vZGUoIHRydWUgKS5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuY2hlY2tlZDtcblxuXHQvLyBTdXBwb3J0OiBJRTw9MTErXG5cdC8vIE1ha2Ugc3VyZSB0ZXh0YXJlYSAoYW5kIGNoZWNrYm94KSBkZWZhdWx0VmFsdWUgaXMgcHJvcGVybHkgY2xvbmVkXG5cdGRpdi5pbm5lckhUTUwgPSBcIjx0ZXh0YXJlYT54PC90ZXh0YXJlYT5cIjtcblx0c3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCA9ICEhZGl2LmNsb25lTm9kZSggdHJ1ZSApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWU7XG59KSgpO1xudmFyIHN0cnVuZGVmaW5lZCA9IHR5cGVvZiB1bmRlZmluZWQ7XG5cblxuXG5zdXBwb3J0LmZvY3VzaW5CdWJibGVzID0gXCJvbmZvY3VzaW5cIiBpbiB3aW5kb3c7XG5cblxudmFyXG5cdHJrZXlFdmVudCA9IC9ea2V5Lyxcblx0cm1vdXNlRXZlbnQgPSAvXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnUpfGNsaWNrLyxcblx0cmZvY3VzTW9ycGggPSAvXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sXG5cdHJ0eXBlbmFtZXNwYWNlID0gL14oW14uXSopKD86XFwuKC4rKXwpJC87XG5cbmZ1bmN0aW9uIHJldHVyblRydWUoKSB7XG5cdHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZXR1cm5GYWxzZSgpIHtcblx0cmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBzYWZlQWN0aXZlRWxlbWVudCgpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblx0fSBjYXRjaCAoIGVyciApIHsgfVxufVxuXG4vKlxuICogSGVscGVyIGZ1bmN0aW9ucyBmb3IgbWFuYWdpbmcgZXZlbnRzIC0tIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLlxuICogUHJvcHMgdG8gRGVhbiBFZHdhcmRzJyBhZGRFdmVudCBsaWJyYXJ5IGZvciBtYW55IG9mIHRoZSBpZGVhcy5cbiAqL1xualF1ZXJ5LmV2ZW50ID0ge1xuXG5cdGdsb2JhbDoge30sXG5cblx0YWRkOiBmdW5jdGlvbiggZWxlbSwgdHlwZXMsIGhhbmRsZXIsIGRhdGEsIHNlbGVjdG9yICkge1xuXG5cdFx0dmFyIGhhbmRsZU9iakluLCBldmVudEhhbmRsZSwgdG1wLFxuXHRcdFx0ZXZlbnRzLCB0LCBoYW5kbGVPYmosXG5cdFx0XHRzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsXG5cdFx0XHRlbGVtRGF0YSA9IGRhdGFfcHJpdi5nZXQoIGVsZW0gKTtcblxuXHRcdC8vIERvbid0IGF0dGFjaCBldmVudHMgdG8gbm9EYXRhIG9yIHRleHQvY29tbWVudCBub2RlcyAoYnV0IGFsbG93IHBsYWluIG9iamVjdHMpXG5cdFx0aWYgKCAhZWxlbURhdGEgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbGVyIGNhbiBwYXNzIGluIGFuIG9iamVjdCBvZiBjdXN0b20gZGF0YSBpbiBsaWV1IG9mIHRoZSBoYW5kbGVyXG5cdFx0aWYgKCBoYW5kbGVyLmhhbmRsZXIgKSB7XG5cdFx0XHRoYW5kbGVPYmpJbiA9IGhhbmRsZXI7XG5cdFx0XHRoYW5kbGVyID0gaGFuZGxlT2JqSW4uaGFuZGxlcjtcblx0XHRcdHNlbGVjdG9yID0gaGFuZGxlT2JqSW4uc2VsZWN0b3I7XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgdGhlIGhhbmRsZXIgaGFzIGEgdW5pcXVlIElELCB1c2VkIHRvIGZpbmQvcmVtb3ZlIGl0IGxhdGVyXG5cdFx0aWYgKCAhaGFuZGxlci5ndWlkICkge1xuXHRcdFx0aGFuZGxlci5ndWlkID0galF1ZXJ5Lmd1aWQrKztcblx0XHR9XG5cblx0XHQvLyBJbml0IHRoZSBlbGVtZW50J3MgZXZlbnQgc3RydWN0dXJlIGFuZCBtYWluIGhhbmRsZXIsIGlmIHRoaXMgaXMgdGhlIGZpcnN0XG5cdFx0aWYgKCAhKGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cykgKSB7XG5cdFx0XHRldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgPSB7fTtcblx0XHR9XG5cdFx0aWYgKCAhKGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlKSApIHtcblx0XHRcdGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlID0gZnVuY3Rpb24oIGUgKSB7XG5cdFx0XHRcdC8vIERpc2NhcmQgdGhlIHNlY29uZCBldmVudCBvZiBhIGpRdWVyeS5ldmVudC50cmlnZ2VyKCkgYW5kXG5cdFx0XHRcdC8vIHdoZW4gYW4gZXZlbnQgaXMgY2FsbGVkIGFmdGVyIGEgcGFnZSBoYXMgdW5sb2FkZWRcblx0XHRcdFx0cmV0dXJuIHR5cGVvZiBqUXVlcnkgIT09IHN0cnVuZGVmaW5lZCAmJiBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICE9PSBlLnR5cGUgP1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5kaXNwYXRjaC5hcHBseSggZWxlbSwgYXJndW1lbnRzICkgOiB1bmRlZmluZWQ7XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdC8vIEhhbmRsZSBtdWx0aXBsZSBldmVudHMgc2VwYXJhdGVkIGJ5IGEgc3BhY2Vcblx0XHR0eXBlcyA9ICggdHlwZXMgfHwgXCJcIiApLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbIFwiXCIgXTtcblx0XHR0ID0gdHlwZXMubGVuZ3RoO1xuXHRcdHd
14938oaWxlICggdC0tICkge1xuXHRcdFx0dG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbdF0gKSB8fCBbXTtcblx0XHRcdHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsxXTtcblx0XHRcdG5hbWVzcGFjZXMgPSAoIHRtcFsyXSB8fCBcIlwiICkuc3BsaXQoIFwiLlwiICkuc29ydCgpO1xuXG5cdFx0XHQvLyBUaGVyZSAqbXVzdCogYmUgYSB0eXBlLCBubyBhdHRhY2hpbmcgbmFtZXNwYWNlLW9ubHkgaGFuZGxlcnNcblx0XHRcdGlmICggIXR5cGUgKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBldmVudCBjaGFuZ2VzIGl0cyB0eXBlLCB1c2UgdGhlIHNwZWNpYWwgZXZlbnQgaGFuZGxlcnMgZm9yIHRoZSBjaGFuZ2VkIHR5cGVcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXG5cdFx0XHQvLyBJZiBzZWxlY3RvciBkZWZpbmVkLCBkZXRlcm1pbmUgc3BlY2lhbCBldmVudCBhcGkgdHlwZSwgb3RoZXJ3aXNlIGdpdmVuIHR5cGVcblx0XHRcdHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTtcblxuXHRcdFx0Ly8gVXBkYXRlIHNwZWNpYWwgYmFzZWQgb24gbmV3bHkgcmVzZXQgdHlwZVxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cblx0XHRcdC8vIGhhbmRsZU9iaiBpcyBwYXNzZWQgdG8gYWxsIGV2ZW50IGhhbmRsZXJzXG5cdFx0XHRoYW5kbGVPYmogPSBqUXVlcnkuZXh0ZW5kKHtcblx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0b3JpZ1R5cGU6IG9yaWdUeXBlLFxuXHRcdFx0XHRkYXRhOiBkYXRhLFxuXHRcdFx0XHRoYW5kbGVyOiBoYW5kbGVyLFxuXHRcdFx0XHRndWlkOiBoYW5kbGVyLmd1aWQsXG5cdFx0XHRcdHNlbGVjdG9yOiBzZWxlY3Rvcixcblx0XHRcdFx0bmVlZHNDb250ZXh0OiBzZWxlY3RvciAmJiBqUXVlcnkuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSxcblx0XHRcdFx0bmFtZXNwYWNlOiBuYW1lc3BhY2VzLmpvaW4oXCIuXCIpXG5cdFx0XHR9LCBoYW5kbGVPYmpJbiApO1xuXG5cdFx0XHQvLyBJbml0IHRoZSBldmVudCBoYW5kbGVyIHF1ZXVlIGlmIHdlJ3JlIHRoZSBmaXJzdFxuXHRcdFx0aWYgKCAhKGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0pICkge1xuXHRcdFx0XHRoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdID0gW107XG5cdFx0XHRcdGhhbmRsZXJzLmRlbGVnYXRlQ291bnQgPSAwO1xuXG5cdFx0XHRcdC8vIE9ubHkgdXNlIGFkZEV2ZW50TGlzdGVuZXIgaWYgdGhlIHNwZWNpYWwgZXZlbnRzIGhhbmRsZXIgcmV0dXJucyBmYWxzZVxuXHRcdFx0XHRpZiAoICFzcGVjaWFsLnNldHVwIHx8IHNwZWNpYWwuc2V0dXAuY2FsbCggZWxlbSwgZGF0YSwgbmFtZXNwYWNlcywgZXZlbnRIYW5kbGUgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0aWYgKCBlbGVtLmFkZEV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLmFkZEV2ZW50TGlzdGVuZXIoIHR5cGUsIGV2ZW50SGFuZGxlLCBmYWxzZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHNwZWNpYWwuYWRkICkge1xuXHRcdFx0XHRzcGVjaWFsLmFkZC5jYWxsKCBlbGVtLCBoYW5kbGVPYmogKTtcblxuXHRcdFx0XHRpZiAoICFoYW5kbGVPYmouaGFuZGxlci5ndWlkICkge1xuXHRcdFx0XHRcdGhhbmRsZU9iai5oYW5kbGVyLmd1aWQgPSBoYW5kbGVyLmd1aWQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIHRvIHRoZSBlbGVtZW50J3MgaGFuZGxlciBsaXN0LCBkZWxlZ2F0ZXMgaW4gZnJvbnRcblx0XHRcdGlmICggc2VsZWN0b3IgKSB7XG5cdFx0XHRcdGhhbmRsZXJzLnNwbGljZSggaGFuZGxlcnMuZGVsZWdhdGVDb3VudCsrLCAwLCBoYW5kbGVPYmogKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGhhbmRsZXJzLnB1c2goIGhhbmRsZU9iaiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBLZWVwIHRyYWNrIG9mIHdoaWNoIGV2ZW50cyBoYXZlIGV2ZXIgYmVlbiB1c2VkLCBmb3IgZXZlbnQgb3B0aW1pemF0aW9uXG5cdFx0XHRqUXVlcnkuZXZlbnQuZ2xvYmFsWyB0eXBlIF0gPSB0cnVlO1xuXHRcdH1cblxuXHR9LFxuXG5cdC8vIERldGFjaCBhbiBldmVudCBvciBzZXQgb2YgZXZlbnRzIGZyb20gYW4gZWxlbWVudFxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgc2VsZWN0b3IsIG1hcHBlZF
14938R5cGVzICkge1xuXG5cdFx0dmFyIGosIG9yaWdDb3VudCwgdG1wLFxuXHRcdFx0ZXZlbnRzLCB0LCBoYW5kbGVPYmosXG5cdFx0XHRzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsXG5cdFx0XHRlbGVtRGF0YSA9IGRhdGFfcHJpdi5oYXNEYXRhKCBlbGVtICkgJiYgZGF0YV9wcml2LmdldCggZWxlbSApO1xuXG5cdFx0aWYgKCAhZWxlbURhdGEgfHwgIShldmVudHMgPSBlbGVtRGF0YS5ldmVudHMpICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIE9uY2UgZm9yIGVhY2ggdHlwZS5uYW1lc3BhY2UgaW4gdHlwZXM7IHR5cGUgbWF5IGJlIG9taXR0ZWRcblx0XHR0eXBlcyA9ICggdHlwZXMgfHwgXCJcIiApLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbIFwiXCIgXTtcblx0XHR0ID0gdHlwZXMubGVuZ3RoO1xuXHRcdHdoaWxlICggdC0tICkge1xuXHRcdFx0dG1wID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbdF0gKSB8fCBbXTtcblx0XHRcdHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsxXTtcblx0XHRcdG5hbWVzcGFjZXMgPSAoIHRtcFsyXSB8fCBcIlwiICkuc3BsaXQoIFwiLlwiICkuc29ydCgpO1xuXG5cdFx0XHQvLyBVbmJpbmQgYWxsIGV2ZW50cyAob24gdGhpcyBuYW1lc3BhY2UsIGlmIHByb3ZpZGVkKSBmb3IgdGhlIGVsZW1lbnRcblx0XHRcdGlmICggIXR5cGUgKSB7XG5cdFx0XHRcdGZvciAoIHR5cGUgaW4gZXZlbnRzICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKyB0eXBlc1sgdCBdLCBoYW5kbGVyLCBzZWxlY3RvciwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblx0XHRcdHR5cGUgPSAoIHNlbGVjdG9yID8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTtcblx0XHRcdGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gfHwgW107XG5cdFx0XHR0bXAgPSB0bXBbMl0gJiYgbmV3IFJlZ0V4cCggXCIoXnxcXFxcLilcIiArIG5hbWVzcGFjZXMuam9pbihcIlxcXFwuKD86LipcXFxcLnwpXCIpICsgXCIoXFxcXC58JClcIiApO1xuXG5cdFx0XHQvLyBSZW1vdmUgbWF0Y2hpbmcgZXZlbnRzXG5cdFx0XHRvcmlnQ291bnQgPSBqID0gaGFuZGxlcnMubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRcdGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBqIF07XG5cblx0XHRcdFx0aWYgKCAoIG1hcHBlZF
14938R5cGVzIHx8IG9yaWdUeXBlID09PSBoYW5kbGVPYmoub3JpZ1R5cGUgKSAmJlxuXHRcdFx0XHRcdCggIWhhbmRsZXIgfHwgaGFuZGxlci5ndWlkID09PSBoYW5kbGVPYmouZ3VpZCApICYmXG5cdFx0XHRcdFx0KCAhdG1wIHx8IHRtcC50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSAmJlxuXHRcdFx0XHRcdCggIXNlbGVjdG9yIHx8IHNlbGVjdG9yID09PSBoYW5kbGVPYmouc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09IFwiKipcIiAmJiBoYW5kbGVPYmouc2VsZWN0b3IgKSApIHtcblx0XHRcdFx0XHRoYW5kbGVycy5zcGxpY2UoIGosIDEgKTtcblxuXHRcdFx0XHRcdGlmICggaGFuZGxlT2JqLnNlbGVjdG9yICkge1xuXHRcdFx0XHRcdFx0aGFuZGxlcnMuZGVsZWdhdGVDb3VudC0tO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIHNwZWNpYWwucmVtb3ZlICkge1xuXHRcdFx0XHRcdFx0c3BlY2lhbC5yZW1vdmUuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJlbW92ZSBnZW5lcmljIGV2ZW50IGhhbmRsZXIgaWYgd2UgcmVtb3ZlZCBzb21ldGhpbmcgYW5kIG5vIG1vcmUgaGFuZGxlcnMgZXhpc3Rcblx0XHRcdC8vIChhdm9pZHMgcG90ZW50aWFsIGZvciBlbmRsZXNzIHJlY3Vyc2lvbiBkdXJpbmcgcmVtb3ZhbCBvZiBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzKVxuXHRcdFx0aWYgKCBvcmlnQ291bnQgJiYgIWhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdFx0aWYgKCAhc3BlY2lhbC50ZWFyZG93biB8fCBzcGVjaWFsLnRlYXJkb3duLmNhbGwoIGVsZW0sIG5hbWVzcGFjZXMsIGVsZW1EYXRhLmhhbmRsZSApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGVsZW1EYXRhLmhhbmRsZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZGVsZXRlIGV2ZW50c1sgdHlwZSBdO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFJlbW92ZSB0aGUgZXhwYW5kbyBpZiBpdCdzIG5vIGxvbmdlciB1c2VkXG5cdFx0aWYgKCBqUXVlcnkuaXNFbXB0eU9iamVjdCggZXZlbnRzICkgKSB7XG5cdFx0XHRkZWxldGUgZWxlbURhdGEuaGFuZGxlO1xuXHRcdFx0ZGF0YV9wcml2LnJlbW92ZSggZWxlbSwgXCJldmVudHNcIiApO1xuXHRcdH1cblx0fSxcblxuXHR0cmlnZ2VyOiBmdW5jdGlvbiggZXZlbnQsIGRhdGEsIGVsZW0sIG9ubHlIYW5kbGVycyApIHtcblxuXHRcdHZhciBpLCBjdXIsIHRtcCwgYnViYmxlVHlwZSwgb250eXBlLCBoYW5kbGUsIHNwZWNpYWwsXG5cdFx0XHRldmVudFBhdGggPSBbIGVsZW0gfHwgZG9jdW1lbnQgXSxcblx0XHRcdHR5cGUgPSBoYXNPd24uY2FsbCggZXZlbnQsIFwidHlwZVwiICkgPyBldmVudC50eXBlIDogZXZlbnQsXG5cdFx0XHRuYW1lc3BhY2VzID0gaGFzT3duLmNhbGwoIGV2ZW50LCBcIm5hbWVzcGFjZVwiICkgPyBldmVudC5uYW1lc3BhY2Uuc3BsaXQoXCIuXCIpIDogW107XG5cblx0XHRjdXIgPSB0bXAgPSBlbGVtID0gZWxlbSB8fCBkb2N1bWVudDtcblxuXHRcdC8vIERvbid0IGRvIGV2ZW50cyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzXG5cdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gZm9jdXMvYmx1ciBtb3JwaHMgdG8gZm9jdXNpbi9vdXQ7IGVuc3VyZSB3ZSdyZSBub3QgZmlyaW5nIHRoZW0gcmlnaHQgbm93XG5cdFx0aWYgKCByZm9jdXNNb3JwaC50ZXN0KCB0eXBlICsgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICggdHlwZS5pbmRleE9mKFwiLlwiKSA+PSAwICkge1xuXHRcdFx0Ly8gTmFtZXNwYWNlZCB0cmlnZ2VyOyBjcmVhdGUgYSByZWdleHAgdG8gbWF0Y2ggZXZlbnQgdHlwZSBpbiBoYW5kbGUoKVxuXHRcdFx0bmFtZXNwYWNlcyA9IHR5cGUuc3BsaXQoXCIuXCIpO1xuXHRcdFx0dHlwZSA9IG5hbWVzcGFjZXMuc2hpZnQoKTtcblx0XHRcdG5hbWVzcGFjZXMuc29ydCgpO1xuXHRcdH1cblx0XHRvbnR5cGUgPSB0eXBlLmluZGV4T2YoXCI6XCIpIDwgMCAmJiBcIm9uXCIgKyB0eXBlO1xuXG5cdFx0Ly8gQ2FsbGVyIGNhbiBwYXNzIGluIGEgalF1ZXJ5LkV2ZW50IG9iamVjdCwgT2JqZWN0LCBvciBqdXN0IGFuIGV2ZW50IHR5cGUgc3RyaW5nXG5cdFx0ZXZlbnQgPSBldmVudFsgalF1ZXJ5LmV4cGFuZG8gXSA/XG5cdFx0XHRldmVudCA6XG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCB0eXBlLCB0eXBlb2YgZXZlbnQgPT09IFwib2JqZWN0XCIgJiYgZXZlbnQgKTtcblxuXHRcdC8vIFRyaWdnZXIgYml0bWFzazogJiAxIGZvciBuYXRpdmUgaGFuZGxlcnM7ICYgMiBmb3IgalF1ZXJ5IChhbHdheXMgdHJ1ZSlcblx0XHRldmVudC5pc1RyaWdnZXIgPSBvbmx5SGFuZGxlcnMgPyAyIDogMztcblx0XHRldmVudC5uYW1lc3BhY2UgPSBuYW1lc3BhY2VzLmpvaW4oXCIuXCIpO1xuXHRcdGV2ZW50Lm5hbWVzcGFjZV9yZSA9IGV2ZW50Lm5hbWVzcGFjZSA/XG5cdFx0XHRuZXcgUmVnRXhwKCBcIihefFxcXFwuKVwiICsgbmFtZXNwYWNlcy5qb2luKFwiXFxcXC4oPzouKlxcXFwufClcIikgKyBcIihcXFxcLnwkKVwiICkgOlxuXHRcdFx0bnVsbDtcblxuXHRcdC8vIENsZWFuIHVwIHRoZSBldmVudCBpbiBjYXNlIGl0IGlzIGJlaW5nIHJldXNlZFxuXHRcdGV2ZW50LnJlc3VsdCA9IHVuZGVmaW5lZDtcblx0XHRpZiAoICFldmVudC50YXJnZXQgKSB7XG5cdFx0XHRldmVudC50YXJnZXQgPSBlbGVtO1xuXHRcdH1cblxuXHRcdC8vIENsb25lIGFueSBpbmNvbWluZyBkYXRhIGFuZCBwcmVwZW5kIHRoZSBldmVudCwgY3JlYXRpbmcgdGhlIGhhbmRsZXIgYXJnIGxpc3Rcblx0XHRkYXRhID0gZGF0YSA9PSBudWxsID9cblx0XHRcdFsgZXZlbnQgXSA6XG5cdFx0XHRqUXVlcnkubWFrZUFycmF5KCBkYXRhLCBbIGV2ZW50IF0gKTtcblxuXHRcdC8vIEFsbG93IHNwZWNpYWwgZXZlbnRzIHRvIGRyYXcgb3V0c2lkZSB0aGUgbGluZXNcblx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgc3BlY2lhbC50cmlnZ2VyICYmIHNwZWNpYWwudHJpZ2dlci5hcHBseSggZWxlbSwgZGF0YSApID09PSBmYWxzZSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBEZXRlcm1pbmUgZXZlbnQgcHJv
14938cGFnYXRpb24gcGF0aCBpbiBhZHZhbmNlLCBwZXIgVzNDIGV2ZW50cyBzcGVjICgjOTk1MSlcblx0XHQvLyBCdWJibGUgdXAgdG8gZG9jdW1lbnQsIHRoZW4gdG8gd2luZG93OyB3YXRjaCBmb3IgYSBnbG9iYWwgb3duZXJEb2N1bWVudCB2YXIgKCM5NzI0KVxuXHRcdGlmICggIW9ubHlIYW5kbGVycyAmJiAhc3BlY2lhbC5ub0J1YmJsZSAmJiAhalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdGJ1YmJsZVR5cGUgPSBzcGVjaWFsLmRlbGVnYXRlVHlwZSB8fCB0eXBlO1xuXHRcdFx0aWYgKCAhcmZvY3VzTW9ycGgudGVzdCggYnViYmxlVHlwZSArIHR5cGUgKSApIHtcblx0XHRcdFx0Y3VyID0gY3VyLnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKCA7IGN1cjsgY3VyID0gY3VyLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdGV2ZW50UGF0aC5wdXNoKCBjdXIgKTtcblx0XHRcdFx0dG1wID0gY3VyO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPbmx5IGFkZCB3aW5kb3cgaWYgd2UgZ290IHRvIGRvY3VtZW50IChlLmcuLCBub3QgcGxhaW4gb2JqIG9yIGRldGFjaGVkIERPTSlcblx0XHRcdGlmICggdG1wID09PSAoZWxlbS5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50KSApIHtcblx0XHRcdFx0ZXZlbnRQYXRoLnB1c2goIHRtcC5kZWZhdWx0VmlldyB8fCB0bXAucGFyZW50V2luZG93IHx8IHdpbmRvdyApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEZpcmUgaGFuZGxlcnMgb24gdGhlIGV2ZW50IHBhdGhcblx0XHRpID0gMDtcblx0XHR3aGlsZSAoIChjdXIgPSBldmVudFBhdGhbaSsrXSkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cblx0XHRcdGV2ZW50LnR5cGUgPSBpID4gMSA/XG5cdFx0XHRcdGJ1YmJsZVR5cGUgOlxuXHRcdFx0XHRzcGVjaWFsLmJpbmRUeXBlIHx8IHR5cGU7XG5cblx0XHRcdC8vIGpRdWVyeSBoYW5kbGVyXG5cdFx0XHRoYW5kbGUgPSAoIGRhdGFfcHJpdi5nZXQoIGN1ciwgXCJldmVudHNcIiApIHx8IHt9IClbIGV2ZW50LnR5cGUgXSAmJiBkYXRhX3ByaXYuZ2V0KCBjdXIsIFwiaGFuZGxlXCIgKTtcblx0XHRcdGlmICggaGFuZGxlICkge1xuXHRcdFx0XHRoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBOYXRpdmUgaGFuZGxlclxuXHRcdFx0aGFuZGxlID0gb250eXBlICYmIGN1clsgb250eXBlIF07XG5cdFx0XHRpZiAoIGhhbmRsZSAmJiBoYW5kbGUuYXBwbHkgJiYgalF1ZXJ5LmFjY2VwdERhdGEoIGN1ciApICkge1xuXHRcdFx0XHRldmVudC5yZXN1bHQgPSBoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApO1xuXHRcdFx0XHRpZiAoIGV2ZW50LnJlc3VsdCA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRldmVudC50eXBlID0gdHlwZTtcblxuXHRcdC8vIElmIG5vYm9keSBwcmV2ZW50ZWQgdGhlIGRlZmF1bHQgYWN0aW9uLCBkbyBpdCBub3dcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICkge1xuXG5cdFx0XHRpZiAoICghc3BlY2lhbC5fZGVmYXVsdCB8fCBzcGVjaWFsLl9kZWZhdWx0LmFwcGx5KCBldmVudFBhdGgucG9wKCksIGRhdGEgKSA9PT0gZmFsc2UpICYmXG5cdFx0XHRcdGpRdWVyeS5hY2NlcHREYXRhKCBlbGVtICkgKSB7XG5cblx0XHRcdFx0Ly8gQ2FsbCBhIG5hdGl2ZSBET00gbWV0aG9kIG9uIHRoZSB0YXJnZXQgd2l0aCB0aGUgc2FtZSBuYW1lIG5hbWUgYXMgdGhlIGV2ZW50LlxuXHRcdFx0XHQvLyBEb24ndCBkbyBkZWZhdWx0IGFjdGlvbnMgb24gd2luZG93LCB0aGF0J3Mgd2hlcmUgZ2xvYmFsIHZhcmlhYmxlcyBiZSAoIzYxNzApXG5cdFx0XHRcdGlmICggb250eXBlICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBlbGVtWyB0eXBlIF0gKSAmJiAhalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdFx0XHQvLyBEb24ndCByZS10cmlnZ2VyIGFuIG9uRk9PIGV2ZW50IHdoZW4gd2UgY2FsbCBpdHMgRk9PKCkgbWV0aG9kXG5cdFx0XHRcdFx0dG1wID0gZWxlbVsgb250eXBlIF07XG5cblx0XHRcdFx0XHRpZiAoIHRtcCApIHtcblx0XHRcdFx0XHRcdGVsZW1bIG9udHlwZSBdID0gbnVsbDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBQcmV2ZW50IHJlLXRyaWdnZXJpbmcgb2YgdGhlIHNhbWUgZXZlbnQsIHNpbmNlIHdlIGFscmVhZHkgYnViYmxlZCBpdCBhYm92ZVxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB0eXBlO1xuXHRcdFx0XHRcdGVsZW1bIHR5cGUgXSgpO1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB1bmRlZmluZWQ7XG5cblx0XHRcdFx0XHRpZiAoIHRtcCApIHtcblx0XHRcdFx0XHRcdGVsZW1bIG9udHlwZSBdID0gdG1wO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBldmVudC5yZXN1bHQ7XG5cdH0sXG5cblx0ZGlzcGF0Y2g6IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdC8vIE1ha2UgYSB3cml0YWJsZSBqUXVlcnkuRXZlbnQgZnJvbSB0aGUgbmF0aXZlIGV2ZW50IG9iamVjdFxuXHRcdGV2ZW50ID0galF1ZXJ5LmV2ZW50LmZpeCggZXZlbnQgKTtcblxuXHRcdHZhciBpLCBqLCByZXQsIG1hdGNoZWQsIGhhbmRsZU9iaixcblx0XHRcdGhhbmRsZXJRdWV1ZSA9IFtdLFxuXHRcdFx0YXJncyA9IHNsaWNlLmNhbGwoIGFyZ3VtZW50cyApLFxuXHRcdFx0aGFuZGxlcnMgPSAoIGRhdGFfcHJpdi5nZXQoIHRoaXMsIFwiZXZlbnRzXCIgKSB8fCB7fSApWyBldmVudC50eXBlIF0gfHwgW10sXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGV2ZW50LnR5cGUgXSB8fCB7fTtcblxuXHRcdC8vIFVzZSB0aGUgZml4LWVkIGpRdWVyeS5FdmVudCByYXRoZXIgdGhhbiB0aGUgKHJlYWQtb25seSkgbmF0aXZlIGV2ZW50XG5cdFx0YXJnc1swXSA9IGV2ZW50O1xuXHRcdGV2ZW50LmRlbGVnYXRlVGFyZ2V0ID0gdGhpcztcblxuXHRcdC8vIENhbGwgdGhlIHByZURpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZSwgYW5kIGxldCBpdCBiYWlsIGlmIGRlc2lyZWRcblx0XHRpZiAoIHNwZWNpYWwucHJlRGlzcGF0Y2ggJiYgc3BlY2lhbC5wcmVEaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApID09PSBmYWxzZSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBEZXRlcm1pbmUgaGFuZGxlcnNcblx0XHRoYW5kbGVyUXVldWUgPSBqUXVlcnkuZXZlbnQuaGFuZGxlcnMuY2FsbCggdGhpcywgZXZlbnQsIGhhbmRsZXJzICk7XG5cblx0XHQvLyBSdW4gZGVsZWdhdGVzIGZpcnN0OyB0aGV5IG1heSB3YW50IHRvIHN0b3AgcHJvcGFnYXRpb24gYmVuZWF0aCB1c1xuXHRcdGkgPSAwO1xuXHRcdHd
14938oaWxlICggKG1hdGNoZWQgPSBoYW5kbGVyUXVldWVbIGkrKyBdKSAmJiAhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblx0XHRcdGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBtYXRjaGVkLmVsZW07XG5cblx0XHRcdGogPSAwO1xuXHRcdFx0d2hpbGUgKCAoaGFuZGxlT2JqID0gbWF0Y2hlZC5oYW5kbGVyc1sgaisrIF0pICYmICFldmVudC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXG5cdFx0XHRcdC8vIFRyaWdnZXJlZCBldmVudCBtdXN0IGVpdGhlciAxKSBoYXZlIG5vIG5hbWVzcGFjZSwgb3IgMikgaGF2ZSBuYW1lc3BhY2Uocylcblx0XHRcdFx0Ly8gYSBzdWJzZXQgb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIGJvdW5kIGV2ZW50IChib3RoIGNhbiBoYXZlIG5vIG5hbWVzcGFjZSkuXG5cdFx0XHRcdGlmICggIWV2ZW50Lm5hbWVzcGFjZV9yZSB8fCBldmVudC5uYW1lc3BhY2VfcmUudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkge1xuXG5cdFx0XHRcdFx0ZXZlbnQuaGFuZGxlT2JqID0gaGFuZGxlT2JqO1xuXHRcdFx0XHRcdGV2ZW50LmRhdGEgPSBoYW5kbGVPYmouZGF0YTtcblxuXHRcdFx0XHRcdHJldCA9ICggKGpRdWVyeS5ldmVudC5zcGVjaWFsWyBoYW5kbGVPYmoub3JpZ1R5cGUgXSB8fCB7fSkuaGFuZGxlIHx8IGhhbmRsZU9iai5oYW5kbGVyIClcblx0XHRcdFx0XHRcdFx0LmFwcGx5KCBtYXRjaGVkLmVsZW0sIGFyZ3MgKTtcblxuXHRcdFx0XHRcdGlmICggcmV0ICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIChldmVudC5yZXN1bHQgPSByZXQpID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbCB0aGUgcG9zdERpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZVxuXHRcdGlmICggc3BlY2lhbC5wb3N0RGlzcGF0Y2ggKSB7XG5cdFx0XHRzcGVjaWFsLnBvc3REaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApO1xuXHRcdH1cblxuXHRcdHJldHVybiBldmVudC5yZXN1bHQ7XG5cdH0sXG5cblx0aGFuZGxlcnM6IGZ1bmN0aW9uKCBldmVudCwgaGFuZGxlcnMgKSB7XG5cdFx0dmFyIGksIG1hdGNoZXMsIHNlbCwgaGFuZGxlT2JqLFxuXHRcdFx0aGFuZGxlclF1ZXVlID0gW10sXG5cdFx0XHRkZWxlZ2F0ZUNvdW50ID0gaGFuZGxlcnMuZGVsZWdhdGVDb3VudCxcblx0XHRcdGN1ciA9IGV2ZW50LnRhcmdldDtcblxuXHRcdC8vIEZpbmQgZGVsZWdhdGUgaGFuZGxlcnNcblx0XHQvLyBCbGFjay1ob2xlIFNWRyA8dXNlPiBpbnN0YW5jZSB0cmVlcyAoIzEzMTgwKVxuXHRcdC8vIEF2b2lkIG5vbi1sZWZ0LWNsaWNrIGJ1YmJsaW5nIGluIEZpcmVmb3ggKCMzODYxKVxuXHRcdGlmICggZGVsZWdhdGVDb3VudCAmJiBjdXIubm9kZVR5cGUgJiYgKCFldmVudC5idXR0b24gfHwgZXZlbnQudHlwZSAhPT0gXCJjbGlja1wiKSApIHtcblxuXHRcdFx0Zm9yICggOyBjdXIgIT09IHRoaXM7IGN1ciA9IGN1ci5wYXJlbnROb2RlIHx8IHRoaXMgKSB7XG5cblx0XHRcdFx0Ly8gRG9uJ3QgcHJvY2VzcyBjbGlja3Mgb24gZGlzYWJsZWQgZWxlbWVudHMgKCM2OTExLCAjODE2NSwgIzExMzgyLCAjMTE3NjQpXG5cdFx0XHRcdGlmICggY3VyLmRpc2FibGVkICE9PSB0cnVlIHx8IGV2ZW50LnR5cGUgIT09IFwiY2xpY2tcIiApIHtcblx0XHRcdFx0XHRtYXRjaGVzID0gW107XG5cdFx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBkZWxlZ2F0ZUNvdW50OyBpKysgKSB7XG5cdFx0XHRcdFx0XHRoYW5kbGVPYmogPSBoYW5kbGVyc1sgaSBdO1xuXG5cdFx0XHRcdFx0XHQvLyBEb24ndCBjb25mbGljdCB3aXRoIE9iamVjdC5wcm90b3R5cGUgcHJvcGVydGllcyAoIzEzMjAzKVxuXHRcdFx0XHRcdFx0c2VsID0gaGFuZGxlT2JqLnNlbGVjdG9yICsgXCIgXCI7XG5cblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlc1sgc2VsIF0gPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRcdFx0bWF0Y2hlc1sgc2VsIF0gPSBoYW5kbGVPYmoubmVlZHNDb250ZXh0ID9cblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkoIHNlbCwgdGhpcyApLmluZGV4KCBjdXIgKSA+PSAwIDpcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuZmluZCggc2VsLCB0aGlzLCBudWxsLCBbIGN1ciBdICkubGVuZ3RoO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVzWyBzZWwgXSApIHtcblx0XHRcdFx0XHRcdFx0bWF0Y2hlcy5wdXNoKCBoYW5kbGVPYmogKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCBtYXRjaGVzLmxlbmd0aCApIHtcblx0XHRcdFx0XHRcdGhhbmRsZXJRdWV1ZS5wdXNoKHsgZWxlbTogY3VyLCBoYW5kbGVyczogbWF0Y2hlcyB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBBZGQgdGhlIHJlbWFpbmluZyAoZGlyZWN0bHktYm91bmQpIGhhbmRsZXJzXG5cdFx0aWYgKCBkZWxlZ2F0ZUNvdW50IDwgaGFuZGxlcnMubGVuZ3RoICkge1xuXHRcdFx0aGFuZGxlclF1ZXVlLnB1c2goeyBlbGVtOiB0aGlzLCBoYW5kbGVyczogaGFuZGxlcnMuc2xpY2UoIGRlbGVnYXRlQ291bnQgKSB9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaGFuZGxlclF1ZXVlO1xuXHR9LFxuXG5cdC8vIEluY2x1ZGVzIHNvbWUgZXZlbnQgcHJvcHMgc2hhcmVkIGJ5IEtleUV2ZW50IGFuZCBNb3VzZUV2ZW50XG5cdHByb3BzOiBcImFsdEtleSBidWJibGVzIGNhbmNlbGFibG
14938UgY3RybEtleSBjdXJyZW50VGFyZ2V0IGV2ZW50UGhhc2UgbWV0YUtleSByZWxhdGVkVGFyZ2V0IHNoaWZ0S2V5IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3aGljaFwiLnNwbGl0KFwiIFwiKSxcblxuXHRmaXhIb29rczoge30sXG5cblx0a2V5SG9va3M6IHtcblx0XHRwcm9wczogXCJjaGFyIGNoYXJDb2RlIGtleSBrZXlDb2RlXCIuc3BsaXQoXCIgXCIpLFxuXHRcdGZpbHRlcjogZnVuY3Rpb24oIGV2ZW50LCBvcmlnaW5hbCApIHtcblxuXHRcdFx0Ly8gQWRkIHdoaWNoIGZvciBrZXkgZXZlbnRzXG5cdFx0XHRpZiAoIGV2ZW50LndoaWNoID09IG51bGwgKSB7XG5cdFx0XHRcdGV2ZW50LndoaWNoID0gb3JpZ2luYWwuY2hhckNvZGUgIT0gbnVsbCA/IG9yaWdpbmFsLmNoYXJDb2RlIDogb3JpZ2luYWwua2V5Q29kZTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGV2ZW50O1xuXHRcdH1cblx0fSxcblxuXHRtb3VzZUhvb2tzOiB7XG5cdFx0cHJvcHM6IFwiYnV0dG9uIGJ1dHRvbnMgY2xpZW50WCBjbGllbnRZIG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBzY3JlZW5YIHNjcmVlblkgdG9FbGVtZW50XCIuc3BsaXQoXCIgXCIpLFxuXHRcdGZpbHRlcjogZnVuY3Rpb24oIGV2ZW50LCBvcmlnaW5hbCApIHtcblx0XHRcdHZhciBldmVudERvYywgZG9jLCBib2R5LFxuXHRcdFx0XHRidXR0b24gPSBvcmlnaW5hbC5idXR0b247XG5cblx0XHRcdC8vIENhbGN1bGF0ZSBwYWdlWC9ZIGlmIG1pc3NpbmcgYW5kIGNsaWVudFgvWSBhdmFpbGFibGVcblx0XHRcdGlmICggZXZlbnQucGFnZVggPT0gbnVsbCAmJiBvcmlnaW5hbC5jbGllbnRYICE9IG51bGwgKSB7XG5cdFx0XHRcdGV2ZW50RG9jID0gZXZlbnQudGFyZ2V0Lm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7XG5cdFx0XHRcdGRvYyA9IGV2ZW50RG9jLmRvY3VtZW50RWxlbWVudDtcblx0XHRcdFx0Ym9keSA9IGV2ZW50RG9jLmJvZHk7XG5cblx0XHRcdFx0ZXZlbnQucGFnZVggPSBvcmlnaW5hbC5jbGllbnRYICsgKCBkb2MgJiYgZG9jLnNjcm9sbExlZnQgfHwgYm9keSAmJiBib2R5LnNjcm9sbExlZnQgfHwgMCApIC0gKCBkb2MgJiYgZG9jLmNsaWVudExlZnQgfHwgYm9keSAmJiBib2R5LmNsaWVudExlZnQgfHwgMCApO1xuXHRcdFx0XHRldmVudC5wYWdlWSA9IG9yaWdpbmFsLmNsaWVudFkgKyAoIGRvYyAmJiBkb2Muc2Nyb2xsVG9wICB8fCBib2R5ICYmIGJvZHkuc2Nyb2xsVG9wICB8fCAwICkgLSAoIGRvYyAmJiBkb2MuY2xpZW50VG9wICB8fCBib2R5ICYmIGJvZHkuY2xpZW50VG9wICB8fCAwICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCB3aGljaCBmb3IgY2xpY2s6IDEgPT09IGxlZnQ7IDIgPT09IG1pZGRsZTsgMyA9PT0gcmlnaHRcblx0XHRcdC8vIE5vdGU6IGJ1dHRvbiBpcyBub3Qgbm9ybWFsaXplZCwgc28gZG9uJ3QgdXNlIGl0XG5cdFx0XHRpZiAoICFldmVudC53aGljaCAmJiBidXR0b24gIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0ZXZlbnQud2hpY2ggPSAoIGJ1dHRvbiAmIDEgPyAxIDogKCBidXR0b24gJiAyID8gMyA6ICggYnV0dG9uICYgNCA/IDIgOiAwICkgKSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZXZlbnQ7XG5cdFx0fVxuXHR9LFxuXG5cdGZpeDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdGlmICggZXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gKSB7XG5cdFx0XHRyZXR1cm4gZXZlbnQ7XG5cdFx0fVxuXG5cdFx0Ly8gQ3JlYXRlIGEgd3JpdGFibGUgY29weSBvZiB0aGUgZXZlbnQgb2JqZWN0IGFuZCBub3JtYWxpemUgc29tZSBwcm9wZXJ0aWVzXG5cdFx0dmFyIGksIHByb3AsIGNvcHksXG5cdFx0XHR0eXBlID0gZXZlbnQudHlwZSxcblx0XHRcdG9yaWdpbmFsRXZlbnQgPSBldmVudCxcblx0XHRcdGZpeEhvb2sgPSB0aGlzLmZpeEhvb2tzWyB0eXBlIF07XG5cblx0XHRpZiAoICFmaXhIb29rICkge1xuXHRcdFx0dGhpcy5maXhIb29rc1sgdHlwZSBdID0gZml4SG9vayA9XG5cdFx0XHRcdHJtb3VzZUV2ZW50LnRlc3QoIHR5cGUgKSA/IHRoaXMubW91c2VIb29rcyA6XG5cdFx0XHRcdHJrZXlFdmVudC50ZXN0KCB0eXBlICkgPyB0aGlzLmtleUhvb2tzIDpcblx0XHRcdFx0e307XG5cdFx0fVxuXHRcdGNvcHkgPSBmaXhIb29rLnByb3BzID8gdGhpcy5wcm9wcy5jb25jYXQoIGZpeEhvb2sucHJvcHMgKSA6IHRoaXMucHJvcHM7XG5cblx0XHRldmVudCA9IG5ldyBqUXVlcnkuRXZlbnQoIG9yaWdpbmFsRXZlbnQgKTtcblxuXHRcdGkgPSBjb3B5Lmxlbmd0aDtcblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdHByb3AgPSBjb3B5WyBpIF07XG5cdFx0XHRldmVudFsgcHJvcCBdID0gb3JpZ2luYWxFdmVudFsgcHJvcCBdO1xuXHRcdH1cblxuXHRcdC8vIFN1cHBvcnQ6IENvcmRvdmEgMi41IChXZWJLaXQpICgjMTMyNTUpXG5cdFx0Ly8gQWxsIGV2ZW50cyBzaG91bGQgaGF2ZSBhIHRhcmdldDsgQ29yZG92YSBkZXZpY2VyZWFkeSBkb2Vzbid0XG5cdFx0aWYgKCAhZXZlbnQudGFyZ2V0ICkge1xuXHRcdFx0ZXZlbnQudGFyZ2V0ID0gZG9jdW1lbnQ7XG5cdFx0fVxuXG5cdFx0Ly8gU3VwcG9ydDogU2FmYXJpIDYuMCssIENocm9tZTwyOFxuXHRcdC8vIFRhcmdldCBzaG91bGQgbm90IGJlIGEgdGV4dCBub2RlICgjNTA0LCAjMTMxNDMpXG5cdFx0aWYgKCBldmVudC50YXJnZXQubm9kZVR5cGUgPT09IDMgKSB7XG5cdFx0XHRldmVudC50YXJnZXQgPSBldmVudC50YXJnZXQucGFyZW50Tm9kZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZml4SG9vay5maWx0ZXIgPyBmaXhIb29rLmZpbHRlciggZXZlbnQsIG9yaWdpbmFsRXZlbnQgKSA6IGV2ZW50O1xuXHR9LFxuXG5cdHNwZWNpYWw6IHtcblx0XHRsb2FkOiB7XG5cdFx0XHQvLyBQcmV2ZW50IHRyaWdnZXJlZCBpbWFnZS5sb2FkIGV2ZW50cyBmcm9tIGJ1YmJsaW5nIHRvIHdpbmRvdy5sb2FkXG5cdFx0XHRub0J1YmJsZTogdHJ1ZVxuXHRcdH0sXG5cdFx0Zm9jdXM6IHtcblx0XHRcdC8vIEZpcmUgbmF0aXZlIGV2ZW50IGlmIHBvc3NpYmxlIHNvIGJsdXIvZm9jdXMgc2VxdWVuY2UgaXMgY29ycmVjdFxuXHRcdFx0dHJpZ2dlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggdGhpcyAhPT0gc2FmZUFjdGl2ZUVsZW1lbnQoKSAmJi
14938B0aGlzLmZvY3VzICkge1xuXHRcdFx0XHRcdHRoaXMuZm9jdXMoKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWxlZ2F0ZVR5cGU6IFwiZm9jdXNpblwiXG5cdFx0fSxcblx0XHRibHVyOiB7XG5cdFx0XHR0cmlnZ2VyOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCB0aGlzID09PSBzYWZlQWN0aXZlRWxlbWVudCgpICYmIHRoaXMuYmx1ciApIHtcblx0XHRcdFx0XHR0aGlzLmJsdXIoKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWxlZ2F0ZVR5cGU6IFwiZm9jdXNvdXRcIlxuXHRcdH0sXG5cdFx0Y2xpY2s6IHtcblx0XHRcdC8vIEZvciBjaGVja2JveCwgZmlyZSBuYXRpdmUgZXZlbnQgc28gY2hlY2tlZCBzdGF0ZSB3aWxsIGJlIHJpZ2h0XG5cdFx0XHR0cmlnZ2VyOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCB0aGlzLnR5cGUgPT09IFwiY2hlY2tib3hcIiAmJiB0aGlzLmNsaWNrICYmIGpRdWVyeS5ub2RlTmFtZSggdGhpcywgXCJpbnB1dFwiICkgKSB7XG5cdFx0XHRcdFx0dGhpcy5jbGljaygpO1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0Ly8gRm9yIGNyb3NzLWJyb3dzZXIgY29uc2lzdGVuY3ksIGRvbid0IGZpcmUgbmF0aXZlIC5jbGljaygpIG9uIGxpbmtzXG5cdFx0XHRfZGVmYXVsdDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0XHRyZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKCBldmVudC50YXJnZXQsIFwiYVwiICk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdGJlZm9yZXVubG9hZDoge1xuXHRcdFx0cG9zdERpc3BhdGNoOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveCAyMCtcblx0XHRcdFx0Ly8gRmlyZWZveCBkb2Vzbid0IGFsZXJ0IGlmIHRoZSByZXR1cm5WYWx1ZSBmaWVsZCBpcyBub3Qgc2V0LlxuXHRcdFx0XHRpZiAoIGV2ZW50LnJlc3VsdCAhPT0gdW5kZWZpbmVkICYmIGV2ZW50Lm9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0XHRcdFx0ZXZlbnQub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZSA9IGV2ZW50LnJlc3VsdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHRzaW11bGF0ZTogZnVuY3Rpb24oIHR5cGUsIGVsZW0sIGV2ZW50LCBidWJibGUgKSB7XG5cdFx0Ly8gUGlnZ3liYWNrIG9uIGEgZG9ub3IgZXZlbnQgdG8gc2ltdWxhdGUgYSBkaWZmZXJlbnQgb25lLlxuXHRcdC8vIEZha2Ugb3JpZ2luYWxFdmVudCB0byBhdm9pZCBkb25vcidzIHN0b3BQcm9wYWdhdGlvbiwgYnV0IGlmIHRoZVxuXHRcdC8vIHNpbXVsYXRlZCBldmVudCBwcmV2ZW50cyBkZWZhdWx0IHRoZW4gd2UgZG8gdGhlIHNhbWUgb24gdGhlIGRvbm9yLlxuXHRcdHZhciBlID0galF1ZXJ5LmV4dGVuZChcblx0XHRcdG5ldyBqUXVlcnkuRXZlbnQoKSxcblx0XHRcdGV2ZW50LFxuXHRcdFx0e1xuXHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRpc1NpbXVsYXRlZDogdHJ1ZSxcblx0XHRcdFx0b3JpZ2luYWxFdmVudDoge31cblx0XHRcdH1cblx0XHQpO1xuXHRcdGlmICggYnViYmxlICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIGUsIG51bGwsIGVsZW0gKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmNhbGwoIGVsZW0sIGUgKTtcblx0XHR9XG5cdFx0aWYgKCBlLmlzRGVmYXVsdFByZXZlbnRlZCgpICkge1xuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHR9XG5cdH1cbn07XG5cbmpRdWVyeS5yZW1vdmVFdmVudCA9IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBoYW5kbGUgKSB7XG5cdGlmICggZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyICkge1xuXHRcdGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciggdHlwZSwgaGFuZGxlLCBmYWxzZSApO1xuXHR9XG59O1xuXG5qUXVlcnkuRXZlbnQgPSBmdW5jdGlvbiggc3JjLCBwcm9wcyApIHtcblx0Ly8gQWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IHRoZSAnbmV3JyBrZXl3b3JkXG5cdGlmICggISh0aGlzIGluc3RhbmNlb2YgalF1ZXJ5LkV2ZW50KSApIHtcblx0XHRyZXR1cm4gbmV3IGpRdWVyeS5FdmVudCggc3JjLCBwcm9wcyApO1xuXHR9XG5cblx0Ly8gRXZlbnQgb2JqZWN0XG5cdGlmICggc3JjICYmIHNyYy50eXBlICkge1xuXHRcdHRoaXMub3JpZ2luYWxFdmVudCA9IHNyYztcblx0XHR0aGlzLnR5cGUgPSBzcmMudHlwZTtcblxuXHRcdC8vIEV2ZW50cyBidWJibGluZyB1cCB0aGUgZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHJldmVudGVkXG5cdFx0Ly8gYnkgYSBoYW5kbGVyIGxvd2VyIGRvd24gdGhlIHRyZWU7IHJlZmxlY3QgdGhlIGNvcnJlY3QgdmFsdWUuXG5cdFx0dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBzcmMuZGVmYXVsdFByZXZlbnRlZCB8fFxuXHRcdFx0XHRzcmMuZGVmYXVsdFByZXZlbnRlZCA9PT0gdW5kZWZpbmVkICYmXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQ8NC4wXG5cdFx0XHRcdHNyYy5yZXR1cm5WYWx1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0cmV0dXJuVHJ1ZSA6XG5cdFx0XHRyZXR1cm5GYWxzZTtcblxuXHQvLyBFdmVudCB0eXBlXG5cdH0gZWxzZSB7XG5cdFx0dGhpcy50eXBlID0gc3JjO1xuXHR9XG5cblx0Ly8gUHV0IGV4cGxpY2l0bHkgcHJvdmlkZWQgcHJvcGVydGllcyBvbnRvIHRoZSBldmVudCBvYmplY3Rcblx0aWYgKCBwcm9wcyApIHtcblx0XHRqUXVlcnkuZXh0ZW5kKCB0aGlzLCBwcm9wcyApO1xuXHR9XG5cblx0Ly8gQ3JlYXRlIGEgdGltZXN0YW1wIGlmIGluY29taW5nIGV2ZW50IGRvZXNuJ3QgaGF2ZSBvbmVcblx0dGhpcy50aW1lU3RhbXAgPSBzcmMgJiYgc3JjLnRpbWVTdGFtcCB8fCBqUXVlcnkubm93KCk7XG5cblx0Ly8gTWFyayBpdCBhcyBmaXhlZFxuXHR0aGlzWyBqUXVlcnkuZXhwYW5kbyBdID0gdHJ1ZTtcbn07XG5cbi8vIGpRdWVyeS5FdmVudCBpcyBiYXNlZCBvbiBET00zIEV2ZW50cyBhcyBzcGVjaWZpZWQgYnkgdGhlIEVDTUFTY3JpcHQgTGFuZ3VhZ2UgQmluZGluZ1xuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAwMzAzMzEvZWNtYS1zY3JpcHQtYmluZGluZy5odG1sXG5qUXVlcnkuRXZlbnQucHJvdG90eXBlID0ge1xuXHRpc0RlZmF1bHRQcmV2ZW50ZWQ6IHJldHVybkZhbHNlLF
14938xuXHRpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsXG5cdGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSxcblxuXHRwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHJldHVyblRydWU7XG5cblx0XHRpZiAoIGUgJiYgZS5wcmV2ZW50RGVmYXVsdCApIHtcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHR9XG5cdH0sXG5cdHN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiBlLnN0b3BQcm9wYWdhdGlvbiApIHtcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0fVxuXHR9LFxuXHRzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG5cdFx0dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7XG5cblx0XHRpZiAoIGUgJiYgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24gKSB7XG5cdFx0XHRlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXHRcdH1cblxuXHRcdHRoaXMuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdH1cbn07XG5cbi8vIENyZWF0ZSBtb3VzZWVudGVyL2xlYXZlIGV2ZW50cyB1c2luZyBtb3VzZW92ZXIvb3V0IGFuZCBldmVudC10aW1lIGNoZWNrc1xuLy8gU3VwcG9ydDogQ2hyb21lIDE1K1xualF1ZXJ5LmVhY2goe1xuXHRtb3VzZWVudGVyOiBcIm1vdXNlb3ZlclwiLFxuXHRtb3VzZWxlYXZlOiBcIm1vdXNlb3V0XCIsXG5cdHBvaW50ZXJlbnRlcjogXCJwb2ludGVyb3ZlclwiLFxuXHRwb2ludGVybGVhdmU6IFwicG9pbnRlcm91dFwiXG59LCBmdW5jdGlvbiggb3JpZywgZml4ICkge1xuXHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgb3JpZyBdID0ge1xuXHRcdGRlbGVnYXRlVHlwZTogZml4LFxuXHRcdGJpbmRUeXBlOiBmaXgsXG5cblx0XHRoYW5kbGU6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHZhciByZXQsXG5cdFx0XHRcdHRhcmdldCA9IHRoaXMsXG5cdFx0XHRcdHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LFxuXHRcdFx0XHRoYW5kbGVPYmogPSBldmVudC5oYW5kbGVPYmo7XG5cblx0XHRcdC8vIEZvciBtb3VzZW50ZXIvbGVhdmUgY2FsbCB0aGUgaGFuZGxlciBpZiByZWxhdGVkIGlzIG91dHNpZGUgdGhlIHRhcmdldC5cblx0XHRcdC8vIE5COiBObyByZWxhdGVkVGFyZ2V0IGlmIHRoZSBtb3VzZSBsZWZ0L2VudGVyZWQgdGhlIGJyb3dzZXIgd2luZG93XG5cdFx0XHRpZiAoICFyZWxhdGVkIHx8IChyZWxhdGVkICE9PSB0YXJnZXQgJiYgIWpRdWVyeS5jb250YWlucyggdGFyZ2V0LCByZWxhdGVkICkpICkge1xuXHRcdFx0XHRldmVudC50eXBlID0gaGFuZGxlT2JqLm9yaWdUeXBlO1xuXHRcdFx0XHRyZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdGV2ZW50LnR5cGUgPSBmaXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblx0fTtcbn0pO1xuXG4vLyBTdXBwb3J0OiBGaXJlZm94LCBDaHJvbWUsIFNhZmFyaVxuLy8gQ3JlYXRlIFwiYnViYmxpbmdcIiBmb2N1cyBhbmQgYmx1ciBldmVudHNcbmlmICggIXN1cHBvcnQuZm9jdXNpbkJ1YmJsZXMgKSB7XG5cdGpRdWVyeS5lYWNoKHsgZm9jdXM6IFwiZm9jdXNpblwiLCBibHVyOiBcImZvY3Vzb3V0XCIgfSwgZnVuY3Rpb24oIG9yaWcsIGZpeCApIHtcblxuXHRcdC8vIEF0dGFjaCBhIHNpbmdsZSBjYXB0dXJpbmcgaGFuZGxlciBvbiB0aGUgZG9jdW1lbnQgd2hpbGUgc29tZW9uZSB3YW50cyBmb2N1c2luL2ZvY3Vzb3V0XG5cdFx0dmFyIGhhbmRsZXIgPSBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdGpRdWVyeS5ldmVudC5zaW11bGF0ZSggZml4LCBldmVudC50YXJnZXQsIGpRdWVyeS5ldmVudC5maXgoIGV2ZW50ICksIHRydWUgKTtcblx0XHRcdH07XG5cblx0XHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZml4IF0gPSB7XG5cdFx0XHRzZXR1cDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcyxcblx0XHRcdFx0XHRhdHRhY2hlcyA9IGRhdGFfcHJpdi5hY2Nlc3MoIGRvYywgZml4ICk7XG5cblx0XHRcdFx0aWYgKCAhYXR0YWNoZXMgKSB7XG5cdFx0XHRcdFx0ZG9jLmFkZEV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkYXRhX3ByaXYuYWNjZXNzKCBkb2MsIGZpeCwgKCBhdHRhY2hlcyB8fCAwICkgKyAxICk7XG5cdFx0XHR9LFxuXHRcdFx0dGVhcmRvd246IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgZG9jID0gdGhpcy5vd25lckRvY3VtZW50IHx8IHRoaXMsXG5cdFx0XHRcdFx0YXR0YWNoZXMgPSBkYXRhX3ByaXYuYWNjZXNzKCBkb2MsIGZpeCApIC0gMTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHRcdGRhdGFfcHJpdi5yZW1vdmUoIGRvYywgZml4ICk7XG5cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkYXRhX3ByaXYuYWNjZXNzKCBkb2MsIGZpeCwgYXR0YWNoZXMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH0pO1xufVxuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblxuXHRvbjogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIC8qSU5URVJOQUwqLyBvbmUgKSB7XG5cdFx0dmFyIG9yaWdGbiwgdHlwZTtcblxuXHRcdC8vIFR5cGVzIGNhbiBiZSBhIG1hcCBvZiB0eXBlcy9oYW5kbGVyc1xuXHRcdGlmICggdHlwZW9mIHR5cGVzID09PSBcIm9iamVjdFwiICkge1xuXHRcdFx0Ly8gKCB0eXBlcy1PYmplY3QsIHNlbGVjdG9yLCBkYXRhIClcblx0XHRcdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0XHQvLyAoIHR5cGVzLU9iamVjdCwgZGF0YSApXG5cdFx0XHRcdGRhdGEgPSBkYXRhIHx8IHNlbGVjdG9yO1xuXHRcdFx0XHRzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XG5cdFx0XHRcdHRoaXMub24oIHR5cGUsIHNlbGVjdG9yLCBkYXRhLCB0eXBlc1sgdHlwZSBdLCBvbmUgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybi
14938B0aGlzO1xuXHRcdH1cblxuXHRcdGlmICggZGF0YSA9PSBudWxsICYmIGZuID09IG51bGwgKSB7XG5cdFx0XHQvLyAoIHR5cGVzLCBmbiApXG5cdFx0XHRmbiA9IHNlbGVjdG9yO1xuXHRcdFx0ZGF0YSA9IHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSBpZiAoIGZuID09IG51bGwgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdFx0Ly8gKCB0eXBlcywgc2VsZWN0b3IsIGZuIClcblx0XHRcdFx0Zm4gPSBkYXRhO1xuXHRcdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gKCB0eXBlcywgZGF0YSwgZm4gKVxuXHRcdFx0XHRmbiA9IGRhdGE7XG5cdFx0XHRcdGRhdGEgPSBzZWxlY3Rvcjtcblx0XHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICggZm4gPT09IGZhbHNlICkge1xuXHRcdFx0Zm4gPSByZXR1cm5GYWxzZTtcblx0XHR9IGVsc2UgaWYgKCAhZm4gKSB7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cblx0XHRpZiAoIG9uZSA9PT0gMSApIHtcblx0XHRcdG9yaWdGbiA9IGZuO1xuXHRcdFx0Zm4gPSBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdC8vIENhbiB1c2UgYW4gZW1wdHkgc2V0LCBzaW5jZSBldmVudCBjb250YWlucyB0aGUgaW5mb1xuXHRcdFx0XHRqUXVlcnkoKS5vZmYoIGV2ZW50ICk7XG5cdFx0XHRcdHJldHVybiBvcmlnRm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0fTtcblx0XHRcdC8vIFVzZSBzYW1lIGd1aWQgc28gY2FsbGVyIGNhbiByZW1vdmUgdXNpbmcgb3JpZ0ZuXG5cdFx0XHRmbi5ndWlkID0gb3JpZ0ZuLmd1aWQgfHwgKCBvcmlnRm4uZ3VpZCA9IGpRdWVyeS5ndWlkKysgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCB0eXBlcywgZm4sIGRhdGEsIHNlbGVjdG9yICk7XG5cdFx0fSk7XG5cdH0sXG5cdG9uZTogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIDEgKTtcblx0fSxcblx0b2ZmOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBmbiApIHtcblx0XHR2YXIgaGFuZGxlT2JqLCB0eXBlO1xuXHRcdGlmICggdHlwZXMgJiYgdHlwZXMucHJldmVudERlZmF1bHQgJiYgdHlwZXMuaGFuZGxlT2JqICkge1xuXHRcdFx0Ly8gKCBldmVudCApICBkaXNwYXRjaGVkIGpRdWVyeS5FdmVudFxuXHRcdFx0aGFuZGxlT2JqID0gdHlwZXMuaGFuZGxlT2JqO1xuXHRcdFx0alF1ZXJ5KCB0eXBlcy5kZWxlZ2F0ZVRhcmdldCApLm9mZihcblx0XHRcdFx0aGFuZGxlT2JqLm5hbWVzcGFjZSA/IGhhbmRsZU9iai5vcmlnVHlwZSArIFwiLlwiICsgaGFuZGxlT2JqLm5hbWVzcGFjZSA6IGhhbmRsZU9iai5vcmlnVHlwZSxcblx0XHRcdFx0aGFuZGxlT2JqLnNlbGVjdG9yLFxuXHRcdFx0XHRoYW5kbGVPYmouaGFuZGxlclxuXHRcdFx0KTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRpZiAoIHR5cGVvZiB0eXBlcyA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRcdC8vICggdHlwZXMtb2JqZWN0IFssIHNlbGVjdG9yXSApXG5cdFx0XHRmb3IgKCB0eXBlIGluIHR5cGVzICkge1xuXHRcdFx0XHR0aGlzLm9mZiggdHlwZSwgc2VsZWN0b3IsIHR5cGVzWyB0eXBlIF0gKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRpZiAoIHNlbGVjdG9yID09PSBmYWxzZSB8fCB0eXBlb2Ygc2VsZWN0b3IgPT09IFwiZnVuY3Rpb25cIiApIHtcblx0XHRcdC8vICggdHlwZXMgWywgZm5dIClcblx0XHRcdGZuID0gc2VsZWN0b3I7XG5cdFx0XHRzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0aWYgKCBmbiA9PT0gZmFsc2UgKSB7XG5cdFx0XHRmbiA9IHJldHVybkZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnJlbW92ZSggdGhpcywgdHlwZXMsIGZuLCBzZWxlY3RvciApO1xuXHRcdH0pO1xuXHR9LFxuXG5cdHRyaWdnZXI6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgdGhpcyApO1xuXHRcdH0pO1xuXHR9LFxuXHR0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIGVsZW0gPSB0aGlzWzBdO1xuXHRcdGlmICggZWxlbSApIHtcblx0XHRcdHJldHVybiBqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgZWxlbSwgdHJ1ZSApO1xuXHRcdH1cblx0fVxufSk7XG5cblxudmFyXG5cdHJ4aHRtbFRhZyA9IC88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcXHc6XSspW14+XSopXFwvPi9naSxcblx0cnRhZ05hbWUgPSAvPChbXFx3Ol0rKS8sXG5cdHJodG1sID0gLzx8JiM/XFx3KzsvLFxuXHRybm9Jbm5lcmh0bWwgPSAvPCg/OnNjcmlwdHxzdHlsZXxsaW5rKS9pLFxuXHQvLyBjaGVja2VkPVwiY2hlY2tlZFwiIG9yIGNoZWNrZWRcblx0cmNoZWNrZWQgPSAvY2hlY2tlZFxccyooPzpbXj1dfD1cXHMqLmNoZWNrZWQuKS9pLFxuXHRyc2NyaXB0VHlwZSA9IC9eJHxcXC8oPzpqYXZhfGVjbWEpc2NyaXB0L2ksXG5cdHJzY3JpcHRUeXBlTWFza2VkID0gL150cnVlXFwvKC4qKS8sXG5cdHJjbGVhblNjcmlwdCA9IC9eXFxzKjwhKD86XFxbQ0RBVEFcXFt8LS0pfCg/OlxcXVxcXXwtLSk+XFxzKiQvZyxcblxuXHQvLyBXZSBoYXZlIHRvIGNsb3NlIHRoZXNlIHRhZ3MgdG8gc3VwcG9ydCBYSFRNTCAoIzEzMjAwKVxuXHR3cmFwTWFwID0ge1xuXG5cdFx0Ly8gU3VwcG9ydDogSUU5XG5cdFx0b3B0aW9uOiBbIDEsIFwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPlwiLCBcIjwvc2VsZWN0PlwiIF0sXG5cblx0XHR0aGVhZDogWyAxLCBcIjx0YWJsZT5cIiwgXCI8L3RhYmxlPlwiIF0sXG5cdFx0Y29sOiBbIDIsIFwiPHRhYmxlPjxjb2xncm91cD5cIiwgXCI8L2NvbGdyb3VwPjwvdGFibGU+XCIgXSxcblx0XHR0cjogWyAyLCBcIjx0YWJsZT48dGJvZHk+XCIsIFwiPC90Ym9keT48L3RhYmxlPlwiIF0sXG5cdFx0dGQ6IFsgMywgXCI8dGFibGU+PHRib2R5Pjx0cj5cIiwgXCI8L3RyPjwvdGJvZHk+PC90YWJsZT5cIiBdLFxuXG5cdFx0X2RlZmF1bHQ6IFsgMCwgXCJcIiwgXCJcIiBdXG5cdH07XG5cbi8vIFN1cHBvcnQ6IElFOVxud3JhcE1hcC5vcHRncm91cCA9IHdyYXBNYXAub3B0aW9uO1xuXG53cmFwTWFwLnRib2R5ID0gd3JhcE1hcC50Zm9vdCA9IHdyYXBNYXAuY29sZ3JvdXAgPSB3cmFwTWFwLmNhcHRpb24gPSB3cmFwTWFwLnRoZWFkO1xud3JhcE1hcC50aCA9IHdyYXBNYXAudGQ7XG5cbi8vIFN1cHBvcnQ6IDEueCBjb21wYXRpYmlsaXR5XG4vLyBNYW5pcHVsYXRpbmcgdGFibGVzIHJlcXVpcmVzIGEgdGJvZHlcbmZ1bmN0aW9uIG1hbmlwdWxhdGlvblRhcmdldCggZWxlbSwgY29udGVudCApIHtcblx0cmV0dXJuIGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgXCJ0YWJsZVwiICkgJiZcblx0XHRqUXVlcnkubm9kZU5hbWUoIGNvbnRlbnQubm9kZVR5cGUgIT09IDExID8gY29udGVudCA6IGNvbnRlbnQuZmlyc3RDaGlsZCwgXCJ0clwiICkgP1xuXG5cdFx0ZWxlbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRib2R5XCIpWzBdIHx8XG5cdFx0XHRlbGVtLmFwcGVuZENoaWxkKCBlbGVtLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRib2R5XCIpICkgOlxuXHRcdGVsZW07XG59XG5cbi8vIFJlcGxhY2UvcmVzdG9yZSB0aGUgdHlwZSBhdHRyaWJ1dGUgb2Ygc2NyaXB0IGVsZW1lbnRzIGZvciBzYWZlIERPTSBtYW5pcHVsYXRpb25cbmZ1bmN0aW9uIGRpc2FibGVTY3JpcHQoIGVsZW0gKSB7XG5cdGVsZW0udHlwZSA9IChlbGVtLmdldEF0dHJpYnV0ZShcInR5cGVcIikgIT09IG51bGwpICsgXCIvXCIgKyBlbGVtLnR5cGU7XG5cdHJldHVybi
14938BlbGVtO1xufVxuZnVuY3Rpb24gcmVzdG9yZVNjcmlwdCggZWxlbSApIHtcblx0dmFyIG1hdGNoID0gcnNjcmlwdFR5cGVNYXNrZWQuZXhlYyggZWxlbS50eXBlICk7XG5cblx0aWYgKCBtYXRjaCApIHtcblx0XHRlbGVtLnR5cGUgPSBtYXRjaFsgMSBdO1xuXHR9IGVsc2Uge1xuXHRcdGVsZW0ucmVtb3ZlQXR0cmlidXRlKFwidHlwZVwiKTtcblx0fVxuXG5cdHJldHVybiBlbGVtO1xufVxuXG4vLyBNYXJrIHNjcmlwdHMgYXMgaGF2aW5nIGFscmVhZHkgYmVlbiBldmFsdWF0ZWRcbmZ1bmN0aW9uIHNldEdsb2JhbEV2YWwoIGVsZW1zLCByZWZFbGVtZW50cyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGwgPSBlbGVtcy5sZW5ndGg7XG5cblx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdGRhdGFfcHJpdi5zZXQoXG5cdFx0XHRlbGVtc1sgaSBdLCBcImdsb2JhbEV2YWxcIiwgIXJlZkVsZW1lbnRzIHx8IGRhdGFfcHJpdi5nZXQoIHJlZkVsZW1lbnRzWyBpIF0sIFwiZ2xvYmFsRXZhbFwiIClcblx0XHQpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGNsb25lQ29weUV2ZW50KCBzcmMsIGRlc3QgKSB7XG5cdHZhciBpLCBsLCB0eXBlLCBwZGF0YU9sZCwgcGRhdGFDdXIsIHVkYXRhT2xkLCB1ZGF0YUN1ciwgZXZlbnRzO1xuXG5cdGlmICggZGVzdC5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyAxLiBDb3B5IHByaXZhdGUgZGF0YTogZXZlbnRzLCBoYW5kbGVycywgZXRjLlxuXHRpZiAoIGRhdGFfcHJpdi5oYXNEYXRhKCBzcmMgKSApIHtcblx0XHRwZGF0YU9sZCA9IGRhdGFfcHJpdi5hY2Nlc3MoIHNyYyApO1xuXHRcdHBkYXRhQ3VyID0gZGF0YV9wcml2LnNldCggZGVzdCwgcGRhdGFPbGQgKTtcblx0XHRldmVudHMgPSBwZGF0YU9sZC5ldmVudHM7XG5cblx0XHRpZiAoIGV2ZW50cyApIHtcblx0XHRcdGRlbGV0ZSBwZGF0YUN1ci5oYW5kbGU7XG5cdFx0XHRwZGF0YUN1ci5ldmVudHMgPSB7fTtcblxuXHRcdFx0Zm9yICggdHlwZSBpbiBldmVudHMgKSB7XG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gZXZlbnRzWyB0eXBlIF0ubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5hZGQoIGRlc3QsIHR5cGUsIGV2ZW50c1sgdHlwZSBdWyBpIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIDIuIENvcHkgdXNlciBkYXRhXG5cdGlmICggZGF0YV91c2VyLmhhc0RhdGEoIHNyYyApICkge1xuXHRcdHVkYXRhT2xkID0gZGF0YV91c2VyLmFjY2Vzcyggc3JjICk7XG5cdFx0dWRhdGFDdXIgPSBqUXVlcnkuZXh0ZW5kKCB7fSwgdWRhdGFPbGQgKTtcblxuXHRcdGRhdGFfdXNlci5zZXQoIGRlc3QsIHVkYXRhQ3VyICk7XG5cdH1cbn1cblxuZnVuY3Rpb24gZ2V0QWxsKCBjb250ZXh0LCB0YWcgKSB7XG5cdHZhciByZXQgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lID8gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnIHx8IFwiKlwiICkgOlxuXHRcdFx0Y29udGV4dC5xdWVyeVNlbGVjdG9yQWxsID8gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKCB0YWcgfHwgXCIqXCIgKSA6XG5cdFx0XHRbXTtcblxuXHRyZXR1cm4gdGFnID09PSB1bmRlZmluZWQgfHwgdGFnICYmIGpRdWVyeS5ub2RlTmFtZSggY29udGV4dCwgdGFnICkgP1xuXHRcdGpRdWVyeS5tZXJnZSggWyBjb250ZXh0IF0sIHJldCApIDpcblx0XHRyZXQ7XG59XG5cbi8vIEZpeCBJRSBidWdzLCBzZWUgc3VwcG9ydCB0ZXN0c1xuZnVuY3Rpb24gZml4SW5wdXQoIHNyYywgZGVzdCApIHtcblx0dmFyIG5vZGVOYW1lID0gZGVzdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG5cdC8vIEZhaWxzIHRvIHBlcnNpc3QgdGhlIGNoZWNrZWQgc3RhdGUgb2YgYSBjbG9uZWQgY2hlY2tib3ggb3IgcmFkaW8gYnV0dG9uLlxuXHRpZiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgJiYgcmNoZWNrYWJsZVR5cGUudGVzdCggc3JjLnR5cGUgKSApIHtcblx0XHRkZXN0LmNoZWNrZWQgPSBzcmMuY2hlY2tlZDtcblxuXHQvLyBGYWlscyB0byByZXR1cm4gdGhlIHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZGVmYXVsdCBzZWxlY3RlZCBzdGF0ZSB3aGVuIGNsb25pbmcgb3B0aW9uc1xuXHR9IGVsc2UgaWYgKCBub2RlTmFtZSA9PT0gXCJpbnB1dFwiIHx8IG5vZGVOYW1lID09PSBcInRleHRhcmVhXCIgKSB7XG5cdFx0ZGVzdC5kZWZhdWx0VmFsdWUgPSBzcmMuZGVmYXVsdFZhbHVlO1xuXHR9XG59XG5cbmpRdWVyeS5leHRlbmQoe1xuXHRjbG9uZTogZnVuY3Rpb24oIGVsZW0sIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdHZhciBpLCBsLCBzcmNFbGVtZW50cywgZGVzdEVsZW1lbnRzLFxuXHRcdFx0Y2xvbmUgPSBlbGVtLmNsb25lTm9kZSggdHJ1ZSApLFxuXHRcdFx0aW5QYWdlID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTtcblxuXHRcdC8vIEZpeCBJRSBjbG9uaW5nIGlzc3Vlc1xuXHRcdGlmICggIXN1cHBvcnQubm9DbG9uZUNoZWNrZWQgJiYgKCBlbGVtLm5vZGVUeXBlID09PSAxIHx8IGVsZW0ubm9kZVR5cGUgPT09IDExICkgJiZcblx0XHRcdFx0IWpRdWVyeS5pc1hNTERvYyggZWxlbSApICkge1xuXG5cdFx0XHQvLyBXZSBlc2NoZXcgU2l6emxlIGhlcmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnM6IGh0dHA6Ly9qc3BlcmYuY29tL2dldGFsbC12cy1zaXp6bGUvMlxuXHRcdFx0ZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSApO1xuXHRcdFx0c3JjRWxlbWVudHMgPSBnZXRBbGwoIGVsZW0gKTtcblxuXHRcdFx0Zm9yICggaSA9IDAsIGwgPSBzcmNFbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdGZpeElucHV0KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENvcHkgdGhlIGV2ZW50cyBmcm9tIHRoZSBvcmlnaW5hbCB0byB0aGUgY2xvbmVcblx0XHRpZiAoIGRhdGFBbmRFdmVudHMgKSB7XG5cdFx0XHRpZiAoIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdFx0XHRzcmNFbGVtZW50cyA9IHNyY0VsZW1lbnRzIHx8IGdldEFsbCggZWxlbSApO1xuXHRcdFx0XHRkZXN0RWxlbWVudHMgPSBkZXN0RWxlbWVudHMgfHwgZ2V0QWxsKCBjbG9uZSApO1xuXG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gc3JjRWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdGNsb25lQ29weUV2ZW50KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjbG9uZUNvcHlFdmVudCggZWxlbSwgY2xvbmUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiB
14938oaXN0b3J5XG5cdFx0ZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSwgXCJzY3JpcHRcIiApO1xuXHRcdGlmICggZGVzdEVsZW1lbnRzLmxlbmd0aCA+IDAgKSB7XG5cdFx0XHRzZXRHbG9iYWxFdmFsKCBkZXN0RWxlbWVudHMsICFpblBhZ2UgJiYgZ2V0QWxsKCBlbGVtLCBcInNjcmlwdFwiICkgKTtcblx0XHR9XG5cblx0XHQvLyBSZXR1cm4gdGhlIGNsb25lZCBzZXRcblx0XHRyZXR1cm4gY2xvbmU7XG5cdH0sXG5cblx0YnVpbGRGcmFnbWVudDogZnVuY3Rpb24oIGVsZW1zLCBjb250ZXh0LCBzY3JpcHRzLCBzZWxlY3Rpb24gKSB7XG5cdFx0dmFyIGVsZW0sIHRtcCwgdGFnLCB3cmFwLCBjb250YWlucywgaixcblx0XHRcdGZyYWdtZW50ID0gY29udGV4dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksXG5cdFx0XHRub2RlcyA9IFtdLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsID0gZWxlbXMubGVuZ3RoO1xuXG5cdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0ZWxlbSA9IGVsZW1zWyBpIF07XG5cblx0XHRcdGlmICggZWxlbSB8fCBlbGVtID09PSAwICkge1xuXG5cdFx0XHRcdC8vIEFkZCBub2RlcyBkaXJlY3RseVxuXHRcdFx0XHRpZiAoIGpRdWVyeS50eXBlKCBlbGVtICkgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogUXRXZWJLaXQsIFBoYW50b21KU1xuXHRcdFx0XHRcdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIG5vZGVzLCBlbGVtLm5vZGVUeXBlID8gWyBlbGVtIF0gOiBlbGVtICk7XG5cblx0XHRcdFx0Ly8gQ29udmVydCBub24taHRtbCBpbnRvIGEgdGV4dCBub2RlXG5cdFx0XHRcdH0gZWxzZSBpZiAoICFyaHRtbC50ZXN0KCBlbGVtICkgKSB7XG5cdFx0XHRcdFx0bm9kZXMucHVzaCggY29udGV4dC5jcmVhdGVUZXh0Tm9kZSggZWxlbSApICk7XG5cblx0XHRcdFx0Ly8gQ29udmVydCBodG1sIGludG8gRE9NIG5vZGVzXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dG1wID0gdG1wIHx8IGZyYWdtZW50LmFwcGVuZENoaWxkKCBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikgKTtcblxuXHRcdFx0XHRcdC8vIERlc2VyaWFsaXplIGEgc3RhbmRhcmQgcmVwcmVzZW50YXRpb25cblx0XHRcdFx0XHR0YWcgPSAoIHJ0YWdOYW1lLmV4ZWMoIGVsZW0gKSB8fCBbIFwiXCIsIFwiXCIgXSApWyAxIF0udG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0XHR3cmFwID0gd3JhcE1hcFsgdGFnIF0gfHwgd3JhcE1hcC5fZGVmYXVsdDtcblx0XHRcdFx0XHR0bXAuaW5uZXJIVE1MID0gd3JhcFsgMSBdICsgZWxlbS5yZXBsYWNlKCByeGh0bWxUYWcsIFwiPCQxPjwvJDI+XCIgKSArIHdyYXBbIDIgXTtcblxuXHRcdFx0XHRcdC8vIERlc2NlbmQgdGhyb3VnaCB3cmFwcGVycyB0byB0aGUgcmlnaHQgY29udGVudFxuXHRcdFx0XHRcdGogPSB3cmFwWyAwIF07XG5cdFx0XHRcdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRcdFx0XHR0bXAgPSB0bXAubGFzdENoaWxkO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFF0V2ViS2l0LCBQaGFudG9tSlNcblx0XHRcdFx0XHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCBub2RlcywgdG1wLmNoaWxkTm9kZXMgKTtcblxuXHRcdFx0XHRcdC8vIFJlbWVtYmVyIHRoZSB0b3AtbGV2ZWwgY29udGFpbmVyXG5cdFx0XHRcdFx0dG1wID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcblxuXHRcdFx0XHRcdC8vIEVuc3VyZSB0aGUgY3JlYXRlZCBub2RlcyBhcmUgb3JwaGFuZWQgKCMxMjM5Milcblx0XHRcdFx0XHR0bXAudGV4dENvbnRlbnQgPSBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIHdyYXBwZXIgZnJvbSBmcmFnbWVudFxuXHRcdGZyYWdtZW50LnRleHRDb250ZW50ID0gXCJcIjtcblxuXHRcdGkgPSAwO1xuXHRcdHdoaWxlICggKGVsZW0gPSBub2Rlc1sgaSsrIF0pICkge1xuXG5cdFx0XHQvLyAjNDA4NyAtIElmIG9yaWdpbiBhbmQgZGVzdGluYXRpb24gZWxlbWVudHMgYXJlIHRoZSBzYW1lLCBhbmQgdGhpcyBpc1xuXHRcdFx0Ly8gdGhhdCBlbGVtZW50LCBkbyBub3QgZG8gYW55dGhpbmdcblx0XHRcdGlmICggc2VsZWN0aW9uICYmIGpRdWVyeS5pbkFycmF5KCBlbGVtLCBzZWxlY3Rpb24gKSAhPT0gLTEgKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRjb250YWlucyA9IGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICk7XG5cblx0XHRcdC8vIEFwcGVuZCB0byBmcmFnbWVudFxuXHRcdFx0dG1wID0gZ2V0QWxsKCBmcmFnbWVudC5hcHBlbmRDaGlsZCggZWxlbSApLCBcInNjcmlwdFwiICk7XG5cblx0XHRcdC8vIFByZXNlcnZlIHNjcmlwdCBldmFsdWF0aW9uIGhpc3Rvcnlcblx0XHRcdGlmICggY29udGFpbnMgKSB7XG5cdFx0XHRcdHNldEdsb2JhbEV2YWwoIHRtcCApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDYXB0dXJlIGV4ZWN1dGFibGVzXG5cdFx0XHRpZiAoIHNjcmlwdHMgKSB7XG5cdFx0XHRcdGogPSAwO1xuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gdG1wWyBqKysgXSkgKSB7XG5cdFx0XHRcdFx0aWYgKCByc2NyaXB0VHlwZS50ZXN0KCBlbGVtLnR5cGUgfHwgXCJcIiApICkge1xuXHRcdFx0XHRcdFx0c2NyaXB0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZyYWdtZW50O1xuXHR9LFxuXG5cdGNsZWFuRGF0YTogZnVuY3Rpb24oIGVsZW1zICkge1xuXHRcdHZhciBkYXRhLCBlbGVtLCB0eXBlLCBrZXksXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWwsXG5cdFx0XHRpID0gMDtcblxuXHRcdGZvciAoIDsgKGVsZW0gPSBlbGVtc1sgaSBdKSAhPT0gdW5kZWZpbmVkOyBpKysgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5hY2NlcHREYXRhKCBlbGVtICkgKSB7XG5cdFx0XHRcdGtleSA9IGVsZW1bIGRhdGFfcHJpdi5leHBhbmRvIF07XG5cblx0XHRcdFx0aWYgKCBrZXkgJiYgKGRhdGEgPSBkYXRhX3ByaXYuY2FjaGVbIGtleSBdKSApIHtcblx0XHRcdFx0XHRpZiAoIGRhdGEuZXZlbnRzICkge1xuXHRcdFx0XHRcdFx0Zm9yICggdHlwZSBpbiBkYXRhLmV2ZW50cyApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCBzcGVjaWFsWyB0eXBlIF0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnJlbW92ZSggZWxlbSwgdHlwZSApO1xuXG5cdFx0XHRcdFx0XHRcdC8vIFRoaXMgaXMgYSBzaG9ydGN1dCB0byBhdm9pZCBqUXVlcnkuZXZlbnQucmVtb3ZlJ3Mgb3ZlcmhlYWRcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGRhdGEuaGFuZGxlICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCBkYXRhX3ByaXYuY2FjaGVbIGtleSBdICkge1xuXHRcdFx0XHRcdFx0Ly8gRGlzY2FyZCBhbnkgcmVtYWluaW5nIGBwcml2YXRlYCBkYXRhXG5cdFx0XHRcdFx0XHRkZWxldGUgZGF0YV9wcml2LmNhY2hlWyBrZXkgXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIERpc2NhcmQgYW55IHJlbWFpbmluZyBgdXNlcmAgZGF0YVxuXHRcdFx0ZGVsZXRlIGRhdGFfdXNlci5jYWNoZVsgZWxlbVsgZGF0YV91c2VyLmV4cGFuZG8gXSBdO1xuXHRcdH1cblx0fVxufSk7XG5cbmpRdWVyeS5mbi5leHRlbmQoe1xuXHR0ZXh0OiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0cmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRqUXVlcnkudGV4dCggdGhpcyApIDpcblx0XHRcdFx0dGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnRleHRDb250ZW50ID0gdmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9LFxuXG5cdGFwcGVuZDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZG9tTWFuaXAoIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0dmFyIHRhcmdldCA9IG1hbmlwdWxhdGlvblRhcmdldCggdGhpcywgZWxlbSApO1xuXHRcdFx0XHR0YXJnZXQuYXBwZW5kQ2hpbGQoIGVsZW0gKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblxuXHRwcmVwZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5kb21NYW5pcCggYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHR2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0aGlzLCBlbGVtICk7XG5cdFx0XHRcdHRhcmdldC5pbnNlcnRCZWZvcmUoIGVsZW0sIHRhcmdldC5maXJzdENoaWxkICk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cblx0YmVmb3JlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5kb21NYW5pcCggYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5wYXJlbnROb2RlICkge1xuXHRcdFx0XHR0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0aGlzICk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cblx0YWZ0ZXI6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybi
14938B0aGlzLmRvbU1hbmlwKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMubmV4dFNpYmxpbmcgKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBzZWxlY3Rvciwga2VlcERhdGEgLyogSW50ZXJuYWwgVXNlIE9ubHkgKi8gKSB7XG5cdFx0dmFyIGVsZW0sXG5cdFx0XHRlbGVtcyA9IHNlbGVjdG9yID8galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIHRoaXMgKSA6IHRoaXMsXG5cdFx0XHRpID0gMDtcblxuXHRcdGZvciAoIDsgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkge1xuXHRcdFx0aWYgKCAha2VlcERhdGEgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVtICkgKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBlbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdGlmICgga2VlcERhdGEgJiYgalF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKSApIHtcblx0XHRcdFx0XHRzZXRHbG9iYWxFdmFsKCBnZXRBbGwoIGVsZW0sIFwic2NyaXB0XCIgKSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsZW0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdGVtcHR5OiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZWxlbSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyAoZWxlbSA9IHRoaXNbaV0pICE9IG51bGw7IGkrKyApIHtcblx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG1lbW9yeSBsZWFrc1xuXHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTtcblxuXHRcdFx0XHQvLyBSZW1vdmUgYW55IHJlbWFpbmluZyBub2Rlc1xuXHRcdFx0XHRlbGVtLnRleHRDb250ZW50ID0gXCJcIjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRjbG9uZTogZnVuY3Rpb24oIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdGRhdGFBbmRFdmVudHMgPSBkYXRhQW5kRXZlbnRzID09IG51bGwgPyBmYWxzZSA6IGRhdGFBbmRFdmVudHM7XG5cdFx0ZGVlcERhdGFBbmRFdmVudHMgPSBkZWVwRGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZGF0YUFuZEV2ZW50cyA6IGRlZXBEYXRhQW5kRXZlbnRzO1xuXG5cdFx0cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5jbG9uZSggdGhpcywgZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKTtcblx0XHR9KTtcblx0fSxcblxuXHRodG1sOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0dmFyIGVsZW0gPSB0aGlzWyAwIF0gfHwge30sXG5cdFx0XHRcdGkgPSAwLFxuXHRcdFx0XHRsID0gdGhpcy5sZW5ndGg7XG5cblx0XHRcdGlmICggdmFsdWUgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRyZXR1cm4gZWxlbS5pbm5lckhUTUw7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNlZSBpZiB3ZSBjYW4gdGFrZSBhIHNob3J0Y3V0IGFuZCBqdXN0IHVzZSBpbm5lckhUTUxcblx0XHRcdGlmICggdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmICFybm9Jbm5lcmh0bWwudGVzdCggdmFsdWUgKSAmJlxuXHRcdFx0XHQhd3JhcE1hcFsgKCBydGFnTmFtZS5leGVjKCB2YWx1ZSApIHx8IFsgXCJcIiwgXCJcIiBdIClbIDEgXS50b0xvd2VyQ2FzZSgpIF0gKSB7XG5cblx0XHRcdFx0dmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCByeGh0bWxUYWcsIFwiPCQxPjwvJDI+XCIgKTtcblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0XHRcdGVsZW0gPSB0aGlzWyBpIF0gfHwge307XG5cblx0XHRcdFx0XHRcdC8vIFJlbW92ZSBlbGVtZW50IG5vZGVzIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrc1xuXHRcdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTtcblx0XHRcdFx0XHRcdFx0ZWxlbS5pbm5lckhUTUwgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRlbGVtID0gMDtcblxuXHRcdFx0XHQvLyBJZiB1c2luZyBpbm5lckhUTUwgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgdXNlIHRoZSBmYWxsYmFjayBtZXRob2Rcblx0XHRcdFx0fSBjYXRjaCggZSApIHt9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggZWxlbSApIHtcblx0XHRcdFx0dGhpcy5lbXB0eSgpLmFwcGVuZCggdmFsdWUgKTtcblx0XHRcdH1cblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9LFxuXG5cdHJlcGxhY2VXaXRoOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgYXJnID0gYXJndW1lbnRzWyAwIF07XG5cblx0XHQvLyBNYWtlIHRoZSBjaGFuZ2VzLCByZXBsYWNpbmcgZWFjaCBjb250ZXh0IGVsZW1lbnQgd2l0aCB0aGUgbmV3IGNvbnRlbnRcblx0XHR0aGlzLmRvbU1hbmlwKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0YXJnID0gdGhpcy5wYXJlbnROb2RlO1xuXG5cdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIHRoaXMgKSApO1xuXG5cdFx0XHRpZiAoIGFyZyApIHtcblx0XHRcdFx0YXJnLnJlcGxhY2VDaGlsZCggZWxlbSwgdGhpcyApO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Ly8gRm9yY2UgcmVtb3ZhbCBpZiB0aGVyZSB3YXMgbm8gbmV3IGNvbnRlbnQgKGUuZy4sIGZyb20gZW1wdHkgYXJndW1lbnRzKVxuXHRcdHJldHVybiBhcmcgJiYgKGFyZy5sZW5ndGggfHwgYXJnLm5vZGVUeXBlKSA/IHRoaXMgOiB0aGlzLnJlbW92ZSgpO1xuXHR9LFxuXG5cdGRldGFjaDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybi
14938B0aGlzLnJlbW92ZSggc2VsZWN0b3IsIHRydWUgKTtcblx0fSxcblxuXHRkb21NYW5pcDogZnVuY3Rpb24oIGFyZ3MsIGNhbGxiYWNrICkge1xuXG5cdFx0Ly8gRmxhdHRlbiBhbnkgbmVzdGVkIGFycmF5c1xuXHRcdGFyZ3MgPSBjb25jYXQuYXBwbHkoIFtdLCBhcmdzICk7XG5cblx0XHR2YXIgZnJhZ21lbnQsIGZpcnN0LCBzY3JpcHRzLCBoYXNTY3JpcHRzLCBub2RlLCBkb2MsXG5cdFx0XHRpID0gMCxcblx0XHRcdGwgPSB0aGlzLmxlbmd0aCxcblx0XHRcdHNldCA9IHRoaXMsXG5cdFx0XHRpTm9DbG9uZSA9IGwgLSAxLFxuXHRcdFx0dmFsdWUgPSBhcmdzWyAwIF0sXG5cdFx0XHRpc0Z1bmN0aW9uID0galF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICk7XG5cblx0XHQvLyBXZSBjYW4ndCBjbG9uZU5vZGUgZnJhZ21lbnRzIHRoYXQgY29udGFpbiBjaGVja2VkLCBpbiBXZWJLaXRcblx0XHRpZiAoIGlzRnVuY3Rpb24gfHxcblx0XHRcdFx0KCBsID4gMSAmJiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdFx0XHQhc3VwcG9ydC5jaGVja0Nsb25lICYmIHJjaGVja2VkLnRlc3QoIHZhbHVlICkgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGluZGV4ICkge1xuXHRcdFx0XHR2YXIgc2VsZiA9IHNldC5lcSggaW5kZXggKTtcblx0XHRcdFx0aWYgKCBpc0Z1bmN0aW9uICkge1xuXHRcdFx0XHRcdGFyZ3NbIDAgXSA9IHZhbHVlLmNhbGwoIHRoaXMsIGluZGV4LCBzZWxmLmh0bWwoKSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHNlbGYuZG9tTWFuaXAoIGFyZ3MsIGNhbGxiYWNrICk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpZiAoIGwgKSB7XG5cdFx0XHRmcmFnbWVudCA9IGpRdWVyeS5idWlsZEZyYWdtZW50KCBhcmdzLCB0aGlzWyAwIF0ub3duZXJEb2N1bWVudCwgZmFsc2UsIHRoaXMgKTtcblx0XHRcdGZpcnN0ID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcblxuXHRcdFx0aWYgKCBmcmFnbWVudC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSApIHtcblx0XHRcdFx0ZnJhZ21lbnQgPSBmaXJzdDtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBmaXJzdCApIHtcblx0XHRcdFx0c2NyaXB0cyA9IGpRdWVyeS5tYXAoIGdldEFsbCggZnJhZ21lbnQsIFwic2NyaXB0XCIgKSwgZGlzYWJsZVNjcmlwdCApO1xuXHRcdFx0XHRoYXNTY3JpcHRzID0gc2NyaXB0cy5sZW5ndGg7XG5cblx0XHRcdFx0Ly8gVXNlIHRoZSBvcmlnaW5hbCBmcmFnbWVudCBmb3IgdGhlIGxhc3QgaXRlbSBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBiZWNhdXNlIGl0IGNhbiBlbmQgdXBcblx0XHRcdFx0Ly8gYmVpbmcgZW1wdGllZCBpbmNvcnJlY3RseSBpbiBjZXJ0YWluIHNpdHVhdGlvbnMgKCM4MDcwKS5cblx0XHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdG5vZGUgPSBmcmFnbWVudDtcblxuXHRcdFx0XHRcdGlmICggaSAhPT0gaU5vQ2xvbmUgKSB7XG5cdFx0XHRcdFx0XHRub2RlID0galF1ZXJ5LmNsb25lKCBub2RlLCB0cnVlLCB0cnVlICk7XG5cblx0XHRcdFx0XHRcdC8vIEtlZXAgcmVmZXJlbmNlcyB0byBjbG9uZWQgc2NyaXB0cyBmb3IgbGF0ZXIgcmVzdG9yYXRpb25cblx0XHRcdFx0XHRcdGlmICggaGFzU2NyaXB0cyApIHtcblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUXRXZWJLaXRcblx0XHRcdFx0XHRcdFx0Ly8galF1ZXJ5Lm1lcmdlIGJlY2F1c2UgcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93c1xuXHRcdFx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIHNjcmlwdHMsIGdldEFsbCggbm9kZSwgXCJzY3JpcHRcIiApICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y2FsbGJhY2suY2FsbCggdGhpc1sgaSBdLCBub2Rl
14938LCBpICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIGhhc1NjcmlwdHMgKSB7XG5cdFx0XHRcdFx0ZG9jID0gc2NyaXB0c1sgc2NyaXB0cy5sZW5ndGggLSAxIF0ub3duZXJEb2N1bWVudDtcblxuXHRcdFx0XHRcdC8vIFJlZW5hYmxlIHNjcmlwdHNcblx0XHRcdFx0XHRqUXVlcnkubWFwKCBzY3JpcHRzLCByZXN0b3JlU2NyaXB0ICk7XG5cblx0XHRcdFx0XHQvLyBFdmFsdWF0ZSBleGVjdXRhYmxlIHNjcmlwdHMgb24gZmlyc3QgZG9jdW1lbnQgaW5zZXJ0aW9uXG5cdFx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBoYXNTY3JpcHRzOyBpKysgKSB7XG5cdFx0XHRcdFx0XHRub2RlID0gc2NyaXB0c1sgaSBdO1xuXHRcdFx0XHRcdFx0aWYgKCByc2NyaXB0VHlwZS50ZXN0KCBub2RlLnR5cGUgfHwgXCJcIiApICYmXG5cdFx0XHRcdFx0XHRcdCFkYXRhX3ByaXYuYWNjZXNzKCBub2RlLCBcImdsb2JhbEV2YWxcIiApICYmIGpRdWVyeS5jb250YWlucyggZG9jLCBub2RlICkgKSB7XG5cblx0XHRcdFx0XHRcdFx0aWYgKCBub2RlLnNyYyApIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBPcHRpb25hbCBBSkFYIGRlcGVuZGVuY3ksIGJ1dCB3b24ndCBydW4gc2NyaXB0cyBpZiBub3QgcHJlc2VudFxuXHRcdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5Ll9ldmFsVXJsICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0alF1ZXJ5Ll9ldmFsVXJsKCBub2RlLnNyYyApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuZ2xvYmFsRXZhbCggbm9kZS50ZXh0Q29udGVudC5yZXBsYWNlKCByY2xlYW5TY3JpcHQsIFwiXCIgKSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn0pO1xuXG5qUXVlcnkuZWFjaCh7XG5cdGFwcGVuZFRvOiBcImFwcGVuZFwiLFxuXHRwcmVwZW5kVG86IFwicHJlcGVuZFwiLFxuXHRpbnNlcnRCZWZvcmU6IFwiYmVmb3JlXCIsXG5cdGluc2VydEFmdGVyOiBcImFmdGVyXCIsXG5cdHJlcGxhY2VBbGw6IFwicmVwbGFjZVdpdGhcIlxufSwgZnVuY3Rpb24oIG5hbWUsIG9yaWdpbmFsICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgZWxlbXMsXG5cdFx0XHRyZXQgPSBbXSxcblx0XHRcdGluc2VydCA9IGpRdWVyeSggc2VsZWN0b3IgKSxcblx0XHRcdGxhc3QgPSBpbnNlcnQubGVuZ3RoIC0gMSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyBpIDw9IGxhc3Q7IGkrKyApIHtcblx0XHRcdGVsZW1zID0gaSA9PT0gbGFzdCA/IHRoaXMgOiB0aGlzLmNsb25lKCB0cnVlICk7XG5cdFx0XHRqUXVlcnkoIGluc2VydFsgaSBdIClbIG9yaWdpbmFsIF0oIGVsZW1zICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IFF0V2ViS2l0XG5cdFx0XHQvLyAuZ2V0KCkgYmVjYXVzZSBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzXG5cdFx0XHRwdXNoLmFwcGx5KCByZXQsIGVsZW1zLmdldCgpICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCByZXQgKTtcblx0fTtcbn0pO1xuXG5cbnZhciBpZnJhbWUsXG5cdGVsZW1kaXNwbGF5ID0ge307XG5cbi8qKlxuICogUmV0cmlldmUgdGhlIGFjdHVhbCBkaXNwbGF5IG9mIGEgZWxlbWVudFxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgbm9kZU5hbWUgb2YgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBkb2MgRG9jdW1lbnQgb2JqZWN0XG4gKi9cbi8vIENhbGxlZCBvbmx5IGZyb20gd2l0aGluIGRlZmF1bHREaXNwbGF5XG5mdW5jdGlvbiBhY3R1YWxEaXNwbGF5KCBuYW1lLCBkb2MgKSB7XG5cdHZhciBzdHlsZSxcblx0XHRlbGVtID0galF1ZXJ5KCBkb2MuY3JlYXRlRWxlbWVudCggbmFtZSApICkuYXBwZW5kVG8oIGRvYy5ib2R5ICksXG5cblx0XHQvLyBnZXREZWZhdWx0Q29tcHV0ZWRTdHlsZSBtaWdodCBiZSByZWxpYWJseSB1c2VkIG9ubHkgb24gYXR0YWNoZWQgZWxlbWVudFxuXHRcdGRpc3BsYXkgPSB3aW5kb3cuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUgJiYgKCBzdHlsZSA9IHdpbmRvdy5nZXREZWZhdWx0Q29tcHV0ZWRTdHlsZSggZWxlbVsgMCBdICkgKSA/XG5cblx0XHRcdC8vIFVzZSBvZiB0aGlzIG1ldGhvZCBpcyBhIHRlbXBvcmFyeSBmaXggKG1vcmUgbGlrZSBvcHRpbWl6YXRpb24pIHVudGlsIHNvbWV0aGluZyBiZXR0ZXIgY29tZXMgYWxvbmcsXG5cdFx0XHQvLyBzaW5jZSBpdCB3YXMgcmVtb3ZlZCBmcm9tIHNwZWNpZmljYXRpb24gYW5kIHN1cHBvcnRlZCBvbmx5IGluIEZGXG5cdFx0XHRzdHlsZS5kaXNwbGF5IDogalF1ZXJ5LmNzcyggZWxlbVsgMCBdLCBcImRpc3BsYXlcIiApO1xuXG5cdC8vIFdlIGRvbid0IGhhdmUgYW55IGRhdGEgc3RvcmVkIG9uIHRoZSBlbGVtZW50LFxuXHQvLyBzbyB1c2UgXCJkZXRhY2hcIiBtZXRob2QgYXMgZmFzdCB3YXkgdG8gZ2V0IHJpZCBvZiB0aGUgZWxlbWVudFxuXHRlbGVtLmRldGFjaCgpO1xuXG5cdHJldHVybiBkaXNwbGF5O1xufVxuXG4vKipcbiAqIFRyeSB0byBkZXRlcm1pbmUgdGhlIGRlZmF1bHQgZGlzcGxheSB2YWx1ZSBvZiBhbiBlbGVtZW50XG4gKiBAcGFyYW0ge1N0cmluZ30gbm9kZU5hbWVcbiAqL1xuZnVuY3Rpb24gZGVmYXVsdERpc3BsYXkoIG5vZGVOYW1lICkge1xuXHR2YXIgZG9jID0gZG9jdW1lbnQsXG5cdFx0ZGlzcGxheSA9IGVsZW1kaXNwbGF5WyBub2RlTmFtZSBdO1xuXG5cdGlmICggIWRpc3BsYXkgKSB7XG5cdFx0ZGlzcGxheSA9IGFjdHVhbERpc3BsYXkoIG5vZGVOYW1lLCBkb2MgKTtcblxuXHRcdC8vIElmIHRoZSBzaW1wbGUgd2F5IGZhaWxzLCByZWFkIGZyb20gaW5zaWRlIGFuIGlmcmFtZVxuXHRcdGlmICggZGlzcGxheSA9PT0gXCJub25lXCIgfHwgIWRpc3BsYXkgKSB7XG5cblx0XHRcdC8vIFVzZSB0aGUgYWxyZWFkeS1jcmVhdGVkIGlmcmFtZSBpZiBwb3NzaWJsZVxuXHRcdFx0aWZyYW1lID0gKGlmcmFtZSB8fCBqUXVlcnkoIFwiPGlmcmFtZSBmcmFtZWJvcmRlcj0nMCcgd2lkdGg9JzAnIGhlaWdodD0nMCcvPlwiICkpLmFwcGVuZFRvKCBkb2MuZG9jdW1lbnRFbGVtZW50ICk7XG5cblx0XHRcdC8vIEFsd2F5cyB3cml0ZSBhIG5ldyBIVE1MIHNrZWxldG9uIHNvIFdlYmtpdCBhbmQgRmlyZWZveCBkb24ndCBjaG9rZSBvbiByZXVzZVxuXHRcdFx0ZG9jID0gaWZyYW1lWyAwIF0uY29udGVudERvY3VtZW50O1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRVxuXHRcdFx0ZG9jLndyaXRlKCk7XG5cdFx0XHRkb2MuY2xvc2UoKTtcblxuXHRcdFx0ZGlzcGxheSA9IGFjdHVhbERpc3BsYXkoIG5vZGVOYW1lLCBkb2MgKTtcblx0XHRcdGlmcmFtZS5kZXRhY2goKTtcblx0XHR9XG5cblx0XHQvLyBTdG9yZSB0aGUgY29ycmVjdCBkZWZhdWx0IGRpc3BsYXlcblx0XHRlbGVtZGlzcGxheVsgbm9kZU5hbWUgXSA9IGRpc3BsYXk7XG5cdH1cblxuXHRyZXR1cm4gZGlzcGxheTtcbn1cbnZhciBybWFyZ2luID0gKC9ebWFyZ2luLyk7XG5cbnZhciBybnVtbm9ucHggPSBuZXcgUmVnRXhwKCBcIl4oXCIgKyBwbnVtICsgXCIpKD8hcHgpW2EteiVdKyRcIiwgXCJpXCIgKTtcblxudmFyIGdldFN0eWxlcyA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdC8vIFN1cHBvcnQ6IElFPD0xMSssIEZpcmVmb3g8PTMwKyAoIzE1MDk4LCAjMTQxNTApXG5cdFx0Ly8gSUUgdGhyb3dzIG9uIGVsZW1lbnRzIGNyZWF0ZWQgaW4gcG9wdXBzXG5cdFx0Ly8gRkYgbWVhbndoaWxlIHRocm93cyBvbiBmcmFtZSBlbGVtZW50cyB0aHJvdWdoIFwiZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZVwiXG5cdFx0aWYgKCBlbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcub3BlbmVyICkge1xuXHRcdFx0cmV0dXJuIGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKCBlbGVtLCBudWxsICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBlbGVtLCBudWxsICk7XG5cdH07XG5cblxuXG5mdW5jdGlvbiBjdXJDU1MoIGVsZW0sIG5hbW
14938UsIGNvbXB1dGVkICkge1xuXHR2YXIgd2lkdGgsIG1pbldpZHRoLCBtYXhXaWR0aCwgcmV0LFxuXHRcdHN0eWxlID0gZWxlbS5zdHlsZTtcblxuXHRjb21wdXRlZCA9IGNvbXB1dGVkIHx8IGdldFN0eWxlcyggZWxlbSApO1xuXG5cdC8vIFN1cHBvcnQ6IElFOVxuXHQvLyBnZXRQcm9wZXJ0eVZhbHVlIGlzIG9ubHkgbmVlZGVkIGZvciAuY3NzKCdmaWx0ZXInKSAoIzEyNTM3KVxuXHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdHJldCA9IGNvbXB1dGVkLmdldFByb3BlcnR5VmFsdWUoIG5hbWUgKSB8fCBjb21wdXRlZFsgbmFtZSBdO1xuXHR9XG5cblx0aWYgKCBjb21wdXRlZCApIHtcblxuXHRcdGlmICggcmV0ID09PSBcIlwiICYmICFqUXVlcnkuY29udGFpbnMoIGVsZW0ub3duZXJEb2N1bWVudCwgZWxlbSApICkge1xuXHRcdFx0cmV0ID0galF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gU3VwcG9ydDogaU9TIDwgNlxuXHRcdC8vIEEgdHJpYnV0ZSB0byB0aGUgXCJhd2Vzb21lIGhhY2sgYnkgRGVhbiBFZHdhcmRzXCJcblx0XHQvLyBpT1MgPCA2IChhdCBsZWFzdCkgcmV0dXJucyBwZXJjZW50YWdlIGZvciBhIGxhcmdlciBzZXQgb2YgdmFsdWVzLCBidXQgd2lkdGggc2VlbXMgdG8gYmUgcmVsaWFibHkgcGl4ZWxzXG5cdFx0Ly8gdGhpcyBpcyBhZ2FpbnN0IHRoZSBDU1NPTSBkcmFmdCBzcGVjOiBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3NvbS8jcmVzb2x2ZWQtdmFsdWVzXG5cdFx0aWYgKCBybnVtbm9ucHgudGVzdCggcmV0ICkgJiYgcm1hcmdpbi50ZXN0KCBuYW1lICkgKSB7XG5cblx0XHRcdC8vIFJlbWVtYmVyIHRoZSBvcmlnaW5hbCB2YWx1ZXNcblx0XHRcdHdpZHRoID0gc3R5bGUud2lkdGg7XG5cdFx0XHRtaW5XaWR0aCA9IHN0eWxlLm1pbldpZHRoO1xuXHRcdFx0bWF4V2lkdGggPSBzdHlsZS5tYXhXaWR0aDtcblxuXHRcdFx0Ly8gUHV0IGluIHRoZSBuZXcgdmFsdWVzIHRvIGdldCBhIGNvbXB1dGVkIHZhbHVlIG91dFxuXHRcdFx0c3R5bGUubWluV2lkdGggPSBzdHlsZS5tYXhXaWR0aCA9IHN0eWxlLndpZHRoID0gcmV0O1xuXHRcdFx0cmV0ID0gY29tcHV0ZWQud2lkdGg7XG5cblx0XHRcdC8vIFJldmVydCB0aGUgY2hhbmdlZCB2YWx1ZXNcblx0XHRcdHN0eWxlLndpZHRoID0gd2lkdGg7XG5cdFx0XHRzdHlsZS5taW5XaWR0aCA9IG1pbldpZHRoO1xuXHRcdFx0c3R5bGUubWF4V2lkdGggPSBtYXhXaWR0aDtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmV0ICE9PSB1bmRlZmluZWQgP1xuXHRcdC8vIFN1cHBvcnQ6IElFXG5cdFx0Ly8gSUUgcmV0dXJucyB6SW5kZXggdmFsdWUgYXMgYW4gaW50ZWdlci5cblx0XHRyZXQgKyBcIlwiIDpcblx0XHRyZXQ7XG59XG5cblxuZnVuY3Rpb24gYWRkR2V0SG9va0lmKCBjb25kaXRpb25GbiwgaG9va0ZuICkge1xuXHQvLyBEZWZpbmUgdGhlIGhvb2ssIHdlJ2xsIGNoZWNrIG9uIHRoZSBmaXJzdCBydW4gaWYgaXQncyByZWFsbHkgbmVlZGVkLlxuXHRyZXR1cm4ge1xuXHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIGNvbmRpdGlvbkZuKCkgKSB7XG5cdFx0XHRcdC8vIEhvb2sgbm90IG5lZWRlZCAob3IgaXQncyBub3QgcG9zc2libGUgdG8gdXNlIGl0IGR1ZVxuXHRcdFx0XHQvLyB0byBtaXNzaW5nIGRlcGVuZGVuY3kpLCByZW1vdmUgaXQuXG5cdFx0XHRcdGRlbGV0ZSB0aGlzLmdldDtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBIb29rIG5lZWRlZDsgcmVkZWZpbmUgaXQgc28gdGhhdCB0aGUgc3VwcG9ydCB0ZXN0IGlzIG5vdCBleGVjdXRlZCBhZ2Fpbi5cblx0XHRcdHJldHVybiAodGhpcy5nZXQgPSBob29rRm4pLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR9XG5cdH07XG59XG5cblxuKGZ1bmN0aW9uKCkge1xuXHR2YXIgcGl4ZWxQb3NpdGlvblZhbCwgYm94U2l6aW5nUmVsaWFibGVWYWwsXG5cdFx0ZG9jRWxlbSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxcblx0XHRjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICksXG5cdFx0ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApO1xuXG5cdGlmICggIWRpdi5zdHlsZSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBJRTktMTErXG5cdC8vIFN0eWxlIG9mIGNsb25lZCBlbGVtZW50IGFmZmVjdHMgc291cmNlIGVsZW1lbnQgY2xvbmVkICgjODkwOClcblx0ZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID0gXCJjb250ZW50LWJveFwiO1xuXHRkaXYuY2xvbmVOb2RlKCB0cnVlICkuc3R5bGUuYmFja2dyb3VuZENsaXAgPSBcIlwiO1xuXHRzdXBwb3J0LmNsZWFyQ2xvbmVTdHlsZSA9IGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9PT0gXCJjb250ZW50LWJveFwiO1xuXG5cdGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gXCJib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweDttYXJnaW4tdG9wOjFweDtcIiArXG5cdFx0XCJwb3NpdGlvbjphYnNvbHV0ZVwiO1xuXHRjb250YWluZXIuYXBwZW5kQ2hpbGQoIGRpdiApO1xuXG5cdC8vIEV4ZWN1dGluZyBib3RoIHBpeGVsUG9zaXRpb24gJiBib3hTaXppbmdSZWxpYWJsZSB0ZXN0cyByZXF1aXJlIG9ubHkgb25lIGxheW91dFxuXHQvLyBzbyB0aGV5J3JlIGV4ZWN1dGVkIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSB0aGUgc2Vjb25kIGNvbXB1dGF0aW9uLlxuXHRmdW5jdGlvbiBjb21wdXRlUGl4ZWxQb3NpdGlvbkFuZEJveFNpemluZ1JlbGlhYmxlKCkge1xuXHRcdGRpdi5zdHlsZS5jc3NUZXh0ID1cblx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3g8MjksIEFuZHJvaWQgMi4zXG5cdFx0XHQvLyBWZW5kb3ItcHJlZml4IGJveC1zaXppbmdcblx0XHRcdFwiLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7XCIgK1xuXHRcdFx0XCJib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjElO3RvcDoxJTtcIiArXG5cdFx0XHRcImJvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NHB4O3Bvc2l0aW9uOmFic29sdXRlXCI7XG5cdFx0ZGl2LmlubmVySFRNTCA9IFwiXCI7XG5cdFx0ZG9jRWxlbS5hcHBlbmRDaGlsZCggY29udGFpbmVyICk7XG5cblx0XHR2YXIgZGl2U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggZGl2LCBudWxsICk7XG5cdFx0cGl4ZWxQb3NpdGlvblZhbCA9IGRpdlN0eWxlLnRvcCAhPT0gXCIxJVwiO1xuXHRcdGJveFNpemluZ1JlbGlhYmxlVmFsID0gZGl2U3R5bGUud2lkdGggPT09IFwiNHB4XCI7XG5cblx0XHRkb2NFbGVtLnJlbW92ZUNoaWxkKCBjb250YWluZXIgKTtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IG5vZGUuanMganNkb21cblx0Ly8gRG9uJ3QgYXNzdW1lIHRoYXQgZ2V0Q29tcHV0ZWRTdHlsZSBpcyBhIHByb3BlcnR5IG9mIHRoZSBnbG9iYWwgb2JqZWN0XG5cdGlmICggd2luZG93LmdldENvbXB1dGVkU3R5bGUgKSB7XG5cdFx0alF1ZXJ5LmV4dGVuZCggc3VwcG9ydCwge1xuXHRcdFx0cGl4ZWxQb3NpdGlvbjogZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0Ly8gVGhpcyB0ZXN0IGlzIGV4ZWN1dGVkIG9ubHkgb25jZSBidXQgd2Ug
14938c3RpbGwgZG8gbWVtb2l6aW5nXG5cdFx0XHRcdC8vIHNpbmNlIHdlIGNhbiB1c2UgdGhlIGJveFNpemluZ1JlbGlhYmxlIHByZS1jb21wdXRpbmcuXG5cdFx0XHRcdC8vIE5vIG5lZWQgdG8gY2hlY2sgaWYgdGhlIHRlc3Qgd2FzIGFscmVhZHkgcGVyZm9ybWVkLCB0aG91Z2guXG5cdFx0XHRcdGNvbXB1dGVQaXhlbFBvc2l0aW9uQW5kQm94U2l6aW5nUmVsaWFibGUoKTtcblx0XHRcdFx0cmV0dXJuIHBpeGVsUG9zaXRpb25WYWw7XG5cdFx0XHR9LFxuXHRcdFx0Ym94U2l6aW5nUmVsaWFibGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGJveFNpemluZ1JlbGlhYmxlVmFsID09IG51bGwgKSB7XG5cdFx0XHRcdFx0Y29tcHV0ZVBpeGVsUG9zaXRpb25BbmRCb3hTaXppbmdSZWxpYWJsZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBib3hTaXppbmdSZWxpYWJsZVZhbDtcblx0XHRcdH0sXG5cdFx0XHRyZWxpYWJsZU1hcmdpblJpZ2h0OiBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDIuM1xuXHRcdFx0XHQvLyBDaGVjayBpZiBkaXYgd2l0aCBleHBsaWNpdCB3aWR0aCBhbmQgbm8gbWFyZ2luLXJpZ2h0IGluY29ycmVjdGx5XG5cdFx0XHRcdC8vIGdldHMgY29tcHV0ZWQgbWFyZ2luLXJpZ2h0IGJhc2VkIG9uIHdpZHRoIG9mIGNvbnRhaW5lci4gKCMzMzMzKVxuXHRcdFx0XHQvLyBXZWJLaXQgQnVnIDEzMzQzIC0gZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHdyb25nIHZhbHVlIGZvciBtYXJnaW4tcmlnaHRcblx0XHRcdFx0Ly8gVGhpcyBzdXBwb3J0IGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgb25jZSBzbyBubyBtZW1vaXppbmcgaXMgbmVlZGVkLlxuXHRcdFx0XHR2YXIgcmV0LFxuXHRcdFx0XHRcdG1hcmdpbkRpdiA9IGRpdi5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApICk7XG5cblx0XHRcdFx0Ly8gUmVzZXQgQ1NTOiBib3gtc2l6aW5nOyBkaXNwbGF5OyBtYXJnaW47IGJvcmRlcjsgcGFkZGluZ1xuXHRcdFx0XHRtYXJnaW5EaXYuc3R5bGUuY3NzVGV4dCA9IGRpdi5zdHlsZS5jc3NUZXh0ID1cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBGaXJlZm94PDI5LCBBbmRyb2lkIDIuM1xuXHRcdFx0XHRcdC8vIFZlbmRvci1wcmVmaXggYm94LXNpemluZ1xuXHRcdFx0XHRcdFwiLXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtcIiArXG5cdFx0XHRcdFx0XCJib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzowXCI7XG5cdFx0XHRcdG1hcmdpbkRpdi5zdHlsZS5tYXJnaW5SaWdodCA9IG1hcmdpbkRpdi5zdHlsZS53aWR0aCA9IFwiMFwiO1xuXHRcdFx0XHRkaXYuc3R5bGUud2lkdGggPSBcIjFweFwiO1xuXHRcdFx0XHRkb2NFbGVtLmFwcGVuZENoaWxkKCBjb250YWluZXIgKTtcblxuXHRcdFx0XHRyZXQgPSAhcGFyc2VGbG9hdCggd2luZG93LmdldENvbXB1dGVkU3R5bGUoIG1hcmdpbkRpdiwgbnVsbCApLm1hcmdpblJpZ2h0ICk7XG5cblx0XHRcdFx0ZG9jRWxlbS5yZW1vdmVDaGlsZCggY29udGFpbmVyICk7XG5cdFx0XHRcdGRpdi5yZW1vdmVDaGlsZCggbWFyZ2luRGl2ICk7XG5cblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufSkoKTtcblxuXG4vLyBBIG1ldGhvZCBmb3IgcXVpY2tseSBzd2FwcGluZyBpbi9vdXQgQ1NTIHByb3BlcnRpZXMgdG8gZ2V0IGNvcnJlY3QgY2FsY3VsYXRpb25zLlxualF1ZXJ5LnN3YXAgPSBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgY2FsbGJhY2ssIGFyZ3MgKSB7XG5cdHZhciByZXQsIG5hbWUsXG5cdFx0b2xkID0ge307XG5cblx0Ly8gUmVtZW1iZXIgdGhlIG9sZCB2YWx1ZXMsIGFuZCBpbnNlcnQgdGhlIG5ldyBvbmVzXG5cdGZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHtcblx0XHRvbGRbIG5hbWUgXSA9IGVsZW0uc3R5bGVbIG5hbWUgXTtcblx0XHRlbGVtLnN0eWxlWyBuYW1lIF0gPSBvcHRpb25zWyBuYW1lIF07XG5cdH1cblxuXHRyZXQgPSBjYWxsYmFjay5hcHBseSggZWxlbSwgYXJncyB8fCBbXSApO1xuXG5cdC8vIFJldmVydCB0aGUgb2xkIHZhbHVlc1xuXHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0ZWxlbS5zdHlsZVsgbmFtZSBdID0gb2xkWyBuYW1lIF07XG5cdH1cblxuXHRyZXR1cm4gcmV0O1xufTtcblxuXG52YXJcblx0Ly8gU3dhcHBhYmxlIGlmIGRpc3BsYXkgaXMgbm9uZSBvciBzdGFydHMgd2l0aCB0YWJsZSBleGNlcHQgXCJ0YWJsZVwiLCBcInRhYmxlLWNlbGxcIiwgb3IgXCJ0YWJsZS1jYXB0aW9uXCJcblx0Ly8gU2VlIGhlcmUgZm9yIGRpc3BsYXkgdmFsdWVzOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUy9kaXNwbGF5XG5cdHJkaXNwbGF5c3dhcCA9IC9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxcblx0cm51bXNwbGl0ID0gbmV3IFJlZ0V4cCggXCJeKFwiICsgcG51bSArIFwiKSguKikkXCIsIFwiaVwiICksXG5cdHJyZWxOdW0gPSBuZXcgUmVnRXhwKCBcIl4oWystXSk9KFwiICsgcG51bSArIFwiKVwiLCBcImlcIiApLFxuXG5cdGNzc1Nob3cgPSB7IHBvc2l0aW9uOiBcImFic29sdXRlXCIsIHZpc2liaWxpdHk6IFwiaGlkZGVuXCIsIGRpc3BsYXk6IFwiYmxvY2tcIiB9LFxuXHRjc3NOb3JtYWxUcmFuc2Zvcm0gPSB7XG5cdFx0bGV0dG
14938VyU3BhY2luZzogXCIwXCIsXG5cdFx0Zm9udFdlaWdodDogXCI0MDBcIlxuXHR9LFxuXG5cdGNzc1ByZWZpeGVzID0gWyBcIldlYmtpdFwiLCBcIk9cIiwgXCJNb3pcIiwgXCJtc1wiIF07XG5cbi8vIFJldHVybiBhIGNzcyBwcm9wZXJ0eSBtYXBwZWQgdG8gYSBwb3RlbnRpYWxseSB2ZW5kb3IgcHJlZml4ZWQgcHJvcGVydHlcbmZ1bmN0aW9uIHZlbmRvclByb3BOYW1lKCBzdHlsZSwgbmFtZSApIHtcblxuXHQvLyBTaG9ydGN1dCBmb3IgbmFtZXMgdGhhdCBhcmUgbm90IHZlbmRvciBwcmVmaXhlZFxuXHRpZiAoIG5hbWUgaW4gc3R5bGUgKSB7XG5cdFx0cmV0dXJuIG5hbWU7XG5cdH1cblxuXHQvLyBDaGVjayBmb3IgdmVuZG9yIHByZWZpeGVkIG5hbWVzXG5cdHZhciBjYXBOYW1lID0gbmFtZVswXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKSxcblx0XHRvcmlnTmFtZSA9IG5hbWUsXG5cdFx0aSA9IGNzc1ByZWZpeGVzLmxlbmd0aDtcblxuXHR3aGlsZSAoIGktLSApIHtcblx0XHRuYW1lID0gY3NzUHJlZml4ZXNbIGkgXSArIGNhcE5hbWU7XG5cdFx0aWYgKCBuYW1lIGluIHN0eWxlICkge1xuXHRcdFx0cmV0dXJuIG5hbWU7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG9yaWdOYW1lO1xufVxuXG5mdW5jdGlvbiBzZXRQb3NpdGl2ZU51bWJlciggZWxlbSwgdmFsdWUsIHN1YnRyYWN0ICkge1xuXHR2YXIgbWF0Y2hlcyA9IHJudW1zcGxpdC5leGVjKCB2YWx1ZSApO1xuXHRyZXR1cm4gbWF0Y2hlcyA/XG5cdFx0Ly8gR3VhcmQgYWdhaW5zdCB1bmRlZmluZWQgXCJzdWJ0cmFjdFwiLCBlLmcuLCB3aGVuIHVzZWQgYXMgaW4gY3NzSG9va3Ncblx0XHRNYXRoLm1heCggMCwgbWF0Y2hlc1sgMSBdIC0gKCBzdWJ0cmFjdCB8fCAwICkgKSArICggbWF0Y2hlc1sgMiBdIHx8IFwicHhcIiApIDpcblx0XHR2YWx1ZTtcbn1cblxuZnVuY3Rpb24gYXVnbWVudFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhLCBpc0JvcmRlckJveCwgc3R5bGVzICkge1xuXHR2YXIgaSA9IGV4dHJhID09PSAoIGlzQm9yZGVyQm94ID8gXCJib3JkZXJcIiA6IFwiY29udGVudFwiICkgP1xuXHRcdC8vIElmIHdlIGFscmVhZHkgaGF2ZSB0aGUgcmlnaHQgbWVhc3VyZW1lbnQsIGF2b2lkIGF1Z21lbnRhdGlvblxuXHRcdDQgOlxuXHRcdC8vIE90aGVyd2lzZSBpbml0aWFsaXplIGZvciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIHByb3BlcnRpZXNcblx0XHRuYW1lID09PSBcIndpZHRoXCIgPyAxIDogMCxcblxuXHRcdHZhbCA9IDA7XG5cblx0Zm9yICggOyBpIDwgNDsgaSArPSAyICkge1xuXHRcdC8vIEJvdGggYm94IG1vZGVscyBleGNsdWRlIG1hcmdpbiwgc28gYWRkIGl0IGlmIHdlIHdhbnQgaXRcblx0XHRpZiAoIGV4dHJhID09PSBcIm1hcmdpblwiICkge1xuXHRcdFx0dmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sIGV4dHJhICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXHRcdH1cblxuXHRcdGlmICggaXNCb3JkZXJCb3ggKSB7XG5cdFx0XHQvLyBib3JkZXItYm94IGluY2x1ZGVzIHBhZGRpbmcsIHNvIHJlbW92ZSBpdCBpZiB3ZSB3YW50IGNvbnRlbnRcblx0XHRcdGlmICggZXh0cmEgPT09IFwiY29udGVudFwiICkge1xuXHRcdFx0XHR2YWwgLT0galF1ZXJ5LmNzcyggZWxlbSwgXCJwYWRkaW5nXCIgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEF0IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGJvcmRlciBub3IgbWFyZ2luLCBzbyByZW1vdmUgYm9yZGVyXG5cdFx0XHRpZiAoIGV4dHJhICE9PSBcIm1hcmdpblwiICkge1xuXHRcdFx0XHR2YWwgLT0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3JkZXJcIiArIGNzc0V4cGFuZFsgaSBdICsgXCJXaWR0aFwiLCB0cnVlLCBzdHlsZXMgKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gQXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgY29udGVudCwgc28gYWRkIHBhZGRpbmdcblx0XHRcdHZhbCArPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBhZGRpbmdcIiArIGNzc0V4cGFuZFsgaSBdLCB0cnVlLCBzdHlsZXMgKTtcblxuXHRcdFx0Ly8gQXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgY29udGVudCBub3IgcGFkZGluZywgc28gYWRkIGJvcmRlclxuXHRcdFx0aWYgKCBleHRyYSAhPT0gXCJwYWRkaW5nXCIgKSB7XG5cdFx0XHRcdHZhbCArPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJvcmRlclwiICsgY3NzRXhwYW5kWyBpIF0gKyBcIldpZHRoXCIsIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB2YWw7XG59XG5cbmZ1bmN0aW9uIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICkge1xuXG5cdC8vIFN0YXJ0IHdpdGggb2Zmc2V0IHByb3BlcnR5LCB3aGljaCBpcyBlcXVpdmFsZW50IHRvIHRoZSBib3JkZXItYm94IHZhbHVlXG5cdHZhciB2YWx1ZUlzQm9yZGVyQm94ID0gdHJ1ZSxcblx0XHR2YWwgPSBuYW1lID09PSBcIndpZHRoXCIgPyBlbGVtLm9mZnNldFdpZHRoIDogZWxlbS5vZmZzZXRIZWlnaHQsXG5cdFx0c3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksXG5cdFx0aXNCb3JkZXJCb3ggPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJveFNpemluZ1wiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiYm9yZGVyLWJveFwiO1xuXG5cdC8vIFNvbWUgbm9uLWh0bWwgZWxlbWVudHMgcmV0dXJuIHVuZGVmaW5lZCBmb3Igb2Zmc2V0V2lkdGgsIHNvIGNoZWNrIGZvciBudWxsL3VuZGVmaW5lZFxuXHQvLyBzdmcgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02NDkyODVcblx0Ly8gTWF0aE1MIC0gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkxNjY4XG5cdGlmICggdmFsIDw9IDAgfHwgdmFsID09IG51bGwgKSB7XG5cdFx0Ly8gRmFsbCBiYWNrIHRvIGNvbXB1dGVkIHRoZW4gdW5jb21wdXRlZCBjc3MgaWYgbmVjZXNzYXJ5XG5cdFx0dmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTtcblx0XHRpZiAoIHZhbCA8IDAgfHwgdmFsID09IG51bGwgKSB7XG5cdFx0XHR2YWwgPSBlbGVtLnN0eWxlWyBuYW1lIF0
149387XG5cdFx0fVxuXG5cdFx0Ly8gQ29tcHV0ZWQgdW5pdCBpcyBub3QgcGl4ZWxzLiBTdG9wIGhlcmUgYW5kIHJldHVybi5cblx0XHRpZiAoIHJudW1ub25weC50ZXN0KHZhbCkgKSB7XG5cdFx0XHRyZXR1cm4gdmFsO1xuXHRcdH1cblxuXHRcdC8vIENoZWNrIGZvciBzdHlsZSBpbiBjYXNlIGEgYnJvd3NlciB3aGljaCByZXR1cm5zIHVucmVsaWFibGUgdmFsdWVzXG5cdFx0Ly8gZm9yIGdldENvbXB1dGVkU3R5bGUgc2lsZW50bHkgZmFsbHMgYmFjayB0byB0aGUgcmVsaWFibGUgZWxlbS5zdHlsZVxuXHRcdHZhbHVlSXNCb3JkZXJCb3ggPSBpc0JvcmRlckJveCAmJlxuXHRcdFx0KCBzdXBwb3J0LmJveFNpemluZ1JlbGlhYmxlKCkgfHwgdmFsID09PSBlbGVtLnN0eWxlWyBuYW1lIF0gKTtcblxuXHRcdC8vIE5vcm1hbGl6ZSBcIlwiLCBhdXRvLCBhbmQgcHJlcGFyZSBmb3IgZXh0cmFcblx0XHR2YWwgPSBwYXJzZUZsb2F0KCB2YWwgKSB8fCAwO1xuXHR9XG5cblx0Ly8gVXNlIHRoZSBhY3RpdmUgYm94LXNpemluZyBtb2RlbCB0byBhZGQvc3VidHJhY3QgaXJyZWxldmFudCBzdHlsZXNcblx0cmV0dXJuICggdmFsICtcblx0XHRhdWdtZW50V2lkdGhPckhlaWdodChcblx0XHRcdGVsZW0sXG5cdFx0XHRuYW1lLFxuXHRcdFx0ZXh0cmEgfHwgKCBpc0JvcmRlckJveCA/IFwiYm9yZGVyXCIgOiBcImNvbnRlbnRcIiApLFxuXHRcdFx0dmFsdWVJc0JvcmRlckJveCxcblx0XHRcdHN0eWxlc1xuXHRcdClcblx0KSArIFwicHhcIjtcbn1cblxuZnVuY3Rpb24gc2hvd0hpZGUoIGVsZW1lbnRzLCBzaG93ICkge1xuXHR2YXIgZGlzcGxheSwgZWxlbSwgaGlkZGVuLFxuXHRcdHZhbHVlcyA9IFtdLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7XG5cblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRlbGVtID0gZWxlbWVudHNbIGluZGV4IF07XG5cdFx0aWYgKCAhZWxlbS5zdHlsZSApIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdHZhbHVlc1sgaW5kZXggXSA9IGRhdGFfcHJpdi5nZXQoIGVsZW0sIFwib2xkZGlzcGxheVwiICk7XG5cdFx0ZGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheTtcblx0XHRpZiAoIHNob3cgKSB7XG5cdFx0XHQvLyBSZXNldCB0aGUgaW5saW5lIGRpc3BsYXkgb2YgdGhpcyBlbGVtZW50IHRvIGxlYXJuIGlmIGl0IGlzXG5cdFx0XHQvLyBiZWluZyBoaWRkZW4gYnkgY2FzY2FkZWQgcnVsZXMgb3Igbm90XG5cdFx0XHRpZiAoICF2YWx1ZXNbIGluZGV4IF0gJiYgZGlzcGxheSA9PT0gXCJub25lXCIgKSB7XG5cdFx0XHRcdGVsZW0uc3R5bGUuZGlzcGxheSA9IFwiXCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNldCBlbGVtZW50cyB3aGljaCBoYXZlIGJlZW4gb3ZlcnJpZGRlbiB3aXRoIGRpc3BsYXk6IG5vbmVcblx0XHRcdC8vIGluIGEgc3R5bGVzaGVldCB0byB3aGF0ZXZlciB0aGUgZGVmYXVsdCBicm93c2VyIHN0eWxlIGlzXG5cdFx0XHQvLyBmb3Igc3VjaCBhbiBlbGVtZW50XG5cdFx0XHRpZiAoIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJcIiAmJiBpc0hpZGRlbiggZWxlbSApICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBkYXRhX3ByaXYuYWNjZXNzKCBlbGVtLCBcIm9sZGRpc3BsYXlcIiwgZGVmYXVsdERpc3BsYXkoZWxlbS5ub2RlTmFtZSkgKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aGlkZGVuID0gaXNIaWRkZW4oIGVsZW0gKTtcblxuXHRcdFx0aWYgKCBkaXNwbGF5ICE9PSBcIm5vbmVcIiB8fCAhaGlkZGVuICkge1xuXHRcdFx0XHRkYXRhX3ByaXYuc2V0KCBlbGVtLCBcIm9sZGRpc3BsYXlcIiwgaGlkZGVuID8gZGlzcGxheSA6IGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICkgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBTZXQgdGhlIGRpc3BsYXkgb2YgbW9zdCBvZiB0aGUgZWxlbWVudHMgaW4gYSBzZWNvbmQgbG9vcFxuXHQvLyB0byBhdm9pZCB0aGUgY29uc3RhbnQgcmVmbG93XG5cdGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0ZWxlbSA9IGVsZW1lbnRzWyBpbmRleCBdO1xuXHRcdGlmICggIWVsZW0uc3R5bGUgKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cdFx0aWYgKCAhc2hvdyB8fCBlbGVtLnN0eWxlLmRpc3BsYXkgPT09IFwibm9uZVwiIHx8IGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJcIiApIHtcblx0XHRcdGVsZW0uc3R5bGUuZGlzcGxheSA9IHNob3cgPyB2YWx1ZXNbIGluZGV4IF0gfHwgXCJcIiA6IFwibm9uZVwiO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbGVtZW50cztcbn1cblxualF1ZXJ5LmV4dGVuZCh7XG5cblx0Ly8gQWRkIGluIHN0eWxlIHByb3BlcnR5IGhvb2tzIGZvciBvdmVycmlkaW5nIHRoZSBkZWZhdWx0XG5cdC8vIGJlaGF2aW9yIG9mIGdldHRpbmcgYW5kIHNldHRpbmcgYSBzdHlsZSBwcm9wZXJ0eVxuXHRjc3NIb29rczoge1xuXHRcdG9wYWNpdHk6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkge1xuXHRcdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXG5cdFx0XHRcdFx0Ly8gV2Ugc2hvdWxkIGFsd2F5cyBnZXQgYSBudW1iZXIgYmFjayBmcm9tIG9wYWNpdHlcblx0XHRcdFx0XHR2YXIgcmV0ID0gY3VyQ1NTKCBlbGVtLCBcIm9wYWNpdHlcIiApO1xuXHRcdFx0XHRcdHJldHVybiByZXQgPT09IFwiXCIgPyBcIjFcIiA6IHJldDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHQvLyBEb24ndCBhdXRvbWF0aWNhbGx5IGFkZCBcInB4XCIgdG8gdGhlc2UgcG9zc2libHktdW5pdGxlc3MgcHJvcGVydGllc1xuXHRjc3NOdW1iZXI6IHtcblx0XHRcImNvbHVtbkNvdW50XCI6IHRydWUsXG5cdFx0XCJmaWxsT3BhY2l0eVwiOiB0cnVlLFxuXHRcdFwiZmxleEdyb3dcIjogdHJ1ZSxcblx0XHRcImZsZXhTaHJpbmtcIjogdHJ1ZSxcblx0XHRcImZvbnRXZWlnaHRcIjogdHJ1ZSxcblx0XHRcImxpbmVIZWlnaHRcIjogdHJ1ZSxcblx0XHRcIm9wYWNpdHlcIjogdHJ1ZSxcblx0XHRcIm9yZGVyXCI6IHRydWUsXG5cdFx0XCJvcnBoYW5zXCI6IHRydWUsXG5cdFx0XCJ3aWRvd3NcIjogdHJ1ZSxcblx0XHRcInpJbmRleFwiOiB0cnVlLFxuXHRcdFwiem9vbVwiOiB0cnVlXG5cdH0sXG5cblx0Ly8gQWRkIGluIHByb3BlcnRpZXMgd2hvc2UgbmFtZXMgeW91IHdpc2ggdG8gZml4IGJlZm9yZVxuXHQvLyBzZXR0aW5nIG9yIGdldHRpbmcgdGhlIHZhbHVlXG5cdGNzc1Byb3BzOiB7XG5cdFx0XCJmbG9hdFwiOiBcImNzc0Zsb2F0XCJcblx0fSxcblxuXHQvLyBHZXQgYW5kIHNldCB0aGUgc3R5bGUgcHJvcGVydHkgb24gYSBET00gTm9kZVxuXHRzdHlsZTogZnVuY3Rpb24oIGVsZW0sIG5hbW
14938UsIHZhbHVlLCBleHRyYSApIHtcblxuXHRcdC8vIERvbid0IHNldCBzdHlsZXMgb24gdGV4dCBhbmQgY29tbWVudCBub2Rlc1xuXHRcdGlmICggIWVsZW0gfHwgZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4IHx8ICFlbGVtLnN0eWxlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZVxuXHRcdHZhciByZXQsIHR5cGUsIGhvb2tzLFxuXHRcdFx0b3JpZ05hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lICksXG5cdFx0XHRzdHlsZSA9IGVsZW0uc3R5bGU7XG5cblx0XHRuYW1lID0galF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdIHx8ICggalF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdID0gdmVuZG9yUHJvcE5hbWUoIHN0eWxlLCBvcmlnTmFtZSApICk7XG5cblx0XHQvLyBHZXRzIGhvb2sgZm9yIHRoZSBwcmVmaXhlZCB2ZXJzaW9uLCB0aGVuIHVucHJlZml4ZWQgdmVyc2lvblxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdO1xuXG5cdFx0Ly8gQ2hlY2sgaWYgd2UncmUgc2V0dGluZyBhIHZhbHVlXG5cdFx0aWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0dHlwZSA9IHR5cGVvZiB2YWx1ZTtcblxuXHRcdFx0Ly8gQ29udmVydCBcIis9XCIgb3IgXCItPVwiIHRvIHJlbGF0aXZlIG51bWJlcnMgKCM3MzQ1KVxuXHRcdFx0aWYgKCB0eXBlID09PSBcInN0cmluZ1wiICYmIChyZXQgPSBycmVsTnVtLmV4ZWMoIHZhbHVlICkpICkge1xuXHRcdFx0XHR2YWx1ZSA9ICggcmV0WzFdICsgMSApICogcmV0WzJdICsgcGFyc2VGbG9hdCggalF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApICk7XG5cdFx0XHRcdC8vIEZpeGVzIGJ1ZyAjOTIzN1xuXHRcdFx0XHR0eXBlID0gXCJudW1iZXJcIjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWFrZSBzdXJlIHRoYXQgbnVsbCBhbmQgTmFOIHZhbHVlcyBhcmVuJ3Qgc2V0ICgjNzExNilcblx0XHRcdGlmICggdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSAhPT0gdmFsdWUgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgYSBudW1iZXIsIGFkZCAncHgnIHRvIHRoZSAoZXhjZXB0IGZvciBjZXJ0YWluIENTUyBwcm9wZXJ0aWVzKVxuXHRcdFx0aWYgKCB0eXBlID09PSBcIm51bWJlclwiICYmICFqUXVlcnkuY3NzTnVtYmVyWyBvcmlnTmFtZSBdICkge1xuXHRcdFx0XHR2YWx1ZSArPSBcInB4XCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOS0xMStcblx0XHRcdC8vIGJhY2tncm91bmQtKiBwcm9wcyBhZmZlY3Qgb3JpZ2luYWwgY2xvbmUncyB2YWx1ZXNcblx0XHRcdGlmICggIXN1cHBvcnQuY2xlYXJDbG9uZVN0eWxlICYmIHZhbHVlID09PSBcIlwiICYmIG5hbWUuaW5kZXhPZiggXCJiYWNrZ3JvdW5kXCIgKSA9PT0gMCApIHtcblx0XHRcdFx0c3R5bGVbIG5hbWUgXSA9IFwiaW5oZXJpdFwiO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkLCB1c2UgdGhhdCB2YWx1ZSwgb3RoZXJ3aXNlIGp1c3Qgc2V0IHRoZSBzcGVjaWZpZWQgdmFsdWVcblx0XHRcdGlmICggIWhvb2tzIHx8ICEoXCJzZXRcIiBpbiBob29rcykgfHwgKHZhbHVlID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgZXh0cmEgKSkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0c3R5bGVbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0fVxuXG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBub24tY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZVxuXHRcdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5nZXQoIGVsZW0sIGZhbHNlLCBleHRyYSApKSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPdGhlcndpc2UganVzdCBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIHN0eWxlIG9iamVjdFxuXHRcdFx0cmV0dXJuIHN0eWxlWyBuYW1lIF07XG5cdFx0fVxuXHR9LFxuXG5cdGNzczogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGV4dHJhLCBzdHlsZXMgKSB7XG5cdFx0dmFyIHZhbCwgbnVtLCBob29rcyxcblx0XHRcdG9yaWdOYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lXG5cdFx0bmFtZSA9IGpRdWVyeS5jc3NQcm9wc1sgb3JpZ05hbWUgXSB8fCAoIGpRdWVyeS5jc3NQcm9wc1sgb3JpZ05hbWUgXSA9IHZlbmRvclByb3BOYW1lKCBlbGVtLnN0eWxlLCBvcmlnTmFtZSApICk7XG5cblx0XHQvLyBUcnkgcHJlZml4ZWQgbmFtZSBmb2xsb3dlZCBieSB0aGUgdW5wcmVmaXhlZCBuYW1lXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXSB8fCBqUXVlcnkuY3NzSG9va3NbIG9yaWdOYW1lIF07XG5cblx0XHQvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkIGdldCB0aGUgY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZVxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyApIHtcblx0XHRcdHZhbCA9IGhvb2tzLmdldCggZWxlbSwgdHJ1ZSwgZXh0cmEgKTtcblx0XHR9XG5cblx0XHQvLyBPdGhlcndpc2UsIGlmIGEgd2F5IHRvIGdldCB0aGUgY29tcHV0ZWQgdmFsdWUgZXhpc3RzLCB1c2UgdGhhdFxuXHRcdGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHR2YWwgPSBjdXJDU1MoIGVsZW0sIG5hbWUsIHN0eWxlcyApO1xuXHRcdH1cblxuXHRcdC8vIENvbnZlcnQgXCJub3JtYWxcIiB0byBjb21wdXRlZCB2YWx1ZVxuXHRcdGlmICggdmFsID09PSBcIm5vcm1hbFwiICYmIG5hbWUgaW4gY3NzTm9ybWFsVHJhbnNmb3JtICkge1xuXHRcdFx0dmFsID0gY3NzTm9ybWFsVHJhbnNmb3JtWyBuYW1lIF07XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBudW1lcmljIGlmIGZvcmNlZCBvciBhIHF1YWxpZmllciB3YXMgcHJvdmlkZWQgYW5kIHZhbCBsb29rcyBudW1lcmljXG5cdFx0aWYgKCBleHRyYSA9PT0gXCJcIiB8fCBleHRyYSApIHtcblx0XHRcdG51bSA9IHBhcnNlRmxvYXQoIHZhbCApO1xuXHRcdFx0cmV0dXJuIGV4dHJhID09PSB0cnVlIHx8IGpRdWVyeS5pc051bWVyaWMoIG51bSApID8gbnVtIHx8IDAgOiB2YWw7XG5cdFx0fVxuXHRcdHJldHVybi
14938B2YWw7XG5cdH1cbn0pO1xuXG5qUXVlcnkuZWFjaChbIFwiaGVpZ2h0XCIsIFwid2lkdGhcIiBdLCBmdW5jdGlvbiggaSwgbmFtZSApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gPSB7XG5cdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQsIGV4dHJhICkge1xuXHRcdFx0aWYgKCBjb21wdXRlZCApIHtcblxuXHRcdFx0XHQvLyBDZXJ0YWluIGVsZW1lbnRzIGNhbiBoYXZlIGRpbWVuc2lvbiBpbmZvIGlmIHdlIGludmlzaWJseSBzaG93IHRoZW1cblx0XHRcdFx0Ly8gYnV0IGl0IG11c3QgaGF2ZSBhIGN1cnJlbnQgZGlzcGxheSBzdHlsZSB0aGF0IHdvdWxkIGJlbmVmaXRcblx0XHRcdFx0cmV0dXJuIHJkaXNwbGF5c3dhcC50ZXN0KCBqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApICkgJiYgZWxlbS5vZmZzZXRXaWR0aCA9PT0gMCA/XG5cdFx0XHRcdFx0alF1ZXJ5LnN3YXAoIGVsZW0sIGNzc1Nob3csIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICk7XG5cdFx0XHRcdFx0fSkgOlxuXHRcdFx0XHRcdGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBleHRyYSApIHtcblx0XHRcdHZhciBzdHlsZXMgPSBleHRyYSAmJiBnZXRTdHlsZXMoIGVsZW0gKTtcblx0XHRcdHJldHVybiBzZXRQb3NpdGl2ZU51bWJlciggZWxlbSwgdmFsdWUsIGV4dHJhID9cblx0XHRcdFx0YXVnbWVudFdpZHRoT3JIZWlnaHQoXG5cdFx0XHRcdFx0ZWxlbSxcblx0XHRcdFx0XHRuYW1lLFxuXHRcdFx0XHRcdGV4dHJhLFxuXHRcdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIFwiYm94U2l6aW5nXCIsIGZhbHNlLCBzdHlsZXMgKSA9PT0gXCJib3JkZXItYm94XCIsXG5cdFx0XHRcdFx0c3R5bGVzXG5cdFx0XHRcdCkgOiAwXG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcbn0pO1xuXG4vLyBTdXBwb3J0OiBBbmRyb2lkIDIuM1xualF1ZXJ5LmNzc0hvb2tzLm1hcmdpblJpZ2h0ID0gYWRkR2V0SG9va0lmKCBzdXBwb3J0LnJlbGlhYmxlTWFyZ2luUmlnaHQsXG5cdGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcblx0XHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5zd2FwKCBlbGVtLCB7IFwiZGlzcGxheVwiOiBcImlubGluZS1ibG9ja1wiIH0sXG5cdFx0XHRcdGN1ckNTUywgWyBlbGVtLCBcIm1hcmdpblJpZ2h0XCIgXSApO1xuXHRcdH1cblx0fVxuKTtcblxuLy8gVGhlc2UgaG9va3MgYXJlIHVzZWQgYnkgYW5pbWF0ZSB0byBleHBhbmQgcHJvcGVydGllc1xualF1ZXJ5LmVhY2goe1xuXHRtYXJnaW46IFwiXCIsXG5cdHBhZGRpbmc6IFwiXCIsXG5cdGJvcmRlcjogXCJXaWR0aFwiXG59LCBmdW5jdGlvbiggcHJlZml4LCBzdWZmaXggKSB7XG5cdGpRdWVyeS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0gPSB7XG5cdFx0ZXhwYW5kOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgaSA9IDAsXG5cdFx0XHRcdGV4cGFuZGVkID0ge30sXG5cblx0XHRcdFx0Ly8gQXNzdW1lcyBhIHNpbmdsZSBudW1iZXIgaWYgbm90IGEgc3RyaW5nXG5cdFx0XHRcdHBhcnRzID0gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUuc3BsaXQoXCIgXCIpIDogWyB2YWx1ZSBdO1xuXG5cdFx0XHRmb3IgKCA7IGkgPCA0OyBpKysgKSB7XG5cdFx0XHRcdGV4cGFuZGVkWyBwcmVmaXggKyBjc3NFeHBhbmRbIGkgXSArIHN1ZmZpeCBdID1cblx0XHRcdFx0XHRwYXJ0c1sgaSBdIHx8IHBhcnRzWyBpIC0gMiBdIHx8IHBhcnRzWyAwIF07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBleHBhbmRlZDtcblx0XHR9XG5cdH07XG5cblx0aWYgKCAhcm1hcmdpbi50ZXN0KCBwcmVmaXggKSApIHtcblx0XHRqUXVlcnkuY3NzSG9va3NbIHByZWZpeCArIHN1ZmZpeCBdLnNldCA9IHNldFBvc2l0aXZlTnVtYmVyO1xuXHR9XG59KTtcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdGNzczogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSApIHtcblx0XHRcdHZhciBzdHlsZXMsIGxlbixcblx0XHRcdFx0bWFwID0ge30sXG5cdFx0XHRcdGkgPSAwO1xuXG5cdFx0XHRpZiAoIGpRdWVyeS5pc0FycmF5KCBuYW1lICkgKSB7XG5cdFx0XHRcdHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApO1xuXHRcdFx0XHRsZW4gPSBuYW1lLmxlbmd0aDtcblxuXHRcdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0XHRtYXBbIG5hbWVbIGkgXSBdID0galF1ZXJ5LmNzcyggZWxlbSwgbmFtZVsgaSBdLCBmYWxzZSwgc3R5bGVzICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gbWFwO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSwgdmFsdWUgKSA6XG5cdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIG5hbWUgKTtcblx0XHR9LCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fSxcblx0c2hvdzogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHNob3dIaWRlKCB0aGlzLCB0cnVlICk7XG5cdH0sXG5cdGhpZGU6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBzaG93SGlkZSggdGhpcyApO1xuXHR9LFxuXHR0b2dnbGU6IGZ1bmN0aW9uKCBzdGF0ZSApIHtcblx0XHRpZiAoIHR5cGVvZiBzdGF0ZSA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0XHRyZXR1cm4gc3RhdGUgPyB0aGlzLnNob3coKSA6IHRoaXMuaGlkZSgpO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIGlzSGlkZGVuKCB0aGlzICkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLnNob3coKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLmhpZGUoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufSk7XG5cblxuZnVuY3Rpb24gVHdlZW4oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nICkge1xuXHRyZXR1cm4gbmV3IFR3ZWVuLnByb3RvdHlwZS5pbml0KCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApO1xufVxualF1ZXJ5LlR3ZWVuID0gVHdlZW47XG5cblR3ZWVuLnByb3RvdHlwZSA9IHtcblx0Y29uc3RydWN0b3I6IFR3ZWVuLFxuXHRpbml0OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcsIHVuaXQgKSB7XG5cdFx0dGhpcy5lbGVtID0gZWxlbTtcblx0XHR0aGlzLnByb3AgPSBwcm9wO1xuXHRcdHRoaXMuZWFzaW5nID0gZWFzaW5nIHx8IFwic3dpbmdcIjtcblx0XHR0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXHRcdHRoaXMuc3RhcnQgPSB0aGlzLm5vdyA9IHRoaXMuY3VyKCk7XG5cdFx0dGhpcy5lbmQgPSBlbmQ7XG5cdFx0dGhpcy51bml0ID0gdW5pdCB8fCAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSA/IFwiXCIgOiBcInB4XCIgKTtcblx0fSxcblx0Y3VyOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgaG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRoaXMucHJvcCBdO1xuXG5cdFx0cmV0dXJuIGhvb2tzICYmIGhvb2tzLmdldCA/XG5cdFx0XHRob29rcy5nZXQoIHRoaXMgKSA6XG5cdFx0XHRUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KCB0aGlzICk7XG5cdH0sXG5cdHJ1bjogZnVuY3Rpb24oIHBlcmNlbnQgKSB7XG5cdFx0dmFyIGVhc2VkLFxuXHRcdFx0aG9va3MgPSBUd2Vlbi5wcm9wSG9va3NbIHRoaXMucHJvcCBdO1xuXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKSB7XG5cdFx0XHR0aGlzLnBvcyA9IGVhc2VkID0galF1ZXJ5LmVhc2luZ1sgdGhpcy5lYXNpbmcgXShcblx0XHRcdFx0cGVyY2VudCwgdGhpcy5vcHRpb25zLmR1cmF0aW9uICogcGVyY2VudCwgMCwgMSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnBvcyA9IGVhc2VkID0gcGVyY2VudDtcblx0XHR9XG5cdFx0dGhpcy5ub3cgPSAoIHRoaXMuZW5kIC0gdGhpcy5zdGFydCApICogZWFzZWQgKyB0aGlzLnN0YXJ0O1xuXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuc3RlcCApIHtcblx0XHRcdHRoaXMub3B0aW9ucy5zdGVwLmNhbGwoIHRoaXMuZWxlbSwgdGhpcy5ub3csIHRoaXMgKTtcblx0XHR9XG5cblx0XHRpZiAoIGhvb2tzICYmIGhvb2tzLnNldCApIHtcblx0XHRcdGhvb2tzLnNldCggdGhpcyApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KCB0aGlzICk7XG5cdFx0fVxuXHRcdHJldHVybi
14938B0aGlzO1xuXHR9XG59O1xuXG5Ud2Vlbi5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGUgPSBUd2Vlbi5wcm90b3R5cGU7XG5cblR3ZWVuLnByb3BIb29rcyA9IHtcblx0X2RlZmF1bHQ6IHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHtcblx0XHRcdHZhciByZXN1bHQ7XG5cblx0XHRcdGlmICggdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdICE9IG51bGwgJiZcblx0XHRcdFx0KCF0d2Vlbi5lbGVtLnN0eWxlIHx8IHR3ZWVuLmVsZW0uc3R5bGVbIHR3ZWVuLnByb3AgXSA9PSBudWxsKSApIHtcblx0XHRcdFx0cmV0dXJuIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUGFzc2luZyBhbiBlbXB0eSBzdHJpbmcgYXMgYSAzcmQgcGFyYW1ldGVyIHRvIC5jc3Mgd2lsbCBhdXRvbWF0aWNhbGx5XG5cdFx0XHQvLyBhdHRlbXB0IGEgcGFyc2VGbG9hdCBhbmQgZmFsbGJhY2sgdG8gYSBzdHJpbmcgaWYgdGhlIHBhcnNlIGZhaWxzLlxuXHRcdFx0Ly8gU2ltcGxlIHZhbHVlcyBzdWNoIGFzIFwiMTBweFwiIGFyZSBwYXJzZWQgdG8gRmxvYXQ7XG5cdFx0XHQvLyBjb21wbGV4IHZhbHVlcyBzdWNoIGFzIFwicm90YXRlKDFyYWQpXCIgYXJlIHJldHVybmVkIGFzLWlzLlxuXHRcdFx0cmVzdWx0ID0galF1ZXJ5LmNzcyggdHdlZW4uZWxlbSwgdHdlZW4ucHJvcCwgXCJcIiApO1xuXHRcdFx0Ly8gRW1wdHkgc3RyaW5ncywgbnVsbCwgdW5kZWZpbmVkIGFuZCBcImF1dG9cIiBhcmUgY29udmVydGVkIHRvIDAuXG5cdFx0XHRyZXR1cm4gIXJlc3VsdCB8fCByZXN1bHQgPT09IFwiYXV0b1wiID8gMCA6IHJlc3VsdDtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdFx0Ly8gVXNlIHN0ZXAgaG9vayBmb3IgYmFjayBjb21wYXQuXG5cdFx0XHQvLyBVc2UgY3NzSG9vayBpZiBpdHMgdGhlcmUuXG5cdFx0XHQvLyBVc2UgLnN0eWxlIGlmIGF2YWlsYWJsZSBhbmQgdXNlIHBsYWluIHByb3BlcnRpZXMgd2hlcmUgYXZhaWxhYmxlLlxuXHRcdFx0aWYgKCBqUXVlcnkuZnguc3RlcFsgdHdlZW4ucHJvcCBdICkge1xuXHRcdFx0XHRqUXVlcnkuZnguc3RlcFsgdHdlZW4ucHJvcCBdKCB0d2VlbiApO1xuXHRcdFx0fSBlbHNlIGlmICggdHdlZW4uZWxlbS5zdHlsZSAmJiAoIHR3ZWVuLmVsZW0uc3R5bGVbIGpRdWVyeS5jc3NQcm9wc1sgdHdlZW4ucHJvcCBdIF0gIT0gbnVsbCB8fCBqUXVlcnkuY3NzSG9va3NbIHR3ZWVuLnByb3AgXSApICkge1xuXHRcdFx0XHRqUXVlcnkuc3R5bGUoIHR3ZWVuLmVsZW0sIHR3ZWVuLnByb3AsIHR3ZWVuLm5vdyArIHR3ZWVuLnVuaXQgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdztcblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbi8vIFN1cHBvcnQ6IElFOVxuLy8gUGFuaWMgYmFzZWQgYXBwcm9hY2ggdG8gc2V0dGluZyB0aGluZ3Mgb24gZGlzY29ubmVjdGVkIG5vZGVzXG5Ud2Vlbi5wcm9wSG9va3Muc2Nyb2xsVG9wID0gVHdlZW4ucHJvcEhvb2tzLnNjcm9sbExlZnQgPSB7XG5cdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdGlmICggdHdlZW4uZWxlbS5ub2RlVHlwZSAmJiB0d2Vlbi5lbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHR0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7XG5cdFx0fVxuXHR9XG59O1xuXG5qUXVlcnkuZWFzaW5nID0ge1xuXHRsaW5lYXI6IGZ1bmN0aW9uKCBwICkge1xuXHRcdHJldHVybiBwO1xuXHR9LFxuXHRzd2luZzogZnVuY3Rpb24oIHAgKSB7XG5cdFx0cmV0dXJuIDAuNSAtIE1hdGguY29zKCBwICogTWF0aC5QSSApIC8gMjtcblx0fVxufTtcblxualF1ZXJ5LmZ4ID0gVHdlZW4ucHJvdG90eXBlLmluaXQ7XG5cbi8vIEJhY2sgQ29tcGF0IDwxLjggZXh0ZW5zaW9uIHBvaW50XG5qUXVlcnkuZnguc3RlcCA9IHt9O1xuXG5cblxuXG52YXJcblx0ZnhOb3csIHRpbWVySWQsXG5cdHJmeHR5cGVzID0gL14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLFxuXHRyZnhudW0gPSBuZXcgUmVnRXhwKCBcIl4oPzooWystXSk9fCkoXCIgKyBwbnVtICsgXCIpKFthLXolXSopJFwiLCBcImlcIiApLFxuXHRycnVuID0gL3F1ZXVlSG9va3MkLyxcblx0YW5pbWF0aW9uUHJlZmlsdGVycyA9IFsgZGVmYXVsdFByZWZpbHRlciBdLFxuXHR0d2VlbmVycyA9IHtcblx0XHRcIipcIjogWyBmdW5jdGlvbiggcHJvcCwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgdHdlZW4gPSB0aGlzLmNyZWF0ZVR3ZWVuKCBwcm9wLCB2YWx1ZSApLFxuXHRcdFx0XHR0YXJnZXQgPSB0d2Vlbi5jdXIoKSxcblx0XHRcdFx0cGFydHMgPSByZnhudW0uZXhlYyggdmFsdWUgKSxcblx0XHRcdFx0dW5pdCA9IHBhcnRzICYmIHBhcnRzWyAzIF0gfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gPyBcIlwiIDogXCJweFwiICksXG5cblx0XHRcdFx0Ly8gU3RhcnRpbmcgdmFsdWUgY29tcHV0YXRpb24gaXMgcmVxdWlyZWQgZm9yIHBvdGVudGlhbCB1bml0IG1pc21hdGNoZXNcblx0XHRcdFx0c3RhcnQgPSAoIGpRdWVyeS5jc3NOdW1iZXJbIHByb3AgXSB8fCB1bml0ICE9PSBcInB4XCIgJiYgK3RhcmdldCApICYmXG5cdFx0XHRcdFx0cmZ4bnVtLmV4ZWMoIGpRdWVyeS5jc3MoIHR3ZWVuLmVsZW0sIHByb3AgKSApLFxuXHRcdFx0XHRzY2FsZSA9IDEsXG5cdFx0XHRcdG1heEl0ZXJhdGlvbnMgPSAyMDtcblxuXHRcdFx0aWYgKCBzdGFydCAmJiBzdGFydFsgMyBdICE9PSB1bml0ICkge1xuXHRcdFx0XHQvLyBUcnVzdCB1bml0cyByZXBvcnRlZCBieSBqUXVlcnkuY3NzXG5cdFx0XHRcdHVuaXQgPSB1bml0IHx8IHN0YXJ0WyAzIF07XG5cblx0XHRcdFx0Ly8gTWFrZSBzdXJlIHdlIHVwZGF0ZSB0aGUgdHdlZW4gcHJvcGVydGllcyBsYXRlciBvblxuXHRcdFx0XHRwYXJ0cyA9IHBhcnRzIHx8IFtdO1xuXG5cdFx0XHRcdC8vIEl0ZXJhdGl2ZWx5IGFwcHJveGltYXRlIGZyb20gYSBub256ZXJvIHN0YXJ0aW5nIHBvaW50XG5cdFx0XHRcdHN0YXJ0ID0gK3RhcmdldCB8fCAxO1xuXG5cdFx0XHRcdGRvIHtcblx0XHRcdFx0XHQvLyBJZiBwcmV2aW91cyBpdGVyYXRpb24gemVyb2VkIG91dCwgZG91YmxlIHVudGlsIHdlIGdldCAqc29tZXRoaW5nKi5cblx0XHRcdFx0XHQvLyBVc2Ugc3RyaW5nIGZvciBkb3VibGluZyBzbyB3ZSBkb24ndCBhY2NpZGVudGFsbHkgc2VlIHNjYWxlIGFzIHVuY2hhbmdlZCBiZWxvd1xuXHRcdFx0XHRcdHNjYWxlID0gc2NhbGUgfHwgXCIuNVwiO1xuXG5cdFx0XHRcdFx0Ly8gQWRqdXN0IGFuZCBhcHBseVxuXHRcdFx0XHRcdHN0YXJ0ID0gc3RhcnQgLyBzY2FsZTtcblx0XHRcdFx0XHRqUXVlcnkuc3R5bGUoIHR3ZWVuLmVsZW0sIHByb3AsIHN0YXJ0ICsgdW5pdCApO1xuXG5cdFx0XHRcdC8vIFVwZGF0ZSBzY2FsZSwgdG9sZXJhdGluZyB6ZXJvIG9yIE5hTiBmcm9tIHR3ZWVuLmN1cigpLFxuXHRcdFx0XHQvLyBicmVhayB0aGUgbG9vcCBpZiBzY2FsZSBpcyB1bmNoYW5nZWQgb3IgcGVyZmVjdCwgb3IgaWYgd2UndmUganVzdCBoYWQgZW5vdWdoXG5cdFx0XHRcdH0gd2hpbGUgKCBzY2FsZSAhPT0gKHNjYWxlID0gdHdlZW4uY3VyKCkgLyB0YXJnZXQpICYmIHNjYWxlICE9PSAxICYmIC0tbWF4SXRlcmF0aW9ucyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBVcGRhdGUgdHdlZW4gcHJvcGVydGllc1xuXHRcdFx0aWYgKCBwYXJ0cyApIHtcblx0XHRcdFx0c3RhcnQgPSB0d2Vlbi5zdGFydCA9ICtzdGFydCB8fCArdGFyZ2V0IHx8IDA7XG5cdFx0XHRcdHR3ZWVuLnVuaXQgPSB1bml0O1xuXHRcdFx0XHQvLyBJZiBhICs9Ly09IHRva2VuIHdhcyBwcm92aWRlZCwgd2UncmUgZG9pbmcgYSByZWxhdGl2ZSBhbmltYXRpb25cblx0XHRcdFx0dHdlZW4uZW5kID0gcGFydHNbIDEgXSA/XG5cdFx0XHRcdFx0c3RhcnQgKyAoIHBhcnRzWyAxIF0gKyAxICkgKiBwYXJ0c1sgMiBdIDpcblx0XHRcdFx0XHQrcGFydHNbIDIgXTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdH0gXVxuXHR9O1xuXG4vLyBBbmltYXRpb25zIGNyZWF0ZWQgc3luY2hyb25vdXNseSB3aWxsIHJ1biBzeW5jaHJvbm91c2x5XG5mdW5jdGlvbiBjcmVhdGVGeE5vdygpIHtcblx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRmeE5vdyA9IHVuZGVmaW5lZDtcblx0fSk7XG5cdHJldHVybiAoIGZ4Tm93ID0galF1ZXJ5Lm5vdygpICk7XG59XG5cbi8vIEdlbmVyYXRlIHBhcmFtZXRlcnMgdG8gY3JlYXRlIGEgc3RhbmRhcmQgYW5pbWF0aW9uXG5mdW5jdGlvbiBnZW5GeCggdHlwZSwgaW5jbHVkZVdpZHR
14938oICkge1xuXHR2YXIgd2hpY2gsXG5cdFx0aSA9IDAsXG5cdFx0YXR0cnMgPSB7IGhlaWdodDogdHlwZSB9O1xuXG5cdC8vIElmIHdlIGluY2x1ZGUgd2lkdGgsIHN0ZXAgdmFsdWUgaXMgMSB0byBkbyBhbGwgY3NzRXhwYW5kIHZhbHVlcyxcblx0Ly8gb3RoZXJ3aXNlIHN0ZXAgdmFsdWUgaXMgMiB0byBza2lwIG92ZXIgTGVmdCBhbmQgUmlnaHRcblx0aW5jbHVkZVdpZHRoID0gaW5jbHVkZVdpZHRoID8gMSA6IDA7XG5cdGZvciAoIDsgaSA8IDQgOyBpICs9IDIgLSBpbmNsdWRlV2lkdGggKSB7XG5cdFx0d2hpY2ggPSBjc3NFeHBhbmRbIGkgXTtcblx0XHRhdHRyc1sgXCJtYXJnaW5cIiArIHdoaWNoIF0gPSBhdHRyc1sgXCJwYWRkaW5nXCIgKyB3aGljaCBdID0gdHlwZTtcblx0fVxuXG5cdGlmICggaW5jbHVkZVdpZHRoICkge1xuXHRcdGF0dHJzLm9wYWNpdHkgPSBhdHRycy53aWR0aCA9IHR5cGU7XG5cdH1cblxuXHRyZXR1cm4gYXR0cnM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVR3ZWVuKCB2YWx1ZSwgcHJvcCwgYW5pbWF0aW9uICkge1xuXHR2YXIgdHdlZW4sXG5cdFx0Y29sbGVjdGlvbiA9ICggdHdlZW5lcnNbIHByb3AgXSB8fCBbXSApLmNvbmNhdCggdHdlZW5lcnNbIFwiKlwiIF0gKSxcblx0XHRpbmRleCA9IDAsXG5cdFx0bGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7XG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0aWYgKCAodHdlZW4gPSBjb2xsZWN0aW9uWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgcHJvcCwgdmFsdWUgKSkgKSB7XG5cblx0XHRcdC8vIFdlJ3JlIGRvbmUgd2l0aCB0aGlzIHByb3BlcnR5XG5cdFx0XHRyZXR1cm4gdHdlZW47XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRQcmVmaWx0ZXIoIGVsZW0sIHByb3BzLCBvcHRzICkge1xuXHQvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovXG5cdHZhciBwcm9wLCB2YWx1ZSwgdG9nZ2xlLCB0d2VlbiwgaG9va3MsIG9sZGZpcmUsIGRpc3BsYXksIGNoZWNrRGlzcGxheSxcblx0XHRhbmltID0gdGhpcyxcblx0XHRvcmlnID0ge30sXG5cdFx0c3R5bGUgPSBlbGVtLnN0eWxlLFxuXHRcdGhpZGRlbiA9IGVsZW0ubm9kZVR5cGUgJiYgaXNIaWRkZW4oIGVsZW0gKSxcblx0XHRkYXRhU2hvdyA9IGRhdGFfcHJpdi5nZXQoIGVsZW0sIFwiZnhzaG93XCIgKTtcblxuXHQvLyBIYW5kbGUgcXVldWU6IGZhbHNlIHByb21pc2VzXG5cdGlmICggIW9wdHMucXVldWUgKSB7XG5cdFx0aG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0sIFwiZnhcIiApO1xuXHRcdGlmICggaG9va3MudW5xdWV1ZWQgPT0gbnVsbCApIHtcblx0XHRcdGhvb2tzLnVucXVldWVkID0gMDtcblx0XHRcdG9sZGZpcmUgPSBob29rcy5lbXB0eS5maXJlO1xuXHRcdFx0aG9va3MuZW1wdHkuZmlyZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoICFob29rcy51bnF1ZXVlZCApIHtcblx0XHRcdFx0XHRvbGRmaXJlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXHRcdGhvb2tzLnVucXVldWVkKys7XG5cblx0XHRhbmltLmFsd2F5cyhmdW5jdGlvbigpIHtcblx0XHRcdC8vIEVuc3VyZSB0aGUgY29tcGxldGUgaGFuZGxlciBpcyBjYWxsZWQgYmVmb3JlIHRoaXMgY29tcGxldGVzXG5cdFx0XHRhbmltLmFsd2F5cyhmdW5jdGlvbigpIHtcblx0XHRcdFx0aG9va3MudW5xdWV1ZWQtLTtcblx0XHRcdFx0aWYgKCAhalF1ZXJ5LnF1ZXVlKCBlbGVtLCBcImZ4XCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdFx0aG9va3MuZW1wdHkuZmlyZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdC8vIEhlaWdodC93aWR0aCBvdmVyZmxvdyBwYXNzXG5cdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoIFwiaGVpZ2h0XCIgaW4gcHJvcHMgfHwgXCJ3aWR0aFwiIGluIHByb3BzICkgKSB7XG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgbm90aGluZyBzbmVha3Mgb3V0XG5cdFx0Ly8gUmVjb3JkIGFsbCAzIG92ZXJmbG93IGF0dHJpYnV0ZXMgYmVjYXVzZSBJRTktMTAgZG8gbm90XG5cdFx0Ly8gY2hhbmdlIHRoZSBvdmVyZmxvdyBhdHRyaWJ1dGUgd2hlbiBvdmVyZmxvd1ggYW5kXG5cdFx0Ly8gb3ZlcmZsb3dZIGFyZSBzZXQgdG8gdGhlIHNhbWUgdmFsdWVcblx0XHRvcHRzLm92ZXJmbG93ID0gWyBzdHlsZS5vdmVyZmxvdywgc3R5bGUub3ZlcmZsb3dYLCBzdHlsZS5vdmVyZmxvd1kgXTtcblxuXHRcdC8vIFNldCBkaXNwbGF5IHByb3BlcnR5IHRvIGlubGluZS1ibG9jayBmb3IgaGVpZ2h0L3dpZHRoXG5cdFx0Ly8gYW5pbWF0aW9ucyBvbiBpbmxpbmUgZWxlbWVudHMgdGhhdCBhcmUgaGF2aW5nIHdpZHRoL2hlaWdodCBhbmltYXRlZFxuXHRcdGRpc3BsYXkgPSBqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApO1xuXG5cdFx0Ly8gVGVzdCBkZWZhdWx0IGRpc3BsYXkgaWYgZGlzcGxheSBpcyBjdXJyZW50bHkgXCJub25lXCJcblx0XHRjaGVja0Rpc3BsYXkgPSBkaXNwbGF5ID09PSBcIm5vbmVcIiA/XG5cdFx0XHRkYXRhX3ByaXYuZ2V0KCBlbGVtLCBcIm9sZGRpc3BsYXlcIiApIHx8IGRlZmF1bHREaXNwbGF5KCBlbGVtLm5vZGVOYW1lICkgOiBkaXNwbGF5O1xuXG5cdFx0aWYgKCBjaGVja0Rpc3BsYXkgPT09IFwiaW5saW5lXCIgJiYgalF1ZXJ5LmNzcyggZWxlbSwgXCJmbG9hdFwiICkgPT09IFwibm9uZVwiICkge1xuXHRcdFx0c3R5bGUuZGlzcGxheSA9IFwiaW5saW5lLWJsb2NrXCI7XG5cdFx0fVxuXHR9XG5cblx0aWYgKCBvcHRzLm92ZXJmbG93ICkge1xuXHRcdHN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIjtcblx0XHRhbmltLmFsd2F5cyhmdW5jdGlvbigpIHtcblx0XHRcdHN0eWxlLm92ZXJmbG93ID0gb3B0cy5vdmVyZmxvd1sgMCBdO1xuXHRcdFx0c3R5bGUub3ZlcmZsb3dYID0gb3B0cy5vdmVyZmxvd1sgMSBdO1xuXHRcdFx0c3R5bGUub3ZlcmZsb3dZID0gb3B0cy5vdmVyZmxvd1sgMiBdO1xuXHRcdH0pO1xuXHR9XG5cblx0Ly8gc2hvdy9oaWRlIHBhc3Ncblx0Zm9yICggcHJvcCBpbiBwcm9wcyApIHtcblx0XHR2YWx1ZSA9IHByb3BzWyBwcm9wIF07XG5cdFx0aWYgKCByZnh0eXBlcy5leGVjKCB2YWx1ZSApICkge1xuXHRcdFx0ZGVsZXRlIHByb3BzWyBwcm9wIF07XG5cdFx0XHR0b2dnbGUgPSB0b2dnbGUgfHwgdmFsdWUgPT09IFwidG9nZ2xlXCI7XG5cdFx0XHRpZiAoIHZhbHVlID09PSAoIGhpZGRlbiA/IFwiaGlkZVwiIDogXCJzaG93XCIgKSApIHtcblxuXHRcdFx0XHQvLyBJZiB0aGVyZSBpcyBkYXRhU2hvdyBsZWZ0IG92ZXIgZnJvbSBhIHN0b3BwZWQgaGlkZSBvciBzaG93IGFuZCB3ZSBhcmUgZ29pbmcgdG8gcHJvY2VlZCB3aXRoIHNob3csIHdlIHNob3VsZCBwcmV0ZW5kIHRvIGJlIGhpZGRlblxuXHRcdFx0XHRpZiAoIHZhbHVlID09PSBcInNob3dcIiAmJiBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0aGlkZGVuID0gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0b3JpZ1sgcHJvcCBdID0gZGF0YVNob3cgJiYgZGF0YVNob3dbIHByb3AgXSB8fCBqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AgKTtcblxuXHRcdC8vIEFueSBub24tZnggdmFsdWUgc3RvcHMgdXMgZnJvbSByZXN0b3JpbmcgdGhlIG9yaWdpbmFsIGRpc3BsYXkgdmFsdWVcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGlzcGxheSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblxuXHRpZiAoICFqUXVlcnkuaXNFbXB0eU9iamVjdCggb3JpZyApICkge1xuXHRcdGlmICggZGF0YVNob3cgKSB7XG5cdFx0XHRpZiAoIFwiaGlkZGVuXCIgaW4gZGF0YVNob3cgKSB7XG5cdFx0XHRcdGhpZGRlbiA9IGRhdGFTaG93LmhpZGRlbjtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGF0YVNob3cgPSBkYXRhX3ByaXYuYWNjZXNzKCBlbGVtLCBcImZ4c2hvd1wiLCB7fSApO1xuXHRcdH1cblxuXHRcdC8vIFN0b3JlIHN0YXRlIGlmIGl0cyB0b2dnbGUgLSBlbmFibGVzIC5zdG9wKCkudG9nZ2xlKCkgdG8gXCJyZXZlcnNlXCJcblx0XHRpZiAoIHRvZ2dsZSApIHtcblx0XHRcdGRhdGFTaG93LmhpZGRlbiA9ICFoaWRkZW47XG5cdFx0fVxuXHRcdGlmICggaGlkZGVuICkge1xuXHRcdFx0alF1ZXJ5KCBlbGVtICkuc2hvdygpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhbmltLmRvbmUoZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGpRdWVyeSggZWxlbSApLmhpZGUoKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRhbmltLmRvbmUoZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgcHJvcDtcblxuXHRcdFx0ZGF0YV9wcml2LnJlbW92ZSggZWxlbSwgXCJmeHNob3dcIiApO1xuXHRcdFx0Zm9yICggcHJvcCBpbiBvcmlnICkge1xuXHRcdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIG9yaWdbIHByb3AgXSApO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGZvciAoIHByb3AgaW4gb3JpZyApIHtcblx0XHRcdHR3ZWVuID0gY3JlYXRlVHdlZW4oIGhpZGRlbiA/IGRhdGFTaG93WyBwcm9wIF0gOiAwLCBwcm9wLCBhbmltICk7XG5cblx0XHRcdGlmICggISggcHJvcCBpbiBkYXRhU2hvdyApICkge1xuXHRcdFx0XHRkYXRhU2hvd1sgcHJvcCBdID0gdHdlZW4uc3RhcnQ7XG5cdFx0XHRcdGlmICggaGlkZGVuICkge1xuXHRcdFx0XHRcdHR3ZWVuLmVuZCA9IHR3ZWVuLnN0YXJ0O1xuXHRcdFx0XHRcdHR3ZWVuLnN0YXJ0ID0gcHJvcCA9PT0gXCJ3aWR0aFwiIHx8IHByb3AgPT09IFwiaGVpZ2h0XCIgPyAxIDogMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHQvLyBJZiB0aGlzIGlzIGEgbm9vcCBsaWtlIC5oaWRlKCkuaGlkZSgpLCByZXN0b3JlIGFuIG92ZXJ3cml0dGVuIGRpc3BsYXkgdmFsdWVcblx0fSBlbHNlIGlmICggKGRpc3BsYXkgPT09IFwibm9uZVwiID8gZGVmYXVsdERpc3BsYXkoIGVsZW0ubm9kZU5hbWUgKSA6IGRpc3BsYXkpID09PSBcImlubGluZVwiICkge1xuXHRcdHN0eWxlLmRpc3BsYXkgPSBkaXNwbGF5O1xuXHR9XG59XG5cbmZ1bmN0aW9uIHByb3BGaWx0ZXIoIHByb3BzLCBzcGVjaWFsRWFzaW5nICkge1xuXHR2YXIgaW5kZXgsIG5hbWUsIGVhc2luZywgdmFsdWUsIGhvb2tzO1xuXG5cdC8vIGNhbWVsQ2FzZSwgc3BlY2lhbEVhc2luZyBhbmQgZXhwYW5kIGNzc0hvb2sgcGFzc1xuXHRmb3IgKCBpbmRleCBpbiBwcm9wcyApIHtcblx0XHRuYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggaW5kZXggKTtcblx0XHRlYXNpbmcgPSBzcGVjaWFsRWFzaW5nWyBuYW1lIF0
149387XG5cdFx0dmFsdWUgPSBwcm9wc1sgaW5kZXggXTtcblx0XHRpZiAoIGpRdWVyeS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdFx0ZWFzaW5nID0gdmFsdWVbIDEgXTtcblx0XHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgMCBdO1xuXHRcdH1cblxuXHRcdGlmICggaW5kZXggIT09IG5hbWUgKSB7XG5cdFx0XHRwcm9wc1sgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRkZWxldGUgcHJvcHNbIGluZGV4IF07XG5cdFx0fVxuXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXTtcblx0XHRpZiAoIGhvb2tzICYmIFwiZXhwYW5kXCIgaW4gaG9va3MgKSB7XG5cdFx0XHR2YWx1ZSA9IGhvb2tzLmV4cGFuZCggdmFsdWUgKTtcblx0XHRcdGRlbGV0ZSBwcm9wc1sgbmFtZSBdO1xuXG5cdFx0XHQvLyBOb3QgcXVpdGUgJC5leHRlbmQsIHRoaXMgd29uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGtleXMuXG5cdFx0XHQvLyBSZXVzaW5nICdpbmRleCcgYmVjYXVzZSB3ZSBoYXZlIHRoZSBjb3JyZWN0IFwibmFtZVwiXG5cdFx0XHRmb3IgKCBpbmRleCBpbiB2YWx1ZSApIHtcblx0XHRcdFx0aWYgKCAhKCBpbmRleCBpbiBwcm9wcyApICkge1xuXHRcdFx0XHRcdHByb3BzWyBpbmRleCBdID0gdmFsdWVbIGluZGV4IF07XG5cdFx0XHRcdFx0c3BlY2lhbEVhc2luZ1sgaW5kZXggXSA9IGVhc2luZztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzcGVjaWFsRWFzaW5nWyBuYW1lIF0gPSBlYXNpbmc7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIEFuaW1hdGlvbiggZWxlbSwgcHJvcGVydGllcywgb3B0aW9ucyApIHtcblx0dmFyIHJlc3VsdCxcblx0XHRzdG9wcGVkLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBhbmltYXRpb25QcmVmaWx0ZXJzLmxlbmd0aCxcblx0XHRkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cdFx0XHQvLyBEb24ndCBtYXRjaCBlbGVtIGluIHRoZSA6YW5pbWF0ZWQgc2VsZWN0b3Jcblx0XHRcdGRlbGV0ZSB0aWNrLmVsZW07XG5cdFx0fSksXG5cdFx0dGljayA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCBzdG9wcGVkICkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHR2YXIgY3VycmVudFRpbWUgPSBmeE5vdyB8fCBjcmVhdGVGeE5vdygpLFxuXHRcdFx0XHRyZW1haW5pbmcgPSBNYXRoLm1heCggMCwgYW5pbWF0aW9uLnN0YXJ0VGltZSArIGFuaW1hdGlvbi5kdXJhdGlvbiAtIGN1cnJlbnRUaW1lICksXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgMi4zXG5cdFx0XHRcdC8vIEFyY2hhaWMgY3Jhc2ggYnVnIHdvbid0IGFsbG93IHVzIHRvIHVzZSBgMSAtICggMC41IHx8IDAgKWAgKCMxMjQ5Nylcblx0XHRcdFx0dGVtcCA9IHJlbWFpbmluZyAvIGFuaW1hdGlvbi5kdXJhdGlvbiB8fCAwLFxuXHRcdFx0XHRwZXJjZW50ID0gMSAtIHRlbXAsXG5cdFx0XHRcdGluZGV4ID0gMCxcblx0XHRcdFx0bGVuZ3RoID0gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGg7XG5cblx0XHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGggOyBpbmRleCsrICkge1xuXHRcdFx0XHRhbmltYXRpb24udHdlZW5zWyBpbmRleCBdLnJ1biggcGVyY2VudCApO1xuXHRcdFx0fVxuXG5cdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgcGVyY2VudCwgcmVtYWluaW5nIF0pO1xuXG5cdFx0XHRpZiAoIHBlcmNlbnQgPCAxICYmIGxlbmd0aCApIHtcblx0XHRcdFx0cmV0dXJuIHJlbWFpbmluZztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRlZmVycmVkLnJlc29sdmVXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiBdICk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGFuaW1hdGlvbiA9IGRlZmVycmVkLnByb21pc2Uoe1xuXHRcdFx0ZWxlbTogZWxlbSxcblx0XHRcdHByb3BzOiBqUXVlcnkuZXh0ZW5kKCB7fSwgcHJvcGVydGllcyApLFxuXHRcdFx0b3B0czogalF1ZXJ5LmV4dGVuZCggdHJ1ZSwgeyBzcGVjaWFsRWFzaW5nOiB7fSB9LCBvcHRpb25zICksXG5cdFx0XHRvcmlnaW5hbFByb3BlcnRpZXM6IHByb3BlcnRpZXMsXG5cdFx0XHRvcmlnaW5hbE9wdGlvbnM6IG9wdGlvbnMsXG5cdFx0XHRzdGFydFRpbWU6IGZ4Tm93IHx8IGNyZWF0ZUZ4Tm93KCksXG5cdFx0XHRkdXJhdGlvbjogb3B0aW9ucy5kdXJhdGlvbixcblx0XHRcdHR3ZWVuczogW10sXG5cdFx0XHRjcmVhdGVUd2VlbjogZnVuY3Rpb24oIHByb3AsIGVuZCApIHtcblx0XHRcdFx0dmFyIHR3ZWVuID0galF1ZXJ5LlR3ZWVuKCBlbGVtLCBhbmltYXRpb24ub3B0cywgcHJvcCwgZW5kLFxuXHRcdFx0XHRcdFx0YW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZ1sgcHJvcCBdIHx8IGFuaW1hdGlvbi5vcHRzLmVhc2luZyApO1xuXHRcdFx0XHRhbmltYXRpb24udHdlZW5zLnB1c2goIHR3ZWVuICk7XG5cdFx0XHRcdHJldHVybiB0d2Vlbjtcblx0XHRcdH0sXG5cdFx0XHRzdG9wOiBmdW5jdGlvbiggZ290b0VuZCApIHtcblx0XHRcdFx0dmFyIGluZGV4ID0gMCxcblx0XHRcdFx0XHQvLyBJZiB3ZSBhcmUgZ29pbmcgdG8gdGhlIGVuZCwgd2Ugd2FudCB0byBydW4gYWxsIHRoZSB0d2VlbnNcblx0XHRcdFx0XHQvLyBvdGhlcndpc2Ugd2Ugc2tpcCB0aGlzIHBhcnRcblx0XHRcdFx0XHRsZW5ndGggPSBnb3RvRW5kID8gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGggOiAwO1xuXHRcdFx0XHRpZiAoIHN0b3BwZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3RvcHBlZCA9IHRydWU7XG5cdFx0XHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGggOyBpbmRleCsrICkge1xuXHRcdFx0XHRcdGFuaW1hdGlvbi50d2VlbnNbIGluZGV4IF0ucnVuKCAxICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZXNvbHZlIHdoZW4gd2UgcGxheWVkIHRoZSBsYXN0IGZyYW1lOyBvdGhlcndpc2UsIHJlamVjdFxuXHRcdFx0XHRpZiAoIGdvdG9FbmQgKSB7XG5cdFx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5yZWplY3RXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgZ290b0VuZCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9XG5cdFx0fSksXG5cdFx0cHJvcHMgP
14938SBhbmltYXRpb24ucHJvcHM7XG5cblx0cHJvcEZpbHRlciggcHJvcHMsIGFuaW1hdGlvbi5vcHRzLnNwZWNpYWxFYXNpbmcgKTtcblxuXHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoIDsgaW5kZXgrKyApIHtcblx0XHRyZXN1bHQgPSBhbmltYXRpb25QcmVmaWx0ZXJzWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgZWxlbSwgcHJvcHMsIGFuaW1hdGlvbi5vcHRzICk7XG5cdFx0aWYgKCByZXN1bHQgKSB7XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH1cblx0fVxuXG5cdGpRdWVyeS5tYXAoIHByb3BzLCBjcmVhdGVUd2VlbiwgYW5pbWF0aW9uICk7XG5cblx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggYW5pbWF0aW9uLm9wdHMuc3RhcnQgKSApIHtcblx0XHRhbmltYXRpb24ub3B0cy5zdGFydC5jYWxsKCBlbGVtLCBhbmltYXRpb24gKTtcblx0fVxuXG5cdGpRdWVyeS5meC50aW1lcihcblx0XHRqUXVlcnkuZXh0ZW5kKCB0aWNrLCB7XG5cdFx0XHRlbGVtOiBlbGVtLFxuXHRcdFx0YW5pbTogYW5pbWF0aW9uLFxuXHRcdFx0cXVldWU6IGFuaW1hdGlvbi5vcHRzLnF1ZXVlXG5cdFx0fSlcblx0KTtcblxuXHQvLyBhdHRhY2ggY2FsbGJhY2tzIGZyb20gb3B0aW9uc1xuXHRyZXR1cm4gYW5pbWF0aW9uLnByb2dyZXNzKCBhbmltYXRpb24ub3B0cy5wcm9ncmVzcyApXG5cdFx0LmRvbmUoIGFuaW1hdGlvbi5vcHRzLmRvbmUsIGFuaW1hdGlvbi5vcHRzLmNvbXBsZXRlIClcblx0XHQuZmFpbCggYW5pbWF0aW9uLm9wdHMuZmFpbCApXG5cdFx0LmFsd2F5cyggYW5pbWF0aW9uLm9wdHMuYWx3YXlzICk7XG59XG5cbmpRdWVyeS5BbmltYXRpb24gPSBqUXVlcnkuZXh0ZW5kKCBBbmltYXRpb24sIHtcblxuXHR0d2VlbmVyOiBmdW5jdGlvbiggcHJvcHMsIGNhbGxiYWNrICkge1xuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHByb3BzICkgKSB7XG5cdFx0XHRjYWxsYmFjayA9IHByb3BzO1xuXHRcdFx0cHJvcHMgPSBbIFwiKlwiIF07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHByb3BzID0gcHJvcHMuc3BsaXQoXCIgXCIpO1xuXHRcdH1cblxuXHRcdHZhciBwcm9wLFxuXHRcdFx0aW5kZXggPSAwLFxuXHRcdFx0bGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG5cdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aCA7IGluZGV4KysgKSB7XG5cdFx0XHRwcm9wID0gcHJvcHNbIGluZGV4IF07XG5cdFx0XHR0d2VlbmVyc1sgcHJvcCBdID0gdHdlZW5lcnNbIHByb3AgXSB8fCBbXTtcblx0XHRcdHR3ZWVuZXJzWyBwcm9wIF0udW5zaGlmdCggY2FsbGJhY2sgKTtcblx0XHR9XG5cdH0sXG5cblx0cHJlZmlsdGVyOiBmdW5jdGlvbiggY2FsbGJhY2ssIHByZXBlbmQgKSB7XG5cdFx0aWYgKCBwcmVwZW5kICkge1xuXHRcdFx0YW5pbWF0aW9uUHJlZmlsdGVycy51bnNoaWZ0KCBjYWxsYmFjayApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhbmltYXRpb25QcmVmaWx0ZXJzLnB1c2goIGNhbGxiYWNrICk7XG5cdFx0fVxuXHR9XG59KTtcblxualF1ZXJ5LnNwZWVkID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGZuICkge1xuXHR2YXIgb3B0ID0gc3BlZWQgJiYgdHlwZW9mIHNwZWVkID09PSBcIm9iamVjdFwiID8galF1ZXJ5LmV4dGVuZCgge30sIHNwZWVkICkgOiB7XG5cdFx0Y29tcGxldGU6IGZuIHx8ICFmbiAmJiBlYXNpbmcgfHxcblx0XHRcdGpRdWVyeS5pc0Z1bmN0aW9uKCBzcGVlZCApICYmIHNwZWVkLFxuXHRcdGR1cmF0aW9uOiBzcGVlZCxcblx0XHRlYXNpbmc6IGZuICYmIGVhc2luZyB8fCBlYXNpbmcgJiYgIWpRdWVyeS5pc0Z1bmN0aW9uKCBlYXNpbmcgKSAmJiBlYXNpbmdcblx0fTtcblxuXHRvcHQuZHVyYXRpb24gPSBqUXVlcnkuZngub2ZmID8gMCA6IHR5cGVvZiBvcHQuZHVyYXRpb24gPT09IFwibnVtYmVyXCIgPyBvcHQuZHVyYXRpb24gOlxuXHRcdG9wdC5kdXJhdGlvbiBpbiBqUXVlcnkuZnguc3BlZWRzID8galF1ZXJ5LmZ4LnNwZWVkc1sgb3B0LmR1cmF0aW9uIF0gOiBqUXVlcnkuZnguc3BlZWRzLl9kZWZhdWx0O1xuXG5cdC8vIE5vcm1hbGl6ZSBvcHQucXVldWUgLSB0cnVlL3VuZGVmaW5lZC9udWxsIC0+IFwiZnhcIlxuXHRpZiAoIG9wdC5xdWV1ZSA9PSBudWxsIHx8IG9wdC5xdWV1ZSA9PT0gdHJ1ZSApIHtcblx0XHRvcHQucXVldWUgPSBcImZ4XCI7XG5cdH1cblxuXHQvLyBRdWV1ZWluZ1xuXHRvcHQub2xkID0gb3B0LmNvbXBsZXRlO1xuXG5cdG9wdC5jb21wbGV0ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIG9wdC5vbGQgKSApIHtcblx0XHRcdG9wdC5vbGQuY2FsbCggdGhpcyApO1xuXHRcdH1cblxuXHRcdGlmICggb3B0LnF1ZXVlICkge1xuXHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIG9wdC5xdWV1ZSApO1xuXHRcdH1cblx0fTtcblxuXHRyZXR1cm4gb3B0O1xufTtcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdGZhZGVUbzogZnVuY3Rpb24oIHNwZWVkLCB0bywgZWFzaW5nLCBjYWxsYmFjayApIHtcblxuXHRcdC8vIFNob3cgYW55IGhpZGRlbiBlbGVtZW50cyBhZnRlciBzZXR0aW5nIG9wYWNpdHkgdG8gMFxuXHRcdHJldHVybiB0aGlzLmZpbHRlciggaXNIaWRkZW4gKS5jc3MoIFwib3BhY2l0eVwiLCAwICkuc2hvdygpXG5cblx0XHRcdC8vIEFuaW1hdGUgdG8gdGhlIHZhbHVlIHNwZWNpZmllZFxuXHRcdFx0LmVuZCgpLmFuaW1hdGUoeyBvcGFjaXR5OiB0byB9LCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApO1xuXHR9LFxuXHRhbmltYXRlOiBmdW5jdGlvbiggcHJvcCwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0dmFyIGVtcHR5ID0galF1ZXJ5LmlzRW1wdHlPYmplY3QoIHByb3AgKSxcblx0XHRcdG9wdGFsbCA9IGpRdWVyeS5zcGVlZCggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSxcblx0XHRcdGRvQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdC8vIE9wZXJhdGUgb24gYSBjb3B5IG9mIHByb3Agc28gcGVyLXByb3BlcnR5IGVhc2luZyB3b24ndCBiZSBsb3N0XG5cdFx0XHRcdHZhciBhbmltID0gQW5pbWF0aW9uKCB0aGlzLCBqUXVlcnkuZXh0ZW5kKCB7fSwgcHJvcCApLCBvcHRhbGwgKTtcblxuXHRcdFx0XHQvLyBFbXB0eSBhbmltYXRpb25zLCBvciBmaW5pc2hpbmcgcmVzb2x2ZXMgaW1tZWRpYXRlbHlcblx0XHRcdFx0aWYgKCBlbXB0eSB8fCBkYXRhX3ByaXYuZ2V0KCB0aGlzLCBcImZpbmlzaFwiICkgKSB7XG5cdFx0XHRcdFx0YW5pbS5zdG9wKCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRkb0FuaW1hdGlvbi5maW5pc2ggPSBkb0FuaW1hdGlvbjtcblxuXHRcdHJldHVybi
14938BlbXB0eSB8fCBvcHRhbGwucXVldWUgPT09IGZhbHNlID9cblx0XHRcdHRoaXMuZWFjaCggZG9BbmltYXRpb24gKSA6XG5cdFx0XHR0aGlzLnF1ZXVlKCBvcHRhbGwucXVldWUsIGRvQW5pbWF0aW9uICk7XG5cdH0sXG5cdHN0b3A6IGZ1bmN0aW9uKCB0eXBlLCBjbGVhclF1ZXVlLCBnb3RvRW5kICkge1xuXHRcdHZhciBzdG9wUXVldWUgPSBmdW5jdGlvbiggaG9va3MgKSB7XG5cdFx0XHR2YXIgc3RvcCA9IGhvb2tzLnN0b3A7XG5cdFx0XHRkZWxldGUgaG9va3Muc3RvcDtcblx0XHRcdHN0b3AoIGdvdG9FbmQgKTtcblx0XHR9O1xuXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGdvdG9FbmQgPSBjbGVhclF1ZXVlO1xuXHRcdFx0Y2xlYXJRdWV1ZSA9IHR5cGU7XG5cdFx0XHR0eXBlID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAoIGNsZWFyUXVldWUgJiYgdHlwZSAhPT0gZmFsc2UgKSB7XG5cdFx0XHR0aGlzLnF1ZXVlKCB0eXBlIHx8IFwiZnhcIiwgW10gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGRlcXVldWUgPSB0cnVlLFxuXHRcdFx0XHRpbmRleCA9IHR5cGUgIT0gbnVsbCAmJiB0eXBlICsgXCJxdWV1ZUhvb2tzXCIsXG5cdFx0XHRcdHRpbWVycyA9IGpRdWVyeS50aW1lcnMsXG5cdFx0XHRcdGRhdGEgPSBkYXRhX3ByaXYuZ2V0KCB0aGlzICk7XG5cblx0XHRcdGlmICggaW5kZXggKSB7XG5cdFx0XHRcdGlmICggZGF0YVsgaW5kZXggXSAmJiBkYXRhWyBpbmRleCBdLnN0b3AgKSB7XG5cdFx0XHRcdFx0c3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvciAoIGluZGV4IGluIGRhdGEgKSB7XG5cdFx0XHRcdFx0aWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCAmJiBycnVuLnRlc3QoIGluZGV4ICkgKSB7XG5cdFx0XHRcdFx0XHRzdG9wUXVldWUoIGRhdGFbIGluZGV4IF0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Zm9yICggaW5kZXggPSB0aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHtcblx0XHRcdFx0aWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJiAodHlwZSA9PSBudWxsIHx8IHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSkgKSB7XG5cdFx0XHRcdFx0dGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggZ290b0VuZCApO1xuXHRcdFx0XHRcdGRlcXVldWUgPSBmYWxzZTtcblx0XHRcdFx0XHR0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0YXJ0IHRoZSBuZXh0IGluIHRoZSBxdWV1ZSBpZiB0aGUgbGFzdCBzdGVwIHdhc24ndCBmb3JjZWQuXG5cdFx0XHQvLyBUaW1lcnMgY3VycmVudGx5IHdpbGwgY2FsbCB0aGVpciBjb21wbGV0ZSBjYWxsYmFja3MsIHdoaWNoXG5cdFx0XHQvLyB3aWxsIGRlcXVldWUgYnV0IG9ubHkgaWYgdGhleSB3ZXJlIGdvdG9FbmQuXG5cdFx0XHRpZiAoIGRlcXVldWUgfHwgIWdvdG9FbmQgKSB7XG5cdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cdGZpbmlzaDogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0aWYgKCB0eXBlICE9PSBmYWxzZSApIHtcblx0XHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdHZhciBpbmRleCxcblx0XHRcdFx0ZGF0YSA9IGRhdGFfcHJpdi5nZXQoIHRoaXMgKSxcblx0XHRcdFx0cXVldWUgPSBkYXRhWyB0eXBlICsgXCJxdWV1ZVwiIF0sXG5cdFx0XHRcdGhvb2tzID0gZGF0YVsgdHlwZSArIFwicXVldWVIb29rc1wiIF0sXG5cdFx0XHRcdHRpbWVycyA9IGpRdWVyeS50aW1lcnMsXG5cdFx0XHRcdGxlbmd0aCA9IHF1ZXVlID8gcXVldWUubGVuZ3RoIDogMDtcblxuXHRcdFx0Ly8gRW5hYmxlIGZpbmlzaGluZyBmbGFnIG9uIHByaXZhdGUgZGF0YVxuXHRcdFx0ZGF0YS5maW5pc2ggPSB0cnVlO1xuXG5cdFx0XHQvLyBFbXB0eSB0aGUgcXVldWUgZmlyc3Rcblx0XHRcdGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgW10gKTtcblxuXHRcdFx0aWYgKCBob29rcyAmJiBob29rcy5zdG9wICkge1xuXHRcdFx0XHRob29rcy5zdG9wLmNhbGwoIHRoaXMsIHRydWUgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTG9vayBmb3IgYW55IGFjdGl2ZSBhbmltYXRpb25zLCBhbmQgZmluaXNoIHRoZW1cblx0XHRcdGZvciAoIGluZGV4ID0gdGltZXJzLmxlbmd0aDsgaW5kZXgtLTsgKSB7XG5cdFx0XHRcdGlmICggdGltZXJzWyBpbmRleCBdLmVsZW0gPT09IHRoaXMgJiYgdGltZXJzWyBpbmRleCBdLnF1ZXVlID09PSB0eXBlICkge1xuXHRcdFx0XHRcdHRpbWVyc1sgaW5kZXggXS5hbmltLnN0b3AoIHRydWUgKTtcblx0XHRcdFx0XHR0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIExvb2sgZm9yIGFueSBhbmltYXRpb25zIGluIHRoZSBvbGQgcXVldWUgYW5kIGZpbmlzaCB0aGVtXG5cdFx0XHRmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdFx0XHRpZiAoIHF1ZXVlWyBpbmRleCBdICYmIHF1ZXVlWyBpbmRleCBdLmZpbmlzaCApIHtcblx0XHRcdFx0XHRxdWV1ZVsgaW5kZXggXS5maW5pc2guY2FsbCggdGhpcyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFR1cm4gb2ZmIGZpbmlzaGluZyBmbGFnXG5cdFx0XHRkZWxldGUgZGF0YS5maW5pc2g7XG5cdFx0fSk7XG5cdH1cbn0pO1xuXG5qUXVlcnkuZWFjaChbIFwidG9nZ2xlXCIsIFwic2hvd1wiLCBcImhpZGVcIiBdLCBmdW5jdGlvbiggaSwgbmFtZSApIHtcblx0dmFyIGNzc0ZuID0galF1ZXJ5LmZuWyBuYW1lIF07XG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBzcGVlZCA9PSBudWxsIHx8IHR5cGVvZiBzcGVlZCA9PT0gXCJib29sZWFuXCIgP1xuXHRcdFx0Y3NzRm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApIDpcblx0XHRcdHRoaXMuYW5pbWF0ZSggZ2VuRngoIG5hbW
14938UsIHRydWUgKSwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTtcblx0fTtcbn0pO1xuXG4vLyBHZW5lcmF0ZSBzaG9ydGN1dHMgZm9yIGN1c3RvbSBhbmltYXRpb25zXG5qUXVlcnkuZWFjaCh7XG5cdHNsaWRlRG93bjogZ2VuRngoXCJzaG93XCIpLFxuXHRzbGlkZVVwOiBnZW5GeChcImhpZGVcIiksXG5cdHNsaWRlVG9nZ2xlOiBnZW5GeChcInRvZ2dsZVwiKSxcblx0ZmFkZUluOiB7IG9wYWNpdHk6IFwic2hvd1wiIH0sXG5cdGZhZGVPdXQ6IHsgb3BhY2l0eTogXCJoaWRlXCIgfSxcblx0ZmFkZVRvZ2dsZTogeyBvcGFjaXR5OiBcInRvZ2dsZVwiIH1cbn0sIGZ1bmN0aW9uKCBuYW1lLCBwcm9wcyApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHRoaXMuYW5pbWF0ZSggcHJvcHMsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH07XG59KTtcblxualF1ZXJ5LnRpbWVycyA9IFtdO1xualF1ZXJ5LmZ4LnRpY2sgPSBmdW5jdGlvbigpIHtcblx0dmFyIHRpbWVyLFxuXHRcdGkgPSAwLFxuXHRcdHRpbWVycyA9IGpRdWVyeS50aW1lcnM7XG5cblx0ZnhOb3cgPSBqUXVlcnkubm93KCk7XG5cblx0Zm9yICggOyBpIDwgdGltZXJzLmxlbmd0aDsgaSsrICkge1xuXHRcdHRpbWVyID0gdGltZXJzWyBpIF07XG5cdFx0Ly8gQ2hlY2tzIHRoZSB0aW1lciBoYXMgbm90IGFscmVhZHkgYmVlbiByZW1vdmVkXG5cdFx0aWYgKCAhdGltZXIoKSAmJiB0aW1lcnNbIGkgXSA9PT0gdGltZXIgKSB7XG5cdFx0XHR0aW1lcnMuc3BsaWNlKCBpLS0sIDEgKTtcblx0XHR9XG5cdH1cblxuXHRpZiAoICF0aW1lcnMubGVuZ3RoICkge1xuXHRcdGpRdWVyeS5meC5zdG9wKCk7XG5cdH1cblx0ZnhOb3cgPSB1bmRlZmluZWQ7XG59O1xuXG5qUXVlcnkuZngudGltZXIgPSBmdW5jdGlvbiggdGltZXIgKSB7XG5cdGpRdWVyeS50aW1lcnMucHVzaCggdGltZXIgKTtcblx0aWYgKCB0aW1lcigpICkge1xuXHRcdGpRdWVyeS5meC5zdGFydCgpO1xuXHR9IGVsc2Uge1xuXHRcdGpRdWVyeS50aW1lcnMucG9wKCk7XG5cdH1cbn07XG5cbmpRdWVyeS5meC5pbnRlcnZhbCA9IDEzO1xuXG5qUXVlcnkuZnguc3RhcnQgPSBmdW5jdGlvbigpIHtcblx0aWYgKCAhdGltZXJJZCApIHtcblx0XHR0aW1lcklkID0gc2V0SW50ZXJ2YWwoIGpRdWVyeS5meC50aWNrLCBqUXVlcnkuZnguaW50ZXJ2YWwgKTtcblx0fVxufTtcblxualF1ZXJ5LmZ4LnN0b3AgPSBmdW5jdGlvbigpIHtcblx0Y2xlYXJJbnRlcnZhbCggdGltZXJJZCApO
149381xuXHR0aW1lcklkID0gbnVsbDtcbn07XG5cbmpRdWVyeS5meC5zcGVlZHMgPSB7XG5cdHNsb3c6IDYwMCxcblx0ZmFzdDogMjAwLFxuXHQvLyBEZWZhdWx0IHNwZWVkXG5cdF9kZWZhdWx0OiA0MDBcbn07XG5cblxuLy8gQmFzZWQgb2ZmIG9mIHRoZSBwbHVnaW4gYnkgQ2xpbnQgSGVsZmVycywgd2l0aCBwZXJtaXNzaW9uLlxuLy8gaHR0cDovL2JsaW5kc2lnbmFscy5jb20vaW5kZXgucGhwLzIwMDkvMDcvanF1ZXJ5LWRlbGF5L1xualF1ZXJ5LmZuLmRlbGF5ID0gZnVuY3Rpb24oIHRpbWUsIHR5cGUgKSB7XG5cdHRpbWUgPSBqUXVlcnkuZnggPyBqUXVlcnkuZnguc3BlZWRzWyB0aW1lIF0gfHwgdGltZSA6IHRpbWU7XG5cdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRyZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSwgZnVuY3Rpb24oIG5leHQsIGhvb2tzICkge1xuXHRcdHZhciB0aW1lb3V0ID0gc2V0VGltZW91dCggbmV4dCwgdGltZSApO1xuXHRcdGhvb2tzLnN0b3AgPSBmdW5jdGlvbigpIHtcblx0XHRcdGNsZWFyVGltZW91dCggdGltZW91dCApO1xuXHRcdH07XG5cdH0pO1xufTtcblxuXG4oZnVuY3Rpb24oKSB7XG5cdHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApLFxuXHRcdHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwic2VsZWN0XCIgKSxcblx0XHRvcHQgPSBzZWxlY3QuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwib3B0aW9uXCIgKSApO1xuXG5cdGlucHV0LnR5cGUgPSBcImNoZWNrYm94XCI7XG5cblx0Ly8gU3VwcG9ydDogaU9TPD01LjEsIEFuZHJvaWQ8PTQuMitcblx0Ly8gRGVmYXVsdCB2YWx1ZSBmb3IgYSBjaGVja2JveCBzaG91bGQgYmUgXCJvblwiXG5cdHN1cHBvcnQuY2hlY2tPbiA9IGlucHV0LnZhbHVlICE9PSBcIlwiO1xuXG5cdC8vIFN1cHBvcnQ6IElFPD0xMStcblx0Ly8gTXVzdCBhY2Nlc3Mgc2VsZWN0ZWRJbmRleCB0byBtYWtlIGRlZmF1bHQgb3B0aW9ucyBzZWxlY3Rcblx0c3VwcG9ydC5vcHRTZWxlY3RlZCA9IG9wdC5zZWxlY3RlZDtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkPD0yLjNcblx0Ly8gT3B0aW9ucyBpbnNpZGUgZGlzYWJsZWQgc2VsZWN0cyBhcmUgaW5jb3JyZWN0bHkgbWFya2VkIGFzIGRpc2FibGVkXG5cdHNlbGVjdC5kaXNhYmxlZCA9IHRydWU7XG5cdHN1cHBvcnQub3B0RGlzYWJsZWQgPSAhb3B0LmRpc2FibGVkO1xuXG5cdC8vIFN1cHBvcnQ6IElFPD0xMStcblx0Ly8gQW4gaW5wdXQgbG9zZXMgaXRzIHZhbHVlIGFmdGVyIGJlY29taW5nIGEgcmFkaW9cblx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblx0aW5wdXQudmFsdWUgPSBcInRcIjtcblx0aW5wdXQudHlwZSA9IFwicmFkaW9cIjtcblx0c3VwcG9ydC5yYWRpb1ZhbHVlID0gaW5wdXQudmFsdWUgPT09IFwidFwiO1xufSkoKTtcblxuXG52YXIgbm9kZUhvb2ssIGJvb2xIb29rLFxuXHRhdHRySGFuZGxlID0galF1ZXJ5LmV4cHIuYXR0ckhhbmRsZTtcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdGF0dHI6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkuYXR0ciwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH0sXG5cblx0cmVtb3ZlQXR0cjogZnVuY3Rpb24oIG5hbWUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCB0aGlzLCBuYW1lICk7XG5cdFx0fSk7XG5cdH1cbn0pO1xuXG5qUXVlcnkuZXh0ZW5kKHtcblx0YXR0cjogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdHZhciBob29rcywgcmV0LFxuXHRcdFx0blR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdFx0Ly8gZG9uJ3QgZ2V0L3NldCBhdHRyaWJ1dGVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2Rlc1xuXHRcdGlmICggIWVsZW0gfHwgblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gRmFsbGJhY2sgdG8gcHJvcCB3aGVuIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWRcblx0XHRpZiAoIHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSA9PT0gc3RydW5kZWZpbmVkICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5wcm9wKCBlbGVtLCBuYW1lLCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdC8vIEFsbCBhdHRyaWJ1dGVzIGFyZSBsb3dlcmNhc2Vcblx0XHQvLyBHcmFiIG5lY2Vzc2FyeSBob29rIGlmIG9uZSBpcyBkZWZpbmVkXG5cdFx0aWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cdFx0XHRuYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0aG9va3MgPSBqUXVlcnkuYXR0ckhvb2tzWyBuYW1lIF0gfHxcblx0XHRcdFx0KCBqUXVlcnkuZXhwci5tYXRjaC5ib29sLnRlc3QoIG5hbWUgKSA/IGJvb2xIb29rIDogbm9kZUhvb2sgKTtcblx0XHR9XG5cblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdGlmICggdmFsdWUgPT09IG51bGwgKSB7XG5cdFx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGhvb2tzICYmIFwic2V0XCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKSkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIHZhbHVlICsgXCJcIiApO1xuXHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHR9XG5cblx0XHR9IGVsc2UgaWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSkgIT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdFx0Ly8gTm9uLWV4aXN0ZW50IGF0dHJpYnV0ZXMgcmV0dXJuIG51bGwsIHdlIG5vcm1hbGl6ZSB0byB1bmRlZmluZWRcblx0XHRcdHJldHVybi
14938ByZXQgPT0gbnVsbCA/XG5cdFx0XHRcdHVuZGVmaW5lZCA6XG5cdFx0XHRcdHJldDtcblx0XHR9XG5cdH0sXG5cblx0cmVtb3ZlQXR0cjogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdHZhciBuYW1lLCBwcm9wTmFtZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0YXR0ck5hbWVzID0gdmFsdWUgJiYgdmFsdWUubWF0Y2goIHJub3R3aGl0ZSApO1xuXG5cdFx0aWYgKCBhdHRyTmFtZXMgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdHdoaWxlICggKG5hbWUgPSBhdHRyTmFtZXNbaSsrXSkgKSB7XG5cdFx0XHRcdHByb3BOYW1lID0galF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lO1xuXG5cdFx0XHRcdC8vIEJvb2xlYW4gYXR0cmlidXRlcyBnZXQgc3BlY2lhbCB0cmVhdG1lbnQgKCMxMDg3MClcblx0XHRcdFx0aWYgKCBqUXVlcnkuZXhwci5tYXRjaC5ib29sLnRlc3QoIG5hbWUgKSApIHtcblx0XHRcdFx0XHQvLyBTZXQgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSB0byBmYWxzZVxuXHRcdFx0XHRcdGVsZW1bIHByb3BOYW1lIF0gPSBmYWxzZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBuYW1lICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdGF0dHJIb29rczoge1xuXHRcdHR5cGU6IHtcblx0XHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0XHRpZiAoICFzdXBwb3J0LnJhZGlvVmFsdWUgJiYgdmFsdWUgPT09IFwicmFkaW9cIiAmJlxuXHRcdFx0XHRcdGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgXCJpbnB1dFwiICkgKSB7XG5cdFx0XHRcdFx0dmFyIHZhbCA9IGVsZW0udmFsdWU7XG5cdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIFwidHlwZVwiLCB2YWx1ZSApO1xuXHRcdFx0XHRcdGlmICggdmFsICkge1xuXHRcdFx0XHRcdFx0ZWxlbS52YWx1ZSA9IHZhbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59KTtcblxuLy8gSG9va3MgZm9yIGJvb2xlYW4gYXR0cmlidXRlc1xuYm9vbEhvb2sgPSB7XG5cdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkge1xuXHRcdGlmICggdmFsdWUgPT09IGZhbHNlICkge1xuXHRcdFx0Ly8gUmVtb3ZlIGJvb2xlYW4gYXR0cmlidXRlcyB3aGVuIHNldCB0byBmYWxzZVxuXHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIG5hbWUgKTtcblx0XHR9XG5cdFx0cmV0dXJuIG5hbWU7XG5cdH1cbn07XG5qUXVlcnkuZWFjaCggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goIC9cXHcrL2cgKSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cdHZhciBnZXR0ZXIgPSBhdHRySGFuZGxlWyBuYW1lIF0gfHwgalF1ZXJ5LmZpbmQuYXR0cjtcblxuXHRhdHRySGFuZGxlWyBuYW1lIF0gPSBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7XG5cdFx0dmFyIHJldCwgaGFuZGxlO1xuXHRcdGlmICggIWlzWE1MICkge1xuXHRcdFx0Ly8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcCBieSB0ZW1wb3JhcmlseSByZW1vdmluZyB0aGlzIGZ1bmN0aW9uIGZyb20gdGhlIGdldHRlclxuXHRcdFx0aGFuZGxlID0gYXR0ckhhbmRsZVsgbmFtZSBdO1xuXHRcdFx0YXR0ckhhbmRsZVsgbmFtZSBdID0gcmV0O1xuXHRcdFx0cmV0ID0gZ2V0dGVyKCBlbGVtLCBuYW1lLCBpc1hNTCApICE9IG51bGwgP1xuXHRcdFx0XHRuYW1lLnRvTG93ZXJDYXNlKCkgOlxuXHRcdFx0XHRudWxsO1xuXHRcdFx0YXR0ckhhbmRsZVsgbmFtZSBdID0gaGFuZGxlO1xuXHRcdH1cblx0XHRyZXR1cm4gcmV0O1xuXHR9O1xufSk7XG5cblxuXG5cbnZhciByZm9jdXNhYmxlID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaTtcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdHByb3A6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkucHJvcCwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH0sXG5cblx0cmVtb3ZlUHJvcDogZnVuY3Rpb24oIG5hbWUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdGRlbGV0ZSB0aGlzWyBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWUgXTtcblx0XHR9KTtcblx0fVxufSk7XG5cbmpRdWVyeS5leHRlbmQoe1xuXHRwcm9wRml4OiB7XG5cdFx0XCJmb3JcIjogXCJodG1sRm9yXCIsXG5cdFx0XCJjbGFzc1wiOiBcImNsYXNzTmFtZVwiXG5cdH0sXG5cblx0cHJvcDogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdHZhciByZXQsIGhvb2tzLCBub3R4bWwsXG5cdFx0XHRuVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG5cblx0XHQvLyBEb24ndCBnZXQvc2V0IHByb3BlcnRpZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzXG5cdFx0aWYgKCAhZWxlbSB8fCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRub3R4bWwgPSBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICk7XG5cblx0XHRpZiAoIG5vdHhtbCApIHtcblx0XHRcdC8vIEZpeCBuYW1lIGFuZCBhdHRhY2ggaG9va3Ncblx0XHRcdG5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5wcm9wSG9va3NbIG5hbWUgXTtcblx0XHR9XG5cblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRyZXR1cm4gaG9va3MgJiYgXCJzZXRcIiBpbiBob29rcyAmJiAocmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApKSAhPT0gdW5kZWZpbmVkID9cblx0XHRcdFx0cmV0IDpcblx0XHRcdFx0KCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApO1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSkgIT09IG51bGwgP1xuXHRcdFx0XHRyZXQgOlxuXHRcdFx0XHRlbGVtWyBuYW1lIF0
149387XG5cdFx0fVxuXHR9LFxuXG5cdHByb3BIb29rczoge1xuXHRcdHRhYkluZGV4OiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gZWxlbS5oYXNBdHRyaWJ1dGUoIFwidGFiaW5kZXhcIiApIHx8IHJmb2N1c2FibGUudGVzdCggZWxlbS5ub2RlTmFtZSApIHx8IGVsZW0uaHJlZiA/XG5cdFx0XHRcdFx0ZWxlbS50YWJJbmRleCA6XG5cdFx0XHRcdFx0LTE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59KTtcblxuaWYgKCAhc3VwcG9ydC5vcHRTZWxlY3RlZCApIHtcblx0alF1ZXJ5LnByb3BIb29rcy5zZWxlY3RlZCA9IHtcblx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdGlmICggcGFyZW50ICYmIHBhcmVudC5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHR9O1xufVxuXG5qUXVlcnkuZWFjaChbXG5cdFwidGFiSW5kZXhcIixcblx0XCJyZWFkT25seVwiLFxuXHRcIm1heExlbmd0aFwiLFxuXHRcImNlbGxTcGFjaW5nXCIsXG5cdFwiY2VsbFBhZGRpbmdcIixcblx0XCJyb3dTcGFuXCIsXG5cdFwiY29sU3BhblwiLFxuXHRcInVzZU1hcFwiLFxuXHRcImZyYW1lQm9yZGVyXCIsXG5cdFwiY29udGVudEVkaXRhYmxlXCJcbl0sIGZ1bmN0aW9uKCkge1xuXHRqUXVlcnkucHJvcEZpeFsgdGhpcy50b0xvd2VyQ2FzZSgpIF0gPSB0aGlzO1xufSk7XG5cblxuXG5cbnZhciByY2xhc3MgPSAvW1xcdFxcclxcblxcZl0vZztcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdGFkZENsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY2xhenosIGosIGZpbmFsVmFsdWUsXG5cdFx0XHRwcm9jZWVkID0gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRsZW4gPSB0aGlzLmxlbmd0aDtcblxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCBqICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5hZGRDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgdGhpcy5jbGFzc05hbWUgKSApO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKCBwcm9jZWVkICkge1xuXHRcdFx0Ly8gVGhlIGRpc2p1bmN0aW9uIGhlcmUgaXMgZm9yIGJldHRlciBjb21wcmVzc2liaWxpdHkgKHNlZSByZW1vdmVDbGFzcylcblx0XHRcdGNsYXNzZXMgPSAoIHZhbHVlIHx8IFwiXCIgKS5tYXRjaCggcm5vdHdoaXRlICkgfHwgW107XG5cblx0XHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRlbGVtID0gdGhpc1sgaSBdO1xuXHRcdFx0XHRjdXIgPSBlbGVtLm5vZGVUeXBlID09PSAxICYmICggZWxlbS5jbGFzc05hbWUgP1xuXHRcdFx0XHRcdCggXCIgXCIgKyBlbGVtLmNsYXNzTmFtZSArIFwiIFwiICkucmVwbGFjZSggcmNsYXNzLCBcIiBcIiApIDpcblx0XHRcdFx0XHRcIiBcIlxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGlmICggY3VyICkge1xuXHRcdFx0XHRcdGogPSAwO1xuXHRcdFx0XHRcdHdoaWxlICggKGNsYXp6ID0gY2xhc3Nlc1tqKytdKSApIHtcblx0XHRcdFx0XHRcdGlmICggY3VyLmluZGV4T2YoIFwiIFwiICsgY2xhenogKyBcIiBcIiApIDwgMCApIHtcblx0XHRcdFx0XHRcdFx0Y3VyICs9IGNsYXp6ICsgXCIgXCI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gb25seSBhc3NpZ24gaWYgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVlZGVkIHJlbmRlcmluZy5cblx0XHRcdFx0XHRmaW5hbFZhbHVlID0galF1ZXJ5LnRyaW0oIGN1ciApO1xuXHRcdFx0XHRcdGlmICggZWxlbS5jbGFzc05hbWUgIT09IGZpbmFsVmFsdWUgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLmNsYXNzTmFtZSA9IGZpbmFsVmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0cmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR2YXIgY2xhc3NlcywgZWxlbSwgY3VyLCBjbGF6eiwgaiwgZmluYWxWYWx1ZSxcblx0XHRcdHByb2NlZWQgPSBhcmd1bWVudHMubGVuZ3RoID09PSAwIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0bGVuID0gdGhpcy5sZW5ndGg7XG5cblx0XHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaiApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkucmVtb3ZlQ2xhc3MoIHZhbHVlLmNhbGwoIHRoaXMsIGosIHRoaXMuY2xhc3NOYW1lICkgKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRpZiAoIHByb2NlZWQgKSB7XG5cdFx0XHRjbGFzc2VzID0gKCB2YWx1ZSB8fCBcIlwiICkubWF0Y2goIHJub3R3aGl0ZSApIHx8IFtdO1xuXG5cdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0ZWxlbSA9IHRoaXNbIGkgXTtcblx0XHRcdFx0Ly8gVGhpcyBleHByZXNzaW9uIGlzIGhlcmUgZm9yIGJldHRlciBjb21wcmVzc2liaWxpdHkgKHNlZSBhZGRDbGFzcylcblx0XHRcdFx0Y3VyID0gZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoIGVsZW0uY2xhc3NOYW1lID9cblx0XHRcdFx0XHQoIFwiIFwiICsgZWxlbS5jbGFzc05hbWUgKyBcIiBcIiApLnJlcGxhY2UoIHJjbGFzcywgXCIgXCIgKSA6XG5cdFx0XHRcdFx0XCJcIlxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGlmICggY3VyICkge1xuXHRcdFx0XHRcdGogPSAwO1xuXHRcdFx0XHRcdHdoaWxlICggKGNsYXp6ID0gY2xhc3Nlc1tqKytdKSApIHtcblx0XHRcdFx0XHRcdC8vIFJlbW92ZSAqYWxsKiBpbnN0YW5jZXNcblx0XHRcdFx0XHRcdHdoaWxlICggY3VyLmluZGV4T2YoIFwiIFwiICsgY2xhenogKyBcIiBcIiApID49IDAgKSB7XG5cdFx0XHRcdFx0XHRcdGN1ciA9IGN1ci5yZXBsYWNlKCBcIiBcIiArIGNsYXp6ICsgXCIgXCIsIFwiIFwiICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gT25seSBhc3NpZ24gaWYgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVlZGVkIHJlbmRlcmluZy5cblx0XHRcdFx0XHRmaW5hbFZhbHVlID0gdmFsdWUgPyBqUXVlcnkudHJpbSggY3VyICkgOiBcIlwiO
149381xuXHRcdFx0XHRcdGlmICggZWxlbS5jbGFzc05hbWUgIT09IGZpbmFsVmFsdWUgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLmNsYXNzTmFtZSA9IGZpbmFsVmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0dG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSwgc3RhdGVWYWwgKSB7XG5cdFx0dmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG5cblx0XHRpZiAoIHR5cGVvZiBzdGF0ZVZhbCA9PT0gXCJib29sZWFuXCIgJiYgdHlwZSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiBzdGF0ZVZhbCA/IHRoaXMuYWRkQ2xhc3MoIHZhbHVlICkgOiB0aGlzLnJlbW92ZUNsYXNzKCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS50b2dnbGVDbGFzcyggdmFsdWUuY2FsbCh0aGlzLCBpLCB0aGlzLmNsYXNzTmFtZSwgc3RhdGVWYWwpLCBzdGF0ZVZhbCApO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdGlmICggdHlwZSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdFx0Ly8gVG9nZ2xlIGluZGl2aWR1YWwgY2xhc3MgbmFtZXNcblx0XHRcdFx0dmFyIGNsYXNzTmFtZSxcblx0XHRcdFx0XHRpID0gMCxcblx0XHRcdFx0XHRzZWxmID0galF1ZXJ5KCB0aGlzICksXG5cdFx0XHRcdFx0Y2xhc3NOYW1lcyA9IHZhbHVlLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbXTtcblxuXHRcdFx0XHR3aGlsZSAoIChjbGFzc05hbWUgPSBjbGFzc05hbWVzWyBpKysgXSkgKSB7XG5cdFx0XHRcdFx0Ly8gQ2hlY2sgZWFjaCBjbGFzc05hbWUgZ2l2ZW4sIHNwYWNlIHNlcGFyYXRlZCBsaXN0XG5cdFx0XHRcdFx0aWYgKCBzZWxmLmhhc0NsYXNzKCBjbGFzc05hbWUgKSApIHtcblx0XHRcdFx0XHRcdHNlbGYucmVtb3ZlQ2xhc3MoIGNsYXNzTmFtZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzZWxmLmFkZENsYXNzKCBjbGFzc05hbWUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0Ly8gVG9nZ2xlIHdob2xlIGNsYXNzIG5hbWVcblx0XHRcdH0gZWxzZSBpZiAoIHR5cGUgPT09IHN0cnVuZGVmaW5lZCB8fCB0eXBlID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRcdFx0aWYgKCB0aGlzLmNsYXNzTmFtZSApIHtcblx0XHRcdFx0XHQvLyBzdG9yZSBjbGFzc05hbWUgaWYgc2V0XG5cdFx0XHRcdFx0ZGF0YV9wcml2LnNldCggdGhpcywgXCJfX2NsYXNzTmFtZV9fXCIsIHRoaXMuY2xhc3NOYW1lICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBJZiB0aGUgZWxlbWVudCBoYXMgYSBjbGFzcyBuYW1lIG9yIGlmIHdlJ3JlIHBhc3NlZCBgZmFsc2VgLFxuXHRcdFx0XHQvLyB0aGVuIHJlbW92ZSB0aGUgd2hvbGUgY2xhc3NuYW1lIChpZiB0aGVyZSB3YXMgb25lLCB0aGUgYWJvdmUgc2F2ZWQgaXQpLlxuXHRcdFx0XHQvLyBPdGhlcndpc2UgYnJpbmcgYmFjayB3aGF0ZXZlciB3YXMgcHJldmlvdXNseSBzYXZlZCAoaWYgYW55dGhpbmcpLFxuXHRcdFx0XHQvLyBmYWxsaW5nIGJhY2sgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBub3RoaW5nIHdhcyBzdG9yZWQuXG5cdFx0XHRcdHRoaXMuY2xhc3NOYW1lID0gdGhpcy5jbGFzc05hbWUgfHwgdmFsdWUgPT09IGZhbHNlID8gXCJcIiA6IGRhdGFfcHJpdi5nZXQoIHRoaXMsIFwiX19jbGFzc05hbWVfX1wiICkgfHwgXCJcIjtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblxuXHRoYXNDbGFzczogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHZhciBjbGFzc05hbWUgPSBcIiBcIiArIHNlbGVjdG9yICsgXCIgXCIsXG5cdFx0XHRpID0gMCxcblx0XHRcdGwgPSB0aGlzLmxlbmd0aDtcblx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRpZiAoIHRoaXNbaV0ubm9kZVR5cGUgPT09IDEgJiYgKFwiIFwiICsgdGhpc1tpXS5jbGFzc05hbWUgKyBcIiBcIikucmVwbGFjZShyY2xhc3MsIFwiIFwiKS5pbmRleE9mKCBjbGFzc05hbWUgKSA+PSAwICkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn0pO1xuXG5cblxuXG52YXIgcnJldHVybiA9IC9cXHIvZztcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdHZhbDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBob29rcywgcmV0LCBpc0Z1bmN0aW9uLFxuXHRcdFx0ZWxlbSA9IHRoaXNbMF07XG5cblx0XHRpZiAoICFhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0XHRob29rcyA9IGpRdWVyeS52YWxIb29rc1sgZWxlbS50eXBlIF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLmdldCggZWxlbSwgXCJ2YWx1ZVwiICkpICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldCA9IGVsZW0udmFsdWU7XG5cblx0XHRcdFx0cmV0dXJuIHR5cGVvZiByZXQgPT09IFwic3RyaW5nXCIgP1xuXHRcdFx0XHRcdC8vIEhhbmRsZSBtb3N0IGNvbW1vbiBzdHJpbmcgY2FzZXNcblx0XHRcdFx0XHRyZXQucmVwbGFjZShycmV0dXJuLCBcIlwiKSA6XG5cdFx0XHRcdFx0Ly8gSGFuZGxlIGNhc2VzIHdoZXJlIHZhbHVlIGlzIG51bGwvdW5kZWYgb3IgbnVtYmVyXG5cdFx0XHRcdFx0cmV0ID09IG51bGwgPyBcIlwiIDogcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aXNGdW5jdGlvbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApO1xuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaSApIHtcblx0XHRcdHZhciB2YWw7XG5cblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGlzRnVuY3Rpb24gKSB7XG5cdFx0XHRcdHZhbCA9IHZhbHVlLmNhbGwoIHRoaXMsIGksIGpRdWVyeSggdGhpcyApLnZhbCgpICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR2YWwgPSB2YWx1ZTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVHJlYXQgbnVsbC91bmRlZmluZWQgYXMgXCJcIjsgY29udmVydCBudW1iZXJzIHRvIHN0cmluZ1xuXHRcdFx0aWYgKCB2YWwgPT0gbnVsbCApIHtcblx0XHRcdFx0dmFsID0gXCJcIjtcblxuXHRcdFx0fSBlbHNlIGlmICggdHlwZW9mIHZhbCA9PT0gXCJudW1iZXJcIiApIHtcblx0XHRcdFx0dmFsICs9IFwiXCI7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGpRdWVyeS5pc0FycmF
149385KCB2YWwgKSApIHtcblx0XHRcdFx0dmFsID0galF1ZXJ5Lm1hcCggdmFsLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlID09IG51bGwgPyBcIlwiIDogdmFsdWUgKyBcIlwiO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblxuXHRcdFx0aG9va3MgPSBqUXVlcnkudmFsSG9va3NbIHRoaXMudHlwZSBdIHx8IGpRdWVyeS52YWxIb29rc1sgdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07XG5cblx0XHRcdC8vIElmIHNldCByZXR1cm5zIHVuZGVmaW5lZCwgZmFsbCBiYWNrIHRvIG5vcm1hbCBzZXR0aW5nXG5cdFx0XHRpZiAoICFob29rcyB8fCAhKFwic2V0XCIgaW4gaG9va3MpIHx8IGhvb2tzLnNldCggdGhpcywgdmFsLCBcInZhbHVlXCIgKSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHR0aGlzLnZhbHVlID0gdmFsO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59KTtcblxualF1ZXJ5LmV4dGVuZCh7XG5cdHZhbEhvb2tzOiB7XG5cdFx0b3B0aW9uOiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgdmFsID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgXCJ2YWx1ZVwiICk7XG5cdFx0XHRcdHJldHVybiB2YWwgIT0gbnVsbCA/XG5cdFx0XHRcdFx0dmFsIDpcblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRTEwLTExK1xuXHRcdFx0XHRcdC8vIG9wdGlvbi50ZXh0IHRocm93cyBleGNlcHRpb25zICgjMTQ2ODYsICMxNDg1OClcblx0XHRcdFx0XHRqUXVlcnkudHJpbSggalF1ZXJ5LnRleHQoIGVsZW0gKSApO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0c2VsZWN0OiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgdmFsdWUsIG9wdGlvbixcblx0XHRcdFx0XHRvcHRpb25zID0gZWxlbS5vcHRpb25zLFxuXHRcdFx0XHRcdGluZGV4ID0gZWxlbS5zZWxlY3RlZEluZGV4LFxuXHRcdFx0XHRcdG9uZSA9IGVsZW0udHlwZSA9PT0gXCJzZWxlY3Qtb25lXCIgfHwgaW5kZXggPCAwLFxuXHRcdFx0XHRcdHZhbHVlcyA9IG9uZSA/IG51bGwgOiBbXSxcblx0XHRcdFx0XHRtYXggPSBvbmUgPyBpbmRleCArIDEgOiBvcHRpb25zLmxlbmd0aCxcblx0XHRcdFx0XHRpID0gaW5kZXggPCAwID9cblx0XHRcdFx0XHRcdG1heCA6XG5cdFx0XHRcdFx0XHRvbmUgPyBpbmRleCA6IDA7XG5cblx0XHRcdFx0Ly8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgc2VsZWN0ZWQgb3B0aW9uc1xuXHRcdFx0XHRmb3IgKCA7IGkgPCBtYXg7IGkrKyApIHtcblx0XHRcdFx0XHRvcHRpb24gPSBvcHRpb25zWyBpIF07XG5cblx0XHRcdFx0XHQvLyBJRTYtOSBkb2Vzbid0IHVwZGF0ZSBzZWxlY3RlZCBhZnRlciBmb3JtIHJlc2V0ICgjMjU1MSlcblx0XHRcdFx0XHRpZiAoICggb3B0aW9uLnNlbGVjdGVkIHx8IGkgPT09IGluZGV4ICkgJiZcblx0XHRcdFx0XHRcdFx0Ly8gRG9uJ3QgcmV0dXJuIG9wdGlvbnMgdGhhdCBhcmUgZGlzYWJsZWQgb3IgaW4gYSBkaXNhYmxlZCBvcHRncm91cFxuXHRcdFx0XHRcdFx0XHQoIHN1cHBvcnQub3B0RGlzYWJsZWQgPyAhb3B0aW9uLmRpc2FibGVkIDogb3B0aW9uLmdldEF0dHJpYnV0ZSggXCJkaXNhYmxlZFwiICkgPT09IG51bGwgKSAmJlxuXHRcdFx0XHRcdFx0XHQoICFvcHRpb24ucGFyZW50Tm9kZS5kaXNhYmxlZCB8fCAhalF1ZXJ5Lm5vZGVOYW1lKCBvcHRpb24ucGFyZW50Tm9kZSwgXCJvcHRncm91cFwiICkgKSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gR2V0IHRoZSBzcGVjaWZpYyB2YWx1ZSBmb3IgdGhlIG9wdGlvblxuXHRcdFx0XHRcdFx0dmFsdWUgPSBqUXVlcnkoIG9wdGlvbiApLnZhbCgpO1xuXG5cdFx0XHRcdFx0XHQvLyBXZSBkb24ndCBuZWVkIGFuIGFycmF5IGZvciBvbmUgc2VsZWN0c1xuXHRcdFx0XHRcdFx0aWYgKCBvbmUgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gTXVsdGktU2VsZWN0cyByZXR1cm4gYW4gYXJyYXlcblx0XHRcdFx0XHRcdHZhbHVlcy5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB2YWx1ZXM7XG5cdFx0XHR9LFxuXG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHRcdFx0dmFyIG9wdGlvblNldCwgb3B0aW9uLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsXG5cdFx0XHRcdFx0dmFsdWVzID0galF1ZXJ5Lm1ha2VBcnJheSggdmFsdWUgKSxcblx0XHRcdFx0XHRpID0gb3B0aW9ucy5sZW5ndGg7XG5cblx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0b3B0aW9uID0gb3B0aW9uc1sgaSBdO1xuXHRcdFx0XHRcdGlmICggKG9wdGlvbi5zZWxlY3RlZCA9IGpRdWVyeS5pbkFycmF5KCBvcHRpb24udmFsdWUsIHZhbHVlcyApID49IDApICkge1xuXHRcdFx0XHRcdFx0b3B0aW9uU2V0ID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBGb3JjZSBicm93c2VycyB0byBiZWhhdmUgY29uc2lzdGVudGx5IHdoZW4gbm9uLW1hdGNoaW5nIHZhbHVlIGlzIHNldFxuXHRcdFx0XHRpZiAoICFvcHRpb25TZXQgKSB7XG5cdFx0XHRcdFx0ZWxlbS5zZWxlY3RlZEluZGV4ID0gLTE7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHZhbHVlcztcblx0XHRcdH1cblx0XHR9XG5cdH1cbn0pO1xuXG4vLyBSYWRpb3MgYW5kIGNoZWNrYm94ZXMgZ2V0dGVyL3NldHRlclxualF1ZXJ5LmVhY2goWyBcInJhZGlvXCIsIFwiY2hlY2tib3hcIiBdLCBmdW5jdGlvbigpIHtcblx0alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0gPSB7XG5cdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdFx0XHRyZXR1cm4gKCBlbGVtLmNoZWNrZWQgPSBqUXVlcnkuaW5BcnJheSggalF1ZXJ5KGVsZW0pLnZhbCgpLCB2YWx1ZSApID49IDAgKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdGlmICggIXN1cHBvcnQuY2hlY2tPbiApIHtcblx0XHRqUXVlcnkudmFsSG9va3NbIHRoaXMgXS5nZXQgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybi
14938BlbGVtLmdldEF0dHJpYnV0ZShcInZhbHVlXCIpID09PSBudWxsID8gXCJvblwiIDogZWxlbS52YWx1ZTtcblx0XHR9O1xuXHR9XG59KTtcblxuXG5cblxuLy8gUmV0dXJuIGpRdWVyeSBmb3IgYXR0cmlidXRlcy1vbmx5IGluY2x1c2lvblxuXG5cbmpRdWVyeS5lYWNoKCAoXCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgbG9hZCByZXNpemUgc2Nyb2xsIHVubG9hZCBjbGljayBkYmxjbGljayBcIiArXG5cdFwibW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgXCIgK1xuXHRcImNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgZXJyb3IgY29udGV4dG1lbnVcIikuc3BsaXQoXCIgXCIpLCBmdW5jdGlvbiggaSwgbmFtZSApIHtcblxuXHQvLyBIYW5kbGUgZXZlbnQgYmluZGluZ1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDAgP1xuXHRcdFx0dGhpcy5vbiggbmFtZSwgbnVsbCwgZGF0YSwgZm4gKSA6XG5cdFx0XHR0aGlzLnRyaWdnZXIoIG5hbWUgKTtcblx0fTtcbn0pO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0aG92ZXI6IGZ1bmN0aW9uKCBmbk92ZXIsIGZuT3V0ICkge1xuXHRcdHJldHVybiB0aGlzLm1vdXNlZW50ZXIoIGZuT3ZlciApLm1vdXNlbGVhdmUoIGZuT3V0IHx8IGZuT3ZlciApO1xuXHR9LFxuXG5cdGJpbmQ6IGZ1bmN0aW9uKCB0eXBlcywgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGVzLCBudWxsLCBkYXRhLCBmbiApO1xuXHR9LFxuXHR1bmJpbmQ6IGZ1bmN0aW9uKCB0eXBlcywgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub2ZmKCB0eXBlcywgbnVsbCwgZm4gKTtcblx0fSxcblxuXHRkZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZGF0YSwgZm4gKSB7XG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTtcblx0fSxcblx0dW5kZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZm4gKSB7XG5cdFx0Ly8gKCBuYW1lc3BhY2UgKSBvciAoIHNlbGVjdG9yLCB0eXBlcyBbLCBmbl0gKVxuXHRcdHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gdGhpcy5vZmYoIHNlbGVjdG9yLCBcIioqXCIgKSA6IHRoaXMub2ZmKCB0eXBlcywgc2VsZWN0b3IgfHwgXCIqKlwiLCBmbiApO1xuXHR9XG59KTtcblxuXG52YXIgbm9uY2UgPSBqUXVlcnkubm93KCk7XG5cbnZhciBycXVlcnkgPSAoL1xcPy8pO1xuXG5cblxuLy8gU3VwcG9ydDogQW5kcm9pZCAyLjNcbi8vIFdvcmthcm91bmQgZmFpbHVyZSB0byBzdHJpbmctY2FzdCBudWxsIGlucHV0XG5qUXVlcnkucGFyc2VKU09OID0gZnVuY3Rpb24oIGRhdGEgKSB7XG5cdHJldHVybiBKU09OLnBhcnNlKCBkYXRhICsgXCJcIiApO1xufTtcblxuXG4vLyBDcm9zcy1icm93c2VyIHhtbCBwYXJzaW5nXG5qUXVlcnkucGFyc2VYTUwgPSBmdW5jdGlvbiggZGF0YSApIHtcblx0dmFyIHhtbCwgdG1wO1xuXHRpZiAoICFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiICkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0Ly8gU3VwcG9ydDogSUU5XG5cdHRyeSB7XG5cdFx0dG1wID0gbmV3IERPTVBhcnNlcigpO1xuXHRcdHhtbCA9IHRtcC5wYXJzZUZyb21TdHJpbmcoIGRhdGEsIFwidGV4dC94bWxcIiApO1xuXHR9IGNhdGNoICggZSApIHtcblx0XHR4bWwgPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRpZiAoICF4bWwgfHwgeG1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKCBcInBhcnNlcmVycm9yXCIgKS5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5LmVycm9yKCBcIkludmFsaWQgWE1MOiBcIiArIGRhdGEgKTtcblx0fVxuXHRyZXR1cm4geG1sO1xufTtcblxuXG52YXJcblx0cmhhc2ggPSAvIy4qJC8sXG5cdHJ0cyA9IC8oWz8mXSlfPVteJl0qLyxcblx0cmhlYWRlcnMgPSAvXiguKj8pOlsgXFx0XSooW15cXHJcXG5dKikkL21nLFxuXHQvLyAjNzY1MywgIzgxMjUsICM4MTUyOiBsb2NhbCBwcm90b2NvbCBkZXRlY3Rpb25cblx0cmxvY2FsUHJvdG9jb2wgPSAvXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxcblx0cm5vQ29udGVudCA9IC9eKD86R0VUfEhFQUQpJC8sXG5cdHJwcm90b2NvbCA9IC9eXFwvXFwvLyxcblx0cnVybCA9IC9eKFtcXHcuKy1dKzopKD86XFwvXFwvKD86W15cXC8/I10qQHwpKFteXFwvPyM6XSopKD86OihcXGQrKXwpfCkvLFxuXG5cdC8qIFByZWZpbHRlcnNcblx0ICogMSkgVGhleSBhcmUgdXNlZnVsIHRvIGludHJvZHVjZSBjdXN0b20gZGF0YVR5cGVzIChzZWUgYWpheC9qc29ucC5qcyBmb3IgYW4gZXhhbXBsZSlcblx0ICogMikgVGhlc2UgYXJlIGNhbGxlZDpcblx0ICogICAgLSBCRUZPUkUgYXNraW5nIGZvciBhIHRyYW5zcG9ydFxuXHQgKiAgICAtIEFGVEVSIHBhcmFtIHNlcmlhbGl6YXRpb24gKHMuZGF0YSBpcyBhIHN0cmluZyBpZiBzLnByb2Nlc3NEYXRhIGlzIHRydWUpXG5cdCAqIDMpIGtleSBpcyB0aGUgZGF0YVR5cGVcblx0ICogNCkgdGhlIGNhdGNoYWxsIHN5bWJvbCBcIipcIiBjYW4gYmUgdXNlZFxuXHQgKiA1KSBleGVjdXRpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBjb250aW51ZSBkb3duIHRvIFwiKlwiIGlmIG5lZWRlZFxuXHQgKi9cblx0cHJlZmlsdGVycyA9IHt9LFxuXG5cdC8qIFRyYW5zcG9ydHMgYmluZGluZ3Ncblx0ICogMSkga2V5IGlzIHRoZSBkYXRhVHlwZVxuXHQgKiAyKSB0aGUgY2F0Y2hhbGwgc3ltYm9sIFwiKlwiIGNhbiBiZSB1c2VkXG5cdCAqIDMpIHNlbGVjdGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGdvIHRvIFwiKlwiIGlmIG5lZWRlZFxuXHQgKi9cblx0dHJhbnNwb3J0cyA9IHt9LFxuXG5cdC8vIEF2b2lkIGNvbW1lbnQtcHJvbG9nIGNoYXIgc2VxdWVuY2UgKCMxMDA5OCk7IG11c3QgYXBwZWFzZSBsaW50IGFuZCBldmFkZSBjb21wcmVzc2lvblxuXHRhbGxUeXBlcyA9IFwiKi9cIi5jb25jYXQoIFwiKlwiICksXG5cblx0Ly8gRG9jdW1lbnQgbG9jYXRpb25cblx0YWpheExvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLmhy
14938ZWYsXG5cblx0Ly8gU2VnbWVudCBsb2NhdGlvbiBpbnRvIHBhcnRzXG5cdGFqYXhMb2NQYXJ0cyA9IHJ1cmwuZXhlYyggYWpheExvY2F0aW9uLnRvTG93ZXJDYXNlKCkgKSB8fCBbXTtcblxuLy8gQmFzZSBcImNvbnN0cnVjdG9yXCIgZm9yIGpRdWVyeS5hamF4UHJlZmlsdGVyIGFuZCBqUXVlcnkuYWpheFRyYW5zcG9ydFxuZnVuY3Rpb24gYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUgKSB7XG5cblx0Ly8gZGF0YVR5cGVFeHByZXNzaW9uIGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byBcIipcIlxuXHRyZXR1cm4gZnVuY3Rpb24oIGRhdGFUeXBlRXhwcmVzc2lvbiwgZnVuYyApIHtcblxuXHRcdGlmICggdHlwZW9mIGRhdGFUeXBlRXhwcmVzc2lvbiAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGZ1bmMgPSBkYXRhVHlwZUV4cHJlc3Npb247XG5cdFx0XHRkYXRhVHlwZUV4cHJlc3Npb24gPSBcIipcIjtcblx0XHR9XG5cblx0XHR2YXIgZGF0YVR5cGUsXG5cdFx0XHRpID0gMCxcblx0XHRcdGRhdGFUeXBlcyA9IGRhdGFUeXBlRXhwcmVzc2lvbi50b0xvd2VyQ2FzZSgpLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbXTtcblxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGZ1bmMgKSApIHtcblx0XHRcdC8vIEZvciBlYWNoIGRhdGFUeXBlIGluIHRoZSBkYXRhVHlwZUV4cHJlc3Npb25cblx0XHRcdHdoaWxlICggKGRhdGFUeXBlID0gZGF0YVR5cGVzW2krK10pICkge1xuXHRcdFx0XHQvLyBQcmVwZW5kIGlmIHJlcXVlc3RlZFxuXHRcdFx0XHRpZiAoIGRhdGFUeXBlWzBdID09PSBcIitcIiApIHtcblx0XHRcdFx0XHRkYXRhVHlwZSA9IGRhdGFUeXBlLnNsaWNlKCAxICkgfHwgXCIqXCI7XG5cdFx0XHRcdFx0KHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSkudW5zaGlmdCggZnVuYyApO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBhcHBlbmRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQoc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdKS5wdXNoKCBmdW5jICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG5cbi8vIEJhc2UgaW5zcGVjdGlvbiBmdW5jdGlvbiBmb3IgcHJlZmlsdGVycyBhbmQgdHJhbnNwb3J0c1xuZnVuY3Rpb24gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHN0cnVjdHVyZSwgb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBqcVhIUiApIHtcblxuXHR2YXIgaW5zcGVjdGVkID0ge30sXG5cdFx0c2Vla2luZ1RyYW5zcG9ydCA9ICggc3RydWN0dXJlID09PSB0cmFuc3BvcnRzICk7XG5cblx0ZnVuY3Rpb24gaW5zcGVjdCggZGF0YVR5cGUgKSB7XG5cdFx0dmFyIHNlbGVjdGVkO1xuXHRcdGluc3BlY3RlZFsgZGF0YVR5cGUgXSA9IHRydWU7XG5cdFx0alF1ZXJ5LmVhY2goIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSwgZnVuY3Rpb24oIF8sIHByZWZpbHRlck9yRmFjdG9yeSApIHtcblx0XHRcdHZhciBkYXRhVHlwZU9yVHJhbnNwb3J0ID0gcHJlZmlsdGVyT3JGYWN0b3J5KCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICk7XG5cdFx0XHRpZiAoIHR5cGVvZiBkYXRhVHlwZU9yVHJhbnNwb3J0ID09PSBcInN0cmluZ1wiICYmICFzZWVraW5nVHJhbnNwb3J0ICYmICFpbnNwZWN0ZWRbIGRhdGFUeXBlT3JUcmFuc3BvcnQgXSApIHtcblx0XHRcdFx0b3B0aW9ucy5kYXRhVHlwZXMudW5zaGlmdCggZGF0YVR5cGVPclRyYW5zcG9ydCApO1xuXHRcdFx0XHRpbnNwZWN0KCBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0gZWxzZSBpZiAoIHNlZWtpbmdUcmFuc3BvcnQgKSB7XG5cdFx0XHRcdHJldHVybiAhKCBzZWxlY3RlZCA9IGRhdGFUeXBlT3JUcmFuc3BvcnQgKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZXR1cm4gc2VsZWN0ZWQ7XG5cdH1cblxuXHRyZXR1cm4gaW5zcGVjdCggb3B0aW9ucy5kYXRhVHlwZXNbIDAgXSApIHx8ICFpbnNwZWN0ZWRbIFwiKlwiIF0gJiYgaW5zcGVjdCggXCIqXCIgKTtcbn1cblxuLy8gQSBzcGVjaWFsIGV4dGVuZCBmb3IgYWpheCBvcHRpb25zXG4vLyB0aGF0IHRha2VzIFwiZmxhdFwiIG9wdGlvbnMgKG5vdCB0byBiZSBkZWVwIGV4dGVuZGVkKVxuLy8gRml4ZXMgIzk4ODdcbmZ1bmN0aW9uIGFqYXhFeHRlbmQoIHRhcmdldCwgc3JjICkge1xuXHR2YXIga2V5LCBkZW
14938VwLFxuXHRcdGZsYXRPcHRpb25zID0galF1ZXJ5LmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9ucyB8fCB7fTtcblxuXHRmb3IgKCBrZXkgaW4gc3JjICkge1xuXHRcdGlmICggc3JjWyBrZXkgXSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0KCBmbGF0T3B0aW9uc1sga2V5IF0gPyB0YXJnZXQgOiAoIGRlZXAgfHwgKGRlZXAgPSB7fSkgKSApWyBrZXkgXSA9IHNyY1sga2V5IF07XG5cdFx0fVxuXHR9XG5cdGlmICggZGVlcCApIHtcblx0XHRqUXVlcnkuZXh0ZW5kKCB0cnVlLCB0YXJnZXQsIGRlZXAgKTtcblx0fVxuXG5cdHJldHVybiB0YXJnZXQ7XG59XG5cbi8qIEhhbmRsZXMgcmVzcG9uc2VzIHRvIGFuIGFqYXggcmVxdWVzdDpcbiAqIC0gZmluZHMgdGhlIHJpZ2h0IGRhdGFUeXBlIChtZWRpYXRlcyBiZXR3ZWVuIGNvbnRlbnQtdHlwZSBhbmQgZXhwZWN0ZWQgZGF0YVR5cGUpXG4gKiAtIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2VcbiAqL1xuZnVuY3Rpb24gYWpheEhhbmRsZVJlc3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApIHtcblxuXHR2YXIgY3QsIHR5cGUsIGZpbmFsRGF0YVR5cGUsIGZpcnN0RGF0YVR5cGUsXG5cdFx0Y29udGVudHMgPSBzLmNvbnRlbnRzLFxuXHRcdGRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzO1xuXG5cdC8vIFJlbW92ZSBhdXRvIGRhdGFUeXBlIGFuZCBnZXQgY29udGVudC10eXBlIGluIHRoZSBwcm9jZXNzXG5cdHdoaWxlICggZGF0YVR5cGVzWyAwIF0gPT09IFwiKlwiICkge1xuXHRcdGRhdGFUeXBlcy5zaGlmdCgpO1xuXHRcdGlmICggY3QgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGN0ID0gcy5taW1lVHlwZSB8fCBqcVhIUi5nZXRSZXNwb25zZUhlYWRlcihcIkNvbnRlbnQtVHlwZVwiKTtcblx0XHR9XG5cdH1cblxuXHQvLyBDaGVjayBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBrbm93biBjb250ZW50LXR5cGVcblx0aWYgKCBjdCApIHtcblx0XHRmb3IgKCB0eXBlIGluIGNvbnRlbnRzICkge1xuXHRcdFx0aWYgKCBjb250ZW50c1sgdHlwZSBdICYmIGNvbnRlbnRzWyB0eXBlIF0udGVzdCggY3QgKSApIHtcblx0XHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIHR5cGUgKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYSByZXNwb25zZSBmb3IgdGhlIGV4cGVjdGVkIGRhdGFUeXBlXG5cdGlmICggZGF0YVR5cGVzWyAwIF0gaW4gcmVzcG9uc2VzICkge1xuXHRcdGZpbmFsRGF0YVR5cGUgPSBkYXRhVHlwZXNbIDAgXTtcblx0fSBlbHNlIHtcblx0XHQvLyBUcnkgY29udmVydGlibGUgZGF0YVR5cGVzXG5cdFx0Zm9yICggdHlwZSBpbiByZXNwb25zZXMgKSB7XG5cdFx0XHRpZiAoICFkYXRhVHlwZXNbIDAgXSB8fCBzLmNvbnZlcnRlcnNbIHR5cGUgKyBcIiBcIiArIGRhdGFUeXBlc1swXSBdICkge1xuXHRcdFx0XHRmaW5hbERhdGFUeXBlID0gdHlwZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZiAoICFmaXJzdERhdGFUeXBlICkge1xuXHRcdFx0XHRmaXJzdERhdGFUeXBlID0gdHlwZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gT3IganVzdCB1c2UgZmlyc3Qgb25lXG5cdFx0ZmluYWxEYXRhVHlwZSA9IGZpbmFsRGF0YVR5cGUgfHwgZmlyc3REYXRhVHlwZTtcblx0fVxuXG5cdC8vIElmIHdlIGZvdW5kIGEgZGF0YVR5cGVcblx0Ly8gV2UgYWRkIHRoZSBkYXRhVHlwZSB0byB0aGUgbGlzdCBpZiBuZWVkZWRcblx0Ly8gYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZVxuXHRpZiAoIGZpbmFsRGF0YVR5cGUgKSB7XG5cdFx0aWYgKCBmaW5hbERhdGFUeXBlICE9PSBkYXRhVHlwZXNbIDAgXSApIHtcblx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCBmaW5hbERhdGFUeXBlICk7XG5cdFx0fVxuXHRcdHJldHVybiByZXNwb25zZXNbIGZpbmFsRGF0YVR5cGUgXTtcblx0fVxufVxuXG4vKiBDaGFpbiBjb252ZXJzaW9ucyBnaXZlbiB0aGUgcmVxdWVzdCBhbmQgdGhlIG9yaWdpbmFsIHJlc3BvbnNlXG4gKiBBbHNvIHNldHMgdGhlIHJlc3BvbnNlWFhYIGZpZWxkcyBvbiB0aGUganFYSFIgaW5zdGFuY2VcbiAqL1xuZnVuY3Rpb24gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNzICkge1xuXHR2YXIgY29udjIsIGN1cnJlbnQsIGNvbnYsIHRtcCwgcHJldixcblx0XHRjb252ZXJ0ZXJzID0ge30sXG5cdFx0Ly8gV29yayB3aXRoIGEgY29weSBvZiBkYXRhVHlwZXMgaW4gY2FzZSB3ZSBuZWVkIHRvIG1vZGlmeSBpdCBmb3IgY29udmVyc2lvblxuXHRcdGRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzLnNsaWNlKCk7XG5cblx0Ly8gQ3JlYXRlIGNvbnZlcnRlcnMgbWFwIHdpdGggbG93ZXJjYXNlZCBrZXlzXG5cdGlmICggZGF0YVR5cGVzWyAxIF0gKSB7XG5cdFx0Zm9yICggY29udiBpbiBzLmNvbnZlcnRlcnMgKSB7XG5cdFx0XHRjb252ZXJ0ZXJzWyBjb252LnRvTG93ZXJDYXNlKCkgXSA9IHMuY29udmVydGVyc1sgY29udiBdO1xuXHRcdH1cblx0fVxuXG5cdGN1cnJlbnQgPSBkYXRhVHlwZXMuc2hpZnQoKTtcblxuXHQvLyBDb252ZXJ0IHRvIGVhY2ggc2VxdWVudGlhbCBkYXRhVHlwZVxuXHR3aGlsZSAoIGN1cnJlbnQgKSB7XG5cblx0XHRpZiAoIHMucmVzcG9uc2VGaWVsZHNbIGN1cnJlbnQgXSApIHtcblx0XHRcdGpxWEhSWyBzLnJlc3BvbnNlRmllbGRzWyBjdXJyZW50IF0gXSA9IHJlc3BvbnNlO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHRoZSBkYXRhRmlsdGVyIGlmIHByb3ZpZGVkXG5cdFx0aWYgKCAhcHJldiAmJiBpc1N1Y2Nlc3MgJiYgcy5kYXRhRmlsdGVyICkge1xuXHRcdFx0cmVzcG9uc2UgPSBzLmRhdGFGaWx0ZXIoIHJlc3BvbnNlLCBzLmRhdGFUeXBlICk7XG5cdFx0fVxuXG5cdFx0cHJldiA9IGN1cnJlbnQ7XG5cdFx0Y3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpO1xuXG5cdFx0aWYgKCBjdXJyZW50ICkge1xuXG5cdFx0Ly8gVGhlcmUncyBvbmx5IHdvcmsgdG8gZG8gaWYgY3VycmVudCBkYXRhVHlwZSBpcyBub24tYXV0b1xuXHRcdFx0aWYgKCBjdXJyZW50ID09PSBcIipcIiApIHtcblxuXHRcdFx0XHRjdXJyZW50ID0gcHJldjtcblxuXHRcdFx0Ly8gQ29udmVydCByZXNwb25zZSBpZiBwcmV2IGRhdGFUeXBlIGlzIG5vbi1hdXRvIGFuZCBkaWZmZXJzIGZyb20gY3VycmVudFxuXHRcdFx0fSBlbHNlIGlmICggcHJldiAhPT0gXCIqXCIgJiYgcHJldiAhPT0gY3VycmVudCApIHtcblxuXHRcdFx0XHQvLyBTZWVrIGEgZGlyZWN0IGNvbnZlcnRlclxuXHRcdFx0XHRjb252ID0gY29udmVydGVyc1sgcHJldiArIFwiIFwiICsgY3VycmVudCBdIHx8IGNvbnZlcnRlcnNbIFwiKiBcIiArIGN1cnJlbnQgXTtcblxuXHRcdFx0XHQvLyBJZiBub25lIGZvdW5kLCBzZWVrIGEgcGFpclxuXHRcdFx0XHRpZiAoICFjb252ICkge1xuXHRcdFx0XHRcdGZvciAoIGNvbnYyIGluIGNvbnZlcnRlcnMgKSB7XG5cblx0XHRcdFx0XHRcdC8vIElmIGNvbnYyIG91dHB1dHMgY3VycmVudFxuXHRcdFx0XHRcdFx0dG1wID0gY29udjIuc3BsaXQoIFwiIFwiICk7XG5cdFx0XHRcdFx0XHRpZiAoIHRtcFsgMSBdID09PSBjdXJyZW50ICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIElmIHByZXYgY2FuIGJlIGNvbnZlcnRlZCB0byBhY2NlcHRlZCBpbnB1dFxuXHRcdFx0XHRcdFx0XHRjb252ID0gY29udmVydGVyc1sgcHJldiArIFwiIFwiICsgdG1wWyAwIF0gXSB8fFxuXHRcdFx0XHRcdFx0XHRcdGNvbnZlcnRlcnNbIFwiKiBcIiArIHRtcFsgMCBdIF07XG5cdFx0XHRcdFx0XHRcdGlmICggY29udiApIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBDb25kZW5zZSBlcXVpdmFsZW5jZSBjb252ZXJ0ZXJzXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBjb252ID09PSB0cnVlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIGNvbnYyIF07XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBPdGhlcndpc2UsIGluc2VydCB0aGUgaW50ZXJtZWRpYXRlIGRhdGFUeXBlXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggY29udmVydGVyc1sgY29udjIgXSAhPT0gdHJ1ZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnQgPSB0bXBbIDAgXTtcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCB0bXBbIDEgXSApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEFwcGx5IGNvbnZlcnRlciAoaWYgbm90IGFuIGVxdWl2YWxlbmNlKVxuXHRcdFx0XHRpZiAoIGNvbnYgIT09IHRydWUgKSB7XG5cblx0XHRcdFx0XHQvLyBVbmxlc3MgZXJyb3JzIGFyZSBhbGxvd2VkIHRvIGJ1YmJsZSwgY2F0Y2ggYW5kIHJldHVybi
14938B0aGVtXG5cdFx0XHRcdFx0aWYgKCBjb252ICYmIHNbIFwidGhyb3dzXCIgXSApIHtcblx0XHRcdFx0XHRcdHJlc3BvbnNlID0gY29udiggcmVzcG9uc2UgKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApO1xuXHRcdFx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB7IHN0YXRlOiBcInBhcnNlcmVycm9yXCIsIGVycm9yOiBjb252ID8gZSA6IFwiTm8gY29udmVyc2lvbiBmcm9tIFwiICsgcHJldiArIFwiIHRvIFwiICsgY3VycmVudCB9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7IHN0YXRlOiBcInN1Y2Nlc3NcIiwgZGF0YTogcmVzcG9uc2UgfTtcbn1cblxualF1ZXJ5LmV4dGVuZCh7XG5cblx0Ly8gQ291bnRlciBmb3IgaG9sZGluZyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBxdWVyaWVzXG5cdGFjdGl2ZTogMCxcblxuXHQvLyBMYXN0LU1vZGlmaWVkIGhlYWRlciBjYWNoZSBmb3IgbmV4dCByZXF1ZXN0XG5cdGxhc3RNb2RpZmllZDoge30sXG5cdGV0YWc6IHt9LFxuXG5cdGFqYXhTZXR0aW5nczoge1xuXHRcdHVybDogYWpheExvY2F0aW9uLFxuXHRcdHR5cGU6IFwiR0VUXCIsXG5cdFx0aXNMb2NhbDogcmxvY2FsUHJvdG9jb2wudGVzdCggYWpheExvY1BhcnRzWyAxIF0gKSxcblx0XHRnbG9iYWw6IHRydWUsXG5cdFx0cHJvY2Vzc0RhdGE6IHRydWUsXG5cdFx0YXN5bmM6IHRydWUsXG5cdFx0Y29udGVudFR5cGU6IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04XCIsXG5cdFx0Lypcblx0XHR0aW1lb3V0OiAwLFxuXHRcdGRhdGE6IG51bGwsXG5cdFx0ZGF0YVR5cGU6IG51bGwsXG5cdFx0dXNlcm5hbWU6IG51bGwsXG5cdFx0cGFzc3dvcmQ6IG51bGwsXG5cdFx0Y2FjaGU6IG51bGwsXG5cdFx0dGhyb3dzOiBmYWxzZSxcblx0XHR0cmFkaXRpb25hbDogZmFsc2UsXG5cdFx0aGVhZGVyczoge30sXG5cdFx0Ki9cblxuXHRcdGFjY2VwdHM6IHtcblx0XHRcdFwiKlwiOiBhbGxUeXBlcyxcblx0XHRcdHRleHQ6IFwidGV4dC9wbGFpblwiLFxuXHRcdFx0aHRtbDogXCJ0ZXh0L2h0bWxcIixcblx0XHRcdHhtbDogXCJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sXCIsXG5cdFx0XHRqc29uOiBcImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdFwiXG5cdFx0fSxcblxuXHRcdGNvbnRlbnRzOiB7XG5cdFx0XHR4bWw6IC94bWwvLFxuXHRcdFx0aHRtbDogL2h0bWwvLFxuXHRcdFx0anNvbjogL2pzb24vXG5cdFx0fSxcblxuXHRcdHJlc3BvbnNlRmllbGRzOiB7XG5cdFx0XHR4bWw6IFwicmVzcG9uc2VYTUxcIixcblx0XHRcdHRleHQ6IFwicmVzcG9uc2VUZXh0XCIsXG5cdFx0XHRqc29uOiBcInJlc3BvbnNlSlNPTlwiXG5cdFx0fSxcblxuXHRcdC8vIERhdGEgY29udmVydGVyc1xuXHRcdC8vIEtleXMgc2VwYXJhdGUgc291cmNlIChvciBjYXRjaGFsbCBcIipcIikgYW5kIGRlc3RpbmF0aW9uIHR5cGVzIHdpdGggYSBzaW5nbGUgc3BhY2Vcblx0XHRjb252ZXJ0ZXJzOiB7XG5cblx0XHRcdC8vIENvbnZlcnQgYW55dGhpbmcgdG8gdGV4dFxuXHRcdFx0XCIqIHRleHRcIjogU3RyaW5nLFxuXG5cdFx0XHQvLyBUZXh0IHRvIGh0bWwgKHRydWUgPSBubyB0cmFuc2Zvcm1hdGlvbilcblx0XHRcdFwidGV4dCBodG1sXCI6IHRydWUsXG5cblx0XHRcdC8vIEV2YWx1YXRlIHRleHQgYXMgYSBqc29uIGV4cHJlc3Npb25cblx0XHRcdFwidGV4dCBqc29uXCI6IGpRdWVyeS5wYXJzZUpTT04sXG5cblx0XHRcdC8vIFBhcnNlIHRleHQgYXMgeG1sXG5cdFx0XHRcInRleHQgeG1sXCI6IGpRdWVyeS5wYXJzZVhNTFxuXHRcdH0sXG5cblx0XHQvLyBGb3Igb3B0aW9ucyB0aGF0IHNob3VsZG4ndCBiZSBkZWVwIGV4dGVuZGVkOlxuXHRcdC8vIHlvdSBjYW4gYWRkIHlvdXIgb3duIGN1c3RvbSBvcHRpb25zIGhlcmUgaWZcblx0XHQvLyBhbmQgd2hlbiB5b3UgY3JlYXRlIG9uZSB0aGF0IHNob3VsZG4ndCBiZVxuXHRcdC8vIGRlZXAgZXh0ZW5kZWQgKHNlZSBhamF4RXh0ZW5kKVxuXHRcdGZsYXRPcHRpb25zOiB7XG5cdFx0XHR1cmw6IHRydWUsXG5cdFx0XHRjb250ZXh0OiB0cnVlXG5cdFx0fVxuXHR9LFxuXG5cdC8vIENyZWF0ZXMgYSBmdWxsIGZsZWRnZWQgc2V0dGluZ3Mgb2JqZWN0IGludG8gdGFyZ2V0XG5cdC8vIHdpdGggYm90aCBhamF4U2V0dGluZ3MgYW5kIHNldHRpbmdzIGZpZWxkcy5cblx0Ly8gSWYgdGFyZ2V0IGlzIG9taXR0ZWQsIHdyaXRlcyBpbnRvIGFqYXhTZXR0aW5ncy5cblx0YWpheFNldHVwOiBmdW5jdGlvbiggdGFyZ2V0LCBzZXR0aW5ncyApIHtcblx0XHRyZXR1cm4gc2V0dGluZ3MgP1xuXG5cdFx0XHQvLyBCdWlsZGluZyBhIHNldHRpbmdzIG9iamVjdFxuXHRcdFx0YWpheEV4dGVuZCggYWpheEV4dGVuZCggdGFyZ2V0LCBqUXVlcnkuYWpheFNldHRpbmdzICksIHNldHRpbmdzICkgOlxuXG5cdFx0XHQvLyBFeHRlbmRpbmcgYWpheFNldHRpbmdzXG5cdFx0XHRhamF4RXh0ZW5kKCBqUXVlcnkuYWpheFNldHRpbmdzLCB0YXJnZXQgKTtcblx0fSxcblxuXHRhamF4UHJlZmlsdGVyOiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMgKSxcblx0YWpheFRyYW5zcG9ydDogYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzICksXG5cblx0Ly8gTWFpbiBtZXRob2Rcblx0YWpheDogZnVuY3Rpb24oIHVybCwgb3B0aW9ucyApIHtcblxuXHRcdC8vIElmIHVybCBpcyBhbiBvYmplY3QsIHNpbXVsYXRlIHByZS0xLjUgc2lnbmF0dXJlXG5cdFx0aWYgKCB0eXBlb2YgdXJsID09PSBcIm9iamVjdFwiICkge1xuXHRcdFx0b3B0aW9ucyA9IHVybDtcblx0XHRcdHVybCA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHQvLyBGb3JjZSBvcHRpb25zIHRvIGJlIGFuIG9iamVjdFxuXHRcdG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG5cdFx0dmFyIHRyYW5zcG9ydCxcblx0XHRcdC8vIFVSTCB3aXRob3V0IGFudGktY2FjaGUgcGFyYW1cblx0XHRcdGNhY2hlVVJMLFxuXHRcdFx0Ly8gUmVzcG9uc2UgaGVhZGVyc1xuXHRcdFx0cmVzcG9uc2VIZWFkZXJzU3RyaW5nLFxuXHRcdFx0cmVzcG9uc2VIZWFkZXJzLFxuXHRcdFx0Ly8gdGltZW91dCBoYW5kbGVcblx0XHRcdHRpbWVvdXRUaW
149381lcixcblx0XHRcdC8vIENyb3NzLWRvbWFpbiBkZXRlY3Rpb24gdmFyc1xuXHRcdFx0cGFydHMsXG5cdFx0XHQvLyBUbyBrbm93IGlmIGdsb2JhbCBldmVudHMgYXJlIHRvIGJlIGRpc3BhdGNoZWRcblx0XHRcdGZpcmVHbG9iYWxzLFxuXHRcdFx0Ly8gTG9vcCB2YXJpYWJsZVxuXHRcdFx0aSxcblx0XHRcdC8vIENyZWF0ZSB0aGUgZmluYWwgb3B0aW9ucyBvYmplY3Rcblx0XHRcdHMgPSBqUXVlcnkuYWpheFNldHVwKCB7fSwgb3B0aW9ucyApLFxuXHRcdFx0Ly8gQ2FsbGJhY2tzIGNvbnRleHRcblx0XHRcdGNhbGxiYWNrQ29udGV4dCA9IHMuY29udGV4dCB8fCBzLFxuXHRcdFx0Ly8gQ29udGV4dCBmb3IgZ2xvYmFsIGV2ZW50cyBpcyBjYWxsYmFja0NvbnRleHQgaWYgaXQgaXMgYSBET00gbm9kZSBvciBqUXVlcnkgY29sbGVjdGlvblxuXHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0ID0gcy5jb250ZXh0ICYmICggY2FsbGJhY2tDb250ZXh0Lm5vZGVUeXBlIHx8IGNhbGxiYWNrQ29udGV4dC5qcXVlcnkgKSA/XG5cdFx0XHRcdGpRdWVyeSggY2FsbGJhY2tDb250ZXh0ICkgOlxuXHRcdFx0XHRqUXVlcnkuZXZlbnQsXG5cdFx0XHQvLyBEZWZlcnJlZHNcblx0XHRcdGRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVkKCksXG5cdFx0XHRjb21wbGV0ZURlZmVycmVkID0galF1ZXJ5LkNhbGxiYWNrcyhcIm9uY2UgbWVtb3J5XCIpLFxuXHRcdFx0Ly8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3Ncblx0XHRcdHN0YXR1c0NvZGUgPSBzLnN0YXR1c0NvZGUgfHwge30sXG5cdFx0XHQvLyBIZWFkZXJzICh0aGV5IGFyZSBzZW50IGFsbCBhdCBvbmNlKVxuXHRcdFx0cmVxdWVzdEhlYWRlcnMgPSB7fSxcblx0XHRcdHJlcXVlc3RIZWFkZXJzTmFtZXMgPSB7fSxcblx0XHRcdC8vIFRoZSBqcVhIUiBzdGF0ZVxuXHRcdFx0c3RhdGUgPSAwLFxuXHRcdFx0Ly8gRGVmYXVsdCBhYm9ydCBtZXNzYWdlXG5cdFx0XHRzdHJBYm9ydCA9IFwiY2FuY2VsZWRcIixcblx0XHRcdC8vIEZha2UgeGhyXG5cdFx0XHRqcVhIUiA9IHtcblx0XHRcdFx0cmVhZHlTdGF0ZTogMCxcblxuXHRcdFx0XHQvLyBCdWlsZHMgaGVhZGVycyBoYXNodGFibGUgaWYgbmVlZGVkXG5cdFx0XHRcdGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbigga2V5ICkge1xuXHRcdFx0XHRcdHZhciBtYXRjaDtcblx0XHRcdFx0XHRpZiAoIHN0YXRlID09PSAyICkge1xuXHRcdFx0XHRcdFx0aWYgKCAhcmVzcG9uc2VIZWFkZXJzICkge1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zZUhlYWRlcnMgPSB7fTtcblx0XHRcdFx0XHRcdFx0d2hpbGUgKCAobWF0Y2ggPSByaGVhZGVycy5leGVjKCByZXNwb25zZUhlYWRlcnNTdHJpbmcgKSkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzWyBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpIF0gPSBtYXRjaFsgMiBdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRtYXRjaCA9IHJlc3BvbnNlSGVhZGVyc1sga2V5LnRvTG93ZXJDYXNlKCkgXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIG1hdGNoID09IG51bGwgPyBudWxsIDogbWF0Y2g7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gUmF3IHN0cmluZ1xuXHRcdFx0XHRnZXRBbGxSZXNwb25zZUhlYWRlcnM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiBzdGF0ZSA9PT0gMiA/IHJlc3BvbnNlSGVhZGVyc1N0cmluZyA6IG51bGw7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gQ2FjaGVzIHRoZSBoZWFkZXJcblx0XHRcdFx0c2V0UmVxdWVzdEhlYWRlcjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdFx0XHRcdHZhciBsbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0XHRpZiAoICFzdGF0ZSApIHtcblx0XHRcdFx0XHRcdG5hbWUgPSByZXF1ZXN0SGVhZGVyc05hbWVzWyBsbmFtZSBdID0gcmVxdWVzdEhlYWRlcnNOYW1lc1sgbG5hbWUgXSB8fCBuYW1lO1xuXHRcdFx0XHRcdFx0cmVxdWVzdEhlYWRlcnNbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBPdmVycmlkZXMgcmVzcG9uc2UgY29udGVudC10eXBlIGhlYWRlclxuXHRcdFx0XHRvdmVycmlkZU1pbWVUeXBlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRcdFx0XHRpZiAoICFzdGF0ZSApIHtcblx0XHRcdFx0XHRcdHMubWltZVR5cGUgPSB0eXBlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0XHRzdGF0dXNDb2RlOiBmdW5jdGlvbiggbWFwICkge1xuXHRcdFx0XHRcdHZhciBjb2RlO1xuXHRcdFx0XHRcdGlmICggbWFwICkge1xuXHRcdFx0XHRcdFx0aWYgKCBzdGF0ZSA8IDIgKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAoIGNvZGUgaW4gbWFwICkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIExhenktYWRkIHRoZSBuZXcgY2FsbGJhY2sgaW4gYSB3YXkgdGhhdCBwcmVzZXJ2ZXMgb2xkIG9uZXNcblx0XHRcdFx0XHRcdFx0XHRzdGF0dXNDb2RlWyBjb2RlIF0gPSBbIHN0YXR1c0NvZGVbIGNvZGUgXSwgbWFwWyBjb2RlIF0gXTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Ly8gRXhlY3V0ZSB0aGUgYXBwcm9wcmlhdGUgY2FsbGJhY2tzXG5cdFx0XHRcdFx0XHRcdGpxWEhSLmFsd2F5cyggbWFwWyBqcVhIUi5zdGF0dXMgXSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBDYW5jZWwgdGhlIHJlcXVlc3Rcblx0XHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCBzdGF0dXNUZXh0ICkge1xuXHRcdFx0XHRcdHZhciBmaW5hbFRleHQgPSBzdGF0dXNUZXh0IHx8IHN0ckFib3J0O1xuXHRcdFx0XHRcdGlmICggdHJhbnNwb3J0ICkge1xuXHRcdFx0XHRcdFx0dHJhbnNwb3J0LmFib3J0KCBmaW5hbFRleHQgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZG9uZSggMCwgZmluYWxUZXh0ICk7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHQvLyBBdHRhY2ggZGVmZXJyZWRzXG5cdFx0ZGVmZXJyZWQucHJvbWlzZSgganFYSF
14938IgKS5jb21wbGV0ZSA9IGNvbXBsZXRlRGVmZXJyZWQuYWRkO1xuXHRcdGpxWEhSLnN1Y2Nlc3MgPSBqcVhIUi5kb25lO1xuXHRcdGpxWEhSLmVycm9yID0ganFYSFIuZmFpbDtcblxuXHRcdC8vIFJlbW92ZSBoYXNoIGNoYXJhY3RlciAoIzc1MzE6IGFuZCBzdHJpbmcgcHJvbW90aW9uKVxuXHRcdC8vIEFkZCBwcm90b2NvbCBpZiBub3QgcHJvdmlkZWQgKHByZWZpbHRlcnMgbWlnaHQgZXhwZWN0IGl0KVxuXHRcdC8vIEhhbmRsZSBmYWxzeSB1cmwgaW4gdGhlIHNldHRpbmdzIG9iamVjdCAoIzEwMDkzOiBjb25zaXN0ZW5jeSB3aXRoIG9sZCBzaWduYXR1cmUpXG5cdFx0Ly8gV2UgYWxzbyB1c2UgdGhlIHVybCBwYXJhbWV0ZXIgaWYgYXZhaWxhYmxlXG5cdFx0cy51cmwgPSAoICggdXJsIHx8IHMudXJsIHx8IGFqYXhMb2NhdGlvbiApICsgXCJcIiApLnJlcGxhY2UoIHJoYXNoLCBcIlwiIClcblx0XHRcdC5yZXBsYWNlKCBycHJvdG9jb2wsIGFqYXhMb2NQYXJ0c1sgMSBdICsgXCIvL1wiICk7XG5cblx0XHQvLyBBbGlhcyBtZXRob2Qgb3B0aW9uIHRvIHR5cGUgYXMgcGVyIHRpY2tldCAjMTIwMDRcblx0XHRzLnR5cGUgPSBvcHRpb25zLm1ldGhvZCB8fCBvcHRpb25zLnR5cGUgfHwgcy5tZXRob2QgfHwgcy50eXBlO1xuXG5cdFx0Ly8gRXh0cmFjdCBkYXRhVHlwZXMgbGlzdFxuXHRcdHMuZGF0YVR5cGVzID0galF1ZXJ5LnRyaW0oIHMuZGF0YVR5cGUgfHwgXCIqXCIgKS50b0xvd2VyQ2FzZSgpLm1hdGNoKCBybm90d2hpdGUgKSB8fCBbIFwiXCIgXTtcblxuXHRcdC8vIEEgY3Jvc3MtZG9tYWluIHJlcXVlc3QgaXMgaW4gb3JkZXIgd2hlbiB3ZSBoYXZlIGEgcHJvdG9jb2w6aG9zdDpwb3J0IG1pc21hdGNoXG5cdFx0aWYgKCBzLmNyb3NzRG9tYWluID09IG51bGwgKSB7XG5cdFx0XHRwYXJ0cyA9IHJ1cmwuZXhlYyggcy51cmwudG9Mb3dlckNhc2UoKSApO1xuXHRcdFx0cy5jcm9zc0RvbWFpbiA9ICEhKCBwYXJ0cyAmJlxuXHRcdFx0XHQoIHBhcnRzWyAxIF0gIT09IGFqYXhMb2NQYXJ0c1sgMSBdIHx8IHBhcnRzWyAyIF0gIT09IGFqYXhMb2NQYXJ0c1sgMiBdIHx8XG5cdFx0XHRcdFx0KCBwYXJ0c1sgMyBdIHx8ICggcGFydHNbIDEgXSA9PT0gXCJodHRwOlwiID8gXCI4MFwiIDogXCI0NDNcIiApICkgIT09XG5cdFx0XHRcdFx0XHQoIGFqYXhMb2NQYXJ0c1sgMyBdIHx8ICggYWpheExvY1BhcnRzWyAxIF0gPT09IFwiaHR0cDpcIiA/IFwiODBcIiA6IFwiNDQzXCIgKSApIClcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Ly8gQ29udmVydCBkYXRhIGlmIG5vdCBhbHJlYWR5IGEgc3RyaW5nXG5cdFx0aWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0YSAmJiB0eXBlb2Ygcy5kYXRhICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cy5kYXRhID0galF1ZXJ5LnBhcmFtKCBzLmRhdGEsIHMudHJhZGl0aW9uYWwgKTtcblx0XHR9XG5cblx0XHQvLyBBcHBseSBwcmVmaWx0ZXJzXG5cdFx0aW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMsIHMsIG9wdGlvbnMsIGpxWEhSICk7XG5cblx0XHQvLyBJZiByZXF1ZXN0IHdhcyBhYm9ydGVkIGluc2lkZSBhIHByZWZpbHRlciwgc3RvcCB0aGVyZVxuXHRcdGlmICggc3RhdGUgPT09IDIgKSB7XG5cdFx0XHRyZXR1cm4ganFYSFI7XG5cdFx0fVxuXG5cdFx0Ly8gV2UgY2FuIGZpcmUgZ2xvYmFsIGV2ZW50cyBhcyBvZiBub3cgaWYgYXNrZWQgdG9cblx0XHQvLyBEb24ndCBmaXJlIGV2ZW50cyBpZiBqUXVlcnkuZXZlbnQgaXMgdW5kZWZpbmVkIGluIGFuIEFNRC11c2FnZSBzY2VuYXJpbyAoIzE1MTE4KVxuXHRcdGZpcmVHbG9iYWxzID0galF1ZXJ5LmV2ZW50ICYmIHMuZ2xvYmFsO1xuXG5cdFx0Ly8gV2F0Y2ggZm9yIGEgbmV3IHNldCBvZiByZXF1ZXN0c1xuXHRcdGlmICggZmlyZUdsb2JhbHMgJiYgalF1ZXJ5LmFjdGl2ZSsrID09PSAwICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoXCJhamF4U3RhcnRcIik7XG5cdFx0fVxuXG5cdFx0Ly8gVXBwZXJjYXNlIHRoZSB0eXBlXG5cdFx0cy50eXBlID0gcy50eXBlLnRvVXBwZXJDYXNlKCk7XG5cblx0XHQvLyBEZXRlcm1pbmUgaWYgcmVxdWVzdCBoYXMgY29udGVudFxuXHRcdHMuaGFzQ29udGVudCA9ICFybm9Db250ZW50LnRlc3QoIHMudHlwZSApO1xuXG5cdFx0Ly8gU2F2ZSB0aGUgVVJMIGluIGNhc2Ugd2UncmUgdG95aW5nIHdpdGggdGhlIElmLU1vZGlmaWVkLVNpbmNlXG5cdFx0Ly8gYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyIGxhdGVyIG9uXG5cdFx0Y2FjaGVVUkwgPSBzLnVybDtcblxuXHRcdC8vIE1vcmUgb3B0aW9ucyBoYW5kbGluZyBmb3IgcmVxdWVzdHMgd2l0aCBubyBjb250ZW50XG5cdFx0aWYgKCAhcy5oYXNDb250ZW50ICkge1xuXG5cdFx0XHQvLyBJZiBkYXRhIGlzIGF2YWlsYWJsZSwgYXBwZW5kIGRhdGEgdG8gdXJsXG5cdFx0XHRpZiAoIHMuZGF0YSApIHtcblx0XHRcdFx0Y2FjaGVVUkwgPSAoIHMudXJsICs9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyBcIiZcIiA6IFwiP1wiICkgKyBzLmRhdGEgKTtcblx0XHRcdFx0Ly8gIzk2ODI6IHJlbW92ZSBkYXRhIHNvIHRoYXQgaXQncyBub3QgdXNlZCBpbiBhbiBldmVudHVhbCByZXRyeVxuXHRcdFx0XHRkZWxldGUgcy5kYXRhO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgYW50aS1jYWNoZSBpbiB1cmwgaWYgbmVlZGVkXG5cdFx0XHRpZiAoIHMuY2FjaGUgPT09IGZhbHNlICkge1xuXHRcdFx0XHRzLnVybCA9IHJ0cy50ZXN0KCBjYWNoZVVSTCApID9cblxuXHRcdFx0XHRcdC8vIElmIHRoZXJlIGlzIGFscmVhZHkgYSAnXycgcGFyYW1ldGVyLCBzZXQgaXRzIHZhbHVlXG5cdFx0XHRcdFx0Y2FjaGVVUkwucmVwbGFjZSggcnRzLCBcIiQxXz1cIiArIG5vbmNlKysgKSA6XG5cblx0XHRcdFx0XHQvLyBPdGhlcndpc2UgYWRkIG9uZSB0byB0aGUgZW5kXG5cdFx0XHRcdFx0Y2FjaGVVUkwgKyAoIHJxdWVyeS50ZXN0KCBjYWNoZVVSTCApID8gXCImXCIgOiBcIj9cIiApICsgXCJfPVwiICsgbm9uY2UrKztcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBTZXQgdGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciwgaWYgaW4gaWZNb2RpZmllZCBtb2RlLlxuXHRcdGlmICggcy5pZk1vZGlmaWVkICkge1xuXHRcdFx0aWYgKCBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdICkge1xuXHRcdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIklmLU1vZGlmaWVkLVNpbmNlXCIsIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKTtcblx0XHRcdH1cblx0XHRcdGlmICggalF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gKSB7XG5cdFx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIFwiSWYtTm9uZS1NYXRjaFwiLCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFNldCB0aGUgY29ycmVjdCBoZWFkZXIsIGlmIGRhdGEgaXMgYmVpbmcgc2VudFxuXHRcdGlmICggcy5kYXRhICYmIHMuaGFzQ29udGVudCAmJiBzLmNvbnRlbn
14938RUeXBlICE9PSBmYWxzZSB8fCBvcHRpb25zLmNvbnRlbnRUeXBlICkge1xuXHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJDb250ZW50LVR5cGVcIiwgcy5jb250ZW50VHlwZSApO1xuXHRcdH1cblxuXHRcdC8vIFNldCB0aGUgQWNjZXB0cyBoZWFkZXIgZm9yIHRoZSBzZXJ2ZXIsIGRlcGVuZGluZyBvbiB0aGUgZGF0YVR5cGVcblx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKFxuXHRcdFx0XCJBY2NlcHRcIixcblx0XHRcdHMuZGF0YVR5cGVzWyAwIF0gJiYgcy5hY2NlcHRzWyBzLmRhdGFUeXBlc1swXSBdID9cblx0XHRcdFx0cy5hY2NlcHRzWyBzLmRhdGFUeXBlc1swXSBdICsgKCBzLmRhdGFUeXBlc1sgMCBdICE9PSBcIipcIiA/IFwiLCBcIiArIGFsbFR5cGVzICsgXCI7IHE9MC4wMVwiIDogXCJcIiApIDpcblx0XHRcdFx0cy5hY2NlcHRzWyBcIipcIiBdXG5cdFx0KTtcblxuXHRcdC8vIENoZWNrIGZvciBoZWFkZXJzIG9wdGlvblxuXHRcdGZvciAoIGkgaW4gcy5oZWFkZXJzICkge1xuXHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggaSwgcy5oZWFkZXJzWyBpIF0gKTtcblx0XHR9XG5cblx0XHQvLyBBbGxvdyBjdXN0b20gaGVhZGVycy9taW1ldHlwZXMgYW5kIGVhcmx5IGFib3J0XG5cdFx0aWYgKCBzLmJlZm9yZVNlbmQgJiYgKCBzLmJlZm9yZVNlbmQuY2FsbCggY2FsbGJhY2tDb250ZXh0LCBqcVhIUiwgcyApID09PSBmYWxzZSB8fCBzdGF0ZSA9PT0gMiApICkge1xuXHRcdFx0Ly8gQWJvcnQgaWYgbm90IGRvbmUgYWxyZWFkeSBhbmQgcmV0dXJuXG5cdFx0XHRyZXR1cm4ganFYSFIuYWJvcnQoKTtcblx0XHR9XG5cblx0XHQvLyBBYm9ydGluZyBpcyBubyBsb25nZXIgYSBjYW5jZWxsYXRpb25cblx0XHRzdHJBYm9ydCA9IFwiYWJvcnRcIjtcblxuXHRcdC8vIEluc3RhbGwgY2FsbGJhY2tzIG9uIGRlZmVycmVkc1xuXHRcdGZvciAoIGkgaW4geyBzdWNjZXNzOiAxLCBlcnJvcjogMSwgY29tcGxldGU6IDEgfSApIHtcblx0XHRcdGpxWEhSWyBpIF0oIHNbIGkgXSApO1xuXHRcdH1cblxuXHRcdC8vIEdldCB0cmFuc3BvcnRcblx0XHR0cmFuc3BvcnQgPSBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cywgcywgb3B0aW9ucywganFYSFIgKTtcblxuXHRcdC8vIElmIG5vIHRyYW5zcG9ydCwgd2UgYXV0by1hYm9ydFxuXHRcdGlmICggIXRyYW5zcG9ydCApIHtcblx0XHRcdGRvbmUoIC0xLCBcIk5vIFRyYW5zcG9ydFwiICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGpxWEhSLnJlYWR5U3RhdGUgPSAxO1xuXG5cdFx0XHQvLyBTZW5kIGdsb2JhbCBldmVudFxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcblx0XHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIFwiYWpheFNlbmRcIiwgWyBqcVhIUiwgcyBdICk7XG5cdFx0XHR9XG5cdFx0XHQvLyBUaW1lb3V0XG5cdFx0XHRpZiAoIHMuYXN5bmMgJiYgcy50aW1lb3V0ID4gMCApIHtcblx0XHRcdFx0dGltZW91dFRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRqcVhIUi5hYm9ydChcInRpbWVvdXRcIik7XG5cdFx0XHRcdH0sIHMudGltZW91dCApO1xuXHRcdFx0fVxuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRzdGF0ZSA9IDE7XG5cdFx0XHRcdHRyYW5zcG9ydC5zZW5kKCByZXF1ZXN0SGVhZGVycywgZG9uZSApO1xuXHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cdFx0XHRcdC8vIFByb3BhZ2F0ZSBleGNlcHRpb24gYXMgZXJyb3IgaWYgbm90IGRvbmVcblx0XHRcdFx0aWYgKCBzdGF0ZSA8IDIgKSB7XG5cdFx0XHRcdFx0ZG9uZSggLTEsIGUgKTtcblx0XHRcdFx0Ly8gU2ltcGx5IHJldGhyb3cgb3RoZXJ3aXNlXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENhbGxiYWNrIGZvciB3aGVuIGV2ZXJ5dGhpbmcgaXMgZG9uZVxuXHRcdGZ1bmN0aW9uIGRvbmUoIHN0YXR1cywgbmF0aXZlU3RhdHVzVGV4dCwgcmVzcG9uc2VzLCBoZWFkZXJzICkge1xuXHRcdFx0dmFyIGlzU3VjY2Vzcywgc3VjY2VzcywgZXJyb3IsIHJlc3BvbnNlLCBtb2RpZmllZCxcblx0XHRcdFx0c3RhdHVzVGV4dCA9IG5hdGl2ZVN0YXR1c1RleHQ7XG5cblx0XHRcdC8vIENhbGxlZCBvbmNlXG5cdFx0XHRpZiAoIHN0YXRlID09PSAyICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0YXRlIGlzIFwiZG9uZVwiIG5vd1xuXHRcdFx0c3RhdGUgPSAyO1xuXG5cdFx0XHQvLyBDbGVhciB0aW1lb3V0IGlmIGl0IGV4aXN0c1xuXHRcdFx0aWYgKCB0aW1lb3V0VGltZXIgKSB7XG5cdFx0XHRcdGNsZWFyVGltZW91dCggdGltZW91dFRpbWVyICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIERlcmVmZXJlbmNlIHRyYW5zcG9ydCBmb3IgZWFybHkgZ2FyYmFnZSBjb2xsZWN0aW9uXG5cdFx0XHQvLyAobm8gbWF0dGVyIGhvdyBsb25nIHRoZSBqcVhIUiBvYmplY3Qgd2lsbCBiZSB1c2VkKVxuXHRcdFx0dHJhbnNwb3J0ID0gdW5kZWZpbmVkO1xuXG5cdFx0XHQvLyBDYWNoZSByZXNwb25zZSBoZWFkZXJzXG5cdFx0XHRyZXNwb25zZUhlYWRlcnNTdHJpbmcgPSBoZWFkZXJzIHx8IFwiXCI7XG5cblx0XHRcdC8vIFNldCByZWFkeVN0YXRlXG5cdFx0XHRqcVhIUi5yZWFkeVN0YXRlID0gc3RhdHVzID4gMCA/IDQgOiAwO1xuXG5cdFx0XHQvLyBEZXRlcm1pbmUgaWYgc3VjY2Vzc2Z1bFxuXHRcdFx0aXNTdWNjZXNzID0gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDAgfHwgc3RhdHVzID09PSAzMDQ7XG5cblx0XHRcdC8vIEdldCByZXNwb25zZSBkYXRhXG5cdFx0XHRpZiAoIHJlc3BvbnNlcyApIHtcblx0XHRcdFx0cmVzcG9uc2UgPSBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9uc2VzICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbnZlcnQgbm8gbWF0dGVyIHdoYXQgKHRoYXQgd2F5IHJlc3BvbnNlWFhYIGZpZWxkcyBhcmUgYWx3YXlzIHNldClcblx0XHRcdHJlc3BvbnNlID0gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNzICk7XG5cblx0XHRcdC8vIElmIHN1Y2Nlc3NmdWwsIGhhbmRsZSB0eXBlIGNoYWluaW5nXG5cdFx0XHRpZiAoIGlzU3VjY2VzcyApIHtcblxuXHRcdFx0XHQvLyBTZXQgdGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciwgaWYgaW4gaWZNb2RpZmllZCBtb2RlLlxuXHRcdFx0XHRpZiAoIHMuaWZNb2RpZmllZCApIHtcblx0XHRcdFx0XHRtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKFwiTGFzdC1Nb2RpZmllZFwiKTtcblx0XHRcdFx0XHRpZiAoIG1vZGlmaWVkICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSA9IG1vZGlmaWVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKFwiZXRhZ1wiKTtcblx0XHRcdFx0XHRpZiAoIG1vZGlmaWVkICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gPSBtb2RpZmllZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBpZiBubyBjb250ZW50XG5cdFx0XHRcdGlmICggc3RhdHVzID09PSAyMDQgfHwgcy50eXBlID09PSBcIkhFQURcIiApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJub2NvbnRlbn
14938RcIjtcblxuXHRcdFx0XHQvLyBpZiBub3QgbW9kaWZpZWRcblx0XHRcdFx0fSBlbHNlIGlmICggc3RhdHVzID09PSAzMDQgKSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IFwibm90bW9kaWZpZWRcIjtcblxuXHRcdFx0XHQvLyBJZiB3ZSBoYXZlIGRhdGEsIGxldCdzIGNvbnZlcnQgaXRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gcmVzcG9uc2Uuc3RhdGU7XG5cdFx0XHRcdFx0c3VjY2VzcyA9IHJlc3BvbnNlLmRhdGE7XG5cdFx0XHRcdFx0ZXJyb3IgPSByZXNwb25zZS5lcnJvcjtcblx0XHRcdFx0XHRpc1N1Y2Nlc3MgPSAhZXJyb3I7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIEV4dHJhY3QgZXJyb3IgZnJvbSBzdGF0dXNUZXh0IGFuZCBub3JtYWxpemUgZm9yIG5vbi1hYm9ydHNcblx0XHRcdFx0ZXJyb3IgPSBzdGF0dXNUZXh0O1xuXHRcdFx0XHRpZiAoIHN0YXR1cyB8fCAhc3RhdHVzVGV4dCApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJlcnJvclwiO1xuXHRcdFx0XHRcdGlmICggc3RhdHVzIDwgMCApIHtcblx0XHRcdFx0XHRcdHN0YXR1cyA9IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNldCBkYXRhIGZvciB0aGUgZmFrZSB4aHIgb2JqZWN0XG5cdFx0XHRqcVhIUi5zdGF0dXMgPSBzdGF0dXM7XG5cdFx0XHRqcVhIUi5zdGF0dXNUZXh0ID0gKCBuYXRpdmVTdGF0dXNUZXh0IHx8IHN0YXR1c1RleHQgKSArIFwiXCI7XG5cblx0XHRcdC8vIFN1Y2Nlc3MvRXJyb3Jcblx0XHRcdGlmICggaXNTdWNjZXNzICkge1xuXHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIHN1Y2Nlc3MsIHN0YXR1c1RleHQsIGpxWEhSIF0gKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRlZmVycmVkLnJlamVjdFdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCwgZXJyb3IgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0anFYSFIuc3RhdHVzQ29kZSggc3RhdHVzQ29kZSApO1xuXHRcdFx0c3RhdHVzQ29kZSA9IHVuZGVmaW5lZDtcblxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcblx0XHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIGlzU3VjY2VzcyA/IFwiYWpheFN1Y2Nlc3NcIiA6IFwiYWpheEVycm9yXCIsXG5cdFx0XHRcdFx0WyBqcVhIUiwgcywgaXNTdWNjZXNzID8gc3VjY2VzcyA6IGVycm9yIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29tcGxldGVcblx0XHRcdGNvbXBsZXRlRGVmZXJyZWQuZmlyZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCBdICk7XG5cblx0XHRcdGlmICggZmlyZUdsb2JhbHMgKSB7XG5cdFx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBcImFqYXhDb21wbGV0ZVwiLCBbIGpxWEhSLCBzIF0gKTtcblx0XHRcdFx0Ly8gSGFuZGxlIHRoZSBnbG9iYWwgQUpBWCBjb3VudGVyXG5cdFx0XHRcdGlmICggISggLS1qUXVlcnkuYWN0aXZlICkgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoXCJhamF4U3RvcFwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBqcVhIUjtcblx0fSxcblxuXHRnZXRKU09OOiBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdldCggdXJsLCBkYXRhLCBjYWxsYmFjaywgXCJqc29uXCIgKTtcblx0fSxcblxuXHRnZXRTY3JpcHQ6IGZ1bmN0aW9uKCB1cmwsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIHVuZGVmaW5lZCwgY2FsbGJhY2ssIFwic2NyaXB0XCIgKTtcblx0fVxufSk7XG5cbmpRdWVyeS5lYWNoKCBbIFwiZ2V0XCIsIFwicG9zdFwiIF0sIGZ1bmN0aW9uKCBpLCBtZXRob2QgKSB7XG5cdGpRdWVyeVsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjaywgdHlwZSApIHtcblx0XHQvLyBTaGlmdCBhcmd1bWVudHMgaWYgZGF0YSBhcmd1bWVudCB3YXMgb21pdHRlZFxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGRhdGEgKSApIHtcblx0XHRcdHR5cGUgPSB0eXBlIHx8IGNhbGxiYWNrO1xuXHRcdFx0Y2FsbGJhY2sgPSBkYXRhO1xuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRyZXR1cm4galF1ZXJ5LmFqYXgoe1xuXHRcdFx0dXJsOiB1cmwsXG5cdFx0XHR0eXBlOiBtZXRob2QsXG5cdFx0XHRkYXRhVHlwZTogdHlwZSxcblx0XHRcdGRhdGE6IGRhdGEsXG5cdFx0XHRzdWNjZXNzOiBjYWxsYmFja1xuXHRcdH0pO1xuXHR9O1xufSk7XG5cblxualF1ZXJ5Ll9ldmFsVXJsID0gZnVuY3Rpb24oIHVybCApIHtcblx0cmV0dXJuIGpRdWVyeS5hamF4KHtcblx0XHR1cmw6IHVybCxcblx0XHR0eXBlOiBcIkdFVFwiLFxuXHRcdGRhdGFUeXBlOiBcInNjcmlwdFwiLFxuXHRcdGFzeW5jOiBmYWxzZSxcblx0XHRnbG9iYWw6IGZhbHNlLFxuXHRcdFwidGhyb3dzXCI6IHRydWVcblx0fSk7XG59O1xuXG5cbmpRdWVyeS5mbi5leHRlbmQoe1xuXHR3cmFwQWxsOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHR2YXIgd3JhcDtcblxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBBbGwoIGh0bWwuY2FsbCh0aGlzLCBpKSApO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKCB0aGlzWyAwIF0gKSB7XG5cblx0XHRcdC8vIFRoZSBlbGVtZW50cyB0byB3cmFwIHRoZSB0YXJnZXQgYXJvdW5kXG5cdFx0XHR3cmFwID0galF1ZXJ5KCBodG1sLCB0aGlzWyAwIF0ub3duZXJEb2N1bWVudCApLmVxKCAwICkuY2xvbmUoIHRydWUgKTtcblxuXHRcdFx0aWYgKCB0aGlzWyAwIF0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0d3JhcC5pbnNlcnRCZWZvcmUoIHRoaXNbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHR3cmFwLm1hcChmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIGVsZW0gPSB0aGlzO1xuXG5cdFx0XHRcdHdoaWxlICggZWxlbS5maXJzdEVsZW1lbnRDaGlsZCApIHtcblx0XHRcdFx0XHRlbGVtID0gZWxlbS5maXJzdEVsZW1lbnRDaGlsZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybi
14938BlbGVtO1xuXHRcdFx0fSkuYXBwZW5kKCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0d3JhcElubmVyOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBodG1sICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS53cmFwSW5uZXIoIGh0bWwuY2FsbCh0aGlzLCBpKSApO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdHZhciBzZWxmID0galF1ZXJ5KCB0aGlzICksXG5cdFx0XHRcdGNvbnRlbnRzID0gc2VsZi5jb250ZW50cygpO1xuXG5cdFx0XHRpZiAoIGNvbnRlbnRzLmxlbmd0aCApIHtcblx0XHRcdFx0Y29udGVudHMud3JhcEFsbCggaHRtbCApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzZWxmLmFwcGVuZCggaHRtbCApO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9LFxuXG5cdHdyYXA6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdHZhciBpc0Z1bmN0aW9uID0galF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKTtcblxuXHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRqUXVlcnkoIHRoaXMgKS53cmFwQWxsKCBpc0Z1bmN0aW9uID8gaHRtbC5jYWxsKHRoaXMsIGkpIDogaHRtbCApO1xuXHRcdH0pO1xuXHR9LFxuXG5cdHVud3JhcDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdGlmICggIWpRdWVyeS5ub2RlTmFtZSggdGhpcywgXCJib2R5XCIgKSApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkucmVwbGFjZVdpdGgoIHRoaXMuY2hpbGROb2RlcyApO1xuXHRcdFx0fVxuXHRcdH0pLmVuZCgpO1xuXHR9XG59KTtcblxuXG5qUXVlcnkuZXhwci5maWx0ZXJzLmhpZGRlbiA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHQvLyBTdXBwb3J0OiBPcGVyYSA8PSAxMi4xMlxuXHQvLyBPcGVyYSByZXBvcnRzIG9mZnNldFdpZHRocyBhbmQgb2Zmc2V0SGVpZ2h0cyBsZXNzIHRoYW4gemVybyBvbiBzb21lIGVsZW1lbnRzXG5cdHJldHVybiBlbGVtLm9mZnNldFdpZHRoIDw9IDAgJiYgZWxlbS5vZmZzZXRIZWlnaHQgPD0gMDtcbn07XG5qUXVlcnkuZXhwci5maWx0ZXJzLnZpc2libGUgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0cmV0dXJuICFqUXVlcnkuZXhwci5maWx0ZXJzLmhpZGRlbiggZWxlbSApO1xufTtcblxuXG5cblxudmFyIHIyMCA9IC8lMjAvZyxcblx0cmJyYWNrZXQgPSAvXFxbXFxdJC8sXG5cdHJDUkxGID0gL1xccj9cXG4vZyxcblx0cnN1Ym1pdHRlclR5cGVzID0gL14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLFxuXHRyc3VibWl0dGFibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7XG5cbmZ1bmN0aW9uIGJ1aWxkUGFyYW1zKCBwcmVmaXgsIG9iaiwgdHJhZGl0aW9uYWwsIGFkZCApIHtcblx0dmFyIG5hbWU7XG5cblx0aWYgKCBqUXVlcnkuaXNBcnJheSggb2JqICkgKSB7XG5cdFx0Ly8gU2VyaWFsaXplIGFycmF5IGl0ZW0uXG5cdFx0alF1ZXJ5LmVhY2goIG9iaiwgZnVuY3Rpb24oIGksIHYgKSB7XG5cdFx0XHRpZiAoIHRyYWRpdGlvbmFsIHx8IHJicmFja2V0LnRlc3QoIHByZWZpeCApICkge1xuXHRcdFx0XHQvLyBUcmVhdCBlYWNoIGFycmF5IGl0ZW0gYXMgYSBzY2FsYXIuXG5cdFx0XHRcdGFkZCggcHJlZml4LCB2ICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIEl0ZW0gaXMgbm9uLXNjYWxhciAoYXJyYXkgb3Igb2JqZWN0KSwgZW5jb2RlIGl0cyBudW1lcmljIGluZGV4LlxuXHRcdFx0XHRidWlsZFBhcmFtcyggcHJlZml4ICsgXCJbXCIgKyAoIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiID8gaSA6IFwiXCIgKSArIFwiXVwiLCB2LCB0cmFkaXRpb25hbCwgYWRkICk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0fSBlbHNlIGlmICggIXRyYWRpdGlvbmFsICYmIGpRdWVyeS50eXBlKCBvYmogKSA9PT0gXCJvYmplY3RcIiApIHtcblx0XHQvLyBTZXJpYWxpemUgb2JqZWN0IGl0ZW0uXG5cdFx0Zm9yICggbmFtZSBpbiBvYmogKSB7XG5cdFx0XHRidWlsZFBhcmFtcyggcHJlZml4ICsgXCJbXCIgKyBuYW1lICsgXCJdXCIsIG9ialsgbmFtZSBdLCB0cmFkaXRpb25hbCwgYWRkICk7XG5cdFx0fVxuXG5cdH0gZWxzZSB7XG5cdFx0Ly8gU2VyaWFsaXplIHNjYWxhciBpdGVtLlxuXHRcdGFkZCggcHJlZml4LCBvYmogKTtcblx0fVxufVxuXG4vLyBTZXJpYWxpemUgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50cyBvciBhIHNldCBvZlxuLy8ga2V5L3ZhbHVlcyBpbnRvIGEgcXVlcnkgc3RyaW5nXG5qUXVlcnkucGFyYW0gPSBmdW5jdGlvbiggYSwgdHJhZGl0aW9uYWwgKSB7XG5cdHZhciBwcmVmaXgsXG5cdFx0cyA9IFtdLFxuXHRcdGFkZCA9IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXHRcdFx0Ly8gSWYgdmFsdWUgaXMgYSBmdW5jdGlvbiwgaW52b2tlIGl0IGFuZCByZXR1cm4gaXRzIHZhbHVlXG5cdFx0XHR2YWx1ZSA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApID8gdmFsdWUoKSA6ICggdmFsdWUgPT0gbnVsbCA/IFwiXCIgOiB2YWx1ZSApO1xuXHRcdFx0c1sgcy5sZW5ndGggXSA9IGVuY29kZVVSSUNvbXBvbmVudCgga2V5ICkgKyBcIj1cIiArIGVuY29kZVVSSUNvbXBvbmVudCggdmFsdWUgKTtcblx0XHR9O1xuXG5cdC8vIFNldCB0cmFkaXRpb25hbCB0byB0cnVlIGZvciBqUXVlcnkgPD0gMS4zLjIgYmVoYXZpb3IuXG5cdGlmICggdHJhZGl0aW9uYWwgPT09IHVuZGVmaW5lZCApIHtcblx0XHR0cmFkaXRpb25hbCA9IGpRdWVyeS5hamF4U2V0dGluZ3MgJiYgalF1ZXJ5LmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbDtcblx0fVxuXG5cdC8vIElmIGFuIGFycmF5IHdhcyBwYXNzZWQgaW4sIGFzc3VtZSB0aGF0IGl0IGlzIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMuXG5cdGlmICggalF1ZXJ5LmlzQXJyYXkoIGEgKSB8fCAoIGEuanF1ZXJ5ICYmICFqUXVlcnkuaXNQbGFpbk9iamVjdCggYSApICkgKSB7XG5cdFx0Ly8gU2VyaWFsaXplIHRoZSBmb3JtIGVsZW1lbnRzXG5cdFx0alF1ZXJ5LmVhY2goIGEsIGZ1bmN0aW9uKCkge1xuXHRcdFx0YWRkKCB0aGlzLm5hbWUsIHRoaXMudmFsdWUgKTtcblx0XHR9KTtcblxuXHR9IGVsc2Uge1xuXHRcdC8vIElmIHRyYWRpdGlvbmFsLCBlbmNvZGUgdGhlIFwib2xkXCIgd2F5ICh0aGUgd2F5IDEuMy4yIG9yIG9sZGVyXG5cdFx0Ly8gZGlkIGl0KSwgb3RoZXJ3aXNlIGVuY29kZSBwYXJhbXMgcmVjdXJzaXZlbHkuXG5cdFx0Zm9yICggcHJlZml4IGluIGEgKSB7XG5cdFx0XHRidWlsZFBhcmFtcyggcHJlZml4LCBhWyBwcmVmaXggXSwgdHJhZGl0aW9uYWwsIGFkZCApO1xuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybi
14938B0aGUgcmVzdWx0aW5nIHNlcmlhbGl6YXRpb25cblx0cmV0dXJuIHMuam9pbiggXCImXCIgKS5yZXBsYWNlKCByMjAsIFwiK1wiICk7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKHtcblx0c2VyaWFsaXplOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4galF1ZXJ5LnBhcmFtKCB0aGlzLnNlcmlhbGl6ZUFycmF5KCkgKTtcblx0fSxcblx0c2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLm1hcChmdW5jdGlvbigpIHtcblx0XHRcdC8vIENhbiBhZGQgcHJvcEhvb2sgZm9yIFwiZWxlbWVudHNcIiB0byBmaWx0ZXIgb3IgYWRkIGZvcm0gZWxlbWVudHNcblx0XHRcdHZhciBlbGVtZW50cyA9IGpRdWVyeS5wcm9wKCB0aGlzLCBcImVsZW1lbnRzXCIgKTtcblx0XHRcdHJldHVybiBlbGVtZW50cyA/IGpRdWVyeS5tYWtlQXJyYXkoIGVsZW1lbnRzICkgOiB0aGlzO1xuXHRcdH0pXG5cdFx0LmZpbHRlcihmdW5jdGlvbigpIHtcblx0XHRcdHZhciB0eXBlID0gdGhpcy50eXBlO1xuXG5cdFx0XHQvLyBVc2UgLmlzKCBcIjpkaXNhYmxlZFwiICkgc28gdGhhdCBmaWVsZHNldFtkaXNhYmxlZF0gd29ya3Ncblx0XHRcdHJldHVybiB0aGlzLm5hbWUgJiYgIWpRdWVyeSggdGhpcyApLmlzKCBcIjpkaXNhYmxlZFwiICkgJiZcblx0XHRcdFx0cnN1Ym1pdHRhYmxlLnRlc3QoIHRoaXMubm9kZU5hbWUgKSAmJiAhcnN1Ym1pdHRlclR5cGVzLnRlc3QoIHR5cGUgKSAmJlxuXHRcdFx0XHQoIHRoaXMuY2hlY2tlZCB8fCAhcmNoZWNrYWJsZVR5cGUudGVzdCggdHlwZSApICk7XG5cdFx0fSlcblx0XHQubWFwKGZ1bmN0aW9uKCBpLCBlbGVtICkge1xuXHRcdFx0dmFyIHZhbCA9IGpRdWVyeSggdGhpcyApLnZhbCgpO1xuXG5cdFx0XHRyZXR1cm4gdmFsID09IG51bGwgP1xuXHRcdFx0XHRudWxsIDpcblx0XHRcdFx0alF1ZXJ5LmlzQXJyYXkoIHZhbCApID9cblx0XHRcdFx0XHRqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4geyBuYW1lOiBlbGVtLm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsIFwiXFxyXFxuXCIgKSB9O1xuXHRcdFx0XHRcdH0pIDpcblx0XHRcdFx0XHR7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwgXCJcXHJcXG5cIiApIH07XG5cdFx0fSkuZ2V0KCk7XG5cdH1cbn0pO1xuXG5cbmpRdWVyeS5hamF4U2V0dGluZ3MueGhyID0gZnVuY3Rpb24oKSB7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuXHR9IGNhdGNoKCBlICkge31cbn07XG5cbnZhciB4aHJJZCA9IDAsXG5cdHhockNhbGxiYWNrcyA9IHt9LFxuXHR4aHJTdWNjZXNzU3RhdHVzID0ge1xuXHRcdC8vIGZpbGUgcHJvdG9jb2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgY29kZSAwLCBhc3N1bWUgMjAwXG5cdFx0MDogMjAwLFxuXHRcdC8vIFN1cHBvcnQ6IElFOVxuXHRcdC8vICMxNDUwOiBzb21ldGltZXMgSUUgcmV0dXJucyAxMjIzIHdoZW4gaXQgc2hvdWxkIGJlIDIwNFxuXHRcdDEyMjM6IDIwNFxuXHR9LFxuXHR4aHJTdXBwb3J0ZWQgPSBqUXVlcnkuYWpheFNldHRpbmdzLnhocigpO1xuXG4vLyBTdXBwb3J0OiBJRTlcbi8vIE9wZW4gcmVxdWVzdHMgbXVzdCBiZSBtYW51YWxseSBhYm9ydGVkIG9uIHVubG9hZCAoIzUyODApXG4vLyBTZWUgaHR0cHM6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20va2IvMjg1Njc0NiBmb3IgbW9yZSBpbmZvXG5pZiAoIHdpbmRvdy5hdHRhY2hFdmVudCApIHtcblx0d2luZG93LmF0dGFjaEV2ZW50KCBcIm9udW5sb2FkXCIsIGZ1bmN0aW9uKCkge1xuXHRcdGZvciAoIHZhciBrZXkgaW4geGhyQ2FsbGJhY2tzICkge1xuXHRcdFx0eGhyQ2FsbGJhY2tzWyBrZXkgXSgpO1xuXHRcdH1cblx0fSk7XG59XG5cbnN1cHBvcnQuY29ycyA9ICEheGhyU3VwcG9ydGVkICYmICggXCJ3aXRoQ3JlZGVudGlhbHNcIiBpbiB4aHJTdXBwb3J0ZWQgKTtcbnN1cHBvcnQuYWpheCA9IHhoclN1cHBvcnRlZCA9ICEheGhyU3VwcG9ydGVkO1xuXG5qUXVlcnkuYWpheFRyYW5zcG9ydChmdW5jdGlvbiggb3B0aW9ucyApIHtcblx0dmFyIGNhbGxiYWNrO1xuXG5cdC8vIENyb3NzIGRvbWFpbiBvbmx5IGFsbG93ZWQgaWYgc3VwcG9ydGVkIHRocm91Z2ggWE1MSHR0cFJlcXVlc3Rcblx0aWYgKCBzdXBwb3J0LmNvcnMgfHwgeGhyU3VwcG9ydGVkICYmICFvcHRpb25zLmNyb3NzRG9tYWluICkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW5kOiBmdW5jdGlvbiggaGVhZGVycywgY29tcGxldGUgKSB7XG5cdFx0XHRcdHZhciBpLFxuXHRcdFx0XHRcdHhociA9IG9wdGlvbnMueGhyKCksXG5cdFx0XHRcdFx0aWQgPSArK3hocklkO1xuXG5cdFx0XHRcdHhoci5vcGVuKCBvcHRpb25zLnR5cGUsIG9wdGlvbnMudXJsLCBvcHRpb25zLmFzeW5jLCBvcHRpb25zLnVzZXJuYW1lLCBvcHRpb25zLnBhc3N3b3JkICk7XG5cblx0XHRcdFx0Ly8gQXBwbHkgY3VzdG9tIGZpZWxkcyBpZiBwcm92aWRlZFxuXHRcdFx0XHRpZiAoIG9wdGlvbnMueGhyRmllbGRzICkge1xuXHRcdFx0XHRcdGZvciAoIGkgaW4gb3B0aW9ucy54aHJGaWVsZHMgKSB7XG5cdFx0XHRcdFx0XHR4aHJbIGkgXSA9IG9wdGlvbnMueGhyRmllbGRzWyBpIF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gT3ZlcnJpZGUgbWltZSB0eXBlIGlmIG5lZWRlZFxuXHRcdFx0XHRpZiAoIG9wdGlvbnMubWltZVR5cGUgJiYgeGhyLm92ZXJyaWRlTWltZVR5cGUgKSB7XG5cdFx0XHRcdFx0eGhyLm92ZXJyaWRlTWltZVR5cGUoIG9wdGlvbnMubWltZVR5cGUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFgtUmVxdWVzdGVkLVdpdGggaGVhZGVyXG5cdFx0XHRcdC8vIEZvciBjcm9zcy1kb21haW4gcmVxdWVzdHMsIHNlZWluZyBhcyBjb25kaXRpb25zIGZvciBhIHByZWZsaWdodCBhcmVcblx0XHRcdFx0Ly8gYWtpbiB0byBhIGppZ3NhdyBwdXp6bGUsIHdlIHNpbXBseSBuZXZlciBzZXQgaXQgdG8gYmUgc3VyZS5cblx0XHRcdFx0Ly8gKGl0IGNhbiBhbHdheXMgYmUgc2V0IG9uIGEgcGVyLXJlcXVlc3QgYmFzaXMgb3IgZXZlbiB1c2luZyBhamF4U2V0dXApXG5cdFx0XHRcdC8vIEZvciBzYW1lLWRvbWFpbiByZXF1
14938ZXN0cywgd29uJ3QgY2hhbmdlIGhlYWRlciBpZiBhbHJlYWR5IHByb3ZpZGVkLlxuXHRcdFx0XHRpZiAoICFvcHRpb25zLmNyb3NzRG9tYWluICYmICFoZWFkZXJzW1wiWC1SZXF1ZXN0ZWQtV2l0aFwiXSApIHtcblx0XHRcdFx0XHRoZWFkZXJzW1wiWC1SZXF1ZXN0ZWQtV2l0aFwiXSA9IFwiWE1MSHR0cFJlcXVlc3RcIjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFNldCBoZWFkZXJzXG5cdFx0XHRcdGZvciAoIGkgaW4gaGVhZGVycyApIHtcblx0XHRcdFx0XHR4aHIuc2V0UmVxdWVzdEhlYWRlciggaSwgaGVhZGVyc1sgaSBdICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBDYWxsYmFja1xuXHRcdFx0XHRjYWxsYmFjayA9IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0XHRcdGRlbGV0ZSB4aHJDYWxsYmFja3NbIGlkIF07XG5cdFx0XHRcdFx0XHRcdGNhbGxiYWNrID0geGhyLm9ubG9hZCA9IHhoci5vbmVycm9yID0gbnVsbDtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIHR5cGUgPT09IFwiYWJvcnRcIiApIHtcblx0XHRcdFx0XHRcdFx0XHR4aHIuYWJvcnQoKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggdHlwZSA9PT0gXCJlcnJvclwiICkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlKFxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gZmlsZTogcHJvdG9jb2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgMDsgc2VlICM4NjA1LCAjMTQyMDdcblx0XHRcdFx0XHRcdFx0XHRcdHhoci5zdGF0dXMsXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHIuc3RhdHVzVGV4dFxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29tcGxldGUoXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHJTdWNjZXNzU3RhdHVzWyB4aHIuc3RhdHVzIF0gfHwgeGhyLnN0YXR1cyxcblx0XHRcdFx0XHRcdFx0XHRcdHhoci5zdGF0dXNUZXh0LFxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUU5XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBBY2Nlc3NpbmcgYmluYXJ5LWRhdGEgcmVzcG9uc2VUZXh0IHRocm93cyBhbiBleGNlcHRpb25cblx0XHRcdFx0XHRcdFx0XHRcdC8vICgjMTE0MjYpXG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlb2YgeGhyLnJlc3BvbnNlVGV4dCA9PT0gXCJzdHJpbmdcIiA/IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dDogeGhyLnJlc3BvbnNlVGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0fSA6IHVuZGVmaW5lZCxcblx0XHRcdFx0XHRcdFx0XHRcdHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdC8vIExpc3RlbiB0byBldmVudHNcblx0XHRcdFx0eGhyLm9ubG9hZCA9IGNhbGxiYWNrKCk7XG5cdFx0XHRcdHhoci5vbmVycm9yID0gY2FsbGJhY2soXCJlcnJvclwiKTtcblxuXHRcdFx0XHQvLyBDcmVhdGUgdGhlIGFib3J0IGNhbGxiYWNrXG5cdFx0XHRcdGNhbGxiYWNrID0geGhyQ2FsbGJhY2tzWyBpZCBdID0gY2FsbGJhY2soXCJhYm9ydFwiKTtcblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdC8vIERvIHNlbmQgdGhlI
14938HJlcXVlc3QgKHRoaXMgbWF5IHJhaXNlIGFuIGV4Y2VwdGlvbilcblx0XHRcdFx0XHR4aHIuc2VuZCggb3B0aW9ucy5oYXNDb250ZW50ICYmIG9wdGlvbnMuZGF0YSB8fCBudWxsICk7XG5cdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXHRcdFx0XHRcdC8vICMxNDY4MzogT25seSByZXRocm93IGlmIHRoaXMgaGFzbid0IGJlZW4gbm90aWZpZWQgYXMgYW4gZXJyb3IgeWV0XG5cdFx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHRhYm9ydDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH1cbn0pO1xuXG5cblxuXG4vLyBJbnN0YWxsIHNjcmlwdCBkYXRhVHlwZVxualF1ZXJ5LmFqYXhTZXR1cCh7XG5cdGFjY2VwdHM6IHtcblx0XHRzY3JpcHQ6IFwidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHRcIlxuXHR9LFxuXHRjb250ZW50czoge1xuXHRcdHNjcmlwdDogLyg/OmphdmF8ZWNtYSlzY3JpcHQvXG5cdH0sXG5cdGNvbnZlcnRlcnM6IHtcblx0XHRcInRleHQgc2NyaXB0XCI6IGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRcdFx0alF1ZXJ5Lmdsb2JhbEV2YWwoIHRleHQgKTtcblx0XHRcdHJldHVybiB0ZXh0O1xuXHRcdH1cblx0fVxufSk7XG5cbi8vIEhhbmRsZSBjYWNoZSdzIHNwZWNpYWwgY2FzZSBhbmQgY3Jvc3NEb21haW5cbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBcInNjcmlwdFwiLCBmdW5jdGlvbiggcyApIHtcblx0aWYgKCBzLmNhY2hlID09PSB1bmRlZmluZWQgKSB7XG5cdFx0cy5jYWNoZSA9IGZhbHNlO1xuXHR9XG5cdGlmICggcy5jcm9zc0RvbWFpbiApIHtcblx0XHRzLnR5cGUgPSBcIkdFVFwiO1xuXHR9XG59KTtcblxuLy8gQmluZCBzY3JpcHQgdGFnIGhhY2sgdHJhbnNwb3J0XG5qUXVlcnkuYWpheFRyYW5zcG9ydCggXCJzY3JpcHRcIiwgZnVuY3Rpb24oIHMgKSB7XG5cdC8vIFRoaXMgdHJhbnNwb3J0IG9ubHkgZGVhbHMgd2l0aCBjcm9zcyBkb21haW4gcmVxdWVzdHNcblx0aWYgKCBzLmNyb3NzRG9tYWluICkge1xuXHRcdHZhciBzY3JpcHQsIGNhbGxiYWNrO1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW5kOiBmdW5jdGlvbiggXywgY29tcGxldGUgKSB7XG5cdFx0XHRcdHNjcmlwdCA9IGpRdWVyeShcIjxzY3JpcHQ+XCIpLnByb3Aoe1xuXHRcdFx0XHRcdGFzeW5jOiB0cnVlLFxuXHRcdFx0XHRcdGNoYXJzZXQ6IHMuc2NyaXB0Q2hhcnNldCxcblx0XHRcdFx0XHRzcmM6IHMudXJsXG5cdFx0XHRcdH0pLm9uKFxuXHRcdFx0XHRcdFwibG9hZCBlcnJvclwiLFxuXHRcdFx0XHRcdGNhbGxiYWNrID0gZnVuY3Rpb24oIGV2dCApIHtcblx0XHRcdFx0XHRcdHNjcmlwdC5yZW1vdmUoKTtcblx0XHRcdFx0XHRcdGNhbGxiYWNrID0gbnVsbDtcblx0XHRcdFx0XHRcdGlmICggZXZ0ICkge1xuXHRcdFx0XHRcdFx0XHRjb21wbGV0ZSggZXZ0LnR5cGUgPT09IFwiZXJyb3JcIiA/IDQwNCA6IDIwMCwgZXZ0LnR5cGUgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cdFx0XHRcdGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdFsgMCBdICk7XG5cdFx0XHR9LFxuXHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9XG59KTtcblxuXG5cblxudmFyIG9sZENhbGxiYWNrcyA9IFtdLFxuXHRyanNvbnAgPSAvKD0pXFw/KD89JnwkKXxcXD9cXD8vO1xuXG4vLyBEZWZhdWx0IGpzb25wIHNldHRpbmdzXG5qUXVlcnkuYWpheFNldHVwKHtcblx0anNvbnA6IFwiY2FsbGJhY2tcIixcblx0anNvbnBDYWxsYmFjazogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGNhbGxiYWNrID0gb2xkQ2FsbGJhY2tzLnBvcCgpIHx8ICggalF1ZXJ5LmV4cGFuZG8gKyBcIl9cIiArICggbm9uY2UrKyApICk7XG5cdFx0dGhpc1sgY2FsbGJhY2sgXSA9IHRydWU7XG5cdFx0cmV0dXJuIGNhbGxiYWNrO1xuXHR9XG59KTtcblxuLy8gRGV0ZWN0LCBub3JtYWxpemUgb3B0aW9ucyBhbmQgaW5zdGFsbCBjYWxsYmFja3MgZm9yIGpzb25wIHJlcXVlc3RzXG5qUXVlcnkuYWpheFByZWZpbHRlciggXCJqc29uIGpzb25wXCIsIGZ1bmN0aW9uKCBzLCBvcmlnaW5hbFNldHRpbmdzLCBqcVhIUiApIHtcblxuXHR2YXIgY2FsbGJhY2tOYW1lLCBvdmVyd3JpdHRlbiwgcmVzcG9uc2VDb250YWluZXIsXG5cdFx0anNvblByb3AgPSBzLmpzb25wICE9PSBmYWxzZSAmJiAoIHJqc29ucC50ZXN0KCBzLnVybCApID9cblx0XHRcdFwidXJsXCIgOlxuXHRcdFx0dHlwZW9mIHMuZGF0YSA9PT0gXCJzdHJpbmdcIiAmJiAhKCBzLmNvbnRlbnRUeXBlIHx8IFwiXCIgKS5pbmRleE9mKFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIpICYmIHJqc29ucC50ZXN0KCBzLmRhdGEgKSAmJiBcImRhdGFcIlxuXHRcdCk7XG5cblx0Ly8gSGFuZGxlIGlmZiB0aGUgZXhwZWN0ZWQgZGF0YSB0eXBlIGlzIFwianNvbnBcIiBvciB3ZSBoYXZlIGEgcGFyYW1ldGVyIHRvIHNldFxuXHRpZiAoIGpzb25Qcm9wIHx8IHMuZGF0YVR5cGVzWyAwIF0gPT09IFwianNvbnBcIiApIHtcblxuXHRcdC8vIEdldCBjYWxsYmFjayBuYW1lLCByZW1lbWJlcmluZyBwcmVleGlzdGluZyB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggaXRcblx0XHRjYWxsYmFja05hbWUgPSBzLmpzb25wQ2FsbGJhY2sgPSBqUXVlcnkuaXNGdW5jdGlvbiggcy5qc29ucENhbGxiYWNrICkgP1xuXHRcdFx0cy5qc29ucENhbGxiYWNrKCkgOlxuXHRcdFx0cy5qc29ucENhbGxiYWNrO1xuXG5cdFx0Ly8gSW5zZXJ0IGNhbGxiYWNrIGludG8gdXJsIG9yIGZvcm0gZGF0YVxuXHRcdGlmICgganNvblByb3AgKSB7XG5cdFx0XHRzWyBqc29uUHJvcCBdID0gc1sganNvblByb3AgXS5yZXBsYWNlKCByanNvbnAsIFwiJDFcIiArIGNhbGxiYWNrTmFtZSApO1xuXHRcdH0gZWxzZSBpZiAoIHMuanNvbnAgIT09IGZhbHNlICkge1xuXHRcdFx0cy51cmwgKz0gKCBycXVlcnkudGVzdCggcy51cmwgKSA/IFwiJlwiIDogXCI/XCIgKSArIHMuanNvbnAgKyBcIj1cIiArIGNhbGxiYWNrTmFtZTtcblx0XHR9XG5cblx0XHQvLyBVc2UgZGF0YSBjb252ZXJ0ZXIgdG8gcmV0cmlldmUganNvbiBhZnRlciBzY3JpcHQgZXhlY3V0aW9uXG5cdFx0cy5jb252ZXJ0ZXJzW1wic2NyaXB0IGpzb25cIl0gPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggIXJlc3BvbnNlQ29udGFpbmVyICkge1xuXHRcdFx0XHRqUXVlcnkuZXJyb3IoIGNhbGxiYWNrTmFtZSArIFwiIHdhcyBub3QgY2FsbGVkXCIgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybi
14938ByZXNwb25zZUNvbnRhaW5lclsgMCBdO1xuXHRcdH07XG5cblx0XHQvLyBmb3JjZSBqc29uIGRhdGFUeXBlXG5cdFx0cy5kYXRhVHlwZXNbIDAgXSA9IFwianNvblwiO1xuXG5cdFx0Ly8gSW5zdGFsbCBjYWxsYmFja1xuXHRcdG92ZXJ3cml0dGVuID0gd2luZG93WyBjYWxsYmFja05hbWUgXTtcblx0XHR3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXNwb25zZUNvbnRhaW5lciA9IGFyZ3VtZW50cztcblx0XHR9O1xuXG5cdFx0Ly8gQ2xlYW4tdXAgZnVuY3Rpb24gKGZpcmVzIGFmdGVyIGNvbnZlcnRlcnMpXG5cdFx0anFYSFIuYWx3YXlzKGZ1bmN0aW9uKCkge1xuXHRcdFx0Ly8gUmVzdG9yZSBwcmVleGlzdGluZyB2YWx1ZVxuXHRcdFx0d2luZG93WyBjYWxsYmFja05hbWUgXSA9IG92ZXJ3cml0dGVuO1xuXG5cdFx0XHQvLyBTYXZlIGJhY2sgYXMgZnJlZVxuXHRcdFx0aWYgKCBzWyBjYWxsYmFja05hbWUgXSApIHtcblx0XHRcdFx0Ly8gbWFrZSBzdXJlIHRoYXQgcmUtdXNpbmcgdGhlIG9wdGlvbnMgZG9lc24ndCBzY3JldyB0aGluZ3MgYXJvdW5kXG5cdFx0XHRcdHMuanNvbnBDYWxsYmFjayA9IG9yaWdpbmFsU2V0dGluZ3MuanNvbnBDYWxsYmFjaztcblxuXHRcdFx0XHQvLyBzYXZlIHRoZSBjYWxsYmFjayBuYW1lIGZvciBmdXR1cmUgdXNlXG5cdFx0XHRcdG9sZENhbGxiYWNrcy5wdXNoKCBjYWxsYmFja05hbWUgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2FsbCBpZiBpdCB3YXMgYSBmdW5jdGlvbiBhbmQgd2UgaGF2ZSBhIHJlc3BvbnNlXG5cdFx0XHRpZiAoIHJlc3BvbnNlQ29udGFpbmVyICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBvdmVyd3JpdHRlbiApICkge1xuXHRcdFx0XHRvdmVyd3JpdHRlbiggcmVzcG9uc2VDb250YWluZXJbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXNwb25zZUNvbnRhaW5lciA9IG92ZXJ3cml0dGVuID0gdW5kZWZpbmVkO1xuXHRcdH0pO1xuXG5cdFx0Ly8gRGVsZWdhdGUgdG8gc2NyaXB0XG5cdFx0cmV0dXJuIFwic2NyaXB0XCI7XG5cdH1cbn0pO1xuXG5cblxuXG4vLyBkYXRhOiBzdHJpbmcgb2YgaHRtbFxuLy8gY29udGV4dCAob3B0aW9uYWwpOiBJZiBzcGVjaWZpZWQsIHRoZSBmcmFnbWVudCB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhpcyBjb250ZXh0LCBkZWZhdWx0cyB0byBkb2N1bWVudFxuLy8ga2VlcFNjcmlwdHMgKG9wdGlvbmFsKTogSWYgdHJ1ZSwgd2lsbCBpbmNsdWRlIHNjcmlwdHMgcGFzc2VkIGluIHRoZSBodG1sIHN0cmluZ1xualF1ZXJ5LnBhcnNlSFRNTCA9IGZ1bmN0aW9uKCBkYXRhLCBjb250ZXh0LCBrZWVwU2NyaXB0cyApIHtcblx0aWYgKCAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXHRpZiAoIHR5cGVvZiBjb250ZXh0ID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRrZWVwU2NyaXB0cyA9IGNvbnRleHQ7XG5cdFx0Y29udGV4dCA9IGZhbHNlO1xuXHR9XG5cdGNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50O1xuXG5cdHZhciBwYXJzZWQgPSByc2luZ2xlVGFnLmV4ZWMoIGRhdGEgKSxcblx0XHRzY3JpcHRzID0gIWtlZXBTY3JpcHRzICYmIFtdO1xuXG5cdC8vIFNpbmdsZSB0YWdcblx0aWYgKCBwYXJzZWQgKSB7XG5cdFx0cmV0dXJuIFsgY29udGV4dC5jcmVhdGVFbGVtZW50KCBwYXJzZWRbMV0gKSBdO1xuXHR9XG5cblx0cGFyc2VkID0galF1ZXJ5LmJ1aWxkRnJhZ21lbnQoIFsgZGF0YSBdLCBjb250ZXh0LCBzY3JpcHRzICk7XG5cblx0aWYgKCBzY3JpcHRzICYmIHNjcmlwdHMubGVuZ3RoICkge1xuXHRcdGpRdWVyeSggc2NyaXB0cyApLnJlbW92ZSgpO1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeS5tZXJnZSggW10sIHBhcnNlZC5jaGlsZE5vZGVzICk7XG59O1xuXG5cbi8vIEtlZXAgYSBjb3B5IG9mIHRoZSBvbGQgbG9hZCBtZXRob2RcbnZhciBfbG9hZCA9IGpRdWVyeS5mbi5sb2FkO1xuXG4vKipcbiAqIExvYWQgYSB1cmwgaW50byBhIHBhZ2VcbiAqL1xualF1ZXJ5LmZuLmxvYWQgPSBmdW5jdGlvbiggdXJsLCBwYXJhbXMsIGNhbGxiYWNrICkge1xuXHRpZiAoIHR5cGVvZiB1cmwgIT09IFwic3RyaW5nXCIgJiYgX2xvYWQgKSB7XG5cdFx0cmV0dXJuIF9sb2FkLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0fVxuXG5cdHZhciBzZWxlY3RvciwgdHlwZSwgcmVzcG9uc2UsXG5cdFx0c2VsZiA9IHRoaXMsXG5cdFx0b2ZmID0gdXJsLmluZGV4T2YoXCIgXCIpO1xuXG5cdGlmICggb2ZmID49IDAgKSB7XG5cdFx0c2VsZWN0b3IgPSBqUXVlcnkudHJpbSggdXJsLnNsaWNlKCBvZmYgKSApO1xuXHRcdHVybCA9IHVybC5zbGljZSggMCwgb2ZmICk7XG5cdH1cblxuXHQvLyBJZiBpdCdzIGEgZnVuY3Rpb25cblx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcGFyYW1zICkgKSB7XG5cblx0XHQvLyBXZSBhc3N1bWUgdGhhdCBpdCdzIHRoZSBjYWxsYmFja1xuXHRcdGNhbGxiYWNrID0gcGFyYW1zO1xuXHRcdHBhcmFtcyA9IHVuZGVmaW5lZDtcblxuXHQvLyBPdGhlcndpc2UsIGJ1aWxkIGEgcGFyYW0gc3RyaW5nXG5cdH0gZWxzZSBpZiAoIHBhcmFtcyAmJiB0eXBlb2YgcGFyYW1zID09PSBcIm9iamVjdFwiICkge1xuXHRcdHR5cGUgPSBcIlBPU1RcIjtcblx0fVxuXG5cdC8vIElmIHdlIGhhdmUgZWxlbWVudHMgdG8gbW9kaWZ5LCBtYWtlIHRoZSByZXF1ZXN0XG5cdGlmICggc2VsZi5sZW5ndGggPiAwICkge1xuXHRcdGpRdWVyeS5hamF4KHtcblx0XHRcdHVybDogdXJsLFxuXG5cdFx0XHQvLyBpZiBcInR5cGVcIiB2YXJpYWJsZSBpcyB1bmRlZmluZWQsIHRoZW4gXCJHRVRcIiBtZXRob2Qgd2lsbCBiZSB1c2VkXG5cdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0ZGF0YVR5cGU6IFwiaHRtbFwiLFxuXHRcdFx0ZGF0YTogcGFyYW1zXG5cdFx0fSkuZG9uZShmdW5jdGlvbiggcmVzcG9uc2VUZXh0ICkge1xuXG5cdFx0XHQvLyBTYXZlIHJlc3BvbnNlIGZvciB1c2UgaW4gY29tcGxldGUgY2FsbGJhY2tcblx0XHRcdHJlc3BvbnNlID0gYXJndW1lbnRzO1xuXG5cdFx0XHRzZWxmLmh0bWwoIHNlbGVjdG9yID9cblxuXHRcdFx0XHQvLyBJZiBhIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQsIGxvY2F0ZSB0aGUgcmlnaHQgZWxlbWVudHMgaW4gYSBkdW1teSBkaXZcblx0XHRcdFx0Ly8gRXhjbHVkZSBzY3JpcHRzIHRvIGF2b2lkIElFICdQZXJtaXNzaW9uIERlbmllZCcgZXJyb3JzXG5cdFx0XHRcdGpRdWVyeShcIjxkaXY+XCIpLmFwcGVuZCggalF1ZXJ5LnBhcnNlSFRNTCggcmVzcG9uc2VUZXh0ICkgKS5maW5kKCBzZWxlY3RvciApIDpcblxuXHRcdFx0XHQvLyBPdGhlcndpc2UgdXNlI
14938HRoZSBmdWxsIHJlc3VsdFxuXHRcdFx0XHRyZXNwb25zZVRleHQgKTtcblxuXHRcdH0pLmNvbXBsZXRlKCBjYWxsYmFjayAmJiBmdW5jdGlvbigganFYSFIsIHN0YXR1cyApIHtcblx0XHRcdHNlbGYuZWFjaCggY2FsbGJhY2ssIHJlc3BvbnNlIHx8IFsganFYSFIucmVzcG9uc2VUZXh0LCBzdGF0dXMsIGpxWEhSIF0gKTtcblx0XHR9KTtcblx0fVxuXG5cdHJldHVybiB0aGlzO1xufTtcblxuXG5cblxuLy8gQXR0YWNoIGEgYnVuY2ggb2YgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBjb21tb24gQUpBWCBldmVudHNcbmpRdWVyeS5lYWNoKCBbIFwiYWpheFN0YXJ0XCIsIFwiYWpheFN0b3BcIiwgXCJhamF4Q29tcGxldGVcIiwgXCJhamF4RXJyb3JcIiwgXCJhamF4U3VjY2Vzc1wiLCBcImFqYXhTZW5kXCIgXSwgZnVuY3Rpb24oIGksIHR5cGUgKSB7XG5cdGpRdWVyeS5mblsgdHlwZSBdID0gZnVuY3Rpb24oIGZuICkge1xuXHRcdHJldHVybiB0aGlzLm9uKCB0eXBlLCBmbiApO1xuXHR9O1xufSk7XG5cblxuXG5cbmpRdWVyeS5leHByLmZpbHRlcnMuYW5pbWF0ZWQgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0cmV0dXJuIGpRdWVyeS5ncmVwKGpRdWVyeS50aW1lcnMsIGZ1bmN0aW9uKCBmbiApIHtcblx0XHRyZXR1cm4gZWxlbSA9PT0gZm4uZWxlbTtcblx0fSkubGVuZ3RoO1xufTtcblxuXG5cblxudmFyIGRvY0VsZW0gPSB3aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4vKipcbiAqIEdldHMgYSB3aW5kb3cgZnJvbSBhbiBlbGVtZW50XG4gKi9cbmZ1bmN0aW9uIGdldFdpbmRvdyggZWxlbSApIHtcblx0cmV0dXJuIGpRdWVyeS5pc1dpbmRvdyggZWxlbSApID8gZWxlbSA6IGVsZW0ubm9kZVR5cGUgPT09IDkgJiYgZWxlbS5kZWZhdWx0Vmlldztcbn1cblxualF1ZXJ5Lm9mZnNldCA9IHtcblx0c2V0T2Zmc2V0OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgaSApIHtcblx0XHR2YXIgY3VyUG9zaXRpb24sIGN1ckxlZnQsIGN1ckNTU1RvcCwgY3VyVG9wLCBjdXJPZmZzZXQsIGN1ckNTU0xlZnQsIGNhbGN1bGF0ZVBvc2l0aW9uLFxuXHRcdFx0cG9zaXRpb24gPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBvc2l0aW9uXCIgKSxcblx0XHRcdGN1ckVsZW0gP
14938SBqUXVlcnkoIGVsZW0gKSxcblx0XHRcdHByb3BzID0ge307XG5cblx0XHQvLyBTZXQgcG9zaXRpb24gZmlyc3QsIGluLWNhc2UgdG9wL2xlZnQgYXJlIHNldCBldmVuIG9uIHN0YXRpYyBlbGVtXG5cdFx0aWYgKCBwb3NpdGlvbiA9PT0gXCJzdGF0aWNcIiApIHtcblx0XHRcdGVsZW0uc3R5bGUucG9zaXRpb24gPSBcInJlbGF0aXZlXCI7XG5cdFx0fVxuXG5cdFx0Y3VyT2Zmc2V0ID0gY3VyRWxlbS5vZmZzZXQoKTtcblx0XHRjdXJDU1NUb3AgPSBqUXVlcnkuY3NzKCBlbGVtLCBcInRvcFwiICk7XG5cdFx0Y3VyQ1NTTGVmdCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwibGVmdFwiICk7XG5cdFx0Y2FsY3VsYXRlUG9zaXRpb24gPSAoIHBvc2l0aW9uID09PSBcImFic29sdXRlXCIgfHwgcG9zaXRpb24gPT09IFwiZml4ZWRcIiApICYmXG5cdFx0XHQoIGN1ckNTU1RvcCArIGN1ckNTU0xlZnQgKS5pbmRleE9mKFwiYXV0b1wiKSA+IC0xO1xuXG5cdFx0Ly8gTmVlZCB0byBiZSBhYmxlIHRvIGNhbGN1bGF0ZSBwb3NpdGlvbiBpZiBlaXRoZXJcblx0XHQvLyB0b3Agb3IgbGVmdCBpcyBhdXRvIGFuZCBwb3NpdGlvbiBpcyBlaXRoZXIgYWJzb2x1dGUgb3IgZml4ZWRcblx0XHRpZiAoIGNhbGN1bGF0ZVBvc2l0aW9uICkge1xuXHRcdFx0Y3VyUG9zaXRpb24gPSBjdXJFbGVtLnBvc2l0aW9uKCk7XG5cdFx0XHRjdXJUb3AgPSBjdXJQb3NpdGlvbi50b3A7XG5cdFx0XHRjdXJMZWZ0ID0gY3VyUG9zaXRpb24ubGVmdDtcblxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjdXJUb3AgPSBwYXJzZUZsb2F0KCBjdXJDU1NUb3AgKSB8fCAwO1xuXHRcdFx0Y3VyTGVmdCA9IHBhcnNlRmxvYXQoIGN1ckNTU0xlZnQgKSB8fCAwO1xuXHRcdH1cblxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIG9wdGlvbnMgKSApIHtcblx0XHRcdG9wdGlvbnMgPSBvcHRpb25zLmNhbGwoIGVsZW0sIGksIGN1ck9mZnNldCApO1xuXHRcdH1cblxuXHRcdGlmICggb3B0aW9ucy50b3AgIT0gbnVsbCApIHtcblx0XHRcdHByb3BzLnRvcCA9ICggb3B0aW9ucy50b3AgLSBjdXJPZmZzZXQudG9wICkgKyBjdXJUb3A7XG5cdFx0fVxuXHRcdGlmICggb3B0aW9ucy5sZWZ0ICE9IG51bGwgKSB7XG5cdFx0XHRwcm9wcy5sZWZ0ID0gKCBvcHRpb25zLmxlZnQgLSBjdXJPZmZzZXQubGVmdCApICsgY3VyTGVmdDtcblx0XHR9XG5cblx0XHRpZiAoIFwidXNpbmdcIiBpbiBvcHRpb25zICkge1xuXHRcdFx0b3B0aW9ucy51c2luZy5jYWxsKCBlbGVtLCBwcm9wcyApO1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1ckVsZW0uY3NzKCBwcm9wcyApO1xuXHRcdH1cblx0fVxufTtcblxualF1ZXJ5LmZuLmV4dGVuZCh7XG5cdG9mZnNldDogZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHRoaXMgOlxuXHRcdFx0XHR0aGlzLmVhY2goZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5Lm9mZnNldC5zZXRPZmZzZXQoIHRoaXMsIG9wdGlvbnMsIGkgKTtcblx0XHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0dmFyIGRvY0VsZW0sIHdpbixcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF0sXG5cdFx0XHRib3ggPSB7IHRvcDogMCwgbGVmdDogMCB9LFxuXHRcdFx0ZG9jID0gZWxlbSAmJiBlbGVtLm93bmVyRG9jdW1lbnQ7XG5cblx0XHRpZiAoICFkb2MgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0ZG9jRWxlbSA9IGRvYy5kb2N1bWVudEVsZW1lbnQ7XG5cblx0XHQvLyBNYWtlIHN1cmUgaXQncyBub3QgYSBkaXNjb25uZWN0ZWQgRE9NIG5vZGVcblx0XHRpZiAoICFqUXVlcnkuY29udGFpbnMoIGRvY0VsZW0sIGVsZW0gKSApIHtcblx0XHRcdHJldHVybiBib3g7XG5cdFx0fVxuXG5cdFx0Ly8gU3VwcG9ydDogQmxhY2tCZXJyeSA1LCBpT1MgMyAob3JpZ2luYWwgaVBob25lKVxuXHRcdC8vIElmIHdlIGRvbid0IGhhdmUgZ0JDUiwganVzdCB1c2UgMCwwIHJhdGhlciB0aGFuIGVycm9yXG5cdFx0aWYgKCB0eXBlb2YgZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QgIT09IHN0cnVuZGVmaW5lZCApIHtcblx0XHRcdGJveCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdFx0fVxuXHRcdHdpbiA9IGdldFdpbmRvdyggZG9jICk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRvcDogYm94LnRvcCArIHdpbi5wYWdlWU9mZnNldCAtIGRvY0VsZW0uY2xpZW50VG9wLFxuXHRcdFx0bGVmdDogYm94LmxlZnQgKyB3aW4ucGFnZVhPZmZzZXQgLSBkb2NFbGVtLmNsaWVudExlZnRcblx0XHR9O1xuXHR9LFxuXG5cdHBvc2l0aW9uOiBmdW5jdGlvbigpIHtcblx0XHRpZiAoICF0aGlzWyAwIF0gKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dmFyIG9mZnNldFBhcmVudCwgb2Zmc2V0LFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXSxcblx0XHRcdHBhcmVudE9mZnNldCA9IHsgdG9wOiAwLCBsZWZ0OiAwIH07XG5cblx0XHQvLyBGaXhlZCBlbGVtZW50cyBhcmUgb2Zmc2V0IGZyb20gd2luZG93IChwYXJlbnRPZmZzZXQgPSB7dG9wOjAsIGxlZnQ6IDB9LCBiZWNhdXNlIGl0IGlzIGl0cyBvbmx5IG9mZnNldCBwYXJlbnRcblx0XHRpZiAoIGpRdWVyeS5jc3MoIGVsZW0sIFwicG9zaXRpb25cIiApID09PSBcImZpeGVkXCIgKSB7XG5cdFx0XHQvLyBBc3N1bWUgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGlzIHRoZXJlIHdoZW4gY29tcHV0ZWQgcG9zaXRpb24gaXMgZml4ZWRcblx0XHRcdG9mZnNldCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gR2V0ICpyZWFsKiBvZmZzZXRQYXJlbnRcblx0XHRcdG9mZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50KCk7XG5cblx0XHRcdC8vIEdldCBjb3JyZWN0IG9mZnNldHNcblx0XHRcdG9mZnNldCA9IHRoaXMub2Zmc2V0KCk7XG5cdFx0XHRpZiAoICFqUXVlcnkubm9kZU5hbWUoIG9mZnNldFBhcmVudFsgMCBdLCBcImh0bWxcIiApICkge1xuXHRcdFx0XHRwYXJlbnRPZmZzZXQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0KCk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCBvZmZzZXRQYXJlbnQgYm9yZGVyc1xuXHRcdFx0cGFyZW50T2Zmc2V0LnRvcCArPSBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnRbIDAgXSwgXCJib3JkZXJUb3BXaWR0aFwiLCB0cnVlICk7XG5cdFx0XHRwYXJlbnRPZmZzZXQubGVmdCArPSBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnRbIDAgXSwgXCJib3JkZXJMZWZ0V2lkdGhcIiwgdHJ1ZSApO1xuXHRcdH1cblxuXHRcdC8vIFN1YnRyYWN0IHBhcmVudCBvZmZzZXRzIGFuZCBlbGVtZW50IG1hcmdpbnNcblx0XHRyZXR1cm4ge1xuXHRcdFx0dG9wOiBvZmZzZXQudG9wIC0gcGFyZW50T2Zmc2V0LnRvcCAtIGpRdWVyeS5jc3MoIGVsZW0sIFwibWFyZ2luVG9wXCIsIHRydWUgKSxcblx0XHRcdGxlZnQ6IG9mZnNldC5sZWZ0IC0gcGFyZW50T2Zmc2V0LmxlZnQgLSBqUXVlcnkuY3NzKCBlbGVtLCBcIm1hcmdpbkxlZnRcIiwgdHJ1ZSApXG5cdFx0fTtcblx0fSxcblxuXHRvZmZzZXRQYXJlbnQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybi
14938B0aGlzLm1hcChmdW5jdGlvbigpIHtcblx0XHRcdHZhciBvZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNldFBhcmVudCB8fCBkb2NFbGVtO1xuXG5cdFx0XHR3aGlsZSAoIG9mZnNldFBhcmVudCAmJiAoICFqUXVlcnkubm9kZU5hbWUoIG9mZnNldFBhcmVudCwgXCJodG1sXCIgKSAmJiBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsIFwicG9zaXRpb25cIiApID09PSBcInN0YXRpY1wiICkgKSB7XG5cdFx0XHRcdG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5vZmZzZXRQYXJlbnQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZG9jRWxlbTtcblx0XHR9KTtcblx0fVxufSk7XG5cbi8vIENyZWF0ZSBzY3JvbGxMZWZ0IGFuZCBzY3JvbGxUb3AgbWV0aG9kc1xualF1ZXJ5LmVhY2goIHsgc2Nyb2xsTGVmdDogXCJwYWdlWE9mZnNldFwiLCBzY3JvbGxUb3A6IFwicGFnZVlPZmZzZXRcIiB9LCBmdW5jdGlvbiggbWV0aG9kLCBwcm9wICkge1xuXHR2YXIgdG9wID0gXCJwYWdlWU9mZnNldFwiID09PSBwcm9wO1xuXG5cdGpRdWVyeS5mblsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdmFsICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBtZXRob2QsIHZhbCApIHtcblx0XHRcdHZhciB3aW4gPSBnZXRXaW5kb3coIGVsZW0gKTtcblxuXHRcdFx0aWYgKCB2YWwgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIHdpbiA/IHdpblsgcHJvcCBdIDogZWxlbVsgbWV0aG9kIF07XG5cdFx0XHR9XG5cblx0XHRcdGlmICggd2luICkge1xuXHRcdFx0XHR3aW4uc2Nyb2xsVG8oXG5cdFx0XHRcdFx0IXRvcCA/IHZhbCA6IHdpbmRvdy5wYWdlWE9mZnNldCxcblx0XHRcdFx0XHR0b3AgPyB2YWwgOiB3aW5kb3cucGFnZVlPZmZzZXRcblx0XHRcdFx0KTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWxlbVsgbWV0aG9kIF0gPSB2YWw7XG5cdFx0XHR9XG5cdFx0fSwgbWV0aG9kLCB2YWwsIGFyZ3VtZW50cy5sZW5ndGgsIG51bGwgKTtcblx0fTtcbn0pO1xuXG4vLyBTdXBwb3J0OiBTYWZhcmk8NyssIENocm9tZTwzNytcbi8vIEFkZCB0aGUgdG9wL2xlZnQgY3NzSG9va3MgdXNpbmcgalF1ZXJ5LmZuLnBvc2l0aW9uXG4vLyBXZWJraXQgYnVnOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkwODRcbi8vIEJsaW5rIGJ1ZzogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTIyOTI4MFxuLy8gZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHBlcmNlbnQgd2hlbiBzcGVjaWZpZWQgZm9yIHRvcC9sZWZ0L2JvdHRvbS9yaWdodDtcbi8vIHJhdGhlciB0aGFuIG1ha2UgdGhlIGNzcyBtb2R1bGUgZGVwZW5kIG9uIHRoZSBvZmZzZXQgbW9kdWxlLCBqdXN0IGNoZWNrIGZvciBpdCBoZXJlXG5qUXVlcnkuZWFjaCggWyBcInRvcFwiLCBcImxlZnRcIiBdLCBmdW5jdGlvbiggaSwgcHJvcCApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBwcm9wIF0gPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucGl4ZWxQb3NpdGlvbixcblx0XHRmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdFx0XHRjb21wdXRlZCA9IGN1ckNTUyggZWxlbSwgcHJvcCApO1xuXHRcdFx0XHQvLyBJZiBjdXJDU1MgcmV0dXJucyBwZXJjZW50YWdlLCBmYWxsYmFjayB0byBvZmZzZXRcblx0XHRcdFx0cmV0dXJuIHJudW1ub25weC50ZXN0KCBjb21wdXRlZCApID9cblx0XHRcdFx0XHRqUXVlcnkoIGVsZW0gKS5wb3NpdGlvbigpWyBwcm9wIF0gKyBcInB4XCIgOlxuXHRcdFx0XHRcdGNvbXB1dGVkO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcbn0pO1xuXG5cbi8vIENyZWF0ZSBpbm5lckhlaWdodCwgaW5uZXJXaWR0aCwgaGVpZ2h0LCB3aWR0aCwgb3V0ZXJIZWlnaHQgYW5kIG91dGVyV2lkdGggbWV0aG9kc1xualF1ZXJ5LmVhY2goIHsgSGVpZ2h0OiBcImhlaWdodFwiLCBXaWR0aDogXCJ3aWR0aFwiIH0sIGZ1bmN0aW9uKCBuYW1lLCB0eXBlICkge1xuXHRqUXVlcnkuZWFjaCggeyBwYWRkaW5nOiBcImlubmVyXCIgKyBuYW1lLCBjb250ZW50OiB0eXBlLCBcIlwiOiBcIm91dGVyXCIgKyBuYW1lIH0sIGZ1bmN0aW9uKCBkZWZhdWx0RXh0cmEsIGZ1bmNOYW1lICkge1xuXHRcdC8vIE1hcmdpbiBpcyBvbmx5IGZvciBvdXRlckhlaWdodCwgb3V0ZXJXaWR0aFxuXHRcdGpRdWVyeS5mblsgZnVuY05hbWUgXSA9IGZ1bmN0aW9uKCBtYXJnaW4sIHZhbHVlICkge1xuXHRcdFx0dmFyIGNoYWluYWJsZSA9IGFyZ3VtZW50cy5sZW5ndGggJiYgKCBkZWZhdWx0RXh0cmEgfHwgdHlwZW9mIG1hcmdpbiAhPT0gXCJib29sZWFuXCIgKSxcblx0XHRcdFx0ZXh0cmEgPSBkZWZhdWx0RXh0cmEgfHwgKCBtYXJnaW4gPT09IHRydWUgfHwgdmFsdWUgPT09IHRydWUgPyBcIm1hcmdpblwiIDogXCJib3JkZXJcIiApO1xuXG5cdFx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgdHlwZSwgdmFsdWUgKSB7XG5cdFx0XHRcdHZhciBkb2M7XG5cblx0XHRcdFx0aWYgKCBqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHtcblx0XHRcdFx0XHQvLyBBcyBvZiA1LzgvMjAxMiB0aGlzIHdpbGwgeWllbGQgaW5jb3JyZWN0IHJlc3VsdHMgZm9yIE1vYmlsZSBTYWZhcmksIGJ1dCB0aGVyZVxuXHRcdFx0XHRcdC8vIGlzbid0IGEgd2hvbGUgbG90IHdlIGNhbiBkby4gU2VlIHB1bGwgcmVxdWVzdCBhdCB0aGlzIFVSTCBmb3IgZGlzY3Vzc2lvbjpcblx0XHRcdFx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9wdWxsLzc2NFxuXHRcdFx0XHRcdHJldHVybiBlbGVtLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsgXCJjbGllbnRcIiArIG5hbWUgXTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEdldCBkb2N1bWVudCB3aWR0aCBvciBoZWlnaHRcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdGRvYyA9IGVsZW0uZG9jdW1lbnRFbGVtZW50O1xuXG5cdFx0XHRcdFx0Ly8gRWl0aGVyIHNjcm9sbFtXaWR0aC9IZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWlnaHRdIG9yIGNsaWVudFtXaWR0aC9IZWlnaHRdLFxuXHRcdFx0XHRcdC8vIHdoaWNoZXZlciBpcyBncmVhdGVzdFxuXHRcdFx0XHRcdHJldHVybi
14938BNYXRoLm1heChcblx0XHRcdFx0XHRcdGVsZW0uYm9keVsgXCJzY3JvbGxcIiArIG5hbWUgXSwgZG9jWyBcInNjcm9sbFwiICsgbmFtZSBdLFxuXHRcdFx0XHRcdFx0ZWxlbS5ib2R5WyBcIm9mZnNldFwiICsgbmFtZSBdLCBkb2NbIFwib2Zmc2V0XCIgKyBuYW1lIF0sXG5cdFx0XHRcdFx0XHRkb2NbIFwiY2xpZW50XCIgKyBuYW1lIF1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRcdC8vIEdldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnQsIHJlcXVlc3RpbmcgYnV0IG5vdCBmb3JjaW5nIHBhcnNlRmxvYXRcblx0XHRcdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCB0eXBlLCBleHRyYSApIDpcblxuXHRcdFx0XHRcdC8vIFNldCB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnRcblx0XHRcdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHR5cGUsIHZhbHVlLCBleHRyYSApO1xuXHRcdFx0fSwgdHlwZSwgY2hhaW5hYmxlID8gbWFyZ2luIDogdW5kZWZpbmVkLCBjaGFpbmFibGUsIG51bGwgKTtcblx0XHR9O1xuXHR9KTtcbn0pO1xuXG5cbi8vIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgY29udGFpbmVkIGluIHRoZSBtYXRjaGVkIGVsZW1lbnQgc2V0XG5qUXVlcnkuZm4uc2l6ZSA9IGZ1bmN0aW9uKCkge1xuXHRyZXR1cm4gdGhpcy5sZW5ndGg7XG59O1xuXG5qUXVlcnkuZm4uYW5kU2VsZiA9IGpRdWVyeS5mbi5hZGRCYWNrO1xuXG5cblxuXG4vLyBSZWdpc3RlciBhcyBhIG5hbWVkIEFNRCBtb2R1bGUsIHNpbmNlIGpRdWVyeSBjYW4gYmUgY29uY2F0ZW5hdGVkIHdpdGggb3RoZXJcbi8vIGZpbGVzIHRoYXQgbWF5IHVzZSBkZWZpbmUsIGJ1dCBub3QgdmlhIGEgcHJvcGVyIGNvbmNhdGVuYXRpb24gc2NyaXB0IHRoYXRcbi8vIHVuZGVyc3RhbmRzIGFub255bW91cyBBTUQgbW9kdWxlcy4gQSBuYW1lZCBBTUQgaXMgc2FmZXN0IGFuZCBtb3N0IHJvYnVzdFxuLy8gd2F5IHRvIHJlZ2lzdGVyLiBMb3dlcmNhc2UganF1ZXJ5IGlzIHVzZWQgYmVjYXVzZSBBTUQgbW9kdWxlIG5hbWVzIGFyZVxuLy8gZGVyaXZlZCBmcm9tIGZpbGUgbmFtZXMsIGFuZCBqUXVlcnkgaXMgbm9ybWFsbHkgZGVsaXZlcmVkIGluIGEgbG93ZXJjYXNlXG4vLyBmaWxlIG5hbWUuIERvIHRoaXMgYWZ0ZXIgY3JlYXRpbmcgdGhlIGdsb2JhbCBzbyB0aGF0IGlmIGFuIEFNRCBtb2R1bGUgd2FudHNcbi8vIHRvIGNhbGwgbm9Db25mbGljdCB0byBoaWRlIHRoaXMgdmVyc2lvbiBvZiBqUXVlcnksIGl0IHdpbGwgd29yay5cblxuLy8gTm90ZSB0aGF0IGZvciBtYXhpbXVtIHBvcnRhYmlsaXR5LCBsaWJyYXJpZXMgdGhhdCBhcmUgbm90IGpRdWVyeSBzaG91bGRcbi8vIGRlY2xhcmUgdGhlbXNlbHZlcyBhcyBhbm9ueW1vdXMgbW9kdWxlcywgYW5kIGF2b2lkIHNldHRpbmcgYSBnbG9iYWwgaWYgYW5cbi8vIEFNRCBsb2FkZXIgaXMgcHJlc2VudC4galF1ZXJ5IGlzIGEgc3BlY2lhbCBjYXNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlXG4vLyBodHRwczovL2dpdGh1Yi5jb20vanJidXJrZS9yZXF1aXJlanMvd2lraS9VcGRhdGluZy1leGlzdGluZy1saWJyYXJpZXMjd2lraS1hbm9uXG5cbmlmICggdHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQgKSB7XG5cdGRlZmluZSggXCJqcXVlcnlcIiwgW10sIGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBqUXVlcnk7XG5cdH0pO1xufVxuXG5cblxuXG52YXJcblx0Ly8gTWFwIG92ZXIgalF1ZXJ5IGluIGNhc2Ugb2Ygb3ZlcndyaXRlXG5cdF9qUXVlcnkgPSB3aW5kb3cualF1ZXJ5LFxuXG5cdC8vIE1hcCBvdmVyIHRoZSAkIGluIGNhc2Ugb2Ygb3ZlcndyaXRlXG5cdF8kID0gd2luZG93LiQ7XG5cbmpRdWVyeS5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oIGRlZXAgKSB7XG5cdGlmICggd2luZG93LiQgPT09IGpRdWVyeSApIHtcblx0XHR3aW5kb3cuJCA9IF8kO1xuXHR9XG5cblx0aWYgKCBkZWVwICYmIHdpbmRvdy5qUXVlcnkgPT09IGpRdWVyeSApIHtcblx0XHR3aW5kb3cualF1ZXJ5ID0gX2pRdWVyeTtcblx0fVxuXG5cdHJldHVybiBqUXVlcnk7XG59O1xuXG4vLyBFeHBvc2UgalF1ZXJ5IGFuZCAkIGlkZW50aWZpZXJzLCBldmVuIGluIEFNRFxuLy8gKCM3MTAyI2NvbW1lbnQ6MTAsIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L3B1bGwvNTU3KVxuLy8gYW5kIENvbW1vbkpTIGZvciBicm93c2VyIGVtdWxhdG9ycyAoIzEzNTY2KVxuaWYgKCB0eXBlb2Ygbm9HbG9iYWwgPT09IHN0cnVuZGVmaW5lZCApIHtcblx0d2luZG93LmpRdWVyeSA9IHdpbmRvdy4kID0galF1ZXJ5O1xufVxuXG5cblxuXG5yZXR1cm4galF1ZXJ5O1xuXG59KSk7XG5cbjsgYnJvd3NlcmlmeV9zaGltX19kZWZpbmVfX21vZHVsZV9fZXhwb3J0X18odHlwZW9mICQgIT0gXCJ1bmRlZmluZWRcIiA/ICQgOiB3aW5kb3cuJCk7XG5cbn0pLmNhbGwoZ2xvYmFsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGZ1bmN0aW9uIGRlZmluZUV4cG9ydChleCkgeyBtb2R1bGUuZXhwb3J0cyA9IGV4OyB9KTtcblxufSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldDp1dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbUp2ZDJWeVgyTnZiWEJ2Ym1WdWRITXZhbkYxWlhKNUwyUnBjM1F2YW5GMVpYSjVMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3UVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKbWFXeGxJam9pWjJWdVpYSmhkR1ZrTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklqc2dkbUZ5SUY5ZlluSnZkM05sY21sbWVWOXphR2x0WDNKbGNYVnBjbVZmWHoxeVpYRjFhWEpsT3lobWRXNWpkR2x2YmlCaWNtOTNjMlZ5YVdaNVUyaHBiU2h0YjJSMWJHVXNJR1Y0Y0c5eWRITXNJSEpsY1hWcGNtVXNJR1JsWm1sdVpTd2dZbkp2ZDNObGNtbG1lVjl6YUdsdFgxOWtaV1pwYm1WZlgyMXZaSFZzWlY5ZlpYaHdiM0owWDE4cElIdGNiaThxSVZ4dUlDb2dhbEYxWlhKNUlFcGhkbUZUWTNKcGNIUWdUR2xpY21GeWVTQjJNaTR4TGpSY2JpQXFJR2gwZEhBNkx5OXFjWFZsY25rdVkyOXRMMXh1SUNwY2JpQXFJRWx1WTJ4MVpHVnpJRk5wZW5wc1pTNXFjMXh1SUNvZ2FIUjBjRG92TDNOcGVucHNaV3B6TG1OdmJTOWNiaUFxWEc0Z0tpQkRiM0I1Y21sbmFIUWdNakF3TlN3Z01qQXhOQ0JxVVhWbGNua2dSbTkxYm1SaGRHbHZiaXdnU1c1akxpQmhibVFnYjNSb1pYSWdZMjl1ZEhKcFluVjBiM0p6WEc0Z0tpQlNaV3hsWVhObFpDQjFibVJsY2lCMGFHVWdUVWxVSUd4cFkyVnVjMlZjYmlBcUlHaDBkSEE2THk5cWNYVmxjbmt1YjNKbkwyeHBZMlZ1YzJWY2JpQXFYRzRnS2lCRVlYUmxPaUF5TURFMUxUQTBMVEk0VkRFMk9qQXhXbHh1SUNvdlhHNWNiaWhtZFc1amRHbHZiaWdnWjJ4dlltRnNMQ0JtWVdOMGIzSjVJQ2tnZTF4dVhHNWNkR2xtSUNnZ2RIbHdaVzltSUcxdlpIVnNaU0E5UFQwZ1hDSnZZbXBsWTNSY0lpQW1KaUIwZVhCbGIyWWdiVzlrZFd4bExtVjRjRzl5ZEhNZ1BUMDlJRndpYjJKcVpXTjBYQ0lnS1NCN1hHNWNkRngwTHk4Z1JtOXlJRU52YlcxdmJrcFRJR0Z1WkNCRGIyMXRiMjVLVXkxc2FXdGxJR1Z1ZG1seWIyNXRaVzUwY3lCM2FHVnlaU0JoSUhCeWIzQmxjaUJnZDJsdVpHOTNZRnh1WEhSY2RDOHZJR2x6SUhCeVpYTmxiblFzSUdWNFpXTjFkR1VnZEdobElHWmhZM1J2Y25rZ1lXNWtJR2RsZENCcVVYVmxjbmt1WEc1Y2RGeDBMeThnUm05eUlHVnVkbWx5YjI1dFpXNTBjeUIwYUdGMElHUnZJRzV2ZENCb1lYWmxJR0VnWUhkcGJtUnZkMkFnZDJsMGFDQmhJR0JrYjJOMWJXVnVkR0JjYmx4MFhIUXZMeUFvYzNWamFDQmhjeUJPYjJSbExtcHpLU3dnWlhod2IzTmxJR0VnWm1GamRHOXllU0JoY3lCdGIyUjFiR1V1Wlhod2IzSjBjeTVjYmx4MFhIUXZMeUJVYUdseklHRmpZMlZ1ZEhWaGRHVnpJSFJvWlNCdVpXVmtJR1p2Y2lCMGFHVWdZM0psWVhScGIyNGdiMllnWVNCeVpXRnNJR0IzYVc1a2IzZGdMbHh1WEhSY2RDOHZJR1V1Wnk0Z2RtRnlJR3BSZFdWeWVTQTlJSEpsY1hWcGNtVW9YQ0pxY1hWbGNubGNJaWtvZDJsdVpHOTNLVHRjYmx4MFhIUXZMeUJUWldVZ2RHbGphMlYwSUNNeE5EVTBPU0JtYjNJZ2JXOXlaU0JwYm1adkxseHVYSFJjZEcxdlpIVnNaUzVsZUhCdmNuUnpJRDBnWjJ4dlltRnNMbVJ2WTNWdFpXNTBJRDljYmx4MFhIUmNkR1poWTNSdmNua29JR2RzYjJKaGJDd2dkSEoxWlNBcElEcGNibHgwWEhSY2RHWjFibU4wYVc5dUtDQjNJQ2tnZTF4dVhIUmNkRngwWEhScFppQW9JQ0YzTG1SdlkzVnRaVzUwSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkSFJvY205M0lHNWxkeUJGY25KdmNpZ2dYQ0pxVVhWbGNua2djbVZ4ZFdseVpYTWdZU0IzYVc1a2IzY2dkMmwwYUNCaElHUnZZM1Z0Wlc1MFhDSWdLVHRjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSeVpYUjFjbTRnWm1GamRHOXllU2dnZHlBcE8xeHVYSFJjZEZ4MGZUdGNibHgwZlNCbGJITmxJSHRjYmx4MFhIUm1ZV04wY
14938jNKNUtDQm5iRzlpWVd3Z0tUdGNibHgwZlZ4dVhHNHZMeUJRWVhOeklIUm9hWE1nYVdZZ2QybHVaRzkzSUdseklHNXZkQ0JrWldacGJtVmtJSGxsZEZ4dWZTaDBlWEJsYjJZZ2QybHVaRzkzSUNFOVBTQmNJblZ1WkdWbWFXNWxaRndpSUQ4Z2QybHVaRzkzSURvZ2RHaHBjeXdnWm5WdVkzUnBiMjRvSUhkcGJtUnZkeXdnYm05SGJHOWlZV3dnS1NCN1hHNWNiaTh2SUZOMWNIQnZjblE2SUVacGNtVm1iM2dnTVRnclhHNHZMeUJEWVc0bmRDQmlaU0JwYmlCemRISnBZM1FnYlc5a1pTd2djMlYyWlhKaGJDQnNhV0p6SUdsdVkyeDFaR2x1WnlCQlUxQXVUa1ZVSUhSeVlXTmxYRzR2THlCMGFHVWdjM1JoWTJzZ2RtbGhJR0Z5WjNWdFpXNTBjeTVqWVd4c1pYSXVZMkZzYkdWbElHRnVaQ0JHYVhKbFptOTRJR1JwWlhNZ2FXWmNiaTh2SUhsdmRTQjBjbmtnZEc4Z2RISmhZMlVnZEdoeWIzVm5hQ0JjSW5WelpTQnpkSEpwWTNSY0lpQmpZV3hzSUdOb1lXbHVjeTRnS0NNeE16TXpOU2xjYmk4dlhHNWNiblpoY2lCaGNuSWdQU0JiWFR0Y2JseHVkbUZ5SUhOc2FXTmxJRDBnWVhKeUxuTnNhV05sTzF4dVhHNTJZWElnWTI5dVkyRjBJRDBnWVhKeUxtTnZibU5oZER0Y2JseHVkbUZ5SUhCMWMyZ2dQU0JoY25JdWNIVnphRHRjYmx4dWRtRnlJR2x1WkdWNFQyWWdQU0JoY25JdWFXNWtaWGhQWmp0Y2JseHVkbUZ5SUdOc1lYTnpNblI1Y0dVZ1BTQjdmVHRjYmx4dWRtRnlJSFJ2VTNSeWFXNW5JRDBnWTJ4aGMzTXlkSGx3WlM1MGIxTjBjbWx1Wnp0Y2JseHVkbUZ5SUdoaGMwOTNiaUE5SUdOc1lYTnpNblI1Y0dVdWFHRnpUM2R1VUhKdmNHVnlkSGs3WEc1Y2JuWmhjaUJ6ZFhCd2IzSjBJRDBnZTMwN1hHNWNibHh1WEc1MllYSmNibHgwTHk4Z1ZYTmxJSFJvWlNCamIzSnlaV04wSUdSdlkzVnRaVzUwSUdGalkyOXlaR2x1WjJ4NUlIZHBkR2dnZDJsdVpHOTNJR0Z5WjNWdFpXNTBJQ2h6WVc1a1ltOTRLVnh1WEhSa2IyTjFiV1Z1ZENBOUlIZHBibVJ2ZHk1a2IyTjFiV1Z1ZEN4Y2JseHVYSFIyWlhKemFXOXVJRDBnWENJeUxqRXVORndpTEZ4dVhHNWNkQzh2SUVSbFptbHVaU0JoSUd4dlkyRnNJR052Y0hrZ2IyWWdhbEYxWlhKNVhHNWNkR3BSZFdWeWVTQTlJR1oxYm1OMGFXOXVLQ0J6Wld4bFkzUnZjaXdnWTI5dWRHVjRkQ0FwSUh0Y2JseDBYSFF2THlCVWFHVWdhbEYxWlhKNUlHOWlhbVZqZENCcGN5QmhZM1IxWVd4c2VTQnFkWE4wSUhSb1pTQnBibWwwSUdOdmJuTjBjblZqZEc5eUlDZGxibWhoYm1ObFpDZGNibHgwWEhRdkx5Qk9aV1ZrSUdsdWFYUWdhV1lnYWxGMVpYSjVJR2x6SUdOaGJHeGxaQ0FvYW5WemRDQmhiR3h2ZHlCbGNuSnZjaUIwYnlCaVpTQjBhSEp2ZDI0Z2FXWWdibTkwSUdsdVkyeDFaR1ZrS1Z4dVhIUmNkSEpsZEhWeWJpQnVaWGNnYWxGMVpYSjVMbVp1TG1sdWFYUW9JSE5sYkdWamRHOXlMQ0JqYjI1MFpYaDBJQ2s3WEc1Y2RIMHNYRzVjYmx4MEx5OGdVM1Z3Y0c5eWREb2dRVzVrY205cFpEdzBMakZjYmx4MEx5OGdUV0ZyWlNCemRYSmxJSGRsSUhSeWFXMGdRazlOSUdGdVpDQk9RbE5RWEc1Y2RISjBjbWx0SUQwZ0wxNWJYRnh6WEZ4MVJrVkdSbHhjZUVFd1hTdDhXMXhjYzF4Y2RVWkZSa1pjWEhoQk1GMHJKQzluTEZ4dVhHNWNkQzh2SUUxaGRHTm9aWE1nWkdGemFHVmtJSE4wY21sdVp5Qm1iM0lnWTJGdFpXeHBlbWx1WjF4dVhIUnliWE5RY21WbWFYZ2dQU0F2WGkxdGN5MHZMRnh1WEhSeVpHRnphRUZzY0doaElEMGdMeTBvVzF4Y1pHRXRlbDBwTDJkcExGeHVYRzVjZEM4dklGVnpaV1FnWW5rZ2FsRjFaWEo1TG1OaGJXVnNRMkZ6WlNCaGN5QmpZV3hzWW1GamF5QjBieUJ5WlhCc1lXTmxLQ2xjYmx4MFptTmhiV1ZzUTJGelpTQTlJR1oxYm1OMGFXOXVLQ0JoYkd3c0lHeGxkSFJsY2lBcElIdGNibHgwWEhSeVpYUjFjbTRnYkdWMGRHVnlMblJ2VlhCd1pYSkRZWE5sS0NrN1hHNWNkSDA3WEc1Y2JtcFJkV1Z5ZVM1bWJpQTlJR3BSZFdWeWVTNXdjbTkwYjNSNWNHVWdQU0I3WEc1Y2RDOHZJRlJvWlNCamRYSnlaVzUwSUhabGNuTnBiMjRnYjJZZ2FsRjFaWEo1SUdKbGFXNW5JSFZ6WldSY2JseDBhbkYxWlhKNU9pQjJaWEp6YVc5dUxGeHVYRzVjZEdOdmJuTjBjblZqZEc5eU9pQnFVWFZsY25rc1hHNWNibHgwTHk4Z1UzUmhjblFnZDJsMGFDQmhiaUJsYlhCMGVTQnpaV3hsWTNSdmNseHVYSFJ6Wld4bFkzUnZjam9nWENKY0lpeGNibHh1WEhRdkx5QlVhR1VnWkdWbVlYVnNkQ0JzWlc1bmRHZ2diMllnWVNCcVVYVmxjbmtnYjJKcVpXTjBJR2x6SURCY2JseDBiR1Z1WjNSb09pQXdMRnh1WEc1Y2RIUnZRWEp5WVhrNklHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RISmxkSFZ5YmlCemJHbGpaUzVqWVd4c0tDQjBhR2x6SUNrN1hHNWNkSDBzWEc1Y2JseDBMeThnUjJWMElIUm9aU0JPZEdnZ1pXeGxiV1Z1ZENCcGJpQjBhR1VnYldGMFkyaGxaQ0JsYkdWdFpXNTBJSE5sZENCUFVseHVYSFF2THlCSFpYUWdkR2hsSUhkb2IyeGxJRzFoZEdOb1pXUWdaV3hsYldWdWRDQnpaWFFnWVhNZ1lTQmpiR1ZoYmlCaGNuSmhlVnh1WEhSblpYUTZJR1oxYm1OMGFXOXVLQ0J1ZFcwZ0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUc1MWJTQWhQU0J1ZFd4c0lEOWNibHh1WEhSY2RGeDBMeThnVW1WMGRYSnVJR3AxYzNRZ2RHaGxJRzl1WlNCbGJHVnRaVzUwSUdaeWIyMGdkR2hsSUhObGRGeHVYSFJjZEZ4MEtDQnVkVzBnUENBd0lEOGdkR2hwYzFzZ2JuVnRJQ3NnZEdocGN5NXNaVzVuZEdnZ1hTQTZJSFJvYVhOYklHNTFiU0JkSUNrZ09seHVYRzVjZEZ4MFhIUXZMeUJTWlhSMWNtNGdZV3hzSUhSb1pTQmxiR1Z0Wlc1MGN5QnBiaUJoSUdOc1pXRnVJR0Z5Y21GNVhHNWNkRngwWEhSemJHbGpaUzVqWVd4c0tDQjBhR2x6SUNrN1hHNWNkSDBzWEc1Y2JseDBMeThnVkdGclpTQmhiaUJoY25KaGVTQnZaaUJsYkdWdFpXNTBjeUJoYm1RZ2NIVnphQ0JwZENCdmJuUnZJSFJvWlNCemRHRmphMXh1WEhRdkx5QW9jbVYwZFhKdWFXNW5JSFJvWlNCdVpYY2diV0YwWTJobFpDQmxiR1Z0Wlc1MElITmxkQ2xjYmx4MGNIVnphRk4wWVdOck9pQm1kVzVqZEdsdmJpZ2daV3hsYlhNZ0tTQjdYRzVjYmx4MFhIUXZMeUJDZFdsc1pDQmhJRzVsZHlCcVVYVmxjbmtnYldGMFkyaGxaQ0JsYkdWdFpXNTBJSE5sZEZ4dVhIUmNkSFpoY2lCeVpYUWdQU0JxVVhWbGNua3ViV1Z5WjJVb0lIUm9hWE11WTI5dWMzUnlkV04wYjNJb0tTd2daV3hsYlhNZ0tUdGNibHh1WEhSY2RDOHZJRUZrWkNCMGFHVWdiMnhrSUc5aWFtVmpkQ0J2Ym5SdklIUm9aU0J6ZEdGamF5QW9ZWE1nWVNCeVpXWmxjbVZ1WTJVcFhHNWNkRngwY21WMExuQnlaWFpQWW1wbFkzUWdQU0IwYUdsek8xeHVYSFJjZEhKbGRDNWpiMjUwWlhoMEl
14938EMGdkR2hwY3k1amIyNTBaWGgwTzF4dVhHNWNkRngwTHk4Z1VtVjBkWEp1SUhSb1pTQnVaWGRzZVMxbWIzSnRaV1FnWld4bGJXVnVkQ0J6WlhSY2JseDBYSFJ5WlhSMWNtNGdjbVYwTzF4dVhIUjlMRnh1WEc1Y2RDOHZJRVY0WldOMWRHVWdZU0JqWVd4c1ltRmpheUJtYjNJZ1pYWmxjbmtnWld4bGJXVnVkQ0JwYmlCMGFHVWdiV0YwWTJobFpDQnpaWFF1WEc1Y2RDOHZJQ2haYjNVZ1kyRnVJSE5sWldRZ2RHaGxJR0Z5WjNWdFpXNTBjeUIzYVhSb0lHRnVJR0Z5Y21GNUlHOW1JR0Z5WjNNc0lHSjFkQ0IwYUdseklHbHpYRzVjZEM4dklHOXViSGtnZFhObFpDQnBiblJsY201aGJHeDVMaWxjYmx4MFpXRmphRG9nWm5WdVkzUnBiMjRvSUdOaGJHeGlZV05yTENCaGNtZHpJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQnFVWFZsY25rdVpXRmphQ2dnZEdocGN5d2dZMkZzYkdKaFkyc3NJR0Z5WjNNZ0tUdGNibHgwZlN4Y2JseHVYSFJ0WVhBNklHWjFibU4wYVc5dUtDQmpZV3hzWW1GamF5QXBJSHRjYmx4MFhIUnlaWFIxY200Z2RHaHBjeTV3ZFhOb1UzUmhZMnNvSUdwUmRXVnllUzV0WVhBb2RHaHBjeXdnWm5WdVkzUnBiMjRvSUdWc1pXMHNJR2tnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnWTJGc2JHSmhZMnN1WTJGc2JDZ2daV3hsYlN3Z2FTd2daV3hsYlNBcE8xeHVYSFJjZEgwcEtUdGNibHgwZlN4Y2JseHVYSFJ6YkdsalpUb2dablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE11Y0hWemFGTjBZV05yS0NCemJHbGpaUzVoY0hCc2VTZ2dkR2hwY3l3Z1lYSm5kVzFsYm5SeklDa2dLVHRjYmx4MGZTeGNibHh1WEhSbWFYSnpkRG9nWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwY21WMGRYSnVJSFJvYVhNdVpYRW9JREFnS1R0Y2JseDBmU3hjYmx4dVhIUnNZWE4wT2lCbWRXNWpkR2x2YmlncElIdGNibHgwWEhSeVpYUjFjbTRnZEdocGN5NWxjU2dnTFRFZ0tUdGNibHgwZlN4Y2JseHVYSFJsY1RvZ1puVnVZM1JwYjI0b0lHa2dLU0I3WEc1Y2RGeDBkbUZ5SUd4bGJpQTlJSFJvYVhNdWJHVnVaM1JvTEZ4dVhIUmNkRngwYWlBOUlDdHBJQ3NnS0NCcElEd2dNQ0EvSUd4bGJpQTZJREFnS1R0Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3k1d2RYTm9VM1JoWTJzb0lHb2dQajBnTUNBbUppQnFJRHdnYkdWdUlEOGdXeUIwYUdselcycGRJRjBnT2lCYlhTQXBPMXh1WEhSOUxGeHVYRzVjZEdWdVpEb2dablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE11Y0hKbGRrOWlhbVZqZENCOGZDQjBhR2x6TG1OdmJuTjBjblZqZEc5eUtHNTFiR3dwTzF4dVhIUjlMRnh1WEc1Y2RDOHZJRVp2Y2lCcGJuUmxjbTVoYkNCMWMyVWdiMjVzZVM1Y2JseDBMeThnUW1Wb1lYWmxjeUJzYVd0bElHRnVJRUZ5Y21GNUozTWdiV1YwYUc5a0xDQnViM1FnYkdsclpTQmhJR3BSZFdWeWVTQnRaWFJvYjJRdVhHNWNkSEIxYzJnNklIQjFjMmdzWEc1Y2RITnZjblE2SUdGeWNpNXpiM0owTEZ4dVhIUnpjR3hwWTJVNklHRnljaTV6Y0d4cFkyVmNibjA3WEc1Y2JtcFJkV1Z5ZVM1bGVIUmxibVFnUFNCcVVYVmxjbmt1Wm00dVpYaDBaVzVrSUQwZ1puVnVZM1JwYjI0b0tTQjdYRzVjZEhaaGNpQnZjSFJwYjI1ekxDQnVZVzFsTENCemNtTXNJR052Y0hrc0lHTnZjSGxKYzBGeWNtRjVMQ0JqYkc5dVpTeGNibHgwWEhSMFlYSm5aWFFnUFNCaGNtZDFiV1Z1ZEhOYk1GMGdmSHdnZTMwc1hHNWNkRngwYVNBOUlERXNYRzVjZEZ4MGJHVnVaM1JvSUQwZ1lYSm5kVzFsYm5SekxteGxibWQwYUN4Y2JseDBYSFJrWldWd0lEMGdabUZzYzJVN1hHNWNibHgwTHk4Z1NHRnVaR3hsSUdFZ1pHVmxjQ0JqYjNCNUlITnBkSFZoZEdsdmJseHVYSFJwWmlBb0lIUjVjR1Z2WmlCMFlYSm5aWFFnUFQwOUlGd2lZbTl2YkdWaGJsd2lJQ2tnZTF4dVhIUmNkR1JsWlhBZ1BTQjBZWEpuWlhRN1hHNWNibHgwWEhRdkx5QlRhMmx3SUhSb1pTQmliMjlzWldGdUlHRnVaQ0IwYUdVZ2RHRnlaMlYwWEc1Y2RGeDBkR0Z5WjJWMElEMGdZWEpuZFcxbGJuUnpXeUJwSUYwZ2ZId2dlMzA3WEc1Y2RGeDBhU3NyTzF4dVhIUjlYRzVjYmx4MEx5OGdTR0Z1Wkd4bElHTmhjMlVnZDJobGJpQjBZWEpuWlhRZ2FYTWdZU0J6ZEhKcGJtY2diM0lnYzI5dFpYUm9hVzVuSUNod2IzTnphV0pzWlNCcGJpQmtaV1Z3SUdOdmNIa3BYRzVjZEdsbUlDZ2dkSGx3Wlc5bUlIUmhjbWRsZENBaFBUMGdYQ0p2WW1wbFkzUmNJaUFtSmlBaGFsRjFaWEo1TG1selJuVnVZM1JwYjI0b2RHRnlaMlYwS1NBcElIdGNibHgwWEhSMFlYSm5aWFFnUFNCN2ZUdGNibHgwZlZ4dVhHNWNkQzh2SUVWNGRHVnVaQ0JxVVhWbGNua2dhWFJ6Wld4bUlHbG1JRzl1YkhrZ2IyNWxJR0Z5WjNWdFpXNTBJR2x6SUhCaGMzTmxaRnh1WEhScFppQW9JR2tnUFQwOUlHeGxibWQwYUNBcElIdGNibHgwWEhSMFlYSm5aWFFnUFNCMGFHbHpPMXh1WEhSY2RHa3RMVHRjYmx4MGZWeHVYRzVjZEdadmNpQW9JRHNnYVNBOElHeGxibWQwYURzZ2FTc3JJQ2tnZTF4dVhIUmNkQzh2SUU5dWJIa2daR1ZoYkNCM2FYUm9JRzV2YmkxdWRXeHNMM1Z1WkdWbWFXNWxaQ0IyWVd4MVpYTmNibHgwWEhScFppQW9JQ2h2Y0hScGIyNXpJRDBnWVhKbmRXMWxiblJ6V3lCcElGMHBJQ0U5SUc1MWJHd2dLU0I3WEc1Y2RGeDBYSFF2THlCRmVIUmxibVFnZEdobElHSmhjMlVnYjJKcVpXTjBYRzVjZEZ4MFhIUm1iM0lnS0NCdVlXMWxJR2x1SUc5d2RHbHZibk1nS1NCN1hHNWNkRngwWEhSY2RITnlZeUE5SUhSaGNtZGxkRnNnYm1GdFpTQmRPMXh1WEhSY2RGeDBYSFJqYjNCNUlEMGdiM0IwYVc5dWMxc2dibUZ0WlNCZE8xeHVYRzVjZEZ4MFhIUmNkQzh2SUZCeVpYWmxiblFnYm1WMlpYSXRaVzVrYVc1bklHeHZiM0JjYmx4MFhIUmNkRngwYVdZZ0tDQjBZWEpuWlhRZ1BUMDlJR052Y0hrZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWTI5dWRHbHVkV1U3WEc1Y2RGeDBYSFJjZEgxY2JseHVYSFJjZEZ4MFhIUXZMeUJTWldOMWNuTmxJR2xtSUhkbEozSmxJRzFsY21kcGJtY2djR3hoYVc0Z2IySnFaV04wY3lCdmNpQmhjbkpoZVhOY2JseDBYSFJjZEZ4MGFXWWdLQ0JrWldWd0lDWW1JR052Y0hrZ0ppWWdLQ0JxVVhWbGNua3VhWE5RYkdGcGJrOWlhbVZqZENoamIzQjVLU0I4ZkNBb1kyOXdlVWx6UVhKeVlYa2dQU0JxVVhWbGNua3VhWE5CY25KaG
14938VTaGpiM0I1S1NrZ0tTQXBJSHRjYmx4MFhIUmNkRngwWEhScFppQW9JR052Y0hsSmMwRnljbUY1SUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwWTI5d2VVbHpRWEp5WVhrZ1BTQm1ZV3h6WlR0Y2JseDBYSFJjZEZ4MFhIUmNkR05zYjI1bElEMGdjM0pqSUNZbUlHcFJkV1Z5ZVM1cGMwRnljbUY1S0hOeVl5a2dQeUJ6Y21NZ09pQmJYVHRjYmx4dVhIUmNkRngwWEhSY2RIMGdaV3h6WlNCN1hHNWNkRngwWEhSY2RGeDBYSFJqYkc5dVpTQTlJSE55WXlBbUppQnFVWFZsY25rdWFYTlFiR0ZwYms5aWFtVmpkQ2h6Y21NcElEOGdjM0pqSURvZ2UzMDdYRzVjZEZ4MFhIUmNkRngwZlZ4dVhHNWNkRngwWEhSY2RGeDBMeThnVG1WMlpYSWdiVzkyWlNCdmNtbG5hVzVoYkNCdlltcGxZM1J6TENCamJHOXVaU0IwYUdWdFhHNWNkRngwWEhSY2RGeDBkR0Z5WjJWMFd5QnVZVzFsSUYwZ1BTQnFVWFZsY25rdVpYaDBaVzVrS0NCa1pXVndMQ0JqYkc5dVpTd2dZMjl3ZVNBcE8xeHVYRzVjZEZ4MFhIUmNkQzh2SUVSdmJpZDBJR0p5YVc1bklHbHVJSFZ1WkdWbWFXNWxaQ0IyWVd4MVpYTmNibHgwWEhSY2RGeDBmU0JsYkhObElHbG1JQ2dnWTI5d2VTQWhQVDBnZFc1a1pXWnBibVZrSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkSFJoY21kbGRGc2dibUZ0WlNCZElEMGdZMjl3ZVR0Y2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MGZWeHVYSFJjZEgxY2JseDBmVnh1WEc1Y2RDOHZJRkpsZEhWeWJpQjBhR1VnYlc5a2FXWnBaV1FnYjJKcVpXTjBYRzVjZEhKbGRIVnliaUIwWVhKblpYUTdYRzU5TzF4dVhHNXFVWFZsY25rdVpYaDBaVzVrS0h0Y2JseDBMeThnVlc1cGNYVmxJR1p2Y2lCbFlXTm9JR052Y0hrZ2IyWWdhbEYxWlhKNUlHOXVJSFJvWlNCd1lXZGxYRzVjZEdWNGNHRnVaRzg2SUZ3aWFsRjFaWEo1WENJZ0t5QW9JSFpsY25OcGIyNGdLeUJOWVhSb0xuSmhibVJ2YlNncElDa3VjbVZ3YkdGalpTZ2dMMXhjUkM5bkxDQmNJbHdpSUNrc1hHNWNibHgwTHk4Z1FYTnpkVzFsSUdwUmRXVnllU0JwY3lCeVpXRmtlU0IzYVhSb2IzVjBJSFJvWlNCeVpXRmtlU0J0YjJSMWJHVmNibHgwYVhOU1pXRmtlVG9nZEhKMVpTeGNibHh1WEhSbGNuSnZjam9nWm5WdVkzUnBiMjRvSUcxelp5QXBJSHRjYmx4MFhIUjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0lHMXpaeUFwTzF4dVhIUjlMRnh1WEc1Y2RHNXZiM0E2SUdaMWJtTjBhVzl1S0NrZ2UzMHNYRzVjYmx4MGFYTkdkVzVqZEdsdmJqb2dablZ1WTNScGIyNG9JRzlpYWlBcElIdGNibHgwWEhSeVpYUjFjbTRnYWxGMVpYSjVMblI1Y0dVb2IySnFLU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lPMXh1WEhSOUxGeHVYRzVjZEdselFYSnlZWGs2SUVGeWNtRjVMbWx6UVhKeVlYa3NYRzVjYmx4MGFYTlhhVzVrYjNjNklHWjFibU4wYVc5dUtDQnZZbW9nS1NCN1hHNWNkRngwY21WMGRYSnVJRzlpYWlBaFBTQnVkV3hzSUNZbUlHOWlhaUE5UFQwZ2IySnFMbmRwYm1SdmR6dGNibHgwZlN4Y2JseHVYSFJwYzA1MWJXVnlhV002SUdaMWJtTjBhVzl1S0NCdlltb2dLU0I3WEc1Y2RGeDBMeThnY0dGeWMyVkdiRzloZENCT1lVNXpJRzUxYldWeWFXTXRZMkZ6ZENCbVlXeHpaU0J3YjNOcGRHbDJaWE1nS0c1MWJHeDhkSEoxWlh4bVlXeHpaWHhjSWx3aUtWeHVYSFJjZEM4dklDNHVMbUoxZENCdGFYTnBiblJsY25CeVpYUnpJR3hsWVdScGJtY3RiblZ0WW1WeUlITjBjbWx1WjNNc0lIQmhjblJwWTNWc1lYSnNlU0JvWlhnZ2JHbDBaWEpoYkhNZ0tGd2lNSGd1TGk1Y0lpbGNibHgwWEhRdkx5QnpkV0owY21GamRHbHZiaUJtYjNKalpYTWdhVzVtYVc1cGRHbGxjeUIwYnlCT1lVNWNibHgwWEhRdkx5QmhaR1JwYm1jZ01TQmpiM0p5WldOMGN5QnNiM056SUc5bUlIQnlaV05wYzJsdmJpQm1jbTl0SUhCaGNuTmxSbXh2WVhRZ0tDTXhOVEV3TUNsY2JseDBYSFJ5WlhSMWNtNGdJV3BSZFdWeWVTNXBjMEZ5Y21GNUtDQnZZbW9nS1NBbUppQW9iMkpxSUMwZ2NHRnljMlZHYkc5aGRDZ2diMkpxSUNrZ0t5QXhLU0ErUFNBd08xeHVYSFI5TEZ4dVhHNWNkR2x6VUd4aGFXNVBZbXBsWTNRNklHWjFibU4wYVc5dUtDQnZZbW9nS1NCN1hHNWNkRngwTHk4Z1RtOTBJSEJzWVdsdUlHOWlhbVZqZEhNNlhHNWNkRngwTHk4Z0xTQkJibmtnYjJKcVpXTjBJRzl5SUhaaGJIVmxJSGRvYjNObElHbHVkR1Z5Ym1Gc0lGdGJRMnhoYzNOZFhTQndjbTl3WlhKMGVTQnBjeUJ1YjNRZ1hDSmJiMkpxWldOMElFOWlhbVZqZEYxY0lseHVYSFJjZEM4dklDMGdSRTlOSUc1dlpHVnpYRzVjZEZ4MEx5OGdMU0IzYVc1a2IzZGNibHgwWEhScFppQW9JR3BSZFdWeWVTNTBlWEJsS0NCdlltb2dLU0FoUFQwZ1hDSnZZbXBsWTNSY0lpQjhmQ0J2WW1vdWJtOWtaVlI1Y0dVZ2ZId2dhbEYxWlhKNUxtbHpWMmx1Wkc5M0tDQnZZbW9nS1NBcElIdGNibHgwWEhSY2RISmxkSFZ5YmlCbVlXeHpaVHRjYmx4MFhIUjlYRzVjYmx4MFhIUnBaaUFvSUc5aWFpNWpiMjV6ZEhKMVkzUnZjaUFtSmx4dVhIUmNkRngwWEhRaGFHRnpUM2R1TG1OaGJHd29JRzlpYWk1amIyNXpkSEoxWTNSdmNpNXdjbTkwYjNSNWNHVXNJRndpYVhOUWNtOTBiM1I1Y0dWUFpsd2lJQ2tnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnWm1Gc2MyVTdYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdTV1lnZEdobElHWjFibU4wYVc5dUlHaGhjMjRuZENCeVpYUjFjbTVsWkNCaGJISmxZV1I1TENCM1pTZHlaU0JqYjI1bWFXUmxiblFnZEdoaGRGeHVYSFJjZEM4dklIeHZZbXA4SUdseklHRWdjR3hoYVc0Z2IySnFaV04wTENCamNtVmhkR1ZrSUdKNUlIdDlJRzl5SUdOdmJuTjBjblZqZEdWa0lIZHBkR2dnYm1WM0lFOWlhbVZqZEZ4dVhIUmNkSEpsZEhWeWJpQjBjblZsTzF4dVhIUjlMRnh1WEc1Y2RHbHpSVzF3ZEhsUFltcGxZM1E2SUdaMWJtTjBhVzl1S0NCdlltb2dLU0I3WEc1Y2RGeDBkbUZ5SUc1aGJXVTdYRzVjZEZ4MFptOXlJQ2dnYm1GdFpTQnBiaUJ2WW1vZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200Z1ptRnNjMlU3WEc1Y2RGeDBmVnh1WEhSY2RISmxkSFZ5YmlCMGNuVmxPMXh1WEhSOUxGeHVYRzVjZEhSNWNHVTZJR1oxYm1OMGFXOXVLQ0J2WW1vZ0tTQjdYRzVjZEZ4MGFXWWdLQ0J2WW1vZ1BUMGdiblZzYkNBcElIdGNibHgwWEhSY2RISmxkSFZ5YmlCdlltb2dLeUJjSWx3aU8xeHVYSFJjZEgxY2JseDBYSFF2THlCVGRYQndiM0owT2lCQmJtUnliMmxrUERRdU1Dd2dhVTlUUERZZ0tHWjFibU4wYVc5dWFYTm9JRkpsWjBWNGNDbGNibHgwWEhSeVpYUjFjbTRnZEhsd1pXOW1JRzlpYWlBOVBUMGdYQ0p2WW1wbFkzUmNJaUI4ZkNCMGVYQmxiMllnYjJKcUlEMDlQU0JjSW1aMWJtTjBhVzl1WENJZ1AxeHVYSFJjZEZ4MFkyeGhjM015ZEhsd1pWc2dkRzlUZEhKcGJtY3VZMkZzYkNodlltb3BJRjBnZkh3Z1hDSnZZbXBsWTNSY0lpQTZYRzVjZEZ4MFhIUjBlWEJsYjJZZ2IySnFPMXh1WEhSOUxGeHVYRzVjZEM4dklFVjJZV3gxWVhSbGN5QmhJSE5qY21sd2RDQnBiaUJoSUdkc2IySmhiQ0JqYjI1MFpYaDBYRzVjZEdkc2IySmhiRVYyWVd3NklHWjFibU4wYVc5dUtDQmpiMlJsSUNrZ2UxeHVYSFJjZEhaaGNpQnpZM0pwY0hRc1hHNWNkRngwWEhScGJtUnBjbVZqZENBOUlHVjJZV3c3WEc1Y2JseDBYSFJqYjJSbElEMGdhbEYxWlhKNUxuUnlhVzBvSUdOdlpHVWdLVHRjYmx4dVhIUmNkR2xtSUNnZ1kyOWtaU0FwSUh0Y2JseDBYSFJjZEM4dklFbG1JSFJvWlNCamIyUmxJR2x1WTJ4MVpHVnpJR0VnZG1Gc2FXUXNJSEJ5YjJ4dlozVmxJSEJ2YzJsMGFXOXVYRzVjZEZ4MFhIUXZMeUJ6ZEhKcFkzUWdiVzlrWlNCd2NtRm5iV0VzSUdWNFpXTjFkR1VnWTI5a1pTQmllU0JwYm
149381wbFkzUnBibWNnWVZ4dVhIUmNkRngwTHk4Z2MyTnlhWEIwSUhSaFp5QnBiblJ2SUhSb1pTQmtiMk4xYldWdWRDNWNibHgwWEhSY2RHbG1JQ2dnWTI5a1pTNXBibVJsZUU5bUtGd2lkWE5sSUhOMGNtbGpkRndpS1NBOVBUMGdNU0FwSUh0Y2JseDBYSFJjZEZ4MGMyTnlhWEIwSUQwZ1pHOWpkVzFsYm5RdVkzSmxZWFJsUld4bGJXVnVkQ2hjSW5OamNtbHdkRndpS1R0Y2JseDBYSFJjZEZ4MGMyTnlhWEIwTG5SbGVIUWdQU0JqYjJSbE8xeHVYSFJjZEZ4MFhIUmtiMk4xYldWdWRDNW9aV0ZrTG1Gd2NHVnVaRU5vYVd4a0tDQnpZM0pwY0hRZ0tTNXdZWEpsYm5ST2IyUmxMbkpsYlc5MlpVTm9hV3hrS0NCelkzSnBjSFFnS1R0Y2JseDBYSFJjZEgwZ1pXeHpaU0I3WEc1Y2RGeDBYSFF2THlCUGRHaGxjbmRwYzJVc0lHRjJiMmxrSUhSb1pTQkVUMDBnYm05a1pTQmpjbVZoZEdsdmJpd2dhVzV6WlhKMGFXOXVYRzVjZEZ4MFhIUXZMeUJoYm1RZ2NtVnRiM1poYkNCaWVTQjFjMmx1WnlCaGJpQnBibVJwY21WamRDQm5iRzlpWVd3Z1pYWmhiRnh1WEhSY2RGeDBYSFJwYm1ScGNtVmpkQ2dnWTI5a1pTQXBPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHgwZlN4Y2JseHVYSFF2THlCRGIyNTJaWEowSUdSaGMyaGxaQ0IwYnlCallXMWxiRU5oYzJVN0lIVnpaV1FnWW5rZ2RHaGxJR056Y3lCaGJtUWdaR0YwWVNCdGIyUjFiR1Z6WEc1Y2RDOHZJRk4xY0hCdmNuUTZJRWxGT1MweE1TdGNibHgwTHk4Z1RXbGpjbTl6YjJaMElHWnZjbWR2ZENCMGJ5Qm9kVzF3SUhSb1pXbHlJSFpsYm1SdmNpQndjbVZtYVhnZ0tDTTVOVGN5S1Z4dVhIUmpZVzFsYkVOaGMyVTZJR1oxYm1OMGFXOXVLQ0J6ZEhKcGJtY2dLU0I3WEc1Y2RGeDBjbVYwZFhKdUlITjBjbWx1Wnk1eVpYQnNZV05sS0NCeWJYTlFjbVZtYVhnc0lGd2liWE10WENJZ0tTNXlaWEJzWVdObEtDQnlaR0Z6YUVGc2NHaGhMQ0JtWTJGdFpXeERZWE5sSUNrN1hHNWNkSDBzWEc1Y2JseDBibTlrWlU1aGJXVTZJR1oxYm1OMGFXOXVLQ0JsYkdWdExDQnVZVzFsSUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJsYkdWdExtNXZaR1ZPWVcxbElDWW1JR1ZzWlcwdWJtOWtaVTVoYldVdWRHOU1iM2RsY2tOaGMyVW9LU0E5UFQwZ2JtRnRaUzUwYjB4dmQyVnlRMkZ6WlNncE8xeHVYSFI5TEZ4dVhHNWNkQzh2SUdGeVozTWdhWE1nWm05eUlHbHVkR1Z5Ym1Gc0lIVnpZV2RsSUc5dWJIbGNibHgwWldGamFEb2dablZ1WTNScGIyNG9JRzlpYWl3Z1kyRnNiR0poWTJzc0lHRnlaM01nS1NCN1hHNWNkRngwZG1GeUlIWmhiSFZsTEZ4dVhIUmNkRngwYVNBOUlEQXNYRzVjZEZ4MFhIUnNaVzVuZEdnZ1BTQnZZbW91YkdWdVozUm9MRnh1WEhSY2RGeDBhWE5CY25KaGVTQTlJR2x6UVhKeVlYbHNhV3RsS0NCdlltb2dLVHRjYmx4dVhIUmNkR2xtSUNnZ1lYSm5jeUFwSUh0Y2JseDBYSFJjZEdsbUlDZ2dhWE5CY25KaG
14938VTQXBJSHRjYmx4MFhIUmNkRngwWm05eUlDZ2dPeUJwSUR3Z2JHVnVaM1JvT3lCcEt5c2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MGRtRnNkV1VnUFNCallXeHNZbUZqYXk1aGNIQnNlU2dnYjJKcVd5QnBJRjBzSUdGeVozTWdLVHRjYmx4dVhIUmNkRngwWEhSY2RHbG1JQ2dnZG1Gc2RXVWdQVDA5SUdaaGJITmxJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBZbkpsWVdzN1hHNWNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBYSFJtYjNJZ0tDQnBJR2x1SUc5aWFpQXBJSHRjYmx4MFhIUmNkRngwWEhSMllXeDFaU0E5SUdOaGJHeGlZV05yTG1Gd2NHeDVLQ0J2WW1wYklHa2dYU3dnWVhKbmN5QXBPMXh1WEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0IyWVd4MVpTQTlQVDBnWm1Gc2MyVWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUmljbVZoYXp0Y2JseDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDFjYmx4dVhIUmNkQzh2SUVFZ2MzQmxZMmxoYkN3Z1ptRnpkQ3dnWTJGelpTQm1iM0lnZEdobElHMXZjM1FnWTI5dGJXOXVJSFZ6WlNCdlppQmxZV05vWEc1Y2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RHbG1JQ2dnYVhOQmNuSmhlU0FwSUh0Y2JseDBYSFJjZEZ4MFptOXlJQ2dnT3lCcElEd2diR1Z1WjNSb095QnBLeXNnS1NCN1hHNWNkRngwWEhSY2RGeDBkbUZzZFdVZ1BTQmpZV3hzWW1GamF5NWpZV3hzS0NCdlltcGJJR2tnWFN3Z2FTd2diMkpxV3lCcElGMGdLVHRjYmx4dVhIUmNkRngwWEhSY2RHbG1JQ2dnZG1Gc2RXVWdQVDA5SUdaaGJITmxJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBZbkpsWVdzN1hHNWNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBYSFJtYjNJZ0tDQnBJR2x1SUc5aWFpQXBJSHRjYmx4MFhIUmNkRngwWEhSMllXeDFaU0E5SUdOaGJHeGlZV05yTG1OaGJHd29JRzlpYWxzZ2FTQmRMQ0JwTENCdlltcGJJR2tnWFNBcE8xeHVYRzVjZEZ4MFhIUmNkRngwYVdZZ0tDQjJZV3gxWlNBOVBUMGdabUZzYzJVZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSaWNtVmhhenRjYmx4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMWNibHgwWEhSOVhHNWNibHgwWEhSeVpYUjFjbTRnYjJKcU8xeHVYSFI5TEZ4dVhHNWNkQzh2SUZOMWNIQnZjblE2SUVGdVpISnZhV1E4TkM0eFhHNWNkSFJ5YVcwNklHWjFibU4wYVc5dUtDQjBaWGgwSUNrZ2UxeHVYSFJjZEhKbGRIVnliaUIwWlhoMElEMDlJRzUxYkd3Z1AxeHVYSFJjZEZ4MFhDSmNJaUE2WEc1Y2RGeDBYSFFvSUhSbGVIUWdLeUJjSWx3aUlDa3VjbVZ3YkdGalpTZ2djblJ5YVcwc0lGd2lYQ0lnS1R0Y2JseDBmU3hjYmx4dVhIUXZMeUJ5WlhOMWJIUnpJR2x6SUdadmNpQnBiblJsY201aGJDQjFjMkZuWlNCdmJteDVYRzVjZEcxaGEyVkJjbkpoZVRvZ1puVnVZM1JwYjI0b0lHRnljaXdnY21WemRXeDBjeUFwSUh0Y2JseDBYSFIyWVhJZ2NtVjBJRDBnY21WemRXeDBjeUI4ZkNCYlhUdGNibHh1WEhSY2RHbG1JQ2dnWVhKeUlDRTlJRzUxYkd3Z0tTQjdYRzVjZEZ4MFhIUnBaaUFvSUdselFYSnlZWGxzYVd0bEtDQlBZbXBsWTNRb1lYSnlLU0FwSUNrZ2UxeHVYSFJjZEZ4MFhIUnFVWFZsY25rdWJXVnlaMlVvSUhKbGRDeGNibHgwWEhSY2RGeDBYSFIwZVhCbGIyWWdZWEp5SUQwOVBTQmNJbk4wY21sdVoxd2lJRDljYmx4MFhIUmNkRngwWEhSYklHRnljaUJkSURvZ1lYSnlYRzVjZEZ4MFhIUmNkQ2s3WEc1Y2RGeDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBYSFJ3ZFhOb0xtTmhiR3dvSUhKbGRDd2dZWEp5SUNrN1hHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhHNWNkRngwY21WMGRYSnVJSEpsZER0Y2JseDBmU3hjYmx4dVhIUnBia0Z5Y21GNU9pQm1kVzVqZEdsdmJpZ2daV3hsYlN3Z1lYSnlMQ0JwSUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJoY25JZ1BUMGdiblZzYkNBL0lDMHhJRG9nYVc1a1pYaFBaaTVqWVd4c0tDQmhjbklzSUdWc1pXMHNJR2tnS1R0Y2JseDBmU3hjYmx4dVhIUnRaWEpuWlRvZ1puVnVZM1JwYjI0b0lHWnBjbk4wTENCelpXTnZibVFnS1NCN1hHNWNkRngwZG1GeUlHeGxiaUE5SUN0elpXTnZibVF1YkdWdVozUm9MRnh1WEhSY2RGeDBhaUE5SURBc1hHNWNkRngwWEhScElEMGdabWx5YzNRdWJHVnVaM1JvTzF4dVhHNWNkRngwWm05eUlDZ2dPeUJxSUR3Z2JHVnVPeUJxS3lzZ0tTQjdYRzVjZEZ4MFhIUm1hWEp6ZEZzZ2FTc3JJRjBnUFNCelpXTnZibVJiSUdvZ1hUdGNibHgwWEhSOVhHNWNibHgwWEhSbWFYSnpkQzVzWlc1bmRHZ2dQU0JwTzF4dVhHNWNkRngwY21WMGRYSnVJR1pwY25OME8xeHVYSFI5TEZ4dVhHNWNkR2R5WlhBNklHWjFibU4wYVc5dUtDQmxiR1Z0Y3l3Z1kyRnNiR0poWTJzc0lHbHVkbVZ5ZENBcElIdGNibHgwWEhSMllYSWdZMkZzYkdKaFkydEpiblpsY25ObExGeHVYSFJjZEZ4MGJXRjBZMmhsY3lBOUlGdGRMRnh1WEhSY2RGeDBhU0E5SURBc1hHNWNkRngwWEhSc1pXNW5kR2dnUFNCbGJHVnRjeTVzWlc1bmRHZ3NYRzVjZEZ4MFhIUmpZV3hzWW1GamEwVjRjR1ZqZENBOUlDRnBiblpsY25RN1hHNWNibHgwWEhRdkx5QkhieUIwYUhKdmRXZG9JSFJvWlNCaGNuSmhlU3dnYjI1c2VTQnpZWFpwYm1jZ2RHaGxJR2wwWlcxelhHNWNkRngwTHk4Z2RHaGhkQ0J3WVhOeklIUm9aU0IyWVd4cFpHRjBiM0lnWm5WdVkzUnBiMjVjYmx4MFhIUm1iM0lnS0NBN0lHa2dQQ0JzWlc1bmRHZzdJR2tyS3lBcElIdGNibHgwWEhSY2RHTmhiR3hpWVdOclNXNTJaWEp6WlNBOUlDRmpZV3hzWW1GamF5Z2daV3hsYlhOYklHa2dYU3dnYVNBcE8xeHVYSFJjZEZ4MGFXWWdLQ0JqWVd4c1ltRmphMGx1ZG1WeWMyVWdJVDA5SUdOaGJHeGlZV05yUlhod1pXTjBJQ2tnZTF4dVhIUmNkRngwWEhSdFlYUmphR1Z6TG5CMWMyZ29JR1ZzWlcxeld5QnBJRjBnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5WEc1Y2JseDBYSFJ5WlhSMWNtNGdiV0YwWTJobGN6dGNibHgwZlN4Y2JseHVYSFF2THlCaGNtY2dhWE1nWm05eUlHbHVkR1Z5Ym1Gc0lIVnpZV2RsSUc5dWJIbGNibHgwYldGd09pQm1kVzVqZEdsdmJpZ2daV3hsYlhNc0lHTmhiR3hpWVdOckxDQmhjbWNnS1NCN1hHNWNkRngwZG1GeUlIWmhiSFZsTEZ4dVhIUmNkRngwYVNBOUlEQXNYRzVjZEZ4MFhIUnNaVzVuZEdnZ1BTQmxiR1Z0Y3k1c1pXNW5kR2dzWEc1Y2RGeDBYSFJwYzBGeWNtRjVJRDBnYVhOQmNuSmhlV3hwYTJVb0lHVnNaVzF6SUNrc1hHNWNkRngwWEhSeVpYUWdQU0JiWFR0Y2JseHVYSFJjZEM4dklFZHZJSFJvY205MVoyZ2dkR2hsSUdGeWNtRjVMQ0IwY21GdWMyeGhkR2x1WnlCbFlXTm9JRzltSUhSb1pTQnBkR1Z0Y3lCMGJ5QjBhR1ZwY2lCdVpYY2dkbUZzZFdWelhHNWNkRngwYVdZZ0tDQnBjMEZ5Y21GNUlDa2dlMXh1WEhSY2RGeDBabTl5SUNnZ095QnBJRHdnYkdWdVozUm9PeUJwS3lzZ0tTQjdYRzVjZEZ4MFhIUmNkSFpoYkhWbElEMGdZMkZzYkdKaFkyc29JR1ZzWlcxeld5QnBJRjBzSUdrc0lHRnlaeUFwTzF4dVhHNWNkRngwWEhSY2RHbG1JQ2dnZG1Gc2RXVWdJVDBnYm5Wc2JDQXBJSHRjYmx4MFhIUmNkRngwWEhSeVpYUXVjSFZ6YUNnZ2RtRnNkV1VnS1R0Y2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdSMjhnZEdoeWIzVm5hQ0JsZG1WeWVTQnJaWGtnYjI0Z2RHaGxJRzlpYW1WamRDeGNibHgwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwWm05eUlDZ2dhU0JwYmlCbGJHVnRjeUFwSUh0Y2JseDBYSFJjZEZ4MGRtRnNkV1VnUFNCallXeHNZbUZqYXlnZ1pXeGxiWE5iSUdrZ1hTd2dhU3dnWVhKbklDazdYRzVjYmx4MFhIUmNkRngwYVdZZ0tDQjJZV3gxWlNBaFBTQnVkV3hzSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkSEpsZEM1d2RYTm9LQ0IyWVd4MVpTQXBPMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnUm14aGRIUmxiaUJoYm5rZ2JtVnpkR1ZrSUdGeWNtRjVjMXh1WEhSY2RISmxkSFZ5YmlCamIyNWpZWFF1WVhCd2JIa29JRnRkTENCeVpYUWdLVHRjYmx4MGZTeGNibHh1WEhRdkx5QkJJR2RzYjJKaGJDQkhWVWxFSUdOdmRXNTBaWElnWm05eUlHOWlhbVZqZEhOY2JseDBaM1ZwWkRvZ01TeGNibHh1WEhRdkx5QkNhVzVrSUdFZ1puVnVZM1JwYjI0Z2RHOGdZU0JqYjI1MFpYaDBMQ0J2Y0hScGIyNWhiR3g1SUhCaGNuUnBZV3hzZVNCaGNIQnNlV2x1WnlCaGJubGNibHgwTHk4Z1lYSm5kVzFsYm5SekxseHVYSFJ3Y205NGVUb2dablZ1WTNScGIyNG9JR1p1TENCamIyNTBaWGgwSUNrZ2UxeHVYSFJjZEhaaGNpQjBiWEFzSUdGeVozTXNJSEJ5YjNoNU8xeHVYRzVjZEZ4MGFXWWdLQ0IwZVhCbGIyWWdZMjl1ZEdWNGRDQTlQVDBnWENKemRISnBibWRjSWlBcElIdGNibHgwWEhSY2RIUnRjQ0E5SUdadVd5QmpiMjUwWlhoMElGMDdYRzVjZEZ4MFhIUmpiMjUwWlhoMEl
14938EMGdabTQ3WEc1Y2RGeDBYSFJtYmlBOUlIUnRjRHRjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJSZFdsamF5QmphR1ZqYXlCMGJ5QmtaWFJsY20xcGJtVWdhV1lnZEdGeVoyVjBJR2x6SUdOaGJHeGhZbXhsTENCcGJpQjBhR1VnYzNCbFkxeHVYSFJjZEM4dklIUm9hWE1nZEdoeWIzZHpJR0VnVkhsd1pVVnljbTl5TENCaWRYUWdkMlVnZDJsc2JDQnFkWE4wSUhKbGRIVnliaUIxYm1SbFptbHVaV1F1WEc1Y2RGeDBhV1lnS0NBaGFsRjFaWEo1TG1selJuVnVZM1JwYjI0b0lHWnVJQ2tnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnZFc1a1pXWnBibVZrTzF4dVhIUmNkSDFjYmx4dVhIUmNkQzh2SUZOcGJYVnNZWFJsWkNCaWFXNWtYRzVjZEZ4MFlYSm5jeUE5SUhOc2FXTmxMbU5oYkd3b0lHRnlaM1Z0Wlc1MGN5d2dNaUFwTzF4dVhIUmNkSEJ5YjNoNUlEMGdablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBYSFJ5WlhSMWNtNGdabTR1WVhCd2JIa29JR052Ym5SbGVIUWdmSHdnZEdocGN5d2dZWEpuY3k1amIyNWpZWFFvSUhOc2FXTmxMbU5oYkd3b0lHRnlaM1Z0Wlc1MGN5QXBJQ2tnS1R0Y2JseDBYSFI5TzF4dVhHNWNkRngwTHk4Z1UyVjBJSFJvWlNCbmRXbGtJRzltSUhWdWFYRjFaU0JvWVc1a2JHVnlJSFJ2SUhSb1pTQnpZVzFsSUc5bUlHOXlhV2RwYm1Gc0lHaGhibVJzWlhJc0lITnZJR2wwSUdOaGJpQmlaU0J5WlcxdmRtVmtYRzVjZEZ4MGNISnZlSGt1WjNWcFpDQTlJR1p1TG1kMWFXUWdQU0JtYmk1bmRXbGtJSHg4SUdwUmRXVnllUzVuZFdsa0t5czdYRzVjYmx4MFhIUnlaWFIxY200Z2NISnZlSGs3WEc1Y2RIMHNYRzVjYmx4MGJtOTNPaUJFWVhSbExtNXZkeXhjYmx4dVhIUXZMeUJxVVhWbGNua3VjM1Z3Y0c5eWRDQnBjeUJ1YjNRZ2RYTmxaQ0JwYmlCRGIzSmxJR0oxZENCdmRHaGxjaUJ3Y205cVpXTjBjeUJoZEhSaFkyZ2dkR2hsYVhKY2JseDBMeThnY0hKdmNHVnlkR2xsY3lCMGJ5QnBkQ0J6YnlCcGRDQnVaV1ZrY3lCMGJ5QmxlR2x6ZEM1Y2JseDBjM1Z3Y0c5eWREb2djM1Z3Y0c5eWRGeHVmU2s3WEc1Y2JpOHZJRkJ2Y0hWc1lYUmxJSFJvWlNCamJHRnpjekowZVhCbElHMWhjRnh1YWxGMVpYSjVMbVZoWTJnb1hDSkNiMjlzWldGdUlFNTFiV0psY2lCVGRISnBibWNnUm5WdVkzUnBiMjRnUVhKeVlYa2dSR0YwWlNCU1pXZEZlSEFnVDJKcVpXTjBJRVZ5Y205eVhDSXVjM0JzYVhRb1hDSWdYQ0lwTENCbWRXNWpkR2x2YmlocExDQnVZVzFsS1NCN1hHNWNkR05zWVhOek1uUjVjR1ZiSUZ3aVcyOWlhbVZqZENCY0lpQXJJRzVoYldVZ0t5QmNJbDFjSWlCZElEMGdibUZ0WlM1MGIweHZkMlZ5UTJGelpTZ3BPMXh1ZlNrN1hHNWNibVoxYm1OMGFXOXVJR2x6UVhKeVlYbHNhV3RsS0NCdlltb2dLU0I3WEc1Y2JseDBMeThnVTNWd2NHOXlkRG9nYVU5VElEZ3VNaUFvYm05MElISmxjSEp2WkhWamFXSnNaU0JwYmlCemFXMTFiR0YwYjNJcFhHNWNkQzh2SUdCcGJtQWdZMmhsWTJzZ2RYTmxaQ0IwYnlCd2NtVjJaVzUwSUVwSlZDQmxjbkp2Y2lBb1oyZ3RNakUwTlNsY2JseDBMeThnYUdGelQzZHVJR2x6YmlkMElIVnpaV1FnYUdWeVpTQmtkV1VnZEc4Z1ptRnNjMlVnYm1WbllYUnBkbVZ6WEc1Y2RDOHZJSEpsWjJGeVpHbHVaeUJPYjJSbGJHbHpkQ0JzWlc1bmRHZ2dhVzRnU1VWY2JseDBkbUZ5SUd4bGJtZDBhQ0E5SUZ3aWJHVnVaM1JvWENJZ2FXNGdiMkpxSUNZbUlHOWlhaTVzWlc1bmRHZ3NYRzVjZEZ4MGRIbHdaU0E5SUdwUmRXVnllUzUwZVhCbEtDQnZZbW9nS1R0Y2JseHVYSFJwWmlBb0lIUjVjR1VnUFQwOUlGd2lablZ1WTNScGIyNWNJaUI4ZkNCcVVYVmxjbmt1YVhOWGFXNWtiM2NvSUc5aWFpQXBJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQm1ZV3h6WlR0Y2JseDBmVnh1WEc1Y2RHbG1JQ2dnYjJKcUxtNXZaR1ZVZVhCbElEMDlQU0F4SUNZbUlHeGxibWQwYUNBcElIdGNibHgwWEhSeVpYUjFjbTRnZEhKMVpUdGNibHgwZlZ4dVhHNWNkSEpsZEhWeWJpQjBlWEJsSUQwOVBTQmNJbUZ5Y21GNVhDSWdmSHdnYkdWdVozUm9JRDA5UFNBd0lIeDhYRzVjZEZ4MGRIbHdaVzltSUd4bGJtZDBhQ0E5UFQwZ1hDSnVkVzFpWlhKY0lpQW1KaUJzWlc1bmRHZ2dQaUF3SUNZbUlDZ2diR1Z1WjNSb0lDMGdNU0FwSUdsdUlHOWlhanRjYm4xY2JuWmhjaUJUYVhwNmJHVWdQVnh1THlvaFhHNGdLaUJUYVhwNmJHVWdRMU5USUZObGJHVmpkRzl5SUVWdVoybHVaU0IyTWk0eUxqQXRjSEpsWEc0Z0tpQm9kSFJ3T2k4dmMybDZlbXhsYW5NdVkyOXRMMXh1SUNwY2JpQXFJRU52Y0hseWFXZG9kQ0F5TURBNExDQXlNREUwSUdwUmRXVnllU0JHYjNWdVpHRjBhVzl1TENCSmJtTXVJR0Z1WkNCdmRHaGxjaUJqYjI1MGNtbGlkWFJ2Y25OY2JpQXFJRkpsYkdWaGMyVmtJSFZ1WkdWeUlIUm9aU0JOU1ZRZ2JHbGpaVzV6WlZ4dUlDb2dhSFIwY0RvdkwycHhkV1Z5ZVM1dmNtY3ZiR2xqWlc1elpWeHVJQ3BjYmlBcUlFUmhkR1U2SURJd01UUXRNVEl0TVRaY2JpQXFMMXh1S0daMWJtTjBhVzl1S0NCM2FXNWtiM2NnS1NCN1hHNWNiblpoY2lCcExGeHVYSFJ6ZFhCd2IzSjBMRnh1WEhSRmVIQnlMRnh1WEhSblpYUlVaWGgwTEZ4dVhIUnBjMWhOVEN4Y2JseDBkRzlyWlc1cGVtVXNYRzVjZEdOdmJYQnBiR1VzWEc1Y2RITmxiR1ZqZEN4Y2JseDBiM1YwWlhKdGIzTjBRMjl1ZEdWNGRDeGNibHgwYzI5eWRFbHVjSFYwTEZ4dVhIUm9ZWE5FZFhCc2FXTmhkR1VzWEc1Y2JseDBMeThnVEc5allXd2daRzlqZFcxbGJuUWdkbUZ5YzF4dVhIUnpaWFJFYjJOMWJXVnVkQ3hjYmx4MFpHOWpkVzFsYm5Rc1hHNWNkR1J2WTBWc1pXMHNYRzVjZEdSdlkzVnRaVzUwU1hOSVZFMU1MRnh1WEhSeVluVm5aM2xSVTBFc1hHNWNkSEppZFdkbmVVMWhkR05vWlhNc1hHNWNkRzFoZEdOb1pYTXNYRzVjZEdOdmJuUmhhVzV6TEZ4dVhHNWNkQzh2SUVsdWMzUmhibU5sTFhOd1pXTnBabWxqSUdSaGRHRmNibHgwWlhod1lXNWtieUE5SUZ3aWMybDZlbXhsWENJZ0t5QXhJQ29nYm1WM0lFUmhkR1VvS1N4Y2JseDBjSEpsWm1WeWNtVmtSRzlqSUQwZ2QybHVaRzkzTG1SdlkzVnRaVzUwTEZ4dVhIUmthWEp5ZFc1eklEMGdNQ3hjYmx4MFpHOXVaU0E5SURBc1hHNWNkR05zWVhOelEyRmphR1VnUFNCamNtVmhkR1ZEWVdOb1pTZ3BMRnh1WEhSMGIydGxia05oWTJobElEMGdZM0
14938psWVhSbFEyRmphR1VvS1N4Y2JseDBZMjl0Y0dsc1pYSkRZV05vWlNBOUlHTnlaV0YwWlVOaFkyaGxLQ2tzWEc1Y2RITnZjblJQY21SbGNpQTlJR1oxYm1OMGFXOXVLQ0JoTENCaUlDa2dlMXh1WEhSY2RHbG1JQ2dnWVNBOVBUMGdZaUFwSUh0Y2JseDBYSFJjZEdoaGMwUjFjR3hwWTJGMFpTQTlJSFJ5ZFdVN1hHNWNkRngwZlZ4dVhIUmNkSEpsZEhWeWJpQXdPMXh1WEhSOUxGeHVYRzVjZEM4dklFZGxibVZ5WVd3dGNIVnljRzl6WlNCamIyNXpkR0Z1ZEhOY2JseDBUVUZZWDA1RlIwRlVTVlpGSUQwZ01TQThQQ0F6TVN4Y2JseHVYSFF2THlCSmJuTjBZVzVqWlNCdFpYUm9iMlJ6WEc1Y2RHaGhjMDkzYmlBOUlDaDdmU2t1YUdGelQzZHVVSEp2Y0dWeWRIa3NYRzVjZEdGeWNpQTlJRnRkTEZ4dVhIUndiM0FnUFNCaGNuSXVjRzl3TEZ4dVhIUndkWE5vWDI1aGRHbDJaU0E5SUdGeWNpNXdkWE5vTEZ4dVhIUndkWE5vSUQwZ1lYSnlMbkIxYzJnc1hHNWNkSE5zYVdObElEMGdZWEp5TG5Oc2FXTmxMRnh1WEhRdkx5QlZjMlVnWVNCemRISnBjSEJsWkMxa2IzZHVJR2x1WkdWNFQyWWdZWE1nYVhRbmN5Qm1ZWE4wWlhJZ2RHaGhiaUJ1WVhScGRtVmNibHgwTHk4Z2FIUjBjRG92TDJwemNHVnlaaTVqYjIwdmRHaHZjaTFwYm1SbGVHOW1MWFp6TFdadmNpODFYRzVjZEdsdVpHVjRUMllnUFNCbWRXNWpkR2x2YmlnZ2JHbHpkQ3dnWld4bGJTQXBJSHRjYmx4MFhIUjJZWElnYVNBOUlEQXNYRzVjZEZ4MFhIUnNaVzRnUFNCc2FYTjBMbXhsYm1kMGFEdGNibHgwWEhSbWIzSWdLQ0E3SUdrZ1BDQnNaVzQ3SUdrckt5QXBJSHRjYmx4MFhIUmNkR2xtSUNnZ2JHbHpkRnRwWFNBOVBUMGdaV3hsYlNBcElIdGNibHgwWEhSY2RGeDBjbVYwZFhKdUlHazdYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYSFJjZEhKbGRIVnliaUF0TVR0Y2JseDBmU3hjYmx4dVhIUmliMjlzWldGdWN5QTlJRndpWTJobFkydGxaSHh6Wld4bFkzUmxaSHhoYzNsdVkzeGhkWFJ2Wm05amRYTjhZWFYwYjNCc1lYbDhZMjl1ZEhKdmJITjhaR1ZtWlhKOFpHbHpZV0pzWldSOGFHbGtaR1Z1ZkdsemJXRndmR3h2YjNCOGJYVnNkR2x3YkdWOGIzQmxibnh5WldGa2IyNXNlWHh5WlhGMWFYSmxaSHh6WTI5d1pXUmNJaXhjYmx4dVhIUXZMeUJTWldkMWJHRnlJR1Y0Y0hKbGMzTnBiMjV6WEc1Y2JseDBMeThnVjJocGRHVnpjR0ZqWlNCamFHRnlZV04wWlhKeklHaDBkSEE2THk5M2QzY3Vkek11YjNKbkwxUlNMMk56Y3pNdGMyVnNaV04wYjNKekx5TjNhR2wwWlhOd1lXTmxYRzVjZEhkb2FYUmxjM0JoWTJVZ1BTQmNJbHRjWEZ4Y2VESXdYRnhjWEhSY1hGeGNjbHhjWEZ4dVhGeGNYR1pkWENJc1hHNWNkQzh2SUdoMGRIQTZMeTkzZDNjdWR6TXViM0puTDFSU0wyTnpjek10YzNsdWRHRjRMeU5qYUdGeVlXTjBaWEp6WEc1Y2RHTm9ZWEpoWTNSbGNrVnVZMjlrYVc1bklEMGdYQ0lvUHpwY1hGeGNYRnhjWEM1OFcxeGNYRngzTFYxOFcxNWNYRnhjZURBd0xWeGNYRng0WVRCZEtTdGNJaXhjYmx4dVhIUXZMeUJNYjI5elpXeDVJRzF2WkdWc1pXUWdiMjRnUTFOVElHbGtaVzUwYVdacFpYSWdZMmhoY21GamRHVnljMXh1WEhRdkx5QkJiaUIxYm5GMWIzUmxaQ0IyWVd4MVpTQnphRzkxYkdRZ1ltVWdZU0JEVTFNZ2FXUmxiblJwWm1sbGNpQm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OVVVaTlqYzNNekxYTmxiR1ZqZEc5eWN5OGpZWFIwY21saWRYUmxMWE5sYkdWamRHOXljMXh1WEhRdkx5QlFjbTl3WlhJZ2MzbHVkR0Y0T2lCb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk5VVVpOURVMU15TVM5emVXNWtZWFJoTG1oMGJXd2pkbUZzZFdVdFpHVm1MV2xrWlc1MGFXWnBaWEpjYmx4MGFXUmxiblJwWm1sbGNpQTlJR05vWVhKaFkzUmxja1Z1WTI5a2FXNW5MbkpsY0d4aFkyVW9JRndpZDF3aUxDQmNJbmNqWENJZ0tTeGNibHh1WEhRdkx5QkJkSFJ5YVdKMWRHVWdjMlZzWldOMGIzSnpPaUJvZEhSd09pOHZkM2QzTG5jekxtOXlaeTlVVWk5elpXeGxZM1J2Y25NdkkyRjBkSEpwWW5WMFpTMXpaV3hsWTNSdmNuTmNibHgwWVhSMGNtbGlkWFJsY3lBOUlGd2lYRnhjWEZ0Y0lpQXJJSGRvYVhSbGMzQmhZMlVnS3lCY0lpb29YQ0lnS3lCamFHRnlZV04wWlhKRmJtTnZaR2x1WnlBcklGd2lLU2cvT2x3aUlDc2dkMmhwZEdWemNHRmpaU0FyWEc1Y2RGeDBMeThnVDNCbGNtRjBiM0lnS0dOaGNIUjFjbVVnTWlsY2JseDBYSFJjSWlvb1d5cGVKSHdoZmwwL1BTbGNJaUFySUhkb2FYUmxjM0JoWTJVZ0sxeHVYSFJjZEM4dklGd2lRWFIwY21saWRYUmxJSFpoYkhWbGN5QnRkWE4wSUdKbElFTlRVeUJwWkdWdWRHbG1hV1Z5Y3lCYlkyRndkSFZ5WlNBMVhTQnZjaUJ6ZEhKcGJtZHpJRnRqWVhCMGRYSmxJRE1nYjNJZ1kyRndkSFZ5WlNBMFhWd2lYRzVjZEZ4MFhDSXFLRDg2Snlnb1B6cGNYRnhjWEZ4Y1hDNThXMTVjWEZ4Y1hGeGNYQ2RkS1NvcEozeGNYRndpS0NnL09seGNYRnhjWEZ4Y0xueGJYbHhjWEZ4Y1hGeGNYRnhjSWwwcEtpbGNYRndpZkNoY0lpQXJJR2xrWlc1MGFXWnBaWElnS3lCY0lpa3BmQ2xjSWlBcklIZG9hWFJsYzNCaFkyVWdLMXh1WEhSY2RGd2lLbHhjWEZ4ZFhDSXNYRzVjYmx4MGNITmxkV1J2Y3lBOUlGd2lPaWhjSWlBcklHTm9ZWEpoWTNSbGNrVnVZMjlrYVc1bklDc2dYQ0lwS0Q4NlhGeGNYQ2dvWENJZ0sxeHVYSFJjZEM4dklGUnZJSEpsWkhWalpTQjBhR1VnYm5WdFltVnlJRzltSUhObGJHVmpkRzl5Y3lCdVpXVmthVzVuSUhSdmEyVnVhWHBsSUdsdUlIUm9aU0J3Y21WR2FXeDBaWElzSUhCeVpXWmxjaUJoY21kMWJXVnVkSE02WEc1Y2RGeDBMeThnTVM0Z2NYVnZkR1ZrSUNoallYQjBkWEpsSURNN0lHTmhjSFIxY21VZ05DQnZjaUJqWVhCMGRYSmxJRFVwWEc1Y2RGeDBYQ0lvSnlnb1B6cGNYRnhjWEZ4Y1hDNThXMTVjWEZ4Y1hGeGNYQ2RkS1NvcEozeGNYRndpS0NnL09seGNYRnhjWEZ4Y0xueGJYbHhjWEZ4Y1hGeGNYRnhjSWwwcEtpbGNYRndpS1h4Y0lpQXJYRzVjZEZ4MEx5OGdNaTRnYzJsdGNHeGxJQ2hqWVhCMGRYSmxJRFlwWEc1Y2RGeDBYQ0lvS0Q4NlhGeGNYRnhjWEZ3dWZGdGVYRnhjWEZ4Y1hGd29LVnRjWEZ4Y1hWMThYQ0lnS3lCaGRIUnlhV0oxZEdWeklDc2dYQ0lwS2lsOFhDSWdLMXh1WEhSY2RDOHZJRE11SUdGdWVYUm9hVzVuSUdWc2MyVWdLR05oY0hSMWNtVWdNaWxjYmx4MFhIUmNJaTRxWENJZ0sxeHVYSFJjZEZ3aUtWeGNYRndwZkNsY0lpeGNibHh1WEhRdkx5Qk1aV0ZrYVc1bklHRnVaQ0J1YjI0dFpYTmpZWEJsWkNCMGNtRnBiR2x1WnlC
14938M2FHbDBaWE53WVdObExDQmpZWEIwZFhKcGJtY2djMjl0WlNCdWIyNHRkMmhwZEdWemNHRmpaU0JqYUdGeVlXTjBaWEp6SUhCeVpXTmxaR2x1WnlCMGFHVWdiR0YwZEdWeVhHNWNkSEozYUdsMFpYTndZV05sSUQwZ2JtVjNJRkpsWjBWNGNDZ2dkMmhwZEdWemNHRmpaU0FySUZ3aUsxd2lMQ0JjSW1kY0lpQXBMRnh1WEhSeWRISnBiU0E5SUc1bGR5QlNaV2RGZUhBb0lGd2lYbHdpSUNzZ2QyaHBkR1Z6Y0dGalpTQXJJRndpSzN3b0tEODZYbnhiWGx4Y1hGeGNYRnhjWFNrb1B6cGNYRnhjWEZ4Y1hDNHBLaWxjSWlBcklIZG9hWFJsYzNCaFkyVWdLeUJjSWlza1hDSXNJRndpWjF3aUlDa3NYRzVjYmx4MGNtTnZiVzFoSUQwZ2JtVjNJRkpsWjBWNGNDZ2dYQ0plWENJZ0t5QjNhR2wwWlhOd1lXTmxJQ3NnWENJcUxGd2lJQ3NnZDJocGRHVnpjR0ZqWlNBcklGd2lLbHdpSUNrc1hHNWNkSEpqYjIxaWFXNWhkRzl5Y3lBOUlHNWxkeUJTWldkRmVIQW9JRndpWGx3aUlDc2dkMmhwZEdWemNHRmpaU0FySUZ3aUtpaGJQaXQrWFh4Y0lpQXJJSGRvYVhSbGMzQmhZMlVnS3lCY0lpbGNJaUFySUhkb2FYUmxjM0JoWTJVZ0t5QmNJaXBjSWlBcExGeHVYRzVjZEhKaGRIUnlhV0oxZEdWUmRXOTBaWE1nUFNCdVpYY2dVbVZuUlhod0tDQmNJajFjSWlBcklIZG9hWFJsYzNCaFkyVWdLeUJjSWlvb1cxNWNYRnhjWFNkY1hGd2lYU28vS1Z3aUlDc2dkMmhwZEdWemNHRmpaU0FySUZ3aUtseGNYRnhkWENJc0lGd2laMXdpSUNrc1hHNWNibHgwY25CelpYVmtieUE5SUc1bGR5QlNaV2RGZUhBb0lIQnpaWFZrYjNNZ0tTeGNibHgwY21sa1pXNTBhV1pwWlhJZ1BTQnVaWGNnVW1WblJYaHdLQ0JjSWw1Y0lpQXJJR2xrWlc1MGFXWnBaWElnS3lCY0lpUmNJaUFwTEZ4dVhHNWNkRzFoZEdOb1JYaHdjaUE5SUh0Y2JseDBYSFJjSWtsRVhDSTZJRzVsZHlCU1pXZEZlSEFvSUZ3aVhpTW9YQ0lnS3lCamFHRnlZV04wWlhKRmJtTnZaR2x1WnlBcklGd2lLVndpSUNrc1hHNWNkRngwWENKRFRFRlRVMXdpT2lCdVpYY2dVbVZuUlhod0tDQmNJbDVjWEZ4Y0xpaGNJaUFySUdOb1lYSmhZM1JsY2tWdVkyOWthVzVuSUNzZ1hDSXBYQ0lnS1N4Y2JseDBYSFJjSWxSQlIxd2lPaUJ1WlhjZ1VtVm5SWGh3S0NCY0lsNG9YQ0lnS3lCamFHRnlZV04wWlhKRmJtTnZaR2x1Wnk1eVpYQnNZV05sS0NCY0luZGNJaXdnWENKM0tsd2lJQ2tnS3lCY0lpbGNJaUFwTEZ4dVhIUmNkRndpUVZSVVVsd2lPaUJ1WlhjZ1VtVm5SWGh3S0NCY0lsNWNJaUFySUdGMGRISnBZblYwWlhNZ0tTeGNibHgwWEhSY0lsQlRSVlZFVDF3aU9pQnVaWGNnVW1WblJYaHdLQ0JjSWw1Y0lpQXJJSEJ6WlhWa2IzTWdLU3hjYmx4MFhIUmNJa05JU1V4RVhDSTZJRzVsZHlCU1pXZEZlSEFvSUZ3aVhqb29iMjVzZVh4bWFYSnpkSHhzWVhOMGZHNTBhSHh1ZEdndGJHRnpkQ2t0S0dOb2FXeGtmRzltTFhSNWNHVXBLRDg2WEZ4Y1hDaGNJaUFySUhkb2FYUmxjM0JoWTJVZ0sxeHVYSFJjZEZ4MFhDSXFLR1YyWlc1OGIyUmtmQ2dvV3lzdFhYd3BLRnhjWEZ4a0tpbHVmQ2xjSWlBcklIZG9hWFJsYzNCaFkyVWdLeUJjSWlvb1B6b29XeXN0WFh3cFhDSWdLeUIzYUdsMFpYTndZV05sSUN0Y2JseDBYSFJjZEZ3aUtpaGNYRnhjWkNzcGZDa3BYQ0lnS3lCM2FHbDBaWE53WVdObElDc2dYQ0lxWEZ4Y1hDbDhLVndpTENCY0ltbGNJaUFwTEZ4dVhIUmNkRndpWW05dmJGd2lPaUJ1WlhjZ1VtVm5SWGh3S0NCY0lsNG9QenBjSWlBcklHSnZiMnhsWVc1eklDc2dYQ0lwSkZ3aUxDQmNJbWxjSWlBcExGeHVYSFJjZEM4dklFWnZjaUIxYzJVZ2FXNGdiR2xpY21GeWFXVnpJR2x0Y0d4bGJXVnVkR2x1WnlBdWFYTW9LVnh1WEhSY2RDOHZJRmRsSUhWelpTQjBhR2x6SUdadmNpQlFUMU1nYldGMFkyaHBibWNnYVc0Z1lITmxiR1ZqZEdCY2JseDBYSFJjSW01bFpXUnpRMjl1ZEdWNGRGd2lPaUJ1WlhjZ1VtVm5SWGh3S0NCY0lsNWNJaUFySUhkb2FYUmxjM0JoWTJVZ0t5QmNJaXBiUGl0K1hYdzZLR1YyWlc1OGIyUmtmR1Z4ZkdkMGZHeDBmRzUwYUh4bWFYSnpkSHhzWVhOMEtTZy9PbHhjWEZ3b1hDSWdLMXh1WEhSY2RGeDBkMmhwZEdWemNHRmpaU0FySUZ3aUtpZ29Qem90WEZ4Y1hHUXBQMXhjWEZ4a0tpbGNJaUFySUhkb2FYUmxjM0JoWTJVZ0t5QmNJaXBjWEZ4Y0tYd3BLRDg5VzE0dFhYd2tLVndpTENCY0ltbGNJaUFwWEc1Y2RIMHNYRzVjYmx4MGNtbHVjSFYwY3lBOUlDOWVLRDg2YVc1d2RYUjhjMlZzWldOMGZIUmxlSFJoY21WaGZHSjFkSFJ2Ymlra0wya3NYRzVjZEhKb1pXRmtaWElnUFNBdlhtaGNYR1FrTDJrc1hHNWNibHgwY201aGRHbDJaU0E5SUM5ZVcxNTdYU3RjWEh0Y1hITXFYRnhiYm1GMGFYWmxJRnhjZHk4c1hHNWNibHgwTHk4Z1JXRnphV3g1TFhCaGNuTmxZV0pzWlM5eVpYUnlhV1YyWVdKc1pTQkpSQ0J2Y2lCVVFVY2diM0lnUTB4QlUxTWdjMlZzWldOMGIzSnpYRzVjZEhKeGRXbGphMFY0Y0hJZ1BTQXZYaWcvT2lNb1cxeGNkeTFkS3lsOEtGeGNkeXNwZkZ4Y0xpaGJYRngzTFYwcktTa2tMeXhjYmx4dVhIUnljMmxpYkdsdVp5QTlJQzliSzM1ZEx5eGNibHgwY21WelkyRndaU0E5SUM4bmZGeGNYRnd2Wnl4Y2JseHVYSFF2THlCRFUxTWdaWE5qWVhCbGN5Qm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OVVVaTlEVTFNeU1TOXplVzVrWVhSaExtaDBiV3dqWlhOallYQmxaQzFqYUdGeVlXTjBaWEp6WEc1Y2RISjFibVZ6WTJGd1pTQTlJRzVsZHlCU1pXZEZlSEFvSUZ3aVhGeGNYRnhjWEZ3b1cxeGNYRnhrWVMxbVhYc3hMRFo5WENJZ0t5QjNhR2wwWlhOd1lXTmxJQ3NnWENJL2ZDaGNJaUFySUhkb2FYUmxjM0JoWTJVZ0t5QmNJaWw4TGlsY0lpd2dYQ0pwWjF3aUlDa3NYRzVjZEdaMWJtVnpZMkZ3WlNBOUlHWjFibU4wYVc5dUtDQmZMQ0JsYzJOaGNHVmtMQ0JsYzJOaGNHVmtWMmhwZEdWemNHRmpaU0FwSUh0Y2JseDBYSFIyWVhJZ2FHbG5hQ0E5SUZ3aU1IaGNJaUFySUdWelkyRndaV1FnTFNBd2VERXdNREF3TzF4dVhIUmNkQzh2SUU1aFRpQnRaV0Z1Y3lCdWIyNHRZMjlrWlhCdmFXNTBYRzVjZEZ4MEx5OGdVM1Z3Y0c5eWREb2dSbWx5WldadmVEd3lORnh1WEhSY2RDOHZJRmR2Y210aGNtOTFibVFnWlhKeWIyNWxiM1Z6SUc1MWJXVnlhV01nYVc1MFpYSndjbVYwWVhScGIyNGdiMllnSzF3aU1IaGNJbHh1WEhSY2RISmxkSFZ5YmlCb2FXZG9JQ0U5UFNCb2FXZG9JSHg4SUdWelkyRndaV1JYYUdsMFpYTndZV05sSUQ5Y2JseDBYSFJjZEdWelkyRndaV1FnT2x4dVhIUmNkRngwYUdsbmFDQThJREFnUDF4dVhIUmNkRngwWEhRdkx5QkNUVkFnWTI5a1pYQnZhVzUwWEc1Y2RGeDBYSFJjZEZOMGNtbHVaeTVtY205dFEyaGhja052WkdVb0lHaHBaMmdnS3lBd2VERXdNREF3SUNrZ09seHVYSFJjZEZ4MFhIUXZMeUJUZFhCd2JHVnRaVzUwWVd3Z1VHeGhibVVnWTI5a1pYQnZhVzUwSUNoemRYSnliMmRoZEdVZ2NHRnBjaWxjYmx4MFhIUmNkRngwVTNSeWFXNW5MbVp5YjIxRGFHRnlRMjlrWlNnZ2FHbG5hQ0ErUGlBeE1DQjhJREI0UkRnd01Dd2dhR2xuYUNBbUlEQjRNMFpHSUh3Z01IaEVRekF3SUNrN1hHNWNkSDBzWEc1Y2JseDBMeThnVlhObFpDQm1iM0lnYVdaeVlXMWxjMXh1WEhRdkx5QlRaV1VnYzJWMFJHOWpkVzFsYm5Rb0tWeHVYSFF2THlCU1pXMXZkbWx1WnlCMGFHVWdablZ1WTNScGIyNGdkM0poY0hCbGNpQmpZWFZ6WlhNZ1lTQmNJbEJsY20xcGMzTnBiMjRnUkdWdWFXVmtYQ0pjYmx4MEx5OGdaWEp5YjNJZ2FXNGdTVVZjYmx4MGRXNXNiMkZrU0dGdVpHeGxjaUE5SUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEhObGRFUnZZM1Z0Wlc1MEtDazdYRzVjZEgwN1hHNWNiaTh2SUU5d2RHbHRhWHBsSUdadmNpQndkWE5vTG1Gd2NHeDVLQ0JmTENCT2IyUmxUR2x6ZENBcFhHNTBjbmtnZTF4dVhIUndkWE5vTG1Gd2NHeDVLRnh1WEhSY2RDaGhjbklnUFNCemJHbGpaUzVqWVd4c0tDQndjbVZtWlhKeVpXUkViMk11WTJocGJHUk9iMlJsY3lBcEtTeGNibHgwWEhSd2NtVm1aWEp5WldSRWIyTXVZMmhwYkdST2IyUmxjMXh1WEhRcE8xeHVYSFF2THlCVGRYQndiM0owT2lCQmJtUnliMmxrUERRdU1GeHVYSFF2THlCRVpYUmxZM1FnYzJsc1pXNTBiSGtnWm1GcGJHbHVaeUJ3ZFhOb0xtRndjR3g1WEc1Y2RHRnljbHNnY0hKbFptVnljbVZrUkc5akxtTm9hV3hrVG05a1pYTXViR1Z1WjNSb0lGMHVibTlrWlZSNWNHVTdYRzU5SUdOaGRHTm9JQ2dnWlNBcElIdGNibHgwY0hWemFDQTlJSHNnWVhCd2JIazZJR0Z5Y2k1c1pXNW5kR2dnUDF4dVhHNWNkRngwTHk4Z1RHVjJaWEpoWjJVZ2MyeHBZMlVnYVdZZ2NHOXpjMmxpYkdWY2JseDBYSFJtZFc1amRHbHZiaWdnZEdGeVoyVjBMQ0JsYkhNZ0tTQjdYRzVjZEZ4MFhIUndkWE5vWDI1aGRHbDJaUzVoY0hCc2VTZ2dkR0Z5WjJWMExDQnpiR2xqWlM1allXeHNLR1ZzY3lrZ0tUdGNibHgwWEhSOUlEcGNibHh1WEhSY2RDOHZJRk4xY0hCdmNuUTZJRWxGUERsY2JseDBYSFF2THlCUGRH
14938aGxjbmRwYzJVZ1lYQndaVzVrSUdScGNtVmpkR3g1WEc1Y2RGeDBablZ1WTNScGIyNG9JSFJoY21kbGRDd2daV3h6SUNrZ2UxeHVYSFJjZEZ4MGRtRnlJR29nUFNCMFlYSm5aWFF1YkdWdVozUm9MRnh1WEhSY2RGeDBYSFJwSUQwZ01EdGNibHgwWEhSY2RDOHZJRU5oYmlkMElIUnlkWE4wSUU1dlpHVk1hWE4wTG14bGJtZDBhRnh1WEhSY2RGeDBkMmhwYkdVZ0tDQW9kR0Z5WjJWMFcyb3JLMTBnUFNCbGJITmJhU3NyWFNrZ0tTQjdmVnh1WEhSY2RGeDBkR0Z5WjJWMExteGxibWQwYUNBOUlHb2dMU0F4TzF4dVhIUmNkSDFjYmx4MGZUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1UybDZlbXhsS0NCelpXeGxZM1J2Y2l3Z1kyOXVkR1Y0ZEN3Z2NtVnpkV3gwY3l3Z2MyVmxaQ0FwSUh0Y2JseDBkbUZ5SUcxaGRHTm9MQ0JsYkdWdExDQnRMQ0J1YjJSbFZIbHdaU3hjYmx4MFhIUXZMeUJSVTBFZ2RtRnljMXh1WEhSY2RHa3NJR2R5YjNWd2N5d2diMnhrTENCdWFXUXNJRzVsZDBOdmJuUmxlSFFzSUc1bGQxTmxiR1ZqZEc5eU8xeHVYRzVjZEdsbUlDZ2dLQ0JqYjI1MFpYaDBJRDhnWTI5dWRHVjRkQzV2ZDI1bGNrUnZZM1Z0Wlc1MElIeDhJR052Ym5SbGVIUWdPaUJ3Y21WbVpYSnlaV1JFYjJNZ0tTQWhQVDBnWkc5amRXMWxiblFnS1NCN1hHNWNkRngwYzJWMFJHOWpkVzFsYm5Rb0lHTnZiblJsZUhRZ0tUdGNibHgwZlZ4dVhHNWNkR052Ym5SbGVIUWdQU0JqYjI1MFpYaDBJSHg4SUdSdlkzVnRaVzUwTzF4dVhIUnlaWE4xYkhSeklEMGdjbVZ6ZFd4MGN5QjhmQ0JiWFR0Y2JseDBibTlrWlZSNWNHVWdQU0JqYjI1MFpYaDBMbTV2WkdWVWVYQmxPMXh1WEc1Y2RHbG1JQ2dnZEhsd1pXOW1JSE5sYkdWamRHOXlJQ0U5UFNCY0luTjBjbWx1WjF3aUlIeDhJQ0Z6Wld4bFkzUnZjaUI4ZkZ4dVhIUmNkRzV2WkdWVWVYQmxJQ0U5UFNBeElDWW1JRzV2WkdWVWVYQmxJQ0U5UFNBNUlDWW1JRzV2WkdWVWVYQmxJQ0U5UFNBeE1TQXBJSHRjYmx4dVhIUmNkSEpsZEhWeWJpQnlaWE4xYkhSek8xeHVYSFI5WEc1Y2JseDBhV1lnS0NBaGMyVmxaQ0FtSmlCa2IyTjFiV1Z1ZEVselNGUk5UQ0FwSUh0Y2JseHVYSFJjZEM4dklGUnllU0IwYnlCemFHOXlkR04xZENCbWFXNWtJRzl3WlhKaGRHbHZibk1nZDJobGJpQndiM056YVdKc1pTQW9aUzVuTGl3Z2JtOTBJSFZ1WkdWeUlFUnZZM1Z0Wlc1MFJuSmhaMjFsYm5RcFhHNWNkRngwYVdZZ0tDQnViMlJsVkhsd1pTQWhQVDBnTVRFZ0ppWWdLRzFoZEdOb0lEMGdjbkYxYVdOclJYaHdjaTVsZUdWaktDQnpaV3hsWTNSdmNpQXBLU0FwSUh0Y2JseDBYSFJjZEM4dklGTndaV1ZrTFhWd09pQlRhWHA2YkdVb1hDSWpTVVJjSWlsY2JseDBYSFJjZEdsbUlDZ2dLRzBnUFNCdFlYUmphRnN4WFNrZ0tTQjdYRzVjZEZ4MFhIUmNkR2xtSUNnZ2JtOWtaVlI1Y0dVZ1BUMDlJRGtnS1NCN1hHNWNkRngwWEhSY2RGeDBaV3hsYlNBOUlHTnZiblJsZUhRdVoyVjBSV3hsYldWdWRFSjVTV1FvSUcwZ0tUdGNibHgwWEhSY2RGeDBYSFF2THlCRGFHVmpheUJ3WVhKbGJuUk9iMlJsSUhSdklHTmhkR05vSUhkb1pXNGdRbXhoWTJ0aVpYSnllU0EwTGpZZ2NtVjBkWEp1YzF4dVhIUmNkRngwWEhSY2RDOHZJRzV2WkdWeklIUm9ZWFFnWVhKbElHNXZJR3h2Ym1kbGNpQnBiaUIwYUdVZ1pHOWpkVzFsYm5RZ0tHcFJkV1Z5ZVNBak5qazJNeWxjYmx4MFhIUmNkRngwWEhScFppQW9JR1ZzWlcwZ0ppWWdaV3hsYlM1d1lYSmxiblJPYjJSbElDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MEx5OGdTR0Z1Wkd4bElIUm9aU0JqWVhObElIZG9aWEpsSUVsRkxDQlBjR1Z5WVN3Z1lXNWtJRmRsWW10cGRDQnlaWFIxY200Z2FYUmxiWE5jYmx4MFhIUmNkRngwWEhSY2RDOHZJR0o1SUc1aGJXVWdhVzV6ZEdWaFpDQnZaaUJKUkZ4dVhIUmNkRngwWEhSY2RGeDBhV1lnS0NCbGJHVnRMbWxrSUQwOVBTQnRJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBYSFJ5WlhOMWJIUnpMbkIxYzJnb0lHVnNaVzBnS1R0Y2JseDBYSFJjZEZ4MFhIUmNkRngwY21WMGRYSnVJSEpsYzNWc2RITTdYRzVjZEZ4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RGeDBYSFJjZEhKbGRIVnliaUJ5WlhOMWJIUnpPMXh1WEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEZ4MFhIUXZMeUJEYjI1MFpYaDBJR2x6SUc1dmRDQmhJR1J2WTNWdFpXNTBYRzVjZEZ4MFhIUmNkRngwYVdZZ0tDQmpiMjUwWlhoMExtOTNibVZ5Ukc5amRXMWxiblFnSmlZZ0tHVnNaVzBnUFNCamIyNTBaWGgwTG05M2JtVnlSRzlqZFcxbGJuUXVaMlYwUld4bGJXVnVkRUo1U1dRb0lHMGdLU2tnSmlaY2JseDBYSFJjZEZ4MFhIUmNkR052Ym5SaGFXNXpLQ0JqYjI1MFpYaDBMQ0JsYkdWdElDa2dKaVlnWld4bGJTNXBaQ0E5UFQwZ2JTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RISmxjM1ZzZEhNdWNIVnphQ2dnWld4bGJTQXBPMXh1WEhSY2RGeDBYSFJjZEZ4MGNtVjBkWEp1SUhKbGMzVnNkSE03WEc1Y2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkQzh2SUZOd1pXVmtMWFZ3T2lCVGFYcDZiR1VvWENKVVFVZGNJaWxjYmx4MFhIUmNkSDBnWld4elpTQnBaaUFvSUcxaGRHTm9XekpkSUNrZ2UxeHVYSFJjZEZ4MFhIUndkWE5vTG1Gd2NHeDVLQ0J5WlhOMWJIUnpMQ0JqYjI1MFpYaDBMbWRsZEVWc1pXMWxiblJ6UW5sVVlXZE9ZVzFsS0NCelpXeGxZM1J2Y2lBcElDazdYRzVjZEZ4MFhIUmNkSEpsZEhWeWJpQnlaWE4xYkhSek8xeHVYRzVjZEZ4MFhIUXZMeUJUY0dWbFpDMTFjRG9nVTJsNmVteGxLRndpTGtOTVFWTlRYQ0lwWEc1Y2RGeDBYSFI5SUdWc2MyVWdhV1lnS0NBb2JTQTlJRzFoZEdOb1d6TmRLU0FtSmlCemRYQndiM0owTG1kbGRFVnNaVzFsYm5SelFubERiR0Z6YzA1aGJXVWdLU0I3WEc1Y2RGeDBYSFJjZEhCMWMyZ3VZWEJ3Ykhrb0lISmxjM1ZzZEhNc0lHTnZiblJsZUhRdVoyVjBSV3hsYldWdWRITkNlVU5zWVhOelRtRnRaU2dnYlNBcElDazdYRzVjZEZ4MFhIUmNkSEpsZEhWeWJpQnlaWE4xYkhSek8xeHVYSFJjZEZ4MGZWeHVYSFJjZEgxY2JseHVYSFJjZEM4dklGRlRRU0J3WVhSb1hHNWNkRngwYVdZZ0tDQnpkWEJ3YjNKMExuRnpZU0FtSmlBb0lYSmlkV2RuZVZGVFFTQjhmQ0FoY21KMVoyZDVVVk5CTG5SbGMzUW9JSE5sYkdWamRHOXlJQ2twSUNrZ2UxeHVYSFJjZEZ4MGJtbGtJRDBnYjJ4a0lEMGdaWGh3WVc1a2J6dGNibHgwWEhSY2RHNWxkME52Ym5SbGVIUWdQU0JqYjI1MFpYaDBPMXh1WEhSY2RGeDBibVYzVTJWc1pXTjBiM0lnUFNCdWIyUmxWSGx3WlNBaFBUMGdNU0FtSmlCelpXeGxZM1J2Y2p0Y2JseHVYSFJjZEZ4MEx5OGdjVk5CSUhkdmNtdHpJSE4wY21GdVoyVnNlU0J2YmlCRmJHVnRaVzUwTFhKdmIzUmxaQ0J4ZFdWeWFXVnpYRzVjZEZ4MFhIUXZMeUJYWlNCallXNGdkMjl5YXlCaGNtOTFibVFnZEdocGN5QmllU0J6Y0dWamFXWjVhVzVuSUdGdUlHVjRkSEpoSUVsRUlHOXVJSFJvWlNCeWIyOTBYRzVjZEZ4MFhIUXZMeUJoYm1RZ2QyOXlhMmx1WnlCMWNDQm1jbTl0SUhSb1pYSmxJQ2hVYUdGdWEzTWdkRzhnUVc1a2NtVjNJRVIxY0c5dWRDQm1iM0lnZEdobElIUmxZMmh1YVhGMVpTbGNibHgwWEhSY2RDOHZJRWxGSURnZ1pHOWxjMjRuZENCM2IzSnJJRzl1SUc5aWFtVmpkQ0JsYkdWdFpXNTBjMXh1WEhSY2RGeDBhV1lnS0NCdWIyUmxWSGx3WlNBOVBUMGdNU0FtSmlCamIyNTBaWGgwTG01dlpHVk9ZVzFsTG5SdlRHOTNaWEpEWVhObEtDa2dJVDA5SUZ3aWIySnFaV04wWENJZ0tTQjdYRzVjZEZ4MFhIUmNkR2R5YjNWd2N5QTlJSFJ2YTJWdWFYcGxLQ0J6Wld4bFkzUnZjaUFwTzF4dVhHNWNkRngwWEhSY2RHbG1JQ2dnS0c5c1pDQTlJR052Ym5SbGVIUXVaMlYwUVhSMGNtbGlkWFJsS0Z3aWFXUmNJaWtwSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRzVwWkNBOUlHOXNaQzV5WlhCc1lXTmxLQ0J5WlhOallYQmxMQ0JjSWx4Y1hGd2tKbHdpSUNrN1hHNWNkRngwWEhSY2RIMGdaV3h6WlNCN1hHNWNkRngwWEhSY2RGeDBZMjl1ZEdWNGRDNXpaWFJCZEhSeWFXSjFkR1VvSUZ3aWFXUmNJaXdnYm1sa0lDazdYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwYm1sa0lEMGdYQ0piYVdROUoxd2lJQ3NnYm1sa0lDc2dYQ0luWFNCY0lqdGNibHh1WEhSY2RGeDBYSFJwSUQwZ1ozSnZkWEJ6TG14bGJtZDBhRHRjYmx4MFhIUmNkRngwZDJocGJHVWdLQ0JwTFMwZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWjNKdmRYQnpXMmxkSUQwZ2JtbGtJQ3NnZEc5VFpXeGxZM1J2Y2lnZ1ozSnZkWEJ6VzJsZElDazdYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwYm1WM1EyOXVkR1Y0ZENBOUlISnphV0pzYVc1bkxuUmxjM1FvSUhObGJHVmpkRzl5SUNrZ0ppWWdkR1Z6ZEVOdmJuUmxlSFFvSUdOdmJuUmxlSFF1Y0dGeVpXNTBUbTlrWlNBcElIeDhJR0
1493852Ym5SbGVIUTdYRzVjZEZ4MFhIUmNkRzVsZDFObGJHVmpkRzl5SUQwZ1ozSnZkWEJ6TG1wdmFXNG9YQ0lzWENJcE8xeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUnBaaUFvSUc1bGQxTmxiR1ZqZEc5eUlDa2dlMXh1WEhSY2RGeDBYSFIwY25rZ2UxeHVYSFJjZEZ4MFhIUmNkSEIxYzJndVlYQndiSGtvSUhKbGMzVnNkSE1zWEc1Y2RGeDBYSFJjZEZ4MFhIUnVaWGREYjI1MFpYaDBMbkYxWlhKNVUyVnNaV04wYjNKQmJHd29JRzVsZDFObGJHVmpkRzl5SUNsY2JseDBYSFJjZEZ4MFhIUXBPMXh1WEhSY2RGeDBYSFJjZEhKbGRIVnliaUJ5WlhOMWJIUnpPMXh1WEhSY2RGeDBYSFI5SUdOaGRHTm9LSEZ6WVVWeWNtOXlLU0I3WEc1Y2RGeDBYSFJjZEgwZ1ptbHVZV3hzZVNCN1hHNWNkRngwWEhSY2RGeDBhV1lnS0NBaGIyeGtJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBZMjl1ZEdWNGRDNXlaVzF2ZG1WQmRIUnlhV0oxZEdVb1hDSnBaRndpS1R0Y2JseDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDFjYmx4MFhIUjlYRzVjZEgxY2JseHVYSFF2THlCQmJHd2diM1JvWlhKelhHNWNkSEpsZEhWeWJpQnpaV3hsWTNRb0lITmxiR1ZqZEc5eUxuSmxjR3hoWTJVb0lISjBjbWx0TENCY0lpUXhYQ0lnS1N3Z1kyOXVkR1Y0ZEN3Z2NtVnpkV3gwY3l3Z2MyVmxaQ0FwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpTQnJaWGt0ZG1Gc2RXVWdZMkZqYUdWeklHOW1JR3hwYldsMFpXUWdjMmw2WlZ4dUlDb2dRSEpsZEhWeWJuTWdlMFoxYm1OMGFXOXVLSE4wY21sdVp5d2dUMkpxWldOMEtYMGdVbVYwZFhKdWN5QjBhR1VnVDJKcVpXTjBJR1JoZEdFZ1lXWjBaWElnYzNSdmNtbHVaeUJwZENCdmJpQnBkSE5sYkdZZ2QybDBhRnh1SUNwY2RIQnliM0JsY25SNUlHNWhiV1VnZEdobElDaHpjR0ZqWlMxemRXWm1hWGhsWkNrZ2MzUnlhVzVuSUdGdVpDQW9hV1lnZEdobElHTmhZMmhsSUdseklHeGhjbWRsY2lCMGFHRnVJRVY0Y0hJdVkyRmphR1ZNWlc1bmRHZ3BYRzRnS2x4MFpHVnNaWFJwYm1jZ2RHaGxJRzlzWkdWemRDQmxiblJ5ZVZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJqY21WaGRHVkRZV05vWlNncElIdGNibHgwZG1GeUlHdGxlWE1nUFNCYlhUdGNibHh1WEhSbWRXNWpkR2x2YmlCallXTm9aU2dnYTJWNUxDQjJZV3gxWlNBcElIdGNibHgwWEhRdkx5QlZjMlVnS0d0bGVTQXJJRndpSUZ3aUtTQjBieUJoZG05cFpDQmpiMnhzYVhOcGIyNGdkMmwwYUNCdVlYUnBkbVVnY0hKdmRHOTBlWEJsSUhCeWIzQmxjblJwWlhNZ0tITmxaU0JKYzNOMVpTQWpNVFUzS1Z4dVhIUmNkR2xtSUNnZ2EyVjVjeTV3ZFhOb0tDQnJaWGtnS3lCY0lpQmNJaUFwSUQ0Z1JYaHdjaTVqWVdOb1pVeGxibWQwYUNBcElIdGNibHgwWEhSY2RDOHZJRTl1YkhrZ2EyVmxjQ0IwYUdVZ2JXOXpkQ0J5WldObGJuUWdaVzUwY21sbGMxeHVYSFJjZEZ4MFpHVnNaWFJsSUdOaFkyaGxXeUJyWlhsekxuTm9hV1owS0NrZ1hUdGNibHgwWEhSOVhHNWNkRngwY21WMGRYSnVJQ2hqWVdOb1pWc2dhMlY1SUNzZ1hDSWdYQ0lnWFNBOUlIWmhiSFZsS1R0Y2JseDBmVnh1WEhSeVpYUjFjbTRnWTJGamFHVTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1RXRnlheUJoSUdaMWJtTjBhVzl1SUdadmNpQnpjR1ZqYVdGc0lIVnpaU0JpZVNCVGFYcDZiR1ZjYmlBcUlFQndZWEpoYlNCN1JuVnVZM1JwYjI1OUlHWnVJRlJvWlNCbWRXNWpkR2x2YmlCMGJ5QnRZWEpyWEc0Z0tpOWNibVoxYm1OMGFXOXVJRzFoY210R2RXNWpkR2x2YmlnZ1ptNGdLU0I3WEc1Y2RHWnVXeUJsZUhCaGJtUnZJRjBnUFNCMGNuVmxPMXh1WEhSeVpYUjFjbTRnWm00N1hHNTlYRzVjYmk4cUtseHVJQ29nVTNWd2NHOXlkQ0IwWlhOMGFXNW5JSFZ6YVc1bklHRnVJR1ZzWlcxbGJuUmNiaUFxSUVCd1lYSmhiU0I3Um5WdVkzUnBiMjU5SUdadUlGQmhjM05sWkNCMGFHVWdZM0psWVhSbFpDQmthWFlnWVc1a0lHVjRjR1ZqZEhNZ1lTQmliMjlzWldGdUlISmxjM1ZzZEZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJoYzNObGNuUW9JR1p1SUNrZ2UxeHVYSFIyWVhJZ1pHbDJJRDBnWkc5amRXMWxiblF1WTNKbFlYUmxSV3hsYldWdWRDaGNJbVJwZGx3aUtUdGNibHh1WEhSMGNua2dlMXh1WEhSY2RISmxkSFZ5YmlBaElXWnVLQ0JrYVhZZ0tUdGNibHgwZlNCallYUmphQ0FvWlNrZ2UxeHVYSFJjZEhKbGRIVnliaUJtWVd4elpUdGNibHgwZlNCbWFXNWhiR3g1SUh0Y2JseDBYSFF2THlCU1pXMXZkbVVnWm5KdmJTQnBkSE1nY0dGeVpXNTBJR0o1SUdSbFptRjFiSFJjYmx4MFhIUnBaaUFvSUdScGRpNXdZWEpsYm5ST2IyUmxJQ2tnZTF4dVhIUmNkRngwWkdsMkxuQmhjbVZ1ZEU1dlpHVXVjbVZ0YjNabFEyaHBiR1FvSUdScGRpQXBPMXh1WEhSY2RIMWNibHgwWEhRdkx5QnlaV3hsWVhObElHMWxiVzl5ZVNCcGJpQkpSVnh1WEhSY2RHUnBkaUE5SUc1MWJHdzdYRzVjZEgxY2JuMWNibHh1THlvcVhHNGdLaUJCWkdSeklIUm9aU0J6WVcxbElHaGhibVJzWlhJZ1ptOXlJR0ZzYkNCdlppQjBhR1VnYzNCbFkybG1hV1ZrSUdGMGRISnpYRzRnS2lCQWNHRnlZVzBnZTFOMGNtbHVaMzBnWVhSMGNuTWdVR2x3WlMxelpYQmhjbUYwWldRZ2JHbHpkQ0J2WmlCaGRIUnlhV0oxZEdWelhHNGdLaUJBY0dGeVlXMGdlMFoxYm1OMGFXOXVmU0JvWVc1a2JHVnlJRlJvWlNCdFpYUm9iMlFnZEdoaGRDQjNhV3hzSUdKbElHRndjR3hwWldSY2JpQXFMMXh1Wm5WdVkzUnBiMjRnWVdSa1NHRnVaR3hsS0NCaGRIUnljeXdnYUdGdVpHeGxjaUFwSUh0Y2JseDBkbUZ5SUdGeWNpQTlJR0YwZEhKekxuTndiR2wwS0Z3aWZGd2lLU3hjYmx4MFhIUnBJRDBnWVhSMGNuTXViR1Z1WjNSb08xeHVYRzVjZEhkb2FXeGxJQ2dnYVMwdElDa2dlMXh1WEhSY2RFVjRjSEl1WVhSMGNraGhibVJzWlZzZ1lYSnlXMmxkSUYwZ1BTQm9ZVzVrYkdWeU8xeHVYSFI5WEc1OVhHNWNiaThxS2x4dUlDb2dRMmhsWTJ0eklHUnZZM1Z0Wlc1MElHOXlaR1Z5SUc5bUlIUjNieUJ6YVdKc2FXNW5jMXh1SUNvZ1FIQmhjbUZ0SUh0RmJHVnRaVzUwZlNCaFhHNGdLaUJBY0dGeVlXMGdlMFZzWlcxbGJuUjlJR0pjYmlBcUlFQnlaWFIxY201eklIdE9kVzFpWlhKOUlGSmxkSFZ5Ym5NZ2JHVnpjeUIwYUdGdUlEQWdhV1lnWVNCd2NtVmpaV1JsY3lCaUxDQm5jbVZoZEdWeUlIUm9ZVzRnTUNCcFppQmhJR1p2Ykd4dmQzTWdZbHh1SUNvdlhHNW1kVzVqZEdsdmJpQnphV0pzYVc1blEyaGxZMnNvSUdFc0lHSWdLU0I3WEc1Y2RIWmhjaUJqZFhJZ1BTQmlJQ1ltSUdFc1hHNWNkRngwWkdsbVppQTlJR04xY2lBbUppQmhMbTV2WkdWVWVYQmxJRDA5UFNBeElDWW1JR0l1Ym05a1pWUjVjR1VnUFQwOUlERWdKaVpjYmx4MFhIUmNkQ2dnZm1JdWMyOTFjbU5sU1c1a1pYZ2dmSHdnVFVGWVgwNUZSMEZVU1ZaRklDa2dMVnh1WEhSY2RGeDBLQ0IrWVM1emIzVnlZMlZKYm1SbGVDQjhmQ0JOUVZoZlRrVkh
14938RVlJKVmtVZ0tUdGNibHh1WEhRdkx5QlZjMlVnU1VVZ2MyOTFjbU5sU1c1a1pYZ2dhV1lnWVhaaGFXeGhZbXhsSUc5dUlHSnZkR2dnYm05a1pYTmNibHgwYVdZZ0tDQmthV1ptSUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJrYVdabU8xeHVYSFI5WEc1Y2JseDBMeThnUTJobFkyc2dhV1lnWWlCbWIyeHNiM2R6SUdGY2JseDBhV1lnS0NCamRYSWdLU0I3WEc1Y2RGeDBkMmhwYkdVZ0tDQW9ZM1Z5SUQwZ1kzVnlMbTVsZUhSVGFXSnNhVzVuS1NBcElIdGNibHgwWEhSY2RHbG1JQ2dnWTNWeUlEMDlQU0JpSUNrZ2UxeHVYSFJjZEZ4MFhIUnlaWFIxY200Z0xURTdYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYSFI5WEc1Y2JseDBjbVYwZFhKdUlHRWdQeUF4SURvZ0xURTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCaElHWjFibU4wYVc5dUlIUnZJSFZ6WlNCcGJpQndjMlYxWkc5eklHWnZjaUJwYm5CMWRDQjBlWEJsYzF4dUlDb2dRSEJoY21GdElIdFRkSEpwYm1kOUlIUjVjR1ZjYmlBcUwxeHVablZ1WTNScGIyNGdZM0psWVhSbFNXNXdkWFJRYzJWMVpHOG9JSFI1Y0dVZ0tTQjdYRzVjZEhKbGRIVnliaUJtZFc1amRHbHZiaWdnWld4bGJTQXBJSHRjYmx4MFhIUjJZWElnYm1GdFpTQTlJR1ZzWlcwdWJtOWtaVTVoYldVdWRHOU1iM2RsY2tOaGMyVW9LVHRjYmx4MFhIUnlaWFIxY200Z2JtRnRaU0E5UFQwZ1hDSnBibkIxZEZ3aUlDWW1JR1ZzWlcwdWRIbHdaU0E5UFQwZ2RIbHdaVHRjYmx4MGZUdGNibjFjYmx4dUx5b3FYRzRnS2lCU1pYUjFjbTV6SUdFZ1puVnVZM1JwYjI0Z2RHOGdkWE5sSUdsdUlIQnpaWFZrYjNNZ1ptOXlJR0oxZEhSdmJuTmNiaUFxSUVCd1lYSmhiU0I3VTNSeWFXNW5mU0IwZVhCbFhHNGdLaTljYm1aMWJtTjBhVzl1SUdOeVpXRjBaVUoxZEhSdmJsQnpaWFZrYnlnZ2RIbHdaU0FwSUh0Y2JseDBjbVYwZFhKdUlHWjFibU4wYVc5dUtDQmxiR1Z0SUNrZ2UxeHVYSFJjZEhaaGNpQnVZVzFsSUQwZ1pXeGxiUzV1YjJSbFRtRnRaUzUwYjB4dmQyVnlRMkZ6WlNncE8xeHVYSFJjZEhKbGRIVnliaUFvYm1GdFpTQTlQVDBnWENKcGJuQjFkRndpSUh4OElHNWhiV1VnUFQwOUlGd2lZblYwZEc5dVhDSXBJQ1ltSUdWc1pXMHVkSGx3WlNBOVBUMGdkSGx3WlR0Y2JseDBmVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlNaWFIxY201eklHRWdablZ1WTNScGIyNGdkRzhnZFhObElHbHVJSEJ6WlhWa2IzTWdabTl5SUhCdmMybDBhVzl1WVd4elhHNGdLaUJBY0dGeVlXMGdlMFoxYm1OMGFXOXVmU0JtYmx4dUlDb3ZYRzVtZFc1amRHbHZiaUJqY21WaGRHVlFiM05wZEdsdmJtRnNVSE5sZFdSdktDQm1iaUFwSUh0Y2JseDBjbVYwZFhKdUlHMWhjbXRHZFc1amRHbHZiaWhtZFc1amRHbHZiaWdnWVhKbmRXMWxiblFnS1NCN1hHNWNkRngwWVhKbmRXMWxiblFnUFNBcllYSm5kVzFsYm5RN1hHNWNkRngwY21WMGRYSnVJRzFoY210R2RXNWpkR2x2YmlobWRXNWpkR2x2YmlnZ2MyVmxaQ3dnYldGMFkyaGxjeUFwSUh0Y2JseDBYSFJjZEhaaGNpQnFMRnh1WEhSY2RGeDBYSFJ0WVhSamFFbHVaR1Y0WlhNZ1BTQm1iaWdnVzEwc0lITmxaV1F1YkdWdVozUm9MQ0JoY21kMWJXVnVkQ0FwTEZ4dVhIUmNkRngwWEhScElEMGdiV0YwWTJoSmJtUmxlR1Z6TG14bGJtZDBhRHRjYmx4dVhIUmNkRngwTHk4Z1RXRjBZMmdnWld4bGJXVnVkSE1nWm05MWJtUWdZWFFnZEdobElITndaV05wWm1sbFpDQnBibVJsZUdWelhHNWNkRngwWEhSM2FHbHNaU0FvSUdrdExTQXBJSHRjYmx4MFhIUmNkRngwYVdZZ0tDQnpaV1ZrV3lBb2FpQTlJRzFoZEdOb1NXNWtaWGhsYzF0cFhTa2dYU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUnpaV1ZrVzJwZElEMGdJU2h0WVhSamFHVnpXMnBkSUQwZ2MyVmxaRnRxWFNrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMWNibHgwWEhSOUtUdGNibHgwZlNrN1hHNTlYRzVjYmk4cUtseHVJQ29nUTJobFkydHpJR0VnYm05a1pTQm1iM0lnZG1Gc2FXUnBkSGtnWVhNZ1lTQlRhWHA2YkdVZ1kyOXVkR1Y0ZEZ4dUlDb2dRSEJoY21GdElIdEZiR1Z0Wlc1MGZFOWlhbVZqZEQxOUlHTnZiblJsZUhSY2JpQXFJRUJ5WlhSMWNtNXpJSHRGYkdWdFpXNTBmRTlpYW1WamRIeENiMjlzWldGdWZTQlVhR1VnYVc1d2RYUWdibTlrWlNCcFppQmhZMk5sY0hSaFlteGxMQ0J2ZEdobGNuZHBjMlVnWVNCbVlXeHplU0IyWVd4MVpWeHVJQ292WEc1bWRXNWpkR2x2YmlCMFpYTjBRMjl1ZEdWNGRDZ2dZMjl1ZEdWNGRDQXBJSHRjYmx4MGNtVjBkWEp1SUdOdmJuUmxlSFFnSmlZZ2RIbHdaVzltSUdOdmJuUmxlSFF1WjJWMFJXeGxiV1Z1ZEhOQ2VWUmhaMDVoYldVZ0lUMDlJRndpZFc1a1pXWnBibVZrWENJZ0ppWWdZMjl1ZEdWNGREdGNibjFjYmx4dUx5OGdSWGh3YjNObElITjFjSEJ2Y25RZ2RtRnljeUJtYjNJZ1kyOXVkbVZ1YVdWdVkyVmNibk4xY0hCdmNuUWdQU0JUYVhwNmJHVXVjM1Z3Y0c5eWRDQTlJSHQ5TzF4dVhHNHZLaXBjYmlBcUlFUmxkR1ZqZEhNZ1dFMU1JRzV2WkdWelhHNGdLaUJBY0dGeVlXMGdlMFZzWlcxbGJuUjhUMkpxWldOMGZTQmxiR1Z0SUVGdUlHVnNaVzFsYm5RZ2IzSWdZU0JrYjJOMWJXVnVkRnh1SUNvZ1FISmxkSFZ5Ym5NZ2UwSnZiMnhsWVc1OUlGUnlkV1VnYVdabUlHVnNaVzBnYVhNZ1lTQnViMjR0U0ZSTlRDQllUVXdnYm05a1pWeHVJQ292WEc1cGMxaE5UQ0E5SUZOcGVucHNaUzVwYzFoTlRDQTlJR1oxYm1OMGFXOXVLQ0JsYkdWdElDa2dlMXh1WEhRdkx5QmtiMk4xYldWdWRFVnNaVzFsYm5RZ2FYTWdkbVZ5YVdacFpXUWdabTl5SUdOaGMyVnpJSGRvWlhKbElHbDBJR1J2WlhOdUozUWdlV1YwSUdWNGFYTjBYRzVjZEM4dklDaHpkV05vSUdGeklHeHZZV1JwYm1jZ2FXWnlZVzFsY3lCcGJpQkpSU0F0SUNNME9ETXpLVnh1WEhSMllYSWdaRzlqZFcxbGJuUkZiR1Z0Wlc1MElEMGdaV3hsYlNBbUppQW9aV3hsYlM1dmQyNWxja1J2WTNWdFpXNTBJSHg4SUdWc1pXMHBMbVJ2WTNWdFpXNTBSV3hsYldWdWREdGNibHgwY21WMGRYSnVJR1J2WTNWdFpXNTBSV3hsYldWdWRDQS9JR1J2WTNWdFpXNTBSV3hsYldWdWRDNXViMlJsVG1GdFpTQWhQVDBnWENKSVZFMU1YQ0lnT2lCbVlXeHpaVHRjYm4wN1hHNWNiaThxS2x4dUlDb2dVMlYwY3lCa2IyTjFiV1Z1ZEMxeVpXeGhkR1ZrSUhaaGNtbGhZbXhsY3lCdmJtTmxJR0poYzJWa0lHOXVJSFJvWlNCamRYSnlaVzUwSUdSdlkzVnRaVzUwWEc0Z0tpQkFjR0Z5WVcwZ2UwVnNaVzFsYm5SOFQySnFaV04wZlNCYlpHOWpYU0JCYmlCbGJHVnRaVzUwSUc5eUlHUnZZM1Z0Wlc1MElHOWlhbVZqZENCMGJ5QjFjMlVnZEc4Z2MyVjBJSFJvWlNCa2IyTjFiV1Z1ZEZ4dUlDb2dRSEpsZEhWeWJuTWdlMDlpYW1WamRIMGdVbVYwZFhKdWN5QjBhR1VnWTNWeWNtVnVkQ0JrYjJOMWJXVnVkRnh1SUNvdlhHNXpaWFJFYjJOMWJXVnVkQ0E5SUZOcGVucHNaUzV6WlhSRWIyTjFiV1Z1ZENBOUlHWjFibU4wYVc5dUtDQnViMlJsSUNrZ2UxeHVYSFIyWVhJZ2FHRnpRMjl0Y0dGeVpTd2djR0Z5Wlc1MExGeHVYSFJjZEdSdll5QTlJRzV2WkdVZ1B5QnViMlJsTG05M2JtVnlSRzlqZFcxbGJuUWdmSHdnYm05a1pTQTZJSEJ5WldabGNuSmxaRVJ2WXp0Y2JseHVYSFF2THlCSlppQnVieUJrYjJOMWJXVnVkQ0JoYm1RZ1pHOWpkVzFsYm5SRmJHVnRaVzUwSUdseklHRjJZV2xzWVdKc1pTd2djbVYwZFhKdVhHNWNkR2xtSUNnZ1pHOWpJRDA5UFNCa2IyTjFiV1Z1ZENCOGZDQmtiMk11Ym05a1pWUjVjR1VnSVQwOUlEa2dmSHdnSVdSdll5NWtiMk4xYldWdWRFVnNaVzFsYm5RZ0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUdSdlkzVnRaVzUwTzF4dVhIUjlYRzVjYmx4MEx5OGdVMlYwSUc5MWNpQmtiMk4xYldWdWRGeHVYSFJrYjJOMWJXVnVkQ0E5SUdSdll6dGNibHgwWkc5alJXeGxiU0E5SUdSdll5NWtiMk4xYldWdWRFVnNaVzFsYm5RN1hHNWNkSEJoY21WdWRDQTlJR1J2WXk1a1pXWmhkV3gwVm1sbGR6dGNibHh1WEhRdkx5QlRkWEJ3YjNKME9pQkpSVDQ0WEc1Y2RDOHZJRWxtSUdsbWNtRnRaU0JrYjJOMWJXVnVkQ0JwY3lCaGMzTnBaMjVsWkNCMGJ5QmNJbVJ2WTNWdFpXNTBYQ0lnZG1GeWFXRmliR1VnWVc1a0lHbG1JR2xtY21GdFpTQm9ZWE1nWW1WbGJpQnlaV3h2WVdSbFpDeGNibHgwTHk4Z1NVVWdkMmxzYkNCMGFISnZkeUJjSW5CbGNtMXBjM05wYjI0Z1pHVnVhV1ZrWENJZ1pYSnliM0lnZDJobGJpQmhZMk5sYzNOcGJtY2dYQ0prYjJOMWJXVnVkRndpSUhaaGNtbGhZbXhsTENCelpXVWdhbEYxWlhKNUlDTXhNemt6Tmx4dVhIUXZMeUJKUlRZdE9DQmtieUJ1YjNRZ2MzVndjRzl5ZENCMGFHVWdaR1ZtWVhWc2RGWnBaWGNnY0hKdmNHVnlkSGtnYzI4Z2NHRnlaVzUwSUhkcGJHd2dZbVVnZFc1a1pXWnBibVZrWEc1Y2RHbG1JQ2dnY0dGeVpXNTBJQ1ltSUhCaGNtVnVkQ0FoUFQwZ2NHRnlaVzUwTG5SdmNDQXBJSHRjYmx4MFhIUXZMeUJKUlRFeElHUnZaWE1nYm05MElHaGhkbVVnWVhSMFlXTm9SWFpsYm5Rc0lITnZJR0ZzYkNCdGRYTjBJSE4xWm1abGNseHVYSFJjZEdsbUlDZ2djR0Z5Wlc1MExtRmtaRVYyWlc1MFRHbHpkR1Z1WlhJZ0tTQjdYRzVjZEZ4MFhIUndZWEpsYm5RdVlXUmtSWFpsYm5STWFYTjBaVzVsY2lnZ1hDSjFibXh2WVdSY0lpd2dkVzVzYjJGa1NH
14938RnVaR3hsY2l3Z1ptRnNjMlVnS1R0Y2JseDBYSFI5SUdWc2MyVWdhV1lnS0NCd1lYSmxiblF1WVhSMFlXTm9SWFpsYm5RZ0tTQjdYRzVjZEZ4MFhIUndZWEpsYm5RdVlYUjBZV05vUlhabGJuUW9JRndpYjI1MWJteHZZV1JjSWl3Z2RXNXNiMkZrU0dGdVpHeGxjaUFwTzF4dVhIUmNkSDFjYmx4MGZWeHVYRzVjZEM4cUlGTjFjSEJ2Y25RZ2RHVnpkSE5jYmx4MExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFNBcUwxeHVYSFJrYjJOMWJXVnVkRWx6U0ZSTlRDQTlJQ0ZwYzFoTlRDZ2daRzlqSUNrN1hHNWNibHgwTHlvZ1FYUjBjbWxpZFhSbGMxeHVYSFF0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRJQ292WEc1Y2JseDBMeThnVTNWd2NHOXlkRG9nU1VVOE9GeHVYSFF2THlCV1pYSnBabmtnZEdoaGRDQm5aWFJCZEhSeWFXSjFkR1VnY21WaGJHeDVJSEpsZEhWeWJuTWdZWFIwY21saWRYUmxjeUJoYm1RZ2JtOTBJSEJ5YjNCbGNuUnBaWE5jYmx4MEx5OGdLR1Y0WTJWd2RHbHVaeUJKUlRnZ1ltOXZiR1ZoYm5NcFhHNWNkSE4xY0hCdmNuUXVZWFIwY21saWRYUmxjeUE5SUdGemMyVnlkQ2htZFc1amRHbHZiaWdnWkdsMklDa2dlMXh1WEhSY2RHUnBkaTVqYkdGemMwNWhiV1VnUFNCY0ltbGNJanRjYmx4MFhIUnlaWFIxY200Z0lXUnBkaTVuWlhSQmRIUnlhV0oxZEdVb1hDSmpiR0Z6YzA1aGJXVmNJaWs3WEc1Y2RIMHBPMXh1WEc1Y2RDOHFJR2RsZEVWc1pXMWxiblFvY3lsQ2VTcGNibHgwTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMU0FxTDF4dVhHNWNkQzh2SUVOb1pXTnJJR2xtSUdkbGRFVnNaVzFsYm5SelFubFVZV2RPWVcxbEtGd2lLbHdpS1NCeVpYUjFjbTV6SUc5dWJIa2daV3hsYldWdWRITmNibHgwYzNWd2NHOXlkQzVuWlhSRmJHVnRaVzUwYzBKNVZHRm5UbUZ0WlNBOUlHRnpjMlZ5ZENobWRXNWpkR2x2YmlnZ1pHbDJJQ2tnZTF4dVhIUmNkR1JwZGk1aGNIQmxibVJEYUdsc1pDZ2daRzlqTG1OeVpXRjBaVU52YlcxbGJuUW9YQ0pjSWlrZ0tUdGNibHgwWEhSeVpYUjFjbTRnSVdScGRpNW5aWFJGYkdWdFpXNTBjMEo1VkdGblRtRnRaU2hjSWlwY0lpa3ViR1Z1WjNSb08xeHVYSFI5S1R0Y2JseHVYSFF2THlCVGRYQndiM0owT2lCSlJUdzVYRzVjZEhOMWNIQnZjblF1WjJWMFJXeGxiV1Z1ZEhOQ2VVTnNZWE56VG1GdFpTQTlJSEp1WVhScGRtVXVkR1Z6ZENnZ1pHOWpMbWRsZEVWc1pXMWxiblJ6UW5sRGJHRnpjMDVoYldVZ0tUdGNibHh1WEhRdkx5QlRkWEJ3YjNKME9pQkpSVHd4TUZ4dVhIUXZMeUJEYUdWamF5QnBaaUJuWlhSRmJHVnRaVzUwUW5sSlpDQnlaWFIxY201eklHVnNaVzFsYm5SeklHSjVJRzVoYldWY2JseDBMeThnVkdobElHSnliMnRsYmlCblpYUkZiR1Z0Wlc1MFFubEpaQ0J0WlhSb2IyUnpJR1J2YmlkMElIQnBZMnNnZFhBZ2NISnZaM0poYldGMGFXTmhiR3g1TFhObGRDQnVZVzFsY3l4Y2JseDBMeThnYzI4Z2RYTmxJR0VnY205MWJtUmhZbTkxZENCblpYUkZiR1Z0Wlc1MGMwSjVUbUZ0WlNCMFpYTjBYRzVjZEhOMWNIQnZjblF1WjJWMFFubEpaQ0E5SUdGemMyVnlkQ2htZFc1amRHbHZiaWdnWkdsMklDa2dlMXh1WEhSY2RHUnZZMFZzWlcwdVlYQndaVzVrUTJocGJHUW9JR1JwZGlBcExtbGtJRDBnWlhod1lXNWtienRjYmx4MFhIUnlaWFIxY200Z0lXUnZZeTVuWlhSRmJHVnRaVzUwYzBKNVRtRnRaU0I4ZkNBaFpHOWpMbWRsZEVWc1pXMWxiblJ6UW5sT1lXMWxLQ0JsZUhCaGJtUnZJQ2t1YkdWdVozUm9PMXh1WEhSOUtUdGNibHh1WEhRdkx5QkpSQ0JtYVc1a0lHRnVaQ0JtYVd4MFpYSmNibHgwYVdZZ0tDQnpkWEJ3YjNKMExtZGxkRUo1U1dRZ0tTQjdYRzVjZEZ4MFJYaHdjaTVtYVc1a1cxd2lTVVJjSWwwZ1BTQm1kVzVqZEdsdmJpZ2dhV1FzSUdOdmJuUmxlSFFnS1NCN1hHNWNkRngwWEhScFppQW9JSFI1Y0dWdlppQmpiMjUwWlhoMExtZGxkRVZzWlcxbGJuUkNlVWxrSUNFOVBTQmNJblZ1WkdWbWFXNWxaRndpSUNZbUlHUnZZM1Z0Wlc1MFNYTklWRTFNSUNrZ2UxeHVYSFJjZEZ4MFhIUjJZWElnYlNBOUlHTnZiblJsZUhRdVoyVjBSV3hsYldWdWRFSjVTV1FvSUdsa0lDazdYRzVjZEZ4MFhIUmNkQzh2SUVOb1pXTnJJSEJoY21WdWRFNXZaR1VnZEc4Z1kyRjBZMmdnZDJobGJpQkNiR0ZqYTJKbGNuSjVJRFF1TmlCeVpYUjFjbTV6WEc1Y2RGeDBYSFJjZEM4dklHNXZaR1Z6SUhSb1lYUWdZWEpsSUc1dklHeHZibWRsY2lCcGJpQjBhR1VnWkc5amRXMWxiblFnSXpZNU5qTmNibHgwWEhSY2RGeDBjbVYwZFhKdUlHMGdKaVlnYlM1d1lYSmxiblJPYjJSbElEOGdXeUJ0SUYwZ09pQmJYVHRjYmx4MFhIUmNkSDFjYmx4MFhIUjlPMXh1WEhSY2RFVjRjSEl1Wm1sc2RHVnlXMXdpU1VSY0lsMGdQU0JtZFc1amRHbHZiaWdnYVdRZ0tTQjdYRzVjZEZ4MFhIUjJZWElnWVhSMGNrbGtJRDBnYVdRdWNtVndiR0ZqWlNnZ2NuVnVaWE5qWVhCbExDQm1kVzVsYzJOaGNHVWdLVHRjYmx4MFhIUmNkSEpsZEhWeWJpQm1kVzVqZEdsdmJpZ2daV3hsYlNBcElIdGNibHgwWEhSY2RGeDBjbVYwZFhKdUlHVnNaVzB1WjJWMFFYUjBjbWxpZFhSbEtGd2lhV1JjSWlrZ1BUMDlJR0YwZEhKSlpEdGNibHgwWEhSY2RIMDdYRzVjZEZ4MGZUdGNibHgwZlNCbGJITmxJSHRjYmx4MFhIUXZMeUJUZFhCd2IzSjBPaUJKUlRZdk4xeHVYSFJjZEM4dklHZGxkRVZzWlcxbGJuUkNlVWxrSUdseklHNXZkQ0J5Wld4cFlXSnNaU0JoY3lCaElHWnBibVFnYzJodmNuUmpkWFJjYmx4MFhIUmtaV3hsZEdVZ1JYaHdjaTVtYVc1a1cxd2lTVVJjSWwwN1hHNWNibHgwWEhSRmVIQnlMbVpwYkhSbGNsdGNJa2xFWENKZElEMGdJR1oxYm1OMGFXOXVLQ0JwWkNBcElIdGNibHgwWEhSY2RIWmhjaUJoZEhSeVNXUWdQU0JwWkM1eVpYQnNZV05sS0NCeWRXNWxjMk5oY0dVc0lHWjFibVZ6WTJGd1pTQXBPMXh1WEhSY2RGeDBjbVYwZFhKdUlHWjFibU4wYVc5dUtDQmxiR1Z0SUNrZ2UxeHVYSFJjZEZ4MFhIUjJZWElnYm05a1pTQTlJSFI1Y0dWdlppQmxiR1Z0TG1kbGRFRjBkSEpwWW5WMFpVNXZaR1VnSVQwOUlGd2lkVzVrWldacGJtVmtYQ0lnSmlZZ1pXeGxiUzVuWlhSQmRIUnlhV0oxZEdWT2IyUmxLRndpYVdSY0lpazdYRzVjZEZ4MFhIUmNkSEpsZEhWeWJpQnViMlJsSUNZbUlHNXZaR1V1ZG1Gc2RXVWdQVDA5SUdGMGRISkpaRHRjYmx4MFhIUmNkSDA3WEc1Y2RGeDBmVHRjYmx4MGZWeHVYRzVjZEM4dklGUmhaMXh1WEhSRmVIQnlMbVpwYm1SYlhDSlVRVWRjSWwwZ1BTQnpkWEJ3YjNKMExtZGxkRVZzWlcxbGJuUnpRbmxVWVdkT1lXMWxJRDljYmx4MFhIUm1kVzVqZEdsdmJpZ2dkR0ZuTENCamIyNTBaWGgwSUNrZ2UxeHVYSFJjZEZ4MGFXWWdLQ0IwZVhCbGIyWWdZMjl1ZEdWNGRDNW5aWFJGYkdWdFpXNTBjMEo1VkdGblRtRnRaU0FoUFQwZ1hDSjFibVJsWm1sdVpXUmNJaUFwSUh0Y2JseDBYSFJjZEZ4MGNtVjBkWEp1SUdOdmJuUmxlSFF1WjJWMFJXeGxiV1Z1ZEhOQ2VWUmhaMDVoYldVb0lIUmhaeUFwTzF4dVhHNWNkRngwWEhRdkx5QkViMk4xYldWdWRFWnlZV2R0Wlc1MElHNXZaR1Z6SUdSdmJpZDBJR2hoZG1VZ1owVkNWRTVjYmx4MFhIUmNkSDBnWld4elpTQnBaaUFvSUhOMWNIQnZjblF1Y1hOaElDa2dlMXh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdZMjl1ZEdWNGRDNXhkV1Z5ZVZObGJHVmpkRzl5UVd4c0tDQjBZV2NnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5SURwY2JseHVYSFJjZEdaMWJtTjBhVzl1S0NCMFlXY3NJR052Ym5SbGVIUWdLU0I3WEc1Y2RGeDBYSFIyWVhJZ1pXeGxiU3hjYmx4MFhIUmNkRngwZEcxd0lEMGdXMTBzWEc1Y2RGeDBYSFJjZEdrZ1BTQXdMRnh1WEhSY2RGeDBYSFF2THlCQ2VTQm9ZWEJ3ZVNCamIybHVZMmxrWlc1alpTd2dZU0FvWW5KdmEyVnVLU0JuUlVKVVRpQmhjSEJsWVhKeklHOXVJRVJ2WTNWdFpXNTBSbkpoWjIxbGJuUWdibTlrWlhNZ2RHOXZYRzVjZEZ4MFhIUmNkSEpsYzNWc2RITWdQU0JqYjI1MFpYaDBMbWRsZEVWc1pXMWxiblJ6UW5sVVlXZE9ZVzFsS0NCMFlXY2dLVHRjYmx4dVhIUmNkRngwTHk4Z1JtbHNkR1Z5SUc5MWRDQndiM056YVdKc1pTQmpiMjF0Wlc1MGMxeHVY
14938SFJjZEZ4MGFXWWdLQ0IwWVdjZ1BUMDlJRndpS2x3aUlDa2dlMXh1WEhSY2RGeDBYSFIzYUdsc1pTQW9JQ2hsYkdWdElEMGdjbVZ6ZFd4MGMxdHBLeXRkS1NBcElIdGNibHgwWEhSY2RGeDBYSFJwWmlBb0lHVnNaVzB1Ym05a1pWUjVjR1VnUFQwOUlERWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUjBiWEF1Y0hWemFDZ2daV3hsYlNBcE8xeHVYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwZlZ4dVhHNWNkRngwWEhSY2RISmxkSFZ5YmlCMGJYQTdYRzVjZEZ4MFhIUjlYRzVjZEZ4MFhIUnlaWFIxY200Z2NtVnpkV3gwY3p0Y2JseDBYSFI5TzF4dVhHNWNkQzh2SUVOc1lYTnpYRzVjZEVWNGNISXVabWx1WkZ0Y0lrTk1RVk5UWENKZElEMGdjM1Z3Y0c5eWRDNW5aWFJGYkdWdFpXNTBjMEo1UTJ4aGMzTk9ZVzFsSUNZbUlHWjFibU4wYVc5dUtDQmpiR0Z6YzA1aGJXVXNJR052Ym5SbGVIUWdLU0I3WEc1Y2RGeDBhV1lnS0NCa2IyTjFiV1Z1ZEVselNGUk5UQ0FwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUJqYjI1MFpYaDBMbWRsZEVWc1pXMWxiblJ6UW5sRGJHRnpjMDVoYldVb0lHTnNZWE56VG1GdFpTQXBPMXh1WEhSY2RIMWNibHgwZlR0Y2JseHVYSFF2S2lCUlUwRXZiV0YwWTJobGMxTmxiR1ZqZEc5eVhHNWNkQzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMGdLaTljYmx4dVhIUXZMeUJSVTBFZ1lXNWtJRzFoZEdOb1pYTlRaV3hsWTNSdmNpQnpkWEJ3YjNKMFhHNWNibHgwTHk4Z2JXRjBZMmhsYzFObGJHVmpkRzl5S0RwaFkzUnBkbVVwSUhKbGNHOXlkSE1nWm1Gc2MyVWdkMmhsYmlCMGNuVmxJQ2hKUlRrdlQzQmxjbUVnTVRFdU5TbGNibHgwY21KMVoyZDVUV0YwWTJobGN5QTlJRnRkTzF4dVhHNWNkQzh2SUhGVFlTZzZabTlqZFhNcElISmxjRzl5ZEhNZ1ptRnNjMlVnZDJobGJpQjBjblZsSUNoRGFISnZiV1VnTWpFcFhHNWNkQzh2SUZkbElHRnNiRzkzSUhSb2FYTWdZbVZqWVhWelpTQnZaaUJoSUdKMVp5QnBiaUJKUlRndk9TQjBhR0YwSUhSb2NtOTNjeUJoYmlCbGNuSnZjbHh1WEhRdkx5QjNhR1Z1WlhabGNpQmdaRzlqZFcxbGJuUXVZV04wYVhabFJXeGxiV1Z1ZEdBZ2FYTWdZV05qWlhOelpXUWdiMjRnWVc0Z2FXWnlZVzFsWEc1Y2RDOHZJRk52TENCM1pTQmhiR3h2ZHlBNlptOWpkWE1nZEc4Z2NHRnpjeUIwYUhKdmRXZG9JRkZUUVNCaGJHd2dkR2hsSUhScGJXVWdkRzhnWVhadmFXUWdkR2hsSUVsRklHVnljbTl5WEc1Y2RDOHZJRk5sWlNCb2RIUndPaTh2WW5WbmN5NXFjWFZsY25rdVkyOXRMM1JwWTJ0bGRDOHhNek0zT0Z4dVhIUnlZblZuWjNsUlUwRWdQU0JiWFR0Y2JseHVYSFJwWmlBb0lDaHpkWEJ3YjNKMExuRnpZU0E5SUhKdVlYUnBkbVV1ZEdWemRDZ2daRzlqTG5GMVpYSjVVMlZzWldOMGIzSkJiR3dnS1NrZ0tTQjdYRzVjZEZ4MEx5OGdRblZwYkdRZ1VWTkJJSEpsWjJWNFhHNWNkRngwTHk4Z1VtVm5aWGdnYzNSeVlYUmxaM2tnWVdSdmNIUmxaQ0JtY205dElFUnBaV2R2SUZCbGNtbHVhVnh1WEhSY2RHRnpjMlZ5ZENobWRXNWpkR2x2YmlnZ1pHbDJJQ2tnZTF4dVhIUmNkRngwTHk4Z1UyVnNaV04wSUdseklITmxkQ0IwYnlCbGJYQjBlU0J6ZEhKcGJtY2diMjRnY0hWeWNHOXpaVnh1WEhSY2RGeDBMeThnVkdocGN5QnBjeUIwYnlCMFpYTjBJRWxGSjNNZ2RISmxZWFJ0Wlc1MElHOW1JRzV2ZENCbGVIQnNhV05wZEd4NVhHNWNkRngwWEhRdkx5QnpaWFIwYVc1bklHRWdZbTl2YkdWaGJpQmpiMjUwWlc1MElHRjBkSEpwWW5WMFpTeGNibHgwWEhSY2RDOHZJSE5wYm1ObElHbDBjeUJ3Y21WelpXNWpaU0J6YUc5MWJHUWdZbVVnWlc1dmRXZG9YRzVjZEZ4MFhIUXZMeUJvZEhSd09pOHZZblZuY3k1cWNYVmxjbmt1WTI5dEwzUnBZMnRsZEM4eE1qTTFPVnh1WEhSY2RGeDBaRzlqUld4bGJTNWhjSEJsYm1SRGFHbHNaQ2dnWkdsMklDa3VhVzV1WlhKSVZFMU1JRDBnWENJOFlTQnBaRDBuWENJZ0t5QmxlSEJoYm1SdklDc2dYQ0luUGp3dllUNWNJaUFyWEc1Y2RGeDBYSFJjZEZ3aVBITmxiR1ZqZENCcFpEMG5YQ0lnS3lCbGVIQmhibVJ2SUNzZ1hDSXRYRnhtWFNjZ2JYTmhiR3h2ZDJOaGNIUjFjbVU5SnljK1hDSWdLMXh1WEhSY2RGeDBYSFJjSWp4dmNIUnBiMjRnYzJWc1pXTjBaV1E5SnljK1BDOXZjSFJwYjI0K1BDOXpaV3hsWTNRK1hDSTdYRzVjYmx4MFhIUmNkQzh2SUZOMWNIQnZjblE2SUVsRk9Dd2dUM0JsY21FZ01URXRNVEl1TVRaY2JseDBYSFJjZEM4dklFNXZkR2hwYm1jZ2MyaHZkV3hrSUdKbElITmxiR1ZqZEdWa0lIZG9aVzRnWlcxd2RIa2djM1J5YVc1bmN5Qm1iMnhzYjNjZ1hqMGdiM0lnSkQwZ2IzSWdLajFjYmx4MFhIUmNkQzh2SUZSb1pTQjBaWE4wSUdGMGRISnBZblYwWlNCdGRYTjBJR0psSUhWdWEyNXZkMjRnYVc0Z1QzQmxjbUVnWW5WMElGd2ljMkZtWlZ3aUlHWnZjaUJYYVc1U1ZGeHVYSFJjZEZ4MEx5OGdhSFIwY0RvdkwyMXpaRzR1YldsamNtOXpiMlowTG1OdmJTOWxiaTExY3k5c2FXSnlZWEo1TDJsbEwyaG9ORFkxTXpnNExtRnpjSGdqWVhSMGNtbGlkWFJsWDNObFkzUnBiMjVjYmx4MFhIUmNkR2xtSUNnZ1pHbDJMbkYxWlhKNVUyVnNaV04wYjNKQmJHd29YQ0piYlhOaGJHeHZkMk5oY0hSMWNtVmVQU2NuWFZ3aUtTNXNaVzVuZEdnZ0tTQjdYRzVjZEZ4MFhIUmNkSEppZFdkbmVWRlRRUzV3ZFhOb0tDQmNJbHNxWGlSZFBWd2lJQ3NnZDJocGRHVnpjR0ZqWlNBcklGd2lLaWcvT2ljbmZGeGNYQ0pjWEZ3aUtWd2lJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEM4dklGTjFjSEJ2Y25RNklFbEZPRnh1WEhSY2RGeDBMeThnUW05dmJHVmhiaUJoZEhSeWFXSjFkR1Z6SUdGdVpDQmNJblpoYkhWbFhDSWdZWEpsSUc1dmRDQjBjbVZoZEdWa0lHTnZjbkpsWTNSc2VWeHVYSFJjZEZ4MGFXWWdLQ0FoWkdsMkxuRjFaWEo1VTJWc1pXTjBiM0pCYkd3b1hDSmJjMlZzWldOMFpXUmRYQ0lwTG14bGJtZDBhQ0FwSUh0Y2JseDBYSFJjZEZ4MGNtSjFaMmQ1VVZOQkxuQjFjMmdvSUZ3aVhGeGNYRnRjSWlBcklIZG9hWFJsYzNCaFkyVWdLeUJjSWlvb1B6cDJZV3gxWlh4Y0lpQXJJR0p2YjJ4bFlXNXpJQ3NnWENJcFhDSWdLVHRjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwTHk4Z1UzVndjRzl5ZERvZ1EyaHliMjFsUERJNUxDQkJib
14938VJ5YjJsa1BEUXVNaXNzSUZOaFptRnlhVHczTGpBckxDQnBUMU04Tnk0d0t5d2dVR2hoYm5SdmJVcFRQREV1T1M0M0sxeHVYSFJjZEZ4MGFXWWdLQ0FoWkdsMkxuRjFaWEo1VTJWc1pXTjBiM0pCYkd3b0lGd2lXMmxrZmoxY0lpQXJJR1Y0Y0dGdVpHOGdLeUJjSWkxZFhDSWdLUzVzWlc1bmRHZ2dLU0I3WEc1Y2RGeDBYSFJjZEhKaWRXZG5lVkZUUVM1d2RYTm9LRndpZmoxY0lpazdYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkQzh2SUZkbFltdHBkQzlQY0dWeVlTQXRJRHBqYUdWamEyVmtJSE5vYjNWc1pDQnlaWFIxY200Z2MyVnNaV04wWldRZ2IzQjBhVzl1SUdWc1pXMWxiblJ6WEc1Y2RGeDBYSFF2THlCb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk5VVVpOHlNREV4TDFKRlF5MWpjM016TFhObGJHVmpkRzl5Y3kweU1ERXhNRGt5T1M4alkyaGxZMnRsWkZ4dVhIUmNkRngwTHk4Z1NVVTRJSFJvY205M2N5Qmxjbkp2Y2lCb1pYSmxJR0Z1WkNCM2FXeHNJRzV2ZENCelpXVWdiR0YwWlhJZ2RHVnpkSE5jYmx4MFhIUmNkR2xtSUNnZ0lXUnBkaTV4ZFdWeWVWTmxiR1ZqZEc5eVFXeHNLRndpT21Ob1pXTnJaV1JjSWlrdWJHVnVaM1JvSUNrZ2UxeHVYSFJjZEZ4MFhIUnlZblZuWjNsUlUwRXVjSFZ6YUNoY0lqcGphR1ZqYTJWa1hDSXBPMXh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFF2THlCVGRYQndiM0owT2lCVFlXWmhjbWtnT0Nzc0lHbFBVeUE0SzF4dVhIUmNkRngwTHk4Z2FIUjBjSE02THk5aWRXZHpMbmRsWW10cGRDNXZjbWN2YzJodmQxOWlkV2N1WTJkcFAybGtQVEV6TmpnMU1WeHVYSFJjZEZ4MEx5OGdTVzR0Y0dGblpTQmdjMlZzWldOMGIzSWphV1FnYzJsaWFXNW5MV052YldKcGJtRjBiM0lnYzJWc1pXTjBiM0pnSUdaaGFXeHpYRzVjZEZ4MFhIUnBaaUFvSUNGa2FYWXVjWFZsY25sVFpXeGxZM1J2Y2tGc2JDZ2dYQ0poSTF3aUlDc2daWGh3WVc1a2J5QXJJRndpS3lwY0lpQXBMbXhsYm1kMGFDQXBJSHRjYmx4MFhIUmNkRngwY21KMVoyZDVVVk5CTG5CMWMyZ29YQ0l1SXk0cld5dCtYVndpS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5S1R0Y2JseHVYSFJjZEdGemMyVnlkQ2htZFc1amRHbHZiaWdnWkdsMklDa2dlMXh1WEhSY2RGeDBMeThnVTNWd2NHOXlkRG9nVjJsdVpHOTNjeUE0SUU1aGRHbDJaU0JCY0hCelhHNWNkRngwWEhRdkx5QlVhR1VnZEhsd1pTQmhibVFnYm1GdFpTQmhkSFJ5YVdKMWRHVnpJR0Z5WlNCeVpYTjBjbWxqZEdWa0lHUjFjbWx1WnlBdWFXNXVaWEpJVkUxTUlHRnpjMmxuYm0xbGJuUmNibHgwWEhSY2RIWmhjaUJwYm5CMWRDQTlJR1J2WXk1amNtVmhkR1ZGYkdWdFpXNTBLRndpYVc1d2RYUmNJaWs3WEc1Y2RGeDBYSFJwYm5CMWRDNXpaWFJCZEhSeWFXSjFkR1VvSUZ3aWRIbHdaVndpTENCY0ltaHBaR1JsYmx3aUlDazdYRzVjZEZ4MFhIUmthWFl1WVhCd1pXNWtRMmhwYkdRb0lHbHVjSFYwSUNrdWMyVjBRWFIwY21saWRYUmxLQ0JjSW01aGJXVmNJaXdnWENKRVhDSWdLVHRjYmx4dVhIUmNkRngwTHk4Z1UzVndjRzl5ZERvZ1NVVTRYRzVjZEZ4MFhIUXZMeUJGYm1admNtTmxJR05oYzJVdGMyVnVjMmwwYVhacGRIa2diMllnYm1GdFpTQmhkSFJ5YVdKMWRHVmNibHgwWEhSY2RHbG1JQ2dnWkdsMkxuRjFaWEo1VTJWc1pXTjBiM0pCYkd3b1hDSmJibUZ0WlQxa1hWd2lLUzVzWlc1bmRHZ2dLU0I3WEc1Y2RGeDBYSFJjZEhKaWRXZG5lVkZUUVM1d2RYTm9LQ0JjSW01aGJXVmNJaUFySUhkb2FYUmxjM0JoWTJVZ0t5QmNJaXBiS2w0a2ZDRitYVDg5WENJZ0tUdGNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnUmtZZ015NDFJQzBnT21WdVlXSnNaV1F2T21ScGMyRmliR1ZrSUdGdVpDQm9hV1JrWlc0Z1pXeGxiV1Z1ZEhNZ0tHaHBaR1JsYmlCbGJHVnRaVzUwY3lCaGNtVWdjM1JwYkd3Z1pXNWhZbXhsWkNsY2JseDBYSFJjZEM4dklFbEZPQ0IwYUhKdmQzTWdaWEp5YjNJZ2FHVnlaU0JoYm1RZ2QybHNiQ0J1YjNRZ2MyVmxJR3hoZEdWeUlIUmxjM1J6WEc1Y2RGeDBYSFJwWmlBb0lDRmthWFl1Y1hWbGNubFRaV3hsWTNSdmNrRnNiQ2hjSWpwbGJtRmliR1ZrWENJcExteGxibWQwYUNBcElIdGNibHgwWEhSY2RGeDBjbUoxWjJkNVVWTkJMbkIxYzJnb0lGd2lPbVZ1WVdKc1pXUmNJaXdnWENJNlpHbHpZV0pzWldSY0lpQXBPMXh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFF2THlCUGNHVnlZU0F4TUMweE1TQmtiMlZ6SUc1dmRDQjBhSEp2ZHlCdmJpQndiM04wTFdOdmJXMWhJR2x1ZG1Gc2FXUWdjSE5sZFdSdmMxeHVYSFJjZEZ4MFpHbDJMbkYxWlhKNVUyVnNaV04wYjNKQmJHd29YQ0lxTERwNFhDSXBPMXh1WEhSY2RGeDBjbUoxWjJkNVVWTkJMbkIxYzJnb1hDSXNMaW82WENJcE8xeHVYSFJjZEgwcE8xeHVYSFI5WEc1Y2JseDBhV1lnS0NBb2MzVndjRzl5ZEM1dFlYUmphR1Z6VTJWc1pXTjBiM0lnUFNCeWJtRjBhWFpsTG5SbGMzUW9JQ2h0WVhSamFHVnpJRDBnWkc5alJXeGxiUzV0WVhSamFHVnpJSHg4WEc1Y2RGeDBaRzlqUld4bGJTNTNaV0pyYVhSTllYUmphR1Z6VTJWc1pXTjBiM0lnZkh4Y2JseDBYSFJrYjJORmJHVnRMbTF2ZWsxaGRHTm9aWE5UWld4bFkzUnZjaUI4ZkZ4dVhIUmNkR1J2WTBWc1pXMHViMDFoZEdOb1pYTlRaV3hsWTNSdmNpQjhmRnh1WEhSY2RHUnZZMFZzWlcwdWJYTk5ZWFJqYUdWelUyVnNaV04wYjNJcElDa3BJQ2tnZTF4dVhHNWNkRngwWVhOelpYSjBLR1oxYm1OMGFXOXVLQ0JrYVhZZ0tTQjdYRzVjZEZ4MFhIUXZMeUJEYUdWamF5QjBieUJ6WldVZ2FXWWdhWFFuY3lCd2IzTnphV0pzWlNCMGJ5QmtieUJ0WVhSamFHVnpVMlZzWldOMGIzSmNibHgwWEhSY2RDOHZJRzl1SUdFZ1pHbHpZMjl1Ym1WamRHVmtJRzV2WkdVZ0tFbEZJRGtwWEc1Y2RGeDBYSFJ6ZFhCd2IzSjBMbVJwYzJOdmJtNWxZM1JsWkUxaGRHTm9JRDBnYldGMFkyaGxjeTVqWVd4c0tDQmthWFlzSUZ3aVpHbDJYQ0lnS1R0Y2JseHVYSFJjZEZ4MEx5OGdWR2hwY3lCemFHOTFiR1FnWm1GcGJDQjNhWFJvSUdGdUlHVjRZMlZ3ZEdsdmJseHVYSFJjZEZ4MEx5OGdSMlZqYTI4Z1pHOWxjeUJ1YjNRZ1pYSnliM0lzSUhKbGRIVnlibk1nWm1Gc2MyVWdhVzV6ZEdWaFpGeHVYSFJjZEZ4MGJXRjBZMmhsY3k1allXeHNLQ0JrYVhZc0lGd2lXM01oUFNjblhUcDRYQ0lnS1R0Y2JseDBYSFJjZEhKaWRXZG5lVTFoZEdOb1pYTXVjSFZ6YUNnZ1hDSWhQVndpTENCd2MyVjFaRzl6SUNrN1hHNWNkRngwZlNrN1hHNWNkSDFjYmx4dVhIUnlZblZuWjNsUlUwRWdQU0J5WW5WblozbFJVMEV1YkdWdVozUm9JQ1ltSUc1bGR5QlNaV2RGZUhBb0lISmlkV2RuZVZGVFFTNXFiMmx1S0Z3aWZGd2lLU0FwTzF4dVhIUnlZblZuWjNsTllYUmphR1Z6SUQwZ2NtSjFaMmQ1VFdGMFkyaGxjeTVzWlc1bmRHZ2dKaVlnYm
149381WM0lGSmxaMFY0Y0NnZ2NtSjFaMmQ1VFdGMFkyaGxjeTVxYjJsdUtGd2lmRndpS1NBcE8xeHVYRzVjZEM4cUlFTnZiblJoYVc1elhHNWNkQzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMGdLaTljYmx4MGFHRnpRMjl0Y0dGeVpTQTlJSEp1WVhScGRtVXVkR1Z6ZENnZ1pHOWpSV3hsYlM1amIyMXdZWEpsUkc5amRXMWxiblJRYjNOcGRHbHZiaUFwTzF4dVhHNWNkQzh2SUVWc1pXMWxiblFnWTI5dWRHRnBibk1nWVc1dmRHaGxjbHh1WEhRdkx5QlFkWEp3YjNObFpuVnNiSGtnWkc5bGN5QnViM1FnYVcxd2JHVnRaVzUwSUdsdVkyeDFjMmwyWlNCa1pYTmpaVzVrWlc1MFhHNWNkQzh2SUVGeklHbHVMQ0JoYmlCbGJHVnRaVzUwSUdSdlpYTWdibTkwSUdOdmJuUmhhVzRnYVhSelpXeG1YRzVjZEdOdmJuUmhhVzV6SUQwZ2FHRnpRMjl0Y0dGeVpTQjhmQ0J5Ym1GMGFYWmxMblJsYzNRb0lHUnZZMFZzWlcwdVkyOXVkR0ZwYm5NZ0tTQS9YRzVjZEZ4MFpuVnVZM1JwYjI0b0lHRXNJR0lnS1NCN1hHNWNkRngwWEhSMllYSWdZV1J2ZDI0Z1BTQmhMbTV2WkdWVWVYQmxJRDA5UFNBNUlEOGdZUzVrYjJOMWJXVnVkRVZzWlcxbGJuUWdPaUJoTEZ4dVhIUmNkRngwWEhSaWRYQWdQU0JpSUNZbUlHSXVjR0Z5Wlc1MFRtOWtaVHRjYmx4MFhIUmNkSEpsZEhWeWJpQmhJRDA5UFNCaWRYQWdmSHdnSVNFb0lHSjFjQ0FtSmlCaWRYQXVibTlrWlZSNWNHVWdQVDA5SURFZ0ppWWdLRnh1WEhSY2RGeDBYSFJoWkc5M2JpNWpiMjUwWVdsdWN5QS9YRzVjZEZ4MFhIUmNkRngwWVdSdmQyNHVZMjl1ZEdGcGJuTW9JR0oxY0NBcElEcGNibHgwWEhSY2RGeDBYSFJoTG1OdmJYQmhjbVZFYjJOMWJXVnVkRkJ2YzJsMGFXOXVJQ1ltSUdFdVkyOXRjR0Z5WlVSdlkzVnRaVzUwVUc5emFYUnBiMjRvSUdKMWNDQXBJQ1lnTVRaY2JseDBYSFJjZENrcE8xeHVYSFJjZEgwZ09seHVYSFJjZEdaMWJtTjBhVzl1S0NCaExDQmlJQ2tnZTF4dVhIUmNkRngwYVdZZ0tDQmlJQ2tnZTF4dVhIUmNkRngwWEhSM2FHbHNaU0FvSUNoaUlEMGdZaTV3WVhKbGJuUk9iMlJsS1NBcElIdGNibHgwWEhSY2RGeDBYSFJwWmlBb0lHSWdQVDA5SUdFZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSeVpYUjFjbTRnZEhKMVpUdGNibHgwWEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEgxY2JseDBYSFJjZEgxY2JseDBYSFJjZEhKbGRIVnliaUJtWVd4elpUdGNibHgwWEhSOU8xeHVYRzVjZEM4cUlGTnZjblJwYm1kY2JseDBMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTQXFMMXh1WEc1Y2RDOHZJRVJ2WTNWdFpXNTBJRzl5WkdWeUlITnZjblJwYm1kY2JseDBjMjl5ZEU5eVpHVnlJRDBnYUdGelEyOXRjR0Z5WlNBL1hHNWNkR1oxYm1OMGFXOXVLQ0JoTENCaUlDa2dlMXh1WEc1Y2RGeDBMeThnUm14aFp5Qm1iM0lnWkhWd2JHbGpZWFJsSUhKbGJXOTJZV3hjYmx4MFhIUnBaaUFvSUdFZ1BUMDlJR0lnS1NCN1hHNWNkRngwWEhSb1lYTkVkWEJzYVdOaGRHVWdQU0IwY25WbE8xeHVYSFJjZEZ4MGNtVjBkWEp1SURBN1hHNWNkRngwZlZ4dVhHNWNkRngwTHk4Z1UyOXlkQ0J2YmlCdFpYUm9iMlFnWlhocGMzUmxibU5sSUdsbUlHOXViSGtnYjI1bElHbHVjSFYwSUdoaGN5QmpiMjF3WVhKbFJHOWpkVzFsYm5SUWIzTnBkR2x2Ymx4dVhIUmNkSFpoY2lCamIyMXdZWEpsSUQwZ0lXRXVZMjl0Y0dGeVpVUnZZM1Z0Wlc1MFVHOXphWFJwYjI0Z0xTQWhZaTVqYjIxd1lYSmxSRzlqZFcxbGJuUlFiM05wZEdsdmJqdGNibHgwWEhScFppQW9JR052YlhCaGNtVWdLU0I3WEc1Y2RGeDBYSFJ5WlhSMWNtNGdZMjl0Y0dGeVpUdGNibHgwWEhSOVhHNWNibHgwWEhRdkx5QkRZV3hqZFd4aGRHVWdjRzl6YVhScGIyNGdhV1lnWW05MGFDQnBibkIxZEhNZ1ltVnNiMjVuSUhSdklIUm9aU0J6WVcxbElHUnZZM1Z0Wlc1MFhHNWNkRngwWTI5dGNHRnlaU0E5SUNnZ1lTNXZkMjVsY2tSdlkzVnRaVzUwSUh4OElHRWdLU0E5UFQwZ0tDQmlMbTkzYm1WeVJHOWpkVzFsYm5RZ2ZId2dZaUFwSUQ5Y2JseDBYSFJjZEdFdVkyOXRjR0Z5WlVSdlkzVnRaVzUwVUc5emFYUnBiMjRvSUdJZ0tTQTZYRzVjYmx4MFhIUmNkQzh2SUU5MGFHVnlkMmx6WlNCM1pTQnJibTkzSUhSb1pYa2dZWEpsSUdScGMyTnZibTVsWTNSbFpGeHVYSFJjZEZ4ME1UdGNibHh1WEhSY2RDOHZJRVJwYzJOdmJtNWxZM1JsWkNCdWIyUmxjMXh1WEhSY2RHbG1JQ2dnWTI5dGNHRnlaU0FtSURFZ2ZIeGNibHgwWEhSY2RDZ2hjM1Z3Y0c5eWRDNXpiM0owUkdWMFlXTm9aV1FnSmlZZ1lpNWpiMjF3WVhKbFJHOWpkVzFsYm5SUWIzTnBkR2x2YmlnZ1lTQXBJRDA5UFNCamIyMXdZWEpsS1NBcElIdGNibHh1WEhSY2RGeDBMeThnUTJodmIzTmxJSFJvWlNCbWFYSnpkQ0JsYkdWdFpXNTBJSFJvWVhRZ2FYTWdjbVZzWVhSbFpDQjBieUJ2ZFhJZ2NISmxabVZ5Y21Wa0lHUnZZM1Z0Wlc1MFhHNWNkRngwWEhScFppQW9JR0VnUFQwOUlHUnZZeUI4ZkNCaExtOTNibVZ5Ukc5amRXMWxiblFnUFQwOUlIQnlaV1psY25KbFpFUnZZeUFtSmlCamIyNTBZV2x1Y3lod2NtVm1aWEp5WldSRWIyTXNJR0VwSUNrZ2UxeHVYSFJjZEZ4MFhIUnlaWFIxY200Z0xURTdYRzVjZEZ4MFhIUjlYRzVjZEZ4MFhIUnBaaUFvSUdJZ1BUMDlJR1J2WXlCOGZDQmlMbTkzYm1WeVJHOWpkVzFsYm5RZ1BUMDlJSEJ5WldabGNuSmxaRVJ2WXlBbUppQmpiMjUwWVdsdWN5aHdjbVZtWlhKeVpXUkViMk1zSUdJcElDa2dlMXh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdNVHRjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwTHk4Z1RXRnBiblJoYVc0Z2IzSnBaMmx1WVd3Z2IzSmtaWEpjYmx4MFhIUmNkSEpsZEhWeWJpQnpiM0owU1c1d2RYUWdQMXh1WEhSY2RGeDBYSFFvSUdsdVpHVjRUMllvSUhOdmNuUkpibkIxZEN3Z1lTQXBJQzBnYVc1a1pYaFBaaWdnYzI5eWRFbHVjSFYwTENCaUlDa2dLU0E2WEc1Y2RGeDBYSFJjZERBN1hHNWNkRngwZlZ4dVhHNWNkRngwY21WMGRYSnVJR052YlhCaGNtVWdKaUEwSUQ4Z0xURWdPaUF4TzF4dVhIUjlJRHBjYmx4MFpuVnVZM1JwYjI0b0lHRXNJR0lnS1NCN1hHNWNkRngwTHk4Z1JYaHBkQ0JsWVhKc2VTQnBaaUIwYU
14938dVZ2JtOWtaWE1nWVhKbElHbGtaVzUwYVdOaGJGeHVYSFJjZEdsbUlDZ2dZU0E5UFQwZ1lpQXBJSHRjYmx4MFhIUmNkR2hoYzBSMWNHeHBZMkYwWlNBOUlIUnlkV1U3WEc1Y2RGeDBYSFJ5WlhSMWNtNGdNRHRjYmx4MFhIUjlYRzVjYmx4MFhIUjJZWElnWTNWeUxGeHVYSFJjZEZ4MGFTQTlJREFzWEc1Y2RGeDBYSFJoZFhBZ1BTQmhMbkJoY21WdWRFNXZaR1VzWEc1Y2RGeDBYSFJpZFhBZ1BTQmlMbkJoY21WdWRFNXZaR1VzWEc1Y2RGeDBYSFJoY0NBOUlGc2dZU0JkTEZ4dVhIUmNkRngwWW5BZ1BTQmJJR0lnWFR0Y2JseHVYSFJjZEM4dklGQmhjbVZ1ZEd4bGMzTWdibTlrWlhNZ1lYSmxJR1ZwZEdobGNpQmtiMk4xYldWdWRITWdiM0lnWkdselkyOXVibVZqZEdWa1hHNWNkRngwYVdZZ0tDQWhZWFZ3SUh4OElDRmlkWEFnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnWVNBOVBUMGdaRzlqSUQ4Z0xURWdPbHh1WEhSY2RGeDBYSFJpSUQwOVBTQmtiMk1nUHlBeElEcGNibHgwWEhSY2RGeDBZWFZ3SUQ4Z0xURWdPbHh1WEhSY2RGeDBYSFJpZFhBZ1B5QXhJRHBjYmx4MFhIUmNkRngwYzI5eWRFbHVjSFYwSUQ5Y2JseDBYSFJjZEZ4MEtDQnBibVJsZUU5bUtDQnpiM0owU1c1d2RYUXNJR0VnS1NBdElHbHVaR1Y0VDJZb0lITnZjblJKYm5CMWRDd2dZaUFwSUNrZ09seHVYSFJjZEZ4MFhIUXdPMXh1WEc1Y2RGeDBMeThnU1dZZ2RHaGxJRzV2WkdWeklHRnlaU0J6YVdKc2FXNW5jeXdnZDJVZ1kyRnVJR1J2SUdFZ2NYVnBZMnNnWTJobFkydGNibHgwWEhSOUlHVnNjMlVnYVdZZ0tDQmhkWEFnUFQwOUlHSjFjQ0FwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUJ6YVdKc2FXNW5RMmhsWTJzb0lHRXNJR0lnS1R0Y2JseDBYSFI5WEc1Y2JseDBYSFF2THlCUGRHaGxjbmRwYzJVZ2QyVWdibVZsWkNCbWRXeHNJR3hwYzNSeklHOW1JSFJvWldseUlHRnVZMlZ6ZEc5eWN5Qm1iM0lnWTI5dGNHRnlhWE52Ymx4dVhIUmNkR04xY2lBOUlHRTdYRzVjZEZ4MGQyaHBiR1VnS0NBb1kzVnlJRDBnWTNWeUxuQmhjbVZ1ZEU1dlpHVXBJQ2tnZTF4dVhIUmNkRngwWVhBdWRXNXphR2xtZENnZ1kzVnlJQ2s3WEc1Y2RGeDBmVnh1WEhSY2RHTjFjaUE5SUdJN1hHNWNkRngwZDJocGJHVWdLQ0FvWTNWeUlEMGdZM1Z5TG5CaGNtVnVkRTV2WkdVcElDa2dlMXh1WEhSY2RGeDBZbkF1ZFc1emFHbG1kQ2dnWTNWeUlDazdYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdWMkZzYXlCa2IzZHVJSFJvWlNCMGNtVmxJR3h2YjJ0cGJtY2dabTl5SUdFZ1pHbHpZM0psY0dGdVkzbGNibHgwWEhSM2FHbHNaU0FvSUdGd1cybGRJRDA5UFNCaWNGdHBYU0FwSUh0Y2JseDBYSFJjZEdrckt6dGNibHgwWEhSOVhHNWNibHgwWEhSeVpYUjFjbTRnYVNBL1hHNWNkRngwWEhRdkx5QkVieUJoSUhOcFlteHBibWNnWTJobFkyc2dhV1lnZEdobElHNXZaR1Z6SUdoaGRtVWdZU0JqYjIxdGIyNGdZVzVqWlhOMGIzSmNibHgwWEhSY2RITnBZbXhwYm1kRGFHVmpheWdnWVhCYmFWMHNJR0p3VzJsZElDa2dPbHh1WEc1Y2RGeDBYSFF2THlCUGRHaGxjbmRwYzJVZ2JtOWtaWE1nYVc0Z2IzVnlJR1J2WTNWdFpXNTBJSE52Y25RZ1ptbHljM1JjYmx4MFhIUmNkR0Z3VzJsZElEMDlQU0J3Y21WbVpYSnlaV1JFYjJNZ1B5QXRNU0E2WEc1Y2RGeDBYSFJpY0Z0cFhTQTlQVDBnY0hKbFptVnljbVZrUkc5aklEOGdNU0E2WEc1Y2RGeDBYSFF3TzF4dVhIUjlPMXh1WEc1Y2RISmxkSFZ5YmlCa2IyTTdYRzU5TzF4dVhHNVRhWHA2YkdVdWJXRjBZMmhsY3lBOUlHWjFibU4wYVc5dUtDQmxlSEJ5TENCbGJHVnRaVzUwY3lBcElIdGNibHgwY21WMGRYSnVJRk5wZW5wc1pTZ2daWGh3Y2l3Z2JuVnNiQ3dnYm5Wc2JDd2daV3hsYldWdWRITWdLVHRjYm4wN1hHNWNibE5wZW5wc1pTNXRZWFJqYUdWelUyVnNaV04wYjNJZ1BTQm1kVzVqZEdsdmJpZ2daV3hsYlN3Z1pYaHdjaUFwSUh0Y2JseDBMeThnVTJWMElHUnZZM1Z0Wlc1MElIWmhjbk1nYVdZZ2JtVmxaR1ZrWEc1Y2RHbG1JQ2dnS0NCbGJHVnRMbTkzYm1WeVJHOWpkVzFsYm5RZ2ZId2daV3hsYlNBcElDRTlQU0JrYjJOMWJXVnVkQ0FwSUh0Y2JseDBYSFJ6WlhSRWIyTjFiV1Z1ZENnZ1pXeGxiU0FwTzF4dVhIUjlYRzVjYmx4MEx5OGdUV0ZyWlNCemRYSmxJSFJvWVhRZ1lYUjBjbWxpZFhSbElITmxiR1ZqZEc5eWN5QmhjbVVnY1hWdmRHVmtYRzVjZEdWNGNISWdQU0JsZUhCeUxuSmxjR3hoWTJVb0lISmhkSFJ5YVdKMWRHVlJkVzkwWlhNc0lGd2lQU2NrTVNkZFhDSWdLVHRjYmx4dVhIUnBaaUFvSUhOMWNIQnZjblF1YldGMFkyaGxjMU5sYkdWamRHOXlJQ1ltSUdSdlkzVnRaVzUwU1hOSVZFMU1JQ1ltWEc1Y2RGeDBLQ0FoY21KMVoyZDVUV0YwWTJobGN5QjhmQ0FoY21KMVoyZDVUV0YwWTJobGN5NTBaWE4wS0NCbGVIQnlJQ2tnS1NBbUpseHVYSFJjZENnZ0lYSmlkV2RuZVZGVFFTQWdJQ0FnZkh3Z0lYSmlkV2RuZVZGVFFTNTBaWE4wS0NCbGVIQnlJQ2tnS1NBcElIdGNibHh1WEhSY2RIUnllU0I3WEc1Y2RGeDBYSFIyWVhJZ2NtVjBJRDBnYldGMFkyaGxjeTVqWVd4c0tDQmxiR1Z0TENCbGVIQnlJQ2s3WEc1Y2JseDBYSFJjZEM4dklFbEZJRGtuY3lCdFlYUmphR1Z6VTJWc1pXTjBiM0lnY21WMGRYSnVjeUJtWVd4elpTQnZiaUJrYVhOamIyNXVaV04wWldRZ2JtOWtaWE5jYmx4MFhIUmNkR2xtSUNnZ2NtVjBJSHg4SUhOMWNIQnZjblF1WkdselkyOXVibVZqZEdWa1RXRjBZMmdnZkh4Y2JseDBYSFJjZEZ4MFhIUXZMeUJCY3lCM1pXeHNMQ0JrYVhOamIyNXVaV04wWldRZ2JtOWtaWE1nWVhKbElITmhhV1FnZEc4Z1ltVWdhVzRnWVNCa2IyTjFiV1Z1ZEZ4dVhIUmNkRngwWEhSY2RDOHZJR1p5WVdkdFpXNTBJR2x1SUVsRklEbGNibHgwWEhSY2RGeDBYSFJsYkdWdExtUnZZM1Z0Wlc1MElDWW1JR1ZzWlcwdVpHOWpkVzFsYm5RdWJtOWtaVlI1Y0dVZ0lUMDlJREV4SUNrZ2UxeHVYSFJjZEZ4MFhIUnlaWFIxY200Z2NtVjBPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMGdZMkYwWTJnZ0tHVXBJSHQ5WEc1Y2RIMWNibHh1WEhSeVpYUjFjbTRnVTJsNmVteGxLQ0JsZUhCeUxDQmtiMk4xYldWdWRDd2diblZzYkN3Z1d5QmxiR1Z0SUYwZ0tTNXNaVzVuZEdnZ1BpQXdPMXh1ZlR0Y2JseHVVMmw2ZW14bExtTnZiblJoYVc1eklEMGdablZ1WTNScGIyNG9JR052Ym5SbGVIUXNJR1ZzWlcwZ0tTQjdYRzVjZEM4dklGTmxkQ0JrYjJOMWJXVnVkQ0IyWVhKeklHbG1JRzVsWldSbFpGeHVYSFJwWmlBb0lDZ2dZMjl1ZEdWNGRDNXZkMjVsY2tSdlkzVnRaVzUwSUh4OElHTnZiblJsZUhRZ0tTQWhQVDBnWkc5
14938amRXMWxiblFnS1NCN1hHNWNkRngwYzJWMFJHOWpkVzFsYm5Rb0lHTnZiblJsZUhRZ0tUdGNibHgwZlZ4dVhIUnlaWFIxY200Z1kyOXVkR0ZwYm5Nb0lHTnZiblJsZUhRc0lHVnNaVzBnS1R0Y2JuMDdYRzVjYmxOcGVucHNaUzVoZEhSeUlEMGdablZ1WTNScGIyNG9JR1ZzWlcwc0lHNWhiV1VnS1NCN1hHNWNkQzh2SUZObGRDQmtiMk4xYldWdWRDQjJZWEp6SUdsbUlHNWxaV1JsWkZ4dVhIUnBaaUFvSUNnZ1pXeGxiUzV2ZDI1bGNrUnZZM1Z0Wlc1MElIeDhJR1ZzWlcwZ0tTQWhQVDBnWkc5amRXMWxiblFnS1NCN1hHNWNkRngwYzJWMFJHOWpkVzFsYm5Rb0lHVnNaVzBnS1R0Y2JseDBmVnh1WEc1Y2RIWmhjaUJtYmlBOUlFVjRjSEl1WVhSMGNraGhibVJzWlZzZ2JtRnRaUzUwYjB4dmQyVnlRMkZ6WlNncElGMHNYRzVjZEZ4MEx5OGdSRzl1SjNRZ1oyVjBJR1p2YjJ4bFpDQmllU0JQWW1wbFkzUXVjSEp2ZEc5MGVYQmxJSEJ5YjNCbGNuUnBaWE1nS0dwUmRXVnllU0FqTVRNNE1EY3BYRzVjZEZ4MGRtRnNJRDBnWm00Z0ppWWdhR0Z6VDNkdUxtTmhiR3dvSUVWNGNISXVZWFIwY2toaGJtUnNaU3dnYm1GdFpTNTBiMHh2ZDJWeVEyRnpaU2dwSUNrZ1AxeHVYSFJjZEZ4MFptNG9JR1ZzWlcwc0lHNWhiV1VzSUNGa2IyTjFiV1Z1ZEVselNGUk5UQ0FwSURwY2JseDBYSFJjZEhWdVpHVm1hVzVsWkR0Y2JseHVYSFJ5WlhSMWNtNGdkbUZzSUNFOVBTQjFibVJsWm1sdVpXUWdQMXh1WEhSY2RIWmhiQ0E2WEc1Y2RGeDBjM1Z3Y0c5eWRDNWhkSFJ5YVdKMWRHVnpJSHg4SUNGa2IyTjFiV1Z1ZEVselNGUk5UQ0EvWEc1Y2RGeDBYSFJsYkdWdExtZGxkRUYwZEhKcFluVjBaU2dnYm1GdFpTQXBJRHBjYmx4MFhIUmNkQ2gyWVd3Z1BTQmxiR1Z0TG1kbGRFRjBkSEpwWW5WMFpVNXZaR1VvYm1GdFpTa3BJQ1ltSUhaaGJDNXpjR1ZqYVdacFpXUWdQMXh1WEhSY2RGeDBYSFIyWVd3dWRtRnNkV1VnT2x4dVhIUmNkRngwWEhSdWRXeHNPMXh1ZlR0Y2JseHVVMmw2ZW14bExtVnljbTl5SUQwZ1puVnVZM1JwYjI0b0lHMXpaeUFwSUh0Y2JseDBkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDQmNJbE41Ym5SaGVDQmxjbkp2Y2l3Z2RXNXlaV052WjI1cGVtVmtJR1Y0Y0hKbGMzTnBiMjQ2SUZ3aUlDc2diWE5uSUNrN1hHNTlPMXh1WEc0dktpcGNiaUFxSUVSdlkzVnRaVzUwSUhOdmNuUnBibWNnWVc1a0lISmxiVzkyYVc1bklHUjFjR3hwWTJGMFpYTmNiaUFxSUVCd1lYSmhiU0I3UVhKeVlYbE1hV3RsZlNCeVpYTjFiSFJ6WEc0Z0tpOWNibE5wZW5wc1pTNTFibWx4ZFdWVGIzSjBJRDBnWm5WdVkzUnBiMjRvSUhKbGMzVnNkSE1nS1NCN1hHNWNkSFpoY2lCbGJHVnRMRnh1WEhSY2RHUjFjR3hwWTJGMFpYTWdQU0JiWFN4Y2JseDBYSFJxSUQwZ01DeGNibHgwWEhScElEMGdNRHRjYmx4dVhIUXZMeUJWYm14bGMzTWdkMlVnS210dWIzY3FJSGRsSUdOaGJpQmtaWFJsWTNRZ1pIVndiR2xqWVhSbGN5d2dZWE56ZFcxbElIUm9aV2x5SUhCeVpYTmxibU5sWEc1Y2RHaGhjMFIxY0d4cFkyRjBaU0E5SUNGemRYQndiM0owTG1SbGRHVmpkRVIxY0d4cFkyRjBaWE03WEc1Y2RITnZjblJKYm5CMWRDQTlJQ0Z6ZFhCd2IzSjBMbk52Y25SVGRHRmliR1VnSmlZZ2NtVnpkV3gwY3k1emJHbGpaU2dnTUNBcE8xeHVYSFJ5WlhOMWJIUnpMbk52Y25Rb0lITnZjblJQY21SbGNpQXBPMXh1WEc1Y2RHbG1JQ2dnYUdGelJIVndiR2xqWVhSbElDa2dlMXh1WEhSY2RIZG9hV3hsSUNnZ0tHVnNaVzBnUFNCeVpYTjFiSFJ6VzJrcksxMHBJQ2tnZTF4dVhIUmNkRngwYVdZZ0tDQmxiR1Z0SUQwOVBTQnlaWE4xYkhSeld5QnBJRjBnS1NCN1hHNWNkRngwWEhSY2RHb2dQU0JrZFhCc2FXTmhkR1Z6TG5CMWMyZ29JR2tnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5WEc1Y2RGeDBkMmhwYkdVZ0tDQnFMUzBnS1NCN1hHNWNkRngwWEhSeVpYTjFiSFJ6TG5Od2JHbGpaU2dnWkhWd2JHbGpZWFJsYzFzZ2FpQmRMQ0F4SUNrN1hHNWNkRngwZlZ4dVhIUjlYRzVjYmx4MEx5OGdRMnhsWVhJZ2FXNXdkWFFnWVdaMFpYSWdjMjl5ZEdsdVp5QjBieUJ5Wld4bFlYTmxJRzlpYW1WamRITmNibHgwTHk4Z1UyVmxJR2gwZEhCek9pOHZaMmwwYUhWaUxtTnZiUzlxY1hWbGNua3ZjMmw2ZW14bEwzQjFiR3d2TWpJMVhHNWNkSE52Y25SSmJuQjFkQ0E5SUc1MWJHdzdYRzVjYmx4MGNtVjBkWEp1SUhKbGMzVnNkSE03WEc1OU8xeHVYRzR2S2lwY2JpQXFJRlYwYVd4cGRIa2dablZ1WTNScGIyNGdabTl5SUhKbGRISnBaWFpwYm1jZ2RHaGxJSFJsZUhRZ2RtRnNkV1VnYjJZZ1lXNGdZWEp5WVhrZ2IyWWdSRTlOSUc1dlpHVnpYRzRnS2lCQWNHRnlZVzBnZTBGeWNtRjVmRVZzWlcxbGJuUjlJR1ZzWlcxY2JpQXFMMXh1WjJWMFZHVjRkQ0E5SUZOcGVucHNaUzVuWlhSVVpYaDBJRDBnWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RIWmhjaUJ1YjJSbExGeHVYSFJjZEhKbGRDQTlJRndpWENJc1hHNWNkRngwYVNBOUlEQXNYRzVjZEZ4MGJtOWtaVlI1Y0dVZ1BTQmxiR1Z0TG01dlpHVlVlWEJsTzF4dVhHNWNkR2xtSUNnZ0lXNXZaR1ZVZVhCbElDa2dlMXh1WEhSY2RDOHZJRWxtSUc1dklHNXZaR1ZVZVhCbExDQjBhR2x6SUdseklHVjRjR1ZqZEdWa0lIUnZJR0psSUdGdUlHRnljbUY1WEc1Y2RGeDBkMmhwYkdVZ0tDQW9ibTlrWlNBOUlHVnNaVzFiYVNzclhTa2dLU0I3WEc1Y2RGeDBYSFF2THlCRWJ5QnViM1FnZEhKaGRtVnljMlVnWTI5dGJXVnVkQ0J1YjJSbGMxeHVYSFJjZEZ4MGNtVjBJQ3M5SUdkbGRGUmxlSFFvSUc1dlpHVWdLVHRjYmx4MFhIUjlYRzVjZEgwZ1pXeHpaU0JwWmlBb0lHNXZaR1ZVZVhCbElEMDlQU0F4SUh4OElHNXZaR1ZVZVhCbElEMDlQU0E1SUh4OElHNXZaR1ZVZVhCbElEMDlQU0F4TVNBcElIdGNibHgwWEhRdkx5QlZjMlVnZEdWNGR
14938FTnZiblJsYm5RZ1ptOXlJR1ZzWlcxbGJuUnpYRzVjZEZ4MEx5OGdhVzV1WlhKVVpYaDBJSFZ6WVdkbElISmxiVzkyWldRZ1ptOXlJR052Ym5OcGMzUmxibU41SUc5bUlHNWxkeUJzYVc1bGN5QW9hbEYxWlhKNUlDTXhNVEUxTXlsY2JseDBYSFJwWmlBb0lIUjVjR1Z2WmlCbGJHVnRMblJsZUhSRGIyNTBaVzUwSUQwOVBTQmNJbk4wY21sdVoxd2lJQ2tnZTF4dVhIUmNkRngwY21WMGRYSnVJR1ZzWlcwdWRHVjRkRU52Ym5SbGJuUTdYRzVjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEM4dklGUnlZWFpsY25ObElHbDBjeUJqYUdsc1pISmxibHh1WEhSY2RGeDBabTl5SUNnZ1pXeGxiU0E5SUdWc1pXMHVabWx5YzNSRGFHbHNaRHNnWld4bGJUc2daV3hsYlNBOUlHVnNaVzB1Ym1WNGRGTnBZbXhwYm1jZ0tTQjdYRzVjZEZ4MFhIUmNkSEpsZENBclBTQm5aWFJVWlhoMEtDQmxiR1Z0SUNrN1hHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhIUjlJR1ZzYzJVZ2FXWWdLQ0J1YjJSbFZIbHdaU0E5UFQwZ015QjhmQ0J1YjJSbFZIbHdaU0E5UFQwZ05DQXBJSHRjYmx4MFhIUnlaWFIxY200Z1pXeGxiUzV1YjJSbFZtRnNkV1U3WEc1Y2RIMWNibHgwTHk4Z1JHOGdibTkwSUdsdVkyeDFaR1VnWTI5dGJXVnVkQ0J2Y2lCd2NtOWpaWE56YVc1bklHbHVjM1J5ZFdOMGFXOXVJRzV2WkdWelhHNWNibHgwY21WMGRYSnVJSEpsZER0Y2JuMDdYRzVjYmtWNGNISWdQU0JUYVhwNmJHVXVjMlZzWldOMGIzSnpJRDBnZTF4dVhHNWNkQzh2SUVOaGJpQmlaU0JoWkdwMWMzUmxaQ0JpZVNCMGFHVWdkWE5sY2x4dVhIUmpZV05vWlV4bGJtZDBhRG9nTlRBc1hHNWNibHgwWTNKbFlYUmxVSE5sZFdSdk9pQnRZWEpyUm5WdVkzUnBiMjRzWEc1Y2JseDBiV0YwWTJnNklHMWhkR05vUlhod2NpeGNibHh1WEhSaGRIUnlTR0Z1Wkd4bE9pQjdmU3hjYmx4dVhIUm1hVzVrT2lCN2ZTeGNibHh1WEhSeVpXeGhkR2wyWlRvZ2UxeHVYSFJjZEZ3aVBsd2lPaUI3SUdScGNqb2dYQ0p3WVhKbGJuUk9iMlJsWENJc0lHWnBjbk4wT2lCMGNuVmxJSDBzWEc1Y2RGeDBYQ0lnWENJNklIc2daR2x5T2lCY0luQmhjbVZ1ZEU1dlpHVmNJaUI5TEZ4dVhIUmNkRndpSzF3aU9pQjdJR1JwY2pvZ1hDSndjbVYyYVc5MWMxTnBZbXhwYm1kY0lpd2dabWx5YzNRNklIUnlkV1VnZlN4Y2JseDBYSFJjSW41Y0lqb2dleUJrYVhJNklGd2ljSEpsZG1sdmRYTlRhV0pzYVc1blhDSWdmVnh1WEhSOUxGeHVYRzVjZEhCeVpVWnBiSFJsY2pvZ2UxeHVYSFJjZEZ3aVFWUlVVbHdpT2lCbWRXNWpkR2x2YmlnZ2JXRjBZMmdnS1NCN1hHNWNkRngwWEhSdFlYUmphRnN4WFNBOUlHMWhkR05vV3pGZExuSmxjR3hoWTJVb0lISjFibVZ6WTJGd1pTd2dablZ1WlhOallYQmxJQ2s3WEc1Y2JseDBYSFJjZEM4dklFMXZkbVVnZEdobElHZHBkbVZ1SUhaaGJIVmxJSFJ2SUcxaGRHTm9Xek5kSUhkb1pYUm9aWElnY1hWdmRHVmtJRzl5SUhWdWNYVnZkR1ZrWEc1Y2RGeDBYSFJ0WVhSamFGc3pYU0E5SUNnZ2JXRjBZMmhiTTEwZ2ZId2diV0YwWTJoYk5GMGdmSHdnYldGMFkyaGJOVjBnZkh3Z1hDSmNJaUFwTG5KbGNHeGhZMlVvSUhKMWJtVnpZMkZ3WlN3Z1puVnVaWE5qWVhCbElDazdYRzVjYmx4MFhIUmNkR2xtSUNnZ2JXRjBZMmhiTWwwZ1BUMDlJRndpZmoxY0lpQXBJSHRjYmx4MFhIUmNkRngwYldGMFkyaGJNMTBnUFNCY0lpQmNJaUFySUcxaGRHTm9Xek5kSUNzZ1hDSWdYQ0k3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEhKbGRIVnliaUJ0WVhSamFDNXpiR2xqWlNnZ01Dd2dOQ0FwTzF4dVhIUmNkSDBzWEc1Y2JseDBYSFJjSWtOSVNVeEVYQ0k2SUdaMWJtTjBhVzl1S0NCdFlYUmphQ0FwSUh0Y2JseDBYSFJjZEM4cUlHMWhkR05vWlhNZ1puSnZiU0J0WVhSamFFVjRjSEpiWENKRFNFbE1SRndpWFZ4dVhIUmNkRngwWEhReElIUjVjR1VnS0c5dWJIbDhiblJvZkM0dUxpbGNibHgwWEhSY2RGeDBNaUIzYUdGMElDaGphR2xzWkh4dlppMTBlWEJsS1Z4dVhIUmNkRngwWEhReklHRnlaM1Z0Wlc1MElDaGxkbVZ1Zkc5a1pIeGNYR1FxZkZ4Y1pDcHVLRnNyTFYxY1hHUXJLVDk4TGk0dUtWeHVYSFJjZEZ4MFhIUTBJSGh1TFdOdmJYQnZibVZ1ZENCdlppQjRiaXQ1SUdGeVozVnRaVzUwSUNoYkt5MWRQMXhjWkNwdWZDbGNibHgwWEhSY2RGeDBOU0J6YVdkdUlHOW1JSGh1TFdOdmJYQnZibVZ1ZEZ4dVhIUmNkRngwWEhRMklIZ2diMllnZUc0dFkyOXRjRzl1Wlc1MFhHNWNkRngwWEhSY2REY2djMmxuYmlCdlppQjVMV052YlhCdmJtVnVkRnh1WEhSY2RGeDBYSFE0SUhrZ2IyWWdlUzFqYjIxd2IyNWxiblJjYmx4MFhIUmNkQ292WEc1Y2RGeDBYSFJ0WVhSamFGc3hYU0E5SUcxaGRHTm9XekZkTG5SdlRHOTNaWEpEWVhObEtDazdYRzVjYmx4MFhIUmNkR2xtSUNnZ2JXRjBZMmhiTVYwdWMyeHBZMlVvSURBc0lETWdLU0E5UFQwZ1hDSnVkR2hjSWlBcElIdGNibHgwWEhSY2RGeDBMeThnYm5Sb0xTb2djbVZ4ZFdseVpYTWdZWEpuZFcxbGJuUmNibHgwWEhSY2RGeDBhV1lnS0NBaGJXRjBZMmhiTTEwZ0tTQjdYRzVjZEZ4MFhIUmNkRngwVTJsNmVteGxMbVZ5Y205eUtDQnRZWFJqYUZzd1hTQXBPMXh1WEhSY2RGeDBYSFI5WEc1Y2JseDBYSFJjZEZ4MEx5OGdiblZ0WlhKcFl5QjRJR0Z1WkNCNUlIQmhjbUZ0WlhSbGNuTWdabTl5SUVWNGNISXVabWxzZEdWeUxrTklTVXhFWEc1Y2RGeDBYSFJjZEM4dklISmxiV1Z0WW1WeUlIUm9ZWFFnWm1Gc2MyVXZkSEoxWlNCallYTjBJSEpsYzNCbFkzUnBkbVZzZVNCMGJ5QXdMekZjYmx4MFhIUmNkRngwYldGMFkyaGJORjBnUFNBcktDQnRZWFJqYUZzMFhTQS9JRzFoZEdOb1d6VmRJQ3NnS0cxaGRHTm9XelpkSUh4OElERXBJRG9nTWlBcUlDZ2diV0YwWTJoYk0xMGdQVDA5SUZ3aVpYWmxibHdpSUh4OElHMWhkR05vV3pOZElEMDlQU0JjSW05a1pGd2lJQ2tnS1R0Y2JseDBYSFJjZEZ4MGJXRjBZMmhiTlYwZ1BTQXJLQ0FvSUcxaGRHTm9XemRkSUNzZ2JXRjBZMmhiT0YwZ0tTQjhmQ0J0WVhSamFGc3pYU0E5UFQwZ1hDSnZaR1JjSWlBcE8xeHVYRzVjZEZ4MFhIUXZMeUJ2ZEdobGNpQjBlWEJsY3lCd2NtOW9hV0pwZENCaGNtZDFiV1Z1ZEhOY2JseDBYSFJjZEgwZ1pXeHpaU0JwWmlBb0lHMWhkR05vV3pOZElDa2dlMXh1WEhSY2RGeDBYSFJUYVhwNmJHVXVaWEp5YjNJb0lHMWhkR05vV3pCZElDazdYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkSEpsZEhWeWJpQnRZWFJqYUR0Y2JseDBYSFI5TEZ4dVhHNWNkRngwWENKUVUwVlZSRTljSWpvZ1puVnVZM1JwYjI0b0lHMWhkR05vSUNrZ2UxeHVYSFJjZEZ4MGRtRnlJR1Y0WTJWemN5eGNibHgwWEhSY2RGeDBkVzV4ZFc5MFpXUWdQU0FoYldGMFkyaGJObDBnSmlZZ2JXRjBZMmhiTWwwN1hHNWNibHgwWEhSY2RHbG1JQ2dnYldGMFkyaEZlSEJ5VzF3aVEwaEpURVJjSWwwdWRHVnpkQ2dnYldGMFkyaGJNRjBnS1NBcElIdGNibHgwWEhSY2RGeDBjbVYwZFhKdUlHNTFiR3c3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEM4dklFRmpZMlZ3ZENCeGRXOTBaV1FnWVhKbmRXMWxiblJ6SUdGekxXbHpYRzVjZEZ4MFhIUnBaaUFvSUcxaGRHTm9Xek5kSUNrZ2UxeHVYSFJjZEZ4MFhIUnRZWFJqYUZzeVhTQTlJRzFoZEdOb1d6UmRJSHg4SUcxaGRHTm9XelZkSUh4OElGd2lYQ0k3WEc1Y2JseDBYSFJjZEM4dklGTjBjbWx3SUdWNFkyVnpjeUJqYUdGeVlXTjBaWEp6SUdaeWIyMGdkVzV4ZFc5MFpXUWdZWEpuZFcxbGJuUnpYRzVjZEZ4MFhIUjlJR1ZzYzJVZ2FXWWdLQ0IxYm5GMWIzUmxaQ0FtSmlCeWNITmxkV1J2TG5SbGMzUW9JSFZ1Y1hWdmRHVmtJQ2tnSmlaY2JseDBYSFJjZEZ4MEx5OGdSMlYwSUdWNFkyVnpjeUJtY205dElIUnZhMlZ1YVhwbElDaHlaV04xY25OcGRtVnNlU2xjYmx4MFhIUmNkRngwS0dWNFkyVnpjeUE5SUhSdmEyVnVhWHBsS0NCMWJuRjFiM1JsWkN3Z2RISjFaU0FwS1NBbUpseHVYSFJjZEZ4MFhIUXZMeUJoWkhaaGJtTmxJSFJ2SUhSb1pTQnVaWGgwSUdOc2IzTnBibWNnY0dGeVpXNTBhR1Z6YVhOY2JseDBYSFJjZEZ4MEtHVjRZMlZ6Y3lBOUlIVnVjWFZ2ZEdWa0xtbHVaR1Y0VDJZb0lGd2lLVndpTENCMWJuRjFiM1JsWkM1c1pXNW5kR2dnTFNCbGVHTmxjM01nS1NBdElIVnVjWFZ2ZEdWa0xteGxibWQwYUNrZ0tTQjdYRzVjYmx4MFhIUmNkRngwTHk4Z1pYaGpaWE56SUdseklHRWdibVZuWVhScGRtVWdhVzVrWlhoY2JseDBYSFJjZEZ4MGJXRjBZMmhiTUYwZ1BTQnRZWFJqYUZzd1hTNXpiR2xqWlNnZ01Dd2daWGhqWlhOeklDazdYRzVjZEZ4MFhIUmNkRzFoZEdOb1d6SmRJRDBnZFc1eGRXOTBaV1F1YzJ4cFkyVW9JREFzSUdWNFkyVnpjeUFwTzF4dVhIUmNkRngwZlZ4dVhHNWNkRngwWEhRdkx5QlNaWFIxY200Z2IyNXNlU0JqWVhCMGRYSmxjeUJ1WldWa1pXUWdZbmtnZEdobElIQnpaWFZrYnlCbWFXeDBaWElnYldWMGFHOWtJQ2gwZVhCbElHRnVaQ0JoY21kMWJXVnVkQ2xjYmx4MFhIUmNkSEpsZEhWeWJpQnRZWFJqYUM1emJHbGpaU2dnTUN3Z015QXBPMXh1WEhSY2RIMWNibHgwZlN4Y2JseHVYSFJtYVd4MFpYSTZJSHRjYmx4dVhIUmNkRndpVkVGSFhDSTZJR1oxYm1OMGFXOXVLQ0J1YjJSbFRtRnRaVk5sYkdWamRHOXlJQ2tnZTF4dVhIUmNkRngwZG1GeUlHNXZaR1ZPWVcxbElEMGdibTlrWlU1aGJXVlRaV3hsWTNSdmNpNXlaWEJzWVdObEtDQnlkVzVsYzJOaGNHVXNJR1oxYm1WelkyRndaU0FwTG5SdlRHOTNaWEpEWVhObEtDazdYRzVjZEZ4MFhIUnlaWFIxY200Z2JtOWtaVTVoYldWVFpXeGxZM1J2Y2lBOVBUMGdYQ0lxWENJZ1AxeHVYSFJjZEZ4MFhIUm1kVzVqZEdsdmJpZ3BJSHNnY21WMGRYSnVJSFJ5ZFdVN0lIMGdPbHh1WEhSY2RGeDBYSFJtZFc1amRHbHZiaWdnWld4bGJTQXBJSHRjYmx4MFhIUmNkRngwWEhSeVpYUjFjbTRnWld4bGJTNXViMlJsVG1GdFpTQW1KaUJsYkdWdExtNXZaR1ZPWVcxbExuUnZURzkzWlhKRFlYTmxLQ2tnUFQwOUlHNXZaR1ZPWVcxbE8xeHVYSFJjZEZ4MFhIUjlPMXh1WEhSY2RIMHNYRzVjYmx4MFhIUmNJa05NUVZOVFhDSTZJR1oxYm1OMGFXOXVLQ0JqYkdGemMwNWhiV1VnS1NCN1hHNWNkRngwWEhSMllYSWdjR0YwZEdWeWJpQTlJR05zWVhOelEyRmphR1ZiSUdOc1lYTnpUbUZ0WlNBcklGd2lJRndpSUYwN1hHNWNibHgwWEhSY2RISmxkSFZ5YmlCd1lYUjBaWEp1SUh4OFhHNWNkRngwWEhSY2RDaHdZWFIwWlhKdUlEMGdibVYzSUZKbFowVjRjQ2dnWENJb1hueGNJaUFySUhkb2FYUmxjM0JoWTJVZ0t5QmNJaWxjSWlBcklHTnNZWE56VG1GdFpTQXJJRndpS0Z3aUlDc2dkMmhwZEdWemNHRmpaU0FySUZ3aWZDUXBYQ0lnS1NrZ0ppWmNibHgwWEhSY2RGeDBZMnhoYzNORFlXTm9aU2dnWTJ4aGMzTk9ZVzFsTENCbWRXNWpkR2x2YmlnZ1pXeGxiU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUnlaWFIxY200Z2NHRjBkR1Z5Ymk1MFpYTjBLQ0IwZVhCbGIyWWdaV3hsYlM1amJHRnpjMDVoYldVZ1BUMDlJRndpYzNSeWFXNW5YQ0lnSmlZZ1pXeGxiUzVqYkdGemMwNWhiV1VnZkh3Z2RIbHdaVzltSUdWc1pXMHVaMlYwUVhSMGNtbGlkWFJsSUNFOVBTQmNJblZ1WkdWbWFXNWxaRndpSUNZbUlHVnNaVzB1WjJWMFFYUjBjbWxpZFhSbEtGd2lZMnhoYzNOY0lpa2dmSHdnWENKY0lpQXBPMXh1WEhSY2RGeDBYSFI5S1R0Y2JseDBYSFI5TEZ4dVhHNWNkRngwWENKQlZGUlNYQ0k2SUdaMWJtTjBhVzl1S0NCdVlXMWxMQ0J2Y0dWeVlYUnZjaXdnWTJobFkyc2dLU0I3WEc1Y2RGeDBYSFJ5WlhSMWNtNGdablZ1WTNScGIyNG9JR1ZzWlcwZ0tTQjdYRzVjZEZ4MFhIUmNkSFpoY2lCeVpYTjFiSFFnUFNCVGFYcDZiR1V1WVhSMGNpZ2daV3hsYlN3Z2JtRnRaU0FwTzF4dVhHNWNkRngwWEhSY2RHbG1JQ2dnY21WemRXeDBJRDA5SUc1MWJHd2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MGNtVjBkWEp1SUc5d1pYSmhkRzl5SUQwOVBTQmNJaUU5WENJN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBhV1lnS0NBaGIzQmxjbUYwYjNJZ0tTQjdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJSFJ5ZFdVN1hHNWNkRngwWEhSY2RIMWNibHh1WEhSY2RGeDBYSFJ5WlhOMWJIUWdLejBnWENKY0lqdGNibHh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdiM0JsY21GMGIzSWdQVDA5SUZ3aVBWd2lJRDhnY21WemRXeDBJRDA5UFNCamFHVmpheUE2WEc1Y2RGeDBYSFJjZEZ4MGIzQmxjbUYwYjNJZ1BUMDlJRndpSVQxY0lpQS9JSEpsYzNWc2RDQWhQVDBnWTJobFkyc2dPbHh1WEhSY2RGeDBYSFJjZEc5d1pYSmhkRzl5SUQwOVBTQmNJbDQ5WENJZ1B5QmphR1ZqYXlBbUppQnlaWE4xYkhRdWFXNWtaWGhQWmlnZ1kyaGxZMnNnS1NBOVBUMGdNQ0E2WEc1Y2RGeDBYSFJjZEZ4MGIzQmxjbUYwYjNJZ1BUMDlJRndpS2oxY0lpQS9JR05vWldOcklDWW1JSEpsYzNWc2RDNXBibVJsZUU5bUtDQmphR1ZqYXlBcElENGdMVEVnT2x4dVhIUmNkRngwWEhSY2RHOXdaWEpoZEc5eUlEMDlQU0JjSWlROVhDSWdQeUJqYUdWamF5QW1KaUJ5WlhOMWJIUXVjMnhwWTJVb0lDMWphR1ZqYXk1c1pXNW5kR2dnS1NBOVBUMGdZMmhsWTJzZ09seHVYSFJjZEZ4MFhIUmNkRzl3WlhKaGRHOXlJRDA5UFNCY0luNDlYQ0lnUHlBb0lGd2lJRndpSUNzZ2NtVnpkV3gwTG5KbGNHeGhZMlVvSUhKM2FHbDBaWE53WVdObExDQmNJaUJjSWlBcElDc2dYQ0lnWENJZ0tTNXBibVJsZUU5bUtDQmphR1ZqYXlBcElENGdMVEVnT2x4dVhIUmNkRngwWEhSY2RHOXdaWEpoZEc5eUlEMDlQU0JjSW53OVhDSWdQeUJ5WlhOMWJIUWdQVDA5SUdOb1pXTnJJSHg4SUhKbGMzVnNkQzV6YkdsalpTZ2dNQ3dnWTJobFkyc3ViR1Z1WjNSb0lDc2dNU0FwSUQwOVBTQmphR1ZqYXlBcklGd2lMVndpSURwY2JseDBYSFJjZEZ4MFhIUm1ZV3h6WlR0Y2JseDBYSFJjZEgwN1hHNWNkRngwZlN4Y2JseHVYSFJjZEZ3aVEwaEpURVJjSWpvZ1puVnVZM1JwYjI0b0lIUjVjR1VzSUhkb1lYUXNJR0Z5WjNWdFpXNTBMQ0JtYVhKemRDd2diR0Z6ZENBcElIdGNibHgwWEhSY2RIWmhjaUJ6YVcxd2JHVWdQU0IwZVhCbExuTnNhV05sS0NBd0xDQXpJQ2tnSVQwOUlGd2liblJvWENJc1hHNWNkRngwWEhSY2RHWnZjbmRoY21RZ1BTQjBlWEJsTG5Oc2FXTmxLQ0F0TkNBcElDRTlQU0JjSW14aGMzUmNJaXhjYmx4MFhIUmNkRngwYjJaVWVYQmxJRDBnZDJoaGRDQTlQVDBnWENKdlppMTBlWEJsWENJN1hHNWNibHgwWEhSY2RISmxkSFZ5YmlCbWFYSnpkQ0E5UFQwZ01TQW1KaUJzWVhOMElEMDlQU0F3SUQ5Y2JseHVYSFJjZEZ4MFhIUXZMeUJUYUc5eWRHTjFkQ0JtYjNJZ09tNTBhQzBxS0c0cFhHNWNkRngwWEhSY2RHWjFibU4wYVc5dUtDQmxiR1Z0SUNrZ2UxeHVYSFJjZEZ4MFhIUmNkSEpsZEhWeWJpQWhJV1ZzWlcwdWNHRnlaVzUwVG05a1pUdGNibHgwWEhSY2RGeDBmU0E2WEc1Y2JseDBYSFJjZEZ4MFpuVnVZM1JwYjI0b0lHVnNaVzBzSUdOdmJuUmxlSFFzSUhodGJDQXBJSHRjYmx4MFhIUmNkRngwWEhSMllYSWdZMkZqYUdVc0lHOTFkR1Z5UTJGamFHVXNJRzV2WkdVc0lHUnBabVlzSUc1dlpHVkpibVJsZUN3Z2MzUmhjblFzWEc1Y2RGeDBYSFJjZEZ4MFhIUmthWElnUFNCemFXMXdiR1VnSVQwOUlHWnZjbmRoY21RZ1B5QmNJbTVsZUhSVGFXSnNhVzVuWENJZ09pQmNJbkJ5WlhacGIzVnpVMmxpYkdsdVoxd2lMRnh1WEhSY2RGeDBYSFJjZEZ4MGNHRnlaVzUwSUQwZ1pXeGxiUzV3WVhKbGJuUk9iMlJsTEZ4dVhIUmNkRngwWEhSY2RGeDBibUZ0WlNBOUlHOW1WSGx3WlNBbUppQmxiR1Z0TG01dlpHVk9ZVzFsTG5SdlRHOTNaWEpEWVhObEtDa3NYRzVjZEZ4MFhIUmNkRngwWEhSMWMyVkRZV05vWlNBOUlDRjRiV3dnSmlZZ0lXOW1WSGx3WlR0Y2JseHVYSFJjZEZ4MFhIUmNkR2xtSUNnZ2NHRnlaVzUwSUNrZ2UxeHVYRzVjZEZ4MFhIUmNkRngwWEhRdkx5QTZLR1pwY25OMGZHeGhjM1I4YjI1c2VTa3RLR05vYVd4a2ZHOW1MWFI1Y0dVcFhHNWNkRngwWEhSY2RGeDBYSFJwWmlBb0lITnBiWEJzWlNBcElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MGQyaH
14938BiR1VnS0NCa2FYSWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkRngwYm05a1pTQTlJR1ZzWlcwN1hHNWNkRngwWEhSY2RGeDBYSFJjZEZ4MGQyaHBiR1VnS0NBb2JtOWtaU0E5SUc1dlpHVmJJR1JwY2lCZEtTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBYSFJjZEdsbUlDZ2diMlpVZVhCbElEOGdibTlrWlM1dWIyUmxUbUZ0WlM1MGIweHZkMlZ5UTJGelpTZ3BJRDA5UFNCdVlXMWxJRG9nYm05a1pTNXViMlJsVkhsd1pTQTlQVDBnTVNBcElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUmNkRngwY21WMGRYSnVJR1poYkhObE8xeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwWEhSY2RGeDBYSFF2THlCU1pYWmxjbk5sSUdScGNtVmpkR2x2YmlCbWIzSWdPbTl1YkhrdEtpQW9hV1lnZDJVZ2FHRjJaVzRuZENCNVpYUWdaRzl1WlNCemJ5bGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUnpkR0Z5ZENBOUlHUnBjaUE5SUhSNWNHVWdQVDA5SUZ3aWIyNXNlVndpSUNZbUlDRnpkR0Z5ZENBbUppQmNJbTVsZUhSVGFXSnNhVzVuWENJN1hHNWNkRngwWEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MFhIUmNkRngwY21WMGRYSnVJSFJ5ZFdVN1hHNWNkRngwWEhSY2RGeDBYSFI5WEc1Y2JseDBYSFJjZEZ4MFhIUmNkSE4wWVhKMElEMGdXeUJtYjNKM1lYSmtJRDhnY0dGeVpXNTBMbVpwY25OMFEyaHBiR1FnT2lCd1lYSmxiblF1YkdGemRFTm9hV3hrSUYwN1hHNWNibHgwWEhSY2RGeDBYSFJjZEM4dklHNXZiaTE0Yld3Z09tNTBhQzFqYUdsc1pDZ3VMaTRwSUhOMGIzSmxjeUJqWVdOb1pTQmtZWFJoSUc5dUlHQndZWEpsYm5SZ1hHNWNkRngwWEhSY2RGeDBYSFJwWmlBb0lHWnZjbmRoY21RZ0ppWWdkWE5sUTJGamFHVWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkQzh2SUZObFpXc2dZR1ZzWlcxZ0lHWnliMjBnWVNCd2NtVjJhVzkxYzJ4NUxXTmhZMmhsWkNCcGJtUmxlRnh1WEhSY2RGeDBYSFJjZEZ4MFhIUnZkWFJsY2tOaFkyaGxJRDBnY0dGeVpXNTBXeUJsZUhCaGJtUnZJRjBnZkh3Z0tIQmhjbVZ1ZEZzZ1pYaHdZVzVrYnlCZElEMGdlMzBwTzF4dVhIUmNkRngwWEhSY2RGeDBYSFJqWVdOb1pTQTlJRzkxZEdWeVEyRmphR1ZiSUhSNWNHVWdYU0I4ZkNCYlhUdGNibHgwWEhSY2RGeDBYSFJjZEZ4MGJtOWtaVWx1WkdWNElEMGdZMkZqYUdWYk1GMGdQVDA5SUdScGNuSjFibk1nSmlZZ1kyRmphR1ZiTVYwN1hHNWNkRngwWEhSY2RGeDBYSFJjZEdScFptWWdQU0JqWVdOb1pWc3dYU0E5UFQwZ1pHbHljblZ1Y3lBbUppQmpZV05vWlZzeVhUdGNibHgwWEhSY2RGeDBYSFJjZEZ4MGJtOWtaU0E5SUc1dlpHVkpibVJsZUNBbUppQndZWEpsYm5RdVkyaHBiR1JPYjJSbGMxc2dibTlrWlVsdVpHVjRJRjA3WEc1Y2JseDBYSFJjZEZ4MFhIUmNkRngwZDJocGJHVWdLQ0FvYm05a1pTQTlJQ3NyYm05a1pVbHVaR1Y0SUNZbUlHNXZaR1VnSmlZZ2JtOWtaVnNnWkdseUlGMGdmSHhjYmx4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEM4dklFWmhiR3hpWVdOcklIUnZJSE5sWld0cGJtY2dZR1ZzWlcxZ0lHWnliMjBnZEdobElITjBZWEowWEc1Y2RGeDBYSFJjZEZ4MFhIUmNkRngwS0dScFptWWdQU0J1YjJSbFNXNWtaWGdnUFNBd0tTQjhmQ0J6ZEdGeWRDNXdiM0FvS1NrZ0tTQjdYRzVjYmx4MFhIUmNkRngwWEhSY2RGeDBYSFF2THlCWGFHVnVJR1p2ZFc1a0xDQmpZV05vWlNCcGJtUmxlR1Z6SUc5dUlHQndZWEpsYm5SZ0lHRnVaQ0JpY21WaGExeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RHbG1JQ2dnYm05a1pTNXViMlJsVkhsd1pTQTlQVDBnTVNBbUppQXJLMlJwWm1ZZ0ppWWdibTlrWlNBOVBUMGdaV3hsYlNBcElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUmNkRzkxZEdWeVEyRmphR1ZiSUhSNWNHVWdYU0E5SUZzZ1pHbHljblZ1Y3l3Z2JtOWtaVWx1WkdWNExDQmthV1ptSUYwN1hHNWNkRngwWEhSY2RGeDBYSFJjZEZ4MFhIUmljbVZoYXp0Y2JseDBYSFJjZEZ4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RGeDBYSFJjZEgxY2JseHVYSFJjZEZ4MFhIUmNkRngwTHk4Z1ZYTmxJSEJ5WlhacGIzVnpiSGt0WTJGamFHVmtJR1ZzWlcxbGJuUWdhVzVrWlhnZ2FXWWdZWFpoYVd4aFlteGxYRzVjZEZ4MFhIUmNkRngwWEhSOUlHVnNjMlVnYVdZZ0tDQjFjMlZEWVdOb1pTQW1KaUFvWTJGamFHVWdQU0FvWld4bGJWc2daWGh3WVc1a2J5QmRJSHg4SUNobGJHVnRXeUJsZUhCaGJtUnZJRjBnUFNCN2ZTa3BXeUIwZVhCbElGMHBJQ1ltSUdOaFkyaGxXekJkSUQwOVBTQmthWEp5ZFc1eklDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUmthV1ptSUQwZ1kyRmphR1ZiTVYwN1hHNWNibHgwWEhSY2RGeDBYSFJjZEM4dklIaHRiQ0E2Ym5Sb0xXTm9hV3hrS0M0dUxpa2diM0lnT201MGFDMXNZWE4wTFdOb2FXeGtLQzR1TGlrZ2IzSWdPbTUwYUNndGJHRnpkQ2svTFc5bUxYUjVjR1VvTGk0dUtWeHVYSFJjZEZ4MFhIUmNkRngwZlNCbGJITmxJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBMeThnVlhObElIUm9aU0J6WVcxbElHeHZiM0FnWVhNZ1lXSnZkbVVnZEc4Z2MyVmxheUJnWld4bGJXQWdabkp2YlNCMGFHVWdjM1JoY25SY2JseDBYSFJjZEZ4MFhIUmNkRngwZDJocGJHVWdLQ0FvYm05a1pTQTlJQ3NyYm05a1pVbHVaR1Y0SUNZbUlHNXZaR1VnSmlZZ2JtOWtaVnNnWkdseUlGMGdmSHhjYmx4MFhIUmNkRngwWEhSY2RGeDBYSFFvWkdsbVppQTlJRzV2WkdWSmJtUmxlQ0E5SURBcElIeDhJSE4wWVhKMExuQnZjQ2dwS1NBcElIdGNibHh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkR2xtSUNnZ0tDQnZabFI1Y0dVZ1B5QnViMlJsTG01dlpHVk9ZVzFsTG5SdlRHOTNaWEpEWVhObEtDa2dQVDA5SUc1aGJXVWdPaUJ1YjJSbExtNXZaR1ZVZVhCbElEMDlQU0F4SUNrZ0ppWWdLeXRrYVdabUlDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkRngwTHk4Z1EyRmphR1VnZEdobElHbHVaR1Y0SUc5bUlHVmhZMmdnWlc1amIzVnVkR1Z5WldRZ1pXeGxiV1Z1ZEZ4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEZ4MGFXWWdLQ0IxYzJWRFlXTm9aU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmNkRngwWEhSY2RGeDBLRzV2WkdWYklHVjRjR0Z1Wkc4Z1hTQjhmQ0FvYm05a1pWc2daWGh3WVc1a2J5QmRJRDBnZTMwcEtWc2dkSGx3WlNCZElEMGdXeUJrYVhKeWRXNXpMQ0JrYVdabUlGMDdYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBYSFI5WEc1Y2JseDBYSFJjZEZ4MFhIUmNkRngwWEhSY2RHbG1JQ2dnYm05a1pTQTlQVDBnWld4bGJTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBYSFJjZEZ4MFluSmxZV3M3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RGeDBYSFI5WEc1Y2JseDBYSFJjZEZ4MFhIUmNkQzh2SUVsdVkyOXljRzl5WVhSbElIUm9aU0J2Wm1aelpYUXNJSFJvWlc0Z1kyaGxZMnNnWVdkaGFXNXpkQ0JqZVdOc1pTQnphWHBsWEc1Y2RGeDBYSFJjZEZ4MFhIUmthV1ptSUMwOUlHeGhjM1E3WEc1Y2RGeDBYSFJjZEZ4MFhIUnlaWFIxY200Z1pHbG1aaUE5UFQwZ1ptbHljM1FnZkh3Z0tDQmthV1ptSUNVZ1ptbHljM1FnUFQwOUlEQWdKaVlnWkdsbVppQXZJR1pwY25OMElENDlJREFnS1R0Y2JseDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkSDA3WEc1Y2RGeDBmU3hjYmx4dVhIUmNkRndpVUZORlZVUlBYQ0k2SUdaMWJtTjBhVzl1S0NCd2MyVjFaRzhzSUdGeVozVnRaVzUwSUNrZ2UxeHVYSFJjZEZ4MEx5OGdjSE5sZFdSdkxXTnNZWE56SUc1aGJXVnpJR0Z5WlNCallYTmxMV2x1YzJWdWMybDBhWFpsWEc1Y2RGeDBYSFF2THlCb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk5VVVpOXpaV3hsWTNSdmNuTXZJM0J6WlhWa2J5MWpiR0Z6YzJWelhHNWNkRngwWEhRdkx5QlFjbWx2Y21sMGFYcGxJR0o1SUdOaGMyVWdjMlZ1YzJsMGFYWnBkSGtnYVc0Z1kyRnpaU0JqZFhOMGIyMGdjSE5sZFdSdmN5QmhjbVVnWVdSa1pXUWdkMmwwYUNCMWNIQmxjbU5oYzJVZ2JHVjBkR1Z5YzF4dVhIUmNkRngwTHk4Z1VtVnRaVzFpWlhJZ2RHaGhkQ0J6WlhSR2FXeDBaWEp6SUdsdWFHVnlhWFJ6SUdaeWIyMGdjSE5sZFdSdmMxeHVYSFJjZEZ4MGRtRnlJR0Z5WjNNc1hHNWNkRngwWEhSY2RHWnVJRDBnUlhod2NpNXdjMlYxWkc5eld5QndjMlYxWkc4Z1hTQjhmQ0JGZU
14938hCeUxuTmxkRVpwYkhSbGNuTmJJSEJ6WlhWa2J5NTBiMHh2ZDJWeVEyRnpaU2dwSUYwZ2ZIeGNibHgwWEhSY2RGeDBYSFJUYVhwNmJHVXVaWEp5YjNJb0lGd2lkVzV6ZFhCd2IzSjBaV1FnY0hObGRXUnZPaUJjSWlBcklIQnpaWFZrYnlBcE8xeHVYRzVjZEZ4MFhIUXZMeUJVYUdVZ2RYTmxjaUJ0WVhrZ2RYTmxJR055WldGMFpWQnpaWFZrYnlCMGJ5QnBibVJwWTJGMFpTQjBhR0YwWEc1Y2RGeDBYSFF2THlCaGNtZDFiV1Z1ZEhNZ1lYSmxJRzVsWldSbFpDQjBieUJqY21WaGRHVWdkR2hsSUdacGJIUmxjaUJtZFc1amRHbHZibHh1WEhSY2RGeDBMeThnYW5WemRDQmhjeUJUYVhwNmJHVWdaRzlsYzF4dVhIUmNkRngwYVdZZ0tDQm1ibHNnWlhod1lXNWtieUJkSUNrZ2UxeHVYSFJjZEZ4MFhIUnlaWFIxY200Z1ptNG9JR0Z5WjNWdFpXNTBJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEM4dklFSjFkQ0J0WVdsdWRHRnBiaUJ6ZFhCd2IzSjBJR1p2Y2lCdmJHUWdjMmxuYm1GMGRYSmxjMXh1WEhSY2RGeDBhV1lnS0NCbWJpNXNaVzVuZEdnZ1BpQXhJQ2tnZTF4dVhIUmNkRngwWEhSaGNtZHpJRDBnV3lCd2MyVjFaRzhzSUhCelpYVmtieXdnWENKY0lpd2dZWEpuZFcxbGJuUWdYVHRjYmx4MFhIUmNkRngwY21WMGRYSnVJRVY0Y0hJdWMyVjBSbWxzZEdWeWN5NW9ZWE5QZDI1UWNtOXdaWEowZVNnZ2NITmxkV1J2TG5SdlRHOTNaWEpEWVhObEtDa2dLU0EvWEc1Y2RGeDBYSFJjZEZ4MGJXRnlhMFoxYm1OMGFXOXVLR1oxYm1OMGFXOXVLQ0J6WldWa0xDQnRZWFJqYUdWeklDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MGRtRnlJR2xrZUN4Y2JseDBYSFJjZEZ4MFhIUmNkRngwYldGMFkyaGxaQ0E5SUdadUtDQnpaV1ZrTENCaGNtZDFiV1Z1ZENBcExGeHVYSFJjZEZ4MFhIUmNkRngwWEhScElEMGdiV0YwWTJobFpDNXNaVzVuZEdnN1hHNWNkRngwWEhSY2RGeDBYSFIzYUdsc1pTQW9JR2t0TFNBcElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MGFXUjRJRDBnYVc1a1pYaFBaaWdnYzJWbFpDd2diV0YwWTJobFpGdHBYU0FwTzF4dVhIUmNkRngwWEhSY2RGeDBYSFJ6WldWa1d5QnBaSGdnWFNBOUlDRW9JRzFoZEdOb1pYTmJJR2xrZUNCZElEMGdiV0YwWTJobFpGdHBYU0FwTzF4dVhIUmNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEgwcElEcGNibHgwWEhSY2RGeDBYSFJtZFc1amRHbHZiaWdnWld4bGJTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RISmxkSFZ5YmlCbWJpZ2daV3hsYlN3Z01Dd2dZWEpuY3lBcE8xeHVYSFJjZEZ4MFhIUmNkSDA3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEhKbGRIVnliaUJtYmp0Y2JseDBYSFI5WEc1Y2RIMHNYRzVjYmx4MGNITmxkV1J2Y3pvZ2UxeHVYSFJjZEM4dklGQnZkR1Z1ZEdsaGJHeDVJR052YlhCc1pYZ2djSE5sZFdSdmMxeHVYSFJjZEZ3aWJtOTBYQ0k2SUcxaGNtdEdkVzVqZEdsdmJpaG1kVzVqZEdsdmJpZ2djMlZzWldOMGIzSWdLU0I3WEc1Y2RGeDBYSFF2THlCVWNtbHRJSFJvWlNCelpXeGxZM1J2Y2lCd1lYTnpaV1FnZEc4Z1kyOXRjR2xzWlZ4dVhIUmNkRngwTHk4Z2RHOGdZWFp2YVdRZ2RISmxZWFJwYm1jZ2JHVmhaR2x1WnlCaGJtUWdkSEpoYVd4cGJtZGNibHgwWEhSY2RDOHZJSE53WVdObGN5QmhjeUJqYjIxaWFXNWhkRzl5YzF4dVhIUmNkRngwZG1GeUlHbHVjSFYwSUQwZ1cxMHNYRzVjZEZ4MFhIUmNkSEpsYzNWc2RITWdQU0JiWFN4Y2JseDBYSFJjZEZ4MGJXRjBZMmhsY2lBOUlHTnZiWEJwYkdVb0lITmxiR1ZqZEc5eUxuSmxjR3hoWTJVb0lISjBjbWx0TENCY0lpUXhYQ0lnS1NBcE8xeHVYRzVjZEZ4MFhIUnlaWFIxY200Z2JXRjBZMmhsY2xzZ1pYaHdZVzVrYnlCZElEOWNibHgwWEhSY2RGeDBiV0Z5YTBaMWJtTjBhVzl1S0daMWJtTjBhVzl1S0NCelpXVmtMQ0J0WVhSamFHVnpMQ0JqYjI1MFpYaDBMQ0I0Yld3Z0tTQjdYRzVjZEZ4MFhIUmNkRngwZG1GeUlHVnNaVzBzWEc1Y2RGeDBYSFJjZEZ4MFhIUjFibTFoZEdOb1pXUWdQU0J0WVhSamFHVnlLQ0J6WldWa0xDQnVkV3hzTENCNGJXd3NJRnRkSUNrc1hHNWNkRngwWEhSY2RGeDBYSFJwSUQwZ2MyVmxaQzVzWlc1bmRHZzdYRzVjYmx4MFhIUmNkRngwWEhRdkx5Qk5ZWFJqYUNCbGJHVnRaVzUwY3lCMWJtMWhkR05vWldRZ1lua2dZRzFoZEdOb1pYSmdYRzVjZEZ4MFhIUmNkRngwZDJocGJHVWdLQ0JwTFMwZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhScFppQW9JQ2hsYkdWdElEMGdkVzV0WVhSamFHVmtXMmxkS1NBcElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MGMyVmxaRnRwWFNBOUlDRW9iV0YwWTJobGMxdHBYU0E5SUdWc1pXMHBPMXh1WEhSY2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwZlNrZ09seHVYSFJjZEZ4MFhIUm1kVzVqZEdsdmJpZ2daV3hsYlN3Z1kyOXVkR1Y0ZEN3Z2VHMXNJQ2tnZTF4dVhIUmNkRngwWEhSY2RHbHVjSFYwV3pCZElEMGdaV3hsYlR0Y2JseDBYSFJjZEZ4MFhIUnRZWFJqYUdWeUtDQnBibkIxZEN3Z2JuVnNiQ3dnZUcxc0xDQnlaWE4xYkhSeklDazdYRzVjZEZ4MFhIUmNkRngwTHk4Z1JHOXVKM1FnYTJWbGNDQjBhR1VnWld4bGJXVnVkQ0FvYVhOemRXVWdJekk1T1NsY2JseDBYSFJjZEZ4MFhIUnBibkIxZEZzd1hTQTlJRzUxYkd3N1hHNWNkRngwWEhSY2RGeDBjbVYwZFhKdUlDRnlaWE4xYkhSekxuQnZjQ2dwTzF4dVhIUmNkRngwWEhSOU8xeHVYSFJjZEgwcExGeHVYRzVjZEZ4MFhDSm9ZWE5jSWpvZ2JXRnlhMFoxYm1OMGFXOXVLR1oxYm1OMGFXOXVLQ0J6Wld4bFkzUnZjaUFwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUJtZFc1amRHbHZiaWdnWld4bGJTQXBJSHRjYmx4MFhIUmNkRngwY21WMGRYSnVJRk5wZW5wc1pTZ2djMlZzWldOMGIzSXNJR1ZzWlcwZ0tTNXNaVzVuZEdnZ1BpQXdPMXh1WEhSY2RGeDBmVHRjYmx4MFhIUjlLU3hjYmx4dVhIUmNkRndpWTI5dWRHRnBibk5jSWpvZ2JXRnlhMFoxYm1OMGFXOXVLR1oxYm1OMGFXOXVLQ0IwWlho
14938MElDa2dlMXh1WEhSY2RGeDBkR1Y0ZENBOUlIUmxlSFF1Y21Wd2JHRmpaU2dnY25WdVpYTmpZWEJsTENCbWRXNWxjMk5oY0dVZ0tUdGNibHgwWEhSY2RISmxkSFZ5YmlCbWRXNWpkR2x2YmlnZ1pXeGxiU0FwSUh0Y2JseDBYSFJjZEZ4MGNtVjBkWEp1SUNnZ1pXeGxiUzUwWlhoMFEyOXVkR1Z1ZENCOGZDQmxiR1Z0TG1sdWJtVnlWR1Y0ZENCOGZDQm5aWFJVWlhoMEtDQmxiR1Z0SUNrZ0tTNXBibVJsZUU5bUtDQjBaWGgwSUNrZ1BpQXRNVHRjYmx4MFhIUmNkSDA3WEc1Y2RGeDBmU2tzWEc1Y2JseDBYSFF2THlCY0lsZG9aWFJvWlhJZ1lXNGdaV3hsYldWdWRDQnBjeUJ5WlhCeVpYTmxiblJsWkNCaWVTQmhJRHBzWVc1bktDa2djMlZzWldOMGIzSmNibHgwWEhRdkx5QnBjeUJpWVhObFpDQnpiMnhsYkhrZ2IyNGdkR2hsSUdWc1pXMWxiblFuY3lCc1lXNW5kV0ZuWlNCMllXeDFaVnh1WEhSY2RDOHZJR0psYVc1bklHVnhkV0ZzSUhSdklIUm9aU0JwWkdWdWRHbG1hV1Z5SUVNc1hHNWNkRngwTHk4Z2IzSWdZbVZuYVc1dWFXNW5JSGRwZEdnZ2RHaGxJR2xrWlc1MGFXWnBaWElnUXlCcGJXMWxaR2xoZEdWc2VTQm1iMnhzYjNkbFpDQmllU0JjSWkxY0lpNWNibHgwWEhRdkx5QlVhR1VnYldGMFkyaHBibWNnYjJZZ1F5QmhaMkZwYm5OMElIUm9aU0JsYkdWdFpXNTBKM01nYkdGdVozVmhaMlVnZG1Gc2RXVWdhWE1nY0dWeVptOXliV1ZrSUdOaGMyVXRhVzV6Wlc1emFYUnBkbVZzZVM1Y2JseDBYSFF2THlCVWFHVWdhV1JsYm5ScFptbGxjaUJESUdSdlpYTWdibTkwSUdoaGRtVWdkRzhnWW1VZ1lTQjJZV3hwWkNCc1lXNW5kV0ZuWlNCdVlXMWxMbHdpWEc1Y2RGeDBMeThnYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2VkZJdmMyVnNaV04wYjNKekx5TnNZVzVuTFhCelpYVmtiMXh1WEhSY2RGd2liR0Z1WjF3aU9pQnRZWEpyUm5WdVkzUnBiMjRvSUdaMWJtTjBhVzl1S0NCc1lXNW5JQ2tnZTF4dVhIUmNkRngwTHk4Z2JHRnVaeUIyWVd4MVpTQnRkWE4wSUdKbElHRWdkbUZzYVdRZ2FXUmxiblJwWm1sbGNseHVYSFJjZEZ4MGFXWWdLQ0FoY21sa1pXNTBhV1pwWlhJdWRHVnpkQ2hzWVc1bklIeDhJRndpWENJcElDa2dlMXh1WEhSY2RGeDBYSFJUYVhwNmJHVXVaWEp5YjNJb0lGd2lkVzV6ZFhCd2IzSjBaV1FnYkdGdVp6b2dYQ0lnS3lCc1lXNW5JQ2s3WEc1Y2RGeDBYSFI5WEc1Y2RGeDBYSFJzWVc1bklEMGdiR0Z1Wnk1eVpYQnNZV05sS0NCeWRXNWxjMk5oY0dVc0lHWjFibVZ6WTJGd1pTQXBMblJ2VEc5M1pYSkRZWE5sS0NrN1hHNWNkRngwWEhSeVpYUjFjbTRnWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RGeDBYSFJjZEhaaGNpQmxiR1Z0VEdGdVp6dGNibHgwWEhSY2RGeDBaRzhnZTF4dVhIUmNkRngwWEhSY2RHbG1JQ2dnS0dWc1pXMU1ZVzVuSUQwZ1pHOWpkVzFsYm5SSmMwaFVUVXdnUDF4dVhIUmNkRngwWEhSY2RGeDBaV3hsYlM1c1lXNW5JRHBjYmx4MFhIUmNkRngwWEhSY2RHVnNaVzB1WjJWMFFYUjBjbWxpZFhSbEtGd2llRzFzT214aGJtZGNJaWtnZkh3Z1pXeGxiUzVuWlhSQmRIUnlhV0oxZEdVb1hDSnNZVzVuWENJcEtTQXBJSHRjYmx4dVhIUmNkRngwWEhSY2RGeDBaV3hsYlV4aGJtY2dQU0JsYkdWdFRHRnVaeTUwYjB4dmQyVnlRMkZ6WlNncE8xeHVYSFJjZEZ4MFhIUmNkRngwY21WMGRYSnVJR1ZzWlcxTVlXNW5JRDA5UFNCc1lXNW5JSHg4SUdWc1pXMU1ZVzVuTG1sdVpHVjRUMllvSUd4aGJtY2dLeUJjSWkxY0lpQXBJRDA5UFNBd08xeHVYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwZlNCM2FHbHNaU0FvSUNobGJHVnRJRDBnWld4bGJTNXdZWEpsYm5ST2IyUmxLU0FtSmlCbGJHVnRMbTV2WkdWVWVYQmxJRDA5UFNBeElDazdYRzVjZEZ4MFhIUmNkSEpsZEhWeWJpQm1ZV3h6WlR0Y2JseDBYSFJjZEgwN1hHNWNkRngwZlNrc1hHNWNibHgwWEhRdkx5Qk5hWE5qWld4c1lXNWxiM1Z6WEc1Y2RGeDBYQ0owWVhKblpYUmNJam9nWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RGeDBYSFIyWVhJZ2FHRnphQ0E5SUhkcGJtUnZkeTVzYjJOaGRHbHZiaUFtSmlCM2FXNWtiM2N1Ykc5allYUnBiMjR1YUdGemFEdGNibHgwWEhSY2RISmxkSFZ5YmlCb1lYTm9JQ1ltSUdoaGMyZ3VjMnhwWTJVb0lERWdLU0E5UFQwZ1pXeGxiUzVwWkR0Y2JseDBYSFI5TEZ4dVhHNWNkRngwWENKeWIyOTBYQ0k2SUdaMWJtTjBhVzl1S0NCbGJHVnRJQ2tnZTF4dVhIUmNkRngwY21WMGRYSnVJR1ZzWlcwZ1BUMDlJR1J2WTBWc1pXMDdYRzVjZEZ4MGZTeGNibHh1WEhSY2RGd2labTlqZFhOY0lqb2dablZ1WTNScGIyNG9JR1ZzWlcwZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200Z1pXeGxiU0E5UFQwZ1pHOWpkVzFsYm5RdVlXTjBhWFpsUld4bGJXVnVkQ0FtSmlBb0lXUnZZM1Z0Wlc1MExtaGhjMFp2WTNWeklIeDhJR1J2WTNWdFpXNTBMbWhoYzBadlkzVnpLQ2twSUNZbUlDRWhLR1ZzWlcwdWRIbHdaU0I4ZkNCbGJHVnRMbWh5WldZZ2ZId2dmbVZzWlcwdWRHRmlTVzVrWlhncE8xeHVYSFJjZEgwc1hHNWNibHgwWEhRdkx5QkNiMjlzWldGdUlIQnliM0JsY25ScFpYTmNibHgwWEhSY0ltVnVZV0pzWldSY0lqb2dablZ1WTNScGIyNG9JR1ZzWlcwZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200Z1pXeGxiUzVrYVhOaFlteGxaQ0E5UFQwZ1ptRnNjMlU3WEc1Y2RGeDBmU3hjYmx4dVhIUmNkRndpWkdsellXSnNaV1JjSWpvZ1puVnVZM1JwYjI0b0lHVnNaVzBnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnWld4bGJTNWthWE5oWW14bFpDQTlQVDBnZEhKMVpUdGNibHgwWEhSOUxGeHVYRzVjZEZ4MFhDSmphR1ZqYTJWa1hDSTZJR1oxYm1OMGFXOXVLQ0JsYkdWdElDa2dlMXh1WEhSY2RGeDBMeThnU1c0Z1ExTlRNeXdnT21Ob1pXTnJaV1FnYzJodmRXeGtJSEpsZEhWeWJpQmliM1JvSUdOb1pXTnJaV1FnWVc1a0lITmxiR1ZqZEdWa0lHVnNaVzFsYm5SelhHNWNkRngwWEhRdkx5Qm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OVVVaTh5TURFeEwxSkZReTFqYzNNekxYTmxiR1ZqZEc5eWN5MHlNREV4TURreU9TOGpZMmhsWTJ0bFpGeHVYSFJjZEZ4MGRtRnlJRzV2WkdWT1lXMWxJRDBnWld4bGJTNXViMlJsVG1GdFpTNTBiMHh2ZDJWeVEyRnpaU2dwTzF4dVhIUmNkRngwY21WMGRYSnVJQ2h1YjJSbFRtRnRaU0E5UFQwZ1hDSnBibkIxZEZ3aUlDWW1JQ0VoWld4bGJTNWphR1ZqYTJWa0tTQjhmQ0FvYm05a1pVNWhiV1VnUFQwOUlGd2liM0IwYVc5dVhDSWdKaVlnSVNGbGJHVnRMbk5sYkdWamRHVmtLVHRjYmx4MFhIUjlMRnh1WEc1Y2RGeDBYQ0p6Wld4bFkzUmxaRndpT2lCbWRXNWpkR2x2YmlnZ1pXeGxiU0FwSUh0Y2JseDBYSFJjZEM4dklFRmpZMlZ6YzJsdVp5QjBhR2x6SUhCeWIzQmxjblI1SUcxaGEyVnpJSE5sYkdWamRHVmtMV0o1TFdSbFptRjFiSFJjYmx4MFhIUmNkQzh2SUc5d2RHbHZibk1nYVc0Z1UyRm1ZWEpwSUhkdmNtc2djSEp2Y0dWeWJIbGNibHgwWEhSY2RHbG1JQ2dnWld4bGJTNXdZWEpsYm5ST2IyUmxJQ2tnZTF4dVhIUmNkRngwWEhSbGJHVnRMbkJoY21WdWRFNXZaR1V1YzJWc1pXTjBaV1JKYm1SbGVEdGNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBjbVYwZFhKdUlHVnNaVzB1YzJWc1pXTjBaV1FnUFQwOUlIUnlkV1U3WEc1Y2RGeDBmU3hjYmx4dVhIUmNkQzh2SUVOdmJuUmxiblJ6WEc1Y2RGeDBYQ0psYlhCMGVWd2lPaUJtZFc1amRHbHZiaWdnWld4bGJTQXBJSHRjYmx4MFhIUmNkQzh2SUdoMGRIQTZMeTkzZDNjdWR6TXViM0puTDFSU0wzTmxiR1ZqZEc5eWN5OGpaVzF3ZEhrdGNITmxkV1J2WEc1Y2RGeDBYSFF2THlBNlpXMXdkSGtnYVhNZ2JtVm5ZWFJsWkNCaWVTQmxiR1Z0Wlc1MElDZ3hLU0J2Y2lCamIyNTBaVzUwSUc1dlpHVnpJQ2gwWlhoME9pQXpPeUJqWkdGMFlUb2dORHNnWlc1MGFYUjVJSEpsWmpvZ05Ta3NYRzVjZEZ4MFhIUXZMeUFnSUdKMWRDQnViM1FnWW5rZ2IzUm9aWEp6SUNoamIyMXRaVzUwT2lBNE95QndjbTlqWlhOemFXNW5JR2x1YzNSeWRXTjBhVzl1T2lBM095QmxkR011S1Z4dVhIUmNkRngwTHk4Z2JtOWtaVlI1Y0dVZ1BDQTJJSGR2Y210eklHSmxZMkYxYzJVZ1lYUjBjbWxpZFhSbGN5QW9NaWtnWkc4Z2JtOTBJR0Z3Y0dWaGNpQmhjeUJqYUdsc1pISmxibHh1WEhSY2RGeDBabTl5SUNnZ1pXeGxiU0E5SUdWc1pXMHVabWx5YzNSRGFHbHNaRHNnWld4bGJUc2daV3hsYlNBOUlHVnNaVzB1Ym1WNGRGTnBZbXhwYm1jZ0tTQjdYRzVjZEZ4MFhIUmNkR2xtSUNnZ1pXeGxiUzV1YjJSbFZIbHdaU0E4SURZZ0tTQjdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJR1poYkhObE8xeHVYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUjlYRzVjZEZ4MFhIUnlaWFIxY200Z2RISjFaVHRjYmx4MFhIUjlMRnh1WEc1Y2RGeDBYQ0p3WVhKbGJuUmNJam9nWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RGeDBYSFJ5WlhSMWNtNGdJVVY0Y0hJdWNITmxkV1J2YzF0Y0ltVnRjSFI1WENKZEtDQmxiR1Z0SUNrN1hHNWNkRngwZlN4Y2JseHVYSFJjZEM4dklFVnNaVzFsYm5RdmFXNXdkWFFnZEhsd1pYTmNibHgwWEhSY0ltaGxZV1JsY2x3aU9pQm1kVzVqZEdsdmJpZ2daV3hsYlNBcElIdGNibHgwWEhSY2RISmxkSFZ5YmlCeWFHVmhaR1Z5TG5SbGMzUW9JR1ZzWlcwdWJtOWtaVTVoYldVZ0tUdGNibHgwWEhSOUxGeHVYRzVjZEZ4MFhDSnBibkIxZEZ3aU9pQm1kVzVqZEdsdmJpZ2daV3hsYlNBcElIdGNibHgwWEhSY2RISmxkSFZ5YmlCeWFXNXdkWFJ6TG5SbGMzUW9JR1ZzWlcwdWJtOWtaVTVoYldVZ0tUdGNibHgwWEhSOUxGeHVYRzVjZEZ4MFhDSmlkWFIwYjI1Y0lqb2dablZ1WTNScGIyNG9JR1ZzWlcwZ0tTQjdYRzVjZEZ4MFhIUjJZWElnYm1GdFpTQTlJR1ZzWlcwdWJtOWtaVTVoYldVdWRHOU1iM2RsY2tOaGMyVW9LVHRjYmx4MFhIUmNkSEpsZEhWeWJpQnVZVzFsSUQwOVBTQmNJbWx1Y0hWMFhDSWdKaVlnWld4bGJTNTBlWEJsSUQwOVBTQmNJbUoxZEhSdmJsd2lJSHg4SUc1aGJXVWdQVDA5SUZ3aVluVjBkRzl1WENJN1hHNWNkRngwZlN4Y2JseHVYSFJjZEZ3aWRHVjRkRndpT2lCbWRXNWpkR2x2YmlnZ1pXeGxiU0FwSUh0Y2JseDBYSFJjZEhaaGNpQmhkSFJ5TzF4dVhIUmNkRngwY21WMGRYSnVJR1ZzWlcwdWJtOWtaVTVoYldVdWRHOU1iM2RsY2tOaGMyVW9LU0E5UFQwZ1hDSnBibkIxZEZ3aUlDWW1YRzVjZEZ4MFhIUmNkR1ZzWlcwdWRIbHdaU0E5UFQwZ1hDSjBaWGgwWENJZ0ppWmNibHh1WEhSY2RGeDBYSFF2THlCVGRYQndiM0owT2lCSlJUdzRYRzVjZEZ4MFhIUmNkQzh2SUU1bGR5QklWRTFNTlNCaGRIUnlhV0oxZEdVZ2RtRnNkV1Z6SUNobExtY3VMQ0JjSW5ObFlYSmphRndpS1NCaGNIQmxZWElnZDJsMGFDQmxiR1Z0TG5SNWNHVWdQVDA5SUZ3aWRHVjRkRndpWEc1Y2RGeDBYSFJjZENn
14938Z0tHRjBkSElnUFNCbGJHVnRMbWRsZEVGMGRISnBZblYwWlNoY0luUjVjR1ZjSWlrcElEMDlJRzUxYkd3Z2ZId2dZWFIwY2k1MGIweHZkMlZ5UTJGelpTZ3BJRDA5UFNCY0luUmxlSFJjSWlBcE8xeHVYSFJjZEgwc1hHNWNibHgwWEhRdkx5QlFiM05wZEdsdmJpMXBiaTFqYjJ4c1pXTjBhVzl1WEc1Y2RGeDBYQ0ptYVhKemRGd2lPaUJqY21WaGRHVlFiM05wZEdsdmJtRnNVSE5sZFdSdktHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RGeDBjbVYwZFhKdUlGc2dNQ0JkTzF4dVhIUmNkSDBwTEZ4dVhHNWNkRngwWENKc1lYTjBYQ0k2SUdOeVpXRjBaVkJ2YzJsMGFXOXVZV3hRYzJWMVpHOG9ablZ1WTNScGIyNG9JRzFoZEdOb1NXNWtaWGhsY3l3Z2JHVnVaM1JvSUNrZ2UxeHVYSFJjZEZ4MGNtVjBkWEp1SUZzZ2JHVnVaM1JvSUMwZ01TQmRPMXh1WEhSY2RIMHBMRnh1WEc1Y2RGeDBYQ0psY1Z3aU9pQmpjbVZoZEdWUWIzTnBkR2x2Ym1Gc1VITmxkV1J2S0daMWJtTjBhVzl1S0NCdFlYUmphRWx1WkdWNFpYTXNJR3hsYm1kMGFDd2dZWEpuZFcxbGJuUWdLU0I3WEc1Y2RGeDBYSFJ5WlhSMWNtNGdXeUJoY21kMWJXVnVkQ0E4SURBZ1B5QmhjbWQxYldWdWRDQXJJR3hsYm1kMGFDQTZJR0Z5WjNWdFpXNTBJRjA3WEc1Y2RGeDBmU2tzWEc1Y2JseDBYSFJjSW1WMlpXNWNJam9nWTNKbFlYUmxVRzl6YVhScGIyNWhiRkJ6WlhWa2J5aG1kVzVqZEdsdmJpZ2diV0YwWTJoSmJtUmxlR1Z6TENCc1pXNW5kR2dnS1NCN1hHNWNkRngwWEhSMllYSWdhU0E5SURBN1hHNWNkRngwWEhSbWIzSWdLQ0E3SUdrZ1BDQnNaVzVuZEdnN0lHa2dLejBnTWlBcElIdGNibHgwWEhSY2RGeDBiV0YwWTJoSmJtUmxlR1Z6TG5CMWMyZ29JR2tnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFJjZEhKbGRIVnliaUJ0WVhSamFFbHVaR1Y0WlhNN1hHNWNkRngwZlNrc1hHNWNibHgwWEhSY0ltOWtaRndpT2lCamNtVmhkR1ZRYjNOcGRHbHZibUZzVUhObGRXUnZLR1oxYm1OMGFXOXVLQ0J0WVhSamFFbHVaR1Y0WlhNc0lHeGxibWQwYUNBcElIdGNibHgwWEhSY2RIWmhjaUJwSUQwZ01UdGNibHgwWEhSY2RHWnZjaUFvSURzZ2FTQThJR3hsYm1kMGFEc2dhU0FyUFNBeUlDa2dlMXh1WEhSY2RGeDBYSFJ0WVhSamFFbHVaR1Y0WlhNdWNIVnphQ2dnYVNBcE8xeHVYSFJjZEZ4MGZWeHVYSFJjZEZ4MGNtVjBkWEp1SUcxaGRHTm9TVzVrWlhobGN6dGNibHgwWEhSOUtTeGNibHh1WEhSY2RGd2liSFJjSWpvZ1kzSmxZWFJsVUc5emFYUnBiMjVoYkZCelpYVmtieWhtZFc1amRHbHZiaWdnYldGMFkyaEpibVJsZUdWekxDQnNaVzVuZEdnc0lHRnlaM1Z0Wlc1MElDa2dlMXh1WEhSY2RGeDBkbUZ5SUdrZ1BTQmhjbWQxYldWdWRDQThJREFnUHlCaGNtZDFiV1Z1ZENBcklHeGxibWQwYUNBNklHRnlaM1Z0Wlc1ME8xeHVYSFJjZEZ4MFptOXlJQ2dnT3lBdExXa2dQajBnTURzZ0tTQjdYRzVjZEZ4MFhIUmNkRzFoZEdOb1NXNWtaWGhsY3k1d2RYTm9LQ0JwSUNrN1hHNWNkRngwWEhSOVhHNWNkRngwWEhSeVpYUjFjbTRnYldGMFkyaEpibVJsZUdWek8xeHVYSFJjZEgwcExGeHVYRzVjZEZ4MFhDSm5kRndpT2lCamNtVmhkR1ZRYjNOcGRHbHZibUZzVUhObGRXUnZLR1oxYm1OMGFXOXVLQ0J0WVhSamFFbHVaR1Y0WlhNc0lHeGxibWQwYUN3Z1lYSm5kVzFsYm5RZ0tTQjdYRzVjZEZ4MFhIUjJZWElnYVNBOUlHRnlaM1Z0Wlc1MElEd2dNQ0EvSUdGeVozVnRaVzUwSUNzZ2JHVnVaM1JvSURvZ1lYSm5kVzFsYm5RN1hHNWNkRngwWEhSbWIzSWdLQ0E3SUNzcmFTQThJR3hsYm1kMGFEc2dLU0I3WEc1Y2RGeDBYSFJjZEcxaGRHTm9TVzVrWlhobGN5NXdkWE5vS0NCcElDazdYRzVjZEZ4MFhIUjlYRzVjZEZ4MFhIUnlaWFIxY200Z2JXRjBZMmhKYm1SbGVHVnpPMXh1WEhSY2RIMHBYRzVjZEgxY2JuMDdYRzVjYmtWNGNISXVjSE5sZFdSdmMxdGNJbTUwYUZ3aVhTQTlJRVY0Y0hJdWNITmxkV1J2YzF0Y0ltVnhYQ0pkTzF4dVhHNHZMeUJCWkdRZ1luVjBkRzl1TDJsdWNIVjBJSFI1Y0dVZ2NITmxkV1J2YzF4dVptOXlJQ2dnYVNCcGJpQjdJSEpoWkdsdk9pQjBjblZsTENCamFHVmphMkp2ZURvZ2RISjFaU3dnWm1sc1pUb2dkSEoxWlN3Z2NHRnpjM2R2Y21RNklIUnlkV1VzSUdsdFlXZGxPaUIwY25WbElIMGdLU0I3WEc1Y2RFVjRjSEl1Y0hObGRXUnZjMXNnYVNCZElEMGdZM0
14938psWVhSbFNXNXdkWFJRYzJWMVpHOG9JR2tnS1R0Y2JuMWNibVp2Y2lBb0lHa2dhVzRnZXlCemRXSnRhWFE2SUhSeWRXVXNJSEpsYzJWME9pQjBjblZsSUgwZ0tTQjdYRzVjZEVWNGNISXVjSE5sZFdSdmMxc2dhU0JkSUQwZ1kzSmxZWFJsUW5WMGRHOXVVSE5sZFdSdktDQnBJQ2s3WEc1OVhHNWNiaTh2SUVWaGMza2dRVkJKSUdadmNpQmpjbVZoZEdsdVp5QnVaWGNnYzJWMFJtbHNkR1Z5YzF4dVpuVnVZM1JwYjI0Z2MyVjBSbWxzZEdWeWN5Z3BJSHQ5WEc1elpYUkdhV3gwWlhKekxuQnliM1J2ZEhsd1pTQTlJRVY0Y0hJdVptbHNkR1Z5Y3lBOUlFVjRjSEl1Y0hObGRXUnZjenRjYmtWNGNISXVjMlYwUm1sc2RHVnljeUE5SUc1bGR5QnpaWFJHYVd4MFpYSnpLQ2s3WEc1Y2JuUnZhMlZ1YVhwbElEMGdVMmw2ZW14bExuUnZhMlZ1YVhwbElEMGdablZ1WTNScGIyNG9JSE5sYkdWamRHOXlMQ0J3WVhKelpVOXViSGtnS1NCN1hHNWNkSFpoY2lCdFlYUmphR1ZrTENCdFlYUmphQ3dnZEc5clpXNXpMQ0IwZVhCbExGeHVYSFJjZEhOdlJtRnlMQ0JuY205MWNITXNJSEJ5WlVacGJIUmxjbk1zWEc1Y2RGeDBZMkZqYUdWa0lEMGdkRzlyWlc1RFlXTm9aVnNnYzJWc1pXTjBiM0lnS3lCY0lpQmNJaUJkTzF4dVhHNWNkR2xtSUNnZ1kyRmphR1ZrSUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJ3WVhKelpVOXViSGtnUHlBd0lEb2dZMkZqYUdWa0xuTnNhV05sS0NBd0lDazdYRzVjZEgxY2JseHVYSFJ6YjBaaGNpQTlJSE5sYkdWamRHOXlPMXh1WEhSbmNtOTFjSE1nUFNCYlhUdGNibHgwY0hKbFJtbHNkR1Z5Y3lBOUlFVjRjSEl1Y0hKbFJtbHNkR1Z5TzF4dVhHNWNkSGRvYVd4bElDZ2djMjlHWVhJZ0tTQjdYRzVjYmx4MFhIUXZMeUJEYjIxdFlTQmhibVFnWm1seWMzUWdjblZ1WEc1Y2RGeDBhV1lnS0NBaGJXRjBZMmhsWkNCOGZDQW9iV0YwWTJnZ1BTQnlZMjl0YldFdVpYaGxZeWdnYzI5R1lYSWdLU2tnS1NCN1hHNWNkRngwWEhScFppQW9JRzFoZEdOb0lDa2dlMXh1WEhSY2RGeDBYSFF2THlCRWIyNG5kQ0JqYjI1emRXMWxJSFJ5WVdsc2FXNW5JR052YlcxaGN5QmhjeUIyWVd4cFpGeHVYSFJjZEZ4MFhIUnpiMFpoY2lBOUlITnZSbUZ5TG5Oc2FXTmxLQ0J0WVhSamFGc3dYUzVzWlc1bmRHZ2dLU0I4ZkNCemIwWmhjanRjYmx4MFhIUmNkSDFjYmx4MFhIUmNkR2R5YjNWd2N5NXdkWE5vS0NBb2RHOXJaVzV6SUQwZ1cxMHBJQ2s3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBiV0YwWTJobFpDQTlJR1poYkhObE8xeHVYRzVjZEZ4MEx5OGdRMjl0WW1sdVlYUnZjbk5jYmx4MFhIUnBaaUFvSUNodFlYUmphQ0E5SUhKamIyMWlhVzVoZEc5eWN5NWxlR1ZqS0NCemIwWmhjaUFwS1NBcElIdGNibHgwWEhSY2RHMWhkR05vWldRZ1BTQnRZWFJqYUM1emFHbG1kQ2dwTzF4dVhIUmNkRngwZEc5clpXNXpMbkIxYzJnb2UxeHVYSFJjZEZ4MFhIUjJZV3gxWlRvZ2JXRjBZMmhsWkN4Y2JseDBYSFJjZEZ4MEx5OGdRMkZ6ZENCa1pYTmpaVzVrWVc1MElHTnZiV0pwYm1GMGIzSnpJSFJ2SUhOd1lXTmxYRzVjZEZ4MFhIUmNkSFI1Y0dVNklHMWhkR05vV3pCZExuSmxjR3hoWTJVb0lISjBjbWx0TENCY0lpQmNJaUFwWEc1Y2RGeDBYSFI5S1R0Y2JseDBYSFJjZEhOdlJtRnlJRDBnYzI5R1lYSXVjMnhwWTJVb0lHMWhkR05vWldRdWJHVnVaM1JvSUNrN1hHNWNkRngwZlZ4dVhHNWNkRngwTHk4Z1JtbHNkR1Z5YzF4dVhIUmNkR1p2Y2lBb0lIUjVjR1VnYVc0Z1JYaHdjaTVtYVd4MFpYSWdLU0I3WEc1Y2RGeDBYSFJwWmlBb0lDaHRZWFJqYUNBOUlHMWhkR05vUlhod2Nsc2dkSGx3WlNCZExtVjRaV01vSUhOdlJtRnlJQ2twSUNZbUlDZ2hjSEpsUm1sc2RHVnljMXNnZEhsd1pTQmRJSHg4WEc1Y2RGeDBYSFJjZENodFlYUmphQ0E5SUhCeVpVWnBiSFJsY25OYklIUjVjR1VnWFNnZ2JXRjBZMmdnS1NrcElDa2dlMXh1WEhSY2RGeDBYSFJ0WVhSamFHVmtJRDBnYldGMFkyZ3VjMmhwWm5Rb0tUdGNibHgwWEhSY2RGeDBkRzlyWlc1ekxuQjFjMmdvZTF4dVhIUmNkRngwWEhSY2RIWmhiSFZsT2lCdFlYUmphR1ZrTEZ4dVhIUmNkRngwWEhSY2RIUjVjR1U2SUhSNWNHVXNYRzVjZEZ4MFhIUmNkRngwYldGMFkyaGxjem9nYldGMFkyaGNibHgwWEhSY2RGeDBmU2s3WEc1Y2RGeDBYSFJjZEhOdlJtRnlJRDBnYzI5R1lYSXVjMnhwWTJVb0lHMWhkR05vWldRdWJHVnVaM1JvSUNrN1hHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhHNWNkRngwYVdZZ0tDQWhiV0YwWTJobFpDQXBJSHRjYmx4MFhIUmNkR0p5WldGck8xeHVYSFJjZEgxY2JseDBmVnh1WEc1Y2RDOHZJRkpsZEhWeWJpQjBhR1VnYkdWdVozUm9JRzltSUhSb1pTQnBiblpoYkdsa0lHVjRZMlZ6YzF4dVhIUXZMeUJwWmlCM1pTZHlaU0JxZFhOMElIQmhjbk5wYm1kY2JseDBMeThnVDNSb1pYSjNhWE5sTENCMGFISnZkeUJoYmlCbGNuSnZjaUJ2Y2lCeVpYUjFjbTRnZEc5clpXNXpYRzVjZEhKbGRIVnliaUJ3WVhKelpVOXViSGtnUDF4dVhIUmNkSE52Um1GeUxteGxibWQwYUNBNlhHNWNkRngwYzI5R1lYSWdQMXh1WEhSY2RGeDBVMmw2ZW14bExtVnljbTl5S0NCelpXeGxZM1J2Y2lBcElEcGNibHgwWEhSY2RDOHZJRU5oWTJobElIUm9aU0IwYjJ0bGJuTmNibHgwWEhSY2RIUnZhMlZ1UTJGamFHVW9JSE5sYkdWamRHOXlMQ0JuY205MWNITWdLUzV6YkdsalpTZ2dNQ0FwTzF4dWZUdGNibHh1Wm5WdVkzUnBiMjRnZEc5VFpXeGxZM1J2Y2lnZ2RHOXJaVzV6SUNrZ2UxeHVYSFIyWVhJZ2FTQTlJREFzWEc1Y2RGeDBiR1Z1SUQwZ2RHOXJaVzV6TG14bGJtZDBhQ3hjYmx4MFhIUnpaV3hsWTNSdmNpQTlJRndpWENJN1hHNWNkR1p2Y2lBb0lEc2dhU0E4SUd4bGJqc2dhU3NySUNrZ2UxeHVYSFJjZEhObGJHVmpkRzl5SUNzOUlIUnZhMlZ1YzF0cFhTNTJZV3gxWlR0Y2JseDBmVnh1WEhSeVpYUjFjbTRnYzJWc1pXTjBiM0k3WEc1OVhHNWNibVoxYm1OMGFXOXVJR0ZrWkVOdmJXSnBibUYwYjNJb0lHMWhkR05vWlhJc0lHTnZiV0pwYm1GMGIzSXNJR0poYzJVZ0tTQjdYRzVjZEhaaGNpQmthWElnUFNCamIyMWlhVzVoZEc5eUxtUnBjaXhjYmx4MFhIUmphR1ZqYTA1dmJrVnNaVzFsYm5SeklEMGdZbUZ6WlNBbUppQmthWElnUFQwOUlGd2ljR0Z5Wlc1MFRtOWtaVndpTEZ4dVhIUmNkR1J2Ym1WT1lXMWxJRDBnWkc5dVpTc3JPMXh1WEc1Y2RISmxkSFZ5YmlCamIyMWlhVzVoZEc5eUxtWnBjbk4wSUQ5Y2JseDBYSFF2THlCRGFHVmpheUJoWjJGcGJuTjBJR05zYjNObGMzUWdZVzVqWlhOMGIzSXZjSEpsWTJWa2FXNW5JR1ZzWlcxbGJuUmNibHgwWEhSbWRXNWpkR2x2YmlnZ1pXeGxiU3dnWTI5dWRHVjRkQ3dnZUcxc0lDa2dlMXh1WEhSY2RGeDBkMmhwYkdVZ0tDQW9aV3hsYlNBOUlHVnNaVzFiSUdScGNpQmRLU0FwSUh0Y2JseDBYSFJjZEZ4MGFXWWdLQ0JsYkdWdExtNXZaR1ZVZVhCbElEMDlQU0F4SUh4OElHTm9aV05yVG05dVJXeGxiV1Z1ZEhNZ0tTQjdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJRzFoZEdOb1pYSW9JR1ZzWlcwc0lHTnZiblJsZUhRc0lIaHRiQ0FwTzF4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSOVhHNWNkRngwZlNBNlhHNWNibHgwWEhRdkx5QkRhR1ZqYXlCaFoyRnBibk4wSUdGc2JDQmhibU5sYzNSdmNpOXdjbVZqWldScGJtY2daV3hsYldWdWRITmNibHgwWEhSbWRXNWpkR2x2YmlnZ1pXeGxiU3dnWTI5dWRHVjRkQ3dnZUcxc0lDa2dlMXh1WEhSY2RGeDBkbUZ5SUc5c1pFTmhZMmhsTENCdmRYUmxja05oWTJobExGeHVYSFJjZEZ4MFhIUnVaWGREWVdOb1pTQTlJRnNnWkdseWNuVnVjeXdnWkc5dVpVNWhiV1VnWFR0Y2JseHVYSFJjZEZ4MEx5OGdWMlVnWTJGdUozUWdjMlYwSUdGeVltbDBjbUZ5ZVNCa1lYUmhJRzl1SUZoTlRDQnViMlJsY3l3Z2MyOGdkR2hsZVNCa2IyNG5k
14938Q0JpWlc1bFptbDBJR1p5YjIwZ1pHbHlJR05oWTJocGJtZGNibHgwWEhSY2RHbG1JQ2dnZUcxc0lDa2dlMXh1WEhSY2RGeDBYSFIzYUdsc1pTQW9JQ2hsYkdWdElEMGdaV3hsYlZzZ1pHbHlJRjBwSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkR2xtSUNnZ1pXeGxiUzV1YjJSbFZIbHdaU0E5UFQwZ01TQjhmQ0JqYUdWamEwNXZia1ZzWlcxbGJuUnpJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBhV1lnS0NCdFlYUmphR1Z5S0NCbGJHVnRMQ0JqYjI1MFpYaDBMQ0I0Yld3Z0tTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBjbVYwZFhKdUlIUnlkV1U3WEc1Y2RGeDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwWEhSM2FHbHNaU0FvSUNobGJHVnRJRDBnWld4bGJWc2daR2x5SUYwcElDa2dlMXh1WEhSY2RGeDBYSFJjZEdsbUlDZ2daV3hsYlM1dWIyUmxWSGx3WlNBOVBUMGdNU0I4ZkNCamFHVmphMDV2YmtWc1pXMWxiblJ6SUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwYjNWMFpYSkRZV05vWlNBOUlHVnNaVzFiSUdWNGNHRnVaRzhnWFNCOGZDQW9aV3hsYlZzZ1pYaHdZVzVrYnlCZElEMGdlMzBwTzF4dVhIUmNkRngwWEhSY2RGeDBhV1lnS0NBb2IyeGtRMkZqYUdVZ1BTQnZkWFJsY2tOaFkyaGxXeUJrYVhJZ1hTa2dKaVpjYmx4MFhIUmNkRngwWEhSY2RGeDBiMnhrUTJGamFHVmJJREFnWFNBOVBUMGdaR2x5Y25WdWN5QW1KaUJ2YkdSRFlXTm9aVnNnTVNCZElEMDlQU0JrYjI1bFRtRnRaU0FwSUh0Y2JseHVYSFJjZEZ4MFhIUmNkRngwWEhRdkx5QkJjM05wWjI0Z2RHOGdibVYzUTJGamFHVWdjMjhnY21WemRXeDBjeUJpWVdOckxYQnliM0JoWjJGMFpTQjBieUJ3Y21WMmFXOTFjeUJsYkdWdFpXNTBjMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUnlaWFIxY200Z0tHNWxkME5oWTJobFd5QXlJRjBnUFNCdmJHUkRZV05vWlZzZ01pQmRLVHRjYmx4MFhIUmNkRngwWEhSY2RIMGdaV3h6WlNCN1hHNWNkRngwWEhSY2RGeDBYSFJjZEM4dklGSmxkWE5sSUc1bGQyTmhZMmhsSUhOdklISmxjM1ZzZEhNZ1ltRmpheTF3Y205d1lXZGhkR1VnZEc4Z2NISmxkbWx2ZFhNZ1pXeGxiV1Z1ZEhOY2JseDBYSFJjZEZ4MFhIUmNkRngwYjNWMFpYSkRZV05vWlZzZ1pHbHlJRjBnUFNCdVpYZERZV05vWlR0Y2JseHVYSFJjZEZ4MFhIUmNkRngwWEhRdkx5QkJJRzFoZEdOb0lHMWxZVzV6SUhkbEozSmxJR1J2Ym1VN0lHRWdabUZwYkNCdFpXRnVjeUIzWlNCb1lYWmxJSFJ2SUd0bFpYQWdZMmhsWTJ0cGJtZGNibHgwWEhSY2RGeDBYSFJjZEZ4MGFXWWdLQ0FvYm1WM1EyRmphR1ZiSURJZ1hTQTlJRzFoZEdOb1pYSW9JR1ZzWlcwc0lHTnZiblJsZUhRc0lIaHRiQ0FwS1NBcElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUnlaWFIxY200Z2RISjFaVHRjYmx4MFhIUmNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwZlZ4dVhIUmNkSDA3WEc1OVhHNWNibVoxYm1OMGFXOXVJR1ZzWlcxbGJuUk5ZWFJqYUdWeUtDQnRZWFJqYUdWeWN5QXBJSHRjYmx4MGNtVjBkWEp1SUcxaGRHTm9aWEp6TG14bGJtZDBhQ0ErSURFZ1AxeHVYSFJjZEdaMWJtTjBhVzl1S0NCbGJHVnRMQ0JqYjI1MFpYaDBMQ0I0Yld3Z0tTQjdYRzVjZEZ4MFhIUjJZWElnYVNBOUlHMWhkR05vWlhKekxteGxibWQwYUR0Y2JseDBYSFJjZEhkb2FXeGxJQ2dnYVMwdElDa2dlMXh1WEhSY2RGeDBYSFJwWmlBb0lDRnRZWFJqYUdWeWMxdHBYU2dnWld4bGJTd2dZMjl1ZEdWNGRDd2dlRzFzSUNrZ0tTQjdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJR1poYkhObE8xeHVYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUjlYRzVjZEZ4MFhIUnlaWFIxY200Z2RISjFaVHRjYmx4MFhIUjlJRHBjYmx4MFhIUnRZWFJqYUdWeWMxc3dYVHRjYm4xY2JseHVablZ1WTNScGIyNGdiWFZzZEdsd2JHVkRiMjUwWlhoMGN5Z2djMlZzWldOMGIzSXNJR052Ym5SbGVIUnpMQ0J5WlhOMWJIUnpJQ2tnZTF4dVhIUjJZWElnYVNBOUlEQXNYRzVjZEZ4MGJHVnVJRDBnWTI5dWRHVjRkSE11YkdWdVozUm9PMXh1WEhSbWIzSWdLQ0E3SUdrZ1BDQnNaVzQ3SUdrckt5QXBJSHRjYmx4MFhIUlRhWHA2YkdVb0lITmxiR1ZqZEc5eUxDQmpiMjUwWlhoMGMxdHBYU3dnY21WemRXeDBjeUFwTzF4dVhIUjlYRzVjZEhKbGRIVnliaUJ5WlhOMWJIUnpPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQmpiMjVrWlc1elpTZ2dkVzV0WVhSamFHVmtMQ0J0WVhBc0lHWnBiSFJsY2l3Z1kyOXVkR1Y0ZEN3Z2VHMXNJQ2tnZTF4dVhIUjJZWElnWld4bGJTeGNibHgwWEhSdVpYZFZibTFoZEdOb1pXUWdQU0JiWFN4Y2JseDBYSFJwSUQwZ01DeGNibHgwWEhSc1pXNGdQU0IxYm0xaGRHTm9aV1F1YkdWdVozUm9MRnh1WEhSY2RHMWhjSEJsWkNBOUlHMWhjQ0FoUFNCdWRXeHNPMXh1WEc1Y2RHWnZjaUFvSURzZ2FTQThJR3hsYmpzZ2FTc3JJQ2tnZTF4dVhIUmNkR2xtSUNnZ0tHVnNaVzBnUFNCMWJtMWhkR05vWldSYmFWMHBJQ2tnZTF4dVhIUmNkRngwYVdZZ0tDQWhabWxzZEdWeUlIeDhJR1pwYkhSbGNpZ2daV3hsYlN3Z1kyOXVkR1Y0ZEN3Z2VHMXNJQ2tnS1NCN1hHNWNkRngwWEhSY2RHNWxkMVZ1YldGMFkyaGxaQzV3ZFhOb0tDQmxiR1Z0SUNrN1hHNWNkRngwWEhSY2RHbG1JQ2dnYldGd2NHVmtJQ2tnZTF4dVhIUmNkRngwWEhSY2RHMWhjQzV3ZFhOb0tDQnBJQ2s3WEc1Y2RGeDBYSFJjZEgxY2JseDBYSFJjZEgxY2JseDBYSFI5WEc1Y2RIMWNibHh1WEhSeVpYUjFjbTRnYm1WM1ZXNXRZWFJqYUdWa08xeHVmVnh1WEc1bWRXNWpkR2x2YmlCelpYUk5ZWFJqYUdWeUtDQndjbVZHYVd4MFpYSXNJSE5sYkdWamRHOXlMQ0J0WVhSamFHVnlMQ0J3YjNOMFJtbHNkR1Z5TENCd2IzTjBSbWx1WkdWeUxDQndiM04wVTJWc1pXTjBiM0lnS1NCN1hHNWNkR2xtSUNnZ2NHOXpkRVpwYkhSbGNpQW1KaUFoY0c5emRFWnBiSFJsY2xzZ1pYaHdZVzVrYnlCZElDa2dlMXh1WEhSY2RIQnZjM1JHYVd4MFpYSWdQU0J6WlhSTllYUmphR1Z5S0NCd2IzTjBSbWxzZEdWeUlDazdYRzVjZEgxY2JseDBhV1lnS0NCd2IzTjBSbWx1WkdWeUlDWW1JQ0Z3YjNOMFJtbHVaR1Z5V3lCbGVIQmhibVJ2SUYwZ0tTQjdYRzVjZEZ4MGNHOXpkRVpwYm1SbGNpQTlJSE5sZEUxaGRHTm9aWElvSUhCdmMzUkdhVzVrWlhJc0lIQnZjM1JUWld4bFkzUnZjaUFwTzF4dVhIUjlYRzVjZEhKbGRIVnliaUJ0WVhKclJuVnVZM1JwYjI0b1puVnVZM1JwYjI0b0lITmxaV1FzSUhKbGMzVnNkSE1zSUdOdmJuUmxlSFFzSUhodGJDQXBJSHRjYmx4MFhIUjJZWElnZEdWdGNDd2dhU3dnWld4bGJTeGNibHgwWEhSY2RIQnlaVTFoY0NBOUlGdGRMRnh1WEhSY2RGeDBjRzl6ZEUxaGNDQTlJRnRkTEZ4dVhIUmNkRngwY0hKbFpYaHBjM1JwYm1jZ1BTQnlaWE4xYkhSekxteGxibWQwYUN4Y2JseHVYSFJjZEZ4MEx5OGdSMlYwSUdsdWFYUnBZV3dnWld4bGJXVnVkSE1nWm5KdmJTQnpaV1ZrSUc5eUlHTnZiblJsZUhSY2JseDBYSFJjZEdWc1pXMXpJRDBnYzJWbFpDQjhmQ0J0ZFd4MGFYQnNaVU52Ym5SbGVIUnpLQ0J6Wld4bFkzUnZjaUI4ZkNCY0lpcGNJaXdnWTI5dWRHVjRkQzV1YjJSbFZIbHdaU0EvSUZzZ1kyOXVkR1Y0ZENCZElEb2dZMjl1ZEdWNGRDd2dXMTBnS1N4Y2JseHVYSFJjZEZ4MEx5OGdVSEpsWm1sc2RHVnlJSFJ2SUdkbGRDQnRZWFJqYUdWeUlHbHVjSFYwTENCd2NtVnpaWEoyYVc1bklHRWdiV0Z3SUdadmNpQnpaV1ZrTFhKbGMzVnNkSE1nYzNsdVkyaHliMjVwZW1GMGFXOXVYRzVjZEZ4MFhIUnRZWFJqYUdWeVNXNGdQU0J3Y21WR2FXeDBaWElnSmlZZ0tDQnpaV1ZrSUh4OElDRnpaV3hsWTNSdmNpQXBJRDljYmx4MFhIUmNkRngwWTI5dV
14938pHVnVjMlVvSUdWc1pXMXpMQ0J3Y21WTllYQXNJSEJ5WlVacGJIUmxjaXdnWTI5dWRHVjRkQ3dnZUcxc0lDa2dPbHh1WEhSY2RGeDBYSFJsYkdWdGN5eGNibHh1WEhSY2RGeDBiV0YwWTJobGNrOTFkQ0E5SUcxaGRHTm9aWElnUDF4dVhIUmNkRngwWEhRdkx5QkpaaUIzWlNCb1lYWmxJR0VnY0c5emRFWnBibVJsY2l3Z2IzSWdabWxzZEdWeVpXUWdjMlZsWkN3Z2IzSWdibTl1TFhObFpXUWdjRzl6ZEVacGJIUmxjaUJ2Y2lCd2NtVmxlR2x6ZEdsdVp5QnlaWE4xYkhSekxGeHVYSFJjZEZ4MFhIUndiM04wUm1sdVpHVnlJSHg4SUNnZ2MyVmxaQ0EvSUhCeVpVWnBiSFJsY2lBNklIQnlaV1Y0YVhOMGFXNW5JSHg4SUhCdmMzUkdhV3gwWlhJZ0tTQS9YRzVjYmx4MFhIUmNkRngwWEhRdkx5QXVMaTVwYm5SbGNtMWxaR2xoZEdVZ2NISnZZMlZ6YzJsdVp5QnBjeUJ1WldObGMzTmhjbmxjYmx4MFhIUmNkRngwWEhSYlhTQTZYRzVjYmx4MFhIUmNkRngwWEhRdkx5QXVMaTV2ZEdobGNuZHBjMlVnZFhObElISmxjM1ZzZEhNZ1pHbHlaV04wYkhsY2JseDBYSFJjZEZ4MFhIUnlaWE4xYkhSeklEcGNibHgwWEhSY2RGeDBiV0YwWTJobGNrbHVPMXh1WEc1Y2RGeDBMeThnUm1sdVpDQndjbWx0WVhKNUlHMWhkR05vWlhOY2JseDBYSFJwWmlBb0lHMWhkR05vWlhJZ0tTQjdYRzVjZEZ4MFhIUnRZWFJqYUdWeUtDQnRZWFJqYUdWeVNXNHNJRzFoZEdOb1pYSlBkWFFzSUdOdmJuUmxlSFFzSUhodGJDQXBPMXh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRUZ3Y0d4NUlIQnZjM1JHYVd4MFpYSmNibHgwWEhScFppQW9JSEJ2YzNSR2FXeDBaWElnS1NCN1hHNWNkRngwWEhSMFpXMXdJRDBnWTI5dVpHVnVjMlVvSUcxaGRHTm9aWEpQZFhRc0lIQnZjM1JOWVhBZ0tUdGNibHgwWEhSY2RIQnZjM1JHYVd4MFpYSW9JSFJsYlhBc0lGdGRMQ0JqYjI1MFpYaDBMQ0I0Yld3Z0tUdGNibHh1WEhSY2RGeDBMeThnVlc0dGJXRjBZMmdnWm1GcGJHbHVaeUJsYkdWdFpXNTBjeUJpZVNCdGIzWnBibWNnZEdobGJTQmlZV05ySUhSdklHMWhkR05vWlhKSmJseHVYSFJjZEZ4MGFTQTlJSFJsYlhBdWJHVnVaM1JvTzF4dVhIUmNkRngwZDJocGJHVWdLQ0JwTFMwZ0tTQjdYRzVjZEZ4MFhIUmNkR2xtSUNnZ0tHVnNaVzBnUFNCMFpXMXdXMmxkS1NBcElIdGNibHgwWEhSY2RGeDBYSFJ0WVhSamFHVnlUM1YwV3lCd2IzTjBUV0Z3VzJsZElGMGdQU0FoS0cxaGRHTm9aWEpKYmxzZ2NHOXpkRTFoY0Z0cFhTQmRJRDBnWld4bGJTazdYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDFjYmx4MFhIUjlYRzVjYmx4MFhIUnBaaUFvSUhObFpXUWdLU0I3WEc1Y2RGeDBYSFJwWmlBb0lIQnZjM1JHYVc1a1pYSWdmSHdnY0hKbFJtbHNkR1Z5SUNrZ2UxeHVYSFJjZEZ4MFhIUnBaaUFvSUhCdmMzUkdhVzVrWlhJZ0tTQjdYRzVjZEZ4MFhIUmNkRngwTHk4Z1IyVjBJSFJvWlNCbWFXNWhiQ0J0WVhSamFHVnlUM1YwSUdKNUlHTnZibVJsYm5OcGJtY2dkR2hwY3lCcGJuUmxjbTFsWkdsaGRHVWdhVzUwYnlCd2IzTjBSbWx1WkdWeUlHTnZiblJsZUhSelhHNWNkRngwWEhSY2RGeDBkR1Z0Y0NBOUlGdGRPMXh1WEhSY2RGeDBYSFJjZEdrZ1BTQnRZWFJqYUdWeVQzVjBMbXhsYm1kMGFEdGNibHgwWEhSY2RGeDBYSFIzYUdsc1pTQW9JR2t0TFNBcElIdGNibHgwWEhSY2RGeDBYSFJjZEdsbUlDZ2dLR1ZzWlcwZ1BTQnRZWFJqYUdWeVQzVjBXMmxkS1NBcElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MEx5OGdVbVZ6ZEc5eVpTQnRZWFJqYUdWeVNXNGdjMmx1WTJVZ1pXeGxiU0JwY3lCdWIzUWdlV1YwSUdFZ1ptbHVZV3dnYldGMFkyaGNibHgwWEhSY2RGeDBYSFJjZEZ4MGRHVnRjQzV3ZFhOb0tDQW9iV0YwWTJobGNrbHVXMmxkSUQwZ1pXeGxiU2tnS1R0Y2JseDBYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RGeDBjRzl6ZEVacGJtUmxjaWdnYm5Wc2JDd2dLRzFoZEdOb1pYSlBkWFFnUFNCYlhTa3NJSFJsYlhBc0lIaHRiQ0FwTzF4dVhIUmNkRngwWEhSOVhHNWNibHgwWEhSY2RGeDBMeThnVFc5MlpTQnRZWFJqYUdWa0lHVnNaVzFsYm5SeklHWnliMjBnYzJWbFpDQjBieUJ5WlhOMWJIUnpJSFJ2SUd0bFpYQWdkR2hsYlNCemVXNWphSEp2Ym1sNlpXUmNibHgwWEhSY2RGeDBhU0E5SUcxaGRHTm9aWEpQZFhRdWJHVnVaM1JvTzF4dVhIUmNkRngwWEhSM2FHbHNaU0FvSUdrdExTQXBJSHRjYmx4MFhIUmNkRngwWEhScFppQW9JQ2hsYkdWdElEMGdiV0YwWTJobGNrOTFkRnRwWFNrZ0ppWmNibHgwWEhSY2RGeDBYSFJjZENoMFpXMXdJRDBnY0c5emRFWnBibVJsY2lBL0lHbHVaR1Y0VDJZb0lITmxaV1FzSUdW
14938c1pXMGdLU0E2SUhCeVpVMWhjRnRwWFNrZ1BpQXRNU0FwSUh0Y2JseHVYSFJjZEZ4MFhIUmNkRngwYzJWbFpGdDBaVzF3WFNBOUlDRW9jbVZ6ZFd4MGMxdDBaVzF3WFNBOUlHVnNaVzBwTzF4dVhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBMeThnUVdSa0lHVnNaVzFsYm5SeklIUnZJSEpsYzNWc2RITXNJSFJvY205MVoyZ2djRzl6ZEVacGJtUmxjaUJwWmlCa1pXWnBibVZrWEc1Y2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RHMWhkR05vWlhKUGRYUWdQU0JqYjI1a1pXNXpaU2hjYmx4MFhIUmNkRngwYldGMFkyaGxjazkxZENBOVBUMGdjbVZ6ZFd4MGN5QS9YRzVjZEZ4MFhIUmNkRngwYldGMFkyaGxjazkxZEM1emNHeHBZMlVvSUhCeVpXVjRhWE4wYVc1bkxDQnRZWFJqYUdWeVQzVjBMbXhsYm1kMGFDQXBJRHBjYmx4MFhIUmNkRngwWEhSdFlYUmphR1Z5VDNWMFhHNWNkRngwWEhRcE8xeHVYSFJjZEZ4MGFXWWdLQ0J3YjNOMFJtbHVaR1Z5SUNrZ2UxeHVYSFJjZEZ4MFhIUndiM04wUm1sdVpHVnlLQ0J1ZFd4c0xDQnlaWE4xYkhSekxDQnRZWFJqYUdWeVQzVjBMQ0I0Yld3Z0tUdGNibHgwWEhSY2RIMGdaV3h6WlNCN1hHNWNkRngwWEhSY2RIQjFjMmd1WVhCd2JIa29JSEpsYzNWc2RITXNJRzFoZEdOb1pYSlBkWFFnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5WEc1Y2RIMHBPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnRZWFJqYUdWeVJuSnZiVlJ2YTJWdWN5Z2dkRzlyWlc1eklDa2dlMXh1WEhSMllYSWdZMmhsWTJ0RGIyNTBaWGgwTENCdFlYUmphR1Z5TENCcUxGeHVYSFJjZEd4bGJpQTlJSFJ2YTJWdWN5NXNaVzVuZEdnc1hHNWNkRngwYkdWaFpHbHVaMUpsYkdGMGFYWmxJRDBnUlhod2NpNXlaV3hoZEdsMlpWc2dkRzlyWlc1eld6QmRMblI1Y0dVZ1hTeGNibHgwWEhScGJYQnNhV05wZEZKbGJHRjBhWFpsSUQwZ2JHVmhaR2x1WjFKbGJHRjBhWFpsSUh4OElFVjRjSEl1Y21Wc1lYUnBkbVZiWENJZ1hDSmRMRnh1WEhSY2RHa2dQU0JzWldGa2FXNW5VbVZzWVhScGRtVWdQeUF4SURvZ01DeGNibHh1WEhSY2RDOHZJRlJvWlNCbWIzVnVaR0YwYVc5dVlXd2diV0YwWTJobGNpQmxibk4xY21WeklIUm9ZWFFnWld4bGJXVnVkSE1nWVhKbElISmxZV05vWVdKc1pTQm1jbTl0SUhSdmNDMXNaWFpsYkNCamIyNTBaWGgwS0hNcFhHNWNkRngwYldGMFkyaERiMjUwWlhoMElEMGdZV1JrUTI5dFltbHVZWFJ2Y2lnZ1puVnVZM1JwYjI0b0lHVnNaVzBnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnWld4bGJTQTlQVDBnWTJobFkydERiMjUwWlhoME8xeHVYSFJjZEgwc0lHbHRjR3hwWTJsMFVtVnNZWFJwZG1Vc0lIUnlkV1VnS1N4Y2JseDBYSFJ0WVhSamFFRnVlVU52Ym5SbGVIUWdQU0JoWkdSRGIyMWlhVzVoZEc5eUtDQm1kVzVqZEdsdmJpZ2daV3hsYlNBcElIdGNibHgwWEhSY2RISmxkSFZ5YmlCcGJtUmxlRTltS0NCamFHVmphME52Ym5SbGVIUXNJR1ZzWlcwZ0tTQStJQzB4TzF4dVhIUmNkSDBzSUdsdGNHeHBZMmwwVW1Wc1lYUnBkbVVzSUhSeWRXVWdLU3hjYmx4MFhIUnRZWFJqYUdWeWN5QTlJRnNnWm5WdVkzUnBiMjRvSUdWc1pXMHNJR052Ym5SbGVIUXNJSGh0YkNBcElIdGNibHgwWEhSY2RIWmhjaUJ5WlhRZ1BTQW9JQ0ZzWldGa2FXNW5VbVZzWVhScGRtVWdKaVlnS0NCNGJXd2dmSHdnWTI5dWRHVjRkQ0FoUFQwZ2IzVjBaWEp0YjNOMFEyOXVkR1Y0ZENBcElDa2dmSHdnS0Z4dVhIUmNkRngwWEhRb1kyaGxZMnREYjI1MFpYaDBJRDBnWTI5dWRHVjRkQ2t1Ym05a1pWUjVjR1VnUDF4dVhIUmNkRngwWEhSY2RHMWhkR05vUTI5dWRHVjRkQ2dnWld4bGJTd2dZMjl1ZEdWNGRDd2dlRzFzSUNrZ09seHVYSFJjZEZ4MFhIUmNkRzFoZEdOb1FXNTVRMjl1ZEdWNGRDZ2daV3hsYlN3Z1kyOXVkR1Y0ZEN3Z2VHMXNJQ2tnS1R0Y2JseDBYSFJjZEM4dklFRjJiMmxrSUdoaGJtZHBibWNnYjI1MGJ5QmxiR1Z0Wlc1MElDaHBjM04xWlNBak1qazVLVnh1WEhSY2RGeDBZMmhsWTJ0RGIyNTBaWGgwSUQwZ2JuVnNiRHRjYmx4MFhIUmNkSEpsZEhWeWJpQnlaWFE3WEc1Y2RGeDBmU0JkTzF4dVhHNWNkR1p2Y2lBb0lEc2dhU0E4SUd4bGJqc2dhU3NySUNrZ2UxeHVYSFJjZEdsbUlDZ2dLRzFoZEdOb1pYSWdQU0JGZUhCeUxuSmxiR0YwYVhabFd5QjBiMnRsYm5OYmFWMHVkSGx3WlNCZEtTQXBJSHRjYmx4MFhIUmNkRzFoZEdOb1pYSnpJRDBnV3lCaFpHUkRiMjFpYVc1aGRHOXlLR1ZzWlcxbGJuUk5ZWFJqYUdWeUtDQnRZWFJqYUdWeWN5QXBMQ0J0WVhSamFHVnlLU0JkTzF4dVhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUnRZWFJqYUdWeUlEMGdSWGh3Y2k1bWFXeDBaWEpiSUhSdmEyVnVjMXRwWFM1MGVYQmxJRjB1WVhCd2JIa29JRzUxYkd3c0lIUnZhMlZ1YzF0cFhTNXRZWFJqYUdWeklDazdYRzVjYmx4MFhIUmNkQzh2SUZKbGRIVnliaUJ6Y0dWamFXRnNJSFZ3YjI0Z2MyVmxhVzVuSUdFZ2NHOXphWFJwYjI1aGJDQnRZWFJqYUdWeVhHNWNkRngwWEhScFppQW9JRzFoZEdOb1pYSmJJR1Y0Y0dGdVpHOGdYU0FwSUh0Y2JseDBYSFJjZEZ4MEx5OGdSbWx1WkNCMGFHVWdibVY0ZENCeVpXeGhkR2wyWlNCdmNHVnlZWFJ2Y2lBb2FXWWdZVzU1S1NCbWIzSWdjSEp2Y0dWeUlHaGhibVJzYVc1blhHNWNkRngwWEhSY2RHb2dQU0FySzJrN1hHNWNkRngwWEhSY2RHWnZjaUFvSURzZ2FpQThJR3hsYmpzZ2Fpc3JJQ2tnZTF4dVhIUmNkRngwWEhSY2RHbG1JQ2dnUlhod2NpNXlaV3hoZEdsMlpWc2dkRzlyWlc1elcycGRMblI1Y0dVZ1hTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RHSnlaV0ZyTzF4dVhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdjMlYwVFdGMFkyaGxjaWhjYmx4MFhIUmNkRngwWEhScElENGdNU0FtSmlCbGJHVnRaVzUwVFdGMFkyaGxjaWdnYldGMFkyaGxjbk1nS1N4Y2JseDBYSFJjZEZ4MFhIUnBJRDRnTVNBbUppQjBiMU5sYkdWamRHOXlLRnh1WEhSY2RGeDBYSFJjZEZ4MEx5OGdTV1lnZEdobElIQnlaV05sWkdsdVp5QjBiMnRsYmlCM1lYTWdZU0JrWlhOalpXNWtZVzUwSUdOdmJXSnBibUYwYjNJc0lHbHVjMlZ5ZENCaGJpQnBiWEJzYVdOcGRDQmhibmt0Wld4bGJXVnVkQ0JnS21CY2JseDBYSFJjZEZ4MFhIUmNkSFJ2YTJWdWN5NXpiR2xqWlNnZ01Dd2dhU0F0SURFZ0tTNWpiMjVqWVhRb2V5QjJZV3gxWlRvZ2RHOXJaVzV6V3lCcElDMGdNaUJkTG5SNWNHVWdQVDA5SUZ3aUlGd2lJRDhnWENJcVhDSWdPaUJjSWx3aUlIMHBYRzVjZEZ4MFhIUmNkRngwS1M1eVpYQnNZV05sS0NCeWRISnBiU3dnWENJa01Wd2lJQ2tzWEc1Y2RGeDBYSFJjZEZ4MGJXRjBZMmhsY2l4Y2JseDBYSFJjZEZ4MFhIUnBJRHdnYWlBbUppQnRZWFJqYUdWeVJuSnZiVlJ2YTJWdWN5Z2dkRzlyWlc1ekxuTnNhV05sS0NCcExDQnFJQ2tnS1N4Y2JseDBYSFJjZEZ4MFhIUnFJRHdnYkdWdUlDWW1JRzFoZEdOb1pYSkdjbTl0Vkc5clpXNXpLQ0FvZEc5clpXNXpJRDBnZEc5clpXNXpMbk5zYVdObEtDQnFJQ2twSUNrc1hHNWNkRngwWEhSY2RGeDBhaUE4SUd4bGJpQW1KaUIwYjFObGJHVmpkRzl5S0NCMGIydGxibk1nS1Z4dVhIUmNkRngwWEhRcE8xeHVYSFJjZEZ4MGZWeHVYSFJjZEZ4MGJXRjBZMmhsY25NdWNIVn
14938phQ2dnYldGMFkyaGxjaUFwTzF4dVhIUmNkSDFjYmx4MGZWeHVYRzVjZEhKbGRIVnliaUJsYkdWdFpXNTBUV0YwWTJobGNpZ2diV0YwWTJobGNuTWdLVHRjYm4xY2JseHVablZ1WTNScGIyNGdiV0YwWTJobGNrWnliMjFIY205MWNFMWhkR05vWlhKektDQmxiR1Z0Wlc1MFRXRjBZMmhsY25Nc0lITmxkRTFoZEdOb1pYSnpJQ2tnZTF4dVhIUjJZWElnWW5sVFpYUWdQU0J6WlhSTllYUmphR1Z5Y3k1c1pXNW5kR2dnUGlBd0xGeHVYSFJjZEdKNVJXeGxiV1Z1ZENBOUlHVnNaVzFsYm5STllYUmphR1Z5Y3k1c1pXNW5kR2dnUGlBd0xGeHVYSFJjZEhOMWNHVnlUV0YwWTJobGNpQTlJR1oxYm1OMGFXOXVLQ0J6WldWa0xDQmpiMjUwWlhoMExDQjRiV3dzSUhKbGMzVnNkSE1zSUc5MWRHVnliVzl6ZENBcElIdGNibHgwWEhSY2RIWmhjaUJsYkdWdExDQnFMQ0J0WVhSamFHVnlMRnh1WEhSY2RGeDBYSFJ0WVhSamFHVmtRMjkxYm5RZ1BTQXdMRnh1WEhSY2RGeDBYSFJwSUQwZ1hDSXdYQ0lzWEc1Y2RGeDBYSFJjZEhWdWJXRjBZMmhsWkNBOUlITmxaV1FnSmlZZ1cxMHNYRzVjZEZ4MFhIUmNkSE5sZEUxaGRHTm9aV1FnUFNCYlhTeGNibHgwWEhSY2RGeDBZMjl1ZEdWNGRFSmhZMnQxY0NBOUlHOTFkR1Z5Ylc5emRFTnZiblJsZUhRc1hHNWNkRngwWEhSY2RDOHZJRmRsSUcxMWMzUWdZV3gzWVhseklHaGhkbVVnWldsMGFHVnlJSE5sWldRZ1pXeGxiV1Z1ZEhNZ2IzSWdiM1YwWlhKdGIzTjBJR052Ym5SbGVIUmNibHgwWEhSY2RGeDBaV3hsYlhNZ1BTQnpaV1ZrSUh4OElHSjVSV3hsYldWdWRDQW1KaUJGZUhCeUxtWnBibVJiWENKVVFVZGNJbDBvSUZ3aUtsd2lMQ0J2ZFhSbGNtMXZjM1FnS1N4Y2JseDBYSFJjZEZ4MEx5OGdWWE5sSUdsdWRHVm5aWElnWkdseWNuVnVjeUJwWm1ZZ2RHaHBjeUJwY3lCMGFHVWdiM1YwWlhKdGIzTjBJRzFoZEdOb1pYSmNibHgwWEhSY2RGeDBaR2x5Y25WdWMxVnVhWEYxWlNBOUlDaGthWEp5ZFc1eklDczlJR052Ym5SbGVIUkNZV05yZFhBZ1BUMGdiblZzYkNBL0lERWdPaUJOWVhSb0xuSmhibVJ2YlNncElIeDhJREF1TVNrc1hHNWNkRngwWEhSY2RHeGxiaUE5SUdWc1pXMXpMbXhsYm1kMGFEdGNibHh1WEhSY2RGeDBhV1lnS0NCdmRYUmxjbTF2YzNRZ0tTQjdYRzVjZEZ4MFhIUmNkRzkxZEdWeWJXOXpkRU52Ym5SbGVIUWdQU0JqYjI1MFpYaDBJQ0U5UFNCa2IyTjFiV1Z1ZENBbUppQmpiMjUwWlhoME8xeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUXZMeUJCWkdRZ1pXeGxiV1Z1ZEhNZ2NHRnpjMmx1WnlCbGJHVnRaVzUwVFdGMFkyaGxjbk1nWkdseVpXTjBiSGtnZEc4Z2NtVnpkV3gwYzF4dVhIUmNkRngwTHk4Z1MyVmxjQ0JnYVdBZ1lTQnpkSEpwYm1jZ2FXWWdkR2hsY21VZ1lYSmxJRzV2SUdWc1pXMWxiblJ6SUhOdklHQnRZWFJqYUdWa1EyOTFiblJnSUhkcGJHd2dZbVVnWENJd01Gd2lJR0psYkc5M1hHNWNkRngwWEhRdkx5QlRkWEJ3YjNKME9pQkpSVHc1TENCVFlXWmhjbWxjYmx4MFhIUmNkQzh2SUZSdmJHVnlZWFJsSUU1dlpHVk1hWE4wSUhCeWIzQmxjblJwWlhNZ0tFbEZPaUJjSW14bGJtZDBhRndpT3lCVFlXWmhjbWs2SUR4dWRXMWlaWEkrS1NCdFlYUmphR2x1WnlCbGJHVnRaVzUwY3lCaWVTQnBaRnh1WEhSY2RGeDBabTl5SUNnZ095QnBJQ0U5UFNCc1pXNGdKaVlnS0dWc1pXMGdQU0JsYkdWdGMxdHBYU2tnSVQwZ2JuVnNiRHNnYVNzcklDa2dlMXh1WEhSY2RGeDBYSFJwWmlBb0lHSjVSV3hsYldWdWRDQW1KaUJsYkdWdElDa2dlMXh1WEhSY2RGeDBYSFJjZEdvZ1BTQXdPMXh1WEhSY2RGeDBYSFJjZEhkb2FXeGxJQ2dnS0cxaGRHTm9aWElnUFNCbGJHVnRaVzUwVFdGMFkyaGxjbk5iYWlzclhTa2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUnBaaUFvSUcxaGRHTm9aWElvSUdWc1pXMHNJR052Ym5SbGVIUXNJSGh0YkNBcElDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUnlaWE4xYkhSekxuQjFjMmdvSUdWc1pXMGdLVHRjYmx4MFhIUmNkRngwWEhSY2RGeDBZbkpsWVdzN1hHNWNkRngwWEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkR2xtSUNnZ2IzVjBaWEp0YjNOMElDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFpHbHljblZ1Y3lBOUlHUnBjbkoxYm5OVmJtbHhkV1U3WEc1Y2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkRngwTHk4Z1ZISmhZMnNnZFc1dFlYUmphR1ZrSUdWc1pXMWxiblJ6SUdadmNpQnpaWFFnWm1sc2RHVnljMXh1WEhSY2RGeDBYSFJwWmlBb0lHSjVVMlYwSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkQzh2SUZSb1pYa2dkMmxzYkNCb1lYWmxJR2R2Ym1VZ2RHaHliM1ZuYUNCaGJHd2djRzl6YzJsaWJHVWdiV0YwWTJobGNuTmNibHgwWEhSY2RGeDBYSFJwWmlBb0lDaGxiR1Z0SUQwZ0lXMWhkR05vWlhJZ0ppWWdaV3hsYlNrZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSdFlYUmphR1ZrUTI5MWJuUXRMVHRjYmx4MFhIUmNkRngwWEhSOVhHNWNibHgwWEhSY2RGeDBYSFF2THlCTVpXNW5kR2hsYmlCMGFHVWdZWEp5WVhrZ1ptOXlJR1YyWlhKNUlHVnNaVzFsYm5Rc0lHMWhkR05vWldRZ2IzSWdibTkwWEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0J6WldWa0lDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MGRXNXRZWFJqYUdWa0xuQjFjMmdvSUdWc1pXMGdLVHRjYmx4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnUVhCd2JIa2djMlYwSUdacGJIUmxjbk1nZEc4Z2RXNXRZWFJqYUdWa0lHVnNaVzFsYm5SelhHNWNkRngwWEhSdFlYUmphR1ZrUTI5MWJuUWdLejBnYVR0Y2JseDBYSFJjZEdsbUlDZ2dZbmxUWlhRZ0ppWWdhU0FoUFQwZ2JXRjBZMmhsWkVOdmRXNTBJQ2tnZTF4dVhIUmNkRngwWEhScUlEMGdNRHRjYmx4MFhIUmNkRngwZDJocGJHVWdLQ0FvYldGMFkyaGxjaUE5SUhObGRFMWhkR05vWlhKelcyb3JLMTBwSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRzFoZEdOb1pYSW9JSFZ1YldGMFkyaGxaQ3dnYzJWMFRXRjBZMmhsWkN3Z1kyOXVkR1Y0ZEN3Z2VHMXNJQ2s3WEc1Y2RGeDBYSFJjZEgxY2JseHVYSFJjZEZ4MFhIUnBaaUFvSUhObFpXUWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MEx5OGdVbVZwYm5SbFozSmhkR1VnWld4bGJXVnVkQ0J0WVhSamFHVnpJSFJ2SUdWc2FXMXBibUYwWlNCMGFHVWdibVZsWkNCbWIzSWdjMjl5ZEdsdVoxeHVYSFJjZEZ4MFhIUmNkR2xtSUNnZ2JXRjBZMmhsWkVOdmRXNTBJRDRnTUNBcElIdGNibHgwWEhSY2RGeDBYSFJjZEhkb2FXeGxJQ2dnYVMwdElDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUnBaaUFvSUNFb2RXNXRZWFJqYUdWa1cybGRJSHg4SUhObGRFMWhkR05vWldSYmFWMHBJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEhObGRFMWhkR05vWldSYmFWMGdQU0J3YjNBdVkyRnNiQ2dnY21WemRXeDBjeUFwTzF4dVhIUmNkRngwWEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkRngwZlZ4dVhHNWNkRngwWEhSY2RGeDBMeThnUkdselkyRnlaQ0JwYm1SbGVDQndiR0ZqWldodmJHUmxjaUIyWVd4MVpYTWdkRzhnWjJWMElHOXViSGtnWVdOMGRXRnNJRzFoZEdOb1pYTmNibHgwWEhSY2RGeDBYSFJ6WlhSTllYUmphR1ZrSUQwZ1kyOXVaR1
14938Z1YzJVb0lITmxkRTFoZEdOb1pXUWdLVHRjYmx4MFhIUmNkRngwZlZ4dVhHNWNkRngwWEhSY2RDOHZJRUZrWkNCdFlYUmphR1Z6SUhSdklISmxjM1ZzZEhOY2JseDBYSFJjZEZ4MGNIVnphQzVoY0hCc2VTZ2djbVZ6ZFd4MGN5d2djMlYwVFdGMFkyaGxaQ0FwTzF4dVhHNWNkRngwWEhSY2RDOHZJRk5sWldSc1pYTnpJSE5sZENCdFlYUmphR1Z6SUhOMVkyTmxaV1JwYm1jZ2JYVnNkR2x3YkdVZ2MzVmpZMlZ6YzJaMWJDQnRZWFJqYUdWeWN5QnpkR2x3ZFd4aGRHVWdjMjl5ZEdsdVoxeHVYSFJjZEZ4MFhIUnBaaUFvSUc5MWRHVnliVzl6ZENBbUppQWhjMlZsWkNBbUppQnpaWFJOWVhSamFHVmtMbXhsYm1kMGFDQStJREFnSmlaY2JseDBYSFJjZEZ4MFhIUW9JRzFoZEdOb1pXUkRiM1Z1ZENBcklITmxkRTFoZEdOb1pYSnpMbXhsYm1kMGFDQXBJRDRnTVNBcElIdGNibHh1WEhSY2RGeDBYSFJjZEZOcGVucHNaUzUxYm1seGRXVlRiM0owS0NCeVpYTjFiSFJ6SUNrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnVDNabGNuSnBaR1VnYldGdWFYQjFiR0YwYVc5dUlHOW1JR2RzYjJKaGJITWdZbmtnYm1WemRHVmtJRzFoZEdOb1pYSnpYRzVjZEZ4MFhIUnBaaUFvSUc5MWRHVnliVzl6ZENBcElIdGNibHgwWEhSY2RGeDBaR2x5Y25WdWN5QTlJR1JwY25KMWJuTlZibWx4ZFdVN1hHNWNkRngwWEhSY2RHOTFkR1Z5Ylc5emRFTnZiblJsZUhRZ1BTQmpiMjUwWlhoMFFtRmphM1Z3TzF4dVhIUmNkRngwZlZ4dVhHNWNkRngwWEhSeVpYUjFjbTRnZFc1dFlYUmphR1ZrTzF4dVhIUmNkSDA3WEc1Y2JseDBjbVYwZFhKdUlHSjVVMlYwSUQ5Y2JseDBYSFJ0WVhKclJuVnVZM1JwYjI0b0lITjFjR1Z5VFdGMFkyaGxjaUFwSURwY2JseDBYSFJ6ZFhCbGNrMWhkR05vWlhJN1hHNTlYRzVjYm1OdmJYQnBiR1VnUFNCVGFYcDZiR1V1WTI5dGNHbHNaU0E5SUdaMWJtTjBhVzl1S0NCelpXeGxZM1J2Y2l3Z2JXRjBZMmdnTHlvZ1NXNTBaWEp1WVd3Z1ZYTmxJRTl1YkhrZ0tpOGdLU0I3WEc1Y2RIWmhjaUJwTEZ4dVhIUmNkSE5sZEUxaGRHTm9aWEp6SUQwZ1cxMHNYRzVjZEZ4MFpXeGxiV1Z1ZEUxaGRHTm9aWEp6SUQwZ1cxMHNYRzVjZEZ4MFkyRmphR1ZrSUQwZ1kyOXRjR2xzWlhKRFlXTm9aVnNnYzJWc1pXTjBiM0lnS3lCY0lpQmNJaUJkTzF4dVhHNWNkR2xtSUNnZ0lXTmhZMmhsWkNBcElIdGNibHgwWEhRdkx5QkhaVzVsY21GMFpTQmhJR1oxYm1OMGFXOXVJRzltSUhKbFkzVnljMmwyWlNCbWRXNWpkR2x2Ym5NZ2RHaGhkQ0JqWVc0Z1ltVWdkWE5sWkNCMGJ5QmphR1ZqYXlCbFlXTm9JR1ZzWlcxbGJuUmNibHgwWEhScFppQW9JQ0Z0WVhSamFDQXBJSHRjYmx4MFhIUmNkRzFoZEdOb0lEMGdkRzlyWlc1cGVtVW9JSE5sYkdWamRHOXlJQ2s3WEc1Y2RGeDBmVnh1WEhSY2RHa2dQU0J0WVhSamFDNXNaVzVuZEdnN1hHNWNkRngwZDJocGJHVWdLQ0JwTFMwZ0tTQjdYRzVjZEZ4MFhIUmpZV05vWldRZ1BTQnRZWFJqYUdWeVJuSnZiVlJ2YTJWdWN5Z2diV0YwWTJoYmFWMGdLVHRjYmx4MFhIUmNkR2xtSUNnZ1kyRmphR1ZrV3lCbGVIQmhibVJ2SUYwZ0tTQjdYRzVjZEZ4MFhIUmNkSE5sZEUxaGRHTm9aWEp6TG5CMWMyZ29JR05oWTJobFpDQXBPMXh1WEhSY2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RGeDBaV3hsYldWdWRFMWhkR05vWlhKekxuQjFjMmdvSUdOaFkyaGxaQ0FwTzF4dVhIUmNkRngwZlZ4dVhIUmNkSDFjYmx4dVhIUmNkQzh2SUVOaFkyaGxJSFJvWlNCamIyMXdhV3hsWkNCbWRXNWpkR2x2Ymx4dVhIUmNkR05oWTJobFpDQTlJR052YlhCcGJHVnlRMkZqYUdVb0lITmxiR1ZqZEc5eUxDQnRZWFJqYUdWeVJuSnZiVWR5YjNWd1RXRjBZMmhsY25Nb0lHVnNaVzFsYm5STllYUmphR1Z5Y3l3Z2MyVjBUV0YwWTJobGNuTWdLU0FwTzF4dVhHNWNkRngwTHk4Z1UyRjJaU0J6Wld4bFkzUnZjaUJoYm1RZ2RHOXJaVzVwZW1GMGFXOXVYRzVjZEZ4MFkyRmphR1ZrTG5ObGJHVmpkRzl5SUQwZ2MyVnNaV04wYjNJN1hHNWNkSDFjYmx4MGNtVjBkWEp1SUdOaFkyaGxaRHRjYm4wN1hHNWNiaThxS2x4dUlDb2dRU0JzYjNjdGJHVjJaV3dnYzJWc1pXTjBhVzl1SUdaMWJtTjBhVzl1SUhSb1lYUWdkMjl5YTNNZ2QybDBhQ0JUYVhwNmJHVW5jeUJqYjIxd2FXeGxaRnh1SUNvZ0lITmxiR1ZqZEc5eUlHWjFibU4wYVc5dWMxeHVJQ29nUUhCaGNtRnRJSHRUZEhKcGJtZDhSblZ1WTNScGIyNTlJSE5sYkdWamRHOXlJRUVnYzJWc1pXTjBiM0lnYjNJZ1lTQndjbVV0WTI5dGNHbHNaV1JjYmlBcUlDQnpaV3hsWTNSdmNpQm1kVzVqZEdsdmJpQmlkV2xzZENCM2FYUm9JRk5wZW5wc1pTNWpiMjF3YVd4bFhHNGdLaUJBY0dGeVlXMGdlMFZzWlcxbGJuUjlJR052Ym5SbGVIUmNiaUFxSUVCd1lYSmhiU0I3UVhKeVlYbDlJRnR5WlhOMWJIUnpYVnh1SUNvZ1FIQmhjbUZ0SUh0QmNuSmhlWDBnVzNObFpXUmRJRUVnYzJWMElHOW1JR1ZzWlcxbGJuUnpJSFJ2SUcxaGRHTm9JR0ZuWVdsdWMzUmNiaUFxTDF4dWMyVnNaV04wSUQwZ1UybDZlbXhsTG5ObGJHVmpkQ0E5SUdaMWJtTjBhVzl1S0NCelpXeGxZM1J2Y2l3Z1kyOXVkR1Y0ZEN3Z2NtVnpkV3gwY3l3Z2MyVmxaQ0FwSUh0Y2JseDBkbUZ5SUdrc0lIUnZhMlZ1Y3l3Z2RHOXJaVzRzSUhSNWNHVXNJR1pwYm1Rc1hHNWNkRngwWTI5dGNHbHNaV1FnUFNCMGVYQmxiMllnYzJWc1pXTjBiM0lnUFQwOUlGd2lablZ1WTNScGIyNWNJaUFtSmlCelpXeGxZM1J2Y2l4Y2JseDBYSFJ0WVhSamFDQTlJQ0Z6WldWa0lDWW1JSFJ2YTJWdWFYcGxLQ0FvYzJWc1pXTjBiM0lnUFNCamIyMXdhV3hsWkM1elpXeGxZM1J2Y2lCOGZDQnpaV3hsWTNSdmNpa2dLVHRjYmx4dVhIUnlaWE4xYkhSeklEMGdjbVZ6ZFd4MGN5QjhmQ0JiWFR0Y2JseHVYSFF2THlCVWNua2dkRzhnYldsdWFXMXBlbVVnYjNCbGNtRjBhVzl1Y3lCcFppQjBhR1Z5WlNCcGN5QnVieUJ6WldWa0lHRnVaQ0J2Ym14NUlHOXVaU0JuY205MWNGeHVYSFJwWmlBb0lHMWhkR05vTG14bGJtZDBhQ0E5UFQwZ01TQXBJSHRjYmx4dVhIUmNkQzh2SUZSaGEyVWdZU0J6YUc5eWRHTjFkQ0JoYm1RZ2MyVjBJSFJvWlNCamIyNTBaWGgwSUdsbUlIUm9aU0J5YjI5MElITmxiR1ZqZEc5eUlHbHpJR0Z1SUVsRVhHNWNkRngwZEc5clpXNXpJRDBnYldGMFkyaGJNRjBnUFNCdFlYUmphRnN3WFM1emJHbGpaU2dnTUNBcE8xeHVYSFJjZEdsbUlDZ2dkRzlyWlc1ekxteGxibWQwYUNBK0l
14938ESWdKaVlnS0hSdmEyVnVJRDBnZEc5clpXNXpXekJkS1M1MGVYQmxJRDA5UFNCY0lrbEVYQ0lnSmlaY2JseDBYSFJjZEZ4MGMzVndjRzl5ZEM1blpYUkNlVWxrSUNZbUlHTnZiblJsZUhRdWJtOWtaVlI1Y0dVZ1BUMDlJRGtnSmlZZ1pHOWpkVzFsYm5SSmMwaFVUVXdnSmlaY2JseDBYSFJjZEZ4MFJYaHdjaTV5Wld4aGRHbDJaVnNnZEc5clpXNXpXekZkTG5SNWNHVWdYU0FwSUh0Y2JseHVYSFJjZEZ4MFkyOXVkR1Y0ZENBOUlDZ2dSWGh3Y2k1bWFXNWtXMXdpU1VSY0lsMG9JSFJ2YTJWdUxtMWhkR05vWlhOYk1GMHVjbVZ3YkdGalpTaHlkVzVsYzJOaGNHVXNJR1oxYm1WelkyRndaU2tzSUdOdmJuUmxlSFFnS1NCOGZDQmJYU0FwV3pCZE8xeHVYSFJjZEZ4MGFXWWdLQ0FoWTI5dWRHVjRkQ0FwSUh0Y2JseDBYSFJjZEZ4MGNtVjBkWEp1SUhKbGMzVnNkSE03WEc1Y2JseDBYSFJjZEM4dklGQnlaV052YlhCcGJHVmtJRzFoZEdOb1pYSnpJSGRwYkd3Z2MzUnBiR3dnZG1WeWFXWjVJR0Z1WTJWemRISjVMQ0J6YnlCemRHVndJSFZ3SUdFZ2JHVjJaV3hjYmx4MFhIUmNkSDBnWld4elpTQnBaaUFvSUdOdmJYQnBiR1ZrSUNrZ2UxeHVYSFJjZEZ4MFhIUmpiMjUwWlhoMElEMGdZMjl1ZEdWNGRDNXdZWEpsYm5ST2IyUmxPMXh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFJ6Wld4bFkzUnZjaUE5SUhObGJHVmpkRzl5TG5Oc2FXTmxLQ0IwYjJ0bGJuTXVjMmhwWm5Rb0tTNTJZV3gxWlM1c1pXNW5kR2dnS1R0Y2JseDBYSFI5WEc1Y2JseDBYSFF2THlCR1pYUmphQ0JoSUhObFpXUWdjMlYwSUdadmNpQnlhV2RvZEMxMGJ5MXNaV1owSUcxaGRHTm9hVzVuWEc1Y2RGeDBhU0E5SUcxaGRHTm9SWGh3Y2x0Y0ltNWxaV1J6UTI5dWRHVjRkRndpWFM1MFpYTjBLQ0J6Wld4bFkzUnZjaUFwSUQ4Z01DQTZJSFJ2YTJWdWN5NXNaVzVuZEdnN1hHNWNkRngwZDJocGJHVWdLQ0JwTFMwZ0tTQjdYRzVjZEZ4MFhIUjBiMnRsYmlBOUlIUnZhMlZ1YzF0cFhUdGNibHh1WEhSY2RGeDBMeThnUVdKdmNuUWdhV1lnZDJVZ2FHbDBJR0VnWTI5dFltbHVZWFJ2Y2x4dVhIUmNkRngwYVdZZ0tDQkZlSEJ5TG5KbGJHRjBhWFpsV3lBb2RIbHdaU0E5SUhSdmEyVnVMblI1Y0dVcElGMGdLU0I3WEc1Y2RGeDBYSFJjZEdKeVpXRnJPMXh1WEhSY2RGeDBmVnh1WEhSY2RGeDBhV1lnS0NBb1ptbHVaQ0E5SUVWNGNISXVabWx1WkZzZ2RIbHdaU0JkS1NBcElIdGNibHgwWEhSY2RGeDBMeThnVTJWaGNtTm9MQ0JsZUhCaGJtUnBibWNnWTI5dWRHVjRkQ0JtYjNJZ2JHVmhaR2x1WnlCemFXSnNhVzVuSUdOdmJXSnBibUYwYjNKelhHNWNkRngwWEhSY2RHbG1JQ2dnS0hObFpXUWdQU0JtYVc1a0tGeHVYSFJjZEZ4MFhIUmNkSFJ2YTJWdUxtMWhkR05vWlhOYk1GMHVjbVZ3YkdGalpTZ2djblZ1WlhOallYQmxMQ0JtZFc1bGMyTmhjR1VnS1N4Y2JseDBYSFJjZEZ4MFhIUnljMmxpYkdsdVp5NTBaWE4wS0NCMGIydGxibk5iTUYwdWRIbHdaU0FwSUNZbUlIUmxjM1JEYjI1MFpYaDBLQ0JqYjI1MFpYaDBMbkJoY21WdWRFNXZaR1VnS1NCOGZDQmpiMjUwWlhoMFhHNWNkRngwWEhSY2RDa3BJQ2tnZTF4dVhHNWNkRngwWEhSY2RGeDBMeThnU1dZZ2MyVmxaQ0JwY3lCbGJYQjBlU0J2Y2lCdWJ5QjBiMnRsYm5NZ2NtVnRZV2x1TENCM1pTQmpZVzRnY21WMGRYSnVJR1ZoY214NVhHNWNkRngwWEhSY2RGeDBkRzlyWlc1ekxuTndiR2xqWlNnZ2FTd2dNU0FwTzF4dVhIUmNkRngwWEhSY2RITmxiR1ZqZEc5eUlEMGdjMlZsWkM1c1pXNW5kR2dnSmlZZ2RHOVRaV3hsWTNSdmNpZ2dkRzlyWlc1eklDazdYRzVjZEZ4MFhIUmNkRngwYVdZZ0tDQWhjMlZzWldOMGIzSWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUndkWE5vTG1Gd2NHeDVLQ0J5WlhOMWJIUnpMQ0J6WldWa0lDazdYRzVjZEZ4MFhIUmNkRngwWEhSeVpYUjFjbTRnY21WemRXeDBjenRjYmx4MFhIUmNkRngwWEhSOVhHNWNibHgwWEhSY2RGeDBYSFJpY21WaGF6dGNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHgwZlZ4dVhHNWNkQzh2SUVOdmJYQnBiR1VnWVc1a0lHVjRaV04xZEdVZ1lTQm1hV3gwWlhKcGJtY2dablZ1WTNScGIyNGdhV1lnYjI1bElHbHpJRzV2ZENCd2NtOTJhV1JsWkZ4dVhIUXZMeUJRY205MmFXUmxJR0J0WVhSamFHQWdkRzhnWVhadmFXUWdjbVYwYjJ0bGJtbDZZWFJwYjI0Z2FXWWdkMlVnYlc5a2FXWnBaV1FnZEdobElITmxiR1ZqZEc5eUlHRmliM1psWEc1Y2RDZ2dZMjl0Y0dsc1pXUWdmSHdnWTI5dGNHbHNaU2dnYzJWc1pXTjBiM0lzSUcxaGRHTm9JQ2tnS1NoY2JseDBYSFJ6WldWa0xGeHVYSFJjZEdOdmJuUmxlSFFzWEc1Y2RGeDBJV1J2WTNWdFpXNTBTWE5JVkUxTUxGeHVYSFJjZEhKbGMzVnNkSE1zWEc1Y2RGeDBjbk5wWW14cGJtY3VkR1Z6ZENnZ2MyVnNaV04wYjNJZ0tTQW1KaUIwWlhOMFEyOXVkR1Y0ZENnZ1kyOXVkR1Y0ZEM1d1lYSmxiblJPYjJSbElDa2dmSHdnWTI5dWRHVjRkRnh1WEhRcE8xeHVYSFJ5WlhSMWNtNGdjbVZ6ZFd4MGN6dGNibjA3WEc1Y2JpOHZJRTl1WlMxMGFXMWxJR0Z6YzJsbmJtMWxiblJ6WEc1Y2JpOHZJRk52Y25RZ2MzUmhZbWxzYVhSNVhHNXpkWEJ3YjNKMExuTnZjblJUZEdGaWJHVWdQU0JsZUhCaGJtUnZMbk53YkdsMEtGd2lYQ0lwTG5OdmNuUW9JSE52Y25SUGNtUmxjaUFwTG1wdmFXNG9YQ0pjSWlrZ1BUMDlJR1Y0Y0dGdVpHODdYRzVjYmk4dklGTjFjSEJ2Y25RNklFTm9jbTl0WlNBeE5DMHpOU3RjYmk4dklFRnNkMkY1Y3lCaGMzTjFiV1VnWkhWd2JHbGpZWFJsY3lCcFppQjBhR1Y1SUdGeVpXNG5kQ0J3WVhOelpXUWdkRzhnZEdobElHTnZiWEJoY21semIyNGdablZ1WTNScGIyNWNibk4xY0hCdmNuUXVaR1YwWldOMFJIVndiR2xqWVhSbGN5QTlJQ0VoYUdGelJIVndiR2xqWVhSbE8xeHVYRzR2THlCSmJtbDBhV0ZzYVhwbElHRm5ZV2x1YzNRZ2RHaGxJR1JsWm1GMWJIUWdaRzlqZFcxbGJuUmNibk5sZEVSdlkzVnRaVzUwS0NrN1hHNWNiaTh2SUZOMWNIQnZjblE2SUZkbFltdHBkRHcxTXpjdU16SWdMU0JUWVdaaGNta2dOaTR3TGpNdlEyaHliMjFsSURJMUlDaG1hWGhsWkNCcGJpQkRhSEp2YldVZ01qY3BYRzR2THlCRVpYUmhZMmhsWkNCdWIyUmxjeUJqYjI1bWIzVnVaR2x1WjJ4NUlHWnZiR3h2ZHlBcVpXRmphQ0J2ZEdobGNpcGNibk4xY0hCdmNuUXVjMjl5ZEVSbGRHRmphR1ZrSUQwZ1lYTnpaWEowS0daMWJtTjBhVzl1S0NCa2FYWXhJQ2tnZTF4dVhIUXZMeUJUYUc5MWJHUWdjbVYwZFhKdUlERXNJR0oxZENCeVpYUjFjbTV6SURRZ0tHWnZiR3h2ZDJsdVp5bGNibHgwY21WMGRYSnVJR1JwZGpFdVkyOXRjR0Z5WlVSdlkzVnRaVzUwVUc5emFYUnBiMjRvSUdSdlkzVnRaVzUwTG1OeVpXRjBaVVZzWl
14938cxbGJuUW9YQ0prYVhaY0lpa2dLU0FtSURFN1hHNTlLVHRjYmx4dUx5OGdVM1Z3Y0c5eWREb2dTVVU4T0Z4dUx5OGdVSEpsZG1WdWRDQmhkSFJ5YVdKMWRHVXZjSEp2Y0dWeWRIa2dYQ0pwYm5SbGNuQnZiR0YwYVc5dVhDSmNiaTh2SUdoMGRIQTZMeTl0YzJSdUxtMXBZM0p2YzI5bWRDNWpiMjB2Wlc0dGRYTXZiR2xpY21GeWVTOXRjelV6TmpReU9TVXlPRlpUTGpnMUpUSTVMbUZ6Y0hoY2JtbG1JQ2dnSVdGemMyVnlkQ2htZFc1amRHbHZiaWdnWkdsMklDa2dlMXh1WEhSa2FYWXVhVzV1WlhKSVZFMU1JRDBnWENJOFlTQm9jbVZtUFNjakp6NDhMMkUrWENJN1hHNWNkSEpsZEhWeWJpQmthWFl1Wm1seWMzUkRhR2xzWkM1blpYUkJkSFJ5YVdKMWRHVW9YQ0pvY21WbVhDSXBJRDA5UFNCY0lpTmNJaUE3WEc1OUtTQXBJSHRjYmx4MFlXUmtTR0Z1Wkd4bEtDQmNJblI1Y0dWOGFISmxabnhvWldsbmFIUjhkMmxrZEdoY0lpd2dablZ1WTNScGIyNG9JR1ZzWlcwc0lHNWhiV1VzSUdseldFMU1JQ2tnZTF4dVhIUmNkR2xtSUNnZ0lXbHpXRTFNSUNrZ2UxeHVYSFJjZEZ4MGNtVjBkWEp1SUdWc1pXMHVaMlYwUVhSMGNtbGlkWFJsS0NCdVlXMWxMQ0J1WVcxbExuUnZURzkzWlhKRFlYTmxLQ2tnUFQwOUlGd2lkSGx3WlZ3aUlEOGdNU0E2SURJZ0tUdGNibHgwWEhSOVhHNWNkSDBwTzF4dWZWeHVYRzR2THlCVGRYQndiM0owT2lCSlJUdzVYRzR2THlCVmMyVWdaR1ZtWVhWc2RGWmhiSFZsSUdsdUlIQnNZV05sSUc5bUlHZGxkRUYwZEhKcFluVjBaU2hjSW5aaGJIVmxYQ0lwWEc1cFppQW9JQ0Z6ZFhCd2IzSjBMbUYwZEhKcFluVjBaWE1nZkh3Z0lXRnpjMlZ5ZENobWRXNWpkR2x2YmlnZ1pHbDJJQ2tnZTF4dVhIUmthWFl1YVc1dVpYSklWRTFNSUQwZ1hDSThhVzV3ZFhRdlBsd2lPMXh1WEhSa2FYWXVabWx5YzNSRGFHbHNaQzV6WlhSQmRIUnlhV0oxZEdVb0lGd2lkbUZzZFdWY0lpd2dYQ0pjSWlBcE8xeHVYSFJ5WlhSMWNtNGdaR2wyTG1acGNuTjBRMmhwYkdRdVoyVjBRWFIwY21saWRYUmxLQ0JjSW5aaGJIVmxYQ0lnS1NBOVBUMGdYQ0pjSWp0Y2JuMHBJQ2tnZTF4dVhIUmhaR1JJWVc1a2JHVW9JRndpZG1Gc2RXVmNJaXdnWm5WdVkzUnBiMjRvSUdWc1pXMHNJRzVoYldVc0lHbHpXRTFNSUNrZ2UxeHVYSFJjZEdsbUlDZ2dJV2x6V0UxTUlDWW1JR1ZzWlcwdWJtOWtaVTVoYldVdWRHOU1iM2RsY2tOaGMyVW9LU0E5UFQwZ1hDSnBibkIxZEZ3aUlDa2dlMXh1WEhSY2RGeDBjbVYwZFhKdUlHVnNaVzB1WkdWbVlYVnNkRlpoYkhWbE8xeHVYSFJjZEgxY2JseDBmU2s3WEc1OVhHNWNiaTh2SUZOMWNIQnZjblE2SUVsRlBEbGNiaTh2SUZWelpTQm5aWFJCZEhSeWFXSjFkR1ZPYjJSbElIUnZJR1psZEdOb0lHSnZiMnhsWVc1eklIZG9aVzRnWjJWMFFYUjBjbWxpZFhSbElHeHBaWE5jYm1sbUlDZ2dJV0Z6YzJWeWRDaG1kVzVqZEdsdmJpZ2daR2wySUNrZ2UxeHVYSFJ5WlhSMWNtNGdaR2wyTG1kbGRFRjBkSEpwWW5WMFpTaGNJbVJwYzJGaWJHVmtYQ0lwSUQwOUlHNTFiR3c3WEc1OUtTQXBJSHRjYmx4MFlXUmtTR0Z1Wkd4bEtDQmliMjlzWldGdWN5d2dablZ1WTNScGIyNG9JR1ZzWlcwc0lHNWhiV1VzSUdseldFMU1JQ2tnZTF4dVhIUmNkSFpoY2lCMllXdzdYRzVjZEZ4MGFXWWdLQ0FoYVhOWVRVd2dLU0I3WEc1Y2RGeDBYSFJ5WlhSMWNtNGdaV3hsYlZzZ2JtRnRaU0JkSUQwOVBTQjBjblZsSUQ4Z2JtRnRaUzUwYjB4dmQyVnlRMkZ6WlNncElEcGNibHgwWEhSY2RGeDBYSFFvZG1Gc0lEMGdaV3hsYlM1blpYUkJkSFJ5YVdKMWRHVk9iMlJsS0NCdVlXMWxJQ2twSUNZbUlIWmhiQzV6Y0dWamFXWnBaV1FnUDF4dVhIUmNkRngwWEhSY2RIWmhiQzUyWVd4MVpTQTZYRzVjZEZ4MFhIUmNkRzUxYkd3N1hHNWNkRngwZlZ4dVhIUjlLVHRjYm4xY2JseHVjbVYwZFhKdUlGTnBlbnBzWlR0Y2JseHVmU2tvSUhkcGJtUnZkeUFwTzF4dVhHNWNibHh1YWxGMVpYSjVMbVpwYm1RZ1BTQlRhWHA2YkdVN1hHNXFVWFZsY25rdVpYaHdjaUE5SUZOcGVucHNaUzV6Wld4bFkzUnZjbk03WEc1cVVYVmxjbmt1Wlhod2NsdGNJanBjSWwwZ1BTQnFVWFZsY25rdVpYaHdjaTV3YzJWMVpHOXpPMXh1YWxGMVpYSjVMblZ1YVhGMVpTQTlJRk5wZW5wc1pTNTFibWx4ZFdWVGIzSjBPMXh1YWxGMVpYSjVMblJsZUhRZ1BTQlRhWHA2YkdVdVoyVjBWR1Y0ZER0Y2JtcFJkV1Z5ZVM1cGMxaE5URVJ2WXlBOUlGTnBlbnBzWlM1cGMxaE5URHRjYm1wUmRXVnllUzVqYjI1MFlXbHVjeUE5SUZOcGVucHNaUzVqYjI1MFlXbHVjenRjYmx4dVhHNWNiblpoY2lCeWJtVmxaSE5EYjI1MFpYaDBJRDBnYWxGMVpYSjVMbVY0Y0hJdWJXRjBZMmd1Ym1WbFpITkRiMjUwWlhoME8xeHVYRzUyWVhJZ2NuTnBibWRzWlZSaFp5QTlJQ2d2WGp3b1hGeDNLeWxjWEhNcVhGd3ZQejRvUHpvOFhGd3ZYRnd4UG53cEpDOHBPMXh1WEc1Y2JseHVkbUZ5SUhKcGMxTnBiWEJzWlNBOUlDOWVMbHRlT2lOY1hGdGNYQzRzWFNva0x6dGNibHh1THk4Z1NXMXdiR1Z0Wlc1MElIUm9aU0JwWkdWdWRHbGpZV3dnWm5WdVkzUnBiMjVoYkdsMGVTQm1iM0lnWm1sc2RHVnlJR0Z1WkNCdWIzUmNibVoxYm1OMGFXOXVJSGRwYm01dmR5Z2daV3hsYldWdWRITXNJSEYxWVd4cFptbGxjaXdnYm05MElDa2dlMXh1WEhScFppQW9JR3BSZFdWeWVTNXBjMFoxYm1OMGFXOXVLQ0J4ZFdGc2FXWnBaWElnS1NBcElIdGNibHgwWEhSeVpYUjFjbTRnYWxGMVpYSjVMbWR5WlhBb0lHVnNaVzFsYm5SekxDQm1kVzVqZEdsdmJpZ2daV3hsYlN3Z2FTQXBJSHRjYmx4MFhIUmNkQzhxSUdwemFHbHVkQ0F0VnpBeE9DQXFMMXh1WEhSY2RGeDBjbVYwZFhKdUlDRWhjWFZoYkdsbWFXVnlMbU5oYkd3b0lHVnNaVzBzSUdrc0lHVnNaVzBnS1NBaFBUMGdibTkwTzF4dVhIUmNkSDBwTzF4dVhHNWNkSDFjYmx4dVhIUnBaaUFvSUhGMVlXeHBabWxsY2k1dWIyUmxWSGx3WlNBcElIdGNibHgwWEhSeVpYUjFjbTRnYWxGMVpYSjVMbWR5WlhBb0lHVnNaVzFsYm5SekxDQm1kVzVqZEdsdmJpZ2daV3hsYlNBcElIdGNibHgwWEhSY2RISmxkSFZ5YmlBb0lHVnNaVzBnUFQwOUlIRjFZV3hwWm1sbGNpQXBJQ0U5UFNCdWIzUTdYRzVjZEZ4MGZTazdYRzVjYmx4MGZWeHVYRzVjZEdsbUlDZ2dkSGx3Wlc5bUlIRjFZV3hwWm1sbGNpQTlQVDBnWENKemRISnBibWRjSWlBcElIdGNibHgwWEhScFppQW9JSEpwYzFOcGJYQnNaUzUwWlhOMEtDQnhkV0ZzYVdacFpYSWdLU0FwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUJxVVhWbGNua3VabWxzZEdWeUtDQnhkV0ZzYVdacFpYSXNJR1ZzWlcxbGJuUnpMQ0J1YjNRZ0tUdGNibHgwWEhSOVhHNWNibHgwWEhSeGRXRnNhV1pwWlhJZ1BTQnFVWFZsY25rdVptbHNkR1Z5S0NCeGRXRnNhV1pwWlhJc0lHVnNaVzFsYm5SeklDazdYRzVjZEgxY2JseHVYSFJ5WlhSMWNtNGdhbEYxWlhKNUxtZHlaWEFvSUdWc1pXMWxiblJ6TENCbWRXNWpkR2x2YmlnZ1pXeGxiU0FwSUh0Y2JseDBYSFJ5WlhSMWNtNGdLQ0JwYm1SbGVFOW1MbU5oYkd3b0lIRjFZV3hwWm1sbGNpd2daV3hsYlNBcElENDlJREFnS1NBaFBUMGdibTkwTzF4dVhIUjlLVHRjYm4xY2JseHVhbEYxWlhKNUxtWnBiSFJsY2lBOUlHWjFibU4wYVc5dUtDQmxlSEJ5TENCbGJHVnRjeXdnYm05MElDa2dlMXh1WEhSMllYSWdaV3hsYlNBOUlHVnNaVzF6V3lBd0lGMDdYRzVjYmx4MGFXWWdLQ0J1YjNRZ0tTQjdYRzVjZEZ4MFpYaHdjaUE5SUZ3aU9tNXZkQ2hjSWlBcklHVjRjSElnS3lCY0lpbGNJanRjYmx4MGZWeHVYRzVjZEhKbGRIVnliaUJsYkdWdGN5NXNaVzVuZEdnZ1BUMDlJREVnSmlZZ1pXeGxiUzV1YjJSbFZIbHdaU0E5UFQwZ01TQS9YRzVjZEZ4MGFsRjFaWEo1TG1acGJtUXViV0YwWTJobGMxTmxiR1ZqZEc5eUtDQmxiR1Z0TENCbGVIQnlJQ2tnUHlCYklHVnNaVzBnWFNBNklGdGRJRHBjYmx4MFhIUnFVWFZsY25rdVptbHVaQzV0WVhSamFHVnpLQ0JsZUhCeUxDQnFVWFZsY25rdVozSmxjQ2dnWld4bGJYTXNJR1oxYm1OMGFXOXVLQ0JsYkdWdElDa2dlMXh1WEhSY2RGeDBjbVYwZFhKdUlHVnNaVzB1Ym05a1pWUjVjR1VnUFQwOUlERTdYRzVjZEZ4MGZTa3BPMXh1ZlR0Y2JseHVhbEYxWlhKNUxtWnVMbVY0ZEdWdVpDaDdYRzVjZEdacGJtUTZJR1oxYm1OMGFXOXVLQ0J6Wld4bFkzUnZjaUFwSUh0Y2JseDBYSFIyWVhJZ2FTeGNibHgwWEhSY2RHeGxiaUE5SUhSb2FYTXViR1Z1WjNSb0xGeHVYSFJjZEZ4MGNtVjBJRDBnVzEwc1hHNWNkRngwWEhSelpXeG1JRDBnZEdocGN6dGNibHh1WEhSY2RHbG1JQ2dnZEhsd1pXOW1JSE5sYkdWamRHOXlJQ0U5UFNCY0luTjBjbWx1WjF3aUlDa2dlMXh1WEhSY2RGeDBjbVYwZFhKdUlIUm9hWE11Y0hWemFGTjBZV05yS0NCcVVYVmxjbmtvSUhObGJHVmpkRzl5SUNrdVptbHNkR1Z5S0daMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MFhIUm1iM0lnS0NCcElEMGdNRHNnYVNBOElHeGxianNnYVNzcklDa2dlMXh1WEhSY2RGeDBYSFJjZEdsbUlDZ2dhbEYxWlhKNUxtTnZiblJoYVc1ektDQnpaV3htV3lCcElGMHNJSFJvYVhNZ0tTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RISmxkSFZ5YmlCMGNuVmxPMXh1WEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MGZTa2dLVHRjYmx4MFhIUjlYRzVjYmx4MFhIUm1iM0lnS0NCcElEMGdNRHNnYVNBOElHeGxianNnYVNzcklDa2dlMXh1WEhSY2RGeDBhbEYxWlhKNUxtWnBibVFvSUhObGJHVmpkRzl5TENCelpXeG1XeUJwSUYwc0lISmxkQ0FwTzF4dVhIUmNkSDFjYmx4dVhIUmNkQzh2SUU1bFpXUmxaQ0JpWldOaGRYTmxJQ1FvSUhObGJHVmpkRzl5TENCamIyNTBaWGgwSUNrZ1ltVmpiMjFsY3lBa0tDQmpiMjUwWlhoMElDa3VabWx1WkNnZ2MyVnNaV04wY
14938jNJZ0tWeHVYSFJjZEhKbGRDQTlJSFJvYVhNdWNIVnphRk4wWVdOcktDQnNaVzRnUGlBeElEOGdhbEYxWlhKNUxuVnVhWEYxWlNnZ2NtVjBJQ2tnT2lCeVpYUWdLVHRjYmx4MFhIUnlaWFF1YzJWc1pXTjBiM0lnUFNCMGFHbHpMbk5sYkdWamRHOXlJRDhnZEdocGN5NXpaV3hsWTNSdmNpQXJJRndpSUZ3aUlDc2djMlZzWldOMGIzSWdPaUJ6Wld4bFkzUnZjanRjYmx4MFhIUnlaWFIxY200Z2NtVjBPMXh1WEhSOUxGeHVYSFJtYVd4MFpYSTZJR1oxYm1OMGFXOXVLQ0J6Wld4bFkzUnZjaUFwSUh0Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3k1d2RYTm9VM1JoWTJzb0lIZHBibTV2ZHloMGFHbHpMQ0J6Wld4bFkzUnZjaUI4ZkNCYlhTd2dabUZzYzJVcElDazdYRzVjZEgwc1hHNWNkRzV2ZERvZ1puVnVZM1JwYjI0b0lITmxiR1ZqZEc5eUlDa2dlMXh1WEhSY2RISmxkSFZ5YmlCMGFHbHpMbkIxYzJoVGRHRmpheWdnZDJsdWJtOTNLSFJvYVhNc0lITmxiR1ZqZEc5eUlIeDhJRnRkTENCMGNuVmxLU0FwTzF4dVhIUjlMRnh1WEhScGN6b2dablZ1WTNScGIyNG9JSE5sYkdWamRHOXlJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQWhJWGRwYm01dmR5aGNibHgwWEhSY2RIUm9hWE1zWEc1Y2JseDBYSFJjZEM4dklFbG1JSFJvYVhNZ2FYTWdZU0J3YjNOcGRHbHZibUZzTDNKbGJHRjBhWFpsSUhObGJHVmpkRzl5TENCamFHVmpheUJ0WlcxaVpYSnphR2x3SUdsdUlIUm9aU0J5WlhSMWNtNWxaQ0J6WlhSY2JseDBYSFJjZEM4dklITnZJQ1FvWENKd09tWnBjbk4wWENJcExtbHpLRndpY0Rwc1lYTjBYQ0lwSUhkdmJpZDBJSEpsZEhWeWJpQjBjblZsSUdadmNpQmhJR1J2WXlCM2FYUm9JSFIzYnlCY0luQmNJaTVjYmx4MFhIUmNkSFI1Y0dWdlppQnpaV3hsWTNSdmNpQTlQVDBnWENKemRISnBibWRjSWlBbUppQnlibVZsWkhORGIyNTBaWGgwTG5SbGMzUW9JSE5sYkdWamRHOXlJQ2tnUDF4dVhIUmNkRngwWEhScVVYVmxjbmtvSUhObGJHVmpkRzl5SUNrZ09seHVYSFJjZEZ4MFhIUnpaV3hsWTNSdmNpQjhmQ0JiWFN4Y2JseDBYSFJjZEdaaGJITmxYRzVjZEZ4MEtTNXNaVzVuZEdnN1hHNWNkSDFjYm4wcE8xeHVYRzVjYmk4dklFbHVhWFJwWVd4cGVtVWdZU0JxVVhWbGNua2diMkpxWldOMFhHNWNibHh1THk4Z1FTQmpaVzUwY21Gc0lISmxabVZ5Wlc1alpTQjBieUIwYUdVZ2NtOXZkQ0JxVVhWbGNua29aRzlqZFcxbGJuUXBYRzUyWVhJZ2NtOXZkR3BSZFdWeWVTeGNibHh1WEhRdkx5QkJJSE5wYlhCc1pTQjNZWGtnZEc4Z1kyaGxZMnNnWm05eUlFaFVUVXdnYzNSeWFXNW5jMXh1WEhRdkx5QlFjbWx2Y21sMGFYcGxJQ05wWkNCdmRtVnlJRHgwWVdjK0lIUnZJR0YyYjJsa0lGaFRVeUIyYVdFZ2JHOWpZWFJwYjI0dWFHRnphQ0FvSXprMU1qRXBYRzVjZEM4dklGTjBjbWxqZENCSVZFMU1JSEpsWTI5bmJtbDBhVzl1SUNnak1URXlPVEE2SUcxMWMzUWdjM1JoY25RZ2QybDBhQ0E4S1Z4dVhIUnljWFZwWTJ0RmVIQnlJRDBnTDE0b1B6cGNYSE1xS0R4YlhGeDNYRnhYWFNzK0tWdGVQbDBxZkNNb1cxeGNkeTFkS2lrcEpDOHNYRzVjYmx4MGFXNXBkQ0E5SUdwUmRXVnllUzVtYmk1cGJtbDBJRDBnWm5WdVkzUnBiMjRvSUhObGJHVmpkRzl5TENCamIyNTBaWGgwSUNrZ2UxeHVYSFJjZEhaaGNpQnRZWFJqYUN3Z1pXeGxiVHRjYmx4dVhIUmNkQzh2SUVoQlRrUk1SVG9nSkNoY0lsd2lLU3dnSkNodWRXeHNLU3dnSkNoMWJtUmxabWx1WldRcExDQWtLR1poYkhObEtWeHVYSFJjZEdsbUlDZ2dJWE5sYkdWamRHOXlJQ2tnZTF4dVhIUmNkRngwY21WMGRYSnVJSFJvYVhNN1hHNWNkRngwZlZ4dVhHNWNkRngwTHk4Z1NHRnVaR3hsSUVoVVRVd2djM1J5YVc1bmMxeHVYSFJjZEdsbUlDZ2dkSGx3Wlc5bUlITmxiR1ZqZEc5eUlEMDlQU0JjSW5OMGNtbHVaMXdpSUNrZ2UxeHVYSFJjZEZ4MGFXWWdLQ0J6Wld4bFkzUnZjbHN3WFNBOVBUMGdYQ0k4WENJZ0ppWWdjMlZzWldOMGIzSmJJSE5sYkdWamRHOXlMbXhsYm1kMGFDQXRJREVnWFNBOVBUMGdYQ0krWENJZ0ppWWdjMlZzWldOMGIzSXViR1Z1WjNSb0lENDlJRE1nS1NCN1hHNWNkRngwWEhSY2RDOHZJRUZ6YzNWdFpTQjBhR0YwSUhOMGNtbHVaM01nZEdoaGRDQnpkR0Z5ZENCaGJtUWdaVzVrSUhkcGRHZ2dQRDRnWVhKbElFaFVUVXdnWVc1a0lITnJhWEFnZEdobElISmxaMlY0SUdOb1pXTnJYRzVjZEZ4MFhIUmNkRzFoZEdOb0lEMGdXeUJ1ZFd4c0xDQnpaV3hsWTNSdmNpd2diblZzYkNCZE8xeHVYRzVjZEZ4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MFhIUnRZWFJqYUNBOUlISnhkV2xqYTBWNGNISXVaWGhsWXlnZ2MyVnNaV04wYjNJZ0tUdGNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnVFdGMFkyZ2dhSFJ0YkNCdmNpQnRZV3RsSUhOMWNtVWdibThnWTI5dWRHVjRkQ0JwY3lCemNHVmphV1pwWldRZ1ptOXlJQ05wWkZ4dVhIUmNkRngwYVdZZ0tDQnRZWFJqYUNBbUppQW9iV0YwWTJoYk1WMGdmSHdnSVdOdmJuUmxlSFFwSUNrZ2UxeHVYRzVjZEZ4MFhIUmNkQzh2SUVoQlRrUk1SVG9nSkNob2RHMXNLU0F0UGlBa0tHRnljbUY1S1Z4dVhIUmNkRngwWEhScFppQW9JRzFoZEdOb1d6RmRJQ2tnZTF4dVhIUmNkRngwWEhSY2RHTnZiblJsZUhRZ1BTQmpiMjUwWlhoMElHbHVjM1JoYm1ObGIyWWdhbEYxWlhKNUlEOGdZMjl1ZEdWNGRGc3dYU0E2SUdOdmJuUmxlSFE3WEc1Y2JseDBYSFJjZEZ4MFhIUXZMeUJQY0hScGIyNGdkRzhnY25WdUlITmpjbWx3ZEhNZ2FYTWdkSEoxWlNCbWIzSWdZbUZqYXkxamIyMXdZWFJjYmx4MFhIUmNkRngwWEhRdkx5QkpiblJsYm5ScGIyNWhiR3g1SUd4bGRDQjBhR1VnWlhKeWIzSWdZbVVnZEdoeWIzZHVJR2xtSUhCaGNuTmxTRlJOVENCcGN5QnViM1FnY0hKbGMyVnVkRnh1WEhSY2RGeDBYSFJjZEdwUmRXVnllUzV0WlhKblpTZ2dkR2hwY3l3Z2FsRjFaWEo1TG5CaGNuTmxTRlJOVENoY2JseDBYSFJjZEZ4MFhIUmNkRzFoZEdOb1d6RmRMRnh1WEhSY2RGeDBYSFJjZEZ4MFkyOXVkR1Y0ZENBbUppQmpiMjUwWlhoMExtNXZaR1ZVZVhCbElEOGdZMjl1ZEdWNGRDNXZkMjVsY2tSdlkzVnRaVzUwSUh4OElHTnZiblJsZUhRZ09pQmtiMk4xYldWdWRDeGNibHgwWEhSY2RGeDBYSFJjZEhSeWRXVmNibHgwWEhSY2RGeDBYSFFwSUNrN1hHNWNibHgwWEhSY2RGeDBYSFF2THlCSVFVNUVURVU2SUNRb2FIUnRiQ3dnY0hKdmNITXBYRzVjZEZ4MFhIUmNkRngwYVdZZ0tDQnljMmx1WjJ4bFZHRm5MblJsYzNRb0lHMWhkR05vV3pGZElDa2dKaVlnYWxGMVpYSjVMbWx6VUd4aGFXNVBZb
14938XBsWTNRb0lHTnZiblJsZUhRZ0tTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RHWnZjaUFvSUcxaGRHTm9JR2x1SUdOdmJuUmxlSFFnS1NCN1hHNWNkRngwWEhSY2RGeDBYSFJjZEM4dklGQnliM0JsY25ScFpYTWdiMllnWTI5dWRHVjRkQ0JoY21VZ1kyRnNiR1ZrSUdGeklHMWxkR2h2WkhNZ2FXWWdjRzl6YzJsaWJHVmNibHgwWEhSY2RGeDBYSFJjZEZ4MGFXWWdLQ0JxVVhWbGNua3VhWE5HZFc1amRHbHZiaWdnZEdocGMxc2diV0YwWTJnZ1hTQXBJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEhSb2FYTmJJRzFoZEdOb0lGMG9JR052Ym5SbGVIUmJJRzFoZEdOb0lGMGdLVHRjYmx4dVhIUmNkRngwWEhSY2RGeDBYSFF2THlBdUxpNWhibVFnYjNSb1pYSjNhWE5sSUhObGRDQmhjeUJoZEhSeWFXSjFkR1Z6WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBkR2hwY3k1aGRIUnlLQ0J0WVhSamFDd2dZMjl1ZEdWNGRGc2diV0YwWTJnZ1hTQXBPMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFJjZEZ4MGNtVjBkWEp1SUhSb2FYTTdYRzVjYmx4MFhIUmNkRngwTHk4Z1NFRk9SRXhGT2lBa0tDTnBaQ2xjYmx4MFhIUmNkRngwZlNCbGJITmxJSHRjYmx4MFhIUmNkRngwWEhSbGJHVnRJRDBnWkc5amRXMWxiblF1WjJWMFJXeGxiV1Z1ZEVKNVNXUW9JRzFoZEdOb1d6SmRJQ2s3WEc1Y2JseDBYSFJjZEZ4MFhIUXZMeUJUZFhCd2IzSjBPaUJDYkdGamEySmxjbko1SURRdU5seHVYSFJjZEZ4MFhIUmNkQzh2SUdkRlFrbEVJSEpsZEhWeWJuTWdibTlrWlhNZ2JtOGdiRzl1WjJWeUlHbHVJSFJvWlNCa2IyTjFiV1Z1ZENBb0l6WTVOak1wWEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0JsYkdWdElDWW1JR1ZzWlcwdWNHRnlaVzUwVG05a1pTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RDOHZJRWx1YW1WamRDQjBhR1VnWld4bGJXVnVkQ0JrYVhKbFkzUnNlU0JwYm5SdklIUm9aU0JxVVhWbGNua2diMkpxWldOMFhHNWNkRngwWEhSY2RGeDBYSFIwYUdsekxteGxibWQwYUNBOUlERTdYRzVjZEZ4MFhIUmNkRngwWEhSMGFHbHpXekJkSUQwZ1pXeGxiVHRjYmx4MFhIUmNkRngwWEhSOVhHNWNibHgwWEhSY2RGeDBYSFIwYUdsekxtTnZiblJsZUhRZ1BTQmtiMk4xYldWdWREdGNibHgwWEhSY2RGeDBYSFIwYUdsekxuTmxiR1ZqZEc5eUlEMGdjMlZzWldOMGIzSTdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJSFJvYVhNN1hHNWNkRngwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnU0VGT1JFeEZPaUFrS0dWNGNISXNJQ1FvTGk0dUtTbGNibHgwWEhSY2RIMGdaV3h6WlNCcFppQW9JQ0ZqYjI1MFpYaDBJSHg4SUdOdmJuUmxlSFF1YW5GMVpYSjVJQ2tnZTF4dVhIUmNkRngwWEhSeVpYUjFjbTRnS0NCamIyNTBaWGgwSUh4OElISnZiM1JxVVhWbGNua2dLUzVtYVc1a0tDQnpaV3hsWTNSdmNpQXBPMXh1WEc1Y2RGeDBYSFF2THlCSVFVNUVURVU2SUNRb1pYaHdjaXdnWTI5dWRHVjRkQ2xjYmx4MFhIUmNkQzh2SUNoM2FHbGphQ0JwY3lCcWRYTjBJR1Z4ZFdsMllXeGxiblFnZEc4NklDUW9ZMjl1ZEdWNGRDa3VabWx1WkNobGVIQnlLVnh1WEhSY2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RGeDBjbVYwZFhKdUlIUm9hWE11WTI5dWMzUnlkV04wYjNJb0lHTnZiblJsZUhRZ0tTNW1hVzVrS0NCelpXeGxZM1J2Y2lBcE8xeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdTRUZPUkV4Rk9pQWtLRVJQVFVWc1pXMWxiblFwWEc1Y2RGeDBmU0JsYkhObElHbG1JQ2dnYzJWc1pXTjBiM0l1Ym05a1pWUjVjR1VnS1NCN1hHNWNkRngwWEhSMGFHbHpMbU52Ym5SbGVIUWdQU0IwYUdseld6QmRJRDBnYzJWc1pXTjBiM0k3WEc1Y2RGeDBYSFIwYUdsekxteGxibWQwYUNBOUlERTdYRzVjZEZ4MFhIUnlaWFIxY200Z2RHaHBjenRjYmx4dVhIUmNkQzh2SUVoQlRrUk1SVG9nSkNobWRXNWpkR2x2YmlsY2JseDBYSFF2THlCVGFHOXlkR04xZENCbWIzSWdaRzlqZFcxbGJuUWdjbVZoWkhsY2JseDBYSFI5SUdWc2MyVWdhV1lnS0NCcVVYVmxjbmt1YVhOR2RXNWpkR2x2YmlnZ2MyVnNaV04wYjNJZ0tTQXBJSHRjYmx4MFhIUmNkSEpsZEhWeWJpQjBlWEJsYjJZZ2NtOXZkR3BSZFdWeWVTNXlaV0ZrZVNBaFBUMGdYQ0oxYm1SbFptbHVaV1JjSWlBL1hHNWNkRngwWEhSY2RISnZiM1JxVVhWbGNua3VjbVZoWkhrb0lITmxiR1ZqZEc5eUlDa2dPbHh1WEhSY2RGeDBYSFF2THlCRmVHVmpkWFJsSUdsdGJXVmthV0YwWld4NUlHbG1JSEpsWVdSNUlHbHpJRzV2ZENCd2NtVnpaVzUwWEc1Y2RGeDBYSFJjZEhObGJHVmpkRzl5S0NCcVVYVmxjbmtnS1R0Y2JseDBYSFI5WEc1Y2JseDBYSFJwWmlBb0lITmxiR1ZqZEc5eUxuTmxiR1ZqZEc5eUlDRTlQU0IxYm1SbFptbHVaV1FnS1NCN1hHNWNkRngwWEhSMGFHbHpMbk5sYkdWamRHOXlJRDBnYzJWc1pXTjBiM0l1YzJWc1pXTjBiM0k3WEc1Y2RGeDBYSFIwYUdsekxtTnZiblJsZUhRZ1BTQnpaV3hsWTNSdmNpNWpiMjUwWlhoME8xeHVYSFJjZEgxY2JseHVYSFJjZEhKbGRIVnliaUJxVVhWbGNua3ViV0ZyWlVGeWNtRjVLQ0J6Wld4bFkzUnZjaXdnZEdocGN5QXBPMXh1WEhSOU8xeHVYRzR2THlCSGFYWmxJSFJvWlNCcGJtbDBJR1oxYm1OMGFXOXVJSFJvWlNCcVVYVmxjbmtnY0hKdmRHOTBlWEJsSUdadmNpQnNZWFJsY2lCcGJuTjBZVzUwYVdGMGFXOXVYRzVwYm1sMExuQnliM1J2ZEhsd1pTQTlJR3BSZFdWeWVTNW1ianRjYmx4dUx5OGdTVzVwZEdsaGJHbDZaU0JqWlc1MGNtRnNJSEpsWm1WeVpXNWpaVnh1Y205dmRHcFJkV1Z5ZVNBOUlHcFJkV1Z5ZVNnZ1pHOWpkVzFsYm5RZ0tUdGNibHh1WEc1MllYSWdjbkJoY21WdWRITndjbVYySUQwZ0wxNG9QenB3WVhKbGJuUnpmSEJ5WlhZb1B6cFZiblJwYkh4QmJHd3BLUzhzWEc1Y2RDOHZJRTFsZEdodlpITWdaM1ZoY21GdWRHVmxaQ0IwYnlCd2NtOWtkV05sSUdFZ2RXNXBjWFZsSUhObGRDQjNhR1Z1SUhOMFlYSjBhVzVuSUdaeWIyMGdZU0IxYm1seGRXVWdjMlYwWEc1Y2RHZDFZWEpoYm5SbFpXUlZibWx4ZFdVZ1BTQjdYRzVjZEZ4MFkyaHBiR1J5Wlc0NklIUnlkV1VzWEc1Y2RGeDBZMjl1ZEdWdWRITTZJSFJ5ZFdVc1hHNWNkRngwYm1WNGREb2dkSEoxWlN4Y2JseDBYSFJ3Y21WMk9pQjBjblZsWEc1Y2RIMDdYRzVjYm1wUmRXVnllUzVsZUhSbGJtUW9lMXh1WEhSa2FYSTZJR1oxYm1OMGFXOXVLQ0JsYkdWdExDQmthWElzSUhWdWRHbHNJQ2tnZTF4dVhIUmNkSFpoY2lCdFlYUmphR1ZrSUQwZ1cxMHNYRzVjZEZ4MFhIUjBjblZ1WTJGMFpTQTlJSFZ1ZEdsc0lDRTlQU0IxYm1SbFptbHVaV1E3WEc1Y2JseDBYSFIzYUdsc1pTQW9JQ2hsYkdWdElEMGdaV3hsYlZzZ1pHbHlJRjBwSUNZbUlHVnNaVzB1Ym05a1pWUjVjR1VnSVQwOUlEa2dLU0I3WEc1Y2RGeDBYSFJwWmlBb0lHVnNaVzB1Ym05a1pWUjVjR1VnUFQwOUlERWdLU0I3WEc1Y2RGeDBYSFJjZEdsbUlDZ2dkSEoxYm
149381OaGRHVWdKaVlnYWxGMVpYSjVLQ0JsYkdWdElDa3VhWE1vSUhWdWRHbHNJQ2tnS1NCN1hHNWNkRngwWEhSY2RGeDBZbkpsWVdzN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBiV0YwWTJobFpDNXdkWE5vS0NCbGJHVnRJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmVnh1WEhSY2RISmxkSFZ5YmlCdFlYUmphR1ZrTzF4dVhIUjlMRnh1WEc1Y2RITnBZbXhwYm1jNklHWjFibU4wYVc5dUtDQnVMQ0JsYkdWdElDa2dlMXh1WEhSY2RIWmhjaUJ0WVhSamFHVmtJRDBnVzEwN1hHNWNibHgwWEhSbWIzSWdLQ0E3SUc0N0lHNGdQU0J1TG01bGVIUlRhV0pzYVc1bklDa2dlMXh1WEhSY2RGeDBhV1lnS0NCdUxtNXZaR1ZVZVhCbElEMDlQU0F4SUNZbUlHNGdJVDA5SUdWc1pXMGdLU0I3WEc1Y2RGeDBYSFJjZEcxaGRHTm9aV1F1Y0hWemFDZ2diaUFwTzF4dVhIUmNkRngwZlZ4dVhIUmNkSDFjYmx4dVhIUmNkSEpsZEhWeWJpQnRZWFJqYUdWa08xeHVYSFI5WEc1OUtUdGNibHh1YWxGMVpYSjVMbVp1TG1WNGRHVnVaQ2g3WEc1Y2RHaGhjem9nWm5WdVkzUnBiMjRvSUhSaGNtZGxkQ0FwSUh0Y2JseDBYSFIyWVhJZ2RHRnlaMlYwY3lBOUlHcFJkV1Z5ZVNnZ2RHRnlaMlYwTENCMGFHbHpJQ2tzWEc1Y2RGeDBYSFJzSUQwZ2RHRnlaMlYwY3k1c1pXNW5kR2c3WEc1Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3k1bWFXeDBaWElvWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwWEhSMllYSWdhU0E5SURBN1hHNWNkRngwWEhSbWIzSWdLQ0E3SUdrZ1BDQnNPeUJwS3lzZ0tTQjdYRzVjZEZ4MFhIUmNkR2xtSUNnZ2FsRjFaWEo1TG1OdmJuUmhhVzV6S0NCMGFHbHpMQ0IwWVhKblpYUnpXMmxkSUNrZ0tTQjdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJSFJ5ZFdVN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMWNibHgwWEhSOUtUdGNibHgwZlN4Y2JseHVYSFJqYkc5elpYTjBPaUJtZFc1amRHbHZiaWdnYzJWc1pXTjBiM0p6TENCamIyNTBaWGgwSUNrZ2UxeHVYSFJjZEhaaGNpQmpkWElzWEc1Y2RGeDBYSFJwSUQwZ01DeGNibHgwWEhSY2RHd2dQU0IwYUdsekxteGxibWQwYUN4Y2JseDBYSFJjZEcxaGRHTm9aV1FnUFNCYlhTeGNibHgwWEhSY2RIQnZjeUE5SUhKdVpXVmtjME52Ym5SbGVIUXVkR1Z6ZENnZ2MyVnNaV04wYjNKeklDa2dmSHdnZEhsd1pXOW1JSE5sYkdWamRHOXljeUFoUFQwZ1hDSnpkSEpwYm1kY0lpQS9YRzVjZEZ4MFhIUmNkR3BSZFdWeWVTZ2djMlZzWldOMGIzSnpMQ0JqYjI1MFpYaDBJSHg4SUhSb2FYTXVZMjl1ZEdWNGRDQXBJRHBjYmx4MFhIUmNkRngwTUR0Y2JseHVYSFJjZEdadmNpQW9JRHNnYVNBOElHdzdJR2tyS3lBcElIdGNibHgwWEhSY2RHWnZjaUFvSUdOMWNpQTlJSFJvYVhOYmFWMDdJR04xY2lBbUppQmpkWElnSVQwOUlHTnZiblJsZUhRN0lHTjFjaUE5SUdOMWNpNXdZWEpsYm5ST2IyUmxJQ2tnZTF4dVhIUmNkRngwWEhRdkx5QkJiSGRoZVhNZ2MydHBjQ0JrYjJOMWJXVnVkQ0JtY21GbmJXVnVkSE5jYmx4MFhIUmNkRngwYVdZZ0tDQmpkWEl1Ym05a1pWUjVjR1VnUENBeE1TQW1KaUFvY0c5eklEOWNibHgwWEhSY2RGeDBYSFJ3YjNNdWFXNWtaWGdvWTNWeUtTQStJQzB4SURwY2JseHVYSFJjZEZ4MFhIUmNkQzh2SUVSdmJpZDBJSEJoYzNNZ2JtOXVMV1ZzWlcxbGJuUnpJSFJ2SUZOcGVucHNaVnh1WEhSY2RGeDBYSFJjZEdOMWNpNXViMlJsVkhsd1pTQTlQVDBnTVNBbUpseHVYSFJjZEZ4MFhIUmNkRngwYWxGMVpYSjVMbVpwYm1RdWJXRjBZMmhsYzFObGJHVmpkRzl5S0dOMWNpd2djMlZzWldOMGIzSnpLU2tnS1NCN1hHNWNibHgwWEhSY2RGeDBYSFJ0WVhSamFHVmtMbkIxYzJnb0lHTjFjaUFwTzF4dVhIUmNkRngwWEhSY2RHSnlaV0ZyTzF4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhHNWNkRngwY21WMGRYSnVJSFJvYVhNdWNIVnphRk4wWVdOcktDQnRZWFJqYUdWa0xteGxibWQwYUNBK0lERWdQeUJxVVhWbGNua3VkVzVwY1hWbEtDQnRZWFJqYUdWa0lDa2dPaUJ0WVhSamFHVmtJQ2s3WEc1Y2RIMHNYRzVjYmx4MEx5OGdSR1YwWlhKdGFXNWxJSFJvWlNCd2IzTnBkR2x2YmlCdlppQmhiaUJsYkdWdFpXNTBJSGRwZEdocGJpQjBhR1VnYzJWMFhHNWNkR2x1WkdWNE9pQm1kVzVqZEdsdmJpZ2daV3hsYlNBcElIdGNibHh1WEhSY2RDOHZJRTV2SUdGeVozVnRaVzUwTENCeVpYUjFjbTRnYVc1a1pYZ2dhVzRnY0dGeVpXNTBYRzVjZEZ4MGFXWWdLQ0FoWld4bGJTQXBJSHRjYmx4MFhIUmNkSEpsZEhWeWJpQW9JSFJvYVhOYklEQWdYU0FtSmlCMGFHbHpXeUF3
14938SUYwdWNHRnlaVzUwVG05a1pTQXBJRDhnZEdocGN5NW1hWEp6ZENncExuQnlaWFpCYkd3b0tTNXNaVzVuZEdnZ09pQXRNVHRjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJKYm1SbGVDQnBiaUJ6Wld4bFkzUnZjbHh1WEhSY2RHbG1JQ2dnZEhsd1pXOW1JR1ZzWlcwZ1BUMDlJRndpYzNSeWFXNW5YQ0lnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnYVc1a1pYaFBaaTVqWVd4c0tDQnFVWFZsY25rb0lHVnNaVzBnS1N3Z2RHaHBjMXNnTUNCZElDazdYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdURzlqWVhSbElIUm9aU0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1Z6YVhKbFpDQmxiR1Z0Wlc1MFhHNWNkRngwY21WMGRYSnVJR2x1WkdWNFQyWXVZMkZzYkNnZ2RHaHBjeXhjYmx4dVhIUmNkRngwTHk4Z1NXWWdhWFFnY21WalpXbDJaWE1nWVNCcVVYVmxjbmtnYjJKcVpXTjBMQ0IwYUdVZ1ptbHljM1FnWld4bGJXVnVkQ0JwY3lCMWMyVmtYRzVjZEZ4MFhIUmxiR1Z0TG1weGRXVnllU0EvSUdWc1pXMWJJREFnWFNBNklHVnNaVzFjYmx4MFhIUXBPMXh1WEhSOUxGeHVYRzVjZEdGa1pEb2dablZ1WTNScGIyNG9JSE5sYkdWamRHOXlMQ0JqYjI1MFpYaDBJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQjBhR2x6TG5CMWMyaFRkR0ZqYXloY2JseDBYSFJjZEdwUmRXVnllUzUxYm1seGRXVW9YRzVjZEZ4MFhIUmNkR3BSZFdWeWVTNXRaWEpuWlNnZ2RHaHBjeTVuWlhRb0tTd2dhbEYxWlhKNUtDQnpaV3hsWTNSdmNpd2dZMjl1ZEdWNGRDQXBJQ2xjYmx4MFhIUmNkQ2xjYmx4MFhIUXBPMXh1WEhSOUxGeHVYRzVjZEdGa1pFSmhZMnM2SUdaMWJtTjBhVzl1S0NCelpXeGxZM1J2Y2lBcElIdGNibHgwWEhSeVpYUjFjbTRnZEdocGN5NWhaR1FvSUhObGJHVmpkRzl5SUQwOUlHNTFiR3dnUDF4dVhIUmNkRngwZEdocGN5NXdjbVYyVDJKcVpXTjBJRG9nZEdocGN5NXdjbVYyVDJKcVpXTjBMbVpwYkhSbGNpaHpaV3hsWTNSdmNpbGNibHgwWEhRcE8xeHVYSFI5WEc1OUtUdGNibHh1Wm5WdVkzUnBiMjRnYzJsaWJHbHVaeWdnWTNWeUxDQmthWElnS1NCN1hHNWNkSGRvYVd4bElDZ2dLR04xY2lBOUlHTjFjbHRrYVhKZEtTQW1KaUJqZFhJdWJtOWtaVlI1Y0dVZ0lUMDlJREVnS1NCN2ZWeHVYSFJ5WlhSMWNtNGdZM1Z5TzF4dWZWeHVYRzVxVVhWbGNua3VaV0ZqYUNoN1hHNWNkSEJoY21WdWREb2dablZ1WTNScGIyNG9JR1ZzWlcwZ0tTQjdYRzVjZEZ4MGRtRnlJSEJoY21WdWRDQTlJR1ZzWlcwdWNHRnlaVzUwVG05a1pUdGNibHgwWEhSeVpYUjFjbTRnY0dGeVpXNTBJQ1ltSUhCaGNtVnVkQzV1YjJSbFZIbHdaU0FoUFQwZ01URWdQeUJ3WVhKbGJuUWdPaUJ1ZFd4c08xeHVYSFI5TEZ4dVhIUndZWEpsYm5Sek9pQm1kVzVqZEdsdmJpZ2daV3hsYlNBcElIdGNibHgwWEhSeVpYUjFjbTRnYWxGMVpYSjVMbVJwY2lnZ1pXeGxiU3dnWENKd1lYSmxiblJPYjJSbFhDSWdLVHRjYmx4MGZTeGNibHgwY0dGeVpXNTBjMVZ1ZEdsc09pQm1kVzVqZEdsdmJpZ2daV3hsYlN3Z2FTd2dkVzUwYVd3Z0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUdwUmRXVnllUzVrYVhJb0lHVnNaVzBzSUZ3aWNHRnlaVzUwVG05a1pWd2lMQ0IxYm5ScGJDQXBPMXh1WEhSOUxGeHVYSFJ1WlhoME9pQm1kVzVqZEdsdmJpZ2daV3hsYlNBcElIdGNibHgwWEhSeVpYUjFjbTRnYzJsaWJHbHVaeWdnWld4bGJTd2dYQ0p1WlhoMFUybGliR2x1WjF3aUlDazdYRzVjZEgwc1hHNWNkSEJ5WlhZNklHWjFibU4wYVc5dUtDQmxiR1Z0SUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJ6YVdKc2FXNW5LQ0JsYkdWdExDQmNJbkJ5WlhacGIzVnpVMmxpYkdsdVoxd2lJQ2s3WEc1Y2RIMHNYRzVjZEc1bGVIUkJiR3c2SUdaMWJtTjBhVzl1S0NCbGJHVnRJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQnFVWFZsY25rdVpHbHlLQ0JsYkdWdExDQmNJbTVsZUhSVGFXSnNhVzVuWENJZ0tUdGNibHgwZlN4Y2JseDBjSEpsZGtGc2JEb2dablZ1WTNScGIyNG9JR1ZzWlcwZ0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUdwUmRXVnllUzVrYVhJb0lHVnNaVzBzSUZ3aWNISmxkbWx2ZFhOVGFXSnNhVzVuWENJZ0tUdGNibHgwZlN4Y2JseDBibVY0ZEZWdWRHbHNPaUJtZFc1amRHbHZiaWdnWld4bGJTd2dhU3dnZFc1MGFXd2dLU0I3WEc1Y2RGeDBjbVYwZFhKdUlHcFJkV1Z5ZVM1a2FYSW9JR1ZzWlcwc0lGd2libVY0ZEZOcFlteHBibWRjSWl3Z2RXNTBhV3dnS1R0Y2JseDBmU3hjYmx4MGNISmxkbFZ1ZEdsc09pQm1kVzVqZEdsdmJpZ2daV3hsYlN3Z2FTd2dkVzUwYVd3Z0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUdwUmRXVnllUzVrYVhJb0lHVnNaVzBzSUZ3aWNISmxkbWx2ZFhOVGFXSnNhVzVuWENJc0lIVnVkR2xzSUNrN1hHNWNkSDBzWEc1Y2RITnBZbXhwYm1kek9pQm1kVzVqZEdsdmJpZ2daV3hsYlNBcElIdGNibHgwWEhSeVpYUjFjbTRnYWxGMVpYSjVMbk5wWW14cGJtY29JQ2dnWld4bGJTNXdZWEpsYm5ST2IyUmxJSHg4SUh0OUlDa3VabWx5YzNSRGFHbHNaQ3dnWld4bGJTQXBPMXh1WEhSOUxGeHVYSFJqYUdsc1pISmxiam9nWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RGeDBjbVYwZFhKdUlHcFJkV1Z5ZVM1emFXSnNhVzVuS0NCbGJHVnRMbVpwY25OMFEyaHBiR1FnS1R0Y2JseDBmU3hjYmx4MFkyOXVkR1Z1ZEhNNklHWjFibU4wYVc5dUtDQmxiR1Z0SUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJsYkdWdExtTnZiblJsYm5SRWIyTjFiV1Z1ZENCOGZDQnFVWFZsY25rdWJXVnlaMlVvSUZ0ZExDQmxiR1Z0TG1Ob2FXeGtUbTlrWlhNZ0tUdGNibHgwZlZ4dWZTd2dablZ1WTNScGIyNG9JRzVoYldVc0lHWnVJQ2tnZTF4dVhIUnFVWFZsY25rdVptNWJJRzVoYldVZ1hTQTlJR1oxYm1OMGFXOXVLQ0IxYm5ScGJDd2djMlZzWldOMGIzSWdLU0I3WEc1Y2RGeDBkbUZ5SUcxaGRHTm9aV1FnUFNCcVVYVmxjbmt1YldGd0tDQjBhR2x6TENCbWJpd2dkVzUwYVd3Z0tUdGNibHh1WEhSY2RHbG1JQ2dnYm1GdFpTNXpiR2xqWlNnZ0xUVWdLU0FoUFQwZ1hDSlZiblJwYkZ3aUlDa2dlMXh1WEhSY2RGeDBjMlZzWldOMGIzSWdQU0IxYm5ScGJEdGNibHgwWEhSOVhHNWNibHgwWEhScFppQW9JSE5sYkdWamRHOXlJQ1ltSUhSNWNHVnZaaUJ6Wld4bFkzUnZjaUE5UFQwZ1hDSnpkSEpwYm1kY0lpQXBJSHRjYmx4MFhIUmNkRzFoZEdOb1pXUWdQU0JxVVhWbGNua3VabWxzZEdWeUtDQnpaV3hsWTNSdmNpd2diV0YwWTJobFpDQXBPMXh1WEhSY2RIMWNibHh1WEhSY2RHbG1JQ2dnZEdocGN5NXNaVzVuZEdnZ1BpQXhJQ2tnZTF4dVhIUmNkRngwTHk4Z1VtVnRiM1psSUdSMWNHeHBZMkYwWlhOY2JseDBYSFJjZEdsbUlDZ2dJV2QxWVhKaGJuUmxaV1JWYm1seGRXVmJJRzVoYldVZ1hTQXBJSHRjYmx4MFhIUmNkRngwYWxGMVpYSjVMblZ1YVhGMVpTZ2diV0YwWTJobFpDQXBPMXh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFF2THlCU1pYWmxjbk5sSUc5eVpHVnlJR1p2Y2lCd1lYSmxiblJ6S2lCaGJtUWdjSEpsZGkxa1pYSnBkbUYwYVhabGMxeHVYSFJjZEZ4MGFXWWdLQ0J5Y0dGeVpXNTBjM0J5WlhZdWRHVnpkQ2dnYm1GdFpTQXBJQ2tnZTF4dVhIUmNkRngwWEhSdFlYUmphR1ZrTG5KbGRtVnljMlVvS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5WEc1Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3k1d2RYTm9VM1JoWTJzb0lHMWhkR05vWldRZ0tUdGNibHgwZlR0Y2JuMHBPMXh1ZG1GeUlISnViM1IzYUdsMFpTQTlJQ2d2WEZ4VEt5OW5LVHRjYmx4dVhHNWNiaTh2SUZOMGNtbHVaeUIwYnlCUFltcGxZM1FnYjNCMGFXOXVjeUJtYjNKdFlYUWdZMkZqYUdWY2JuWmhjaUJ2Y0hScGIyNXpRMkZqYUdVZ1BTQjdmVHRjYmx4dUx5OGdRMjl1ZG1WeWRDQlRkSEpwYm1jdFptOXliV0YwZEdWa0lHOXdkR2x2Ym5NZ2FXNTBieUJQWW1wbFkzUXRabTl5YldGMGRHVmtJRzl1WlhNZ1lXNWtJSE4wYjNKbElHbHVJR05oWTJobFhHNW1kVzVqZEdsdmJpQmpjbVZoZEdWUGNIUnBiMjV6S0NCdmNIUnBiMjV6SUNrZ2UxeHVYSFIyWVhJZ2IySnFaV04wSUQwZ2IzQjBhVzl1YzBOaFkyaGxXeUJ2Y0hScGIyNXpJRjBnUFNCN2ZUdGNibHgwYWxGMVpYSjVMbVZoWTJnb0lHOXdkR2x2Ym5NdWJXRjBZMmdvSUhKdWIzUjNhR2wwWlNBcElIeDhJRnRkTENCbWRXNWpkR2x2YmlnZ1h5d2dabXhoWnlBcElIdGNibHgwWEhSdlltcGxZM1JiSUdac1lXY2dYU0E5SUhSeWRXVTdYRzVjZEgwcE8xeHVYSFJ5WlhSMWNtNGdiMkpxWldOME8xeHVmVnh1WEc0dktseHVJQ29nUTNKbFlYUmxJR0VnWTJGc2JHSmhZMnNnYkdsemRDQjFjMmx1WnlCMGFHVWdabTlzYkc5M2FXNW5JSEJoY21GdFpYUmxjbk02WEc0Z0tseHVJQ3BjZEc5d2RHbHZibk02SUdGdUlHOXdkR2x2Ym1Gc0lHeHBjM1FnYjJZZ2MzQmhZMlV0YzJWd1lYSmhkR1ZrSUc5d2RHbHZibk1nZEdoaGRDQjNhV3hzSUdOb1lXNW5aU0JvYjNkY2JpQXFYSFJjZEZ4MGRH
14938aGxJR05oYkd4aVlXTnJJR3hwYzNRZ1ltVm9ZWFpsY3lCdmNpQmhJRzF2Y21VZ2RISmhaR2wwYVc5dVlXd2diM0IwYVc5dUlHOWlhbVZqZEZ4dUlDcGNiaUFxSUVKNUlHUmxabUYxYkhRZ1lTQmpZV3hzWW1GamF5QnNhWE4wSUhkcGJHd2dZV04wSUd4cGEyVWdZVzRnWlhabGJuUWdZMkZzYkdKaFkyc2diR2x6ZENCaGJtUWdZMkZ1SUdKbFhHNGdLaUJjSW1acGNtVmtYQ0lnYlhWc2RHbHdiR1VnZEdsdFpYTXVYRzRnS2x4dUlDb2dVRzl6YzJsaWJHVWdiM0IwYVc5dWN6cGNiaUFxWEc0Z0tseDBiMjVqWlRwY2RGeDBYSFIzYVd4c0lHVnVjM1Z5WlNCMGFHVWdZMkZzYkdKaFkyc2diR2x6ZENCallXNGdiMjVzZVNCaVpTQm1hWEpsWkNCdmJtTmxJQ2hzYVd0bElHRWdSR1ZtWlhKeVpXUXBYRzRnS2x4dUlDcGNkRzFsYlc5eWVUcGNkRngwWEhSM2FXeHNJR3RsWlhBZ2RISmhZMnNnYjJZZ2NISmxkbWx2ZFhNZ2RtRnNkV1Z6SUdGdVpDQjNhV3hzSUdOaGJHd2dZVzU1SUdOaGJHeGlZV05ySUdGa1pHVmtYRzRnS2x4MFhIUmNkRngwWEhSaFpuUmxjaUIwYUdVZ2JHbHpkQ0JvWVhNZ1ltVmxiaUJtYVhKbFpDQnlhV2RvZENCaGQyRjVJSGRwZEdnZ2RHaGxJR3hoZEdWemRDQmNJbTFsYlc5eWFYcGxaRndpWEc0Z0tseDBYSFJjZEZ4MFhIUjJZV3gxWlhNZ0tHeHBhMlVnWVNCRVpXWmxjbkpsWkNsY2JpQXFYRzRnS2x4MGRXNXBjWFZsT2x4MFhIUmNkSGRwYkd3Z1pXNXpkWEpsSUdFZ1kyRnNiR0poWTJzZ1kyRnVJRzl1YkhrZ1ltVWdZV1JrWldRZ2IyNWpaU0FvYm04Z1pIVndiR2xqWVhSbElHbHVJSFJvWlNCc2FYTjBLVnh1SUNwY2JpQXFYSFJ6ZEc5d1QyNUdZV3h6WlRwY2RHbHVkR1Z5Y25Wd2RDQmpZV3hzYVc1bmN5QjNhR1Z1SUdFZ1kyRnNiR0poWTJzZ2NtVjBkWEp1Y3lCbVlXeHpaVnh1SUNwY2JpQXFMMXh1YWxGMVpYSjVMa05oYkd4aVlXTnJjeUE5SUdaMWJtTjBhVzl1S0NCdmNIUnBiMjV6SUNrZ2UxeHVYRzVjZEM4dklFTnZiblpsY25RZ2IzQjBhVzl1Y3lCbWNtOXRJRk4wY21sdVp5MW1iM0p0WVhSMFpXUWdkRzhnVDJKcVpXTjBMV1p2Y20xaGRIUmxaQ0JwWmlCdVpXVmtaV1JjYmx4MEx5OGdLSGRsSUdOb1pXTnJJR2x1SUdOaFkyaGxJR1pwY25OMEtWeHVYSFJ2Y0hScGIyNXpJRDBnZEhsd1pXOW1JRzl3ZEdsdmJuTWdQVDA5SUZ3aWMzUnlhVzVuWENJZ1AxeHVYSFJjZENnZ2IzQjBhVzl1YzBOaFkyaGxXeUJ2Y0hScGIyNXpJRjBnZkh3Z1kzSmxZWFJsVDNCMGFXOXVjeWdnYjNCMGFXOXVjeUFwSUNrZ09seHVYSFJjZEdwUmRXVnllUzVsZUhSbGJtUW9JSHQ5TENCdmNIUnBiMjV6SUNrN1hHNWNibHgwZG1GeUlDOHZJRXhoYzNRZ1ptbHlaU0IyWVd4MVpTQW9abTl5SUc1dmJpMW1iM0puWlhSMFlXSnNaU0JzYVhOMGN5bGNibHgwWEhSdFpXMXZjbmtzWEc1Y2RGeDBMeThnUm14aFp5QjBieUJyYm05M0lHbG1JR3hwYzNRZ2QyRnpJR0ZzY21WaFpIa2dabWx5WldSY2JseDBYSFJtYVhKbFpDeGNibHgwWEhRdkx5QkdiR0ZuSUhSdklHdHViM2NnYVdZZ2JHbHpkQ0JwY3lCamRYSnlaVzUwYkhrZ1ptbHlhVzVuWEc1Y2RGeDBabWx5YVc1bkxGeHVYSFJjZEM4dklFWnBjbk4wSUdOaGJHeGlZV05ySUhSdklHWnBjbVVnS0hWelpXUWdhVzUwWlhKdVlXeHNlU0JpZVNCaFpHUWdZVzVrSUdacGNtVlhhWFJvS1Z4dVhIUmNkR1pwY21sdVoxTjBZWEowTEZ4dVhIUmNkQzh2SUVWdVpDQnZaaUIwYUdVZ2JHOXZjQ0IzYUdWdUlHWnBjbWx1WjF4dVhIUmNkR1pwY21sdVoweGxibWQwYUN4Y2JseDBYSFF2THlCSmJtUmxlQ0J2WmlCamRYSnlaVzUwYkhrZ1ptbHlhVzVuSUdOaGJHeGlZV05ySUNodGIyUnBabWxsWkNCaWVTQnlaVzF2ZG1VZ2FXWWdibVZsWkdWa0tWeHVYSFJjZEdacGNtbHVaMGx1WkdWNExGeHVYSFJjZEM4dklFRmpkSFZoYkNCallXeHNZbUZqYXlCc2FYTjBYRzVjZEZ4MGJHbHpkQ0E5SUZ0ZExGeHVYSFJjZEM4dklGTjBZV05ySUc5bUlHWnBjbVVnWTJGc2JITWdabTl5SUhKbGNHVmhkR0ZpYkdVZ2JHbHpkSE5jYmx4MFhIUnpkR0ZqYXlBOUlDRnZjSFJwYjI1ekxtOXVZMlVnSmlZZ1cxMHNYRzVjZEZ4MEx5OGdSbWx5WlNCallXeHNZbUZqYTNOY2JseDBYSFJtYVhKbElEMGdablZ1WTNScGIyNG9JR1JoZEdFZ0tTQjdYRzVjZEZ4MFhIUnRaVzF2Y25rZ1BTQnZjSFJwYjI1ekxtMWxiVzl5ZVNBbUppQmtZWFJoTzF4dVhIUmNkRngwWm1seVpXUWdQU0IwY25WbE8xeHVYSFJjZEZ4MFptbHlhVzVuU1c1a1pYZ2dQU0JtYVhKcGJtZFRkR0Z5ZENCOGZDQXdPMXh1WEhSY2RGeDBabWx5YVc1blUzUmhjblFnUFNBd08xeHVYSFJjZEZ4MFptbHlhVzVuVEdWdVozUm9JRDBnYkdsemRDNXNaVzVuZEdnN1hHNWNkRngwWEhSbWFYSnBibWNnUFNCMGNuVmxPMXh1WEhSY2RGeDBabTl5SUNnZ095QnNhWE4wSUNZbUlHWnBjbWx1WjBsdVpHVjRJRHdnWm1seWFXNW5UR1Z1WjNSb095Qm1hWEpwYm1kSmJtUmxlQ3NySUNrZ2UxeHVYSFJjZEZ4MFhIUnBaaUFvSUd4cGMzUmJJR1pwY21sdVowbHVaR1Y0SUYwdVlYQndiSGtvSUdSaGRHRmJJREFnWFN3Z1pHRjBZVnNnTVNCZElDa2dQVDA5SUdaaGJITmxJQ1ltSUc5d2RHbHZibk11YzNSdmNFOXVSbUZzYzJVZ0tTQjdYRzVjZEZ4MFhIUmNkRngwYldWdGIzSjVJRDBnWm1Gc2MyVTdJQzh2SUZSdklIQnlaWFpsYm5RZ1puVnlkR2hsY2lCallXeHNjeUIxYzJsdVp5QmhaR1JjYmx4MFhIUmNkRngwWEhSaWNtVmhhenRjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwZlZ4dVhIUmNkRngwWm1seWFXNW5JRDBnWm1Gc2MyVTdYRzVjZEZ4MFhIUnBaaUFvSUd4cGMzUWdLU0I3WEc1Y2RGeDBYSFJjZEdsbUlDZ2djM1JoWTJzZ0tTQjdYRzVjZEZ4MFhIUmNkRngwYVdZZ0tDQnpkR0ZqYXk1c1pXNW5kR2dnS1NCN1hHNWNkRngwWEhSY2RGeDBYSFJtYVhKbEtDQnpkR0ZqYXk1emFHbG1kQ2dwSUNrN1hHNWNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFI5SUdWc2MyVWdhV1lnS0NCdFpXMXZjbmtnS1NCN1hHNWNkRngwWEhSY2RGeDBiR2x6ZENBOUlGdGRPMXh1WEhSY2RGeDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBYSFJjZEhObGJHWXVaR2x6WVdKc1pTZ3BPMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmU3hjYmx4MFhIUXZMeUJCWTNSMVlXd2dRMkZzYkdKaFkydHpJRzlpYW1WamRGeHVYSFJjZEhObGJHWWdQU0I3WEc1Y2RGeDBYSFF2THlCQlpHUWdZU0JqWVd4c1ltRmpheUJ2Y2lCaElHTnZiR3hsWTNScGIyNGdiMllnWTJGc2JHSmhZMnR6SUhSdklIUm9aU0JzYVhOMFhHNWNkRngwWEhSaFpHUTZJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwWEhScFppQW9JR3hwYzNRZ0tTQjdYRzVjZEZ4MFhIUmNkRngwTHk4Z1JtbHljM1FzSUhkbElITmhkbVVnZEdobElHTjFjbkpsYm5RZ2JHVnVaM1JvWEc1Y2RGeDBYSFJjZEZ4MGRtRnlJSE4wWVhKMElEMGdiR2x6ZEM1c1pXNW5kR2c3WEc1Y2RGeDBYSFJjZEZ4MEtHWjFibU4wYVc5dUlHRmtaQ2dnWVhKbmN5QXBJSHRjYmx4MFhIUmNkRngwWEhSY2RHcFJkV1Z5ZVM1bFlXTm9LQ0JoY21kekxDQm1kVzVqZEdsdmJpZ2dYeXdnWVhKbklDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUjJZWElnZEhsd1pTQTlJR3BSZFdWeWVTNTBlWEJsS0NCaGNtY2dLVHRjYmx4MFhIUmNkRngwWEhSY2RGeDBhV1lnS0NCMGVYQmxJRDA5UFNCY0ltWjFibU4wYVc5dVhDSWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkRngwYVdZZ0tDQWhiM0IwYVc5dWN5NTFibWx4ZFdVZ2ZId2dJWE5sYkdZdWFHRnpLQ0JoY21jZ0tTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBYSFJjZEd4cGMzUXVjSFZ6YUNnZ1lYSm5JQ2s3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSY2RGeDBYSFI5SUdWc2MyVWdhV1lnS0NCaGNtY2dKaVlnWVhKbkxteGxibWQwYUNBbUppQjBlWEJsSUNFOVBTQmNJbk4wY21sdVoxd2lJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEM4dklFbHVjM0JsWTNRZ2NtVmpkWEp6YVhabGJIbGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUmhaR1FvSUdGeVp5QXBPMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkRngwWEhSOUtUdGNibHgwWEhSY2RGeDBYSFI5S1NnZ1lYSm5kVzFsYm5SeklDazdYRzVjZEZ4MFhIUmNkRngwTHk4Z1JHOGdkMlVnYm1WbFpDQjBieUJoWkdRZ2RHaGxJR05oYkd4aVlXTnJjeUIwYnlCMGFHVmNibHgwWEhSY2RGeDBYSFF2THlCamRYSnlaVzUwSUdacGNtbHVaeUJpWVhSamFEOWNibHgwWEhSY2RGeDBYSFJwWmlBb0lHWnBjbWx1WnlBcElIdGNibHgwWEhSY2RGeDBYSFJjZEdacGNtbHVaMHhsYm1kMGFDQTlJR3hwYzNRdWJHVnVaM1JvTzF4dVhIUmNkRngwWEhSY2RDOHZJRmRwZEdnZ2JXVnRiM0o1TENCcFppQjNaU2R5WlNCdWIzUWdabWx5YVc1bklIUm9aVzVjYmx4MFhIUmNkRngwWEhRdkx5QjNaU0J6YUc5MWJHUWdZMkZzYkNCeWFXZG9kQ0JoZDJGNVhHNWNkRngwWEhSY2RGeDBmU0JsYkhObElHbG1JQ2dnYldWdGIzSjVJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBabWx5YVc1blUzUmhjblFnUFNCemRHRnlkRHRjYmx4MFhIUmNkRngwWEhSY2RHWnBjbVVvSUcxbGJXOXllU0FwTzF4dVhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdkR2hwY3p0Y2JseDBYSFJjZEgwc1hHNWNkRngwWEhRdkx5QlNaVzF2ZG1VZ1lTQmpZV3hzWW1GamF5Qm1jbTl0SUhSb1pTQnNhWE4wWEc1Y2RGeDBYSFJ5WlcxdmRtVTZJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwWEhScFppQW9JR3hwYzNRZ0tTQjdYRzVjZEZ4MFhIUmNkRngwYWxGMVpYSjVMbVZoWTJnb0lHRnlaM1Z0Wlc1MGN5d2dablZ1WTNScGIyNG9JRjhzSUdGeVp5QXBJSHRjYmx4MFhIUmNkRngwWEhSY2RIWmhjaUJwYm1SbGVEdGNibHgwWEhSY2RGeDBYSFJjZEhkb2FXeGxJQ2dnS0NCcGJtUmxlQ0E5SUdwUmRXVnllUzVwYmtGeWNtRjVLQ0JoY21jc0lHeHBjM1FzSUdsdVpHVjRJQ2tnS1NBK0lDMHhJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBYSFJzYVhOMExuTndiR2xqWlNnZ2FXNWtaWGdzSURFZ0tUdGNibHgwWEhSY2RGeDBYSFJjZEZ4MEx5OGdTR0Z1Wkd4bElHWnBjbWx1WnlCcGJtUmxlR1Z6WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkR2xtSUNnZ1ptbHlhVzVuSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RHbG1JQ2dnYVc1a1pYZ2dQ
14938RDBnWm1seWFXNW5UR1Z1WjNSb0lDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkRngwWm1seWFXNW5UR1Z1WjNSb0xTMDdYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkR2xtSUNnZ2FXNWtaWGdnUEQwZ1ptbHlhVzVuU1c1a1pYZ2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkRngwWEhSbWFYSnBibWRKYm1SbGVDMHRPMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkSDBwTzF4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RISmxkSFZ5YmlCMGFHbHpPMXh1WEhSY2RGeDBmU3hjYmx4MFhIUmNkQzh2SUVOb1pXTnJJR2xtSUdFZ1oybDJaVzRnWTJGc2JHSmhZMnNnYVhNZ2FXNGdkR2hsSUd4cGMzUXVYRzVjZEZ4MFhIUXZMeUJKWmlCdWJ5QmhjbWQxYldWdWRDQnBjeUJuYVhabGJpd2djbVYwZFhKdUlIZG9aWFJvWlhJZ2IzSWdibTkwSUd4cGMzUWdhR0Z6SUdOaGJHeGlZV05yY3lCaGRIUmhZMmhsWkM1Y2JseDBYSFJjZEdoaGN6b2dablZ1WTNScGIyNG9JR1p1SUNrZ2UxeHVYSFJjZEZ4MFhIUnlaWFIxY200Z1ptNGdQeUJxVVhWbGNua3VhVzVCY25KaGVTZ2dabTRzSUd4cGMzUWdLU0ErSUMweElEb2dJU0VvSUd4cGMzUWdKaVlnYkdsemRDNXNaVzVuZEdnZ0tUdGNibHgwWEhSY2RIMHNYRzVjZEZ4MFhIUXZMeUJTWlcxdmRtVWdZV3hzSUdOaGJHeGlZV05yY3lCbWNtOXRJSFJvWlNCc2FYTjBYRzVjZEZ4MFhIUmxiWEIwZVRvZ1puVnVZM1JwYjI0b0tTQjdYRzVjZEZ4MFhIUmNkR3hwYzNRZ1BTQmJYVHRjYmx4MFhIUmNkRngwWm1seWFXNW5UR1Z1WjNSb0lEMGdNRHRjYmx4MFhIUmNkRngwY21WMGRYSnVJSFJvYVhNN1hHNWNkRngwWEhSOUxGeHVYSFJjZEZ4MEx5OGdTR0YyWlNCMGFHVWdiR2x6ZENCa2J5QnViM1JvYVc1bklHRnVlVzF2Y21WY2JseDBYSFJjZEdScGMyRmliR1U2SUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MFhIUnNhWE4wSUQwZ2MzUmhZMnNnUFNCdFpXMXZjbmtnUFNCMWJtUmxabWx1WldRN1hHNWNkRngwWEhSY2RISmxkSFZ5YmlCMGFHbHpPMXh1WEhSY2RGeDBmU3hjYmx4MFhIUmNkQzh2SUVseklHbDBJR1JwYzJGaWJHVmtQMXh1WEhSY2RGeDBaR2x6WVdKc1pXUTZJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwWEhSeVpYUjFjbTRnSVd4cGMzUTdYRzVjZEZ4MFhIUjlMRnh1WEhSY2RGeDBMeThnVEc5amF5QjBhR1VnYkdsemRDQnBiaUJwZEhNZ1kzVnljbVZ1ZENCemRHRjBaVnh1WEhSY2RGeDBiRzlqYXpvZ1puVnVZM1JwYjI0b0tTQjdYRzVjZEZ4MFhIUmNkSE4wWVdOcklEMGdkVzVrWldacGJtVmtPMXh1WEhSY2RGeDBYSFJwWmlBb0lDRnRaVzF2Y25rZ0tTQjdYRzVjZEZ4MFhIUmNkRngwYzJWc1ppNWthWE5oWW14bEtDazdYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwY21WMGRYSnVJSFJvYVhNN1hHNWNkRngwWEhSOUxGeHVYSFJjZEZ4MEx5OGdTWE1nYVhRZ2JHOWphMlZrUDF4dVhIUmNkRngwYkc5amEyVmtPaUJtZFc1amRHbHZiaWdwSUh0Y2JseDBYSFJjZEZ4MGNtVjBkWEp1SUNGemRHRmphenRjYmx4MFhIUmNkSDBzWEc1Y2RGeDBYSFF2THlCRFlXeHNJR0ZzYkNCallXeHNZbUZqYTNNZ2QybDBhQ0IwYUdVZ1oybDJaVzRnWTI5dWRHVjRkQ0JoYm1RZ1lYSm5kVzFsYm5SelhHNWNkRngwWEhSbWFYSmxWMmwwYURvZ1puVnVZM1JwYjI0b0lHTnZiblJsZUhRc0lHRnlaM01nS1NCN1hHNWNkRngwWEhSY2RHbG1JQ2dnYkdsemRDQW1KaUFvSUNGbWFYSmxaQ0I4ZkNCemRHRmpheUFwSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkR0Z5WjNNZ1BTQmhjbWR6SUh4OElGdGRPMXh1WEhSY2RGeDBYSFJjZEdGeVozTWdQU0JiSUdOdmJuUmxlSFFzSUdGeVozTXVjMnhwWTJVZ1B5QmhjbWR6TG5Oc2FXTmxLQ2tnT2lCaGNtZHpJRjA3WEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0JtYVhKcGJtY2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUnpkR0ZqYXk1d2RYTm9LQ0JoY21keklDazdYRzVjZEZ4MFhIUmNkRngwZlNCbGJITmxJSHRjYmx4MFhIUmNkRngwWEhSY2RHWnBjbVVvSUdGeVozTWdLVHRjYmx4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBjbVYwZFhKdUlIUm9hWE03WEc1Y2RGeDBYSFI5TEZ4dVhIUmNkRngwTHk4Z1EyRnNiQ0JoYkd3Z2RHaGxJR05oYkd4aVlXTnJjeUIzYVhSb0lIUm9aU0JuYVhabGJpQmhjbWQxYldWdWRITmNibHgwWEhSY2RHWnBjbVU2SUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MFhIUnpaV3htTG1acGNtVlhhWFJvS0NCMGFHbHpMQ0JoY21kMWJXVnVkSE1nS1R0Y2JseDBYSFJjZEZ4MGNtVjBkWEp1SUhSb2FYTTdYRzVjZEZ4MFhIUjlMRnh1WEhSY2RGeDBMeThnVkc4Z2EyNXZkeUJwWmlCMGFHVWdZMkZzYkdKaFkydHpJR2hoZG1VZ1lXeHlaV0ZrZVNCaVpXVnVJR05oYkd4bFpDQmhkQ0JzWldGemRDQnZibU5sWEc1Y2RGeDBYSFJtYVhKbFpEb2dablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBYSFJjZEhKbGRIVnliaUFoSVdacGNtVmtPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMDdYRzVjYmx4MGNtVjBkWEp1SUhObGJHWTdYRzU5TzF4dVhHNWNibXBSZFdWeWVTNWxlSFJsYm1Rb2UxeHVYRzVjZEVSbFptVnljbVZrT2lCbWRXNWpkR2x2YmlnZ1puVnVZeUFwSUh0Y2JseDBYSFIyWVhJZ2RIVndiR1Z6SUQwZ1cxeHVYSFJjZEZ4MFhIUXZMeUJoWTNScGIyNHNJR0ZrWkNCc2FYTjBaVzVsY2l3Z2JHbHpkR1Z1WlhJZ2JHbHpkQ3dnWm1sdVlXd2djM1JoZEdWY2JseDBYSFJjZEZ4MFd5QmNJbkpsYzI5c2RtVmNJaXdnWENKa2IyNWxYQ0lzSUdwUmRXVnllUzVEWVd4c1ltRmphM01vWENKdmJtTmxJRzFsYlc5eWVWd2lLU3dnWENKeVpYTnZiSFpsWkZ3aUlGMHNYRzVjZEZ4MFhIUmNkRnNnWENKeVpXcGxZM1JjSWl3Z1hDSm1ZV2xzWENJc0lHcFJkV1Z5ZVM1RFlXeHNZbUZqYTNNb1hDSnZibU5sSUcxbGJXOXllVndpS1N3Z1hDSnlaV3BsWTNSbFpGd2lJRjBzWEc1Y2RGeDBYSFJjZEZzZ1hDSnViM1JwWm5sY0lpd2dYQ0p3Y205bmNtVnpjMXdpTENCcVVYVmxjbmt1UTJGc2JHSmhZMnR6S0Z3aWJXVnRiM0o1WENJcElGMWNibHgwWEhSY2RGMHNYRzVjZEZ4MFhIUnpkR0YwWlNBOUlGd2ljR1Z1WkdsdVoxd2lMRnh1WEhSY2RGeDBjSEp2YldselpTQTlJSHRjYmx4MFhIUmNkRngwYzNSaGRHVTZJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwWEhSY2RISmxkSFZ5YmlCemRHRjBaVHRjYmx4MFhIUmNkRngwZlN4Y2JseDBYSFJjZEZ4MFlXeDNZWGx6T2lCbWRXNWpkR2x2YmlncElIdGNibHgwWEhSY2RGeDBYSFJrWldabGNuSmxaQzVrYjI1bEtDQmhjbWQxYldWdWRITWdLUzVtWVdsc0tDQmhjbWQxYldWdWRITWdLVHRjYmx4MFhIUmNkRngwWEhSeVpYUjFjbTRnZEdocGN6dGNibHgwWEhSY2RGeDBmU3hjYmx4MFhIUmNkRngwZEdobGJqb2dablZ1WTNScGIyNG9JQzhxSUdadVJHOXVaU3dnWm01R1lXbHNMQ0JtYmxCeWIyZHlaWE56SUNvdklDa2dlMXh1WEhSY2RGeDBYSFJjZEhaaGNpQm1ibk1nUFNCaGNtZDFiV1Z1ZEhNN1hHNWNkRngwWEhSY2RGeDBjbVYwZFhKdUlHcFJkV1Z5ZVM1RVpXWmxjbkpsWkNobWRXNWpkR2x2YmlnZ2JtVjNSR1ZtWlhJZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhScVVYVmxjbmt1WldGamFDZ2dkSFZ3YkdWekxDQm1kVzVqZEdsdmJpZ2dhU3dnZEhWd2JHVWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkSFpoY2lCbWJpQTlJR3BSZFdWeWVTNXBjMFoxYm1OMGFXOXVLQ0JtYm5OYklHa2dYU0FwSUNZbUlHWnVjMXNnYVNCZE8xeHVYSFJjZEZ4MFhIUmNkRngwWEhRdkx5QmtaV1psY25KbFpGc2daRzl1WlNCOElHWmhhV3dnZkNCd2NtOW5jbVZ6Y3lCZElHWnZjaUJtYjNKM1lYSmthVzVuSUdGamRHbHZibk1nZEc4Z2JtVjNSR1ZtWlhKY2JseDBYSFJjZEZ4MFhIUmNkRngwWkdWbVpYSnlaV1JiSUhSMWNHeGxXekZkSUYwb1puVnVZM1JwYjI0b0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBkbUZ5SUhKbGRIVnlibVZrSUQwZ1ptNGdKaVlnWm00dVlYQndiSGtvSUhSb2FYTXNJR0Z5WjNWdFpXNTBjeUFwTzF4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEdsbUlDZ2djbVYwZFhKdVpXUWdKaVlnYWxGMVpYSjVMbWx6Um5WdVkzUnBiMjRvSUhKbGRIVnlibVZrTG5CeWIyMXBjMlVnS1NBcElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUmNkSEpsZEhWeWJtVmtMbkJ5YjIxcGMyVW9LVnh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkRngwWEhRdVpHOXVaU2dnYm1WM1JHVm1aWEl1Y21WemIyeDJaU0FwWEc1Y2RGeDBYSFJjZEZ4MFhIUmNkRngwWEhSY2RDNW1ZV2xzS0NCdVpYZEVaV1psY2k1eVpXcGxZM1FnS1Z4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEZ4MFhIUXVjSEp2WjNKbGMzTW9JRzVsZDBSbFptVnlMbTV2ZEdsbWVTQXBPMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBYSFJ1WlhkRVpXWmxjbHNnZEhWd2JHVmJJREFnWFNBcklGd2lWMmwwYUZ3aUlGMG9JSFJvYVhNZ1BUMDlJSEJ5YjIxcGMyVWdQeUJ1WlhkRVpXWmxjaTV3Y205dGFYTmxLQ2tnT2lCMGFHbHpMQ0JtYmlBL0lGc2djbVYwZFhKdVpXUWdYU0E2SUdGeVozVnRaVzUwY3lBcE8xeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBYSFJjZEZ4MGZTazdYRzVjZEZ4MFhIUmNkRngwWEhSOUtUdGNibHgwWEhSY2RGeDBYSFJjZEdadWN5QTlJRzUxYkd3N1hHNWNkRngwWEhSY2RGeDBmU2t1Y0hKdmJXbHpaU2dwTzF4dVhIUmNkRngwWEhSOUxGeHVYSFJjZEZ4MFhIUXZMeUJIWlhRZ1lTQndjbTl0YVhObElHWnZjaUIwYUdseklHUmxabVZ5Y21Wa1hHNWNkRngwWEhSY2RDOHZJRWxtSUc5aWFpQnBjeUJ3Y205MmFXUmxaQ3dnZEdobElIQnliMjFwYzJVZ1lYTndaV04wSUdseklHRmtaR1ZrSUhSdklIUm9aU0J2WW1wbFkzUmNibHgwWEhSY2RGeDBjSEp2YldselpUb2dablZ1WTNScGIyNG9JRzlpYWlBcElIdGNibHgwWEhSY2RGeDBYSFJ5WlhSMWNtNGdiMkpxSUNFOUlHNTFiR3dnUHlCcVVYVmxjbmt1WlhoMFpXNWtLQ0J2WW1vc0lIQnliMjFwYzJVZ0tTQTZJSEJ5YjIxcGMyVTdYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDBzWEc1Y2RGeDBYSFJrWldabGNuSmxaQ0E5SUh0OU8xeHVYRzVjZEZ4MEx5OGdTMlZsY0NCd2FYQmxJR1p2Y2lCaVlXTnJMV052YlhCaGRGeHVYSFJjZEhCeWIyMXBjMlV1Y0dsd1pTQTlJSEJ5YjIxcGMyVXVkR2hsYmp0Y2JseHVYSFJjZEM4dklFRmtaQ0JzYVhOMExYTndaV05wWm1saklHMWxkR2h2WkhOY2JseDBYSFJxVVhWbGNua3VaV0ZqYUNnZ2RIVndiR1Z6TENCbWRXNWpkR2x2YmlnZ2FTd2dkSFZ3YkdVZ0tTQjdYRzVjZEZ4MFhIUjJZWElnYkdsemRDQTlJSFIxY0d4bFd5QXlJRjBzWEc1Y2RGeDBYSFJjZEhOMFlYUmxVM1J5YVc1bklEMGdkSFZ3YkdWYklETWdYVHRjYmx4dVhIUmNkRngwTHk4Z2NISnZiV2x6WlZzZ1pHOXVaU0I4SUdaaGFXd2dmQ0J3Y205bmNtVnpjeUJkSUQwZ2JHbHpkQzVoWkdSY2JseDBYSFJjZEhCeWIyMXBjMlZiSUhSMWNHeGxXekZkSUYwZ1BTQnNhWE4wTG1Ga1pEdGNibHh1WEhSY2RGeDBMeThnU0dGdVpHeGxJSE4wWVhSbFhHNWNkRngwWEhScFppQW9JSE4wWVhSbFUzUnlhVzVuSUNrZ2UxeHVYSFJjZEZ4MFhIUnNhWE4wTG1Ga1pDaG1kVzVqZEdsdmJpZ3BJSHRjYmx4MFhIUmNkRngwWEhRdkx5QnpkR0YwWlNBOUlGc2djbVZ6YjJ4MlpXUWdmQ0J5WldwbFkzUmxaQ0JkWEc1Y2RGeDBYSFJjZEZ4MGMzUmhkR1VnUFNCemRHRjBaVk4wY21sdVp6dGNibHh1WEhSY2RGeDBYSFF2THlCYklISmxhbVZqZEY5c2FYTjBJSHdnY21WemIyeDJaVjlzYVhOMElGMHVaR2x6WVdKc1pUc2djSEp2WjNKbGMzTmZiR2x6ZEM1c2IyTnJYRzVjZEZ4MFhIUmNkSDBzSUhSMWNHeGxjMXNnYVNCZUlERWdYVnNnTWlCZExtUnBjMkZpYkdVc0lIUjFjR3hsYzFzZ01pQmRXeUF5SUYwdWJHOWpheUFwTzF4dVhIUmNkRngwZlZ4dVhHNWNkRngwWEhRdkx5QmtaV1psY25KbFpGc2djbVZ6YjJ4MlpTQjhJSEpsYW1WamRDQjhJRzV2ZEdsbWVTQmRYRzVjZEZ4MFhIUmtaV1psY25KbFpGc2dkSFZ3YkdWYk1GMGdYU0E5SUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MFhIUmtaV1psY25KbFpGc2dkSFZ3YkdWYk1GMGdLeUJjSWxkcGRHaGNJaUJkS0NCMGFHbHpJRDA5UFNCa1pXWmxjbkpsWkNBL0lIQnliMjFwYzJVZ09pQjBhR2x6TENCaGNtZDFiV1Z1ZEhNZ0tUdGNibHgwWEhSY2RGeDBjbVYwZFhKdUlIUm9hWE03WEc1Y2RGeDBYSFI5TzF4dVhIUmNkRngwWkdWbVpYSnlaV1JiSUhSMWNHeGxXekJkSUNzZ1hDSlhhWFJvWENJZ1hTQTlJR3hwYzNRdVptbHlaVmRwZEdnN1hHNWNkRngwZlNrN1hHNWNibHgwWEhRdkx5Qk5ZV3RsSUhSb1pTQmtaV1psY25KbFpDQmhJSEJ5YjIxcGMyVmNibHgwWEhSd2NtOXRhWE5sTG5CeWIyMXBjMlVvSUdSbFptVnljbVZrSUNrN1hHNWNibHgwWEhRdkx5QkRZV3hzSUdkcGRtVnVJR1oxYm1NZ2FXWWdZVzU1WEc1Y2RGeDBhV1lnS0NCbWRXNWpJQ2tnZTF4dVhIUmNkRngwWm5WdVl5NWpZV3hzS0NCa1pXWmxjbkpsWkN3Z1pHVm1aWEp5WldRZ0tUdGNibHgwWEhSOVhHNWNibHgwWEhRdkx5QkJiR3dnWkc5dVpTRmNibHgwWEhSeVpYUjFjbTRnWkdWbVpYSnlaV1E3WEc1Y2RIMHNYRzVjYmx4MEx5OGdSR1ZtWlhKeVpXUWdhR1ZzY0dWeVhHNWNkSGRvWlc0NklHWjFibU4wYVc5dUtDQnpkV0p2Y21ScGJtRjBaU0
14938F2S2lBc0lDNHVMaXdnYzNWaWIzSmthVzVoZEdWT0lDb3ZJQ2tnZTF4dVhIUmNkSFpoY2lCcElEMGdNQ3hjYmx4MFhIUmNkSEpsYzI5c2RtVldZV3gxWlhNZ1BTQnpiR2xqWlM1allXeHNLQ0JoY21kMWJXVnVkSE1nS1N4Y2JseDBYSFJjZEd4bGJtZDBhQ0E5SUhKbGMyOXNkbVZXWVd4MVpYTXViR1Z1WjNSb0xGeHVYRzVjZEZ4MFhIUXZMeUIwYUdVZ1kyOTFiblFnYjJZZ2RXNWpiMjF3YkdWMFpXUWdjM1ZpYjNKa2FXNWhkR1Z6WEc1Y2RGeDBYSFJ5WlcxaGFXNXBibWNnUFNCc1pXNW5kR2dnSVQwOUlERWdmSHdnS0NCemRXSnZjbVJwYm1GMFpTQW1KaUJxVVhWbGNua3VhWE5HZFc1amRHbHZiaWdnYzNWaWIzSmthVzVoZEdVdWNISnZiV2x6WlNBcElDa2dQeUJzWlc1bmRHZ2dPaUF3TEZ4dVhHNWNkRngwWEhRdkx5QjBhR1VnYldGemRHVnlJRVJsWm1WeWNtVmtMaUJKWmlCeVpYTnZiSFpsVm1Gc2RXVnpJR052Ym5OcGMzUWdiMllnYjI1c2VTQmhJSE5wYm1kc1pTQkVaV1psY25KbFpDd2dhblZ6ZENCMWMyVWdkR2hoZEM1Y2JseDBYSFJjZEdSbFptVnljbVZrSUQwZ2NtVnRZV2x1YVc1bklEMDlQU0F4SUQ4Z2MzVmliM0prYVc1aGRHVWdPaUJxVVhWbGNua3VSR1ZtWlhKeVpXUW9LU3hjYmx4dVhIUmNkRngwTHk4Z1ZYQmtZWFJsSUdaMWJtTjBhVzl1SUdadmNpQmliM1JvSUhKbGMyOXNkbVVnWVc1a0lIQnliMmR5WlhOeklIWmhiSFZsYzF4dVhIUmNkRngwZFhCa1lYUmxSblZ1WXlBOUlHWjFibU4wYVc5dUtDQnBMQ0JqYjI1MFpYaDBjeXdnZG1Gc2RXVnpJQ2tnZTF4dVhIUmNkRngwWEhSeVpYUjFjbTRnWm5WdVkzUnBiMjRvSUhaaGJIVmxJQ2tnZTF4dVhIUmNkRngwWEhSY2RHTnZiblJsZUhSeld5QnBJRjBnUFNCMGFHbHpPMXh1WEhSY2RGeDBYSFJjZEhaaGJIVmxjMXNnYVNCZElEMGdZWEpuZFcxbGJuUnpMbXhsYm1kMGFDQStJREVnUHlCemJHbGpaUzVqWVd4c0tDQmhjbWQxYldWdWRITWdLU0E2SUhaaGJIVmxPMXh1WEhSY2RGeDBYSFJjZEdsbUlDZ2dkbUZzZFdWeklEMDlQU0J3Y205bmNtVnpjMVpoYkhWbGN5QXBJSHRjYmx4MFhIUmNkRngwWEhSY2RHUmxabVZ5Y21Wa0xtNXZkR2xtZVZkcGRHZ29JR052Ym5SbGVIUnpMQ0IyWVd4MVpYTWdLVHRjYmx4MFhIUmNkRngwWEhSOUlHVnNjMlVnYVdZZ0tDQWhLQ0F0TFhKbGJXRnBibWx1WnlBcElDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFpHVm1aWEp5WldRdWNtVnpiMngyWlZkcGRHZ29JR052Ym5SbGVIUnpMQ0IyWVd4MVpYTWdLVHRjYmx4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RIMDdYRzVjZEZ4MFhIUjlMRnh1WEc1Y2RGeDBYSFJ3Y205bmNtVnpjMVpoYkhWbGN5d2djSEp2WjNKbGMzTkRiMjUwWlhoMGN5d2djbVZ6YjJ4MlpVTnZiblJsZUhSek8xeHVYRzVjZEZ4MEx5OGdRV1JrSUd4cGMzUmxibVZ5Y3lCMGJ5QkVaV1psY25KbFpDQnpkV0p2Y21ScGJtRjBaWE03SUhSeVpXRjBJRzkwYUdWeWN5QmhjeUJ5WlhOdmJIWmxaRnh1WEhSY2RHbG1JQ2dnYkdWdVozUm9JRDRnTVNBcElIdGNibHgwWEhSY2RIQnliMmR5WlhOelZtRnNkV1Z6SUQwZ2JtVjNJRUZ5Y21GNUtDQnNaVzVuZEdnZ0tUdGNibHgwWEhSY2RIQnliMmR5WlhOelEyOXVkR1Y0ZEhNZ1BTQnVaWGNnUVhKeVlYa29JR3hsYm1kMGFDQXBPMXh1WEhSY2RGeDBjbVZ6YjJ4MlpVTnZiblJsZUhSeklEMGdibVYzSUVGeWNtRjVLQ0JzWlc1bmRHZ2dLVHRjYmx4MFhIUmNkR1p2Y2lBb0lEc2dhU0E4SUd4bGJtZDBhRHNnYVNzcklDa2dlMXh1WEhSY2RGeDBYSFJwWmlBb0lISmxjMjlzZG1WV1lXeDFaWE5iSUdrZ1hTQW1KaUJxVVhWbGNua3VhWE5HZFc1amRHbHZiaWdnY21WemIyeDJaVlpoYkhWbGMxc2dhU0JkTG5CeWIyMXBjMlVnS1NBcElIdGNibHgwWEhSY2RGeDBYSFJ5WlhOdmJIWmxWbUZzZFdWeld5QnBJRjB1Y0hKdmJXbHpaU2dwWEc1Y2RGeDBYSFJjZEZ4MFhIUXVaRzl1WlNnZ2RYQmtZWFJsUm5WdVl5Z2dhU3dnY21WemIyeDJaVU52Ym5SbGVIUnpMQ0J5WlhOdmJIWmxWbUZzZFdWeklDa2dLVnh1WEhSY2RGeDBYSFJjZEZ4MExtWmhhV3dvSUdSbFptVnljbVZrTG5KbGFtVmpkQ0FwWEc1Y2RGeDBYSFJjZEZ4MFhIUXVjSEp2WjNKbGMzTW9JSFZ3WkdGMFpVWjFibU1vSUdrc0lIQnliMmR5WlhOelEyOXVkR1Y0ZEhNc0lIQnliMmR5WlhOelZtRnNkV1Z6SUNrZ0tUdGNibHgwWEhSY2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RGeDBYSFF0TFhKbGJXRnBibWx1Wnp0Y2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MGZWeHVYSFJjZEgxY2JseHVYSFJjZEM4dklFbG1JSGRsSjNKbElHNXZkQ0IzWVdsMGFXNW5JRzl1SUdGdWVYUm9hVzVuTENCeVpYTnZiSFpsSUhSb1pTQnRZWE4wWlhKY2JseDBYSFJwWmlBb0lDRnlaVzFoYVc1cGJtY2dLU0I3WEc1Y2RGeDBYSFJrWldabGNuSmxaQzV5WlhOdmJIWmxWMmwwYUNnZ2NtVnpiMngyWlVOdmJuUmxlSFJ6TENCeVpYTnZiSFpsVm1Gc2RXVnpJQ2s3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBjbVYwZFhKdUlHUmxabVZ5Y21Wa0xuQnliMjFwYzJVb0tUdGNibHgwZlZ4dWZTazdYRzVjYmx4dUx5OGdWR2hsSUdSbFptVnljbVZrSUhWelpXUWdiMjRnUkU5TklISmxZV1I1WEc1MllYSWdjbVZoWkhsTWFYTjBPMXh1WEc1cVVYVmxjbmt1Wm00dWNtVmhaSGtnUFNCbWRXNWpkR2x2YmlnZ1ptNGdLU0I3WEc1Y2RDOHZJRUZrWkNCMGFHVWdZMkZzYkdKaFkydGNibHgwYWxGMVpYSjVMbkpsWVdSNUxuQnliMjFwYzJVb0tTNWtiMjVsS0NCbWJpQXBPMXh1WEc1Y2RISmxkSFZ5YmlCMGFHbHpPMXh1ZlR0Y2JseHVhbEYxWlhKNUxtVjRkR1Z1WkNoN1hHNWNkQzh2SUVseklIUm9aU0JFVDAwZ2NtVmhaSGtnZEc4Z1ltVWdkWE5sWkQ4Z1UyVjBJSFJ2SUhSeWRXVWdiMjVqWlNCcGRDQnZZMk4xY25NdVhHNWNkR2x6VW1WaFpIazZJR1poYkhObExGeHVYRzVjZEM4dklFRWdZMjkxYm5SbGNpQjBieUIwY21GamF5Qm9iM2NnYldGdWVTQnBkR1Z0Y3lCMGJ5QjNZV2wwSUdadmNpQmlaV1p2Y21WY2JseDBMeThnZEdobElISmxZV1I1SUdWMlpXNTBJR1pwY21WekxpQlRaV1VnSXpZM09ERmNibHgwY21WaFpIbFhZV2wwT2lBeExGeHVYRzVjZEM4dklFaHZiR1FnS0c5eUlISmxiR1ZoYzJVcElIUm9aU0J5WldGa2VTQmxkbVZ1ZEZ4dVhIUm9iMnhrVW1WaFpIazZJR1oxYm1OMGFXOXVLQ0JvYjJ4a0lDa2dlMXh1WEhSY2RHbG1JQ2dnYUc5c1pDQXBJSHRjYmx4MFhIUmNkR3BSZFdWeWVTNXlaV0ZrZVZkaGFYUXJLenRjYmx4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MGFsRjFaWEo1TG5KbFlXUjVLQ0IwY25WbElDazdYRzVjZEZ4MGZWeHVYSFI5TEZ4dVhHNWNkQzh2SUVoaGJtUnNaU0IzYUdWdUlIUm9aU0JFVDAwZ2FYTWdjbVZoWkhsY2JseDBjbVZoWkhrNklHWjFibU4wYVc5dUtDQjN
14938ZV2wwSUNrZ2UxeHVYRzVjZEZ4MEx5OGdRV0p2Y25RZ2FXWWdkR2hsY21VZ1lYSmxJSEJsYm1ScGJtY2dhRzlzWkhNZ2IzSWdkMlVuY21VZ1lXeHlaV0ZrZVNCeVpXRmtlVnh1WEhSY2RHbG1JQ2dnZDJGcGRDQTlQVDBnZEhKMVpTQS9JQzB0YWxGMVpYSjVMbkpsWVdSNVYyRnBkQ0E2SUdwUmRXVnllUzVwYzFKbFlXUjVJQ2tnZTF4dVhIUmNkRngwY21WMGRYSnVPMXh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRkpsYldWdFltVnlJSFJvWVhRZ2RHaGxJRVJQVFNCcGN5QnlaV0ZrZVZ4dVhIUmNkR3BSZFdWeWVTNXBjMUpsWVdSNUlEMGdkSEoxWlR0Y2JseHVYSFJjZEM4dklFbG1JR0VnYm05eWJXRnNJRVJQVFNCU1pXRmtlU0JsZG1WdWRDQm1hWEpsWkN3Z1pHVmpjbVZ0Wlc1MExDQmhibVFnZDJGcGRDQnBaaUJ1WldWa0lHSmxYRzVjZEZ4MGFXWWdLQ0IzWVdsMElDRTlQU0IwY25WbElDWW1JQzB0YWxGMVpYSjVMbkpsWVdSNVYyRnBkQ0ErSURBZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200N1hHNWNkRngwZlZ4dVhHNWNkRngwTHk4Z1NXWWdkR2hsY21VZ1lYSmxJR1oxYm1OMGFXOXVjeUJpYjNWdVpDd2dkRzhnWlhobFkzVjBaVnh1WEhSY2RISmxZV1I1VEdsemRDNXlaWE52YkhabFYybDBhQ2dnWkc5amRXMWxiblFzSUZzZ2FsRjFaWEo1SUYwZ0tUdGNibHh1WEhSY2RDOHZJRlJ5YVdkblpYSWdZVzU1SUdKdmRXNWtJSEpsWVdSNUlHVjJaVzUwYzF4dVhIUmNkR2xtSUNnZ2FsRjFaWEo1TG1adUxuUnlhV2RuWlhKSVlXNWtiR1Z5SUNrZ2UxeHVYSFJjZEZ4MGFsRjFaWEo1S0NCa2IyTjFiV1Z1ZENBcExuUnlhV2RuWlhKSVlXNWtiR1Z5S0NCY0luSmxZV1I1WENJZ0tUdGNibHgwWEhSY2RHcFJkV1Z5ZVNnZ1pHOWpkVzFsYm5RZ0tTNXZabVlvSUZ3aWNtVmhaSGxjSWlBcE8xeHVYSFJjZEgxY2JseDBmVnh1ZlNrN1hHNWNiaThxS2x4dUlDb2dWR2hsSUhKbFlXUjVJR1YyWlc1MElHaGhibVJzWlhJZ1lXNWtJSE5sYkdZZ1kyeGxZVzUxY0NCdFpYUm9iMlJjYmlBcUwxeHVablZ1WTNScGIyNGdZMjl0Y0d4bGRHVmtLQ2tnZTF4dVhIUmtiMk4xYldWdWRDNXlaVzF2ZG1WRmRtVnVkRXhwYzNSbGJtVnlLQ0JjSWtSUFRVTnZiblJsYm5STWIyRmtaV1JjSWl3Z1kyOXRjR3hsZEdWa0xDQm1ZV3h6WlNBcE8xeHVYSFIzYVc1a2IzY3VjbVZ0YjNabFJYWmxiblJNYVhOMFpXNWxjaWdnWENKc2IyRmtYQ0lzSUdOdmJYQnNaWFJsWkN3Z1ptRnNjMlVnS1R0Y2JseDBhbEYxWlhKNUxuSmxZV1I1S0NrN1hHNTlYRzVjYm1wUmRXVnllUzV5WldGa2VTNXdjbTl0YVhObElEMGdablZ1WTNScGIyNG9JRzlpYWlBcElIdGNibHgwYVdZZ0tDQWhjbVZoWkhsTWFYTjBJQ2tnZTF4dVhHNWNkRngwY21WaFpIbE1hWE4wSUQwZ2FsRjFaWEo1TGtSbFptVnljbVZrS0NrN1hHNWNibHgwWEhRdkx5QkRZWFJqYUNCallYTmxjeUIzYUdWeVpTQWtLR1J2WTNWdFpXNTBLUzV5WldGa2VTZ3BJR2x6SUdOaGJHeGxaQ0JoWm5SbGNpQjBhR1VnWW5KdmQzTmxjaUJsZG1WdWRDQm9ZWE1nWVd4eVpXRmtlU0J2WTJOMWNuSmxaQzVjYmx4MFhIUXZMeUJYWlNCdmJtTmxJSFJ5YVdWa0lIUnZJ
14938SFZ6WlNCeVpXRmtlVk4wWVhSbElGd2lhVzUwWlhKaFkzUnBkbVZjSWlCb1pYSmxMQ0JpZFhRZ2FYUWdZMkYxYzJWa0lHbHpjM1ZsY3lCc2FXdGxJSFJvWlNCdmJtVmNibHgwWEhRdkx5QmthWE5qYjNabGNtVmtJR0o1SUVOb2NtbHpVeUJvWlhKbE9pQm9kSFJ3T2k4dlluVm5jeTVxY1hWbGNua3VZMjl0TDNScFkydGxkQzh4TWpJNE1pTmpiMjF0Wlc1ME9qRTFYRzVjZEZ4MGFXWWdLQ0JrYjJOMWJXVnVkQzV5WldGa2VWTjBZWFJsSUQwOVBTQmNJbU52YlhCc1pYUmxYQ0lnS1NCN1hHNWNkRngwWEhRdkx5QklZVzVrYkdVZ2FYUWdZWE41Ym1Ob2NtOXViM1Z6YkhrZ2RHOGdZV3hzYjNjZ2MyTnlhWEIwY3lCMGFHVWdiM0J3YjNKMGRXNXBkSGtnZEc4Z1pHVnNZWGtnY21WaFpIbGNibHgwWEhSY2RITmxkRlJwYldWdmRYUW9JR3BSZFdWeWVTNXlaV0ZrZVNBcE8xeHVYRzVjZEZ4MGZTQmxiSE5sSUh0Y2JseHVYSFJjZEZ4MEx5OGdWWE5sSUhSb1pTQm9ZVzVrZVNCbGRtVnVkQ0JqWVd4c1ltRmphMXh1WEhSY2RGeDBaRzlqZFcxbGJuUXVZV1JrUlhabGJuUk1hWE4wWlc1bGNpZ2dYQ0pFVDAxRGIyNTBaVzUwVEc5aFpHVmtYQ0lzSUdOdmJYQnNaWFJsWkN3Z1ptRnNjMlVnS1R0Y2JseHVYSFJjZEZ4MEx5OGdRU0JtWVd4c1ltRmpheUIwYnlCM2FXNWtiM2N1YjI1c2IyRmtMQ0IwYUdGMElIZHBiR3dnWVd4M1lYbHpJSGR2Y210Y2JseDBYSFJjZEhkcGJtUnZkeTVoWkdSRmRtVnVkRXhwYzNSbGJtVnlLQ0JjSW14dllXUmNJaXdnWTI5dGNHeGxkR1ZrTENCbVlXeHpaU0FwTzF4dVhIUmNkSDFjYmx4MGZWeHVYSFJ5WlhSMWNtNGdjbVZoWkhsTWFYTjBMbkJ5YjIxcGMyVW9JRzlpYWlBcE8xeHVmVHRjYmx4dUx5OGdTMmxqYXlCdlptWWdkR2hsSUVSUFRTQnlaV0ZrZVNCamFHVmpheUJsZG1WdUlHbG1JSFJvWlNCMWMyVnlJR1J2WlhNZ2JtOTBYRzVxVVhWbGNua3VjbVZoWkhrdWNISnZiV2x6WlNncE8xeHVYRzVjYmx4dVhHNHZMeUJOZFd4MGFXWjFibU4wYVc5dVlXd2diV1YwYUc5a0lIUnZJR2RsZENCaGJtUWdjMlYwSUhaaGJIVmxjeUJ2WmlCaElHTnZiR3hsWTNScGIyNWNiaTh2SUZSb1pTQjJZV3gxWlM5eklHTmhiaUJ2Y0hScGIyNWhiR3g1SUdKbElHVjRaV04xZEdWa0lHbG1JR2wwSjNNZ1lTQm1kVzVqZEdsdmJseHVkbUZ5SUdGalkyVnpjeUE5SUdwUmRXVnllUzVoWTJObGMzTWdQU0JtZFc1amRHbHZiaWdnWld4bGJYTXNJR1p1TENCclpYa3NJSFpoYkhWbExDQmphR0ZwYm1GaWJHVXNJR1Z0Y0hSNVIyVjBMQ0J5WVhjZ0tTQjdYRzVjZEhaaGNpQnBJRDBnTUN4Y2JseDBYSFJzWlc0Z1BTQmxiR1Z0Y3k1c1pXNW5kR2dzWEc1Y2RGeDBZblZzYXlBOUlHdGxlU0E5UFNCdWRXeHNPMXh1WEc1Y2RDOHZJRk5sZEhNZ2JXRnVlU0IyWVd4MVpYTmNibHgwYVdZZ0tDQnFVWFZsY25rdWRIbHdaU2dnYTJWNUlDa2dQVDA5SUZ3aWIySnFaV04wWENJZ0tTQjdYRzVjZEZ4MFkyaGhhVzVoWW14bElEMGdkSEoxWlR0Y2JseDBYSFJtYjNJZ0tDQnBJR2x1SUd0bGVTQXBJSHRjYmx4MFhIUmNkR3BSZFdWeWVTNWhZMk5sYzNNb0lHVnNaVzF6TENCbWJpd2dhU3dnYTJWNVcybGRMQ0IwY25WbExDQmxiWEIwZVVkbGRDd2djbUYzSUNrN1hHNWNkRngwZlZ4dVhHNWNkQzh2SUZObGRITWdiMjVsSUhaaGJIVmxYRzVjZEgwZ1pXeHpaU0JwWmlBb0lIWmhiSFZsSUNFOVBTQjFibVJsWm1sdVpXUWdLU0I3WEc1Y2RGeDBZMmhoYVc1aFlteGxJRDBnZEhKMVpUdGNibHh1WEhSY2RHbG1JQ2dnSVdwUmRXVnllUzVwYzBaMWJtTjBhVzl1S0NCMllXeDFaU0FwSUNrZ2UxeHVYSFJjZEZ4MGNtRjNJRDBnZEhKMVpUdGNibHgwWEhSOVhHNWNibHgwWEhScFppQW9JR0oxYkdzZ0tTQjdYRzVjZEZ4MFhIUXZMeUJDZFd4cklHOXdaWEpoZEdsdmJuTWdjblZ1SUdGbllXbHVjM1FnZEdobElHVnVkR2x5WlNCelpYUmNibHgwWEhSY2RHbG1JQ2dnY21GM0lDa2dlMXh1WEhSY2RGeDBYSFJtYmk1allXeHNLQ0JsYkdWdGN5d2dkbUZzZFdVZ0tUdGNibHgwWEhSY2RGeDBabTRnUFNCdWRXeHNPMXh1WEc1Y2RGeDBYSFF2THlBdUxpNWxlR05sY0hRZ2QyaGxiaUJsZUdWamRYUnBibWNnWm5WdVkzUnBiMjRnZG1Gc2RXVnpYRzVjZEZ4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MFhIUmlkV3hySUQwZ1ptNDdYRzVjZEZ4MFhIUmNkR1p1SUQwZ1puVnVZM1JwYjI0b0lHVnNaVzBzSUd0bGVTd2dkbUZzZFdVZ0tTQjdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJR0oxYkdzdVkyRnNiQ2dnYWxGMVpYSjVLQ0JsYkdWdElDa3NJSFpoYkhWbElDazdYRzVjZEZ4MFhIUmNkSDA3WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmVnh1WEc1Y2RGeDBhV1lnS0NCbWJpQXBJSHRjYmx4MFhIUmNkR1p2Y2lBb0lEc2dhU0E4SUd4bGJqc2dhU3NySUNrZ2UxeHVYSFJjZEZ4MFhIUm1iaWdnWld4bGJYTmJhVjBzSUd0bGVTd2djbUYzSUQ4Z2RtRnNkV1VnT2lCMllXeDFaUzVqWVd4c0tDQmxiR1Z0YzF0cFhTd2dhU3dnWm00b0lHVnNaVzF6VzJsZExDQnJaWGtnS1NBcElDazdYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYSFI5WEc1Y2JseDBjbVYwZFhKdUlHTm9ZV2x1WVdKc1pTQS9YRzVjZEZ4MFpXeGxiWE1nT2x4dVhHNWNkRngwTHk4Z1IyVjBjMXh1WEhSY2RHSjFiR3NnUDF4dVhIUmNkRngwWm00dVkyRnNiQ2dnWld4bGJYTWdLU0E2WEc1Y2RGeDBYSFJzWlc0Z1B5Qm1iaWdnWld4bGJYTmJNRjBzSUd0bGVTQXBJRG9nWlcxd2RIbEhaWFE3WEc1OU8xeHVYRzVjYmk4cUtseHVJQ29nUkdWMFpYSnRhVzVsY3lCM2FHVjBhR1Z5SUdGdUlHOWlhbVZqZENCallXNGdhR0YyWlNCa1lYUmhYRzRnS2k5Y2JtcFJkV1Z5ZVM1aFkyTmxjSFJFWVhSaElEMGdablZ1WTNScGIyNG9JRzkzYm1WeUlDa2dlMXh1WEhRdkx5QkJZMk5sY0hSeklHOXViSGs2WEc1Y2RDOHZJQ0F0SUU1dlpHVmNibHgwTHk4Z0lDQWdMU0JPYjJSbExrVk1SVTFGVGxSZlRrOUVSVnh1WEhRdkx5QWdJQ0F0SUU1dlpHVXVSRTlEVlUxRlRsUmZUazlFUlZ4dVhIUXZMeUFnTFNCUFltcGxZM1JjYmx4MEx5OGdJQ0FnTFNCQmJubGNibHgwTHlvZ2FuTm9hVzUwSUMxWE1ERTRJQ292WEc1Y2RISmxkSFZ5YmlCdmQyNWxjaTV1YjJSbFZIbHdaU0E5UFQwZ01TQjhmQ0J2ZDI1bGNpNXViMlJsVkhsd1pTQTlQVDBnT1NCOGZDQWhLQ0FyYjNkdVpYSXVibTlrWlZSNWNHVWdLVHRjYm4wN1hHNWNibHh1Wm5WdVkzUnBiMjRnUkdGMFlTZ3BJSHRjYmx4MEx5OGdVM1Z3Y0c5eWREb2dRVzVrY205cFpEdzBMRnh1WEhRdkx5QlBiR1FnVjJWaVMybDBJR1J2WlhNZ2JtOTBJR2hoZG1VZ1QySnFaV04wTG5CeVpYWmxiblJGZUhSbGJuTnBiMjV6TDJaeVpXVjZaU0J0WlhSb2IyUXNYRzVjZEM4dklISmxkSFZ5YmlCdVpYY2daVzF3ZEhrZ2IySnFaV04wSUdsdWMzUmxZV1FnZDJsMGFDQnVieUJiVzNObGRGMWRJR0ZqWTJWemMyOXlYRzVjZEU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTZ2dkR2hwY3k1all
14938XTm9aU0E5SUh0OUxDQXdMQ0I3WEc1Y2RGeDBaMlYwT2lCbWRXNWpkR2x2YmlncElIdGNibHgwWEhSY2RISmxkSFZ5YmlCN2ZUdGNibHgwWEhSOVhHNWNkSDBwTzF4dVhHNWNkSFJvYVhNdVpYaHdZVzVrYnlBOUlHcFJkV1Z5ZVM1bGVIQmhibVJ2SUNzZ1JHRjBZUzUxYVdRckt6dGNibjFjYmx4dVJHRjBZUzUxYVdRZ1BTQXhPMXh1UkdGMFlTNWhZMk5sY0hSeklEMGdhbEYxWlhKNUxtRmpZMlZ3ZEVSaGRHRTdYRzVjYmtSaGRHRXVjSEp2ZEc5MGVYQmxJRDBnZTF4dVhIUnJaWGs2SUdaMWJtTjBhVzl1S0NCdmQyNWxjaUFwSUh0Y2JseDBYSFF2THlCWFpTQmpZVzRnWVdOalpYQjBJR1JoZEdFZ1ptOXlJRzV2YmkxbGJHVnRaVzUwSUc1dlpHVnpJR2x1SUcxdlpHVnliaUJpY205M2MyVnljeXhjYmx4MFhIUXZMeUJpZFhRZ2QyVWdjMmh2ZFd4a0lHNXZkQ3dnYzJWbElDTTRNek0xTGx4dVhIUmNkQzh2SUVGc2QyRjVjeUJ5WlhSMWNtNGdkR2hsSUd0bGVTQm1iM0lnWVNCbWNtOTZaVzRnYjJKcVpXTjBMbHh1WEhSY2RHbG1JQ2dnSVVSaGRHRXVZV05qWlhCMGN5Z2diM2R1WlhJZ0tTQXBJSHRjYmx4MFhIUmNkSEpsZEhWeWJpQXdPMXh1WEhSY2RIMWNibHh1WEhSY2RIWmhjaUJrWlhOamNtbHdkRzl5SUQwZ2UzMHNYRzVjZEZ4MFhIUXZMeUJEYUdWamF5QnBaaUIwYUdVZ2IzZHVaWElnYjJKcVpXTjBJR0ZzY21WaFpIa2dhR0Z6SUdFZ1kyRmphR1VnYTJWNVhHNWNkRngwWEhSMWJteHZZMnNnUFNCdmQyNWxjbHNnZEdocGN5NWxlSEJoYm1SdklGMDdYRzVjYmx4MFhIUXZMeUJKWmlCdWIzUXNJR055WldGMFpTQnZibVZjYmx4MFhIUnBaaUFvSUNGMWJteHZZMnNnS1NCN1hHNWNkRngwWEhSMWJteHZZMnNnUFNCRVlYUmhMblZwWkNzck8xeHVYRzVjZEZ4MFhIUXZMeUJUWldOMWNtVWdhWFFnYVc0Z1lTQnViMjR0Wlc1MWJXVnlZV0pzWlN3Z2JtOXVMWGR5YVhSaFlteGxJSEJ5YjNCbGNuUjVYRzVjZEZ4MFhIUjBjbmtnZTF4dVhIUmNkRngwWEhSa1pYTmpjbWx3ZEc5eVd5QjBhR2x6TG1WNGNHRnVaRzhnWFNBOUlIc2dkbUZzZFdVNklIVnViRzlqYXlCOU8xeHVYSFJjZEZ4MFhIUlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkR2xsY3lnZ2IzZHVaWElzSUdSbGMyTnlhWEIwYjNJZ0tUdGNibHh1WEhSY2RGeDBMeThnVTNWd2NHOXlkRG9nUVc1a2NtOXBaRHcwWEc1Y2RGeDBYSFF2THlCR1lXeHNZbUZqYXlCMGJ5QmhJR3hsYzNNZ2MyVmpkWEpsSUdSbFptbHVhWFJwYjI1Y2JseDBYSFJjZEgwZ1kyRjBZMmdnS0NCbElDa2dlMXh1WEhSY2RGeDBYSFJrWlhOamNtbHdkRzl5V3lCMGFHbHpMbVY0Y0dGdVpHOGdYU0E5SUhWdWJHOWphenRjYmx4MFhIUmNkRngwYWxGMVpYSjVMbVY0ZEdWdVpDZ2diM2R1WlhJc0lHUmxjMk55YVhCMGIzSWdLVHRjYmx4MFhIUmNkSDFjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJGYm5OMWNtVWdkR2hsSUdOaFkyaGxJRzlpYW1WamRGeHVYSFJjZEdsbUlDZ2dJWFJvYVhNdVkyRmphR1ZiSUhWdWJHOWpheUJkSUNrZ2UxeHVYSFJjZEZ4MGRHaHBjeTVqWVdOb1pWc2dkVzVzYjJOcklGMGdQU0I3ZlR0Y2JseDBYSFI5WEc1Y2JseDBYSFJ5WlhSMWNtNGdkVzVzYjJOck8xeHVYSFI5TEZ4dVhIUnpaWFE2SUdaMWJtTjBhVzl1S0NCdmQyNWxjaXdnWkdGMFlTd2dkbUZzZFdVZ0tTQjdYRzVjZEZ4MGRtRnlJSEJ5YjNBc1hHNWNkRngwWEhRdkx5QlVhR1Z5WlNCdFlYa2dZbVVnWVc0Z2RXNXNiMk5ySUdGemMybG5ibVZrSUhSdklIUm9hWE1nYm05a1pTeGNibHgwWEhSY2RDOHZJR2xtSUhSb1pYSmxJR2x6SUc1dklHVnVkSEo1SUdadmNpQjBhR2x6SUZ3aWIzZHVaWEpjSWl3Z1kzSmxZWFJsSUc5dVpTQnBibXhwYm1WY2JseDBYSFJjZEM4dklHRnVaQ0J6WlhRZ2RHaGxJSFZ1Ykc5amF5QmhjeUIwYUc5MVoyZ2dZVzRnYjNkdVpYSWdaVzUwY25rZ2FHRmtJR0ZzZDJGNWN5QmxlR2x6ZEdWa1hHNWNkRngwWEhSMWJteHZZMnNnUFNCMGFHbHpMbXRsZVNnZ2IzZHVaWElnS1N4Y2JseDBYSFJjZEdOaFkyaGxJRDBnZEdocGN5NWpZV05vWlZzZ2RXNXNiMk5ySUYwN1hHNWNibHgwWEhRdkx5QklZVzVrYkdVNklGc2diM2R1WlhJc0lHdGxlU3dnZG1Gc2RXVWdYU0JoY21kelhHNWNkRngwYVdZZ0tDQjBlWEJsYjJZZ1pHRjBZU0E5UFQwZ1hDSnpkSEpwYm1kY0lpQXBJSHRjYmx4MFhIUmNkR05oWTJobFd5QmtZWFJoSUYwZ1BTQjJZV3gxWlR0Y2JseHVYSFJjZEM4dklFaGhibVJzWlRvZ1d5QnZkMjVsY2l3Z2V5QndjbTl3WlhKMGFXVnpJSDBnWFNCaGNtZHpYRzVjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEM4dklFWnlaWE5vSUdGemMybG5ibTFsYm5SeklHSjVJRzlpYW1WamRDQmhjbVVnYzJoaGJHeHZkeUJqYjNCcFpXUmNibHgwWEhSY2RHbG1JQ2dnYWxGMVpYSjVMbWx6Ulcxd2RIbFBZbXBsWTNRb0lHTmhZMmhsSUNrZ0tTQjdYRzVjZEZ4MFhIUmNkR3BSZFdWeWVTNWxlSFJsYm1Rb0lIUm9hWE11WTJGamFHVmJJSFZ1Ykc5amF5QmRMQ0JrWVhSaElDazdYRzVjZEZ4MFhIUXZMeUJQZEdobGNuZHBjMlVzSUdOdmNIa2dkR2hsSUhCeWIzQmxjblJwWlhNZ2IyNWxMV0o1TFc5dVpTQjBieUIwYUdVZ1kyRmphR1VnYjJKcVpXTjBYRzVjZEZ4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MFhIUm1iM0lnS0NCd2NtOXdJR2x1SUdSaGRHRWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFkyRmphR1ZiSUhCeWIzQWdYU0E5SUdSaGRHRmJJSEJ5YjNBZ1hUdGNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHgwWEhSeVpYUjFjbTRnWTJGamFHVTdYRzVjZEgwc1hHNWNkR2RsZERvZ1puVnVZM1JwYjI0b0lHOTNibVZ5TENCclpYa2dLU0I3WEc1Y2RGeDBMeThnUldsMGFHVnlJR0VnZG1Gc2FXUWdZMkZqYUdVZ2FYTWdabTkxYm1Rc0lHOXlJSGRwYkd3Z1ltVWdZM0psWVhSbFpDNWNibHgwWEhRdkx5Qk9aWGNnWTJGamFHVnpJSGRwYkd3Z1ltVWdZM0psWVhSbFpDQmhibVFnZEdobElIVnViRzlqYXlCeVpYUjFjbTVsWkN4Y2JseDBYSFF2THlCaGJHeHZkMmx1WnlCa2FYSmxZM1FnWVdOalpYTnpJSFJ2SUhSb1pTQnVaWGRzZVNCamNtVmhkR1ZrWEc1Y2RGeDBMeThnWlcxd2RIa2daR0YwWVNCdlltcGxZM1F1SUVFZ2RtRnNhV1FnYjNkdVpYSWdiMkpxWldOMElHMTFjM1FnWW1VZ2NISnZkbWxrWldRdVhHNWNkRngwZG1GeUlHTmhZMmhsSUQwZ2RHaHBjeTVqWVdOb1pWc2dkR2hwY3k1clpYa29JRzkzYm1WeUlDa2dYVHRjYmx4dVhIUmNkSEpsZEhWeWJpQnJaWGtnUFQwOUlIVnVaR1ZtYVc1bFpDQS9YRzVjZEZ4MFhIUmpZV05vWlNBNklHTmhZMmhsV3lCclpYa2dYVHRjYmx4MGZTeGNibHgwWVdOalpYTnpPaUJtZFc1amRHbHZiaWdnYjNkdVpYSXNJR3RsZVN3Z2RtRnNkV1VnS1NCN1hHNWNkRngwZG1GeUlITjBiM0psWkR0Y2JseDBYSFF2THlCSmJpQmpZWE5sY3lCM2FHVnlaU0JsYVhSb1pYSTZYRzVjZEZ4MEx5OWNibHgwWEhRdkx5QWdJREV1SUU1dklHdGxlU0IzWVhNZ2MzQmxZMmxtYVdWa1hHNWNkRngwTHk4Z0lDQXlMaUJCSUhOMGNtbHVaeUJ
14938yWlhrZ2QyRnpJSE53WldOcFptbGxaQ3dnWW5WMElHNXZJSFpoYkhWbElIQnliM1pwWkdWa1hHNWNkRngwTHk5Y2JseDBYSFF2THlCVVlXdGxJSFJvWlNCY0luSmxZV1JjSWlCd1lYUm9JR0Z1WkNCaGJHeHZkeUIwYUdVZ1oyVjBJRzFsZEdodlpDQjBieUJrWlhSbGNtMXBibVZjYmx4MFhIUXZMeUIzYUdsamFDQjJZV3gxWlNCMGJ5QnlaWFIxY200c0lISmxjM0JsWTNScGRtVnNlU0JsYVhSb1pYSTZYRzVjZEZ4MEx5OWNibHgwWEhRdkx5QWdJREV1SUZSb1pTQmxiblJwY21VZ1kyRmphR1VnYjJKcVpXTjBYRzVjZEZ4MEx5OGdJQ0F5TGlCVWFHVWdaR0YwWVNCemRHOXlaV1FnWVhRZ2RHaGxJR3RsZVZ4dVhIUmNkQzh2WEc1Y2RGeDBhV1lnS0NCclpYa2dQVDA5SUhWdVpHVm1hVzVsWkNCOGZGeHVYSFJjZEZ4MFhIUW9LR3RsZVNBbUppQjBlWEJsYjJZZ2EyVjVJRDA5UFNCY0luTjBjbWx1WjF3aUtTQW1KaUIyWVd4MVpTQTlQVDBnZFc1a1pXWnBibVZrS1NBcElIdGNibHh1WEhSY2RGeDBjM1J2Y21Wa0lEMGdkR2hwY3k1blpYUW9JRzkzYm1WeUxDQnJaWGtnS1R0Y2JseHVYSFJjZEZ4MGNtVjBkWEp1SUhOMGIzSmxaQ0FoUFQwZ2RXNWtaV1pwYm1Wa0lEOWNibHgwWEhSY2RGeDBjM1J2Y21Wa0lEb2dkR2hwY3k1blpYUW9JRzkzYm1WeUxDQnFVWFZsY25rdVkyRnRaV3hEWVhObEtHdGxlU2tnS1R0Y2JseDBYSFI5WEc1Y2JseDBYSFF2THlCYktsMVhhR1Z1SUhSb1pTQnJaWGtnYVhNZ2JtOTBJR0VnYzNSeWFXNW5MQ0J2Y2lCaWIzUm9JR0VnYTJWNUlHRnVaQ0IyWVd4MVpWeHVYSFJjZEM4dklHRnlaU0J6Y0dWamFXWnBaV1FzSUhObGRDQnZjaUJsZUhSbGJtUWdLR1Y0YVhOMGFXNW5JRzlpYW1WamRITXBJSGRwZEdnZ1pXbDBhR1Z5T2x4dVhIUmNkQzh2WEc1Y2RGeDBMeThnSUNBeExpQkJiaUJ2WW1wbFkzUWdiMllnY0hKdmNHVnlkR2xsYzF4dVhIUmNkQzh2SUNBZ01pNGdRU0JyWlhrZ1lXNWtJSFpoYkhWbFhHNWNkRngwTHk5Y2JseDBYSFIwYUdsekxuTmxkQ2dnYjNkdVpYSXNJR3RsZVN3Z2RtRnNkV1VnS1R0Y2JseHVYSFJjZEM4dklGTnBibU5sSUhSb1pTQmNJbk5sZEZ3aUlIQmhkR2dnWTJGdUlHaGhkbVVnZEhkdklIQnZjM05wWW14bElHVnVkSEo1SUhCdmFXNTBjMXh1WEhSY2RDOHZJSEpsZEhWeWJpQjBhR1VnWlhod1pXTjBaV1FnWkdGMFlTQmlZWE5sWkNCdmJpQjNhR2xqYUNCd1lYUm9JSGRoY3lCMFlXdGxibHNxWFZ4dVhIUmNkSEpsZEhWeWJpQjJZV3gxWlNBaFBUMGdkVzVrWldacGJtVmtJRDhnZG1Gc2RXVWdPaUJyWlhrN1hHNWNkSDBzWEc1Y2RISmxiVzkyWlRvZ1puVnVZM1JwYjI0b0lHOTNibVZ5TENCclpYa2dLU0I3WEc1Y2RGeDBkbUZ5SUdrc0lHNWhiV1VzSUdOaGJXVnNMRnh1WEhSY2RGeDBkVzVzYjJOcklEMGdkR2hwY3k1clpYa29JRzkzYm1WeUlDa3NYRzVjZEZ4MFhIUmpZV05vWlNBOUlIUm9hWE11WTJGamFHVmJJSFZ1Ykc5amF5QmRPMXh1WEc1Y2RGeDBhV1lnS0NCclpYa2dQVDA5SUhWdVpHVm1hVzVsWkNBcElIdGNibHgwWEhSY2RIUm9hWE11WTJGamFHVmJJSFZ1Ykc5amF5QmRJRDBnZTMwN1hHNWNibHgwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwTHk4Z1UzVndjRzl5ZENCaGNuSmhlU0J2Y2lCemNHRmpaU0J6WlhCaGNtRjBaV1FnYzNSeWFXNW5JRzltSUd0bGVYTmNibHgwWEhSY2RHbG1JQ2dnYWxGMVpYSjVMbWx6UVhKeVlYa29JR3RsZVNBcElDa2dlMXh1WEhSY2RGeDBYSFF2THlCSlppQmNJbTVoYldWY0lpQnBjeUJoYmlCaGNuSmhlU0J2WmlCclpYbHpMaTR1WEc1Y2RGeDBYSFJjZEM4dklGZG9aVzRnWkdGMFlTQnBjeUJwYm1sMGFXRnNiSGtnWTNKbFlYUmxaQ3dnZG1saElDaGNJbXRsZVZ3aUxDQmNJblpoYkZ3aUtTQnphV2R1WVhSMWNtVXNYRzVjZEZ4MFhIUmNkQzh2SUd0bGVYTWdkMmxzYkNCaVpTQmpiMjUyWlhKMFpXUWdkRzhnWTJGdFpXeERZWE5sTGx4dVhIUmNkRngwWEhRdkx5QlRhVzVqWlNCMGFHVnlaU0JwY3lCdWJ5QjNZWGtnZEc4Z2RHVnNiQ0JmYUc5M1h5QmhJR3RsZVNCM1lYTWdZV1JrWldRc0lISmxiVzkyWlZ4dVhIUmNkRngwWEhRdkx5QmliM1JvSUhCc1lXbHVJR3RsZVNCaGJtUWdZMkZ0Wld4RFlYTmxJR3RsZVM0Z0l6RXlOemcyWEc1Y2RGeDBYSFJjZEM4dklGUm9hWE1nZDJsc2JDQnZibXg1SUhCbGJtRnNhWHBsSUhSb1pTQmhjbkpoZVNCaGNtZDFiV1Z1ZENCd1lYUm9MbHh1WEhSY2RGeDBYSFJ1WVcxbElEMGdhMlY1TG1OdmJtTmhkQ2dnYTJWNUxtMWhjQ2dnYWxGMVpYSjVMbU5oYldWc1EyRnpaU0FwSUNrN1hHNWNkRngwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwWEhSallXMWxiQ0E5SUdwUmRXVnllUzVqWVcxbGJFTmhjMlVvSUd0bGVTQXBPMXh1WEhSY2RGeDBYSFF2THlCVWNua2dkR2hsSUhOMGNtbHVaeUJoY3lCaElHdGxlU0JpWldadmNtVWdZVzU1SUcxaGJtbHdkV3hoZEdsdmJseHVYSFJjZEZ4MFhIUnBaaUFvSUd0bGVTQnBiaUJqWVdOb1pTQXBJSHRjYmx4MFhIUmNkRngwWEhSdVlXMWxJRDBnV3lCclpYa3NJR05oYldWc0lGMDdYRzVjZEZ4MFhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUmNkRngwTHk4Z1NXWWdZU0JyWlhrZ2QybDBhQ0IwYUdVZ2MzQmhZMlZ6SUdWNGFYTjBjeXdnZFhObElHbDBMbHh1WEhSY2RGeDBYSFJjZEM4dklFOTBhR1Z5ZDJselpTd2dZM0psWVhSbElHRnVJR0Z5Y21GNUlHSjVJRzFoZEdOb2FXNW5JRzV2YmkxM2FHbDBaWE53WVdObFhHNWNkRngwWEhSY2RGeDBibUZ0WlNBOUlHTmhiV1ZzTzF4dVhIUmNkRngwWEhSY2RHNWhiV1VnUFNCdVlXMWxJR2x1SUdOaFkyaGxJRDljYmx4MFhIUmNkRngwWEhSY2RGc2dibUZ0WlNCZElEb2dLQ0J1WVcxbExtMWhkR05vS0NCeWJtOTBkMmhwZEdVZ0tTQjhmQ0JiWFNBcE8xeHVYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkR2tnUFNCdVlXMWxMbXhsYm1kMGFEdGNibHgwWEhSY2RIZG9hV3hsSUNnZ2FTMHRJQ2tnZTF4dVhIUmNkRngwWEhSa1pXeGxkR1VnWTJGamFHVmJJRzVoYldWYklHa2dYU0JkTzF4dVhIUmNkRngwZlZ4dVhIUmNkSDFjYmx4MGZTeGNibHgwYUdGelJHRjBZVG9nWm5WdVkzUnBiMjRvSUc5M2JtVnlJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQWhhbEYxWlhKNUxtbHpSVzF3ZEhsUFltcGxZM1FvWEc1Y2RGeDBYSFIwYUdsekxtTmhZMmhsV3lCdmQyNWxjbHNnZEdocGN5NWxlSEJoYm1SdklGMGdYU0I4ZkNCN2ZWeHVYSFJjZENrN1hHNWNkSDBzWEc1Y2RHUnBjMk5oY21RNklHWjFibU4wYVc5dUtDQnZkMjVsY2lBcElIdGNibHgwWEhScFppQW9JRzkzYm1WeVd5QjBhR2x6TG1WNGNHRnVaRzhnWFNBcElIdGNibHgwWEhSY2RHUmxiR1YwWlNCMGFHbHpMbU5oWTJobFd5QnZkMjVsY2xzZ2RHaHBjeTVsZUhCaGJtUnZJRjBnWFR0Y2JseDBYSFI5WEc1Y2RIMWNibjA3WEc1MllYSWdaR0YwWVY5d2NtbDJJRDBnYm1WM0lFUmhkR0VvS1R0Y2JseHVkbUZ5SUdSaGRHRmZkWE5sY2lBOUlHNWxkeUJFWVhSaEtDazdYRzVjYmx4dVhHNHZMMXgwU1cxd2JHVnRaVzUwWVhScGIyNGdVM1Z0YldGeWVWeHVMeTljYmk4dlhIUXhMaUJGYm1admNtTmxJRUZRU1NCemRYSm1ZV0
149385sSUdGdVpDQnpaVzFoYm5ScFl5QmpiMjF3WVhScFltbHNhWFI1SUhkcGRHZ2dNUzQ1TG5nZ1luSmhibU5vWEc0dkwxeDBNaTRnU1cxd2NtOTJaU0IwYUdVZ2JXOWtkV3hsSjNNZ2JXRnBiblJoYVc1aFltbHNhWFI1SUdKNUlISmxaSFZqYVc1bklIUm9aU0J6ZEc5eVlXZGxYRzR2TDF4MFhIUndZWFJvY3lCMGJ5QmhJSE5wYm1kc1pTQnRaV05vWVc1cGMyMHVYRzR2TDF4ME15NGdWWE5sSUhSb1pTQnpZVzFsSUhOcGJtZHNaU0J0WldOb1lXNXBjMjBnZEc4Z2MzVndjRzl5ZENCY0luQnlhWFpoZEdWY0lpQmhibVFnWENKMWMyVnlYQ0lnWkdGMFlTNWNiaTh2WEhRMExpQmZUbVYyWlhKZklHVjRjRzl6WlNCY0luQnlhWFpoZEdWY0lpQmtZWFJoSUhSdklIVnpaWElnWTI5a1pTQW9WRTlFVHpvZ1JISnZjQ0JmWkdGMFlTd2dYM0psYlc5MlpVUmhkR0VwWEc0dkwxeDBOUzRnUVhadmFXUWdaWGh3YjNOcGJtY2dhVzF3YkdWdFpXNTBZWFJwYjI0Z1pHVjBZV2xzY3lCdmJpQjFjMlZ5SUc5aWFtVmpkSE1nS0dWbkxpQmxlSEJoYm1SdklIQnliM0JsY25ScFpYTXBYRzR2TDF4ME5pNGdVSEp2ZG1sa1pTQmhJR05zWldGeUlIQmhkR2dnWm05eUlHbHRjR3hsYldWdWRHRjBhVzl1SUhWd1ozSmhaR1VnZEc4Z1YyVmhhMDFoY0NCcGJpQXlNREUwWEc1Y2JuWmhjaUJ5WW5KaFkyVWdQU0F2WGlnL09seGNlMXRjWEhkY1hGZGRLbHhjZlh4Y1hGdGJYRngzWEZ4WFhTcGNYRjBwSkM4c1hHNWNkSEp0ZFd4MGFVUmhjMmdnUFNBdktGdEJMVnBkS1M5bk8xeHVYRzVtZFc1amRHbHZiaUJrWVhSaFFYUjBjaWdnWld4bGJTd2dhMlY1TENCa1lYUmhJQ2tnZTF4dVhIUjJZWElnYm1GdFpUdGNibHh1WEhRdkx5QkpaaUJ1YjNSb2FXNW5JSGRoY3lCbWIzVnVaQ0JwYm5SbGNtNWhiR3g1TENCMGNua2dkRzhnWm1WMFkyZ2dZVzU1WEc1Y2RDOHZJR1JoZEdFZ1puSnZiU0IwYUdVZ1NGUk5URFVnWkdGMFlTMHFJR0YwZEhKcFluVjBaVnh1WEhScFppQW9JR1JoZEdFZ1BUMDlJSFZ1WkdWbWFXNWxaQ0FtSmlCbGJHVnRMbTV2WkdWVWVYQmxJRDA5UFNBeElDa2dlMXh1WEhSY2RHNWhiV1VnUFNCY0ltUmhkR0V0WENJZ0t5QnJaWGt1Y21Wd2JHRmpaU2dnY20xMWJIUnBSR0Z6YUN3Z1hDSXRKREZjSWlBcExuUnZURzkzWlhKRFlYTmxLQ2s3WEc1Y2RGeDBaR0YwWVNBOUlHVnNaVzB1WjJWMFFYUjBjbWxpZFhSbEtDQnVZVzFsSUNrN1hHNWNibHgwWEhScFppQW9JSFI1Y0dWdlppQmtZWFJoSUQwOVBTQmNJbk4wY21sdVoxd2lJQ2tnZTF4dVhIUmNkRngwZEhKNUlIdGNibHgwWEhSY2RGeDBaR0YwWVNBOUlHUmhkR0VnUFQwOUlGd2lkSEoxWlZ3aUlEOGdkSEoxWlNBNlhHNWNkRngwWEhSY2RGeDBaR0YwWVNBOVBUMGdYQ0ptWVd4elpWd2lJRDhnWm1Gc2MyVWdPbHh1WEhSY2RGeDBYSFJjZEdSaGRHRWdQVDA5SUZ3aWJuVnNiRndpSUQ4Z2JuVnNiQ0E2WEc1Y2RGeDBYSFJjZEZ4MEx5OGdUMjVzZVNCamIyNTJaWEowSUhSdklHRWdiblZ0WW1WeUlHbG1JR2wwSUdSdlpYTnVKM1FnWTJoaGJtZGxJSFJvWlNCemRISnBibWRjYmx4MFhIUmNkRngwWEhRclpHRjBZU0FySUZ3aVhDSWdQVDA5SUdSaGRHRWdQeUFyWkdGMFlTQTZYRzVjZEZ4MFhIUmNkRngwY21KeVlXTmxMblJsYzNRb0lHUmhkR0VnS1NBL0lHcFJkV1Z5ZVM1d1lYSnpaVXBUVDA0b0lHUmhkR0VnS1NBNlhHNWNkRngwWEhSY2RGeDBaR0YwWVR0Y2JseDBYSFJjZEgwZ1kyRjBZMmdvSUdVZ0tTQjdmVnh1WEc1Y2RGeDBYSFF2THlCTllXdGxJSE4xY21VZ2QyVWdjMlYwSUhSb1pTQmtZWFJoSUhOdklHbDBJR2x6YmlkMElHTm9ZVzVuWldRZ2JHRjBaWEpjYmx4MFhIUmNkR1JoZEdGZmRYTmxjaTV6WlhRb
149380lHVnNaVzBzSUd0bGVTd2daR0YwWVNBcE8xeHVYSFJjZEgwZ1pXeHpaU0I3WEc1Y2RGeDBYSFJrWVhSaElEMGdkVzVrWldacGJtVmtPMXh1WEhSY2RIMWNibHgwZlZ4dVhIUnlaWFIxY200Z1pHRjBZVHRjYm4xY2JseHVhbEYxWlhKNUxtVjRkR1Z1WkNoN1hHNWNkR2hoYzBSaGRHRTZJR1oxYm1OMGFXOXVLQ0JsYkdWdElDa2dlMXh1WEhSY2RISmxkSFZ5YmlCa1lYUmhYM1Z6WlhJdWFHRnpSR0YwWVNnZ1pXeGxiU0FwSUh4OElHUmhkR0ZmY0hKcGRpNW9ZWE5FWVhSaEtDQmxiR1Z0SUNrN1hHNWNkSDBzWEc1Y2JseDBaR0YwWVRvZ1puVnVZM1JwYjI0b0lHVnNaVzBzSUc1aGJXVXNJR1JoZEdFZ0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUdSaGRHRmZkWE5sY2k1aFkyTmxjM01vSUdWc1pXMHNJRzVoYldVc0lHUmhkR0VnS1R0Y2JseDBmU3hjYmx4dVhIUnlaVzF2ZG1WRVlYUmhPaUJtZFc1amRHbHZiaWdnWld4bGJTd2dibUZ0WlNBcElIdGNibHgwWEhSa1lYUmhYM1Z6WlhJdWNtVnRiM1psS0NCbGJHVnRMQ0J1WVcxbElDazdYRzVjZEgwc1hHNWNibHgwTHk4Z1ZFOUVUem9nVG05M0lIUm9ZWFFnWVd4c0lHTmhiR3h6SUhSdklGOWtZWFJoSUdGdVpDQmZjbVZ0YjNabFJHRjBZU0JvWVhabElHSmxaVzRnY21Wd2JHRmpaV1JjYmx4MEx5OGdkMmwwYUNCa2FYSmxZM1FnWTJGc2JITWdkRzhnWkdGMFlWOXdjbWwySUcxbGRHaHZaSE1zSUhSb1pYTmxJR05oYmlCaVpTQmtaWEJ5WldOaGRHVmtMbHh1WEhSZlpHRjBZVG9nWm5WdVkzUnBiMjRvSUdWc1pXMHNJRzVoYldVc0lHUmhkR0VnS1NCN1hHNWNkRngwY21WMGRYSnVJR1JoZEdGZmNISnBkaTVoWTJObGMzTW9JR1ZzWlcwc0lHNWhiV1VzSUdSaGRHRWdLVHRjYmx4MGZTeGNibHh1WEhSZmNtVnRiM1psUkdGMFlUb2dablZ1WTNScGIyNG9JR1ZzWlcwc0lHNWhiV1VnS1NCN1hHNWNkRngwWkdGMFlWOXdjbWwyTG5KbGJXOTJaU2dnWld4bGJTd2dibUZ0WlNBcE8xeHVYSFI5WEc1OUtUdGNibHh1YWxGMVpYSjVMbVp1TG1WNGRHVnVaQ2g3WEc1Y2RHUmhkR0U2SUdaMWJtTjBhVzl1S0NCclpYa3NJSFpoYkhWbElDa2dlMXh1WEhSY2RIWmhjaUJwTENCdVlXMWxMQ0JrWVhSaExGeHVYSFJjZEZ4MFpXeGxiU0E5SUhSb2FYTmJJREFnWFN4Y2JseDBYSFJjZEdGMGRISnpJRDBnWld4bGJTQW1KaUJsYkdWdExtRjBkSEpwWW5WMFpYTTdYRzVjYmx4MFhIUXZMeUJIWlhSeklHRnNiQ0IyWVd4MVpYTmNibHgwWEhScFppQW9JR3RsZVNBOVBUMGdkVzVrWldacGJtVmtJQ2tnZTF4dVhIUmNkRngwYVdZZ0tDQjBhR2x6TG14bGJtZDBhQ0FwSUh0Y2JseDBYSFJjZEZ4MFpHRjBZU0E5SUdSaGRHRmZkWE5sY2k1blpYUW9JR1ZzWlcwZ0tUdGNibHh1WEhSY2RGeDBYSFJwWmlBb0lHVnNaVzB1Ym05a1pWUjVjR1VnUFQwOUlERWdKaVlnSVdSaGRHRmZjSEpwZGk1blpYUW9JR1ZzWlcwc0lGd2lhR0Z6UkdGMFlVRjBkSEp6WENJZ0tTQXBJSHRjYmx4MFhIUmNkRngwWEhScElEMGdZWFIwY25NdWJHVnVaM1JvTzF4dVhIUmNkRngwWEhSY2RIZG9hV3hsSUNnZ2FTMHRJQ2tnZTF4dVhHNWNkRngwWEhSY2RGeDBYSFF2THlCVGRYQndiM0owT2lCSlJURXhLMXh1WEhSY2RGeDBYSFJjZEZ4MEx5OGdWR2hsSUdGMGRISnpJR1ZzWlcxbGJuUnpJR05oYmlCaVpTQnVkV3hzSUNnak1UUTRPVFFwWEc1Y2RGeDBYSFJjZEZ4MFhIUnBaaUFvSUdGMGRISnpXeUJwSUYwZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSY2RHNWhiV1VnUFNCaGRIUnljMXNnYVNCZExtNWhiV1U3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkR2xtSUNnZ2JtRnRaUzVwYm1SbGVFOW1LQ0JjSW1SaGRHRXRYQ0lnS1NBOVBUMGdNQ0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmNkRngwWEhSdVlXMWxJRDBnYWxGMVpYSjVMbU5oYldWc1EyRnpaU2dnYm1GdFpTNXpiR2xqWlNnMUtTQXBPMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkR1JoZEdGQmRIUnlLQ0JsYkdWdExDQnVZVzFsTENCa1lYUmhXeUJ1WVcxbElGMGdLVHRjYmx4MFhIUmNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwWEhSa1lYUmhYM0J5YVhZdWMyVjBLQ0JsYkdWdExDQmNJbWhoYzBSaGRHRkJkSFJ5YzF3aUxDQjBjblZsSUNrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBjbVYwZFhKdUlHUmhkR0U3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnVTJWMGN5QnRkV3gwYVhCc1pTQjJZV3gxWlhOY2JseDBYSFJwWmlBb0lIUjVjR1Z2WmlCclpYa2dQVDA5SUZ3aWIySnFaV04wWENJZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200Z2RHaHBjeTVsWVdOb0tHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RGeDBYSFJrWVhSaFgzVnpaWEl1YzJWMEtDQjBhR2x6TENCclpYa2dLVHRjYmx4MFhIUmNkSDBwTzF4dVhIUmNkSDFjYmx4dVhIUmNkSEpsZEhWeWJpQmhZMk5sYzNNb0lIUm9hWE1zSUdaMWJtTjBhVzl1S0NCMllXeDFaU0FwSUh0Y2JseDBYSFJjZEhaaGNpQmtZWFJoTEZ4dVhIUmNkRngwWEhSallXMWxiRXRsZVNBOUlHcFJkV1Z5ZVM1allXMWxiRU5oYzJVb0lHdGxlU0FwTzF4dVhHNWNkRngwWEhRdkx5QlVhR1VnWTJGc2JHbHVaeUJxVVhWbGNua2diMkpxWldOMElDaGxiR1Z0Wlc1MElHMWhkR05vWlhNcElHbHpJRzV2ZENCbGJYQjBlVnh1WEhSY2RGeDBMeThnS0dGdVpDQjBhR1Z5WldadmNtVWdhR0Z6SUdGdUlHVnNaVzFsYm5RZ1lYQndaV0Z5Y3lCaGRDQjBhR2x6V3lBd0lGMHBJR0Z1WkNCMGFHVmNibHgwWEhSY2RDOHZJR0IyWVd4MVpXQWdjR0Z5WVcxbGRHVnlJSGRoY3lCdWIzUWdkVzVrWldacGJtVmtMaUJCYmlCbGJYQjBlU0JxVVhWbGNua2diMkpxWldOMFhHNWNkRngwWEhRdkx5QjNhV3hzSUhKbGMzVnNkQ0JwYmlCZ2RXNWtaV1pwYm1Wa1lDQm1iM0lnWld4bGJTQTlJSFJvYVhOYklEQWdYU0IzYUdsamFDQjNhV3hzWEc1Y2RGeDBYSFF2THlCMGFISnZkeUJoYmlCbGVHTmxjSFJwYjI0Z2FXWWdZVzRnWVhSMFpXMXdkQ0IwYnlCeVpXRmtJR0VnWkdGMFlTQmpZV05vWlNCcGN5QnRZV1JsTGx4dVhIUmNkRngwYVdZZ0tDQmxiR1Z0SUNZbUlIWmhiSFZsSUQwOVBTQjFibVJsWm1sdVpXUWdLU0I3WEc1Y2RGeDBYSFJjZEM4dklFRjBkR1Z0Y0hRZ2RHOGdaMlYwSUdSaGRHRWdabkp2YlNCMGFHVWdZMkZqYUdWY2JseDBYSFJjZEZ4MEx5OGdkMmwwYUNCMGFHVWdhMlY1SUdGekxXbHpYRzVjZEZ4MFhIUmNkR1JoZEdFZ1BTQmtZWFJoWDNWelpYSXVaMlYwS0NCbGJHVnRMQ0JyWlhrZ0tUdGNibHgwWEhSY2RGeDBhV1lnS0NCa1lYUmhJQ0U5UFNCMWJtUmxabWx1WldRZ0tTQjdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJR1JoZEdFN1hHNWNkRngwWEhSY2RIMWNibHh1WEhSY2RGeDBYSFF2THlCQmRIUmxiWEIwSUhSdklHZGxkQ0JrWVhSaElHWnliMjBnZEdobElHTmhZMmhsWEc1Y2RGeDBYSFJjZEM4dklIZHBkR2dnZEdobElHdGxlU0JqWVcxbGJHbDZaV1JjYmx4MFhIUmNkRngwWkdGMFlTQTlJR1JoZEdGZmRYTmxjaTVuWlhRb0lHVnNaVzBzSUdOaGJXVnNTMlY1SUNrN1hHNWNkRngwWEhSY2RHbG1JQ2dnWkdGMFlTQWhQVDBnZFc1a1pXWnBibVZrSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkSEpsZEhWeWJpQmtZWFJoTzF4dVhIUmNkRngwWEhSOVhHNWNibHgwWEhSY2RGeDBMeThnUVhSMFpXMXdkQ0IwYnlCY0ltUnBjMk52ZG1WeVhDSWdkR2hsSUdSaGRHRWdhVzVjYmx4MFhIUmNkRngwTHk4Z1NGUk5URFVnWTNWemRHOXRJR1JoZEdFdEtpQmhkSFJ5YzF4dVhIUmNkRngwWEhSa1lYUmhJRDBnWkdGMFlVRjBkSElvSUdW
14938c1pXMHNJR05oYldWc1MyVjVMQ0IxYm1SbFptbHVaV1FnS1R0Y2JseDBYSFJjZEZ4MGFXWWdLQ0JrWVhSaElDRTlQU0IxYm1SbFptbHVaV1FnS1NCN1hHNWNkRngwWEhSY2RGeDBjbVYwZFhKdUlHUmhkR0U3WEc1Y2RGeDBYSFJjZEgxY2JseHVYSFJjZEZ4MFhIUXZMeUJYWlNCMGNtbGxaQ0J5WldGc2JIa2dhR0Z5WkN3Z1luVjBJSFJvWlNCa1lYUmhJR1J2WlhOdUozUWdaWGhwYzNRdVhHNWNkRngwWEhSY2RISmxkSFZ5Ymp0Y2JseDBYSFJjZEgxY2JseHVYSFJjZEZ4MEx5OGdVMlYwSUhSb1pTQmtZWFJoTGk0dVhHNWNkRngwWEhSMGFHbHpMbVZoWTJnb1puVnVZM1JwYjI0b0tTQjdYRzVjZEZ4MFhIUmNkQzh2SUVacGNuTjBMQ0JoZEhSbGJYQjBJSFJ2SUhOMGIzSmxJR0VnWTI5d2VTQnZjaUJ5WldabGNtVnVZMlVnYjJZZ1lXNTVYRzVjZEZ4MFhIUmNkQzh2SUdSaGRHRWdkR2hoZENCdGFXZG9kQ2QyWlNCaVpXVnVJSE4wYjNKbElIZHBkR2dnWVNCallXMWxiRU5oYzJWa0lHdGxlUzVjYmx4MFhIUmNkRngwZG1GeUlHUmhkR0VnUFNCa1lYUmhYM1Z6WlhJdVoyVjBLQ0IwYUdsekxDQmpZVzFsYkV0bGVTQXBPMXh1WEc1Y2RGeDBYSFJjZEM4dklFWnZjaUJJVkUxTU5TQmtZWFJoTFNvZ1lYUjBjbWxpZFhSbElHbHVkR1Z5YjNBc0lIZGxJR2hoZG1VZ2RHOWNibHgwWEhSY2RGeDBMeThnYzNSdmNtVWdjSEp2Y0dWeWRIa2dibUZ0WlhNZ2QybDBhQ0JrWVhOb1pYTWdhVzRnWVNCallXMWxiRU5oYzJVZ1ptOXliUzVjYmx4MFhIUmNkRngwTHk4Z1ZHaHBjeUJ0YVdkb2RDQnViM1FnWVhCd2JIa2dkRzhnWVd4c0lIQnliM0JsY25ScFpYTXVMaTRxWEc1Y2RGeDBYSFJjZEdSaGRHRmZkWE5sY2k1elpYUW9JSFJvYVhNc0lHTmhiV1ZzUzJWNUxDQjJZV3gxWlNBcE8xeHVYRzVjZEZ4MFhIUmNkQzh2SUNvdUxpNGdTVzRnZEdobElHTmhjMlVnYjJZZ2NISnZjR1Z5ZEdsbGN5QjBhR0YwSUcxcFoyaDBJRjloWTNSMVlXeHNlVjljYmx4MFhIUmNkRngwTHk4Z2FHRjJaU0JrWVhOb1pYTXNJSGRsSUc1bFpXUWdkRzhnWVd4emJ5QnpkRzl5WlNCaElHTnZjSGtnYjJZZ2RHaGhkRnh1WEhSY2RGeDBYSFF2THlCMWJtTm9ZVzVuWldRZ2NISnZjR1Z5ZEhrdVhHNWNkRngwWEhSY2RHbG1JQ2dnYTJWNUxtbHVaR1Y0VDJZb1hDSXRYQ0lwSUNFOVBTQXRNU0FtSmlCa1lYUmhJQ0U5UFNCMWJtUmxabWx1WldRZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWkdGMFlWOTFjMlZ5TG5ObGRDZ2dkR2hwY3l3Z2EyVjVMQ0IyWVd4MVpTQXBPMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5S1R0Y2JseDBYSFI5TENCdWRXeHNMQ0IyWVd4MVpTd2dZWEpuZFcxbGJuUnpMbXhsYm1kMGFDQStJREVzSUc1MWJHd3NJSFJ5ZFdVZ0tUdGNibHgwZlN4Y2JseHVYSFJ5WlcxdmRtVkVZWFJoT2lCbWRXNWpkR2x2YmlnZ2EyVjVJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQjBhR2x6TG1WaFkyZ29ablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBYSFJrWVhSaFgzVnpaWEl1Y21WdGIzWmxLQ0IwYUdsekxDQnJaWGtnS1R0Y2JseDBYSFI5S1R0Y2JseDBmVnh1ZlNrN1hHNWNibHh1YWxGMVpYSjVMbVY0ZEdWdVpDaDdYRzVjZEhGMVpYVmxPaUJtZFc1amRHbHZiaWdnWld4bGJTd2dkSGx3WlN3Z1pHRjBZU0FwSUh0Y2JseDBYSFIyWVhJZ2NYVmxkV1U3WEc1Y2JseDBYSFJwWmlBb0lHVnNaVzBnS1NCN1hHNWNkRngwWEhSMGVYQmxJRDBnS0NCMGVYQmxJSHg4SUZ3aVpuaGNJaUFwSUNzZ1hDSnhkV1YxWlZ3aU8xeHVYSFJjZEZ4MGNYVmxkV1VnUFNCa1lYUmhYM0J5YVhZdVoyVjBLQ0JsYkdWdExDQjBlWEJsSUNrN1hHNWNibHgwWEhSY2RDOHZJRk53WldWa0lIVndJR1JsY1hWbGRXVWdZbmtnWjJWMGRHbHVaeUJ2ZFhRZ2NYVnBZMnRzZVNCcFppQjBhR2x6SUdseklHcDFjM1FnWVNCc2IyOXJkWEJjYmx4MFhIUmNkR2xtSUNnZ1pHRjBZU0FwSUh0Y2JseDBYSFJjZEZ4MGFXWWdLQ0FoY1hWbGRXVWdmSHdnYWxGMVpYSjVMbWx6UVhKeVlYa29JR1JoZEdFZ0tTQXBJSHRjYmx4MFhIUmNkRngwWEhSeGRXVjFaU0E5SUdSaGRHRmZjSEpwZGk1aFkyTmxjM01vSUdWc1pXMHNJSFI1Y0dVc0lHcFJkV1Z5ZVM1dFlXdGxRWEp5WVhrb1pHRjBZU2tnS1R0Y2JseDBYSFJjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEZ4MFhIUnhkV1YxWlM1d2RYTm9LQ0JrWVhSaElDazdYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDFjYmx4MFhIUmNkSEpsZEhWeWJpQnhkV1YxWlNCOGZDQmJYVHRjYmx4MFhIUjlYRzVjZEgwc1hHNWNibHgwWkdWeGRXVjFaVG9nWm5WdVkzUnBiMjRvSUdWc1pXMHNJSFI1Y0dVZ0tTQjdYRzVjZEZ4MGRIbHdaU0E5SUhSNWNHVWdmSHdnWENKbWVGd2lPMXh1WEc1Y2RGeDBkbUZ5SUhGMVpYVmxJRDBnYWxGMVpYSjVMbkYxWlhWbEtDQmxiR1Z0TENCMGVYQmxJQ2tzWEc1Y2RGeDBYSFJ6ZEdGeWRFeGxibWQwYUNBOUlIRjFaWFZsTG14bGJtZDBhQ3hjYmx4MFhIUmNkR1p1SUQwZ2NYVmxkV1V1YzJocFpuUW9LU3hjYmx4MFhIUmNkR2h2YjJ0eklEMGdhbEYxWlhKNUxsOXhkV1YxWlVodmIydHpLQ0JsYkdWdExDQjBlWEJsSUNrc1hHNWNkRngwWEhSdVpYaDBJRDBnWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwWEhSY2RHcFJkV1Z5ZVM1a1pYRjFaWFZsS0NCbGJHVnRMQ0IwZVhCbElDazdYRzVjZEZ4MFhIUjlPMXh1WEc1Y2RGeDBMeThnU1dZZ2RHaGxJR1o0SUhGMVpYVmxJR2x6SUdSbGNYVmxkV1ZrTENCaGJIZGhlWE1nY21WdGIzWmxJSFJvWlNCd2NtOW5jbVZ6Y3lCelpXNTBhVzVsYkZ4dVhIUmNkR2xtSUNnZ1ptNGdQVDA5SUZ3aWFXNXdjbTluY21WemMxd2lJQ2tnZTF4dVhIUmNkRngwWm00Z1BTQnhkV1YxWlM1emFHbG1kQ2dwTzF4dVhIUmNkRngwYzNSaGNuUk1aVzVuZEdndExUdGNibHgwWEhSOVhHNWNibHgwWEhScFppQW9JR1p1SUNrZ2UxeHVYRzVjZEZ4MFhIUXZMeUJCWkdRZ1lTQndjbTluY21WemN5QnpaVzUwYVc1bGJDQjBieUJ3Y21WMlpXNTBJSFJvWlNCbWVDQnhkV1YxWlNCbWNtOXRJR0psYVc1blhHNWNkRngwWEhRdkx5QmhkWFJ2YldGMGFXTmhiR3g1SUdSbGNYVmxkV1ZrWEc1Y2RGeDBYSFJwWmlBb0lIUjVjR1VnUFQwOUlGd2labmhjSWlBcElIdGNibHgwWEhSY2RGeDBjWFZsZFdVdWRXNXphR2xtZENnZ1hDSnBibkJ5YjJkeVpYTnpYQ0lnS1R0Y2JseDBYSFJjZEgxY2JseHVYSFJjZEZ4MEx5OGdRMnhsWVhJZ2RYQWdkR2hsSUd4aGMzUWdjWFZsZFdVZ2MzUnZjQ0JtZFc1amRHbHZibHh1WEhSY2RGeDBaR1ZzWlhSbElHaHZiMnR6TG5OMGIzQTdYRzVjZEZ4MFhIUm1iaTVqWVd4c0tDQmxiR1Z0TENCdVpYaDBMQ0JvYjI5cmN5QXBPMXh1WEhSY2RIMWNibHh1WEhSY2RHbG1JQ2dnSVhOMFlYSjBUR1Z1WjNSb0lDWW1JR2h2YjJ0eklDa2dlMXh1WEhSY2RGeDBhRzl2YTNNdVpXMXdkSGt1Wm1seVpTZ3BPMXh1WEhSY2RIMWNibHgwZlN4Y2JseHVYSFF2THlCT2IzUWdjSFZpYkdsaklDMGdaMlZ1WlhKaGRHVWdZU0J4ZFdWMVpVaHZiMnR6SUc5aWFtVmpkQ3dnYjNJZ2NtVjBkWEp1SUhSb1pTQmpkWEp5Wlc1MElHOXVaVnh1WEhSZmNYVmxkV1ZJYjI5cmN6b2dablZ1WTNScGIyNG9JR1ZzWlcwc0lIUjVjR1VnS1NCN1hHNWNkRngwZG1GeUlHdGxlU0E5SUhSNWNHVWdLeUJjSW5GMVpYVmxTRzl2YTNOY0lqdGNibHgwWEhSeVpYUjFjbTRnWkdGMFlWOXdjbWwyTG1kbGRDZ2daV3hsYlN3Z2EyVjVJQ2tnZkh3Z1pHRjBZVjl3Y21sMkxtRmpZMlZ6Y3lnZ1pXeGxiU3dnYTJWNUxDQjdYRzVjZEZ4MFhIUmxiWEIwZVRvZ2FsRjFaWEo1TGtOaGJHeGlZV05yY3loY0ltOXVZMlVnYldWdGIzSjVYQ0lwTG1Ga1pDaG1kVzVqZEdsdmJpZ3BJSHRjYmx4MFhIUmNkRngwWkdGMFlWOXdjbWwyTG5KbGJXOTJaU2dnWld4bGJTd2dXeUIwZVhCbElDc2dYQ0p4ZFdWMVpWd2lMQ0JyWlhrZ1hTQXBPMXh1WEhSY2RGeDBmU2xjYmx4MFhIUjlLVHRjYmx4MGZWeHVmU2s3WEc1Y2JtcFJkV1Z5ZVM1bWJpNWxlSFJsYm1Rb2UxeHVYSFJ4ZFdWMVpUb2dablZ1WTNScGIyNG9JSFI1Y0dVc0lHUmhkR0VnS1NCN1hHNWNkRngwZG1GeUlITmxkSFJsY2lBOUlESTdYRzVjYmx4MFhIUnBaaUFvSUhSNWNHVnZaaUIwZVhCbElDRTlQU0JjSW5OMGNtbHVaMXdpSUNrZ2UxeHVYSFJjZEZ4MFpHRjBZU0E5SUhSNWNHVTdYRzVjZEZ4MFhIUjBlWEJsSUQwZ1hDSm1lRndpTzF4dVhIUmNkRngwYzJWMGRHVnlMUzA3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBhV1lnS0NCaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvSUR3Z2MyVjBkR1Z5SUNrZ2UxeHVYSFJjZEZ4MGNtVjBkWEp1SUdwUmRXVnllUzV4ZFdWMVpTZ2dkR2hwYzFzd1hTd2dkSGx3WlNBcE8xeHVYSFJjZEgxY2JseHVYSFJjZEhKbGRIVnliaUJrWVhSaElEMDlQU0IxYm1SbFptbHVaV1FnUDF4dVhIUmNkRngwZEdocGN5QTZYRzVjZEZ4MFhIUjBhR2x6TG1WaFkyZ29ablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBYSFJjZEhaaGNpQnhkV1YxWlNBOUlHcFJkV1Z5ZVM1eGRXVjFaU2dnZEdocGN5d2dkSGx3WlN3Z1pHRjBZU0FwTzF4dVhHNWNkRngwWEhSY2RDOHZJRVZ1YzNWeVpTQmhJR2h2YjJ0eklHWnZjaUIwYUdseklIRjFaWFZsWEc1Y2RGeDBYSFJjZEdwUmRXVnllUzVmY1hWbGRXVkliMjlyY3lnZ2RHaHBjeXdnZEhsd1pTQXBPMXh1WEc1Y2RGeDBYSFJjZEdsbUlDZ2dkSGx3WlNBOVBUMGdYQ0ptZUZ3aUlDWW1JSEYxWlhWbFd6QmRJQ0U5UFNCY0ltbHVjSEp2WjNKbGMzTmNJaUFwSUh0Y2JseDBYSFJjZEZ4MFhIUnFVWFZsY25rdVpHVnhkV1YxWlNnZ2RHaHBjeXdnZEhsd1pTQXBPMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5S1R0Y2JseDBmU3hjYmx4MFpHVnhkV1YxWlRvZ1puVnVZM1JwYjI0b0lIUjVjR1VnS1NCN1hHNWNkRngwY21WMGRYSnVJSFJvYVhNdVpXRmphQ2htZFc1amRHbHZiaWdwSUh0Y2JseDBYSFJjZEdwUmRXVnllUzVrWlhGMVpYVmxLQ0IwYUdsekxDQjBlWEJsSUNrN1hHNWNkRngwZlNrN1hHNWNkSDBzWEc1Y2RHTnNaV0Z5VVhWbGRXVTZJR1oxYm1OMGFXOXVLQ0IwZVhCbElDa2dlMXh1WEhSY2RISmxkSFZ5YmlCMGFHbHpMbkYxWlhWbEtDQjBlWEJsSUh4OElGd2labmhjSWl3Z1cxMGdLVHRjYmx4MGZTeGNibHgwTHk4Z1IyVjBJR0VnY0hKdmJXbHpaU0J5WlhOdmJIWmxaQ0IzYUdWdUlIRjFaWFZsY3lCdlppQmhJR05sY25SaGFXNGdkSGx3WlZ4dVhIUXZMeUJoY21VZ1pXMXdkR2xsWkNBb1puZ2dhWE1nZEdobElIUjVjR1VnWW5rZ1pHVm1ZWFZzZENsY2JseDBjSEp2YldselpUb2dablZ1WTNScGIyNG9JSFI1Y0dVc0lHOWlhaUFwSUh0Y2JseDBYSFIyWVhJZ2RHMXdMRnh1WEhSY2RGeDBZMjkxYm5RZ1BTQXhMRnh1WEhSY2RGeDBaR1ZtWlhJZ1BTQnFVWFZsY25rdVJHVm1aWEp5WldRb0tTeGNibHgwWEhSY2RHVnNaVzFsYm5SeklEMGdkR2hwY3l4Y2JseDBYSFJjZEdrZ1BTQjBhR2x6TG14bGJtZDBhQ3hjYmx4MFhIUmNkSEpsYzI5c2RtVWdQU0JtZFc1amRHbHZiaWdwSUh0Y2JseDBYSFJjZEZ4MGFXWWdLQ0FoS0NBdExXTnZkVzUwSUNrZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWkdWbVpYSXVjbVZ6YjJ4MlpWZHBkR2dvSUdWc1pXMWxiblJ6TENCYklHVnNaVzFsYm5SeklGMGdLVHRjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwZlR0Y2JseHVYSFJjZEdsbUlDZ2dkSGx3Wlc5bUlIUjVjR1VnSVQwOUlGd2ljM1J5YVc1blhDSWdLU0I3WEc1Y2RGeDBYSFJ2WW1vZ1BTQjBlWEJsTzF4dVhIUmNkRngwZEhsd1pTQTlJSFZ1WkdWbWFXNWxaRHRjYmx4MFhIUjlYRzVjZEZ4MGRIbHdaU0E5SUhSNWNHVWdmSHdnWENKbWVGd2lPMXh1WEc1Y2RGeDBkMmhwYkdVZ0tDQnBMUzBnS1NCN1hHNWNkRngwWEhSMGJYQWdQU0JrWVhSaFgzQnlhWFl1WjJWMEtDQmxiR1Z0Wlc1MGMxc2dhU0JkTENCMGVYQmxJQ3NnWENKeGRXVjFaVWh2YjJ0elhDSWdLVHRjYmx4MFhIUmNkR2xtSUNnZ2RHMXdJQ1ltSUhSdGNDNWxiWEIwZVNBcElIdGNibHgwWEhSY2RGeDBZMjkxYm5Rckt6dGNibHgwWEhSY2RGeDBkRzF3TG1WdGNIUjVMbUZrWkNnZ2NtVnpiMngyWlNBcE8xeHVYSFJjZEZ4MGZWeHVYSFJjZEgxY2JseDBYSFJ5WlhOdmJIWmxLQ2s3WEc1Y2RGeDBjbVYwZFhKdUlHUmxabVZ5TG5CeWIyMXBjMlVvSUc5aWFpQXBPMXh1WEhSOVhHNTlLVHRjYm5aaGNpQndiblZ0SUQwZ0tDOWJLeTFkUHlnL09seGNaQ3BjWEM1OEtWeGNaQ3NvUHpwYlpVVmRXeXN0WFQ5Y1hHUXJmQ2t2S1M1emIzVnlZMlU3WEc1Y2JuWmhjaUJqYzNORmVIQmhibVFnUFNCYklGd2lWRzl3WENJc0lGd2lVbWxuYUhSY0lpd2dYQ0pDYjNSMGIyMWNJaXdnWENKTVpXWjBYQ0lnWFR0Y2JseHVkbUZ5SUdselNHbGtaR1Z1SUQwZ1puVnVZM1JwYjI0b0lHVnNaVzBzSUdWc0lDa2dlMXh1WEhSY2RDOHZJR2x6U0dsa1pHVnVJRzFwWjJoMElHSmxJR05oYkd4bFpDQm1jbTl0SUdwUmRXVnllU05tYVd4MFpYSWdablZ1WTNScGIyNDdYRzVjZEZ4MEx5OGdhVzRnZEdoaGRDQmpZWE5sTENCbGJHVnRaVzUwSUhkcGJHd2dZbVVnYzJWamIyNWtJR0Z5WjNWdFpXNTBYRzVjZEZ4MFpXeGxiU0E5SUdWc0lIeDhJR1ZzWl
14938cwN1hHNWNkRngwY21WMGRYSnVJR3BSZFdWeWVTNWpjM01vSUdWc1pXMHNJRndpWkdsemNHeGhlVndpSUNrZ1BUMDlJRndpYm05dVpWd2lJSHg4SUNGcVVYVmxjbmt1WTI5dWRHRnBibk1vSUdWc1pXMHViM2R1WlhKRWIyTjFiV1Z1ZEN3Z1pXeGxiU0FwTzF4dVhIUjlPMXh1WEc1MllYSWdjbU5vWldOcllXSnNaVlI1Y0dVZ1BTQW9MMTRvUHpwamFHVmphMkp2ZUh4eVlXUnBieWtrTDJrcE8xeHVYRzVjYmx4dUtHWjFibU4wYVc5dUtDa2dlMXh1WEhSMllYSWdabkpoWjIxbGJuUWdQU0JrYjJOMWJXVnVkQzVqY21WaGRHVkViMk4xYldWdWRFWnlZV2R0Wlc1MEtDa3NYRzVjZEZ4MFpHbDJJRDBnWm5KaFoyMWxiblF1WVhCd1pXNWtRMmhwYkdRb0lHUnZZM1Z0Wlc1MExtTnlaV0YwWlVWc1pXMWxiblFvSUZ3aVpHbDJYQ0lnS1NBcExGeHVYSFJjZEdsdWNIVjBJRDBnWkc5amRXMWxiblF1WTNKbFlYUmxSV3hsYldWdWRDZ2dYQ0pwYm5CMWRGd2lJQ2s3WEc1Y2JseDBMeThnVTNWd2NHOXlkRG9nVTJGbVlYSnBQRDAxTGpGY2JseDBMeThnUTJobFkyc2djM1JoZEdVZ2JHOXpkQ0JwWmlCMGFHVWdibUZ0WlNCcGN5QnpaWFFnS0NNeE1USXhOeWxjYmx4MEx5OGdVM1Z3Y0c5eWREb2dWMmx1Wkc5M2N5QlhaV0lnUVhCd2N5QW9WMWRCS1Z4dVhIUXZMeUJnYm1GdFpXQWdZVzVrSUdCMGVYQmxZQ0J0ZFhOMElIVnpaU0F1YzJWMFFYUjBjbWxpZFhSbElHWnZjaUJYVjBFZ0tDTXhORGt3TVNsY2JseDBhVzV3ZFhRdWMyVjBRWFIwY21saWRYUmxLQ0JjSW5SNWNHVmNJaXdnWENKeVlXUnBiMXdpSUNrN1hHNWNkR2x1Y0hWMExuTmxkRUYwZEhKcFluVjBaU2dnWENKamFHVmphMlZrWENJc0lGd2lZMmhsWTJ0bFpGd2lJQ2s3WEc1Y2RHbHVjSFYwTG5ObGRFRjBkSEpwWW5WMFpTZ2dYQ0p1WVcxbFhDSXNJRndpZEZ3aUlDazdYRzVjYmx4MFpHbDJMbUZ3Y0dWdVpFTm9hV3hrS0NCcGJuQjFkQ0FwTzF4dVhHNWNkQzh2SUZOMWNIQnZjblE2SUZOaFptRnlhVHc5TlM0eExDQkJibVJ5YjJsa1BEUXVNbHh1WEhRdkx5QlBiR1JsY2lCWFpXSkxhWFFnWkc5bGMyNG5kQ0JqYkc5dVpTQmphR1ZqYTJWa0lITjBZWFJsSUdOdmNuSmxZM1JzZVNCcGJpQm1jbUZuYldWdWRITmNibHgwYzNWd2NHOXlkQzVqYUdWamEwTnNiMjVsSUQwZ1pHbDJMbU5zYjI1bFRtOWtaU2dnZEhKMVpTQXBMbU5zYjI1bFRtOWtaU2dnZEhKMVpTQXBMbXhoYzNSRGFHbHNaQzVqYUdWamEyVmtPMXh1WEc1Y2RDOHZJRk4xY0hCdmNuUTZJRWxGUEQweE1TdGNibHgwTHk4Z1RXRnJaU0J6ZFhKbElIUmxlSFJoY21WaElDaGhibVFnWTJobFkydGliM2dwSUdSbFptRjFiSFJXWVd4MVpTQnBjeUJ3Y205d1pYSnNlU0JqYkc5dVpXUmNibHgwWkdsMkxtbHVibVZ5U0ZSTlRDQTlJRndpUEhSbGVIUmhjbVZoUG5nOEwzUmxlSFJoY21Wa
14938FBsd2lPMXh1WEhSemRYQndiM0owTG01dlEyeHZibVZEYUdWamEyVmtJRDBnSVNGa2FYWXVZMnh2Ym1WT2IyUmxLQ0IwY25WbElDa3ViR0Z6ZEVOb2FXeGtMbVJsWm1GMWJIUldZV3gxWlR0Y2JuMHBLQ2s3WEc1MllYSWdjM1J5ZFc1a1pXWnBibVZrSUQwZ2RIbHdaVzltSUhWdVpHVm1hVzVsWkR0Y2JseHVYRzVjYm5OMWNIQnZjblF1Wm05amRYTnBia0oxWW1Kc1pYTWdQU0JjSW05dVptOWpkWE5wYmx3aUlHbHVJSGRwYm1SdmR6dGNibHh1WEc1MllYSmNibHgwY210bGVVVjJaVzUwSUQwZ0wxNXJaWGt2TEZ4dVhIUnliVzkxYzJWRmRtVnVkQ0E5SUM5ZUtEODZiVzkxYzJWOGNHOXBiblJsY254amIyNTBaWGgwYldWdWRTbDhZMnhwWTJzdkxGeHVYSFJ5Wm05amRYTk5iM0p3YUNBOUlDOWVLRDg2Wm05amRYTnBibVp2WTNWemZHWnZZM1Z6YjNWMFlteDFjaWtrTHl4Y2JseDBjblI1Y0dWdVlXMWxjM0JoWTJVZ1BTQXZYaWhiWGk1ZEtpa29QenBjWEM0b0xpc3BmQ2trTHp0Y2JseHVablZ1WTNScGIyNGdjbVYwZFhKdVZISjFaU2dwSUh0Y2JseDBjbVYwZFhKdUlIUnlkV1U3WEc1OVhHNWNibVoxYm1OMGFXOXVJSEpsZEhWeWJrWmhiSE5sS0NrZ2UxeHVYSFJ5WlhSMWNtNGdabUZzYzJVN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUhOaFptVkJZM1JwZG1WRmJHVnRaVzUwS0NrZ2UxeHVYSFIwY25rZ2UxeHVYSFJjZEhKbGRIVnliaUJrYjJOMWJXVnVkQzVoWTNScGRtVkZiR1Z0Wlc1ME8xeHVYSFI5SUdOaGRHTm9JQ2dnWlhKeUlDa2dleUI5WEc1OVhHNWNiaThxWEc0Z0tpQklaV3h3WlhJZ1puVnVZM1JwYjI1eklHWnZjaUJ0WVc1aFoybHVaeUJsZG1WdWRITWdMUzBnYm05MElIQmhjblFnYjJZZ2RHaGxJSEIxWW14cFl5QnBiblJsY21aaFkyVXVYRzRnS2lCUWNtOXdjeUIwYnlCRVpXRnVJRVZrZDJGeVpITW5JR0ZrWkVWMlpXNTBJR3hwWW5KaGNua2dabTl5SUcxaGJua2diMllnZEdobElHbGtaV0Z6TGx4dUlDb3ZYRzVxVVhWbGNua3VaWFpsYm5RZ1BTQjdYRzVjYmx4MFoyeHZZbUZzT2lCN2ZTeGNibHh1WEhSaFpHUTZJR1oxYm1OMGFXOXVLQ0JsYkdWdExDQjBlWEJsY3l3Z2FHRnVaR3hsY2l3Z1pHRjBZU3dnYzJWc1pXTjBiM0lnS1NCN1hHNWNibHgwWEhSMllYSWdhR0Z1Wkd4bFQySnFTVzRzSUdWMlpXNTBTR0Z1Wkd4bExDQjBiWEFzWEc1Y2RGeDBYSFJsZG1WdWRITXNJSFFzSUdoaGJtUnNaVTlpYWl4Y2JseDBYSFJjZEhOd1pXTnBZV3dzSUdoaGJtUnNaWEp6TENCMGVYQmxMQ0J1WVcxbGMzQmhZMlZ6TENCdmNtbG5WSGx3WlN4Y2JseDBYSFJjZEdWc1pXMUVZWFJoSUQwZ1pHRjBZVjl3Y21sMkxtZGxkQ2dnWld4bGJTQXBPMXh1WEc1Y2RGeDBMeThnUkc5dUozUWdZWFIwWVdOb0lHVjJaVzUwY3lCMGJ5QnViMFJoZEdFZ2IzSWdkR1Y0ZEM5amIyMXRaVzUwSUc1dlpHVnpJQ2hpZFhRZ1lXeHNiM2NnY0d4aGFXNGdiMkpxWldOMGN5bGNibHgwWEhScFppQW9JQ0ZsYkdWdFJHRjBZU0FwSUh0Y2JseDBYSFJjZEhKbGRIVnlianRjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJEWVd4c1pYSWdZMkZ1SUhCaGMzTWdhVzRnWVc0Z2IySnFaV04wSUc5bUlHTjFjM1J2YlNCa1lYUmhJR2x1SUd4cFpYVWdiMllnZEdobElHaGhibVJzWlhKY2JseDBYSFJwWmlBb0lHaGhibVJzWlhJdWFHRnVaR3hsY2lBcElIdGNibHgwWEhSY2RHaGhibVJzWlU5aWFrbHVJRDBnYUdGdVpHeGxjanRjYmx4MFhIUmNkR2hoYm1Sc1pYSWdQU0JvWVc1a2JHVlBZbXBKYmk1b1lXNWtiR1Z5TzF4dVhIUmNkRngwYzJWc1pXTjBiM0lnUFNCb1lXNWtiR1ZQWW1wSmJpNXpaV3hsWTNSdmNqdGNibHgwWEhSOVhHNWNibHgwWEhRdkx5Qk5ZV3RsSUhOMWNtVWdkR2hoZENCMGFHVWdhR0Z1Wkd4bGNpQm9ZWE1nWVNCMWJtbHhkV1VnU1VRc0lIVnpaV1FnZEc4Z1ptbHVaQzl5WlcxdmRtVWdhWFFnYkdGMFpYSmNibHgwWEhScFppQW9JQ0ZvWVc1a2JHVnlMbWQxYVdRZ0tTQjdYRzVjZEZ4MFhIUm9ZVzVrYkdWeUxtZDFhV1FnUFNCcVVYVmxjbmt1WjNWcFpDc3JPMXh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRWx1YVhRZ2RHaGxJR1ZzWlcxbGJuUW5jeUJsZG1WdWRDQnpkSEoxWTNSMWNtVWdZVzVrSUcxaGFXNGdhR0Z1Wkd4bGNpd2dhV1lnZEdocGN5QnBjeUIwYUdVZ1ptbHljM1JjYmx4MFhIUnBaaUFvSUNFb1pYWmxiblJ6SUQwZ1pXeGxiVVJoZEdFdVpYWmxiblJ6S1NBcElIdGNibHgwWEhSY2RHVjJaVzUwY3lBOUlHVnNaVzFFWVhSaExtVjJaVzUwY3lBOUlIdDlPMXh1WEhSY2RIMWNibHgwWEhScFppQW9JQ0VvWlhabGJuUklZVzVrYkdVZ1BTQmxiR1Z0UkdGMFlTNW9ZVzVrYkdVcElDa2dlMXh1WEhSY2RGeDBaWFpsYm5SSVlXNWtiR1VnUFNCbGJHVnRSR0YwWVM1b1lXNWtiR1VnUFNCbWRXNWpkR2x2YmlnZ1pTQXBJSHRjYmx4MFhIUmNkRngwTHk4Z1JHbHpZMkZ5WkNCMGFHVWdjMlZqYjI1a0lHVjJaVzUwSUc5bUlHRWdhbEYxWlhKNUxtVjJaVzUwTG5SeWFXZG5aWElvS1NCaGJtUmNibHgwWEhSY2RGeDBMeThnZDJobGJpQmhiaUJsZG1WdWRDQnBjeUJqWVd4c1pXUWdZV1owWlhJZ1lTQndZV2RsSUdoaGN5QjFibXh2WVdSbFpGeHVYSFJjZEZ4MFhIUnlaWFIxY200Z2RIbHdaVzltSUdwUmRXVnllU0FoUFQwZ2MzUnlkVzVrWldacGJtVmtJQ1ltSUdwUmRXVnllUzVsZG1WdWRDNTBjbWxuWjJWeVpXUWdJVDA5SUdVdWRIbHdaU0EvWEc1Y2RGeDBYSFJjZEZ4MGFsRjFaWEo1TG1WMlpXNTBMbVJwYzNCaGRHTm9MbUZ3Y0d4NUtDQmxiR1Z0TENCaGNtZDFiV1Z1ZEhNZ0tTQTZJSFZ1WkdWbWFXNWxaRHRjYmx4MFhIUmNkSDA3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnU0dGdVpHeGxJRzExYkhScGNHeGxJR1YyWlc1MGN5QnpaWEJoY21GMFpXUWdZbmtnWVNCemNHRmpaVnh1WEhSY2RIUjVjR1Z6SUQwZ0tDQjBlWEJsY3lCOGZDQmNJbHdpSUNrdWJXRjBZMmdvSUhKdWIzUjNhR2wwWlNBcElIeDhJRnNnWENKY0lpQmRPMXh1WEhSY2RIUWdQU0IwZVhCbGN5NXNaVzVuZEdnN1hHNWNkRngwZDJocGJHVWdLQ0IwTFMwZ0tTQjdYRzVjZEZ4MFhIUjBiWEFnUFNCeWRIbHdaVzVoYldWemNHRmpaUzVsZUdWaktDQjBlWEJsYzF0MFhTQXBJSHg4SUZ0ZE8xeHVYSFJjZEZ4MGRIbHdaU0E5SUc5eWFXZFVlWEJsSUQwZ2RHMXdXekZkTzF4dVhIUmNkRngwYm1GdFpYTndZV05sY3lBOUlDZ2dkRzF3V3pKZElIeDhJRndpWENJZ0tTNXpjR3hwZENnZ1hDSXVYQ0lnS1M1emIzSjBLQ2s3WEc1Y2JseDBYSFJjZEM4dklGUm9aWEpsSUNwdGRYTjBLaUJpWlNCaElIUjVjR1VzSUc1dklHRjBkR0ZqYUdsdVp5QnVZVzFsYzNCaFkyVXRiMjVzZVNCb1lXNWtiR1Z5YzF4dVhIUmNkRngwYVdZZ0tDQWhkSGx3WlNBcElIdGNibHgwWEhSY2RGeDBZMjl1ZEdsdWRXVTdYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkQzh2SUVsbUlHVjJaVzUwSUdOb1lXNW5aWE1nYVhSeklIUjVjR1VzSUhWelpTQjBhR1VnYzNCbFkybGhiQ0JsZG1WdWRDQm9ZVzVrYkdWeWN5Qm1iM0lnZEdobElHTm9ZVzVuWldRZ2RIbHdaVn
14938h1WEhSY2RGeDBjM0JsWTJsaGJDQTlJR3BSZFdWeWVTNWxkbVZ1ZEM1emNHVmphV0ZzV3lCMGVYQmxJRjBnZkh3Z2UzMDdYRzVjYmx4MFhIUmNkQzh2SUVsbUlITmxiR1ZqZEc5eUlHUmxabWx1WldRc0lHUmxkR1Z5YldsdVpTQnpjR1ZqYVdGc0lHVjJaVzUwSUdGd2FTQjBlWEJsTENCdmRHaGxjbmRwYzJVZ1oybDJaVzRnZEhsd1pWeHVYSFJjZEZ4MGRIbHdaU0E5SUNnZ2MyVnNaV04wYjNJZ1B5QnpjR1ZqYVdGc0xtUmxiR1ZuWVhSbFZIbHdaU0E2SUhOd1pXTnBZV3d1WW1sdVpGUjVjR1VnS1NCOGZDQjBlWEJsTzF4dVhHNWNkRngwWEhRdkx5QlZjR1JoZEdVZ2MzQmxZMmxoYkNCaVlYTmxaQ0J2YmlCdVpYZHNlU0J5WlhObGRDQjBlWEJsWEc1Y2RGeDBYSFJ6Y0dWamFXRnNJRDBnYWxGMVpYSjVMbVYyWlc1MExuTndaV05wWVd4YklIUjVjR1VnWFNCOGZDQjdmVHRjYmx4dVhIUmNkRngwTHk4Z2FHRnVaR3hsVDJKcUlHbHpJSEJoYzNObFpDQjBieUJoYkd3Z1pYWmxiblFnYUdGdVpHeGxjbk5jYmx4MFhIUmNkR2hoYm1Sc1pVOWlhaUE5SUdwUmRXVnllUzVsZUhSbGJtUW9lMXh1WEhSY2RGeDBYSFIwZVhCbE9pQjBlWEJsTEZ4dVhIUmNkRngwWEhSdmNtbG5WSGx3WlRvZ2IzSnBaMVI1Y0dVc1hHNWNkRngwWEhSY2RHUmhkR0U2SUdSaGRHRXNYRzVjZEZ4MFhIUmNkR2hoYm1Sc1pYSTZJR2hoYm1Sc1pYSXNYRzVjZEZ4MFhIUmNkR2QxYVdRNklHaGhibVJzWlhJdVozVnBaQ3hjYmx4MFhIUmNkRngwYzJWc1pXTjBiM0k2SUhObGJHVmpkRzl5TEZ4dVhIUmNkRngwWEhSdVpXVmtjME52Ym5SbGVIUTZJSE5sYkdWamRHOXlJQ1ltSUdwUmRXVnllUzVsZUhCeUxtMWhkR05vTG01bFpXUnpRMjl1ZEdWNGRDNTBaWE4wS0NCelpXeGxZM1J2Y2lBcExGeHVYSFJjZEZ4MFhIUnVZVzFsYzNCaFkyVTZJRzVoYldWemNHRmpaWE11YW05cGJpaGNJaTVjSWlsY2JseDBYSFJjZEgwc0lHaGhibVJzWlU5aWFrbHVJQ2s3WEc1Y2JseDBYSFJjZEM4dklFbHVhWFFnZEdobElHVjJaVzUwSUdoaGJtUnNaWElnY1hWbGRXVWdhV1lnZDJVbmNtVWdkR2hsSUdacGNuTjBYRzVjZEZ4MFhIUnBaaUFvSUNFb2FHRnVaR3hsY25NZ1BTQmxkbVZ1ZEhOYklIUjVjR1VnWFNrZ0tTQjdYRzVjZEZ4MFhIUmNkR2hoYm1Sc1pYSnpJRDBnWlhabGJuUnpXeUIwZVhCbElGMGdQU0JiWFR0Y2JseDBYSFJjZEZ4MGFHRnVaR3hsY25NdVpHVnNaV2RoZEdWRGIzVnVkQ0E5SURBN1hHNWNibHgwWEhSY2RGeDBMeThnVDI1c2VTQjFjMlVnWVdSa1JYWmxiblJNYVhOMFpXNWxjaUJwWmlCMGFHVWdjM0JsWTJsaGJDQmxkbVZ1ZEhNZ2FHRnVaR3hsY2lCeVpYUjFjbTV6SUdaaGJITmxYRzVjZEZ4MFhIUmNkR2xtSUNnZ0lYTndaV05wWVd3dWMyVjBkWEFnZkh3Z2MzQmxZMmxoYkM1elpYUjFjQzVqWVd4c0tDQmxiR1Z0TENCa1lYUmhMQ0J1WVcxbGMzQmhZMlZ6TENCbGRtVnVkRWhoYm1Sc1pTQXBJRDA5UFNCbVlXeHpaU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUnBaaUFvSUdWc1pXMHVZV1JrUlhabGJuUk1hWE4wWlc1bGNpQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RHVnNaVzB1WVdSa1JYWmxiblJNYVhOMFpXNWxjaWdnZEhsd1pTd2daWFpsYm5SSVlXNWtiR1VzSUdaaGJITmxJQ2s3WEc1Y2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkR2xtSUNnZ2MzQmxZMmxoYkM1aFpHUWdLU0I3WEc1Y2RGeDBYSFJjZEhOd1pXTnBZV3d1WVdSa0xtTmhiR3dvSUdWc1pXMHNJR2hoYm1Sc1pVOWlhaUFwTzF4dVhHNWNkRngwWEhSY2RHbG1JQ2dnSVdoaGJtUnNaVTlpYWk1b1lXNWtiR1Z5TG1kMWFXUWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MGFHRnVaR3hsVDJKcUxtaGhibVJzWlhJdVozVnBaQ0E5SUdoaGJtUnNaWEl1WjNWcFpEdGNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFF2THlCQlpHUWdkRzhnZEdobElHVnNaVzFsYm5RbmN5Qm9ZVzVrYkdWeUlHeHBjM1FzSUdSbGJHVm5ZWFJsY3lCcGJpQm1jbTl1ZEZ4dVhIUmNkRngwYVdZZ0tDQnpaV3hsWTNSdmNpQXBJSHRjYmx4MFhIUmNkRngwYUdGdVpHeGxjbk11YzNCc2FXTmxLQ0JvWVc1a2JHVnljeTVrWld4bFoyRjBaVU52ZFc1MEt5c3NJREFzSUdoaGJtUnNaVTlpYWlBcE8xeHVYSFJjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEZ4MGFHRnVaR3hsY25NdWNIVnphQ2dnYUdGdVpHeGxUMkpxSUNrN1hHNWNkRngwWEhSOVhHNWNibHgwWEhSY2RDOHZJRXRsWlhBZ2RISmhZMnNnYjJZZ2QyaHBZMmdnWlhabGJuUnpJR2hoZG1VZ1pYWmxjaUJpWldWdUlIVnpaV1FzSUdadmNpQmxkbVZ1ZENCdmNIUnBiV2w2WVhScGIyNWNibHgwWEhSY2RHcFJkV1Z5ZVM1bGRtVnVkQzVuYkc5aVlXeGJJSFI1Y0dVZ1hTQTlJSFJ5ZFdVN1hHNWNkRngwZlZ4dVhHNWNkSDBzWEc1Y2JseDBMeThnUkdWMFlXTm9JR0Z1SUdWMlpXNTBJRzl5SUhObGRDQnZaaUJsZG1WdWRITWdabkp2YlNCaGJpQmxiR1Z0Wlc1MFhHNWNkSEpsYlc5MlpUb2dablZ1WTNScGIyNG9JR1ZzWlcwc0lIUjVjR1Z6TENCb1lXNWtiR1Z5TENCelpXeGxZM1J2Y2l3Z2JXRndjR1ZrVkhsd1pYTWdLU0I3WEc1Y2JseDBYSFIyWVhJZ2Fpd2diM0pwWjBOdmRXNTBMQ0IwYlhBc1hHNWNkRngwWEhSbGRtVnVkSE1zSUhRc0lHaGhibVJzWlU5aWFpeGNibHgwWEhSY2RITndaV05wWVd3c0lHaGhibVJzWlhKekxDQjBlWEJsTENCdVlXMWxjM0JoWTJWekxDQnZjbWxuVkhsd1pTeGNibHgwWEhSY2RHVnNaVzFFWVhSaElEMGdaR0YwWVY5d2NtbDJMbWhoYzBSaGRHRW9JR1ZzWlcwZ0tTQW1KaUJrWVhSaFgzQnlhWFl1WjJWMEtDQmxiR1Z0SUNrN1hHNWNibHgwWEhScFppQW9JQ0ZsYkdWdFJHRjBZU0I4ZkNBaEtHVjJaVzUwY3lBOUlHVnNaVzFFWVhSaExtVjJaVzUwY3lrZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200N1hHNWNkRngwZlZ4dVhHNWNkRngwTHk4Z1QyNWpaU0JtYjNJZ1pXRmphQ0IwZVhCbExtNWhiV1Z6Y0dGalpTQnBiaUIwZVhCbGN6c2dkSGx3WlNCdFlYa2dZbVVnYjIxcGRIUmxaRnh1WEhSY2RIUjVjR1Z6SUQwZ0tDQjBlWEJsY3lCOGZDQmNJbHdpSUNrdWJXRjBZMmdvSUhKdWIzUjNhR2wwWlNBcElIeDhJRnNnWENKY0lpQmRPMXh1WEhSY2RIUWdQU0IwZVhCbGN5NXNaVzVuZEdnN1hHNWNkRngwZDJocGJHVWdLQ0IwTFMwZ0tTQjdYRzVjZEZ4MFhIUjBiWEFnUFNCeWRIbHdaVzVoYldWemNHRmpaUzVsZUdWaktDQjBlWEJsYzF0MFhTQXBJSHg4SUZ0ZE8xeHVYSFJjZEZ4MGRIbHdaU0E5SUc5eWFXZFVlWEJsSUQwZ2RHMXdXekZkTzF4dVhIUmNkRngwYm1GdFpYTndZV05sY3lBOUlDZ2dkRzF3V3pKZElIeDhJRndpWENJZ0tTNXpjR3hwZENnZ1hDSXVYQ0lnS1M1emIzSjBLQ2s3WEc1Y2JseDBYSFJjZEM4dklGVnVZbWx1WkNCaGJHd2daWFpsYm5SeklDaHZiaUIwYUdseklHNWhiV1Z6Y0dGalpTd2dhV1lnY0hKdmRtbGtaV1FwSUdadmNpQjBhR1VnWld4bGJXVnVkRnh1WEhSY2RGeDBhV1lnS0NBaGRIbHdaU0FwSUh0Y2JseDBYSFJjZEZ4MFptOXlJQ2dnZEhsd1pTQnBiaUJsZG1WdWRITWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MGFsRjFaWEo1TG1WMlpXNTBMbkpsYlc5MlpTZ2daV3hsYlN3Z2RIbHdaU0FySUhSNWNHVnpXeUIwSUYwc0lHaGhibVJzWlhJc0lITmxiR1ZqZEc5eUxDQjBjblZsSUNrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBZMjl1ZEdsdWRXVTdYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkSE53WldOcFlXd2dQU0JxVVhWbGNua3VaWFpsYm5RdWMzQmxZMmxoYkZzZ2RIbHdaU0JkSUh4OElIdDlPMXh1WEhSY2RGeDBkSGx3WlNBOUlDZ2djMlZzWldOMGIzSWdQeUJ6Y0dWamFXRnNMbVJsYkdWbllYUmxWSGx3WlNBNklITndaV05wWVd3dVltbHVaRlI1Y0dVZ0tTQjhmQ0IwZVhCbE8xeHVYSFJjZEZ4MGFHRnVaR3hsY25NZ1BTQmxkbVZ1ZEhOYklIUjVjR1VnWFNCOGZDQmJYVHRjYmx4MFhIUmNkSFJ0Y0NBOUlIUnRjRnN5WFNBbUppQnVaWGNnVW1WblJYaHdLQ0JjSWloZWZGeGNYRnd1S1Z3aUlDc2dibUZ0WlhOd1lXTmxjeTVxYjJsdUtGd2lYRnhjWEM0b1B6b3VLbHhjWEZ3dWZDbGNJaWtnS3lCY0lpaGNYRnhjTG53a0tWd2lJQ2s3WEc1Y2JseDBYSFJjZEM4dklGSmxiVzkyWlNCdFlYUmphR2x1WnlCbGRtVnVkSE5jYmx4MFhIUmNkRzl5YVdkRGIzVnVkQ0E5SUdvZ1BTQm9ZVzVrYkdWeWN5NXNaVzVuZEdnN1hHNWNkRngwWEhSM2FHbHNaU0FvSUdvdExTQXBJSHRjYmx4MFhIUmNkRngwYUdGdVpHeGxUMkpxSUQwZ2FHRnVaR3hsY25OYklHb2dYVHRjYmx4dVhIUmNkRngwWEhScFppQW9JQ2dnYldGd2NHVmtWSGx3WlhNZ2ZId2diM0pwWjFSNWNHVWdQVDA5SUdoaGJt
14938UnNaVTlpYWk1dmNtbG5WSGx3WlNBcElDWW1YRzVjZEZ4MFhIUmNkRngwS0NBaGFHRnVaR3hsY2lCOGZDQm9ZVzVrYkdWeUxtZDFhV1FnUFQwOUlHaGhibVJzWlU5aWFpNW5kV2xrSUNrZ0ppWmNibHgwWEhSY2RGeDBYSFFvSUNGMGJYQWdmSHdnZEcxd0xuUmxjM1FvSUdoaGJtUnNaVTlpYWk1dVlXMWxjM0JoWTJVZ0tTQXBJQ1ltWEc1Y2RGeDBYSFJjZEZ4MEtDQWhjMlZzWldOMGIzSWdmSHdnYzJWc1pXTjBiM0lnUFQwOUlHaGhibVJzWlU5aWFpNXpaV3hsWTNSdmNpQjhmQ0J6Wld4bFkzUnZjaUE5UFQwZ1hDSXFLbHdpSUNZbUlHaGhibVJzWlU5aWFpNXpaV3hsWTNSdmNpQXBJQ2tnZTF4dVhIUmNkRngwWEhSY2RHaGhibVJzWlhKekxuTndiR2xqWlNnZ2Fpd2dNU0FwTzF4dVhHNWNkRngwWEhSY2RGeDBhV1lnS0NCb1lXNWtiR1ZQWW1vdWMyVnNaV04wYjNJZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSb1lXNWtiR1Z5Y3k1a1pXeGxaMkYwWlVOdmRXNTBMUzA3WEc1Y2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkR2xtSUNnZ2MzQmxZMmxoYkM1eVpXMXZkbVVnS1NCN1hHNWNkRngwWEhSY2RGeDBYSFJ6Y0dWamFXRnNMbkpsYlc5MlpTNWpZV3hzS0NCbGJHVnRMQ0JvWVc1a2JHVlBZbW9nS1R0Y2JseDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwTHk4Z1VtVnRiM1psSUdkbGJtVnlhV01nWlhabGJuUWdhR0Z1Wkd4bGNpQnBaaUIzWlNCeVpXMXZkbVZrSUhOdmJXVjBhR2x1WnlCaGJtUWdibThnYlc5eVpTQm9ZVzVrYkdWeWN5QmxlR2x6ZEZ4dVhIUmNkRngwTHk4Z0tHRjJiMmxrY3lCd2IzUmxiblJwWVd3Z1ptOXlJR1Z1Wkd4bGMzTWdjbVZqZFhKemFXOXVJR1IxY21sdVp5QnlaVzF2ZG1Gc0lHOW1JSE53WldOcFlXd2daWFpsYm5RZ2FHRnVaR3hsY25NcFhHNWNkRngwWEhScFppQW9JRzl5YVdkRGIzVnVkQ0FtSmlBaGFHRnVaR3hsY25NdWJHVnVaM1JvSUNrZ2UxeHVYSFJjZEZ4MFhIUnBaaUFvSUNGemNHVmphV0ZzTG5SbFlYSmtiM2R1SUh4OElITndaV05wWVd3dWRHVmhjbVJ2ZDI0dVkyRnNiQ2dnWld4bGJTd2dibUZ0WlhOd1lXTmxjeXdnWld4bGJVUmhkR0V1YUdGdVpHeGxJQ2tnUFQwOUlHWmhiSE5sSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkR3BSZFdWeWVTNXlaVzF2ZG1WRmRtVnVkQ2dnWld4bGJTd2dkSGx3WlN3Z1pXeGxiVVJoZEdFdWFHRnVaR3hsSUNrN1hHNWNkRngwWEhSY2RIMWNibHh1WEhSY2RGeDBYSFJrWld4bGRHVWdaWFpsYm5Seld5QjBlWEJsSUYwN1hHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhHNWNkRngwTHk4Z1VtVnRiM1psSUhSb1pTQmxlSEJoYm1SdklHbG1JR2wwSjNNZ2JtOGdiRzl1WjJWeUlIVnpaV1JjYmx4MFhIUnBaaUFvSUdwUmRXVnllUzVwYzBWdGNIUjVUMkpxWldOMEtDQmxkbVZ1ZEhNZ0tTQXBJSHRjYmx4MFhIUmNkR1JsYkdWMFpTQmxiR1Z0UkdGMFlTNW9ZVzVrYkdVN1hHNWNkRngwWEhSa1lYUmhYM0J5YVhZdWNtVnRiM1psS0NCbGJHVnRMQ0JjSW1WMlpXNTBjMXdpSUNrN1hHNWNkRngwZlZ4dVhIUjlMRnh1WEc1Y2RIUnlhV2RuWlhJNklHWjFibU4wYVc5dUtDQmxkbVZ1ZEN3Z1pHRjBZU3dnWld4bGJTd2diMjVzZVVoaGJtUnNaWEp6SUNrZ2UxeHVYRzVjZEZ4MGRtRnlJR2tzSUdOMWNpd2dkRzF3TENCaWRXSmliR1ZVZVhCbExDQnZiblI1Y0dVc0lHaGhibVJzWlN3Z2MzQmxZMmxoYkN4Y2JseDBYSFJjZEdWMlpXNTBVR0YwYUNBOUlGc2daV3hsYlNCOGZDQmtiMk4xYldWdWRDQmRMRnh1WEhSY2RGeDBkSGx3WlNBOUlHaGhjMDkzYmk1allXeHNLQ0JsZG1WdWRDd2dYQ0owZVhCbFhDSWdLU0EvSUdWMlpXNTBMblI1Y0dVZ09pQmxkbVZ1ZEN4Y2JseDBYSFJjZEc1aGJXVnpjR0ZqWlhNZ1BTQm9ZWE5QZDI0dVkyRnNiQ2dnWlhabGJuUXNJRndpYm1GdFpYTndZV05sWENJZ0tTQS9JR1YyWlc1MExtNWhiV1Z6Y0dGalpTNXpjR3hwZENoY0lpNWNJaWtnT2lCYlhUdGNibHh1WEhSY2RHTjFjaUE5SUhSdGNDQTlJR1ZzWlcwZ1BTQmxiR1Z0SUh4OElHUnZZM1Z0Wlc1ME8xeHVYRzVjZEZ4MEx5OGdSRzl1SjNRZ1pHOGdaWFpsYm5SeklHOXVJSFJsZUhRZ1lXNWtJR052YlcxbGJuUWdibTlrWlhOY2JseDBYSFJwWmlBb0lHVnNaVzB1Ym05a1pWUjVjR1VnUFQwOUlETWdmSHdnWld4bGJTNXViMlJsVkhsd1pTQTlQVDBnT0NBcElIdGNibHgwWEhSY2RISmxkSFZ5Ymp0Y2JseDBYSFI5WEc1Y2JseDBYSFF2THlCbWIyTjFjeTlpYkhWeUlHMXZjbkJvY3lCMGJ5Qm1iMk4xYzJsdUwyOTFkRHNnWlc1emRYSmxJSGRsSjNKbElHNXZkQ0JtYVhKcGJtY2dkR2hsYlNCeWFXZG9kQ0J1YjNkY2JseDBYSFJwWmlBb0lISm1iMk4xYzAxdmNuQm9MblJsYzNRb0lIUjVjR1VnS3lCcVVYVmxjbmt1WlhabGJuUXVkSEpwWjJkbGNtVmtJQ2tnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTQ3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBhV1lnS0NCMGVYQmxMbWx1WkdWNFQyWW9YQ0l1WENJcElENDlJREFnS1NCN1hHNWNkRngwWEhRdkx5Qk9ZVzFsYzNCaFkyVmtJSFJ5YVdkblpYSTdJR055WldGMFpTQmhJSEpsWjJWNGNDQjBieUJ0WVhSamFDQmxkbVZ1ZENCMGVYQmxJR2x1SUdoaGJt
14938UnNaU2dwWEc1Y2RGeDBYSFJ1WVcxbGMzQmhZMlZ6SUQwZ2RIbHdaUzV6Y0d4cGRDaGNJaTVjSWlrN1hHNWNkRngwWEhSMGVYQmxJRDBnYm1GdFpYTndZV05sY3k1emFHbG1kQ2dwTzF4dVhIUmNkRngwYm1GdFpYTndZV05sY3k1emIzSjBLQ2s3WEc1Y2RGeDBmVnh1WEhSY2RHOXVkSGx3WlNBOUlIUjVjR1V1YVc1a1pYaFBaaWhjSWpwY0lpa2dQQ0F3SUNZbUlGd2liMjVjSWlBcklIUjVjR1U3WEc1Y2JseDBYSFF2THlCRFlXeHNaWElnWTJGdUlIQmhjM01nYVc0Z1lTQnFVWFZsY25rdVJYWmxiblFnYjJKcVpXTjBMQ0JQWW1wbFkzUXNJRzl5SUdwMWMzUWdZVzRnWlhabGJuUWdkSGx3WlNCemRISnBibWRjYmx4MFhIUmxkbVZ1ZENBOUlHVjJaVzUwV3lCcVVYVmxjbmt1Wlhod1lXNWtieUJkSUQ5Y2JseDBYSFJjZEdWMlpXNTBJRHBjYmx4MFhIUmNkRzVsZHlCcVVYVmxjbmt1UlhabGJuUW9JSFI1Y0dVc0lIUjVjR1Z2WmlCbGRtVnVkQ0E5UFQwZ1hDSnZZbXBsWTNSY0lpQW1KaUJsZG1WdWRDQXBPMXh1WEc1Y2RGeDBMeThnVkhKcFoyZGxjaUJpYVhSdFlYTnJPaUFtSURFZ1ptOXlJRzVoZEdsMlpTQm9ZVzVrYkdWeWN6c2dKaUF5SUdadmNpQnFVWFZsY25rZ0tHRnNkMkY1Y3lCMGNuVmxLVnh1WEhSY2RHVjJaVzUwTG1selZISnBaMmRsY2lBOUlHOXViSGxJWVc1a2JHVnljeUEvSURJZ09pQXpPMXh1WEhSY2RHVjJaVzUwTG01aGJXVnpjR0ZqWlNBOUlHNWhiV1Z6Y0dGalpYTXVhbTlwYmloY0lpNWNJaWs3WEc1Y2RGeDBaWFpsYm5RdWJtRnRaWE53WVdObFgzSmxJRDBnWlhabGJuUXVibUZ0WlhOd1lXTmxJRDljYmx4MFhIUmNkRzVsZHlCU1pXZEZlSEFvSUZ3aUtGNThYRnhjWEM0cFhDSWdLeUJ1WVcxbGMzQmhZMlZ6TG1wdmFXNG9YQ0pjWEZ4Y0xpZy9PaTRxWEZ4Y1hDNThLVndpS1NBcklGd2lLRnhjWEZ3dWZDUXBYQ0lnS1NBNlhHNWNkRngwWEhSdWRXeHNPMXh1WEc1Y2RGeDBMeThnUTJ4bFlXNGdkWEFnZEdobElHVjJaVzUwSUdsdUlHTmhjMlVnYVhRZ2FYTWdZbVZwYm1jZ2NtVjFjMlZrWEc1Y2RGeDBaWFpsYm5RdWNtVnpkV3gwSUQwZ2RXNWtaV1pwYm1Wa08xeHVYSFJjZEdsbUlDZ2dJV1YyWlc1MExuUmhjbWRsZENBcElIdGNibHgwWEhSY2RHVjJaVzUwTG5SaGNtZGxkQ0E5SUdWc1pXMDdYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdRMnh2Ym1VZ1lXNTVJR2x1WTI5dGFXNW5JR1JoZEdFZ1lXNWtJSEJ5WlhCbGJtUWdkR2hsSUdWMlpXNTBMQ0JqY21WaGRHbHVaeUIwYUdVZ2FHRnVaR3hsY2lCaGNtY2diR2x6ZEZ4dVhIUmNkR1JoZEdFZ1BTQmtZWFJoSUQwOUlHNTFiR3dnUDF4dVhIUmNkRngwV3lCbGRtVnVkQ0JkSURwY2JseDBYSFJjZEdwUmRXVnllUzV0WVd0bFFYSnlZWGtvSUdSaGRHRXNJRnNnWlhabGJuUWdYU0FwTzF4dVhHNWNkRngwTHk4Z1FXeHNiM2NnYzNCbFkybGhiQ0JsZG1WdWRITWdkRzhnWkhKaGR5QnZkWFJ6YVdSbElIUm9aU0JzYVc1bGMxeHVYSFJjZEhOd1pXTnBZV3dnUFNCcVVYVmxjbmt1WlhabGJuUXVjM0JsWTJsaGJGc2dkSGx3WlNCZElIeDhJSHQ5TzF4dVhIUmNkR2xtSUNnZ0lXOXViSGxJWVc1a2JHVnljeUFtSmlCemNHVmphV0ZzTG5SeWFXZG5aWElnSmlZZ2MzQmxZMmxoYkM1MGNtbG5aMlZ5TG1Gd2NHeDVLQ0JsYkdWdExDQmtZWFJoSUNrZ1BUMDlJR1poYkhObElDa2dlMXh1WEhSY2RGeDBjbVYwZFhKdU8xeHVYSFJjZEgxY2JseHVYSFJjZEM4dklFUmxkR1Z5YldsdVpTQmxkbVZ1ZENCd2NtOXdZV2RoZEdsdmJpQndZWFJvSUdsdUlHRmtkbUZ1WTJVc0lIQmxjaUJYTTBNZ1pYWmxiblJ6SUhOd1pXTWdLQ001T1RVeEtWeHVYSFJjZEM4dklFSjFZbUpzWlNCMWNDQjBieUJrYjJOMWJXVnVkQ3dnZEdobGJpQjBieUIzYVc1a2IzYzdJSGRoZEdOb0lHWnZjaUJoSUdkc2IySmhiQ0J2ZDI1bGNrUnZZM1Z0Wlc1MElIWmhjaUFvSXprM01qUXBYRzVjZEZ4MGFXWWdLQ0FoYjI1c2VVaGhibVJzWlhKeklDWW1JQ0Z6Y0dWamFXRnNMbTV2UW5WaVlteGxJQ1ltSUNGcVVYVmxjbmt1YVhOWGFXNWtiM2NvSUdWc1pXMGdLU0FwSUh0Y2JseHVYSFJjZEZ4MFluVmlZbXhsVkhsd1pTQTlJSE53WldOcFlXd3VaR1ZzWldkaGRHVlVlWEJsSUh4OElIUjVjR1U3WEc1Y2RGeDBYSFJwWmlBb0lDRnlabTlqZFhOTmIzSndhQzUwWlhOMEtDQmlkV0ppYkdWVWVYQmxJQ3NnZEhsd1pTQXBJQ2tnZTF4dVhIUmNkRngwWEhSamRYSWdQU0JqZFhJdWNHRnlaVzUwVG05a1pUdGNibHgwWEhSY2RIMWNibHgwWEhSY2RHWnZjaUFvSURzZ1kzVnlPeUJqZFhJZ1BTQmpkWEl1Y0dGeVpXNTBUbTlrWlNBcElIdGNibHgwWEhSY2RGeDBaWFpsYm5SUVlYUm9MbkIxYzJnb0lHTjFjaUFwTzF4dVhIUmNkRngwWEhSMGJYQWdQU0JqZFhJN1hHNWNkRngwWEhSOVhHNWNibHgwWEhSY2RDOHZJRTl1YkhrZ1lXUmtJSGRwYm1SdmR5QnBaaUIzWlNCbmIzUWdkRzhnWkc5amRXMWxiblFnS0dVdVp5NHNJRzV2ZENCd2JHRnBiaUJ2WW1vZ2IzSWdaR1YwWVdOb1pXUWdSRTlOS1Z4dVhIUmNkRngwYVdZZ0tDQjBiWEFnUFQwOUlDaGxiR1Z0TG05M2JtVnlSRzlqZFcxbGJuUWdmSHdnWkc5amRXMWxiblFwSUNrZ2UxeHVYSFJjZEZ4MFhIUmxkbVZ1ZEZCaGRHZ3VjSFZ6YUNnZ2RHMXdMbVJsWm1GMWJIUldhV1YzSUh4OElIUnRjQzV3WVhKbGJuUlhhVzVrYjNjZ2ZId2dkMmx1Wkc5M0lDazdYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdSbWx5WlNCb1lXNWtiR1Z5Y3lCdmJpQjBhR1VnWlhabGJuUWdjR0YwYUZ4dVhIUmNkR2tnUFNBd08xeHVYSFJjZEhkb2FXeGxJQ2dnS0dOMWNpQTlJR1YyWlc1MFVHRjBhRnRwS3l0ZEtTQW1KaUFoWlhabGJuUXVhWE5RY205d1lXZGhkR2x2YmxOMGIzQndaV1FvS1NBcElIdGNibHh1WEhSY2RGeDBaWFpsYm5RdWRIbHdaU0E5SUdrZ1BpQXhJRDljYmx4MFhIUmNkRngwWW5WaVlteGxWSGx3WlNBNlhHNWNkRngwWEhSY2RITndaV05wWVd3dVltbHVaRlI1Y0dVZ2ZId2dkSGx3WlR0Y2JseHVYSFJjZEZ4MEx5OGdhbEYxWlhKNUlHaGhibVJzWlhKY2JseDBYSFJjZEdoaGJtUnNaU0E5SUNnZ1pHRjBZVjl3Y21sMkxtZGxkQ2dnWTNWeUxDQmNJbVYyWlc1MGMxd2lJQ2tnZkh3Z2UzMGdLVnNnWlhabGJuUXVkSGx3WlNCZElDWW1JR1JoZEdGZmNISnBkaTVuWlhRb0lHTjFjaXdnWENKb1lXNWtiR1ZjSWlBcE8xeHVYSFJjZEZ4MGFXWWdLQ0JvWVc1a2JHVWdLU0I3WEc1Y2RGeDBYSFJjZEdoaGJtUnNaUzVoY0hCc2VTZ2dZM1Z5TENCa1lYUmhJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEM4dklFNWhkR2wyWlNCb1lXNWtiR1Z5WEc1Y2RGeDBYSFJvWVc1a2JHVWdQU0J2Ym5SNWNHVWdKaVlnWTNWeVd5QnZiblI1Y0dVZ1hUdGNibHgwWEhSY2RHbG1JQ2dnYUdGdVpHeGxJQ1ltSUdoaGJtUnNaUzVoY0hCc2VTQW1KaUJxVVhWbGNua3VZV05qWlhCMFJHRjBZU2dnWTNWeUlDa2dLU0I3WEc1Y2RGeDBYSFJjZEdWMlpXNTBMbkpsYzNWc2RDQTlJR2hoYm1Sc1pTNWhjSEJzZVNnZ1kzVnlMQ0JrWVhSaElDazdYRzVjZEZ4MFhIUmNkR2xtSUNnZ1pYWmxiblF1Y21WemRXeDBJRDA5UFNCbVlXeHpaU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmxkbVZ1ZEM1d2NtVjJaVzUwUkdWbVlYVnNkQ2dwTzF4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhIUmNkR1YyWlc1MExuUjVjR1VnUFNCMGVYQmxPMXh1WEc1Y2RGeDBMeThnU1dZZ2JtOWliMlI1SUhCeVpYWmxiblJsWkNCMGFHVWdaR1ZtWVhWc2RDQmhZM1JwYjI0c0lHUnZJR2wwSUc1dmQxeHVYSFJjZEdsbUlDZ2dJVzl1YkhsSVlXNWtiR1Z5Y3lBbUppQWhaWFpsYm5RdWFYTkVaV1poZFd4MFVISmxkbVZ1ZEdWa0tDa2dLU0I3WEc1Y2JseDBYSFJjZEdsbUlDZ2dLQ0Z6Y0dWamFXRnNMbDlrWldaaGRXeDBJSHg4SUhOd1pXTnBZV3d1WDJSbFptRjFiSFF1WVhCd2JIa29JR1YyWlc1MFVHRjBhQzV3YjNBb0tTd2daR0YwWVNBcElEMDlQU0JtWVd4elpTa2dKaVpjYmx4MFhIUmNkRngwYWxGMVpYSjVMbUZqWTJWd2RFUmhkR0VvSUdWc1pXMGdLU0FwSUh0Y2JseHVYSFJjZEZ4MFhIUXZMeUJEWVd4c0lHRWdibUYwYVhabElFUlBUU0J0WlhSb2IyUWdiMjRnZEdobElIUmhjbWRsZENCM2FYUm9JSFJvWlNCellXMWxJRzVoYldVZ2JtRnRaU0JoY3lCMGFHVWdaWFpsYm5RdVhHNWNkRngwWEhSY2RDOHZJRVJ2YmlkMElHUnZJR1JsWm1GMWJIUWdZV04wYVc5dWN5QnZiaUIzYVc1a2IzY3NJSFJvWVhRbmN5QjNhR1Z5WlNCbmJHOWlZV3dn
14938ZG1GeWFXRmliR1Z6SUdKbElDZ2pOakUzTUNsY2JseDBYSFJjZEZ4MGFXWWdLQ0J2Ym5SNWNHVWdKaVlnYWxGMVpYSjVMbWx6Um5WdVkzUnBiMjRvSUdWc1pXMWJJSFI1Y0dVZ1hTQXBJQ1ltSUNGcVVYVmxjbmt1YVhOWGFXNWtiM2NvSUdWc1pXMGdLU0FwSUh0Y2JseHVYSFJjZEZ4MFhIUmNkQzh2SUVSdmJpZDBJSEpsTFhSeWFXZG5aWElnWVc0Z2IyNUdUMDhnWlhabGJuUWdkMmhsYmlCM1pTQmpZV3hzSUdsMGN5QkdUMDhvS1NCdFpYUm9iMlJjYmx4MFhIUmNkRngwWEhSMGJYQWdQU0JsYkdWdFd5QnZiblI1Y0dVZ1hUdGNibHh1WEhSY2RGeDBYSFJjZEdsbUlDZ2dkRzF3SUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwWld4bGJWc2diMjUwZVhCbElGMGdQU0J1ZFd4c08xeHVYSFJjZEZ4MFhIUmNkSDFjYmx4dVhIUmNkRngwWEhSY2RDOHZJRkJ5WlhabGJuUWdjbVV0ZEhKcFoyZGxjbWx1WnlCdlppQjBhR1VnYzJGdFpTQmxkbVZ1ZEN3Z2MybHVZMlVnZDJVZ1lXeHlaV0ZrZVNCaWRXSmliR1ZrSUdsMElHRmliM1psWEc1Y2RGeDBYSFJjZEZ4MGFsRjFaWEo1TG1WMlpXNTBMblJ5YVdkblpYSmxaQ0E5SUhSNWNHVTdYRzVjZEZ4MFhIUmNkRngwWld4bGJWc2dkSGx3WlNCZEtDazdYRzVjZEZ4MFhIUmNkRngwYWxGMVpYSjVMbVYyWlc1MExuUnlhV2RuWlhKbFpDQTlJSFZ1WkdWbWFXNWxaRHRjYmx4dVhIUmNkRngwWEhSY2RHbG1JQ2dnZEcxd0lDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFpXeGxiVnNnYjI1MGVYQmxJRjBnUFNCMGJYQTdYRzVjZEZ4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhHNWNkRngwY21WMGRYSnVJR1YyWlc1MExuSmxjM1ZzZER0Y2JseDBmU3hjYmx4dVhIUmthWE53WVhSamFEb2dablZ1WTNScGIyNG9JR1YyWlc1MElDa2dlMXh1WEc1Y2RGeDBMeThnVFdGclpTQmhJSGR5YVhSaFlteGxJR3BSZFdWeWVTNUZkbVZ1ZENCbWNtOXRJSFJvWlNCdVlYUnBkbVVnWlhabGJuUWdiMkpxWldOMFhHNWNkRngwWlhabGJuUWdQU0JxVVhWbGNua3VaWFpsYm5RdVptbDRLQ0JsZG1WdWRDQXBPMXh1WEc1Y2RGeDBkbUZ5SUdrc0lHb3NJSEpsZEN3Z2JXRjBZMmhsWkN3Z2FHRnVaR3hsVDJKcUxGeHVYSFJjZEZ4MGFHRnVaR3hsY2xGMVpYVmxJRDBnVzEwc1hHNWNkRngwWEhSaGNtZHpJRDBnYzJ4cFkyVXVZMkZzYkNnZ1lYSm5kVzFsYm5SeklDa3NYRzVjZEZ4MFhIUm9ZVzVrYkdWeWN5QTlJQ2dnWkdGMFlWOXdjbWwyTG1kbGRDZ2dkR2hwY3l3Z1hDSmxkbVZ1ZEhOY0lpQXBJSHg4SUh0OUlDbGJJR1YyWlc1MExuUjVjR1VnWFNCOGZDQmJYU3hjYmx4MFhIUmNkSE53WldOcFlXd2dQU0JxVVhWbGNua3VaWFpsYm5RdWMzQmxZMmxoYkZzZ1pYWmxiblF1ZEhsd1pTQmRJSHg4SUh0OU8xeHVYRzVjZEZ4MEx5OGdWWE5sSUhSb1pTQm1hWGd0WldRZ2FsRjFaWEo1TGtWMlpXNTBJSEpoZEdobGNpQjBhR0Z1SUhSb1pTQW9jbVZoWkMxdmJteDVLU0J1WVhScGRtVWdaWFpsYm5SY2JseDBYSFJoY21keld6QmRJRDBnWlhabGJuUTdYRzVjZEZ4MFpYWmxiblF1WkdWc1pXZGhkR1ZVWVhKblpYUWdQU0IwYUdsek8xeHVYRzVjZEZ4MEx5OGdRMkZzYkNCMGFHVWdjSEpsUkdsemNHRjBZMmdnYUc5dmF5Qm1iM0lnZEdobElHMWhjSEJsWkNCMGVYQmxMQ0JoYm1RZ2JHVjBJR2wwSUdKaGFXd2dhV1lnWkdWemFYSmxaRnh1WEhSY2RHbG1JQ2dnYzNCbFkybGhiQzV3Y21WRWFYTndZWFJqYUNBbUppQnpjR1ZqYVdGc0xuQnlaVVJwYzNCaGRHTm9MbU5oYkd3b0lIUm9hWE1zSUdWMlpXNTBJQ2tnUFQwOUlHWmhiSE5sSUNrZ2UxeHVYSFJjZEZ4MGNtVjBkWEp1TzF4dVhIUmNkSDFjYmx4dVhIUmNkQzh2SUVSbGRHVnliV2x1WlNCb1lXNWtiR1Z5YzF4dVhIUmNkR2hoYm1Sc1pYSlJkV1YxWlNBOUlHcFJkV1Z5ZVM1bGRtVnVkQzVvWVc1a2JHVnljeTVqWVd4c0tDQjBhR2x6TENCbGRtVnVkQ3dnYUdGdVpHeGxjbk1nS1R0Y2JseHVYSFJjZEM4dklGSjFiaUJrWld4bFoyRjBaWE1nWm1seWMzUTdJSFJvWlhrZ2JXRjVJSGRoYm5RZ2RHOGdjM1J2Y0NCd2NtOXdZV2RoZEdsdmJpQmlaVzVsWVhSb0lIVnpYRzVjZEZ4MGFTQTlJREE3WEc1Y2RGeDBkMmhwYkdVZ0tDQW9iV0YwWTJobFpDQTlJR2hoYm1Sc1pYSlJkV1YxWlZzZ2FTc3JJRjBwSUNZbUlDRmxkbVZ1ZEM1cGMxQnliM0JoWjJGMGFXOXVVM1J2Y0hCbFpDZ3BJQ2tnZTF4dVhIUmNkRngwWlhabGJuUXVZM1Z5Y21WdWRGUmhjbWRsZENBOUlHMWhkR05vWldRdVpXeGxiVHRjYmx4dVhIUmNkRngwYWlBOUlEQTdYRzVjZEZ4MFhIUjNhR2xzWlNBb0lDaG9ZVzVrYkdWUFltb2dQU0J0WVhSamFHVmtMbWhoYm1Sc1pYSnpXeUJxS3lzZ1hTa2dKaVlnSVdWMlpXNTBMbWx6U1cxdFpXUnBZWFJsVUhKdmNHRm5ZWFJwYjI1VGRHOXdjR1ZrS0NrZ0tTQjdYRzVjYmx4MFhIUmNkRngwTHk4Z1ZISnBaMmRsY21Wa0lHVjJaVzUwSUcxMWMzUWdaV2wwYUdWeUlERXBJR2hoZG1VZ2JtOGdibUZ0WlhOd1lXTmxMQ0J2Y2lBeUtTQm9ZWFpsSUc1aGJXVnpjR0ZqWlNoektWeHVYSFJjZEZ4MFhIUXZMeUJoSUhOMVluTmxkQ0J2Y2lCbGNYVmhiQ0IwYnlCMGFHOXpaU0JwYmlCMGFHVWdZbTkxYm1RZ1pYWmxiblFnS0dKdmRHZ2dZMkZ1SUdoaGRtVWdibThnYm1GdFpYTndZV05sS1M1Y2JseDBYSFJjZEZ4MGFXWWdLQ0FoWlhabGJuUXVibUZ0WlhOd1lXTmxYM0psSUh4OElHVjJaVzUwTG01aGJXVnpjR0ZqWlY5eVpTNTBaWE4wS0NCb1lXNWtiR1ZQWW1vdWJtRnRaWE53WVdObElDa2dLU0I3WEc1Y2JseDBYSFJjZEZ4MFhIUmxkbVZ1ZEM1b1lXNWtiR1ZQWW1vZ1BTQm9ZVzVrYkdWUFltbzdYRzVjZEZ4MFhIUmNkRngwWlhabGJuUXVaR0YwWVNBOUlHaGhibVJzWlU5aWFpNWtZWFJoTzF4dVhHNWNkRngwWEhSY2RGeDBjbVYwSUQwZ0tDQW9hbEYxWlhKNUxtVjJaVzUwTG5Od1pXTnBZV3hiSUdoaGJtUnNaVTlpYWk1dmNtbG5WSGx3WlNCZElIeDhJSHQ5S1M1b1lXNWtiR1VnZkh3Z2FHRnVaR3hsVDJKcUxtaGhibVJzWlhJZ0tWeHVYSFJjZEZ4MFhIUmNkRngwWEhRdVlYQndiSGtvSUcxaGRHTm9aV1F1Wld4bGJTd2dZWEpuY3lBcE8xeHVYRzVjZEZ4MFhIUmNkRngwYVdZZ0tDQnlaWFFnSVQwOUlIVnVaR1ZtYVc1bFpDQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RHbG1JQ2dnS0dWMlpXNTBMbkpsYzNWc2RDQTlJSEpsZENrZ1BUMDlJR1poYkhObElDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUmxkbVZ1ZEM1d2NtVjJaVzUwUkdWbVlYVnNkQ2dwTzF4dVhIUmNkRngwWEhSY2RGeDBYSFJsZG1WdWRDNXpkRzl3VUhKdmNHRm5ZWFJwYjI0b0tUdGNibHgwWEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDFjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJEWVd4c0lIUm9aU0J3YjNOMFJHbHpjR0YwWTJnZ2FHOXZheUJtYjNJZ2RHaGxJRzFoY0hCbFpDQjBlWEJsWEc1Y2RGeDBhV1lnS0NCemNHVmphV0ZzTG5CdmMzUkVhWE53WVhSamFDQXBJSHRjYmx4MFhIUmNkSE53WldOcFlXd3VjRzl6ZEVScGMzQmhkR05vTG1OaGJHd29JSFJvYVhNc0lHVjJaVzUwSUNrN1hHNWNkRngwZlZ4dVhHNWNkRngwY21WMGRYSnVJR1YyWlc1MExuSmxjM1ZzZER0Y2JseDBmU3hjYmx4dVhIUm9ZVzVrYkdWeWN6b2dablZ1WTNScGIyNG9JR1YyWlc1MExDQm9ZVzVrYkdWeWN5QXBJSHRjYmx4MFhIUjJZWElnYVN3Z2JXRjBZMmhsY3l3Z2MyVnNMQ0JvWVc1a2JHVlBZbW9zWEc1Y2RGeDBYSFJvWVc1a2JHVnlVWFZsZFdVZ1BTQmJYU3hjYmx4MFhIUmNkR1JsYkdWbllYUmxRMjkxYm5RZ1BTQm9ZVzVrYkdWeWN5NWtaV3hsWjJGMFpVTnZkVzUwTEZ4dVhIUmNkRngwWTNWeUlEMGdaWFpsYm5RdWRHRnlaMlYwTzF4dVhHNWNkRngwTHk4Z1JtbHVaQ0JrWld4bFoyRjBaU0JvWVc1a2JHVnljMXh1WEhSY2RDOHZJRUpzWVdOckxXaHZiR1VnVTFaSElEeDFjMlUrSUdsdWMzUmhibU5sSUhSeVpXVnpJQ2dqTVRNeE9
14938EQXBYRzVjZEZ4MEx5OGdRWFp2YVdRZ2JtOXVMV3hsWm5RdFkyeHBZMnNnWW5WaVlteHBibWNnYVc0Z1JtbHlaV1p2ZUNBb0l6TTROakVwWEc1Y2RGeDBhV1lnS0NCa1pXeGxaMkYwWlVOdmRXNTBJQ1ltSUdOMWNpNXViMlJsVkhsd1pTQW1KaUFvSVdWMlpXNTBMbUoxZEhSdmJpQjhmQ0JsZG1WdWRDNTBlWEJsSUNFOVBTQmNJbU5zYVdOclhDSXBJQ2tnZTF4dVhHNWNkRngwWEhSbWIzSWdLQ0E3SUdOMWNpQWhQVDBnZEdocGN6c2dZM1Z5SUQwZ1kzVnlMbkJoY21WdWRFNXZaR1VnZkh3Z2RHaHBjeUFwSUh0Y2JseHVYSFJjZEZ4MFhIUXZMeUJFYjI0bmRDQndjbTlqWlhOeklHTnNhV05yY3lCdmJpQmthWE5oWW14bFpDQmxiR1Z0Wlc1MGN5QW9Jelk1TVRFc0lDTTRNVFkxTENBak1URXpPRElzSUNNeE1UYzJOQ2xjYmx4MFhIUmNkRngwYVdZZ0tDQmpkWEl1WkdsellXSnNaV1FnSVQwOUlIUnlkV1VnZkh3Z1pYWmxiblF1ZEhsd1pTQWhQVDBnWENKamJHbGphMXdpSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRzFoZEdOb1pYTWdQU0JiWFR0Y2JseDBYSFJjZEZ4MFhIUm1iM0lnS0NCcElEMGdNRHNnYVNBOElHUmxiR1ZuWVhSbFEyOTFiblE3SUdrckt5QXBJSHRjYmx4MFhIUmNkRngwWEhSY2RHaGhibVJzWlU5aWFpQTlJR2hoYm1Sc1pYSnpXeUJwSUYwN1hHNWNibHgwWEhSY2RGeDBYSFJjZEM4dklFUnZiaWQwSUdOdmJtWnNhV04wSUhkcGRHZ2dUMkpxWldOMExuQnliM1J2ZEhsd1pTQndjbTl3WlhKMGFXVnpJQ2dqTVRNeU1ETXBYRzVjZEZ4MFhIUmNkRngwWEhSelpXd2dQU0JvWVc1a2JHVlBZbW91YzJWc1pXTjBiM0lnS3lCY0lpQmNJanRjYmx4dVhIUmNkRngwWEhSY2RGeDBhV1lnS0NCdFlYUmphR1Z6V3lCelpXd2dYU0E5UFQwZ2RXNWtaV1pwYm1Wa0lDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUnRZWFJqYUdWeld5QnpaV3dnWFNBOUlHaGhibVJzWlU5aWFpNXVaV1ZrYzBOdmJuUmxlSFFnUDF4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEdwUmRXVnllU2dnYzJWc0xDQjBhR2x6SUNrdWFXNWtaWGdvSUdOMWNpQXBJRDQ5SURBZ09seHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RHcFJkV1Z5ZVM1bWFXNWtLQ0J6Wld3c0lIUm9hWE1zSUc1MWJHd3NJRnNnWTNWeUlGMGdLUzVzWlc1bmRHZzdYRzVjZEZ4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RGeDBYSFJwWmlBb0lHMWhkR05vWlhOYklITmxiQ0JkSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwWEhSdFlYUmphR1Z6TG5CMWMyZ29JR2hoYm1Sc1pVOWlhaUFwTzF4dVhIUmNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MFhIUnBaaUFvSUcxaGRHTm9aWE11YkdWdVozUm9JQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBhR0Z1Wkd4bGNsRjFaWFZsTG5CMWMyZ29leUJsYkdWdE9pQmpkWElzSUdoaGJtUnNaWEp6T2lCdFlYUmphR1Z6SUgwcE8xeHVYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwZlZ4dVhIUmNkSDFjYmx4dVhIUmNkQzh2SUVGa1pDQjBhR1VnY21WdFlXbHVhVzVuSUNoa2FYSmxZM1JzZVMxaWIzVnVaQ2tnYUdGdVpHeGxjbk5jYmx4MFhIUnBaaUFvSUdSbGJHVm5ZWFJsUTI5MWJuUWdQQ0JvWVc1a2JHVnljeTVzWlc1bmRHZ2dLU0I3WEc1Y2RGeDBYSFJvWVc1a2JHVnlVWFZsZFdVdWNIVnphQ2g3SUdWc1pXMDZJSFJvYVhNc0lHaGhibVJzWlhKek9pQm9ZVzVrYkdWeWN5NXpiR2xqWlNnZ1pHVnNaV2RoZEdWRGIzVnVkQ0FwSUgwcE8xeHVYSFJjZEgxY2JseHVYSFJjZEhKbGRIVnliaUJvWVc1a2JHVnlVWFZsZFdVN1hHNWNkSDBzWEc1Y2JseDBMeThnU1c1amJIVmtaWE1nYzI5dFpTQmxkbVZ1ZENCd2NtOXdjeUJ6YUdGeVpXUWdZbmtnUzJWNVJYWmxiblFnWVc1a0lFMXZkWE5sUlhabGJuUmNibHgwY0hKdmNITTZJRndpWVd4MFMyVjVJR0oxWW1Kc1pYTWdZMkZ1WTJWc1lXSnNaU0JqZEhKc1MyVjVJR04xY25KbGJuUlVZWEpuWlhRZ1pYWmxiblJRYUdGelpTQnRaWFJoUzJWNUlISmxiR0YwWldSVVlYSm5aWFFnYzJocFpuUkxaWGtnZEdGeVoyVjBJSFJwYldWVGRHRnRjQ0IyYVdWM0lIZG9hV05vWENJdWMzQnNhWFFvWENJZ1hDSXBMRnh1WEc1Y2RHWnBlRWh2YjJ0ek9pQjdmU3hjYmx4dVhIUnJaWGxJYjI5cmN6b2dlMXh1WEhSY2RIQnliM0J6T2lCY0ltTm9ZWElnWTJoaGNrTnZaR1VnYTJWNUlHdGxlVU52WkdWY0lpNXpjR3hwZENoY0lpQmNJaWtzWEc1Y2RGeDBabWxzZEdWeU9pQm1kVzVqZEdsdmJpZ2daWFpsYm5Rc0lHOXlhV2RwYm1Gc0lDa2dlMXh1WEc1Y2RGeDBYSFF2THlCQlpHUWdkMmhwWTJnZ1ptOXlJR3RsZVNCbGRtVnVkSE5jYmx4MFhIUmNkR2xtSUNnZ1pYWmxiblF1ZDJocFkyZ2dQVDBnYm5Wc2JDQXBJSHRjYmx4MFhIUmNkRngwWlhabGJuUXVkMmhwWTJnZ1BTQnZjbWxuYVc1aGJDNWphR0Z5UTI5a1pTQWhQU0J1ZFd4c0lEOGdiM0pwWjJsdVlXd3VZMmhoY2tOdlpHVWdPaUJ2Y21sbmFXNWhiQzVyWlhsRGIyUmxPMXh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFJ5WlhSMWNtNGdaWFpsYm5RN1hHNWNkRngwZlZ4dVhIUjlMRnh1WEc1Y2RHMXZkWE5sU0c5dmEzTTZJSHRjYmx4MFhIUndjbTl3Y3pvZ1hDSmlkWFIwYjI0Z1luVjBkRzl1Y3lCamJHbGxiblJZSUdOc2FXVnVkRmtnYjJabWMyVjBXQ0J2Wm1aelpYUlpJSEJoWjJWWUlIQmhaMlZaSUhOamNtVmxibGdnYzJOeVpXVnVXU0IwYjBWc1pXMWxiblJjSWk1emNHeHBkQ2hjSWlCY0lpa3NYRzVjZEZ4MFptbHNkR1Z5T2lCbWRXNWpkR2x2YmlnZ1pYWmxiblFzSUc5eWFXZHBibUZzSUNrZ2UxeHVYSFJjZEZ4MGRtRnlJR1YyWlc1MFJHOWpMQ0JrYjJNc0lHSnZaSGtzWEc1Y2RGeDBYSFJjZEdKMWRIUnZiaUE5SUc5eWFXZHBibUZzTG1KMWRIUnZianRjYmx4dVhIUmNkRngwTHk4Z1EyRnNZM1ZzWVhSbElIQmhaMlZZTDFrZ2FXWWdiV2x6YzJsdVp5QmhibVFnWTJ4cFpXNTBXQzlaSUdGMllXbHNZV0pzWlZ4dVhIUmNkRngwYVdZZ0tDQmxkbVZ1ZEM1d1lXZGxXQ0E5UFNCdWRXeHNJQ1ltSUc5eWFXZHBibUZzTG1Oc2FXVnVkRmdnSVQwZ2JuVnNiQ0FwSUh0Y2JseDBYSFJjZEZ4MFpYWmxiblJFYjJNZ1BTQmxkbVZ1ZEM1MFlYSm5aWFF1YjNkdVpYSkViMk4xYldWdWRDQjhmQ0JrYjJOMWJXVnVkRHRjYmx4MFhIUmNkRngwWkc5aklEMGdaWFpsYm5SRWIyTXVaRzlqZFcxbGJuUkZiR1Z0Wlc1ME8xeHVYSFJjZEZ4MFhIUmliMlI1SUQwZ1pYWmxiblJFYjJNdVltOWtlVHRjYmx4dVhIUmNkRngwWEhSbGRtVnVkQzV3WVdkbFdDQTlJRzl5YVdkcGJtRnNMbU5zYV
14938dWdWRGZ2dLeUFvSUdSdll5QW1KaUJrYjJNdWMyTnliMnhzVEdWbWRDQjhmQ0JpYjJSNUlDWW1JR0p2WkhrdWMyTnliMnhzVEdWbWRDQjhmQ0F3SUNrZ0xTQW9JR1J2WXlBbUppQmtiMk11WTJ4cFpXNTBUR1ZtZENCOGZDQmliMlI1SUNZbUlHSnZaSGt1WTJ4cFpXNTBUR1ZtZENCOGZDQXdJQ2s3WEc1Y2RGeDBYSFJjZEdWMlpXNTBMbkJoWjJWWklEMGdiM0pwWjJsdVlXd3VZMnhwWlc1MFdTQXJJQ2dnWkc5aklDWW1JR1J2WXk1elkzSnZiR3hVYjNBZ0lIeDhJR0p2WkhrZ0ppWWdZbTlrZVM1elkzSnZiR3hVYjNBZ0lIeDhJREFnS1NBdElDZ2daRzlqSUNZbUlHUnZZeTVqYkdsbGJuUlViM0FnSUh4OElHSnZaSGtnSmlZZ1ltOWtlUzVqYkdsbGJuUlViM0FnSUh4OElEQWdLVHRjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwTHk4Z1FXUmtJSGRvYVdOb0lHWnZjaUJqYkdsamF6b2dNU0E5UFQwZ2JHVm1kRHNnTWlBOVBUMGdiV2xrWkd4bE95QXpJRDA5UFNCeWFXZG9kRnh1WEhSY2RGeDBMeThnVG05MFpUb2dZblYwZEc5dUlHbHpJRzV2ZENCdWIzSnRZV3hwZW1Wa0xDQnpieUJrYjI0bmRDQjFjMlVnYVhSY2JseDBYSFJjZEdsbUlDZ2dJV1YyWlc1MExuZG9hV05vSUNZbUlHSjFkSFJ2YmlBaFBUMGdkVzVrWldacGJtVmtJQ2tnZTF4dVhIUmNkRngwWEhSbGRtVnVkQzUzYUdsamFDQTlJQ2dnWW5WMGRHOXVJQ1lnTVNBL0lERWdPaUFvSUdKMWRIUnZiaUFtSURJZ1B5QXpJRG9nS0NCaWRYUjBiMjRnSmlBMElEOGdNaUE2SURBZ0tTQXBJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEhKbGRIVnliaUJsZG1WdWREdGNibHgwWEhSOVhHNWNkSDBzWEc1Y2JseDBabWw0T2lCbWRXNWpkR2x2YmlnZ1pYWmxiblFnS1NCN1hHNWNkRngwYVdZZ0tDQmxkbVZ1ZEZzZ2FsRjFaWEo1TG1WNGNHRnVaRzhnWFNBcElIdGNibHgwWEhSY2RISmxkSFZ5YmlCbGRtVnVkRHRjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJEY21WaGRHVWdZU0IzY21sMFlXSnNaU0JqYjNCNUlHOW1JSFJvWlNCbGRtVnVkQ0J2WW1wbFkzUWdZVzVrSUc1dmNtMWhiR2w2WlNCemIyMWxJSEJ5YjNCbGNuUnBaWE5jYmx4MFhIUjJZWElnYVN3Z2NISnZjQ3dnWTI5d2VTeGNibHgwWEhSY2RIUjVjR1VnUFNCbGRtVnVkQzUwZVhCbExGeHVYSFJjZEZ4MGIzSnBaMmx1WVd4RmRtVnVkQ0E5SUdWMlpXNTBMRnh1WEhSY2RGeDBabWw0U0c5dmF5QTlJSFJvYVhNdVptbDRTRzl2YTNOYklIUjVjR1VnWFR0Y2JseHVYSFJjZEdsbUlDZ2dJV1pwZUVodmIyc2dLU0I3WEc1Y2RGeDBYSFIwYUdsekxtWnBlRWh2YjJ0eld5QjBlWEJsSUYwZ1BTQm1hWGhJYjI5cklEMWNibHgwWEhSY2RGeDBjbTF2ZFhObFJYWmxiblF1ZEdWemRDZ2dkSGx3WlNBcElEOGdkR2hwY3k1dGIzVnpaVWh2YjJ0eklEcGNibHgwWEhSY2RGeDBjbXRsZVVWMlpXNTBMblJsYzNRb0lIUjVjR1VnS1NBL0lIUm9hWE11YTJWNVNHOXZhM01nT2x4dVhIUmNkRngwWEhSN2ZUdGNibHgwWEhSOVhHNWNkRngwWTI5d2VTQTlJR1pwZUVodmIyc3VjSEp2Y0hNZ1B5QjBhR2x6TG5CeWIzQnpMbU52Ym1OaGRDZ2dabWw0U0c5dmF5NXdjbTl3Y3lBcElEb2dkR2hwY3k1d2NtOXdjenRjYmx4dVhIUmNkR1YyWlc1MElEMGdibVYzSUdwUmRXVnllUzVGZG1WdWRDZ2diM0pwWjJsdVlXeEZkbVZ1ZENBcE8xeHVYRzVjZEZ4MGFTQTlJR052Y0hrdWJHVnVaM1JvTzF4dVhIUmNkSGRvYVd4bElDZ2dhUzB0SUNrZ2UxeHVYSFJjZEZ4MGNISnZjQ0E5SUdOdmNIbGJJR2tnWFR0Y2JseDBYSFJjZEdWMlpXNTBXeUJ3Y205d0lGMGdQU0J2Y21sbmFXNWhiRVYyWlc1MFd5QndjbTl3SUYwN1hHNWNkRngwZlZ4dVhHNWNkRngwTHk4Z1UzVndjRzl5ZERvZ1EyOXlaRzkyWVNBeUxqVWdLRmRsWWt0cGRDa2dLQ014TXpJMU5TbGNibHgwWEhRdkx5QkJiR3dnWlhabGJuUnpJSE5vYjNWc1pDQm9ZWFpsSUdFZ2RHRnlaMlYwT3lCRGIzSmtiM1poSUdSbGRtbGpaWEpsWVdSNUlHUnZaWE51SjNSY2JseDBYSFJwWmlBb0lDRmxkbVZ1ZEM1MFlYSm5aWFFnS1NCN1hHNWNkRngwWEhSbGRtVnVkQzUwWVhKblpYUWdQU0JrYjJOMWJXVnVkRHRjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJUZFhCd2IzSjBPaUJUWVdaaGNta2dOaTR3S3l3Z1EyaHliMjFsUERJNFhHNWNkRngwTHk4Z1ZHRnlaMlYwSUhOb2IzVnNaQ0J1YjNRZ1ltVWdZU0IwWlhoMElHNXZaR1VnS0NNMU1EUXNJQ014TXpFME15bGNibHgwWEhScFppQW9JR1YyWlc1MExuUmhjbWRsZEM1dWIyUmxWSGx3WlNBOVBUMGdNeUFwSUh0Y2JseDBYSFJjZEdWMlpXNTBMblJoY21kbGRDQTlJR1YyWlc1MExuUmhjbWRsZEM1d1lYSmxiblJPYjJSbE8xeHVYSFJjZEgxY2JseHVYSFJjZEhKbGRIVnliaUJtYVhoSWIyOXJMbVpwYkhSbGNpQS9JR1pwZUVodmIyc3VabWxzZEdWeUtDQmxkbVZ1ZEN3Z2IzSnBaMmx1WVd4RmRtVnVkQ0FwSURvZ1pYWmxiblE3WEc1Y2RIMHNYRzVjYmx4MGMzQmxZMmxoYkRvZ2UxeHVYSFJjZEd4dllXUTZJSHRjYmx4MFhIUmNkQzh2SUZCeVpYWmxiblFnZEhKcFoyZGxjbVZrSUdsdFlXZGxMbXh2WVdRZ1pYWmxiblJ6SUdaeWIyMGdZblZpWW14cGJtY2dkRzhnZDJsdVpHOTNMbXh2WVdSY2JseDBYSFJjZEc1dlFuVmlZbXhsT2lCMGNuVmxYRzVjZEZ4MGZTeGNibHgwWEhSbWIyTjFjem9nZTF4dVhIUmNkRngwTHk4Z1JtbHlaU0J1WVhScGRtVWdaWFpsYm5RZ2FXWWdjRzl6YzJsaWJHVWdjMjhnWW14MWNpOW1iMk4xY3lCelpYRjFaVzVqWlNCcGN5QmpiM0p5WldOMFhHNWNkRngwWEhSMGNtbG5aMlZ5T2lCbWRXNWpkR2x2YmlncElIdGNibHgwWEhSY2RGeDBhV1lnS0NCMGFHbHpJQ0U5UFNCellXWmxRV04wYVhabFJXeGxiV1Z1ZENncElDWW1JSFJvYVhNdVptOWpkWE1nS1NCN1hHNWNkRngwWEhSY2RGeDBkR2hwY3k1bWIyTjFjeWdwTzF4dVhIUmNkRngwWEhSY2RISmxkSFZ5YmlCbVlXeHpaVHRjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwZlN4Y2JseDBYSFJjZEdSbGJHVm5ZWFJsVkhsd1pUb2dYQ0ptYjJOMWMybHVYQ0pjYmx4MFhIUjlMRnh1WEhSY2RHSnNkWEk2SUh0Y2JseDBYSFJjZEhSeWFXZG5aWEk2SUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MFhIUnBaaUFvSUhSb2FYTWdQVDA5SUhOaFptVkJZM1JwZG1WRmJHVnRaVzUwS0NrZ0ppWWdkR2hwY3k1aWJIVnlJQ2tnZTF4dVhIUmNkRngwWEhSY2RIUm9hWE11WW14MWNpZ3BPMXh1WEhSY2RGeDBYSFJjZEhKbGRIVnliaUJtWVd4elpUdGNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBmU3hjYmx4MFhIUmNkR1JsYkdWbllYUmxWSGx3WlRvZ1hDSm1iMk4xYzI5MWRGd2lYRzVjZEZ4MGZTeGNibHgwWEhSamJHbGphem9nZTF4dVhIUmNkRngwTHk4Z1JtOXlJR05vWldOclltOTRMQ0JtYVhKbElHNWhkR2wyWlNCbGRtVnVkQ0J6YnlCamFHVmphMlZrSUhOMFlYUmxJSGRwYkd3Z1ltVWdjbWxuYUhSY2JseDBYSFJjZEhSeWFXZG5aWEk2SUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MFhIUnBaaUFvSUhSb2FYTXVkSGx3WlNBOVBUMGdYQ0pqYUdWamEySnZlRndpSUNZbUlIUm9hWE11WTJ4cFkyc2dKaVlnYWxGMVpYSjVMbTV2WkdWT1lXMWxLQ0IwYUdsekxDQmNJbWx1Y0hWMFhDSWdLU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUjBhR2x6TG1Oc2FXTnJLQ2s3WEc1Y2RGeDBYSFJjZEZ4MGNtVjBkWEp1SUdaaGJITmxPMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5TEZ4dVhHNWNkRngwWEhRdkx5QkdiM0lnWTNKdmMzTXRZbkp2ZDNObGNpQmpiMjV6YVhOM
14938FpXNWplU3dnWkc5dUozUWdabWx5WlNCdVlYUnBkbVVnTG1Oc2FXTnJLQ2tnYjI0Z2JHbHVhM05jYmx4MFhIUmNkRjlrWldaaGRXeDBPaUJtZFc1amRHbHZiaWdnWlhabGJuUWdLU0I3WEc1Y2RGeDBYSFJjZEhKbGRIVnliaUJxVVhWbGNua3VibTlrWlU1aGJXVW9JR1YyWlc1MExuUmhjbWRsZEN3Z1hDSmhYQ0lnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5TEZ4dVhHNWNkRngwWW1WbWIzSmxkVzVzYjJGa09pQjdYRzVjZEZ4MFhIUndiM04wUkdsemNHRjBZMmc2SUdaMWJtTjBhVzl1S0NCbGRtVnVkQ0FwSUh0Y2JseHVYSFJjZEZ4MFhIUXZMeUJUZFhCd2IzSjBPaUJHYVhKbFptOTRJREl3SzF4dVhIUmNkRngwWEhRdkx5QkdhWEpsWm05NElHUnZaWE51SjNRZ1lXeGxjblFnYVdZZ2RHaGxJSEpsZEhWeWJsWmhiSFZsSUdacFpXeGtJR2x6SUc1dmRDQnpaWFF1WEc1Y2RGeDBYSFJjZEdsbUlDZ2daWFpsYm5RdWNtVnpkV3gwSUNFOVBTQjFibVJsWm1sdVpXUWdKaVlnWlhabGJuUXViM0pwWjJsdVlXeEZkbVZ1ZENBcElIdGNibHgwWEhSY2RGeDBYSFJsZG1WdWRDNXZjbWxuYVc1aGJFVjJaVzUwTG5KbGRIVnlibFpoYkhWbElEMGdaWFpsYm5RdWNtVnpkV3gwTzF4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhIUjlMRnh1WEc1Y2RITnBiWFZzWVhSbE9pQm1kVzVqZEdsdmJpZ2dkSGx3WlN3Z1pXeGxiU3dnWlhabGJuUXNJR0oxWW1Kc1pTQXBJSHRjYmx4MFhIUXZMeUJRYVdkbmVXSmhZMnNnYjI0Z1lTQmtiMjV2Y2lCbGRtVnVkQ0IwYnlCemFXMTFiR0YwWlNCaElHUnBabVpsY21WdWRDQnZibVV1WEc1Y2RGeDBMeThnUm1GclpTQnZjbWxuYVc1aGJFVjJaVzUwSUhSdklHRjJiMmxrSUdSdmJtOXlKM01nYzNSdmNGQnliM0JoWjJGMGFXOXVMQ0JpZFhRZ2FXWWdkR2hsWEc1Y2RGeDBMeThnYzJsdGRXeGhkR1ZrSUdWMlpXNTBJSEJ5WlhabGJuUnpJR1JsWm1GMWJIUWdkR2hsYmlCM1pTQmtieUIwYUdVZ2MyRnRaU0J2YmlCMGFHVWdaRzl1YjNJdVhHNWNkRngwZG1GeUlHVWdQU0JxVVhWbGNua3VaWGgwWlc1a0tGeHVYSFJjZEZ4MGJtVjNJR3BSZFdWeWVTNUZkbVZ1ZENncExGeHVYSFJjZEZ4MFpYWmxiblFzWEc1Y2RGeDBYSFI3WEc1Y2RGeDBYSFJjZEhSNWNHVTZJSFI1Y0dVc1hHNWNkRngwWEhSY2RHbHpVMmx0ZFd4aGRHVmtPaUIwY25WbExGeHVYSFJjZEZ4MFhIUnZjbWxuYVc1aGJFVjJaVzUwT2lCN2ZWeHVYSFJjZEZ4MGZWeHVYSFJjZENrN1hHNWNkRngwYVdZZ0tDQmlkV0ppYkdVZ0tTQjdYRzVjZEZ4MFhIUnFVWFZsY25rdVpYWmxiblF1ZEhKcFoyZGxjaWdnWlN3Z2JuVnNiQ3dnWld4bGJTQXBPMXh1WEhSY2RIMGdaV3h6WlNCN1hHNWNkRngwWEhScVVYVmxjbmt1WlhabGJuUXVaR2x6Y0dGMFkyZ3VZMkZzYkNnZ1pXeGxiU3dnWlNBcE8xeHVYSFJjZEgxY2JseDBYSFJwWmlBb0lHVXVhWE5FWldaaGRXeDBVSEpsZG1WdWRHVmtLQ2tnS1NCN1hHNWNkRngwWEhSbGRtVnVkQzV3Y21WMlpXNTBSR1ZtWVhWc2RDZ3BPMXh1WEhSY2RIMWNibHgwZlZ4dWZUdGNibHh1YWxGMVpYSjVMbkpsYlc5MlpVVjJaVzUwSUQwZ1puVnVZM1JwYjI0b0lHVnNaVzBzSUhSNWNHVXNJR2hoYm1Sc1pTQXBJSHRjYmx4MGFXWWdLQ0JsYkdWdExuSmxiVzkyWlVWMlpXNTBUR2x6ZEdWdVpYSWdLU0I3WEc1Y2RGeDBaV3hsYlM1eVpXMXZkbVZGZG1WdWRFeHBjM1JsYm1WeUtDQjBlWEJsTENCb1lXNWtiR1VzSUdaaGJITmxJQ2s3WEc1Y2RIMWNibjA3WEc1Y2JtcFJkV1Z5ZVM1RmRtVnVkQ0E5SUdaMWJtTjBhVzl1S0NCemNtTXNJSEJ5YjNCeklDa2dlMXh1WEhRdkx5QkJiR3h2ZHlCcGJuTjBZVzUwYVdGMGFXOXVJSGRwZEdodmRYUWdkR2hsSUNkdVpYY25JR3RsZVhkdmNtUmNibHgwYVdZZ0tDQWhLSFJvYVhNZ2FXNXpkR0Z1WTJWdlppQnFVWFZsY25rdVJYWmxiblFwSUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJ1WlhjZ2FsRjFaWEo1TGtWMlpXNTBLQ0J6Y21Nc0lIQnliM0J6SUNrN1hHNWNkSDFjYmx4dVhIUXZMeUJGZG1WdWRDQnZZbXBsWTNSY2JseDBhV1lnS0NCemNtTWdKaVlnYzNKakxuUjVjR1VnS1NCN1hHNWNkRngwZEdocGN5NXZjbWxuYVc1aGJFVjJaVzUwSUQwZ2MzSmpPMXh1WEhSY2RIUm9hWE11ZEhsd1pTQTlJSE55WXk1MGVYQmxPMXh1WEc1Y2RGeDBMeThnUlhabGJuUnpJR0oxWW1Kc2FXNW5JSFZ3SUhSb1pTQmtiMk4xYldWdWRDQnRZWGtnYUdGMlpTQmlaV1Z1SUcxaGNtdGxaQ0JoY3lCd2NtVjJaVzUwWldSY2JseDBYSFF2THlCaWVTQmhJR2hoYm1Sc1pYSWdiRzkzWlhJZ1pHOTNiaUIwYUdVZ2RISmxaVHNnY21WbWJHVmpkQ0IwYUdVZ1kyOXljbVZqZENCMllXeDFaUzVjYmx4MFhIUjBhR2x6TG1selJHVm1ZWFZzZEZCeVpYWmxiblJsWkNBOUlITnlZeTVrWldaaGRXeDBVSEpsZG1WdWRHVmtJSHg4WEc1Y2RGeDBYSFJjZEhOeVl5NWtaV1poZFd4MFVISmxkbVZ1ZEdWa0lEMDlQU0IxYm1SbFptbHVaV1FnSmlaY2JseDBYSFJjZEZ4MEx5OGdVM1Z3Y0c5eWREb2dRVzVrY205cFpEdzBMakJjYmx4MFhIUmNkRngwYzNKakxuSmxkSFZ5YmxaaGJIVmxJRDA5UFNCbVlXeHpaU0EvWEc1Y2RGeDBYSFJ5WlhSMWNtNVVjblZsSURwY2JseDBYSFJjZEhKbGRIVnlia1poYkhObE8xeHVYRzVjZEM4dklFVjJaVzUwSUhSNWNHVmNibHgwZlNCbGJITmxJSHRjYmx4MFhIUjBhR2x6TG5SNWNHVWdQU0J6Y21NN1hHNWNkSDFjYmx4dVhIUXZMeUJRZFhRZ1pYaHdiR2xqYVhSc2VTQndjbTkyYVdSbFpDQndjbTl3WlhKMGFXVnpJRzl1ZEc4Z2RHaGxJR1YyWlc1MElHOWlhbVZqZEZ4dVhIUnBaaUFvSUhCeWIzQnpJQ2tnZTF4dVhIUmNkR3BSZFdWeWVTNWxlSFJsYm1Rb0lIUm9hWE1zSUhCeWIzQnpJQ2s3WEc1Y2RIMWNibHh1WEhRdkx5QkRjbVZoZEdVZ1lTQjBhVzFsYzNSaGJYQWdhV1lnYVc1amIyMXBibWNnWlhabGJuUWdaRzlsYzI0bmRDQm9ZWFpsSUc5dVpWeHVYSFIwYUdsekxuUnBiV1ZUZEdGdGNDQTlJSE55WXlBbUppQnpjbU11ZEdsdFpWTjBZVzF3SUh4OElHcFJkV1Z5ZVM1dWIzY29LVHRjYmx4dVhIUXZMeUJOWVhKcklHbDBJR0Z6SUdacGVHVmtYRzVjZEhSb2FYTmJJR3BSZFdWeWVTNWxlSEJoYm1SdklGMGdQU0IwY25WbE8xeHVmVHRjYmx4dUx5OGdhbEYxWlhKNUxrVjJaVzUwSUdseklHSmhjMlZrSUc5dUlFUlBUVE1nUlhabGJuUnpJR0Z6SUhOd1pXTnBabWxsWkNCaWVTQjBhR1VnUlVOTlFWTmpjbWx3ZENCTVlXNW5kV0ZuWlNCQ2FXNWthVzVuWEc0dkx5Qm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OVVVaTh5TURBekwxZEVMVVJQVFMxTVpYWmxiQzB6TFVWMlpXNTBjeTB
149385TURBek1ETXpNUzlsWTIxaExYTmpjbWx3ZEMxaWFXNWthVzVuTG1oMGJXeGNibXBSZFdWeWVTNUZkbVZ1ZEM1d2NtOTBiM1I1Y0dVZ1BTQjdYRzVjZEdselJHVm1ZWFZzZEZCeVpYWmxiblJsWkRvZ2NtVjBkWEp1Um1Gc2MyVXNYRzVjZEdselVISnZjR0ZuWVhScGIyNVRkRzl3Y0dWa09pQnlaWFIxY201R1lXeHpaU3hjYmx4MGFYTkpiVzFsWkdsaGRHVlFjbTl3WVdkaGRHbHZibE4wYjNCd1pXUTZJSEpsZEhWeWJrWmhiSE5sTEZ4dVhHNWNkSEJ5WlhabGJuUkVaV1poZFd4ME9pQm1kVzVqZEdsdmJpZ3BJSHRjYmx4MFhIUjJZWElnWlNBOUlIUm9hWE11YjNKcFoybHVZV3hGZG1WdWREdGNibHh1WEhSY2RIUm9hWE11YVhORVpXWmhkV3gwVUhKbGRtVnVkR1ZrSUQwZ2NtVjBkWEp1VkhKMVpUdGNibHh1WEhSY2RHbG1JQ2dnWlNBbUppQmxMbkJ5WlhabGJuUkVaV1poZFd4MElDa2dlMXh1WEhSY2RGeDBaUzV3Y21WMlpXNTBSR1ZtWVhWc2RDZ3BPMXh1WEhSY2RIMWNibHgwZlN4Y2JseDBjM1J2Y0ZCeWIzQmhaMkYwYVc5dU9pQm1kVzVqZEdsdmJpZ3BJSHRjYmx4MFhIUjJZWElnWlNBOUlIUm9hWE11YjNKcFoybHVZV3hGZG1WdWREdGNibHh1WEhSY2RIUm9hWE11YVhOUWNtOXdZV2RoZEdsdmJsTjBiM0J3WldRZ1BTQnlaWFIxY201VWNuVmxPMXh1WEc1Y2RGeDBhV1lnS0NCbElDWW1JR1V1YzNSdmNGQnliM0JoWjJGMGFXOXVJQ2tnZTF4dVhIUmNkRngwWlM1emRHOXdVSEp2Y0dGbllYUnBiMjRvS1R0Y2JseDBYSFI5WEc1Y2RIMHNYRzVjZEhOMGIzQkpiVzFsWkdsaGRHVlFjbTl3WVdkaGRHbHZiam9nWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwZG1GeUlHVWdQU0IwYUdsekxtOXlhV2RwYm1Gc1JYWmxiblE3WEc1Y2JseDBYSFIwYUdsekxtbHpTVzF0WldScFlYUmxVSEp2Y0dGbllYUnBiMjVUZEc5d2NHVmtJRDBnY21WMGRYSnVWSEoxWlR0Y2JseHVYSFJjZEdsbUlDZ2daU0FtSmlCbExuTjBiM0JKYlcxbFpHbGhkR1ZRY205d1lXZGhkR2x2YmlBcElIdGNibHgwWEhSY2RHVXVjM1J2Y0VsdGJXVmthV0YwWlZCeWIzQmhaMkYwYVc5dUtDazdYRzVjZEZ4MGZWeHVYRzVjZEZ4MGRHaHBjeTV6ZEc5d1VISnZjR0ZuWVhScGIyNG9LVHRjYmx4MGZWeHVmVHRjYmx4dUx5OGdRM0psWVhSbElHMXZkWE5sWlc1MFpYSXZiR1ZoZG1VZ1pYWmxiblJ6SUhWemFXNW5JRzF2ZFhObGIzWmxjaTl2ZFhRZ1lXNWtJR1YyWlc1MExYUnBiV1VnWTJobFkydHpYRzR2THlCVGRYQndiM0owT2lCRGFISnZiV1VnTVRVclhHNXFVWFZsY25rdVpXRmphQ2g3WEc1Y2RHMXZkWE5sWlc1MFpYSTZJRndpYlc5MWMyVnZkbVZ5WENJc1hHNWNkRzF2ZFhObGJHVmhkbVU2SUZ3aWJXOTFjMlZ2ZFhSY0lpeGNibHgwY0c5cGJuUmxjbVZ1ZEdWeU9pQmNJbkJ2YVc1MFpYSnZkbVZ5WENJc1hHNWNkSEJ2YVc1MFpYSnNaV0YyWlRvZ1hDSndiMmx1ZEdWeWIzVjBYQ0pjYm4wc0lHWjFibU4wYVc5dUtDQnZjbWxuTENCbWFYZ2dLU0I3WEc1Y2RHcFJkV1Z5ZVM1bGRtVnVkQzV6Y0dWamFXRnNXeUJ2Y21sbklGMGdQU0I3WEc1Y2RGeDBaR1ZzWldkaGRHVlVlWEJsT2lCbWFYZ3NYRzVjZEZ4MFltbHVaRlI1Y0dVNklHWnBlQ3hjYmx4dVhIUmNkR2hoYm1Sc1pUb2dablZ1WTNScGIyNG9JR1YyWlc1MElDa2dlMXh1WEhSY2RGeDBkbUZ5SUhKbGRDeGNibHgwWEhSY2RGeDBkR0Z5WjJWMElEMGdkR2hwY3l4Y2JseDBYSFJjZEZ4MGNtVnNZWFJsWkNBOUlHVjJaVzUwTG5KbGJHRjBaV1JVWVhKblpYUXNYRzVjZEZ4MFhIUmNkR2hoYm1Sc1pVOWlhaUE5SUdWMlpXNTBMbWhoYm1Sc1pVOWlhanRjYmx4dVhIUmNkRngwTHk4Z1JtOXlJRzF2ZFhObGJuUmxjaTlzWldGMlpTQmpZV3hzSUhSb1pTQm9ZVzVrYkdWeUlHbG1JSEpsYkdGMFpXUWdhWE1nYjNWMGMybGtaU0IwYUdVZ2RHRnlaMlYwTGx4dVhIUmNkRngwTHk4Z1RrSTZJRTV2SUhKbGJHRjBaV1JVWVhKblpYUWdhV1lnZEdobElHMXZkWE5sSUd4bFpuUXZaVzUwWlhKbFpDQjBhR1VnWW5KdmQzTmxjaUIzYVc1a2IzZGNibHgwWEhSY2RHbG1JQ2dnSVhKbGJHRjBaV1FnZkh3Z0tISmxiR0YwWldRZ0lUMDlJSFJoY21kbGRDQW1KaUFoYWxGMVpYSjVMbU52Ym5SaGFXNXpLQ0IwWVhKblpYUXNJSEpsYkdGMFpXUWdLU2tnS1NCN1hHNWNkRngwWEhSY2RHVjJaVzUwTG5SNWNHVWdQU0JvWVc1a2JHVlBZbW91YjNKcFoxUjVjR1U3WEc1Y2RGeDBYSFJjZEhKbGRDQTlJR2hoYm1Sc1pVOWlhaTVvWVc1a2JHVnlMbUZ3Y0d4NUtDQjBhR2x6TENCaGNtZDFiV1Z1ZEhNZ0tUdGNibHgwWEhSY2RGeDBaWFpsYm5RdWRIbHdaU0E5SUdacGVEdGNibHgwWEhSY2RIMWNibHgwWEhSY2RISmxkSFZ5YmlCeVpYUTdYRzVjZEZ4MGZWeHVYSFI5TzF4dWZTazdYRzVjYmk4dklGTjFjSEJ2Y25RNklFWnBjbVZtYjNnc0lFTm9jbTl0WlN3Z1UyRm1ZWEpwWEc0dkx5QkRjbVZoZEdVZ1hDSmlkV0ppYkdsdVoxd2lJR1p2WTNWeklHRnVaQ0JpYkhWeUlHVjJaVzUwYzF4dWFXWWdLQ0FoYzNWd2NHOXlkQzVtYjJOMWMybHVRblZpWW14bGN5QXBJSHRjYmx4MGFsRjFaWEo1TG1WaFkyZ29leUJtYjJOMWN6b2dYQ0ptYjJOMWMybHVYQ0lzSUdKc2RYSTZJRndpWm05amRYTnZkWFJjSWlCOUxDQm1kVzVqZEdsdmJpZ2diM0pwWnl3Z1ptbDRJQ2tnZTF4dVhHNWNkRngwTHk4Z1FYUjBZV05vSUdFZ2MybHVaMnhsSUdOaGNIUjFjbWx1WnlCb1lXNWtiR1Z5SUc5dUlIUm9aU0JrYjJOMWJXVnVkQ0IzYUdsc1pTQnpiMjFsYjI1bElIZGhiblJ6SUdadlkzVnphVzR2Wm05amRYTnZkWFJjYmx4MFhIUjJZWElnYUdGdVpHeGxjaUE5SUdaMWJtTjBhVzl1S0NCbGRtVnVkQ0FwSUh0Y2JseDBYSFJjZEZ4MGFsRjFaWEo1TG1WMlpXNTBMbk5wYlhWc1lYUmxLQ0JtYVhnc0lHVjJaVzUwTG5SaGNtZGxkQ3dnYWxGMVpYSjVMbVYyWlc1MExtWnBlQ2dnWlhabGJuUWdLU3dnZEhKMVpTQXBPMXh1WEhSY2RGeDBmVHRjYmx4dVhIUmNkR3BSZFdWeWVTNWxkbVZ1ZEM1emNHVmphV0ZzV3lCbWFYZ2dYU0E5SUh0Y2JseDBYSFJjZEhObGRIVndPaUJtZFc1amRHbHZiaWdwSUh0Y2JseDBYSFJjZEZ4MGRtRnlJR1J2WXlBOUlIUm9hWE11YjNkdVpYSkViMk4xYldWdWRDQjhmQ0IwYUdsekxGeHVYSFJjZEZ4MFhIUmNkR0YwZEdGamFHVnpJRDBnWkdGMFlWOXdjbWwyTG1GalkyVnpjeWdnWkc5akx
14938DQm1hWGdnS1R0Y2JseHVYSFJjZEZ4MFhIUnBaaUFvSUNGaGRIUmhZMmhsY3lBcElIdGNibHgwWEhSY2RGeDBYSFJrYjJNdVlXUmtSWFpsYm5STWFYTjBaVzVsY2lnZ2IzSnBaeXdnYUdGdVpHeGxjaXdnZEhKMVpTQXBPMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEdSaGRHRmZjSEpwZGk1aFkyTmxjM01vSUdSdll5d2dabWw0TENBb0lHRjBkR0ZqYUdWeklIeDhJREFnS1NBcklERWdLVHRjYmx4MFhIUmNkSDBzWEc1Y2RGeDBYSFIwWldGeVpHOTNiam9nWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwWEhSY2RIWmhjaUJrYjJNZ1BTQjBhR2x6TG05M2JtVnlSRzlqZFcxbGJuUWdmSHdnZEdocGN5eGNibHgwWEhSY2RGeDBYSFJoZEhSaFkyaGxjeUE5SUdSaGRHRmZjSEpwZGk1aFkyTmxjM01vSUdSdll5d2dabWw0SUNrZ0xTQXhPMXh1WEc1Y2RGeDBYSFJjZEdsbUlDZ2dJV0YwZEdGamFHVnpJQ2tnZTF4dVhIUmNkRngwWEhSY2RHUnZZeTV5WlcxdmRtVkZkbVZ1ZEV4cGMzUmxibVZ5S0NCdmNtbG5MQ0JvWVc1a2JHVnlMQ0IwY25WbElDazdYRzVjZEZ4MFhIUmNkRngwWkdGMFlWOXdjbWwyTG5KbGJXOTJaU2dnWkc5akxDQm1hWGdnS1R0Y2JseHVYSFJjZEZ4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MFhIUmNkR1JoZEdGZmNISnBkaTVoWTJObGMzTW9JR1J2WXl3Z1ptbDRMQ0JoZEhSaFkyaGxjeUFwTzF4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSOVhHNWNkRngwZlR0Y2JseDBmU2s3WEc1OVhHNWNibXBSZFdWeWVTNW1iaTVsZUhSbGJtUW9lMXh1WEc1Y2RHOXVPaUJtZFc1amRHbHZiaWdnZEhsd1pYTXNJSE5sYkdWamRHOXlMQ0JrWVhSaExDQm1iaXdnTHlwSlRsUkZVazVCVENvdklHOXVaU0FwSUh0Y2JseDBYSFIyWVhJZ2IzSnBaMFp1TENCMGVYQmxPMXh1WEc1Y2RGeDBMeThnVkhsd1pYTWdZMkZ1SUdKbElHRWdiV0Z3SUc5bUlIUjVjR1Z6TDJoaGJtUnNaWEp6WEc1Y2RGeDBhV1lnS0NCMGVYQmxiMllnZEhsd1pYTWdQVDA5SUZ3aWIySnFaV04wWENJZ0tTQjdYRzVjZEZ4MFhIUXZMeUFvSUhSNWNHVnpMVTlpYW1WamRDd2djMlZzWldOMGIzSXNJR1JoZEdFZ0tWeHVYSFJjZEZ4MGFXWWdLQ0IwZVhCbGIyWWdjMlZzWldOMGIzSWdJVDA5SUZ3aWMzUnlhVzVuWENJZ0tTQjdYRzVjZEZ4MFhIUmNkQzh2SUNnZ2RIbHdaWE10VDJKcVpXTjBMQ0JrWVhSaElDbGNibHgwWEhSY2RGeDBaR0YwWVNBOUlHUmhkR0VnZkh3Z2MyVnNaV04wYjNJN1hHNWNkRngwWEhSY2RITmxiR1ZqZEc5eUlEMGdkVzVrWldacGJtVmtPMXh1WEhSY2RGeDBmVnh1WEhSY2RGeDBabTl5SUNnZ2RIbHdaU0JwYmlCMGVYQmxjeUFwSUh0Y2JseDBYSFJjZEZ4MGRHaHBjeTV2YmlnZ2RIbHdaU3dnYzJWc1pXTjBiM0lzSUdSaGRHRXNJSFI1Y0dWeld5QjBlWEJsSUYwc0lHOXVaU0FwTzF4dVhIUmNkRngwZlZ4dVhIUmNkRngwY21WMGRYSnVJSFJvYVhNN1hHNWNkRngwZlZ4dVhHNWNkRngwYVdZZ0tDQmtZWFJoSUQwOUlHNTFiR3dnSmlZZ1ptNGdQVDBnYm5Wc2JDQXBJSHRjYmx4MFhIUmNkQzh2SUNnZ2RIbHdaWE1zSUdadUlDbGNibHgwWEhSY2RHWnVJRDBnYzJWc1pXTjBiM0k3WEc1Y2RGeDBYSFJrWVhSaElEMGdjMlZzWldOMGIzSWdQU0IxYm1SbFptbHVaV1E3WEc1Y2RGeDBmU0JsYkhObElHbG1JQ2dnWm00Z1BUMGdiblZzYkNBcElIdGNibHgwWEhSY2RHbG1JQ2dnZEhsd1pXOW1JSE5sYkdWamRHOXlJRDA5UFNCY0luTjBjbWx1WjF3aUlDa2dlMXh1WEhSY2RGeDBYSFF2THlBb0lIUjVjR1Z6TENCelpXeGxZM1J2Y2l3Z1ptNGdLVnh1WEhSY2RGeDBYSFJtYmlBOUlHUmhkR0U3WEc1Y2RGeDBYSFJjZEdSaGRHRWdQU0IxYm1SbFptbHVaV1E3WEc1Y2RGeDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBYSFF2THlBb0lIUjVjR1Z6TENCa1lYUmhMQ0JtYmlBcFhHNWNkRngwWEhSY2RHWnVJRDBnWkdGMFlUdGNibHgwWEhSY2RGeDBaR0YwWVNBOUlITmxiR1ZqZEc5eU8xeHVYSFJjZEZ4MFhIUnpaV3hsWTNSdmNpQTlJSFZ1WkdWbWFXNWxaRHRjYmx4MFhIUmNkSDFjYmx4MFhIUjlYRzVjZEZ4MGFXWWdLQ0JtYmlBOVBUMGdabUZzYzJVZ0tTQjdYRzVjZEZ4MFhIUm1iaUE5SUhKbGRIVnlia1poYkhObE8xeHVYSFJjZEgwZ1pXeHpaU0JwWmlBb0lDRm1iaUFwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUIwYUdsek8xeHVYSFJjZEgxY2JseHVYSFJjZEdsbUlDZ2diMjVsSUQwOVBTQXhJQ2tnZTF4dVhIUmNkRngwYjNKcFowWnVJRDBnWm00N1hHNWNkRngwWEhSbWJpQTlJR1oxYm1OMGFXOXVLQ0JsZG1WdWRDQXBJSHRjYmx4MFhIUmNkRngwTHk4Z1EyRnVJSFZ6WlNCaGJpQmxiWEIwZVNCelpYUXNJSE5wYm1ObElHVjJaVzUwSUdOdmJuUmhhVzV6SUhSb1pTQnBibVp2WEc1Y2RGeDBYSFJjZEdwUmRXVnllU2dwTG05bVppZ2daWFpsYm5RZ0tUdGNibHgwWEhSY2RGeDBjbVYwZFhKdUlHOXlhV2RHYmk1aGNIQnNlU2dnZEdocGN5d2dZWEpuZFcxbGJuUnpJQ2s3WEc1Y2RGeDBYSFI5TzF4dVhIUmNkRngwTHk4Z1ZYTmxJSE5oYldVZ1ozVnBaQ0J6YnlCallXeHNaWElnWTJGdUlISmxiVzkyWlNCMWMybHVaeUJ2Y21sblJtNWNibHgwWEhSY2RHWnVMbWQxYVdRZ1BTQnZjbWxuUm00dVozVnBaQ0I4ZkNBb0lHOXlhV2RHYmk1bmRXbGtJRDBnYWxGMVpYSjVMbWQxYVdRckt5QXBPMXh1WEhSY2RIMWNibHgwWEhSeVpYUjFjbTRnZEdocGN5NWxZV05vS0NCbWRXNWpkR2x2YmlncElIdGNibHgwWEhSY2RHcFJkV1Z5ZVM1bGRtVnVkQzVoWkdRb0lIUm9hWE1zSUhSNWNHVnpMQ0JtYml3Z1pHRjBZU3dnYzJWc1pXTjBiM0lnS1R0Y2JseDBYSFI5S1R0Y2JseDBmU3hjYmx4MGIyNWxPaUJtZFc1amRHbHZiaWdnZEhsd1pYTXNJSE5sYkdWamRHOXlMQ0JrWVhSaExDQm1iaUFwSUh0Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3k1dmJpZ2dkSGx3WlhNc0lITmxiR1ZqZEc5eUxDQmtZWFJoTENCbWJpd2dNU0FwTzF4dVhIUjlMRnh1WEhSdlptWTZJR1oxYm1OMGFXOXVLQ0IwZVhCbGN5d2djMlZzWldOMGIzSXNJR1p1SUNrZ2UxeHVYSFJjZEhaaGNpQm9ZVzVrYkdWUFltb3NJSFI1Y0dVN1hHNWNkRngwYVdZZ0tDQjBlWEJsY3lBbUppQjBlWEJsY3k1d2NtVjJaVzUwUkdWbVlYVnNkQ0FtSmlCMGVYQmxjeTVvWVc1a2JHVlBZbW9nS1NCN1hHNWNkRngwWEhRdkx5QW9JR1YyWlc1MElDa2dJR1JwYzNCaGRHTm9aV1FnYWxGMVpYSjVMa1YyWlc1MFhHNWNkRngwWEhSb1lXNWtiR1ZQWW1vZ1BTQjBlWEJsY3k1b1lXNWtiR1ZQWW1vN1hHNWNkRngwWEhScVVYVmxjbmtvSUhSNWNHVnpMbVJsYkdWbllYUmxWR0Z5WjJWMElDa3ViMlptS0Z4dVhIUmNkRngwWEhSb1lXNWtiR1ZQWW1vdWJtRnRaWE53WVdObElEOGdhR0Z1Wkd4bFQySnFMbTl5YVdkVWVYQmxJQ3NnWENJdVhDSWdLeUJvWVc1a2JHVlBZbW91Ym1GdFpYTndZV05sSURvZ2FHRnVaR3hsVDJKcUxtOXlhV2RVZVhCbExGeHVYSFJjZEZ4MFhIUm9ZVzVrYkdWUFltb3VjMlZzWldOMGIzSXNYRzVjZEZ4MFhIUmNkR2hoYm1Sc1pVOWlhaTVvWVc1a2JHVnlYRzVjZEZ4MFhIUXBPMXh1WEhSY2RGeDBjbVYwZFhKdUlIUm9hWE03WEc1Y2RGeDBmVnh1WEhSY2RHbG1JQ2dnZEhsd1pXOW1JSFI1Y0dWeklEMDlQU0JjSW05aWFtVmpkRndpSUNrZ2UxeHVYSFJjZEZ4MEx5OGdLQ0IwZVhCbGN5MXZZbXBsWTNRZ1d5d2djMlZzWldOMGIzSmRJQ2xjYmx4MFhIUmNkR1p2Y2lBb0lIUjVjR1VnYVc0Z2RIbHdaWE1nS1NCN1hHNWNkRngwWEhSY2RIUm9hWE11YjJabUtDQjBlWEJsTENCelpXeGxZM1J2Y2l3Z2RIbHdaWE5iSUhSNWNHVWdYU0FwTzF4dVhIUmNkRngwZlZ4dVhIUmNkRngwY21WMGRYSnVJSFJvYVhNN1hHNWNkRngwZlZ4dVhIUmNkR2xtSUNnZ2MyVnNaV04wY
14938jNJZ1BUMDlJR1poYkhObElIeDhJSFI1Y0dWdlppQnpaV3hsWTNSdmNpQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUlDa2dlMXh1WEhSY2RGeDBMeThnS0NCMGVYQmxjeUJiTENCbWJsMGdLVnh1WEhSY2RGeDBabTRnUFNCelpXeGxZM1J2Y2p0Y2JseDBYSFJjZEhObGJHVmpkRzl5SUQwZ2RXNWtaV1pwYm1Wa08xeHVYSFJjZEgxY2JseDBYSFJwWmlBb0lHWnVJRDA5UFNCbVlXeHpaU0FwSUh0Y2JseDBYSFJjZEdadUlEMGdjbVYwZFhKdVJtRnNjMlU3WEc1Y2RGeDBmVnh1WEhSY2RISmxkSFZ5YmlCMGFHbHpMbVZoWTJnb1puVnVZM1JwYjI0b0tTQjdYRzVjZEZ4MFhIUnFVWFZsY25rdVpYWmxiblF1Y21WdGIzWmxLQ0IwYUdsekxDQjBlWEJsY3l3Z1ptNHNJSE5sYkdWamRHOXlJQ2s3WEc1Y2RGeDBmU2s3WEc1Y2RIMHNYRzVjYmx4MGRISnBaMmRsY2pvZ1puVnVZM1JwYjI0b0lIUjVjR1VzSUdSaGRHRWdLU0I3WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE11WldGamFDaG1kVzVqZEdsdmJpZ3BJSHRjYmx4MFhIUmNkR3BSZFdWeWVTNWxkbVZ1ZEM1MGNtbG5aMlZ5S0NCMGVYQmxMQ0JrWVhSaExDQjBhR2x6SUNrN1hHNWNkRngwZlNrN1hHNWNkSDBzWEc1Y2RIUnlhV2RuWlhKSVlXNWtiR1Z5T2lCbWRXNWpkR2x2YmlnZ2RIbHdaU3dnWkdGMFlTQXBJSHRjYmx4MFhIUjJZWElnWld4bGJTQTlJSFJvYVhOYk1GMDdYRzVjZEZ4MGFXWWdLQ0JsYkdWdElDa2dlMXh1WEhSY2RGeDBjbVYwZFhKdUlHcFJkV1Z5ZVM1bGRtVnVkQzUwY21sbloyVnlLQ0IwZVhCbExDQmtZWFJoTENCbGJHVnRMQ0IwY25WbElDazdYRzVjZEZ4MGZWeHVYSFI5WEc1OUtUdGNibHh1WEc1MllYSmNibHgwY25ob2RHMXNWR0ZuSUQwZ0x6d29QeUZoY21WaGZHSnlmR052Ykh4bGJXSmxaSHhvY254cGJXZDhhVzV3ZFhSOGJHbHVhM3h0WlhSaGZIQmhjbUZ0S1Nnb1cxeGNkenBkS3lsYlhqNWRLaWxjWEM4K0wyZHBMRnh1WEhSeWRHRm5UbUZ0WlNBOUlDODhLRnRjWEhjNlhTc3BMeXhjYmx4MGNtaDBiV3dnUFNBdlBId21JejljWEhjck95OHNYRzVjZEhKdWIwbHVibVZ5YUhSdGJDQTlJQzg4S0Q4NmMyTnlhWEIwZkhOMGVXeGxmR3hwYm1zcEwya3NYRzVjZEM4dklHTm9aV05yWldROVhDSmphR1ZqYTJWa1hDSWdiM0lnWTJobFkydGxaRnh1WEhSeVkyaGxZMnRsWkNBOUlDOWphR1ZqYTJWa1hGeHpLaWcvT2x0ZVBWMThQVnhjY3lvdVkyaGxZMnRsWkM0cEwya3NYRzVjZEhKelkzSnBjSFJVZVhCbElEMGdMMTRrZkZ4Y0x5Zy9PbXBoZG1GOFpXTnRZU2x6WTNKcGNIUXZhU3hjYmx4MGNuTmpjbWx3ZEZSNWNHVk5ZWE5yWldRZ1BTQXZYblJ5ZFdWY1hDOG9MaW9wTHl4Y2JseDBjbU5zWldGdVUyTnlhWEIwSUQwZ0wxNWNYSE1xUENFb1B6cGNYRnREUkVGVVFWeGNXM3d0TFNsOEtEODZYRnhkWEZ4ZGZDMHRLVDVjWEhNcUpDOW5MRnh1WEc1Y2RDOHZJRmRsSUdoaGRtVWdkRzhnWTJ4dmMyVWdkR2hsYzJVZ2RHRm5jeUIwYnlCemRYQndiM0owSUZoSVZFMU1JQ2dqTVRNeU1EQXBYRzVjZEhkeVlYQk5ZWEFnUFNCN1hHNWNibHgwWEhRdkx5QlRkWEJ3YjNKME9pQkpSVGxjYmx4MFhIUnZjSFJwYjI0NklGc2dNU3dnWENJOGMyVnNaV04wSUcxMWJIUnBjR3hsUFNkdGRXeDBhWEJzWlNjK1hDSXNJRndpUEM5elpXeGxZM1ErWENJZ1hTeGNibHh1WEhSY2RIUm9aV0ZrT2lCYklERXNJRndpUEhSaFlteGxQbHdpTENCY0lqd3ZkR0ZpYkdVK1hDSWdYU3hjYmx4MFhIUmpiMnc2SUZzZ01pd2dYQ0k4ZEdGaWJHVStQR052YkdkeWIzVndQbHdpTENCY0lqd3ZZMjlzWjNKdmRYQStQQzkwWVdKc1pUNWNJaUJkTEZ4dVhIUmNkSFJ5T2lCYklESXNJRndpUEhSaFlteGxQangwWW05a2VUNWNJaXdnWENJOEwzUmliMlI1UGp3dmRHRmliR1UrWENJZ1hTeGNibHgwWEhSMFpEb2dXeUF6TENCY0lqeDBZV0pzWlQ0OGRHSnZaSGsrUEhSeVBsd2lMQ0JjSWp3dmRISStQQzkwWW05a2VUNDhMM1JoWW14bFBsd2lJRjBzWEc1Y2JseDBYSFJmWkdWbVlYVnNkRG9nV3lBd0xDQmNJbHdpTENCY0lsd2lJRjFjYmx4MGZUdGNibHh1THk4Z1UzVndjRzl5ZERvZ1NVVTVYRzUzY21Gd1RXRndMbTl3ZEdkeWIzVndJRDBnZDNKaGNFMWhjQzV2Y0hScGIyNDdYRzVjYm5keVlYQk5ZWEF1ZEdKdlpIa2dQU0IzY21Gd1RXRndMblJtYjI5MElEMGdkM0poY0UxaGNDNWpiMnhuY205MWNDQTlJSGR5WVhCTllYQXVZMkZ3ZEdsdmJpQTlJSGR5WVhCTllYQXVkR2hsWVdRN1hHNTNjbUZ3VFdGd0xuUm9JRDBnZDNKaGNFMWhjQzUwWkR0Y2JseHVMeThnVTNWd2NHOXlkRG9nTVM1NElHTnZiWEJoZEdsaWFXeHBkSGxjYmk4dklFMWhibWx3ZFd4aGRHbHVaeUIwWVdKc1pYTWdjbVZ4ZFdseVpYTWdZU0IwWW05a2VWeHVablZ1WTNScGIyNGdiV0Z1YVhCMWJHRjBhVzl1VkdGeVoyVjBLQ0JsYkdWdExDQmpiMjUwWlc1MElDa2dlMXh1WEhSeVpYUjFjbTRnYWxGMVpYSjVMbTV2WkdWT1lXMWxLQ0JsYkdWdExDQmNJblJoWW14bFhDSWdLU0FtSmx4dVhIUmNkR3BSZFdWeWVTNXViMlJsVG1GdFpTZ2dZMjl1ZEdWdWRDNXViMlJsVkhsd1pTQWhQVDBnTVRFZ1B5QmpiMjUwWlc1MElEb2dZMjl1ZEdWdWRDNW1hWEp6ZEVOb2FXeGtMQ0JjSW5SeVhDSWdLU0EvWEc1Y2JseDBYSFJsYkdWdExtZGxkRVZzWlcxbGJuUnpRbmxVWVdkT1lXMWxLRndpZEdKdlpIbGNJaWxiTUYwZ2ZIeGNibHgwWEhSY2RHVnNaVzB1WVhCd1pXNWtRMmhwYkdRb0lHVnNaVzB1YjNkdVpYSkViMk4xYldWdWRDNWpjbVZoZEdWRmJHVnRaVzUwS0Z3aWRHSnZaSGxjSWlrZ0tTQTZYRzVjZEZ4MFpXeGxiVHRjYm4xY2JseHVMeThnVW1Wd2JHRmpaUzl5WlhOMGIzSmxJSFJvWlNCMGVYQmxJR0YwZEhKcFluVjBaU0J2WmlCelkzSnBjSFFnWld4bGJXVnVkSE1nWm05eUlITmhabVVnUkU5TklHMWhibWx3ZFd4aGRHbHZibHh1Wm5WdVkzUnBiMjRnWkdsellXSnNaVk5qY21sd2RDZ2daV3hsYlNBcElIdGNibHgwWld4bGJTNTBlWEJsSUQwZ0tHVnNaVzB1WjJWMFFYUjBjbWxpZFhSbEtGd2lkSGx3WlZ3aUtTQWhQVDBnYm5Wc2JDa2dLeUJjSWk5Y0lpQXJJR1ZzWlcwdWRIbHdaVHRjYmx4MGNtVjBkWEp1SUdWc1pXMDdYRzU5WEc1bWRXNWpkR2x2YmlCeVpYTjBiM0psVTJOeWFYQjBLQ0JsYkdWdElDa2dlMXh1WEhSMllYSWdiV0YwWTJnZ1BTQnljMk55YVhCMFZIbHdaVTFoYzJ0bFpDNWxlR1ZqS0NCbGJHVnRMblI1Y0dVZ0tUdGNibHh1WEhScFppQW9JRzFoZEdOb0lDa2dlMXh1WEhSY2RHVnNaVzB1ZEhsd1pTQTlJRzFoZEdOb1d5QXhJRjA3WEc1Y2RIMGdaV3h6WlNCN1hHNWNkRngwWld4bGJTNXlaVzF2ZG1WQmRIUnlhV0oxZEdVb1h
14938DSjBlWEJsWENJcE8xeHVYSFI5WEc1Y2JseDBjbVYwZFhKdUlHVnNaVzA3WEc1OVhHNWNiaTh2SUUxaGNtc2djMk55YVhCMGN5QmhjeUJvWVhacGJtY2dZV3h5WldGa2VTQmlaV1Z1SUdWMllXeDFZWFJsWkZ4dVpuVnVZM1JwYjI0Z2MyVjBSMnh2WW1Gc1JYWmhiQ2dnWld4bGJYTXNJSEpsWmtWc1pXMWxiblJ6SUNrZ2UxeHVYSFIyWVhJZ2FTQTlJREFzWEc1Y2RGeDBiQ0E5SUdWc1pXMXpMbXhsYm1kMGFEdGNibHh1WEhSbWIzSWdLQ0E3SUdrZ1BDQnNPeUJwS3lzZ0tTQjdYRzVjZEZ4MFpHRjBZVjl3Y21sMkxuTmxkQ2hjYmx4MFhIUmNkR1ZzWlcxeld5QnBJRjBzSUZ3aVoyeHZZbUZzUlhaaGJGd2lMQ0FoY21WbVJXeGxiV1Z1ZEhNZ2ZId2daR0YwWVY5d2NtbDJMbWRsZENnZ2NtVm1SV3hsYldWdWRITmJJR2tnWFN3Z1hDSm5iRzlpWVd4RmRtRnNYQ0lnS1Z4dVhIUmNkQ2s3WEc1Y2RIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z1kyeHZibVZEYjNCNVJYWmxiblFvSUhOeVl5d2daR1Z6ZENBcElIdGNibHgwZG1GeUlHa3NJR3dzSUhSNWNHVXNJSEJrWVhSaFQyeGtMQ0J3WkdGMFlVTjFjaXdnZFdSaGRHRlBiR1FzSUhWa1lYUmhRM1Z5TENCbGRtVnVkSE03WEc1Y2JseDBhV1lnS0NCa1pYTjBMbTV2WkdWVWVYQmxJQ0U5UFNBeElDa2dlMXh1WEhSY2RISmxkSFZ5Ymp0Y2JseDBmVnh1WEc1Y2RDOHZJREV1SUVOdmNIa2djSEpwZG1GMFpTQmtZWFJoT2lCbGRtVnVkSE1zSUdoaGJtUnNaWEp6TENCbGRHTXVYRzVjZEdsbUlDZ2daR0YwWVY5d2NtbDJMbWhoYzBSaGRHRW9JSE55WXlBcElDa2dlMXh1WEhSY2RIQmtZWFJoVDJ4a0lEMGdaR0YwWVY5d2NtbDJMbUZqWTJWemN5Z2djM0pqSUNrN1hHNWNkRngwY0dSaGRHRkRkWElnUFNCa1lYUmhYM0J5YVhZdWMyVjBLQ0JrWlhOMExDQndaR0YwWVU5c1pDQXBPMXh1WEhSY2RHVjJaVzUwY3lBOUlIQmtZWFJoVDJ4a0xtVjJaVzUwY3p0Y2JseHVYSFJjZEdsbUlDZ2daWFpsYm5SeklDa2dlMXh1WEhSY2RGeDBaR1ZzWlhSbElIQmtZWFJoUTNWeUxtaGhibVJzWlR0Y2JseDBYSFJjZEhCa1lYUmhRM1Z5TG1WMlpXNTBjeUE5SUh0OU8xeHVYRzVjZEZ4MFhIUm1iM0lnS0NCMGVYQmxJR2x1SUdWMlpXNTBjeUFwSUh0Y2JseDBYSFJjZEZ4MFptOXlJQ2dnYVNBOUlEQXNJR3dnUFNCbGRtVnVkSE5iSUhSNWNHVWdYUzVzWlc1bmRHZzdJR2tnUENCc095QnBLeXNnS1NCN1hHNWNkRngwWEhSY2RGeDBhbEYxWlhKNUxtVjJaVzUwTG1Ga1pDZ2daR1Z6ZEN3Z2RIbHdaU3dnWlhabGJuUnpXeUIwZVhCbElGMWJJR2tnWFNBcE8xeHVYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYSFI5WEc1Y2JseDBMeThnTWk0Z1EyOXdlU0IxYzJWeUlHUmhkR0ZjYmx4MGFXWWdLQ0JrWVhSaFgzVnpaWEl1YUdGelJHRjBZU2dnYzNKaklDa2dLU0I3WEc1Y2RGeDBkV1JoZEdGUGJHUWdQU0JrWVhSaFgzVnpaWEl1WVdOalpYTnpLQ0J6Y21NZ0tUdGNibHgwWEhSMVpHRjBZVU4xY2lBOUlHcFJkV1Z5ZVM1bGVIUmxibVFvSUh0OUxDQjFaR0YwWVU5c1pDQXBPMXh1WEc1Y2RGeDBaR0YwWVY5MWMyVnlMbk5sZENnZ1pHVnpkQ3dnZFdSaGRHRkRkWElnS1R0Y2JseDBmVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQm5aWFJCYkd3b0lHTnZiblJsZUhRc0lIUmhaeUFwSUh0Y2JseDBkbUZ5SUhKbGRDQTlJR052Ym5SbGVIUXVaMlYwUld4bGJXVnVkSE5DZVZSaFowNWhiV1VnUHlCamIyNTBaWGgwTG1kbGRFVnNaVzFsYm5SelFubFVZV2RPWVcxbEtDQjBZV2NnZkh3Z1hDSXFYQ0lnS1NBNlhHNWNkRngwWEhSamIyNTBaWGgwTG5GMVpYSjVVMlZzWldOMGIzSkJiR3dnUHlCamIyNTBaWGgwTG5GMVpYSjVVMlZzWldOMGIzSkJiR3dvSUhSaFp5QjhmQ0JjSWlwY0lpQXBJRHBjYmx4MFhIUmNkRnRkTzF4dVhHNWNkSEpsZEhWeWJpQjBZV2NnUFQwOUlIVnVaR1ZtYVc1bFpDQjhmQ0IwWVdjZ0ppWWdhbEYxWlhKNUxtNXZaR1ZPWVcxbEtDQmpiMjUwWlhoMExDQjBZV2NnS1NBL1hHNWNkRngwYWxGMVpYSjVMbTFsY21kbEtDQmJJR052Ym5SbGVIUWdYU3dnY21WMElDa2dPbHh1WEhSY2RISmxkRHRjYm4xY2JseHVMeThnUm1sNElFbEZJR0oxWjNNc0lITmxaU0J6ZFhCd2IzSjBJSFJsYzNSelhHNW1kVzVqZEdsdmJpQm1hWGhKYm5CMWRDZ2djM0pqTENCa1pYTjBJQ2tnZTF4dVhIUjJZWElnYm05a1pVNWhiV1VnUFNCa1pYTjBMbTV2WkdWT1lXMWxMblJ2VEc5M1pYSkRZWE5sS0NrN1hHNWNibHgwTHk4Z1JtRnBiSE1nZEc4Z2NHVnljMmx6ZENCMGFHVWdZMmhsWTJ0bFpDQnpkR0YwWlNCdlppQmhJR05zYjI1bFpDQmphR1ZqYTJKdmVDQnZjaUJ5WVdScGJ5QmlkWFIwYjI0dVhHNWNkR2xtSUNnZ2JtOWtaVTVoYldVZ1BUMDlJRndpYVc1d2RYUmNJaUFtSmlCeVkyaGxZMnRoWW14bFZIbHdaUzUwWlhOMEtDQnpjbU11ZEhsd1pTQXBJQ2tnZTF4dVhIUmNkR1JsYzNRdVkyaGxZMnRsWkNBOUlITnlZeTVqYUdWamEyVmtPMXh1WEc1Y2RDOHZJRVpoYVd4eklIUnZJSEpsZEhWeWJpQjBhR1VnYzJWc1pXTjBaV1FnYjNCMGFXOXVJSFJ2SUhSb1pTQmtaV1poZFd4MElITmxiR1ZqZEdWa0lITjBZWFJsSUhkb1pXNGdZMnh2Ym1sdVp5QnZjSFJwYjI1elhHNWNkSDBnWld4elpTQnBaaUFvSUc1dlpHVk9ZVzFsSUQwOVBTQmNJbWx1Y0hWMFhDSWdmSHdnYm05a1pVNWhiV1VnUFQwOUlGd2lkR1Y0ZEdGeVpXRmNJaUFwSUh0Y2JseDBYSFJrWlhOMExtUmxabUYxYkhSV1lXeDFaU0E5SUhOeVl5NWtaV1poZFd4MFZtRnNkV1U3WEc1Y2RIMWNibjFjYmx4dWFsRjFaWEo1TG1WNGRHVnVaQ2g3WEc1Y2RHTnNiMjVsT2lCbWRXNWpkR2x2YmlnZ1pXeGxiU3dnWkdGMFlVRnVaRVYyWlc1MGN5d2daR1ZsY0VSaGRHRkJibVJGZG1WdWRITWdLU0I3WEc1Y2RGeDBkbUZ5SUdrc0lHd3NJSE55WTBWc1pXMWxiblJ6TENCa1pYTjBSV3hsYldWdWRITXNYRzVjZEZ4MFhIUmpiRzl1WlNBOUlHVnNaVzB1WTJ4dmJtVk9iMlJsS0NCMGNuVmxJQ2tzWEc1Y2RGeDBYSFJwYmxCaFoyVWdQU0JxVVhWbGNua3VZMjl1ZEdGcGJuTW9JR1ZzWlcwdWIzZHVaWEpFYjJOMWJXVnVkQ3dnWld4bGJTQXBPMXh1WEc1Y2RGeDBMeThnUm1sNElFbEZJR05zYjI1cGJtY2dhWE56ZFdWelhHNWNkRngwYVdZZ0tDQWhjM1Z3Y0c5eWRDNXViME5zYjI1bFEyaGxZMnRsWkNBbUppQW9JR1ZzWlcwdWJtOWtaVlI1Y0dVZ1BUMDlJREVnZkh3Z1pXeGxiUzV1YjJSbFZIbHdaU0E5UFQwZ01URWdLU0FtSmx4dVhIUmNkRngwWEhRaGFsRjFaWEo1TG1seldFMU1SRzlqS0NCbGJHVnRJQ2tnS1NCN1hHNWNibHgwWEhSY2RDOHZJRmRsSUdWelkyaGxkeUJUYVhwNmJHVWdhR1Z5WlNCbWIzSWdjR1Z5Wm05eWJXRnVZMlVnY21WaGMyOXVjem9nYUhSMGNEb3ZMMnB6Y0dWeVppNWpiMjB2WjJWMFlXeHNMWFp6TFhOcGVucHNaUzh5WEc1Y2RGeDBYSFJrWlhOMFJXeGxiV1Z1ZEhNZ1BTQm5aWFJCYkd3b0lHTnNiMjVsSUNrN1hHNWNkRngwWEhSemNtTkZiR1Z0Wlc1MGN5QTlJR2RsZEVGc2JDZ2daV3hsYlNBcE8xeHVYRzVjZEZ4MFhIUm1iM0lnS0NCcElEMGdNQ3dnYkNBOUlITnlZMFZzWlcxbGJuUnpMbXhsYm1kMGFEc2dhU0E4SUd3N0lHa3JLeUFwSUh0Y2JseDBYSFJjZEZ4MFptbDRTVzV3ZFhRb0lITnlZMFZzWlcxbGJuUnpXeUJwSUYwc0lHUmxjM1JGYkdWdFpXNTBjMXNnYVNCZElDazdYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdRMjl3ZVNCMGFHVWdaWFpsYm5SeklHWnliMjBnZEdobElHOXlhV2RwYm1Gc0lIUnZJSFJvWlNCamJHOXVaVnh1WEhSY2RHbG1JQ2dnWkdGMFlVRnVaRVYyWlc1MGN5QXBJSHRjYmx4MFhIUmNkR2xtSUNnZ1pHVmxjRVJoZEdGQmJtUkZkbVZ1ZEhNZ0tTQjdYRzVjZEZ4MFhIUmNkSE55WTBWc1pXMWxiblJ6SUQwZ2MzSmpSV3hsYldWdWRITWdmSHdnWjJWMFFXeHNLQ0JsYkdWdElDazdYRzVjZEZ4MFhIUmNkR1JsYzNSRmJHVnRaVzUwY3lBOUlHUmxjM1JGYkdWdFpXNTBjeUI4ZkNCblpYUkJiR3dvSUdOc2IyNWxJQ2s3WEc1Y2JseDBYSFJjZEZ4MFptOXlJQ2dnYVNBOUlEQXNJR3dnUFNCemNtTkZiR1Z0Wlc1MGN5NXNaVzVuZEdnN0lHa2dQQ0JzT3lCcEt5c2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MFkyeHZibVZEYjNCNVJYWmxiblFvSUhOeVkwVnNaVzFsYm5Seld5QnBJRjBzSUdSbGMzUkZiR1Z0Wlc1MGMxc2dhU0JkSUNrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMGdaV3h6WlNCN1hHNWNkRngwWEhSY2RHTnNiMjVsUTI5d2VVVjJaVzUwS0NCbGJHVnRMQ0JqYkc5dVpTQXBPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRkJ5WlhObGNuWmxJSE5qY21sd2RDQmxkbUZzZFdGMGFXOXVJR2hwYzNSdmNubGNibHgwWEhSa1pYTjBSV3hsYldWdWRITWdQU0JuWlhSQmJHd29JR05zYjI1bExDQmNJbk5qY21sd2RGd2lJQ2s3WEc1Y2RGeDBhV1lnS0NCa1pYTjBSV3hsYldWdWRITXViR1Z1WjNSb0lENGdNQ0FwSUh0Y2JseDBYSFJjZEhObGRFZHNiMkpoYkVWMllXd29JR1JsYzNSRmJHVnRaVzUwY3l3Z0lXbHVVR0ZuWlNBbUppQm5aWFJCYkd3b0lHVnNaVzBzSUZ3aWMyTnlhWEIwWENJZ0tTQXBPMXh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRkpsZEhWeWJpQjBhR1VnWTJ4dmJtVmtJSE5sZEZ4dVhIUmNkSEpsZEhWeWJpQmpiRzl1WlR0Y2JseDBmU3hjYmx4dVhIUmlkV2xzWkVaeVlXZHRaVzUwT2lCbWRXNWpkR2x2YmlnZ1pXeGxiWE1zSUdOdmJuUmxlSFFzSUhOamNtbHdkSE1zSUhObGJHVmpkR2x2YmlBcElIdGNibHgwWEhSMllYSWdaV3hsYlN3Z2RHMXdMQ0IwWVdjc0lIZHlZWEFzSUdOdmJuUmhhVzV6TENCcUxGeHVYSFJjZEZ4MFpuSmhaMj
14938FsYm5RZ1BTQmpiMjUwWlhoMExtTnlaV0YwWlVSdlkzVnRaVzUwUm5KaFoyMWxiblFvS1N4Y2JseDBYSFJjZEc1dlpHVnpJRDBnVzEwc1hHNWNkRngwWEhScElEMGdNQ3hjYmx4MFhIUmNkR3dnUFNCbGJHVnRjeTVzWlc1bmRHZzdYRzVjYmx4MFhIUm1iM0lnS0NBN0lHa2dQQ0JzT3lCcEt5c2dLU0I3WEc1Y2RGeDBYSFJsYkdWdElEMGdaV3hsYlhOYklHa2dYVHRjYmx4dVhIUmNkRngwYVdZZ0tDQmxiR1Z0SUh4OElHVnNaVzBnUFQwOUlEQWdLU0I3WEc1Y2JseDBYSFJjZEZ4MEx5OGdRV1JrSUc1dlpHVnpJR1JwY21WamRHeDVYRzVjZEZ4MFhIUmNkR2xtSUNnZ2FsRjFaWEo1TG5SNWNHVW9JR1ZzWlcwZ0tTQTlQVDBnWENKdlltcGxZM1JjSWlBcElIdGNibHgwWEhSY2RGeDBYSFF2THlCVGRYQndiM0owT2lCUmRGZGxZa3RwZEN3Z1VHaGhiblJ2YlVwVFhHNWNkRngwWEhSY2RGeDBMeThnY0hWemFDNWhjSEJzZVNoZkxDQmhjbkpoZVd4cGEyVXBJSFJvY205M2N5QnZiaUJoYm1OcFpXNTBJRmRsWWt0cGRGeHVYSFJjZEZ4MFhIUmNkR3BSZFdWeWVTNXRaWEpuWlNnZ2JtOWtaWE1zSUdWc1pXMHVibTlrWlZSNWNHVWdQeUJiSUdWc1pXMGdYU0E2SUdWc1pXMGdLVHRjYmx4dVhIUmNkRngwWEhRdkx5QkRiMjUyWlhKMElHNXZiaTFvZEcxc0lHbHVkRzhnWVNCMFpYaDBJRzV2WkdWY2JseDBYSFJjZEZ4MGZTQmxiSE5sSUdsbUlDZ2dJWEpvZEcxc0xuUmxjM1FvSUdWc1pXMGdLU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUnViMlJsY3k1d2RYTm9LQ0JqYjI1MFpYaDBMbU55WldGMFpWUmxlSFJPYjJSbEtDQmxiR1Z0SUNrZ0tUdGNibHh1WEhSY2RGeDBYSFF2THlCRGIyNTJaWEowSUdoMGJXd2dhVzUwYnlCRVQwMGdibTlrWlhOY2JseDBYSFJjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEZ4MFhIUjBiWEFnUFNCMGJYQWdmSHdnWm5KaFoyMWxiblF1WVhCd1pXNWtRMmhwYkdRb0lHTnZiblJsZUhRdVkzSmxZWFJsUld4bGJXVnVkQ2hjSW1ScGRsd2lLU0FwTzF4dVhHNWNkRngwWEhSY2RGeDBMeThnUkdWelpYSnBZV3hwZW1VZ1lTQnpkR0Z1WkdGeVpDQnlaWEJ5WlhObGJuUmhkR2x2Ymx4dVhIUmNkRngwWEhSY2RIUmhaeUE5SUNnZ2NuUmhaMDVoYldVdVpYaGxZeWdnWld4bGJTQXBJSHg4SUZzZ1hDSmNJaXdnWENKY0lpQmRJQ2xiSURFZ1hTNTBiMHh2ZDJWeVEyRnpaU2dwTzF4dVhIUmNkRngwWEhSY2RIZHlZWEFnUFNCM2NtRndUV0Z3V3lCMFlXY2dYU0I4ZkNCM2NtRndUV0Z3TGw5a1pXWmhkV3gwTzF4dVhIUmNkRngwWEhSY2RIUnRjQzVwYm01bGNraFVUVXdnUFNCM2NtRndXeUF4SUYwZ0t5QmxiR1Z0TG5KbGNHeGhZMlVvSUhKNGFIUnRiRlJoWnl3Z1hDSThKREUrUEM4a01qNWNJaUFwSUNzZ2QzSmhjRnNnTWlCZE8xeHVYRzVjZEZ4MFhIUmNkRngwTHk4Z1JHVnpZMlZ1WkNCMGFISnZkV2RvSUhkeVlYQndaWEp6SUhSdklIUm9aU0J5YVdkb2RDQmpiMjUwWlc1MFhHNWNkRngwWEhSY2RGeDBhaUE5SUhkeVlYQmJJREFnWFR0Y2JseDBYSFJjZEZ4MFhIUjNhR2xzWlNBb0lHb3RMU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmNkSFJ0Y0NBOUlIUnRjQzVzWVhOMFEyaHBiR1E3WEc1Y2RGeDBYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUmNkRngwTHk4Z1UzVndjRzl5ZERvZ1VYUlhaV0pMYVhRc0lGQm9ZVzUwYjIxS1UxeHVYSFJjZEZ4MFhIUmNkQzh2SUhCMWMyZ3VZWEJ3Ykhrb1h5d2dZWEp5WVhsc2FXdGxLU0IwYUhKdmQzTWdiMjRnWVc1amFXVnVkQ0JYWldKTGFYUmNibHgwWEhSY2RGeDBYSFJxVVhWbGNua3ViV1Z5WjJVb0lHNXZaR1Z6TENCMGJYQXVZMmhwYkdST2IyUmxjeUFwTzF4dVhHNWNkRngwWEhSY2RGeDBMeThnVW1WdFpXMWlaWElnZEdobElIUnZjQzFzWlhabGJDQmpiMjUwWVdsdVpYSmNibHgwWEhSY2RGeDBYSFIwYlhBZ1BTQm1jbUZuYldWdWRDNW1hWEp6ZEVOb2FXeGtPMXh1WEc1Y2RGeDBYSFJjZEZ4MEx5OGdSVzV6ZFhKbElIUm9aU0JqY21WaGRHVmtJRzV2WkdWeklHRnlaU0J2Y25Cb1lXNWxaQ0FvSXpFeU16a3lLVnh1WEhSY2RGeDBYSFJjZEhSdGNDNTBaWGgwUTI5dWRHVnVkQ0E5SUZ3aVhDSTdYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDFjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJTWlcxdmRtVWdkM0poY0hCbGNpQm1jbTl0SUdaeVlXZHRaVzUwWEc1Y2RGeDBabkpoWjIxbGJuUXVkR1Y0ZEVOdmJuUmxiblFnUFNCY0lsd2lPMXh1WEc1Y2RGeDBhU0E5SURBN1hHNWNkRngwZDJocGJHVWdLQ0FvWld4bGJTQTlJRzV2WkdWeld5QnBLeXNnWFNrZ0tTQjdYRzVjYmx4MFhIUmNkQzh2SUNNME1EZzNJQzBnU1dZZ2IzSnBaMmx1SUdGdVpDQmtaWE4wYVc1aGRHbHZiaUJsYkdWdFpXNTBjeUJoY21VZ2RHaGxJSE5oYldVc0lHRnVaQ0IwYUdseklHbHpYRzVjZEZ4MFhIUXZMeUIwYUdGMElHVnNaVzFsYm5Rc0lHUnZJRzV2ZENCa2J5QmhibmwwYUdsdVoxeHVYSFJjZEZ4MGFXWWdLQ0J6Wld4bFkzUnBiMjRnSmlZZ2FsRjFaWEo1TG1sdVFYSnlZWGtvSUdWc1pXMHNJSE5sYkdWamRHbHZiaUFwSUNFOVBTQXRNU0FwSUh0Y2JseDBYSFJjZEZ4MFkyOXVkR2x1ZFdVN1hHNWNkRngwWEhSOVhHNWNibHgwWEhSY2RHTnZiblJoYVc1eklEMGdhbEYxWlhKNUxtTnZiblJoYVc1ektDQmxiR1Z0TG05M2JtVnlSRzlqZFcxbGJuUXNJR1ZzWlcwZ0tUdGNibHh1WEhSY2RGeDBMeThnUVhCd1pXNWtJSFJ2SUdaeVlXZHRaVzUwWEc1Y2RGeDBYSFIwYlhBZ1BTQm5aWFJCYkd3b0lHWnlZV2R0Wlc1MExtRndjR1Z1WkVOb2FXeGtLQ0JsYkdWdElDa3NJRndpYzJOeWFYQjBYQ0lnS1R0Y2JseHVYSFJjZEZ4MEx5OGdVSEpsYzJWeWRtVWdjMk55YVhCMElHVjJZV3gxWVhScGIyNGdhR2x6ZEc5eWVWeHVYSFJjZEZ4MGFXWWdLQ0JqYjI1MFlXbHVjeUFwSUh0Y2JseDBYSFJjZEZ4MGMyVjBSMnh2WW1Gc1JYWmhiQ2dnZEcxd0lDazdYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkQzh2SUVOaGNIUjFjbVVnWlhobFkzVjBZV0pzWlhOY2JseDBYSFJjZEdsbUlDZ2djMk55YVhCMGN5QXBJSHRjYmx4MFhIUmNkRngwYWlBOUlEQTdYRzVjZEZ4MFhIUmNkSGRvYVd4bElDZ2dLR1ZzWlcwZ1BTQjBiWEJiSUdvckt5QmRLU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUnBaaUFvSUhKelkzSnBjSFJVZVhCbExuUmxjM1FvSUdWc1pXMHVkSGx3WlNCOGZDQmNJbHdpSUNrZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSelkzSnBjSFJ6TG5CMWMyZ29JR1ZzWlcwZ0tUdGNibHgwWEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEgxY2JseDBYSFJjZEgxY2JseDBYSFI5WEc1Y2JseDBYSFJ5WlhSMWNtNGdabkpoWjIxbGJuUTdYRzVjZEgwc1hHNWNibHgwWTJ4bFlXNUVZWFJoT2lCbWRXNWpkR2x2YmlnZ1pXeGxiWE1nS1NCN1hHNWNkRngwZG1GeUlHUmhkR0VzSUdWc1pXMHNJSFI1Y0dVc0lHdGxlU3hjYmx4MFhIUmNkSE53WldOcFlXd2dQU0JxVVhWbGNua3VaWFpsYm5RdWMzQmxZMmxoYkN4Y2JseDBYSFJjZEdrZ1BTQXdPMXh1WEc1Y2RGeDBabTl5SUNnZ095QW9aV3hsYlNBOUlHVnNaVzF6V3lCcElGMHBJQ0U5UFNCMWJtUmxabWx1WldRN0lHa3JLeUFwSUh0Y2JseDBYSFJjZEdsbUlDZ2dhbEYxWlhKNUxtRmpZMlZ3ZEVSaGRHRW9JR1ZzWlcwZ0tTQXBJSHRjYmx4MFhIUmNkRngwYTJWNUlEMGdaV3hsYlZzZ1pHRjBZVjl3Y21sMkxtVjRjR0Z1Wkc4Z1hUdGNibHh1WEhSY2RGeDBYSFJwWmlBb0lHdGxlU0FtSmlBb1pHRjBZU0E5SUdSaGRHRmZjSEpwZGk1all
14938XTm9aVnNnYTJWNUlGMHBJQ2tnZTF4dVhIUmNkRngwWEhSY2RHbG1JQ2dnWkdGMFlTNWxkbVZ1ZEhNZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSbWIzSWdLQ0IwZVhCbElHbHVJR1JoZEdFdVpYWmxiblJ6SUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwWEhScFppQW9JSE53WldOcFlXeGJJSFI1Y0dVZ1hTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBYSFJxVVhWbGNua3VaWFpsYm5RdWNtVnRiM1psS0NCbGJHVnRMQ0IwZVhCbElDazdYRzVjYmx4MFhIUmNkRngwWEhSY2RGeDBMeThnVkdocGN5QnBjeUJoSUhOb2IzSjBZM1YwSUhSdklHRjJiMmxrSUdwUmRXVnllUzVsZG1WdWRDNXlaVzF2ZG1VbmN5QnZkbVZ5YUdWaFpGeHVYSFJjZEZ4MFhIUmNkRngwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEdwUmRXVnllUzV5WlcxdmRtVkZkbVZ1ZENnZ1pXeGxiU3dnZEhsd1pTd2daR0YwWVM1b1lXNWtiR1VnS1R0Y2JseDBYSFJjZEZ4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MFhIUnBaaUFvSUdSaGRHRmZjSEpwZGk1allXTm9aVnNnYTJWNUlGMGdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUXZMeUJFYVhOallYSmtJR0Z1ZVNCeVpXMWhhVzVwYm1jZ1lIQnlhWFpoZEdWZ0lHUmhkR0ZjYmx4MFhIUmNkRngwWEhSY2RHUmxiR1YwWlNCa1lYUmhYM0J5YVhZdVkyRmphR1ZiSUd0bGVTQmRPMXh1WEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MGZWeHVYSFJjZEZ4MEx5OGdSR2x6WTJGeVpDQmhibmtnY21WdFlXbHVhVzVuSUdCMWMyVnlZQ0JrWVhSaFhHNWNkRngwWEhSa1pXeGxkR1VnWkdGMFlWOTFjMlZ5TG1OaFkyaGxXeUJsYkdWdFd5QmtZWFJoWDNWelpYSXVaWGh3WVc1a2J5QmRJRjA3WEc1Y2RGeDBmVnh1WEhSOVhHNTlLVHRjYmx4dWFsRjFaWEo1TG1adUxtVjRkR1Z1WkNoN1hHNWNkSFJsZUhRNklHWjFibU4wYVc5dUtDQjJZV3gxWlNBcElIdGNibHgwWEhSeVpYUjFjbTRnWVdOalpYTnpLQ0IwYUdsekxDQm1kVzVqZEdsdmJpZ2dkbUZzZFdVZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200Z2RtRnNkV1VnUFQwOUlIVnVaR1ZtYVc1bFpDQS9YRzVjZEZ4MFhIUmNkR3BSZFdWeWVTNTBaWGgwS0NCMGFHbHpJQ2tnT2x4dVhIUmNkRngwWEhSMGFHbHpMbVZ0Y0hSNUtDa3VaV0ZqYUNobWRXNWpkR2x2YmlncElIdGNibHgwWEhSY2RGeDBYSFJwWmlBb0lIUm9hWE11Ym05a1pWUjVjR1VnUFQwOUlERWdmSHdnZEdocGN5NXViMlJsVkhsd1pTQTlQVDBnTVRFZ2ZId2dkR2hwY3k1dWIyUmxWSGx3WlNBOVBUMGdPU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmNkSFJvYVhNdWRHVjRkRU52Ym5SbGJuUWdQU0IyWVd4MVpUdGNibHgwWEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEgwcE8xeHVYSFJjZEgwc0lHNTFiR3dzSUhaaGJIVmxMQ0JoY21kMWJXVnVkSE11YkdWdVozUm9JQ2s3WEc1Y2RIMHNYRzVjYmx4MFlYQndaVzVrT2lCbWRXNWpkR2x2YmlncElIdGNibHgwWEhSeVpYUjFjbTRnZEdocGN5NWtiMjFOWVc1cGNDZ2dZWEpuZFcxbGJuUnpMQ0JtZFc1amRHbHZiaWdnWld4bGJTQXBJSHRjYmx4MFhIUmNkR2xtSUNnZ2RHaHBjeTV1YjJSbFZIbHdaU0E5UFQwZ01TQjhmQ0IwYUdsekxtNXZaR1ZVZVhCbElEMDlQU0F4TVNCOGZDQjBhR2x6TG01dlpHVlVlWEJsSUQwOVBTQTVJQ2tnZTF4dVhIUmNkRngwWEhSMllYSWdkR0Z5WjJWMElEMGdiV0Z1YVhCMWJHRjBhVzl1VkdGeVoyVjBLQ0IwYUdsekxDQmxiR1Z0SUNrN1hHNWNkRngwWEhSY2RIUmhjbWRsZEM1aGNIQmxibVJEYUdsc1pDZ2daV3hsYlNBcE8xeHVYSFJjZEZ4MGZWeHVYSFJjZEgwcE8xeHVYSFI5TEZ4dVhHNWNkSEJ5WlhCbGJtUTZJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQjBhR2x6TG1SdmJVMWhibWx3S0NCaGNtZDFiV1Z1ZEhNc0lHWjFibU4wYVc5dUtDQmxiR1Z0SUNrZ2UxeHVYSFJjZEZ4MGFXWWdLQ0IwYUdsekxtNXZaR1ZVZVhCbElEMDlQU0F4SUh4OElIUm9hWE11Ym05a1pWUjVjR1VnUFQwOUlERXhJSHg4SUhSb2FYTXVibTlrWlZSNWNHVWdQVDA5SURrZ0tTQjdYRzVjZEZ4MFhIUmNkSFpoY2lCMFlYSm5aWFFnUFNCdFlXNXBjSFZzWVhScGIyNVVZWEpuWlhRb0lIUm9hWE1zSUdWc1pXMGdLVHRjYmx4MFhIUmNkRngwZEdGeVoyVjBMbWx1YzJWeWRFSmxabTl5WlNnZ1pXeGxiU3dnZEdGeVoyVjBMbVpwY25OMFEyaHBiR1FnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5S1R0Y2JseDBmU3hjYmx4dVhIUmlaV1p2Y21VNklHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RISmxkSFZ5YmlCMGFHbHpMbVJ2YlUxaGJtbHdLQ0JoY21kMWJXVnVkSE1zSUdaMWJtTjBhVzl1S0NCbGJHVnRJQ2tnZTF4dVhIUmNkRngwYVdZZ0tDQjBhR2x6TG5CaGNtVnVkRTV2WkdVZ0tTQjdYRzVjZEZ4MFhIUmNkSFJvYVhNdWNHRnlaVzUwVG05a1pTNXBibk5sY25SQ1pXWnZjbVVvSUdWc1pXMHNJSFJvYVhNZ0tUdGNibHgwWEhSY2RIMWNibHgwWEhSOUtUdGNibHgwZlN4Y2JseHVYSFJoWm5SbGNqb2dablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE11Wkc5dFRXRnVhWEFvSUdGeVozVnRaVzUwY3l3Z1puVnVZM1JwYjI0b0lHVnNaVzBnS1NCN1hHNWNkRngwWEhScFppQW9JSFJvYVhNdWNHRnlaVzUwVG05a1pTQXBJSHRjYmx4MFhIUmNkRngwZEdocGN5NXdZWEpsYm5ST2IyUmxMbWx1YzJWeWRFSmxabTl5WlNnZ1pXeGxiU3dnZEdocGN5NXVaWGgwVTJsaWJHbHVaeUFwTzF4dVhIUmNkRngwZlZ4dVhIUmNkSDBwTzF4dVhIUjlMRnh1WEc1Y2RISmxiVzkyWlRvZ1puVnVZM1JwYjI0b0lITmxiR1ZqZEc5eUxDQnJaV1Z3UkdGMFlTQXZLaUJKYm5SbGNtNWhiQ0JWYzJVZ1QyNXNlU0FxTHlBcElIdGNibHgwWEhSMllYSWdaV3hsYlN4Y2JseDBYSFJjZEdWc1pXMXpJRDBnYzJWc1pXTjBiM0lnUHlCcVVYVmxjbmt1Wm1sc2RHVnlLQ0J6Wld4bFkzUnZjaXdnZEdocGN5QXBJRG9nZEdocGN5eGNibHgwWEhSY2RHa2dQU0F3TzF4dVhHNWNkRngwWm05eUlDZ2dPeUFvWld4bGJTQTlJR1ZzWlcxelcybGRLU0FoUFNCdWRXeHNPeUJwS3lzZ0tTQjdYRzVjZEZ4MFhIUnBaaUFvSUNGclpXVndSR0YwWVNBbUppQmxiR1Z0TG01dlpHVlVlWEJsSUQwOVBTQXhJQ2tnZTF4dVhIUmNkRngwWEhScVVYVmxjbmt1WTJ4bFlXNUVZWFJoS0NCblpYUkJiR3dvSUdWc1pXMGdLU0FwTzF4dVhIUmNkRngwZlZ4dVhHNWNkRngwWEhScFppQW9JR1ZzWlcwdWNHRnlaVzUwVG05a1pTQXBJSHRjYmx4MFhIUmNkRngwYVdZZ0tDQnJaV1Z3UkdGMFlTQW1KaUJxVVhWbGNua3VZMjl1ZEdGcGJuTW9JR1ZzWlcwdWIzZHVaWEpFYjJOMWJXVnVkQ3dnWld4bGJTQXBJQ2tnZTF4dVhIUmNkRngwWEhSY2RITmxkRWRzYjJKaGJFVjJZV3dvSUdkbGRFRnNiQ2dnWld4bGJTd2dYQ0p6WTNKcGNIUmNJaUFwSUNrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBaV3hsYlM1d1lYSmxiblJPYjJSbExuSmxiVzkyWlVOb2FXeGtLQ0JsYkdWdElDazdYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYRzVjZEZ4MGNtVjBkWEp1SUhSb2FYTTdYRzVjZEgwc1hHNWNibHgwWlcxd2RIazZJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkSFpoY2lCbGJHVnRMRnh1WEhSY2RGeDBhU0E5SURBN1hHNWNibHgwWEhSbWIzSWdLQ0E3SUNobGJHVnRJRDBnZEdocGMxdHBYU2tnSVQwZ2JuVnNiRHNnYVNzcklDa2dlMXh1WEhSY2RGeDBhV1lnS0NCbGJHVnRMbTV2WkdWVWVYQmxJRDA5UFNBeElDa2dlMXh1WEc1Y2RGeDBYSFJjZEM4dklGQnlaWFpsYm5RZ2JXVnRiM0o1SUd4bFlXdHpYRzVjZEZ4MFhIUmNkR3BSZFdWeWVTNWpiR1ZoYmtSaGRHRW9JR2RsZEVGc2JDZ2daV3hsYlN3Z1ptRnNjMlVnS1NBcE8xeHVYRzVjZEZ4MFhIUmNkQzh2SUZKbGJXOTJaU0JoYm5rZ2NtVnRZV2x1YVc1bklHNXZaR1Z6WEc1Y2RGeDBYSFJjZEdWc1pXMHVkR1Y0ZEVOdmJuUmxiblFnUFNCY0lsd2lPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHh1WEhSY2RISmxkSFZ5YmlCMGFHbHpPMXh1WEhSOUxGeHVYRzVjZEdOc2IyNWxPaUJtZFc1amRHbHZiaWdnWkdGMFlVRnVaRVYyWlc1MGN5d2daR1ZsY0VSaGRHRkJibVJGZG1WdWRITWdLU0I3WEc1Y2RGeDBaR0YwWVVGdVpFVjJaVzUwY3lBOUlHUmhkR0ZCYm1SRmRtVnVkSE1nUFQwZ2JuVnNiQ0EvSUdaaGJITmxJRG9nWkdGMFlVRnVaRVYyWlc1MGN6dGNibHgwWEhSa1pXVndSR0YwWVVGdVpFVjJaVzUwY3lBOUlHUmxaWEJFWVhSaFFXNWtSWFpsYm5SeklEMDlJRzUxYkd3Z1B5QmtZWFJoUVc1a1JYWmxiblJ6SURvZ1pHVmxjRVJoZEdGQmJtUkZkbVZ1ZEhNN1hHNWNibHgwWEhSeVpYUjFjbTRnZEdocGN5NXRZWEFvWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnYWxGMVpYSjVMbU5zYjI1bEtDQjBhR2x6TENCa1lYUmhRVzVrUlhabGJuUnpMQ0JrWldWd1JHRjBZVUZ1WkVWMlpXNTBjeUFwTzF4dVhIUmNkSDBwTzF4dVhIUjlMRnh1WEc1Y2RHaDBiV3c2SUdaMWJtTjBhVzl1S0NCMllXeDFaU0FwSUh0Y2JseDBYSFJ5WlhSMWNtNGdZV05qWlhOektDQjBhR2x6TENCbWRXNWpkR2x2YmlnZ2RtRnNkV1VnS1NCN1hHNWNkRngwWEhSMllYSWdaV3hsYlNBOUlIUm9hWE5iSURBZ1hTQjhmQ0I3ZlN4Y2JseDBYSFJjZEZ4MGFTQTlJREFzWEc1Y2RGeDBYSFJjZEd3Z1BTQjBhR2x6TG14bGJtZDBhRHRjYmx4dVhIUmNkRngwYVdZZ0tDQjJZV3gxWlNBOVBUMGdkVzVrWldacGJtVmtJQ1ltSUdWc1pXMHVibTlrWlZSNWNHVWdQVDA5SURFZ0tTQjdYRzVjZEZ4MFhIUmNkSEpsZEhWeWJpQmxiR1Z0TG1sdWJtVnlTRlJOVER0Y2JseDBYSFJjZEgxY2JseHVYSFJjZEZ4MEx5OGdVMlZsSUdsbUlIZGxJR05oYmlCMFlXdGxJR0VnYzJodmNuUmpkWFFnWVc1a0lHcDFjM1FnZFhObElHbHVibVZ5U0ZSTlRGeHVYSFJjZEZ4MGFXWWdLQ0IwZVhCbGIyWWdkbUZzZFdVZ1BUMDlJRndpYzNSeWFXNW5YQ0lnSmlZZ0lYSnViMGx1Ym1WeWFIUnRiQzUwWlhOMEtDQjJZV3gxWlNBcElDWW1YRzVjZEZ4MFhIUmNkQ0YzY21Gd1RXRndXeUFvSUhKMFlXZE9ZVzFsTG1WNFpXTW9JSFpoYkhWbElDa2dmSHdnV3lCY0lsd2lMQ0JjSWx3aUlGMGdLVnNnTVNCZExuUnZURzkzWlhKRFlYTmxLQ2tnWFNBcElIdGNibHh1WEhSY2RGeDBYSFIyWVd4MVpTQTlJSFpoYkhWbExuSmxjR3hoWTJVb0lISjRhSFJ0YkZSaFp5d2dYQ0k4SkRFK1BDOGtNajVjSWlBcE8xeHVYRzVjZEZ4MFhIUmNkSFJ5ZVNCN1hHNWNkRngwWEhSY2RGeDBabTl5SUNnZ095QnBJRHdnYkRzZ2FTc3JJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBaV3hsYlNBOUlIUm9hWE5iSUdrZ1hTQjhmQ0I3ZlR0Y2JseHVYSFJjZEZ4MFhIUmNkRngwTHk4Z1VtVnRiM1psSUdWc1pXMWxiblFnYm05a1pYTWdZVzVrSUhCeVpYWmxiblFnYldWdGIzSjVJR3hsWVd0elhHNWNkRngwWEhSY2RGeDBYSFJwWmlBb0lHVnNaVzB1Ym05a1pWUjVjR1VnUFQwOUlERWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkR3BSZFdWeWVTNWpiR1ZoYmtSaGRHRW9JR2RsZEVGc2JDZ2daV3hsYlN3Z1ptRnNjMlVnS1NBcE8xeHVYSFJjZEZ4MFhIUmNkRngwWEhSbGJHVnRMbWx1Ym1WeVNGUk5UQ0E5SUhaaGJIVmxPMXh1WEhSY2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkSDFjYmx4dVhIUmNkRngwWEhSY2RHVnNaVzBnUFNBd08xeHVYRzVjZEZ4MFhIUmNkQzh2SUVsbUlIVnphVzVuSUdsdWJtVnlTRlJOVENCMGFISnZkM01nWVc0Z1pYaGpaWEIwYVc5dUxDQjFjMlVnZEdobElHWmhiR3hpWVdOcklHMWxkR2h2WkZ4dVhIUmNkRngwWEhSOUlHTmhkR05vS0NCbElDa2dlMzFjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwYVdZZ0tDQmxiR1Z0SUNrZ2UxeHVYSFJjZEZ4MFhIUjBhR2x6TG1WdGNIUjVLQ2t1WVhCd1pXNWtLQ0IyWVd4MVpTQXBPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMHNJRzUxYkd3c0lIWmhiSFZsTENCaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvSUNrN1hHNWNkSDBzWEc1Y2JseDBjbVZ3YkdGalpWZHBkR2c2SUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEhaaGNpQmhjbWNnUFNCaGNtZDFiV1Z1ZEhOYklEQWdYVHRjYmx4dVhIUmNkQzh2SUUxaGEyVWdkR2hsSUdOb1lXNW5aWE1zSUhKbGNHeGhZMmx1WnlCbFlXTm9JR052Ym5SbGVIUWdaV3hsYldWdWRDQjNhWFJvSUhSb1pTQnVaWGNnWTI5dWRHVnVkRnh1WEhSY2RIUm9hWE11Wkc5dFRXRnVhWEFvSUdGeVozVnRaVzUwY3l3Z1puVnVZM1JwYjI0b0lHVnNaVzBnS1NCN1hHNWNkRngwWEhSaGNtY2dQU0IwYUdsekxuQmhjbVZ1ZEU1dlpHVTdYRzVjYmx4MFhIUmNkR3BSZFdWeWVTNWpiR1ZoYmtSaGRHRW9JR2RsZEVGc2JDZ2dkR2hwY3lBcElDazdYRzVjYmx4MFhIUmNkR2xtSUNnZ1lYSm5JQ2tnZTF4dVhIUmNkRngwWEhSaGNtY3VjbVZ3YkdGalpVTm9hV3hrS0NCbGJHVnRMQ0IwYUdseklDazdYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZTazdYRzVjYmx4MFhIUXZMeUJHYjNKalpTQnlaVzF2ZG1Gc0lHbG1JSFJvWlhKbElIZGhjeUJ1YnlCdVpYY2dZMjl1ZEdWdWRDQW9aUzVuTGl3Z1puSnZiU0JsYlhCMGVTQmhjbWQxYldWdWRITXBYRzVjZEZ4MGNtVjBkWEp1SUdGeVp5QW1KaUFvWVhKbkxteGxibWQwYUNCOGZDQmhjbWN1Ym05a1pWUjVjR1VwSUQ4Z2RHaHBjeUE2SUhSb2FYTXVjbVZ0YjNabEtDazdYRzVjZEgwc1hHNWNibHgwWkdWMFlXTm9PaUJtZFc1amRHbHZiaWdnYzJWc1pXTjBiM0lnS1NCN1hHNWNkRngwY21WMGRYSnVJSFJvYVhNdWNtVnRiM1psS0NCelpXeGxZM1J2Y2l3Z2RISjFaU0FwTzF4dVhIUjlMRnh1WEc1Y2RHUnZiVTFoYm1sd09pQm1kVzVqZEdsdmJpZ2dZWEpuY3l3Z1kyRnNiR0poWTJzZ0tTQjdYRzVjYmx4MFhIUXZMeUJHYkdGMGRHVnVJR0Z1ZVNCdVpYTjBaV1FnWVhKeVlYbHpYRzVjZEZ4MFlYSm5jeUE5SUdOdmJtTmhkQzVoY0hCc2VTZ2dXMTBzSUdGeVozTWdLVHRjYmx4dVhIUmNkSFpoY2lCbWNtRm5iV1Z1ZEN3Z1ptbHljM1FzSUhOamNtbHdkSE1zSUdoaGMxTmpjbWx3ZEhNc0lHNXZaR1VzSUdSdll5eGNibHgwWEhSY2RHa2dQU0F3TEZ4dVhIUmNkRngwYkNBOUlIUm9hWE11YkdWdVozUm9MRnh1WEhSY2RGeDBjMlYwSUQwZ2RHaHBjeXhjYmx4MFhIUmNkR2xPYjBOc2IyNWxJRDBnYkNBdElERXNYRzVjZEZ4MFhIUjJZV3gxWlNBOUlHRnlaM05iSURBZ1hTeGNibHgwWEhSY2RHbHpSblZ1WTNScGIyNGdQU0JxVVhWbGNua3VhWE5HZFc1amRHbHZiaWdnZG1Gc2RXVWdLVHRjYmx4dVhIUmNkQzh2SUZkbElHTmhiaWQwSUdOc2IyNWxUbTlrWlNCbWNtRm5iV1Z1ZEhNZ2RHaGhkQ0JqYjI1MFlXbHVJR05vWldOclpXUXNJR2x1SUZkbFlrdHBkRnh1WEhSY2RHbG1JQ2dnYVhOR2RXNWpkR2x2YmlCOGZGeHVYSFJjZEZ4MFhIUW9JR3dnUGlBeElDWW1JSFI1Y0dWdlppQjJZV3gxWlNBOVBUMGdYQ0p6ZEhKcGJtZGNJaUFtSmx4dVhIUmNkRngwWEhSY2RDRnpkWEJ3YjNKMExtTm9aV05yUTJ4dmJtVWdKaVlnY21Ob1pXTnJaV1F1ZEdWemRDZ2dkbUZzZFdVZ0tTQXBJQ2tnZTF4dVhIUmNkRngwY21WMGRYSnVJSFJvYVhNdVpXRmphQ2htZFc1amRHbHZiaWdnYVc1a1pYZ2dLU0I3WEc1Y2RGeDBYSFJjZEhaaGNpQnpaV3htSUQwZ2MyVjBMbVZ4S0NCcGJtUmxlQ0FwTzF4dVhIUmNkRngwWEhScFppQW9JR2x6Um5WdVkzUnBiMjRnS1NCN1hHNWNkRngwWEhSY2RGeDBZWEpuYzFzZ01DQmRJRDBnZG1Gc2RXVXVZMkZzYkNnZ2RHaHBjeXdnYVc1a1pYZ3NJSE5sYkdZdWFIUnRiQ2dwSUNrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBjMlZzWmk1a2IyMU5ZVzVwY0NnZ1lYSm5jeXdnWTJGc2JHSmhZMnNnS1R0Y2JseDBYSFJjZEgwcE8xeHVYSFJjZEgxY2JseHVYSFJjZEdsbUlDZ2diQ0FwSUh0Y2JseDBYSFJjZEdaeVlXZHRaVzUwSUQwZ2FsRjFaWEo1TG1KMWFXeGtSbkpoWjIxbGJuUW9JR0Z5WjNNc0lIUm9hWE5iSURBZ1hTNXZkMjVsY2tSdlkzVnRaVzUwTENCbVlXeHpaU3dnZEdocGN5QXBPMXh1WEhSY2RGeDBabWx5YzNRZ1BTQm1jbUZuYldWdWRDNW1hWEp6ZEVOb2FXeGtPMXh1WEc1Y2RGeDBYSFJwWmlBb0lHWnlZV2R0Wlc1MExtTm9hV3hrVG05a1pYTXViR1Z1WjNSb0lEMDlQU0F4SUNrZ2UxeHVYSFJjZEZ4MFhIUm1jbUZuYldWdWRDQTlJR1pwY25OME8xeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUnBaaUFvSUdacGNuTjBJQ2tnZTF4dVhIUmNkRngwWEhSelkzSnBjSFJ6SUQwZ2FsRjFaWEo1TG0xaGNDZ2daMlYwUVd4c0tDQm1jbUZuYldWdWRDd2dYQ0p6WTNKcGNIUmNJaUFwTENCa2FYTmhZbXhsVTJOeWFYQjBJQ2s3WEc1Y2RGeDBYSFJjZEdoaGMxTmpjbWx3ZEhNZ1BTQnpZM0pwY0hSekxteGxibWQwYUR0Y2JseHVYSFJjZEZ4MFhIUXZMeUJWYzJVZ2RHaGxJRzl5YVdkcGJtRnNJR1p5WVdkdFpXNTBJR1p2Y2lCMGFHVWdiR0Z6ZENCcGRHVnRJR2x1YzNSbFlXUWdiMllnZEdobElHWnBjbk4wSUdKbFkyRjFjMlVnYVhRZ1kyRnVJR1Z1WkNCMWNGeHVYSFJjZEZ4MFhIUXZMeUJpWldsdVp5QmxiWEIwYVdWa0lHbHVZMjl5Y21WamRHeDVJR2x1SUdObGNuUmhhVzRnYzJsMGRXRjBhVzl1Y3lBb0l6Z3dOekFwTGx4dVhIUmNkRngwWEhSbWIzSWdLQ0E3SUdrZ1BDQnNPeUJwS3lzZ0tTQjdYRzVjZEZ4MFhIUmNkRngwYm05a1pTQTlJR1p5WVdkdFpXNTBPMXh1WEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0JwSUNFOVBTQnBUbTlEYkc5dVpTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RHNXZaR1VnUFNCcVVYVmxjbmt1WTJ4dmJtVW9JRzV2WkdVc0lIUnlkV1VzSUhSeWRXVWdLVHRjYmx4dVhIUmNkRngwWEhSY2RGeDBMeThnUzJWbGNDQnlaV1psY21WdVkyVnpJSFJ2SUdOc2IyNWxaQ0J6WTNKcGNIUnpJR1p2Y2lCc1lYUmxjaUJ5WlhOMGIzSmhkR2x2Ymx4dVhIUmNkRngwWEhSY2RGeDBhV1lnS0NCb1lYTlRZM0pwY0hSeklDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUXZMeUJUZFhCd2IzSjBPaUJSZEZkbFlrdHBkRnh1WEhSY2RGeDBYSFJjZEZ4MFhIUXZMeUJxVVhWbGNua3ViV1Z5WjJVZ1ltVmpZWF
14938Z6WlNCd2RYTm9MbUZ3Y0d4NUtGOHNJR0Z5Y21GNWJHbHJaU2tnZEdoeWIzZHpYRzVjZEZ4MFhIUmNkRngwWEhSY2RHcFJkV1Z5ZVM1dFpYSm5aU2dnYzJOeWFYQjBjeXdnWjJWMFFXeHNLQ0J1YjJSbExDQmNJbk5qY21sd2RGd2lJQ2tnS1R0Y2JseDBYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwWEhSOVhHNWNibHgwWEhSY2RGeDBYSFJqWVd4c1ltRmpheTVqWVd4c0tDQjBhR2x6V3lCcElGMHNJRzV2WkdVc0lHa2dLVHRjYmx4MFhIUmNkRngwZlZ4dVhHNWNkRngwWEhSY2RHbG1JQ2dnYUdGelUyTnlhWEIwY3lBcElIdGNibHgwWEhSY2RGeDBYSFJrYjJNZ1BTQnpZM0pwY0hSeld5QnpZM0pwY0hSekxteGxibWQwYUNBdElERWdYUzV2ZDI1bGNrUnZZM1Z0Wlc1ME8xeHVYRzVjZEZ4MFhIUmNkRngwTHk4Z1VtVmxibUZpYkdVZ2MyTnlhWEIwYzF4dVhIUmNkRngwWEhSY2RHcFJkV1Z5ZVM1dFlYQW9JSE5qY21sd2RITXNJSEpsYzNSdmNtVlRZM0pwY0hRZ0tUdGNibHh1WEhSY2RGeDBYSFJjZEM4dklFVjJZV3gxWVhSbElHVjRaV04xZEdGaWJHVWdjMk55YVhCMGN5QnZiaUJtYVhKemRDQmtiMk4xYldWdWRDQnBibk5sY25ScGIyNWNibHgwWEhSY2RGeDBYSFJtYjNJZ0tDQnBJRDBnTURzZ2FTQThJR2hoYzFOamNtbHdkSE03SUdrckt5QXBJSHRjYmx4MFhIUmNkRngwWEhSY2RHNXZaR1VnUFNCelkzSnBjSFJ6V3lCcElGMDdYRzVjZEZ4MFhIUmNkRngwWEhScFppQW9JSEp6WTNKcGNIUlVlWEJsTG5SbGMzUW9JRzV2WkdVdWRIbHdaU0I4ZkNCY0lsd2lJQ2tnSmlaY2JseDBYSFJjZEZ4MFhIUmNkRngwSVdSaGRHRmZjSEpwZGk1aFkyTmxjM01vSUc1dlpHVXNJRndpWjJ4dlltRnNSWFpoYkZ3aUlDa2dKaVlnYWxGMVpYSjVMbU52Ym5SaGFXNXpLQ0JrYjJNc0lHNXZaR1VnS1NBcElIdGNibHh1WEhSY2RGeDBYSFJjZEZ4MFhIUnBaaUFvSUc1dlpHVXVjM0pqSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RDOHZJRTl3ZEdsdmJtRnNJRUZLUVZnZ1pHVndaVzVrWlc1amVTd2dZblYwSUhkdmJpZDBJSEoxYmlCelkzSnBjSFJ6SUdsbUlHNXZkQ0J3Y21WelpXNTBYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBhV1lnS0NCcVVYVmxjbmt1WDJWMllXeFZjbXdnS1NCN1hHNWNkRngwWEhSY2RGeDBYSFJjZEZ4MFhIUnFVWFZsY25rdVgyVjJZV3hWY213b0lHNXZaR1V1YzNKaklDazdYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEZ4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RHcFJkV1Z5ZVM1bmJHOWlZV3hGZG1Gc0tDQnViMlJsTG5SbGVIUkRiMjUwWlc1MExuSmxjR3hoWTJVb0lISmpiR1ZoYmxOamNtbHdkQ3dnWENKY0lpQXBJQ2s3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEgxY2JseDBYSFJjZEgxY2JseDBYSFI5WEc1Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3p0Y2JseDBmVnh1ZlNrN1hHNWNibXBSZFdWeWVTNWxZV05vS0h0Y2JseDBZWEJ3Wlc1a1ZHODZJRndpWVhCd1pXNWtYQ0lzWEc1Y2RIQnlaWEJsYm1SVWJ6b2dYQ0p3Y21Wd1pXNWtYQ0lzWEc1Y2RHbHVjMlZ5ZEVKbFptOXlaVG9nWENKaVpXWnZjbVZjSWl4Y2JseDBhVzV6WlhKMFFXWjBaWEk2SUZ3aVlXWjBaWEpjSWl4Y2JseDBjbVZ3YkdGalpVRnNiRG9nWENKeVpYQnNZV05sVjJsMGFGd2lYRzU5TENCbWRXNWpkR2x2YmlnZ2JtRnRaU3dnYjNKcFoybHVZV3dnS1NCN1hHNWNkR3BSZFdWeWVTNW1ibHNnYm1GdFpTQmRJRDBnWm5WdVkzUnBiMjRvSUhObGJHVmpkRzl5SUNrZ2UxeHVYSFJjZEhaaGNpQmxiR1Z0Y3l4Y2JseDBYSFJjZEhKbGRDQTlJRnRkTEZ4dVhIUmNkRngwYVc1elpYSjBJRDBnYWxGMVpYSjVLQ0J6Wld4bFkzUnZjaUFwTEZ4dVhIUmNkRngwYkdGemRDQTlJR2x1YzJWeWRDNXNaVzVuZEdnZ0xTQXhMRnh1WEhSY2RGeDBhU0E5SURBN1hHNWNibHgwWEhSbWIzSWdLQ0E3SUdrZ1BEMGdiR0Z6ZERzZ2FTc3JJQ2tnZTF4dVhIUmNkRngwWld4bGJYTWdQU0JwSUQwOVBTQnNZWE4wSUQ4Z2RHaHBjeUE2SUhSb2FYTXVZMnh2Ym1Vb0lIUnlkV1VnS1R0Y2JseDBYSFJjZEdwUmRXVnllU2dnYVc1elpYSjBXeUJwSUYwZ0tWc2diM0pwWjJsdVlXd2dYU2dnWld4bGJYTWdLVHRjYmx4dVhIUmNkRngwTHk4Z1UzVndjRzl5ZERvZ1VYUlhaV0pMYVhSY2JseDBYSFJjZEM4dklDNW5aWFFvS1NCaVpXTmhkWE5sSUhCMWMyZ3VZWEJ3Ykhrb1h5d2dZWEp5WVhsc2FXdGxLU0IwYUhKdmQzTmNibHgwWEhSY2RIQjFjMmd1WVhCd2JIa29JSEpsZEN3Z1pXeGxiWE11WjJWMEtDa2dLVHRjYmx4MFhIUjlYRzVjYmx4MFhIUnlaWFIxY200Z2RHaHBjeTV3ZFhOb1UzUmhZMnNvSUhKbGRDQXBPMXh1WEhSOU8xeHVmU2s3WEc1Y2JseHVkbUZ5SUdsbWNtRnRaU3hjYmx4MFpXeGxiV1JwYzNCc1lYa2dQU0I3ZlR0Y2JseHVMeW9xWEc0Z0tpQlNaWFJ5YVdWMlpTQjBhR1VnWVdOMGRXRnNJR1JwYzNCc1lYa2diMllnWVNCbGJHVnRaVzUwWEc0Z0tpQkFjR0Z5WVcwZ2UxTjBjbWx1WjMwZ2JtRnRaU0J1YjJSbFRtRnRaU0J2WmlCMGFHVWdaV3hsYldWdWRGeHVJQ29nUUhCaGNtRnRJSHRQWW1wbFkzUjlJR1J2WXlCRWIyTjFiV1Z1ZENCdlltcGxZM1JjYmlBcUwxeHVMeThnUTJGc2JHVmtJRzl1YkhrZ1puSnZiU0IzYVhSb2FXNGdaR1ZtWVhWc2RFUnBjM0JzWVhsY2JtWjFibU4wYVc5dUlHRmpkSFZoYkVScGMzQnNZWGtvSUc1aGJXVXNJR1J2WXlBcElIdGNibHgwZG1GeUlITjBlV3hsTEZ4dVhIUmNkR1ZzWlcwZ1BTQnFVWFZsY25rb0lHUnZZeTVqY21WaGRHVkZiR1Z0Wlc1MEtDQnVZVzFsSUNrZ0tTNWhjSEJsYm1SVWJ5Z2daRzlqTG1KdlpIa2dLU3hjYmx4dVhIUmNkQzh2SUdkbGRFUmxabUYxYkhSRGIyMXdkWFJsWkZOMGVXeGxJRzFwWjJoMElHSmxJSEpsYkdsaFlteDVJSFZ6WldRZ2IyNXNlU0J2YmlCaGRIUmhZMmhsWkNCbGJHVnRaVzUwWEc1Y2RGeDBaR2x6Y0d4aGVTQTlJSGRwYm1SdmR5NW5aWFJFWldaaGRXeDBRMjl0Y0hWMFpXUlRkSGxzWlNBbUppQW9JSE4wZVd4bElEMGdkMmx1Wkc5M0xtZGxkRVJsWm1GMWJIUkRiMjF3ZFhSbFpGTjBlV3hsS0NCbGJHVnRXeUF3SUYwZ0tTQXBJRDljYmx4dVhIUmNkRngwTHk4Z1ZYTmxJRzltSUhSb2FYTWdiV1YwYUc5a0lHbHpJR0VnZEdWdGNHOXlZWEo1SUdacGVDQW9iVzl5WlNCc2FXdGxJRzl3ZEdsdGFYcGhkR2x2YmlrZ2RXNTBhV3dnYzI5dFpYUm9hVzVuSUdKbGRIUmxjaUJqYjIxbGN5QmhiRzl1Wnl4Y2JseDBYSFJjZEM4dklITnBibU5sSUdsMElIZGhjeUJ5WlcxdmRtVmtJR1p5YjIwZ2MzQmxZMmxtYVdOaGRHbHZiaUJoYm1RZ2MzVndjRzl5ZEdWa0lHOXViSGtnYVc0Z1JrWmNibHgwWEhSY2RITjBlV3hsTG1ScGMzQnNZWGtnT2lCcVVYVmxjbmt1WTNOektDQmxiR1Z0V3lBd0lGMHNJRndpWkdsemNHeGhlVndpSUNrN1hHNWNibHgwTHk4Z1YyVWdaRzl1SjNRZ2FHRjJaU0JoYm5rZ1pHRjBZU0J6ZEc5eVpXUWdiMjRnZEdobElHVnNaVzFsYm5Rc1hHNWNkQzh2SUhOdklIVnpaU0JjSW1SbGRHRmphRndpSUcxbGRHaHZaQ0JoY3lCbVlYTjBJSGRoZVNCMGJ5Qm5aWFFnY21sa0lHOW1JSFJvWlNCbGJHVnRaVzUwWEc1Y2RHVnNaVzB1WkdWMFlXTm9LQ2s3WEc1Y2JseDBjbVYwZFhKdUlHUnBjM0JzWVhrN1hHNTlYRzVjYmk4cUtseHVJQ29nVkhKNUlIUnZJR1JsZEdWeWJXbHVaU0IwYUdVZ1pHVm1ZWFZzZENCa2FYTndiR0Y1SUhaaGJIVmxJRzltSUdGdUlHVnNaVzFsYm5SY2JpQXFJRUJ3WVhKaGJTQjdVM1J5YVc1bmZTQnViMlJsVG1GdFpWeHVJQ292WEc1bWRXNWpkR2x2YmlCa1pXWmhkV3gwUkdsemNHeGhlU2dnYm05a1pVNWhiV1VnS1NCN1hHNWNkSFpoY2lCa2IyTWdQU0JrYjJOMWJXVnVkQ3hjYmx4MFhIUmthWE53YkdGNUlEMGdaV3hsYldScGMzQnNZWGxiSUc1dlpHVk9ZVzFsSUYwN1hHNWNibHgwYVdZZ0tDQWhaR2x6Y0d4aGVTQXBJSHRjYmx4MFhIUmthWE53YkdGNUlEMGdZV04wZFdGc1JHbHpjR3hoZVNnZ2JtOWtaVTVoYldVc0lHUnZZeUFwTzF4dVhHNWNkRngwTHk4Z1NXWWdkR2hsSUhOcGJYQnNaU0IzWVhrZ1ptRnBiSE1zSUhKbFlXUWdabkp2YlNCcGJuTnBaR1VnWVc0Z2FXWnlZVzFsWEc1Y2RGeDBhV1lnS0NCa2FYTndiR0Y1SUQwOVBTQmNJbTV2Ym1WY0lpQjhmQ0FoWkdsemNHeGhlU0FwSUh0Y2JseHVYSFJjZEZ4MEx5OGdWWE5sSUhSb1pTQmhiSEpsWVdSNUxXTnlaV0YwWldRZ2FXWnlZVzFsSUdsbUlIQnZjM05wWW14bFhHNWNkRngwWEhScFpuSmhiV1VnUFNBb2FXWnlZVzFsSUh4OElHcFJkV1Z5ZVNnZ1hDSThhV1p5WVcxbElHWnlZVzFsWW05eVpHVnlQU2N3SnlCM2FXUjBhRDBuTUNjZ2FHVnBaMmgwUFNjd0p5OCtYQ0lnS1NrdVlYQndaVzVrVkc4b0lHUnZZeTVrYjJOMWJXVnVkRVZzWlcxbGJuUWdLVHRjYmx4dVhIUmNkRngwTHk4Z1FXeDNZWGx6SUhkeWFYUmxJR0VnYm1WM0lFaFVUVXdnYzJ0bGJHVjBiMjRnYzI4Z1YyVmlhMmwwSUdGdVpDQkdhWEpsWm05NElHUnZiaWQwSUdOb2IydGxJRzl1SUhKbGRYTmxYRzVjZEZ4MFhIUmtiMk1nUFNCcFpuSmhiV1ZiSURBZ1hTNWpiMjUwWlc1MFJHOWpkVzFsYm5RN1hHNWNibHgwWEhSY2RDOHZJRk4xY0hCdmNuUTZJRWxGWEc1Y2RGeDBYSFJrYjJNdWQzSnBkR1VvS1R0Y2JseDBYSFJjZEdSdll5NWpiRzl6WlNncE8xeHVYRzVjZEZ4MFhIUmthWE53YkdGNUlEMGdZV04wZFdGc1JHbHpjR3hoZVNnZ2JtOWtaVTVoYldVc0lHUnZZeUFwTzF4dVhIUmNkRngwYVdaeVlXMWxMbVJsZEdGamFDZ3BPMXh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRk4wYjNKbElIUm9aU0JqYjNKeVpXTjBJR1JsWm1GMWJIUWdaR2x6Y0d4aGVWeHVYSFJjZEdWc1pXMWthWE53Y
14938kdGNVd5QnViMlJsVG1GdFpTQmRJRDBnWkdsemNHeGhlVHRjYmx4MGZWeHVYRzVjZEhKbGRIVnliaUJrYVhOd2JHRjVPMXh1ZlZ4dWRtRnlJSEp0WVhKbmFXNGdQU0FvTDE1dFlYSm5hVzR2S1R0Y2JseHVkbUZ5SUhKdWRXMXViMjV3ZUNBOUlHNWxkeUJTWldkRmVIQW9JRndpWGloY0lpQXJJSEJ1ZFcwZ0t5QmNJaWtvUHlGd2VDbGJZUzE2SlYwckpGd2lMQ0JjSW1sY0lpQXBPMXh1WEc1MllYSWdaMlYwVTNSNWJHVnpJRDBnWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RGeDBMeThnVTNWd2NHOXlkRG9nU1VVOFBURXhLeXdnUm1seVpXWnZlRHc5TXpBcklDZ2pNVFV3T1Rnc0lDTXhOREUxTUNsY2JseDBYSFF2THlCSlJTQjBhSEp2ZDNNZ2IyNGdaV3hsYldWdWRITWdZM0psWVhSbFpDQnBiaUJ3YjNCMWNITmNibHgwWEhRdkx5QkdSaUJ0WldGdWQyaHBiR1VnZEdoeWIzZHpJRzl1SUdaeVlXMWxJR1ZzWlcxbGJuUnpJSFJvY205MVoyZ2dYQ0prWldaaGRXeDBWbWxsZHk1blpYUkRiMjF3ZFhSbFpGTjBlV3hsWENKY2JseDBYSFJwWmlBb0lHVnNaVzB1YjNkdVpYSkViMk4xYldWdWRDNWtaV1poZFd4MFZtbGxkeTV2Y0dWdVpYSWdLU0I3WEc1Y2RGeDBYSFJ5WlhSMWNtNGdaV3hsYlM1dmQyNWxja1J2WTNWdFpXNTBMbVJsWm1GMWJIUldhV1YzTG1kbGRFTnZiWEIxZEdWa1UzUjViR1VvSUdWc1pXMHNJRzUxYkd3Z0tUdGNibHgwWEhSOVhHNWNibHgwWEhSeVpYUjFjbTRnZDJsdVpHOTNMbWRsZEVOdmJYQjFkR1ZrVTNSNWJHVW9JR1ZzWlcwc0lHNTFiR3dnS1R0Y2JseDBmVHRjYmx4dVhHNWNibVoxYm1OMGFXOXVJR04xY2tOVFV5Z2daV3hsYlN3Z2JtRnRaU3dnWTI5dGNIVjBaV1FnS1NCN1hHNWNkSFpoY2lCM2FXUjBhQ3dnYldsdVYybGtkR2dzSUcxaGVGZHBaSFJvTENCeVpYUXNYRzVjZEZ4MGMzUjViR1VnUFNCbGJHVnRMbk4wZVd4bE8xeHVYRzVjZEdOdmJYQjFkR1ZrSUQwZ1kyOXRjSFYwWldRZ2ZId2daMlYwVTNSNWJHVnpLQ0JsYkdWdElDazdYRzVjYmx4MEx5OGdVM1Z3Y0c5eWREb2dTVVU1WEc1Y2RDOHZJR2RsZEZCeWIzQmxjblI1Vm1Gc2RXVWdhWE1nYjI1c2VTQnVaV1ZrWldRZ1ptOXlJQzVqYzNNb0oyWnBiSFJsY2ljcElDZ2pNVEkxTXpjcFhHNWNkR2xtSUNnZ1kyOXRjSFYwWldRZ0tTQjdYRzVjZEZ4MGNtVjBJRDBnWTI5dGNIVjBaV1F1WjJWMFVISnZjR1Z5ZEhsV1lXeDFaU2dnYm1GdFpTQXBJSHg4SUdOdmJYQjFkR1ZrV3lCdVlXMWxJRjA3WEc1Y2RIMWNibHh1WEhScFppQW9JR052YlhCMWRHVmtJQ2tnZTF4dVhHNWNkRngwYVdZZ0tDQnlaWFFnUFQwOUlGd2lYQ0lnSmlZZ0lXcFJkV1Z5ZVM1amIyNTBZV2x1Y3lnZ1pXeGxiUzV2ZDI1bGNrUnZZM1Z0Wlc1MExDQmxiR1Z0SUNrZ0tTQjdYRzVjZEZ4MFhIUnlaWFFnUFNCcVVYVmxjbmt1YzNSNWJHVW9JR1ZzWlcwc0lHNWhiV1VnS1R0Y2JseDBYSFI5WEc1Y2JseDBYSFF2THlCVGRYQndiM0owT2lCcFQxTWdQQ0EyWEc1Y2RGeDBMeThnUVNCMGNtbGlkWFJsSUhSdklIUm9aU0JjSW1GM1pYTnZiV1VnYUdGamF5QmllU0JFWldGdUlFVmtkMkZ5WkhOY0lseHVYSFJjZEM4dklHbFBVeUE4SURZZ0tHRjBJR3hsWVhOMEtTQnlaWFIxY201eklIQmxjbU5sYm5SaFoyVWdabTl5SUdFZ2JHRnlaMlZ5SUhObGRDQnZaaUIyWVd4MVpYTXNJR0oxZENCM2FXUjBhQ0J6WldWdGN5QjBieUJpWlNCeVpXeHBZV0pzZVNCd2FYaGxiSE5jYmx4MFhIUXZMeUIwYUdseklHbHpJR0ZuWVdsdWMzUWdkR2hsSUVOVFUwOU5JR1J5WVdaMElITndaV002SUdoMGRIQTZMeTlrWlhZdWR6TXViM0puTDJOemMzZG5MMk56YzI5dEx5TnlaWE52YkhabFpDMTJZV3gxWlhOY2JseDBYSFJwWmlBb0lISnVkVzF1YjI1d2VDNTBaWE4wS0NCeVpYUWdLU0FtSmlCeWJXRnlaMmx1TG5SbGMzUW9JRzVoYldVZ0tTQXBJSHRjYmx4dVhIUmNkRngwTHk4Z1VtVnRaVzFpWlhJZ2RHaGxJRzl5YVdkcGJtRnNJSFpoYkhWbGMxeHVYSFJjZEZ4MGQybGtkR2dnUFNCemRIbHNaUzUzYVdSMGFEdGNibHgwWEhSY2RHMXBibGRwWkhSb0lEMGdjM1I1YkdVdWJXbHVWMmxrZEdnN1hHNWNkRngwWEhSdFlYaFhhV1IwYUNBOUlITjBlV3hsTG0xaGVGZHBaSFJvTzF4dVhHNWNkRngwWEhRdkx5QlFkWFFnYVc0Z2RHaGxJRzVsZHlCMllXeDFaWE1nZEc4Z1oyVjBJR0VnWTI5dGNIVjBaV1FnZG1Gc2RXVWdiM1YwWEc1Y2RGeDBYSFJ6ZEhsc1pTNXRhVzVYYVdSMGFDQTlJSE4wZVd4bExtMWhlRmRwWkhSb0lEMGdjM1I1YkdVdWQybGtkR2dnUFNCeVpYUTdYRzVjZEZ4MFhIUnlaWFFnUFNCamIyMXdkWFJsWkM1M2FXUjBhRHRjYmx4dVhIUmNkRngwTHk4Z1VtVjJaWEowSUhSb1pTQmphR0Z1WjJWa0lIWmhiSFZsYzF4dVhIUmNkRngwYzNSNWJHVXVkMmxrZEdnZ1BTQjNhV1IwYUR0Y2JseDBYSFJjZEhOMGVXeGxMbTFwYmxkcFpIUm9JRDBnYldsdVYybGtkR2c3WEc1Y2RGeDBYSFJ6ZEhsc1pTNXRZWGhYYVdSMGFDQTlJRzFoZUZkcFpIUm9PMXh1WEhSY2RIMWNibHgwZlZ4dVhHNWNkSEpsZEhWeWJpQnlaWFFnSVQwOUlIVnVaR1ZtYVc1bFpDQS9YRzVjZEZ4MEx5OGdVM1Z3Y0c5eWREb2dTVVZjYmx4MFhIUXZMeUJKUlNCeVpYUjFjbTV6SUhwSmJtUmxlQ0IyWVd4MVpTQmhjeUJoYmlCcGJuUmxaMlZ5TGx4dVhIUmNkSEpsZENBcklGd2lYQ0lnT2x4dVhIUmNkSEpsZER0Y2JuMWNibHh1WEc1bWRXNWpkR2x2YmlCaFpHUkhaWFJJYjI5clNXWW9JR052Ym1ScGRHbHZia1p1TENCb2IyOXJSbTRnS1NCN1hHNWNkQzh2SUVSbFptbHVaU0IwYUdVZ2FHOXZheXdnZDJVbmJHd2dZMmhsWTJzZ2IyNGdkR2hsSUdacGNuTjBJSEoxYmlCcFppQnBkQ2R6SUhKbFlXeHNlU0J1WldWa1pXUXVYRzVjZEhKbGRIVnliaUI3WEc1Y2RGeDBaMlYwT2lCbWRXNWpkR2x2YmlncElIdGNibHgwWEhSY2RHbG1JQ2dnWTI5dVpHbDBhVzl1Um00b0tTQXBJSHRjYmx4MFhIUmNkRngwTHk4Z1NHOXZheUJ1YjNRZ2JtVmxaR1ZrSUNodmNpQnBkQ2R6SUc1dmRDQndiM056YVdKc1pTQjBieUIxYzJVZ2FYUWdaSFZsWEc1Y2RGeDBYSFJjZEM4dklIUnZJRzFwYzNOcGJtY2daR1Z3Wlc1a1pXNWplU2tzSUhKbGJXOTJaU0JwZEM1Y2JseDBYSFJjZEZ4MFpHVnNaWFJsSUhSb2FYTXVaMlYwTzF4dVhIUmNkRngwWEhSeVpYUjFjbTQ3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEM4dklFaHZiMnNnYm1WbFpHVmtPeUJ5WldSbFptbHVaU0JwZENCemJ5QjBhR0YwSUhSb1pTQnpkWEJ3YjNKMElIUmxjM1FnYVhNZ2JtOTBJR1Y0WldOMWRHVmtJR0ZuWVdsdUxseHVYSFJjZEZ4MGNtVjBkWEp1SUNoMGFHbHpMbWRsZENBOUlHaHZiMnRHYmlrdVlYQndiSGtvSUhSb2FYTXNJR0Z5WjNWdFpXNTBjeUFwTzF4dVhIUmNkSDFjYmx4MGZUdGNibjFjYmx4dVhHNG9ablZ1WTNScGIyNG9LU0I3WEc1Y2RIWmhjaUJ3YVhobGJGQnZjMmwwYVc5dV
14938ZtRnNMQ0JpYjNoVGFYcHBibWRTWld4cFlXSnNaVlpoYkN4Y2JseDBYSFJrYjJORmJHVnRJRDBnWkc5amRXMWxiblF1Wkc5amRXMWxiblJGYkdWdFpXNTBMRnh1WEhSY2RHTnZiblJoYVc1bGNpQTlJR1J2WTNWdFpXNTBMbU55WldGMFpVVnNaVzFsYm5Rb0lGd2laR2wyWENJZ0tTeGNibHgwWEhSa2FYWWdQU0JrYjJOMWJXVnVkQzVqY21WaGRHVkZiR1Z0Wlc1MEtDQmNJbVJwZGx3aUlDazdYRzVjYmx4MGFXWWdLQ0FoWkdsMkxuTjBlV3hsSUNrZ2UxeHVYSFJjZEhKbGRIVnlianRjYmx4MGZWeHVYRzVjZEM4dklGTjFjSEJ2Y25RNklFbEZPUzB4TVN0Y2JseDBMeThnVTNSNWJHVWdiMllnWTJ4dmJtVmtJR1ZzWlcxbGJuUWdZV1ptWldOMGN5QnpiM1Z5WTJVZ1pXeGxiV1Z1ZENCamJHOXVaV1FnS0NNNE9UQTRLVnh1WEhSa2FYWXVjM1I1YkdVdVltRmphMmR5YjNWdVpFTnNhWEFnUFNCY0ltTnZiblJsYm5RdFltOTRYQ0k3WEc1Y2RHUnBkaTVqYkc5dVpVNXZaR1VvSUhSeWRXVWdLUzV6ZEhsc1pTNWlZV05yWjNKdmRXNWtRMnhwY0NBOUlGd2lYQ0k3WEc1Y2RITjFjSEJ2Y25RdVkyeGxZWEpEYkc5dVpWTjBlV3hsSUQwZ1pHbDJMbk4wZVd4bExtSmhZMnRuY205MWJtUkRiR2x3SUQwOVBTQmNJbU52Ym5SbGJuUXRZbTk0WENJN1hHNWNibHgwWTI5dWRHRnBibVZ5TG5OMGVXeGxMbU56YzFSbGVIUWdQU0JjSW1KdmNtUmxjam93TzNkcFpIUm9PakE3YUdWcFoyaDBPakE3ZEc5d09qQTdiR1ZtZERvdE9UazVPWEI0TzIxaGNtZHBiaTEwYjNBNk1YQjRPMXdpSUN0Y2JseDBYSFJjSW5CdmMybDBhVzl1T21GaWMyOXNkWFJsWENJN1hHNWNkR052Ym5SaGFXNWxjaTVoY0hCbGJtUkRhR2xzWkNnZ1pHbDJJQ2s3WEc1Y2JseDBMeThnUlhobFkzVjBhVzVuSUdKdmRHZ2djR2w0Wld4UWIzTnBkR2x2YmlBbUlHSnZlRk5wZW1sdVoxSmxiR2xoWW14bElIUmxjM1J6SUhKbGNYVnBjbVVnYjI1c2VTQnZibVVnYkdGNWIzVjBYRzVjZEM4dklITnZJSFJvWlhrbmNtVWdaWGhsWTNWMFpXUWdZWFFnZEdobElITmhiV1VnZEdsdFpTQjBieUJ6WVhabElIUm9aU0J6WldOdmJtUWdZMjl0Y0hWMFlYUnBiMjR1WEc1Y2RHWjFibU4wYVc5dUlHTnZiWEIxZEdWUWFYaGxiRkJ2YzJsMGFXOXVRVzVrUW05NFUybDZhVzVuVW1Wc2FXRmliR1VvS1NCN1hHNWNkRngwWkdsMkxuTjBlV3hsTG1OemMxUmxlSFFnUFZ4dVhIUmNkRngwTHk4Z1UzVndjRzl5ZERvZ1JtbHlaV1p2ZUR3eU9Td2dRVzVrY205cFpDQXlMak5jYmx4MFhIUmNkQzh2SUZabGJtUnZjaTF3Y21WbWFYZ2dZbTk0TFhOcGVtbHVaMXh1WEhSY2RGeDBYQ0l0ZDJWaWEybDBMV0p2ZUMxemFYcHBibWM2WW05eVpHVnlMV0p2ZURzdGJXOTZMV0p2ZUMxemFYcHBibWM2WW05eVpHVnlMV0p2ZUR0Y0lpQXJYRzVjZEZ4MFhIUmNJbUp2ZUMxemFYcHBibWM2WW05eVpHVnlMV0p2ZUR0a2FYTndiR0Y1T21Kc2IyTnJPMjFoY21kcGJpMTBiM0E2TVNVN2RHOXdPakVsTzF3aUlDdGNibHgwWEhSY2RGd2lZbTl5WkdWeU9qRndlRHR3WVdSa2FXNW5PakZ3ZUR0M2FXUjBhRG8wY0hnN2NHOXphWFJwYjI0NllXSnpiMngxZEdWY0lqdGNibHgwWEhSa2FYWXVhVzV1WlhKSVZFMU1JRDBnWENKY0lqdGNibHgwWEhSa2IyTkZiR1Z0TG1Gd2NHVnVaRU5vYVd4a0tDQmpiMjUwWVdsdVpYSWdLVHRjYmx4dVhIUmNkSFpoY2lCa2FYWlRkSGxzWlNBOUlIZHBibVJ2ZHk1blpYUkRiMjF3ZFhSbFpGTjBlV3hsS0NCa2FYWXNJRzUxYkd3Z0tUdGNibHgwWEhSd2FYaGxiRkJ2YzJsMGFXOXVWbUZzSUQwZ1pHbDJVM1I1YkdVdWRHOXdJQ0U5UFNCY0lqRWxYQ0k3WEc1Y2RGeDBZbTk0VTJsNmFXNW5VbVZzYVdGaWJHVldZV3dnUFNCa2FYWlRkSGxzWlM1M2FXUjBhQ0E5UFQwZ1hDSTBjSGhjSWp0Y2JseHVYSFJjZEdSdlkwVnNaVzB1Y21WdGIzWmxRMmhwYkdRb0lHTnZiblJoYVc1bGNpQXBPMXh1WEhSOVhHNWNibHgwTHk4Z1UzVndjRzl5ZERvZ2JtOWtaUzVxY3lCcWMyUnZiVnh1WEhRdkx5QkViMjRuZENCaGMzTjFiV1VnZEdoaGRDQm5aWFJEYjIxd2RYUmxaRk4wZVd4bElHbHpJR0VnY0hKdmNHVnlkSGtnYjJZZ2RHaGxJR2RzYjJKaGJDQnZZbXBsWTNSY2JseDBhV1lnS0NCM2FXNWtiM2N1WjJWMFEyOXRjSFYwWldSVGRIbHNaU0FwSUh0Y2JseDBYSFJxVVhWbGNua3VaWGgwWlc1a0tDQnpkWEJ3YjNKMExDQjdYRzVjZEZ4MFhIUndhWGhsYkZCdmMybDBhVzl1T2lCbWRXNWpkR2x2YmlncElIdGNibHh1WEhSY2RGeDBYSFF2THlCVWFHbHpJSFJsYzNRZ2FYTWdaWGhsWTNWMFpXUWdiMjVzZVNCdmJtTmxJR0oxZENCM1pTQnpkR2xzYkNCa2J5QnRaVzF2YVhwcGJtZGNibHgwWEhSY2RGeDBMeThnYzJsdVkyVWdkMlVnWTJGdUlIVnpaU0IwYUdVZ1ltOTRVMmw2YVc1blVtVnNhV0ZpYkdVZ2NISmxMV052YlhCMWRHbHVaeTVjYmx4MFhIUmNkRngwTHk4Z1RtOGdibVZsWkNCMGJ5QmphR1ZqYXlCcFppQjBhR1VnZEdWemRDQjNZWE1nWVd4eVpXRmtlU0J3WlhKbWIzSnRaV1FzSUhSb2IzVm5hQzVjYmx4MFhIUmNkRngwWTI5dGNIVjBaVkJwZUdWc1VHOXphWFJwYjI1QmJtUkNiM2hUYVhwcGJtZFNaV3hwWVdKc1pTZ3BPMXh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdjR2w0Wld4UWIzTnBkR2x2YmxaaGJEdGNibHgwWEhSY2RIMHNYRzVjZEZ4MFhIUmliM2hUYVhwcGJtZFNaV3hwWVdKc1pUb2dablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBYSFJjZEdsbUlDZ2dZbTk0VTJsNmFXNW5VbVZzYVdGaWJHVldZV3dnUFQwZ2JuVnNiQ0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmpiMjF3ZFhSbFVHbDRaV3hRYjNOcGRHbHZia0Z1WkVKdmVGTnBlbWx1WjFKbGJHbGhZbXhsS0NrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBjbVYwZFhKdUlHSnZlRk5wZW1sdVoxSmxiR2xoWW14bFZtRnNPMXh1WEhSY2RGeDBmU3hjYmx4MFhIUmNkSEpsYkdsaFlteGxUV0Z5WjJsdVVtbG5hSFE2SUdaMWJtTjBhVzl1S0NrZ2UxeHVYRzVjZEZ4MFhIUmNkQzh2SUZOMWNIQnZjblE2SUVGdVpISnZhV1FnTWk0elhHNWNkRngwWEhSY2RDOHZJRU5vWldOcklHbG1JR1JwZGlCM2FYUm9JR1Y0Y0d4cFkybDBJSGRwWkhSb0lHRnVaQ0J1YnlCdFlYSm5hVzR0Y21sbmFIUWdhVzVqYjNKeVpXTjBiSGxjYmx4MFhIUmNkRngwTHk4Z1oyVjBjeUJqYjIxd2RYUmxaQ0J0WVhKbmFXNHRjbWxuYUhRZ1ltRnpaV1FnYjI0Z2QybGtkR2dnYjJZZ1kyOXVkR0ZwYm1WeUxpQW9Jek16TXpNcFhHNWNkRngwWEhSY2RDOHZJRmRsWWt0cGRDQkNkV2NnTVRNek5ETWdMU0JuWlhSRGIyMXdkWFJsWkZOMGVXeGxJSEpsZEhWeWJuTWdkM0p2Ym1jZ2RtRnNkV1VnWm05eUlHMWhjbWRwYmkxeWFXZG9kRnh1WEhSY2RGeDBYSFF2THlCVWFHbHpJSE4xY0hCdmNuUWdablZ1WTNScGIyNGdhWE1nYjI1c2VTQmxlR1ZqZ
14938FhSbFpDQnZibU5sSUhOdklHNXZJRzFsYlc5cGVtbHVaeUJwY3lCdVpXVmtaV1F1WEc1Y2RGeDBYSFJjZEhaaGNpQnlaWFFzWEc1Y2RGeDBYSFJjZEZ4MGJXRnlaMmx1UkdsMklEMGdaR2wyTG1Gd2NHVnVaRU5vYVd4a0tDQmtiMk4xYldWdWRDNWpjbVZoZEdWRmJHVnRaVzUwS0NCY0ltUnBkbHdpSUNrZ0tUdGNibHh1WEhSY2RGeDBYSFF2THlCU1pYTmxkQ0JEVTFNNklHSnZlQzF6YVhwcGJtYzdJR1JwYzNCc1lYazdJRzFoY21kcGJqc2dZbTl5WkdWeU95QndZV1JrYVc1blhHNWNkRngwWEhSY2RHMWhjbWRwYmtScGRpNXpkSGxzWlM1amMzTlVaWGgwSUQwZ1pHbDJMbk4wZVd4bExtTnpjMVJsZUhRZ1BWeHVYSFJjZEZ4MFhIUmNkQzh2SUZOMWNIQnZjblE2SUVacGNtVm1iM2c4TWprc0lFRnVaSEp2YVdRZ01pNHpYRzVjZEZ4MFhIUmNkRngwTHk4Z1ZtVnVaRzl5TFhCeVpXWnBlQ0JpYjNndGMybDZhVzVuWEc1Y2RGeDBYSFJjZEZ4MFhDSXRkMlZpYTJsMExXSnZlQzF6YVhwcGJtYzZZMjl1ZEdWdWRDMWliM2c3TFcxdmVpMWliM2d0YzJsNmFXNW5PbU52Ym5SbGJuUXRZbTk0TzF3aUlDdGNibHgwWEhSY2RGeDBYSFJjSW1KdmVDMXphWHBwYm1jNlkyOXVkR1Z1ZEMxaWIzZzdaR2x6Y0d4aGVUcGliRzlqYXp0dFlYSm5hVzQ2TUR0aWIzSmtaWEk2TUR0d1lXUmthVzVuT2pCY0lqdGNibHgwWEhSY2RGeDBiV0Z5WjJsdVJHbDJMbk4wZVd4bExtMWhjbWRwYmxKcFoyaDBJRDBnYldGeVoybHVSR2wyTG5OMGVXeGxMbmRwWkhSb0lEMGdYQ0l3WENJN1hHNWNkRngwWEhSY2RHUnBkaTV6ZEhsc1pTNTNhV1IwYUNBOUlGd2lNWEI0WENJN1hHNWNkRngwWEhSY2RHUnZZMFZzWlcwdVlYQndaVzVrUTJocGJHUW9JR052Ym5SaGFXNWxjaUFwTzF4dVhHNWNkRngwWEhSY2RISmxkQ0E5SUNGd1lYSnpaVVpzYjJGMEtDQjNhVzVrYjNjdVoyVjBRMjl0Y0hWMFpXUlRkSGxzWlNnZ2JXRnlaMmx1UkdsMkxDQnVkV3hzSUNrdWJXRnlaMmx1VW1sbmFIUWdLVHRjYmx4dVhIUmNkRngwWEhSa2IyTkZiR1Z0TG5KbGJXOTJaVU5vYVd4a0tDQmpiMjUwWVdsdVpYSWdLVHRjYmx4MFhIUmNkRngwWkdsMkxuSmxiVzkyWlVOb2FXeGtLQ0J0WVhKbmFXNUVhWFlnS1R0Y2JseHVYSFJjZEZ4MFhIUnlaWFIxY200Z2NtVjBPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMHBPMXh1WEhSOVhHNTlLU2dwTzF4dVhHNWNiaTh2SUVFZ2JXVjBhRzlrSUdadmNpQnhkV2xqYTJ4NUlITjNZWEJ3YVc1bklHbHVMMjkxZENCRFUxTWdjSEp2Y0dWeWRHbGxjeUIwYnlCblpYUWdZMjl5Y21WamRDQmpZV3hqZFd4aGRHbHZibk11WEc1cVVYVmxjbmt1YzNkaGNDQTlJR1oxYm1OMGFXOXVLQ0JsYkdWdExDQnZjSFJwYjI1ekxDQmpZV3hzWW1GamF5d2dZWEpuY3lBcElIdGNibHgwZG1GeUlISmxkQ3dnYm1GdFpTeGNibHgwWEhSdmJHUWdQU0I3ZlR0Y2JseHVYSFF2THlCU1pXMWxiV0psY2lCMGFHVWdiMnhrSUhaaGJIVmxjeXdnWVc1a0lHbHVjMlZ5ZENCMGFHVWdibVYzSUc5dVpYTmNibHgwWm05eUlDZ2dibUZ0WlNCcGJpQnZjSFJwYjI1eklDa2dlMXh1WEhSY2RHOXNaRnNnYm1GdFpTQmRJRDBnWld4bGJTNXpkSGxzWlZzZ2JtRnRaU0JkTzF4dVhIUmNkR1ZzWlcwdWMzUjViR1ZiSUc1aGJXVWdYU0E5SUc5d2RHbHZibk5iSUc1aGJXVWdYVHRjYmx4MGZWeHVYRzVjZEhKbGRDQTlJR05oYkd4aVlXTnJMbUZ3Y0d4NUtDQmxiR1Z0TENCaGNtZHpJSHg4SUZ0ZElDazdYRzVjYmx4MEx5OGdVbVYyWlhKMElIUm9aU0J2YkdRZ2RtRnNkV1Z6WEc1Y2RHWnZjaUFvSUc1aGJXVWdhVzRnYjNCMGFXOXVjeUFwSUh0Y2JseDBYSFJsYkdWdExuTjBlV3hsV3lCdVlXMWxJRjBnUFNCdmJHUmJJRzVoYldVZ1hUdGNibHgwZlZ4dVhHNWNkSEpsZEhWeWJpQnlaWFE3WEc1OU8xeHVYRzVjYm5aaGNseHVYSFF2THlCVGQyRndjR0ZpYkdVZ2FXWWdaR2x6Y0d4aGVTQnBjeUJ1YjI1bElHOXlJSE4wWVhKMGN5QjNhWFJvSUhSaFlteGxJR1Y0WTJWd2RDQmNJblJoWW14bFhDSXNJRndpZEdGaWJHVXRZMlZzYkZ3aUxDQnZjaUJjSW5SaFlteGxMV05oY0hScGIyNWNJbHh1WEhRdkx5QlRaV1VnYUdWeVpTQm1iM0lnWkdsemNHeGhlU0IyWVd4MVpYTTZJR2gwZEhCek9pOHZaR1YyWld4dmNHVnlMbTF2ZW1sc2JHRXViM0puTDJWdUxWVlRMMlJ2WTNNdlExTlRMMlJwYzNCc1lYbGNibHgwY21ScGMzQnNZWGx6ZDJGd0lEMGdMMTRvYm05dVpYeDBZV0pzWlNnL0lTMWpXMlZoWFNrdUt5a3ZMRnh1WEhSeWJuVnRjM0JzYVhRZ1BTQnVaWGNnVW1WblJYaHdLQ0JjSWw0b1hDSWdLeUJ3Ym5WdElDc2dYQ0lwS0M0cUtTUmNJaXdnWENKcFhDSWdLU3hjYmx4MGNuSmxiRTUxYlNBOUlHNWxkeUJTWldkRmVIQW9JRndpWGloYkt5MWRLVDBvWENJZ0t5QndiblZ0SUNzZ1hDSXBYQ0lzSUZ3aWFWd2lJQ2tzWEc1Y2JseDBZM056VTJodmR5QTlJSHNnY0c5emFYUnBiMjQ2SUZ3aVlXSnpiMngxZEdWY0lpd2dkbWx6YVdKcGJHbDBlVG9nWENKb2FXUmtaVzVjSWl3Z1pHbHpjR3hoZVRvZ1hDSmliRzlqYTF3aUlIMHNYRzVjZEdOemMwNXZjbTFoYkZSeVlXNXpabTl5YlNBOUlIdGNibHgwWEhSc1pYUjBaWEpUY0dGamFXNW5PaUJjSWpCY0lpeGNibHgwWEhSbWIyNTBWMlZwWjJoME9pQmNJalF3TUZ3aVhHNWNkSDBzWEc1Y2JseDBZM056VUhKbFptbDRaWE1nUFNCYklGd2lWMlZpYTJsMFhDSXNJRndpVDF3aUxDQmNJazF2ZWx3aUxDQmNJbTF6WENJZ1hUdGNibHh1THk4Z1VtVjBkWEp1SUdFZ1kzTnpJSEJ5YjNCbGNuUjVJRzFoY0hCbFpDQjBieUJoSUhCdmRHVnVkR2xoYkd4NUlIWmxibVJ2Y2lCd2NtVm1hWGhsWkNCd2NtOXdaWEowZVZ4dVpuVnVZM1JwYjI0Z2RtVnVaRzl5VUhKdmNFNWhiV1VvSUhOMGVXeGxMQ0J1WVcxbElDa2dlMXh1WEc1Y2RDOHZJRk5vYjNKMFkzVjBJR1p2Y2lCdVlXMWxjeUIwYUdGMElHRnlaU0J1YjNRZ2RtVnVaRzl5SUhCeVpXWnBlR1ZrWEc1Y2RHbG1JQ2dnYm1GdFpTQnBiaUJ6ZEhsc1pTQXBJSHRjYmx4MFhIUnlaWFIxY200Z2JtRnRaVHRjYmx4MGZWeHVYRzVjZEM4dklFTm9aV05ySUdadmNpQjJaVzVrYjNJZ2NISmxabWw0WldRZ2JtRnRaWE5jYmx4MGRtRnlJR05oY0U1aGJXVWdQU0J1WVcxbFd6QmRMblJ2VlhCd1pYSkRZWE5sS0NrZ0t5QnVZVzFsTG5Oc2FXTmxLREVwTEZ4dVhIUmNkRzl5YVdkT1lXMWxJRDBnYm1GdFpTeGNibHgwWEhScElEMGdZM056VUhKbFptbDRaWE11YkdWdVozUm9PMXh1WEc1Y2RIZG9hV3hsSUNnZ2FTMHRJQ2tnZTF4dVhIUmNkRzVoYldVZ1BTQmpjM05RY21WbWFYaGxjMXNnYVNCZElDc2dZMkZ3VG1GdFpUdGNibHgwWEhScFppQW9JRzVoYldVZ2FXNGdjM1I1YkdVZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200Z2JtRnRaVHRjYmx4MFhIUjlYRzVjZEgxY2JseHVYSFJ5WlhSMWNtNGdiM0pwWjA1aGJXVTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlITmxkRkJ2YzJsMGFYWmxUblZ0WW1WeUtDQmxiR1Z0TENCMllXeDFaU3dnYzNWaWRISmhZM1FnS1NCN1hHNWNkSFpoY2lCdFlYUmphR1Z6SUQwZ2NtNTFiWE53YkdsMExtVjRaV01vSUhaaGJIVmxJQ2s3WEc1Y2RISmxkSFZ5YmlCdFlYUmphR1Z6SUQ5Y2JseDBYSFF2THlCSGRXRnlaQ0JoWjJGcGJuTjBJSFZ1WkdWbWFXNWxaQ0JjSW5OMVluUnlZV04wWENJc0lHVXVaeTRzSUhkb1pXNGdkWE5sWkNCaGN5QnBiaUJqYzNOSWIyOXJjMXh1WEhSY2RFMWhkR2d1YldGNEtDQXdMQ0J0WVhSamFHVnpXeUF4SUYwZ0xTQW9JSE4xWW5SeVlXTjBJSHg4SURBZ0tTQXBJQ3NnS0NCdFlYUmphR1Z6V3lBeUlGMGdmSHdnWENKd2VGd2lJQ2tnT2x4dVhIUmNkSFpoYkhWbE8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCaGRXZHRaVzUwVjJsa2RHaFBja2hsYVdkb2RDZ2daV3hsYlN3Z2JtRnRaU3dnWlhoMGNtRXNJR2x6UW05eVpHVnlRbTk0TENCemRIbHNaWE1nS1NCN1hHNWNkSFpoY2lCcElEMGdaWGgwY21FZ1BUMDlJQ2dnYVhOQ2IzSmtaWEpDYjNnZ1B5QmNJbUp2Y21SbG
14938Nsd2lJRG9nWENKamIyNTBaVzUwWENJZ0tTQS9YRzVjZEZ4MEx5OGdTV1lnZDJVZ1lXeHlaV0ZrZVNCb1lYWmxJSFJvWlNCeWFXZG9kQ0J0WldGemRYSmxiV1Z1ZEN3Z1lYWnZhV1FnWVhWbmJXVnVkR0YwYVc5dVhHNWNkRngwTkNBNlhHNWNkRngwTHk4Z1QzUm9aWEozYVhObElHbHVhWFJwWVd4cGVtVWdabTl5SUdodmNtbDZiMjUwWVd3Z2IzSWdkbVZ5ZEdsallXd2djSEp2Y0dWeWRHbGxjMXh1WEhSY2RHNWhiV1VnUFQwOUlGd2lkMmxrZEdoY0lpQS9JREVnT2lBd0xGeHVYRzVjZEZ4MGRtRnNJRDBnTUR0Y2JseHVYSFJtYjNJZ0tDQTdJR2tnUENBME95QnBJQ3M5SURJZ0tTQjdYRzVjZEZ4MEx5OGdRbTkwYUNCaWIzZ2diVzlrWld4eklHVjRZMngxWkdVZ2JXRnlaMmx1TENCemJ5QmhaR1FnYVhRZ2FXWWdkMlVnZDJGdWRDQnBkRnh1WEhSY2RHbG1JQ2dnWlhoMGNtRWdQVDA5SUZ3aWJXRnlaMmx1WENJZ0tTQjdYRzVjZEZ4MFhIUjJZV3dnS3owZ2FsRjFaWEo1TG1OemN5Z2daV3hsYlN3Z1pYaDBjbUVnS3lCamMzTkZlSEJoYm1SYklHa2dYU3dnZEhKMVpTd2djM1I1YkdWeklDazdYRzVjZEZ4MGZWeHVYRzVjZEZ4MGFXWWdLQ0JwYzBKdmNtUmxja0p2ZUNBcElIdGNibHgwWEhSY2RDOHZJR0p2Y21SbGNpMWliM2dnYVc1amJIVmtaWE1nY0dGa1pHbHVaeXdnYzI4Z2NtVnRiM1psSUdsMElHbG1JSGRsSUhkaGJuUWdZMjl1ZEdWdWRGeHVYSFJjZEZ4MGFXWWdLQ0JsZUhSeVlTQTlQVDBnWENKamIyNTBaVzUwWENJZ0tTQjdYRzVjZEZ4MFhIUmNkSFpoYkNBdFBTQnFVWFZsY25rdVkzTnpLQ0JsYkdWdExDQmNJbkJoW
14938kdScGJtZGNJaUFySUdOemMwVjRjR0Z1WkZzZ2FTQmRMQ0IwY25WbExDQnpkSGxzWlhNZ0tUdGNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnUVhRZ2RHaHBjeUJ3YjJsdWRDd2daWGgwY21FZ2FYTnVKM1FnWW05eVpHVnlJRzV2Y2lCdFlYSm5hVzRzSUhOdklISmxiVzkyWlNCaWIzSmtaWEpjYmx4MFhIUmNkR2xtSUNnZ1pYaDBjbUVnSVQwOUlGd2liV0Z5WjJsdVhDSWdLU0I3WEc1Y2RGeDBYSFJjZEhaaGJDQXRQU0JxVVhWbGNua3VZM056S0NCbGJHVnRMQ0JjSW1KdmNtUmxjbHdpSUNzZ1kzTnpSWGh3WVc1a1d5QnBJRjBnS3lCY0lsZHBaSFJvWENJc0lIUnlkV1VzSUhOMGVXeGxjeUFwTzF4dVhIUmNkRngwZlZ4dVhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUXZMeUJCZENCMGFHbHpJSEJ2YVc1MExDQmxlSFJ5WVNCcGMyNG5kQ0JqYjI1MFpXNTBMQ0J6YnlCaFpHUWdjR0ZrWkdsdVoxeHVYSFJjZEZ4MGRtRnNJQ3M5SUdwUmRXVnllUzVqYzNNb0lHVnNaVzBzSUZ3aWNHRmtaR2x1WjF3aUlDc2dZM056Ulhod1lXNWtXeUJwSUYwc0lIUnlkV1VzSUhOMGVXeGxjeUFwTzF4dVhHNWNkRngwWEhRdkx5QkJkQ0IwYUdseklIQnZhVzUwTENCbGVIUnlZU0JwYzI0bmRDQmpiMjUwWlc1MElHNXZjaUJ3WVdSa2FXNW5MQ0J6YnlCaFpHUWdZbTl5WkdWeVhHNWNkRngwWEhScFppQW9JR1Y0ZEhKaElDRTlQU0JjSW5CaFpHUnBibWRjSWlBcElIdGNibHgwWEhSY2RGeDBkbUZzSUNzOUlHcFJkV1Z5ZVM1amMzTW9JR1ZzWlcwc0lGd2lZbTl5WkdWeVhDSWdLeUJqYzNORmVIQmhibVJiSUdrZ1hTQXJJRndpVjJsa2RHaGNJaXdnZEhKMVpTd2djM1I1YkdWeklDazdYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYSFI5WEc1Y2JseDBjbVYwZFhKdUlIWmhiRHRjYm4xY2JseHVablZ1WTNScGIyNGdaMlYwVjJsa2RHaFBja2hsYVdkb2RDZ2daV3hsYlN3Z2JtRnRaU3dnWlhoMGNtRWdLU0I3WEc1Y2JseDBMeThnVTNSaGNuUWdkMmwwYUNCdlptWnpaWFFnY0hKdmNHVnlkSGtzSUhkb2FXTm9JR2x6SUdWeGRXbDJZV3hsYm5RZ2RHOGdkR2hsSUdKdmNtUmxjaTFpYjNnZ2RtRnNkV1ZjYmx4MGRtRnlJSFpoYkhWbFNYTkNiM0prWlhKQ2IzZ2dQU0IwY25WbExGeHVYSFJjZEhaaGJDQTlJRzVoYldVZ1BUMDlJRndpZDJsa2RHaGNJaUEvSUdWc1pXMHViMlptYzJWMFYybGtkR2dnT2lCbGJHVnRMbTltWm5ObGRFaGxhV2RvZEN4Y2JseDBYSFJ6ZEhsc1pYTWdQU0JuWlhSVGRIbHNaWE1vSUdWc1pXMGdLU3hjYmx4MFhIUnBjMEp2Y21SbGNrSnZlQ0E5SUdwUmRXVnllUzVqYzNNb0lHVnNaVzBzSUZ3aVltOTRVMmw2YVc1blhDSXNJR1poYkhObExDQnpkSGxzWlhNZ0tTQTlQVDBnWENKaWIzSmtaWEl0WW05NFhDSTdYRzVjYmx4MEx5OGdVMjl0WlNCdWIyNHRhSFJ0YkNCbGJHVnRaVzUwY3lCeVpYUjFjbTRnZFc1a1pXWnBibVZrSUdadmNpQnZabVp6WlhSWGFXUjBhQ3dnYzI4Z1kyaGxZMnNnWm05eUlHNTFiR3d2ZFc1a1pXWnBibVZrWEc1Y2RDOHZJSE4yWnlBdElHaDBkSEJ6T2k4dlluVm5lbWxzYkdFdWJXOTZhV3hzWVM1dmNtY3ZjMmh2ZDE5aWRXY3VZMmRwUDJsa1BUWTBPVEk0TlZ4dVhIUXZMeUJOWVhSb1RVd2dMU0JvZEhSd2N6b3ZMMkoxWjNwcGJHeGhMbTF2ZW1sc2JHRXViM0puTDNOb2IzZGZZblZuTG1ObmFUOXBaRDAwT1RFMk5qaGNibHgwYVdZZ0tDQjJZV3dnUEQwZ01DQjhmQ0IyWVd3Z1BUMGdiblZzYkNBcElIdGNibHgwWEhRdkx5QkdZV3hzSUdKaFkyc2dkRzhnWTI5dGNIVjBaV1FnZEdobGJpQjFibU52YlhCMWRHVmtJR056Y3lCcFppQnVaV05sYzNOaGNubGNibHgwWEhSMllXd2dQU0JqZFhKRFUxTW9JR1ZzWlcwc0lHNWhiV1VzSUhOMGVXeGxjeUFwTzF4dVhIUmNkR2xtSUNnZ2RtRnNJRHdnTUNCOGZDQjJZV3dnUFQwZ2JuVnNiQ0FwSUh0Y2JseDBYSFJjZEhaaGJDQTlJR1ZzWlcwdWMzUjViR1ZiSUc1aGJXVWdYVHRjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJEYjIxd2RYUmxaQ0IxYm1sMElHbHpJRzV2ZENCd2FYaGxiSE11SUZOMGIzQWdhR1Z5WlNCaGJtUWdjbVYwZFhKdUxseHVYSFJjZEdsbUlDZ2djbTUxYlc1dmJuQjRMblJsYzNRb2RtRnNLU0FwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUIyWVd3N1hHNWNkRngwZlZ4dVhHNWNkRngwTHk4Z1EyaGxZMnNnWm05eUlITjBlV3hsSUdsdUlHTmhjMlVnWVNCaWNtOTNjMlZ5SUhkb2FXTm9JSEpsZEhWeWJuTWdkVzV5Wld4cFlXSnNaU0IyWVd4MVpYTmNibHgwWEhRdkx5Qm1iM0lnWjJWMFEyOXRjSFYwWldSVGRIbHNaU0J6YVd4bGJuUnNlU0JtWVd4c2N5QmlZV05ySUhSdklIUm9aU0J5Wld4cFlXSnNaU0JsYkdWdExuTjBlV3hsWEc1Y2RGeDBkbUZzZFdWSmMwSnZjbVJsY2tKdmVDQTlJR2x6UW05eVpHVnlRbTk0SUNZbVhHNWNkRngwWEhRb0lITjFjSEJ2Y25RdVltOTRVMmw2YVc1blVtVnNhV0ZpYkdVb0tTQjhmQ0IyWVd3Z1BUMDlJR1ZzWlcwdWMzUjViR1ZiSUc1aGJXVWdYU0FwTzF4dVhHNWNkRngwTHk4Z1RtOXliV0ZzYVhwbElGd2lYQ0lzSUdGMWRHOHNJR0Z1WkNCd2NtVndZWEpsSUdadmNpQmxlSFJ5WVZ4dVhIUmNkSFpoYkNBOUlIQmhjbk5sUm14dllYUW9JSFpoYkNBcElIeDhJREE3WEc1Y2RIMWNibHh1WEhRdkx5QlZjMlVnZEdobElHRmpkR2wyWlNCaWIzZ3RjMmw2YVc1bklHMXZaR1ZzSUhSdklHRmtaQzl6ZFdKMGNtRmpkQ0JwY25KbGJHVjJZVzUwSUhOMGVXeGxjMXh1WEhSeVpYUjFjbTRnS0NCMllXd2dLMXh1WEhSY2RHRjFaMjFsYm5SWGFXUjBhRTl5U0dWcFoyaDBLRnh1WEhSY2RGeDBaV3hsYlN4Y2JseDBYSFJjZEc1aGJXVXNYRzVjZEZ4MFhIUmxlSFJ5WVNCOGZDQW9JR2x6UW05eVpHVnlRbTk0SUQ4Z1hDSmliM0prWlhKY0lpQTZJRndpWTI5dWRHVnVkRndpSUNrc1hHNWNkRngwWEhSMllXeDFaVWx6UW05eVpHVnlRbTk0TEZ4dVhIUmNkRngwYzNSNWJHVnpYRzVjZEZ4MEtWeHVYSFFwSUNzZ1hDSndlRndpTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJ6YUc5M1NHbGtaU2dnWld4bGJXVnVkSE1zSUhOb2IzY2dLU0I3WEc1Y2RIWmhjaUJrYVhOd2JHRjVMQ0JsYkdWdExDQm9hV1JrWlc0c1hHNWNkRngwZG1Gc2RXVnpJRDBnVzEwc1hHNWNkRngwYVc1a1pYZ2dQU0F3TEZ4dVhIUmNkR3hsYm1kMGFDQTlJR1ZzWlcxbGJuUnpMbXhsYm1kMGFEdGNibHh1WEhSbWIzSWdLQ0E3SUdsdVpHVjRJRHdnYkdWdVozUm9PeUJwYm1SbGVDc3JJQ2tnZTF4dVhIUmNkR1ZzWlcwZ1BTQmxiR1Z0Wlc1MGMxc2dhVzVrWlhnZ1hUdGNibHgwWEhScFppQW9JQ0ZsYkdWdExuTjBlV3hsSUNrZ2UxeHVYSFJjZEZ4MFkyOXVkR2x1ZFdVN1hHNWNkRngwZlZ4dVhHNWNkRngwZG1Gc2RXVnpXeUJwYm1SbGVDQmRJRDBnWkdGMFlWOXdjbWwyTG1kbGRDZ2daV3hsYlN3Z1hDSnZiR1JrYVhOd2JHRjVYQ0lnS1R0Y2JseDBYSFJrYVhOd2JHRjVJRDBnWld4bGJTNXpkSGxzWlM1a2FYTndiR0Y1TzF4dVhIUmNkR2xtSUNnZ2MyaHZkeUFwSUh0Y2JseDBYSFJjZEM4dklGSmxjMlYwSUhSb1pTQnBibXhwYm1V
14938Z1pHbHpjR3hoZVNCdlppQjBhR2x6SUdWc1pXMWxiblFnZEc4Z2JHVmhjbTRnYVdZZ2FYUWdhWE5jYmx4MFhIUmNkQzh2SUdKbGFXNW5JR2hwWkdSbGJpQmllU0JqWVhOallXUmxaQ0J5ZFd4bGN5QnZjaUJ1YjNSY2JseDBYSFJjZEdsbUlDZ2dJWFpoYkhWbGMxc2dhVzVrWlhnZ1hTQW1KaUJrYVhOd2JHRjVJRDA5UFNCY0ltNXZibVZjSWlBcElIdGNibHgwWEhSY2RGeDBaV3hsYlM1emRIbHNaUzVrYVhOd2JHRjVJRDBnWENKY0lqdGNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnVTJWMElHVnNaVzFsYm5SeklIZG9hV05vSUdoaGRtVWdZbVZsYmlCdmRtVnljbWxrWkdWdUlIZHBkR2dnWkdsemNHeGhlVG9nYm05dVpWeHVYSFJjZEZ4MEx5OGdhVzRnWVNCemRIbHNaWE5vWldWMElIUnZJSGRvWVhSbGRtVnlJSFJvWlNCa1pXWmhkV3gwSUdKeWIzZHpaWElnYzNSNWJHVWdhWE5jYmx4MFhIUmNkQzh2SUdadmNpQnpkV05vSUdGdUlHVnNaVzFsYm5SY2JseDBYSFJjZEdsbUlDZ2daV3hsYlM1emRIbHNaUzVrYVhOd2JHRjVJRDA5UFNCY0lsd2lJQ1ltSUdselNHbGtaR1Z1S0NCbGJHVnRJQ2tnS1NCN1hHNWNkRngwWEhSY2RIWmhiSFZsYzFzZ2FXNWtaWGdnWFNBOUlHUmhkR0ZmY0hKcGRpNWhZMk5sYzNNb0lHVnNaVzBzSUZ3aWIyeGtaR2x6Y0d4aGVWd2lMQ0JrWldaaGRXeDBSR2x6Y0d4aGVTaGxiR1Z0TG01dlpHVk9ZVzFsS1NBcE8xeHVYSFJjZEZ4MGZWeHVYSFJjZEgwZ1pXeHpaU0I3WEc1Y2RGeDBYSFJvYVdSa1pXNGdQU0JwYzBocFpHUmxiaWdnWld4bGJTQXBPMXh1WEc1Y2RGeDBYSFJwWmlBb0lHUnBjM0JzWVhrZ0lUMDlJRndpYm05dVpWd2lJSHg4SUNGb2FXUmtaVzRnS1NCN1hHNWNkRngwWEhSY2RHUmhkR0ZmY0hKcGRpNXpaWFFvSUdWc1pXMHNJRndpYjJ4a1pHbHpjR3hoZVZ3aUxDQm9hV1JrWlc0Z1B5QmthWE53YkdGNUlEb2dhbEYxWlhKNUxtTnpjeWdnWld4bGJTd2dYQ0prYVhOd2JHRjVYQ0lnS1NBcE8xeHVYSFJjZEZ4MGZWeHVYSFJjZEgxY2JseDBmVnh1WEc1Y2RDOHZJRk5sZENCMGFHVWdaR2x6Y0d4aGVTQnZaaUJ0YjNOMElHOW1JSFJvWlNCbGJHVnRaVzUwY3lCcGJpQmhJSE5sWTI5dVpDQnNiMjl3WEc1Y2RDOHZJSFJ2SUdGMmIybGtJSFJvWlNCamIyNXpkR0Z1ZENCeVpXWnNiM2RjYmx4MFptOXlJQ2dnYVc1a1pYZ2dQU0F3T3lCcGJtUmxlQ0E4SUd4bGJtZDBhRHNnYVc1a1pYZ3JLeUFwSUh0Y2JseDBYSFJsYkdWdElEMGdaV3hsYldWdWRITmJJR2x1WkdWNElGMDdYRzVjZEZ4MGFXWWdLQ0FoWld4bGJTNXpkSGxzWlNBcElIdGNibHgwWEhSY2RHTnZiblJwYm5WbE8xeHVYSFJjZEgxY2JseDBYSFJwWmlBb0lDRnphRzkzSUh4OElHVnNaVzB1YzNSNWJHVXVaR2x6Y0d4aGVTQTlQVDBnWENKdWIyNWxYQ0lnZkh3Z1pXeGxiUzV6ZEhsc1pTNWthWE53YkdGNUlEMDlQU0JjSWx3aUlDa2dlMXh1WEhSY2RGeDBaV3hsYlM1emRIbHNaUzVrYVhOd2JHRjVJRDBnYzJodmR5QS9JSFpoYkhWbGMxc2dhVzVrWlhnZ1hTQjhmQ0JjSWx3aUlEb2dYQ0p1YjI1bFhDSTdYRzVjZEZ4MGZWeHVYSFI5WEc1Y2JseDBjbVYwZFhKdUlHVnNaVzFsYm5Sek8xeHVmVnh1WEc1cVVYVmxjbmt1WlhoMFpXNWtLSHRjYmx4dVhIUXZMeUJCWkdRZ2FXNGdjM1I1YkdVZ2NISnZjR1Z5ZEhrZ2FHOXZhM01nWm05eUlHOTJaWEp5YVdScGJtY2dkR2hsSUdSbFptRjFiSFJjYmx4MEx5OGdZbVZvWVhacGIzSWdiMllnWjJWMGRHbHVaeUJoYm1RZ2MyVjBkR2x1WnlCaElITjBlV3hsSUhCeWIzQmxjblI1WEc1Y2RHTnpjMGh2YjJ0ek9pQjdYRzVjZEZ4MGIzQmhZMmwwZVRvZ2UxeHVYSFJjZEZ4MFoyVjBPaUJtZFc1amRHbHZiaWdnWld4bGJTd2dZMjl0Y0hWMFpXUWdLU0I3WEc1Y2RGeDBYSFJjZEdsbUlDZ2dZMjl0Y0hWMFpXUWdLU0I3WEc1Y2JseDBYSFJjZEZ4MFhIUXZMeUJYWlNCemFHOTFiR1FnWVd4M1lYbHpJR2RsZENCaElHNTFiV0psY2lCaVlXTnJJR1p5YjIwZ2IzQmhZMmwwZVZ4dVhIUmNkRngwWEhSY2RIWmhjaUJ5WlhRZ1BTQmpkWEpEVTFNb0lHVnNaVzBzSUZ3aWIzQmhZMmwwZVZ3aUlDazdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJSEpsZENBOVBUMGdYQ0pjSWlBL0lGd2lNVndpSURvZ2NtVjBPMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmVnh1WEhSOUxGeHVYRzVjZEM4dklFUnZiaWQwSUdGMWRHOXRZWFJwWTJGc2JIa2dZV1JrSUZ3aWNIaGNJaUIwYnlCMGFHVnpaU0J3YjNOemFXSnNlUzExYm1sMGJHVnpjeUJ3Y205d1pYSjBhV1Z6WEc1Y2RHTnpjMDUxYldKbGNqb2dlMXh1WEhSY2RGd2lZMjlzZFcxdVEyOTFiblJjSWpvZ2RISjFaU3hjYmx4MFhIUmNJbVpwYkd4UGNHRmphWFI1WENJNklIUnlkV1VzWEc1Y2RGeDBYQ0ptYkdWNFIzSnZkMXdpT2lCMGNuVmxMRnh1WEhSY2RGd2labXhsZUZOb2NtbHVhMXdpT2lCMGNuVmxMRnh1WEhSY2RGd2labTl1ZEZkbGFXZG9kRndpT2lCMGNuVmxMRnh1WEhSY2RGd2liR2x1WlVobGFXZG9kRndpT2lCMGNuVmxMRnh1WEhSY2RGd2liM0JoWTJsMGVWd2lPaUIwY25WbExGeHVYSFJjZEZ3aWIzSmtaWEpjSWpvZ2RISjFaU3hjYmx4MFhIUmNJbTl5Y0doaGJuTmNJam9nZEhKMVpTeGNibHgwWEhSY0luZHBaRzkzYzF3aU9pQjBjblZsTEZ4dVhIUmNkRndpZWtsdVpHVjRYQ0k2SUhSeWRXVXNYRzVjZEZ4MFhDSjZiMjl0WENJNklIUnlkV1ZjYmx4MGZTeGNibHh1WEhRdkx5QkJaR1FnYVc0Z2NISnZjR1Z5ZEdsbGN5QjNhRzl6WlNCdVlXMWxjeUI1YjNVZ2QybHphQ0IwYnlCbWFYZ2dZbVZtYjNKbFhHNWNkQzh2SUhObGRIUnBibWNnYjNJZ1oyVjBkR2x1WnlCMGFHVWdkbUZzZFdWY2JseDBZM056VUhKdmNITTZJSHRjYmx4MFhIUmNJbVpzYjJGMFhDSTZJRndpWTNOelJteHZZWFJjSWx4dVhIUjlMRnh1WEc1Y2RDOHZJRWRsZENCaGJtUWdjMlYwSUhSb1pTQnpkSGxzWlNCd2NtOXdaWEowZVNCdmJpQmhJRVJQVFNCT2IyUmxYRzVjZEhOMGVXeGxPaUJtZFc1amRHbHZiaWdnWld4bGJTd2dibUZ0WlN3Z2RtRnNkV1VzSUdWNGRISmhJQ2tnZTF4dVhHNWNkRngwTHk4Z1JHOXVKM1FnYzJWMElITjBlV3hsY3lCdmJpQjBaWGgwSUdGdVpDQmpiMjF0Wlc1MElHNXZaR1Z6WEc1Y2RGeDBhV1lnS0NBaFpXeGxiU0I4ZkNCbGJHVnRMbTV2WkdWVWVYQmxJRDA5UFNBeklIeDhJR1ZzWl
14938cwdWJtOWtaVlI1Y0dVZ1BUMDlJRGdnZkh3Z0lXVnNaVzB1YzNSNWJHVWdLU0I3WEc1Y2RGeDBYSFJ5WlhSMWNtNDdYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdUV0ZyWlNCemRYSmxJSFJvWVhRZ2QyVW5jbVVnZDI5eWEybHVaeUIzYVhSb0lIUm9aU0J5YVdkb2RDQnVZVzFsWEc1Y2RGeDBkbUZ5SUhKbGRDd2dkSGx3WlN3Z2FHOXZhM01zWEc1Y2RGeDBYSFJ2Y21sblRtRnRaU0E5SUdwUmRXVnllUzVqWVcxbGJFTmhjMlVvSUc1aGJXVWdLU3hjYmx4MFhIUmNkSE4wZVd4bElEMGdaV3hsYlM1emRIbHNaVHRjYmx4dVhIUmNkRzVoYldVZ1BTQnFVWFZsY25rdVkzTnpVSEp2Y0hOYklHOXlhV2RPWVcxbElGMGdmSHdnS0NCcVVYVmxjbmt1WTNOelVISnZjSE5iSUc5eWFXZE9ZVzFsSUYwZ1BTQjJaVzVrYjNKUWNtOXdUbUZ0WlNnZ2MzUjViR1VzSUc5eWFXZE9ZVzFsSUNrZ0tUdGNibHh1WEhSY2RDOHZJRWRsZEhNZ2FHOXZheUJtYjNJZ2RHaGxJSEJ5WldacGVHVmtJSFpsY25OcGIyNHNJSFJvWlc0Z2RXNXdjbVZtYVhobFpDQjJaWEp6YVc5dVhHNWNkRngwYUc5dmEzTWdQU0JxVVhWbGNua3VZM056U0c5dmEzTmJJRzVoYldVZ1hTQjhmQ0JxVVhWbGNua3VZM056U0c5dmEzTmJJRzl5YVdkT1lXMWxJRjA3WEc1Y2JseDBYSFF2THlCRGFHVmpheUJwWmlCM1pTZHlaU0J6WlhSMGFXNW5JR0VnZG1Gc2RXVmNibHgwWEhScFppQW9JSFpoYkhWbElDRTlQU0IxYm1SbFptbHVaV1FnS1NCN1hHNWNkRngwWEhSMGVYQmxJRDBnZEhsd1pXOW1JSFpoYkhWbE8xeHVYRzVjZEZ4MFhIUXZMeUJEYjI1MlpYSjBJRndpS3oxY0lpQnZjaUJjSWkwOVhDSWdkRzhnY21Wc1lYUnBkbVVnYm5WdFltVnljeUFvSXpjek5EVXBYRzVjZEZ4MFhIUnBaaUFvSUhSNWNHVWdQVDA5SUZ3aWMzUnlhVzVuWENJZ0ppWWdLSEpsZENBOUlISnlaV3hPZFcwdVpYaGxZeWdnZG1Gc2RXVWdLU2tnS1NCN1hHNWNkRngwWEhSY2RIWmhiSFZsSUQwZ0tDQnlaWFJiTVYwZ0t5QXhJQ2tnS2lCeVpYUmJNbDBnS3lCd1lYSnpaVVpzYjJGMEtDQnFVWFZsY25rdVkzTnpLQ0JsYkdWdExDQnVZVzFsSUNrZ0tUdGNibHgwWEhSY2RGeDBMeThnUm1sNFpYTWdZblZuSUNNNU1qTTNYRzVjZEZ4MFhIUmNkSFI1Y0dVZ1BTQmNJbTUxYldKbGNsd2lPMXh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFF2THlCTllXdGxJSE4xY21VZ2RHaGhkQ0J1ZFd4c0lHRnVaQ0JPWVU0Z2RtRnNkV1Z6SUdGeVpXNG5kQ0J6WlhRZ0tDTTNNVEUyS1Z4dVhIUmNkRngwYVdZZ0tDQjJZV3gxWlNBOVBTQnVkV3hzSUh4OElIWmhiSFZsSUNFOVBTQjJZV3gxWlNBcElIdGNibHgwWEhSY2RGeDBjbVYwZFhKdU8xeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUXZMeUJKWmlCaElHNTFiV0psY2l3Z1lXUmtJQ2R3ZUNjZ2RHOGdkR2hsSUNobGVHTmxjSFFnWm05eUlHTmxjblJoYVc0Z1ExTlRJSEJ5YjNCbGNuUnBaWE1wWEc1Y2RGeDBYSFJwWmlBb0lIUjVjR1VnUFQwOUlGd2liblZ0WW1WeVhDSWdKaVlnSVdwUmRXVnllUzVqYzNOT2RXMWlaWEpiSUc5eWFXZE9ZVzFsSUYwZ0tTQjdYRzVjZEZ4MFhIUmNkSFpoYkhWbElDczlJRndpY0hoY0lqdGNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnVTNWd2NHOXlkRG9nU1VVNUxURXhLMXh1WEhSY2RGeDBMeThnWW1GamEyZHliM1Z1WkMwcUlIQnliM0J6SUdGbVptVmpkQ0J2Y21sbmFXNWhiQ0JqYkc5dVpTZHpJSFpoYkhWbGMxeHVYSFJjZEZ4MGFXWWdLQ0FoYzNWd2NHOXlkQzVqYkdWaGNrTnNiMjVsVTNSNWJHVWdKaVlnZG1Gc2RXVWdQVDA5SUZ3aVhDSWdKaVlnYm1GdFpTNXBibVJsZUU5bUtDQmNJbUpoWTJ0bmNtOTFibVJjSWlBcElEMDlQU0F3SUNrZ2UxeHVYSFJjZEZ4MFhIUnpkSGxzWlZzZ2JtRnRaU0JkSUQwZ1hDSnBibWhsY21sMFhDSTdYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkQzh2SUVsbUlHRWdhRzl2YXlCM1lYTWdjSEp2ZG1sa1pXUXNJSFZ6WlNCMGFHRjBJSFpoYkhWbExDQnZkR2hsY25kcGMyVWdhblZ6ZENCelpYUWdkR2hsSUhOd1pXTnBabWxsWkNCMllXeDFaVnh1WEhSY2RGeDBhV1lnS0NBaGFHOXZhM01nZkh3Z0lTaGNJbk5sZEZ3aUlHbHVJR2h2YjJ0ektTQjhmQ0FvZG1Gc2RXVWdQU0JvYjI5cmN5NXpaWFFvSUdWc1pXMHNJSFpoYkhWbExDQmxlSFJ5WVNBcEtTQWhQVDBnZFc1a1pXWnBibVZrSUNrZ2UxeHVYSFJjZEZ4MFhIUnpkSGxzWlZzZ2JtRnRaU0JkSUQwZ2RtRnNkV1U3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBMeThnU1dZZ1lTQm9iMjlySUhkaGN5QndjbTkyYVdSbFpDQm5aWFFnZEdobElHNXZiaTFqYjIxd2RYUmxaQ0IyWVd4MVpTQm1jbTl0SUhSb1pYSmxYRzVjZEZ4MFhIUnBaaUFvSUdodmIydHpJQ1ltSUZ3aVoyVjBYQ0lnYVc0Z2FHOXZhM01nSmlZZ0tISmxkQ0E5SUdodmIydHpMbWRsZENnZ1pXeGxiU3dnWm1Gc2MyVXNJR1Y0ZEhKaElDa3BJQ0U5UFNCMWJtUmxabWx1WldRZ0tTQjdYRzVjZEZ4MFhIUmNkSEpsZEhWeWJpQnlaWFE3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEM4dklFOTBhR1Z5ZDJselpTQnFkWE4wSUdkbGRDQjBhR1VnZG1Gc2RXVWdabkp2YlNCMGFHVWdjM1I1YkdVZ2IySnFaV04wWEc1Y2RGeDBYSFJ5WlhSMWNtNGdjM1I1YkdWYklHNWhiV1VnWFR0Y2JseDBYSFI5WEc1Y2RIMHNYRzVjYmx4MFkzTnpPaUJtZFc1amRHbHZiaWdnWld4bGJTd2dibUZ0WlN3Z1pYaDBjbUVzSUhOMGVXeGxjeUFwSUh0Y2JseDBYSFIyWVhJZ2RtRnNMQ0J1ZFcwc0lHaHZiMnR6TEZ4dVhIUmNkRngwYjNKcFowNWhiV1VnUFNCcVVYVmxjbmt1WTJGdFpXeERZWE5sS0NCdVlXMWxJQ2s3WEc1Y2JseDBYSFF2THlCTllXdGxJSE4xY21VZ2RHaGhkQ0IzWlNkeVpTQjNiM0pyYVc1bklIZHBkR2dnZEdobElISnBaMmgwSUc1aGJXVmNibHgwWEhSdVlXMWxJRDBnYWxGMVpYSjVMbU56YzFCeWIzQnpXeUJ2Y21sblRtRnRaU0JkSUh4OElDZ2dhbEYxWlhKNUxtTnpjMUJ5YjNCeld5QnZjbWxuVG1GdFpTQmRJRDBnZG1WdVpHOXlVSEp2Y0U1aGJXVW9JR1ZzWlcwdWMzUjViR1VzSUc5eWFXZE9ZVzFsSUNrZ0tUdGNibHh1WEhSY2RDOHZJRlJ5ZVNCd2NtVm1hWGhsWkNCdVlXMWxJR1p2Ykd4dmQyVmtJR0o1SUhSb1pTQjFibkJ5WldacGVHVmtJRzVoYldWY2JseDBYSFJvYjI5cmN5QTlJR3BSZFdWeWVTNWpjM05JYjI5cmMxc2dibUZ0WlNCZElIeDhJR3BSZFdWeWVTNWpjM05JYjI5cmMxc2diM0pwWjA1aGJXVWdYVHRjYmx4dVhIUmNkQzh2SUVsbUlHRWdhRzl2YXlCM1lYTWdjSEp2ZG1sa1pXUWdaMlYwSUhSb1pTQmpiMjF3ZFhSbFpDQjJZV3gxWlNCbWNtOXRJSFJvWlhKbFhHNWNkRngwYVdZZ0tDQm9iMjlyY3lBbUppQmNJbWRsZEZ3aUlHbHVJR2h2YjJ0eklDa2dlMXh1WEhSY2RGeDBkbUZzSUQwZ2FHOXZhM011WjJWMEtDQmxiR1Z0TENCMGNuVmxMQ0JsZUhSeVlTQXBPMXh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRTkwYUdWeWQybHpaU3dnYVdZZ1lTQjNZWGtnZEc4Z1oyVjBJSFJvWlNCamIyMXdkWFJsWkNCMllXeDFaU0JsZUdsemRITXNJSFZ6WlNCMGFHRjBYRzVjZEZ4MGFXWWdLQ0IyWVd3Z1BUMDlJSFZ1WkdWbWFXNWxaQ0FwSUh0Y2JseDBYSFJjZEhaaGJDQTlJR04xY2tOVFV5Z2daV3hsYlN3Z2JtRnRaU3dnYzNSNWJHVnpJQ2s3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnUTI5dWRtVnlkQ0JjSW01dmNtMWhiRndpSUhSdklHTnZiWEIxZEdWa0lIWmhiSFZsWEc1Y2RGeDBhV1lnS0NCMllXd2dQVDA5SUZ3aWJtOXliV0ZzWENJZ0ppWWdibUZ0WlNCcGJpQmpjM05PYjNKdFlXeFVjbUZ1YzJadmNtMGdLU0I3WEc1Y2RGeDBYSFIyWVd3Z1BTQmpjM05PYjNKdFlXeFVjbUZ1YzJadmNtMWJJRzVoYldVZ1hUdGNibHgwWEhSOVhHNWNibHgwWEhRdkx5Qk5ZV3RsSUc1MWJXVnlhV01nYVdZZ1ptOXlZMlZrSUc5e
14938UlHRWdjWFZoYkdsbWFXVnlJSGRoY3lCd2NtOTJhV1JsWkNCaGJtUWdkbUZzSUd4dmIydHpJRzUxYldWeWFXTmNibHgwWEhScFppQW9JR1Y0ZEhKaElEMDlQU0JjSWx3aUlIeDhJR1Y0ZEhKaElDa2dlMXh1WEhSY2RGeDBiblZ0SUQwZ2NHRnljMlZHYkc5aGRDZ2dkbUZzSUNrN1hHNWNkRngwWEhSeVpYUjFjbTRnWlhoMGNtRWdQVDA5SUhSeWRXVWdmSHdnYWxGMVpYSjVMbWx6VG5WdFpYSnBZeWdnYm5WdElDa2dQeUJ1ZFcwZ2ZId2dNQ0E2SUhaaGJEdGNibHgwWEhSOVhHNWNkRngwY21WMGRYSnVJSFpoYkR0Y2JseDBmVnh1ZlNrN1hHNWNibXBSZFdWeWVTNWxZV05vS0ZzZ1hDSm9aV2xuYUhSY0lpd2dYQ0ozYVdSMGFGd2lJRjBzSUdaMWJtTjBhVzl1S0NCcExDQnVZVzFsSUNrZ2UxeHVYSFJxVVhWbGNua3VZM056U0c5dmEzTmJJRzVoYldVZ1hTQTlJSHRjYmx4MFhIUm5aWFE2SUdaMWJtTjBhVzl1S0NCbGJHVnRMQ0JqYjIxd2RYUmxaQ3dnWlhoMGNtRWdLU0I3WEc1Y2RGeDBYSFJwWmlBb0lHTnZiWEIxZEdWa0lDa2dlMXh1WEc1Y2RGeDBYSFJjZEM4dklFTmxjblJoYVc0Z1pXeGxiV1Z1ZEhNZ1kyRnVJR2hoZG1VZ1pHbHRaVzV6YVc5dUlHbHVabThnYVdZZ2QyVWdhVzUyYVhOcFlteDVJSE5vYjNjZ2RHaGxiVnh1WEhSY2RGeDBYSFF2THlCaWRYUWdhWFFnYlhWemRDQm9ZWFpsSUdFZ1kzVnljbVZ1ZENCa2FYTndiR0Y1SUhOMGVXeGxJSFJvWVhRZ2QyOTFiR1FnWW1WdVpXWnBkRnh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdjbVJwYzNCc1lYbHpkMkZ3TG5SbGMzUW9JR3BSZFdWeWVTNWpjM01vSUdWc1pXMHNJRndpWkdsemNHeGhlVndpSUNrZ0tTQW1KaUJsYkdWdExtOW1abk5sZEZkcFpIUm9JRDA5UFNBd0lEOWNibHgwWEhSY2RGeDBYSFJxVVhWbGNua3VjM2RoY0NnZ1pXeGxiU3dnWTNOelUyaHZkeXdnWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwWEhSY2RGeDBYSFJ5WlhSMWNtNGdaMlYwVjJsa2RHaFBja2hsYVdkb2RDZ2daV3hsYlN3Z2JtRnRaU3dnWlhoMGNtRWdLVHRjYmx4MFhIUmNkRngwWEhSOUtTQTZYRzVjZEZ4MFhIUmNkRngwWjJWMFYybGtkR2hQY2tobGFXZG9kQ2dnWld4bGJTd2dibUZ0WlN3Z1pYaDBjbUVnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5TEZ4dVhHNWNkRngwYzJWME9pQm1kVzVqZEdsdmJpZ2daV3hsYlN3Z2RtRnNkV1VzSUdWNGRISmhJQ2tnZTF4dVhIUmNkRngwZG1GeUlITjBlV3hsY3lBOUlHVjRkSEpoSUNZbUlHZGxkRk4wZVd4bGN5Z2daV3hsYlNBcE8xeHVYSFJjZEZ4MGNtVjBkWEp1SUhObGRGQnZjMmwwYVhabFRuVnRZbVZ5S0NCbGJHVnRMQ0IyWVd4MVpTd2daWGgwY21FZ1AxeHVYSFJjZEZ4MFhIUmhkV2R0Wlc1MFYybGtkR2hQY2tobGFXZG9kQ2hjYmx4MFhIUmNkRngwWEhSbGJHVnRMRnh1WEhSY2RGeDBYSFJjZEc1aGJXVXNYRzVjZEZ4MFhIUmNkRngwWlhoMGNtRXNYRzVjZEZ4MFhIUmNkRngwYWxGMVpYSjVMbU56Y3lnZ1pXeGxiU3dnWENKaWIzaFRhWHBwYm1kY0lpd2dabUZzYzJVc0lITjBlV3hsY3lBcElEMDlQU0JjSW1KdmNtUmxjaTFpYjNoY0lpeGNibHgwWEhSY2RGeDBYSFJ6ZEhsc1pYTmNibHgwWEhSY2RGeDBLU0E2SURCY2JseDBYSFJjZENrN1hHNWNkRngwZlZ4dVhIUjlPMXh1ZlNrN1hHNWNiaTh2SUZOMWNIQnZjblE2SUVGdVpISnZhV1FnTWk0elhHNXFVWFZsY25rdVkzTnpTRzl2YTNNdWJXRnlaMmx1VW1sbmFIUWdQU0JoWkdSSFpYUkliMjlyU1dZb0lITjFjSEJ2Y25RdWNtVnNhV0ZpYkdWTllYSm5hVzVTYVdkb2RDeGNibHgwWm5WdVkzUnBiMjRvSUdWc1pXMHNJR052YlhCMWRHVmtJQ2tnZTF4dVhIUmNkR2xtSUNnZ1kyOXRjSFYwWldRZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200Z2FsRjFaWEo1TG5OM1lYQW9JR1ZzWlcwc0lIc2dYQ0prYVhOd2JHRjVYQ0k2SUZ3aWFXNXNhVzVsTFdKc2IyTnJYQ0lnZlN4Y2JseDBYSFJjZEZ4MFkzVnlRMU5UTENCYklHVnNaVzBzSUZ3aWJXRnlaMmx1VW1sbmFIUmNJaUJkSUNrN1hHNWNkRngwZlZ4dVhIUjlYRzRwTzF4dVhHNHZMeUJVYUdWelpTQm9iMjlyY3lCaGNtVWdkWE5sWkNCaWVTQmhibWx0WVhSbElIUnZJR1Y0Y0dGdVpDQndjbTl3WlhKMGFXVnpYRzVxVVhWbGNua3VaV0ZqYUNoN1hHNWNkRzFoY21kcGJqb2dYQ0pjSWl4Y2JseDBjR0ZrWkdsdVp6b2dYQ0pjSWl4Y2JseDBZbTl5WkdWeU9pQmNJbGRwWkhSb1hDSmNibjBzSUdaMWJtTjBhVzl1S0NCd2NtVm1hWGdzSUhOMVptWnBlQ0FwSUh0Y2JseDBhbEYxWlhKNUxtTnpjMGh2YjJ0eld5QndjbVZtYVhnZ0t5QnpkV1ptYVhnZ1hTQTlJSHRjYmx4MFhIUmxlSEJoYm1RNklHWjFibU4wYVc5dUtDQjJZV3gxWlNBcElIdGNibHgwWEhSY2RIWmhjaUJwSUQwZ01DeGNibHgwWEhSY2RGeDBaWGh3WVc1a1pXUWdQU0I3ZlN4Y2JseHVYSFJjZEZ4MFhIUXZMeUJCYzNOMWJXVnpJR0VnYzJsdVoyeGxJRzUxYldKbGNpQnBaaUJ1YjNRZ1lTQnpkSEpwYm1kY2JseDBYSFJjZEZ4MGNHRnlkSE1nUFNCMGVYQmxiMllnZG1Gc2RXVWdQVDA5SUZ3aWMzUnlhVzVuWENJZ1B5QjJZV3gxWlM1emNHeHBkQ2hjSWlCY0lpa2dPaUJiSUhaaGJIVmxJRjA3WEc1Y2JseDBYSFJjZEdadmNpQW9JRHNnYVNBOElEUTdJR2tyS3lBcElIdGNibHgwWEhSY2RGeDBaWGh3WVc1a1pXUmJJSEJ5WldacGVDQXJJR056YzBWNGNHRnVaRnNnYVNCZElDc2djM1ZtWm1sNElGMGdQVnh1WEhSY2RGeDBYSFJjZEhCaGNuUnpXeUJwSUYwZ2ZId2djR0Z5ZEhOYklHa2dMU0F5SUYwZ2ZId2djR0Z5ZEhOYklEQWdYVHRjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwY21WMGRYSnVJR1Y0Y0dGdVpHVmtPMXh1WEhSY2RIMWNibHgwZlR0Y2JseHVYSFJwWmlBb0lDRnliV0Z5WjJsdUxuUmxjM1FvSUhCeVpXWnBlQ0FwSUNrZ2UxeHVYSFJjZEdwUmRXVnllUzVqYzNOSWIyOXJjMXNnY0hKbFptbDRJQ3NnYzNWbVptbDRJRjB1YzJWMElEMGdjMlYwVUc5emFYUnBkbVZPZFcxaVpYSTdYRzVjZEgxY2JuMHBPMXh1WEc1cVVYVmxjbmt1Wm00dVpYaDBaVzVrS0h0Y2JseDBZM056T2lCbWRXNWpkR2x2YmlnZ2JtRnRaU3dnZG1Gc2RXVWdLU0I3WEc1Y2RGeDBjbVYwZFhKdUlHRmpZMlZ6Y3lnZ2RHaHBjeXdnWm5WdVkzUnBiMjRvSUdWc1pXMHNJRzVoYldVc0lIWmhiSFZsSUNrZ2UxeHVYSFJjZEZ4MGRtRnlJSE4wZVd4bGN5d2diR1Z1TEZ4dVhIUmNkRngwWEhSdFlYQWdQU0I3ZlN4Y2JseDBYSFJjZEZ4MGFTQTlJREE3WEc1Y2JseDBYSFJjZEdsbUlDZ2dhbEYxWlhKNUxtbHpRWEp5WVhrb0lHNWhiV1VnS1NBcElIdGNibHgwWEhSY2RGeDBjM1I1YkdWeklEMGdaMlYwVTNSNWJHVnpLQ0JsYkdWdElDazdYRzVjZEZ4MFhIUmNkR3hsYmlBOUlHNWhiV1V1YkdWdVozUm9PMXh1WEc1Y2RGeDBYSFJjZEdadmNpQW9JRHNnYVNBOElHeGxianNnYVNzcklDa2dlMXh1WEhSY2RGeDBYSFJjZEcxaGNGc2dibUZ0WlZzZ2FTQmRJRjBnUFNCcVVYVmxjbmt1WTNOektDQmxiR1Z0TENCdVlXMWxXeUJwSUYwc0lHWmhiSE5sTENCemRIbHNaWE1nS1R0Y2JseDBYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUmNkSEpsZEhWeWJpQnRZWEE3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEhKbGRIVnliaUIyWVd4MVpTQWhQVDBnZFc1a1pXWnBibVZrSUQ5Y2JseDBYSFJjZEZ4MGFsRjFaWEo1TG5OMGVXeGxLQ0JsYkdWdExDQnVZVzFsTENCMllXeDFaU0FwSURwY2JseDBYSFJjZEZ4MGFsRjFaWEo1TG1OemN5Z2daV3hsYlN3Z2JtRnRaU0FwTzF4dVhIUmNkSDBzSUc1aGJXVXNJSFpoYkhWbExDQmhjbWQxYldWdWRITXViR1Z1WjNSb0lENGdNU0FwTzF4dVhIUjlMRnh1WEhSemFHOTNPaUJtZFc1amRHbHZiaWdwSUh0Y2JseDBYSFJ5WlhSMWNtNGdjMmh2ZDBocFpHVW9JSFJvYVhNc0lIUnlkV1VnS1R0Y2JseDBmU3hjYmx4MGFHbGtaVG9nWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwY21WMGRYSnVJSE5vYjNkSWFXUmxLQ0IwYUdseklDazdYRzVjZEgwc1hHNWNkSFJ2WjJkc1pUb2dablZ1WTNScGIyNG9JSE4wWVhSbElDa2dlMXh1WEhSY2RHbG1JQ2dnZEhsd1pXOW1JSE4wWVhSbElEMDlQU0JjSW1KdmIyeGxZVzVjSWlBcElIdGNibHgwWEhSY2RISmxkSFZ5YmlCemRHRjBaU0EvSUhSb2FYTXVjMmh2ZHlncElEb2dkR2hwY3k1b2FXUmxLQ2s3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE11WldGamFDaG1kVzVqZEdsdmJpZ3BJSHRjYmx4MFhIUmNkR2xtSUNnZ2FYTklhV1JrWlc0b0lIUm9hWE1nS1NBcElIdGNibHgwWEhSY2RGeDBhbEYxWlhKNUtDQjBhR2x6SUNrdWMyaHZkeWdwTzF4dVhIUmNkRngwZlNCbGJITmxJSHRjYmx4MFhIUmNkRngwYWxGMVpYSjVLQ0IwYUdseklDa3VhR2xrWlNncE8xeHVYSFJjZEZ4MGZWeHVYSFJjZEgwcE8xeHVYSFI5WEc1OUtUdGNibHh1WEc1bWRXNWpkR2x2YmlCVWQyVmxiaWdnWld4bGJTd2diM0IwYVc5dWN5d2djSEp2Y0N3Z1pXNWtMQ0JsWVhOcGJtY2dLU0I3WEc1Y2RISmxkSFZ5YmlCdVpYY2dWSGRsWlc0dWNISnZkRzkwZVhCbExtbHVhWFFvSUdWc1pXMHNJRzl3ZEdsdmJuTXNJSEJ5YjNBc0lHVnVaQ3dnWldGemFXNW5JQ2s3WEc1OVhHNXFVWFZsY25rdVZIZGxaVzRnUFNCVWQyVmxianRjYmx4dVZIZGxaVzR1Y0hKdmRHOTBlWEJsSUQwZ2UxeHVYSFJqYjI1emRISjFZM1J2Y2pvZ1ZIZGxaVzRzWEc1Y2RHbHVhWFE2SUdaMWJtTjBhVzl1S0NCbGJHVnRMQ0J2Y0hScGIyNXpMQ0J3Y205d0xDQmxibVFzSUdWaGMybHVaeXdnZFc1cGRDQXBJSHRjYmx4MFhIUjBhR2x6TG1Wc1pXMGdQU0JsYkdWdE8xeHVYSFJjZEhSb2FYTXVjSEp2Y0NBOUlIQnliM0E3WEc1Y2RGeDBkR2hwY3k1bFlYTnBibWNnUFNCbFlYTnBibWNnZkh3Z1hDSnpkMmx1WjF3aU8xeHVYSFJjZEhSb2FYTXViM0IwYVc5dWN5QTlJRzl3ZEdsdmJuTTdYRzVjZEZ4MGRH
14938aHBjeTV6ZEdGeWRDQTlJSFJvYVhNdWJtOTNJRDBnZEdocGN5NWpkWElvS1R0Y2JseDBYSFIwYUdsekxtVnVaQ0E5SUdWdVpEdGNibHgwWEhSMGFHbHpMblZ1YVhRZ1BTQjFibWwwSUh4OElDZ2dhbEYxWlhKNUxtTnpjMDUxYldKbGNsc2djSEp2Y0NCZElEOGdYQ0pjSWlBNklGd2ljSGhjSWlBcE8xeHVYSFI5TEZ4dVhIUmpkWEk2SUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEhaaGNpQm9iMjlyY3lBOUlGUjNaV1Z1TG5CeWIzQkliMjlyYzFzZ2RHaHBjeTV3Y205d0lGMDdYRzVjYmx4MFhIUnlaWFIxY200Z2FHOXZhM01nSmlZZ2FHOXZhM011WjJWMElEOWNibHgwWEhSY2RHaHZiMnR6TG1kbGRDZ2dkR2hwY3lBcElEcGNibHgwWEhSY2RGUjNaV1Z1TG5CeWIzQkliMjlyY3k1ZlpHVm1ZWFZzZEM1blpYUW9JSFJvYVhNZ0tUdGNibHgwZlN4Y2JseDBjblZ1T2lCbWRXNWpkR2x2YmlnZ2NHVnlZMlZ1ZENBcElIdGNibHgwWEhSMllYSWdaV0Z6WldRc1hHNWNkRngwWEhSb2IyOXJjeUE5SUZSM1pXVnVMbkJ5YjNCSWIyOXJjMXNnZEdocGN5NXdjbTl3SUYwN1hHNWNibHgwWEhScFppQW9JSFJvYVhNdWIzQjBhVzl1Y3k1a2RYSmhkR2x2YmlBcElIdGNibHgwWEhSY2RIUm9hWE11Y0c5eklEMGdaV0Z6WldRZ1BTQnFVWFZsY25rdVpXRnphVzVuV3lCMGFHbHpMbVZoYzJsdVp5QmRLRnh1WEhSY2RGeDBYSFJ3WlhKalpXNTBMQ0IwYUdsekxtOXdkR2x2Ym5NdVpIVnlZWFJwYjI0Z0tpQndaWEpqWlc1MExDQXdMQ0F4TENCMGFHbHpMbTl3ZEdsdmJuTXVaSFZ5WVhScGIyNWNibHgwWEhSY2RDazdYRzVjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEhSb2FYTXVjRzl6SUQwZ1pXRnpaV1FnUFNCd1pYSmpaVzUwTzF4dVhIUmNkSDFjYmx4MFhIUjBhR2x6TG01dmR5QTlJQ2dnZEdocGN5NWxibVFnTFNCMGFHbHpMbk4wWVhKMElDa2dLaUJsWVhObFpDQXJJSFJvYVhNdWMzUmhjblE3WEc1Y2JseDBYSFJwWmlBb0lIUm9hWE11YjNCMGFXOXVjeTV6ZEdWd0lDa2dlMXh1WEhSY2RGeDBkR2hwY3k1dmNIUnBiMjV6TG5OMFpYQXVZMkZzYkNnZ2RHaHBjeTVsYkdWdExDQjBhR2x6TG01dmR5d2dkR2hwY3lBcE8xeHVYSFJjZEgxY2JseHVYSFJjZEdsbUlDZ2dhRzl2YTNNZ0ppWWdhRzl2YTNNdWMyVjBJQ2tnZTF4dVhIUmNkRngwYUc5dmEzTXVjMlYwS0NCMGFHbHpJQ2s3WEc1Y2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RGUjNaV1Z1TG5CeWIzQkliMjlyY3k1ZlpHVm1ZWFZzZEM1elpYUW9JSFJvYVhNZ0tUdGNibHgwWEhSOVhHNWNkRngwY21WMGRYSnVJSFJvYVhNN1hHNWNkSDFjYm4wN1hHNWNibFIzWldWdUxuQnliM1J2ZEhsd1pTNXBibWwwTG5CeWIzUnZkSGx3WlNBOUlGUjNaV1Z1TG5CeWIzUnZkSGx3WlR0Y2JseHVWSGRsWlc0dWNISnZjRWh2YjJ0eklEMGdlMXh1WEhSZlpHVm1ZWFZzZERvZ2UxeHVYSFJjZEdkbGREb2dablZ1WTNScGIyNG9JSFIzWldWdUlDa2dlMXh1WEhSY2RGeDBkbUZ5SUhKbGMzVnNkRHRjYmx4dVhIUmNkRngwYVdZZ0tDQjBkMlZsYmk1bGJHVnRXeUIwZDJWbGJpNXdjbTl3SUYwZ0lUMGdiblZzYkNBbUpseHVYSFJjZEZ4MFhIUW9JWFIzWldWdUxtVnNaVzB1YzNSNWJHVWdmSHdnZEhkbFpXNHVaV3hsYlM1emRIbHNaVnNnZEhkbFpXNHVjSEp2Y0NCZElEMDlJRzUxYkd3cElDa2dlMXh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdkSGRsWlc0dVpXeGxiVnNnZEhkbFpXNHVjSEp2Y0NCZE8xeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUXZMeUJRWVhOemFXNW5JR0Z1SUdWdGNIUjVJSE4wY21sdVp5QmhjeUJoSUROeVpDQndZWEpoYldWMFpYSWdkRzhnTG1OemN5QjNhV3hzSUdGMWRHOXRZWFJwWTJGc2JIbGNibHgwWEhSY2RDOHZJR0YwZEdWdGNIUWdZU0J3WVhKelpVWnNiMkYwSUdGdVpDQm1ZV3hzWW1GamF5QjBieUJoSUhOMGNtbHVaeUJwWmlCMGFHVWdjR0Z5YzJVZ1ptRnBiSE11WEc1Y2RGeDBYSFF2THlCVGFXMXdiR1VnZG1Gc2RXVnpJSE4xWTJnZ1lYTWdYQ0l4TUhCNFhDSWdZWEpsSUhCaGNuTmxaQ0IwYnlCR2JHOWhkRHRjYmx4MFhIUmNkQzh2SUdOdmJYQnNaWGdnZG1Gc2RXVnpJSE4xWTJnZ1lYTWdYQ0p5YjNSaGRHVW9NWEpoWkNsY0lpQmhjbVVnY21WMGRYSnVaV1FnWVhNdGFYTXVYRzVjZEZ4MFhIUnlaWE4xYkhRZ1BTQnFVWFZsY25rdVkzTnpLQ0IwZDJWbGJpNWxiR1Z0TENCMGQyVmxiaTV3Y205d0xDQmNJbHdpSUNrN1hHNWNkRngwWEhRdkx5QkZiWEIwZVNCemRISnBibWR6TENCdWRXeHNMQ0IxYm1SbFptbHVaV1FnWVc1a0lGd2lZWFYwYjF3aUlHRnlaU0JqYjI1MlpYSjBaV1FnZEc4Z01DNWNibHgwWEhSY2RISmxkSFZ5YmlBaGNtVnpkV3gwSUh4OElISmxjM1ZzZENBOVBUMGdYQ0poZFhSdlhDSWdQeUF3SURvZ2NtVnpkV3gwTzF4dVhIUmNkSDBzWEc1Y2RGeDBjMlYwT2lCbWRXNWpkR2x2YmlnZ2RIZGxaVzRnS1NCN1hHNWNkRngwWEhRdkx5QlZjMlVnYzNSbGNDQm9iMjlySUdadmNpQmlZV05ySUdOdmJYQmhkQzVjYmx4MFhIUmNkQzh2SUZWelpTQmpjM05JYjI5cklHbG1JR2wwY3lCMGFHVnlaUzVjYmx4MFhIUmNkQzh2SUZWelpTQXVjM1I1YkdVZ2FXWWdZWFpoYVd4aFlteGxJR0Z1WkNCMWMyVWdjR3hoYVc0Z2NISnZjR1Z5ZEdsbGN5QjNhR1Z5WlNCaGRtRnBiR0ZpYkdVdVhHNWNkRngwWEhScFppQW9JR3BSZFdWeWVTNW1lQzV6ZEdWd1d5QjBkMlZsYmk1d2NtOXdJRjBnS1NCN1hHNWNkRngwWEhSY2RHcFJkV1Z5ZVM1bWVDNXpkR1Z3V3lCMGQyVmxiaTV3Y205d0lGMG9JSFIzWldWdUlDazdYRzVjZEZ4MFhIUjlJR1ZzYzJVZ2FXWWdLQ0IwZDJWbGJpNWxiR1Z0TG5OMGVXeGxJQ1ltSUNnZ2RIZGxaVzR1Wld4bGJTNXpkSGxzWlZzZ2FsRjFaWEo1TG1OemMxQnliM0J6V3lCMGQyVmxiaTV3Y205d0lGMGdYU0FoUFNCdWRXeHNJSHg4SUdwUmRXVnllUzVqYzNOSWIyOXJjMXNnZEhkbFpXNHVjSEp2Y0NCZElDa2dLU0I3WEc1Y2RGeDBYSFJjZEdwUmRXVnllUzV6ZEhsc1pTZ2dkSGRsWlc0dVpXeGxiU3dnZEhkbFpXNHVjSEp2Y0N3Z2RIZGxaVzR1Ym05M0lDc2dkSGRsWlc0dWRXNXBkQ0FwTzF4dVhIUmNkRngwZlNCbGJITmxJSHRjYmx4MFhIUmNkRngwZEhkbFpXNHVaV3hsYlZzZ2RIZGxaVzR1Y0hKdmNDQmRJRDBnZEhkbFpXNHVibTkzTzF4dVhIUmNkRngwZlZ4dVhIUmNkSDFjYmx4MGZWeHVmVHRjYmx4dUx5OGdVM1Z3Y0c5eWREb2dTVVU1WEc0dkx5QlFZVzVwWXlCaVlYTmxaQ0JoY0hCeWIyRmphQ0IwYnlCelpYUjBhVzVu
14938SUhSb2FXNW5jeUJ2YmlCa2FYTmpiMjV1WldOMFpXUWdibTlrWlhOY2JsUjNaV1Z1TG5CeWIzQkliMjlyY3k1elkzSnZiR3hVYjNBZ1BTQlVkMlZsYmk1d2NtOXdTRzl2YTNNdWMyTnliMnhzVEdWbWRDQTlJSHRjYmx4MGMyVjBPaUJtZFc1amRHbHZiaWdnZEhkbFpXNGdLU0I3WEc1Y2RGeDBhV1lnS0NCMGQyVmxiaTVsYkdWdExtNXZaR1ZVZVhCbElDWW1JSFIzWldWdUxtVnNaVzB1Y0dGeVpXNTBUbTlrWlNBcElIdGNibHgwWEhSY2RIUjNaV1Z1TG1Wc1pXMWJJSFIzWldWdUxuQnliM0FnWFNBOUlIUjNaV1Z1TG01dmR6dGNibHgwWEhSOVhHNWNkSDFjYm4wN1hHNWNibXBSZFdWeWVTNWxZWE5wYm1jZ1BTQjdYRzVjZEd4cGJtVmhjam9nWm5WdVkzUnBiMjRvSUhBZ0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUhBN1hHNWNkSDBzWEc1Y2RITjNhVzVuT2lCbWRXNWpkR2x2YmlnZ2NDQXBJSHRjYmx4MFhIUnlaWFIxY200Z01DNDFJQzBnVFdGMGFDNWpiM01vSUhBZ0tpQk5ZWFJvTGxCSklDa2dMeUF5TzF4dVhIUjlYRzU5TzF4dVhHNXFVWFZsY25rdVpuZ2dQU0JVZDJWbGJpNXdjbTkwYjNSNWNHVXVhVzVwZER0Y2JseHVMeThnUW1GamF5QkRiMjF3WVhRZ1BERXVPQ0JsZUhSbGJuTnBiMjRnY0c5cGJuUmNibXBSZFdWeWVTNW1lQzV6ZEdWd0lEMGdlMzA3WEc1Y2JseHVYRzVjYm5aaGNseHVYSFJtZUU1dmR5d2dkR2x0WlhKSlpDeGNibHgwY21aNGRIbHdaWE1nUFNBdlhpZy9PblJ2WjJkc1pYeHphRzkzZkdocFpHVXBKQzhzWEc1Y2RISm1lRzUxYlNBOUlHNWxkeUJTWldkRmVIQW9JRndpWGlnL09paGJLeTFkS1QxOEtTaGNJaUFySUhCdWRXMGdLeUJjSWlrb1cyRXRlaVZkS2lra1hDSXNJRndpYVZ3aUlDa3NYRzVjZEhKeWRXNGdQU0F2Y1hWbGRXVkliMjlyY3lRdkxGeHVYSFJoYm1sdFlYUnBiMjVRY21WbWFXeDBaWEp6SUQwZ1d5QmtaV1poZFd4MFVISmxabWxzZEdWeUlGMHNYRzVjZEhSM1pXVnVaWEp6SUQwZ2UxeHVYSFJjZEZ3aUtsd2lPaUJiSUdaMWJtTjBhVzl1S0NCd2NtOXdMQ0IyWVd4MVpTQXBJSHRjYmx4MFhIUmNkSFpoY2lCMGQyVmxiaUE5SUhSb2FYTXVZM0psWVhSbFZIZGxaVzRvSUhCeWIzQXNJSFpoYkhWbElDa3NYRzVjZEZ4MFhIUmNkSFJoY21kbGRDQTlJSFIzWldWdUxtTjFjaWdwTEZ4dVhIUmNkRngwWEhSd1lYSjBjeUE5SUhKbWVHNTFiUzVsZUdWaktDQjJZV3gxWlNBcExGeHVYSFJjZEZ4MFhIUjFibWwwSUQwZ2NHRnlkSE1nSmlZZ2NHRnlkSE5iSURNZ1hTQjhmQ0FvSUdwUmRXVnllUzVqYzNOT2RXMWlaWEpiSUhCeWIzQWdYU0EvSUZ3aVhDSWdPaUJjSW5CNFhDSWdLU3hjYmx4dVhIUmNkRngwWEhRdkx5QlRkR0Z5ZEdsdVp5QjJZV3gxWlNCamIyMXdkWFJoZEdsdmJpQnBjeUJ5WlhGMWFYSmxaQ0JtYjNJZ2NHOTBaVzUwYVdGc0lIVnVhWFFnYldsemJXRjBZMmhsYzF4dVhIUmNkRngwWEhSemRHRnlkQ0E5SUNnZ2FsRjFaWEo1TG1OemMwNTFiV0psY2xzZ2NISnZjQ0JkSUh4OElIVnVhWFFnSVQwOUlGd2ljSGhjSWlBbUppQXJkR0Z5WjJWMElDa2dKaVpjYmx4MFhIUmNkRngwWEhSeVpuaHVkVzB1WlhobFl5Z2dhbEYxWlhKNUxtTnpjeWdnZEhkbFpXNHVaV3hsYlN3Z2NISnZjQ0FwSUNrc1hHNWNkRngwWEhSY2RITmpZV3hsSUQwZ01TeGNibHgwWEhSY2RGeDBiV0Y0U1hSbGNtRjBhVzl1Y3lBOUlESXdPMXh1WEc1Y2RGeDBYSFJwWmlBb0lITjBZWEowSUNZbUlITjBZWEowV3lBeklGMGdJVDA5SUhWdWFYUWdLU0I3WEc1Y2RGeDBYSFJjZEM4dklGUnlkWE4wSUhWdWFYUnpJSEpsY0c5eWRHVmtJR0o1SUdwUmRXVnllUzVqYzNOY2JseDBYSFJjZEZ4MGRXNXBkQ0E5SUhWdWFYUWdmSHdnYzNSaGNuUmJJRE1nWFR0Y2JseHVYSFJjZEZ4MFhIUXZMeUJOWVd0bElITjFjbVVnZDJVZ2RYQmtZWFJsSUhSb1pTQjBkMlZsYmlCd2NtOXdaWEowYVdWeklHeGhkR1Z5SUc5dVhHNWNkRngwWEhSY2RIQmhjblJ6SUQwZ2NHRnlkSE1nZkh3Z1cxMDdYRzVjYmx4MFhIUmNkRngwTHk4Z1NYUmxjbUYwYVhabGJIa2dZWEJ3Y205NGFXMWhkR1VnWm5KdmJTQmhJRzV2Ym5wbGNtOGdjM1JoY25ScGJtY2djRzlwYm5SY2JseDBYSFJjZEZ4MGMzUmhjblFnUFNBcmRHRnlaMlYwSUh4OElERTdYRzVjYmx4MFhIUmNkRngwWkc4Z2UxeHVYSFJjZEZ4MFhIUmNkQzh2SUVsbUlIQnlaWFpwYjNWeklHbDBaWEpoZEdsdmJpQjZaWEp2WldRZ2IzVjBMQ0JrYjNWaWJHVWdkVzUwYVd3Z2QyVWdaMlYwSUNwemIyMWxkR2hwYm1jcUxseHVYSFJjZEZ4MFhIUmNkQzh2SUZWelpTQnpkSEpwYm1jZ1ptOXlJR1J2ZFdKc2FXNW5JSE52SUhkbElHUnZiaWQwSUdGalkybGtaVzUwWVd4c2VTQnpaV1VnYzJOaGJHVWdZWE1nZFc1amFHRnVaMlZrSUdKbGJHOTNYRzVjZEZ4MFhIUmNkRngwYzJOaGJHVWdQU0J6WTJGc1pTQjhmQ0JjSWk0MVhDSTdYRzVjYmx4MFhIUmNkRngwWEhRdkx5QkJaR3AxYzNRZ1lXNWtJR0Z3Y0d4NVhHNWNkRngwWEhSY2RGeDBjM1JoY25RZ1BTQnpkR0Z5ZENBdklITmpZV3hsTzF4dVhIUmNkRngwWEhSY2RHcFJkV1Z5ZVM1emRIbHNaU2dnZEhkbFpXNHVaV3hsYlN3Z2NISnZjQ3dnYzNSaGNuUWdLeUIxYm1sMElDazdYRzVjYmx4MFhIUmNkRngwTHk4Z1ZYQmtZWFJsSUhOallXeGxMQ0IwYjJ4bGNtRjBhVzVuSUhwbGNtOGdiM0lnVG1GT0lHWnliMjBnZEhkbFpXNHVZM1Z5S0Nrc1hHNWNkRngwWEhSY2RDOHZJR0p5WldGcklIUm9aU0JzYjI5d0lHbG1JSE5qWVd4bElHbHpJSFZ1WTJoaGJtZGxaQ0J2Y2lCd1pYSm1aV04wTENCdmNpQnBaaUIzWlNkMlpTQnFkWE4wSUdoaFpDQmxibTkxWjJoY2JseDBYSFJjZEZ4MGZTQjNhR2xzWlNBb0lITmpZV3hsSUNFOVBTQW9jMk5oYkdVZ1BTQjBkMlZsYmk1amRYSW9LU0F2SUhSaGNtZGxkQ2tnSmlZZ2MyTmhiR1VnSVQwOUlERWdKaVlnTFMxdFlYaEpkR1Z5WVhScGIyNXpJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEM4dklGVndaR0YwWlNCMGQyVmxiaUJ3Y205d1pYSjBhV1Z6WEc1Y2RGeDBYSFJwWmlBb0lIQmhjblJ6SUNrZ2UxeHVYSFJjZEZ4MFhIUnpkR0Z5ZENBOUlIUjNaV1Z1TG5OMFlYSjBJRDBnSzNOMFlYSjBJSHg4SUN0MFlYSm5aWFFnZkh3Z01EdGNibHgwWEhSY2RGeDBkSGRsWlc0dWRXNXBkQ0E5SUhWdWFYUTdYRzVjZEZ4MFhIUmNkQzh2SUVsbUlHRWdLejB2TFQwZ2RHOXJaVzRnZDJGeklIQnliM1pwWkdWa0xDQjNaU2R5WlNCa2IybHVaeUJoSUhKbGJHRjBhWFpsSUdGdWFXMWhkR2x2Ymx4dVhIUmNkRngwWEhSMGQyVmxiaTVsYm1RZ1BTQndZWEowYzFzZ01TQmRJRDljYmx4MFhIUmNkRngwWEhSemRHRnlkQ0FySUNnZ2NHRnlkSE5iSURFZ1hTQXJJREVnS1NBcUlIQmhjblJ6V3lBeUlGMGdPbHh1WEhSY2RGeDBYSFJjZEN0d1lYSjBjMXNnTWlCZE8xeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUnlaWFIxY200Z2RIZGxaVzQ3WEc1Y2RGeDBmU0JkWEc1Y2RIMDdYRzVjYmk4dklFRnVhVzFoZEdsdmJuTWdZM0psWVhSbFpDQnplVzVqYUhKdmJtOTFjMng1SUhkcGJHd2djblZ1SUhONWJtTm9jbTl1YjNWemJIbGNibVoxYm1OMGFXOXVJR055WldGMFpVWjRUbTkzS0NrZ2UxeHVYSFJ6WlhSVWFXMWxiM1YwS0daMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEdaNFRtOTNJRDBnZFc1a1pXWnBibVZrTzF4dVhIUjlLVHRjYmx4MGNtVjBkWEp1SUNnZ1puaE9iM2NnUFNCcVVYVmxjbmt1Ym05M0tDa2dLVHRjYm4xY2JseHVMeThnUjJWdVpYSmhkR1VnY0dGeVlXMWxkR1Z5Y3lCMGJ5QmpjbVZoZEdVZ1lTQnpkR0Z1WkdGeVpDQmhibWx0WVhScGIyNWNibVoxYm1OMGFXOXVJR2RsYmtaNEtDQjBlWEJsTENCcGJtTnNkV1JsVjJsa2RHZ2dLU0I3WEc1Y2RIWmhjaUIzYUdsamFDeGNibHgwWEhScElEMGdNQ3hjYmx4MFhIUmhkSFJ5Y3lBOUlIc2dhR1ZwWjJoME9pQjBlWEJsSUgwN1hHNWNibHgwTHk4Z1NXWWdkMlVnYVc1amJIVmtaU0IzYVdSMGFDd2djM1JsY0NCMllXeDFaU0JwY3lBeElIUnZJR1J2SUdGc2JDQmpjM05GZUhCaGJtUWdkbUZzZFdWekxGeHVYSFF2THlCdmRHaGxjbmRwYzJVZ2MzUmxjQ0IyWVd4MVpTQnBjeUF5SUhSdklITnJhWEFnYjNabGNpQk1aV1owSUdGdVpDQlNhV2RvZEZ4dVhIUnBibU5zZFdSbFYybGtkR2dnUFNCcGJtTnNkV1JsVjJsa2RHZ2dQeUF4SURvZ01EdGNibHgwWm05eUlDZ2dPeUJwSUR3Z05DQTdJR2tnS3owZ01pQXRJR2x1WTJ4MVpHVlhhV1IwYUNBcElIdGNibHgwWEhSM2FHbGphQ0E5SUdOemMwVjRjR0Z1WkZzZ2FTQmRPMXh1WEhSY2RHRjBkSEp6V3lCY0ltMWhjbWRwYmx3aUlDc2dkMmhwWTJnZ1hTQTlJR0YwZEhKeld5QmNJbkJoW
14938kdScGJtZGNJaUFySUhkb2FXTm9JRjBnUFNCMGVYQmxPMXh1WEhSOVhHNWNibHgwYVdZZ0tDQnBibU5zZFdSbFYybGtkR2dnS1NCN1hHNWNkRngwWVhSMGNuTXViM0JoWTJsMGVTQTlJR0YwZEhKekxuZHBaSFJvSUQwZ2RIbHdaVHRjYmx4MGZWeHVYRzVjZEhKbGRIVnliaUJoZEhSeWN6dGNibjFjYmx4dVpuVnVZM1JwYjI0Z1kzSmxZWFJsVkhkbFpXNG9JSFpoYkhWbExDQndjbTl3TENCaGJtbHRZWFJwYjI0Z0tTQjdYRzVjZEhaaGNpQjBkMlZsYml4Y2JseDBYSFJqYjJ4c1pXTjBhVzl1SUQwZ0tDQjBkMlZsYm1WeWMxc2djSEp2Y0NCZElIeDhJRnRkSUNrdVkyOXVZMkYwS0NCMGQyVmxibVZ5YzFzZ1hDSXFYQ0lnWFNBcExGeHVYSFJjZEdsdVpHVjRJRDBnTUN4Y2JseDBYSFJzWlc1bmRHZ2dQU0JqYjJ4c1pXTjBhVzl1TG14bGJtZDBhRHRjYmx4MFptOXlJQ2dnT3lCcGJtUmxlQ0E4SUd4bGJtZDBhRHNnYVc1a1pYZ3JLeUFwSUh0Y2JseDBYSFJwWmlBb0lDaDBkMlZsYmlBOUlHTnZiR3hsWTNScGIyNWJJR2x1WkdWNElGMHVZMkZzYkNnZ1lXNXBiV0YwYVc5dUxDQndjbTl3TENCMllXeDFaU0FwS1NBcElIdGNibHh1WEhSY2RGeDBMeThnVjJVbmNtVWdaRzl1WlNCM2FYUm9JSFJvYVhNZ2NISnZjR1Z5ZEhsY2JseDBYSFJjZEhKbGRIVnliaUIwZDJWbGJqdGNibHgwWEhSOVhHNWNkSDFjYm4xY2JseHVablZ1WTNScGIyNGdaR1ZtWVhWc2RGQnlaV1pwYkhSbGNpZ2daV3hsYlN3Z2NISnZjSE1zSUc5d2RITWdLU0I3WEc1Y2RDOHFJR3B6YUdsdWRDQjJZV3hwWkhSb2FYTTZJSFJ5ZFdVZ0tpOWNibHgwZG1GeUlIQnliM0FzSUhaaGJIVmxMQ0IwYjJkbmJHVXNJSFIzWldWdUxDQm9iMjlyY3l3Z2IyeGtabWx5WlN3Z1pHbHpjR3hoZVN3Z1kyaGxZMnRFYVhOd2JHRjVMRnh1WEhSY2RHRnVhVzBnUFNCMGFHbHpMRnh1WEhSY2RHOXlhV2NnUFNCN2ZTeGNibHgwWEhSemRIbHNaU0E5SUdWc1pXMHVjM1I1YkdVc1hHNWNkRngwYUdsa1pHVnVJRDBnWld4bGJTNXViMlJsVkhsd1pTQW1KaUJwYzBocFpHUmxiaWdnWld4bGJTQXBMRnh1WEhSY2RHUmhkR0ZUYUc5M0lEMGdaR0YwWVY5d2NtbDJMbWRsZENnZ1pXeGxiU3dnWENKbWVITm9iM2RjSWlBcE8xeHVYRzVjZEM4dklFaGhibVJzWlNCeGRXVjFaVG9nWm1Gc2MyVWdjSEp2YldselpYTmNibHgwYVdZZ0tDQWhiM0IwY3k1eGRXVjFaU0FwSUh0Y2JseDBYSFJvYjI5cmN5QTlJR3BSZFdWeWVTNWZjWFZsZFdWSWIyOXJjeWdnWld4bGJTd2dYQ0ptZUZ3aUlDazdYRzVjZEZ4MGFXWWdLQ0JvYjI5cmN5NTFibkYxWlhWbFpDQTlQU0J1ZFd4c0lDa2dlMXh1WEhSY2RGeDBhRzl2YTNNdWRXNXhkV1YxWldRZ1BTQXdPMXh1WEhSY2RGeDBiMnhrWm1seVpTQTlJR2h2YjJ0ekxtVnRjSFI1TG1acGNtVTdYRzVjZEZ4MFhIUm9iMjlyY3k1bGJYQjBlUzVtYVhKbElEMGdablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBYSFJjZEdsbUlDZ2dJV2h2YjJ0ekxuVnVjWFZsZFdWa0lDa2dlMXh1WEhSY2RGeDBYSFJjZEc5c1pHWnBjbVVvS1R0Y2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MGZUdGNibHgwWEhSOVhHNWNkRngwYUc5dmEzTXVkVzV4ZFdWMVpXUXJLenRjYmx4dVhIUmNkR0Z1YVcwdVlXeDNZWGx6S0daMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MEx5OGdSVzV6ZFhKbElIUm9aU0JqYjIxd2JHVjBaU0JvWVc1a2JHVnlJR2x6SUdOaGJHeGxaQ0JpWldadmNtVWdkR2hwY3lCamIyMXdiR1YwWlhOY2JseDBYSFJjZEdGdWFXMHVZV3gzWVhsektHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RGeDBYSFJvYjI5cmN5NTFibkYxWlhWbFpDMHRPMXh1WEhSY2RGeDBYSFJwWmlBb0lDRnFVWFZsY25rdWNYVmxkV1VvSUdWc1pXMHNJRndpWm5oY0lpQXBMbXhsYm1kMGFDQXBJSHRjYmx4MFhIUmNkRngwWEhSb2IyOXJjeTVsYlhCMGVTNW1hWEpsS0NrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMHBPMXh1WEhSY2RIMHBPMXh1WEhSOVhHNWNibHgwTHk4Z1NHVnBaMmgwTDNkcFpIUm9JRzkyWlhKbWJHOTNJSEJoYzNOY2JseDBhV1lnS0NCbGJHVnRMbTV2WkdWVWVYQmxJRDA5UFNBeElDWW1JQ2dnWENKb1pXbG5hSFJjSWlCcGJpQndjbTl3Y3lCOGZDQmNJbmRwWkhSb1hDSWdhVzRnY0hKdmNITWdLU0FwSUh0Y2JseDBYSFF2THlCTllXdGxJSE4xY21VZ2RHaGhkQ0J1YjNSb2FXNW5JSE51WldGcmN5QnZkWFJjYmx4MFhIUXZMeUJTWldOdmNtUWdZV3hzSURNZ2IzWmxjbVpzYjNjZ1lYUjBjbWxpZFhSbGN5QmlaV05oZFhObElFbEZPUzB4TUNCa2J5QnViM1JjYmx4MFhIUXZMeUJqYUdGdVoyVWdkR2hsSUc5MlpYSm1iRzkzSUdGMGRISnBZblYwWlNCM2FHVnVJRzkyWlhKbWJHOTNXQ0JoYm1SY2JseDBYSFF2THlCdmRtVnlabXh2ZDFrZ1lYSmxJSE5sZENCMGJ5QjBhR1VnYzJGdFpTQjJZV3gxWlZ4dVhIUmNkRzl3ZEhNdWIzWmxjbVpzYjNjZ1BTQmJJSE4wZVd4bExtOTJaWEptYkc5M0xDQnpkSGxzWlM1dmRtVnlabXh2ZDFnc0lITjBlV3hsTG05MlpYSm1iRzkzV1NCZE8xeHVYRzVjZEZ4MEx5OGdVMlYwSUdScGMzQnNZWGtnY0hKdmNHVnlkSGtnZEc4Z2FXNXNhVzVsTFdKc2IyTnJJR1p2Y2lCb1pXbG5hSFF2ZDJsa2RHaGNibHgwWEhRdkx5QmhibWx0WVhScGIyNXpJRzl1SUdsdWJHbHVaU0JsYkdWdFpXNTBjeUIwYUdGMElHRnlaU0JvWVhacGJtY2dkMmxrZEdndmFHVnBaMmgwSUdGdWFXMWhkR1ZrWEc1Y2RGeDBaR2x6Y0d4aGVTQTlJR3BSZFdWeWVTNWpjM01vSUdWc1pXMHNJRndpWkdsemNHeGhlVndpSUNrN1hHNWNibHgwWEhRdkx5QlVaWE4wSUdSbFptRjFiSFFnWkdsemNHeGhlU0JwWmlCa2FYTndiR0Y1SUdseklHTjFjbkpsYm5Sc2VTQmNJbTV2Ym1WY0lseHVYSFJjZEdOb1pXTnJSR2x6Y0d4aGVTQTlJR1JwYzNCc1lYa2dQVDA5SUZ3aWJtOXVaVndpSUQ5Y2JseDBYSFJjZEdSaGRHRmZjSEpwZGk1blpYUW9JR1ZzWlcwc0lGd2liMnhrWkdsemNHeGhlVndpSUNrZ2ZId2daR1ZtWVhWc2RFUnBjM0JzWVhrb0lHVnNaVzB1Ym05a1pVNWhiV1VnS1NBNklHUnBjM0JzWVhrN1hHNWNibHgwWEhScFppQW9JR05vWldOclJHbHpjR3hoZVNBOVBUMGdYQ0pwYm14cGJtVmNJaUFtSmlCcVVYVmxjbmt1WTNOektDQmxiR1Z0TENCY0ltWnNiMkYwWENJZ0tTQTlQVDBnWENKdWIyNWxYQ0lnS1NCN1hHNWNkRngwWEhSemRIbHNaUzVrYVhOd2JHRjVJRDBnWENKcGJteHBibVV0WW14dlkydGNJanRjYmx4MFhIUjlYRzVjZEgxY2JseHVYSFJwWmlBb0lHOXdkSE11YjNabGNtWnNiM2NnS1NCN1hHNWNkRngwYzNSNWJHVXViM1psY21ac2IzY2dQU0JjSW1ocFpHUmxibHdpTzF4dVhIUmNkR0Z1YVcwdVlXeDNZWGx6S0daMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MGMzUjViR1V1YjNabGNtWnNiM2NnUFNCdmNIUnpMbTkyWlhKbWJHOTNXeUF3SUYwN1hHNWNkRngwWEhSemRIbHNaUzV2ZG1WeVpteHZkMWdnUFNCdmNIUnpMbTkyWlhKbWJHOTNXeUF4SUYwN1hHNWNkRngwWEhSemRIbHNaUzV2ZG1WeVpteHZkMWtnUFNCdmNIUnpMbTkyWlhKbWJHOTNXeUF5SUYwN1hHNWNkRngwZlNrN1hHNWNkSDFjYmx4dVhIUXZMeUJ6YUc5M0wyaHBaR1VnY0dGemMxeHVYSFJtYjNJZ0tDQndjbTl3SUdsdUlIQnliM0J6SUNrZ2UxeHVYSFJjZEhaaGJIVmxJRDBnY0hKdmNITmJJSEJ5YjNBZ1hUdGNibHgwWEhScFppQW9JSEptZUhSNWNHVnpMbVY0WldNb0lIWmhiSFZsSUNrZ0tTQjdYRzVjZEZ4MFhIUmtaV3hsZEdVZ2NISnZjSE5iSUhCeWIzQWdYVHRjYmx4MFhIUmNkSFJ2WjJkc1pTQTlJSFJ2W
14938jJkc1pTQjhmQ0IyWVd4MVpTQTlQVDBnWENKMGIyZG5iR1ZjSWp0Y2JseDBYSFJjZEdsbUlDZ2dkbUZzZFdVZ1BUMDlJQ2dnYUdsa1pHVnVJRDhnWENKb2FXUmxYQ0lnT2lCY0luTm9iM2RjSWlBcElDa2dlMXh1WEc1Y2RGeDBYSFJjZEM4dklFbG1JSFJvWlhKbElHbHpJR1JoZEdGVGFHOTNJR3hsWm5RZ2IzWmxjaUJtY205dElHRWdjM1J2Y0hCbFpDQm9hV1JsSUc5eUlITm9iM2NnWVc1a0lIZGxJR0Z5WlNCbmIybHVaeUIwYnlCd2NtOWpaV1ZrSUhkcGRHZ2djMmh2ZHl3Z2QyVWdjMmh2ZFd4a0lIQnlaWFJsYm1RZ2RHOGdZbVVnYUdsa1pHVnVYRzVjZEZ4MFhIUmNkR2xtSUNnZ2RtRnNkV1VnUFQwOUlGd2ljMmh2ZDF3aUlDWW1JR1JoZEdGVGFHOTNJQ1ltSUdSaGRHRlRhRzkzV3lCd2NtOXdJRjBnSVQwOUlIVnVaR1ZtYVc1bFpDQXBJSHRjYmx4MFhIUmNkRngwWEhSb2FXUmtaVzRnUFNCMGNuVmxPMXh1WEhSY2RGeDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBYSFJjZEdOdmJuUnBiblZsTzF4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSOVhHNWNkRngwWEhSdmNtbG5XeUJ3Y205d0lGMGdQU0JrWVhSaFUyaHZkeUFtSmlCa1lYUmhVMmh2ZDFzZ2NISnZjQ0JkSUh4OElHcFJkV1Z5ZVM1emRIbHNaU2dnWld4bGJTd2djSEp2Y0NBcE8xeHVYRzVjZEZ4MEx5OGdRVzU1SUc1dmJpMW1lQ0IyWVd4MVpTQnpkRzl3Y3lCMWN5Qm1jbTl0SUhKbGMzUnZjbWx1WnlCMGFHVWdiM0pwWjJsdVlXd2daR2x6Y0d4aGVTQjJZV3gxWlZ4dVhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUmthWE53YkdGNUlEMGdkVzVrWldacGJtVmtPMXh1WEhSY2RIMWNibHgwZlZ4dVhHNWNkR2xtSUNnZ0lXcFJkV1Z5ZVM1cGMwVnRjSFI1VDJKcVpXTjBLQ0J2Y21sbklDa2dLU0I3WEc1Y2RGeDBhV1lnS0NCa1lYUmhVMmh2ZHlBcElIdGNibHgwWEhSY2RHbG1JQ2dnWENKb2FXUmtaVzVjSWlCcGJpQmtZWFJoVTJodmR5QXBJSHRjYmx4MFhIUmNkRngwYUdsa1pHVnVJRDBnWkdGMFlWTm9iM2N1YUdsa1pHVnVPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMGdaV3h6WlNCN1hHNWNkRngwWEhSa1lYUmhVMmh2ZHlBOUlHUmhkR0ZmY0hKcGRpNWhZMk5sYzNNb0lHVnNaVzBzSUZ3aVpuaHphRzkzWENJc0lIdDlJQ2s3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnVTNSdmNtVWdjM1JoZEdVZ2FXWWdhWFJ6SUhSdloyZHNaU0F0SUdWdVlXSnNaWE1nTG5OMGIzQW9LUzUwYjJkbmJHVW9LU0IwYnlCY0luSmxkbVZ5YzJWY0lseHVYSFJjZEdsbUlDZ2dkRzluWjJ4bElDa2dlMXh1WEhSY2RGeDBaR0YwWVZOb2IzY3VhR2xrWkdWdUlEMGdJV2hwWkdSbGJqdGNibHgwWEhSOVhHNWNkRngwYVdZZ0tDQm9hV1JrWlc0Z0tTQjdYRzVjZEZ4MFhIUnFVWFZsY25rb0lHVnNaVzBnS1M1emFHOTNLQ2s3WEc1Y2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RHRnVhVzB1Wkc5dVpTaG1kVzVqZEdsdmJpZ3BJSHRjYmx4MFhIUmNkRngwYWxGMVpYSjVLQ0JsYkdWdElDa3VhR2xrWlNncE8xeHVYSFJjZEZ4MGZTazdYRzVjZEZ4MGZWeHVYSFJjZEdGdWFXMHVaRzl1WlNobWRXNWpkR2x2YmlncElIdGNibHgwWEhSY2RIWmhjaUJ3Y205d08xeHVYRzVjZEZ4MFhIUmtZWFJoWDNCeWFYWXVjbVZ0YjNabEtDQmxiR1Z0TENCY0ltWjRjMmh2ZDF3aUlDazdYRzVjZEZ4MFhIUm1iM0lnS0NCd2NtOXdJR2x1SUc5eWFXY2dLU0I3WEc1Y2RGeDBYSFJjZEdwUmRXVnllUzV6ZEhsc1pTZ2daV3hsYlN3Z2NISnZjQ3dnYjNKcFoxc2djSEp2Y0NCZElDazdYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZTazdYRzVjZEZ4MFptOXlJQ2dnY0hKdmNDQnBiaUJ2Y21sbklDa2dlMXh1WEhSY2RGeDBkSGRsWlc0Z1BTQmpjbVZoZEdWVWQyVmxiaWdnYUdsa1pHVnVJRDhnWkdGMFlWTm9iM2RiSUhCeWIzQWdYU0E2SURBc0lIQnliM0FzSUdGdWFXMGdLVHRjYmx4dVhIUmNkRngwYVdZZ0tDQWhLQ0J3Y205d0lHbHVJR1JoZEdGVGFHOTNJQ2tnS1NCN1hHNWNkRngwWEhSY2RHUmhkR0ZUYUc5M1d5QndjbTl3SUYwZ1BTQjBkMlZsYmk1emRHRnlkRHRjYmx4MFhIUmNkRngwYVdZZ0tDQm9hV1JrWlc0Z0tTQjdYRzVjZEZ4MFhIUmNkRngwZEhkbFpXNHVaVzVrSUQwZ2RIZGxaVzR1YzNSaGNuUTdYRzVjZEZ4MFhIUmNkRngwZEhkbFpXNHVjM1JoY25RZ1BTQndjbTl3SUQwOVBTQmNJbmRwWkhSb1hDSWdmSHdnY0hKdmNDQTlQVDBnWENKb1pXbG5hSFJjSWlBL0lERWdPaUF3TzF4dVhIUmNkRngwWEhSOVhHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhHNWNkQzh2SUVsbUlIUm9hWE1nYVhNZ1lTQnViMjl3SUd4cGEyVWdMbWhwWkdVb0tTNW9hV1JsS0Nrc0lISmxjM1J2Y21VZ1lXNGdiM1psY25keWFYUjBaVzRnWkdsemNHeGhlU0IyWVd4MVpWeHVYSFI5SUdWc2MyVWdhV1lnS0NBb1pHbHpjR3hoZVNBOVBUMGdYQ0p1YjI1bFhDSWdQeUJrWldaaGRXeDBSR2x6Y0d4aGVTZ2daV3hsYlM1dWIyUmxUbUZ0WlNBcElEb2daR2x6Y0d4aGVTa2dQVDA5SUZ3aWFXNXNhVzVsWENJZ0tTQjdYRzVjZEZ4MGMzUjViR1V1WkdsemNHeGhlU0E5SUdScGMzQnNZWGs3WEc1Y2RIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z2NISnZjRVpwYkhSbGNpZ2djSEp2Y0hNc0lITndaV05wWVd4RllYTnBibWNnS1NCN1hHNWNkSFpoY2lCcGJtUmxlQ3dnYm1GdFpTd2daV0Z6YVc1bkxDQjJZV3gxWlN3Z2FHOXZhM003WEc1Y2JseDBMeThnWTJGdFpXeERZWE5sTENCemNHVmphV0ZzUldGemFXNW5JR0Z1WkNCbGVIQmhibVFnWTNOelNHOXZheUJ3WVhOelhHNWNkR1p2Y2lBb0lHbHVaR1Y0SUdsdUlIQnliM0J6SUNrZ2UxeHVYSFJjZEc1aGJXVWdQU0JxVVhWbGNua3VZMkZ0Wld4RFlYTmxLQ0JwYm1SbGVDQXBPMXh1WEhSY2RHVmhjMmx1WnlBOUlITndaV05wWVd4RllYTnBibWRiSUc1aGJXVWdYVHRjYmx4MFhIUjJZV3gxWlNBOUlIQnliM0J6V3lCcGJtUmxlQ0JkTzF4dVhIUmNkR2xtSUNnZ2FsRjFaWEo1TG1selFYSnlZWGtvSUhaaGJIVmxJQ2tnS1NCN1hHNWNkRngwWEhSbFlYTnBibWNnUFNCMllXeDFaVnNnTVNCZE8xeHVYSFJjZEZ4MGRtRnNkV1VnUFNCd2NtOXdjMXNnYVc1a1pYZ2dYU0E5SUhaaGJIVmxXeUF3SUYwN1hHNWNkRngwZlZ4dVhHNWNkRngwYVdZZ0tDQnBibVJsZUNBaFBUMGdibUZ0WlNBcElIdGNibHgwWEhSY2RIQnliM0J6V3lCdVlXMWxJRjBnUFNCMllXeDFaVHRjYmx4MFhIUmNkR1JsYkdWMFpTQndjbTl3YzFzZ2FXNWtaWGdnWFR0Y2JseDBYSFI5WEc1Y2JseDBYSFJvYjI5cmN5QTlJR3BSZFdWeWVTNWpjM05JYjI5cmMxc2dibUZ0WlNCZE8xeHVYSFJjZEdsbUlDZ2dhRzl2YTNNZ0ppWWdYQ0psZUhCaGJtUmNJaUJwYmlCb2IyOXJjeUFwSUh0Y2JseDBYSFJjZEhaaGJIVmxJRDBnYUc5dmEzTXVaWGh3WVc1a0tDQjJZV3gxWlNBcE8xeHVYSFJjZEZ4MFpHVnNaWFJsSUhCeWIzQnpXeUJ1WVcxbElGMDdYRzVjYmx4MFhIUmNkQzh2SUU1dmRDQnhkV2wwWlNBa0xtVjRkR1Z1WkN3Z2RHaHBjeUIzYjI0bmRDQnZkbVZ5ZDNKcGRHVWdaWGhwYzNScGJtY2dhMlY1Y3k1Y2JseDBYSFJjZEM4dklGSmxkWE5wYm1jZ0oybHVaR1Y0SnlCaVpXTmhkWE5sSUhkbElHaGhkbVVnZEdobElHTnZjbkpsWTNRZ1hDSnVZVzFsWENKY2JseDBYSFJjZEdadmNpQW9JR2x1WkdWNElHbHVJSFpoYkhWbElDa2dlMXh1WEhSY2RGeDBYSFJwWmlBb0lDRW9JR2x1WkdWNElHbHVJSEJ5YjNCeklDa2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MGNISnZjSE5iSUdsdVpHVjRJRjBnUFNCMllXeDFaVnNnYVc1a1pYZ2dYVHRjYmx4MFhIUmNkRngwWEhSemNHVmphV0ZzUldGemFXNW5XeUJwYm1SbGVDQmRJRDBnWldGemFXNW5PMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RITndaV05wWVd4RllYTnBibWRiSUc1aGJXVWdYU0E5SUdWaGMybHVaenRjYmx4MFhIUjlYRzVjZEgxY2JuMWNibHh1Wm5WdVkzUnBiMjRnUVc1cGJXRjBhVzl1S0NCbGJHVnRMQ0J3Y205d1pYSjBhV1Z6TENCdmNIUnBiMjV6SUNrZ2UxeHVYSFIyWVhJZ2NtVnpkV3gwTEZ4dVhIUmNkSE4wYjNCd1pXUXNYRzVjZEZ4MGFXNWtaWGdnUFNBd0xGeHVYSFJjZEd4bGJtZDBhQ0E5SUdGdWFXMWhkR2x2YmxCeVpXWnBiSFJsY25NdWJHVnVaM1JvTEZ4dVhIUmNkR1JsWm1WeWNtVmtJRDBnYWxGMVpYSjVMa1JsWm1WeWNtVmtLQ2t1WVd4M1lYbHpLQ0JtZFc1amRHbHZiaWdwSUh0Y2JseDBYSFJjZEM4dklFUn
14938ZiaWQwSUcxaGRHTm9JR1ZzWlcwZ2FXNGdkR2hsSURwaGJtbHRZWFJsWkNCelpXeGxZM1J2Y2x4dVhIUmNkRngwWkdWc1pYUmxJSFJwWTJzdVpXeGxiVHRjYmx4MFhIUjlLU3hjYmx4MFhIUjBhV05ySUQwZ1puVnVZM1JwYjI0b0tTQjdYRzVjZEZ4MFhIUnBaaUFvSUhOMGIzQndaV1FnS1NCN1hHNWNkRngwWEhSY2RISmxkSFZ5YmlCbVlXeHpaVHRjYmx4MFhIUmNkSDFjYmx4MFhIUmNkSFpoY2lCamRYSnlaVzUwVkdsdFpTQTlJR1o0VG05M0lIeDhJR055WldGMFpVWjRUbTkzS0Nrc1hHNWNkRngwWEhSY2RISmxiV0ZwYm1sdVp5QTlJRTFoZEdndWJXRjRLQ0F3TENCaGJtbHRZWFJwYjI0dWMzUmhjblJVYVcxbElDc2dZVzVwYldGMGFXOXVMbVIxY21GMGFXOXVJQzBnWTNWeWNtVnVkRlJwYldVZ0tTeGNibHgwWEhSY2RGeDBMeThnVTNWd2NHOXlkRG9nUVc1a2NtOXBaQ0F5TGpOY2JseDBYSFJjZEZ4MEx5OGdRWEpqYUdGcFl5QmpjbUZ6YUNCaWRXY2dkMjl1SjNRZ1lXeHNiM2NnZFhNZ2RHOGdkWE5sSUdBeElDMGdLQ0F3TGpVZ2ZId2dNQ0FwWUNBb0l6RXlORGszS1Z4dVhIUmNkRngwWEhSMFpXMXdJRDBnY21WdFlXbHVhVzVuSUM4Z1lXNXBiV0YwYVc5dUxtUjFjbUYwYVc5dUlIeDhJREFzWEc1Y2RGeDBYSFJjZEhCbGNtTmxiblFnUFNBeElDMGdkR1Z0Y0N4Y2JseDBYSFJjZEZ4MGFXNWtaWGdnUFNBd0xGeHVYSFJjZEZ4MFhIUnNaVzVuZEdnZ1BTQmhibWx0WVhScGIyNHVkSGRsWlc1ekxteGxibWQwYUR0Y2JseHVYSFJjZEZ4MFptOXlJQ2dnT3lCcGJtUmxlQ0E4SUd4bGJtZDBhQ0E3SUdsdVpHVjRLeXNnS1NCN1hHNWNkRngwWEhSY2RHRnVhVzFoZEdsdmJpNTBkMlZsYm5OYklHbHVaR1Y0SUYwdWNuVnVLQ0J3WlhKalpXNTBJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEdSbFptVnljbVZrTG01dmRHbG1lVmRwZEdnb0lHVnNaVzBzSUZzZ1lXNXBiV0YwYVc5dUxDQndaWEpqWlc1MExDQnlaVzFoYVc1cGJtY2dYU2s3WEc1Y2JseDBYSFJjZEdsbUlDZ2djR1Z5WTJWdWRDQThJREVnSmlZZ2JHVnVaM1JvSUNrZ2UxeHVYSFJjZEZ4MFhIUnlaWFIxY200Z2NtVnRZV2x1YVc1bk8xeHVYSFJjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEZ4MFpHVm1aWEp5WldRdWNtVnpiMngyWlZkcGRHZ29JR1ZzWlcwc0lGc2dZVzVwYldGMGFXOXVJRjBnS1R0Y2JseDBYSFJjZEZ4MGNtVjBkWEp1SUdaaGJITmxPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMHNYRzVjZEZ4MFlXNXBiV0YwYVc5dUlEMGdaR1ZtWlhKeVpXUXVjSEp2YldselpTaDdYRzVjZEZ4MFhIUmxiR1Z0T2lCbGJHVnRMRnh1WEhSY2RGeDBjSEp2Y0hNNklHcFJkV1Z5ZVM1bGVIUmxibVFvSUh0OUxDQndjbTl3WlhKMGFXVnpJQ2tzWEc1Y2RGeDBYSFJ2Y0hSek9pQnFVWFZsY25rdVpYaDBaVzVrS0NCMGNuVmxMQ0I3SUhOd1pXTnBZV3hGWVhOcGJtYzZJSHQ5SUgwc0lHOXdkR2x2Ym5NZ0tTeGNibHgwWEhSY2RHOXlhV2RwYm1Gc1VISnZjR1Z5ZEdsbGN6b2djSEp2Y0dWeWRHbGxjeXhjYmx4MFhIUmNkRzl5YVdkcGJtRnNUM0IwYVc5dWN6b2diM0IwYVc5dWN5eGNibHgwWEhSY2RITjBZWEowVkdsdFpUb2dabmhPYjNjZ2ZId2dZM0psWVhSbFJuaE9iM2NvS1N4Y2JseDBYSFJjZEdSMWNtRjBhVzl1T2lCdmNIUnBiMjV6TG1SMWNtRjBhVzl1TEZ4dVhIUmNkRngwZEhkbFpXNXpPaUJiWFN4Y2JseDBYSFJjZEdOeVpXRjBaVlIzWldWdU9pQm1kVzVqZEdsdmJpZ2djSEp2Y0N3Z1pXNWtJQ2tnZTF4dVhIUmNkRngwWEhSMllYSWdkSGRsWlc0Z1BTQnFVWFZsY25rdVZIZGxaVzRvSUdWc1pXMHNJR0Z1YVcxaGRHbHZiaTV2Y0hSekxDQndjbTl3TENCbGJtUXNYRzVjZEZ4MFhIUmNkRngwWEhSaGJtbHRZWFJwYjI0dWIzQjBjeTV6Y0dWamFXRnNSV0Z6YVc1bld5QndjbTl3SUYwZ2ZId2dZVzVwYldGMGFXOXVMbTl3ZEhNdVpXRnphVzVuSUNrN1hHNWNkRngwWEhSY2RHRnVhVzFoZEdsdmJpNTBkMlZsYm5NdWNIVnphQ2dnZEhkbFpXNGdLVHRjYmx4MFhIUmNkRngwY21WMGRYSnVJSFIzWldWdU8xeHVYSFJjZEZ4MGZTeGNibHgwWEhSY2RITjBiM0E2SUdaMWJtTjBhVzl1S0NCbmIzUnZSVzVrSUNrZ2UxeHVYSFJjZEZ4MFhIUjJZWElnYVc1a1pYZ2dQU0F3TEZ4dVhIUmNkRngwWEhSY2RDOHZJRWxtSUhkbElHRnlaU0JuYjJsdVp5QjBieUIwYUdVZ1pXNWtMQ0IzWlNCM1lXNTBJSFJ2SUhKMWJpQmhiR3dnZEdobElIUjNaV1Z1YzF4dVhIUmNkRngwWEhSY2RDOHZJRzkwYUdWeWQybHpaU0IzWlNCemEybHdJSFJvYVhNZ2NHRnlkRnh1WEhSY2RGeDBYSFJjZEd4bGJtZDBhQ0E5SUdkdmRHOUZibVFnUHlCaGJtbHRZWFJwYjI0dWRIZGxaVzV6TG14bGJtZDBhQ0E2SURBN1hHNWNkRngwWEhSY2RHbG1JQ2dnYzNSdmNIQmxaQ0FwSUh0Y2JseDBYSFJjZEZ4MFhIUnlaWFIxY200Z2RHaHBjenRjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSemRHOXdjR1ZrSUQwZ2RISjFaVHRjYmx4MFhIUmNkRngwWm05eUlDZ2dPeUJwYm1SbGVDQThJR3hsYm1kMGFDQTdJR2x1WkdWNEt5c2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MFlXNXBiV0YwYVc5dUxuUjNaV1Z1YzFzZ2FXNWtaWGdnWFM1eWRXNG9JREVnS1R0Y2JseDBYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUmNkQzh2SUZKbGMyOXNkbVVnZDJobGJpQjNaU0J3YkdGNVpXUWdkR2hsSUd4aGMzUWdabkpoYldVN0lHOTBhR1Z5ZDJselpTd2djbVZxWldOMFhHNWNkRngwWEhSY2RHbG1JQ2dnWjI5MGIwVnVaQ0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmtaV1psY25KbFpDNXlaWE52YkhabFYybDBhQ2dnWld4bGJTd2dXeUJoYm1sdFlYUnBiMjRzSUdkdmRHOUZibVFnWFNBcE8xeHVYSFJjZEZ4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MFhIUmNkR1JsWm1WeWNtVmtMbkpsYW1WamRGZHBkR2dvSUdWc1pXMHNJRnNnWVc1cGJXRjBhVzl1TENCbmIzUnZSVzVrSUYwZ0tUdGNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdkR2hwY3p0Y2JseDBYSFJjZEgxY2JseDBYSFI5S1N4Y2JseDBYSFJ3Y205d2N5QTlJR0Z1YVcxaGRHbHZiaTV3Y205d2N6dGNibHh1WEhSd2NtOXdSbWxzZEdWeUtDQndjbTl3Y3l3Z1lXNXBiV0YwYVc5dUxtOXdkSE11YzNCbFkybGhiRVZoYzJsdVp5QXBPMXh1WEc1Y2RHWnZjaUFvSURzZ2FXNWtaWGdnUENCc1pXNW5kR2dnT3lCcGJtUmxlQ3NySUNrZ2UxeHVYSFJjZEhKbGMzVnNkQ0E5SUdGdWFXMWhkR2x2YmxCeVpXWnBiSFJsY25OYklHbHVaR1Y0SUYwdVkyRnNiQ2dnWVc1cGJXRjBhVzl1TENCbGJHVnRMQ0J3Y205d2N5d2dZVzVwYldGMGFXOXVMbTl3ZEhNZ0tUdGNibHgwWEhScFppQW9JSEpsYzNWc2RDQXBJSHRjYmx4MFhIUmNkSEpsZEhWeWJpQnlaWE4xYkhRN1hHNWNkRngwZlZ4dVhIUjlYRzVjYmx4MGFsRjFaWEo1TG0xaGNDZ2djSEp2Y0hNc0lHTnlaV0YwWlZSM1pXVnVMQ0JoYm1sdFlYUnBiMjRnS1R0Y2JseHVYSFJwWmlBb0lHcFJkV1Z5ZVM1cGMwWjFibU4wYVc5dUtDQmhibWx0WVhScGIyNHViM0IwY3k1emRHRnlkQ0FwSUNrZ2UxeHVYSFJjZEdGdWFXMWhkR2x2Ymk1dm
14938NIUnpMbk4wWVhKMExtTmhiR3dvSUdWc1pXMHNJR0Z1YVcxaGRHbHZiaUFwTzF4dVhIUjlYRzVjYmx4MGFsRjFaWEo1TG1aNExuUnBiV1Z5S0Z4dVhIUmNkR3BSZFdWeWVTNWxlSFJsYm1Rb0lIUnBZMnNzSUh0Y2JseDBYSFJjZEdWc1pXMDZJR1ZzWlcwc1hHNWNkRngwWEhSaGJtbHRPaUJoYm1sdFlYUnBiMjRzWEc1Y2RGeDBYSFJ4ZFdWMVpUb2dZVzVwYldGMGFXOXVMbTl3ZEhNdWNYVmxkV1ZjYmx4MFhIUjlLVnh1WEhRcE8xeHVYRzVjZEM4dklHRjBkR0ZqYUNCallXeHNZbUZqYTNNZ1puSnZiU0J2Y0hScGIyNXpYRzVjZEhKbGRIVnliaUJoYm1sdFlYUnBiMjR1Y0hKdlozSmxjM01vSUdGdWFXMWhkR2x2Ymk1dmNIUnpMbkJ5YjJkeVpYTnpJQ2xjYmx4MFhIUXVaRzl1WlNnZ1lXNXBiV0YwYVc5dUxtOXdkSE11Wkc5dVpTd2dZVzVwYldGMGFXOXVMbTl3ZEhNdVkyOXRjR3hsZEdVZ0tWeHVYSFJjZEM1bVlXbHNLQ0JoYm1sdFlYUnBiMjR1YjNCMGN5NW1ZV2xzSUNsY2JseDBYSFF1WVd4M1lYbHpLQ0JoYm1sdFlYUnBiMjR1YjNCMGN5NWhiSGRoZVhNZ0tUdGNibjFjYmx4dWFsRjFaWEo1TGtGdWFXMWhkR2x2YmlBOUlHcFJkV1Z5ZVM1bGVIUmxibVFvSUVGdWFXMWhkR2x2Yml3Z2UxeHVYRzVjZEhSM1pXVnVaWEk2SUdaMWJtTjBhVzl1S0NCd2NtOXdjeXdnWTJGc2JHSmhZMnNnS1NCN1hHNWNkRngwYVdZZ0tDQnFVWFZsY25rdWFYTkdkVzVqZEdsdmJpZ2djSEp2Y0hNZ0tTQXBJSHRjYmx4MFhIUmNkR05oYkd4aVlXTnJJRDBnY0hKdmNITTdYRzVjZEZ4MFhIUndjbTl3Y3lBOUlGc2dYQ0lxWENJZ1hUdGNibHgwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwY0hKdmNITWdQU0J3Y205d2N5NXpjR3hwZENoY0lpQmNJaWs3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBkbUZ5SUhCeWIzQXNYRzVjZEZ4MFhIUnBibVJsZUNBOUlEQXNYRzVjZEZ4MFhIUnNaVzVuZEdnZ1BTQndjbTl3Y3k1c1pXNW5kR2c3WEc1Y2JseDBYSFJtYjNJZ0tDQTdJR2x1WkdWNElEd2diR1Z1WjNSb0lEc2dhVzVrWlhnckt5QXBJSHRjYmx4MFhIUmNkSEJ5YjNBZ1BTQndjbTl3YzFzZ2FXNWtaWGdnWFR0Y2JseDBYSFJjZEhSM1pXVnVaWEp6V3lCd2NtOXdJRjBnUFNCMGQyVmxibVZ5YzFzZ2NISnZjQ0JkSUh4OElGdGRPMXh1WEhSY2RGeDBkSGRsWlc1bGNuTmJJSEJ5YjNBZ1hTNTFibk5vYVdaMEtDQmpZV3hzWW1GamF5QXBPMXh1WEhSY2RIMWNibHgwZlN4Y2JseHVYSFJ3Y21WbWFXeDBaWEk2SUdaMWJtTjBhVzl1S0NCallXeHNZbUZqYXl3Z2NISmxjR1Z1WkNBcElIdGNibHgwWEhScFppQW9JSEJ5WlhCbGJtUWdLU0I3WEc1Y2RGeDBYSFJoYm1sdFlYUnBiMjVRY21WbWFXeDBaWEp6TG5WdWMyaHBablFvSUdOaGJHeGlZV05ySUNrN1hHNWNkRngwZlNCbGJITmxJSHRjYmx4MFhIUmNkR0Z1YVcxaGRHbHZibEJ5WldacGJIUmxjbk11Y0hWemFDZ2dZMkZzYkdKaFkyc2dLVHRjYmx4MFhIUjlYRzVjZEgxY2JuMHBPMXh1WEc1cVVYVmxjbmt1YzNCbFpXUWdQU0JtZFc1amRHbHZiaWdnYzNCbFpXUXNJR1ZoYzJsdVp5d2dabTRnS1NCN1hHNWNkSFpoY2lCdmNIUWdQU0J6Y0dWbFpDQW1KaUIwZVhCbGIyWWdjM0JsWldRZ1BUMDlJRndpYjJKcVpXTjBYQ0lnUHlCcVVYVmxjbmt1WlhoMFpXNWtLQ0I3ZlN3Z2MzQmxaV1FnS1NBNklIdGNibHgwWEhSamIyMXdiR1YwWlRvZ1ptNGdmSHdnSVdadUlDWW1JR1ZoYzJsdVp5QjhmRnh1WEhSY2RGeDBhbEYxWlhKNUxtbHpSblZ1WTNScGIyNG9JSE53WldWa0lDa2dKaVlnYzNCbFpXUXNYRzVjZEZ4MFpIVnlZWFJwYjI0NklITndaV1ZrTEZ4dVhIUmNkR1ZoYzJsdVp6b2dabTRnSmlZZ1pXRnphVzVuSUh4OElHVmhjMmx1WnlBbUppQWhhbEYxWlhKNUxtbHpSblZ1WTNScGIyNG9JR1ZoYzJsdVp5QXBJQ1ltSUdWaGMybHVaMXh1WEhSOU8xeHVYRzVjZEc5d2RDNWtkWEpoZEdsdmJpQTlJR3BSZFdWeWVTNW1lQzV2Wm1ZZ1B5QXdJRG9nZEhsd1pXOW1JRzl3ZEM1a2RYSmhkR2x2YmlBOVBUMGdYQ0p1ZFcxaVpYSmNJaUEvSUc5d2RDNWtkWEpoZEdsdmJpQTZYRzVjZEZ4MGIzQjBMbVIxY21GMGFXOXVJR2x1SUdwUmRXVnllUzVtZUM1emNHVmxaSE1nUHlCcVVYVmxjbmt1Wm5ndWMzQmxaV1J6V3lCdmNIUXVaSFZ5WVhScGIyNGdYU0E2SUdwUmRXVnllUzVtZUM1emNHVmxaSE11WDJSbFptRjFiSFE3WEc1Y2JseDBMeThnVG05eWJXRnNhWHBsSUc5d2RDNXhkV1YxWlNBdElIUnlkV1V2ZFc1a1pXWnBibVZrTDI1MWJHd2dMVDRnWENKbWVGd2lYRzVjZEdsbUlDZ2diM0IwTG5GMVpYVmxJRDA5SUc1MWJHd2dmSHdnYjNCMExuRjFaWFZsSUQwOVBTQjBjblZsSUNrZ2UxeHVYSFJjZEc5d2RDNXhkV1YxWlNBOUlGd2labmhjSWp0Y2JseDBmVnh1WEc1Y2RDOHZJRkYxWlhWbGFXNW5YRzVjZEc5d2RDNXZiR1FnUFNCdmNIUXVZMjl0Y0d4bGRHVTdYRzVjYmx4MGIzQjBMbU52YlhCc1pYUmxJRDBnWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwYVdZZ0tDQnFVWFZsY25rdWFYTkdkVzVqZEdsdmJpZ2diM0IwTG05c1pDQXBJQ2tnZTF4dVhIUmNkRngwYjNCMExtOXNaQzVqWVd4c0tDQjBhR2x6SUNrN1hHNWNkRngwZlZ4dVhHNWNkRngwYVdZZ0tDQnZjSFF1Y1hWbGRXVWdLU0I3WEc1Y2RGeDBYSFJxVVhWbGNua3VaR1Z4ZFdWMVpTZ2dkR2hwY3l3Z2IzQjBMbkYxWlhWbElDazdYRzVjZEZ4MGZWeHVYSFI5TzF4dVhHNWNkSEpsZEhWeWJpQnZjSFE3WEc1OU8xeHVYRzVxVVhWbGNua3VabTR1WlhoMFpXNWtLSHRjYmx4MFptRmtaVlJ2T2lCbWRXNWpkR2x2YmlnZ2MzQmxaV1FzSUhSdkxDQmxZWE5wYm1jc0lHTmhiR3hpWVdOcklDa2dlMXh1WEc1Y2RGeDBMeThnVTJodmR5QmhibmtnYUdsa1pHVnVJR1ZzWlcxbGJuUnpJR0ZtZEdWeUlITmxkSFJwYm1jZ2IzQmhZMmwwZVNCMGJ5QXdYRzVjZEZ4MGNtVjBkWEp1SUhSb2FYTXVabWxzZEdWeUtDQnBjMGhwWkdSbGJpQXBMbU56Y3lnZ1hDSnZjR0ZqYVhSNVhDSXNJREFnS1M1emFHOTNLQ2xjYmx4dVhIUmNkRngwTHk4Z1FXNXBiV0YwWlNCMGJ5QjBhR1VnZG1Gc2RXVWdjM0JsWTJsbWFXVmtYRzVjZEZ4MFhIUXVaVzVrS0NrdVlXNXBiV0YwWlNoN0lHOXdZV05wZEhrNklIUnZJSDBzSUhOd1pXVmtMQ0JsWVhOcGJtY3NJR05oYkd4aVlXTnJJQ2s3WEc1Y2RIMHNYRzVjZEdGdWFXMWhkR1U2SUdaMWJtTjBhVzl1S0NCd2NtOXdMQ0J6Y0dWbFpDd2daV0Z6YVc1bkxDQmpZV3hzWW1GamF5QXBJSHRjYmx4MFhIUjJZWElnWlcxd2RIa2dQU0JxVVhWbGNua3VhWE5GYlhCMGVVOWlhbVZqZENnZ2NISnZjQ0FwTEZ4dVhIUmNkRngwYjNCMFlXeHNJRDBnYWxGMVpYSjVMbk53WldWa0tDQnpjR1ZsWkN3Z1pXRnphVzVuTENCallXeHNZbUZqYXlBcExGeHVYSFJjZEZ4MFpHOUJibWx0WVhScGIyNGdQU0JtZFc1amRHbHZiaWdwSUh0Y2JseDBYSFJjZEZ4MEx5OGdUM0JsY21GMFpTQnZiaUJoSUdOdmNIa2diMllnY0hKdmNDQnpieUJ3WlhJdGNISnZjR1Z5ZEhrZ1pXRnphVzVuSUhkdmJpZDBJR0psSUd4dmMzUmNibHgwWEhSY2RGeDBkbUZ5SUdGdWFXMGdQU0JCYm1sdFlYUnBiMjRvSUhSb2FYTXNJR3BSZFdWeWVTNWxlSFJsYm1Rb0lIdDlMQ0J3Y205d0lDa3NJRzl3ZEdGc2JDQXBPMXh1WEc1Y2RGeDBYSFJjZEM4dklFVnRjSFI1SUdGdWFXMWhkR2x2Ym5Nc0lHOXlJR1pwYm1semFHbHVaeUJ5WlhOdmJIWmxjeUJwYlcxbFpHbGhkR1ZzZVZ4dVhIUmNkRngwWEhScFppQW9JR1Z0Y0hSNUlIeDhJR1JoZEdGZmNISnBkaTVuWlhRb0lIUm9hWE1zSUZ3aVptbHVhWE5vWENJZ0tTQXBJSHRjYmx4MFhIUmNkRngwWEhSaGJtbHRMbk4wYjNBb
149380lIUnlkV1VnS1R0Y2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MGZUdGNibHgwWEhSY2RHUnZRVzVwYldGMGFXOXVMbVpwYm1semFDQTlJR1J2UVc1cGJXRjBhVzl1TzF4dVhHNWNkRngwY21WMGRYSnVJR1Z0Y0hSNUlIeDhJRzl3ZEdGc2JDNXhkV1YxWlNBOVBUMGdabUZzYzJVZ1AxeHVYSFJjZEZ4MGRHaHBjeTVsWVdOb0tDQmtiMEZ1YVcxaGRHbHZiaUFwSURwY2JseDBYSFJjZEhSb2FYTXVjWFZsZFdVb0lHOXdkR0ZzYkM1eGRXVjFaU3dnWkc5QmJtbHRZWFJwYjI0Z0tUdGNibHgwZlN4Y2JseDBjM1J2Y0RvZ1puVnVZM1JwYjI0b0lIUjVjR1VzSUdOc1pXRnlVWFZsZFdVc0lHZHZkRzlGYm1RZ0tTQjdYRzVjZEZ4MGRtRnlJSE4wYjNCUmRXVjFaU0E5SUdaMWJtTjBhVzl1S0NCb2IyOXJjeUFwSUh0Y2JseDBYSFJjZEhaaGNpQnpkRzl3SUQwZ2FHOXZhM011YzNSdmNEdGNibHgwWEhSY2RHUmxiR1YwWlNCb2IyOXJjeTV6ZEc5d08xeHVYSFJjZEZ4MGMzUnZjQ2dnWjI5MGIwVnVaQ0FwTzF4dVhIUmNkSDA3WEc1Y2JseDBYSFJwWmlBb0lIUjVjR1Z2WmlCMGVYQmxJQ0U5UFNCY0luTjBjbWx1WjF3aUlDa2dlMXh1WEhSY2RGeDBaMjkwYjBWdVpDQTlJR05zWldGeVVYVmxkV1U3WEc1Y2RGeDBYSFJqYkdWaGNsRjFaWFZsSUQwZ2RIbHdaVHRjYmx4MFhIUmNkSFI1Y0dVZ1BTQjFibVJsWm1sdVpXUTdYRzVjZEZ4MGZWeHVYSFJjZEdsbUlDZ2dZMnhsWVhKUmRXVjFaU0FtSmlCMGVYQmxJQ0U5UFNCbVlXeHpaU0FwSUh0Y2JseDBYSFJjZEhSb2FYTXVjWFZsZFdVb0lIUjVjR1VnZkh3Z1hDSm1lRndpTENCYlhTQXBPMXh1WEhSY2RIMWNibHh1WEhSY2RISmxkSFZ5YmlCMGFHbHpMbVZoWTJnb1puVnVZM1JwYjI0b0tTQjdYRzVjZEZ4MFhIUjJZWElnWkdWeGRXVjFaU0E5SUhSeWRXVXNYRzVjZEZ4MFhIUmNkR2x1WkdWNElEMGdkSGx3WlNBaFBTQnVkV3hzSUNZbUlIUjVjR1VnS3lCY0luRjFaWFZsU0c5dmEzTmNJaXhjYmx4MFhIUmNkRngwZEdsdFpYSnpJRDBnYWxGMVpYSjVMblJwYldWeWN5eGNibHgwWEhSY2RGeDBaR0YwWVNBOUlHUmhkR0ZmY0hKcGRpNW5aWFFvSUhSb2FYTWdLVHRjYmx4dVhIUmNkRngwYVdZZ0tDQnBibVJsZUNBcElIdGNibHgwWEhSY2RGeDBhV1lnS0NCa1lYUmhXeUJwYm1SbGVDQmRJQ1ltSUdSaGRHRmJJR2x1WkdWNElGMHVjM1J2Y0NBcElIdGNibHgwWEhSY2RGeDBYSFJ6ZEc5d1VYVmxkV1VvSUdSaGRHRmJJR2x1WkdWNElGMGdLVHRjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwZlNCbGJITmxJSHRjYmx4MFhIUmNkRngwWm05eUlDZ2dhVzVrWlhnZ2FXNGdaR0YwWVNBcElIdGNibHgwWEhSY2RGeDBYSFJwWmlBb0lHUmhkR0ZiSUdsdVpHVjRJRjBnSmlZZ1pHRjBZVnNnYVc1a1pYZ2dYUzV6ZEc5d0lDWW1JSEp5ZFc0dWRHVnpkQ2dnYVc1a1pYZ2dLU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmNkSE4wYjNCUmRXVjFaU2dnWkdGMFlWc2dhVzVrWlhnZ1hTQXBPMXh1WEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUm1iM0lnS0NCcGJtUmxlQ0E5SUhScGJXVnljeTVzWlc1bmRHZzdJR2x1WkdWNExTMDdJQ2tnZTF4dVhIUmNkRngwWEhScFppQW9JSFJwYldWeWMxc2dhVzVrWlhnZ1hTNWxiR1Z0SUQwOVBTQjBhR2x6SUNZbUlDaDBlWEJsSUQwOUlHNTFiR3dnZkh3Z2RHbHRaWEp6V3lCcGJtUmxlQ0JkTG5GMVpYVmxJRDA5UFNCMGVYQmxLU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUjBhVzFsY25OYklHbHVaR1Y0SUYwdVlXNXBiUzV6ZEc5d0tDQm5iM1J2Ulc1a0lDazdYRzVjZEZ4MFhIUmNkRngwWkdWeGRXVjFaU0E5SUdaaGJITmxPMXh1WEhSY2RGeDBYSFJjZEhScGJXVnljeTV6Y0d4cFkyVW9JR2x1WkdWNExDQXhJQ2s3WEc1Y2RGeDBYSFJjZEgxY2JseDBYSFJjZEgxY2JseHVYSFJjZEZ4MEx5OGdVM1JoY25RZ2RHaGxJRzVsZUhRZ2FXNGdkR2hsSUhGMVpYVmxJR2xtSUhSb1pTQnNZWE4wSUhOMFpYQWdkMkZ6YmlkMElHWnZjbU5sWkM1Y2JseDBYSFJjZEM4dklGUnBiV1Z5Y3lCamRYSnlaVzUwYkhrZ2QybHNiQ0JqWVd4c0lIUm9aV2x5SUdOdmJYQnNaWFJsSUdOaGJHeGlZV05yY3l3Z2QyaHBZMmhjYmx4MFhIUmNkQzh2SUhkcGJHd2daR1Z4ZFdWMVpTQmlkWFFnYjI1c2VTQnBaaUIwYUdWNUlIZGxjbVVnWjI5MGIwVnVaQzVjYmx4MFhIUmNkR2xtSUNnZ1pHVnhkV1YxWlNCOGZDQWhaMjkwYjBWdVpDQXBJSHRjYmx4MFhIUmNkRngwYWxGMVpYSjVMbVJsY1hWbGRXVW9JSFJvYVhNc0lIUjVjR1VnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5S1R0Y2JseDBmU3hjYmx4MFptbHVhWE5vT2lCbWRXNWpkR2x2YmlnZ2RIbHdaU0FwSUh0Y2JseDBYSFJwWmlBb0lIUjVjR1VnSVQwOUlHWmhiSE5sSUNrZ2UxeHVYSFJjZEZ4MGRIbHdaU0E5SUhSNWNHVWdmSHdnWENKbWVGd2lPMXh1WEhSY2RIMWNibHgwWEhSeVpYUjFjbTRnZEdocGN5NWxZV05vS0daMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MGRtRnlJR2x1WkdWNExGeHVYSFJjZEZ4MFhIUmtZWFJoSUQwZ1pHRjBZVjl3Y21sMkxtZGxkQ2dnZEdocGN5QXBMRnh1WEhSY2RGeDBYSFJ4ZFdWMVpTQTlJR1JoZEdGYklIUjVjR1VnS3lCY0luRjFaWFZsWENJZ1hTeGNibHgwWEhSY2RGeDBhRzl2YTNNZ1BTQmtZWFJoV3lCMGVYQmxJQ3NnWENKeGRXVjFaVWh2YjJ0elhDSWdYU3hjYmx4MFhIUmNkRngwZEdsdFpYSnpJRDBnYWxGMVpYSjVMblJwYldWeWN5eGNibHgwWEhSY2RGeDBiR1Z1WjNSb0lEMGdjWFZsZFdVZ1B5QnhkV1YxWlM1c1pXNW5kR2dnT2lBd08xeHVYRzVjZEZ4MFhIUXZMeUJGYm1GaWJHVWdabWx1YVhOb2FXNW5JR1pzWVdjZ2IyNGdjSEpwZG1GMFpTQmtZWFJoWEc1Y2RGeDBYSFJrWVhSaExtWnBibWx6YUNBOUlIUnlkV1U3WEc1Y2JseDBYSFJjZEM4dklFVnRjSFI1SUhSb1pTQnhkV1YxWlNCbWFYSnpkRnh1WEhSY2RGeDBhbEYxWlhKNUxuRjFaWFZsS0NCMGFHbHpMQ0IwZVhCbExDQmJYU0FwTzF4dVhHNWNkRngwWEhScFppQW9JR2h2YjJ0eklDWW1JR2h2YjJ0ekxuTjBiM0FnS1NCN1hHNWNkRngwWEhSY2RHaHZiMnR6TG5OMGIzQXVZMkZzYkNnZ2RHaHBjeXdnZEhKMVpTQXBPMXh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFF2THlCTWIyOXJJR1p2Y2lCaGJua2dZV04wYVhabElHRnVhVzFoZEdsdmJuTXNJR0Z1WkNCbWFXNXBjMmdnZEdobGJWeHVYSFJjZEZ4MFptOXlJQ2dnYVc1a1pYZ2dQU0IwYVcxbGNuTXViR1Z1WjNSb095QnBibVJsZUMwdE95QXBJSHRjYmx4MFhIUmNkRngwYVdZZ0tDQjBhVzFsY25OYklHbHVaR1Y0SUYwdVpXeGxiU0E5UFQwZ2RHaHBjeUFtSmlCMGFXMWxjbk5iSUdsdVpHVjRJRjB1Y1hWbGRXVWdQVDA5SUhSNWNHVWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MGRHbHRaWEp6V3lCcGJtUmxlQ0JkTG1GdWFXMHVjM1J2Y0NnZ2RISjFaU0FwTzF4dVhIUmNkRngwWEhSY2RIUnBiV1Z5Y3k1emNHeHBZMlVvSUdsdVpHVjRMQ0F4SUNrN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnVEc
149385dmF5Qm1iM0lnWVc1NUlHRnVhVzFoZEdsdmJuTWdhVzRnZEdobElHOXNaQ0J4ZFdWMVpTQmhibVFnWm1sdWFYTm9JSFJvWlcxY2JseDBYSFJjZEdadmNpQW9JR2x1WkdWNElEMGdNRHNnYVc1a1pYZ2dQQ0JzWlc1bmRHZzdJR2x1WkdWNEt5c2dLU0I3WEc1Y2RGeDBYSFJjZEdsbUlDZ2djWFZsZFdWYklHbHVaR1Y0SUYwZ0ppWWdjWFZsZFdWYklHbHVaR1Y0SUYwdVptbHVhWE5vSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkSEYxWlhWbFd5QnBibVJsZUNCZExtWnBibWx6YUM1allXeHNLQ0IwYUdseklDazdYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwTHk4Z1ZIVnliaUJ2Wm1ZZ1ptbHVhWE5vYVc1bklHWnNZV2RjYmx4MFhIUmNkR1JsYkdWMFpTQmtZWFJoTG1acGJtbHphRHRjYmx4MFhIUjlLVHRjYmx4MGZWeHVmU2s3WEc1Y2JtcFJkV1Z5ZVM1bFlXTm9LRnNnWENKMGIyZG5iR1ZjSWl3Z1hDSnphRzkzWENJc0lGd2lhR2xrWlZ3aUlGMHNJR1oxYm1OMGFXOXVLQ0JwTENCdVlXMWxJQ2tnZTF4dVhIUjJZWElnWTNOelJtNGdQU0JxVVhWbGNua3VabTViSUc1aGJXVWdYVHRjYmx4MGFsRjFaWEo1TG1adVd5QnVZVzFsSUYwZ1BTQm1kVzVqZEdsdmJpZ2djM0JsWldRc0lHVmhjMmx1Wnl3Z1kyRnNiR0poWTJzZ0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUhOd1pXVmtJRDA5SUc1MWJHd2dmSHdnZEhsd1pXOW1JSE53WldWa0lEMDlQU0JjSW1KdmIyeGxZVzVjSWlBL1hHNWNkRngwWEhSamMzTkdiaTVoY0hCc2VTZ2dkR2hwY3l3Z1lYSm5kVzFsYm5SeklDa2dPbHh1WEhSY2RGeDBkR2hwY3k1aGJtbHRZWFJsS0NCblpXNUdlQ2dnYm1GdFpTd2dkSEoxWlNBcExDQnpjR1ZsWkN3Z1pXRnphVzVuTENCallXeHNZbUZqYXlBcE8xeHVYSFI5TzF4dWZTazdYRzVjYmk4dklFZGxibVZ5WVhSbElITm9iM0owWTNWMGN5Qm1iM0lnWTNWemRHOXRJR0Z1YVcxaGRHbHZibk5jYm1wUmRXVnllUzVsWVdOb0tIdGNibHgwYzJ4cFpHVkViM2R1T2lCblpXNUdlQ2hjSW5Ob2IzZGNJaWtzWEc1Y2RITnNhV1JsVlhBNklHZGxia1o0S0Z3aWFHbGtaVndpS1N4Y2JseDBjMnhwWkdWVWIyZG5iR1U2SUdkbGJrWjRLRndpZEc5bloyeGxYQ0lwTEZ4dVhIUm1ZV1JsU1c0NklIc2diM0JoWTJsMGVUb2dYQ0p6YUc5M1hDSWdmU3hjYmx4MFptRmtaVTkxZERvZ2V5QnZjR0ZqYVhSNU9pQmNJbWhwWkdWY0lpQjlMRnh1WEhSbVlXUmxWRzluWjJ4bE9pQjdJRzl3WVdOcGRIazZJRndpZEc5bloyeGxYQ0lnZlZ4dWZTd2dablZ1WTNScGIyNG9JRzVoYldVc0lIQnliM0J6SUNrZ2UxeHVYSFJxVVhWbGNua3VabTViSUc1aGJXVWdYU0E5SUdaMWJtTjBhVzl1S0NCemNHVmxaQ3dnWldGemFXNW5MQ0JqWVd4c1ltRmpheUFwSUh0Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3k1aGJtbHRZWFJsS0NCd2NtOXdjeXdnYzNCbFpXUXNJR1ZoYzJsdVp5d2dZMkZzYkdKaFkyc2dLVHRjYmx4MGZUdGNibjBwTzF4dVhHNXFVWFZsY25rdWRHbHRaWEp6SUQwZ1cxMDdYRzVxVVhWbGNua3Vabmd1ZEdsamF5QTlJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUjJZWElnZEdsdFpYSXNYRzVjZEZ4MGFTQTlJREFzWEc1Y2RGeDBkR2x0WlhKeklEMGdhbEYxWlhKNUxuUnBiV1Z5Y3p0Y2JseHVYSFJtZUU1dmR5QTlJR3BSZFdWeWVTNXViM2NvS1R0Y2JseHVYSFJtYjNJZ0tDQTdJR2tnUENCMGFXMWxjbk11YkdWdVozUm9PeUJwS3lzZ0tTQjdYRzVjZEZ4MGRHbHRaWElnUFNCMGFXMWxjbk5iSUdrZ1hUdGNibHgwWEhRdkx5QkRhR1ZqYTNNZ2RHaGxJSFJwYldWeUlHaGhjeUJ1YjNRZ1lXeHlaV0ZrZVNCaVpXVnVJSEpsYlc5MlpXUmNibHgwWEhScFppQW9JQ0YwYVcxbGNpZ3BJQ1ltSUhScGJXVnljMXNnYVNCZElEMDlQU0IwYVcxbGNpQXBJSHRjYmx4MFhIUmNkSFJwYldWeWN5NXpjR3hwWTJVb0lHa3RMU3dnTVNBcE8xeHVYSFJjZEgxY2JseDBmVnh1WEc1Y2RHbG1JQ2dnSVhScGJXVnljeTVzWlc1bmRHZ2dLU0I3WEc1Y2RGeDBhbEYxWlhKNUxtWjRMbk4wYjNBb0tUdGNibHgwZlZ4dVhIUm1lRTV2ZHlBOUlIVnVaR1ZtYVc1bFpEdGNibjA3WEc1Y2JtcFJkV1Z5ZVM1bWVDNTBhVzFsY2lBOUlHWjFibU4wYVc5dUtDQjBhVzFsY2lBcElIdGNibHgwYWxGMVpYSjVMblJwYldWeWN5NXdkWE5vS0NCMGFXMWxjaUFwTzF4dVhIUnBaaUFvSUhScGJXVnlLQ2tnS1NCN1hHNWNkRngwYWxGMVpYSjVMbVo0TG5OMFlYSjBLQ2s3WEc1Y2RIMGdaV3h6WlNCN1hHNWNkRngwYWxGMVpYSjVMblJwYldWeWN5NXdiM0FvS1R0Y2JseDBmVnh1ZlR0Y2JseHVhbEYxWlhKNUxtWjRMbWx1ZEdWeWRtRnNJRDBnTVRNN1hHNWNibXBSZFdWeWVTNW1lQzV6ZEdGeWRDQTlJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUnBaaUFvSUNGMGFXMWxja2xrSUNrZ2UxeHVYSFJjZEhScGJXVnlTV1FnUFNCelpYUkpiblJsY25aaGJDZ2dhbEYxWlhKNUxtWjRMblJwWTJzc0lHcFJkV1Z5ZVM1bWVDNXBiblJsY25aaGJDQXBPMXh1WEhSOVhHNTlPMXh1WEc1cVVYVmxjbmt1Wm5ndWMzUnZjQ0E5SUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJqYkdWaGNrbHVkR1Z5ZG1Gc0tDQjBhVzFsY2tsa0lDazdYRzVjZEhScGJXVnlTV1FnUFNCdWRXeHNPMXh1ZlR0Y2JseHVhbEYxWlhKNUxtWjRMbk53WldWa2N5QTlJSHRjYmx4MGMyeHZkem9nTmpBd0xGeHVYSFJtWVhOME9pQXlNREFzWEc1Y2RDOHZJRVJsWm1GMWJIUWdjM0JsWldSY2JseDBYMlJsWm1GMWJIUTZJRFF3TUZ4dWZUdGNibHh1WEc0dkx5QkNZWE5sWkNCdlptWWdiMllnZEdobElIQnNkV2RwYmlCaWVTQkRiR2x1ZENCSVpXeG1aWEp6TENCM2FYUm9JSEJsY20xcGMzTnBiMjR1WEc0dkx5Qm9kSFJ3T2k4dllteHBibVJ6YVdkdVlXeHpMbU52YlM5cGJtUmxlQzV3YUhBdk1qQXdPUzh3Tnk5cWNYVmxjbmt0WkdWc1lYa3ZYRzVxVVhWbGNua3VabTR1WkdWc1lYa2dQU0JtZFc1amRHbHZiaWdnZEdsdFpTd2dkSGx3WlNBcElIdGNibHgwZEdsdFpTQTlJR3BSZFdWeWVTNW1lQ0EvSUdwUmRXVnllUzVtZUM1emNHVmxaSE5iSUhScGJXVWdYU0I4ZkNCMGFXMWxJRG9nZEdsdFpUdGNibHgwZEhsd1pTQTlJSFI1Y0dVZ2ZId2dYQ0ptZUZ3aU8xeHVYRzVjZEhKbGRIVnliaUIwYUdsekxuRjFaWFZsS0NCMGVYQmxMQ0JtZFc1amRHbHZiaWdnYm1WNGRDd2dhRzl2YTNNZ0tTQjdYRzVjZEZ4MGRtRnlJSFJwYldWdmRYUWdQU0J6WlhSVWFXMWxiM1YwS0NCdVpYaDBMQ0IwYVcxbElDazdYRzVjZEZ4MGFHOXZhM011YzNSdmNDQTlJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwWTJ4bFlYSlVhVzFsYjNWMEtDQjBhVzFsYjNWMElDazdYRzVjZEZ4MGZUdGNibHgwZlNrN1hHNTlPMXh1WEc1Y2JpaG1kVzVqZEdsdmJpZ3BJSHRjYmx4MGRtRnlJR2x1Y0hWMElEMGdaRzlqZFcxbGJuUXVZM0psWVhSbFJXeGxiV1Z1ZENnZ1hDSnBibkIxZEZ3aUlDa3NYRzVjZEZ4MGMyVnNaV04wSUQwZ1pHOWpkVzFsYm5RdVkzSmxZWFJsUld4bGJXVnVkQ2dnWENKelpXeGxZM1JjSWlBcExGeHVYSFJjZEc5d2RDQTlJSE5sYkdWamRDNWhjSEJsYm1SRGFHbHNaQ2dnWkc5amRXMWxiblF1WTNKbFlYUmxSV3hsYldWdWRDZ2dYQ0p2Y0hScGIyNWNJaUFwSUNrN1hHNWNibHgwYVc1d2RYUXVkSGx3WlNBOUlGd2lZMmhsWTJ0aWIzaGNJanRjYmx4dVhIUXZMeUJUZFhCd2IzSjBPaUJwVDFNOFBUVXVNU3dnUVc1a2NtOXBaRHc5TkM0eUsxeHVYSFF2THlCRVpXWmhkV3gwSUhaaGJIVmxJR1p2Y2lCaElHTm9aV05yWW05NElITm9iM1ZzWkNCaVpTQmNJbTl1WENKY2JseDBjM1Z3Y0c5eWRDNWphR1ZqYTA5dUlEMGdhVzV3ZFhRdWRtRnNkV1VnSVQwOUlGd2lYQ0k3WEc1Y2JseDBMeThnVTNWd2NHOXlkRG9nU1VVOFBURXhLMXh1WEhRdkx5Qk5kWE4wSUdGalkyVnpjeUJ6Wld4bFkzUmxaRWx1WkdWNElIUnZJRzFoYTJVZ1pHVm1ZWFZzZENCdmNIUnBiMjV6SUhObGJHVmpkRnh1WEhSemRYQndiM0owTG05d2RGTmxiR1ZqZEdWa0lEMGdiM0IwTG5ObGJHVmpkR1ZrTzF4dVhHNWNkQzh2SUZOMWNIQnZjblE2SUVGdVpISnZhV1E4UFRJdU0xeHVY
14938SFF2THlCUGNIUnBiMjV6SUdsdWMybGtaU0JrYVhOaFlteGxaQ0J6Wld4bFkzUnpJR0Z5WlNCcGJtTnZjbkpsWTNSc2VTQnRZWEpyWldRZ1lYTWdaR2x6WVdKc1pXUmNibHgwYzJWc1pXTjBMbVJwYzJGaWJHVmtJRDBnZEhKMVpUdGNibHgwYzNWd2NHOXlkQzV2Y0hSRWFYTmhZbXhsWkNBOUlDRnZjSFF1WkdsellXSnNaV1E3WEc1Y2JseDBMeThnVTNWd2NHOXlkRG9nU1VVOFBURXhLMXh1WEhRdkx5QkJiaUJwYm5CMWRDQnNiM05sY3lCcGRITWdkbUZzZFdVZ1lXWjBaWElnWW1WamIyMXBibWNnWVNCeVlXUnBiMXh1WEhScGJuQjFkQ0E5SUdSdlkzVnRaVzUwTG1OeVpXRjBaVVZzWlcxbGJuUW9JRndpYVc1d2RYUmNJaUFwTzF4dVhIUnBibkIxZEM1MllXeDFaU0E5SUZ3aWRGd2lPMXh1WEhScGJuQjFkQzUwZVhCbElEMGdYQ0p5WVdScGIxd2lPMXh1WEhSemRYQndiM0owTG5KaFpHbHZWbUZzZFdVZ1BTQnBibkIxZEM1MllXeDFaU0E5UFQwZ1hDSjBYQ0k3WEc1OUtTZ3BPMXh1WEc1Y2JuWmhjaUJ1YjJSbFNHOXZheXdnWW05dmJFaHZiMnNzWEc1Y2RHRjBkSEpJWVc1a2JHVWdQU0JxVVhWbGNua3VaWGh3Y2k1aGRIUnlTR0Z1Wkd4bE8xeHVYRzVxVVhWbGNua3VabTR1WlhoMFpXNWtLSHRjYmx4MFlYUjBjam9nWm5WdVkzUnBiMjRvSUc1aGJXVXNJSFpoYkhWbElDa2dlMXh1WEhSY2RISmxkSFZ5YmlCaFkyTmxjM01vSUhSb2FYTXNJR3BSZFdWeWVTNWhkSFJ5TENCdVlXMWxMQ0IyWVd4MVpTd2dZWEpuZFcxbGJuUnpMbXhsYm1kMGFDQStJREVnS1R0Y2JseDBmU3hjYmx4dVhIUnlaVzF2ZG1WQmRIUnlPaUJtZFc1amRHbHZiaWdnYm1GdFpTQXBJSHRjYmx4MFhIUnlaWFIxY200Z2RHaHBjeTVsWVdOb0tHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RGeDBhbEYxWlhKNUxuSmxiVzkyWlVGMGRISW9JSFJvYVhNc0lHNWhiV1VnS1R0Y2JseDBYSFI5S1R0Y2JseDBmVnh1ZlNrN1hHNWNibXBSZFdWeWVTNWxlSFJsYm1Rb2UxeHVYSFJoZEhSeU9pQm1kVzVqZEdsdmJpZ2daV3hsYlN3Z2JtRnRaU3dnZG1Gc2RXVWdLU0I3WEc1Y2RGeDBkbUZ5SUdodmIydHpMQ0J5WlhRc1hHNWNkRngwWEhSdVZIbHdaU0E5SUdWc1pXMHVibTlrWlZSNWNHVTdYRzVjYmx4MFhIUXZMeUJrYjI0bmRDQm5aWFF2YzJWMElHRjBkSEpwWW5WMFpYTWdiMjRnZEdWNGRDd2dZMjl0YldWdWRDQmhibVFnWVhSMGNtbGlkWFJsSUc1dlpHVnpYRzVjZEZ4MGFXWWdLQ0FoWld4bGJTQjhmQ0J1Vkhsd1pTQTlQVDBnTXlCOGZDQnVWSGx3WlNBOVBUMGdPQ0I4ZkNCdVZIbHdaU0E5UFQwZ01pQXBJSHRjYmx4MFhIUmNkSEpsZEhWeWJqdGNibHgwWEhSOVhHNWNibHgwWEhRdkx5QkdZV3hzWW1GamF5QjBieUJ3Y205d0lIZG9aVzRnWVhSMGNtbGlkWFJsY3lCaGNtVWdibTkwSUhOMWNIQnZjblJsWkZ4dVhIUmNkR2xtSUNnZ2RIbHdaVzltSUdWc1pXMHVaMlYwUVhSMGNtbGlkWFJsSUQwOVBTQnpkSEoxYm1SbFptbHVaV1FnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnYWxGMVpYSjVMbkJ5YjNBb0lHVnNaVzBzSUc1aGJXVXNJSFpoYkhWbElDazdYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdRV3hzSUdGMGRISnBZblYwWlhNZ1lYSmxJR3h2ZDJWeVkyRnpaVnh1WEhSY2RDOHZJRWR5WVdJZ2JtVmpaWE56WVhKNUlHaHZiMnNnYVdZZ2IyNWxJR2x6SUdSbFptbHVaV1JjYmx4MFhIUnBaaUFvSUc1VWVYQmxJQ0U5UFNBeElIeDhJQ0ZxVVhWbGNua3VhWE5ZVFV4RWIyTW9JR1ZzWlcwZ0tTQXBJSHRjYmx4MFhIUmNkRzVoYldVZ1BTQnVZVzFsTG5SdlRHOTNaWEpEWVhObEtDazdYRzVjZEZ4MFhIUm9iMjlyY3lBOUlHcFJkV1Z5ZVM1aGRIUnlTRzl2YTNOYklHNWhiV1VnWFNCOGZGeHVYSFJjZEZ4MFhIUW9JR3BSZFdWeWVTNWxlSEJ5TG0xaGRHTm9MbUp2YjJ3dWRHVnpkQ2dnYm1GdFpTQXBJRDhnWW05dmJFaHZiMnNnT2lCdWIyUmxTRzl2YXlBcE8xeHVYSFJjZEgxY2JseHVYSFJjZEdsbUlDZ2dkbUZzZFdVZ0lUMDlJSFZ1WkdWbWFXNWxaQ0FwSUh0Y2JseHVYSFJjZEZ4MGFXWWdLQ0IyWVd4MVpTQTlQVDBnYm5Wc2JDQXBJSHRjYmx4MFhIUmNkRngwYWxGMVpYSjVMbkpsYlc5MlpVRjBkSElvSUdWc1pXMHNJRzVoYldVZ0tUdGNibHh1WEhSY2RGeDBmU0JsYkhObElHbG1JQ2dnYUc5dmEzTWdKaVlnWENKelpYUmNJaUJwYmlCb2IyOXJjeUFtSmlBb2NtVjBJRDBnYUc5dmEzTXVjMlYwS0NCbGJHVnRMQ0IyWVd4MVpTd2dibUZ0WlNBcEtTQWhQVDBnZFc1a1pXWnBibVZrSUNrZ2UxeHVYSFJjZEZ4MFhIUnlaWFIxY200Z2NtVjBPMXh1WEc1Y2RGeDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBYSFJsYkdWdExuTmxkRUYwZEhKcFluVjBaU2dnYm1GdFpTd2dkbUZzZFdVZ0t5QmNJbHdpSUNrN1hHNWNkRngwWEhSY2RISmxkSFZ5YmlCMllXeDFaVHRjYmx4MFhIUmNkSDFjYmx4dVhIUmNkSDBnWld4elpTQnBaaUFvSUdodmIydHpJQ1ltSUZ3aVoyVjBYQ0lnYVc0Z2FHOXZhM01nSmlZZ0tISmxkQ0E5SUdodmIydHpMbWRsZENnZ1pXeGxiU3dnYm1GdFpTQXBLU0FoUFQwZ2JuVnNiQ0FwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUJ5WlhRN1hHNWNibHgwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwY21WMElEMGdhbEYxWlhKNUxtWnBibVF1WVhSMGNpZ2daV3hsYlN3Z2JtRnRaU0FwTzF4dVhHNWNkRngwWEhRdkx5Qk9iMjR0WlhocGMzUmxiblFnWVhSMGNtbGlkWFJsY3lCeVpYUjFjbTRnYm5Wc2JDd2dkMlVnYm05eWJXRnNhWHBsSUhSdklIVnVaR1ZtYVc1bFpGeHVYSFJjZEZ4MGNtVjBkWEp1SUhKbGRDQTlQU0J1ZFd4c0lEOWNibHgwWEhSY2RGeDBkVzVrWldacGJtVmtJRHBjYmx4MFhIUmNkRngwY21WME8xeHVYSFJjZEgxY2JseDBmU3hjYmx4dVhIUnlaVzF2ZG1WQmRIUnlPaUJtZFc1amRHbHZiaWdnWld4bGJTd2dkbUZzZFdVZ0tTQjdYRzVjZEZ4MGRtRnlJRzVoYldVc0lIQnliM0JPWVcxbExGeHVYSFJjZEZ4MGFTQTlJREFzWEc1Y2RGeDBYSFJoZEhSeVRtRnRaWE1nUFNCMllXeDFaU0FtSmlCMllXeDFaUzV0WVhSamFDZ2djbTV2ZEhkb2FYUmxJQ2s3WEc1Y2JseDBYSFJwWmlBb0lHRjBkSEpPWVcxbGN5QW1KaUJsYkdWdExtNXZaR1ZVZVhCbElEMDlQU0F4SUNrZ2UxeHVYSFJjZEZ4MGQyaHBiR1VnS0NBb2JtRnRaU0E5SUdGMGRISk9ZVzFsYzF0cEt5dGRLU0FwSUh0Y2JseDBYSFJjZEZ4MGNISnZjRTVoYldVZ1BTQnFVWFZsY25rdWNISnZjRVpwZUZzZ2JtRnRaU0JkSUh4OElHNWhiV1U3WEc1Y2JseDBYSFJjZEZ4MEx5OGdRbTl2YkdWaGJpQmhkSFJ5YVdKMWRHVnpJR2RsZENCemNHVmphV0ZzSUhSeVpXRjBiV1Z1ZENBb0l6RXdPRGN3S1Z4dVhIUmNkRngwWEhScFppQW9JR3BSZFdWeWVTNWxlSEJ5TG0xaGRHTm9MbUp2YjJ3dWRHVnpkQ2dnYm1GdFpTQXBJQ2tnZTF4dVhIUmNkRngwWEhSY2RDOHZJRk5sZENCamIzSnlaWE53YjI1a2FXNW5JSEJ5YjNCbGNuUjVJSFJ2SUdaaGJITmxYRzVjZEZ4MFhIUmNkRngwWld4bGJWc2djSEp2Y0U1aGJXVWdYU0E5SUda
14938aGJITmxPMXh1WEhSY2RGeDBYSFI5WEc1Y2JseDBYSFJjZEZ4MFpXeGxiUzV5WlcxdmRtVkJkSFJ5YVdKMWRHVW9JRzVoYldVZ0tUdGNibHgwWEhSY2RIMWNibHgwWEhSOVhHNWNkSDBzWEc1Y2JseDBZWFIwY2todmIydHpPaUI3WEc1Y2RGeDBkSGx3WlRvZ2UxeHVYSFJjZEZ4MGMyVjBPaUJtZFc1amRHbHZiaWdnWld4bGJTd2dkbUZzZFdVZ0tTQjdYRzVjZEZ4MFhIUmNkR2xtSUNnZ0lYTjFjSEJ2Y25RdWNtRmthVzlXWVd4MVpTQW1KaUIyWVd4MVpTQTlQVDBnWENKeVlXUnBiMXdpSUNZbVhHNWNkRngwWEhSY2RGeDBhbEYxWlhKNUxtNXZaR1ZPWVcxbEtDQmxiR1Z0TENCY0ltbHVjSFYwWENJZ0tTQXBJSHRjYmx4MFhIUmNkRngwWEhSMllYSWdkbUZzSUQwZ1pXeGxiUzUyWVd4MVpUdGNibHgwWEhSY2RGeDBYSFJsYkdWdExuTmxkRUYwZEhKcFluVjBaU2dnWENKMGVYQmxYQ0lzSUhaaGJIVmxJQ2s3WEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0IyWVd3Z0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSbGJHVnRMblpoYkhWbElEMGdkbUZzTzF4dVhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBYSFJ5WlhSMWNtNGdkbUZzZFdVN1hHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMWNibHgwWEhSOVhHNWNkSDFjYm4wcE8xeHVYRzR2THlCSWIyOXJjeUJtYjNJZ1ltOXZiR1ZoYmlCaGRIUnlhV0oxZEdWelhHNWliMjlzU0c5dmF5QTlJSHRjYmx4MGMyVjBPaUJtZFc1amRHbHZiaWdnWld4bGJTd2dkbUZzZFdVc0lHNWhiV1VnS1NCN1hHNWNkRngwYVdZZ0tDQjJZV3gxWlNBOVBUMGdabUZzYzJVZ0tTQjdYRzVjZEZ4MFhIUXZMeUJTWlcxdmRtVWdZbTl2YkdWaGJpQmhkSFJ5YVdKMWRHVnpJSGRvWlc0Z2MyVjBJSFJ2SUdaaGJITmxYRzVjZEZ4MFhIUnFVWFZsY25rdWNtVnRiM1psUVhSMGNpZ2daV3hsYlN3Z2JtRnRaU0FwTzF4dVhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUmxiR1Z0TG5ObGRFRjBkSEpwWW5WMFpTZ2dibUZ0WlN3Z2JtRnRaU0FwTzF4dVhIUmNkSDFjYmx4MFhIUnlaWFIxY200Z2JtRnRaVHRjYmx4MGZWeHVmVHRjYm1wUmRXVnllUzVsWVdOb0tDQnFVWFZsY25rdVpYaHdjaTV0WVhSamFDNWliMjlzTG5OdmRYSmpaUzV0WVhSamFDZ2dMMXhjZHlzdlp5QXBMQ0JtZFc1amRHbHZiaWdnYVN3Z2JtRnRaU0FwSUh0Y2JseDBkbUZ5SUdkbGRIUmxjaUE5SUdGMGRISklZVzVrYkdWYklHNWhiV1VnWFNCOGZDQnFVWFZsY25rdVptbHVaQzVoZEhSeU8xeHVYRzVjZEdGMGRISklZVzVrYkdWYklHNWhiV1VnWFNBOUlHWjFibU4wYVc5dUtDQmxiR1Z0TENCdVlXMWxMQ0JwYzFoTlRDQXBJSHRjYmx4MFhIUjJZWElnY21WMExDQm9ZVzVrYkdVN1hHNWNkRngwYVdZZ0tDQWhhWE5ZVFV3Z0tTQjdYRzVjZEZ4MFhIUXZMeUJCZG05cFpDQmhiaUJwYm1acGJtbDBaU0JzYjI5d0lHSjVJSFJsYlhCdmNtRnlhV3g1SUhKbGJXOTJhVzVuSUhSb2FYTWdablZ1WTNScGIyNGdabkp2YlNCMGFHVWdaMlYwZEdWeVhHNWNkRngwWEhSb1lXNWtiR1VnUFNCaGRIUnlTR0Z1Wkd4bFd5QnVZVzFsSUYwN1hHNWNkRngwWEhSaGRIUnlTR0Z1Wkd4bFd5QnVZVzFsSUYwZ1BTQnlaWFE3WEc1Y2RGeDBYSFJ5WlhRZ1BTQm5aWFIwWlhJb0lHVnNaVzBzSUc1aGJXVXNJR2x6V0UxTUlDa2dJVDBnYm5Wc2JDQS9YRzVjZEZ4MFhIUmNkRzVoYldVdWRHOU1iM2RsY2tOaGMyVW9LU0E2WEc1Y2RGeDBYSFJjZEc1MWJHdzdYRzVjZEZ4MFhIUmhkSFJ5U0dGdVpHeGxXeUJ1WVcxbElGMGdQU0JvWVc1a2JHVTdYRzVjZEZ4MGZWeHVYSFJjZEhKbGRIVnliaUJ5WlhRN1hHNWNkSDA3WEc1OUtUdGNibHh1WEc1Y2JseHVkbUZ5SUhKbWIyTjFjMkZpYkdVZ1BTQXZYaWcvT21sdWN
14938IVjBmSE5sYkdWamRIeDBaWGgwWVhKbFlYeGlkWFIwYjI0cEpDOXBPMXh1WEc1cVVYVmxjbmt1Wm00dVpYaDBaVzVrS0h0Y2JseDBjSEp2Y0RvZ1puVnVZM1JwYjI0b0lHNWhiV1VzSUhaaGJIVmxJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQmhZMk5sYzNNb0lIUm9hWE1zSUdwUmRXVnllUzV3Y205d0xDQnVZVzFsTENCMllXeDFaU3dnWVhKbmRXMWxiblJ6TG14bGJtZDBhQ0ErSURFZ0tUdGNibHgwZlN4Y2JseHVYSFJ5WlcxdmRtVlFjbTl3T2lCbWRXNWpkR2x2YmlnZ2JtRnRaU0FwSUh0Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3k1bFlXTm9LR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwWkdWc1pYUmxJSFJvYVhOYklHcFJkV1Z5ZVM1d2NtOXdSbWw0V3lCdVlXMWxJRjBnZkh3Z2JtRnRaU0JkTzF4dVhIUmNkSDBwTzF4dVhIUjlYRzU5S1R0Y2JseHVhbEYxWlhKNUxtVjRkR1Z1WkNoN1hHNWNkSEJ5YjNCR2FYZzZJSHRjYmx4MFhIUmNJbVp2Y2x3aU9pQmNJbWgwYld4R2IzSmNJaXhjYmx4MFhIUmNJbU5zWVhOelhDSTZJRndpWTJ4aGMzTk9ZVzFsWENKY2JseDBmU3hjYmx4dVhIUndjbTl3T2lCbWRXNWpkR2x2YmlnZ1pXeGxiU3dnYm1GdFpTd2dkbUZzZFdVZ0tTQjdYRzVjZEZ4MGRtRnlJSEpsZEN3Z2FHOXZhM01zSUc1dmRIaHRiQ3hjYmx4MFhIUmNkRzVVZVhCbElEMGdaV3hsYlM1dWIyUmxWSGx3WlR0Y2JseHVYSFJjZEM4dklFUnZiaWQwSUdkbGRDOXpaWFFnY0hKdmNHVnlkR2xsY3lCdmJpQjBaWGgwTENCamIyMXRaVzUwSUdGdVpDQmhkSFJ5YVdKMWRHVWdibTlrWlhOY2JseDBYSFJwWmlBb0lDRmxiR1Z0SUh4OElHNVVlWEJsSUQwOVBTQXpJSHg4SUc1VWVYQmxJRDA5UFNBNElIeDhJRzVVZVhCbElEMDlQU0F5SUNrZ2UxeHVYSFJjZEZ4MGNtVjBkWEp1TzF4dVhIUmNkSDFjYmx4dVhIUmNkRzV2ZEhodGJDQTlJRzVVZVhCbElDRTlQU0F4SUh4OElDRnFVWFZsY25rdWFYTllUVXhFYjJNb0lHVnNaVzBnS1R0Y2JseHVYSFJjZEdsbUlDZ2dibTkwZUcxc0lDa2dlMXh1WEhSY2RGeDBMeThnUm1sNElHNWhiV1VnWVc1a0lHRjBkR0ZqYUNCb2IyOXJjMXh1WEhSY2RGeDBibUZ0WlNBOUlHcFJkV1Z5ZVM1d2NtOXdSbWw0V3lCdVlXMWxJRjBnZkh3Z2JtRnRaVHRjYmx4MFhIUmNkR2h2YjJ0eklEMGdhbEYxWlhKNUxuQnliM0JJYjI5cmMxc2dibUZ0WlNCZE8xeHVYSFJjZEgxY2JseHVYSFJjZEdsbUlDZ2dkbUZzZFdVZ0lUMDlJSFZ1WkdWbWFXNWxaQ0FwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUJvYjI5cmN5QW1KaUJjSW5ObGRGd2lJR2x1SUdodmIydHpJQ1ltSUNoeVpYUWdQU0JvYjI5cmN5NXpaWFFvSUdWc1pXMHNJSFpoYkhWbExDQnVZVzFsSUNrcElDRTlQU0IxYm1SbFptbHVaV1FnUDF4dVhIUmNkRngwWEhSeVpYUWdPbHh1WEhSY2RGeDBYSFFvSUdWc1pXMWJJRzVoYldVZ1hTQTlJSFpoYkhWbElDazdYRzVjYmx4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MGNtVjBkWEp1SUdodmIydHpJQ1ltSUZ3aVoyVjBYQ0lnYVc0Z2FHOXZhM01nSmlZZ0tISmxkQ0E5SUdodmIydHpMbWRsZENnZ1pXeGxiU3dnYm1GdFpTQXBLU0FoUFQwZ2JuVnNiQ0EvWEc1Y2RGeDBYSFJjZEhKbGRDQTZYRzVjZEZ4MFhIUmNkR1ZzWlcxYklHNWhiV1VnWFR0Y2JseDBYSFI5WEc1Y2RIMHNYRzVjYmx4MGNISnZjRWh2YjJ0ek9pQjdYRzVjZEZ4MGRHRmlTVzVrWlhnNklIdGNibHgwWEhSY2RHZGxkRG9nWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RGeDBYSFJjZEhKbGRIVnliaUJsYkdWdExtaGhjMEYwZEhKcFluVjBaU2dnWENKMFlXSnBibVJsZUZ3aUlDa2dmSHdnY21adlkzVnpZV0pzWlM1MFpYTjBLQ0JsYkdWdExtNXZaR1ZPWVcxbElDa2dmSHdnWld4bGJTNW9jbVZtSUQ5Y2JseDBYSFJjZEZ4MFhIUmxiR1Z0TG5SaFlrbHVaR1Y0SURwY2JseDBYSFJjZEZ4MFhIUXRNVHRjYmx4MFhIUmNkSDFjYmx4MFhIUjlYRzVjZEgxY2JuMHBPMXh1WEc1cFppQW9JQ0Z6ZFhCd2IzSjBMbTl3ZEZObGJHVmpkR1ZrSUNrZ2UxeHVYSFJxVVhWbGNua3VjSEp2Y0VodmIydHpMbk5sYkdWamRHVmtJRDBnZTF4dVhIUmNkR2RsZERvZ1puVnVZM1JwYjI0b0lHVnNaVzBnS1NCN1hHNWNkRngwWEhSMllYSWdjR0Z5Wlc1MElEMGdaV3hsYlM1d1lYSmxiblJPYjJSbE8xeHVYSFJjZEZ4MGFXWWdLQ0J3WVhKbGJuUWdKaVlnY0dGeVpXNTBMbkJoY21WdWRFNXZaR1VnS1NCN1hHNWNkRngwWEhSY2RIQmhjbVZ1ZEM1d1lYSmxiblJPYjJSbExuTmxiR1ZqZEdWa1NXNWtaWGc3WEc1Y2RGeDBYSFI5WEc1Y2RGeDBYSFJ5WlhSMWNtNGdiblZzYkR0Y2JseDBYSFI5WEc1Y2RIMDdYRzU5WEc1Y2JtcFJkV1Z5ZVM1bFlXTm9LRnRjYmx4MFhDSjBZV0pKYm1SbGVGd2lMRnh1WEhSY0luSmxZV1JQYm14NVhDSXNYRzVjZEZ3aWJXRjRUR1Z1WjNSb1hDSXNYRzVjZEZ3aVkyVnNiRk53WVdOcGJtZGNJaXhjYmx4MFhDSmpaV3hzVUdGa1pHbHVaMXdpTEZ4dVhIUmNJbkp2ZDFOd1lXNWNJaXhjYmx4MFhDSmpiMnhUY0dGdVhDSXNYRzVjZEZ3aWRYTmxUV0Z3WENJc1hHNWNkRndpWm5KaGJXVkNiM0prWlhKY0lpeGNibHgwWENKamIyNTBaVzUwUldScGRHRmliR1ZjSWx4dVhTd2dablZ1WTNScGIyNG9LU0I3WEc1Y2RHcFJkV1Z5ZVM1d2NtOXdSbWw0V3lCMGFHbHpMblJ2VEc5M1pYSkRZWE5sS0NrZ1hTQTlJSFJvYVhNN1hHNTlLVHRjYmx4dVhHNWNibHh1ZG1GeUlISmpiR0Z6Y3lBOUlDOWJYRngwWEZ4eVhGeHVYRnhtWFM5bk8xeHVYRzVxVVhWbGNua3VabTR1WlhoMFpXNWtLSHRjYmx4MFlXUmtRMnhoYzNNNklHWjFibU4wYVc5dUtDQjJZV3gxWlNBcElIdGNibHgwWEhSMllYSWdZMnhoYzNObGN5d2daV3hsYlN3Z1kzVnlMQ0JqYkdGNmVpd2dhaXdnWm1sdVlXeFdZV3gxWlN4Y2JseDBYSFJjZEhCeWIyTmxaV1FnUFNCMGVYQmxiMllnZG1Gc2RXVWdQVDA5SUZ3aWMzUnlhVzVuWENJZ0ppWWdkbUZzZFdVc1hHNWNkRngwWEhScElEMGdNQ3hjYmx4MFhIUmNkR3hsYmlBOUlIUm9hWE11YkdWdVozUm9PMXh1WEc1Y2RGeDBhV1lnS0NCcVVYVmxjbmt1YVhOR2RXNWpkR2x2YmlnZ2RtRnNkV1VnS1NBcElIdGNibHgwWEhSY2RISmxkSFZ5YmlCMGFHbHpMbVZoWTJnb1puVnVZM1JwYjI0b0lHb2dLU0I3WEc1Y2RGeDBYSFJjZEdwUmRXVnllU2dnZEdocGN5QXBMbUZrWkVOc1lYTnpLQ0IyWVd4MVpTNWpZV3hzS0NCMGFHbHpMQ0JxTENCMGFHbHpMbU5zWVhOelRtRnRaU0FwSUNrN1hHNWNkRngwWEhSOUtUdGNibHgwWEhSOVhHNWNibHgwWEhScFppQW9JSEJ5YjJObFpXUWdLU0I3WEc1Y2RGeDBYSFF2THlCVWFHVWdaR2x6YW5WdVkzUnBiMjRnYUdWeVpTQnBjeUJtYjNJZ1ltVjBkR1Z5SUdOdmJYQnlaWE56YVdKcGJHbDBlU0FvYzJWbElISmxiVzkyWlVOc1lYTnpLVnh1WEhSY2RGeDBZMnhoYzNObGN5QTlJQ2dnZG1Gc2RXVWdmSHdnWENKY0lpQXBMbTFoZEdOb0tDQnlibTkwZDJocGRHVWdLU0I4ZkNCYlhUdGNibHh1WEhSY2RGeDBabTl5SUNnZ095QnBJRHdnYkdWdU95QnBLeXNnS1NCN1hHNWNkRngwWEhSY2RHVnNaVzBnUFNCMGFHbHpXeUJwSUYwN1hHNWNkRngwWEhSY2RHTjFjaUE5SUdWc1pXMHVibTlrWlZSNWNHVWdQVDA5SURFZ0ppWWdLQ0JsYkdWdExtTnNZWE56VG1GdFpTQS9YRzVjZEZ4MFhIUmNkRngwS0NCY0lpQmNJaUFySUdWc1pXMHVZMnhoYzNOT1lXMWxJQ3NnWENJZ1hDSWdLUzV5WlhCc1lXTmxLQ0J5WTJ4aGMzTXNJRndpSUZ3aUlDa2dPbHh1WEhSY2RGeDBYSFJjZEZ3aUlGd2lYRzVjZEZ4MFhIUmNkQ2s3WEc1Y2JseDBYSFJjZEZ4MGFXWWdLQ0JqZFhJZ0tTQjdYRzVjZEZ4MFhIUmNkRngwYWlBOUlEQTdYRzVjZEZ4MFhIUmNkRngwZDJocGJHVWdLQ0FvWTJ4aGVub2dQU0JqYkdGemMyVnpXMm9ySzEwcElDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MGFXWWdLQ0JqZFhJdWFXNWtaWGhQWmlnZ1hDSWdYQ0lnS3lCamJHRjZlaUFySUZ3aUlGd2lJQ2tnUENBd0lDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUmpkWElnS3owZ1kyeGhlbm9nS3lCY0lpQmNJanRjYmx4MFhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBYSFI5WEc1Y2JseDBYSFJjZEZ4MFhIUXZMeUJ2Ym14NUlHRnpjMmxuYmlCcFppQmthV1ptWlhKbGJuUWdkRzhnWVhadmFXUWdkVzV1WldWa1pXUWdjbVZ1WkdWeWFXNW5MbHh1WEhSY2RGeDBYSFJjZEdacGJtRnNWbUZzZFdVZ1BTQnFVWFZsY25rdWRISnBiU2dnWTNWeUlDazdYRzVjZEZ4MFhIUmNkRngwYVdZZ0tDQmxiR1Z0TG1Oc1lYTnpUbUZ0WlNBaFBUMGdabWx1WVd4V1lXeDFaU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmNkR1ZzWlcwdVkyeGhjM05PWVcxbElEMGdabWx1WVd4V1lXeDFaVHRjYmx4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RIMWNibHgwWEhSY2RIMWNibHgwWEhSOVhHNWNibHgwWEhSeVpYUjFjbTRnZEdocGN6dGNibHgwZlN4Y2JseHVYSFJ5WlcxdmRtVkRiR0Z6Y3pvZ1puVnVZM1JwYjI0b0lIWmhiSFZsSUNrZ2UxeHVYSFJjZEhaaGNpQmpiR0Z6YzJWekxDQmxiR1Z0TENCamRYSXNJR05zWVhwNkxDQnFMQ0JtYVc1aGJGWmhiSFZsTEZ4dVhIUmNkRngwY0hKdlkyVmxaQ0E5SUdGeVozVnRaVzUwY3k1c1pXNW5kR2dnUFQwOUlEQWdmSHdnZEhsd1pXOW1JSFpoYkhWbElEMDlQU0JjSW5OMGNtbHVaMXdpSUNZbUlIWmhiSFZsTEZ4dVhIUmNkRngwYVNBOUlEQXNYRzVjZEZ4MFhIUnNaVzRnUFNCMGFHbHpMbXhsYm1kMGFEdGNibHh1WEhSY2RHbG1JQ2dnYWxGMVpYSjVMbWx6Um5WdVkzUnBiMjRvSUhaaGJIVmxJQ2tnS1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnZEdocGN5NWxZV05vS0daMWJtTjBhVzl1S0NCcUlDa2dlMXh1WEhSY2RGeDBYSFJxVVhWbGNua29JSFJvYVhNZ0tTNXlaVzF2ZG1WRGJHRnpjeWdnZG1Gc2RXVXVZMkZzYkNnZ2RHaHBjeXdnYWl3Z2RHaHBjeTVqYkdGemMwNWhiV1VnS1NBcE8xeHVYSFJjZEZ4MGZTazdYRzVjZEZ4MGZWeHVYSFJjZEdsbUlDZ2djSEp2WTJWbFpDQXBJSHRjYmx4MFhIUmNkR05zWVhOelpYTWdQU0FvSUhaaGJIVmxJSHg4SUZ3aVhDSWdLUzV0WVhSamFDZ2djbTV2ZEhkb2FYUmxJQ2tnZkh3Z1cxMDdYRzVjYmx4MFhIUmNkR1p2Y2lBb0lEc2dhU0E4SUd4bGJqc2dhU3NySUNrZ2UxeHVYSFJjZEZ4MFhIUmxiR1Z0SUQwZ2RHaHBjMXNnYVNCZE8xeHVYSFJjZEZ4MFhIUXZMeUJVYUdseklHVjRjSEpsYzNOcGIyNGdhWE1nYUdWeVpTQm1iM0lnWW1WMGRHVnlJR052YlhCeVpYTnphV0pwYkdsMGVTQW9jMlZsSUdGa1pFTnNZWE56S1Z4dVhIUmNkRngwWEhSamRYSWdQU0JsYkdWdExtNXZaR1ZVZVhCbElEMDlQU0F4SUNZbUlDZ2daV3hsYlM1amJHRnpjMDVoYldVZ1AxeHVYSFJjZEZ4MFhIUmNkQ2dnWENJZ1hDSWdLeUJsYkdWdExtTnNZWE56VG1GdFpTQXJJRndpSUZ3aUlDa3VjbVZ3YkdGalpTZ2djbU5zWVhOekxDQmNJaUJjSWlBcElEcGNibHgwWEhSY2RGeDBYSFJjSWx3aVhHNWNkRngwWEhSY2RDazdYRzVjYmx4MFhIUmNkRngwYVdZZ0tDQmpkWElnS1NCN1hHNWNkRngwWEhSY2RGeDBhaUE5SURBN1hHNWNkRngwWEhSY2RGeDBkMmhwYkdVZ0tDQW9ZMnhoZW5vZ1BTQmpiR0Z6YzJWelcyb3JLMTBwSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwTHk4Z1VtVnRiM1psSUNwaGJHd3FJR2x1YzNSaGJtTmxjMXh1WEhSY2RGeDBYSFJjZEZ4MGQyaH
14938BiR1VnS0NCamRYSXVhVzVrWlhoUFppZ2dYQ0lnWENJZ0t5QmpiR0Y2ZWlBcklGd2lJRndpSUNrZ1BqMGdNQ0FwSUh0Y2JseDBYSFJjZEZ4MFhIUmNkRngwWTNWeUlEMGdZM1Z5TG5KbGNHeGhZMlVvSUZ3aUlGd2lJQ3NnWTJ4aGVub2dLeUJjSWlCY0lpd2dYQ0lnWENJZ0tUdGNibHgwWEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkRngwWEhRdkx5QlBibXg1SUdGemMybG5iaUJwWmlCa2FXWm1aWEpsYm5RZ2RHOGdZWFp2YVdRZ2RXNXVaV1ZrWldRZ2NtVnVaR1Z5YVc1bkxseHVYSFJjZEZ4MFhIUmNkR1pwYm1Gc1ZtRnNkV1VnUFNCMllXeDFaU0EvSUdwUmRXVnllUzUwY21sdEtDQmpkWElnS1NBNklGd2lYQ0k3WEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0JsYkdWdExtTnNZWE56VG1GdFpTQWhQVDBnWm1sdVlXeFdZV3gxWlNBcElIdGNibHgwWEhSY2RGeDBYSFJjZEdWc1pXMHVZMnhoYzNOT1lXMWxJRDBnWm1sdVlXeFdZV3gxWlR0Y2JseDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDFjYmx4MFhIUjlYRzVjYmx4MFhIUnlaWFIxY200Z2RHaHBjenRjYmx4MGZTeGNibHh1WEhSMGIyZG5iR1ZEYkdGemN6b2dablZ1WTNScGIyNG9JSFpoYkhWbExDQnpkR0YwWlZaaGJDQXBJSHRjYmx4MFhIUjJZWElnZEhsd1pTQTlJSFI1Y0dWdlppQjJZV3gxWlR0Y2JseHVYSFJjZEdsbUlDZ2dkSGx3Wlc5bUlITjBZWFJsVm1Gc0lEMDlQU0JjSW1KdmIyeGxZVzVjSWlBbUppQjBlWEJsSUQwOVBTQmNJbk4wY21sdVoxd2lJQ2tnZTF4dVhIUmNkRngwY21WMGRYSnVJSE4wWVhSbFZtRnNJRDhnZEdocGN5NWhaR1JEYkdGemN5Z2dkbUZzZFdVZ0tTQTZJSFJvYVhNdWNtVnRiM1psUTJ4aGMzTW9JSFpoYkhWbElDazdYRzVjZEZ4MGZWeHVYRzVjZEZ4MGFXWWdLQ0JxVVhWbGNua3VhWE5HZFc1amRHbHZiaWdnZG1Gc2RXVWdLU0FwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUIwYUdsekxtVmhZMmdvWm5WdVkzUnBiMjRvSUdrZ0tTQjdYRzVjZEZ4MFhIUmNkR3BSZFdWeWVTZ2dkR2hwY3lBcExuUnZaMmRzWlVOc1lYTnpLQ0IyWVd4MVpTNWpZV3hzS0hSb2FYTXNJR2tzSUhSb2FYTXVZMnhoYzNOT1lXMWxMQ0J6ZEdGMFpWWmhiQ2tzSUhOMFlYUmxWbUZzSUNrN1hHNWNkRngwWEhSOUtUdGNibHgwWEhSOVhHNWNibHgwWEhSeVpYUjFjbTRnZEdocGN5NWxZV05vS0daMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MGFXWWdLQ0IwZVhCbElEMDlQU0JjSW5OMGNtbHVaMXdpSUNrZ2UxeHVYSFJjZEZ4MFhIUXZMeUJVYjJkbmJHVWdhVzVrYVhacFpIVmhiQ0JqYkdGemN5QnVZVzFsYzF4dVhIUmNkRngwWEhSMllYSWdZMnhoYzNOT1lXMWxMRnh1WEhSY2RGeDBYSFJjZEdrZ1BTQXdMRnh1WEhSY2RGeDBYSFJjZEhObGJHWWdQU0JxVVhWbGNua29JSFJvYVhNZ0tTeGNibHgwWEhSY2RGeDBYSFJqYkdGemMwNWhiV1Z6SUQwZ2RtRnNkV1V1YldGMFkyZ29JSEp1YjNSM2FHbDBaU0FwSUh4OElGdGRPMXh1WEc1Y2RGeDBYSFJjZEhkb2FXeGxJQ2dnS0dOc1lYTnpUbUZ0WlNBOUlHTnNZWE56VG1GdFpYTmJJR2tyS3lCZEtTQXBJSHRjYmx4MFhIUmNkRngwWEhRdkx5QkRhR1ZqYXlCbFlXTm9JR05zWVhOelRtRnRaU0JuYVhabGJpd2djM0JoWTJVZ2MyVndZWEpoZEdWa0lHeHBjM1JjYmx4MFhIUmNkRngwWEhScFppQW9JSE5sYkdZdWFHRnpRMnhoYzNNb0lHTnNZWE56VG1GdFpTQXBJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBjMlZzWmk1eVpXMXZkbVZEYkdGemN5Z2dZMnhoYzNOT1lXMWxJQ2s3WEc1Y2RGeDBYSFJjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEZ4MFhIUmNkSE5sYkdZdVlXUmtRMnhoYzNNb0lHTnNZWE56VG1GdFpTQXBPMXh1WEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUXZMeUJVYjJkbmJHVWdkMmh2YkdVZ1kyeGhjM01nYm1GdFpWeHVYSFJjZEZ4MGZTQmxiSE5sSUdsbUlDZ2dkSGx3WlNBOVBUMGdjM1J5ZFc1a1pXWnBibVZrSUh4OElIUjVjR1VnUFQwOUlGd2lZbTl2YkdWaGJsd2lJQ2tnZTF4dVhIUmNkRngwWEhScFppQW9JSFJvYVhNdVkyeGhjM05PWVcxbElDa2dlMXh1WEhSY2RGeDBYSFJjZEM4dklITjBiM0psSUdOc1lYTnpUbUZ0WlNCcFppQnpaWFJjYmx4MFhIUmNkRngwWEhSa1lYUmhYM0J5YVhZdWMyVjBLQ0IwYUdsekxDQmNJbDlmWTJ4aGMzTk9ZVzFsWDE5Y0lpd2dkR2hwY3k1amJHRnpjMDVoYldVZ0tUdGNibHgwWEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFJjZEM4dklFbG1JSFJvWlNCbGJHVnRaVzUwSUdoaGN5QmhJR05zWVhOeklHNWhiV1VnYjNJZ2FXWWdkMlVuY21VZ2NHRnpjMlZrSUdCbVlXeHpaV0FzWEc1Y2RGeDBYSFJjZEM4dklIUm9aVzRnY21WdGIzWmxJSFJvWlNCM2FHOXNaU0JqYkdGemMyNWhiV1VnS0dsbUlIUm9aWEpsSUhkaGN5QnZibVVzSUhSb1pTQmhZbTkyWlNCellYWmxaQ0JwZENrdVhHNWNkRngwWEhSY2RDOHZJRTkwYUdWeWQybHpaU0JpY21sdVp5QmlZV05ySUhkb1lYUmxkbVZ5SUhkaGN5QndjbVYyYVc5MWMyeDVJSE5oZG1Wa0lDaHBaaUJoYm5sMGFHbHVaeWtzWEc1Y2RGeDBYSFJjZEM4dklHWmhiR3hwYm1jZ1ltRmpheUIwYnlCMGFHVWdaVzF3ZEhrZ2MzUnlhVzVuSUdsbUlHNXZkR2hwYm1jZ2QyRnpJSE4wYjNKbFpDNWNibHgwWEhSY2RGeDBkR2hwY3k1amJHRnpjMDVoYldVZ1BTQjBhR2x6TG1Oc1lYTnpUbUZ0WlNCOGZDQjJZV3gxWlNBOVBUMGdabUZzYzJVZ1B5QmNJbHdpSURvZ1pHRjBZVjl3Y21sMkxtZGxkQ2dnZEdocGN5d2dYQ0pmWDJOc1lYTnpUbUZ0WlY5ZlhDSWdLU0I4ZkNCY0lsd2lPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMHBPMXh1WEhSOUxGeHVYRzVjZEdoaGMwTnNZWE56T2lCbWRXNWpkR2x2YmlnZ2MyVnNaV04wYjNJZ0tTQjdYRzVjZEZ4MGRtRnlJR05zWVhOelRtRnRaU0E5SUZ3aUlGd2lJQ3NnYzJWc1pXTjBiM0lnS3lCY0lpQmNJaXhjYmx4MFhIUmNkR2tnUFNBd0xGeHVYSFJjZEZ4MGJDQTlJSFJvYVhNdWJHVnVaM1JvTzF4dVhIUmNkR1p2Y2lBb0lEc2dhU0E4SUd3N0lHa3JLeUFwSUh0Y2JseDBYSFJjZEdsbUlDZ2dkR2hwYzF0cFhTNXViMlJsVkhsd1pTQTlQVDBnTVNBbUppQW9YQ0lnWENJZ0t5QjBhR2x6VzJsZExtTnNZWE56VG1GdFpTQXJJRndpSUZ3aUtTNXlaWEJzWVdObEtISmpiR0Z6Y3l3Z1hDSWdYQ0lwTG1sdVpHVjRUMllvSUdOc1lYTnpUbUZ0WlNBcElENDlJREFnS1NCN1hHNWNkRngwWEhSY2RISmxkSFZ5YmlCMGNuVmxPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHh1WEhSY2RISmxkSFZ5YmlCbVlXeHpaVHRjYmx4MGZWeHVmU2s3WEc1Y2JseHVYRzVjYm5aaGNpQnljbVYwZFhKdUlEMGdMMXhjY2k5bk8xeHVYRzVxVVhWbGNua3VabTR1WlhoMFpXNWtLSHRjYmx4MGRtRnNPaUJtZFc1amRHbHZiaWdnZG1Gc2RXVWdLU0I3WEc1Y2RGeDBkbUZ5SUdodmIydHpMQ0J5WlhRc0lHbHpSblZ1WTNScGIyNHNYRzVjZEZ4MFhIUmxiR1Z0SUQwZ2RHaHBjMXN3WFR0Y2JseHVYSFJjZEdsbUlDZ2dJV0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ2dLU0I3WEc1Y2RGeDBYSFJwWmlBb0lHVnNaVzBnS1NCN1hHNWNkRngwWEhSY2RHaHZiMnR6SUQwZ2FsRjFaWEo1TG5aaGJFaHZiMnR6V3lCbGJHVnRMblI1Y0dVZ1hTQjhmQ0JxVVhWbGNua3VkbUZzU0c
149385dmEzTmJJR1ZzWlcwdWJtOWtaVTVoYldVdWRHOU1iM2RsY2tOaGMyVW9LU0JkTzF4dVhHNWNkRngwWEhSY2RHbG1JQ2dnYUc5dmEzTWdKaVlnWENKblpYUmNJaUJwYmlCb2IyOXJjeUFtSmlBb2NtVjBJRDBnYUc5dmEzTXVaMlYwS0NCbGJHVnRMQ0JjSW5aaGJIVmxYQ0lnS1NrZ0lUMDlJSFZ1WkdWbWFXNWxaQ0FwSUh0Y2JseDBYSFJjZEZ4MFhIUnlaWFIxY200Z2NtVjBPMXh1WEhSY2RGeDBYSFI5WEc1Y2JseDBYSFJjZEZ4MGNtVjBJRDBnWld4bGJTNTJZV3gxWlR0Y2JseHVYSFJjZEZ4MFhIUnlaWFIxY200Z2RIbHdaVzltSUhKbGRDQTlQVDBnWENKemRISnBibWRjSWlBL1hHNWNkRngwWEhSY2RGeDBMeThnU0dGdVpHeGxJRzF2YzNRZ1kyOXRiVzl1SUhOMGNtbHVaeUJqWVhObGMxeHVYSFJjZEZ4MFhIUmNkSEpsZEM1eVpYQnNZV05sS0hKeVpYUjFjbTRzSUZ3aVhDSXBJRHBjYmx4MFhIUmNkRngwWEhRdkx5QklZVzVrYkdVZ1kyRnpaWE1nZDJobGNtVWdkbUZzZFdVZ2FYTWdiblZzYkM5MWJtUmxaaUJ2Y2lCdWRXMWlaWEpjYmx4MFhIUmNkRngwWEhSeVpYUWdQVDBnYm5Wc2JDQS9JRndpWENJZ09pQnlaWFE3WEc1Y2RGeDBYSFI5WEc1Y2JseDBYSFJjZEhKbGRIVnlianRjYmx4MFhIUjlYRzVjYmx4MFhIUnBjMFoxYm1OMGFXOXVJRDBnYWxGMVpYSjVMbWx6Um5WdVkzUnBiMjRvSUhaaGJIVmxJQ2s3WEc1Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3k1bFlXTm9LR1oxYm1OMGFXOXVLQ0JwSUNrZ2UxeHVYSFJjZEZ4MGRtRnlJSFpoYkR0Y2JseHVYSFJjZEZ4MGFXWWdLQ0IwYUdsekxtNXZaR1ZVZVhCbElDRTlQU0F4SUNrZ2UxeHVYSFJjZEZ4MFhIUnlaWFIxY200N1hHNWNkRngwWEhSOVhHNWNibHgwWEhSY2RHbG1JQ2dnYVhOR2RXNWpkR2x2YmlBcElIdGNibHgwWEhSY2RGeDBkbUZzSUQwZ2RtRnNkV1V1WTJGc2JDZ2dkR2hwY3l3Z2FTd2dhbEYxWlhKNUtDQjBhR2x6SUNrdWRtRnNLQ2tnS1R0Y2JseDBYSFJjZEgwZ1pXeHpaU0I3WEc1Y2RGeDBYSFJjZEhaaGJDQTlJSFpoYkhWbE8xeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUXZMeUJVY21WaGRDQnVkV3hzTDNWdVpHVm1hVzVsWkNCaGN5QmNJbHdpT3lCamIyNTJaWEowSUc1MWJXSmxjbk1nZEc4Z2MzUnlhVzVuWEc1Y2RGeDBYSFJwWmlBb0lIWmhiQ0E5UFNCdWRXeHNJQ2tnZTF4dVhIUmNkRngwWEhSMllXd2dQU0JjSWx3aU8xeHVYRzVjZEZ4MFhIUjlJR1ZzYzJVZ2FXWWdLQ0IwZVhCbGIyWWdkbUZzSUQwOVBTQmNJbTUxYldKbGNsd2lJQ2tnZTF4dVhIUmNkRngwWEhSMllXd2dLejBnWENKY0lqdGNibHh1WEhSY2RGeDBmU0JsYkhObElHbG1JQ2dnYWxGMVpYSjVMbWx6UVhKeVlYa29JSFpoYkNBcElDa2dlMXh1WEhSY2RGeDBYSFIyWVd3Z1BTQnFVWFZsY25rdWJXRndLQ0IyWVd3c0lHWjFibU4wYVc5dUtDQjJZV3gxWlNBcElIdGNibHgwWEhSY2RGeDBYSFJ5WlhSMWNtNGdkbUZzZFdVZ1BUMGdiblZzYkNBL0lGd2lYQ0lnT2lCMllXeDFaU0FySUZ3aVhDSTdYRzVjZEZ4MFhIUmNkSDBwTzF4dVhIUmNkRngwZlZ4dVhHNWNkRngwWEhSb2IyOXJjeUE5SUdwUmRXVnllUzUyWVd4SWIyOXJjMXNnZEdocGN5NTBlWEJsSUYwZ2ZId2dhbEYxWlhKNUxuWmhiRWh2YjJ0eld5QjBhR2x6TG01dlpHVk9ZVzFsTG5SdlRHOTNaWEpEWVhObEtDa2dYVHRjYmx4dVhIUmNkRngwTHk4Z1NXWWdjMlYwSUhKbGRIVnlibk1nZFc1a1pXWnBibVZrTENCbVlXeHNJR0poWTJzZ2RHOGdibTl5YldGc0lITmxkSFJwYm1kY2JseDBYSFJjZEdsbUlDZ2dJV2h2YjJ0eklIeDhJQ0VvWENKelpYUmNJaUJwYmlCb2IyOXJjeWtnZkh3Z2FHOXZhM011YzJWMEtDQjBhR2x6TENCMllXd3NJRndpZG1Gc2RXVmNJaUFwSUQwOVBTQjFibVJsWm1sdVpXUWdLU0I3WEc1Y2RGeDBYSFJjZEhSb2FYTXVkbUZzZFdVZ1BTQjJZV3c3WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmU2s3WEc1Y2RIMWNibjBwTzF4dVhHNXFVWFZsY25rdVpYaDBaVzVrS0h0Y2JseDBkbUZzU0c5dmEzTTZJSHRjYmx4MFhIUnZjSFJwYjI0NklIdGNibHgwWEhSY2RHZGxkRG9nWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RGeDBYSFJjZEhaaGNpQjJZV3dnUFNCcVVYVmxjbmt1Wm1sdVpDNWhkSFJ5S0NCbGJHVnRMQ0JjSW5aaGJIVmxYQ0lnS1R0Y2JseDBYSFJjZEZ4MGNtVjBkWEp1SUhaaGJDQWhQU0J1ZFd4c0lEOWNibHgwWEhSY2RGeDBYSFIyWVd3Z09seHVYSFJjZEZ4MFhIUmNkQzh2SUZOMWNIQnZjblE2SUVsRk1UQXRNVEVyWEc1Y2RGeDBYSFJjZEZ4MEx5OGdiM0IwYVc5dUxuUmxlSFFnZEdoeWIzZHpJR1Y0WTJWd2RHbHZibk1nS0NNeE5EWTROaXdnSXpFME9EVTRLVnh1WEhSY2RGeDBYSFJjZEdwUmRXVnllUzUwY21sdEtDQnFVWFZsY25rdWRHVjRkQ2dnWld4bGJTQXBJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmU3hjYmx4MFhIUnpaV3hsWTNRNklIdGNibHgwWEhSY2RHZGxkRG9nWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RGeDBYSFJjZEhaaGNpQjJZV3gxWlN3Z2IzQjBhVzl1TEZ4dVhIUmNkRngwWEhSY2RHOXdkR2x2Ym5NZ1BTQmxiR1Z0TG05d2RHbHZibk1zWEc1Y2RGeDBYSFJjZEZ4MGFXNWtaWGdnUFNCbGJHVnRMbk5sYkdWamRHVmtTVzVrWlhnc1hHNWNkRngwWEhSY2RGeDBiMjVsSUQwZ1pXeGxiUzUwZVhCbElEMDlQU0JjSW5ObGJHVmpkQzF2Ym1WY0lpQjhmQ0JwYm1SbGVDQThJREFzWEc1Y2RGeDBYSFJjZEZ4MGRtRnNkV1Z6SUQwZ2IyNWxJRDhnYm5Wc2JDQTZJRnRkTEZ4dVhIUmNkRngwWEhSY2RHMWhlQ0E5SUc5dVpTQS9JR2x1WkdWNElDc2dNU0E2SUc5d2RHbHZibk11YkdWdVozUm9MRnh1WEhSY2RGeDBYSFJjZEdrZ1BTQnBibVJsZUNBOElEQWdQMXh1WEhSY2RGeDBYSFJjZEZ4MGJXRjRJRHBjYmx4MFhIUmNkRngwWEhSY2RHOXVaU0EvSUdsdVpHVjRJRG9nTUR0Y2JseHVYSFJjZEZ4MFhIUXZMeUJNYjI5d0lIUm9jbTkxWjJnZ1lXeHNJSFJvWlNCelpXeGxZM1JsWkNCdmNIUnBiMjV6WEc1Y2RGeDBYSFJjZEdadmNpQW9JRHNnYVNBOElHMWhlRHNnYVNzcklDa2dlMXh1WEhSY2RGeDBYSFJjZEc5d2RHbHZiaUE5SUc5d2RHbHZibk5iSUdrZ1hUdGNibHh1WEhSY2RGeDBYSFJjZEM4dklFbEZOaTA1SUdSdlpYTnVKM1FnZFhCa1lYUmxJSE5sYkdWamRHVmtJR0ZtZEdWeUlHWnZjbTBnY21WelpYUWdLQ015TlRVeEtWeHVYSFJjZEZ4MFhIUmNkR2xtSUNnZ0tDQnZjSFJwYjI0dWMyVnNaV04wWldRZ2ZId2dhU0E5UFQwZ2FXNWtaWGdnS1NBbUpseHVYSFJjZEZ4MFhIUmNkRngwWEhRdkx5QkViMjRuZENCeVpYUjFjbTRnYjNCMGFXOXVjeUIwYUdGMElHRnlaU0JrYVhOaFlteGxaQ0J2Y2lCcGJpQmhJR1JwYzJGaWJHVmtJRzl3ZEdkeWIzVndYRzVjZEZ4MFhIUmNkRngwWEhSY2RDZ2djM1Z3Y0c5eWRDNXZjSFJFYVhOaFlteGxaQ0EvSUNGdmNIUnBiMjR1WkdsellXSnNaV1FnT2lCdmNIUnBiMjR1WjJWMFFYUjBjbWxpZFhSbEtDQmNJbVJwYzJGaWJHVmtYQ0lnS1NBOVBUMGdiblZzYkNBcElDWW1YRzVjZEZ4MFhIUmNkRngwWEhSY2RDZ2dJVzl3ZEdsdmJpNXdZWEpsYm5ST2IyUmxMbVJwYzJGaWJHVmtJSHg4SUNGcVVYVmxjbmt1Ym05a1pVNWhiV1VvSUc5d2RHbHZiaTV3WVhKbGJuUk9iMlJsTENCY0ltOXdkR2R5YjNWd1hDSWdLU0FwSUNrZ2UxeHVYRzVjZEZ4MFhIUmNkRngwWEhRdkx5QkhaWFFnZEdobElITndaV05wWm1saklIWmhiSFZsSUdadmNpQjBhR1VnYjNCMGFXOXVYRzVjZEZ4MFhIUmNkRngwWEhSMllXeDFaU0E5SUdwUmRXVnllU2dnYjNCMGFXOXVJQ2t1ZG1Gc0tDazdYRzVjYmx4MFhIUmNkRngwWEhSY2RDOHZJRmRsSUdSdmJpZDBJRzVsWldRZ1lXNGdZWEp5WVhrZ1ptOXlJRzl1WlNCelpXeGxZM1J6WEc1Y2RGeDBYSFJjZEZ4MFhIUnBaaUFvSUc5
14938dVpTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBjbVYwZFhKdUlIWmhiSFZsTzF4dVhIUmNkRngwWEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFJjZEZ4MFhIUXZMeUJOZFd4MGFTMVRaV3hsWTNSeklISmxkSFZ5YmlCaGJpQmhjbkpoZVZ4dVhIUmNkRngwWEhSY2RGeDBkbUZzZFdWekxuQjFjMmdvSUhaaGJIVmxJQ2s3WEc1Y2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkRngwY21WMGRYSnVJSFpoYkhWbGN6dGNibHgwWEhSY2RIMHNYRzVjYmx4MFhIUmNkSE5sZERvZ1puVnVZM1JwYjI0b0lHVnNaVzBzSUhaaGJIVmxJQ2tnZTF4dVhIUmNkRngwWEhSMllYSWdiM0IwYVc5dVUyVjBMQ0J2Y0hScGIyNHNYRzVjZEZ4MFhIUmNkRngwYjNCMGFXOXVjeUE5SUdWc1pXMHViM0IwYVc5dWN5eGNibHgwWEhSY2RGeDBYSFIyWVd4MVpYTWdQU0JxVVhWbGNua3ViV0ZyWlVGeWNtRjVLQ0IyWVd4MVpTQXBMRnh1WEhSY2RGeDBYSFJjZEdrZ1BTQnZjSFJwYjI1ekxteGxibWQwYUR0Y2JseHVYSFJjZEZ4MFhIUjNhR2xzWlNBb0lHa3RMU0FwSUh0Y2JseDBYSFJjZEZ4MFhIUnZjSFJwYjI0Z1BTQnZjSFJwYjI1eld5QnBJRjA3WEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0FvYjNCMGFXOXVMbk5sYkdWamRHVmtJRDBnYWxGMVpYSjVMbWx1UVhKeVlYa29JRzl3ZEdsdmJpNTJZV3gxWlN3Z2RtRnNkV1Z6SUNrZ1BqMGdNQ2tnS1NCN1hHNWNkRngwWEhSY2RGeDBYSFJ2Y0hScGIyNVRaWFFnUFNCMGNuVmxPMXh1WEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUmNkQzh2SUVadmNtTmxJR0p5YjNkelpYSnpJSFJ2SUdKbGFHRjJaU0JqYjI1emFYTjBaVzUwYkhrZ2QyaGxiaUJ1YjI0dGJXRjBZMmhwYm1jZ2RtRnNkV1VnYVhNZ2MyVjBYRzVjZEZ4MFhIUmNkR2xtSUNnZ0lXOXdkR2x2YmxObGRDQXBJSHRjYmx4MFhIUmNkRngwWEhSbGJHVnRMbk5sYkdWamRHVmtTVzVrWlhnZ1BTQXRNVHRjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSeVpYUjFjbTRnZG1Gc2RXVnpPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHgwZlZ4dWZTazdYRzVjYmk4dklGSmhaR2x2Y3lCaGJtUWdZMmhsWTJ0aWIzaGxjeUJuWlhSMFpYSXZjMlYwZEdWeVhHNXFVWFZsY25rdVpXRmphQ2hiSUZ3aWNtRmthVzljSWl3Z1hDSmphR1ZqYTJKdmVGd2lJRjBzSUdaMWJtTjBhVzl1S0NrZ2UxeHVYSFJxVVhWbGNua3VkbUZzU0c5dmEzTmJJSFJvYVhNZ1hTQTlJSHRjYmx4MFhIUnpaWFE2SUdaMWJtTjBhVzl1S0NCbGJHVnRMQ0IyWVd4MVpTQXBJSHRjYmx4MFhIUmNkR2xtSUNnZ2FsRjFaWEo1TG1selFYSnlZWGtvSUhaaGJIVmxJQ2tnS1NCN1hHNWNkRngwWEhSY2RISmxkSFZ5YmlBb0lHVnNaVzB1WTJobFkydGxaQ0E5SUdwUmRXVnllUzVwYmtGeWNtRjVLQ0JxVVhWbGNua29aV3hsYlNrdWRtRnNLQ2tzSUhaaGJIVmxJQ2tnUGowZ01DQXBPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHgwZlR0Y2JseDBhV1lnS0NBaGMzVndjRzl5ZEM1amFHVmphMDl1SUNrZ2UxeHVYSFJjZEdwUmRXVnllUzUyWVd4SWIyOXJjMXNnZEdocGN5QmRMbWRsZENBOUlHWjFibU4wYVc5dUtDQmxiR1Z0SUNrZ2UxeHVYSFJjZEZ4MGNtVjBkWEp1SUdWc1pXMHVaMlYwUVhSMGNtbGlkWFJsS0Z3aWRtRnNkV1ZjSWlrZ1BUMDlJRzUxYkd3Z1B5QmNJbTl1WENJZ09pQmxiR1Z0TG5aaGJIVmxPMXh1WEhSY2RIMDdYRzVjZEgxY2JuMHBPMXh1WEc1Y2JseHVYRzR2THlCU1pYUjFjbTRnYWxGMVpYSjVJR1p2Y2lCaGRIUnlhV0oxZEdWekxXOXViSGtnYVc1amJIVnphVzl1WEc1Y2JseHVhbEYxWlhKNUxtVmhZMmdvSUNoY0ltSnNkWElnWm05amRYTWdabTlqZFhOcGJpQm1iMk4xYzI5MWRDQnNiMkZrSUhKbGMybDZaU0J6WTNKdmJHd2dkVzVzYjJGa0lHTnNhV05ySUdSaWJHTnNhV05ySUZ3aUlDdGNibHgwWENKdGIzVnpaV1J2ZDI0Z2JXOTFjMlYxY0NCdGIzVnpaVzF2ZG1VZ2JXOTFjMlZ2ZG1WeUlHMXZkWE5sYjNWMElHMXZkWE5sWlc1MFpYSWdiVzkxYzJWc1pXRjJaU0JjSWlBclhHNWNkRndpWTJoaGJtZGxJSE5sYkdWamRDQnpkV0p0YVhRZ2EyVjVaRzkzYmlCclpYbHdjbVZ6Y3lCclpYbDFjQ0JsY25KdmNpQmpiMjUwWlhoMGJXVnVkVndpS1M1emNHeHBkQ2hjSWlCY0lpa3NJR1oxYm1OMGFXOXVLQ0JwTENCdVlXMWxJQ2tnZTF4dVhHNWNkQzh2SUVoaGJtUnNaU0JsZG1WdWRDQmlhVzVrYVc1blhHNWNkR3BSZFdWeWVTNW1ibHNnYm1GdFpTQmRJRDBnWm5WdVkzUnBiMjRvSUdSaGRHRXNJR1p1SUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJoY21kMWJXVnVkSE11YkdWdVozUm9JRDRnTUNBL1hHNWNkRngwWEhSMGFHbHpMbTl1S0NCdVlXMWxMQ0J1ZFd4c0xDQmtZWFJoTENCbWJpQXBJRHBjYmx4MFhIUmNkSFJvYVhNdWRISnBaMmRsY2lnZ2JtRnRaU0FwTzF4dVhIUjlPMXh1ZlNrN1hHNWNibXBSZFdWeWVTNW1iaTVsZUhSbGJtUW9lMXh1WEhSb2IzWmxjam9nWm5WdVkzUnBiMjRvSUdadVQzWmxjaXdnWm01UGRYUWdLU0I3WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE11Ylc5MWMyVmxiblJsY2lnZ1ptNVBkbVZ5SUNrdWJXOTFjMlZzWldGMlpTZ2dabTVQZFhRZ2ZId2dabTVQZG1WeUlDazdYRzVjZEgwc1hHNWNibHgwWW1sdVpEb2dablZ1WTNScGIyNG9JSFI1Y0dWekxDQmtZWFJoTENCbWJpQXBJSHRjYmx4MFhIUnlaWFIxY200Z2RHaHBjeTV2YmlnZ2RIbHdaWE1zSUc1MWJHd3NJR1JoZEdFc0lHWnVJQ2s3WEc1Y2RIMHNYRzVjZEhWdVltbHVaRG9nWm5WdVkzUnBiMjRvSUhSNWNHVnpMQ0JtYmlBcElIdGNibHgwWEhSeVpYUjFjbTRnZEdocGN5NXZabVlvSUhSNWNHVnpMQ0J1ZFd4c0xDQm1iaUFwTzF4dVhIUjlMRnh1WEc1Y2RHUmxiR1ZuWVhSbE9pQm1kVzVqZEdsdmJpZ2djMlZzWldOMGIzSXNJSFI1Y0dWekxDQmtZWFJoTENCbWJpQXBJSHRjYmx4MFhIUnlaWFIxY200Z2RHaHBjeTV2YmlnZ2RIbHdaWE1zSUhObGJHVmpkRzl5TENCa1lYUmhMQ0JtYmlBcE8xeHVYSFI5TEZ4dVhIUjFibVJsYkdWbllYUmxPaUJtZFc1amRHbHZiaWdnYzJWc1pXTjBiM0lzSUhSNWNHVnpMQ0JtYmlBcElIdGNibHgwWEhRdkx5QW9JRzVoYldWemNHRmpaU0FwSUc5eUlDZ2djMlZzWldOMGIzSXNJSFI1Y0dWeklGc3NJR1p1WFNBcFhHNWNkRngwY21WMGRYSnVJR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ2dQVDA5SURFZ1B5QjBhR2x6TG05bVppZ2djMlZzWldOMGIzSXNJRndpS2lwY0lpQXBJRG9nZEdocGN5NXZabVlvSUhSNWNHVnpMQ0J6Wld4bFkzUnZjaUI4ZkNCY0lpb3FYQ0lzSUdadUlDazdYRzVjZEgxY2JuMHBPMXh1WEc1Y2JuWmhjaUJ1YjI1alpTQTlJR3BSZFdWeWVTNXViM2NvS1R0Y2JseHVkbUZ5SUhKeGRXVnllU0E5SUNndlhGdy9MeWs3WEc1Y2JseHVYRzR2THlCVGRYQndiM0owT2lCQmJtUnliMmxrSURJdU0xeHVMeThnVjI5eWEyRnliM1Z1WkNCbVlXbHNkWEpsSUhSdklITjBjbWx1WnkxallYTjBJRzUxYkd3Z2FXNXdkWFJjYm1wUmRXVnllUzV3WVhKelpVcFRUMD
14938RnUFNCbWRXNWpkR2x2YmlnZ1pHRjBZU0FwSUh0Y2JseDBjbVYwZFhKdUlFcFRUMDR1Y0dGeWMyVW9JR1JoZEdFZ0t5QmNJbHdpSUNrN1hHNTlPMXh1WEc1Y2JpOHZJRU55YjNOekxXSnliM2R6WlhJZ2VHMXNJSEJoY25OcGJtZGNibXBSZFdWeWVTNXdZWEp6WlZoTlRDQTlJR1oxYm1OMGFXOXVLQ0JrWVhSaElDa2dlMXh1WEhSMllYSWdlRzFzTENCMGJYQTdYRzVjZEdsbUlDZ2dJV1JoZEdFZ2ZId2dkSGx3Wlc5bUlHUmhkR0VnSVQwOUlGd2ljM1J5YVc1blhDSWdLU0I3WEc1Y2RGeDBjbVYwZFhKdUlHNTFiR3c3WEc1Y2RIMWNibHh1WEhRdkx5QlRkWEJ3YjNKME9pQkpSVGxjYmx4MGRISjVJSHRjYmx4MFhIUjBiWEFnUFNCdVpYY2dSRTlOVUdGeWMyVnlLQ2s3WEc1Y2RGeDBlRzFzSUQwZ2RHMXdMbkJoY25ObFJuSnZiVk4wY21sdVp5Z2daR0YwWVN3Z1hDSjBaWGgwTDNodGJGd2lJQ2s3WEc1Y2RIMGdZMkYwWTJnZ0tDQmxJQ2tnZTF4dVhIUmNkSGh0YkNBOUlIVnVaR1ZtYVc1bFpEdGNibHgwZlZ4dVhHNWNkR2xtSUNnZ0lYaHRiQ0I4ZkNCNGJXd3VaMlYwUld4bGJXVnVkSE5DZVZSaFowNWhiV1VvSUZ3aWNHRnljMlZ5WlhKeWIzSmNJaUFwTG14bGJtZDBhQ0FwSUh0Y2JseDBYSFJxVVhWbGNua3VaWEp5YjNJb0lGd2lTVzUyWVd4cFpDQllUVXc2SUZ3aUlDc2daR0YwWVNBcE8xeHVYSFI5WEc1Y2RISmxkSFZ5YmlCNGJXdzdYRzU5TzF4dVhHNWNiblpoY2x4dVhIUnlhR0Z6YUNBOUlDOGpMaW9rTHl4Y2JseDBjblJ6SUQwZ0x5aGJQeVpkS1Y4OVcxNG1YU292TEZ4dVhIUnlhR1ZoWkdWeWN5QTlJQzllS0M0cVB5azZXeUJjWEhSZEtpaGJYbHhjY2x4Y2JsMHFLU1F2Yldjc1hHNWNkQzh2SUNNM05qVXpMQ0FqT0RFeU5Td2dJemd4TlRJNklHeHZZMkZzSUhCeWIzUnZZMjlzSUdSbGRHVmpkR2x2Ymx4dVhIUnliRzlqWVd4UWNtOTBiMk52YkNBOUlDOWVLRDg2WVdKdmRYUjhZWEJ3ZkdGd2NDMXpkRzl5WVdkbGZDNHJMV1Y0ZEdWdWMybHZibnhtYVd4bGZISmxjM3gzYVdSblpYUXBPaVF2TEZ4dVhIUnlibTlEYjI1MFpXNTBJRDBnTDE0b1B6cEhSVlI4U0VWQlJDa2tMeXhjYmx4MGNuQnliM1J2WTI5c0lEMGdMMTVjWEM5Y1hDOHZMRnh1WEhSeWRYSnNJRDBnTDE0b1cxeGNkeTRyTFYwck9pa29QenBjWEM5Y1hDOG9QenBiWGx4Y0x6OGpYU3BBZkNrb1cxNWNYQzgvSXpwZEtpa29Qem82S0Z4Y1pDc3BmQ2w4S1M4c1hHNWNibHgwTHlvZ1VISmxabWxzZEdWeWMxeHVYSFFnS2lBeEtTQlVhR1Y1SUdGeVpTQjFjMlZtZFd3Z2RHOGdhVzUwY205a2RXTmxJR04xYzNSdmJTQmtZWFJoVkhsd1pYTWdLSE5sWlNCaGFtRjRMMnB6YjI1d0xtcHpJR1p2Y2lCaGJpQmxlR0Z0Y0d4bEtWeHVYSFFnS2lBeUtTQlVhR1Z6WlNCaGNtVWdZMkZzYkdWa09seHVYSFFnS2lBZ0lDQXRJRUpGUms5U1JTQmhjMnRwYm1jZ1ptOXlJR0VnZEhKaGJuTndiM0owWEc1Y2RDQXFJQ0FnSUMwZ1FVWlVSVklnY0dGeVlXMGdjMlZ5YVdGc2FYcGhkR2x2YmlBb2N5NWtZWFJoSUdseklHRWdjM1J5YVc1bklHbG1JSE11Y0hKdlkyVnpjMFJoZEdFZ2FYTWdkSEoxWlNsY2JseDBJQ29nTXlrZ2EyVjVJR2x6SUhSb1pTQmtZWFJoVkhsd1pWeHVYSFFnS2lBMEtTQjBhR1VnWTJGMFkyaGhiR3dnYzNsdFltOXNJRndpS2x3aUlHTmhiaUJpWlNCMWMyVmtYRzVjZENBcUlEVXBJR1Y0WldOMWRHbHZiaUIzYVd4c0lITjBZWEowSUhkcGRHZ2dkSEpoYm5Od2IzSjBJR1JoZEdGVWVYQmxJR0Z1WkNCVVNFVk9JR052Ym5ScGJuVmxJR1J2ZDI0Z2RHOGdYQ0lxWENJZ2FXWWdibVZsWkdWa1hHNWNkQ0FxTDF4dVhIUndjbVZtYVd4MFpYSnpJRDBnZTMwc1hHNWNibHgwTHlvZ1ZISmhibk53YjNKMGN5QmlhVzVrYVc1bmMxeHVYSFFnS2lBeEtTQnJaWGtnYVhNZ2RHaGxJR1JoZEdGVWVYQmxYRzVjZENBcUlESXBJSFJvWlNCallYUmphR0ZzYkNCemVXMWliMndnWENJcVhDSWdZMkZ1SUdKbElIVnpaV1JjYmx4MElDb2dNeWtnYzJWc1pXTjBhVzl1SUhkcGJHd2djM1JoY25RZ2QybDBhQ0IwY21GdWMzQnZjblFnWkdGMFlWUjVjR1VnWVc1a0lGUklSVTRnWjI4Z2RHOGdYQ0lxWENJZ2FXWWdibVZsWkdWa1hHNWNkQ0FxTDF4dVhIUjBjbUZ1YzNCdmNuUnpJRDBnZTMwc1hHNWNibHgwTHk4Z1FYWnZhV1FnWTI5dGJXVnVkQzF3Y205c2IyY2dZMmhoY2lCelpYRjFaVzVqWlNBb0l6RXdNRGs0S1RzZ2JYVnpkQ0JoY0hCbFlYTmxJR3hwYm5RZ1lXNWtJR1YyWVdSbElHTnZiWEJ5WlhOemFXOXVYRzVjZEdGc2JGUjVjR1Z6SUQwZ1hDSXFMMXdpTG1OdmJtTmhkQ2dnWENJcVhDSWdLU3hjYmx4dVhIUXZMeUJFYjJOMWJXVnVkQ0JzYjJOaGRHbHZibHh1WEhSaGFtRjRURzlqWVhScGIyNGdQU0IzYVc1a2IzY3ViRzlqWVhScGIyNHVhSEpsWml4Y2JseHVYSFF2THlCVFpXZHRaVzUwSUd4dlkyRjBhVzl1SUdsdWRHOGdjR0Z5ZEhOY2JseDBZV3BoZUV4dlkxQmhjblJ6SUQwZ2NuVnliQzVsZUdWaktDQmhhbUY0VEc5allYUnBiMjR1ZEc5TWIzZGxja05oYzJVb0tTQXBJSHg4SUZ0ZE8xeHVYRzR2THlCQ1lYTmxJRndpWTI5dWMzUnlkV04wYjNKY0lpQm1iM0lnYWxGMVpYSjVMbUZxWVhoUWNtVm1hV3gwWlhJZ1lXNWtJR3BSZFdWeWVTNWhhbUY0VkhKaGJuTndiM0owWEc1bWRXNWpkR2x2YmlCaFpHUlViMUJ5WldacGJIUmxjbk5QY2xSeVlXNXpjRzl5ZEhNb0lITjBjblZqZEhWeVpTQXBJSHRjYmx4dVhIUXZMeUJrWVhSaFZIbHdaVVY0Y0hKbGMzTnBiMjRnYVhNZ2IzQjBhVzl1WVd3Z1lXNWtJR1JsWm1GMWJIUnpJSFJ2SUZ3aUtsd2lYRzVjZEhKbGRIVnliaUJtZFc1amRHbHZiaWdnWkdGMFlWUjVjR1ZGZUhCeVpYTnphVzl1TENCbWRXNWpJQ2tnZTF4dVhHNWNkRngwYVdZZ0tDQjBlWEJsYjJZZ1pHRjBZVlI1Y0dWRmVIQnlaWE56YVc5dUlDRTlQU0JjSW5OMGNtbHVaMXdpSUNrZ2UxeHVYSFJjZEZ4MFpuVnVZeUE5SUdSaGRHRlVlWEJsUlhod2NtVnpjMmx2Ymp0Y2JseDBYSFJjZEdSaGRHRlVlWEJsUlhod2NtVnpjMmx2YmlBOUlGd2lLbHdpTzF4dVhIUmNkSDFjYmx4dVhIUmNkSFpoY2lCa1lYUmhWSGx3WlN4Y2JseDBYSFJjZEdrZ1BTQXdMRnh1WEhSY2RGeDBaR0YwWVZSNWNHVnpJRDBnWkdGMFlWUjVjR1ZGZUhCeVpYTnphVzl1TG5SdlRHOTNaWEpEWVhObEtDa3ViV0YwWTJnb0lISnViM1IzYUdsMFpTQXBJSHg4SUZ0ZE8xeHVYRzVjZEZ4MGFXWWdLQ0JxVVhWbGNua3VhWE5HZFc1amRHbHZiaWdnWm5WdVl5QXBJQ2tnZTF4dVhIUmNkRngwTHk4Z1JtOXlJR1ZoWTJnZ1pHRjBZVlI1Y0dVZ2FXNGdkR2hsSUdSaGRHRlVlWEJsUlhod2NtVnpjMmx2Ymx4dVhIUmNkRngwZDJocGJHVWdLQ0FvWkdGMFlWUjVjR1VnUFNCa1lYUmhWSGx3WlhOYmFTc3JYU2tnS1NCN1hHNWNkRngwWEhSY2RDOHZJRkJ5WlhCbGJtUWdhV1lnY21WeGRXVnpkR1ZrWEc1Y2RGeDBYSFJjZEdsbUlDZ2daR0YwWVZSNWNHVmJNRjBnUFQwOUlGd2lLMXdpSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkR1JoZEdGVWVYQmxJRDBnWkdGMFlWUjVjR1V1YzJ4cFkyVW9JREVnS1NCOGZDQmNJaXBjSWp0Y2JseDBYSFJjZEZ4MFhIUW9jM1J5ZFdOMGRYSmxXeUJrWVhSaFZIbHdaU0JkSUQwZ2MzUnlkV04wZFhKbFd5QmtZWFJoVkhsd1pTQmRJSHg4SUZ0ZEtTNTFibk5vYVdaMEtDQm1kVzVqSUNrN1hHNWNibHgwWEhSY2RGeDBMeThnVDNSb1pYSjNhWE5sSUdGd2NHVnVaRnh1WEhSY2RGeDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBYSFJjZENoemRISjFZM1IxY21WYklHUmhkR0ZVZVhCbElGMGdQU0J6ZEhKMVkzUjFjbVZiSUdSaGRHRlVlWEJsSUYwZ2ZId2dXMTBwTG5CMWMyZ29JR1oxYm1NZ0tUdGNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHgwZlR0Y2JuMWNibHh1THk4Z1FtRnpaU0JwYm5Od1pXTjBhVzl1SUdaMWJtTjBhVzl1SUdadmNpQndjbVZtYVd4MFpYSnpJR0Z1WkNCMGNtRnVjM0J2Y25SelhHNW1kVzVqZEdsdmJpQnBibk53WldOMFVISmxabWxzZEdWeWMwOXlWSEpoYm5Od2IzSjBjeWdnYzNSeWRXTjBkWEpsTENCdmNIUnBiMjV6TENCdmNtbG5hVzVoYkU5d2RHbHZibk1zSUdweFdFaFNJQ2tnZTF4dVhHNWNkSFpoY2lCcGJuTndaV04wWldRZ1BTQjdmU3hjYmx4MFhIUnpaV1ZyYVc1blZISmhibk53YjNKMElEMGdLQ0J6ZEhKMVkzUjFjbVVnUFQwOUlIUnlZVzV6Y0c5eWRITWdLVHRjYmx4dVhIUm1kVzVqZEdsdmJpQnBibk53WldOMEtDQmtZWFJoVkhsd1pTQXBJSHRjYmx4MFhIUjJZWElnYzJWc1pXTjBaV1E3WEc1Y2RGeDBhVzV6Y0dWamRHVmtXeUJrWVhSaFZIbHdaU0JkSUQwZ2RISjFaVHRjYmx4MFhIUnFVWFZsY25rdVpXRmphQ2dnYzNSeWRXTjBkWEpsV3lCa1lYUmhWSGx3WlNCZElIeDhJRnRkTENCbWRXNWpkR2x2YmlnZ1h5d2djSEpsWm1sc2RHVnlUM0pHWV
14938dOMGIzSjVJQ2tnZTF4dVhIUmNkRngwZG1GeUlHUmhkR0ZVZVhCbFQzSlVjbUZ1YzNCdmNuUWdQU0J3Y21WbWFXeDBaWEpQY2taaFkzUnZjbmtvSUc5d2RHbHZibk1zSUc5eWFXZHBibUZzVDNCMGFXOXVjeXdnYW5GWVNGSWdLVHRjYmx4MFhIUmNkR2xtSUNnZ2RIbHdaVzltSUdSaGRHRlVlWEJsVDNKVWNtRnVjM0J2Y25RZ1BUMDlJRndpYzNSeWFXNW5YQ0lnSmlZZ0lYTmxaV3RwYm1kVWNtRnVjM0J2Y25RZ0ppWWdJV2x1YzNCbFkzUmxaRnNnWkdGMFlWUjVjR1ZQY2xSeVlXNXpjRzl5ZENCZElDa2dlMXh1WEhSY2RGeDBYSFJ2Y0hScGIyNXpMbVJoZEdGVWVYQmxjeTUxYm5Ob2FXWjBLQ0JrWVhSaFZIbHdaVTl5VkhKaGJuTndiM0owSUNrN1hHNWNkRngwWEhSY2RHbHVjM0JsWTNRb0lHUmhkR0ZVZVhCbFQzSlVjbUZ1YzNCdmNuUWdLVHRjYmx4MFhIUmNkRngwY21WMGRYSnVJR1poYkhObE8xeHVYSFJjZEZ4MGZTQmxiSE5sSUdsbUlDZ2djMlZsYTJsdVoxUnlZVzV6Y0c5eWRDQXBJSHRjYmx4MFhIUmNkRngwY21WMGRYSnVJQ0VvSUhObGJHVmpkR1ZrSUQwZ1pHRjBZVlI1Y0dWUGNsUnlZVzV6Y0c5eWRDQXBPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMHBPMXh1WEhSY2RISmxkSFZ5YmlCelpXeGxZM1JsWkR0Y2JseDBmVnh1WEc1Y2RISmxkSFZ5YmlCcGJuTndaV04wS0NCdmNIUnBiMjV6TG1SaGRHRlVlWEJsYzFzZ01DQmRJQ2tnZkh3Z0lXbHVjM0JsWTNSbFpGc2dYQ0lxWENJZ1hTQW1KaUJwYm5Od1pXTjBLQ0JjSWlwY0lpQXBPMXh1ZlZ4dVhHNHZMeUJCSUhOd1pXTnBZV3dnWlhoMFpXNWtJR1p2Y2lCaGFtRjRJRzl3ZEdsdmJuTmNiaTh2SUhSb1lYUWdkR0ZyWlhNZ1hDSm1iR0YwWENJZ2IzQjBhVzl1Y3lBb2JtOTBJSFJ2SUdKbElHUmxaWEFnWlhoMFpXNWtaV1FwWEc0dkx5QkdhWGhsY3lBak9UZzROMXh1Wm5WdVkzUnBiMjRnWVdwaGVFVjRkR1Z1WkNnZ2RHRnlaMlYwTENCemNtTWdLU0I3WEc1Y2RIWmhjaUJyWlhrc0lHUmxaWEFzWEc1Y2RGeDBabXhoZEU5d2RHbHZibk1nUFNCcVVYVmxjbmt1WVdwaGVGTmxkSFJwYm1kekxtWnNZWFJQY0hScGIyNXpJSHg4SUh0OU8xeHVYRzVjZEdadmNpQW9JR3RsZVNCcGJpQnpjbU1nS1NCN1hHNWNkRngwYVdZZ0tDQnpjbU5iSUd0bGVTQmRJQ0U5UFNCMWJtUmxabWx1WldRZ0tTQjdYRzVjZEZ4MFhIUW9JR1pzWVhSUGNIUnBiMjV6V3lCclpYa2dYU0EvSUhSaGNtZGxkQ0E2SUNnZ1pHVmxjQ0I4ZkNBb1pHVmxjQ0E5SUh0OUtTQXBJQ2xiSUd0bGVTQmRJRDBnYzNKald5QnJaWGtnWFR0Y2JseDBYSFI5WEc1Y2RIMWNibHgwYVdZZ0tDQmtaV1Z3SUNrZ2UxeHVYSFJjZEdwUmRXVnllUzVsZUhSbGJtUW9JSFJ5ZFdVc0lIUmhjbWRsZEN3Z1pHVmxjQ0FwTzF4dVhIUjlYRzVjYmx4MGNtVjBkWEp1SUhSaGNtZGxkRHRjYm4xY2JseHVMeW9nU0dGdVpHeGxjeUJ5WlhOd2IyNXpaWE1nZEc4Z1lXNGdZV3BoZUNCeVpYRjFaWE4wT2x4dUlDb2dMU0JtYVc1a2N5QjBhR1VnY21sbmFIUWdaR0YwWVZSNWNHVWdLRzFsWkdsaGRHVnpJR0psZEhkbFpXNGdZMjl1ZEdWdWRDMTBlWEJsSUdGdVpDQmxlSEJsWTNSbFpDQmtZWFJoVkhsd1pTbGNiaUFxSUMwZ2NtVjBkWEp1Y3lCMGFHVWdZMjl5Y21WemNHOXVaR2x1WnlCeVpYTndiMjV6WlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJoYW1GNFNHRnVaR3hsVW1WemNHOXVjMlZ6S0NCekxDQnFjVmhJVWl3Z2NtVnpjRzl1YzJWeklDa2dlMXh1WEc1Y2RIWmhjaUJqZEN3Z2RIbHdaU3dnWm1sdVlXeEVZWFJoVkhsd1pTd2dabWx5YzNSRVlYUmhWSGx3WlN4Y2JseDBYSFJqYjI1MFpXNTBjeUE5SUhNdVkyOXVkR1Z1ZEhNc1hHNWNkRngwWkdGMFlWUjVjR1Z6SUQwZ2N5NWtZWFJoVkhsd1pYTTdYRzVjYmx4MEx5OGdVbVZ0YjNabElHRjFkRzhnWkdGMFlWUjVjR1VnWVc1a0lHZGxkQ0JqYjI1MFpXNTBMWFI1Y0dVZ2FXNGdkR2hsSUhCeWIyTmxjM05jYmx4MGQyaHBiR1VnS0NCa1lYUmhWSGx3WlhOYklEQWdYU0E5UFQwZ1hDSXFYQ0lnS1NCN1hHNWNkRngwWkdGMFlWUjVjR1Z6TG5Ob2FXWjBLQ2s3WEc1Y2RGeDBhV1lnS0NCamRDQTlQVDBnZFc1a1pXWnBibVZrSUNrZ2UxeHVYSFJjZEZ4MFkzUWdQU0J6TG0xcGJXVlVlWEJsSUh4OElHcHhXRWhTTG1kbGRGSmxjM0J2Ym5ObFNHVmhaR1Z5S0Z3aVEyOXVkR1Z1ZEMxVWVYQmxYQ0lwTzF4dVhIUmNkSDFjYmx4MGZWeHVYRzVjZEM4dklFTm9aV05ySUdsbUlIZGxKM0psSUdSbFlXeHBibWNnZDJsMGFDQmhJR3R1YjNkdUlHTnZiblJsYm5RdGRIbHdaVnh1WEhScFppQW9JR04wSUNrZ2UxeHVYSFJjZEdadmNpQW9JSFI1Y0dVZ2FXNGdZMjl1ZEdWdWRITWdLU0I3WEc1Y2RGeDBYSFJwWmlBb0lHTnZiblJsYm5Seld5QjBlWEJsSUYwZ0ppWWdZMjl1ZEdWdWRITmJJSFI1Y0dVZ1hTNTBaWE4wS0NCamRDQXBJQ2tnZTF4dVhIUmNkRngwWEhSa1lYUmhWSGx3WlhNdWRXNXphR2xtZENnZ2RIbHdaU0FwTzF4dVhIUmNkRngwWEhSaWNtVmhhenRjYmx4MFhIUmNkSDFjYmx4MFhIUjlYRzVjZEgxY2JseHVYSFF2THlCRGFHVmpheUIwYnlCelpXVWdhV1lnZDJVZ2FHRjJaU0JoSUhKbGMzQnZibk5sSUdadmNpQjBhR1VnWlhod1pXTjBaV1FnWkdGMFlWUjVjR1ZjYmx4MGFXWWdLQ0JrWVhSaFZIbHdaWE5iSURBZ1hTQnBiaUJ5WlhOd2IyNXpaWE1nS1NCN1hHNWNkRngwWm1sdVlXeEVZWFJoVkhsd1pTQTlJR1JoZEdGVWVYQmxjMXNnTUNCZE8xeHVYSFI5SUdWc2MyVWdlMXh1WEhSY2RDOHZJRlJ5ZVNCamIyNTJaWEowYVdKc1pTQmtZWFJoVkhsd1pYTmNibHgwWEhSbWIzSWdLQ0IwZVhCbElHbHVJSEpsYzNCdmJuTmxjeUFwSUh0Y2JseDBYSFJjZEdsbUlDZ2dJV1JoZEdGVWVYQmxjMXNnTUNCZElIeDhJSE11WTI5dWRtVnlkR1Z5YzFzZ2RIbHdaU0FySUZ3aUlGd2lJQ3NnWkdGMFlWUjVjR1Z6V3pCZElGMGdLU0I3WEc1Y2RGeDBYSFJjZEdacGJtRnNSR0YwWVZSNWNHVWdQU0IwZVhCbE8xeHVYSFJjZEZ4MFhIUmljbVZoYXp0Y2JseDBYSFJjZEgxY2JseDBYSFJjZEdsbUlDZ2dJV1pwY25OMFJHRjBZVlI1Y0dVZ0tTQjdYRzVjZEZ4MFhIUmNkR1pwY25OMFJHRjBZVlI1Y0dVZ1BTQjBlWEJsTzF4dVhIUmNkRngwZlZ4dVhIUmNkSDFjYmx4MFhIUXZMeUJQY2lCcWRYTjBJSFZ6WlNCbWFYSnpkQ0J2Ym1WY2JseDBYSFJtYVc1aGJFUmhkR0ZVZVhCbElEMGdabWx1WVd4RVlYUmhWSGx3WlNCOGZDQm1hWEp6ZEVSaGRHRlVlWEJsTzF4dVhIUjlYRzVjYmx4MEx5OGdTV1lnZDJVZ1ptOTFibVFnWVNCa1lYUmhWSGx3WlZ4dVhIUXZMeUJYWlNCaFpHUWdkR2hsSUdSaGRHRlVlWEJsSUhSdklIUm9aU0JzYVhOMElHbG1JRzVsWldSbFpGeHVYSFF2THlCaGJtUWdjbVYwZFhKdUlIUm9aU0JqYjNKeVpYTndiMjVrYVc1bklISmxjM0J2Ym5ObFhHNWNkR2xtSUNnZ1ptbHVZV3hFWVhSaFZIbHdaU0FwSUh0Y2JseDBYSFJwWmlBb0lHWnBibUZzUkdGMFlWUjVjR1VnSVQwOUlHUmhkR0ZVZVhCbGMxc2dNQ0JkSUNrZ2UxeHVYSFJjZEZ4MFpHRjBZVlI1Y0dWekxuVnVjMmhwWm5Rb0lHWnBibUZzUkdGMFlWUjVjR1VnS1R0Y2JseDBYSFI5WEc1Y2RGeDBjbVYwZFhKdUlISmxjM0J2Ym5ObGMxc2dabWx1WVd4RVlYUmhWSGx3WlNCZE8xeHVYSFI5WEc1OVhHNWNiaThxSUVOb1lXbHVJR052Ym5abGNuTnBiMjV6SUdkcGRtVnVJSFJvWlNCeVpYRjFaWE4wSUdGdVpDQjBhR1VnYjNKcFoybHVZV3dnY21WemNHOXVjMlZjYmlBcUlFRnNjMjhnYzJWMGN5QjBhR1VnY21WemNHOXVjMlZZV0ZnZ1ptbGxiR1J6SUc5dUlIUm9aU0JxY1ZoSVVpQnBibk4wWVc1alpWeHVJQ292WEc1bWRXNWpkR2x2YmlCaGFtRjRRMjl1ZG1WeWRDZ2djeXdnY21WemNHOXVjMlVzSUdweFdFaFNMQ0JwYzFOMVkyTmxjM01nS1NCN1hHNWNkSFpoY2lCamIyNTJNaXdnWTNWeWNtVnVkQ3dnWTI5dWRpd2dkRzF3TENCd2NtVjJMRnh1WEhSY2RHTnZiblpsY25SbGNuTWdQU0I3ZlN4Y2JseDBYSFF2THlCWGIzSnJJSGRwZEdnZ1lTQmpiM0I1SUc5bUlHUmhkR0ZVZVhCbGN5QnBiaUJqWVhObElIZGxJRzVsWldRZ2RHOGdiVzlrYVdaNUlHbDBJR1p2Y2lCamIyNTJaWEp6YVc5dVhHNWNkRngwWkdGMFlWUjVjR1Z6SUQwZ2N5NWtZWFJoVkhsd1pYTXVjMnhwWTJVb0tUdGNibHh1WEhRdkx5QkRjbVZoZEdVZ1kyOXVkbVZ5ZEdWeWN5QnRZWEFnZDJsMGFDQnNiM2RsY21OaGMyVmtJR3RsZVhOY2JseDBhV1lnS0NCa1lYUmhWSGx3WlhOYklERWdYU0FwSUh0Y2JseDBYSFJtYjNJZ0tDQmpiMjUySUdsdUlITXVZMjl1ZG1WeWRHVnljeUFwSUh0Y2JseDBYSFJjZEdOdmJuWmxjblJsY25OYklHTnZibll1ZEc5TWIzZGxja05oYzJVb0tTQmRJRDBnY3k1amIyNTJaWEowWlhKeld5QmpiMjUySUYwN1hHNWNkRngwZlZ4dVhIUjlYRzVjYmx4MFkzVnljbVZ1ZENBOUlHUmhkR0ZVZVhCbGN5NXphR2xtZENncE8xeHVYRzVjZEM4dklFTnZiblpsY25RZ2RHOGdaV0ZqYUNCelpYRjFaVzUwYVdGc0lHUmhkR0ZVZVhCbFhHNWNkSGRvYVd4bElDZ2dZM1Z5Y21WdWRDQXBJSHRjYmx4dVhIUmNkR2xtSUNnZ2N5NXlaWE53YjI1elpVWnBaV3hrYzFzZ1kzVnljbVZ1ZENCZElDa2dlMXh1WEhSY2RGeDBhbkZZU0ZKYklITXVjbVZ6Y0c5dWMyVkdhV1ZzWkhOYklHT
14938jFjbkpsYm5RZ1hTQmRJRDBnY21WemNHOXVjMlU3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnUVhCd2JIa2dkR2hsSUdSaGRHRkdhV3gwWlhJZ2FXWWdjSEp2ZG1sa1pXUmNibHgwWEhScFppQW9JQ0Z3Y21WMklDWW1JR2x6VTNWalkyVnpjeUFtSmlCekxtUmhkR0ZHYVd4MFpYSWdLU0I3WEc1Y2RGeDBYSFJ5WlhOd2IyNXpaU0E5SUhNdVpHRjBZVVpwYkhSbGNpZ2djbVZ6Y0c5dWMyVXNJSE11WkdGMFlWUjVjR1VnS1R0Y2JseDBYSFI5WEc1Y2JseDBYSFJ3Y21WMklEMGdZM1Z5Y21WdWREdGNibHgwWEhSamRYSnlaVzUwSUQwZ1pHRjBZVlI1Y0dWekxuTm9hV1owS0NrN1hHNWNibHgwWEhScFppQW9JR04xY25KbGJuUWdLU0I3WEc1Y2JseDBYSFF2THlCVWFHVnlaU2R6SUc5dWJIa2dkMjl5YXlCMGJ5QmtieUJwWmlCamRYSnlaVzUwSUdSaGRHRlVlWEJsSUdseklHNXZiaTFoZFhSdlhHNWNkRngwWEhScFppQW9JR04xY25KbGJuUWdQVDA5SUZ3aUtsd2lJQ2tnZTF4dVhHNWNkRngwWEhSY2RHTjFjbkpsYm5RZ1BTQndjbVYyTzF4dVhHNWNkRngwWEhRdkx5QkRiMjUyWlhKMElISmxjM0J2Ym5ObElHbG1JSEJ5WlhZZ1pHRjBZVlI1Y0dVZ2FYTWdibTl1TFdGMWRHOGdZVzVrSUdScFptWmxjbk1nWm5KdmJTQmpkWEp5Wlc1MFhHNWNkRngwWEhSOUlHVnNjMlVnYVdZZ0tDQndjbVYySUNFOVBTQmNJaXBjSWlBbUppQndjbVYySUNFOVBTQmpkWEp5Wlc1MElDa2dlMXh1WEc1Y2RGeDBYSFJjZEM4dklGTmxaV3NnWVNCa2FYSmxZM1FnWTI5dWRtVnlkR1Z5WEc1Y2RGeDBYSFJjZEdOdmJuWWdQU0JqYjI1MlpYSjBaWEp6V3lCd2NtVjJJQ3NnWENJZ1hDSWdLeUJqZFhKeVpXNTBJRjBnZkh3Z1kyOXVkbVZ5ZEdWeWMxc2dYQ0lxSUZ3aUlDc2dZM1Z5Y21WdWRDQmRPMXh1WEc1Y2RGeDBYSFJjZEM4dklFbG1JRzV2Ym1VZ1ptOTFibVFzSUhObFpXc2dZU0J3WVdseVhHNWNkRngwWEhSY2RHbG1JQ2dnSVdOdmJuWWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFptOXlJQ2dnWTI5dWRqSWdhVzRnWTI5dWRtVnlkR1Z5Y3lBcElIdGNibHh1WEhSY2RGeDBYSFJjZEZ4MEx5OGdTV1lnWTI5dWRqSWdiM1YwY0hWMGN5QmpkWEp5Wlc1MFhHNWNkRngwWEhSY2RGeDBYSFIwYlhBZ1BTQmpiMjUyTWk1emNHeHBkQ2dnWENJZ1hDSWdLVHRjYmx4MFhIUmNkRngwWEhSY2RHbG1JQ2dnZEcxd1d5QXhJRjBnUFQwOUlHTjFjbkpsYm5RZ0tTQjdYRzVjYmx4MFhIUmNkRngwWEhSY2RGeDBMeThnU1dZZ2NISmxkaUJqWVc0Z1ltVWdZMjl1ZG1WeWRHVmtJSFJ2SUdGalkyVndkR1ZrSUdsdWNIVjBYRzVjZEZ4MFhIUmNkRngwWEhSY2RHTnZibllnUFNCamIyNTJaWEowWlhKeld5QndjbVYySUNzZ1hDSWdYQ0lnS3lCMGJYQmJJREFnWFNCZElIeDhYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBZMjl1ZG1WeWRHVnljMXNnWENJcUlGd2lJQ3NnZEcxd1d5QXdJRjBnWFR0Y2JseDBYSFJjZEZ4MFhIUmNkRngwYVdZZ0tDQmpiMjUySUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RDOHZJRU52Ym1SbGJuTmxJR1Z4ZFdsMllXeGxibU5sSUdOdmJuWmxjblJsY25OY2JseDBYSFJjZEZ4MFhIUmNkRngwWEhScFppQW9JR052Ym5ZZ1BUMDlJSFJ5ZFdVZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBYSFJqYjI1MklEMGdZMjl1ZG1WeWRHVnljMXNnWTI5dWRqSWdYVHRjYmx4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEM4dklFOTBhR1Z5ZDJselpTd2dhVzV6WlhKMElIUm9aU0JwYm5SbGNtMWxaR2xoZEdVZ1pHRjBZVlI1Y0dWY2JseDBYSFJjZEZ4MFhIUmNkRngwWEhSOUlHVnNjMlVnYVdZZ0tDQmpiMjUyWlhKMFpYSnpXeUJqYjI1Mk1pQmRJQ0U5UFNCMGNuVmxJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEZ4MFkzVnljbVZ1ZENBOUlIUnRjRnNnTUNCZE8xeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RGeDBaR0YwWVZSNWNHVnpMblZ1YzJocFpuUW9JSFJ0Y0ZzZ01TQmRJQ2s3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEdKeVpXRnJPMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFI5WEc1Y2JseDBYSFJjZEZ4MEx5OGdRWEJ3YkhrZ1kyOXVkbVZ5ZEdWeUlDaHBaaUJ1YjNRZ1lXNGdaWEYxYVhaaGJHVnVZMlVwWEc1Y2RGeDBYSFJjZEdsbUlDZ2dZMjl1ZGlBaFBUMGdkSEoxWlNBcElIdGNibHh1WEhSY2RGeDBYSFJjZEM4dklGVnViR1Z6Y3lCbGNuSnZjbk1nWVhKbElHRnNiRzkzWldRZ2RHOGdZblZpWW14bExDQmpZWFJqYUNCaGJtUWdjbVYwZFhKdUlIUm9aVzFjYmx4MFhIUmNkRngwWEhScFppQW9JR052Ym5ZZ0ppWWdjMXNnWENKMGFISnZkM05jSWlCZElDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MGNtVnpjRzl1YzJVZ1BTQmpiMjUyS0NCeVpYTndiMjV6WlNBcE8xeHVYSFJjZEZ4MFhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUmNkRngwWEhSMGNua2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUnlaWE53YjI1elpTQTlJR052Ym5Zb0lISmxjM0J2Ym5ObElDazdYRzVjZEZ4MFhIUmNkRngwWEhSOUlHTmhkR05vSUNnZ1pTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBjbVYwZFhKdUlIc2djM1JoZEdVNklGd2ljR0Z5YzJWeVpYSnliM0pjSWl3Z1pYSnliM0k2SUdOdmJuWWdQeUJsSURvZ1hDSk9ieUJqYjI1MlpYSnphVzl1SUdaeWIyMGdYQ0lnS3lCd2NtVjJJQ3NnWENJZ2RHOGdYQ0lnS3lCamRYSnlaVzUwSUgwN1hHNWNkRngwWEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYSFI5WEc1Y2JseDBjbVYwZFhKdUlIc2djM1JoZEdVNklGd2ljM1ZqWTJWemMxd2lMQ0JrWVhSaE9pQnlaWE53YjI1elpTQjlPMXh1ZlZ4dVhHNXFVWFZsY25rdVpYaDBaVzVrS0h0Y2JseHVYSFF2THlCRGIzVnVkR1Z5SUdadmNpQm9iMnhrYVc1bklIUm9aU0J1ZFcxaVpYSWdiMllnWVdOMGFYWmxJSEYxWlhKcFpYTmNibHgwWVdOMGFYWmxPaUF3TEZ4dVhHNWNkQzh2SUV4aGMzUXRUVzlrYVdacFpXUWdhR1ZoWkdWeUlHTmhZMmhsSUdadmNpQnVaWGgwSUhKbGNYVmxjM1JjYmx4MGJHRnpkRTF2WkdsbWFXVmtPaUI3ZlN4Y2JseDBaWFJoWnpvZ2UzMHNYRzVjYmx4MFlXcGhlRk5sZEhScGJtZHpPaUI3WEc1Y2RGeDBkWEpzT2lCaGFtRjRURzlqWVhScGIyNHNYRzVjZEZ4MGRIbHdaVG9nWENKSFJWUmNJaXhjYmx4MFhIUnBjMHh2WTJGc09pQnliRzlqWVd4UWNtOTBiMk52YkM1MFpYTjBLQ0JoYW1GNFRHOWpVR0Z5ZEhOYklERWdYU0FwTEZ4dVhIUmNkR2RzYjJKaGJEb2dkSEoxWlN4Y2JseDBYSFJ3Y205alpYTnpSR0YwWVRvZ2RISjFaU3hjYmx4MFhIUmhjM2x1WXpvZ2RISjFaU3hjYmx4MFhIUmpiMjUwWlc1MFZIbHdaVG9nWENKaGNIQnNhV05oZEdsdmJpOTRMWGQzZHkxbWIzSnRMWFZ5YkdWdVkyOWtaV1E3SUdOb1lYSnpaWFE5VlZSR0xUaGNJaXhjYmx4MFhIUXZLbHh1WEhSY2RIUnBiV1Z2ZFhRNklEQXNYRzVjZEZ4MFpHRjBZVG9nYm5Wc2JDeGNibHgwWEhSa1lYUmhWSGx3WlRvZ2JuVnNiQ3hjYmx4MFhIUjFjMlZ5Ym1GdFpUb2diblZzYkN4Y2JseDBYSFJ3WVhOemQyOXlaRG9nYm5Wc2JDeGNibHgwWEhSallXTm9aVG9nYm5Wc2JDeGNibHgwWEhSMGFISnZkM002SUdaaGJITmxMRnh1WEhSY2RIUnlZV1JwZEdsdmJtRnNPaUJtWVd4elpTeGNibHgwWEhSb1pXRmtaWEp6T2lCN2ZTeGNibHgwWEhRcUwxeHVYRzVjZEZ4MFlXTmpaWEIwY3pvZ2UxeHVYSFJjZEZ4MFhDSXFYQ0k2SUdGc2JGUjVjR1Z6TEZ4dVhIUmNkRngwZEdWNGREb2dYQ0owWlho
14938MEwzQnNZV2x1WENJc1hHNWNkRngwWEhSb2RHMXNPaUJjSW5SbGVIUXZhSFJ0YkZ3aUxGeHVYSFJjZEZ4MGVHMXNPaUJjSW1Gd2NHeHBZMkYwYVc5dUwzaHRiQ3dnZEdWNGRDOTRiV3hjSWl4Y2JseDBYSFJjZEdwemIyNDZJRndpWVhCd2JHbGpZWFJwYjI0dmFuTnZiaXdnZEdWNGRDOXFZWFpoYzJOeWFYQjBYQ0pjYmx4MFhIUjlMRnh1WEc1Y2RGeDBZMjl1ZEdWdWRITTZJSHRjYmx4MFhIUmNkSGh0YkRvZ0wzaHRiQzhzWEc1Y2RGeDBYSFJvZEcxc09pQXZhSFJ0YkM4c1hHNWNkRngwWEhScWMyOXVPaUF2YW5OdmJpOWNibHgwWEhSOUxGeHVYRzVjZEZ4MGNtVnpjRzl1YzJWR2FXVnNaSE02SUh0Y2JseDBYSFJjZEhodGJEb2dYQ0p5WlhOd2IyNXpaVmhOVEZ3aUxGeHVYSFJjZEZ4MGRHVjRkRG9nWENKeVpYTndiMjV6WlZSbGVIUmNJaXhjYmx4MFhIUmNkR3B6YjI0NklGd2ljbVZ6Y0c5dWMyVktVMDlPWENKY2JseDBYSFI5TEZ4dVhHNWNkRngwTHk4Z1JHRjBZU0JqYjI1MlpYSjBaWEp6WEc1Y2RGeDBMeThnUzJWNWN5QnpaWEJoY21GMFpTQnpiM1Z5WTJVZ0tHOXlJR05oZEdOb1lXeHNJRndpS2x3aUtTQmhibVFnWkdWemRHbHVZWFJwYjI0Z2RIbHdaWE1nZDJsMGFDQmhJSE5wYm1kc1pTQnpjR0ZqWlZ4dVhIUmNkR052Ym5abGNuUmxjbk02SUh0Y2JseHVYSFJjZEZ4MEx5OGdRMjl1ZG1WeWRDQmhibmwwYUdsdVp5QjBieUIwWlhoMFhHNWNkRngwWEhSY0lpb2dkR1Y0ZEZ3aU9pQlRkSEpwYm1jc1hHNWNibHgwWEhSY2RDOHZJRlJsZUhRZ2RHOGdhSFJ0YkNBb2RISjFaU0E5SUc1dklIUnlZVzV6Wm05eWJXRjBhVzl1S1Z4dVhIUmNkRngwWENKMFpYaDBJR2gwYld4Y0lqb2dkSEoxWlN4Y2JseHVYSFJjZEZ4MEx5OGdSWFpoYkhWaGRHVWdkR1Y0ZENCaGN5QmhJR3B6YjI0Z1pYaHdjbVZ6YzJsdmJseHVYSFJjZEZ4MFhDSjBaWGgwSUdwemIyNWNJam9nYWxGMVpYSjVMbkJoY25ObFNsTlBUaXhjYmx4dVhIUmNkRngwTHk4Z1VHRnljMlVnZEdWNGRDQmhjeUI0Yld4Y2JseDBYSFJjZEZ3aWRHVjRkQ0I0Yld4Y0lqb2dhbEYxWlhKNUxuQmhjbk5sV0UxTVhHNWNkRngwZlN4Y2JseHVYSFJjZEM4dklFWnZjaUJ2Y0hScGIyNXpJSFJvWVhRZ2MyaHZkV3hrYmlkMElHSmxJR1JsWlhBZ1pYaDBaVzVrWldRNlhHNWNkRngwTHk4Z2VXOTFJR05oYmlCaFpHUWdlVzkxY2lCdmQyNGdZM1Z6ZEc5dElHOXdkR2x2Ym5NZ2FHVnlaU0JwWmx4dVhIUmNkQzh2SUdGdVpDQjNhR1Z1SUhsdmRTQmpjbVZoZEdVZ2IyNWxJSFJvWVhRZ2MyaHZkV3hrYmlkMElHSmxYRzVjZEZ4MEx5OGdaR1ZsY0NCbGVIUmxibVJsWkNBb2MyVmxJR0ZxWVhoRmVIUmxibVFwWEc1Y2RGeDBabXhoZEU5d2RHbHZibk02SUh0Y2JseDBYSFJjZEhWeWJEb2dkSEoxWlN4Y2JseDBYSFJjZEdOdmJuUmxlSFE2SUhSeWRXVmNibHgwWEhSOVhHNWNkSDBzWEc1Y2JseDBMeThnUTNKbFlYUmxjeUJoSUdaMWJHd2dabXhsWkdkbFpDQnpaWFIwYVc1bmN5QnZZbXBsWTNRZ2FXNTBieUIwWVhKblpYUmNibHgwTHk4Z2QybDBhQ0JpYjNSb0lHRnFZWGhUWlhSMGFXNW5jeUJoYm1RZ2MyVjBkR2x1WjNNZ1ptbGxiR1J6TGx4dVhIUXZMeUJKWmlCMFlYSm5aWFFnYVhNZ2IyMXBkSFJsWkN3Z2QzSnBkR1Z6SUdsdWRHOGdZV3BoZUZObGRIUnBibWR6TGx4dVhIUmhhbUY0VTJWMGRYQTZJR1oxYm1OMGFXOXVLQ0IwWVhKblpYUXNJSE5sZEhScGJtZHpJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQnpaWFIwYVc1bmN5QS9YRzVjYmx4MFhIUmNkQzh2SUVKMWFXeGthVzVuSUdFZ2MyVjBkR2x1WjNNZ2IySnFaV04wWEc1Y2RGeDBYSFJoYW1GNFJYaDBaVzVrS0NCaGFtRjRSWGgwWlc1a0tDQjBZWEpuWlhRc0lHcFJkV1Z5ZVM1aGFtRjRVMlYwZEdsdVozTWdLU3dnYzJWMGRHbHVaM01nS1NBNlhHNWNibHgwWEhSY2RDOHZJRVY0ZEdWdVpHbHVaeUJoYW1GNFUyVjBkR2x1WjNOY2JseDBYSFJjZEdGcVlYaEZlSFJsYm1Rb0lHcFJkV1Z5ZVM1aGFtRjRVMlYwZEdsdVozTXNJSFJoY21kbGRDQXBPMXh1WEhSOUxGeHVYRzVjZEdGcVlYaFFjbVZtYVd4MFpYSTZJR0ZrWkZSdlVISmxabWxzZEdWeWMwOXlWSEpoYm5Od2IzSjBjeWdnY0hKbFptbHNkR1Z5Y3lBcExGeHVYSFJoYW1GNFZISmhibk53YjNKME9pQmhaR1JVYjFCeVpXWnBiSFJsY25OUGNsUnlZVzV6Y0c5eWRITW9JSFJ5WVc1emNHOXlkSE1nS1N4Y2JseHVYSFF2THlCTllXbHVJRzFsZEdodlpGeHVYSFJoYW1GNE9pQm1kVzVqZEdsdmJpZ2dkWEpzTENCdmNIUnBiMjV6SUNrZ2UxeHVYRzVjZEZ4MEx5OGdTV1lnZFhKc0lHbHpJR0Z1SUc5aWFtVmpkQ3dnYzJsdGRXeGhkR1VnY0hKbExURXVOU0J6YVdkdVlYUjFjbVZjYmx4MFhIUnBaaUFvSUhSNWNHVnZaaUIxY213Z1BUMDlJRndpYjJKcVpXTjBYQ0lnS1NCN1hHNWNkRngwWEhSdmNIUnBiMjV6SUQwZ2RYSnNPMXh1WEhSY2RGeDBkWEpzSUQwZ2RXNWtaV1pwYm1Wa08xeHVYSFJjZEgxY2JseHVYSFJjZEM4dklFWnZjbU5sSUc5d2RHbHZibk1nZEc4Z1ltVWdZVzRnYjJKcVpXTjBYRzVjZEZ4MGIzQjBhVzl1Y3lBOUlHOXdkR2x2Ym5NZ2ZId2dlMzA3WEc1Y2JseDBYSFIyWVhJZ2RISmhibk53YjNKMExGeHVYSFJjZEZ4MEx5OGdWVkpNSUhkcGRHaHZkWFFnWVc1MGFTMWpZV05vWlNCd1lYSmhiVnh1WEhSY2RGeDBZMkZqYUdWVlVrd3NYRzVjZEZ4MFhIUXZMeUJTWlhOd2IyNXpaU0JvWldGa1pYSnpYRzVjZEZ4MFhIUnlaWE53YjI1elpVaGxZV1JsY25OVGRISnBibWNzWEc1Y2RGeDBYSFJ5WlhOd2IyNXpaVWhsWVdSbGNuTXNYRzVjZEZ4MFhIUXZMeUIwYVcxbGIzVjBJR2hoYm1Sc1pWeHVYSFJjZEZ4MGRHbHRaVzkxZEZScGJXVnlMRnh1WEhSY2RGeDBMeThnUTNKdmMzTXRaRzl0WVdsdUlHUmxkR1ZqZEdsdmJpQjJZWEp6WEc1Y2RGeDBYSFJ3WVhKMGN5eGNibHgwWEhSY2RDOHZJRlJ2SUd0dWIzY2dhV1lnWjJ4dlltRnNJR1YyWlc1MGN5QmhjbVVnZEc4Z1ltVWdaR2x6Y0dGMFkyaGxaRnh1WEhSY2RGeDBabWx5WlVkc2IySmhiSE1zWEc1Y2RGeDBYSFF2THlCTWIyOXdJSFpoY21saFlteGxYRzVjZEZ4MFhIUnBMRnh1WEhSY2RGeDBMeThnUTNKbFlYUmxJSFJvWlNCbWFXNWhiQ0J2Y0hScGIyNXpJRzlpYW1WamRGeHVYSFJjZEZ4MGN5QTlJR3BSZFdWeWVTNWhhbUY0VTJWMGRYQW9JSHQ5TENCdmNIUnBiMjV6SUNrc1hHNWNkRngwWEhRdkx5QkRZV3hzWW1GamEzTWdZMjl1ZEdWNGRGeHVYSFJjZEZ4MFkyRnNiR0poWTJ0RGIyNTBaWGgwSUQwZ2N5NWpiMjUwWlhoMElIeDhJSE1zWEc1Y2RGeDBYSFF2THlCRGIyNTBaWGgwSUdadmNpQm5iRzlpWVd3Z1pYWmxiblJ6SUdseklHTmhiR3hpWVdOclEyOXVkR1Y0ZENCcFppQnBkQ0JwY3lCaElFUlBUU0J1YjJSbElHOXlJR3BSZFdWeWVTQmpiMnhzWldOMGFXOXVYRzVjZEZ4MFhIUm5iRzlpWVd4RmRtVnVkRU52Ym5SbGVIUWdQU0J6TG1OdmJuUmxlSFFnSmlZZ0tDQmpZV3hzWW1GamEwTnZiblJsZUhRdWJtOWtaVlI1Y0dVZ2ZId2dZMkZzYkdKaFkydERiMjUwWlhoMExtcHhkV1Z5ZVNBcElEOWNibHgwWEhSY2RGeDBhbEYxWlhKNUtDQmpZV3hzWW1GamEwTnZiblJsZUhRZ0tTQTZYRzVjZEZ4MFhIUmNkR3BSZFdWeWVTNWxkbVZ1ZEN4Y2JseDBYSFJjZEM4dklFUmxabVZ5Y21Wa2MxeHVYSFJjZEZ4MFpHVm1aWEp5WldRZ1BTQnFVWFZsY25rdVJHVm1aWEp5WldRb0tTeGNibHgwWEhSY2RHTnZiWEJzWlhSbFJHVm1aWEp5WldRZ1BTQnFVWFZsY25rdVEyRnNiR0poWTJ0ektGd2liMjVqWlNCdFpXMXZjbmxjSWlrc1hHNWNkRngwWEhRdkx5QlRkR0YwZFhNdFpHVndaVzVrWlc1MElHTmhiR3hpWVdOcmMxeHVYSFJjZEZ4MGMzUmhkSFZ6UTI5a1pTQTlJSE11YzNSaGRIVnpRMjlrWlNCOGZDQjdmU3hjYmx4MFhIUmNkQzh2SUVobFlXUmxjbk1nS0hSb1pYa2dZWEpsSUhObGJuUWdZV3hzSUdGMElHOXVZMlVwWEc1Y2RGeDBYSFJ5WlhGMVpYTjBTR1ZoWkdWeWN5QTlJSHQ5TEZ4dVhIUmNkRngwY21WeGRXVnpkRWhsWVdSbGNuTk9ZVzFsY3lBOUlIdDlMRnh1WEhSY2RGeDBMeThnVkdobElHcHhXRWhTSUhOMFlYUmxYRzVjZEZ4MFhIUnpkR0YwWlNBOUlEQXNYRzVjZEZ4MFhIUXZMeUJFWldaaGRXeDBJR0ZpYjNKMElHMWxjM05oWjJWY2JseDBYSFJjZEhOMGNrRmliM0owSUQwZ1hDSmpZVzVqWld4bFpGd2lMRnh1WEhSY2RGeDBMeThnUm1GclpTQjRhSEpjYmx4MFhIUmNkR3B4V0VoU0lEMGdlMXh1WEhSY2RGeDBYSFJ5WldGa2VWTjBZWFJsT2lBd0xGeHVYRzVjZEZ4MFhIUmNkQzh2SUVKMWFXeGtje
14938UJvWldGa1pYSnpJR2hoYzJoMFlXSnNaU0JwWmlCdVpXVmtaV1JjYmx4MFhIUmNkRngwWjJWMFVtVnpjRzl1YzJWSVpXRmtaWEk2SUdaMWJtTjBhVzl1S0NCclpYa2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MGRtRnlJRzFoZEdOb08xeHVYSFJjZEZ4MFhIUmNkR2xtSUNnZ2MzUmhkR1VnUFQwOUlESWdLU0I3WEc1Y2RGeDBYSFJjZEZ4MFhIUnBaaUFvSUNGeVpYTndiMjV6WlVobFlXUmxjbk1nS1NCN1hHNWNkRngwWEhSY2RGeDBYSFJjZEhKbGMzQnZibk5sU0dWaFpHVnljeUE5SUh0OU8xeHVYSFJjZEZ4MFhIUmNkRngwWEhSM2FHbHNaU0FvSUNodFlYUmphQ0E5SUhKb1pXRmtaWEp6TG1WNFpXTW9JSEpsYzNCdmJuTmxTR1ZoWkdWeWMxTjBjbWx1WnlBcEtTQXBJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBYSFJ5WlhOd2IyNXpaVWhsWVdSbGNuTmJJRzFoZEdOb1d6RmRMblJ2VEc5M1pYSkRZWE5sS0NrZ1hTQTlJRzFoZEdOb1d5QXlJRjA3WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBYSFJjZEcxaGRHTm9JRDBnY21WemNHOXVjMlZJWldGa1pYSnpXeUJyWlhrdWRHOU1iM2RsY2tOaGMyVW9LU0JkTzF4dVhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBYSFJ5WlhSMWNtNGdiV0YwWTJnZ1BUMGdiblZzYkNBL0lHNTFiR3dnT2lCdFlYUmphRHRjYmx4MFhIUmNkRngwZlN4Y2JseHVYSFJjZEZ4MFhIUXZMeUJTWVhjZ2MzUnlhVzVuWEc1Y2RGeDBYSFJjZEdkbGRFRnNiRkpsYzNCdmJuTmxTR1ZoWkdWeWN6b2dablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBYSFJjZEZ4MGNtVjBkWEp1SUhOMFlYUmxJRDA5UFNBeUlEOGdjbVZ6Y0c5dWMyVklaV0ZrWlhKelUzUnlhVzVuSURvZ2JuVnNiRHRjYmx4MFhIUmNkRngwZlN4Y2JseHVYSFJjZEZ4MFhIUXZMeUJEWVdOb1pYTWdkR2hsSUdobFlXUmxjbHh1WEhSY2RGeDBYSFJ6WlhSU1pYRjFaWE4wU0dWaFpHVnlPaUJtZFc1amRHbHZiaWdnYm1GdFpTd2dkbUZzZFdVZ0tTQjdYRzVjZEZ4MFhIUmNkRngwZG1GeUlHeHVZVzFsSUQwZ2JtRnRaUzUwYjB4dmQyVnlRMkZ6WlNncE8xeHVYSFJjZEZ4MFhIUmNkR2xtSUNnZ0lYTjBZWFJsSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwYm1GdFpTQTlJSEpsY1hWbGMzUklaV0ZrWlhKelRtRnRaWE5iSUd4dVlXMWxJRjBnUFNCeVpYRjFaWE4wU0dWaFpHVnljMDVoYldWeld5QnNibUZ0WlNCZElIeDhJRzVoYldVN1hHNWNkRngwWEhSY2RGeDBYSFJ5WlhGMVpYTjBTR1ZoWkdWeWMxc2dibUZ0WlNCZElEMGdkbUZzZFdVN1hHNWNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEhKbGRIVnliaUIwYUdsek8xeHVYSFJjZEZ4MFhIUjlMRnh1WEc1Y2RGeDBYSFJjZEM4dklFOTJaWEp5YVdSbGN5QnlaWE53YjI1elpTQmpiMjUwWlc1MExYUjVjR1VnYUdWaFpHVnlYRzVjZEZ4MFhIUmNkRzkyWlhKeWFXUmxUV2x0WlZSNWNHVTZJR1oxYm1OMGFXOXVLQ0IwZVhCbElDa2dlMXh1WEhSY2RGeDBYSFJjZEdsbUlDZ2dJWE4wWVhSbElDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MGN5NXRhVzFsVkhsd1pTQTlJSFI1Y0dVN1hHNWNkRngwWEhSY2RGeDBmVnh1WEhSY2RGeDBYSFJjZEhKbGRIVnliaUIwYUdsek8xeHVYSFJjZEZ4MFhIUjlMRnh1WEc1Y2RGeDBYSFJjZEM4dklGTjBZWFIxY3kxa1pYQmxibVJsYm5RZ1kyRnNiR0poWTJ0elhHNWNkRngwWEhSY2RITjBZWFIxYzBOdlpHVTZJR1oxYm1OMGFXOXVLQ0J0WVhBZ0tTQjdYRzVjZEZ4MFhIUmNkRngwZG1GeUlHTnZaR1U3WEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0J0WVhBZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhScFppQW9JSE4wWVhSbElEd2dNaUFwSUh0Y2JseDBYSFJjZEZ4MFhIUmNkRngwWm05eUlDZ2dZMjlrWlNCcGJpQnRZWEFnS1NCN1hHNWNkRngwWEhSY2RGeDBYSFJjZEZ4MEx5OGdUR0Y2ZVMxaFpHUWdkR2hsSUc1bGR5QmpZV3hzWW1GamF5QnBiaUJoSUhkaGVTQjBhR0YwSUhCeVpYTmxjblpsY3lCdmJHUWdiMjVsYzF4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEhOMFlYUjFjME52WkdWYklHTnZaR1VnWFNBOUlGc2djM1JoZEhWelEyOWtaVnNnWTI5a1pTQmRMQ0J0WVhCYklHTnZaR1VnWFNCZE8xeHVYSFJjZEZ4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RGeDBYSFI5SUdWc2MyVWdlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUXZMeUJGZUdWamRYUmxJSFJvWlNCaGNIQnliM0J5YVdGMFpTQmpZV3hzWW1GamEzTmNibHgwWEhSY2RGeDBYSFJjZEZ4MGFuRllTRkl1WVd4M1lYbHpLQ0J0WVhCYklHcHhXRWhTTG5OMFlYUjFjeUJkSUNrN1hHNWNkRngwWEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkSEpsZEhWeWJpQjBhR2x6TzF4dVhIUmNkRngwWEhSOUxGeHVYRzVjZEZ4MFhIUmNkQzh2SUVOaGJtTmxiQ0IwYUdVZ2NtVnhkV1Z6ZEZ4dVhIUmNkRngwWEhSaFltOXlkRG9nWm5WdVkzUnBiMjRvSUhOMFlYUjFjMVJsZUhRZ0tTQjdYRzVjZEZ4MFhIUmNkRngwZG1GeUlHWnBibUZzVkdWNGRDQTlJSE4wWVhSMWMxUmxlSFFnZkh3Z2MzUnlRV0p2Y25RN1hHNWNkRngwWEhSY2RGeDBhV1lnS0NCMGNtRnVjM0J2Y25RZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSMGNtRnVjM0J2Y25RdVlXSnZjblFvSUdacGJtRnNWR1Y0ZENBcE8xeHVYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwWEhSa2IyNWxLQ0F3TENCbWFXNWhiRlJsZUhRZ0tUdGNibHgwWEhSY2RGeDBYSFJ5WlhSMWNtNGdkR2hwY3p0Y2JseDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MGZUdGNibHh1WEhSY2RDOHZJRUYwZEdGamFDQmtaV1psY25KbFpITmNibHgwWEhSa1pXWmxjbkpsWkM1d2NtOXRhWE5sS0NCcWNWaElVaUFwTG1OdmJYQnNaWFJsSUQwZ1kyOXRjR3hsZEdWRVpXWmxjbkpsWkM1aFpHUTdYRzVjZEZ4MGFuRllTRkl1YzNWalkyVnpjeUE5SUdweFdFaFNMbVJ2Ym1VN1hHNWNkRngwYW5GWVNGSXVaWEp5YjNJZ1BTQnFjVmhJVWk1bVlXbHNPMXh1WEc1Y2RGeDBMeThnVW1WdGIzWmxJR2hoYzJnZ1kyaGhjbUZqZEdWeUlDZ2pOelV6TVRvZ1lXNWtJSE4wY21sdVp5QndjbTl0YjNScGIyNHBYRzVjZEZ4MEx5OGdRV1JrSUhCeWIzUnZZMjlzSUdsbUlHNXZkQ0J3Y205MmFXUmxaQ0FvY0hKbFptbHNkR1Z5Y3lCdGFXZG9kQ0JsZUhCbFkzUWdhWFFwWEc1Y2RGeDBMeThnU0dGdVpHeGxJR1poYkhONUlIVnliQ0JwYmlCMGFHVWdjMlYwZEdsdVozTWdiMkpxWldOMElDZ2pNVEF3T1RNNklHTnZibk5wYzNSbGJtTjVJSGRwZEdnZ2IyeGtJSE5wWjI1aGRIVnlaU2xjYmx4MFhIUXZMeUJYWlNCaGJITnZJSFZ6WlNCMGFHVWdkWEpzSUhCaGNtRnRaWFJsY2lCcFppQmhkbUZwYkdGaWJHVmNibHgwWEhSekxuVnliQ0E5SUNnZ0tDQjFjbXdnZkh3Z2N5NTFjbXdnZkh3Z1lXcGhlRXh2WTJGMGFXOXVJQ2tnS3lCY0lsd2lJQ2t1Y21Wd2JHRmpaU2dnY21oaGMyZ3NJRndpWENJZ0tWeHVYSFJjZEZ4MExuSmxjR3hoWTJVb0lISndjbTkwYjJOdmJDd2dZV3BoZUV4dlkxQmhjblJ6V3lBeElGMGdLeUJjSWk4dlhDSWdLVHRjYmx4dVhIUmNkQzh2SUVGc2FXRnpJRzFsZEdodlpDQnZjSFJwYjI0Z2RHOGdkSGx3WlNCaGN5QndaWElnZEdsamEyVjBJQ014TWpBd05GeHVYSFJjZEhNdWRIbHdaU0E5SUc5d2RHbHZibk11YldWMGFHOWtJSHg4SUc5d2RHbHZibk11ZEhsd1pTQjhmQ0J6TG0xbGRHaHZaQ0I4ZkNCekxuUjVjR1U3WEc1Y2JseDBYSFF2THlCRmVIUnlZV04wSUdSaGRHRlVlWEJsY3lCc2FYTjBYRzVjZEZ4MGN5NWtZWFJoVkhsd1pYTWdQU0JxVVhWbGNua3VkSEpwYlNnZ2N5NWtZWFJoVkhsd1pTQjhmQ0JjSWlwY0lpQXBMblJ2VEc5M1pYSkRZWE5sS0NrdWJXRjBZMmdvSUhKdWIzUjNhR2wwWlNBcElIeDhJRnNnWENKY0lpQmRPMXh1WEc1Y2RGeDBMeThnUVNCamNtOXpjeTFrYjIxaGFXNGdjbVZ4ZFdWemRDQnBjeUJwYmlCdmNtUmxjaUIzYUdWdUlIZGxJR2hoZG1VZ1lTQndjbTkwYjJOdmJEcG9iM04wT25CdmNuUWdiV2x6YldGMFkyaGNibHgwWEhScFppQW9JSE11WTNKdmMzTkViMjFoYVc0Z1BUMGdiblZzYkNBcElIdGNibHgwWEhSY2RIQmhjblJ6SUQwZ2NuVnl
14938iQzVsZUdWaktDQnpMblZ5YkM1MGIweHZkMlZ5UTJGelpTZ3BJQ2s3WEc1Y2RGeDBYSFJ6TG1OeWIzTnpSRzl0WVdsdUlEMGdJU0VvSUhCaGNuUnpJQ1ltWEc1Y2RGeDBYSFJjZENnZ2NHRnlkSE5iSURFZ1hTQWhQVDBnWVdwaGVFeHZZMUJoY25Seld5QXhJRjBnZkh3Z2NHRnlkSE5iSURJZ1hTQWhQVDBnWVdwaGVFeHZZMUJoY25Seld5QXlJRjBnZkh4Y2JseDBYSFJjZEZ4MFhIUW9JSEJoY25Seld5QXpJRjBnZkh3Z0tDQndZWEowYzFzZ01TQmRJRDA5UFNCY0ltaDBkSEE2WENJZ1B5QmNJamd3WENJZ09pQmNJalEwTTF3aUlDa2dLU0FoUFQxY2JseDBYSFJjZEZ4MFhIUmNkQ2dnWVdwaGVFeHZZMUJoY25Seld5QXpJRjBnZkh3Z0tDQmhhbUY0VEc5alVHRnlkSE5iSURFZ1hTQTlQVDBnWENKb2RIUndPbHdpSUQ4Z1hDSTRNRndpSURvZ1hDSTBORE5jSWlBcElDa2dLVnh1WEhSY2RGeDBLVHRjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJEYjI1MlpYSjBJR1JoZEdFZ2FXWWdibTkwSUdGc2NtVmhaSGtnWVNCemRISnBibWRjYmx4MFhIUnBaaUFvSUhNdVpHRjBZU0FtSmlCekxuQnliMk5sYzNORVlYUmhJQ1ltSUhSNWNHVnZaaUJ6TG1SaGRHRWdJVDA5SUZ3aWMzUnlhVzVuWENJZ0tTQjdYRzVjZEZ4MFhIUnpMbVJoZEdFZ1BTQnFVWFZsY25rdWNHRnlZVzBvSUhNdVpHRjBZU3dnY3k1MGNtRmthWFJwYjI1aGJDQXBPMXh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRUZ3Y0d4NUlIQnlaV1pwYkhSbGNuTmNibHgwWEhScGJuTndaV04wVUhKbFptbHNkR1Z5YzA5eVZISmhibk53YjNKMGN5Z2djSEpsWm1sc2RHVnljeXdnY3l3Z2IzQjBhVzl1Y3l3Z2FuRllTRklnS1R0Y2JseHVYSFJjZEM4dklFbG1JSEpsY1hWbGMzUWdkMkZ6SUdGaWIzSjBaV1FnYVc1emFXUmxJR0VnY0hKbFptbHNkR1Z5TENCemRHOXdJSFJvWlhKbFhHNWNkRngwYVdZZ0tDQnpkR0YwWlNBOVBUMGdNaUFwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUJxY1ZoSVVqdGNibHgwWEhSOVhHNWNibHgwWEhRdkx5QlhaU0JqWVc0Z1ptbHlaU0JuYkc5aVlXd2daWFpsYm5SeklHRnpJRzltSUc1dmR5QnBaaUJoYzJ0bFpDQjBiMXh1WEhSY2RDOHZJRVJ2YmlkMElHWnBjbVVnWlhabGJuUnpJR2xtSUdwUmRXVnllUzVsZG1WdWRDQnBjeUIxYm1SbFptbHVaV1FnYVc0Z1lXNGdRVTFFTFhWellXZGxJSE5qWlc1aGNtbHZJQ2dqTVRVeE1UZ3BYRzVjZEZ4MFptbHlaVWRzYjJKaGJITWdQU0JxVVhWbGNua3VaWFpsYm5RZ0ppWWdjeTVuYkc5aVlXdzdYRzVjYmx4MFhIUXZMeUJYWVhSamFDQm1iM0lnWVNCdVpYY2djMlYwSUc5bUlISmxjWFZsYzNSelhHNWNkRngwYVdZZ0tDQm1hWEpsUjJ4dlltRnNjeUFtSmlCcVVYVmxjbmt1WVdOMGFYWmxLeXNnUFQwOUlEQWdLU0I3WEc1Y2RGeDBYSFJxVVhWbGNua3VaWFpsYm5RdWRISnBaMmRsY2loY0ltRnFZWGhUZEdGeWRGd2lLVHRjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJWY0hCbGNtTmhjMlVnZEdobElIUjVjR1ZjYmx4MFhIUnpMblI1Y0dVZ1BTQnpMblI1Y0dVdWRHOVZjSEJsY2tOaGMyVW9LVHRjYmx4dVhIUmNkQzh2SUVSbGRHVnliV2x1WlNCcFppQnlaWEYxWlhOMElHaGhjeUJqYjI1MFpXNTBYRzVjZEZ4MGN5NW9ZWE5EYjI1MFpXNTBJRDBnSVhKdWIwTnZiblJsYm5RdWRHVnpkQ2dnY3k1MGVYQmxJQ2s3WEc1Y2JseDBYSFF2THlCVFlYWmxJSFJvWlNCVlVrd2dhVzRnWTJGelpTQjNaU2R5WlNCMGIzbHBibWNnZDJsMGFDQjBhR1VnU1dZdFRXOWthV1pwWldRdFUybHVZMlZjYmx4MFhIUXZMeUJoYm1RdmIzSWdTV1l0VG05dVpTMU5ZWFJqYUNCb1pXRmtaWElnYkdGMFpYSWdiMjVjYmx4MFhIUmpZV05vWlZWU1RDQTlJSE11ZFhKc08xeHVYRzVjZEZ4MEx5OGdUVzl5WlNCdmNIUnBiMjV6SUdoaGJtUnNhVzVuSUdadmNpQnlaWEYxWlhOMGN5QjNhWFJvSUc1dklHTnZiblJsYm5SY2JseDBYSFJwWmlBb0lDRnpMbWhoYzBOdmJuUmxiblFnS1NCN1hHNWNibHgwWEhSY2RDOHZJRWxtSUdSaGRHRWdhWE1nWVhaaGFXeGhZbXhsTENCaGNIQmxibVFnWkdGMFlTQjBieUIxY214Y2JseDBYSFJjZEdsbUlDZ2djeTVrWVhSaElDa2dlMXh1WEhSY2RGeDBYSFJqWVdOb1pWVlNUQ0E5SUNnZ2N5NTFjbXdnS3owZ0tDQnljWFZsY25rdWRHVnpkQ2dnWTJGamFHVlZVa3dnS1NBL0lGd2lKbHdpSURvZ1hDSS9YQ0lnS1NBcklITXVaR0YwWVNBcE8xeHVYSFJjZEZ4MFhIUXZMeUFqT1RZNE1qb2djbVZ0YjNabElHUmhkR0VnYzI4Z2RHaGhkQ0JwZENkeklHNXZkQ0IxYzJWa0lHbHVJR0Z1SUdWMlpXNTBkV0ZzSUhKbGRISjVYRzVjZEZ4MFhIUmNkR1JsYkdWMFpTQnpMbVJoZEdFN1hHNWNkRngwWEhSOVhHNWNibHgwWEhSY2RDOHZJRUZrWkNCaGJuUnBMV05oWTJobElHbHVJSFZ5YkNCcFppQnVaV1ZrWldSY2JseDBYSFJjZEdsbUlDZ2djeTVqWVdOb1pTQTlQVDBnWm1Gc2MyVWdLU0I3WEc1Y2RGeDBYSFJjZEhNdWRYSnNJRDBnY25SekxuUmxjM1FvSUdOaFkyaGxWVkpNSUNrZ1AxeHVYRzVjZEZ4MFhIUmNkRngwTHk4Z1NXWWdkR2hsY21VZ2FYTWdZV3h5WldGa2VTQmhJQ2RmSnlCd1lYSmhiV1YwWlhJc0lITmxkQ0JwZEhNZ2RtRnNkV1ZjYmx4MFhIUmNkRngwWEhSallXTm9aVlZTVEM1eVpYQnNZV05sS0NCeWRITXNJRndpSkRGZlBWd2lJQ3NnYm05dVkyVXJLeUFwSURwY2JseHVYSFJjZEZ4MFhIUmNkQzh2SUU5MGFHVnlkMmx6WlNCaFpHUWdiMjVsSUhSdklIUm9aU0JsYm1SY2JseDBYSFJjZEZ4MFhIUmpZV05vWlZWU1RDQXJJQ2dnY25GMVpYSjVMblJsYzNRb0lHTmhZMmhsVlZKTUlDa2dQeUJjSWlaY0lpQTZJRndpUDF3aUlDa2dLeUJjSWw4OVhDSWdLeUJ1YjI1alpTc3JPMXh1WEhSY2RGeDBmVnh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRk5sZENCMGFHVWdTV1l0VFc5a2FXWnBaV1F0VTJsdVkyVWdZVzVrTDI5eUlFbG1MVTV2Ym1VdFRXRjBZMmdnYUdWaFpHVnlMQ0JwWmlCcGJpQnBaazF2WkdsbWFXVmtJRzF2WkdVdVhHNWNkRngwYVdZZ0tDQnpMbWxtVFc5a2FXWnBaV1FnS1NCN1hHNWNkRngwWEhScFppQW9JR3BSZFdWeWVTNXNZWE4wVFc5a2FXWnBaV1JiSUdOaFkyaGxWVkpNSUYwZ0tTQjdYRzVjZEZ4MFhIUmNkR3B4V0VoU0xuTmxkRkpsY1hWbGMzUklaV0ZrWlhJb0lGd2lTV1l0VFc5a2FXWnBaV1F0VTJsdVkyVmNJaXdnYWxGMVpYSjVMbXhoYzNSTmIyUnBabWxsWkZzZ1kyRmphR1ZWVWt3Z1hTQXBPMXh1WEhSY2RGeDBmVnh1WEhSY2RGeDBhV1lnS0NCcVVYVmxjbmt1WlhSaFoxc2dZMkZqYUdWVlVrd2dYU0FwSUh0Y2JseDBYSFJjZEZ4MGFuRllTRkl1YzJWMFVtVnhkV1Z6ZEVobFlXUmxjaWdnWENKSlppMU9iMjVsTFUxaGRHTm9YQ0lzSUdwUmRXVnllUzVsZEdGbld5QmpZV05vWlZWU1RDQmRJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnVTJWMElIUm9aU0JqYjNKeVpXTjBJR2hsWVdSbGNpd2dhV1lnWkdGMFlTQnBjeUJpWldsdVp5QnpaVzUwWEc1Y2RGeDBhV1lnS0NCekxtUmhkR0VnSmlZZ2N5NW9ZWE5EYjI1MFpXNTBJQ1ltSUhNdVkyOXVkR1Z1ZEZSNWNHVWdJVDA5SUdaaGJITmxJSHg4SUc5d2RHbHZibk11WTI5dWRHVnVkRlI1Y0dVZ0tTQjdYRzVjZEZ4MFhIUnFjVmhJVWk1elpYUlNaWEYxWlhOMFNHVmhaR1Z5S0NCY0lrTnZiblJsYm5RdFZIbHdaVndpTENCekxtTnZiblJsYm5SVWVYQmxJQ2s3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnVTJWMElIUm9aU0JCWTJObGNIUnpJR2hsWVdSbGNpQm1iM0lnZEdobElITmxjblpsY2l3Z1pHVndaVzVrYVc1bklHOXVJSFJvWlNCa1lYUmhWSGx3WlZ4dVhIUmNkR3B4V0VoU0xuTmxkRkpsY1hWbGMzUklaV0ZrWlhJb1hHNWNkRngwWEhSY0lrRmpZMlZ3ZEZ3aUxGeHVYSFJjZEZ4MGN5NWtZWFJoVkhsd1pYTmJJREFnWFNBbUppQnpMbUZqWTJWd2RITmJJSE11WkdGMFlWUjVjR1Z6V3pCZElGMGdQMXh1WEhSY2RGeDBYSFJ6TG1GalkyVndkSE5iSUhNdVpHRjBZVlI1Y0dWeld6QmRJRjBnS3lBb0lITXVaR0YwWVZSNWNHVnpXeUF3
14938SUYwZ0lUMDlJRndpS2x3aUlEOGdYQ0lzSUZ3aUlDc2dZV3hzVkhsd1pYTWdLeUJjSWpzZ2NUMHdMakF4WENJZ09pQmNJbHdpSUNrZ09seHVYSFJjZEZ4MFhIUnpMbUZqWTJWd2RITmJJRndpS2x3aUlGMWNibHgwWEhRcE8xeHVYRzVjZEZ4MEx5OGdRMmhsWTJzZ1ptOXlJR2hsWVdSbGNuTWdiM0IwYVc5dVhHNWNkRngwWm05eUlDZ2dhU0JwYmlCekxtaGxZV1JsY25NZ0tTQjdYRzVjZEZ4MFhIUnFjVmhJVWk1elpYUlNaWEYxWlhOMFNHVmhaR1Z5S0NCcExDQnpMbWhsWVdSbGNuTmJJR2tnWFNBcE8xeHVYSFJjZEgxY2JseHVYSFJjZEM4dklFRnNiRzkzSUdOMWMzUnZiU0JvWldGa1pYSnpMMjFwYldWMGVYQmxjeUJoYm1RZ1pXRnliSGtnWVdKdmNuUmNibHgwWEhScFppQW9JSE11WW1WbWIzSmxVMlZ1WkNBbUppQW9JSE11WW1WbWIzSmxVMlZ1WkM1allXeHNLQ0JqWVd4c1ltRmphME52Ym5SbGVIUXNJR3B4V0VoU0xDQnpJQ2tnUFQwOUlHWmhiSE5sSUh4OElITjBZWFJsSUQwOVBTQXlJQ2tnS1NCN1hHNWNkRngwWEhRdkx5QkJZbTl5ZENCcFppQnViM1FnWkc5dVpTQmhiSEpsWVdSNUlHRnVaQ0J5WlhSMWNtNWNibHgwWEhSY2RISmxkSFZ5YmlCcWNWaElVaTVoWW05eWRDZ3BPMXh1WEhSY2RIMWNibHh1WEhSY2RDOHZJRUZpYjNKMGFXNW5JR2x6SUc1dklHeHZibWRsY2lCaElHTmhibU5sYkd4aGRHbHZibHh1WEhSY2RITjBja0ZpYjNKMElEMGdYQ0poWW05eWRGd2lPMXh1WEc1Y2RGeDBMeThnU1c1emRHRnNiQ0JqWVd4c1ltRmphM01nYjI0Z1pHVm1aWEp5WldSelhHNWNkRngwWm05eUlDZ2dhU0JwYmlCN0lITjFZMk5sYzNNNklERXNJR1Z5Y205eU9pQXhMQ0JqYjIxd2JHVjBaVG9nTVNCOUlDa2dlMXh1WEhSY2RGeDBhbkZZU0ZKYklHa2dYU2dnYzFzZ2FTQmRJQ2s3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnUjJWMElIUnlZVzV6Y0c5eWRGeHVYSFJjZEhSeVlXNXpjRzl5ZENBOUlHbHVjM0JsWTNSUWNtVm1hV3gwWlhKelQzSlVjbUZ1YzNCdmNuUnpLQ0IwY21GdWMzQnZjblJ6TENCekxDQnZjSFJwYjI1ekxDQnFjVmhJVWlBcE8xeHVYRzVjZEZ4MEx5OGdTV1lnYm04Z2RISmhibk53YjNKMExDQjNaU0JoZFhSdkxXRmliM0owWEc1Y2RGeDBhV1lnS0NBaGRISmhibk53YjNKMElDa2dlMXh1WEhSY2RGeDBaRzl1WlNnZ0xURXNJRndpVG04Z1ZISmhib
14938k53YjNKMFhDSWdLVHRjYmx4MFhIUjlJR1ZzYzJVZ2UxeHVYSFJjZEZ4MGFuRllTRkl1Y21WaFpIbFRkR0YwWlNBOUlERTdYRzVjYmx4MFhIUmNkQzh2SUZObGJtUWdaMnh2WW1Gc0lHVjJaVzUwWEc1Y2RGeDBYSFJwWmlBb0lHWnBjbVZIYkc5aVlXeHpJQ2tnZTF4dVhIUmNkRngwWEhSbmJHOWlZV3hGZG1WdWRFTnZiblJsZUhRdWRISnBaMmRsY2lnZ1hDSmhhbUY0VTJWdVpGd2lMQ0JiSUdweFdFaFNMQ0J6SUYwZ0tUdGNibHgwWEhSY2RIMWNibHgwWEhSY2RDOHZJRlJwYldWdmRYUmNibHgwWEhSY2RHbG1JQ2dnY3k1aGMzbHVZeUFtSmlCekxuUnBiV1Z2ZFhRZ1BpQXdJQ2tnZTF4dVhIUmNkRngwWEhSMGFXMWxiM1YwVkdsdFpYSWdQU0J6WlhSVWFXMWxiM1YwS0daMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MFhIUmNkR3B4V0VoU0xtRmliM0owS0Z3aWRHbHRaVzkxZEZ3aUtUdGNibHgwWEhSY2RGeDBmU3dnY3k1MGFXMWxiM1YwSUNrN1hHNWNkRngwWEhSOVhHNWNibHgwWEhSY2RIUnllU0I3WEc1Y2RGeDBYSFJjZEhOMFlYUmxJRDBnTVR0Y2JseDBYSFJjZEZ4MGRISmhibk53YjNKMExuTmxibVFvSUhKbGNYVmxjM1JJWldGa1pYSnpMQ0JrYjI1bElDazdYRzVjZEZ4MFhIUjlJR05oZEdOb0lDZ2daU0FwSUh0Y2JseDBYSFJjZEZ4MEx5OGdVSEp2Y0dGbllYUmxJR1Y0WTJWd2RHbHZiaUJoY3lCbGNuSnZjaUJwWmlCdWIzUWdaRzl1WlZ4dVhIUmNkRngwWEhScFppQW9JSE4wWVhSbElEd2dNaUFwSUh0Y2JseDBYSFJjZEZ4MFhIUmtiMjVsS0NBdE1Td2daU0FwTzF4dVhIUmNkRngwWEhRdkx5QlRhVzF3YkhrZ2NtVjBhSEp2ZHlCdmRHaGxjbmRwYzJWY2JseDBYSFJjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEZ4MFhIUjBhSEp2ZHlCbE8xeHVYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUjlYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdRMkZzYkdKaFkyc2dabTl5SUhkb1pXNGdaWFpsY25sMGFHbHVaeUJwY3lCa2IyNWxYRzVjZEZ4MFpuVnVZM1JwYjI0Z1pHOXVaU2dnYzNSaGRIVnpMQ0J1WVhScGRtVlRkR0YwZFhOVVpYaDBMQ0J5WlhOd2IyNXpaWE1zSUdobFlXUmxjbk1nS1NCN1hHNWNkRngwWEhSMllYSWdhWE5UZFdOalpYTnpMQ0J6ZFdOalpYTnpMQ0JsY25KdmNpd2djbVZ6Y0c5dWMyVXNJRzF2WkdsbWFXVmtMRnh1WEhSY2RGeDBYSFJ6ZEdGMGRYTlVaWGgwSUQwZ2JtRjBhWFpsVTNSaGRIVnpWR1Y0ZER0Y2JseHVYSFJjZEZ4MEx5OGdRMkZzYkdWa0lHOXVZMlZjYmx4MFhIUmNkR2xtSUNnZ2MzUmhkR1VnUFQwOUlESWdLU0I3WEc1Y2RGeDBYSFJjZEhKbGRIVnlianRjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwTHk4Z1UzUmhkR1VnYVhNZ1hDSmtiMjVsWENJZ2JtOTNYRzVjZEZ4MFhIUnpkR0YwWlNBOUlESTdYRzVjYmx4MFhIUmNkQzh2SUVOc1pXRnlJSFJwYldWdmRYUWdhV1lnYVhRZ1pYaHBjM1J6WEc1Y2RGeDBYSFJwWmlBb0lIUnBiV1Z2ZFhSVWFXMWxjaUFwSUh0Y2JseDBYSFJjZEZ4MFkyeGxZWEpVYVcxbGIzVjBLQ0IwYVcxbGIzVjBWR2x0WlhJZ0tUdGNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBMeThnUkdWeVpXWmxjbVZ1WTJVZ2RISmhibk53YjNKMElHWnZjaUJsWVhKc2VTQm5ZWEppWVdkbElHTnZiR3hsWTNScGIyNWNibHgwWEhSY2RDOHZJQ2h1YnlCdFlYUjBaWElnYUc5M0lHeHZibWNnZEdobElHcHhXRWhTSUc5aWFtVmpkQ0IzYVd4c0lHSmxJSFZ6WldRcFhHNWNkRngwWEhSMGNtRnVjM0J2Y25RZ1BTQjFibVJsWm1sdVpXUTdYRzVjYmx4MFhIUmNkQzh2SUVOaFkyaGxJSEpsYzNCdmJuTmxJR2hsWVdSbGNuTmNibHgwWEhSY2RISmxjM0J2Ym5ObFNHVmhaR1Z5YzFOMGNtbHVaeUE5SUdobFlXUmxjbk1nZkh3Z1hDSmNJanRjYmx4dVhIUmNkRngwTHk4Z1UyVjBJSEpsWVdSNVUzUmhkR1ZjYmx4MFhIUmNkR3B4V0VoU0xuSmxZV1I1VTNSaGRHVWdQU0J6ZEdGMGRYTWdQaUF3SUQ4Z05DQTZJREE3WEc1Y2JseDBYSFJjZEM4dklFUmxkR1Z5YldsdVpTQnBaaUJ6ZFdOalpYTnpablZzWEc1Y2RGeDBYSFJwYzFOMVkyTmxjM01nUFNCemRHRjBkWE1nUGowZ01qQXdJQ1ltSUhOMFlYUjFjeUE4SURNd01DQjhmQ0J6ZEdGMGRYTWdQVDA5SURNd05EdGNibHh1WEhSY2RGeDBMeThnUjJWMElISmxjM0J2Ym5ObElHUmhkR0ZjYmx4MFhIUmNkR2xtSUNnZ2NtVnpjRzl1YzJWeklDa2dlMXh1WEhSY2RGeDBYSFJ5WlhOd2IyNXpaU0E5SUdGcVlYaElZVzVrYkdWU1pYTndiMjV6WlhNb0lITXNJR3B4V0VoU0xDQnlaWE53YjI1elpYTWdLVHRjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwTHk4Z1EyOXVkbVZ5ZENCdWJ5QnRZWFIwWlhJZ2QyaGhkQ0FvZEdoaGRDQjNZWGtnY21WemNHOXVjMlZZV0ZnZ1ptbGxiR1J6SUdGeVpTQmhiSGRoZVhNZ2MyVjBLVnh1WEhSY2RGeDBjbVZ6Y0c5dWMyVWdQU0JoYW1GNFEyOXVkbVZ5ZENnZ2N5d2djbVZ6Y0c5dWMyVXNJR3B4V0VoU0xDQnBjMU4xWTJObGMzTWdLVHRjYmx4dVhIUmNkRngwTHk4Z1NXWWdjM1ZqWTJWemMyWjFiQ3dnYUdGdVpHeGxJSFI1Y0dVZ1kyaGhhVzVwYm1kY2JseDBYSFJjZEdsbUlDZ2dhWE5UZFdOalpYTnpJQ2tnZTF4dVhHNWNkRngwWEhSY2RDOHZJRk5sZENCMGFHVWdTV1l0VFc5a2FXWnBaV1F0VTJsdVkyVWdZVzVrTDI5eUlFbG1MVTV2Ym1VdFRXRjBZMmdnYUdWaFpHVnlMQ0JwWmlCcGJpQnBaazF2WkdsbWFXVmtJRzF2WkdVdVhHNWNkRngwWEhSY2RHbG1JQ2dnY3k1cFprMXZaR2xtYVdWa0lDa2dlMXh1WEhSY2RGeDBYSFJjZEcxdlpHbG1hV1ZrSUQwZ2FuRllTRkl1WjJWMFVtVnpjRzl1YzJWSVpXRmtaWElvWENKTVlYTjBMVTF2WkdsbWFXVmtYQ0lwTzF4dVhIUmNkRngwWEhSY2RHbG1JQ2dnYlc5a2FXWnBaV1FnS1NCN1hHNWNkRngwWEhSY2RGeDBYSFJxVVhWbGNua3ViR0Z6ZEUxdlpHbG1hV1ZrV3lCallXTm9aVlZTVENCZElEMGdiVzlrYVdacFpXUTdYRzVjZEZ4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSY2RHMXZaR2xtYVdWa0lEMGdhbkZZU0ZJdVoyVjBVbVZ6Y0c5dWMyVklaV0ZrWlhJb1hDSmxkR0ZuWENJcE8xeHVYSFJjZEZ4MFhIUmNkR2xtSUNnZ2JXOWthV1pwWldRZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhScVVYVmxjbmt1WlhSaFoxc2dZMkZqYUdWVlVrd2dYU0E5SUcxdlpHbG1hV1ZrTzF4dVhIUmNkRngwWEhSY2RIMWNibHgwWEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFJjZEM4dklHbG1JRzV2SUdOdmJuUmxiblJjYmx4MFhIUmNkRngwYVdZZ0tDQnpkR0YwZFhNZ1BUMDlJREl3TkNCOGZDQnpMblI1Y0dVZ1BUMDlJRndpU0VWQlJGd2lJQ2tnZTF4dVhIUmNkRngwWEhSY2RITjBZWFIxYzFSbGVIUWdQU0JjSW01dlkyOXVkR1Z1ZEZ3aU8xeHVYRzVjZEZ4MFhIUmNkQzh2SUdsbUlHNXZkQ0J0YjJScFptbGxaRnh1WEhSY2RGeDBYSFI5SUdWc2MyVWdhV1lnS0NCemRHRjBkWE1nUFQwOUlETXdOQ0FwSUh0Y2JseDBYSFJjZEZ4MFhIUnpkR0YwZFhOVVpYaDBJRDBnWENKdWIzUnRiMlJwWm1sbFpGd2lPMXh1WEc1Y2RGeDBYSFJjZEM4dklFbG1JSGRsSUdoaGRtVWdaR0YwWVN3Z2JHVjBKM01nWTI5dWRtVnlkQ0JwZEZ4dVhIUmNkRngwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwWEhSY2RITjBZWFIxYzFSbGVIUWdQU0J5WlhOd2IyNXpaUzV6ZEdGMFpUdGNibHgwWEhSY2RGeDBYSFJ6ZFdOalpYTnpJRDBnY21WemNHOXVjMlV1W
14938kdGMFlUdGNibHgwWEhSY2RGeDBYSFJsY25KdmNpQTlJSEpsYzNCdmJuTmxMbVZ5Y205eU8xeHVYSFJjZEZ4MFhIUmNkR2x6VTNWalkyVnpjeUE5SUNGbGNuSnZjanRjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwZlNCbGJITmxJSHRjYmx4MFhIUmNkRngwTHk4Z1JYaDBjbUZqZENCbGNuSnZjaUJtY205dElITjBZWFIxYzFSbGVIUWdZVzVrSUc1dmNtMWhiR2w2WlNCbWIzSWdibTl1TFdGaWIzSjBjMXh1WEhSY2RGeDBYSFJsY25KdmNpQTlJSE4wWVhSMWMxUmxlSFE3WEc1Y2RGeDBYSFJjZEdsbUlDZ2djM1JoZEhWeklIeDhJQ0Z6ZEdGMGRYTlVaWGgwSUNrZ2UxeHVYSFJjZEZ4MFhIUmNkSE4wWVhSMWMxUmxlSFFnUFNCY0ltVnljbTl5WENJN1hHNWNkRngwWEhSY2RGeDBhV1lnS0NCemRHRjBkWE1nUENBd0lDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MGMzUmhkSFZ6SUQwZ01EdGNibHgwWEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFJjZEgxY2JseDBYSFJjZEgxY2JseHVYSFJjZEZ4MEx5OGdVMlYwSUdSaGRHRWdabTl5SUhSb1pTQm1ZV3RsSUhob2NpQnZZbXBsWTNSY2JseDBYSFJjZEdweFdFaFNMbk4wWVhSMWN5QTlJSE4wWVhSMWN6dGNibHgwWEhSY2RHcHhXRWhTTG5OMFlYUjFjMVJsZUhRZ1BTQW9JRzVoZEdsMlpWTjBZWFIxYzFSbGVIUWdmSHdnYzNSaGRIVnpWR1Y0ZENBcElDc2dYQ0pjSWp0Y2JseHVYSFJjZEZ4MEx5OGdVM1ZqWTJWemN5OUZjbkp2Y2x4dVhIUmNkRngwYVdZZ0tDQnBjMU4xWTJObGMzTWdLU0I3WEc1Y2RGeDBYSFJjZEdSbFptVnljbVZrTG5KbGMyOXNkbVZYYVhSb0tDQmpZV3hzWW1GamEwTnZiblJsZUhRc0lGc2djM1ZqWTJWemN5d2djM1JoZEhWelZHVjRkQ3dnYW5GWVNGSWdYU0FwTzF4dVhIUmNkRngwZlNCbGJITmxJSHRjYmx4MFhIUmNkRngwWkdWbVpYSnlaV1F1Y21WcVpXTjBWMmwwYUNnZ1kyRnNiR0poWTJ0RGIyNTBaWGgwTENCYklHcHhXRWhTTENCemRHRjBkWE5VWlhoMExDQmxjbkp2Y2lCZElDazdYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkQzh2SUZOMFlYUjFjeTFrWlhCbGJtUmxiblFnWTJGc2JHSmhZMnR6WEc1Y2RGeDBYSFJxY1ZoSVVpNXpkR0YwZFhORGIyUmxLQ0J6ZEdGMGRYTkRiMlJsSUNrN1hHNWNkRngwWEhSemRHRjBkWE5EYjJSbElEMGdkVzVrWldacGJtVmtPMXh1WEc1Y2RGeDBYSFJwWmlBb0lHWnBjbVZIYkc5aVlXeHpJQ2tnZTF4dVhIUmNkRngwWEhSbmJHOWlZV3hGZG1WdWRFTnZiblJsZUhRdWRISnBaMmRsY2lnZ2FYTlRkV05qWlhOeklEOGdYQ0poYW1GNFUzVmpZMlZ6YzF3aUlEb2dYQ0poYW1GNFJYSnliM0pjSWl4Y2JseDBYSFJjZEZ4MFhIUmJJR3B4V0VoU0xDQnpMQ0JwYzFOMVkyTmxjM01nUHlCemRXTmpaWE56SURvZ1pYSnliM0lnWFNBcE8xeHVYSFJjZEZ4MGZWeHVYRzVjZEZ4MFhIUXZMeUJEYjIxd2JHVjBaVnh1WEhSY2RGeDBZMjl0Y0d4bGRHVkVaV1psY25KbFpDNW1hWEpsVjJsMGFDZ2dZMkZzYkdKaFkydERiMjUwWlhoMExDQmJJR3B4V0VoU0xDQnpkR0YwZFhOVVpYaDBJRjBnS1R0Y2JseHVYSFJjZEZ4MGFXWWdLQ0JtYVhKbFIyeHZZbUZzY3lBcElIdGNibHgwWEhSY2RGeDBaMnh2WW1Gc1JYWmxiblJEYjI1MFpYaDBMblJ5YVdkblpYSW9JRndpWVdwaGVFTnZiWEJzWlhSbFhDSXNJRnNnYW5GWVNGSXNJSE1nWFNBcE8xeHVYSFJjZEZ4MFhIUXZMeUJJWVc1a2JHVWdkR2hsSUdkc2IySmhiQ0JCU2tGWUlHTnZkVzUwWlhKY2JseDBYSFJjZEZ4MGFXWWdLQ0FoS0NBdExXcFJkV1Z5ZVM1aFkzUnBkbVVnS1NBcElIdGNibHgwWEhSY2RGeDBYSFJxVVhWbGNua3VaWFpsYm5RdWRISnBaMmRsY2loY0ltRnFZWGhUZEc5d1hDSXBPMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmVnh1WEc1Y2RGeDBjbVYwZFhKdUlHcHhXRWhTTzF4dVhIUjlMRnh1WEc1Y2RHZGxkRXBUVDA0NklHWjFibU4wYVc5dUtDQjFjbXdzSUdSaGRHRXNJR05oYkd4aVlXTnJJQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQnFVWFZsY25rdVoyVjBLQ0IxY213c0lHUmhkR0VzSUdOaGJHeGlZV05yTENCY0ltcHpiMjVjSWlBcE8xeHVYSFI5TEZ4dVhHNWNkR2RsZEZOamNtbHdkRG9nWm5WdVkzUnBiMjRvSUhWeWJDd2dZMkZzYkdKaFkyc2dLU0I3WEc1Y2RGeDBjbVYwZFhKdUlHcFJkV1Z5ZVM1blpYUW9JSFZ5YkN3Z2RXNWtaV1pwYm1Wa0xDQmpZV3hzWW1GamF5d2dYQ0p6WTNKcGNIUmNJaUFwTzF4dVhIUjlYRzU5S1R0Y2JseHVhbEYxWlhKNUxtVmhZMmdvSUZzZ1hDSm5aWFJjSWl3Z1hDSndiM04wWENJZ1hTd2dablZ1WTNScGIyNG9JR2tzSUcxbGRHaHZaQ0FwSUh0Y2JseDBhbEYxWlhKNVd5QnRaWFJvYjJRZ1hTQTlJR1oxYm1OMGFXOXVLQ0IxY213c0lHUmhkR0VzSUdOaGJHeGlZV05yTENCMGVYQmxJQ2tnZTF4dVhIUmNkQzh2SUZOb2FXWjBJR0Z5WjNWdFpXNTBjeUJwWmlCa1lYUmhJR0Z5WjNWdFpXNTBJSGRoY3lCdmJXbDBkR1ZrWEc1Y2RGeDBhV1lnS0NCcVVYVmxjbmt1YVhOR2RXNWpkR2x2YmlnZ1pHRjBZU0FwSUNrZ2UxeHVYSFJjZEZ4MGRIbHdaU0E5SUhSNWNHVWdmSHdnWTJGc2JHSmhZMnM3WEc1Y2RGeDBYSFJqWVd4c1ltRmpheUE5SUdSaGRHRTdYRzVjZEZ4MFhIUmtZWFJoSUQwZ2RXNWtaV1pwYm1Wa08xeHVYSFJjZEgxY2JseHVYSFJjZEhKbGRIVnliaUJxVVhWbGNua3VZV3BoZUNoN1hHNWNkRngwWEhSMWNtdzZJSFZ5YkN4Y2JseDBYSFJjZEhSNWNHVTZJRzFsZEdodlpDeGNibHgwWEhSY2RHUmhkR0ZVZVhCbE9pQjBlWEJsTEZ4dVhIUmNkRngwWkdGMFlUb2daR0YwWVN4Y2JseDBYSFJjZEhOMVkyTmxjM002SUdOaGJHeGlZV05yWEc1Y2RGeDBmU2s3WEc1Y2RIMDdYRzU5S1R0Y2JseHVYRzVxVVhWbGNua3VYMlYyWVd4VmNtd2dQU0JtZFc1amRHbHZiaWdnZFhKc0lDa2dlMXh1WEhSeVpYUjFjbTRnYWxGMVpYSjVMbUZxWVhnb2UxeHVYSFJjZEhWeWJEb2dkWEpzTEZ4dVhIUmNkSFI1Y0dVNklGd2lSMFZVWENJc1hHNWNkRngwWkdGMFlWUjVjR1U2SUZ3aWMyTnlhWEIwWENJc1hHNWNkRngwWVhONWJtTTZJR1poYkhObExGeHVYSFJjZEdkc2IySmhiRG9nWm1Gc2MyVXNYRzVjZEZ4MFhDSjBhSEp2ZDNOY0lqb2dkSEoxWlZ4dVhIUjlLVHRjYm4wN1hHNWNibHh1YWxGMVpYSjVMbVp1TG1WNGRHVnVaQ2g3WEc1Y2RIZHlZWEJCYkd3NklHWjFibU4wYVc5dUtDQm9kRzFzSUNrZ2UxeHVYSFJjZEhaaGNpQjNjbUZ3TzF4dVhHNWNkRngwYVdZZ0tDQnFVWFZsY25rdWFYTkdkVzVqZEdsdmJpZ2dhSFJ0YkNBcElDa2dlMXh1WEhSY2RGeDBjbVYwZFhKdUlIUm9hWE11WldGamFDaG1kVzVqZEdsdmJpZ2dhU0FwSUh0Y2JseDBYSFJjZEZ4MGFsRjFaWEo1S0NCMGFHbHpJQ2t1ZDNKaGNFRnNiQ2dnYUhSdGJDNWpZV3hzS0hSb2FYTXNJR2twSUNrN1hHNWNkRngwWEhSOUtUdGNibHgwWEhSOVhHNWNibHgwWEhScFppQW9JSFJvYVhOYklEQWdYU0FwSUh0Y2JseHVYSFJjZEZ4MEx5OGdWR2hsSUdWc1pXMWxiblJ6SUhSdklIZHlZWEFnZEdobElIUmhjbWRsZENCaGNtOTFibVJjYmx4MFhIUmNkSGR5WVhBZ1BTQnFVWFZsY25rb0lHaDBiV3dzSUhSb2FYTmJJREFnWFM1dmQyNWxja1J2WTNWdFpXNTBJQ2t1WlhFb0lEQWdLUzVqYkc5dVpTZ2dkSEoxWlNBcE8xeHVYRzVjZEZ4MFhIUnBaaUFvSUhSb2FYTmJJREFnWFM1d1lYSmxiblJPYjJSbElDa2dlMXh1WEhSY2RGeDBYSFIzY21Gd0xtbHVjMlZ5ZEVKbFptOXlaU2dnZEdocGMxc2dNQ0JkSUNrN1hHNWNkRngwWEhSOVhHNWNibHgwWEhSY2RIZHlZWEF1YldGd0tHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RGeDBYSFIyWVhJZ1pXeGxiU0E5SUhSb2FYTTdYRzVjYmx4MFhIUmNkRngwZDJocGJHVWdLQ0JsYkdWdExtWnBjbk4wUld4bGJXVnVkRU5vYVd4a0lDa2dlMXh1WEhSY2RGeDBYSFJjZEdWc1pXMGdQU0JsYkdWdExtWnBjbk4wUld4bGJXVnVkRU5vYVd4a08xeHVYSFJjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkRngwY21WMGRYSnVJR1ZzWlcwN1hHNWNkRngwWEhSOUtTNWhjSEJsYm1Rb0lIUm9hWE1nS1R0Y2JseDBYSFI5WEc1Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3p0Y2JseDBmU3hjYmx4dVhIUjNjbUZ3U1c1dVpYSTZJR1oxYm1OMGFXOXVLQ0JvZEcxc0lDa2dlMXh1WEhSY2RHbG1JQ2dnYWxGMVpYSjVMbWx6Um5WdVkzUnBiMjRvSUdoMGJXd2dLU0FwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUIwYU
14938dsekxtVmhZMmdvWm5WdVkzUnBiMjRvSUdrZ0tTQjdYRzVjZEZ4MFhIUmNkR3BSZFdWeWVTZ2dkR2hwY3lBcExuZHlZWEJKYm01bGNpZ2dhSFJ0YkM1allXeHNLSFJvYVhNc0lHa3BJQ2s3WEc1Y2RGeDBYSFI5S1R0Y2JseDBYSFI5WEc1Y2JseDBYSFJ5WlhSMWNtNGdkR2hwY3k1bFlXTm9LR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwZG1GeUlITmxiR1lnUFNCcVVYVmxjbmtvSUhSb2FYTWdLU3hjYmx4MFhIUmNkRngwWTI5dWRHVnVkSE1nUFNCelpXeG1MbU52Ym5SbGJuUnpLQ2s3WEc1Y2JseDBYSFJjZEdsbUlDZ2dZMjl1ZEdWdWRITXViR1Z1WjNSb0lDa2dlMXh1WEhSY2RGeDBYSFJqYjI1MFpXNTBjeTUzY21Gd1FXeHNLQ0JvZEcxc0lDazdYRzVjYmx4MFhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUmNkSE5sYkdZdVlYQndaVzVrS0NCb2RHMXNJQ2s3WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmU2s3WEc1Y2RIMHNYRzVjYmx4MGQzSmhjRG9nWm5WdVkzUnBiMjRvSUdoMGJXd2dLU0I3WEc1Y2RGeDBkbUZ5SUdselJuVnVZM1JwYjI0Z1BTQnFVWFZsY25rdWFYTkdkVzVqZEdsdmJpZ2dhSFJ0YkNBcE8xeHVYRzVjZEZ4MGNtVjBkWEp1SUhSb2FYTXVaV0ZqYUNobWRXNWpkR2x2YmlnZ2FTQXBJSHRjYmx4MFhIUmNkR3BSZFdWeWVTZ2dkR2hwY3lBcExuZHlZWEJCYkd3b0lHbHpSblZ1WTNScGIyNGdQeUJvZEcxc0xtTmhiR3dvZEdocGN5d2dhU2tnT2lCb2RHMXNJQ2s3WEc1Y2RGeDBmU2s3WEc1Y2RIMHNYRzVjYmx4MGRXNTNjbUZ3T2lCbWRXNWpkR2x2YmlncElIdGNibHgwWEhSeVpYUjFjbTRnZEdocGN5NXdZWEpsYm5Rb0tTNWxZV05vS0daMWJtTjBhVzl1S0NrZ2UxeHVYSFJjZEZ4MGFXWWdLQ0FoYWxGMVpYSjVMbTV2WkdWT1lXMWxLQ0IwYUdsekxDQmNJbUp2WkhsY0lpQXBJQ2tnZTF4dVhIUmNkRngwWEhScVVYVmxjbmtvSUhSb2FYTWdLUzV5WlhCc1lXTmxWMmwwYUNnZ2RHaHBjeTVqYUdsc1pFNXZaR1Z6SUNrN1hHNWNkRngwWEhSOVhHNWNkRngwZlNrdVpXNWtLQ2s3WEc1Y2RIMWNibjBwTzF4dVhHNWNibXBSZFdWeWVTNWxlSEJ5TG1acGJIUmxjbk11YUdsa1pHVnVJRDBnWm5WdVkzUnBiMjRvSUdWc1pXMGdLU0I3WEc1Y2RDOHZJRk4xY0hCdmNuUTZJRTl3WlhKaElEdzlJREV5TGpFeVhHNWNkQzh2SUU5d1pYSmhJSEpsY0c5eWRITWdiMlptYzJWMFYybGtkR2h6SUdGdVpDQnZabVp6WlhSSVpXbG5hSFJ6SUd4bGMzTWdkR2hoYmlCNlpYSnZJRzl1SUhOdmJXVWdaV3hsYldWdWRITmNibHgwY21WMGRYSnVJR1ZzWlcwdWIyWm1jMlYwVjJsa2RHZ2dQRDBnTUNBbUppQmxiR1Z0TG05bVpuTmxkRWhsYVdkb2RDQThQU0F3TzF4dWZUdGNibXBSZFdWeWVTNWxlSEJ5TG1acGJIUmxjbk11ZG1semFXSnNaU0E5SUdaMWJtTjBhVzl1S0NCbGJHVnRJQ2tnZTF4dVhIUnlaWFIxY200Z0lXcFJkV1Z5ZVM1bGVIQnlMbVpwYkhSbGNuTXVhR2xrWkdWdUtDQmxiR1Z0SUNrN1hHNTlPMXh1WEc1Y2JseHVYRzUyWVhJZ2NqSXdJRDBnTHlVeU1DOW5MRnh1WEhSeVluSmhZMnRsZENBOUlDOWNYRnRjWEYwa0x5eGNibHgwY2tOU1RFWWdQU0F2WEZ4eVAxeGNiaTluTEZ4dVhIUnljM1ZpYldsMGRHVnlWSGx3WlhNZ1BTQXZYaWcvT25OMVltMXBkSHhpZFhSMGIyNThhVzFoWjJWOGNtVnpaWFI4Wm1sc1pTa2tMMmtzWEc1Y2RISnpkV0p0YVhSMFlXSnNaU0E5SUM5ZUtEODZhVzV3ZFhSOGMyVnNaV04wZkhSbGVIUmhjbVZoZkd0bGVXZGxiaWt2YVR0Y2JseHVablZ1WTNScGIyNGdZblZwYkdSUVlYSmhiWE1vSUhCeVpXWnBlQ3dnYjJKcUxDQjBjbUZrYVhScGIyNWhiQ3dnWVdSa0lDa2dlMXh1WEhSMllYSWdibUZ0WlR0Y2JseHVYSFJwWmlBb0lHcFJkV1Z5ZVM1cGMwRnljbUY1S0NCdlltb2dLU0FwSUh0Y2JseDBYSFF2THlCVFpYSnBZV3hwZW1VZ1lYSnlZWGtnYVhSbGJTNWNibHgwWEhScVVYVmxjbmt1WldGamFDZ2diMkpxTENCbWRXNWpkR2x2YmlnZ2FTd2dkaUFwSUh0Y2JseDBYSFJjZEdsbUlDZ2dkSEpoWkdsMGFXOXVZV3dnZkh3Z2NtSnlZV05yWlhRdWRHVnpkQ2dnY0hKbFptbDRJQ2tnS1NCN1hHNWNkRngwWEhSY2RDOHZJRlJ5WldGMElHVmhZMmdnWVhKeVlYa2dhWFJsYlNCaGN5QmhJSE5qWVd4aGNpNWNibHgwWEhSY2RGeDBZV1JrS0NCd2NtVm1hWGdzSUhZZ0tUdGNibHh1WEhSY2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RGeDBMeThnU1hSbGJTQnBjeUJ1YjI0dGMyTmhiR0Z5SUNoaGNuSmhlU0J2Y2lCdlltcGxZM1FwTENCbGJtTnZaR1VnYVhSeklHNTFiV1Z5YVdNZ2FXNWtaWGd1WEc1Y2RGeDBYSFJjZEdKMWFXeGtVR0Z5WVcxektDQndjbVZtYVhnZ0t5QmNJbHRjSWlBcklDZ2dkSGx3Wlc5bUlIWWdQVDA5SUZ3aWIySnFaV04wWENJZ1B5QnBJRG9nWENKY0lpQXBJQ3NnWENKZFhDSXNJSFlzSUhSeVlXUnBkR2x2Ym1Gc0xDQmhaR1FnS1R0Y2JseDBYSFJjZEgxY2JseDBYSFI5S1R0Y2JseHVYSFI5SUdWc2MyVWdhV1lnS0NBaGRISmhaR2wwYVc5dVlXd2dKaVlnYWxGMVpYSjVMblI1Y0dVb0lHOWlhaUFwSUQwOVBTQmNJbTlpYW1WamRGd2lJQ2tnZTF4dVhIUmNkQzh2SUZObGNtbGhiR2w2WlNCdlltcGxZM1FnYVhSbGJTNWNibHgwWEhSbWIzSWdLQ0J1WVcxbElHbHVJRzlpYWlBcElIdGNibHgwWEhSY2RHSjFhV3hrVUdGeVlXMXpLQ0J3Y21WbWFYZ2dLeUJjSWx0Y0lpQXJJRzVoYldVZ0t5QmNJbDFjSWl3Z2IySnFXeUJ1WVcxbElGMHNJSFJ5WVdScGRHbHZibUZzTENCaFpHUWdLVHRjYmx4MFhIUjlYRzVjYmx4MGZTQmxiSE5sSUh0Y2JseDBYSFF2THlCVFpYSnBZV3hwZW1VZ2MyTmhiR0Z5SUdsMFpXMHVYRzVjZEZ4MFlXUmtLQ0J3Y21WbWFYZ3NJRzlpYWlBcE8xeHVYSFI5WEc1OVhHNWNiaTh2SUZObGNtbGhiR2w2WlNCaGJpQmhjbkpoZVNCdlppQm1iM0p0SUdWc1pXMWxiblJ6SUc5eUlHRWdjMlYwSUc5bVhHNHZMeUJyWlhrdmRtRnNkV1Z6SUdsdWRHOGdZU0J4ZFdWeWVTQnpkSEpwYm1kY2JtcFJkV1Z5ZVM1d1lYSmhiU0E5SUdaMWJtTjBhVzl1S0NCaExDQjBjbUZrYVhScGIyNWhiQ0FwSUh0Y2JseDBkbUZ5SUhCeVpXWnBlQ3hjYmx4MFhIUnpJRDBnVzEwc1hHNWNkRngwWVdSa0lEMGdablZ1WTNScGIyNG9JR3RsZVN3Z2RtRnNkV1VnS1NCN1hHNWNkRngwWEhRdkx5QkpaaUIyWVd4MVpTQnBjeUJoSUdaMWJtTjBhVzl1TENCcGJuWnZhMlVnYVhRZ1lXNWtJSEpsZEhWeWJpQnBkSE1nZG1Gc2RXVmNibHgwWEhSY2RIWmhiSFZsSUQwZ2FsRjFaWEo1TG1selJuVnVZM1JwYjI0b0lIWmhiSFZsSUNrZ1B5QjJZV3gxWlNncElEb2dLQ0IyWVd4MVpTQTlQU0J1ZFd4c0lEOGdYQ0pjSWlBNklIWmhiSFZsSUNrN1hHNWNkRngwWEhSeld5QnpMbXhsYm1kMGFDQmRJRDBnWlc1amIyUmxWVkpKUTI5dGNHOXVaVzUwS0NCclpYa2dLU0FySUZ3aVBWd2lJQ3NnWlc1amIyUmxWVkpKUTI5dGNHOXVaVzUwS0NCMllXeDFaU0FwTzF4dVhIUmNkSDA3WEc1Y2JseDBMeThnVTJWMElIUnlZV1JwZEdsdmJtRnNJSFJ2SUhSeWRXVWdabTl5SUdwUmRXVnllU0E4UFNBeExqTXVNaUJpWldoaGRtbHZjaTVjYmx4MGFXWWdLQ0IwY21Ga2FYUnBiMjVoYkNBOVBUMGdkVzVrWldacGJtVmtJQ2tnZTF4dVhIUmNkSFJ5WVdScGRHbHZibUZzSUQwZ2FsRjFaWEo1TG1GcVlYaFRaWFIwYVc1bmN5QW1KaUJxVVhWbGNua3VZV3BoZUZObGRIUnBibWR6TG5SeVlXUnBkR2x2Ym1Gc08xeHVYSFI5WEc1Y2JseDBMeThnU1dZZ1lXNGdZWEp5WVhrZ2QyRnpJSEJoYzNObFpDQnBiaXdnWVhOemRXMWxJSFJvWVhRZ2FYUWdhWE1nWVc0Z1lYSnlZWGtnYjJZZ1ptOXliU0JsYkdWdFpXNTBjeTVjYmx4MGFXWWdLQ0JxVVhWbGNua3VhWE5CY25KaG
14938VTZ2dZU0FwSUh4OElDZ2dZUzVxY1hWbGNua2dKaVlnSVdwUmRXVnllUzVwYzFCc1lXbHVUMkpxWldOMEtDQmhJQ2tnS1NBcElIdGNibHgwWEhRdkx5QlRaWEpwWVd4cGVtVWdkR2hsSUdadmNtMGdaV3hsYldWdWRITmNibHgwWEhScVVYVmxjbmt1WldGamFDZ2dZU3dnWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwWEhSaFpHUW9JSFJvYVhNdWJtRnRaU3dnZEdocGN5NTJZV3gxWlNBcE8xeHVYSFJjZEgwcE8xeHVYRzVjZEgwZ1pXeHpaU0I3WEc1Y2RGeDBMeThnU1dZZ2RISmhaR2wwYVc5dVlXd3NJR1Z1WTI5a1pTQjBhR1VnWENKdmJHUmNJaUIzWVhrZ0tIUm9aU0IzWVhrZ01TNHpMaklnYjNJZ2IyeGtaWEpjYmx4MFhIUXZMeUJrYVdRZ2FYUXBMQ0J2ZEdobGNuZHBjMlVnWlc1amIyUmxJSEJoY21GdGN5QnlaV04xY25OcGRtVnNlUzVjYmx4MFhIUm1iM0lnS0NCd2NtVm1hWGdnYVc0Z1lTQXBJSHRjYmx4MFhIUmNkR0oxYVd4a1VHRnlZVzF6S0NCd2NtVm1hWGdzSUdGYklIQnlaV1pwZUNCZExDQjBjbUZrYVhScGIyNWhiQ3dnWVdSa0lDazdYRzVjZEZ4MGZWeHVYSFI5WEc1Y2JseDBMeThnVW1WMGRYSnVJSFJvWlNCeVpYTjFiSFJwYm1jZ2MyVnlhV0ZzYVhwaGRHbHZibHh1WEhSeVpYUjFjbTRnY3k1cWIybHVLQ0JjSWlaY0lpQXBMbkpsY0d4aFkyVW9JSEl5TUN3Z1hDSXJYQ0lnS1R0Y2JuMDdYRzVjYm1wUmRXVnllUzVtYmk1bGVIUmxibVFvZTF4dVhIUnpaWEpwWVd4cGVtVTZJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQnFVWFZsY25rdWNHRnlZVzBvSUhSb2FYTXVjMlZ5YVdGc2FYcGxRWEp5WVhrb0tTQXBPMXh1WEhSOUxGeHVYSFJ6WlhKcFlXeHBlbVZCY25KaGVUb2dablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE11YldGd0tHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RGeDBMeThnUTJGdUlHRmtaQ0J3Y205d1NHOXZheUJtYjNJZ1hDSmxiR1Z0Wlc1MGMxd2lJSFJ2SUdacGJIUmxjaUJ2Y2lCaFpHUWdabTl5YlNCbGJHVnRaVzUwYzF4dVhIUmNkRngwZG1GeUlHVnNaVzFsYm5SeklEMGdhbEYxWlhKNUxuQnliM0FvSUhSb2FYTXNJRndpWld4bGJXVnVkSE5jSWlBcE8xeHVYSFJjZEZ4MGNtVjBkWEp1SUdWc1pXMWxiblJ6SUQ4Z2FsRjFaWEo1TG0xaGEyVkJjbkpoZVNnZ1pXeGxiV1Z1ZEhNZ0tTQTZJSFJvYVhNN1hHNWNkRngwZlNsY2JseDBYSFF1Wm1sc2RHVnlLR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwZG1GeUlIUjVjR1VnUFNCMGFHbHpMblI1Y0dVN1hHNWNibHgwWEhSY2RDOHZJRlZ6WlNBdWFYTW9JRndpT21ScGMyRmliR1ZrWENJZ0tTQnpieUIwYUdGMElHWnBaV3hrYzJWMFcyUnBjMkZpYkdWa1hTQjNiM0pyYzF4dVhIUmNkRngwY21WMGRYSnVJSFJvYVhNdWJtRnRaU0FtSmlBaGFsRjFaWEo1S0NCMGFHbHpJQ2t1YVhNb0lGd2lPbVJwYzJGaWJHVmtYQ0lnS1NBbUpseHVYSFJjZEZ4MFhIUnljM1ZpYldsMGRHRmliR1V1ZEdWemRDZ2dkR2hwY3k1dWIyUmxUbUZ0WlNBcElDWW1JQ0Z5YzNWaWJXbDBkR1Z5Vkhsd1pYTXVkR1Z6ZENnZ2RIbHdaU0FwSUNZbVhHNWNkRngwWEhSY2RDZ2dkR2hwY3k1amFHVmphMlZrSUh4OElDRnlZMmhsWTJ0aFlteGxWSGx3WlM1MFpYTjBLQ0IwZVhCbElDa2dLVHRjYmx4MFhIUjlLVnh1WEhSY2RDNXRZWEFvWm5WdVkzUnBiMjRvSUdrc0lHVnNaVzBnS1NCN1hHNWNkRngwWEhSMllYSWdkbUZzSUQwZ2FsRjFaWEo1S0NCMGFHbHpJQ2t1ZG1Gc0tDazdYRzVjYmx4MFhIUmNkSEpsZEhWeWJpQjJZV3dnUFQwZ2JuVnNiQ0EvWEc1Y2RGeDBYSFJjZEc1MWJHd2dPbHh1WEhSY2RGeDBYSFJxVVhWbGNua3VhWE5CY25KaGVTZ2dkbUZzSUNrZ1AxeHVYSFJjZEZ4MFhIUmNkR3BSZFdWeWVTNXRZWEFvSUhaaGJDd2dablZ1WTNScGIyNG9JSFpoYkNBcElIdGNibHgwWEhSY2RGeDBYSFJjZEhKbGRIVnliaUI3SUc1aGJXVTZJR1ZzWlcwdWJtRnRaU3dnZG1Gc2RXVTZJSFpoYkM1eVpYQnNZV05sS0NCeVExSk1SaXdnWENKY1hISmNYRzVjSWlBcElIMDdYRzVjZEZ4MFhIUmNkRngwZlNrZ09seHVYSFJjZEZ4MFhIUmNkSHNnYm1GdFpUb2daV3hsYlM1dVlXMWxMQ0IyWVd4MVpUb2dkbUZzTG5KbGNHeGhZMlVvSUhKRFVreEdMQ0JjSWx4Y2NseGNibHdpSUNrZ2ZUdGNibHgwWEhSOUtTNW5aWFFvS1R0Y2JseDBmVnh1ZlNrN1hHNWNibHh1YWxGMVpYSjVMbUZxWVhoVFpYUjBhVzVuY3k1NGFISWdQU0JtZFc1amRHbHZiaWdwSUh0Y2JseDBkSEo1SUh0Y2JseDBYSFJ5WlhSMWNtNGdibVYzSUZoTlRFaDBkSEJTWlhGMVpYTjBLQ2s3WEc1Y2RIMGdZMkYwWTJnb0lHVWdLU0I3ZlZ4dWZUdGNibHh1ZG1GeUlIaG9ja2xrSUQwZ01DeGNibHgwZUdoeVEyRnNiR0poWTJ0eklEMGdlMzBzWEc1Y2RIaG9jbE4xWTJObGMzTlRkR0YwZFhNZ1BTQjdYRzVjZEZ4MEx5OGdabWxzWlNCd2NtOTBiMk52YkNCaGJIZGhlWE1nZVdsbGJHUnpJSE4wWVhSMWN5QmpiMlJsSURBc0lHRnpjM1Z0WlNBeU1EQmNibHgwWEhRd09pQXlNREFzWEc1Y2RGeDBMeThnVTNWd2NHOXlkRG9nU1VVNVhHNWNkRngwTHk4Z0l6RTBOVEE2SUhOdmJXVjBhVzFsY3lCSlJTQnlaWFIxY201eklERXlNak1nZDJobGJpQnBkQ0J6YUc5MWJHUWdZbVVnTWpBMFhHNWNkRngwTVRJeU16b2dNakEwWEc1Y2RIMHNYRzVjZEhob2NsTjFjSEJ2Y25SbFpDQTlJR3BSZFdWeWVTNWhhbUY0VTJWMGRHbHVaM011ZUdoeUtDazdYRzVjYmk4dklGTjFjSEJ2Y25RNklFbEZPVnh1THk4Z1QzQmxiaUJ5WlhGMVpYTjBjeUJ0ZFhOMElHSmxJRzFoYm5WaGJHeDVJR0ZpYjNKMFpXUWdiMjRnZFc1c2IyRmtJQ2dqTlRJNE1DbGNiaTh2SUZObFpTQm9kSFJ3Y3pvdkwzTjFjSEJ2Y25RdWJXbGpjbTl6YjJaMExtTnZiUzlyWWk4eU9EVTJOelEySUdadmNpQnRiM0psSUdsdVptOWNibWxtSUNnZ2QybHVaRzkzTG1GMGRHRmphRVYyWlc1MElDa2dlMXh1WEhSM2FXNWtiM2N1WVhSMFlXTm9SWFpsYm5Rb0lGd2liMjUxYm14dllXUmNJaXdnWm5WdVkzUnBiMjRvS1NCN1hHNWNkRngwWm05eUlDZ2dkbUZ5SUd0bGVTQnBiaUI0YUhKRFlXeHNZbUZqYTNNZ0tTQjdYRzVjZEZ4MFhIUjRhSEpEWVd4c1ltRmphM05iSUd0bGVTQmRLQ2s3WEc1Y2RGeDBmVnh1WEhSOUtUdGNibjFjYmx4dWMzVndjRzl5ZEM1amIzSnpJRDBnSVNGNGFISlRkWEJ3YjNKMFpXUWdKaVlnS0NCY0luZHBkR2hEY21Wa1pXNTBhV0ZzYzF3aUlHbHVJSGhvY2xOMWNIQnZjblJsWkNBcE8xeHVjM1Z3Y0c5eWRDNWhhbUY0SUQwZ2VHaHlVM1Z3Y0c5eWRHVmtJRDBnSVNGNGFISlRkWEJ3YjNKMFpXUTdYRzVjYm1wUmRXVnllUzVoYW1GNFZISmhibk53YjNKMEtHWjFibU4wYVc5dUtDQnZjSFJwYjI1eklDa2dlMXh1WEhSMllYSWdZMkZzYkdKaFkyczdYRzVjYmx4MEx5OGdRM0p2YzNNZ1pHOXRZV2x1SUc5dWJIa2dZV3hzYjNkbFpDQnBaaUJ6ZFhCd2IzSjBaV1FnZEdoeWIzVm5hQ0JZVFV4SWRIUndVbVZ4ZFdWemRGeHVYSFJwWmlBb0lITjFjSEJ2Y25RdVkyOXljeUI4ZkNCNGFISlRkWEJ3YjNKMFpXUWdKaVlnSVc5d2RHbHZibk11WTNKdmMzTkViMjFoYVc0Z0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUh0Y2JseDBYSFJjZEhObGJtUTZJR1oxYm1OMGFXOXVLQ0JvWldGa1pYSnpMQ0JqYjIxd2JHVjBaU0FwSUh0Y2JseDBYSFJjZEZ4MGRtRnlJR2tzWEc1Y2RGeDBYSFJjZEZ4MGVHaHlJRDBnYjNCMGFXOXVjeTU0YUhJb0tTeGNibHgwWEhSY2RGeDBYSFJwWkNBOUlDc3JlR2h5U1dRN1hHNWNibHgwWEhSY2RGeDBlR2h5TG05d1pXNG9JRzl3ZEdsdmJuTXVkSGx3WlN3Z2IzQjBhVzl1Y3k1MWNtd3NJRzl3ZEdsdmJuTXVZWE41Ym1Nc0lHOXdkR2x2Ym5NdWRYTmxjbTVoYldVc0lHOXdkR2x2Ym5NdWNHRnpjM2R2Y21RZ0tUdGNibHh1WEhSY2RGeDBYSFF2THlCQmNIQnNlU0JqZFhOMGIyMGdabWxsYkdSeklHbG1JSEJ5YjNacFpHVmtYRzVjZEZ4MFhIUmNkR2xtSUNnZ2IzQjBhVzl1Y3k1NGFISkdhV1ZzWkhNZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWm05eUlDZ2dhU0JwYmlCdmNIUnBiMjV6TG5ob2NrWnBaV3hrY3lBcElIdGNibHgwWEhSY2RGeDBYSFJjZEhob2Nsc2dhU0JkSUQwZ2IzQjBhVzl1Y3k1NGFISkdhV1ZzWkhOYklHa2dYVHRjYmx4MFhIUmNkRngwWEhSOVhHNWNkRngwWEhSY2RIMWNibHh1WEhSY2RGeDBYSFF2THlCUGRtVnljbWxrWlNCdGFXMWxJSFI1Y0dVZ2FXWWdibVZsWkdWa1hHNWNkRngwWEhSY2RHbG1JQ2dnYjNCMGFXOXVjeTV0YVcxbFZIbHdaU0FtSmlCNGFISXViM1psY25KcFpHVk5hVzFsVkhsd1pTQXBJSHRjYmx4MFhIUmNkRngwWEhSNGFISXViM1psY25KcFpHVk5hVzFsVkhsd1pTZ2diM0IwYVc5dWN5NXRhVzFsVkhsd1pTQXBPMXh1WEhSY2RGeDBYSFI5WEc1Y2JseDBYSFJjZEZ4MEx5OGdXQzFTWlhGMVpYTjBaV1F0VjJsMGFDQm9aV0ZrWlhKY2JseDBYSFJjZEZ4MEx5OGdSbTl5SUdOeWIzTnpMV1J2YldGcGJpQnlaWEYxWlhOMGN5d2djMlZsYVc1bklHRnpJR052Ym1ScGRHbHZibk1nWm05eUlHRWdjSEpsWm14cFoyaDBJR0Z5WlZ4dVhIUmNkRngwWEhRdkx5QmhhMmx1SUhSdklHRWdhbWxuYzJGM0lIQjFlbnBzWlN3Z2QyVWdjMmx0Y0d4NUlHNWxkbVZ5SUhObGRDQnBkQ0IwYnlCaVpTQnpkWEpsTGx4dVhIUmNkRngwWEhRdkx5QW9hWFFnWTJGdUlHRnNkMkY1Y3lCaVpTQnpaWFFnYjI0Z1lTQndaWEl0Y21WeGRXVnpkQ0JpWVhOcGN5QnZjaUJsZG1WdUlIVnphVzVuSUdGcVlYaFRaWFIxY0NsY2JseDBYSFJjZEZ4MEx5OGdSbTl5SUhOaGJXVXRaRzl0WVdsdUlISmxjWFZsYzNSekxDQjNiMjRuZENCamFHRnVaMlVnYUdWaFpHVnlJR2xtSUdGc2NtVmhaSGtnY0hKdmRtbGtaV1F1WEc1Y2RGeDBYSFJjZEdsbUlDZ2dJVzl3ZEdsdmJuTXVZM0p2YzNORWIyMWhhVzRnSmlZZ0lXaGxZV1JsY25OYlhDSllMVkpsY1hWbGMzUmxaQzFYYVhSb1hDSmRJQ2tnZTF4dVhIUmNkRngwWEhSY2RHaGxZV1JsY25OYlhDSllMVkpsY1hWbGMzUmxaQzFYYVhSb1hDSmRJRDBnWENKWVRVeElkSFJ3VW1WeGRXVnpkRndpTzF4dVhIUmNkRngwWEhSOVhHNWNibHgwWEhSY2RGeDBMeThnVTJWMElHaGxZV1JsY25OY2JseDBYSFJjZEZ4MFptOXlJQ2dnYVNCcGJpQm9aV0ZrWlhKeklDa2dlMXh1WEhSY2RGeDBYSFJjZEhob2NpNXpaWFJTWlhGMVpYTjBTR1ZoWkdWeUtDQnBMQ0JvWldGa1pYSnpXeUJwSUYwZ0tUdGNibHgwWEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFJjZEM4dklFTmhiR3hpWVdOclhHNWNkRngwWEhSY2RHTmhiR3hpWVdOcklEMGdablZ1WTNScGIyNG9JSFI1Y0dVZ0tTQjdYRzVjZEZ4MFhIUmNkRngwY21WMGRYSnVJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBhV1lnS0NCallXeHNZbUZqYXlBcElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MFpHVnNaWFJsSUhob2NrTmhiR3hpWVdOcmMxc2dhV1FnWFR0Y2JseDBYSFJjZEZ4MFhIUmNkRngwWTJGc2JHSmhZMnNnUFNCNGFISXViMjVzYjJGa0lEMGdlR2h5TG05dVpYSnliM0lnUFNCdWRXeHNPMXh1WEc1Y2RGeDBYSFJjZEZ4MFhIUmNkR2xtSUNnZ2RIbHdaU0E5UFQwZ1hDSmhZbTl5ZEZ3aUlDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkSGhvY2k1aFltOXlkQ2dwTzF4dVhIUmNkRngwWEhSY2RGeDBYSFI5SUdWc2MyVWdhV1lnS0NCMGVYQmxJRDA5UFNCY0ltVnljbTl5WENJZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBZMjl0Y0d4bGRHVW9YRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBYSFF2THlCbWFXeGxPaUJ3Y205MGIyTnZiQ0JoYkhkaGVYTWdlV2xsYkdSeklITjBZWFIxY3lBd095QnpaV1VnSXpnMk1EVXNJQ014TkRJd04xeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RGeDBlR2h5TG5OMFlYUjFjeXhjYmx4MFhIUmNkRngwWEhSY2RGeDBYSFJjZEhob2NpNXpkR0YwZFhOVVpYaDBYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBLVHRjYmx4MFhIUmNkRngwWEhSY2RGeDBmU0JsYkhObElIdGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUmpiMjF3YkdWMFpTaGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUmNkSGhvY2xOMVkyTmxjM05UZEdGMGRYTmJJSGhvY2k1emRHRjBkWE1nWFNCOGZDQjRhSEl1YzNSaGRIVnpMRnh1WEhSY2RGeDBYSFJjZEZ4MFhIUmNkRngwZUdoeUxuTjBZWFIxYzFSbGVIUXNYRzVjZEZ4MFhIUmNkRngwWEhSY2RGeDBYSFF2THlCVGRYQndiM0owT2lCSlJUbGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUmNkQzh2SUVGalkyVnpjMmx1WnlCaWFXNWhjbmt0WkdGMFlTQnlaWE53YjI1elpWUmxlSFFnZEdoeWIzZHpJR0Z1SUdWNFkyVndkR2x2Ymx4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEZ4MEx5OGdLQ014TVRReU5pbGNibHgwWEhSY2RGeDBYSFJjZEZ4MFhIUmNkSFI1Y0dWdlppQjRhSEl1Y21WemNHOXVjMlZVWlhoMEl
14938EMDlQU0JjSW5OMGNtbHVaMXdpSUQ4Z2UxeHVYSFJjZEZ4MFhIUmNkRngwWEhSY2RGeDBYSFIwWlhoME9pQjRhSEl1Y21WemNHOXVjMlZVWlhoMFhHNWNkRngwWEhSY2RGeDBYSFJjZEZ4MFhIUjlJRG9nZFc1a1pXWnBibVZrTEZ4dVhIUmNkRngwWEhSY2RGeDBYSFJjZEZ4MGVHaHlMbWRsZEVGc2JGSmxjM0J2Ym5ObFNHVmhaR1Z5Y3lncFhHNWNkRngwWEhSY2RGeDBYSFJjZEZ4MEtUdGNibHgwWEhSY2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkRngwZlZ4dVhIUmNkRngwWEhSY2RIMDdYRzVjZEZ4MFhIUmNkSDA3WEc1Y2JseDBYSFJjZEZ4MEx5OGdUR2x6ZEdWdUlIUnZJR1YyWlc1MGMxeHVYSFJjZEZ4MFhIUjRhSEl1YjI1c2IyRmtJRDBnWTJGc2JHSmhZMnNvS1R0Y2JseDBYSFJjZEZ4MGVHaHlMbTl1WlhKeWIzSWdQU0JqWVd4c1ltRmpheWhjSW1WeWNtOXlYQ0lwTzF4dVhHNWNkRngwWEhSY2RDOHZJRU55WldGMFpTQjBhR1VnWVdKdmNuUWdZMkZzYkdKaFkydGNibHgwWEhSY2RGeDBZMkZzYkdKaFkyc2dQU0I0YUhKRFlXeHNZbUZqYTNOYklHbGtJRjBnUFNCallXeHNZbUZqYXloY0ltRmliM0owWENJcE8xeHVYRzVjZEZ4MFhIUmNkSFJ5ZVNCN1hHNWNkRngwWEhSY2RGeDBMeThnUkc4Z2MyVnVaQ0IwYUdVZ2NtVnhkV1Z6ZENBb2RHaHBjeUJ0WVhrZ2NtRnBjMlVnWVc0Z1pYaGpaWEIwYVc5dUtWeHVYSFJjZEZ4MFhIUmNkSGhvY2k1elpXNWtLQ0J2Y0hScGIyNXpMbWhoYzBOdmJuUmxiblFnSmlZZ2IzQjBhVzl1Y3k1a1lYUmhJSHg4SUc1MWJHd2dLVHRjYmx4MFhIUmNkRngwZlNCallYUmphQ0FvSUdVZ0tTQjdYRzVjZEZ4MFhIUmNkRngwTHk4Z0l6RTBOamd6T2lCUGJteDVJSEpsZEdoeWIzY2dhV1lnZEdocGN5Qm9ZWE51SjNRZ1ltVmxiaUJ1YjNScFptbGxaQ0JoY3lCaGJpQmxjbkp2Y2lCNVpYUmNibHgwWEhSY2RGeDBYSFJwWmlBb0lHTmhiR3hpWVdOcklDa2dlMXh1WEhSY2RGeDBYSFJjZEZ4MGRHaHliM2NnWlR0Y2JseDBYSFJjZEZ4MFhIUjlYRzVjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkSDBzWEc1Y2JseDBYSFJjZEdGaWIzSjBPaUJtZFc1amRHbHZiaWdwSUh0Y2JseDBYSFJjZEZ4MGFXWWdLQ0JqWVd4c1ltRmpheUFwSUh0Y2JseDBYSFJjZEZ4MFhIUmpZV3hzWW1GamF5Z3BPMXh1WEhSY2RGeDBYSFI5WEc1Y2RGeDBYSFI5WEc1Y2RGeDBmVHRjYmx4MGZWeHVmU2s3WEc1Y2JseHVYRzVjYmk4dklFbHVjM1JoYkd3Z2MyTnlhWEIwSUdSaGRHRlVlWEJsWEc1cVVYVmxjbmt1WVdwaGVGTmxkSFZ3S0h0Y2JseDBZV05qWlhCMGN6b2dlMXh1WEhSY2RITmpjbWx3ZERvZ1hDSjBaWGgwTDJwaGRtRnpZM0pwY0hRc0lHRndjR3hwWTJGMGFXOXVMMnBoZG1GelkzSnBjSFFzSUdGd2NHeHBZMkYwYVc5dUwyVmpiV0Z6WTNKcGNIUXNJR0Z3Y0d4cFkyRjBhVzl1TDNndFpXTnRZWE5qY21sd2RGd2lYRzVjZEgwc1hHNWNkR052Ym5SbGJuUnpPaUI3WEc1Y2RGeDBjMk55YVhCME9pQXZLRDg2YW1GMllYeGxZMjFoS1hOamNtbHdkQzljYmx4MGZTeGNibHgwWTI5dWRtVnlkR1Z5Y3pvZ2UxeHVYSFJjZEZ3aWRHVjRkQ0J6WTNKcGNIUmNJam9nWm5WdVkzUnBiMjRvSUhSbGVIUWdLU0I3WEc1Y2RGeDBYSFJxVVhWbGNua3VaMnh2WW1Gc1JYWmhiQ2dnZEdWNGRDQXBPMXh1WEhSY2RGeDBjbVYwZFhKdUlIUmxlSFE3WEc1Y2RGeDBmVnh1WEhSOVhHNTlLVHRjYmx4dUx5OGdTR0Z1Wkd4bElHTmhZMmhsSjNNZ2MzQmxZMmxoYkNCallYTmxJR0Z1WkNCamNtOXpjMFJ2YldGcGJseHVhbEYxWlhKNUxtRnFZWGhRY21WbWFXeDBaWElvSUZ3aWMyTnlhWEIwWENJc0lHWjFibU4wYVc5dUtDQnpJQ2tnZTF4dVhIUnBaaUFvSUhNdVkyRmphR1VnUFQwOUlIVnVaR1ZtYVc1bFpDQXBJSHRjYmx4MFhIUnpMbU5oWTJobElEMGdabUZzYzJVN1hHNWNkSDFjYmx4MGFXWWdLQ0J6TG1OeWIzTnpSRzl0WVdsdUlDa2dlMXh1WEhSY2RITXVkSGx3WlNBOUlGd2lSMFZVWENJN1hHNWNkSDFjYm4wcE8xeHVYRzR2THlCQ2FXNWtJSE5qY21sd2RDQjBZV2NnYUdGamF5QjBjbUZ1YzNCdmNuUmNibXBSZFdWeWVTNWhhbUY0VkhKaGJuTndiM0owS0NCY0luTmpjbWx3ZEZ3aUxDQm1kVzVqZEdsdmJpZ2djeUFwSUh0Y2JseDBMeThnVkdocGN5QjBjbUZ1YzNCdmNuUWdiMjVzZVNCa1pXRnNjeUIzYVhSb0lHTnliM056SUdSdmJXRnBiaUJ5WlhGMVpYTjBjMXh1WEhScFppQW9JSE11WTNKdmMzTkViMjFoYVc0Z0tTQjdYRzVjZEZ4MGRtRnlJSE5qY21sd2RDd2dZMkZzYkdKaFkyczdYRzVjZEZ4MGNtVjBkWEp1SUh0Y2JseDBYSFJjZEhObGJtUTZJR1oxYm1OMGFXOXVLQ0JmTENCamIyMXdiR1YwWlNBcElIdGNibHgwWEhSY2RGeDBjMk55YVhCMElEMGdhbEYxWlhKNUtGd2lQSE5qY21sd2RENWNJaWt1Y0hKdmNDaDdYRzVjZEZ4MFhIUmNkRngwWVhONWJtTTZJSFJ5ZFdVc1hHNWNkRngwWEhSY2RGeDBZMmhoY25ObGREb2djeTV6WTNKcGNIUkRhR0Z5YzJWMExGeHVYSFJjZEZ4MFhIUmNkSE55WXpvZ2N5NTFjbXhjYmx4MFhIUmNkRngwZlNrdWIyNG9YRzVjZEZ4MFhIUmNkRngwWENKc2IyRmtJR1Z5Y205eVhDSXNYRzVjZEZ4MFhIUmNkRngwWTJGc2JHSmhZMnNnUFNCbWRXNWpkR2x2YmlnZ1pYWjBJQ2tnZTF4dVhIUmNkRngwWEhSY2RGeDBjMk55YVhCMExuSmxiVzkyWlNncE8xeHVYSFJjZEZ4MFhIUmNkRngwWTJGc2JHSmhZMnNnUFNCdWRXeHNPMXh1WEhSY2RGeDBYSFJjZEZ4MGFXWWdLQ0JsZG5RZ0tTQjdYRzVjZEZ4MFhIUmNkRngwWEhSY2RHTnZiWEJzWlhSbEtDQmxkblF1ZEhsd1pTQTlQVDBnWENKbGNuSnZjbHdpSUQ4Z05EQTBJRG9nTWpBd0xDQmxkblF1ZEhsd1pTQXBPMXh1WEhSY2RGeDBYSFJjZEZ4MGZWeHVYSFJjZEZ4MFhIUmNkSDFjYmx4MFhIUmNkRngwS1R0Y2JseDBYSFJjZEZ4MFpHOWpkVzFsYm5RdWFHVmhaQzVoY0hCbGJtUkRhR2xzWkNnZ2MyTnlhWEIwV3lBd0lGMGdLVHRjYmx4MFhIUmNkSDBzWEc1Y2RGeDBYSFJoWW05eWREb2dablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBYSFJjZEdsbUlDZ2dZMkZzYkdKaFkyc2dLU0I3WEc1Y2RGeDBYSFJjZEZ4MFkyRnNiR0poWTJzb0tUdGNibHgwWEhSY2RGeDBmVnh1WEhSY2RGeDBmVnh1WEhSY2RIMDdYRzVjZEgxY2JuMHBPMXh1WEc1Y2JseHVYRzUyWVhJZ2IyeGtRMkZzYkdKaFkydHpJRDBnVzEwc1hHNWNkSEpxYzI5dWNDQTlJQzhvUFNsY1hEOG9QejBtZkNRcGZGeGNQMXhjUHk4N1hHNWNiaTh2SUVSbFptRjFiSFFnYW5OdmJuQWdjMlYwZEdsdVozTmNibXBSZFdWeWVTNWhhbUY0VTJWMGRYQW9lMXh1WEhScWMyOXVjRG9nWENKall
14938XeHNZbUZqYTF3aUxGeHVYSFJxYzI5dWNFTmhiR3hpWVdOck9pQm1kVzVqZEdsdmJpZ3BJSHRjYmx4MFhIUjJZWElnWTJGc2JHSmhZMnNnUFNCdmJHUkRZV3hzWW1GamEzTXVjRzl3S0NrZ2ZId2dLQ0JxVVhWbGNua3VaWGh3WVc1a2J5QXJJRndpWDF3aUlDc2dLQ0J1YjI1alpTc3JJQ2tnS1R0Y2JseDBYSFIwYUdseld5QmpZV3hzWW1GamF5QmRJRDBnZEhKMVpUdGNibHgwWEhSeVpYUjFjbTRnWTJGc2JHSmhZMnM3WEc1Y2RIMWNibjBwTzF4dVhHNHZMeUJFWlhSbFkzUXNJRzV2Y20xaGJHbDZaU0J2Y0hScGIyNXpJR0Z1WkNCcGJuTjBZV3hzSUdOaGJHeGlZV05yY3lCbWIzSWdhbk52Ym5BZ2NtVnhkV1Z6ZEhOY2JtcFJkV1Z5ZVM1aGFtRjRVSEpsWm1sc2RHVnlLQ0JjSW1wemIyNGdhbk52Ym5CY0lpd2dablZ1WTNScGIyNG9JSE1zSUc5eWFXZHBibUZzVTJWMGRHbHVaM01zSUdweFdFaFNJQ2tnZTF4dVhHNWNkSFpoY2lCallXeHNZbUZqYTA1aGJXVXNJRzkyWlhKM2NtbDBkR1Z1TENCeVpYTndiMjV6WlVOdmJuUmhhVzVsY2l4Y2JseDBYSFJxYzI5dVVISnZjQ0E5SUhNdWFuTnZibkFnSVQwOUlHWmhiSE5sSUNZbUlDZ2djbXB6YjI1d0xuUmxjM1FvSUhNdWRYSnNJQ2tnUDF4dVhIUmNkRngwWENKMWNteGNJaUE2WEc1Y2RGeDBYSFIwZVhCbGIyWWdjeTVrWVhSaElEMDlQU0JjSW5OMGNtbHVaMXdpSUNZbUlDRW9JSE11WTI5dWRHVnVkRlI1Y0dVZ2ZId2dYQ0pjSWlBcExtbHVaR1Y0VDJZb1hDSmhjSEJzYVdOaGRHbHZiaTk0TFhkM2R5MW1iM0p0TFhWeWJHVnVZMjlrWldSY0lpa2dKaVlnY21wemIyNXdMblJsYzNRb0lITXVaR0YwWVNBcElDWW1JRndpWkdGMFlWd2lYRzVjZEZ4MEtUdGNibHh1WEhRdkx5QklZVzVrYkdVZ2FXWm1JSFJvWlNCbGVIQmxZM1JsWkNCa1lYUmhJSFI1Y0dVZ2FYTWdYQ0pxYzI5dWNGd2lJRzl5SUhkbElHaGhkbVVnWVNCd1lYSmhiV1YwWlhJZ2RHOGdjMlYwWEc1Y2RHbG1JQ2dnYW5OdmJsQnliM0FnZkh3Z2N5NWtZWFJoVkhsd1pYTmJJREFnWFNBOVBUMGdYQ0pxYzI5dWNGd2lJQ2tnZTF4dVhHNWNkRngwTHk4Z1IyVjBJR05oYkd4aVlXTnJJRzVoYldVc0lISmxiV1Z0WW1WeWFXNW5JSEJ5WldWNGFYTjBhVzVuSUhaaGJIVmxJR0Z6YzI5amFXRjBaV1FnZDJsMGFDQnBkRnh1WEhSY2RHTmhiR3hpWVdOclRtRnRaU0E5SUhNdWFuTnZibkJEWVd4c1ltRmpheUE5SUdwUmRXVnllUzVwYzBaMWJtTjBhVzl1S0NCekxtcHpiMjV3UTJGc2JHSmhZMnNnS1NBL1hHNWNkRngwWEhSekxtcHpiMjV3UTJGc2JHSmhZMnNvS1NBNlhHNWNkRngwWEhSekxtcHpiMjV3UTJGc2JHSmhZMnM3WEc1Y2JseDBYSFF2THlCSmJuTmxjblFnWTJGc2JHSmhZMnNnYVc1MGJ5QjFjbXdnYjNJZ1ptOXliU0JrWVhSaFhHNWNkRngwYVdZZ0tDQnFjMjl1VUhKdmNDQXBJSHRjYmx4MFhIUmNkSE5iSUdwemIyNVFjbTl3SUYwZ1BTQnpXeUJxYzI5dVVISnZjQ0JkTG5KbGNHeGhZMlVvSUhKcWMyOXVjQ3dnWENJa01Wd2lJQ3NnWTJGc2JHSmhZMnRPWVcxbElDazdYRzVjZEZ4MGZTQmxiSE5sSUdsbUlDZ2djeTVxYzI5dWNDQWhQVDBnWm1Gc2MyVWdLU0I3WEc1Y2RGeDBYSFJ6TG5WeWJDQXJQU0FvSUhKeGRXVnllUzUwWlhOMEtDQnpMblZ5YkNBcElEOGdYQ0ltWENJZ09pQmNJajljSWlBcElDc2djeTVxYzI5dWNDQXJJRndpUFZ3aUlDc2dZMkZzYkdKaFkydE9ZVzFsTzF4dVhIUmNkSDFjYmx4dVhIUmNkQzh2SUZWelpTQmtZWFJoSUdOdmJuWmxjblJsY2lCMGJ5QnlaWFJ5YVdWMlpTQnFjMjl1SUdGbWRHVnlJSE5qY21sd2RDQmxlR1ZqZFhScGIyNWNibHgwWEhSekxtTnZiblpsY25SbGNuTmJYQ0p6WTNKcGNIUWdhbk52Ymx3aVhTQTlJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkRngwYVdZZ0tDQWhjbVZ6Y0c5dWMyVkRiMjUwWVdsdVpYSWdLU0I3WEc1Y2RGeDBYSFJjZEdwUmRXVnllUzVsY25KdmNpZ2dZMkZzYkdKaFkydE9ZVzFsSUNzZ1hDSWdkMkZ6SUc1dmRDQmpZV3hzWldSY0lpQXBPMXh1WEhSY2RGeDBmVnh1WEhSY2RGeDBjbVYwZFhKdUlISmxjM0J2Ym5ObFEyOXVkR0ZwYm1WeVd5QXdJRjA3WEc1Y2RGeDBmVHRjYmx4dVhIUmNkQzh2SUdadmNtTmxJR3B6YjI0Z1pHRjBZVlI1Y0dWY2JseDBYSFJ6TG1SaGRHRlVlWEJsYzFzZ01DQmRJRDBnWENKcWMyOXVYQ0k3WEc1Y2JseDBYSFF2THlCSmJuTjBZV3hzSUdOaGJHeGlZV05yWEc1Y2RGeDBiM1psY25keWFYUjBaVzRnUFNCM2FXNWtiM2RiSUdOaGJHeGlZV05yVG1GdFpTQmRPMXh1WEhSY2RIZHBibVJ2ZDFzZ1kyRnNiR0poWTJ0T1lXMWxJRjBnUFNCbWRXNWpkR2x2YmlncElIdGNibHgwWEhSY2RISmxjM0J2Ym5ObFEyOXVkR0ZwYm1WeUlEMGdZWEpuZFcxbGJuUnpPMXh1WEhSY2RIMDdYRzVjYmx4MFhIUXZMeUJEYkdWaGJpMTFjQ0JtZFc1amRHbHZiaUFvWm1seVpYTWdZV1owWlhJZ1kyOXVkbVZ5ZEdWeWN5bGNibHgwWEhScWNWaElVaTVoYkhkaGVYTW9ablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBYSFF2THlCU1pYTjBiM0psSUhCeVpXVjRhWE4wYVc1bklIWmhiSFZsWEc1Y2RGeDBYSFIzYVc1a2IzZGJJR05oYkd4aVlXTnJUbUZ0WlNCZElEMGdiM1psY25keWFYUjBaVzQ3WEc1Y2JseDBYSFJjZEM4dklGTmhkbVVnWW1GamF5QmhjeUJtY21WbFhHNWNkRngwWEhScFppQW9JSE5iSUdOaGJHeGlZV05yVG1GdFpTQmRJQ2tnZTF4dVhIUmNkRngwWEhRdkx5QnRZV3RsSUhOMWNtVWdkR2hoZENCeVpTMTFjMmx1WnlCMGFHVWdiM0IwYVc5dWN5QmtiMlZ6YmlkMElITmpjbVYzSUhSb2FXNW5jeUJoY205MWJtUmNibHgwWEhSY2RGeDBjeTVxYzI5dWNFTmhiR3hpWVdOcklEMGdiM0pwWjJsdVlXeFRaWFIwYVc1bmN5NXFjMjl1Y0VOaGJHeGlZV05yTzF4dVhHNWNkRngwWEhSY2RDOHZJSE5oZG1VZ2RHaGxJR05oYkd4aVlXTnJJRzVoYldVZ1ptOXlJR1oxZEhWeVpTQjFjMlZjYmx4MFhIUmNkRngwYjJ4a1EyRnNiR0poWTJ0ekxuQjFjMmdvSUdOaGJHeGlZV05yVG1GdFpTQXBPMXh1WEhSY2RGeDBmVnh1WEc1Y2RGeDBYSFF2THlCRFlXeHNJR2xtSUdsMElIZGhjeUJoSUdaMWJtTjBhVzl1SUdGdVpDQjNaU0JvWVhabElHRWdjbVZ6Y0c5dWMyVmNibHgwWEhSY2RHbG1JQ2dnY21WemNHOXVjMlZEYjI1MFlXbHVaWElnSmlZZ2FsRjFaWEo1TG1selJuVnVZM1JwYjI0b0lHOTJaWEozY21sMGRHVnVJQ2tnS1NCN1hHNWNkRngwWEhSY2RHOTJaWEozY21sMGRHVnVLQ0J5WlhOd2IyNXpaVU52Ym5SaGFXNWxjbHNnTUNCZElDazdYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkSEpsYzNCdmJuTmxRMjl1ZEdGcGJtVnlJRDBnYjNabGNuZHlhWFIwWlc0Z1BTQjFibVJsWm1sdVpXUTdYRzVjZEZ4MGZTazdYRzVjYmx4MFhIUXZMeUJFWld4bFoyRjBaU0IwYnlCelkzSnBjSFJjYmx4MFhIUnlaWFIxY200Z1hDSnpZM0pwY0hSY0lqdGNibHgwZlZ4dWZTazdYRzVjYmx4dVhHNWNiaTh2SUdSaGRHRTZJSE4wY21sdVp5QnZaaUJvZEcxc1hHNHZMeUJqYjI1MFpYaDBJQ2h2Y0hScGIyNWhiQ2s2SUVsbUlITndaV05wWm1sbFpDd2dkR2hsSUdaeVlXZHRaVzUwSUhkcGJHd2dZbVVnWTNKbFlYUmxaQ0JwYmlCMGFHbHpJR0
1493852Ym5SbGVIUXNJR1JsWm1GMWJIUnpJSFJ2SUdSdlkzVnRaVzUwWEc0dkx5QnJaV1Z3VTJOeWFYQjBjeUFvYjNCMGFXOXVZV3dwT2lCSlppQjBjblZsTENCM2FXeHNJR2x1WTJ4MVpHVWdjMk55YVhCMGN5QndZWE56WldRZ2FXNGdkR2hsSUdoMGJXd2djM1J5YVc1blhHNXFVWFZsY25rdWNHRnljMlZJVkUxTUlEMGdablZ1WTNScGIyNG9JR1JoZEdFc0lHTnZiblJsZUhRc0lHdGxaWEJUWTNKcGNIUnpJQ2tnZTF4dVhIUnBaaUFvSUNGa1lYUmhJSHg4SUhSNWNHVnZaaUJrWVhSaElDRTlQU0JjSW5OMGNtbHVaMXdpSUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJ1ZFd4c08xeHVYSFI5WEc1Y2RHbG1JQ2dnZEhsd1pXOW1JR052Ym5SbGVIUWdQVDA5SUZ3aVltOXZiR1ZoYmx3aUlDa2dlMXh1WEhSY2RHdGxaWEJUWTNKcGNIUnpJRDBnWTI5dWRHVjRkRHRjYmx4MFhIUmpiMjUwWlhoMElEMGdabUZzYzJVN1hHNWNkSDFjYmx4MFkyOXVkR1Y0ZENBOUlHTnZiblJsZUhRZ2ZId2daRzlqZFcxbGJuUTdYRzVjYmx4MGRtRnlJSEJoY25ObFpDQTlJSEp6YVc1bmJHVlVZV2N1WlhobFl5Z2daR0YwWVNBcExGeHVYSFJjZEhOamNtbHdkSE1nUFNBaGEyVmxjRk5qY21sd2RITWdKaVlnVzEwN1hHNWNibHgwTHk4Z1UybHVaMnhsSUhSaFoxeHVYSFJwWmlBb0lIQmhjbk5sWkNBcElIdGNibHgwWEhSeVpYUjFjbTRnV3lCamIyNTBaWGgwTG1OeVpXRjBaVVZzWlcxbGJuUW9JSEJoY25ObFpGc3hYU0FwSUYwN1hHNWNkSDFjYmx4dVhIUndZWEp6WldRZ1BTQnFVWFZsY25rdVluVnBiR1JHY21GbmJXVnVkQ2dnV3lCa1lYUmhJRjBzSUdOdmJuUmxlSFFzSUhOamNtbHdkSE1nS1R0Y2JseHVYSFJwWmlBb0lITmpjbWx3ZEhNZ0ppWWdjMk55YVhCMGN5NXNaVzVuZEdnZ0tTQjdYRzVjZEZ4MGFsRjFaWEo1S0NCelkzSnBjSFJ6SUNrdWNtVnRiM1psS0NrN1hHNWNkSDFjYmx4dVhIUnlaWFIxY200Z2FsRjFaWEo1TG0xbGNtZGxLQ0JiWFN3Z2NHRnljMlZrTG1Ob2FXeGtUbTlrWlhNZ0tUdGNibjA3WEc1Y2JseHVMeThnUzJWbGNDQmhJR052Y0hrZ2IyWWdkR2hsSUc5c1pDQnNiMkZrSUcxbGRHaHZaRnh1ZG1GeUlGOXNiMkZrSUQwZ2FsRjFaWEo1TG1adUxteHZZV1E3WEc1Y2JpOHFLbHh1SUNvZ1RHOWhaQ0JoSUhWeWJDQnBiblJ2SUdFZ2NHRm5aVnh1SUNvdlhHNXFVWFZsY25rdVptNHViRzloWkNBOUlHWjFibU4wYVc5dUtDQjFjbXdzSUhCaGNtRnRjeXdnWTJGc2JHSmhZMnNnS1NCN1hHNWNkR2xtSUNnZ2RIbHdaVzltSUhWeWJDQWhQVDBnWENKemRISnBibWRjSWlBbUppQmZiRzloWkNBcElIdGNibHgwWEhSeVpYUjFjbTRnWDJ4dllXUXVZWEJ3Ykhrb0lIUm9hWE1zSUdGeVozVnRaVzUwY3lBcE8xeHVYSFI5WEc1Y2JseDBkbUZ5SUhObGJHVmpkRzl5TENCMGVYQmxMQ0J5WlhOd2IyNXpaU3hjYmx4MFhIUnpaV3htSUQwZ2RHaHBjeXhjYmx4MFhIUnZabVlnUFNCMWNtd3VhVzVrWlhoUFppaGNJaUJjSWlrN1hHNWNibHgwYVdZZ0tDQnZabVlnUGowZ01DQXBJSHRjYmx4MFhIUnpaV3hsWTNSdmNpQTlJR3BSZFdWeWVTNTBjbWx0S0NCMWNtd3VjMnhwWTJVb0lHOW1aaUFwSUNrN1hHNWNkRngwZFhKc0lEMGdkWEpzTG5Oc2FXTmxLQ0F3TENCdlptWWdLVHRjYmx4MGZWeHVYRzVjZEM4dklFbG1JR2wwSjNNZ1lTQm1kVzVqZEdsdmJseHVYSFJwWmlBb0lHcFJkV1Z5ZVM1cGMwWjFibU4wYVc5dUtDQndZWEpoYlhNZ0tTQXBJSHRjYmx4dVhIUmNkQzh2SUZkbElHRnpjM1Z0WlNCMGFHRjBJR2wwSjNNZ2RHaGxJR05oYkd4aVlXTnJYRzVjZEZ4MFkyRnNiR0poWTJzZ1BTQndZWEpoYlhNN1hHNWNkRngwY0dGeVlXMXpJRDBnZFc1a1pXWnBibVZrTzF4dVhHNWNkQzh2SUU5MGFHVnlkMmx6WlN3Z1luVnBiR1FnWVNCd1lYSmhiU0J6ZEhKcGJtZGNibHgwZlNCbGJITmxJR2xtSUNnZ2NHRnlZVzF6SUNZbUlIUjVjR1Z2WmlCd1lYSmhiWE1nUFQwOUlGd2liMkpxWldOMFhDSWdLU0I3WEc1Y2RGeDBkSGx3WlNBOUlGd2lVRTlUVkZ3aU8xeHVYSFI5WEc1Y2JseDBMeThnU1dZZ2QyVWdhR0YyWlNCbGJHVnRaVzUwY3lCMGJ5QnRiMlJwWm5rc0lHMWhhMlVnZEdobElISmxjWFZsYzNSY2JseDBhV1lnS0NCelpXeG1MbXhsYm1kMGFDQStJREFnS1NCN1hHNWNkRngwYWxGMVpYSjVMbUZxWVhnb2UxeHVYSFJjZEZ4MGRYSnNPaUIxY213c1hHNWNibHgwWEhSY2RDOHZJR2xtSUZ3aWRIbHdaVndpSUhaaGNtbGhZbXhsSUdseklIVnVaR1ZtYVc1bFpDd2dkR2hsYmlCY0lrZEZWRndpSUcxbGRHaHZaQ0IzYVd4c0lHSmxJSFZ6WldSY2JseDBYSFJjZEhSNWNHVTZJSFI1Y0dVc1hHNWNkRngwWEhSa1lYUmhWSGx3WlRvZ1hDSm9kRzFzWENJc1hHNWNkRngwWEhSa1lYUmhPaUJ3WVhKaGJYTmNibHgwWEhSOUtTNWtiMjVsS0daMWJtTjBhVzl1S0NCeVpYTndiMjV6WlZSbGVIUWdLU0I3WEc1Y2JseDBYSFJjZEM4dklGTmhkbVVnY21WemNHOXVjMlVnWm05eUlIVnpaU0JwYmlCamIyMXdiR1YwWlNCallXeHNZbUZqYTF4dVhIUmNkRngwY21WemNHOXVjMlVnUFNCaGNtZDFiV1Z1ZEhNN1hHNWNibHgwWEhSY2RITmxiR1l1YUhSdGJDZ2djMlZzWldOMGIzSWdQMXh1WEc1Y2RGeDBYSFJjZEM4dklFbG1JR0VnYzJWc1pXTjBiM0lnZDJGeklITndaV05wWm1sbFpDd2diRzlqWVhSbElIUm9aU0J5YVdkb2RDQmxiR1Z0Wlc1MGN5QnBiaUJoSUdSMWJXMTVJR1JwZGx4dVhIUmNkRngwWEhRdkx5QkZlR05zZFdSbElITmpjbWx3ZEhNZ2RHOGdZWFp2YVdRZ1NVVWdKMUJsY20xcGMzTnBiMjRnUkdWdWFXVmtKeUJsY25KdmNuTmNibHgwWEhSY2RGeDBhbEYxWlhKNUtGd2lQR1JwZGo1Y0lpa3VZWEJ3Wlc1a0tDQnFVWFZsY25rdWNHRnljMlZJVkUxTUtDQnlaWE53YjI1elpWUmxlSFFnS1NBcExtWnBibVFvSUhObGJHVmpkRzl5SUNrZ09seHVYRzVjZEZ4MFhIUmNkQzh2SUU5MGFHVnlkMmx6WlNCMWMyVWdkR2hsSUdaMWJHd2djbVZ6ZFd4MFhHNWNkRngwWEhSY2RISmxjM0J2Ym5ObFZHVjRkQ0FwTzF4dVhHNWNkRngwZlNrdVkyOXRjR3hsZEdVb0lHTmhiR3hpWVdOcklDWW1JR1oxYm1OMGFXOXVLQ0JxY1ZoSVVpd2djM1JoZEhWeklDa2dlMXh1WEhSY2RGeDBjMlZzWmk1bFlXTm9LQ0JqWVd4c1ltRmpheXdnY21WemNHOXVjMlVnZkh3Z1d5QnFjVmhJVWk1eVpYTndiMjV6WlZSbGVIUXNJSE4wWVhSMWN5d2dhbkZZU0ZJZ1hTQXBPMXh1WEhSY2RIMHBPMXh1WEhSOVhHNWNibHgwY21WMGRYSnVJSFJvYVhNN1hHNTlPMXh1WEc1Y2JseHVYRzR2THlCQmRIUmhZMmdnWVNCaWRXNWphQ0J2WmlCbWRXNWpkR2x2Ym5NZ1ptOXlJR2hoYm1Sc2FXNW5JR052YlcxdmJpQkJTa0ZZSUdWMlpXNTBjMXh1YWxGMVpYSjVMbVZoWTJnb0lGc2dYQ0poYW1GNFUzUmhjblJjSWl3Z1hDSmhhbUY0VTNSdmNGd2lMQ0JjSW1GcVlYaERiMjF3YkdWMFpWd2lMQ0JjSW1GcVlYaEZjbkp2Y2x3aUxDQmNJbUZxWVhoVGRXTmpaWE56WENJc0lGd2lZV3BoZUZObGJtUmNJaUJkTENCbWRXNWpkR2x2YmlnZ2FTd2dkSGx3WlNBcElIdGNibHgwYWxGMVpYSjVMbVp1V3lCMGVYQmxJRjBnUFNCbWRXNWpkR2x2YmlnZ1ptNGdLU0I3WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE11YjI0b0lIUjVjR1VzSUdadUlDazdYRzVjZEgwN1hHNTlLVHRjYmx4dVhHNWNibHh1YWxGMVpYSjVMbVY0Y0hJdVptbHNkR1Z5Y3k1aGJtbHRZWFJsWkNBOUlHWjFibU4wYVc5dUtDQmxiR1Z0SUNrZ2UxeHVYSFJ5WlhSMWNtNGdhbEYxWlhKNUxtZHlaWEFvYWxGMVpYSjVMblJwYldWeWN5d2dablZ1WTNScGIyNG9JR1p1SUNrZ2UxeHVYSFJjZEhKbGRIVnliaUJsYkdWdElEMDlQU0JtYmk1bGJHVnRPMXh1WEhSOUtTNXNaVzVuZEdnN1hHNTlPMXh1WEc1Y2JseHVYRzUyWVhJZ1pHOWpSV3hsYlNBOUlIZHBibVJ2ZHk1a2IyTjFiV1Z1ZEM1a2IyTjFiV1Z1ZEVWc1pXMWxiblE3WEc1Y2JpOHFLbHh1SUNvZ1IyVjBjeUJoSUhkcGJtUnZkeUJtY205dElHRnVJR1ZzWlcxbGJuUmNiaUFxTDF4dVpuVnVZM1JwYjI0Z1oyVjBWMmx1Wkc5M0tDQmxiR1Z0SUNrZ2UxeHVYSFJ5WlhSMWNtNGdhbEYxWlhKNUxtbHpWMmx1Wkc5M0tDQmxiR1Z0SUNrZ1B5QmxiR1Z0SURvZ1pXeGxiUzV1YjJSbFZIbHdaU0E5UFQwZ09TQW1KaUJsYkdWdExtUmxabUYxYkhSV2FXVjNPMXh1ZlZ4dVhHNXFVWFZsY25rdWIyWm1jMlYwSUQwZ2UxeHVYSFJ6WlhSUFptWnpaWFE2SUdaMWJtTjBhVzl1S0NCbGJHVnRMQ0J2Y0hScGIyNXpMQ0JwSUNrZ2UxeHVYSFJjZEhaaGNpQmpkWEpRYjNOcGRHbHZiaXdnWTNWeVRHVm1kQ3dnWTNWeVExTlRWRzl3TENCamRYSlViM0FzSUdOMWNrOW1abk5sZEN3Z1kzVnlRMU5UVEdWbWRDd2dZMkZzWTNWc1lYUmxVRzl6YVhScGIyNHNYRzVjZEZ4MFhIUndiM05wZEdsdmJpQTlJR3BSZFdWeWVTNWpjM01vSUdWc1pXMHNJRndpY0c5emFYUnBiMjVjSWlBcExGeHVYSFJjZEZ4MFkzVnlSV3hsYlNBOUlHcFJkV1Z5ZVNnZ1pXeGxiU0FwTEZ4dVhIUmNkRngwY0hKdmNITWdQU0I3ZlR0Y2JseHVYSFJjZEM4dklGTmxkQ0J3YjNOcGRHbHZiaUJtYVhKemRDd2dhVzR0WTJGelpTQjBiM0F2YkdWbWRDQmhjbVVnYzJWMElHVjJaVzRnYjI0Z2MzUmhkR2xqSUdWc1pXMWNibHgwWEhScFppQW9JSEJ2YzJsMGFXOXVJRDA5UFNCY0luTjBZWFJwWTF3aUlDa2dlMXh1WEhSY2RGeDBaV3hsYlM1emRIbHNaUzV3YjNOcGRHbHZiaUE5SUZ3aWNtVnNZWFJ
14938wZG1WY0lqdGNibHgwWEhSOVhHNWNibHgwWEhSamRYSlBabVp6WlhRZ1BTQmpkWEpGYkdWdExtOW1abk5sZENncE8xeHVYSFJjZEdOMWNrTlRVMVJ2Y0NBOUlHcFJkV1Z5ZVM1amMzTW9JR1ZzWlcwc0lGd2lkRzl3WENJZ0tUdGNibHgwWEhSamRYSkRVMU5NWldaMElEMGdhbEYxWlhKNUxtTnpjeWdnWld4bGJTd2dYQ0pzWldaMFhDSWdLVHRjYmx4MFhIUmpZV3hqZFd4aGRHVlFiM05wZEdsdmJpQTlJQ2dnY0c5emFYUnBiMjRnUFQwOUlGd2lZV0p6YjJ4MWRHVmNJaUI4ZkNCd2IzTnBkR2x2YmlBOVBUMGdYQ0ptYVhobFpGd2lJQ2tnSmlaY2JseDBYSFJjZENnZ1kzVnlRMU5UVkc5d0lDc2dZM1Z5UTFOVFRHVm1kQ0FwTG1sdVpHVjRUMllvWENKaGRYUnZYQ0lwSUQ0Z0xURTdYRzVjYmx4MFhIUXZMeUJPWldWa0lIUnZJR0psSUdGaWJHVWdkRzhnWTJGc1kzVnNZWFJsSUhCdmMybDBhVzl1SUdsbUlHVnBkR2hsY2x4dVhIUmNkQzh2SUhSdmNDQnZjaUJzWldaMElHbHpJR0YxZEc4Z1lXNWtJSEJ2YzJsMGFXOXVJR2x6SUdWcGRHaGxjaUJoWW5OdmJIVjBaU0J2Y2lCbWFYaGxaRnh1WEhSY2RHbG1JQ2dnWTJGc1kzVnNZWFJsVUc5emFYUnBiMjRnS1NCN1hHNWNkRngwWEhSamRYSlFiM05wZEdsdmJpQTlJR04xY2tWc1pXMHVjRzl6YVhScGIyNG9LVHRjYmx4MFhIUmNkR04xY2xSdmNDQTlJR04xY2xCdmMybDBhVzl1TG5SdmNEdGNibHgwWEhSY2RHTjFja3hsWm5RZ1BTQmpkWEpRYjNOcGRHbHZiaTVzWldaME8xeHVYRzVjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEdOMWNsUnZjQ0E5SUhCaGNuTmxSbXh2WVhRb0lHTjFja05UVTFSdmNDQXBJSHg4SURBN1hHNWNkRngwWEhSamRYSk1aV1owSUQwZ2NHRnljMlZHYkc5aGRDZ2dZM1Z5UTFOVFRHVm1kQ0FwSUh4OElEQTdYRzVjZEZ4MGZWeHVYRzVjZEZ4MGFXWWdLQ0JxVVhWbGNua3VhWE5HZFc1amRHbHZiaWdnYjNCMGFXOXVjeUFwSUNrZ2UxeHVYSFJjZEZ4MGIzQjBhVzl1Y3lBOUlHOXdkR2x2Ym5NdVkyRnNiQ2dnWld4bGJTd2dhU3dnWTNWeVQyWm1jMlYwSUNrN1hHNWNkRngwZlZ4dVhHNWNkRngwYVdZZ0tDQnZjSFJwYjI1ekxuUnZjQ0FoUFNCdWRXeHNJQ2tnZTF4dVhIUmNkRngwY0hKdmNITXVkRzl3SUQwZ0tDQnZjSFJwYjI1ekxuUnZjQ0F0SUdOMWNrOW1abk5sZEM1MGIzQWdLU0FySUdOMWNsUnZjRHRjYmx4MFhIUjlYRzVjZEZ4MGFXWWdLQ0J2Y0hScGIyNXpMbXhsWm5RZ0lUMGdiblZzYkNBcElIdGNibHgwWEhSY2RIQnliM0J6TG14bFpuUWdQU0FvSUc5d2RHbHZibk11YkdWbWRDQXRJR04xY2s5bVpuTmxkQzVzWldaMElDa2dLeUJqZFhKTVpXWjBPMXh1WEhSY2RIMWNibHh1WEhSY2RHbG1JQ2dnWENKMWMybHVaMXdpSUdsdUlHOXdkR2x2Ym5NZ0tTQjdYRzVjZEZ4MFhIUnZjSFJwYjI1ekxuVnphVzVuTG1OaGJHd29JR1ZzWlcwc0lIQnliM0J6SUNrN1hHNWNibHgwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwWTNWeVJXeGxiUzVqYzNNb0lIQnliM0J6SUNrN1hHNWNkRngwZlZ4dVhIUjlYRzU5TzF4dVhHNXFVWFZsY25rdVptNHVaWGgwWlc1a0tIdGNibHgwYjJabWMyVjBPaUJtZFc1amRHbHZiaWdnYjNCMGFXOXVjeUFwSUh0Y2JseDBYSFJwWmlBb0lHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnZ0tTQjdYRzVjZEZ4MFhIUnlaWFIxY200Z2IzQjBhVzl1Y3lBOVBUMGdkVzVrWldacGJtVmtJRDljYmx4MFhIUmNkRngwZEdocGN5QTZYRzVjZEZ4MFhIUmNkSFJvYVhNdVpXRmphQ2htZFc1amRHbHZiaWdnYVNBcElIdGNibHgwWEhSY2RGeDBYSFJxVVhWbGNua3ViMlptYzJWMExuTmxkRTltWm5ObGRDZ2dkR2hwY3l3Z2IzQjBhVzl1Y3l3Z2FTQXBPMXh1WEhSY2RGeDBYSFI5S1R0Y2JseDBYSFI5WEc1Y2JseDBYSFIyWVhJZ1pHOWpSV3hsYlN3Z2QybHVMRnh1WEhSY2RGeDBaV3hsYlNBOUlIUm9hWE5iSURBZ1hTeGNibHgwWEhSY2RHSnZlQ0E5SUhzZ2RHOXdPaUF3TENCc1pXWjBPaUF3SUgwc1hHNWNkRngwWEhSa2IyTWdQU0JsYkdWdElDWW1JR1ZzWlcwdWIzZHVaWEpFYjJOMWJXVnVkRHRjYmx4dVhIUmNkR2xtSUNnZ0lXUnZZeUFwSUh0Y2JseDBYSFJjZEhKbGRIVnlianRjYmx4MFhIUjlYRzVjYmx4MFhIUmtiMk5GYkdWdElEMGdaRzlqTG1SdlkzVnRaVzUwUld4bGJXVnVkRHRjYmx4dVhIUmNkQzh2SUUxaGEyVWdjM1Z5WlNCcGRDZHpJRzV2ZENCaElHUnBjMk52Ym01bFkzUmxaQ0JFVDAwZ2JtOWtaVnh1WEhSY2RHbG1JQ2dnSVdwUmRXVnllUzVqYjI1MFlXbHVjeWdnWkc5alJXeGxiU3dnWld4bGJTQXBJQ2tnZTF4dVhIUmNkRngwY21WMGRYSnVJR0p2ZUR0Y2JseDBYSFI5WEc1Y2JseDBYSFF2THlCVGRYQndiM0owT2lCQ2JHRmphMEpsY25KNUlEVXNJR2xQVXlBeklDaHZjbWxuYVc1aGJDQnBVR2h2Ym1VcFhHNWNkRngwTHk4Z1NXWWdkMlVnWkc5dUozUWdhR0YyWlNCblFrTlNMQ0JxZFhOMElIVnpaU0F3TERBZ2NtRjBhR1Z5SUhSb1lXNGdaWEp5YjNKY2JseDBYSFJwWmlBb0lIUjVjR1Z2WmlCbGJHVnRMbWRsZEVKdmRXNWthVzVuUTJ4cFpXNTBVbVZqZENBaFBUMGdjM1J5ZFc1a1pXWnBibVZrSUNrZ2UxeHVYSFJjZEZ4MFltOTRJRDBnWld4bGJTNW5aWFJDYjNWdVpHbHVaME5zYVdWdWRGSmxZM1FvS1R0Y2JseDBYSFI5WEc1Y2RGeDBkMmx1SUQwZ1oyVjBWMmx1Wkc5M0tDQmtiMk1nS1R0Y2JseDBYSFJ5WlhSMWNtNGdlMXh1WEhSY2RGeDBkRzl3T2lCaWIzZ3VkRzl3SUNzZ2QybHVMbkJoWjJWWlQyWm1jMlYwSUMwZ1pHOWpSV3hsYlM1amJHbGxiblJVYjNBc1hHNWNkRngwWEhSc1pXWjBPaUJpYjNndWJHVm1kQ0FySUhkcGJpNXdZV2RsV0U5bVpuTmxkQ0F0SUdSdlkwVnNaVzB1WTJ4cFpXNTBUR1ZtZEZ4dVhIUmNkSDA3WEc1Y2RIMHNYRzVjYmx4MGNHOXphWFJwYjI0NklHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RHbG1JQ2dnSVhSb2FYTmJJREFnWFNBcElIdGNibHgwWEhSY2RISmxkSFZ5Ymp0Y2JseDBYSFI5WEc1Y2JseDBYSFIyWVhJZ2IyWm1jMlYwVUdGeVpXNTBMQ0J2Wm1aelpYUXNYRzVjZEZ4MFhIUmxiR1Z0SUQwZ2RHaHBjMXNnTUNCZExGeHVYSFJjZEZ4MGNHRnlaVzUwVDJabWMyVjBJRDBnZXlCMGIzQTZJREFzSUd4bFpuUTZJREFnZlR0Y2JseHVYSFJjZEM4dklFWnBlR1ZrSUdWc1pXMWxiblJ6SUdGeVpTQnZabVp6WlhRZ1puSnZiU0IzYVc1a2IzY2dLSEJoY21WdWRFOW1abk5sZENBOUlIdDBiM0E2TUN3Z2JHVm1kRG9nTUgwc0lHSmxZMkYxYzJVZ2FYUWdhWE1nYVhSeklHOXViSGtnYjJabWMyVjBJSEJoY21WdWRGeHVYSFJjZEdsbUlDZ2dhbEYxWlhKNUxtTnpjeWdnWld4bGJTd2dYQ0p3YjNOcGRHbHZibHdpSUNrZ1BUMDlJRndpWm1sNFpXUmNJaUFwSUh0Y2JseDBYSFJjZEM4dklFRnpjM1Z0WlNCblpYUkNiM1Z1WkdsdVowTnNhV1Z1ZEZKbFkzUWdhWE1nZEdobGNtVWdkMmhsYmlCamIyMXdkWFJsWkNCd2IzTn
14938BkR2x2YmlCcGN5Qm1hWGhsWkZ4dVhIUmNkRngwYjJabWMyVjBJRDBnWld4bGJTNW5aWFJDYjNWdVpHbHVaME5zYVdWdWRGSmxZM1FvS1R0Y2JseHVYSFJjZEgwZ1pXeHpaU0I3WEc1Y2RGeDBYSFF2THlCSFpYUWdLbkpsWVd3cUlHOW1abk5sZEZCaGNtVnVkRnh1WEhSY2RGeDBiMlptYzJWMFVHRnlaVzUwSUQwZ2RHaHBjeTV2Wm1aelpYUlFZWEpsYm5Rb0tUdGNibHh1WEhSY2RGeDBMeThnUjJWMElHTnZjbkpsWTNRZ2IyWm1jMlYwYzF4dVhIUmNkRngwYjJabWMyVjBJRDBnZEdocGN5NXZabVp6WlhRb0tUdGNibHgwWEhSY2RHbG1JQ2dnSVdwUmRXVnllUzV1YjJSbFRtRnRaU2dnYjJabWMyVjBVR0Z5Wlc1MFd5QXdJRjBzSUZ3aWFIUnRiRndpSUNrZ0tTQjdYRzVjZEZ4MFhIUmNkSEJoY21WdWRFOW1abk5sZENBOUlHOW1abk5sZEZCaGNtVnVkQzV2Wm1aelpYUW9LVHRjYmx4MFhIUmNkSDFjYmx4dVhIUmNkRngwTHk4Z1FXUmtJRzltWm5ObGRGQmhjbVZ1ZENCaWIzSmtaWEp6WEc1Y2RGeDBYSFJ3WVhKbGJuUlBabVp6WlhRdWRHOXdJQ3M5SUdwUmRXVnllUzVqYzNNb0lHOW1abk5sZEZCaGNtVnVkRnNnTUNCZExDQmNJbUp2Y21SbGNsUnZjRmRwWkhSb1hDSXNJSFJ5ZFdVZ0tUdGNibHgwWEhSY2RIQmhjbVZ1ZEU5bVpuTmxkQzVzWldaMElDczlJR3BSZFdWeWVTNWpjM01vSUc5bVpuTmxkRkJoY21WdWRGc2dNQ0JkTENCY0ltSnZjbVJsY2t4bFpuUlhhV1IwYUZ3aUxDQjBjblZsSUNrN1hHNWNkRngwZlZ4dVhHNWNkRngwTHk4Z1UzVmlkSEpoWTNRZ2NHRnlaVzUwSUc5bVpuTmxkSE1nWVc1a0lHVnNaVzFsYm5RZ2JXRnlaMmx1YzF4dVhIUmNkSEpsZEhWeWJpQjdYRzVjZEZ4MFhIUjBiM0E2SUc5bVpuTmxkQzUwYjNBZ0xTQndZWEpsYm5SUFptWnpaWFF1ZEc5d0lDMGdhbEYxWlhKNUxtTnpjeWdnWld4bGJTd2dYQ0p0WVhKbmFXNVViM0JjSWl3Z2RISjFaU0FwTEZ4dVhIUmNkRngwYkdWbWREb2diMlptYzJWMExteGxablFnTFNCd1lYSmxiblJQWm1aelpYUXViR1ZtZENBdElHcFJkV1Z5ZVM1amMzTW9JR1ZzWlcwc0lGd2liV0Z5WjJsdVRHVm1kRndpTENCMGNuVmxJQ2xjYmx4MFhIUjlPMXh1WEhSOUxGeHVYRzVjZEc5bVpuTmxkRkJoY21WdWREb2dablZ1WTNScGIyNG9LU0I3WEc1Y2RGeDBjbVYwZFhKdUlIUm9hWE11YldGd0tHWjFibU4wYVc5dUtDa2dlMXh1WEhSY2RGeDBkbUZ5SUc5bVpuTmxkRkJoY21WdWRDQTlJSFJvYVhNdWIyWm1jMlYwVUdGeVpXNTBJSHg4SUdSdlkwVnNaVzA3WEc1Y2JseDBYSFJjZEhkb2FXeGxJQ2dnYjJabWMyVjBVR0Z5Wlc1MElDWW1JQ2dnSVdwUmRXVnllUzV1YjJSbFRtRnRaU2dnYjJabWMyVjBVR0Z5Wlc1MExDQmNJbWgwYld4Y0lpQXBJQ1ltSUdwUmRXVnllUzVqYzNNb0lHOW1abk5sZEZCaGNtVnVkQ3dnWENKd2IzTnBkR2x2Ymx3aUlDa2dQVDA5SUZ3aWMzUmhkR2xqWENJZ0tTQXBJSHRjYmx4MFhIUmNkRngwYjJabWMyVjBVR0Z5Wlc1MElEMGdiMlptYzJWMFVHRnlaVzUwTG05bVpuTmxkRkJoY21WdWREdGNibHgwWEhSY2RIMWNibHh1WEhSY2RGeDBjbVYwZFhKdUlHOW1abk5sZEZCaGNtVnVkQ0I4ZkNCa2IyTkZiR1Z0TzF4dVhIUmNkSDBwTzF4dVhIUjlYRzU5S1R0Y2JseHVMeThnUTNKbFlYUmxJSE5qY205c2JFeGxablFnWVc1a0lITmpjbTlzYkZSdmNDQnRaWFJvYjJSelhHNXFVWFZsY25rdVpXRmphQ2dnZXlCelkzSnZiR3hNWldaME9pQmNJbkJoWjJWWVQyWm1jMlYwWENJc0lITmpjbTlzYkZSdmNEb2dYQ0p3WVdkbFdVOW1abk5sZEZ3aUlIMHNJR1oxYm1OMGFXOXVLQ0J0WlhSb2IyUXNJSEJ5YjNBZ0tTQjdYRzVjZEhaaGNpQjBiM0FnUFNCY0luQmhaMlZaVDJabWMyVjBYQ0lnUFQwOUlIQnliM0E3WEc1Y2JseDBhbEYxWlhKNUxtWnVXeUJ0WlhSb2IyUWdYU0E5SUdaMWJtTjBhVzl1S0NCMllXd2dLU0I3WEc1Y2RGeDBjbVYwZFhKdUlHRmpZMlZ6Y3lnZ2RHaHBjeXdnWm5WdVkzUnBiMjRvSUdWc1pXMHNJRzFsZEdodlpDd2dkbUZzSUNrZ2UxeHVYSFJjZEZ4MGRtRnlJSGRwYmlBOUlHZGxkRmRwYm1SdmR5Z2daV3hsYlNBcE8xeHVYRzVjZEZ4MFhIUnBaaUFvSUhaaGJDQTlQVDBnZFc1a1pXWnBibVZrSUNrZ2UxeHVYSFJjZEZ4MFhIUnlaWFIxY200Z2QybHVJRDhnZDJsdVd5QndjbTl3SUYwZ09pQmxiR1Z0V3lCdFpYUm9iMlFnWFR0Y2JseDBYSFJjZEgxY2JseHVYSFJjZEZ4MGFXWWdLQ0IzYVc0Z0tTQjdYRzVjZEZ4MFhIUmNkSGRwYmk1elkzSnZiR3hVYnloY2JseDBYSFJjZEZ4MFhIUWhkRzl3SUQ4Z2RtRnNJRG9nZDJsdVpHOTNMbkJoWjJWWVQyWm1jMlYwTEZ4dVhIUmNkRngwWEhSY2RIUnZjQ0EvSUhaaGJDQTZJSGRwYm1SdmR5NXdZV2RsV1U5bVpuTmxkRnh1WEhSY2RGeDBYSFFwTzF4dVhHNWNkRngwWEhSOUlHVnNjMlVnZTF4dVhIUmNkRngwWEhSbGJHVnRXeUJ0WlhSb2IyUWdYU0E5SUhaaGJEdGNibHgwWEhSY2RIMWNibHgwWEhSOUxDQnRaWFJvYjJRc0lIWmhiQ3dnWVhKbmRXMWxiblJ6TG14bGJtZDBhQ3dnYm5Wc2JDQXBPMXh1WEhSOU8xeHVmU2s3WEc1Y2JpOHZJRk4xY0hCdmNuUTZJRk5oWm1GeWFUdzNLeXdnUTJoeWIyMWxQRE0zSzF4dUx5OGdRV1JrSUhSb1pTQjBiM0F2YkdWbWRDQmpjM05JYjI5cmN5QjFjMmx1WnlCcVVYVmxjbmt1Wm00dWNHOXphWFJwYjI1Y2JpOHZJRmRsWW10cGRDQmlkV2M2SUdoMGRIQnpPaTh2WW5WbmN5NTNaV0pyYVhRdWIzSm5MM05vYjNkZlluVm5MbU5uYVQ5cFpEMHlPVEE0TkZ4dUx5OGdRbXhwYm1zZ1luVm5PaUJvZEhSd2N6b3ZMMk52WkdVdVoyOXZaMnhsTG1OdmJTOXdMMk5vY205dGFYVnRMMmx6YzNWbGN5OWtaWFJoYVd3L2FXUTlNakk1TWpnd1hHNHZMeUJuWlhSRGIyMXdkWFJsWkZOMGVXeGxJSEpsZEhWeWJuTWdjR1Z5WTJWdWRDQjNhR1Z1SUhOd1pXTnBabWxsWkNCbWIzSWdkRzl3TDJ4bFpuUXZZbTkwZEc5dEwzSnBaMmgwTzF4dUx5OGdjbUYwYUdWeUlIUm9ZVzRnYldGclpTQjBhR1VnWTNOeklHMXZaSFZzWlNCa1pYQmxibVFnYjI0Z2RHaGxJRzltWm5ObGRDQnRiMlIxYkdVc0lHcDFjM1FnWTJobFkyc2dabTl5SUdsMElHaGxjbVZjYm1wUmRXVnllUzVsWVdOb0tDQmJJRndpZEc5d1hDSXNJRndpYkdWbWRGd2lJRjBzSUdaMWJtTjBhVzl1S0NCcExDQndjbTl3SUNrZ2UxeHVYSFJxVVhWbGNua3VZM056U0c5dmEzTmJJSEJ5YjNBZ1hTQTlJR0ZrWkVkbGRFaHZiMnRKWmlnZ2MzVndjRzl5ZEM1d2FYaGxiRkJ2YzJsMGFXOXVMRnh1WEhSY2RHWjFibU4wYVc5dUtDQmxiR1Z0TENCamIyMXdkWFJsWkNBcElIdGNibHgwWEhSY2RHbG1JQ2dnWTI5dGNIVjBaV1FnS1NCN1hHNWNkRngwWEhSY2RHTnZiWEIxZEdWa0lEMGdZM1Z5UTFOVEtDQmxiR1Z0TENCd2NtOXdJQ2s3WEc1Y2RGeDBYSFJjZEM4dklFbG1JR04xY2tOVFV5QnlaWFIxY201eklIQmxjbU5sYm5SaFoyVXNJR1poYkd4aVlXTnJJSFJ2SUc5bVpuTmxkRnh1WEhSY2RGeDBYSFJ5WlhSMWNtNGdjbTUxYlc1dmJuQjRMblJsYzNRb0lHTnZiWEIxZEdWa0lDa2dQMXh1WEhSY2RGeDBYSFJjZEdwUmRXVnllU2dnWld4bGJTQXBMbkJ2YzJsMGFXOXVLQ2xiSUhCeWIzQWdYU0FySUZ3aWNIaGNJaUE2WEc1Y2RGeDBYSFJjZEZ4MFkyOXRjSFYwWldRN1hHNWNkRngwWEhSOVhHNWNkRngwZlZ4dVhIUXBPMXh1ZlNrN1hHNWNibHh1THk4Z1EzSmxZWFJsSUdsdWJtVnlTR1ZwWjJoMExDQnBibTVsY2xkcFpIUm9MQ0JvWldsbmFIUXNJSGRwWkhSb0xDQnZkWFJsY2tobGFXZG9kQ0JoYm1RZ2IzVjBaWEpYYVdSMGFDQnRaWFJvYjJSelhHNXFVWFZsY25rdVpXRmphQ2dnZXlCSVpXbG5hSFE2SUZ3aWFHVnBaMmgwWENJc0lGZHBaSFJvT2lCY0luZHBaSFJvWENJZ2ZTd2dablZ1WTNScGIyNG9JRzVoYldVc0lIUjVjR1VnS1NCN1hHNWNkR3BSZFdWeWVTNWxZV05vS0NCN0lIQmhaR1JwYm1jNklGd2lhVzV1WlhKY0lpQXJJRzVoYldVc0lHTnZiblJsYm5RNklIUjVjR1VzSUZ3aVhDSTZJRndpYjNWMFpYSmNJaUFySUc1aGJXVWdmU3dnWm5WdVkzUnBiMjRvSUdSbFptRjFiSFJGZUhSeVlTd2dablZ1WTA1aGJXVWdLU0I3WEc1Y2RGeDBMeThnVFdGeVoybHVJR2x6SUc5dWJIa2dabTl5SUc5MWRHVnlTR1ZwWjJoMExDQnZkWFJsY2xkcFpIUm9YRzVjZEZ4MGFsRjFaWEo1TG1adVd5Qm1kVzVqVG1GdFpTQmRJRDBnWm5WdVkzUnBiMjRvSUcxaGNtZHBiaXdnZG1Gc2RXVWdLU0I3WEc1Y2RGeDBYSFIyWVhJZ1kyaGhhVzVoWW14bElEMGdZWEpuZFcxbGJuUnpMbXhsYm1kMGFDQW1KaUFvSUdSbFptRjFiSFJGZUhSeVlTQjhmQ0IwZVhCbGIyWWdiV0Z5WjJsdUlDRTlQU0JjSW1KdmIyeGxZVzVjSWlBcExGeHVYSFJjZEZ4MFhIUmxlSFJ5WVNBOUlHUmxabUYxYkhSRmVIUnlZU0I4ZkNBb0lHMWhjbWRwYmlBOVBUMGdkSEoxWlNCOGZDQjJZV3gxWlNBOVBUMGdkSEoxWlNBL0lGd2liV0Z5WjJsdVhDSWdPaUJjSW1KdmNtUmxjbHdpSUNrN1hHNWNibHgwWEhSY2RISmxkSFZ5YmlCaFkyTmxjM01vSUhSb2FYTXNJR1oxYm1OMGFXOXVLQ0JsYkdWdExDQjBlWEJsTENCMllXeDFaU0FwSUh0Y2JseDBYSFJjZEZ4MGRtRnlJR1J2WXp0Y2JseHVYSFJjZEZ4MFhIUnBaaUFvSUdwUmRXVnllUzVwYzFkcGJtUnZkeWdnWld4bGJTQXBJQ2tnZTF4dVhIUmNkRngwWEhSY2RDOHZJRUZ6SUc5bUlEVXZPQzh5TURFeUlIUm9hWE1nZDJsc2JDQjVhV1ZzWkNCcGJtTnZjbkpsWTNRZ2NtVnpkV3gwY3lCbWIzSWdUVzlpYVd4bElGTmhabUZ5YVN3Z1luVjBJSFJvWlhKbFhHNWNkRngwWEhSY2RGeDBMeThnYVhOdUozUWdZU0IzYUc5c1pTQnNiM1FnZDJVZ1kyRnVJR1J2TGlCVFpXVWdjSFZzYkNCeVpYRjFaWE4wSUdGMElIUm9hWE1nVlZKTUlHWnZjaUJrYVhOamRYTnphVzl1T2x4dVhIUmNkRngwWEhSY2RDOHZJR2gwZEhCek9pOHZaMmwwYUhWaUxtTnZiUzlxY1hWbGNua3ZhbkYxWlhKNUwzQjFiR3d2TnpZMFhHNWNkRngwWEhSY2RGeDBjbVYwZFhKdUlHVnNaVzB1Wkc5amRXMWxiblF1Wkc5amRXMWxiblJGYkdWdFpXNTBXeUJjSW1Oc2FXVnVkRndpSUNzZ2JtRnRaU0JkTzF4dVhIUmNkRngwWEhSOVhHNWNibHgwWEhSY2RGeDBMeThnUjJWMElHUnZZM1Z0Wlc1MElIZHBaSFJvSUc5e
14938UlHaGxhV2RvZEZ4dVhIUmNkRngwWEhScFppQW9JR1ZzWlcwdWJtOWtaVlI1Y0dVZ1BUMDlJRGtnS1NCN1hHNWNkRngwWEhSY2RGeDBaRzlqSUQwZ1pXeGxiUzVrYjJOMWJXVnVkRVZzWlcxbGJuUTdYRzVjYmx4MFhIUmNkRngwWEhRdkx5QkZhWFJvWlhJZ2MyTnliMnhzVzFkcFpIUm9MMGhsYVdkb2RGMGdiM0lnYjJabWMyVjBXMWRwWkhSb0wwaGxhV2RvZEYwZ2IzSWdZMnhwWlc1MFcxZHBaSFJvTDBobGFXZG9kRjBzWEc1Y2RGeDBYSFJjZEZ4MEx5OGdkMmhwWTJobGRtVnlJR2x6SUdkeVpXRjBaWE4wWEc1Y2RGeDBYSFJjZEZ4MGNtVjBkWEp1SUUxaGRHZ3ViV0Y0S0Z4dVhIUmNkRngwWEhSY2RGeDBaV3hsYlM1aWIyUjVXeUJjSW5OamNtOXNiRndpSUNzZ2JtRnRaU0JkTENCa2IyTmJJRndpYzJOeWIyeHNYQ0lnS3lCdVlXMWxJRjBzWEc1Y2RGeDBYSFJjZEZ4MFhIUmxiR1Z0TG1KdlpIbGJJRndpYjJabWMyVjBYQ0lnS3lCdVlXMWxJRjBzSUdSdlkxc2dYQ0p2Wm1aelpYUmNJaUFySUc1aGJXVWdYU3hjYmx4MFhIUmNkRngwWEhSY2RHUnZZMXNnWENKamJHbGxiblJjSWlBcklHNWhiV1VnWFZ4dVhIUmNkRngwWEhSY2RDazdYRzVjZEZ4MFhIUmNkSDFjYmx4dVhIUmNkRngwWEhSeVpYUjFjbTRnZG1Gc2RXVWdQVDA5SUhWdVpHVm1hVzVsWkNBL1hHNWNkRngwWEhSY2RGeDBMeThnUjJWMElIZHBaSFJvSUc5eUlHaGxhV2RvZENCdmJpQjBhR1VnWld4bGJXVnVkQ3dnY21WeGRXVnpkR2x1WnlCaWRYUWdibTkwSUdadmNtTnBibWNnY0dGeWMyVkdiRzloZEZ4dVhIUmNkRngwWEhSY2RHcFJkV1Z5ZVM1amMzTW9JR1ZzWlcwc0lIUjVjR1VzSUdWNGRISmhJQ2tnT2x4dVhHNWNkRngwWEhSY2RGeDBMeThnVTJWMElIZHBaSFJvSUc5eUlHaGxhV2RvZENCdmJpQjBhR1VnWld4bGJXVnVkRnh1WEhSY2RGeDBYSFJjZEdwUmRXVnllUzV6ZEhsc1pTZ2daV3hsYlN3Z2RIbHdaU3dnZG1Gc2RXVXNJR1Y0ZEhKaElDazdYRzVjZEZ4MFhIUjlMQ0IwZVhCbExDQmphR0ZwYm1GaWJHVWdQeUJ0WVhKbmFXNGdPaUIxYm1SbFptbHVaV1FzSUdOb1lXbHVZV0pzWlN3Z2JuVnNiQ0FwTzF4dVhIUmNkSDA3WEc1Y2RIMHBPMXh1ZlNrN1hHNWNibHh1THk4Z1ZHaGxJRzUxYldKbGNpQnZaaUJsYkdWdFpXNTBjeUJqYjI1MFlXbHVaV1FnYVc0Z2RHaGxJRzFoZEdOb1pXUWdaV3hsYldWdWRDQnpaWFJjYm1wUmRXVnllUzVtYmk1emFYcGxJRDBnWm5WdVkzUnBiMjRvS1NCN1hHNWNkSEpsZEhWeWJpQjBhR2x6TG14bGJtZDBhRHRjYm4wN1hHNWNibXBSZFdWeWVTNW1iaTVoYm1SVFpXeG1JRDBnYWxGMVpYSjVMbVp1TG1Ga1pFSmhZMnM3WEc1Y2JseHVYRzVjYmk4dklGSmxaMmx6ZEdWeUlHRnpJR0VnYm1GdFpXUWdRVTFFSUcxdlpIVnNaU3dnYzJsdVkyVWdhbEYxWlhKNUlHTmhiaUJpWlNCamIyNWpZWFJsYm1GMFpXUWdkMmwwYUNCdmRHaGxjbHh1THk4Z1ptbHNaWE1nZEdoaGRDQnRZWGtnZFhObElHUmxabWx1WlN3Z1luVjBJRzV2ZENCMmFXRWdZU0J3Y205d1pYSWdZMjl1WTJGMFpXNWhkR2x2YmlCelkzSnBjSFFnZEdoaGRGeHVMeThnZFc1a1pYSnpkR0Z1WkhNZ1lXNXZibmx0YjNWeklFRk5SQ0J0YjJSMWJHVnpMaUJCSUc1aGJXVmtJRUZOUkNCcGN5QnpZV1psYzNRZ1lXNWtJRzF2YzNRZ2NtOWlkWE4wWEc0dkx5QjNZWGtnZEc4Z2NtVm5hWE4wWlhJdUlFeHZkMlZ5WTJGelpTQnFjWFZsY25rZ2FYTWdkWE5sWkNCaVpXTmhkWE5sSUVGTlJDQnRiMlIxYkdVZ2JtRnRaWE1nWVhKbFhHNHZMeUJrWlhKcGRtVmtJR1p5YjIwZ1ptbHNaU0J1WVcxbGN5d2dZVzVrSUdwUmRXVnllU0JwY3lCdWIzSnRZV3hzZVNCa1pXeHBkbVZ5WldRZ2FXNGdZU0JzYjNkbGNtTmhjMlZjYmk4dklHWnBiR1VnYm1GdFpTNGdSRzhnZEdocGN5QmhablJsY2lCamNtVmhkR2x1WnlCMGFHVWdaMnh2WW1Gc0lITnZJSFJvWVhRZ2FXWWdZVzRnUVUxRUlHMXZaSFZzWlNCM1lXNTBjMXh1THk4Z2RHOGdZMkZzYkNCdWIwTnZibVpzYVdOMElIUnZJR2hwWkdVZ2RHaHBjeUIyWlhKemFXOXVJRzltSUdwUmRXVnllU3dnYVhRZ2QybHNiQ0IzYjNKckxseHVYRzR2THlCT2IzUmxJSFJvWVhRZ1ptOXlJRzFoZUdsdGRXMGdjRzl5ZEdGaWFXeHBkSGtzSUd4cFluSmhjbWxsY3lCMGFHRjBJR0Z5WlNCdWIzUWdhbEYxWlhKNUlITm9iM1ZzWkZ4dUx5OGdaR1ZqYkdGeVpTQjBhR1Z0YzJWc2RtVnpJR0Z6SUdGdWIyNTViVzkxY3lCdGIyUjFiR1Z6TENCaGJtUWdZWFp2YVdRZ2MyVjBkR2x1WnlCaElHZHNiMkpoYkNCcFppQmhibHh1THk4Z1FVMUVJR3h2WVdSbGNpQnBjeUJ3Y21WelpXNTBMaUJxVVhWbGNua2dhWE1nWVNCemNHVmphV0ZzSUdOaGMyVXVJRVp2Y2lCdGIzSmxJR2x1Wm05eWJXRjBhVzl1TENCelpXVmNiaTh2SUdoMGRIQnpPaTh2WjJsMGFIVmlMbU52YlM5cWNtSjFjbXRsTDNKbGNYVnBjbVZxY3k5M2FXdHBMMVZ3WkdGMGFXNW5MV1Y0YVhOMGFXNW5MV3hwWW5KaGNtbGxjeU4zYVd0cExXRnViMjVjYmx4dWFXWWdLQ0IwZVhCbGIyWWdaR1ZtYVc1bElEMDlQU0JjSW1aMWJtTjBhVzl1WENJZ0ppWWdaR1ZtYVc1bExtRnRaQ0FwSUh0Y2JseDBaR1ZtYVc1bEtDQmNJbXB4ZFdWeWVWd2lMQ0JiWFN3Z1puVnVZM1JwYjI0b0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUdwUmRXVnllVHRjYmx4MGZTazdYRzU5WEc1Y2JseHVYRzVjYm5aaGNseHVYSFF2THlCTllYQWdiM1psY2lCcVVYVmxjbmtnYVc0Z1kyRnpaU0J2WmlCdmRtVnlkM0pwZEdWY2JseDBYMnBSZFdWeWVTQTlJSGRwYm1SdmR5NXFVWFZsY25rc1hHNWNibHgwTHk4Z1RXRndJRzkyWlhJZ2RHaGxJQ1FnYVc0Z1kyRnpaU0J2WmlCdmRtVnlkM0pwZEdWY2JseDBYeVFnUFNCM2FXNWtiM2N1SkR0Y2JseHVhbEYxWlhKNUxtNXZRMjl1Wm14cFkzUWdQU0JtZFc1amRHbHZiaWdnWkdWbGNDQXBJSHRjYmx4MGFXWWdLQ0IzYVc1a2IzY3VKQ0E5UFQwZ2FsRjFaWEo1SUNrZ2UxeHVYSFJjZEhkcGJtUnZkeTRrSUQwZ1h5UTdYRzVjZEgxY2JseHVYSFJwWmlBb0lHUmxaWEFnSmlZZ2QybHVaRzkzTG1wUmRXVnllU0E5UFQwZ2FsRjFaWEo1SUNrZ2UxeHVYSFJjZEhkcGJtUnZkeTVxVVhWbGNua2dQU0JmYWxGMVpYSjVPMXh1WEhSOVhHNWNibHgwY21WMGRYSnVJR3BSZFdWeWVUdGNibjA3WEc1Y2JpOHZJRVY0Y0c5elpTQnFVWFZsY25rZ1lXNWtJQ1FnYVdSbGJuUnBabWxsY25Nc0lHVjJaVzRnYVc0Z1FVMUVYRzR2THlBb0l6Y3hNRElqWTI5dGJXVnVkRG94TUN3Z2FIUjBjSE02THk5bmFYUm9kV0l1WTI5dEwycHhkV1Z5ZVM5cWNYVmxjbmt2Y0hWc2JDODFOVGNwWEc0dkx5QmhibVFnUTI5dGJXOXVTbE1nWm05eUlHSnliM2R6WlhJZ1pXMTFiR0YwYjNKeklDZ2pNVE0xTmpZcFhHNXBaaUFvSUhSNWNHVnZaaUJ1YjBkc2IySmhiQ0E5UFQwZ2MzUnlkVzVrWldacGJtVmtJQ2tnZTF4dVhIUjNhVzVrYjNjdWFsRjFaWEo1SUQwZ2QybHVaRzkzTGlRZ1BTQnFVWFZsY25rN1hHNTlYRzVjYmx4dVhHNWNibkpsZEhWeWJpQnFVWFZsY25rN1hHNWNibjBwS1R0Y2JseHVPeUJpY205M2MyVnlhV1o1WDNOb2FXMWZYMlJsWm1sdVpWOWZiVzlrZFd4bFgxOWxlSEJ2Y25SZlh5aDBlWEJsYjJZZ0pDQWhQU0JjSW5WdVpHVm1hVzVsWkZ3aUlEOGdKQ0E2SUhkcGJtUnZkeTRrS1R0Y2JseHVmU2t1WTJGc2JDaG5iRzlpWVd3c0lIVnVaR1ZtYVc1bFpDd2dkVzVrWldacGJtVmtMQ0IxYm1SbFptbHVaV1FzSUhWdVpHVm1hVzVsWkN3Z1puVnVZM1JwYjI0Z1pHVm1hVzVsUlhod2IzSjBLR1Y0S1NCN0lHMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1pYZzdJSDBwTzF4dUlsMTkiLCIvKlxuICAgICBfIF8gICAgICBfICAgICAgIF9cbiBfX198IChfKSBfX198IHwgX18gIChfKV9fX1xuLyBfX3wgfCB8LyBf
14938X3wgfC8gLyAgfCAvIF9ffFxuXFxfXyBcXCB8IHwgKF9ffCAgIDwgXyB8IFxcX18gXFxcbnxfX18vX3xffFxcX19ffF98XFxfKF8pLyB8X19fL1xuICAgICAgICAgICAgICAgICAgIHxfXy9cblxuIFZlcnNpb246IDEuOC4wXG4gIEF1dGhvcjogS2VuIFdoZWVsZXJcbiBXZWJzaXRlOiBodHRwOi8va2Vud2hlZWxlci5naXRodWIuaW9cbiAgICBEb2NzOiBodHRwOi8va2Vud2hlZWxlci5naXRodWIuaW8vc2xpY2tcbiAgICBSZXBvOiBodHRwOi8vZ2l0aHViLmNvbS9rZW53aGVlbGVyL3NsaWNrXG4gIElzc3VlczogaHR0cDovL2dpdGh1Yi5jb20va2Vud2hlZWxlci9zbGljay9pc3N1ZXNcblxuICovXG4vKiBnbG9iYWwgd2luZG93LCBkb2N1bWVudCwgZGVmaW5lLCBqUXVlcnksIHNldEludGVydmFsLCBjbGVhckludGVydmFsICovXG47KGZ1bmN0aW9uKGZhY3RvcnkpIHtcbiAgICAndXNlIHN0cmljdCc7XG4gICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgICAgICBkZWZpbmUoWydqcXVlcnknXSwgZmFjdG9yeSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoJ2pxdWVyeScpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmYWN0b3J5KGpRdWVyeSk7XG4gICAgfVxuXG59KGZ1bmN0aW9uKCQpIHtcbiAgICAndXNlIHN0cmljdCc7XG4gICAgdmFyIFNsaWNrID0gd2luZG93LlNsaWNrIHx8IHt9O1xuXG4gICAgU2xpY2sgPSAoZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIGluc3RhbmNlVWlkID0gMDtcblxuICAgICAgICBmdW5jdGlvbiBTbGljayhlbGVtZW50LCBzZXR0aW5ncykge1xuXG4gICAgICAgICAgICB2Y
14938XIgXyA9IHRoaXMsIGRhdGFTZXR0aW5ncztcblxuICAgICAgICAgICAgXy5kZWZhdWx0cyA9IHtcbiAgICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5OiB0cnVlLFxuICAgICAgICAgICAgICAgIGFkYXB0aXZlSGVpZ2h0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBhcHBlbmRBcnJvd3M6ICQoZWxlbWVudCksXG4gICAgICAgICAgICAgICAgYXBwZW5kRG90czogJChlbGVtZW50KSxcbiAgICAgICAgICAgICAgICBhcnJvd3M6IHRydWUsXG4gICAgICAgICAgICAgICAgYXNOYXZGb3I6IG51bGwsXG4gICAgICAgICAgICAgICAgcHJldkFycm93OiAnPGJ1dHRvbiBjbGFzcz1cInNsaWNrLXByZXZcIiBhcmlhLWxhYmVsPVwiUHJldmlvdXNcIiB0eXBlPVwiYnV0dG9uXCI+UHJldmlvdXM8L2J1dHRvbj4nLFxuICAgICAgICAgICAgICAgIG5leHRBcnJvdzogJzxidXR0b24gY2xhc3M9XCJzbGljay1uZXh0XCIgYXJpYS1sYWJlbD1cIk5leHRcIiB0eXBlPVwiYnV0dG9uXCI+TmV4dDwvYnV0dG9uPicsXG4gICAgICAgICAgICAgICAgYXV0b3BsYXk6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IDMwMDAsXG4gICAgICAgICAgICAgICAgY2VudGVyTW9kZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY2VudGVyUGFkZGluZzogJzUwcHgnLFxuICAgICAgICAgICAgICAgIGNzc0Vhc2U6ICdlYXNlJyxcbiAgICAgICAgICAgICAgICBjdXN0b21QYWdpbmc6IGZ1bmN0aW9uKHNsaWRlciwgaSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgnPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgLz4nKS50ZXh0KGkgKyAxKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGRvdHM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRvdHNDbGFzczogJ3NsaWNrLWRvdHMnLFxuICAgICAgICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlYXNpbmc6ICdsaW5lYXInLFxuICAgICAgICAgICAgICAgIGVkZ2VGcmljdGlvbjogMC4zNSxcbiAgICAgICAgICAgICAgICBmYWRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmb2N1c09uU2VsZWN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmb2N1c09uQ2hhbmdlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpbmZpbml0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpbml0aWFsU2xpZGU6IDAsXG4gICAgICAgICAgICAgICAgbGF6eUxvYWQ6ICdvbmRlbWFuZCcsXG4gICAgICAgICAgICAgICAgbW9iaWxlRmlyc3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHBhdXNlT25Ib3ZlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwYXVzZU9uRm9jdXM6IHRydWUsXG4gICAgICAgICAgICAgICAgcGF1c2VPbkRvdHNIb3ZlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgcmVzcG9uZFRvOiAnd2luZG93JyxcbiAgICAgICAgICAgICAgICByZXNwb25zaXZlOiBudWxsLFxuICAgICAgICAgICAgICAgIHJvd3M6IDEsXG4gICAgICAgICAgICAgICAgcnRsOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzbGlkZTogJycsXG4gICAgICAgICAgICAgICAgc2xpZGVzUGVyUm93OiAxLFxuICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMSxcbiAgICAgICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgICAgICAgICAgICAgICBzcGVlZDogNTAwLFxuICAgICAgICAgICAgICAgIHN3aXBlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN3aXBlVG9TbGlkZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgdG91Y2hNb3ZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHRvdWNoVGhyZXNob2xkOiA1LFxuICAgICAgICAgICAgICAgIHVzZUNTUzogdHJ1ZSxcbiAgICAgICAgICAgICAgICB1c2VUcmFuc2Zvcm06IHRydWUsXG4gICAgICAgICAgICAgICAgdmFyaWFibGVXaWR0aDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmVydGljYWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZlcnRpY2FsU3dpcGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgd2FpdEZvckFuaW1hdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgekluZGV4OiAxMDAwXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBfLmluaXRpYWxzID0ge1xuICAgICAgICAgICAgICAgIGFuaW1hdGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgZHJhZ2dpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGF1dG9QbGF5VGltZXI6IG51bGwsXG4gICAgICAgICAgICAgICAgY3VycmVudERpcmVjdGlvbjogMCxcbiAgICAgICAgICAgICAgICBjdXJyZW50TGVmdDogbnVsbCxcbiAgICAgICAgICAgICAgICBjdXJyZW50U2xpZGU6IDAsXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiAxLFxuICAgICAgICAgICAgICAgICRkb3RzOiBudWxsLFxuICAgICAgICAgICAgICAgIGxpc3RXaWR0aDogbnVsbCxcbiAgICAgICAgICAgICAgICBsaXN0SGVpZ2h0OiBudWxsLFxuICAgICAgICAgICAgICAgIGxvYWRJbmRleDogMCxcbiAgICAgICAgICAgICAgICAkbmV4dEFycm93OiBudWxsLFxuICAgICAgICAgICAgICAgICRwcmV2QXJyb3c6IG51bGwsXG4gICAgICAgICAgICAgICAgc2Nyb2xsaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzbGlkZUNvdW50OiBudWxsLFxuICAgICAgICAgICAgICAgIHNsaWRlV2lkdGg6IG51bGwsXG4gICAgICAgICAgICAgICAgJHNsaWRlVHJhY2s6IG51bGwsXG4gICAgICAgICAgICAgICAgJHNsaWRlczogbnVsbCxcbiAgICAgICAgICAgICAgICBzbGlkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzbGlkZU9mZnNldDogMCxcbiAgICAgICAgICAgICAgICBzd2lwZUxlZnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgc3dpcGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJGxpc3Q6IG51bGwsXG4gICAgICAgICAgICAgICAgdG91Y2hPYmplY3Q6IHt9LFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybXNFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB1bnNsaWNrZWQ6IGZhbHNlXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAkLmV4dGVuZChfLCBfLmluaXRpYWxzKTtcblxuICAgICAgICAgICAgXy5hY3RpdmVCcmVha3BvaW50ID0gbnVsbDtcbiAgICAgICAgICAgIF8uYW5pbVR5cGUgPSBudWxsO1xuICAgICAgICAgICAgXy5hbmltUHJvcCA9IG51bGw7XG4gICAgICAgICAgICBfLmJyZWFrcG9pbnRzID0gW107XG4gICAgICAgICAgICBfLmJyZWFrcG9pbnRTZXR0aW5ncyA9IFtdO1xuICAgICAgICAgICAgXy5jc3NUcmFuc2l0aW9ucyA9IGZhbHNlO1xuICAgICAgICAgICAgXy5mb2N1c3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgXy5pbnRlcnJ1cHRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgXy5oaWRkZW4gPSAnaGlkZGVuJztcbiAgICAgICAgICAgIF8ucGF1c2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIF8ucG9zaXRpb25Qcm9wID0gbnVsbDtcbiAgICAgICAgICAgIF8ucmVzcG9uZFRvID0gbnVsbDtcbiAgICAgICAgICAgIF8ucm93Q291bnQgPSAxO1xuICAgICAgICAgICAgXy5zaG91bGRDbGljayA9IHRydWU7XG4gICAgICAgICAgICBfLiRzbGlkZXIgPSAkKGVsZW1lbnQpO1xuICAgICAgICAgICAgXy4kc2xpZGVzQ2FjaGUgPSBudWxsO1xuICAgICAgICAgICAgXy50cmFuc2Zvcm1UeXBlID0gbnVsbDtcbiAgICAgICAgICAgIF8udHJhbnNpdGlvblR5cGUgPSBudWxsO1xuICAgICAgICAgICAgXy52aXNpYmlsaXR5Q2hhbmdlID0gJ3Zpc2liaWxpdHljaGFuZ2UnO1xuICAgICAgICAgICAgXy53aW5kb3dXaWR0aCA9IDA7XG4gICAgICAgICAgICBfLndpbmRvd1RpbWVyID0gbnVsbDtcblxuICAgICAgICAgICAgZGF0YVNldHRpbmdzID0gJChlbGVtZW50KS5kYXRhKCdzbGljaycpIHx8IHt9O1xuXG4gICAgICAgICAgICBfLm9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgXy5kZWZhdWx0cywgc2V0dGluZ3MsIGRhdGFTZXR0aW5ncyk7XG5cbiAgICAgICAgICAgIF8uY3VycmVudFNsaWRlID0gXy5vcHRpb25zLmluaXRpYWxTbGlkZTtcblxuICAgICAgICAgICAgXy5vcmlnaW5hbFNldHRpbmdzID0gXy5vcHRpb25zO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGRvY3VtZW50Lm1vekhpZGRlbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBfLmhpZGRlbiA9ICdtb3pIaWRkZW4nO1xuICAgICAgICAgICAgICAgIF8udmlzaWJpbGl0eUNoYW5nZSA9ICdtb3p2aXNpYmlsaXR5Y2hhbmdlJztcbiAgICAgICAgICAgI
14938H0gZWxzZSBpZiAodHlwZW9mIGRvY3VtZW50LndlYmtpdEhpZGRlbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBfLmhpZGRlbiA9ICd3ZWJraXRIaWRkZW4nO1xuICAgICAgICAgICAgICAgIF8udmlzaWJpbGl0eUNoYW5nZSA9ICd3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgXy5hdXRvUGxheSA9ICQucHJveHkoXy5hdXRvUGxheSwgXyk7XG4gICAgICAgICAgICBfLmF1dG9QbGF5Q2xlYXIgPSAkLnByb3h5KF8uYXV0b1BsYXlDbGVhciwgXyk7XG4gICAgICAgICAgICBfLmF1dG9QbGF5SXRlcmF0b3IgPSAkLnByb3h5KF8uYXV0b1BsYXlJdGVyYXRvciwgXyk7XG4gICAgICAgICAgICBfLmNoYW5nZVNsaWRlID0gJC5wcm94eShfLmNoYW5nZVNsaWRlLCBfKTtcbiAgICAgICAgICAgIF8uY2xpY2tIYW5kbGVyID0gJC5wcm94eShfLmNsaWNrSGFuZGxlciwgXyk7XG4gICAgICAgICAgICBfLnNlbGVjdEhhbmRsZXIgPSAkLnByb3h5KF8uc2VsZWN0SGFuZGxlciwgXyk7XG4gICAgICAgICAgICBfLnNldFBvc2l0aW9uID0gJC5wcm94eShfLnNldFBvc2l0aW9uLCBfKTtcbiAgICAgICAgICAgIF8uc3dpcGVIYW5kbGVyID0gJC5wcm94eShfLnN3aXBlSGFuZGxlciwgXyk7XG4gICAgICAgICAgICBfLmRyYWdIYW5kbGVyID0gJC5wcm94eShfLmRyYWdIYW5kbGVyLCBfKTtcbiAgICAgICAgICAgIF8ua2V5SGFuZGxlciA9ICQucHJveHkoXy5rZXlIYW5kbGVyLCBfKTtcblxuICAgICAgICAgICAgXy5pbnN0YW5jZVVpZCA9IGluc3RhbmNlVWlkKys7XG5cbiAgICAgICAgICAgIC8vIEEgc2ltcGxlIHdheSB0byBjaGVjayBmb3IgSFRNTCBzdHJpbmdzXG4gICAgICAgICAgICAvLyBTdHJpY3QgSFRNTCByZWNvZ25pdGlvbiAobXVzdCBzdGFydCB3aXRoIDwpXG4gICAgICAgICAgICAvLyBFeHRyYWN0ZWQgZnJvbSBqUXVlcnkgdjEuMTEgc291cmNlXG4gICAgICAgICAgICBfLmh0bWxFeHByID0gL14oPzpcXHMqKDxbXFx3XFxXXSs+KVtePl0qKSQvO1xuXG5cbiAgICAgICAgICAgIF8ucmVnaXN0ZXJCcmVha3BvaW50cygpO1xuICAgICAgICAgICAgXy5pbml0KHRydWUpO1xuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gU2xpY2s7XG5cbiAgICB9KCkpO1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmFjdGl2YXRlQURBID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLiRzbGlkZVRyYWNrLmZpbmQoJy5zbGljay1hY3RpdmUnKS5hdHRyKHtcbiAgICAgICAgICAgICdhcmlhLWh
14938pZGRlbic6ICdmYWxzZSdcbiAgICAgICAgfSkuZmluZCgnYSwgaW5wdXQsIGJ1dHRvbiwgc2VsZWN0JykuYXR0cih7XG4gICAgICAgICAgICAndGFiaW5kZXgnOiAnMCdcbiAgICAgICAgfSk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmFkZFNsaWRlID0gU2xpY2sucHJvdG90eXBlLnNsaWNrQWRkID0gZnVuY3Rpb24obWFya3VwLCBpbmRleCwgYWRkQmVmb3JlKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmICh0eXBlb2YoaW5kZXgpID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGFkZEJlZm9yZSA9IGluZGV4O1xuICAgICAgICAgICAgaW5kZXggPSBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKGluZGV4IDwgMCB8fCAoaW5kZXggPj0gXy5zbGlkZUNvdW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgXy51bmxvYWQoKTtcblxuICAgICAgICBpZiAodHlwZW9mKGluZGV4KSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCAmJiBfLiRzbGlkZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgJChtYXJrdXApLmFwcGVuZFRvKF8uJHNsaWRlVHJhY2spO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChhZGRCZWZvcmUpIHtcbiAgICAgICAgICAgICAgICAkKG1hcmt1cCkuaW5zZXJ0QmVmb3JlKF8uJHNsaWRlcy5lcShpbmRleCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAkKG1hcmt1cCkuaW5zZXJ0QWZ0ZXIoXy4kc2xpZGVzLmVxKGluZGV4KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYWRkQmVmb3JlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgJChtYXJrdXApLnByZXBlbmRUbyhfLiRzbGlkZVRyYWNrKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJChtYXJrdXApLmFwcGVuZFRvKF8uJHNsaWRlVHJhY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgXy4kc2xpZGVzID0gXy4kc2xpZGVUcmFjay5jaGlsZHJlbih0aGlzLm9wdGlvbnMuc2xpZGUpO1xuXG4gICAgICAgIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKS5kZXRhY2goKTtcblxuICAgICAgICBfLiRzbGlkZVRyYWNrLmFwcGVuZChfLiRzbGlkZXMpO1xuXG4gICAgICAgIF8uJHNsaWRlcy5lYWNoKGZ1bmN0aW9uKGluZGV4LCBlbGVtZW50KSB7XG4gICAgICAgICAgICAkKGVsZW1lbnQpLmF0dHIoJ2RhdGEtc2xpY2staW5kZXgnLCBpbmRleCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIF8uJHNsaWRlc0NhY2hlID0gXy4kc2xpZGVzO1xuXG4gICAgICAgIF8ucmVpbml0KCk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmFuaW1hdGVIZWlnaHQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuICAgICAgICBpZiAoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyA9PT0gMSAmJiBfLm9wdGlvbnMuYWRhcHRpdmVIZWlnaHQgPT09IHRydWUgJiYgXy5vcHRpb25zLnZlcnRpY2FsID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdmFyIHRhcmdldEhlaWdodCA9IF8uJHNsaWRlcy5lcShfLmN1cnJlbnRTbGlkZSkub3V0ZXJIZWlnaHQodHJ1ZSk7XG4gICAgICAgICAgICBfLiRsaXN0LmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgIGhlaWdodDogdGFyZ2V0SGVpZ2h0XG4gICAgICAgICAgICB9LCBfLm9wdGlvbnMuc3BlZWQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5hbmltYXRlU2xpZGUgPSBmdW5jdGlvbih0YXJnZXRMZWZ0LCBjYWxsYmFjaykge1xuXG4gICAgICAgIHZhciBhbmltUHJvcHMgP
14938SB7fSxcbiAgICAgICAgICAgIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uYW5pbWF0ZUhlaWdodCgpO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMucnRsID09PSB0cnVlICYmIF8ub3B0aW9ucy52ZXJ0aWNhbCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRhcmdldExlZnQgPSAtdGFyZ2V0TGVmdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy50cmFuc2Zvcm1zRW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5hbmltYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogdGFyZ2V0TGVmdFxuICAgICAgICAgICAgICAgIH0sIF8ub3B0aW9ucy5zcGVlZCwgXy5vcHRpb25zLmVhc2luZywgY2FsbGJhY2spO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgICAgICB0b3A6IHRhcmdldExlZnRcbiAgICAgICAgICAgICAgICB9LCBfLm9wdGlvbnMuc3BlZWQsIF8ub3B0aW9ucy5lYXNpbmcsIGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBpZiAoXy5jc3NUcmFuc2l0aW9ucyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLnJ0bCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBfLmN1cnJlbnRMZWZ0ID0gLShfLmN1cnJlbnRMZWZ0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJCh7XG4gICAgICAgICAgICAgICAgICAgIGFuaW1TdGFydDogXy5jdXJyZW50TGVmdFxuICAgICAgICAgICAgICAgIH0pLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgICAgICBhbmltU3RhcnQ6IHRhcmdldExlZnRcbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBfLm9wdGlvbnMuc3BlZWQsXG4gICAgICAgICAgICAgICAgICAgIGVhc2luZzogXy5vcHRpb25zLmVhc2luZyxcbiAgICAgICAgICAgICAgICAgICAgc3RlcDogZnVuY3Rpb24obm93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub3cgPSBNYXRoLmNlaWwobm93KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbVByb3BzW18uYW5pbVR5cGVdID0gJ3RyYW5zbGF0ZSgnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm93ICsgJ3B4LCAwcHgpJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcyhhbmltUHJvcHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltUHJvcHNbXy5hbmltVHlwZV0gPSAndHJhbnNsYXRlKDBweCwnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm93ICsgJ3B4KSc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jc3MoYW5pbVByb3BzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICBfLmFwcGx5VHJhbnNpdGlvbigpO1xuICAgICAgICAgICAgICAgIHRhcmdldExlZnQgPSBNYXRoLmNlaWwodGFyZ2V0TGVmdCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICBhbmltUHJvcHNbXy5hbmltVHlwZV0gPSAndHJhbnNsYXRlM2QoJyArIHRhcmdldExlZnQgKyAncHgsIDBweCwgMHB4KSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYW5pbVByb3BzW18uYW5pbVR5cGVdID0gJ3RyYW5zbGF0ZTNkKDBweCwnICsgdGFyZ2V0TGVmdCArICdweCwgMHB4KSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY3NzKGFuaW1Qcm9wcyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgXy5kaXNhYmxlVHJhbnNpdGlvbigpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIF8ub3B0aW9ucy5zcGVlZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5nZXROYXZUYXJnZXQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXMsXG4gICAgICAgICAgICBhc05hdkZvciA9IF8ub3B0aW9ucy5hc05hdkZvcjtcblxuICAgICAgICBpZiAoIGFzTmF2Rm9yICYmIGFzTmF2Rm9yICE9PSBudWxsICkge1xuICAgICAgICAgICAgYXNOYXZGb3IgPSAkKGFzTmF2Rm9yKS5ub3QoXy4kc2xpZGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhc05hdkZvcjtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYXNOYXZGb3IgPSBmdW5jdGlvbihpbmRleCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGFzTmF2Rm9yID0gXy5nZXROYXZUYXJnZXQoKTtcblxuICAgICAgICBpZiAoIGFzTmF2Rm9yICE9PSBudWxsICYmIHR5cGVvZiBhc05hdkZvciA9PT0gJ29iamVjdCcgKSB7XG4gICAgICAgICAgICBhc05hdkZvci5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSAkKHRoaXMpLnNsaWNrKCdnZXRTbGljaycpO1xuICAgICAgICAgICAgICAgIGlmKCF0YXJnZXQudW5zbGlja2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zbGlkZUhhbmRsZXIoaW5kZXgsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmFwcGx5VHJhbnNpdGlvbiA9IGZ1bmN0aW9uKHNsaWRlKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgdHJhbnNpdGlvbiA9IHt9O1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZmFkZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb25bXy50cmFuc2l0aW9uVHlwZV0gPSBfLnRyYW5zZm9ybVR5cGUgKyAnICcgKyBfLm9wdGlvbnMuc3BlZWQgKyAnbXMgJyArIF8ub3B0aW9ucy5jc3NFYXNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNpdGlvbltfLnRyYW5zaXRpb25UeXBlXSA9ICdvcGFjaXR5ICcgKyBfLm9wdGlvbnMuc3BlZWQgKyAnbXMgJyArIF8ub3B0aW9ucy5jc3NFYXNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jc3ModHJhbnNpdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfLiRzbGlkZXMuZXEoc2xpZGUpLmNzcyh0cmFuc2l0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5hdXRvUGxheSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmF1dG9QbGF5Q2xlYXIoKTtcblxuICAgICAgICBpZiAoIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKSB7XG4gICAgICAgICAgICBfLmF1dG9QbGF5VGltZXIgPSBzZXRJbnRlcnZhbCggXy5hdXRvUGxheUl0ZXJhdG9yLCBfLm9wdGlvbnMuYXV0b3BsYXlTcGVlZCApO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmF1dG9QbGF5Q2xlYXIgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8uYXV0b1BsYXlUaW1lcikge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChfLmF1dG9QbGF5VGltZXIpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmF1dG9QbGF5SXRlcmF0b3IgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBzbGlkZVRvID0gXy5jdXJyZW50U2xpZGUgKyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7XG5cbiAgICAgICAgaWYgKCAhXy5wYXVzZWQgJiYgIV8uaW50ZXJydXB0ZWQgJiYgIV8uZm9jdXNzZWQgKSB7XG5cbiAgICAgICAgICAgIGlmICggXy5vcHRpb25zLmluZmluaXRlID09PSBmYWxzZSApIHtcblxuICAgICAgICAgICAgICAgIGlmICggXy5kaXJlY3Rpb24gPT09IDEgJiYgKCBfLmN1cnJlbnRTbGlkZSArIDEgKSA9PT0gKCBfLnNsaWRlQ291bnQgLSAxICkpIHtcbiAgICAgICAgICAgICAgICAgICAgXy5kaXJlY3Rpb24gPSAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBfLmRpcmVjdGlvbiA9PT0gMCApIHtcblxuICAgICAgICAgICAgICAgICAgICBzbGlkZVRvID0gXy5jdXJyZW50U2xpZGUgLSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCBfLmN1cnJlbnRTbGlkZSAtIDEgPT09IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLmRpcmVjdGlvbiA9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfLnNsaWRlSGFuZGxlciggc2xpZGVUbyApO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYnVpbGRBcnJvd3MgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5hcnJvd3MgPT09IHRydWUgKSB7XG5cbiAgICAgICAgICAgIF8uJHByZXZBcnJvdyA9ICQoXy5vcHRpb25zLnByZXZBcnJvdykuYWRkQ2xhc3MoJ3NsaWNrLWFycm93Jyk7XG4gICAgICAgICAgICBfLiRuZXh0QXJyb3cgPSAkKF8ub3B0aW9ucy5uZXh0QXJyb3cpLmFkZENsYXNzKCdzbGljay1hcnJvdycpO1xuXG4gICAgICAgICAgICBpZiggXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyApIHtcblxuICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvdy5yZW1vdmVDbGFzcygnc2xpY2staGlkZGVuJykucmVtb3ZlQXR0cignYXJpYS1oaWRkZW4gdGFiaW5kZXgnKTtcbiAgICAgICAgICAgICAgICBfLiRuZXh0QXJyb3cucmVtb3ZlQ2xhc3MoJ3NsaWNrLWhpZGRlbicpLnJlbW92ZUF0dHIoJ2FyaWEtaGlkZGVuIHRhYmluZGV4Jyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5odG1sRXhwci50ZXN0KF8ub3B0aW9ucy5wcmV2QXJyb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvdy5wcmVwZW5kVG8oXy5vcHRpb25zLmFwcGVuZEFycm93cyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKF8uaHRtbEV4cHIudGVzdChfLm9wdGlvbnMubmV4dEFycm93KSkge1xuICAgICAgICAgICAgICAgICAgICBfLiRuZXh0QXJyb3cuYXBwZW5kVG8oXy5vcHRpb25zLmFwcGVuZEFycm93cyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5pbmZpbml0ZSAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBfLiRwcmV2QXJyb3dcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvdy5hZGQoIF8uJG5leHRBcnJvdyApXG5cbiAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1oaWRkZW4nKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cih7XG4gICAgICAgICAgICAgICAgICAgICAgICAnYXJpYS1kaXNhYmxlZCc6ICd0cnVlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0YWJpbmRleCc6ICctMSdcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmJ1aWxkRG90cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGksIGRvdDtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmRvdHMgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuXG4gICAgICAgICAgICBfLiRzbGlkZXIuYWRkQ2xhc3MoJ3NsaWNrLWRvdHRlZCcpO1xuXG4gICAgICAgICAgICBkb3QgPSAkKCc8dWwgLz4nKS5hZGRDbGFzcyhfLm9wdGlvbnMuZG90c0NsYXNzKTtcblxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8PSBfLmdldERvdENvdW50KCk7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgIGRvdC5hcHBlbmQoJCgnPGxpIC8+JykuYXBwZW5kKF8ub3B0aW9ucy5jdXN0b21QYWdpbmcuY2FsbCh0aGlzLCBfLCBpKSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfLiRkb3RzID0gZG90LmFwcGVuZFRvKF8ub3B0aW9ucy5hcHBlbmREb3RzKTtcblxuICAgICAgICAgICAgXy4kZG90cy5maW5kKCdsaScpLmZpcnN0KCkuYWRkQ2xhc3MoJ3NsaWNrLWFjdGl2ZScpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYnVpbGRPdXQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy4kc2xpZGVzID1cbiAgICAgICAgICAgIF8uJHNsaWRlclxuICAgICAgICAgICAgICAgIC5jaGlsZHJlbiggXy5vcHRpb25zLnNsaWRlICsgJzpub3QoLnNsaWNrLWNsb25lZCknKVxuICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stc2xpZGUnKTtcblxuICAgICAgICBfLnNsaWRlQ291bnQgPSBfLiRzbGlkZXMubGVuZ3RoO1xuXG4gICAgICAgIF8uJHNsaWRlcy5lYWNoKGZ1bmN0aW9uKGluZGV4LCBlbGVtZW50KSB7XG4gICAgICAgICAgICAkKGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtc2xpY2staW5kZXgnLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZGF0YSgnb3JpZ2luYWxTdHlsaW5nJywgJChlbGVtZW50KS5hdHRyKCdzdHlsZScpIHx8ICcnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgXy4kc2xpZGVyLmFkZENsYXNzKCdzbGljay1zbGlkZXInKTtcblxuICAgICAgICBfLiRzbGlkZVRyYWNrID0gKF8uc2xpZGVDb3VudCA9PT0gMCkgP1xuICAgICAgICAgICAgJCgnPGRpdiBjbGFzcz1cInNsaWNrLXRyYWNrXCIvPicpLmFwcGVuZFRvKF8uJHNsaWRlcikgOlxuICAgICAgICAgICAgXy4kc2xpZGVzLndyYXBBbGwoJzxkaXYgY2xhc3M9XCJzbGljay10cmFja1wiLz4nKS5wYXJlbnQoKTtcblxuICAgICAgICBfLiRsaXN0ID0gXy4kc2xpZGVUcmFjay53cmFwKFxuICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJzbGljay1saXN0XCIvPicpLnBhcmVudCgpO1xuICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcygnb3BhY2l0eScsIDApO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSB8fCBfLm9wdGlvbnMuc3dpcGVUb1NsaWRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgJCgnaW1nW2RhdGEtbGF6eV0nLCBfLiRzbGlkZXIpLm5vdCgnW3NyY10nKS5hZGRDbGFzcygnc2xpY2stbG9hZGluZycpO1xuXG4gICAgICAgIF8uc2V0dXBJbmZpbml0ZSgpO1xuXG4gICAgICAgIF8uYnVpbGRBcnJvd3MoKTtcblxuICAgICAgICBfLmJ1aWxkRG90cygpO1xuXG4gICAgICAgIF8udXBkYXRlRG90cygpO1xuXG5cbiAgICAgICAgXy5zZXRTbGlkZUNsYXNzZXModHlwZW9mIF8uY3VycmVudFNsaWRlID09PSAnbnVtYmVyJyA/IF8uY3VycmVudFNsaWRlIDogMCk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5kcmFnZ2FibGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uJGxpc3QuYWRkQ2xhc3MoJ2RyYWdnYWJsZScpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmJ1aWxkUm93cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcywgYSwgYiwgYywgbmV3U2xpZGVzLCBudW1PZlNsaWRlcywgb3JpZ2luYWxTbGlkZXMsc2xpZGVzUGVyU2VjdGlvbjtcblxuICAgICAgICBuZXdTbGlkZXMgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgICAgIG9yaWdpbmFsU2xpZGVzID0gXy4kc2xpZGVyLmNoaWxkcmVuKCk7XG5cbiAgICAgICAgaWYoXy5vcHRpb25zLnJvd3MgPiAwKSB7XG5cbiAgICAgICAgICAgIHNsaWRlc1BlclNlY3Rpb24gPSBfLm9wdGlvbnMuc2xpZGVzUGVyUm93ICogXy5vcHRpb25zLnJvd3M7XG4gICAgICAgICAgICBudW1PZlNsaWRlcyA9IE1hdGguY2VpbChcbiAgICAgICAgICAgICAgICBvcmlnaW5hbFNsaWRlcy5sZW5ndGggLyBzbGlkZXNQZXJTZWN0aW9uXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmb3IoYSA9IDA7IGEgPCBudW1PZlNsaWRlczsgYSsrKXtcbiAgICAgICAgICAgICAgICB2Y
14938XIgc2xpZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICBmb3IoYiA9IDA7IGIgPCBfLm9wdGlvbnMucm93czsgYisrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yKGMgPSAwOyBjIDwgXy5vcHRpb25zLnNsaWRlc1BlclJvdzsgYysrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gKGEgKiBzbGlkZXNQZXJTZWN0aW9uICsgKChiICogXy5vcHRpb25zLnNsaWRlc1BlclJvdykgKyBjKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3JpZ2luYWxTbGlkZXMuZ2V0KHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQob3JpZ2luYWxTbGlkZXMuZ2V0KHRhcmdldCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlLmFwcGVuZENoaWxkKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG5ld1NsaWRlcy5hcHBlbmRDaGlsZChzbGlkZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF8uJHNsaWRlci5lbXB0eSgpLmFwcGVuZChuZXdTbGlkZXMpO1xuICAgICAgICAgICAgXy4kc2xpZGVyLmNoaWxkcmVuKCkuY2hpbGRyZW4oKS5jaGlsZHJlbigpXG4gICAgICAgICAgICAgICAgLmNzcyh7XG4gICAgICAgICAgICAgICAgICAgICd3aWR0aCc6KDEwMCAvIF8ub3B0aW9ucy5zbGlkZXNQZXJSb3cpICsgJyUnLFxuICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSc6ICdpbmxpbmUtYmxvY2snXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5jaGVja1Jlc3BvbnNpdmUgPSBmdW5jdGlvbihpbml0aWFsLCBmb3JjZVVwZGF0ZSkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGJyZWFrcG9pbnQsIHRhcmdldEJyZWFrcG9pbnQsIHJlc3BvbmRUb1dpZHRoLCB0cmlnZ2VyQnJlYWtwb2ludCA9IGZhbHNlO1xuICAgICAgICB2Y
14938XIgc2xpZGVyV2lkdGggPSBfLiRzbGlkZXIud2lkdGgoKTtcbiAgICAgICAgdmFyIHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGggfHwgJCh3aW5kb3cpLndpZHRoKCk7XG5cbiAgICAgICAgaWYgKF8ucmVzcG9uZFRvID09PSAnd2luZG93Jykge1xuICAgICAgICAgICAgcmVzcG9uZFRvV2lkdGggPSB3aW5kb3dXaWR0aDtcbiAgICAgICAgfSBlbHNlIGlmIChfLnJlc3BvbmRUbyA9PT0gJ3NsaWRlcicpIHtcbiAgICAgICAgICAgIHJlc3BvbmRUb1dpZHRoID0gc2xpZGVyV2lkdGg7XG4gICAgICAgIH0gZWxzZSBpZiAoXy5yZXNwb25kVG8gPT09ICdtaW4nKSB7XG4gICAgICAgICAgICByZXNwb25kVG9XaWR0aCA9IE1hdGgubWluKHdpbmRvd1dpZHRoLCBzbGlkZXJXaWR0aCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIF8ub3B0aW9ucy5yZXNwb25zaXZlICYmXG4gICAgICAgICAgICBfLm9wdGlvbnMucmVzcG9uc2l2ZS5sZW5ndGggJiZcbiAgICAgICAgICAgIF8ub3B0aW9ucy5yZXNwb25zaXZlICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgIHRhcmdldEJyZWFrcG9pbnQgPSBudWxsO1xuXG4gICAgICAgICAgICBmb3IgKGJyZWFrcG9pbnQgaW4gXy5icmVha3BvaW50cykge1xuICAgICAgICAgICAgICAgIGlmIChfLmJyZWFrcG9pbnRzLmhhc093blByb3BlcnR5KGJyZWFrcG9pbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfLm9yaWdpbmFsU2V0dGluZ3MubW9iaWxlRmlyc3QgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uZFRvV2lkdGggPCBfLmJyZWFrcG9pbnRzW2JyZWFrcG9pbnRdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QnJlYWtwb2ludCA9IF8uYnJlYWtwb2ludHNbYnJlYWtwb2ludF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uZFRvV2lkdGggPiBfLmJyZWFrcG9pbnRzW2JyZWFrcG9pbnRdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QnJlYWtwb2ludCA9IF8uYnJlYWtwb2ludHNbYnJlYWtwb2ludF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0YXJnZXRCcmVha3BvaW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKF8uYWN0aXZlQnJlYWtwb2ludCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0QnJlYWtwb2ludCAhPT0gXy5hY3RpdmVCcmVha3BvaW50IHx8IGZvcmNlVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLmFjdGl2ZUJyZWFrcG9pbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEJyZWFrcG9pbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXy5icmVha3BvaW50U2V0dGluZ3NbdGFyZ2V0QnJlYWtwb2ludF0gPT09ICd1bnNsaWNrJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8udW5zbGljayh0YXJnZXRCcmVha3BvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zID0gJC5leHRlbmQoe30sIF8ub3JpZ2luYWxTZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5icmVha3BvaW50U2V0dGluZ3NbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRCcmVha3BvaW50XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluaXRpYWwgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5jdXJyZW50U2xpZGUgPSBfLm9wdGlvbnMuaW5pdGlhbFNsaWRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLnJlZnJlc2goaW5pdGlhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyQnJlYWtwb2ludCA9IHRhcmdldEJyZWFrcG9pbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBfLmFjdGl2ZUJyZWFrcG9pbnQgPSB0YXJnZXRCcmVha3BvaW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAoXy5icmVha3BvaW50U2V0dGluZ3NbdGFyZ2V0QnJlYWtwb2ludF0gPT09ICd1bnNsaWNrJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgXy51bnNsaWNrKHRhcmdldEJyZWFrcG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zID0gJC5leHRlbmQoe30sIF8ub3JpZ2luYWxTZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmJyZWFrcG9pbnRTZXR0aW5nc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QnJlYWtwb2ludF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluaXRpYWwgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSA9IF8ub3B0aW9ucy5pbml0aWFsU2xpZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBfLnJlZnJlc2goaW5pdGlhbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckJyZWFrcG9pbnQgPSB0YXJnZXRCcmVha3BvaW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKF8uYWN0aXZlQnJlYWtwb2ludCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBfLmFjdGl2ZUJyZWFrcG9pbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBfLm9wdGlvbnMgPSBfLm9yaWdpbmFsU2V0dGluZ3M7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbml0aWFsID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSA9IF8ub3B0aW9ucy5pbml0aWFsU2xpZGU7XG4gICAgICAgICAgICAgICAgICAgI
14938H1cbiAgICAgICAgICAgICAgICAgICAgXy5yZWZyZXNoKGluaXRpYWwpO1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyQnJlYWtwb2ludCA9IHRhcmdldEJyZWFrcG9pbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBvbmx5IHRyaWdnZXIgYnJlYWtwb2ludHMgZHVyaW5nIGFuIGFjdHVhbCBicmVhay4gbm90IG9uIGluaXRpYWxpemUuXG4gICAgICAgICAgICBpZiggIWluaXRpYWwgJiYgdHJpZ2dlckJyZWFrcG9pbnQgIT09IGZhbHNlICkge1xuICAgICAgICAgICAgICAgIF8uJHNsaWRlci50cmlnZ2VyKCdicmVha3BvaW50JywgW18sIHRyaWdnZXJCcmVha3BvaW50XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuY2hhbmdlU2xpZGUgPSBmdW5jdGlvbihldmVudCwgZG9udEFuaW1hdGUpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICAkdGFyZ2V0ID0gJChldmVudC5jdXJyZW50VGFyZ2V0KSxcbiAgICAgICAgICAgIGluZGV4T2Zmc2V0LCBzbGlkZU9mZnNldCwgdW5ldmVuT2Zmc2V0O1xuXG4gICAgICAgIC8vIElmIHRhcmdldCBpcyBhIGxpbmssIHByZXZlbnQgZGVmYXVsdCBhY3Rpb24uXG4gICAgICAgIGlmKCR0YXJnZXQuaXMoJ2EnKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRhcmdldCBpcyBub3QgdGhlIDxsaT4gZWxlbWVudCAoaWU6IGEgY2hpbGQpLCBmaW5kIHRoZSA8bGk+LlxuICAgICAgICBpZighJHRhcmdldC5pcygnbGknKSkge1xuICAgICAgICAgICAgJHRhcmdldCA9ICR0YXJnZXQuY2xvc2VzdCgnbGknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHVuZXZlbk9mZnNldCA9IChfLnNsaWRlQ291bnQgJSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgIT09IDApO1xuICAgICAgICBpbmRleE9mZnNldCA9IHVuZXZlbk9mZnNldCA/IDAgOiAoXy5zbGlkZUNvdW50IC0gXy5jdXJyZW50U2xpZGUpICUgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsO1xuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQuZGF0YS5tZXNzYWdlKSB7XG5cbiAgICAgICAgICAgIGNhc2UgJ3ByZXZpb3VzJzpcbiAgICAgICAgICAgICAgICBzbGlkZU9mZnNldCA9IGluZGV4T2Zmc2V0ID09PSAwID8gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDogXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAtIGluZGV4T2Zmc2V0O1xuICAgICAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICAgICAgICAgIF8uc2xpZGVIYW5kbGVyKF8uY3VycmVudFNsaWRlIC0gc2xpZGVPZmZzZXQsIGZhbHNlLCBkb250QW5pbWF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICduZXh0JzpcbiAgICAgICAgICAgICAgICBzbGlkZU9mZnNldCA9IGluZGV4T2Zmc2V0ID09PSAwID8gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDogaW5kZXhPZmZzZXQ7XG4gICAgICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgXy5zbGlkZUhhbmRsZXIoXy5jdXJyZW50U2xpZGUgKyBzbGlkZU9mZnNldCwgZmFsc2UsIGRvbnRBbmltYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2luZGV4JzpcbiAgICAgICAgICAgICAgICB2Y
14938XIgaW5kZXggPSBldmVudC5kYXRhLmluZGV4ID09PSAwID8gMCA6XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LmRhdGEuaW5kZXggfHwgJHRhcmdldC5pbmRleCgpICogXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsO1xuXG4gICAgICAgICAgICAgICAgXy5zbGlkZUhhbmRsZXIoXy5jaGVja05hdmlnYWJsZShpbmRleCksIGZhbHNlLCBkb250QW5pbWF0ZSk7XG4gICAgICAgICAgICAgICAgJHRhcmdldC5jaGlsZHJlbigpLnRyaWdnZXIoJ2ZvY3VzJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmNoZWNrTmF2aWdhYmxlID0gZnVuY3Rpb24oaW5kZXgpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBuYXZpZ2FibGVzLCBwcmV2TmF2aWdhYmxlO1xuXG4gICAgICAgIG5hdmlnYWJsZXMgPSBfLmdldE5hdmlnYWJsZUluZGV4ZXMoKTtcbiAgICAgICAgcHJldk5hdmlnYWJsZSA9IDA7XG4gICAgICAgIGlmIChpbmRleCA+IG5hdmlnYWJsZXNbbmF2aWdhYmxlcy5sZW5ndGggLSAxXSkge1xuICAgICAgICAgICAgaW5kZXggPSBuYXZpZ2FibGVzW25hdmlnYWJsZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKHZhciBuIGluIG5hdmlnYWJsZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCBuYXZpZ2FibGVzW25dKSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcHJldk5hdmlnYWJsZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHByZXZOYXZpZ2FibGUgPSBuYXZpZ2FibGVzW25dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuY2xlYW5VcEV2ZW50cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmRvdHMgJiYgXy4kZG90cyAhPT0gbnVsbCkge1xuXG4gICAgICAgICAgICAkKCdsaScsIF8uJGRvdHMpXG4gICAgICAgICAgICAgICAgLm9mZignY2xpY2suc2xpY2snLCBfLmNoYW5nZVNsaWRlKVxuICAgICAgICAgICAgICAgIC5vZmYoJ21vdXNlZW50ZXIuc2xpY2snLCAkLnByb3h5KF8uaW50ZXJydXB0LCBfLCB0cnVlKSlcbiAgICAgICAgICAgICAgICAub2ZmKCdtb3VzZWxlYXZlLnNsaWNrJywgJC5wcm94eShfLmludGVycnVwdCwgXywgZmFsc2UpKTtcblxuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgXy4kZG90cy5vZmYoJ2tleWRvd24uc2xpY2snLCBfLmtleUhhbmRsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgXy4kc2xpZGVyLm9mZignZm9jdXMuc2xpY2sgYmx1ci5zbGljaycpO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuYXJyb3dzID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgIF8uJHByZXZBcnJvdyAmJiBfLiRwcmV2QXJyb3cub2ZmKCdjbGljay5zbGljaycsIF8uY2hhbmdlU2xpZGUpO1xuICAgICAgICAgICAgXy4kbmV4dEFycm93ICYmIF8uJG5leHRBcnJvdy5vZmYoJ2NsaWNrLnNsaWNrJywgXy5jaGFuZ2VTbGlkZSk7XG5cbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvdyAmJiBfLiRwcmV2QXJyb3cub2ZmKCdrZXlkb3duLnNsaWNrJywgXy5rZXlIYW5kbGVyKTtcbiAgICAgICAgICAgICAgICBfLiRuZXh0QXJyb3cgJiYgXy4kbmV4dEFycm93Lm9mZigna2V5ZG93bi5zbGljaycsIF8ua2V5SGFuZGxlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBfLiRsaXN0Lm9mZigndG91Y2hzdGFydC5zbGljayBtb3VzZWRvd24uc2xpY2snLCBfLnN3aXBlSGFuZGxlcik7XG4gICAgICAgIF8uJGxpc3Qub2ZmKCd0b3VjaG1vdmUuc2xpY2sgbW91c2Vtb3ZlLnNsaWNrJywgXy5zd2lwZUhhbmRsZXIpO1xuICAgICAgICBfLiRsaXN0Lm9mZigndG91Y2hlbmQuc2xpY2sgbW91c2V1cC5zbGljaycsIF8uc3dpcGVIYW5kbGVyKTtcbiAgICAgICAgXy4kbGlzdC5vZmYoJ3RvdWNoY2FuY2VsLnNsaWNrIG1vdXNlbGVhdmUuc2xpY2snLCBfLnN3aXBlSGFuZGxlcik7XG5cbiAgICAgICAgXy4kbGlzdC5vZmYoJ2NsaWNrLnNsaWNrJywgXy5jbGlja0hhbmRsZXIpO1xuXG4gICAgICAgICQoZG9jdW1lbnQpLm9mZihfLnZpc2liaWxpdHlDaGFuZ2UsIF8udmlzaWJpbGl0eSk7XG5cbiAgICAgICAgXy5jbGVhblVwU2xpZGVFdmVudHMoKTtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmFjY2Vzc2liaWxpdHkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uJGxpc3Qub2ZmKCdrZXlkb3duLnNsaWNrJywgXy5rZXlIYW5kbGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZm9jdXNPblNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgJChfLiRzbGlkZVRyYWNrKS5jaGlsZHJlbigpLm9mZignY2xpY2suc2xpY2snLCBfLnNlbGVjdEhhbmRsZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJCh3aW5kb3cpLm9mZignb3JpZW50YXRpb25jaGFuZ2Uuc2xpY2suc2xpY2stJyArIF8uaW5zdGFuY2VVaWQsIF8ub3JpZW50YXRpb25DaGFuZ2UpO1xuXG4gICAgICAgICQod2luZG93KS5vZmYoJ3Jlc2l6ZS5zbGljay5zbGljay0nICsgXy5pbnN0YW5jZVVpZCwgXy5yZXNpemUpO1xuXG4gICAgICAgICQoJ1tkcmFnZ2FibGUhPXRydWVdJywgXy4kc2xpZGVUcmFjaykub2ZmKCdkcmFnc3RhcnQnLCBfLnByZXZlbnREZWZhdWx0KTtcblxuICAgICAgICAkKHdpbmRvdykub2ZmKCdsb2FkLnNsaWNrLnNsaWNrLScgKyBfLmluc3RhbmNlVWlkLCBfLnNldFBvc2l0aW9uKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuY2xlYW5VcFNsaWRlRXZlbnRzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uJGxpc3Qub2ZmKCdtb3VzZWVudGVyLnNsaWNrJywgJC5wcm94eShfLmludGVycnVwdCwgXywgdHJ1ZSkpO1xuICAgICAgICBfLiRsaXN0Lm9mZignbW91c2VsZWF2ZS5zbGljaycsICQucHJveHkoXy5pbnRlcnJ1cHQsIF8sIGZhbHNlKSk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmNsZWFuVXBSb3dzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLCBvcmlnaW5hbFNsaWRlcztcblxuICAgICAgICBpZihfLm9wdGlvbnMucm93cyA+IDApIHtcbiAgICAgICAgICAgIG9yaWdpbmFsU2xpZGVzID0gXy4kc2xpZGVzLmNoaWxkcmVuKCkuY2hpbGRyZW4oKTtcbiAgICAgICAgICAgIG9yaWdpbmFsU2xpZGVzLnJlbW92ZUF0dHIoJ3N0eWxlJyk7XG4gICAgICAgICAgICBfLiRzbGlkZXIuZW1wdHkoKS5hcHBlbmQob3JpZ2luYWxTbGlkZXMpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmNsaWNrSGFuZGxlciA9IGZ1bmN0aW9uKGV2ZW50KSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLnNob3VsZENsaWNrID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbn
14938REZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKHJlZnJlc2gpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5hdXRvUGxheUNsZWFyKCk7XG5cbiAgICAgICAgXy50b3VjaE9iamVjdCA9IHt9O1xuXG4gICAgICAgIF8uY2xlYW5VcEV2ZW50cygpO1xuXG4gICAgICAgICQoJy5zbGljay1jbG9uZWQnLCBfLiRzbGlkZXIpLmRldGFjaCgpO1xuXG4gICAgICAgIGlmIChfLiRkb3RzKSB7XG4gICAgICAgICAgICBfLiRkb3RzLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBfLiRwcmV2QXJyb3cgJiYgXy4kcHJldkFycm93Lmxlbmd0aCApIHtcblxuICAgICAgICAgICAgXy4kcHJldkFycm93XG4gICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdzbGljay1kaXNhYmxlZCBzbGljay1hcnJvdyBzbGljay1oaWRkZW4nKVxuICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdhcmlhLWhpZGRlbiBhcmlhLWRpc2FibGVkIHRhYmluZGV4JylcbiAgICAgICAgICAgICAgICAuY3NzKCdkaXNwbGF5JywnJyk7XG5cbiAgICAgICAgICAgIGlmICggXy5odG1sRXhwci50ZXN0KCBfLm9wdGlvbnMucHJldkFycm93ICkpIHtcbiAgICAgICAgICAgICAgICBfLiRwcmV2QXJyb3cucmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIF8uJG5leHRBcnJvdyAmJiBfLiRuZXh0QXJyb3cubGVuZ3RoICkge1xuXG4gICAgICAgICAgICBfLiRuZXh0QXJyb3dcbiAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLWRpc2FibGVkIHNsaWNrLWFycm93IHNsaWNrLWhpZGRlbicpXG4gICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2FyaWEtaGlkZGVuIGFyaWEtZGlzYWJsZWQgdGFiaW5kZXgnKVxuICAgICAgICAgICAgICAgIC5jc3MoJ2Rpc3BsYXknLCcnKTtcblxuICAgICAgICAgICAgaWYgKCBfLmh0bWxFeHByLnRlc3QoIF8ub3B0aW9ucy5uZXh0QXJyb3cgKSkge1xuICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdy5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG5cbiAgICAgICAgaWYgKF8uJHNsaWRlcykge1xuXG4gICAgICAgICAgICBfLiRzbGlkZXNcbiAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLXNsaWRlIHNsaWNrLWFjdGl2ZSBzbGljay1jZW50ZXIgc2xpY2stdmlzaWJsZSBzbGljay1jdXJyZW50JylcbiAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignYXJpYS1oaWRkZW4nKVxuICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkYXRhLXNsaWNrLWluZGV4JylcbiAgICAgICAgICAgICAgICAuZWFjaChmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ3N0eWxlJywgJCh0aGlzKS5kYXRhKCdvcmlnaW5hbFN0eWxpbmcnKSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKS5kZXRhY2goKTtcblxuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5kZXRhY2goKTtcblxuICAgICAgICAgICAgXy4kbGlzdC5kZXRhY2goKTtcblxuICAgICAgICAgICAgXy4kc2xpZGVyLmFwcGVuZChfLiRzbGlkZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgXy5jbGVhblVwUm93cygpO1xuXG4gICAgICAgIF8uJHNsaWRlci5yZW1vdmVDbGFzcygnc2xpY2stc2xpZGVyJyk7XG4gICAgICAgIF8uJHNsaWRlci5yZW1vdmVDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKTtcbiAgICAgICAgXy4kc2xpZGVyLnJlbW92ZUNsYXNzKCdzbGljay1kb3R0ZWQnKTtcblxuICAgICAgICBfLnVuc2xpY2tlZCA9IHRydWU7XG5cbiAgICAgICAgaWYoIXJlZnJlc2gpIHtcbiAgICAgICAgICAgIF8uJHNsaWRlci50cmlnZ2VyKCdkZXN0cm95JywgW19dKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5kaXNhYmxlVHJhbnNpdGlvbiA9IGZ1bmN0aW9uKHNsaWRlKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgdHJhbnNpdGlvbiA9IHt9O1xuXG4gICAgICAgIHRyYW5zaXRpb25bXy50cmFuc2l0aW9uVHlwZV0gPSAnJztcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmZhZGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcyh0cmFuc2l0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uJHNsaWRlcy5lcShzbGlkZSkuY3NzKHRyYW5zaXRpb24pO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmZhZGVTbGlkZSA9IGZ1bmN0aW9uKHNsaWRlSW5kZXgsIGNhbGxiYWNrKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLmNzc1RyYW5zaXRpb25zID09PSBmYWxzZSkge1xuXG4gICAgICAgICAgICBfLiRzbGlkZXMuZXEoc2xpZGVJbmRleCkuY3NzKHtcbiAgICAgICAgICAgICAgICB6SW5kZXg6IF8ub3B0aW9ucy56SW5kZXhcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBfLiRzbGlkZXMuZXEoc2xpZGVJbmRleCkuYW5pbWF0ZSh7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMVxuICAgICAgICAgICAgfSwgXy5vcHRpb25zLnNwZWVkLCBfLm9wdGlvbnMuZWFzaW5nLCBjYWxsYmFjayk7XG5cbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgXy5hcHBseVRyYW5zaXRpb24oc2xpZGVJbmRleCk7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlcy5lcShzbGlkZUluZGV4KS5jc3Moe1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgekluZGV4OiBfLm9wdGlvbnMuekluZGV4XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBfLmRpc2FibGVUcmFuc2l0aW9uKHNsaWRlSW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwoKTtcbiAgICAgICAgICAgICAgICB9LCBfLm9wdGlvbnMuc3BlZWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgI
14938H1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZmFkZVNsaWRlT3V0ID0gZnVuY3Rpb24oc2xpZGVJbmRleCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5jc3NUcmFuc2l0aW9ucyA9PT0gZmFsc2UpIHtcblxuICAgICAgICAgICAgXy4kc2xpZGVzLmVxKHNsaWRlSW5kZXgpLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgekluZGV4OiBfLm9wdGlvbnMuekluZGV4IC0gMlxuICAgICAgICAgICAgfSwgXy5vcHRpb25zLnNwZWVkLCBfLm9wdGlvbnMuZWFzaW5nKTtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBfLmFwcGx5VHJhbnNpdGlvbihzbGlkZUluZGV4KTtcblxuICAgICAgICAgICAgXy4kc2xpZGVzLmVxKHNsaWRlSW5kZXgpLmNzcyh7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IF8ub3B0aW9ucy56SW5kZXggLSAyXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmZpbHRlclNsaWRlcyA9IFNsaWNrLnByb3RvdHlwZS5zbGlja0ZpbHRlciA9IGZ1bmN0aW9uKGZpbHRlcikge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoZmlsdGVyICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlc0NhY2hlID0gXy4kc2xpZGVzO1xuXG4gICAgICAgICAgICBfLnVubG9hZCgpO1xuXG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSkuZGV0YWNoKCk7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlc0NhY2hlLmZpbHRlcihmaWx0ZXIpLmFwcGVuZFRvKF8uJHNsaWRlVHJhY2spO1xuXG4gICAgICAgICAgICBfLnJlaW5pdCgpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZm9jdXNIYW5kbGVyID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uJHNsaWRlclxuICAgICAgICAgICAgLm9mZignZm9jdXMuc2xpY2sgYmx1ci5zbGljaycpXG4gICAgICAgICAgICAub24oJ2ZvY3VzLnNsaWNrIGJsdXIuc2xpY2snLCAnKicsIGZ1bmN0aW9uKGV2ZW50KSB7XG5cbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdmFyICRzZiA9ICQodGhpcyk7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiggXy5vcHRpb25zLnBhdXNlT25Gb2N1cyApIHtcbiAgICAgICAgICAgICAgICAgICAgXy5mb2N1c3NlZCA9ICRzZi5pcygnOmZvY3VzJyk7XG4gICAgICAgICAgICAgICAgICAgIF8uYXV0b1BsYXkoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sIDApO1xuXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZ2V0Q3VycmVudCA9IFNsaWNrLnByb3RvdHlwZS5zbGlja0N1cnJlbnRTbGlkZSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcbiAgICAgICAgcmV0dXJuIF8uY3VycmVudFNsaWRlO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5nZXREb3RDb3VudCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICB2Y
14938XIgYnJlYWtQb2ludCA9IDA7XG4gICAgICAgIHZhciBjb3VudGVyID0gMDtcbiAgICAgICAgdmFyIHBhZ2VyUXR5ID0gMDtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoXy5zbGlkZUNvdW50IDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICAgICAgKytwYWdlclF0eTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGJyZWFrUG9pbnQgPCBfLnNsaWRlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgKytwYWdlclF0eTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGNvdW50ZXIgKyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgKz0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgOiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcGFnZXJRdHkgPSBfLnNsaWRlQ291bnQ7XG4gICAgICAgIH0gZWxzZSBpZighXy5vcHRpb25zLmFzTmF2Rm9yKSB7XG4gICAgICAgICAgICBwYWdlclF0eSA9IDEgKyBNYXRoLmNlaWwoKF8uc2xpZGVDb3VudCAtIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIC8gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsKTtcbiAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAgd2hpbGUgKGJyZWFrUG9pbnQgPCBfLnNsaWRlQ291bnQpIHtcbiAgICAgICAgICAgICAgICArK3BhZ2VyUXR5O1xuICAgICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBjb3VudGVyICsgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsO1xuICAgICAgICAgICAgICAgIGNvdW50ZXIgKz0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgOiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhZ2VyUXR5IC0gMTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZ2V0TGVmdCA9IGZ1bmN0aW9uKHNsaWRlSW5kZXgpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXMsXG4gICAgICAgICAgICB0YXJnZXRMZWZ0LFxuICAgICAgICAgICAgdmVydGljYWxIZWlnaHQsXG4gICAgICAgICAgICB2ZXJ0aWNhbE9mZnNldCA9IDAsXG4gICAgICAgICAgICB0YXJnZXRTbGlkZSxcbiAgICAgICAgICAgIGNvZWY7XG5cbiAgICAgICAgXy5zbGlkZU9mZnNldCA9IDA7XG4gICAgICAgIHZlcnRpY2FsSGVpZ2h0ID0gXy4kc2xpZGVzLmZpcnN0KCkub3V0ZXJIZWlnaHQodHJ1ZSk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5pbmZpbml0ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gKF8uc2xpZGVXaWR0aCAqIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpICogLTE7XG4gICAgICAgICAgICAgICAgY29lZiA9IC0xXG5cbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsID09PSB0cnVlICYmIF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuc2xpZGVzVG9TaG93ID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2VmID0gLTEuNTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChfLm9wdGlvbnMuc2xpZGVzVG9TaG93ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2VmID0gLTJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbE9mZnNldCA9ICh2ZXJ0aWNhbEhlaWdodCAqIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpICogY29lZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgJSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgIT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoc2xpZGVJbmRleCArIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA+IF8uc2xpZGVDb3VudCAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzbGlkZUluZGV4ID4gXy5zbGlkZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gKChfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC0gKHNsaWRlSW5kZXggLSBfLnNsaWRlQ291bnQpKSAqIF8uc2xpZGVXaWR0aCkgKiAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsT2Zmc2V0ID0gKChfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC0gKHNsaWRlSW5kZXggLSBfLnNsaWRlQ291bnQpKSAqIHZlcnRpY2FsSGVpZ2h0KSAqIC0xO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgXy5zbGlkZU9mZnNldCA9ICgoXy5zbGlkZUNvdW50ICUgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsKSAqIF8uc2xpZGVXaWR0aCkgKiAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsT2Zmc2V0ID0gKChfLnNsaWRlQ291bnQgJSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwpICogdmVydGljYWxIZWlnaHQpICogLTE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoc2xpZGVJbmRleCArIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPiBfLnNsaWRlQ291bnQpIHtcbiAgICAgICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gKChzbGlkZUluZGV4ICsgXy5vcHRpb25zLnNsaWRlc1RvU2hvdykgLSBfLnNsaWRlQ291bnQpICogXy5zbGlkZVdpZHRoO1xuICAgICAgICAgICAgICAgIHZlcnRpY2FsT2Zmc2V0ID0gKChzbGlkZUluZGV4ICsgXy5vcHRpb25zLnNsaWRlc1RvU2hvdykgLSBfLnNsaWRlQ291bnQpICogdmVydGljYWxIZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5zbGlkZUNvdW50IDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgIF8uc2xpZGVPZmZzZXQgPSAwO1xuICAgICAgICAgICAgdmVydGljYWxPZmZzZXQgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA8PSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gKChfLnNsaWRlV2lkdGggKiBNYXRoLmZsb29yKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpKSAvIDIpIC0gKChfLnNsaWRlV2lkdGggKiBfLnNsaWRlQ291bnQpIC8gMik7XG4gICAgICAgIH0gZWxzZSBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUgJiYgXy5vcHRpb25zLmluZmluaXRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ICs9IF8uc2xpZGVXaWR0aCAqIE1hdGguZmxvb3IoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIpIC0gXy5zbGlkZVdpZHRoO1xuICAgICAgICB9IGVsc2UgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIF8uc2xpZGVPZmZzZXQgKz0gXy5zbGlkZVdpZHRoICogTWF0aC5mbG9vcihfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGFyZ2V0TGVmdCA9ICgoc2xpZGVJbmRleCAqIF8uc2xpZGVXaWR0aCkgKiAtMSkgKyBfLnNsaWRlT2Zmc2V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGFyZ2V0TGVmdCA9ICgoc2xpZGVJbmRleCAqIHZlcnRpY2FsSGVpZ2h0KSAqIC0xKSArIHZlcnRpY2FsT2Zmc2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy52YXJpYWJsZVdpZHRoID09PSB0cnVlKSB7XG5cbiAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyB8fCBfLm9wdGlvbnMuaW5maW5pdGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0U2xpZGUgPSBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCcuc2xpY2st
14938c2xpZGUnKS5lcShzbGlkZUluZGV4KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0U2xpZGUgPSBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCcuc2xpY2stc2xpZGUnKS5lcShzbGlkZUluZGV4ICsgXy5vcHRpb25zLnNsaWRlc1RvU2hvdyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMucnRsID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldFNsaWRlWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldExlZnQgPSAoXy4kc2xpZGVUcmFjay53aWR0aCgpIC0gdGFyZ2V0U2xpZGVbMF0ub2Zmc2V0TGVmdCAtIHRhcmdldFNsaWRlLndpZHRoKCkpICogLTE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TGVmdCA9ICAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0TGVmdCA9IHRhcmdldFNsaWRlWzBdID8gdGFyZ2V0U2xpZGVbMF0ub2Zmc2V0TGVmdCAqIC0xIDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA8PSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93IHx8IF8ub3B0aW9ucy5pbmZpbml0ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0U2xpZGUgPSBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCcuc2xpY2stc2xpZGUnKS5lcShzbGlkZUluZGV4KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRTbGlkZSA9IF8uJHNsaWRlVHJhY2suY2hpbGRyZW4oJy5zbGljay1zbGlkZScpLmVxKHNsaWRlSW5kZXggKyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5ydGwgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldFNsaWRlWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRMZWZ0ID0gKF8uJHNsaWRlVHJhY2sud2lkdGgoKSAtIHRhcmdldFNsaWRlWzBdLm9mZnNldExlZnQgLSB0YXJnZXRTbGlkZS53aWR0aCgpKSAqIC0xO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TGVmdCA9ICAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TGVmdCA9IHRhcmdldFNsaWRlWzBdID8gdGFyZ2V0U2xpZGVbMF0ub2Zmc2V0TGVmdCAqIC0xIDogMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0YXJnZXRMZWZ0ICs9IChfLiRsaXN0LndpZHRoKCkgLSB0YXJnZXRTbGlkZS5vdXRlcldpZHRoKCkpIC8gMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YXJnZXRMZWZ0O1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5nZXRPcHRpb24gPSBTbGljay5wcm90b3R5cGUuc2xpY2tHZXRPcHRpb24gPSBmdW5jdGlvbihvcHRpb24pIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgcmV0dXJuIF8ub3B0aW9uc1tvcHRpb25dO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5nZXROYXZpZ2FibGVJbmRleGVzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgYnJlYWtQb2ludCA9IDAsXG4gICAgICAgICAgICBjb3VudGVyID0gMCxcbiAgICAgICAgICAgIGluZGV4ZXMgPSBbXSxcbiAgICAgICAgICAgIG1heDtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgbWF4ID0gXy5zbGlkZUNvdW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnJlYWtQb2ludCA9IF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAqIC0xO1xuICAgICAgICAgICAgY291bnRlciA9IF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAqIC0xO1xuICAgICAgICAgICAgbWF4ID0gXy5zbGlkZUNvdW50ICogMjtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChicmVha1BvaW50IDwgbWF4KSB7XG4gICAgICAgICAgICBpbmRleGVzLnB1c2goYnJlYWtQb2ludCk7XG4gICAgICAgICAgICBicmVha1BvaW50ID0gY291bnRlciArIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbDtcbiAgICAgICAgICAgIGNvdW50ZXIgKz0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgOiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZGV4ZXM7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmdldFNsaWNrID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmdldFNsaWRlQ291bnQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXMsXG4gICAgICAgICAgICBzbGlkZXNUcmF2ZXJzZWQsIHN3aXBlZFNsaWRlLCBjZW50ZXJPZmZzZXQ7XG5cbiAgICAgICAgY2VudGVyT2Zmc2V0ID0gXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUgPyBfLnNsaWRlV2lkdGggKiBNYXRoLmZsb29yKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLyAyKSA6IDA7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5zd2lwZVRvU2xpZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suZmluZCgnLnNsaWNrLXNsaWRlJykuZWFjaChmdW5jdGlvbihpbmRleCwgc2xpZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2xpZGUub2Zmc2V0TGVmdCAtIGNlbnRlck9mZnNldCArICgkKHNsaWRlKS5vdXRlcldpZHRoKCkgLyAyKSA+IChfLnN3aXBlTGVmdCAqIC0xKSkge1xuICAgICAgICAgICAgICAgICAgICBzd2lwZWRTbGlkZSA9IHNsaWRlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHNsaWRlc1RyYXZlcnNlZCA9IE1hdGguYWJzKCQoc3dpcGVkU2xpZGUpLmF0dHIoJ2RhdGEtc2xpY2staW5kZXgnKSAtIF8uY3VycmVudFNsaWRlKSB8fCAxO1xuXG4gICAgICAgICAgICByZXR1cm4gc2xpZGVzVHJhdmVyc2VkO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmdvVG8gPSBTbGljay5wcm90b3R5cGUuc2xpY2tHb1RvID0gZnVuY3Rpb24oc2xpZGUsIGRvbnRBbmltYXRlKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uY2hhbmdlU2xpZGUoe1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdpbmRleCcsXG4gICAgICAgICAgICAgICAgaW5kZXg6IHBhcnNlSW50KHNsaWRlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCBkb250QW5pbWF0ZSk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihjcmVhdGlvbikge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoISQoXy4kc2xpZGVyKS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuXG4gICAgICAgICAgICAkKF8uJHNsaWRlcikuYWRkQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgICAgIF8uYnVpbGRSb3dzKCk7XG4gICAgICAgICAgICBfLmJ1aWxkT3V0KCk7XG4gICAgICAgICAgICBfLnNldFByb3BzKCk7XG4gICAgICAgICAgICBfLnN0YXJ0TG9hZCgpO1xuICAgICAgICAgICAgXy5sb2FkU2xpZGVyKCk7XG4gICAgICAgICAgICBfLmluaXRpYWxpemVFdmVudHMoKTtcbiAgICAgICAgICAgIF8udXBkYXRlQXJyb3dzKCk7XG4gICAgICAgICAgICBfLnVwZGF0ZURvdHMoKTtcbiAgICAgICAgICAgIF8uY2hlY2tSZXNwb25zaXZlKHRydWUpO1xuICAgICAgICAgICAgXy5mb2N1c0hhbmRsZXIoKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNyZWF0aW9uKSB7XG4gICAgICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignaW5pdCcsIFtfXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLmFjY2Vzc2liaWxpdHkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uaW5pdEFEQSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBfLm9wdGlvbnMuYXV0b3BsYXkgKSB7XG5cbiAgICAgICAgICAgIF8ucGF1c2VkID0gZmFsc2U7XG4gICAgICAgICAgICBfLmF1dG9QbGF5KCk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5pbml0QURBID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgICAgICBudW1Eb3RHcm91cHMgPSBNYXRoLmNlaWwoXy5zbGlkZUNvdW50IC8gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyksXG4gICAgICAgICAgICAgICAgdGFiQ29udHJvbEluZGV4ZXMgPSBfLmdldE5hdmlnYWJsZUluZGV4ZXMoKS5maWx0ZXIoZnVuY3Rpb24odmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAodmFsID49IDApICYmICh2YWwgPCBfLnNsaWRlQ291bnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIF8uJHNsaWRlcy5hZGQoXy4kc2xpZGVUcmFjay5maW5kKCcuc2xpY2stY2xvbmVkJykpLmF0dHIoe1xuICAgICAgICAgICAgJ2FyaWEtaGlkZGVuJzogJ3RydWUnLFxuICAgICAgICAgICAgJ3RhYmluZGV4JzogJy0xJ1xuICAgICAgICB9KS5maW5kKCdhLCBpbnB1dCwgYnV0dG9uLCBzZWxlY3QnKS5hdHRyKHtcbiAgICAgICAgICAgICd0YWJpbmRleCc6ICctMSdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKF8uJGRvdHMgIT09IG51bGwpIHtcbiAgICAgICAgICAgIF8uJHNsaWRlcy5ub3QoXy4kc2xpZGVUcmFjay5maW5kKCcuc2xpY2stY2xvbmVkJykpLmVhY2goZnVuY3Rpb24oaSkge1xuICAgICAgICAgICAgICAgIHZhciBzbGlkZUNvbnRyb2xJbmRleCA9IHRhYkNvbnRyb2xJbmRleGVzLmluZGV4T2YoaSk7XG5cbiAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoe1xuICAgICAgICAgICAgICAgICAgICAncm9sZSc6ICd0YWJwYW5lbCcsXG4gICAgICAgICAgICAgICAgICAgICdpZCc6ICdzbGljay1zbGlkZScgKyBfLmluc3RhbmNlVWlkICsgaSxcbiAgICAgICAgICAgICAgICAgICAgJ3RhYmluZGV4JzogLTFcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChzbGlkZUNvbnRyb2xJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICB2Y
14938XIgYXJpYUJ1dHRvbkNvbnRyb2wgPSAnc2xpY2stc2xpZGUtY29udHJvbCcgKyBfLmluc3RhbmNlVWlkICsgc2xpZGVDb250cm9sSW5kZXhcbiAgICAgICAgICAgICAgICAgICBpZiAoJCgnIycgKyBhcmlhQnV0dG9uQ29udHJvbCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICdhcmlhLWRlc2NyaWJlZGJ5JzogYXJpYUJ1dHRvbkNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgXy4kZG90cy5hdHRyKCdyb2xlJywgJ3RhYmxpc3QnKS5maW5kKCdsaScpLmVhY2goZnVuY3Rpb24oaSkge1xuICAgICAgICAgICAgICAgIHZhciBtYXBwZWRTbGlkZUluZGV4ID0gdGFiQ29udHJvbEluZGV4ZXNbaV07XG5cbiAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoe1xuICAgICAgICAgICAgICAgICAgICAncm9sZSc6ICdwcmVzZW50YXRpb24nXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJ2J1dHRvbicpLmZpcnN0KCkuYXR0cih7XG4gICAgICAgICAgICAgICAgICAgICdyb2xlJzogJ3RhYicsXG4gICAgICAgICAgICAgICAgICAgICdpZCc6ICdzbGljay1zbGlkZS1jb250cm9sJyArIF8uaW5zdGFuY2VVaWQgKyBpLFxuICAgICAgICAgICAgICAgICAgICAnYXJpYS1jb250cm9scyc6ICdzbGljay1zbGlkZScgKyBfLmluc3RhbmNlVWlkICsgbWFwcGVkU2xpZGVJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiAoaSArIDEpICsgJyBvZiAnICsgbnVtRG90R3JvdXBzLFxuICAgICAgICAgICAgICAgICAgICAnYXJpYS1zZWxlY3RlZCc6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICd0YWJpbmRleCc6ICctMSdcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSkuZXEoXy5jdXJyZW50U2xpZGUpLmZpbmQoJ2J1dHRvbicpLmF0dHIoe1xuICAgICAgICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogJ3RydWUnLFxuICAgICAgICAgICAgICAgICd0YWJpbmRleCc6ICcwJ1xuICAgICAgICAgICAgfSkuZW5kKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBpPV8uY3VycmVudFNsaWRlLCBtYXg9aStfLm9wdGlvbnMuc2xpZGVzVG9TaG93OyBpIDwgbWF4OyBpKyspIHtcbiAgICAgICAgICBpZiAoXy5vcHRpb25zLmZvY3VzT25DaGFuZ2UpIHtcbiAgICAgICAgICAgIF8uJHNsaWRlcy5lcShpKS5hdHRyKHsndGFiaW5kZXgnOiAnMCd9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgXy4kc2xpZGVzLmVxKGkpLnJlbW92ZUF0dHIoJ3RhYmluZGV4Jyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgXy5hY3RpdmF0ZUFEQSgpO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5pbml0QXJyb3dFdmVudHMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5hcnJvd3MgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgXy4kcHJldkFycm93XG4gICAgICAgICAgICAgICAub2ZmKCdjbGljay5zbGljaycpXG4gICAgICAgICAgICAgICAub24oJ2NsaWNrLnNsaWNrJywge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAncHJldmlvdXMnXG4gICAgICAgICAgICAgICB9LCBfLmNoYW5nZVNsaWRlKTtcbiAgICAgICAgICAgIF8uJG5leHRBcnJvd1xuICAgICAgICAgICAgICAgLm9mZignY2xpY2suc2xpY2snKVxuICAgICAgICAgICAgICAgLm9uKCdjbGljay5zbGljaycsIHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ25leHQnXG4gICAgICAgICAgICAgICB9LCBfLmNoYW5nZVNsaWRlKTtcblxuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgXy4kcHJldkFycm93Lm9uKCdrZXlkb3duLnNsaWNrJywgXy5rZXlIYW5kbGVyKTtcbiAgICAgICAgICAgICAgICBfLiRuZXh0QXJyb3cub24oJ2tleWRvd24uc2xpY2snLCBfLmtleUhhbmRsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmluaXREb3RFdmVudHMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5kb3RzID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICQoJ2xpJywgXy4kZG90cykub24oJ2NsaWNrLnNsaWNrJywge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdpbmRleCdcbiAgICAgICAgICAgIH0sIF8uY2hhbmdlU2xpZGUpO1xuXG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmFjY2Vzc2liaWxpdHkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBfLiRkb3RzLm9uKCdrZXlkb3duLnNsaWNrJywgXy5rZXlIYW5kbGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZG90cyA9PT0gdHJ1ZSAmJiBfLm9wdGlvbnMucGF1c2VPbkRvdHNIb3ZlciA9PT0gdHJ1ZSAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG5cbiAgICAgICAgICAgICQoJ2xpJywgXy4kZG90cylcbiAgICAgICAgICAgICAgICAub24oJ21vdXNlZW50ZXIuc2xpY2snLCAkLnByb3h5KF8uaW50ZXJydXB0LCBfLCB0cnVlKSlcbiAgICAgICAgICAgICAgICAub24oJ21vdXNlbGVhdmUuc2xpY2snLCAkLnByb3h5KF8uaW50ZXJydXB0LCBfLCBmYWxzZSkpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuaW5pdFNsaWRlRXZlbnRzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmICggXy5vcHRpb25zLnBhdXNlT25Ib3ZlciApIHtcblxuICAgICAgICAgICAgXy4kbGlzdC5vbignbW91c2VlbnRlci5zbGljaycsICQucHJveHkoXy5pbnRlcnJ1cHQsIF8sIHRydWUpKTtcbiAgICAgICAgICAgIF8uJGxpc3Qub24oJ21vdXNlbGVhdmUuc2xpY2snLCAkLnByb3h5KF8uaW50ZXJydXB0LCBfLCBmYWxzZSkpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuaW5pdGlhbGl6ZUV2ZW50cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmluaXRBcnJvd0V2ZW50cygpO1xuXG4gICAgICAgIF8uaW5pdERvdEV2ZW50cygpO1xuICAgICAgICBfLmluaXRTbGlkZUV2ZW50cygpO1xuXG4gICAgICAgIF8uJGxpc3Qub24oJ3RvdWNoc3RhcnQuc2xpY2sgbW91c2Vkb3duLnNsaWNrJywge1xuICAgICAgICAgICAgYWN0aW9uOiAnc3RhcnQnXG4gICAgICAgIH0sIF8uc3dpcGVIYW5kbGVyKTtcbiAgICAgICAgXy4kbGlzdC5vbigndG91Y2htb3ZlLnNsaWNrIG1vdXNlbW92ZS5zbGljaycsIHtcbiAgICAgICAgICAgIGFjdGlvbjogJ21vdmUnXG4gICAgICAgIH0sIF8uc3dpcGVIYW5kbGVyKTtcbiAgICAgICAgXy4kbGlzdC5vbigndG91Y2hlbmQuc2xpY2sgbW91c2V1cC5zbGljaycsIHtcbiAgICAgICAgICAgIGFjdGlvbjogJ2VuZCdcbiAgICAgICAgfSwgXy5zd2lwZUhhbmRsZXIpO1xuICAgICAgICBfLiRsaXN0Lm9uKCd0b3VjaGNhbmNlbC5zbGljayBtb3VzZWxlYXZlLnNsaWNrJywge1xuICAgICAgICAgICAgYWN0aW9uOiAnZW5kJ1xuICAgICAgICB9LCBfLnN3aXBlSGFuZGxlcik7XG5cbiAgICAgICAgXy4kbGlzdC5vbignY2xpY2suc2xpY2snLCBfLmNsaWNrSGFuZGxlcik7XG5cbiAgICAgICAgJChkb2N1bWVudCkub24oXy52aXNpYmlsaXR5Q2hhbmdlLCAkLnByb3h5KF8udmlzaWJpbGl0eSwgXykpO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy4kbGlzdC5vbigna2V5ZG93bi5zbGljaycsIF8ua2V5SGFuZGxlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLmZvY3VzT25TZWxlY3QgPT09IHRydWUpIHtcbiAgICAgICAgICAgICQoXy4kc2xpZGVUcmFjaykuY2hpbGRyZW4oKS5vbignY2xpY2suc2xpY2snLCBfLnNlbGVjdEhhbmRsZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJCh3aW5kb3cpLm9uKCdvcmllbnRhdGlvbmNoYW5nZS5zbGljay5zbGljay0nICsgXy5pbnN0YW5jZVVpZCwgJC5wcm94eShfLm9yaWVudGF0aW9uQ2hhbmdlLCBfKSk7XG5cbiAgICAgICAgJCh3aW5kb3cpLm9uKCdyZXNpemUuc2xpY2suc2xpY2stJyArIF8uaW5zdGFuY2VVaWQsICQucHJveHkoXy5yZXNpemUsIF8pKTtcblxuICAgICAgICAkKCdbZHJhZ2dhYmxlIT10cnVlXScsIF8uJHNsaWRlVHJhY2spLm9uKCdkcmFnc3RhcnQnLCBfLnByZXZlbnREZWZhdWx0KTtcblxuICAgICAgICAkKHdpbmRvdykub24oJ2xvYWQuc2xpY2suc2xpY2stJyArIF8uaW5zdGFuY2VVaWQsIF8uc2V0UG9zaXRpb24pO1xuICAgICAgICAkKF8uc2V0UG9zaXRpb24pO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5pbml0VUkgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5hcnJvd3MgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuXG4gICAgICAgICAgICBfLiRwcmV2QXJyb3cuc2hvdygpO1xuICAgICAgICAgICAgXy4kbmV4dEFycm93LnNob3coKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5kb3RzID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcblxuICAgICAgICAgICAgXy4kZG90cy5zaG93KCk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5rZXlIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG4gICAgICAgICAvL0RvbnQgc2xpZGUgaWYgdGhlIGN1cnNvciBpcyBpbnNpZGUgdGhlIGZvcm0gZmllbGRzIGFuZCBhcnJvdyBrZXlzIGFyZSBwcmVzc2VkXG4gICAgICAgIGlmKCFldmVudC50YXJnZXQudGFnTmFtZS5tYXRjaCgnVEVYVEFSRUF8SU5QVVR8U0VMRUNUJykpIHtcbiAgICAgICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSAzNyAmJiBfLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIF8uY2hhbmdlU2xpZGUoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBfLm9wdGlvbnMucnRsID09PSB0cnVlID8gJ25leHQnIDogICdwcmV2aW91cydcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlDb2RlID09PSAzOSAmJiBfLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIF8uY2hhbmdlU2xpZGUoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBfLm9wdGlvbnMucnRsID09PSB0cnVlID8gJ3ByZXZpb3VzJyA6ICduZXh0J1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUubGF6eUxvYWQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXMsXG4gICAgICAgICAgICBsb2FkUmFuZ2UsIGNsb25lUmFuZ2UsIHJhbmdlU3RhcnQsIHJhbmdlRW5kO1xuXG4gICAgICAgIGZ1bmN0aW9uIGxvYWRJbWFnZXMoaW1hZ2VzU2NvcGUpIHtcblxuICAgICAgICAgICAgJCgnaW1nW2RhdGEtbGF6eV0nLCBpbWFnZXNTY29wZSkuZWFjaChmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHZhciBpbWFnZSA9ICQodGhpcyksXG4gICAgICAgICAgICAgICAgICAgIGltYWdlU291cmNlID0gJCh0aGlzKS5hdHRyKCdkYXRhLWxhenknKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VTcmNTZXQgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtc3Jjc2V0JyksXG4gICAgICAgICAgICAgICAgICAgIGltYWdlU2l6ZXMgID0gJCh0aGlzKS5hdHRyKCdkYXRhLXNpemVzJykgfHwgXy4kc2xpZGVyLmF0dHIoJ2RhdGEtc2l6ZXMnKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VUb0xvYWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcblxuICAgICAgICAgICAgICAgIGltYWdlVG9Mb2FkLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAuYW5pbWF0ZSh7IG9wYWNpdHk6IDAgfSwgMTAwLCBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZVNyY1NldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ3NyY3NldCcsIGltYWdlU3JjU2V0ICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlU2l6ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ3NpemVzJywgaW1hZ2VTaXplcyApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ3NyYycsIGltYWdlU291cmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYW5pbWF0ZSh7IG9wYWNpdHk6IDEgfSwgMjAwLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2RhdGEtbGF6eSBkYXRhLXNyY3NldCBkYXRhLXNpemVzJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLWxvYWRpbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2xhenlMb2FkZWQnLCBbXywgaW1hZ2UsIGltYWdlU291cmNlXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpbWFnZVRvTG9hZC5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCAnZGF0YS1sYXp5JyApXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoICdzbGljay1sb2FkaW5nJyApXG4gICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoICdzbGljay1sYXp5bG9hZC1lcnJvcicgKTtcblxuICAgICAgICAgICAgICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignbGF6eUxvYWRFcnJvcicsIFsgXywgaW1hZ2UsIGltYWdlU291cmNlIF0pO1xuXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGltYWdlVG9Mb2FkLnNyYyA9IGltYWdlU291cmNlO1xuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgcmFuZ2VTdGFydCA9IF8uY3VycmVudFNsaWRlICsgKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLyAyICsgMSk7XG4gICAgICAgICAgICAgICAgcmFuZ2VFbmQgPSByYW5nZVN0YXJ0ICsgXy5vcHRpb25zLnNsaWRlc1RvU2hvdyArIDI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJhbmdlU3RhcnQgPSBNYXRoLm1heCgwLCBfLmN1cnJlbnRTbGlkZSAtIChfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMiArIDEpKTtcbiAgICAgICAgICAgICAgICByYW5nZUVuZCA9IDIgKyAoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIgKyAxKSArIF8uY3VycmVudFNsaWRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmFuZ2VTdGFydCA9IF8ub3B0aW9ucy5pbmZpbml0ZSA/IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKyBfLmN1cnJlbnRTbGlkZSA6IF8uY3VycmVudFNsaWRlO1xuICAgICAgICAgICAgcmFuZ2VFbmQgPSBNYXRoLmNlaWwocmFuZ2VTdGFydCArIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpO1xuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJhbmdlU3RhcnQgPiAwKSByYW5nZVN0YXJ0LS07XG4gICAgICAgICAgICAgICAgaWYgKHJhbmdlRW5kIDw9IF8uc2xpZGVDb3VudCkgcmFuZ2VFbmQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxvYWRSYW5nZSA9IF8uJHNsaWRlci5maW5kKCcuc2xpY2stc2xpZGUnKS5zbGljZShyYW5nZVN0YXJ0LCByYW5nZUVuZCk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5sYXp5TG9hZCA9PT0gJ2FudGljaXBhdGVkJykge1xuICAgICAgICAgICAgdmFyIHByZXZTbGlkZSA9IHJhbmdlU3RhcnQgLSAxLFxuICAgICAgICAgICAgICAgIG5leHRTbGlkZSA9IHJhbmdlRW5kLFxuICAgICAgICAgICAgICAgICRzbGlkZXMgPSBfLiRzbGlkZXIuZmluZCgnLnNsaWNrLXNsaWRlJyk7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAocHJldlNsaWRlIDwgMCkgcHJldlNsaWRlID0gXy5zbGlkZUNvdW50IC0gMTtcbiAgICAgICAgICAgICAgICBsb2FkUmFuZ2UgPSBsb2FkUmFuZ2UuYWRkKCRzbGlkZXMuZXEocHJldlNsaWRlKSk7XG4gICAgICAgICAgICAgICAgbG9hZFJhbmdlID0gbG9hZFJhbmdlLmFkZCgkc2xpZGVzLmVxKG5leHRTbGlkZSkpO1xuICAgICAgICAgICAgICAgI
14938HByZXZTbGlkZS0tO1xuICAgICAgICAgICAgICAgIG5leHRTbGlkZSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbG9hZEltYWdlcyhsb2FkUmFuZ2UpO1xuXG4gICAgICAgIGlmIChfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgY2xvbmVSYW5nZSA9IF8uJHNsaWRlci5maW5kKCcuc2xpY2stc2xpZGUnKTtcbiAgICAgICAgICAgIGxvYWRJbWFnZXMoY2xvbmVSYW5nZSk7XG4gICAgICAgIH0gZWxzZVxuICAgICAgICBpZiAoXy5jdXJyZW50U2xpZGUgPj0gXy5zbGlkZUNvdW50IC0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgY2xvbmVSYW5nZSA9IF8uJHNsaWRlci5maW5kKCcuc2xpY2stY2xvbmVkJykuc2xpY2UoMCwgXy5vcHRpb25zLnNsaWRlc1RvU2hvdyk7XG4gICAgICAgICAgICBsb2FkSW1hZ2VzKGNsb25lUmFuZ2UpO1xuICAgICAgICB9IGVsc2UgaWYgKF8uY3VycmVudFNsaWRlID09PSAwKSB7XG4gICAgICAgICAgICBjbG9uZVJhbmdlID0gXy4kc2xpZGVyLmZpbmQoJy5zbGljay1jbG9uZWQnKS5zbGljZShfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICogLTEpO1xuICAgICAgICAgICAgbG9hZEltYWdlcyhjbG9uZVJhbmdlKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5sb2FkU2xpZGVyID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uc2V0UG9zaXRpb24oKTtcblxuICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcyh7XG4gICAgICAgICAgICBvcGFjaXR5OiAxXG4gICAgICAgIH0pO1xuXG4gICAgICAgIF8uJHNsaWRlci5yZW1vdmVDbGFzcygnc2xpY2stbG9hZGluZycpO1xuXG4gICAgICAgIF8uaW5pdFVJKCk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5sYXp5TG9hZCA9PT0gJ3Byb2dyZXNzaXZlJykge1xuICAgICAgICAgICAgXy5wcm9ncmVzc2l2ZUxhenlMb2FkKCk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUubmV4dCA9IFNsaWNrLnByb3RvdHlwZS5zbGlja05leHQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5jaGFuZ2VTbGlkZSh7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ25leHQnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5vcmllbnRhdGlvbkNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmNoZWNrUmVzcG9uc2l2ZSgpO1xuICAgICAgICBfLnNldFBvc2l0aW9uKCk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnBhdXNlID0gU2xpY2sucHJvdG90eXBlLnNsaWNrUGF1c2UgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5hdXRvUGxheUNsZWFyKCk7XG4gICAgICAgIF8ucGF1c2VkID0gdHJ1ZTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucGxheSA9IFNsaWNrLnByb3RvdHlwZS5zbGlja1BsYXkgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5hdXRvUGxheSgpO1xuICAgICAgICBfLm9wdGlvbnMuYXV0b3BsYXkgPSB0cnVlO1xuICAgICAgICBfLnBhdXNlZCA9IGZhbHNlO1xuICAgICAgICBfLmZvY3Vzc2VkID0gZmFsc2U7XG4gICAgICAgIF8uaW50ZXJydXB0ZWQgPSBmYWxzZTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucG9zdFNsaWRlID0gZnVuY3Rpb24oaW5kZXgpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYoICFfLnVuc2xpY2tlZCApIHtcblxuICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2FmdGVyQ2hhbmdlJywgW18sIGluZGV4XSk7XG5cbiAgICAgICAgICAgIF8uYW5pbWF0aW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICAgICAgXy5zZXRQb3NpdGlvbigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfLnN3aXBlTGVmdCA9IG51bGw7XG5cbiAgICAgICAgICAgIGlmICggXy5vcHRpb25zLmF1dG9wbGF5ICkge1xuICAgICAgICAgICAgICAgIF8uYXV0b1BsYXkoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgXy5pbml0QURBKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLmZvY3VzT25DaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRjdXJyZW50U2xpZGUgPSAkKF8uJHNsaWRlcy5nZXQoXy5jdXJyZW50U2xpZGUpKTtcbiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRTbGlkZS5hdHRyKCd0YWJpbmRleCcsIDApLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucHJldiA9IFNsaWNrLnByb3RvdHlwZS5zbGlja1ByZXYgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5jaGFuZ2VTbGlkZSh7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ3ByZXZpb3VzJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucHJldmVudERlZmF1bHQgPSBmdW5jdGlvbihldmVudCkge1xuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnByb2dyZXNzaXZlTGF6eUxvYWQgPSBmdW5jdGlvbiggdHJ5Q291bnQgKSB7XG5cbiAgICAgICAgdHJ5Q291bnQgPSB0cnlDb3VudCB8fCAxO1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgICRpbWdzVG9Mb2FkID0gJCggJ2ltZ1tkYXRhLWxhenldJywgXy4kc2xpZGVyICksXG4gICAgICAgICAgICBpbWFnZSxcbiAgICAgICAgICAgIGltYWdlU291cmNlLFxuICAgICAgICAgICAgaW1hZ2VTcmNTZXQsXG4gICAgICAgICAgICBpbWFnZVNpemVzLFxuICAgICAgICAgICAgaW1hZ2VUb0xvYWQ7XG5cbiAgICAgICAgaWYgKCAkaW1nc1RvTG9hZC5sZW5ndGggKSB7XG5cbiAgICAgICAgICAgIGltYWdlID0gJGltZ3NUb0xvYWQuZmlyc3QoKTtcbiAgICAgICAgICAgIGltYWdlU291cmNlID0gaW1hZ2UuYXR0cignZGF0YS1sYXp5Jyk7XG4gICAgICAgICAgICBpbWFnZVNyY1NldCA9IGltYWdlLmF0dHIoJ2RhdGEtc3Jjc2V0Jyk7XG4gICAgICAgICAgICBpbWFnZVNpemVzICA9IGltYWdlLmF0dHIoJ2RhdGEtc2l6ZXMnKSB8fCBfLiRzbGlkZXIuYXR0cignZGF0YS1zaXplcycpO1xuICAgICAgICAgICAgaW1hZ2VUb0xvYWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcblxuICAgICAgICAgICAgaW1hZ2VUb0xvYWQub25sb2FkID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoaW1hZ2VTcmNTZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdzcmNzZXQnLCBpbWFnZVNyY1NldCApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZVNpemVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdzaXplcycsIGltYWdlU2l6ZXMgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgIC5hdHRyKCAnc3JjJywgaW1hZ2VTb3VyY2UgKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGF0YS1sYXp5IGRhdGEtc3Jjc2V0IGRhdGEtc2l6ZXMnKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLWxvYWRpbmcnKTtcblxuICAgICAgICAgICAgICAgIGlmICggXy5vcHRpb25zLmFkYXB0aXZlSGVpZ2h0ID09PSB0cnVlICkge1xuICAgICAgICAgICAgICAgICAgICBfLnNldFBvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2xhenlMb2FkZWQnLCBbIF8sIGltYWdlLCBpbWFnZVNvdXJjZSBdKTtcbiAgICAgICAgICAgICAgICBfLnByb2dyZXNzaXZlTGF6eUxvYWQoKTtcblxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaW1hZ2VUb0xvYWQub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCB0cnlDb3VudCA8IDMgKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAqIHRyeSB0byBsb2FkIHRoZSBpbWFnZSAzIHRpbWVzLFxuICAgICAgICAgICAgICAgICAgICAgKiBsZWF2ZSBhIHNsaWdodCBkZWxheSBzbyB3ZSBkb24ndCBnZXRcbiAgICAgICAgICAgICAgICAgICAgICogc2VydmVycyBibG9ja2luZyB0aGUgcmVxdWVzdC5cbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgXy5wcm9ncmVzc2l2ZUxhenlMb2FkKCB0cnlDb3VudCArIDEgKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgNTAwICk7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0ciggJ2RhdGEtbGF6eScgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCAnc2xpY2stbG9hZGluZycgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCAnc2xpY2stbGF6eWxvYWQtZXJyb3InICk7XG5cbiAgICAgICAgICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2xhenlMb2FkRXJyb3InLCBbIF8sIGltYWdlLCBpbWFnZVNvdXJjZSBdKTtcblxuICAgICAgICAgICAgICAgICAgICBfLnByb2dyZXNzaXZlTGF6eUxvYWQoKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaW1hZ2VUb0xvYWQuc3JjID0gaW1hZ2VTb3VyY2U7XG5cbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2FsbEltYWdlc0xvYWRlZCcsIFsgXyBdKTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnJlZnJlc2ggPSBmdW5jdGlvbiggaW5pdGlhbGl6aW5nICkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcywgY3VycmVudFNsaWRlLCBsYXN0VmlzaWJsZUluZGV4O1xuXG4gICAgICAgIGxhc3RWaXNpYmxlSW5kZXggPSBfLnNsaWRlQ291bnQgLSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93O1xuXG4gICAgICAgIC8vIGluIG5vbi1pbmZpbml0ZSBzbGlkZXJzLCB3ZSBkb24ndCB3YW50IHRvIGdvIHBhc3QgdGhlXG4gICAgICAgIC8vIGxhc3QgdmlzaWJsZSBpbmRleC5cbiAgICAgICAgaWYoICFfLm9wdGlvbnMuaW5maW5pdGUgJiYgKCBfLmN1cnJlbnRTbGlkZSA+IGxhc3RWaXNpYmxlSW5kZXggKSkge1xuICAgICAgICAgICAgXy5jdXJyZW50U2xpZGUgPSBsYXN0VmlzaWJsZUluZGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaWYgbGVzcyBzbGlkZXMgdGhhbiB0byBzaG93LCBnbyB0byBzdGFydC5cbiAgICAgICAgaWYgKCBfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyApIHtcbiAgICAgICAgICAgIF8uY3VycmVudFNsaWRlID0gMDtcblxuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudFNsaWRlID0gXy5jdXJyZW50U2xpZGU7XG5cbiAgICAgICAgXy5kZXN0cm95KHRydWUpO1xuXG4gICAgICAgICQuZXh0ZW5kKF8sIF8uaW5pdGlhbHMsIHsgY3VycmVudFNsaWRlOiBjdXJyZW50U2xpZGUgfSk7XG5cbiAgICAgICAgXy5pbml0KCk7XG5cbiAgICAgICAgaWYoICFpbml0aWFsaXppbmcgKSB7XG5cbiAgICAgICAgICAgIF8uY2hhbmdlU2xpZGUoe1xuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ2luZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRTbGlkZVxuICAgICAgICAgICAgICAgI
14938H1cbiAgICAgICAgICAgIH0sIGZhbHNlKTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnJlZ2lzdGVyQnJlYWtwb2ludHMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsIGJyZWFrcG9pbnQsIGN1cnJlbnRCcmVha3BvaW50LCBsLFxuICAgICAgICAgICAgcmVzcG9uc2l2ZVNldHRpbmdzID0gXy5vcHRpb25zLnJlc3BvbnNpdmUgfHwgbnVsbDtcblxuICAgICAgICBpZiAoICQudHlwZShyZXNwb25zaXZlU2V0dGluZ3MpID09PSAnYXJyYXknICYmIHJlc3BvbnNpdmVTZXR0aW5ncy5sZW5ndGggKSB7XG5cbiAgICAgICAgICAgIF8ucmVzcG9uZFRvID0gXy5vcHRpb25zLnJlc3BvbmRUbyB8fCAnd2luZG93JztcblxuICAgICAgICAgICAgZm9yICggYnJlYWtwb2ludCBpbiByZXNwb25zaXZlU2V0dGluZ3MgKSB7XG5cbiAgICAgICAgICAgICAgICBsID0gXy5icmVha3BvaW50cy5sZW5ndGgtMTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zaXZlU2V0dGluZ3MuaGFzT3duUHJvcGVydHkoYnJlYWtwb2ludCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEJyZWFrcG9pbnQgPSByZXNwb25zaXZlU2V0dGluZ3NbYnJlYWtwb2ludF0uYnJlYWtwb2ludDtcblxuICAgICAgICAgICAgICAgICAgICAvLyBsb29wIHRocm91Z2ggdGhlIGJyZWFrcG9pbnRzIGFuZCBjdXQgb3V0IGFueSBleGlzdGluZ1xuICAgICAgICAgICAgICAgICAgICAvLyBvbmVzIHdpdGggdGhlIHNhbWUgYnJlYWtwb2ludCBudW1iZXIsIHdlIGRvbid0IHdhbnQgZHVwZXMuXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlKCBsID49IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiggXy5icmVha3BvaW50c1tsXSAmJiBfLmJyZWFrcG9pbnRzW2xdID09PSBjdXJyZW50QnJlYWtwb2ludCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmJyZWFrcG9pbnRzLnNwbGljZShsLDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbC0tO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgXy5icmVha3BvaW50cy5wdXNoKGN1cnJlbnRCcmVha3BvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgXy5icmVha3BvaW50U2V0dGluZ3NbY3VycmVudEJyZWFrcG9pbnRdID0gcmVzcG9uc2l2ZVNldHRpbmdzW2JyZWFrcG9pbnRdLnNldHRpbmdzO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF8uYnJlYWtwb2ludHMuc29ydChmdW5jdGlvbihhLCBiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICggXy5vcHRpb25zLm1vYmlsZUZpcnN0ICkgPyBhLWIgOiBiLWE7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnJlaW5pdCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLiRzbGlkZXMgPVxuICAgICAgICAgICAgXy4kc2xpZGVUcmFja1xuICAgICAgICAgICAgICAgIC5jaGlsZHJlbihfLm9wdGlvbnMuc2xpZGUpXG4gICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1zbGlkZScpO1xuXG4gICAgICAgIF8uc2xpZGVDb3VudCA9IF8uJHNsaWRlcy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKF8uY3VycmVudFNsaWRlID49IF8uc2xpZGVDb3VudCAmJiBfLmN1cnJlbnRTbGlkZSAhPT0gMCkge1xuICAgICAgICAgICAgXy5jdXJyZW50U2xpZGUgPSBfLmN1cnJlbnRTbGlkZSAtIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgXy5jdXJyZW50U2xpZGUgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgXy5yZWdpc3RlckJyZWFrcG9pbnRzKCk7XG5cbiAgICAgICAgXy5zZXRQcm9wcygpO1xuICAgICAgICBfLnNldHVwSW5maW5pdGUoKTtcbiAgICAgICAgXy5idWlsZEFycm93cygpO1xuICAgICAgICBfLnVwZGF0ZUFycm93cygpO1xuICAgICAgICBfLmluaXRBcnJvd0V2ZW50cygpO1xuICAgICAgICBfLmJ1aWxkRG90cygpO1xuICAgICAgICBfLnVwZGF0ZURvdHMoKTtcbiAgICAgICAgXy5pbml0RG90RXZlbnRzKCk7XG4gICAgICAgIF8uY2xlYW5VcFNsaWRlRXZlbnRzKCk7XG4gICAgICAgIF8uaW5pdFNsaWRlRXZlbnRzKCk7XG5cbiAgICAgICAgXy5jaGVja1Jlc3BvbnNpdmUoZmFsc2UsIHRydWUpO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZm9jdXNPblNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgJChfLiRzbGlkZVRyYWNrKS5jaGlsZHJlbigpLm9uKCdjbGljay5zbGljaycsIF8uc2VsZWN0SGFuZGxlcik7XG4gICAgICAgIH1cblxuICAgICAgICBfLnNldFNsaWRlQ2xhc3Nlcyh0eXBlb2YgXy5jdXJyZW50U2xpZGUgPT09ICdudW1iZXInID8gXy5jdXJyZW50U2xpZGUgOiAwKTtcblxuICAgICAgICBfLnNldFBvc2l0aW9uKCk7XG4gICAgICAgIF8uZm9jdXNIYW5kbGVyKCk7XG5cbiAgICAgICAgXy5wYXVzZWQgPSAhXy5vcHRpb25zLmF1dG9wbGF5O1xuICAgICAgICBfLmF1dG9QbGF5KCk7XG5cbiAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ3JlSW5pdCcsIFtfXSk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnJlc2l6ZSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoJCh3aW5kb3cpLndpZHRoKCkgIT09IF8ud2luZG93V2lkdGgpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChfLndpbmRvd0RlbGF5KTtcbiAgICAgICAgICAgIF8ud2luZG93RGVsYXkgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBfLndpbmRvd1dpZHRoID0gJCh3aW5kb3cpLndpZHRoKCk7XG4gICAgICAgICAgICAgICAgXy5jaGVja1Jlc3BvbnNpdmUoKTtcbiAgICAgICAgICAgICAgICBpZiggIV8udW5zbGlja2VkICkgeyBfLnNldFBvc2l0aW9uKCk7IH1cbiAgICAgICAgICAgI
14938H0sIDUwKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucmVtb3ZlU2xpZGUgPSBTbGljay5wcm90b3R5cGUuc2xpY2tSZW1vdmUgPSBmdW5jdGlvbihpbmRleCwgcmVtb3ZlQmVmb3JlLCByZW1vdmVBbGwpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHR5cGVvZihpbmRleCkgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgcmVtb3ZlQmVmb3JlID0gaW5kZXg7XG4gICAgICAgICAgICBpbmRleCA9IHJlbW92ZUJlZm9yZSA9PT0gdHJ1ZSA/IDAgOiBfLnNsaWRlQ291bnQgLSAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5kZXggPSByZW1vdmVCZWZvcmUgPT09IHRydWUgPyAtLWluZGV4IDogaW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5zbGlkZUNvdW50IDwgMSB8fCBpbmRleCA8IDAgfHwgaW5kZXggPiBfLnNsaWRlQ291bnQgLSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBfLnVubG9hZCgpO1xuXG4gICAgICAgIGlmIChyZW1vdmVBbGwgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4oKS5yZW1vdmUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKS5lcShpbmRleCkucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBfLiRzbGlkZXMgPSBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSk7XG5cbiAgICAgICAgXy4kc2xpZGVUcmFjay5jaGlsZHJlbih0aGlzLm9wdGlvbnMuc2xpZGUpLmRldGFjaCgpO1xuXG4gICAgICAgIF8uJHNsaWRlVHJhY2suYXBwZW5kKF8uJHNsaWRlcyk7XG5cbiAgICAgICAgXy4kc2xpZGVzQ2FjaGUgPSBfLiRzbGlkZXM7XG5cbiAgICAgICAgXy5yZWluaXQoKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc2V0Q1NTID0gZnVuY3Rpb24ocG9zaXRpb24pIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXMsXG4gICAgICAgICAgICBwb3NpdGlvblByb3BzID0ge30sXG4gICAgICAgICAgICB4LCB5O1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMucnRsID09PSB0cnVlKSB7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IC1wb3NpdGlvbjtcbiAgICAgICAgfVxuICAgICAgICB4ID0gXy5wb3NpdGlvblByb3AgPT0gJ2xlZnQnID8gTWF0aC5jZWlsKHBvc2l0aW9uKSArICdweCcgOiAnMHB4JztcbiAgICAgICAgeSA9IF8ucG9zaXRpb25Qcm9wID09ICd0b3AnID8gTWF0aC5jZWlsKHBvc2l0aW9uKSArICdweCcgOiAnMHB4JztcblxuICAgICAgICBwb3NpdGlvblByb3BzW18ucG9zaXRpb25Qcm9wXSA9IHBvc2l0aW9uO1xuXG4gICAgICAgIGlmIChfLnRyYW5zZm9ybXNFbmFibGVkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jc3MocG9zaXRpb25Qcm9wcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwb3NpdGlvblByb3BzID0ge307XG4gICAgICAgICAgICBpZiAoXy5jc3NUcmFuc2l0aW9ucyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvblByb3BzW18uYW5pbVR5cGVdID0gJ3RyYW5zbGF0ZSgnICsgeCArICcsICcgKyB5ICsgJyknO1xuICAgICAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY3NzKHBvc2l0aW9uUHJvcHMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvblByb3BzW18uYW5pbVR5cGVdID0gJ3RyYW5zbGF0ZTNkKCcgKyB4ICsgJywgJyArIHkgKyAnLCAwcHgpJztcbiAgICAgICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcyhwb3NpdGlvblByb3BzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXREaW1lbnNpb25zID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBfLiRsaXN0LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICgnMHB4ICcgKyBfLm9wdGlvbnMuY2VudGVyUGFkZGluZylcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uJGxpc3QuaGVpZ2h0KF8uJHNsaWRlcy5maXJzdCgpLm91dGVySGVpZ2h0KHRydWUpICogXy5vcHRpb25zLnNsaWRlc1RvU2hvdyk7XG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBfLiRsaXN0LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IChfLm9wdGlvbnMuY2VudGVyUGFkZGluZyArICcgMHB4JylcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIF8ubGlzdFdpZHRoID0gXy4kbGlzdC53aWR0aCgpO1xuICAgICAgICBfLmxpc3RIZWlnaHQgPSBfLiRsaXN0LmhlaWdodCgpO1xuXG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy52ZXJ0aWNhbCA9PT0gZmFsc2UgJiYgXy5vcHRpb25zLnZhcmlhYmxlV2lkdGggPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfLnNsaWRlV2lkdGggPSBNYXRoLmNlaWwoXy5saXN0V2lkdGggLyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KTtcbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2sud2lkdGgoTWF0aC5jZWlsKChfLnNsaWRlV2lkdGggKiBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCcuc2xpY2stc2xpZGUnKS5sZW5ndGgpKSk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChfLm9wdGlvbnMudmFyaWFibGVXaWR0aCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay53aWR0aCg1MDAwICogXy5zbGlkZUNvdW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uc2xpZGVXaWR0aCA9IE1hdGguY2VpbChfLmxpc3RXaWR0aCk7XG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmhlaWdodChNYXRoLmNlaWwoKF8uJHNsaWRlcy5maXJzdCgpLm91dGVySGVpZ2h0KHRydWUpICogXy4kc2xpZGVUcmFjay5jaGlsZHJlbignLnNsaWNrLXNsaWRlJykubGVuZ3RoKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG9mZnNldCA9IF8uJHNsaWRlcy5maXJzdCgpLm91dGVyV2lkdGgodHJ1ZSkgLSBfLiRzbGlkZXMuZmlyc3QoKS53aWR0aCgpO1xuICAgICAgICBpZiAoXy5vcHRpb25zLnZhcmlhYmxlV2lkdGggPT09IGZhbHNlKSBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCcuc2xpY2stc2xpZGUnKS53aWR0aChfLnNsaWRlV2lkdGggLSBvZmZzZXQpO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXRGYWRlID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgdGFyZ2V0TGVmdDtcblxuICAgICAgICBfLiRzbGlkZXMuZWFjaChmdW5jdGlvbihpbmRleCwgZWxlbWVudCkge1xuICAgICAgICAgICAgdGFyZ2V0TGVmdCA9IChfLnNsaWRlV2lkdGggKiBpbmRleCkgKiAtMTtcbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMucnRsID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgJChlbGVtZW50KS5jc3Moe1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IHRhcmdldExlZnQsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiBfLm9wdGlvbnMuekluZGV4IC0gMixcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAkKGVsZW1lbnQpLmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiB0YXJnZXRMZWZ0LFxuICAgICAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogXy5vcHRpb25zLnpJbmRleCAtIDIsXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDBcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgI
14938H1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgXy4kc2xpZGVzLmVxKF8uY3VycmVudFNsaWRlKS5jc3Moe1xuICAgICAgICAgICAgekluZGV4OiBfLm9wdGlvbnMuekluZGV4IC0gMSxcbiAgICAgICAgICAgIG9wYWNpdHk6IDFcbiAgICAgICAgfSk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnNldEhlaWdodCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyA9PT0gMSAmJiBfLm9wdGlvbnMuYWRhcHRpdmVIZWlnaHQgPT09IHRydWUgJiYgXy5vcHRpb25zLnZlcnRpY2FsID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdmFyIHRhcmdldEhlaWdodCA9IF8uJHNsaWRlcy5lcShfLmN1cnJlbnRTbGlkZSkub3V0ZXJIZWlnaHQodHJ1ZSk7XG4gICAgICAgICAgICBfLiRsaXN0LmNzcygnaGVpZ2h0JywgdGFyZ2V0SGVpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXRPcHRpb24gPVxuICAgIFNsaWNrLnByb3RvdHlwZS5zbGlja1NldE9wdGlvbiA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBhY2NlcHRzIGFyZ3VtZW50cyBpbiBmb3JtYXQgb2Y6XG4gICAgICAgICAqXG4gICAgICAgICAqICAtIGZvciBjaGFuZ2luZyBhIHNpbmdsZSBvcHRpb24ncyB2YWx1ZTpcbiAgICAgICAgICogICAgIC5zbGljayhcInNldE9wdGlvblwiLCBvcHRpb24sIHZhbHVlLCByZWZyZXNoIClcbiAgICAgICAgICpcbiAgICAgICAgICogIC0gZm9yIGNoYW5naW5nIGEgc2V0IG9mIHJlc3BvbnNpdmUgb3B0aW9uczpcbiAgICAgICAgICogICAgIC5zbGljayhcInNldE9wdGlvblwiLCAncmVzcG9uc2l2ZScsIFt7fSwgLi4uXSwgcmVmcmVzaCApXG4gICAgICAgICAqXG4gICAgICAgICAqICAtIGZvciB1cGRhdGluZyBtdWx0aXBsZSB2YWx1ZXMgYXQgb25jZSAobm90IHJlc3BvbnNpdmUpXG4gICAgICAgICAqICAgICAuc2xpY2soXCJzZXRPcHRpb25cIiwgeyAnb3B0aW9uJzogdmFsdWUsIC4uLiB9LCByZWZyZXNoIClcbiAgICAgICAgICovXG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLCBsLCBpdGVtLCBvcHRpb24sIHZhbHVlLCByZWZyZXNoID0gZmFsc2UsIHR5cGU7XG5cbiAgICAgICAgaWYoICQudHlwZSggYXJndW1lbnRzWzBdICkgPT09ICdvYmplY3QnICkge1xuXG4gICAgICAgICAgICBvcHRpb24gPSAgYXJndW1lbnRzWzBdO1xuICAgICAgICAgICAgcmVmcmVzaCA9IGFyZ3VtZW50c1sxXTtcbiAgICAgICAgICAgIHR5cGUgPSAnbXVsdGlwbGUnO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoICQudHlwZSggYXJndW1lbnRzWzBdICkgPT09ICdzdHJpbmcnICkge1xuXG4gICAgICAgICAgICBvcHRpb24gPSAgYXJndW1lbnRzWzBdO1xuICAgICAgICAgICAgdmFsdWUgPSBhcmd1bWVudHNbMV07XG4gICAgICAgICAgICByZWZyZXNoID0gYXJndW1lbnRzWzJdO1xuXG4gICAgICAgICAgICBpZiAoIGFyZ3VtZW50c1swXSA9PT0gJ3Jlc3BvbnNpdmUnICYmICQudHlwZSggYXJndW1lbnRzWzFdICkgPT09ICdhcnJheScgKSB7XG5cbiAgICAgICAgICAgICAgICB0eXBlID0gJ3Jlc3BvbnNpdmUnO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2YgYXJndW1lbnRzWzFdICE9PSAndW5kZWZpbmVkJyApIHtcblxuICAgICAgICAgICAgICAgIHR5cGUgPSAnc2luZ2xlJztcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHR5cGUgPT09ICdzaW5nbGUnICkge1xuXG4gICAgICAgICAgICBfLm9wdGlvbnNbb3B0aW9uXSA9IHZhbHVlO1xuXG5cbiAgICAgICAgfSBlbHNlIGlmICggdHlwZSA9PT0gJ211bHRpcGxlJyApIHtcblxuICAgICAgICAgICAgJC5lYWNoKCBvcHRpb24gLCBmdW5jdGlvbiggb3B0LCB2YWwgKSB7XG5cbiAgICAgICAgICAgICAgICBfLm9wdGlvbnNbb3B0XSA9IHZhbDtcblxuICAgICAgICAgICAgfSk7XG5cblxuICAgICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAncmVzcG9uc2l2ZScgKSB7XG5cbiAgICAgICAgICAgIGZvciAoIGl0ZW0gaW4gdmFsdWUgKSB7XG5cbiAgICAgICAgICAgICAgICBpZiggJC50eXBlKCBfLm9wdGlvbnMucmVzcG9uc2l2ZSApICE9PSAnYXJyYXknICkge1xuXG4gICAgICAgICAgICAgICAgICAgIF8ub3B0aW9ucy5yZXNwb25zaXZlID0gWyB2YWx1ZVtpdGVtXSBdO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICBsID0gXy5vcHRpb25zLnJlc3BvbnNpdmUubGVuZ3RoLTE7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gbG9vcCB0aHJvdWdoIHRoZSByZXNwb25zaXZlIG9iamVjdCBhbmQgc3BsaWNlIG91dCBkdXBsaWNhdGVzLlxuICAgICAgICAgICAgICAgICAgICB3aGlsZSggbCA+PSAwICkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiggXy5vcHRpb25zLnJlc3BvbnNpdmVbbF0uYnJlYWtwb2ludCA9PT0gdmFsdWVbaXRlbV0uYnJlYWtwb2ludCApIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8ub3B0aW9ucy5yZXNwb25zaXZlLnNwbGljZShsLDEpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGwtLTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zLnJlc3BvbnNpdmUucHVzaCggdmFsdWVbaXRlbV0gKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHJlZnJlc2ggKSB7XG5cbiAgICAgICAgICAgIF8udW5sb2FkKCk7XG4gICAgICAgICAgICBfLnJlaW5pdCgpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc2V0UG9zaXRpb24gPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5zZXREaW1lbnNpb25zKCk7XG5cbiAgICAgICAgXy5zZXRIZWlnaHQoKTtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmZhZGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfLnNldENTUyhfLmdldExlZnQoXy5jdXJyZW50U2xpZGUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uc2V0RmFkZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ3NldFBvc2l0aW9uJywgW19dKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc2V0UHJvcHMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBib2R5U3R5bGUgPSBkb2N1bWVudC5ib2R5LnN0eWxlO1xuXG4gICAgICAgIF8ucG9zaXRpb25Qcm9wID0gXy5vcHRpb25zLnZlcnRpY2FsID09PSB0cnVlID8gJ3RvcCcgOiAnbGVmdCc7XG5cbiAgICAgICAgaWYgKF8ucG9zaXRpb25Qcm9wID09PSAndG9wJykge1xuICAgICAgICAgICAgXy4kc2xpZGVyLmFkZENsYXNzKCdzbGljay12ZXJ0aWNhbCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgXy4kc2xpZGVyLnJlbW92ZUNsYXNzKCdzbGljay12ZXJ0aWNhbCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJvZHlTdHlsZS5XZWJraXRUcmFuc2l0aW9uICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGJvZHlTdHlsZS5Nb3pUcmFuc2l0aW9uICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGJvZHlTdHlsZS5tc1RyYW5zaXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy51c2VDU1MgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBfLmNzc1RyYW5zaXRpb25zID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggXy5vcHRpb25zLmZhZGUgKSB7XG4gICAgICAgICAgICBpZiAoIHR5cGVvZiBfLm9wdGlvbnMuekluZGV4ID09PSAnbnVtYmVyJyApIHtcbiAgICAgICAgICAgICAgICBpZiggXy5vcHRpb25zLnpJbmRleCA8IDMgKSB7XG4gICAgICAgICAgICAgICAgICAgIF8ub3B0aW9ucy56SW5kZXggPSAzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgXy5vcHRpb25zLnpJbmRleCA9IF8uZGVmYXVsdHMuekluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJvZHlTdHlsZS5PVHJhbnNmb3JtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIF8uYW5pbVR5cGUgPSAnT1RyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zZm9ybVR5cGUgPSAnLW8tdHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNpdGlvblR5cGUgPSAnT1RyYW5zaXRpb24nO1xuICAgICAgICAgICAgaWYgKGJvZHlTdHlsZS5wZXJzcGVjdGl2ZVByb3BlcnR5ID09PSB1bmRlZmluZWQgJiYgYm9keVN0eWxlLndlYmtpdFBlcnNwZWN0aXZlID09PSB1bmRlZmluZWQpIF8uYW5pbVR5cGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYm9keVN0eWxlLk1velRyYW5zZm9ybSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBfLmFuaW1UeXBlID0gJ01velRyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zZm9ybVR5cGUgPSAnLW1vei10cmFuc2Zvcm0nO1xuICAgICAgICAgICAgXy50cmFuc2l0aW9uVHlwZSA9ICdNb3pUcmFuc2l0aW9uJztcbiAgICAgICAgICAgIGlmIChib2R5U3R5bGUucGVyc3BlY3RpdmVQcm9wZXJ0eSA9PT0gdW5kZWZpbmVkICYmIGJvZHlTdHlsZS5Nb3pQZXJzcGVjdGl2ZSA9PT0gdW5kZWZpbmVkKSBfLmFuaW1UeXBlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJvZHlTdHlsZS53ZWJraXRUcmFuc2Zvcm0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgXy5hbmltVHlwZSA9ICd3ZWJraXRUcmFuc2Zvcm0nO1xuICAgICAgICAgICAgXy50cmFuc2Zvcm1UeXBlID0gJy13ZWJraXQtdHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNpdGlvblR5cGUgPSAnd2Via2l0VHJhbnNpdGlvbic7XG4gICAgICAgICAgICBpZiAoYm9keVN0eWxlLnBlcnNwZWN0aXZlUHJvcGVydHkgPT09IHVuZGVmaW5lZCAmJiBib2R5U3R5bGUud2Via2l0UGVyc3BlY3RpdmUgPT09IHVuZGVmaW5lZCkgXy5hbmltVHlwZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChib2R5U3R5bGUubXNUcmFuc2Zvcm0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgXy5hbmltVHlwZSA9ICdtc1RyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zZm9ybVR5cGUgPSAnLW1zLXRyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zaXRpb25UeXBlID0gJ21zVHJhbnNpdGlvbic7XG4gICAgICAgICAgICBpZiAoYm9keVN0eWxlLm1zVHJhbnNmb3JtID09PSB1bmRlZmluZWQpIF8uYW5pbVR5cGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYm9keVN0eWxlLnRyYW5zZm9ybSAhPT0gdW5kZWZpbmVkICYmIF8uYW5pbVR5cGUgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfLmFuaW1UeXBlID0gJ3RyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zZm9ybVR5cGUgPSAndHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNpdGlvblR5cGUgPSAndHJhbnNpdGlvbic7XG4gICAgICAgIH1cbiAgICAgICAgXy50cmFuc2Zvcm1zRW5hYmxlZCA9IF8ub3B0aW9ucy51c2VUcmFuc2Zvcm0gJiYgKF8uYW5pbVR5cGUgIT09IG51bGwgJiYgXy5hbmltVHlwZSAhPT0gZmFsc2UpO1xuICAgIH07XG5cblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXRTbGlkZUNsYXNzZXMgPSBmdW5jdGlvbihpbmRleCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGNlbnRlck9mZnNldCwgYWxsU2xpZGVzLCBpbmRleE9mZnNldCwgcmVtYWluZGVyO1xuXG4gICAgICAgIGFsbFNsaWRlcyA9IF8uJHNsaWRlclxuICAgICAgICAgICAgLmZpbmQoJy5zbGljay1zbGlkZScpXG4gICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLWFjdGl2ZSBzbGljay1jZW50ZXIgc2xpY2stY3VycmVudCcpXG4gICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuXG4gICAgICAgIF8uJHNsaWRlc1xuICAgICAgICAgICAgLmVxKGluZGV4KVxuICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1jdXJyZW50Jyk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlKSB7XG5cbiAgICAgICAgICAgI
14938HZhciBldmVuQ29lZiA9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgJSAyID09PSAwID8gMSA6IDA7XG5cbiAgICAgICAgICAgIGNlbnRlck9mZnNldCA9IE1hdGguZmxvb3IoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIpO1xuXG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSB0cnVlKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gY2VudGVyT2Zmc2V0ICYmIGluZGV4IDw9IChfLnNsaWRlQ291bnQgLSAxKSAtIGNlbnRlck9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICBfLiRzbGlkZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zbGljZShpbmRleCAtIGNlbnRlck9mZnNldCArIGV2ZW5Db2VmLCBpbmRleCArIGNlbnRlck9mZnNldCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ3NsaWNrLWFjdGl2ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaW5kZXhPZmZzZXQgPSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICsgaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIGFsbFNsaWRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKGluZGV4T2Zmc2V0IC0gY2VudGVyT2Zmc2V0ICsgMSArIGV2ZW5Db2VmLCBpbmRleE9mZnNldCArIGNlbnRlck9mZnNldCArIDIpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ3NsaWNrLWFjdGl2ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGFsbFNsaWRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLmVxKGFsbFNsaWRlcy5sZW5ndGggLSAxIC0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stY2VudGVyJyk7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09PSBfLnNsaWRlQ291bnQgLSAxKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgYWxsU2xpZGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAuZXEoXy5vcHRpb25zLnNsaWRlc1RvU2hvdylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stY2VudGVyJyk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgXy4kc2xpZGVzXG4gICAgICAgICAgICAgICAgLmVxKGluZGV4KVxuICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stY2VudGVyJyk7XG5cbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPD0gKF8uc2xpZGVDb3VudCAtIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpKSB7XG5cbiAgICAgICAgICAgICAgICBfLiRzbGlkZXNcbiAgICAgICAgICAgICAgICAgICAgLnNsaWNlKGluZGV4LCBpbmRleCArIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpXG4gICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stYWN0aXZlJylcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYWxsU2xpZGVzLmxlbmd0aCA8PSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG5cbiAgICAgICAgICAgICAgICBhbGxTbGlkZXNcbiAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1hY3RpdmUnKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcblxuICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgIHJlbWFpbmRlciA9IF8uc2xpZGVDb3VudCAlIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3c7XG4gICAgICAgICAgICAgICAgaW5kZXhPZmZzZXQgPSBfLm9wdGlvbnMuaW5maW5pdGUgPT09IHRydWUgPyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICsgaW5kZXggOiBpbmRleDtcblxuICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuc2xpZGVzVG9TaG93ID09IF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAmJiAoXy5zbGlkZUNvdW50IC0gaW5kZXgpIDwgXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuXG4gICAgICAgICAgICAgICAgICAgIGFsbFNsaWRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKGluZGV4T2Zmc2V0IC0gKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLSByZW1haW5kZXIpLCBpbmRleE9mZnNldCArIHJlbWFpbmRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stYWN0aXZlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdhcmlhLWh
14938pZGRlbicsICdmYWxzZScpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICBhbGxTbGlkZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zbGljZShpbmRleE9mZnNldCwgaW5kZXhPZmZzZXQgKyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1hY3RpdmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5sYXp5TG9hZCA9PT0gJ29uZGVtYW5kJyB8fCBfLm9wdGlvbnMubGF6eUxvYWQgPT09ICdhbnRpY2lwYXRlZCcpIHtcbiAgICAgICAgICAgIF8ubGF6eUxvYWQoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc2V0dXBJbmZpbml0ZSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGksIHNsaWRlSW5kZXgsIGluZmluaXRlQ291bnQ7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLm9wdGlvbnMuY2VudGVyTW9kZSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5pbmZpbml0ZSA9PT0gdHJ1ZSAmJiBfLm9wdGlvbnMuZmFkZSA9PT0gZmFsc2UpIHtcblxuICAgICAgICAgICAgc2xpZGVJbmRleCA9IG51bGw7XG5cbiAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5maW5pdGVDb3VudCA9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKyAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGluZmluaXRlQ291bnQgPSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZvciAoaSA9IF8uc2xpZGVDb3VudDsgaSA+IChfLnNsaWRlQ291bnQgLVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5maW5pdGVDb3VudCk7IGkgLT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBzbGlkZUluZGV4ID0gaSAtIDE7XG4gICAgICAgICAgICAgICAgICAgICQoXy4kc2xpZGVzW3NsaWRlSW5kZXhdKS5jbG9uZSh0cnVlKS5hdHRyKCdpZCcsICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtc2xpY2staW5kZXgnLCBzbGlkZUluZGV4IC0gXy5zbGlkZUNvdW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgLnByZXBlbmRUbyhfLiRzbGlkZVRyYWNrKS5hZGRDbGFzcygnc2xpY2stY2xvbmVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBpbmZpbml0ZUNvdW50ICArIF8uc2xpZGVDb3VudDsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlSW5kZXggPSBpO1xuICAgICAgICAgICAgICAgICAgICAkKF8uJHNsaWRlc1tzbGlkZUluZGV4XSkuY2xvbmUodHJ1ZSkuYXR0cignaWQnLCAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLXNsaWNrLWluZGV4Jywgc2xpZGVJbmRleCArIF8uc2xpZGVDb3VudClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbyhfLiRzbGlkZVRyYWNrKS5hZGRDbGFzcygnc2xpY2stY2xvbmVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suZmluZCgnLnNsaWNrLWNsb25lZCcpLmZpbmQoJ1tpZF0nKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2lkJywgJycpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5pbnRlcnJ1cHQgPSBmdW5jdGlvbiggdG9nZ2xlICkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiggIXRvZ2dsZSApIHtcbiAgICAgICAgICAgIF8uYXV0b1BsYXkoKTtcbiAgICAgICAgfVxuICAgICAgICBfLmludGVycnVwdGVkID0gdG9nZ2xlO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZWxlY3RIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgdmFyIHRhcmdldEVsZW1lbnQgPVxuICAgICAgICAgICAgJChldmVudC50YXJnZXQpLmlzKCcuc2xpY2stc2xpZGUnKSA/XG4gICAgICAgICAgICAgICAgJChldmVudC50YXJnZXQpIDpcbiAgICAgICAgICAgICAgICAkKGV2ZW50LnRhcmdldCkucGFyZW50cygnLnNsaWNrLXNsaWRlJyk7XG5cbiAgICAgICAgdmFyIGluZGV4ID0gcGFyc2VJbnQodGFyZ2V0RWxlbWVudC5hdHRyKCdkYXRhLXNsaWNrLWluZGV4JykpO1xuXG4gICAgICAgIGlmICghaW5kZXgpIGluZGV4ID0gMDtcblxuICAgICAgICBpZiAoXy5zbGlkZUNvdW50IDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcblxuICAgICAgICAgICAgXy5zbGlkZUhhbmRsZXIoaW5kZXgsIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB9XG5cbiAgICAgICAgXy5zbGlkZUhhbmRsZXIoaW5kZXgpO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zbGlkZUhhbmRsZXIgPSBmdW5jdGlvbihpbmRleCwgc3luYywgZG9udEFuaW1hdGUpIHtcblxuICAgICAgICB2YXIgdGFyZ2V0U2xpZGUsIGFuaW1TbGlkZSwgb2xkU2xpZGUsIHNsaWRlTGVmdCwgdGFyZ2V0TGVmdCA9IG51bGwsXG4gICAgICAgICAgICBfID0gdGhpcywgbmF2VGFyZ2V0O1xuXG4gICAgICAgIHN5bmMgPSBzeW5jIHx8IGZhbHNlO1xuXG4gICAgICAgIGlmIChfLmFuaW1hdGluZyA9PT0gdHJ1ZSAmJiBfLm9wdGlvbnMud2FpdEZvckFuaW1hdGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZmFkZSA9PT0gdHJ1ZSAmJiBfLmN1cnJlbnRTbGlkZSA9PT0gaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzeW5jID09PSBmYWxzZSkge1xuICAgICAgICAgICAgXy5hc05hdkZvcihpbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICB0YXJnZXRTbGlkZSA9IGluZGV4O1xuICAgICAgICB0YXJnZXRMZWZ0ID0gXy5nZXRMZWZ0KHRhcmdldFNsaWRlKTtcbiAgICAgICAgc2xpZGVMZWZ0ID0gXy5nZXRMZWZ0KF8uY3VycmVudFNsaWRlKTtcblxuICAgICAgICBfLmN1cnJlbnRMZWZ0ID0gXy5zd2lwZUxlZnQgPT09IG51bGwgPyBzbGlkZUxlZnQgOiBfLnN3aXBlTGVmdDtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSBmYWxzZSAmJiBfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gZmFsc2UgJiYgKGluZGV4IDwgMCB8fCBpbmRleCA+IF8uZ2V0RG90Q291bnQoKSAqIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCkpIHtcbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuZmFkZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRTbGlkZSA9IF8uY3VycmVudFNsaWRlO1xuICAgICAgICAgICAgICAgIGlmIChkb250QW5pbWF0ZSAhPT0gdHJ1ZSAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICAgICAgICAgIF8uYW5pbWF0ZVNsaWRlKHNsaWRlTGVmdCwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLnBvc3RTbGlkZSh0YXJnZXRTbGlkZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIF8ucG9zdFNsaWRlKHRhcmdldFNsaWRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSBmYWxzZSAmJiBfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSAmJiAoaW5kZXggPCAwIHx8IGluZGV4ID4gKF8uc2xpZGVDb3VudCAtIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCkpKSB7XG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmZhZGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0U2xpZGUgPSBfLmN1cnJlbnRTbGlkZTtcbiAgICAgICAgICAgICAgICBpZiAoZG9udEFuaW1hdGUgIT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgICAgICAgICBfLmFuaW1hdGVTbGlkZShzbGlkZUxlZnQsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgXy5wb3N0U2xpZGUodGFyZ2V0U2xpZGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBfLnBvc3RTbGlkZSh0YXJnZXRTbGlkZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBfLm9wdGlvbnMuYXV0b3BsYXkgKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKF8uYXV0b1BsYXlUaW1lcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGFyZ2V0U2xpZGUgPCAwKSB7XG4gICAgICAgICAgICBpZiAoXy5zbGlkZUNvdW50ICUgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgYW5pbVNsaWRlID0gXy5zbGlkZUNvdW50IC0gKF8uc2xpZGVDb3VudCAlIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFuaW1TbGlkZSA9IF8uc2xpZGVDb3VudCArIHRhcmdldFNsaWRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRhcmdldFNsaWRlID49IF8uc2xpZGVDb3VudCkge1xuICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCAlIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGFuaW1TbGlkZSA9IDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFuaW1TbGlkZSA9IHRhcmdldFNsaWRlIC0gXy5zbGlkZUNvdW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYW5pbVNsaWRlID0gdGFyZ2V0U2xpZGU7XG4gICAgICAgIH1cblxuICAgICAgICBfLmFuaW1hdGluZyA9IHRydWU7XG5cbiAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2JlZm9yZUNoYW5nZScsIFtfLCBfLmN1cnJlbnRTbGlkZSwgYW5pbVNsaWRlXSk7XG5cbiAgICAgICAgb2xkU2xpZGUgPSBfLmN1cnJlbnRTbGlkZTtcbiAgICAgICAgXy5jdXJyZW50U2xpZGUgPSBhbmltU2xpZGU7XG5cbiAgICAgICAgXy5zZXRTbGlkZUNsYXNzZXMoXy5jdXJyZW50U2xpZGUpO1xuXG4gICAgICAgIGlmICggXy5vcHRpb25zLmFzTmF2Rm9yICkge1xuXG4gICAgICAgICAgICBuYXZUYXJnZXQgPSBfLmdldE5hdlRhcmdldCgpO1xuICAgICAgICAgICAgbmF2VGFyZ2V0ID0gbmF2VGFyZ2V0LnNsaWNrKCdnZXRTbGljaycpO1xuXG4gICAgICAgICAgICBpZiAoIG5hdlRhcmdldC5zbGlkZUNvdW50IDw9IG5hdlRhcmdldC5vcHRpb25zLnNsaWRlc1RvU2hvdyApIHtcbiAgICAgICAgICAgICAgICBuYXZUYXJnZXQuc2V0U2xpZGVDbGFzc2VzKF8uY3VycmVudFNsaWRlKTtcbiAgICAgICAgICAgI
14938H1cblxuICAgICAgICB9XG5cbiAgICAgICAgXy51cGRhdGVEb3RzKCk7XG4gICAgICAgIF8udXBkYXRlQXJyb3dzKCk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoZG9udEFuaW1hdGUgIT09IHRydWUpIHtcblxuICAgICAgICAgICAgICAgIF8uZmFkZVNsaWRlT3V0KG9sZFNsaWRlKTtcblxuICAgICAgICAgICAgICAgIF8uZmFkZVNsaWRlKGFuaW1TbGlkZSwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIF8ucG9zdFNsaWRlKGFuaW1TbGlkZSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgXy5wb3N0U2xpZGUoYW5pbVNsaWRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF8uYW5pbWF0ZUhlaWdodCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRvbnRBbmltYXRlICE9PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgIF8uYW5pbWF0ZVNsaWRlKHRhcmdldExlZnQsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIF8ucG9zdFNsaWRlKGFuaW1TbGlkZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8ucG9zdFNsaWRlKGFuaW1TbGlkZSk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc3RhcnRMb2FkID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuYXJyb3dzID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcblxuICAgICAgICAgICAgXy4kcHJldkFycm93LmhpZGUoKTtcbiAgICAgICAgICAgIF8uJG5leHRBcnJvdy5oaWRlKCk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZG90cyA9PT0gdHJ1ZSAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG5cbiAgICAgICAgICAgIF8uJGRvdHMuaGlkZSgpO1xuXG4gICAgICAgIH1cblxuICAgICAgICBfLiRzbGlkZXIuYWRkQ2xhc3MoJ3NsaWNrLWxvYWRpbmcnKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc3dpcGVEaXJlY3Rpb24gPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
14938XIgeERpc3QsIHlEaXN0LCByLCBzd2lwZUFuZ2xlLCBfID0gdGhpcztcblxuICAgICAgICB4RGlzdCA9IF8udG91Y2hPYmplY3Quc3RhcnRYIC0gXy50b3VjaE9iamVjdC5jdXJYO1xuICAgICAgICB5RGlzdCA9IF8udG91Y2hPYmplY3Quc3RhcnRZIC0gXy50b3VjaE9iamVjdC5jdXJZO1xuICAgICAgICByID0gTWF0aC5hdGFuMih5RGlzdCwgeERpc3QpO1xuXG4gICAgICAgIHN3aXBlQW5nbGUgPSBNYXRoLnJvdW5kKHIgKiAxODAgLyBNYXRoLlBJKTtcbiAgICAgICAgaWYgKHN3aXBlQW5nbGUgPCAwKSB7XG4gICAgICAgICAgICBzd2lwZUFuZ2xlID0gMzYwIC0gTWF0aC5hYnMoc3dpcGVBbmdsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKHN3aXBlQW5nbGUgPD0gNDUpICYmIChzd2lwZUFuZ2xlID49IDApKSB7XG4gICAgICAgICAgICByZXR1cm4gKF8ub3B0aW9ucy5ydGwgPT09IGZhbHNlID8gJ2xlZnQnIDogJ3JpZ2h0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChzd2lwZUFuZ2xlIDw9IDM2MCkgJiYgKHN3aXBlQW5nbGUgPj0gMzE1KSkge1xuICAgICAgICAgICAgcmV0dXJuIChfLm9wdGlvbnMucnRsID09PSBmYWxzZSA/ICdsZWZ0JyA6ICdyaWdodCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoc3dpcGVBbmdsZSA+PSAxMzUpICYmIChzd2lwZUFuZ2xlIDw9IDIyNSkpIHtcbiAgICAgICAgICAgIHJldHVybiAoXy5vcHRpb25zLnJ0bCA9PT0gZmFsc2UgPyAncmlnaHQnIDogJ2xlZnQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgaWYgKChzd2lwZUFuZ2xlID49IDM1KSAmJiAoc3dpcGVBbmdsZSA8PSAxMzUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkb3duJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICd1cCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJ3ZlcnRpY2FsJztcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc3dpcGVFbmQgPSBmdW5jdGlvbihldmVudCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIHNsaWRlQ291bnQsXG4gICAgICAgICAgICBkaXJlY3Rpb247XG5cbiAgICAgICAgXy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgICBfLnN3aXBpbmcgPSBmYWxzZTtcblxuICAgICAgICBpZiAoXy5zY3JvbGxpbmcpIHtcbiAgICAgICAgICAgIF8uc2Nyb2xsaW5nID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBfLmludGVycnVwdGVkID0gZmFsc2U7XG4gICAgICAgIF8uc2hvdWxkQ2xpY2sgPSAoIF8udG91Y2hPYmplY3Quc3dpcGVMZW5ndGggPiAxMCApID8gZmFsc2UgOiB0cnVlO1xuXG4gICAgICAgIGlmICggXy50b3VjaE9iamVjdC5jdXJYID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIF8udG91Y2hPYmplY3QuZWRnZUhpdCA9PT0gdHJ1ZSApIHtcbiAgICAgICAgICAgIF8uJHNsaWRlci50cmlnZ2VyKCdlZGdlJywgW18sIF8uc3dpcGVEaXJlY3Rpb24oKSBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggXy50b3VjaE9iamVjdC5zd2lwZUxlbmd0aCA+PSBfLnRvdWNoT2JqZWN0Lm1pblN3aXBlICkge1xuXG4gICAgICAgICAgICBkaXJlY3Rpb24gPSBfLnN3aXBlRGlyZWN0aW9uKCk7XG5cbiAgICAgICAgICAgIHN3aXRjaCAoIGRpcmVjdGlvbiApIHtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Rvd24nOlxuXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlQ291bnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zLnN3aXBlVG9TbGlkZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5jaGVja05hdmlnYWJsZSggXy5jdXJyZW50U2xpZGUgKyBfLmdldFNsaWRlQ291bnQoKSApIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSArIF8uZ2V0U2xpZGVDb3VudCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIF8uY3VycmVudERpcmVjdGlvbiA9IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgICAgY2FzZSAndXAnOlxuXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlQ291bnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zLnN3aXBlVG9TbGlkZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5jaGVja05hdmlnYWJsZSggXy5jdXJyZW50U2xpZGUgLSBfLmdldFNsaWRlQ291bnQoKSApIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSAtIF8uZ2V0U2xpZGVDb3VudCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIF8uY3VycmVudERpcmVjdGlvbiA9IDE7XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYoIGRpcmVjdGlvbiAhPSAndmVydGljYWwnICkge1xuXG4gICAgICAgICAgICAgICAgXy5zbGlkZUhhbmRsZXIoIHNsaWRlQ291bnQgKTtcbiAgICAgICAgICAgICAgICBfLnRvdWNoT2JqZWN0ID0ge307XG4gICAgICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ3N3aXBlJywgW18sIGRpcmVjdGlvbiBdKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIGlmICggXy50b3VjaE9iamVjdC5zdGFydFggIT09IF8udG91Y2hPYmplY3QuY3VyWCApIHtcblxuICAgICAgICAgICAgICAgIF8uc2xpZGVIYW5kbGVyKCBfLmN1cnJlbnRTbGlkZSApO1xuICAgICAgICAgICAgICAgIF8udG91Y2hPYmplY3QgPSB7fTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc3dpcGVIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHtcblxuICAgICAgICB2Y
14938XIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKChfLm9wdGlvbnMuc3dpcGUgPT09IGZhbHNlKSB8fCAoJ29udG91Y2hlbmQnIGluIGRvY3VtZW50ICYmIF8ub3B0aW9ucy5zd2lwZSA9PT0gZmFsc2UpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoXy5vcHRpb25zLmRyYWdnYWJsZSA9PT0gZmFsc2UgJiYgZXZlbnQudHlwZS5pbmRleE9mKCdtb3VzZScpICE9PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgXy50b3VjaE9iamVjdC5maW5nZXJDb3VudCA9IGV2ZW50Lm9yaWdpbmFsRXZlbnQgJiYgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzICE9PSB1bmRlZmluZWQgP1xuICAgICAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzLmxlbmd0aCA6IDE7XG5cbiAgICAgICAgXy50b3VjaE9iamVjdC5taW5Td2lwZSA9IF8ubGlzdFdpZHRoIC8gXy5vcHRpb25zXG4gICAgICAgICAgICAudG91Y2hUaHJlc2hvbGQ7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy52ZXJ0aWNhbFN3aXBpbmcgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8udG91Y2hPYmplY3QubWluU3dpcGUgPSBfLmxpc3RIZWlnaHQgLyBfLm9wdGlvbnNcbiAgICAgICAgICAgICAgICAudG91Y2hUaHJlc2hvbGQ7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LmRhdGEuYWN0aW9uKSB7XG5cbiAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICAgICAgICBfLnN3aXBlU3RhcnQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdtb3ZlJzpcbiAgICAgICAgICAgICAgICBfLnN3aXBlTW92ZShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgXy5zd2lwZUVuZChldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zd2lwZU1vdmUgPSBmdW5jdGlvbihldmVudCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGVkZ2VXYXNIaXQgPSBmYWxzZSxcbiAgICAgICAgICAgIGN1ckxlZnQsIHN3aXBlRGlyZWN0aW9uLCBzd2lwZUxlbmd0aCwgcG9zaXRpb25PZmZzZXQsIHRvdWNoZXMsIHZlcnRpY2FsU3dpcGVMZW5ndGg7XG5cbiAgICAgICAgdG91Y2hlcyA9IGV2ZW50Lm9yaWdpbmFsRXZlbnQgIT09IHVuZGVmaW5lZCA/IGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlcyA6IG51bGw7XG5cbiAgICAgICAgaWYgKCFfLmRyYWdnaW5nIHx8IF8uc2Nyb2xsaW5nIHx8IHRvdWNoZXMgJiYgdG91Y2hlcy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1ckxlZnQgPSBfLmdldExlZnQoXy5jdXJyZW50U2xpZGUpO1xuXG4gICAgICAgIF8udG91Y2hPYmplY3QuY3VyWCA9IHRvdWNoZXMgIT09IHVuZGVmaW5lZCA/IHRvdWNoZXNbMF0ucGFnZVggOiBldmVudC5jbGllbnRYO1xuICAgICAgICBfLnRvdWNoT2JqZWN0LmN1clkgPSB0b3VjaGVzICE9PSB1bmRlZmluZWQgPyB0b3VjaGVzWzBdLnBhZ2VZIDogZXZlbnQuY2xpZW50WTtcblxuICAgICAgICBfLnRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoID0gTWF0aC5yb3VuZChNYXRoLnNxcnQoXG4gICAgICAgICAgICBNYXRoLnBvdyhfLnRvdWNoT2JqZWN0LmN1clggLSBfLnRvdWNoT2JqZWN0LnN0YXJ0WCwgMikpKTtcblxuICAgICAgICB2ZXJ0aWNhbFN3aXBlTGVuZ3RoID0gTWF0aC5yb3VuZChNYXRoLnNxcnQoXG4gICAgICAgICAgICBNYXRoLnBvdyhfLnRvdWNoT2JqZWN0LmN1clkgLSBfLnRvdWNoT2JqZWN0LnN0YXJ0WSwgMikpKTtcblxuICAgICAgICBpZiAoIV8ub3B0aW9ucy52ZXJ0aWNhbFN3aXBpbmcgJiYgIV8uc3dpcGluZyAmJiB2ZXJ0aWNhbFN3aXBlTGVuZ3RoID4gNCkge1xuICAgICAgICAgICAgXy5zY3JvbGxpbmcgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy52ZXJ0aWNhbFN3aXBpbmcgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8udG91Y2hPYmplY3Quc3dpcGVMZW5ndGggPSB2ZXJ0aWNhbFN3aXBlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpcGVEaXJlY3Rpb24gPSBfLnN3aXBlRGlyZWN0aW9uKCk7XG5cbiAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbmFsRXZlbnQgIT09IHVuZGVmaW5lZCAmJiBfLnRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoID4gNCkge1xuICAgICAgICAgICAgXy5zd2lwaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBwb3NpdGlvbk9mZnNldCA9IChfLm9wdGlvbnMucnRsID09PSBmYWxzZSA/IDEgOiAtMSkgKiAoXy50b3VjaE9iamVjdC5jdXJYID4gXy50b3VjaE9iamVjdC5zdGFydFggPyAxIDogLTEpO1xuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcG9zaXRpb25PZmZzZXQgPSBfLnRvdWNoT2JqZWN0LmN1clkgPiBfLnRvdWNoT2JqZWN0LnN0YXJ0WSA/IDEgOiAtMTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgc3dpcGVMZW5ndGggPSBfLnRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoO1xuXG4gICAgICAgIF8udG91Y2hPYmplY3QuZWRnZUhpdCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuaW5maW5pdGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBpZiAoKF8uY3VycmVudFNsaWRlID09PSAwICYmIHN3aXBlRGlyZWN0aW9uID09PSAncmlnaHQnKSB8fCAoXy5jdXJyZW50U2xpZGUgPj0gXy5nZXREb3RDb3VudCgpICYmIHN3aXBlRGlyZWN0aW9uID09PSAnbGVmdCcpKSB7XG4gICAgICAgICAgICAgICAgc3dpcGVMZW5ndGggPSBfLnRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoICogXy5vcHRpb25zLmVkZ2VGcmljdGlvbjtcbiAgICAgICAgICAgICAgICBfLnRvdWNoT2JqZWN0LmVkZ2VIaXQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy52ZXJ0aWNhbCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIF8uc3dpcGVMZWZ0ID0gY3VyTGVmdCArIHN3aXBlTGVuZ3RoICogcG9zaXRpb25PZmZzZXQ7XG4gICAgICAgI
14938H0gZWxzZSB7XG4gICAgICAgICAgICBfLnN3aXBlTGVmdCA9IGN1ckxlZnQgKyAoc3dpcGVMZW5ndGggKiAoXy4kbGlzdC5oZWlnaHQoKSAvIF8ubGlzdFdpZHRoKSkgKiBwb3NpdGlvbk9mZnNldDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy5zd2lwZUxlZnQgPSBjdXJMZWZ0ICsgc3dpcGVMZW5ndGggKiBwb3NpdGlvbk9mZnNldDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZmFkZSA9PT0gdHJ1ZSB8fCBfLm9wdGlvbnMudG91Y2hNb3ZlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8uYW5pbWF0aW5nID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLnN3aXBlTGVmdCA9IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBfLnNldENTUyhfLnN3aXBlTGVmdCk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnN3aXBlU3RhcnQgPSBmdW5jdGlvbihldmVudCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIHRvdWNoZXM7XG5cbiAgICAgICAgXy5pbnRlcnJ1cHRlZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKF8udG91Y2hPYmplY3QuZmluZ2VyQ291bnQgIT09IDEgfHwgXy5zbGlkZUNvdW50IDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgIF8udG91Y2hPYmplY3QgPSB7fTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5vcmlnaW5hbEV2ZW50ICE9PSB1bmRlZmluZWQgJiYgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRvdWNoZXMgPSBldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXNbMF07XG4gICAgICAgIH1cblxuICAgICAgICBfLnRvdWNoT2JqZWN0LnN0YXJ0WCA9IF8udG91Y2hPYmplY3QuY3VyWCA9IHRvdWNoZXMgIT09IHVuZGVmaW5lZCA/IHRvdWNoZXMucGFnZVggOiBldmVudC5jbGllbnRYO1xuICAgICAgICBfLnRvdWNoT2JqZWN0LnN0YXJ0WSA9IF8udG91Y2hPYmplY3QuY3VyWSA9IHRvdWNoZXMgIT09IHVuZGVmaW5lZCA/IHRvdWNoZXMucGFnZVkgOiBldmVudC5jbGllbnRZO1xuXG4gICAgICAgIF8uZHJhZ2dpbmcgPSB0cnVlO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS51bmZpbHRlclNsaWRlcyA9IFNsaWNrLnByb3RvdHlwZS5zbGlja1VuZmlsdGVyID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLiRzbGlkZXNDYWNoZSAhPT0gbnVsbCkge1xuXG4gICAgICAgICAgICBfLnVubG9hZCgpO1xuXG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSkuZGV0YWNoKCk7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlc0NhY2hlLmFwcGVuZFRvKF8uJHNsaWRlVHJhY2spO1xuXG4gICAgICAgICAgICBfLnJlaW5pdCgpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUudW5sb2FkID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgICQoJy5zbGljay1jbG9uZWQnLCBfLiRzbGlkZXIpLnJlbW92ZSgpO1xuXG4gICAgICAgIGlmIChfLiRkb3RzKSB7XG4gICAgICAgICAgICBfLiRkb3RzLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8uJHByZXZBcnJvdyAmJiBfLmh0bWxFeHByLnRlc3QoXy5vcHRpb25zLnByZXZBcnJvdykpIHtcbiAgICAgICAgICAgIF8uJHByZXZBcnJvdy5yZW1vdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLiRuZXh0QXJyb3cgJiYgXy5odG1sRXhwci50ZXN0KF8ub3B0aW9ucy5uZXh0QXJyb3cpKSB7XG4gICAgICAgICAgICBfLiRuZXh0QXJyb3cucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBfLiRzbGlkZXNcbiAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnc2xpY2stc2xpZGUgc2xpY2stYWN0aXZlIHNsaWNrLXZpc2libGUgc2xpY2stY3VycmVudCcpXG4gICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAndHJ1ZScpXG4gICAgICAgICAgICAuY3NzKCd3aWR0aCcsICcnKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUudW5zbGljayA9IGZ1bmN0aW9uKGZyb21CcmVha3BvaW50KSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcigndW5zbGljaycsIFtfLCBmcm9tQnJlYWtwb2ludF0pO1xuICAgICAgICBfLmRlc3Ryb3koKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUudXBkYXRlQXJyb3dzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgY2VudGVyT2Zmc2V0O1xuXG4gICAgICAgIGNlbnRlck9mZnNldCA9IE1hdGguZmxvb3IoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIpO1xuXG4gICAgICAgIGlmICggXy5vcHRpb25zLmFycm93cyA9PT0gdHJ1ZSAmJlxuICAgICAgICAgICAgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJlxuICAgICAgICAgICAgIV8ub3B0aW9ucy5pbmZpbml0ZSApIHtcblxuICAgICAgICAgICAgXy4kcHJldkFycm93LnJlbW92ZUNsYXNzKCdzbGljay1kaXNhYmxlZCcpLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAnZmFsc2UnKTtcbiAgICAgICAgICAgIF8uJG5leHRBcnJvdy5yZW1vdmVDbGFzcygnc2xpY2stZGlzYWJsZWQnKS5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICAgIGlmIChfLmN1cnJlbnRTbGlkZSA9PT0gMCkge1xuXG4gICAgICAgICAgICAgICAgXy4kcHJldkFycm93LmFkZENsYXNzKCdzbGljay1kaXNhYmxlZCcpLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdy5yZW1vdmVDbGFzcygnc2xpY2stZGlzYWJsZWQnKS5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICAgI
14938H0gZWxzZSBpZiAoXy5jdXJyZW50U2xpZGUgPj0gXy5zbGlkZUNvdW50IC0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJiBfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gZmFsc2UpIHtcblxuICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdy5hZGRDbGFzcygnc2xpY2stZGlzYWJsZWQnKS5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICBfLiRwcmV2QXJyb3cucmVtb3ZlQ2xhc3MoJ3NsaWNrLWRpc2FibGVkJykuYXR0cignYXJpYS1kaXNhYmxlZCcsICdmYWxzZScpO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF8uY3VycmVudFNsaWRlID49IF8uc2xpZGVDb3VudCAtIDEgJiYgXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcblxuICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdy5hZGRDbGFzcygnc2xpY2stZGlzYWJsZWQnKS5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICBfLiRwcmV2QXJyb3cucmVtb3ZlQ2xhc3MoJ3NsaWNrLWRpc2FibGVkJykuYXR0cignYXJpYS1kaXNhYmxlZCcsICdmYWxzZScpO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS51cGRhdGVEb3RzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLiRkb3RzICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgIF8uJGRvdHNcbiAgICAgICAgICAgICAgICAuZmluZCgnbGknKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLWFjdGl2ZScpXG4gICAgICAgICAgICAgICAgICAgIC5lbmQoKTtcblxuICAgICAgICAgICAgXy4kZG90c1xuICAgICAgICAgICAgICAgIC5maW5kKCdsaScpXG4gICAgICAgICAgICAgICAgLmVxKE1hdGguZmxvb3IoXy5jdXJyZW50U2xpZGUgLyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwpKVxuICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stYWN0aXZlJyk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS52aXNpYmlsaXR5ID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmICggXy5vcHRpb25zLmF1dG9wbGF5ICkge1xuXG4gICAgICAgICAgICBpZiAoIGRvY3VtZW50W18uaGlkZGVuXSApIHtcblxuICAgICAgICAgICAgICAgIF8uaW50ZXJydXB0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgXy5pbnRlcnJ1cHRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgICQuZm4uc2xpY2sgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgb3B0ID0gYXJndW1lbnRzWzBdLFxuICAgICAgICAgICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSksXG4gICAgICAgICAgICBsID0gXy5sZW5ndGgsXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgcmV0O1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdCA9PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb3B0ID09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgIF9baV0uc2xpY2sgPSBuZXcgU2xpY2soX1tpXSwgb3B0KTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXQgPSBfW2ldLnNsaWNrW29wdF0uYXBwbHkoX1tpXS5zbGljaywgYXJncyk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJldCAhPSAndW5kZWZpbmVkJykgcmV0dXJuIHJldDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXztcbiAgICB9O1xuXG59KSk7XG4iLCIoZnVuY3Rpb24gKGdsb2JhbCl7XG4oZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKSA6XG4gIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZSgndW5kZXJzY29yZScsIGZhY3RvcnkpIDpcbiAgKGdsb2JhbCA9IHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgOiBnbG9iYWwgfHwgc2VsZiwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY3VycmVudCA9IGdsb2JhbC5fO1xuICAgIHZhciBleHBvcnRzID0gZ2xvYmFsLl8gPSBmYWN0b3J5KCk7XG4gICAgZXhwb3J0cy5ub0NvbmZsaWN0ID0gZnVuY3Rpb24gKCkgeyBnbG9iYWwuXyA9IGN1cnJlbnQ7IHJldHVybiBleHBvcnRzOyB9O1xuICB9KCkpKTtcbn0odGhpcywgKGZ1bmN0aW9uICgpIHtcbiAgLy8gICAgIFVuZGVyc2NvcmUuanMgMS4xMy4xXG4gIC8vICAgICBodHRwczovL3VuZGVyc2NvcmVqcy5vcmdcbiAgLy8gICAgIChjKSAyMDA5LTIwMjEgSmVyZW15IEFzaGtlbmFzLCBKdWxpYW4gR29uZ2dyaWpwLCBhbmQgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gIC8vICAgICBVbmRlcnNjb3JlIG1heSBiZSBmcmVlbHkgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuXG4gIC8vIEN1cnJlbnQgdmVyc2lvbi5cbiAgdmFyIFZFUlNJT04gPSAnMS4xMy4xJztcblxuICAvLyBFc3RhYmxpc2ggdGhlIHJvb3Qgb2JqZWN0LCBgd2luZG93YCAoYHNlbGZgKSBpbiB0aGUgYnJvd3NlciwgYGdsb2JhbGBcbiAgLy8gb24gdGhlIHNlcnZlciwgb3IgYHRoaXNgIGluIHNvbWUgdmlydHVhbCBtYWNoaW5lcy4gV2UgdXNlIGBzZWxmYFxuICAvLyBpbnN0ZWFkIG9mIGB3aW5kb3dgIGZvciBgV2ViV29ya2VyYCBzdXBwb3J0LlxuICB2YXIgcm9vdCA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYuc2VsZiA9PT0gc2VsZiAmJiBzZWxmIHx8XG4gICAgICAgICAgICB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbC5nbG9iYWwgPT09IGdsb2JhbCAmJiBnbG9iYWwgfHxcbiAgICAgICAgICAgIEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCkgfHxcbiAgICAgICAgICAgI
14938Ht9O1xuXG4gIC8vIFNhdmUgYnl0ZXMgaW4gdGhlIG1pbmlmaWVkIChidXQgbm90IGd6aXBwZWQpIHZlcnNpb246XG4gIHZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlLCBPYmpQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG4gIHZhciBTeW1ib2xQcm90byA9IHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnID8gU3ltYm9sLnByb3RvdHlwZSA6IG51bGw7XG5cbiAgLy8gQ3JlYXRlIHF1aWNrIHJlZmVyZW5jZSB2YXJpYWJsZXMgZm9yIHNwZWVkIGFjY2VzcyB0byBjb3JlIHByb3RvdHlwZXMuXG4gIHZhciBwdXNoID0gQXJyYXlQcm90by5wdXNoLFxuICAgICAgc2xpY2UgPSBBcnJheVByb3RvLnNsaWNlLFxuICAgICAgdG9TdHJpbmcgPSBPYmpQcm90by50b1N0cmluZyxcbiAgICAgIGhhc093blByb3BlcnR5ID0gT2JqUHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbiAgLy8gTW9kZXJuIGZlYXR1cmUgZGV0ZWN0aW9uLlxuICB2YXIgc3VwcG9ydHNBcnJheUJ1ZmZlciA9IHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcsXG4gICAgICBzdXBwb3J0c0RhdGFWaWV3ID0gdHlwZW9mIERhdGFWaWV3ICE9PSAndW5kZWZpbmVkJztcblxuICAvLyBBbGwgKipFQ01BU2NyaXB0IDUrKiogbmF0aXZlIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucyB0aGF0IHdlIGhvcGUgdG8gdXNlXG4gIC8vIGFyZSBkZWNsYXJlZCBoZXJlLlxuICB2YXIgbmF0aXZlSXNBcnJheSA9IEFycmF5LmlzQXJyYXksXG4gICAgICBuYXRpdmVLZXlzID0gT2JqZWN0LmtleXMsXG4gICAgICBuYXRpdmVDcmVhdGUgPSBPYmplY3QuY3JlYXRlLFxuICAgICAgbmF0aXZlSXNWaWV3ID0gc3VwcG9ydHNBcnJheUJ1ZmZlciAmJiBBcnJheUJ1ZmZlci5pc1ZpZXc7XG5cbiAgLy8gQ3JlYXRlIHJlZmVyZW5jZXMgdG8gdGhlc2UgYnVpbHRpbiBmdW5jdGlvbnMgYmVjYXVzZSB3ZSBvdmVycmlkZSB0aGVtLlxuICB2YXIgX2lzTmFOID0gaXNOYU4sXG4gICAgICBfaXNGaW5pdGUgPSBpc0Zpbml0ZTtcblxuICAvLyBLZXlzIGluIElFIDwgOSB0aGF0IHdvbid0IGJlIGl0ZXJhdGVkIGJ5IGBmb3Iga2V5IGluIC4uLmAgYW5kIHRodXMgbWlzc2VkLlxuICB2YXIgaGFzRW51bUJ1ZyA9ICF7dG9TdHJpbmc6IG51bGx9LnByb3BlcnR5SXNFbnVtZXJhYmxlKCd0b1N0cmluZycpO1xuICB2YXIgbm9uRW51bWVyYWJsZVByb3BzID0gWyd2YWx1ZU9mJywgJ2lzUHJvdG90eXBlT2YnLCAndG9TdHJpbmcnLFxuICAgICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsICdoYXNPd25Qcm9wZXJ0eScsICd0b0xvY2FsZVN0cmluZyddO1xuXG4gIC8vIFRoZSBsYXJnZXN0IGludGVnZXIgdGhhdCBjYW4gYmUgcmVwcmVzZW50ZWQgZXhhY3RseS5cbiAgdmFyIE1BWF9BUlJBWV9JTkRFWCA9IE1hdGgucG93KDIsIDUzKSAtIDE7XG5cbiAgLy8gU29tZSBmdW5jdGlvbnMgdGFrZSBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHMsIG9yIGEgZmV3IGV4cGVjdGVkXG4gIC8vIGFyZ3VtZW50cyBhdCB0aGUgYmVnaW5uaW5nIGFuZCB0aGVuIGEgdmFyaWFibGUgbnVtYmVyIG9mIHZhbHVlcyB0byBvcGVyYXRlXG4gIC8vIG9uLiBUaGlzIGhlbHBlciBhY2N1bXVsYXRlcyBhbGwgcmVtYWluaW5nIGFyZ3VtZW50cyBwYXN0IHRoZSBmdW5jdGlvbuKAmXNcbiAgLy8gYXJndW1lbnQgbGVuZ3RoIChvciBhbiBleHBsaWNpdCBgc3RhcnRJbmRleGApLCBpbnRvIGFuIGFycmF5IHRoYXQgYmVjb21lc1xuICAvLyB0aGUgbGFzdCBhcmd1bWVudC4gU2ltaWxhciB0byBFUzbigJlzIFwicmVzdCBwYXJhbWV0ZXJcIi5cbiAgZnVuY3Rpb24gcmVzdEFyZ3VtZW50cyhmdW5jLCBzdGFydEluZGV4KSB7XG4gICAgc3RhcnRJbmRleCA9IHN0YXJ0SW5kZXggPT0gbnVsbCA/IGZ1bmMubGVuZ3RoIC0gMSA6ICtzdGFydEluZGV4O1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBsZW5ndGggPSBNYXRoLm1heChhcmd1bWVudHMubGVuZ3RoIC0gc3RhcnRJbmRleCwgMCksXG4gICAgICAgICAgcmVzdCA9IEFycmF5KGxlbmd0aCksXG4gICAgICAgICAgaW5kZXggPSAwO1xuICAgICAgZm9yICg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIHJlc3RbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4ICsgc3RhcnRJbmRleF07XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKHN0YXJ0SW5kZXgpIHtcbiAgICAgICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXMsIHJlc3QpO1xuICAgICAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpcywgYXJndW1lbnRzWzBdLCByZXN0KTtcbiAgICAgICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXMsIGFyZ3VtZW50c1swXSwgYXJndW1lbnRzWzFdLCByZXN0KTtcbiAgICAgIH1cbiAgICAgIHZhciBhcmdzID0gQXJyYXkoc3RhcnRJbmRleCArIDEpO1xuICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgc3RhcnRJbmRleDsgaW5kZXgrKykge1xuICAgICAgICBhcmdzW2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICB9XG4gICAgICBhcmdzW3N0YXJ0SW5kZXhdID0gcmVzdDtcbiAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gIH1cblxuICAvLyBJcyBhIGdpdmVuIHZhcmlhYmxlIGFuIG9iamVjdD9cbiAgZnVuY3Rpb24gaXNPYmplY3Qob2JqKSB7XG4gICAgdmFyIHR5cGUgPSB0eXBlb2Ygb2JqO1xuICAgIHJldHVybiB0eXBlID09PSAnZnVuY3Rpb24nIHx8IHR5cGUgPT09ICdvYmplY3QnICYmICEhb2JqO1xuICB9XG5cbiAgLy8gSXMgYSBnaXZlbiB2YWx1ZSBlcXVhbCB0byBudWxsP1xuICBmdW5jdGlvbiBpc051bGwob2JqKSB7XG4gICAgcmV0dXJuIG9iaiA9PT0gbnVsbDtcbiAgfVxuXG4gIC8vIElzIGEgZ2l2ZW4gdmFyaWFibGUgdW5kZWZpbmVkP1xuICBmdW5jdGlvbiBpc1VuZGVmaW5lZChvYmopIHtcbiAgICByZXR1cm4gb2JqID09PSB2b2lkIDA7XG4gIH1cblxuICAvLyBJcyBhIGdpdmVuIHZhbHVlIGEgYm9vbGVhbj9cbiAgZnVuY3Rpb24gaXNCb29sZWFuKG9iaikge1xuICAgIHJldHVybiBvYmogPT09IHRydWUgfHwgb2JqID09PSBmYWxzZSB8fCB0b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IEJvb2xlYW5dJztcbiAgfVxuXG4gIC8vIElzIGEgZ2l2ZW4gdmFsdWUgYSBET00gZWxlbWVudD9cbiAgZnVuY3Rpb24gaXNFbGVtZW50KG9iaikge1xuICAgIHJldHVybiAhIShvYmogJiYgb2JqLm5vZGVUeXBlID09PSAxKTtcbiAgfVxuXG4gIC8vIEludGVybmFsIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhIGB0b1N0cmluZ2AtYmFzZWQgdHlwZSB0ZXN0ZXIuXG4gIGZ1bmN0aW9uIHRhZ1Rlc3RlcihuYW1lKSB7XG4gICAgdmFyIHRhZyA9ICdbb2JqZWN0ICcgKyBuYW1lICsgJ10nO1xuICAgIHJldHVybi
14938BmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiB0b1N0cmluZy5jYWxsKG9iaikgPT09IHRhZztcbiAgICB9O1xuICB9XG5cbiAgdmFyIGlzU3RyaW5nID0gdGFnVGVzdGVyKCdTdHJpbmcnKTtcblxuICB2YXIgaXNOdW1iZXIgPSB0YWdUZXN0ZXIoJ051bWJlcicpO1xuXG4gIHZhciBpc0RhdGUgPSB0YWdUZXN0ZXIoJ0RhdGUnKTtcblxuICB2YXIgaXNSZWdFeHAgPSB0YWdUZXN0ZXIoJ1JlZ0V4cCcpO1xuXG4gIHZhciBpc0Vycm9yID0gdGFnVGVzdGVyKCdFcnJvcicpO1xuXG4gIHZhciBpc1N5bWJvbCA9IHRhZ1Rlc3RlcignU3ltYm9sJyk7XG5cbiAgdmFyIGlzQXJyYXlCdWZmZXIgPSB0YWdUZXN0ZXIoJ0FycmF5QnVmZmVyJyk7XG5cbiAgdmFyIGlzRnVuY3Rpb24gPSB0YWdUZXN0ZXIoJ0Z1bmN0aW9uJyk7XG5cbiAgLy8gT3B0aW1pemUgYGlzRnVuY3Rpb25gIGlmIGFwcHJvcHJpYXRlLiBXb3JrIGFyb3VuZCBzb21lIGB0eXBlb2ZgIGJ1Z3MgaW4gb2xkXG4gIC8vIHY4LCBJRSAxMSAoIzE2MjEpLCBTYWZhcmkgOCAoIzE5MjkpLCBhbmQgUGhhbnRvbUpTICgjMjIzNikuXG4gIHZhciBub2RlbGlzdCA9IHJvb3QuZG9jdW1lbnQgJiYgcm9vdC5kb2N1bWVudC5jaGlsZE5vZGVzO1xuICBpZiAodHlwZW9mIC8uLyAhPSAnZnVuY3Rpb24nICYmIHR5cGVvZiBJbnQ4QXJyYXkgIT0gJ29iamVjdCcgJiYgdHlwZW9mIG5vZGVsaXN0ICE9ICdmdW5jdGlvbicpIHtcbiAgICBpc0Z1bmN0aW9uID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PSAnZnVuY3Rpb24nIHx8IGZhbHNlO1xuICAgIH07XG4gIH1cblxuICB2YXIgaXNGdW5jdGlvbiQxID0gaXNGdW5jdGlvbjtcblxuICB2YXIgaGFzT2JqZWN0VGFnID0gdGFnVGVzdGVyKCdPYmplY3QnKTtcblxuICAvLyBJbiBJRSAxMCAtIEVkZ2UgMTMsIGBEYXRhVmlld2AgaGFzIHN0cmluZyB0YWcgYCdbb2JqZWN0IE9iamVjdF0nYC5cbiAgLy8gSW4gSUUgMTEsIHRoZSBtb3N0IGNvbW1vbiBhbW9uZyB0aGVtLCB0aGlzIHByb2JsZW0gYWxzbyBhcHBsaWVzIHRvXG4gIC8vIGBNYXBgLCBgV2Vha01hcGAgYW5kIGBTZXRgLlxuICB2YXIgaGFzU3RyaW5nVGFnQnVnID0gKFxuICAgICAgICBzdXBwb3J0c0RhdGFWaWV3ICYmIGhhc09iamVjdFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDgpKSlcbiAgICAgICksXG4gICAgICBpc0lFMTEgPSAodHlwZW9mIE1hcCAhPT0gJ3VuZGVmaW5lZCcgJiYgaGFzT2JqZWN0VGFnKG5ldyBNYXApKTtcblxuICB2YXIgaXNEYXRhVmlldyA9IHRhZ1Rlc3RlcignRGF0YVZpZXcnKTtcblxuICAvLyBJbiBJRSAxMCAtIEVkZ2UgMTMsIHdlIG5lZWQgYSBkaWZmZXJlbnQgaGV1cmlzdGljXG4gIC8vIHRvIGRldGVybWluZSB3aGV0aGVyIGFuIG9iamVjdCBpcyBhIGBEYXRhVmlld2AuXG4gIGZ1bmN0aW9uIGllMTBJc0RhdGFWaWV3KG9iaikge1xuICAgIHJldHVybiBvYmogIT0gbnVsbCAmJiBpc0Z1bmN0aW9uJDEob2JqLmdldEludDgpICYmIGlzQXJyYXlCdWZmZXIob2JqLmJ1ZmZlcik7XG4gIH1cblxuICB2YXIgaXNEYXRhVmlldyQxID0gKGhhc1N0cmluZ1RhZ0J1ZyA/IGllMTBJc0RhdGFWaWV3IDogaXNEYXRhVmlldyk7XG5cbiAgLy8gSXMgYSBnaXZlbiB2YWx1ZSBhbiBhcnJheT9cbiAgLy8gRGVsZWdhdGVzIHRvIEVDTUE1J3MgbmF0aXZlIGBBcnJheS5pc0FycmF5YC5cbiAgdmFyIGlzQXJyYXkgPSBuYXRpdmVJc0FycmF5IHx8IHRhZ1Rlc3RlcignQXJyYXknKTtcblxuICAvLyBJbnRlcm5hbCBmdW5jdGlvbiB0byBjaGVjayB3aGV0aGVyIGBrZXlgIGlzIGFuIG93biBwcm9wZXJ0eSBuYW1lIG9mIGBvYmpgLlxuICBmdW5jdGlvbiBoYXMkMShvYmosIGtleSkge1xuICAgIHJldHVybiBvYmogIT0gbnVsbCAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KTtcbiAgfVxuXG4gIHZhciBpc0FyZ3VtZW50cyA9IHRhZ1Rlc3RlcignQXJndW1lbnRzJyk7XG5cbiAgLy8gRGVmaW5lIGEgZmFsbGJhY2sgdmVyc2lvbiBvZiB0aGUgbWV0aG9kIGluIGJyb3dzZXJzIChhaGVtLCBJRSA8IDkpLCB3aGVyZVxuICAvLyB0aGVyZSBpc24ndCBhbnkgaW5zcGVjdGFibGUgXCJBcmd1bWVudHNcIiB0eXBlLlxuICAoZnVuY3Rpb24oKSB7XG4gICAgaWYgKCFpc0FyZ3VtZW50cyhhcmd1bWVudHMpKSB7XG4gICAgICBpc0FyZ3VtZW50cyA9IGZ1bmN0aW9uKG9iaikge1xuICAgICAgICByZXR1cm4gaGFzJDEob2JqLCAnY2FsbGVlJyk7XG4gICAgICB9O1xuICAgIH1cbiAgfSgpKTtcblxuICB2YXIgaXNBcmd1bWVudHMkMSA9IGlzQXJndW1lbnRzO1xuXG4gIC8vIElzIGEgZ2l2ZW4gb2JqZWN0IGEgZmluaXRlIG51bWJlcj9cbiAgZnVuY3Rpb24gaXNGaW5pdGUkMShvYmopIHtcbiAgICByZXR1cm4gIWlzU3ltYm9sKG9iaikgJiYgX2lzRmluaXRlKG9iaikgJiYgIWlzTmFOKHBhcnNlRmxvYXQob2JqKSk7XG4gIH1cblxuICAvLyBJcyB0aGUgZ2l2ZW4gdmFsdWUgYE5hTmA/XG4gIGZ1bmN0aW9uIGlzTmFOJDEob2JqKSB7XG4gICAgcmV0dXJuIGlzTnVtYmVyKG9iaikgJiYgX2lzTmFOKG9iaik7XG4gIH1cblxuICAvLyBQcmVkaWNhdGUtZ2VuZXJhdGluZyBmdW5jdGlvbi4gT2Z0ZW4gdXNlZnVsIG91dHNpZGUgb2YgVW5kZXJzY29yZS5cbiAgZnVuY3Rpb24gY29uc3RhbnQodmFsdWUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIC8vIENvbW1vbiBpbnRlcm5hbCBsb2dpYyBmb3IgYGlzQXJyYXlMaWtlYCBhbmQgYGlzQnVmZmVyTGlrZWAuXG4gIGZ1bmN0aW9uIGNyZWF0ZVNpemVQcm9wZXJ0eUNoZWNrKGdldFNpemVQcm9wZXJ0eSkge1xuICAgIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uKSB7XG4gICAgICB2Y
14938XIgc2l6ZVByb3BlcnR5ID0gZ2V0U2l6ZVByb3BlcnR5KGNvbGxlY3Rpb24pO1xuICAgICAgcmV0dXJuIHR5cGVvZiBzaXplUHJvcGVydHkgPT0gJ251bWJlcicgJiYgc2l6ZVByb3BlcnR5ID49IDAgJiYgc2l6ZVByb3BlcnR5IDw9IE1BWF9BUlJBWV9JTkRFWDtcbiAgICB9XG4gIH1cblxuICAvLyBJbnRlcm5hbCBoZWxwZXIgdG8gZ2VuZXJhdGUgYSBmdW5jdGlvbiB0byBvYnRhaW4gcHJvcGVydHkgYGtleWAgZnJvbSBgb2JqYC5cbiAgZnVuY3Rpb24gc2hhbGxvd1Byb3BlcnR5KGtleSkge1xuICAgIHJldHVybiBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmogPT0gbnVsbCA/IHZvaWQgMCA6IG9ialtrZXldO1xuICAgIH07XG4gIH1cblxuICAvLyBJbnRlcm5hbCBoZWxwZXIgdG8gb2J0YWluIHRoZSBgYnl0ZUxlbmd0aGAgcHJvcGVydHkgb2YgYW4gb2JqZWN0LlxuICB2YXIgZ2V0Qnl0ZUxlbmd0aCA9IHNoYWxsb3dQcm9wZXJ0eSgnYnl0ZUxlbmd0aCcpO1xuXG4gIC8vIEludGVybmFsIGhlbHBlciB0byBkZXRlcm1pbmUgd2hldGhlciB3ZSBzaG91bGQgc3BlbmQgZXh0ZW5zaXZlIGNoZWNrcyBhZ2FpbnN0XG4gIC8vIGBBcnJheUJ1ZmZlcmAgZXQgYWwuXG4gIHZhciBpc0J1ZmZlckxpa2UgPSBjcmVhdGVTaXplUHJvcGVydHlDaGVjayhnZXRCeXRlTGVuZ3RoKTtcblxuICAvLyBJcyBhIGdpdmVuIHZhbHVlIGEgdHlwZWQgYXJyYXk/XG4gIHZhciB0eXBlZEFycmF5UGF0dGVybiA9IC9cXFtvYmplY3QgKChJfFVpKW50KDh8MTZ8MzIpfEZsb2F0KDMyfDY0KXxVaW50OENsYW1wZWR8QmlnKEl8VWkpbnQ2NClBcnJheVxcXS87XG4gIGZ1bmN0aW9uIGlzVHlwZWRBcnJheShvYmopIHtcbiAgICAvLyBgQXJyYXlCdWZmZXIuaXNWaWV3YCBpcyB0aGUgbW9zdCBmdXR1cmUtcHJvb2YsIHNvIHVzZSBpdCB3aGVuIGF2YWlsYWJsZS5cbiAgICAvLyBPdGhlcndpc2UsIGZhbGwgYmFjayBvbiB0aGUgYWJvdmUgcmVndWxhciBleHByZXNzaW9uLlxuICAgIHJldHVybiBuYXRpdmVJc1ZpZXcgPyAobmF0aXZlSXNWaWV3KG9iaikgJiYgIWlzRGF0YVZpZXckMShvYmopKSA6XG4gICAgICAgICAgICAgICAgICBpc0J1ZmZlckxpa2Uob2JqKSAmJiB0eXBlZEFycmF5UGF0dGVybi50ZXN0KHRvU3RyaW5nLmNhbGwob2JqKSk7XG4gIH1cblxuICB2YXIgaXNUeXBlZEFycmF5JDEgPSBzdXBwb3J0c0FycmF5QnVmZmVyID8gaXNUeXBlZEFycmF5IDogY29uc3RhbnQoZmFsc2UpO1xuXG4gIC8vIEludGVybmFsIGhlbHBlciB0byBvYnRhaW4gdGhlIGBsZW5ndGhgIHByb3BlcnR5IG9mIGFuIG9iamVjdC5cbiAgdmFyIGdldExlbmd0aCA9IHNoYWxsb3dQcm9wZXJ0eSgnbGVuZ3RoJyk7XG5cbiAgLy8gSW50ZXJuYWwgaGVscGVyIHRvIGNyZWF0ZSBhIHNpbXBsZSBsb29rdXAgc3RydWN0dXJlLlxuICAvLyBgY29sbGVjdE5vbkVudW1Qcm9wc2AgdXNlZCB0byBkZXBlbmQgb24gYF8uY29udGFpbnNgLCBidXQgdGhpcyBsZWQgdG9cbiAgLy8gY2lyY3VsYXIgaW1wb3J0cy4gYGVtdWxhdGVkU2V0YCBpcyBhIG9uZS1vZmYgc29sdXRpb24gdGhhdCBvbmx5IHdvcmtzIGZvclxuICAvLyBhcnJheXMgb2Ygc3RyaW5ncy5cbiAgZnVuY3Rpb24gZW11bGF0ZWRTZXQoa2V5cykge1xuICAgIHZhciBoYXNoID0ge307XG4gICAgZm9yICh2YXIgbCA9IGtleXMubGVuZ3RoLCBpID0gMDsgaSA8IGw7ICsraSkgaGFzaFtrZXlzW2ldXSA9IHRydWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRhaW5zOiBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIGhhc2hba2V5XTsgfSxcbiAgICAgIHB1c2g6IGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBoYXNoW2tleV0gPSB0cnVlO1xuICAgICAgICByZXR1cm4ga2V5cy5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIEludGVybmFsIGhlbHBlci4gQ2hlY2tzIGBrZXlzYCBmb3IgdGhlIHByZXNlbmNlIG9mIGtleXMgaW4gSUUgPCA5IHRoYXQgd29uJ3RcbiAgLy8gYmUgaXRlcmF0ZWQgYnkgYGZvciBrZXkgaW4gLi4uYCBhbmQgdGh1cyBtaXNzZWQuIEV4dGVuZHMgYGtleXNgIGluIHBsYWNlIGlmXG4gIC8vIG5lZWRlZC5cbiAgZnVuY3Rpb24gY29sbGVjdE5vbkVudW1Qcm9wcyhvYmosIGtleXMpIHtcbiAgICBrZXlzID0gZW11bGF0ZWRTZXQoa2V5cyk7XG4gICAgdmFyIG5vbkVudW1JZHggPSBub25FbnVtZXJhYmxlUHJvcHMubGVuZ3RoO1xuICAgIHZhciBjb25zdHJ1Y3RvciA9IG9iai5jb25zdHJ1Y3RvcjtcbiAgICB2YXIgcHJvdG8gPSBpc0Z1bmN0aW9uJDEoY29uc3RydWN0b3IpICYmIGNvbnN0cnVjdG9yLnByb3RvdHlwZSB8fCBPYmpQcm90bztcblxuICAgIC8vIENvbnN0cnVjdG9yIGlzIGEgc3BlY2lhbCBjYXNlLlxuICAgIHZhciBwcm9wID0gJ2NvbnN0cnVjdG9yJztcbiAgICBpZiAoaGFzJDEob2JqLCBwcm9wKSAmJiAha2V5cy5jb250YWlucyhwcm9wKSkga2V5cy5wdXNoKHByb3ApO1xuXG4gICAgd2hpbGUgKG5vbkVudW1JZHgtLSkge1xuICAgICAgcHJvcCA9IG5vbkVudW1lcmFibGVQcm9wc1tub25FbnVtSWR4XTtcbiAgICAgIGlmIChwcm9wIGluIG9iaiAmJiBvYmpbcHJvcF0gIT09IHByb3RvW3Byb3BdICYmICFrZXlzLmNvbnRhaW5zKHByb3ApKSB7XG4gICAgICAgIGtleXMucHVzaChwcm9wKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXRyaWV2ZSB0aGUgbmFtZXMgb2YgYW4gb2JqZWN0J3Mgb3duIHByb3BlcnRpZXMuXG4gIC8vIERlbGVnYXRlcyB0byAqKkVDTUFTY3JpcHQgNSoqJ3MgbmF0aXZlIGBPYmplY3Qua2V5c2AuXG4gIGZ1bmN0aW9uIGtleXMob2JqKSB7XG4gICAgaWYgKCFpc09iamVjdChvYmopKSByZXR1cm4gW107XG4gICAgaWYgKG5hdGl2ZUtleXMpIHJldHVybiBuYXRpdmVLZXlzKG9iaik7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSBpZiAoaGFzJDEob2JqLCBrZXkpKSBrZXlzLnB1c2goa2V5KTtcbiAgICAvLyBBaGVtLCBJRSA8IDkuXG4gICAgaWYgKGhhc0VudW1CdWcpIGNvbGxlY3ROb25FbnVtUHJvcHMob2JqLCBrZXlzKTtcbiAgICByZXR1cm4ga2V5cztcbiAgfVxuXG4gIC8vIElzIGEgZ2l2ZW4gYXJyYXksIHN0cmluZywgb3Igb2JqZWN0IGVtcHR5P1xuICAvLyBBbiBcImVtcHR5XCIgb2JqZWN0IGhhcyBubyBlbnVtZXJhYmxlIG93bi1wcm9wZXJ0aWVzLlxuICBmdW5jdGlvbiBpc0VtcHR5KG9iaikge1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIHRydWU7XG4gICAgLy8gU2tpcCB0aGUgbW9yZSBleHBlbnNpdmUgYHRvU3RyaW5nYC1iYXNlZCB0eXBlIGNoZWNrcyBpZiBgb2JqYCB
14938oYXMgbm9cbiAgICAvLyBgLmxlbmd0aGAuXG4gICAgdmFyIGxlbmd0aCA9IGdldExlbmd0aChvYmopO1xuICAgIGlmICh0eXBlb2YgbGVuZ3RoID09ICdudW1iZXInICYmIChcbiAgICAgIGlzQXJyYXkob2JqKSB8fCBpc1N0cmluZyhvYmopIHx8IGlzQXJndW1lbnRzJDEob2JqKVxuICAgICkpIHJldHVybiBsZW5ndGggPT09IDA7XG4gICAgcmV0dXJuIGdldExlbmd0aChrZXlzKG9iaikpID09PSAwO1xuICB9XG5cbiAgLy8gUmV0dXJucyB3aGV0aGVyIGFuIG9iamVjdCBoYXMgYSBnaXZlbiBzZXQgb2YgYGtleTp2YWx1ZWAgcGFpcnMuXG4gIGZ1bmN0aW9uIGlzTWF0Y2gob2JqZWN0LCBhdHRycykge1xuICAgIHZhciBfa2V5cyA9IGtleXMoYXR0cnMpLCBsZW5ndGggPSBfa2V5cy5sZW5ndGg7XG4gICAgaWYgKG9iamVjdCA9PSBudWxsKSByZXR1cm4gIWxlbmd0aDtcbiAgICB2YXIgb2JqID0gT2JqZWN0KG9iamVjdCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IF9rZXlzW2ldO1xuICAgICAgaWYgKGF0dHJzW2tleV0gIT09IG9ialtrZXldIHx8ICEoa2V5IGluIG9iaikpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBJZiBVbmRlcnNjb3JlIGlzIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLCBpdCByZXR1cm5zIGEgd3JhcHBlZCBvYmplY3QgdGhhdCBjYW5cbiAgLy8gYmUgdXNlZCBPTy1zdHlsZS4gVGhpcyB3cmFwcGVyIGhvbGRzIGFsdGVyZWQgdmVyc2lvbnMgb2YgYWxsIGZ1bmN0aW9ucyBhZGRlZFxuICAvLyB0aHJvdWdoIGBfLm1peGluYC4gV3JhcHBlZCBvYmplY3RzIG1heSBiZSBjaGFpbmVkLlxuICBmdW5jdGlvbiBfJDEob2JqKSB7XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIF8kMSkgcmV0dXJuIG9iajtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgXyQxKSkgcmV0dXJuIG5ldyBfJDEob2JqKTtcbiAgICB0aGlzLl93cmFwcGVkID0gb2JqO1xuICB9XG5cbiAgXyQxLlZFUlNJT04gPSBWRVJTSU9OO1xuXG4gIC8vIEV4dHJhY3RzIHRoZSByZXN1bHQgZnJvbSBhIHdyYXBwZWQgYW5kIGNoYWluZWQgb2JqZWN0LlxuICBfJDEucHJvdG90eXBlLnZhbHVlID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dyYXBwZWQ7XG4gIH07XG5cbiAgLy8gUHJvdmlkZSB1bndyYXBwaW5nIHByb3hpZXMgZm9yIHNvbWUgbWV0aG9kcyB1c2VkIGluIGVuZ2luZSBvcGVyYXRpb25zXG4gIC8vIHN1Y2ggYXMgYXJpdGhtZXRpYyBhbmQgSlNPTiBzdHJpbmdpZmljYXRpb24uXG4gIF8kMS5wcm90b3R5cGUudmFsdWVPZiA9IF8kMS5wcm90b3R5cGUudG9KU09OID0gXyQxLnByb3RvdHlwZS52YWx1ZTtcblxuICBfJDEucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLl93cmFwcGVkKTtcbiAgfTtcblxuICAvLyBJbnRlcm5hbCBmdW5jdGlvbiB0byB3cmFwIG9yIHNoYWxsb3ctY29weSBhbiBBcnJheUJ1ZmZlcixcbiAgLy8gdHlwZWQgYXJyYXkgb3IgRGF0YVZpZXcgdG8gYSBuZXcgdmlldywgcmV1c2luZyB0aGUgYnVmZmVyLlxuICBmdW5jdGlvbiB0b0J1ZmZlclZpZXcoYnVmZmVyU291cmNlKSB7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KFxuICAgICAgYnVmZmVyU291cmNlLmJ1ZmZlciB8fCBidWZmZXJTb3VyY2UsXG4gICAgICBidWZmZXJTb3VyY2UuYnl0ZU9mZnNldCB8fCAwLFxuICAgICAgZ2V0Qnl0ZUxlbmd0aChidWZmZXJTb3VyY2UpXG4gICAgKTtcbiAgfVxuXG4gIC8vIFdlIHVzZSB0aGlzIHN0cmluZyB0d2ljZSwgc28gZ2l2ZSBpdCBhIG5hbWUgZm9yIG1pbmlmaWNhdGlvbi5cbiAgdmFyIHRhZ0RhdGFWaWV3ID0gJ1tvYmplY3QgRGF0YVZpZXddJztcblxuICAvLyBJbnRlcm5hbCByZWN1cnNpdmUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgYF8uaXNFcXVhbGAuXG4gIGZ1bmN0aW9uIGVxKGEsIGIsIGFTdGFjaywgYlN0YWNrKSB7XG4gICAgLy8gSWRlbnRpY2FsIG9iamVjdHMgYXJlIGVxdWFsLiBgMCA9PT0gLTBgLCBidXQgdGhleSBhcmVuJ3QgaWRlbnRpY2FsLlxuICAgIC8vIFNlZSB0aGUgW0hhcm1vbnkgYGVnYWxgIHByb3Bvc2FsXShodHRwczovL3dpa2kuZWNtYXNjcmlwdC5vcmcvZG9rdS5waHA/aWQ9aGFybW9ueTplZ2FsKS5cbiAgICBpZiAoYSA9PT0gYikgcmV0dXJuIGEgIT09IDAgfHwgMSAvIGEgPT09IDEgLyBiO1xuICAgIC8vIGBudWxsYCBvciBgdW5kZWZpbmVkYCBvbmx5IGVxdWFsIHRvIGl0c2VsZiAoc3RyaWN0IGNvbXBhcmlzb24pLlxuICAgIGlmIChhID09IG51bGwgfHwgYiA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gYE5hTmBzIGFyZSBlcXVpdmFsZW50LCBidXQgbm9uLXJlZmxleGl2ZS5cbiAgICBpZiAoYSAhPT0gYSkgcmV0dXJuIGIgIT09IGI7XG4gICAgLy8gRXhoYXVzdCBwcmltaXRpdmUgY2hlY2tzXG4gICAgdmFyIHR5cGUgPSB0eXBlb2YgYTtcbiAgICBpZiAodHlwZSAhPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgYiAhPSAnb2JqZWN0JykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBkZWVwRXEoYSwgYiwgYVN0YWNrLCBiU3RhY2spO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgcmVjdXJzaXZlIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIGBfLmlzRXF1YWxgLlxuICBmdW5jdGlvbiBkZWVwRXEoYSwgYiwgYVN0YWNrLCBiU3RhY2spIHtcbiAgICAvLyBVbndyYXAgYW55IHdyYXBwZWQgb2JqZWN0cy5cbiAgICBpZiAoYSBpbnN0YW5jZW9mIF8kMSkgYSA9IGEuX3dyYXBwZWQ7XG4gICAgaWYgKGIgaW5zdGFuY2VvZiBfJDEpIGIgPSBiLl93cmFwcGVkO1xuICAgIC8vIENvbXBhcmUgYFtbQ2xhc3NdXWAgbmFtZXMuXG4gICAgdmFyIGNsYXNzTmFtZSA9IHRvU3RyaW5nLmNhbGwoYSk7XG4gICAgaWYgKGNsYXNzTmFtZSAhPT0gdG9TdHJpbmcuY2FsbChiKSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIFdvcmsgYXJvdW5kIGEgYnVnIGluIElFIDEwIC0gRWRnZSAxMy5cbiAgICBpZiAoaGFzU3RyaW5nVGFnQnVnICYmIGNsYXNzTmFtZSA9PSAnW29iamVjdCBPYmplY3RdJyAmJiBpc0RhdGFWaWV3JDEoYSkpIHtcbiAgICAgIGlmICghaXNEYXRhVmlldyQxKGIpKSByZXR1cm4gZmFsc2U7XG4gICAgICBjbGFzc05hbWUgPSB0YWdEYXRhVmlldztcbiAgICB9XG4gICAgc3dpdGNoIChjbGFzc05hbWUpIHtcbiAgICAgIC8vIFRoZXNlIHR5cGVzIGFyZSBjb21wYXJlZCBieSB2YWx1ZS
149385cbiAgICAgIGNhc2UgJ1tvYmplY3QgUmVnRXhwXSc6XG4gICAgICAgIC8vIFJlZ0V4cHMgYXJlIGNvZXJjZWQgdG8gc3RyaW5ncyBmb3IgY29tcGFyaXNvbiAoTm90ZTogJycgKyAvYS9pID09PSAnL2EvaScpXG4gICAgICBjYXNlICdbb2JqZWN0IFN0cmluZ10nOlxuICAgICAgICAvLyBQcmltaXRpdmVzIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIG9iamVjdCB3cmFwcGVycyBhcmUgZXF1aXZhbGVudDsgdGh1cywgYFwiNVwiYCBpc1xuICAgICAgICAvLyBlcXVpdmFsZW50IHRvIGBuZXcgU3RyaW5nKFwiNVwiKWAuXG4gICAgICAgIHJldHVybiAnJyArIGEgPT09ICcnICsgYjtcbiAgICAgIGNhc2UgJ1tvYmplY3QgTnVtYmVyXSc6XG4gICAgICAgIC8vIGBOYU5gcyBhcmUgZXF1aXZhbGVudCwgYnV0IG5vbi1yZWZsZXhpdmUuXG4gICAgICAgIC8vIE9iamVjdChOYU4pIGlzIGVxdWl2YWxlbnQgdG8gTmFOLlxuICAgICAgICBpZiAoK2EgIT09ICthKSByZXR1cm4gK2IgIT09ICtiO1xuICAgICAgICAvLyBBbiBgZWdhbGAgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgZm9yIG90aGVyIG51bWVyaWMgdmFsdWVzLlxuICAgICAgICByZXR1cm4gK2EgPT09IDAgPyAxIC8gK2EgPT09IDEgLyBiIDogK2EgPT09ICtiO1xuICAgICAgY2FzZSAnW29iamVjdCBEYXRlXSc6XG4gICAgICBjYXNlICdbb2JqZWN0IEJvb2xlYW5dJzpcbiAgICAgICAgLy8gQ29lcmNlIGRhdGVzIGFuZCBib29sZWFucyB0byBudW1lcmljIHByaW1pdGl2ZSB2YWx1ZXMuIERhdGVzIGFyZSBjb21wYXJlZCBieSB0aGVpclxuICAgICAgICAvLyBtaWxsaXNlY29uZCByZXByZXNlbnRhdGlvbnMuIE5vdGUgdGhhdCBpbnZhbGlkIGRhdGVzIHdpdGggbWlsbGlzZWNvbmQgcmVwcmVzZW50YXRpb25zXG4gICAgICAgIC8vIG9mIGBOYU5gIGFyZSBub3QgZXF1aXZhbGVudC5cbiAgICAgICAgcmV0dXJuICthID09PSArYjtcbiAgICAgIGNhc2UgJ1tvYmplY3QgU3ltYm9sXSc6XG4gICAgICAgIHJldHVybiBTeW1ib2xQcm90by52YWx1ZU9mLmNhbGwoYSkgPT09IFN5bWJvbFByb3RvLnZhbHVlT2YuY2FsbChiKTtcbiAgICAgIGNhc2UgJ1tvYmplY3QgQXJyYXlCdWZmZXJdJzpcbiAgICAgIGNhc2UgdGFnRGF0YVZpZXc6XG4gICAgICAgIC8vIENvZXJjZSB0byB0eXBlZCBhcnJheSBzbyB3ZSBjYW4gZmFsbCB0aHJvdWdoLlxuICAgICAgICByZXR1cm4gZGVlcEVxKHRvQnVmZmVyVmlldy
14938hhKSwgdG9CdWZmZXJWaWV3KGIpLCBhU3RhY2ssIGJTdGFjayk7XG4gICAgfVxuXG4gICAgdmFyIGFyZUFycmF5cyA9IGNsYXNzTmFtZSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbiAgICBpZiAoIWFyZUFycmF5cyAmJiBpc1R5cGVkQXJyYXkkMShhKSkge1xuICAgICAgICB2YXIgYnl0ZUxlbmd0aCA9IGdldEJ5dGVMZW5ndGgoYSk7XG4gICAgICAgIGlmIChieXRlTGVuZ3RoICE9PSBnZXRCeXRlTGVuZ3RoKGIpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChhLmJ1ZmZlciA9PT0gYi5idWZmZXIgJiYgYS5ieXRlT2Zmc2V0ID09PSBiLmJ5dGVPZmZzZXQpIHJldHVybiB0cnVlO1xuICAgICAgICBhcmVBcnJheXMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoIWFyZUFycmF5cykge1xuICAgICAgaWYgKHR5cGVvZiBhICE9ICdvYmplY3QnIHx8IHR5cGVvZiBiICE9ICdvYmplY3QnKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIC8vIE9iamVjdHMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1aXZhbGVudCwgYnV0IGBPYmplY3RgcyBvciBgQXJyYXlgc1xuICAgICAgLy8gZnJvbSBkaWZmZXJlbnQgZnJhbWVzIGFyZS5cbiAgICAgIHZhciBhQ3RvciA9IGEuY29uc3RydWN0b3IsIGJDdG9yID0gYi5jb25zdHJ1Y3RvcjtcbiAgICAgIGlmIChhQ3RvciAhPT0gYkN0b3IgJiYgIShpc0Z1bmN0aW9uJDEoYUN0b3IpICYmIGFDdG9yIGluc3RhbmNlb2YgYUN0b3IgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0Z1bmN0aW9uJDEoYkN0b3IpICYmIGJDdG9yIGluc3RhbmNlb2YgYkN0b3IpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICYmICgnY29uc3RydWN0b3InIGluIGEgJiYgJ2NvbnN0cnVjdG9yJyBpbiBiKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEFzc3VtZSBlcXVhbGl0eSBmb3IgY3ljbGljIHN0cnVjdHVyZXMuIFRoZSBhbGdvcml0aG0gZm9yIGRldGVjdGluZyBjeWNsaWNcbiAgICAvLyBzdHJ1Y3R1cmVzIGlzIGFkYXB0ZWQgZnJvbSBFUyA1LjEgc2VjdGlvbiAxNS4xMi4zLCBhYnN0cmFjdCBvcGVyYXRpb24gYEpPYC5cblxuICAgIC8vIEluaXRpYWxpemluZyBzdGFjayBvZiB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAgICAvLyBJdCdzIGRvbmUgaGVyZSBzaW5jZSB3ZSBvbmx5IG5lZWQgdGhlbSBmb3Igb2JqZWN0cyBhbmQgYXJyYXlzIGNvbXBhcmlzb24uXG4gICAgYVN0YWNrID0gYVN0YWNrIHx8IFtdO1xuICAgIGJTdGFjayA9IGJTdGFjayB8fCBbXTtcbiAgICB2YXIgbGVuZ3RoID0gYVN0YWNrLmxlbmd0aDtcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIC8vIExpbmVhciBzZWFyY2guIFBlcmZvcm1hbmNlIGlzIGludmVyc2VseSBwcm9wb3J0aW9uYWwgdG8gdGhlIG51bWJlciBvZlxuICAgICAgLy8gdW5pcXVlIG5lc3RlZCBzdHJ1Y3R1cmVzLlxuICAgICAgaWYgKGFTdGFja1tsZW5ndGhdID09PSBhKSByZXR1cm4gYlN0YWNrW2xlbmd0aF0gPT09IGI7XG4gICAgfVxuXG4gICAgLy8gQWRkIHRoZSBmaXJzdCBvYmplY3QgdG8gdGhlIHN0YWNrIG9mIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgIGFTdGFjay5wdXNoKGEpO1xuICAgIGJTdGFjay5wdXNoKGIpO1xuXG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIGFuZCBhcnJheXMuXG4gICAgaWYgKGFyZUFycmF
149385cykge1xuICAgICAgLy8gQ29tcGFyZSBhcnJheSBsZW5ndGhzIHRvIGRldGVybWluZSBpZiBhIGRlZXAgY29tcGFyaXNvbiBpcyBuZWNlc3NhcnkuXG4gICAgICBsZW5ndGggPSBhLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICAvLyBEZWVwIGNvbXBhcmUgdGhlIGNvbnRlbnRzLCBpZ25vcmluZyBub24tbnVtZXJpYyBwcm9wZXJ0aWVzLlxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIGlmICghZXEoYVtsZW5ndGhdLCBiW2xlbmd0aF0sIGFTdGFjaywgYlN0YWNrKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZWVwIGNvbXBhcmUgb2JqZWN0cy5cbiAgICAgIHZhciBfa2V5cyA9IGtleXMoYSksIGtleTtcbiAgICAgIGxlbmd0aCA9IF9rZXlzLmxlbmd0aDtcbiAgICAgIC8vIEVuc3VyZSB0aGF0IGJvdGggb2JqZWN0cyBjb250YWluIHRoZSBzYW1lIG51bWJlciBvZiBwcm9wZXJ0aWVzIGJlZm9yZSBjb21wYXJpbmcgZGVlcCBlcXVhbGl0eS5cbiAgICAgIGlmIChrZXlzKGIpLmxlbmd0aCAhPT0gbGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgLy8gRGVlcCBjb21wYXJlIGVhY2ggbWVtYmVyXG4gICAgICAgIGtleSA9IF9rZXlzW2xlbmd0aF07XG4gICAgICAgIGlmICghKGhhcyQxKGIsIGtleSkgJiYgZXEoYVtrZXldLCBiW2tleV0sIGFTdGFjaywgYlN0YWNrKSkpIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUmVtb3ZlIHRoZSBmaXJzdCBvYmplY3QgZnJvbSB0aGUgc3RhY2sgb2YgdHJhdmVyc2VkIG9iamVjdHMuXG4gICAgYVN0YWNrLnBvcCgpO1xuICAgIGJTdGFjay5wb3AoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIFBlcmZvcm0gYSBkZWVwIGNvbXBhcmlzb24gdG8gY2hlY2sgaWYgdHdvIG9iamVjdHMgYXJlIGVxdWFsLlxuICBmdW5jdGlvbiBpc0VxdWFsKGEsIGIpIHtcbiAgICByZXR1cm4gZXEoYSwgYik7XG4gIH1cblxuICAvLyBSZXRyaWV2ZSBhbGwgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYW4gb2JqZWN0LlxuICBmdW5jdGlvbiBhbGxLZXlzKG9iaikge1xuICAgIGlmICghaXNPYmplY3Qob2JqKSkgcmV0dXJuIFtdO1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iaikga2V5cy5wdXNoKGtleSk7XG4gICAgLy8gQWhlbSwgSUUgPCA5LlxuICAgIGlmIChoYXNFbnVtQnVnKSBjb2xsZWN0Tm9uRW51bVByb3BzKG9iaiwga2V5cyk7XG4gICAgcmV0dXJuIGtleXM7XG4gIH1cblxuICAvLyBTaW5jZSB0aGUgcmVndWxhciBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AgdHlwZSB0ZXN0cyBkb24ndCB3b3JrIGZvclxuICAvLyBzb21lIHR5cGVzIGluIElFIDExLCB3ZSB1c2UgYSBmaW5nZXJwcmludGluZyBoZXVyaXN0aWMgaW5zdGVhZCwgYmFzZWRcbiAgLy8gb24gdGhlIG1ldGhvZHMuIEl0J3Mgbm90IGdyZWF0LCBidXQgaXQncyB0aGUgYmVzdCB3ZSBnb3QuXG4gIC8vIFRoZSBmaW5nZXJwcmludCBtZXRob2QgbGlzdHMgYXJlIGRlZmluZWQgYmVsb3cuXG4gIGZ1bmN0aW9uIGllMTFmaW5nZXJwcmludChtZXRob2RzKSB7XG4gICAgdmFyIGxlbmd0aCA9IGdldExlbmd0aChtZXRob2RzKTtcbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqKSB7XG4gICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICAgIC8vIGBNYXBgLCBgV2Vha01hcGAgYW5kIGBTZXRgIGhhdmUgbm8gZW51bWVyYWJsZSBrZXlzLlxuICAgICAgdmFyIGtleXMgPSBhbGxLZXlzKG9iaik7XG4gICAgICBpZiAoZ2V0TGVuZ3RoKGtleXMpKSByZXR1cm4gZmFsc2U7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghaXNGdW5jdGlvbiQxKG9ialttZXRob2RzW2ldXSkpIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIElmIHdlIGFyZSB0ZXN0aW5nIGFnYWluc3QgYFdlYWtNYXBgLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0XG4gICAgICAvLyBgb2JqYCBkb2Vzbid0IGhhdmUgYSBgZm9yRWFjaGAgbWV0aG9kIGluIG9yZGVyIHRvIGRpc3Rpbmd1aXNoXG4gICAgICAvLyBpdCBmcm9tIGEgcmVndWxhciBgTWFwYC5cbiAgICAgIHJldHVybiBtZXRob2RzICE9PSB3ZWFrTWFwTWV0aG9kcyB8fCAhaXNGdW5jdGlvbiQxKG9ialtmb3JFYWNoTmFtZV0pO1xuICAgIH07XG4gIH1cblxuICAvLyBJbiB0aGUgaW50ZXJlc3Qgb2YgY29tcGFjdCBtaW5pZmljYXRpb24sIHdlIHdyaXRlXG4gIC8vIGVhY2ggc3RyaW5nIGluIHRoZSBmaW5nZXJwcmludHMgb25seSBvbmNlLlxuICB2YXIgZm9yRWFjaE5hbWUgPSAnZm9yRWFjaCcsXG4gICAgICBoYXNOYW1lID0gJ2hhcycsXG4gICAgICBjb21tb25Jbml0ID0gWydjbGVhcicsICdkZWxldGUnXSxcbiAgICAgIG1hcFRhaWwgPSBbJ2dldCcsIGhhc05hbWUsICdzZXQnXTtcblxuICAvLyBgTWFwYCwgYFdlYWtNYXBgIGFuZCBgU2V0YCBlYWNoIGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50XG4gIC8vIGNvbWJpbmF0aW9ucyBvZiB0aGUgYWJvdmUgc3VibGlzdHMuXG4gIHZhciBtYXBNZXRob2RzID0gY29tbW9uSW5pdC5jb25jYXQoZm9yRWFjaE5hbWUsIG1hcFRhaWwpLFxuICAgICAgd2Vha01hcE1ldGhvZHMgPSBjb21tb25Jbml0LmNvbmNhdChtYXBUYWlsKSxcbiAgICAgIHNldE1ldGhvZHMgPSBbJ2FkZCddLmNvbmNhdChjb21tb25Jbml0LCBmb3JFYWNoTmFtZSwgaGFzTmFtZSk7XG5cbiAgdmFyIGlzTWFwID0gaXNJRTExID8gaWUxMWZpbmdlcnByaW50KG1hcE1ldGhvZHMpIDogdGFnVGVzdGVyKCdNYXAnKTtcblxuICB2YXIgaXNXZWFrTWFwID0gaXNJRTExID8gaWUxMWZpbmdlcnByaW50KHdlYWtNYXBNZXRob2RzKSA6IHRhZ1Rlc3RlcignV2Vha01hcCcpO1xuXG4gIHZhciBpc1NldCA9IGlzSUUxMSA/IGllMTFmaW5nZXJwcmludChzZXRNZXRob2RzKSA6IHRhZ1Rlc3RlcignU2V0Jyk7XG5cbiAgdmFyIGlzV2Vha1NldCA9IHRhZ1Rlc3RlcignV2Vha1NldCcpO1xuXG4gIC8vIFJldHJpZXZlIHRoZSB2YWx1ZXMgb2YgYW4gb2JqZWN0J3MgcHJvcGVydGllcy5cbiAgZnVuY3Rpb24gdmFsdWVzKG9iaikge1xuICAgIHZhciBfa2V5cyA9IGtleXMob2JqKTtcbiAgICB2YXIgbGVuZ3RoID0gX2tleXMubGVuZ3RoO1xuICAgIHZhciB2YWx1ZXMgPSBBcnJheShsZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhbHVlc1tpXSA9IG9ialtfa2V5c1tpXV07XG4gICAgfVxuICAgIHJldHVybi
14938B2YWx1ZXM7XG4gIH1cblxuICAvLyBDb252ZXJ0IGFuIG9iamVjdCBpbnRvIGEgbGlzdCBvZiBgW2tleSwgdmFsdWVdYCBwYWlycy5cbiAgLy8gVGhlIG9wcG9zaXRlIG9mIGBfLm9iamVjdGAgd2l0aCBvbmUgYXJndW1lbnQuXG4gIGZ1bmN0aW9uIHBhaXJzKG9iaikge1xuICAgIHZhciBfa2V5cyA9IGtleXMob2JqKTtcbiAgICB2YXIgbGVuZ3RoID0gX2tleXMubGVuZ3RoO1xuICAgIHZhciBwYWlycyA9IEFycmF5KGxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgcGFpcnNbaV0gPSBbX2tleXNbaV0sIG9ialtfa2V5c1tpXV1dO1xuICAgIH1cbiAgICByZXR1cm4gcGFpcnM7XG4gIH1cblxuICAvLyBJbnZlcnQgdGhlIGtleXMgYW5kIHZhbHVlcyBvZiBhbiBvYmplY3QuIFRoZSB2YWx1ZXMgbXVzdCBiZSBzZXJpYWxpemFibGUuXG4gIGZ1bmN0aW9uIGludmVydChvYmopIHtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgdmFyIF9rZXlzID0ga2V5cyhvYmopO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBfa2V5cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0W29ialtfa2V5c1tpXV1dID0gX2tleXNbaV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBSZXR1cm4gYSBzb3J0ZWQgbGlzdCBvZiB0aGUgZnVuY3Rpb24gbmFtZXMgYXZhaWxhYmxlIG9uIHRoZSBvYmplY3QuXG4gIGZ1bmN0aW9uIGZ1bmN0aW9ucyhvYmopIHtcbiAgICB2YXIgbmFtZXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoaXNGdW5jdGlvbiQxKG9ialtrZXldKSkgbmFtZXMucHVzaChrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gbmFtZXMuc29ydCgpO1xuICB9XG5cbiAgLy8gQW4gaW50ZXJuYWwgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGFzc2lnbmVyIGZ1bmN0aW9ucy5cbiAgZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoa2V5c0Z1bmMsIGRlZmF1bHRzKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iaikge1xuICAgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICBpZiAoZGVmYXVsdHMpIG9iaiA9IE9iamVjdChvYmopO1xuICAgICAgaWYgKGxlbmd0aCA8IDIgfHwgb2JqID09IG51bGwpIHJldHVybiBvYmo7XG4gICAgICBmb3IgKHZhciBpbmRleCA9IDE7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaW5kZXhdLFxuICAgICAgICAgICAga2V5cyA9IGtleXNGdW5jKHNvdXJjZSksXG4gICAgICAgICAgICBsID0ga2V5cy5sZW5ndGg7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgICAgICAgaWYgKCFkZWZhdWx0cyB8fCBvYmpba2V5XSA9PT0gdm9pZCAwKSBvYmpba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH07XG4gIH1cblxuICAvLyBFeHRlbmQgYSBnaXZlbiBvYmplY3Qgd2l0aCBhbGwgdGhlIHByb3BlcnRpZXMgaW4gcGFzc2VkLWluIG9iamVjdChzKS5cbiAgdmFyIGV4dGVuZCA9IGNyZWF0ZUFzc2lnbmVyKGFsbEtleXMpO1xuXG4gIC8vIEFzc2lnbnMgYSBnaXZlbiBvYmplY3Qgd2l0aCBhbGwgdGhlIG93biBwcm9wZXJ0aWVzIGluIHRoZSBwYXNzZWQtaW5cbiAgLy8gb2JqZWN0KHMpLlxuICAvLyAoaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2Fzc2lnbilcbiAgdmFyIGV4dGVuZE93biA9IGNyZWF0ZUFzc2lnbmVyKGtleXMpO1xuXG4gIC8vIEZpbGwgaW4gYSBnaXZlbiBvYmplY3Qgd2l0aCBkZWZhdWx0IHByb3BlcnRpZXMuXG4gIHZhciBkZWZhdWx0cyA9IGNyZWF0ZUFzc2lnbmVyKGFsbEtleXMsIHRydWUpO1xuXG4gIC8vIENyZWF0ZSBhIG5ha2VkIGZ1bmN0aW9uIHJlZmVyZW5jZSBmb3Igc3Vycm9nYXRlLXByb3RvdHlwZS1zd2FwcGluZy5cbiAgZnVuY3Rpb24gY3RvcigpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKXt9O1xuICB9XG5cbiAgLy8gQW4gaW50ZXJuYWwgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgbmV3IG9iamVjdCB0aGF0IGluaGVyaXRzIGZyb20gYW5vdGhlci5cbiAgZnVuY3Rpb24gYmFzZUNyZWF0ZShwcm90b3R5cGUpIHtcbiAgICBpZiAoIWlzT2JqZWN0KHByb3RvdHlwZSkpIHJldHVybiB7fTtcbiAgICBpZiAobmF0aXZlQ3JlYXRlKSByZXR1cm4gbmF0aXZlQ3JlYXRlKHByb3RvdHlwZSk7XG4gICAgdmFyIEN0b3IgPSBjdG9yKCk7XG4gICAgQ3Rvci5wcm90b3R5cGUgPSBwcm90b3R5cGU7XG4gICAgdmFyIHJlc3VsdCA9IG5ldyBDdG9yO1xuICAgIEN0b3IucHJvdG90eXBlID0gbnVsbDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gQ3JlYXRlcyBhbiBvYmplY3QgdGhhdCBpbmhlcml0cyBmcm9tIHRoZSBnaXZlbiBwcm90b3R5cGUgb2JqZWN0LlxuICAvLyBJZiBhZGRpdGlvbmFsIHByb3BlcnRpZXMgYXJlIHByb3ZpZGVkIHRoZW4gdGhleSB3aWxsIGJlIGFkZGVkIHRvIHRoZVxuICAvLyBjcmVhdGVkIG9iamVjdC5cbiAgZnVuY3Rpb24gY3JlYXRlKHByb3RvdHlwZSwgcHJvcHMpIHtcbiAgICB2YXIgcmVzdWx0ID0gYmFzZUNyZWF0ZShwcm90b3R5cGUpO1xuICAgIGlmIChwcm9wcykgZXh0ZW5kT3duKHJlc3VsdCwgcHJvcHMpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBDcmVhdGUgYSAoc2hhbGxvdy1jbG9uZWQpIGR1cGxpY2F0ZSBvZiBhbiBvYmplY3QuXG4gIGZ1bmN0aW9uIGNsb25lKG9iaikge1xuICAgIGlmICghaXNPYmplY3Qob2JqKSkgcmV0dXJuIG9iajtcbiAgICByZXR1cm4gaXNBcnJheShvYmopID8gb2JqLnNsaWNlKCkgOiBleHRlbmQoe30sIG9iaik7XG4gIH1cblxuICAvLyBJbnZva2VzIGBpbnRlcmNlcHRvcmAgd2l0aCB0aGUgYG9iamAgYW5kIHRoZW4gcmV0dXJucyBgb2JqYC5cbiAgLy8gVGhlIHByaW1hcnkgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBcInRhcCBpbnRvXCIgYSBtZXRob2QgY2hhaW4sIGluXG4gIC8vIG9yZGVyIHRvIHBlcmZvcm0gb3BlcmF0aW9ucyBvbiBpbnRlcm1lZGlhdGUgcmVzdWx0cyB3aXRoaW4gdGhlIGNoYWluLlxuICBmdW5jdGlvbiB0YXAob2JqLCBpbnRlcmNlcHRvcikge1xuICAgIGludGVyY2VwdG9yKG9iaik7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBhIChkZWVwKSBwcm9wZXJ0eSBgcGF0aGAgdG8gYXJyYXkuXG4gIC8vIExpa2UgYF8uaXRlcmF0ZWVgLCB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBjdXN0b21pemVkLlxuICBmdW5jdGlvbiB0b1BhdGgkMShwYXRoKSB7XG4gICAgcmV0dXJuIGlzQXJyYXkocGF0aCkgPyBwYXRoIDogW3BhdGhdO1xuICB9XG4gIF8kMS50b1BhdGggPSB0b1BhdGgkMTtcblxuICAvLyBJbnRlcm5hbCB3cmFwcGVyIGZvciBgXy50b1BhdGhgIHRvIGVuYWJsZSBtaW5pZmljYXRpb24uXG4gIC8vIFNpbWlsYXIgdG8gYGNiYCBmb3IgYF8uaXRlcmF0ZWVgLlxuICBmdW5jdGlvbiB0b1BhdGgocGF0aCkge1xuICAgIHJldHVybi
14938BfJDEudG9QYXRoKHBhdGgpO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgZnVuY3Rpb24gdG8gb2J0YWluIGEgbmVzdGVkIHByb3BlcnR5IGluIGBvYmpgIGFsb25nIGBwYXRoYC5cbiAgZnVuY3Rpb24gZGVlcEdldChvYmosIHBhdGgpIHtcbiAgICB2YXIgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gdm9pZCAwO1xuICAgICAgb2JqID0gb2JqW3BhdGhbaV1dO1xuICAgIH1cbiAgICByZXR1cm4gbGVuZ3RoID8gb2JqIDogdm9pZCAwO1xuICB9XG5cbiAgLy8gR2V0IHRoZSB2YWx1ZSBvZiB0aGUgKGRlZXApIHByb3BlcnR5IG9uIGBwYXRoYCBmcm9tIGBvYmplY3RgLlxuICAvLyBJZiBhbnkgcHJvcGVydHkgaW4gYHBhdGhgIGRvZXMgbm90IGV4aXN0IG9yIGlmIHRoZSB2YWx1ZSBpc1xuICAvLyBgdW5kZWZpbmVkYCwgcmV0dXJuIGBkZWZhdWx0VmFsdWVgIGluc3RlYWQuXG4gIC8vIFRoZSBgcGF0aGAgaXMgbm9ybWFsaXplZCB0aHJvdWdoIGBfLnRvUGF0aGAuXG4gIGZ1bmN0aW9uIGdldChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciB2YWx1ZSA9IGRlZXBHZXQob2JqZWN0LCB0b1BhdGgocGF0aCkpO1xuICAgIHJldHVybiBpc1VuZGVmaW5lZCh2YWx1ZSkgPyBkZWZhdWx0VmFsdWUgOiB2YWx1ZTtcbiAgfVxuXG4gIC8vIFNob3J0Y3V0IGZ1bmN0aW9uIGZvciBjaGVja2luZyBpZiBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gcHJvcGVydHkgZGlyZWN0bHkgb25cbiAgLy8gaXRzZWxmIChpbiBvdGhlciB3b3Jkcywgbm90IG9uIGEgcHJvdG90eXBlKS4gVW5saWtlIHRoZSBpbnRlcm5hbCBgaGFzYFxuICAvLyBmdW5jdGlvbiwgdGhpcyBwdWJsaWMgdmVyc2lvbiBjYW4gYWxzbyB0cmF2ZXJzZSBuZXN0ZWQgcHJvcGVydGllcy5cbiAgZnVuY3Rpb24gaGFzKG9iaiwgcGF0aCkge1xuICAgIHBhdGggPSB0b1BhdGgocGF0aCk7XG4gICAgdmFyIGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBwYXRoW2ldO1xuICAgICAgaWYgKCFoYXMkMShvYmosIGtleSkpIHJldHVybiBmYWxzZTtcbiAgICAgIG9iaiA9IG9ialtrZXldO1xuICAgIH1cbiAgICByZXR1cm4gISFsZW5ndGg7XG4gIH1cblxuICAvLyBLZWVwIHRoZSBpZGVudGl0eSBmdW5jdGlvbiBhcm91bmQgZm9yIGRlZmF1bHQgaXRlcmF0ZWVzLlxuICBmdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8vIFJldHVybnMgYSBwcmVkaWNhdGUgZm9yIGNoZWNraW5nIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHNldCBvZlxuICAvLyBga2V5OnZhbHVlYCBwYWlycy5cbiAgZnVuY3Rpb24gbWF0Y2hlcihhdHRycykge1xuICAgIGF0dHJzID0gZXh0ZW5kT3duKHt9LCBhdHRycyk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIGlzTWF0Y2gob2JqLCBhdHRycyk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0LCB3aGVuIHBhc3NlZCBhbiBvYmplY3QsIHdpbGwgdHJhdmVyc2UgdGhhdCBvYmplY3TigJlzXG4gIC8vIHByb3BlcnRpZXMgZG93biB0aGUgZ2l2ZW4gYHBhdGhgLCBzcGVjaWZpZWQgYXMgYW4gYXJyYXkgb2Yga2V5cyBvciBpbmRpY2VzLlxuICBmdW5jdGlvbiBwcm9wZXJ0eShwYXRoKSB7XG4gICAgcGF0aCA9IHRvUGF0aChwYXRoKTtcbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gZGVlcEdldChvYmosIHBhdGgpO1xuICAgIH07XG4gIH1cblxuICAvLyBJbnRlcm5hbCBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gZWZmaWNpZW50IChmb3IgY3VycmVudCBlbmdpbmVzKSB2ZXJzaW9uXG4gIC8vIG9mIHRoZSBwYXNzZWQtaW4gY2FsbGJhY2ssIHRvIGJlIHJlcGVhdGVkbHkgYXBwbGllZCBpbiBvdGhlciBVbmRlcnNjb3JlXG4gIC8vIGZ1bmN0aW9ucy5cbiAgZnVuY3Rpb24gb3B0aW1pemVDYihmdW5jLCBjb250ZXh0LCBhcmdDb3VudCkge1xuICAgIGlmIChjb250ZXh0ID09PSB2b2lkIDApIHJldHVybiBmdW5jO1xuICAgIHN3aXRjaCAoYXJnQ291bnQgPT0gbnVsbCA/IDMgOiBhcmdDb3VudCkge1xuICAgICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCB2YWx1ZSk7XG4gICAgICB9O1xuICAgICAgLy8gVGhlIDItYXJndW1lbnQgY2FzZSBpcyBvbWl0dGVkIGJlY2F1c2Ugd2XigJlyZSBub3QgdXNpbmcgaXQuXG4gICAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgICAgfTtcbiAgICAgIGNhc2UgNDogcmV0dXJuIGZ1bmN0aW9uKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCBhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIEFuIGludGVybmFsIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGNhbGxiYWNrcyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGVhY2hcbiAgLy8gZWxlbWVudCBpbiBhIGNvbGxlY3Rpb24sIHJldHVybmluZyB0aGUgZGVzaXJlZCByZXN1bHQg4oCUIGVpdGhlciBgXy5pZGVudGl0eWAsXG4gIC8vIGFuIGFyYml0cmFyeSBjYWxsYmFjaywgYSBwcm9wZXJ0eSBtYXRjaGVyLCBvciBhIHByb3BlcnR5IGFjY2Vzc29yLlxuICBmdW5jdGlvbiBiYXNlSXRlcmF0ZWUodmFsdWUsIGNvbnRleHQsIGFyZ0NvdW50KSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBpZGVudGl0eTtcbiAgICBpZiAoaXNGdW5jdGlvbiQxKHZhbHVlKSkgcmV0dXJuIG9wdGltaXplQ2IodmFsdWUsIGNvbnRleHQsIGFyZ0NvdW50KTtcbiAgICBpZiAoaXNPYmplY3QodmFsdWUpICYmICFpc0FycmF
149385KHZhbHVlKSkgcmV0dXJuIG1hdGNoZXIodmFsdWUpO1xuICAgIHJldHVybiBwcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICAvLyBFeHRlcm5hbCB3cmFwcGVyIGZvciBvdXIgY2FsbGJhY2sgZ2VuZXJhdG9yLiBVc2VycyBtYXkgY3VzdG9taXplXG4gIC8vIGBfLml0ZXJhdGVlYCBpZiB0aGV5IHdhbnQgYWRkaXRpb25hbCBwcmVkaWNhdGUvaXRlcmF0ZWUgc2hvcnRoYW5kIHN0eWxlcy5cbiAgLy8gVGhpcyBhYnN0cmFjdGlvbiBoaWRlcyB0aGUgaW50ZXJuYWwtb25seSBgYXJnQ291bnRgIGFyZ3VtZW50LlxuICBmdW5jdGlvbiBpdGVyYXRlZSh2YWx1ZSwgY29udGV4dCkge1xuICAgIHJldHVybiBiYXNlSXRlcmF0ZWUodmFsdWUsIGNvbnRleHQsIEluZmluaXR5KTtcbiAgfVxuICBfJDEuaXRlcmF0ZWUgPSBpdGVyYXRlZTtcblxuICAvLyBUaGUgZnVuY3Rpb24gd2UgY2FsbCBpbnRlcm5hbGx5IHRvIGdlbmVyYXRlIGEgY2FsbGJhY2suIEl0IGludm9rZXNcbiAgLy8gYF8uaXRlcmF0ZWVgIGlmIG92ZXJyaWRkZW4sIG90aGVyd2lzZSBgYmFzZUl0ZXJhdGVlYC5cbiAgZnVuY3Rpb24gY2IodmFsdWUsIGNvbnRleHQsIGFyZ0NvdW50KSB7XG4gICAgaWYgKF8kMS5pdGVyYXRlZSAhPT0gaXRlcmF0ZWUpIHJldHVybiBfJDEuaXRlcmF0ZWUodmFsdWUsIGNvbnRleHQpO1xuICAgIHJldHVybiBiYXNlSXRlcmF0ZWUodmFsdWUsIGNvbnRleHQsIGFyZ0NvdW50KTtcbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIHJlc3VsdHMgb2YgYXBwbHlpbmcgdGhlIGBpdGVyYXRlZWAgdG8gZWFjaCBlbGVtZW50IG9mIGBvYmpgLlxuICAvLyBJbiBjb250cmFzdCB0byBgXy5tYXBgIGl0IHJldHVybnMgYW4gb2JqZWN0LlxuICBmdW5jdGlvbiBtYXBPYmplY3Qob2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIGl0ZXJhdGVlID0gY2IoaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgIHZhciBfa2V5cyA9IGtleXMob2JqKSxcbiAgICAgICAgbGVuZ3RoID0gX2tleXMubGVuZ3RoLFxuICAgICAgICByZXN1bHRzID0ge307XG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgdmFyIGN1cnJlbnRLZXkgPSBfa2V5c1tpbmRleF07XG4gICAgICByZXN1bHRzW2N1cnJlbnRLZXldID0gaXRlcmF0ZWUob2JqW2N1cnJlbnRLZXldLCBjdXJyZW50S2V5LCBvYmopO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8vIFByZWRpY2F0ZS1nZW5lcmF0aW5nIGZ1bmN0aW9uLiBPZnRlbiB1c2VmdWwgb3V0c2lkZSBvZiBVbmRlcnNjb3JlLlxuICBmdW5jdGlvbiBub29wKCl7fVxuXG4gIC8vIEdlbmVyYXRlcyBhIGZ1bmN0aW9uIGZvciBhIGdpdmVuIG9iamVjdCB0aGF0IHJldHVybnMgYSBnaXZlbiBwcm9wZXJ0eS5cbiAgZnVuY3Rpb24gcHJvcGVydHlPZihvYmopIHtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBub29wO1xuICAgIHJldHVybiBmdW5jdGlvbihwYXRoKSB7XG4gICAgICByZXR1cm4gZ2V0KG9iaiwgcGF0aCk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIFJ1biBhIGZ1bmN0aW9uICoqbioqIHRpbWVzLlxuICBmdW5jdGlvbiB0aW1lcyhuLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIHZhciBhY2N1bSA9IEFycmF5KE1hdGgubWF4KDAsIG4pKTtcbiAgICBpdGVyYXRlZSA9IG9wdGltaXplQ2IoaXRlcmF0ZWUsIGNvbnRleHQsIDEpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSBhY2N1bVtpXSA9IGl0ZXJhdGVlKGkpO1xuICAgIHJldHVybiBhY2N1bTtcbiAgfVxuXG4gIC8vIFJldHVybiBhIHJhbmRvbSBpbnRlZ2VyIGJldHdlZW4gYG1pbmAgYW5kIGBtYXhgIChpbmNsdXNpdmUpLlxuICBmdW5jdGlvbiByYW5kb20obWluLCBtYXgpIHtcbiAgICBpZiAobWF4ID09IG51bGwpIHtcbiAgICAgIG1heCA9IG1pbjtcbiAgICAgIG1pbiA9IDA7XG4gICAgfVxuICAgIHJldHVybiBtaW4gKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpO1xuICB9XG5cbiAgLy8gQSAocG9zc2libHkgZmFzdGVyKSB3YXkgdG8gZ2V0IHRoZSBjdXJyZW50IHRpbWVzdGFtcCBhcyBhbiBpbnRlZ2VyLlxuICB2YXIgbm93ID0gRGF0ZS5ub3cgfHwgZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICB9O1xuXG4gIC8vIEludGVybmFsIGhlbHBlciB0byBnZW5lcmF0ZSBmdW5jdGlvbnMgZm9yIGVzY2FwaW5nIGFuZCB1bmVzY2FwaW5nIHN0cmluZ3NcbiAgLy8gdG8vZnJvbSBIVE1MIGludGVycG9sYXRpb24uXG4gIGZ1bmN0aW9uIGNyZWF0ZUVzY2FwZXIobWFwKSB7XG4gICAgdmFyIGVzY2FwZXIgPSBmdW5jdGlvbihtYXRjaCkge1xuICAgICAgcmV0dXJuIG1hcFttYXRjaF07XG4gICAgfTtcbiAgICAvLyBSZWdleGVzIGZvciBpZGVudGlmeWluZyBhIGtleSB0aGF0IG5lZWRzIHRvIGJlIGVzY2FwZWQuXG4gICAgdmFyIHNvdXJjZSA9ICcoPzonICsga2V5cyhtYXApLmpvaW4oJ3wnKSArICcpJztcbiAgICB2YXIgdGVzdFJlZ2V4cCA9IFJlZ0V4cChzb3VyY2UpO1xuICAgIHZhciByZXBsYWNlUmVnZXhwID0gUmVnRXhwKHNvdXJjZSwgJ2cnKTtcbiAgICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSBzdHJpbmcgPT0gbnVsbCA/ICcnIDogJycgKyBzdHJpbmc7XG4gICAgICByZXR1cm4gdGVzdFJlZ2V4cC50ZXN0KHN0cmluZykgPyBzdHJpbmcucmVwbGFjZShyZXBsYWNlUmVnZXhwLCBlc2NhcGVyKSA6IHN0cmluZztcbiAgICB9O1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgbGlzdCBvZiBIVE1MIGVudGl0aWVzIGZvciBlc2NhcGluZy5cbiAgdmFyIGVzY2FwZU1hcCA9IHtcbiAgICAnJic6ICcmYW1wOycsXG4gICAgJzwnOiAnJmx0OycsXG4gICAgJz4nOiAnJmd0OycsXG4gICAgJ1wiJzogJyZxdW90OycsXG4gICAgXCInXCI6ICcmI3gyNzsnLFxuICAgICdgJzogJyYjeDYwOydcbiAgfTtcblxuICAvLyBGdW5jdGlvbiBmb3IgZXNjYXBpbmcgc3RyaW5ncyB0byBIVE1MIGludGVycG9sYXRpb24uXG4gIHZhciBfZXNjYXBlID0gY3JlYXRlRXNjYXBlcihlc2NhcGVNYXApO1xuXG4gIC8vIEludGVybmFsIGxpc3Qgb2YgSFRNTCBlbnRpdGllcyBmb3IgdW5lc2NhcGluZy5cbiAgdmFyIHVuZXNjYXBlTWFwID0gaW52ZXJ0KGVzY2FwZU1hcCk7XG5cbiAgLy8gRnVuY3Rpb24gZm9yIHVuZXNjYXBpbmcgc3RyaW5ncyBmcm9tIEhUTUwgaW50ZXJwb2xhdGlvbi5cbiAgdmFyIF91bmVzY2FwZSA9IGNyZWF0ZUVzY2FwZXIodW5lc2NhcGVNYXApO1xuXG4gIC8vIEJ5IGRlZmF1bHQsIFVuZGVyc2NvcmUgdXNlcyBFUkItc3R5bGUgdGVtcGxhdGUgZGVsaW1pdGVycy4gQ2hhbmdlIHRoZVxuICAvLyBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZlIGRlbGltaXRlcnMuXG4gIHZhciB0ZW1wbGF0ZVNldHRpbmdzID0gXyQxLnRlbXBsYXRlU2V0dGluZ3MgPSB7XG4gICAgZXZhbHVhdGU6IC88JShbXFxzXFxTXSs/KSU+L2csXG4gICAgaW50ZXJwb2xhdGU6IC88JT0oW1xcc1xcU10rPyklPi9nLFxuICAgIGVzY2FwZTogLzwlLShbXFxzXFxTXSs/KSU+L2dcbiAgfTtcblxuICAvLyBXaGVuIGN1c3RvbWl6aW5nIGBfLnRlbXBsYXRlU2V0dGluZ3NgLCBpZiB5b3UgZG9uJ3Qgd2FudCB0byBkZWZpbmUgYW5cbiAgLy8gaW50ZXJwb2xhdGlvbiwgZXZhbHVhdGlvbiBvciBlc2NhcGluZyByZWdleCwgd2UgbmVlZCBvbmUgdGhhdCBpc1xuICAvLyBndWFyYW50ZWVkIG5vdCB0byBtYXRjaC5cbiAgdmFyIG5vTWF0Y2ggPSAvKC4pXi87XG5cbiAgLy8gQ2VydGFpbiBjaGFyYWN0ZXJzIG5lZWQgdG8gYmUgZXNjYXBlZCBzbyB0aGF0IHR
14938oZXkgY2FuIGJlIHB1dCBpbnRvIGFcbiAgLy8gc3RyaW5nIGxpdGVyYWwuXG4gIHZhciBlc2NhcGVzID0ge1xuICAgIFwiJ1wiOiBcIidcIixcbiAgICAnXFxcXCc6ICdcXFxcJyxcbiAgICAnXFxyJzogJ3InLFxuICAgICdcXG4nOiAnbicsXG4gICAgJ1xcdTIwMjgnOiAndTIwMjgnLFxuICAgICdcXHUyMDI5JzogJ3UyMDI5J1xuICB9O1xuXG4gIHZhciBlc2NhcGVSZWdFeHAgPSAvXFxcXHwnfFxccnxcXG58XFx1MjAyOHxcXHUyMDI5L2c7XG5cbiAgZnVuY3Rpb24gZXNjYXBlQ2hhcihtYXRjaCkge1xuICAgIHJldHVybiAnXFxcXCcgKyBlc2NhcGVzW21hdGNoXTtcbiAgfVxuXG4gIC8vIEluIG9yZGVyIHRvIHByZXZlbnQgdGhpcmQtcGFydHkgY29kZSBpbmplY3Rpb24gdGhyb3VnaFxuICAvLyBgXy50ZW1wbGF0ZVNldHRpbmdzLnZhcmlhYmxlYCwgd2UgdGVzdCBpdCBhZ2FpbnN0IHRoZSBmb2xsb3dpbmcgcmVndWxhclxuICAvLyBleHByZXNzaW9uLiBJdCBpcyBpbnRlbnRpb25hbGx5IGEgYml0IG1vcmUgbGliZXJhbCB0aGFuIGp1c3QgbWF0Y2hpbmcgdmFsaWRcbiAgLy8gaWRlbnRpZmllcnMsIGJ1dCBzdGlsbCBwcmV2ZW50cyBwb3NzaWJsZSBsb29waG9sZXMgdGhyb3VnaCBkZWZhdWx0cyBvclxuICAvLyBkZXN0cnVjdHVyaW5nIGFzc2lnbm1lbnQuXG4gIHZhciBiYXJlSWRlbnRpZmllciA9IC9eXFxzKihcXHd8XFwkKStcXHMqJC87XG5cbiAgLy8gSmF2YVNjcmlwdCBtaWNyby10ZW1wbGF0aW5nLCBzaW1pbGFyIHRvIEpvaG4gUmVzaWcncyBpbXBsZW1lbnRhdGlvbi5cbiAgLy8gVW5kZXJzY29yZSB0ZW1wbGF0aW5nIGhhbmRsZXMgYXJiaXRyYXJ5IGRlbGltaXRlcnMsIHByZXNlcnZlcyB3aGl0ZXNwYWNlLFxuICAvLyBhbmQgY29ycmVjdGx5IGVzY2FwZXMgcXVvdGVzIHdpdGhpbiBpbnRlcnBvbGF0ZWQgY29kZS5cbiAgLy8gTkI6IGBvbGRTZXR0aW5nc2Agb25seSBleGlzdHMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICBmdW5jdGlvbiB0ZW1wbGF0ZSh0ZXh0LCBzZXR0aW5ncywgb2xkU2V0dGluZ3MpIHtcbiAgICBpZiAoIXNldHRpbmdzICYmIG9sZFNldHRpbmdzKSBzZXR0aW5ncyA9IG9sZFNldHRpbmdzO1xuICAgIHNldHRpbmdzID0gZGVmYXVsdHMoe30sIHNldHRpbmdzLCBfJDEudGVtcGxhdGVTZXR0aW5ncyk7XG5cbiAgICAvLyBDb21iaW5lIGRlbGltaXRlcnMgaW50byBvbmUgcmVndWxhciBleHByZXNzaW9uIHZpYSBhbHRlcm5hdGlvbi5cbiAgICB2YXIgbWF0Y2hlciA9IFJlZ0V4cChbXG4gICAgICAoc2V0dGluZ3MuZXNjYXBlIHx8IG5vTWF0Y2gpLnNvdXJjZSxcbiAgICAgIChzZXR0aW5ncy5pbnRlcnBvbGF0ZSB8fCBub01hdGNoKS5zb3VyY2UsXG4gICAgICAoc2V0dGluZ3MuZXZhbHVhdGUgfHwgbm9NYXRjaCkuc291cmNlXG4gICAgXS5qb2luKCd8JykgKyAnfCQnLCAnZycpO1xuXG4gICAgLy8gQ29tcGlsZSB0aGUgdGVtcGxhdGUgc291cmNlLCBlc2NhcGluZyBzdHJpbmcgbGl0ZXJhbHMgYXBwcm9wcmlhdGVseS5cbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBzb3VyY2UgPSBcIl9fcCs9J1wiO1xuICAgIHRleHQucmVwbGFjZShtYXRjaGVyLCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlLCBpbnRlcnBvbGF0ZSwgZXZhbHVhdGUsIG9mZnNldCkge1xuICAgICAgc291cmNlICs9IHRleHQuc2xpY2UoaW5kZXgsIG9mZnNldCkucmVwbGFjZShlc2NhcGVSZWdFeHAsIGVzY2FwZUNoYXIpO1xuICAgICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5ndGg7XG5cbiAgICAgIGlmIChlc2NhcGUpIHtcbiAgICAgICAgc291cmNlICs9IFwiJytcXG4oKF9fdD0oXCIgKyBlc2NhcGUgKyBcIikpPT1udWxsPycnOl8uZXNjYXBlKF9fdCkpK1xcbidcIjtcbiAgICAgIH0gZWxzZSBpZiAoaW50ZXJwb2xhdGUpIHtcbiAgICAgICAgc291cmNlICs9IFwiJytcXG4oKF9fdD0oXCIgKyBpbnRlcnBvbGF0ZSArIFwiKSk9PW51bGw/Jyc6X190KStcXG4nXCI7XG4gICAgICB9IGVsc2UgaWYgKGV2YWx1YXRlKSB7XG4gICAgICAgIHNvdXJjZSArPSBcIic7XFxuXCIgKyBldmFsdWF0ZSArIFwiXFxuX19wKz0nXCI7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkb2JlIFZNcyBuZWVkIHRoZSBtYXRjaCByZXR1cm5lZCB0byBwcm9kdWNlIHRoZSBjb3JyZWN0IG9mZnNldC5cbiAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9KTtcbiAgICBzb3VyY2UgKz0gXCInO1xcblwiO1xuXG4gICAgdmFyIGFyZ3VtZW50ID0gc2V0dGluZ3MudmFyaWFibGU7XG4gICAgaWYgKGFyZ3VtZW50KSB7XG4gICAgICAvLyBJbnN1cmUgYWdhaW5zdCB0aGlyZC1wYXJ0eSBjb2RlIGluamVjdGlvbi4gKENWRS0yMDIxLTIzMzU4KVxuICAgICAgaWYgKCFiYXJlSWRlbnRpZmllci50ZXN0KGFyZ3VtZW50KSkgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAndmFyaWFibGUgaXMgbm90IGEgYmFyZSBpZGVudGlmaWVyOiAnICsgYXJndW1lbnRcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIGEgdmFyaWFibGUgaXMgbm90IHNwZWNpZmllZCwgcGxhY2UgZGF0YSB2YWx1ZXMgaW4gbG9jYWwgc2NvcGUuXG4gICAgICBzb3VyY2UgPSAnd2l0aChvYmp8fHt9KXtcXG4nICsgc291cmNlICsgJ31cXG4nO1xuICAgICAgYXJndW1lbnQgPSAnb2JqJztcbiAgICB9XG5cbiAgICBzb3VyY2UgPSBcInZhciBfX3QsX19wPScnLF9faj1BcnJheS5wcm90b3R5cGUuam9pbixcIiArXG4gICAgICBcInByaW50PWZ1bmN0aW9uKCl7X19wKz1fX2ouY2FsbChhcmd1bWVudHMsJycpO307XFxuXCIgK1xuICAgICAgc291cmNlICsgJ3JldHVybiBfX3A7XFxuJztcblxuICAgIHZhciByZW5kZXI7XG4gICAgdHJ5IHtcbiAgICAgIHJlbmRlciA9IG5ldyBGdW5jdGlvbihhcmd1bWVudCwgJ18nLCBzb3VyY2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGUuc291cmNlID0gc291cmNlO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG5cbiAgICB2YXIgdGVtcGxhdGUgPSBmdW5jdGlvbihkYXRhKSB7XG4gICAgICByZXR1cm4gcmVuZGVyLmNhbGwodGhpcywgZGF0YSwgXyQxKTtcbiAgICB9O1xuXG4gICAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgc291cmNlIGFzIGEgY29udmVuaWVuY2UgZm9yIHByZWNvbXBpbGF0aW9uLlxuICAgIHRlbXBsYXRlLnNvdXJjZSA9ICdmdW5jdGlvbignICsgYXJndW1lbnQgKyAnKXtcXG4nICsgc291cmNlICsgJ30nO1xuXG4gICAgcmV0dXJuIHRlbXBsYXRlO1xuICB9XG5cbiAgLy8gVHJhdmVyc2VzIHRoZSBjaGlsZHJlbiBvZiBgb2JqYCBhbG9uZyBgcGF0aGAuIElmIGEgY2hpbGQgaXMgYSBmdW5jdGlvbiwgaXRcbiAgLy8gaXMgaW52b2tlZCB3aXRoIGl0cyBwYXJlbnQgYXMgY29udGV4dC4gUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGZpbmFsXG4gIC8vIGNoaWxkLCBvciBgZmFsbGJhY2tgIGlmIGFueSBjaGlsZCBpcyB1bmRlZmluZWQuXG4gIGZ1bmN0aW9uIHJlc3VsdChvYmosIHBhdGgsIGZhbGxiYWNrKSB7XG4gICAgcGF0aCA9IHRvUGF0aC
14938hwYXRoKTtcbiAgICB2YXIgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG4gICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgIHJldHVybiBpc0Z1bmN0aW9uJDEoZmFsbGJhY2spID8gZmFsbGJhY2suY2FsbChvYmopIDogZmFsbGJhY2s7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBwcm9wID0gb2JqID09IG51bGwgPyB2b2lkIDAgOiBvYmpbcGF0aFtpXV07XG4gICAgICBpZiAocHJvcCA9PT0gdm9pZCAwKSB7XG4gICAgICAgIHByb3AgPSBmYWxsYmFjaztcbiAgICAgICAgaSA9IGxlbmd0aDsgLy8gRW5zdXJlIHdlIGRvbid0IGNvbnRpbnVlIGl0ZXJhdGluZy5cbiAgICAgIH1cbiAgICAgIG9iaiA9IGlzRnVuY3Rpb24kMShwcm9wKSA/IHByb3AuY2FsbChvYmopIDogcHJvcDtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8vIEdlbmVyYXRlIGEgdW5pcXVlIGludGVnZXIgaWQgKHVuaXF1ZSB3aXRoaW4gdGhlIGVudGlyZSBjbGllbnQgc2Vzc2lvbikuXG4gIC8vIFVzZWZ1bCBmb3IgdGVtcG9yYXJ5IERPTSBpZHMuXG4gIHZhciBpZENvdW50ZXIgPSAwO1xuICBmdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgICB2YXIgaWQgPSArK2lkQ291bnRlciArICcnO1xuICAgIHJldHVybiBwcmVmaXggPyBwcmVmaXggKyBpZCA6IGlkO1xuICB9XG5cbiAgLy8gU3RhcnQgY2hhaW5pbmcgYSB3cmFwcGVkIFVuZGVyc2NvcmUgb2JqZWN0LlxuICBmdW5jdGlvbiBjaGFpbihvYmopIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBfJDEob2JqKTtcbiAgICBpbnN0YW5jZS5fY2hhaW4gPSB0cnVlO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuXG4gIC8vIEludGVybmFsIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgYHNvdXJjZUZ1bmNgIGJvdW5kIHRvIGBjb250ZXh0YCB3aXRoIG9wdGlvbmFsXG4gIC8vIGBhcmdzYC4gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGV4ZWN1dGUgYSBmdW5jdGlvbiBhcyBhIGNvbnN0cnVjdG9yIG9yIGFzIGFcbiAgLy8gbm9ybWFsIGZ1bmN0aW9uLlxuICBmdW5jdGlvbiBleGVjdXRlQm91bmQoc291cmNlRnVuYywgYm91bmRGdW5jLCBjb250ZXh0LCBjYWxsaW5nQ29udGV4dCwgYXJncykge1xuICAgIGlmICghKGNhbGxpbmdDb250ZXh0IGluc3RhbmNlb2YgYm91bmRGdW5jKSkgcmV0dXJuIHNvdXJjZUZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgdmFyIHNlbGYgPSBiYXNlQ3JlYXRlKHNvdXJjZUZ1bmMucHJvdG90eXBlKTtcbiAgICB2YXIgcmVzdWx0ID0gc291cmNlRnVuYy5hcHBseShzZWxmLCBhcmdzKTtcbiAgICBpZiAoaXNPYmplY3QocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICByZXR1cm4gc2VsZjtcbiAgfVxuXG4gIC8vIFBhcnRpYWxseSBhcHBseSBhIGZ1bmN0aW9uIGJ5IGNyZWF0aW5nIGEgdmVyc2lvbiB0aGF0IGhhcyBoYWQgc29tZSBvZiBpdHNcbiAgLy8gYXJndW1lbnRzIHByZS1maWxsZWQsIHdpdGhvdXQgY2hhbmdpbmcgaXRzIGR5bmFtaWMgYHRoaXNgIGNvbnRleHQuIGBfYCBhY3RzXG4gIC8vIGFzIGEgcGxhY2Vob2xkZXIgYnkgZGVmYXVsdCwgYWxsb3dpbmcgYW55IGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cyB0byBiZVxuICAvLyBwcmUtZmlsbGVkLiBTZXQgYF8ucGFydGlhbC5wbGFjZWhvbGRlcmAgZm9yIGEgY3VzdG9tIHBsYWNlaG9sZGVyIGFyZ3VtZW50LlxuICB2YXIgcGFydGlhbCA9IHJlc3RBcmd1bWVudHMoZnVuY3Rpb24oZnVuYywgYm91bmRBcmdzKSB7XG4gICAgdmFyIHBsYWNlaG9sZGVyID0gcGFydGlhbC5wbGFjZWhvbGRlcjtcbiAgICB2YXIgYm91bmQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBwb3NpdGlvbiA9IDAsIGxlbmd0aCA9IGJvdW5kQXJncy5sZW5ndGg7XG4gICAgICB2Y
14938XIgYXJncyA9IEFycmF5KGxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGFyZ3NbaV0gPSBib3VuZEFyZ3NbaV0gPT09IHBsYWNlaG9sZGVyID8gYXJndW1lbnRzW3Bvc2l0aW9uKytdIDogYm91bmRBcmdzW2ldO1xuICAgICAgfVxuICAgICAgd2hpbGUgKHBvc2l0aW9uIDwgYXJndW1lbnRzLmxlbmd0aCkgYXJncy5wdXNoKGFyZ3VtZW50c1twb3NpdGlvbisrXSk7XG4gICAgICByZXR1cm4gZXhlY3V0ZUJvdW5kKGZ1bmMsIGJvdW5kLCB0aGlzLCB0aGlzLCBhcmdzKTtcbiAgICB9O1xuICAgIHJldHVybiBib3VuZDtcbiAgfSk7XG5cbiAgcGFydGlhbC5wbGFjZWhvbGRlciA9IF8kMTtcblxuICAvLyBDcmVhdGUgYSBmdW5jdGlvbiBib3VuZCB0byBhIGdpdmVuIG9iamVjdCAoYXNzaWduaW5nIGB0aGlzYCwgYW5kIGFyZ3VtZW50cyxcbiAgLy8gb3B0aW9uYWxseSkuXG4gIHZhciBiaW5kID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihmdW5jLCBjb250ZXh0LCBhcmdzKSB7XG4gICAgaWYgKCFpc0Z1bmN0aW9uJDEoZnVuYykpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JpbmQgbXVzdCBiZSBjYWxsZWQgb24gYSBmdW5jdGlvbicpO1xuICAgIHZhciBib3VuZCA9IHJlc3RBcmd1bWVudHMoZnVuY3Rpb24oY2FsbEFyZ3MpIHtcbiAgICAgIHJldHVybiBleGVjdXRlQm91bmQoZnVuYywgYm91bmQsIGNvbnRleHQsIHRoaXMsIGFyZ3MuY29uY2F0KGNhbGxBcmdzKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGJvdW5kO1xuICB9KTtcblxuICAvLyBJbnRlcm5hbCBoZWxwZXIgZm9yIGNvbGxlY3Rpb24gbWV0aG9kcyB0byBkZXRlcm1pbmUgd2hldGhlciBhIGNvbGxlY3Rpb25cbiAgLy8gc2hvdWxkIGJlIGl0ZXJhdGVkIGFzIGFuIGFycmF5IG9yIGFzIGFuIG9iamVjdC5cbiAgLy8gUmVsYXRlZDogaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLXRvbGVuZ3RoXG4gIC8vIEF2b2lkcyBhIHZlcnkgbmFzdHkgaU9TIDggSklUIGJ1ZyBvbiBBUk0tNjQuICMyMDk0XG4gIHZhciBpc0FycmF5TGlrZSA9IGNyZWF0ZVNpemVQcm9wZXJ0eUNoZWNrKGdldExlbmd0aCk7XG5cbiAgLy8gSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gb2YgYSByZWN1cnNpdmUgYGZsYXR0ZW5gIGZ1bmN0aW9uLlxuICBmdW5jdGlvbiBmbGF0dGVuJDEoaW5wdXQsIGRlcHRoLCBzdHJpY3QsIG91dHB1dCkge1xuICAgIG91dHB1dCA9IG91dHB1dCB8fCBbXTtcbiAgICBpZiAoIWRlcHRoICYmIGRlcHRoICE9PSAwKSB7XG4gICAgICBkZXB0aCA9IEluZmluaXR5O1xuICAgIH0gZWxzZSBpZiAoZGVwdGggPD0gMCkge1xuICAgICAgcmV0dXJuIG91dHB1dC5jb25jYXQoaW5wdXQpO1xuICAgIH1cbiAgICB2YXIgaWR4ID0gb3V0cHV0Lmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2V0TGVuZ3RoKGlucHV0KTsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2Y
14938XIgdmFsdWUgPSBpbnB1dFtpXTtcbiAgICAgIGlmIChpc0FycmF5TGlrZSh2YWx1ZSkgJiYgKGlzQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzJDEodmFsdWUpKSkge1xuICAgICAgICAvLyBGbGF0dGVuIGN1cnJlbnQgbGV2ZWwgb2YgYXJyYXkgb3IgYXJndW1lbnRzIG9iamVjdC5cbiAgICAgICAgaWYgKGRlcHRoID4gMSkge1xuICAgICAgICAgIGZsYXR0ZW4kMSh2YWx1ZSwgZGVwdGggLSAxLCBzdHJpY3QsIG91dHB1dCk7XG4gICAgICAgICAgaWR4ID0gb3V0cHV0Lmxlbmd0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgaiA9IDAsIGxlbiA9IHZhbHVlLmxlbmd0aDtcbiAgICAgICAgICB3aGlsZSAoaiA8IGxlbikgb3V0cHV0W2lkeCsrXSA9IHZhbHVlW2orK107XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCkge1xuICAgICAgICBvdXRwdXRbaWR4KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cblxuICAvLyBCaW5kIGEgbnVtYmVyIG9mIGFuIG9iamVjdCdzIG1ldGhvZHMgdG8gdGhhdCBvYmplY3QuIFJlbWFpbmluZyBhcmd1bWVudHNcbiAgLy8gYXJlIHRoZSBtZXRob2QgbmFtZXMgdG8gYmUgYm91bmQuIFVzZWZ1bCBmb3IgZW5zdXJpbmcgdGhhdCBhbGwgY2FsbGJhY2tzXG4gIC8vIGRlZmluZWQgb24gYW4gb2JqZWN0IGJlbG9uZyB0byBpdC5cbiAgdmFyIGJpbmRBbGwgPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKG9iaiwga2V5cykge1xuICAgIGtleXMgPSBmbGF0dGVuJDEoa2V5cywgZmFsc2UsIGZhbHNlKTtcbiAgICB2YXIgaW5kZXggPSBrZXlzLmxlbmd0aDtcbiAgICBpZiAoaW5kZXggPCAxKSB0aHJvdyBuZXcgRXJyb3IoJ2JpbmRBbGwgbXVzdCBiZSBwYXNzZWQgZnVuY3Rpb24gbmFtZXMnKTtcbiAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgdmFyIGtleSA9IGtleXNbaW5kZXhdO1xuICAgICAgb2JqW2tleV0gPSBiaW5kKG9ialtrZXldLCBvYmopO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9KTtcblxuICAvLyBNZW1vaXplIGFuIGV4cGVuc2l2ZSBmdW5jdGlvbiBieSBzdG9yaW5nIGl0cyByZXN1bHRzLlxuICBmdW5jdGlvbiBtZW1vaXplKGZ1bmMsIGhhc2hlcikge1xuICAgIHZhciBtZW1vaXplID0gZnVuY3Rpb24oa2V5KSB7XG4gICAgICB2Y
14938XIgY2FjaGUgPSBtZW1vaXplLmNhY2hlO1xuICAgICAgdmFyIGFkZHJlc3MgPSAnJyArIChoYXNoZXIgPyBoYXNoZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IGtleSk7XG4gICAgICBpZiAoIWhhcyQxKGNhY2hlLCBhZGRyZXNzKSkgY2FjaGVbYWRkcmVzc10gPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICByZXR1cm4gY2FjaGVbYWRkcmVzc107XG4gICAgfTtcbiAgICBtZW1vaXplLmNhY2hlID0ge307XG4gICAgcmV0dXJuIG1lbW9pemU7XG4gIH1cblxuICAvLyBEZWxheXMgYSBmdW5jdGlvbiBmb3IgdGhlIGdpdmVuIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIGFuZCB0aGVuIGNhbGxzXG4gIC8vIGl0IHdpdGggdGhlIGFyZ3VtZW50cyBzdXBwbGllZC5cbiAgdmFyIGRlbGF5ID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihmdW5jLCB3YWl0LCBhcmdzKSB7XG4gICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZnVuYy5hcHBseShudWxsLCBhcmdzKTtcbiAgICB9LCB3YWl0KTtcbiAgfSk7XG5cbiAgLy8gRGVmZXJzIGEgZnVuY3Rpb24sIHNjaGVkdWxpbmcgaXQgdG8gcnVuIGFmdGVyIHRoZSBjdXJyZW50IGNhbGwgc3RhY2sgaGFzXG4gIC8vIGNsZWFyZWQuXG4gIHZhciBkZWZlciA9IHBhcnRpYWwoZGVsYXksIF8kMSwgMSk7XG5cbiAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uLCB0aGF0LCB3aGVuIGludm9rZWQsIHdpbGwgb25seSBiZSB0cmlnZ2VyZWQgYXQgbW9zdCBvbmNlXG4gIC8vIGR1cmluZyBhIGdpdmVuIHdpbmRvdyBvZiB0aW1lLiBOb3JtYWxseSwgdGhlIHRocm90dGxlZCBmdW5jdGlvbiB3aWxsIHJ1blxuICAvLyBhcyBtdWNoIGFzIGl0IGNhbiwgd2l0aG91dCBldmVyIGdvaW5nIG1vcmUgdGhhbiBvbmNlIHBlciBgd2FpdGAgZHVyYXRpb247XG4gIC8vIGJ1dCBpZiB5b3UnZCBsaWtlIHRvIGRpc2FibGUgdGhlIGV4ZWN1dGlvbiBvbiB0aGUgbGVhZGluZyBlZGdlLCBwYXNzXG4gIC8vIGB7bGVhZGluZzogZmFsc2V9YC4gVG8gZGlzYWJsZSBleGVjdXRpb24gb24gdGhlIHRyYWlsaW5nIGVkZ2UsIGRpdHRvLlxuICBmdW5jdGlvbiB0aHJvdHRsZShmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gICAgdmFyIHRpbWVvdXQsIGNvbnRleHQsIGFyZ3MsIHJlc3VsdDtcbiAgICB2YXIgcHJldmlvdXMgPSAwO1xuICAgIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9O1xuXG4gICAgdmFyIGxhdGVyID0gZnVuY3Rpb24oKSB7XG4gICAgICBwcmV2aW91cyA9IG9wdGlvbnMubGVhZGluZyA9PT0gZmFsc2UgPyAwIDogbm93KCk7XG4gICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICBpZiAoIXRpbWVvdXQpIGNvbnRleHQgPSBhcmdzID0gbnVsbDtcbiAgICB9O1xuXG4gICAgdmFyIHRocm90dGxlZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIF9ub3cgPSBub3coKTtcbiAgICAgIGlmICghcHJldmlvdXMgJiYgb3B0aW9ucy5sZWFkaW5nID09PSBmYWxzZSkgcHJldmlvdXMgPSBfbm93O1xuICAgICAgdmFyIHJlbWFpbmluZyA9IHdhaXQgLSAoX25vdyAtIHByZXZpb3VzKTtcbiAgICAgIGNvbnRleHQgPSB0aGlzO1xuICAgICAgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgIGlmIChyZW1haW5pbmcgPD0gMCB8fCByZW1haW5pbmcgPiB3YWl0KSB7XG4gICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHByZXZpb3VzID0gX25vdztcbiAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgICAgaWYgKCF0aW1lb3V0KSBjb250ZXh0ID0gYXJncyA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKCF0aW1lb3V0ICYmIG9wdGlvbnMudHJhaWxpbmcgIT09IGZhbHNlKSB7XG4gICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCByZW1haW5pbmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgdGhyb3R0bGVkLmNhbmNlbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgcHJldmlvdXMgPSAwO1xuICAgICAgdGltZW91dCA9IGNvbnRleHQgPSBhcmdzID0gbnVsbDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRocm90dGxlZDtcbiAgfVxuXG4gIC8vIFdoZW4gYSBzZXF1ZW5jZSBvZiBjYWxscyBvZiB0aGUgcmV0dXJuZWQgZnVuY3Rpb24gZW5kcywgdGhlIGFyZ3VtZW50XG4gIC8vIGZ1bmN0aW9uIGlzIHRyaWdnZXJlZC4gVGhlIGVuZCBvZiBhIHNlcXVlbmNlIGlzIGRlZmluZWQgYnkgdGhlIGB3YWl0YFxuICAvLyBwYXJhbWV0ZXIuIElmIGBpbW1lZGlhdGVgIGlzIHBhc3NlZCwgdGhlIGFyZ3VtZW50IGZ1bmN0aW9uIHdpbGwgYmVcbiAgLy8gdHJpZ2dlcmVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlcXVlbmNlIGluc3RlYWQgb2YgYXQgdGhlIGVuZC5cbiAgZnVuY3Rpb24gZGVib3VuY2UoZnVuYywgd2FpdCwgaW1tZWRpYXRlKSB7XG4gICAgdmFyIHRpbWVvdXQsIHByZXZpb3VzLCBhcmdzLCByZXN1bHQsIGNvbnRleHQ7XG5cbiAgICB2YXIgbGF0ZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBwYXNzZWQgPSBub3coKSAtIHByZXZpb3VzO1xuICAgICAgaWYgKHdhaXQgPiBwYXNzZWQpIHtcbiAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQgLSBwYXNzZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICAgIGlmICghaW1tZWRpYXRlKSByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgICAvLyBUaGlzIGNoZWNrIGlzIG5lZWRlZCBiZWNhdXNlIGBmdW5jYCBjYW4gcmVjdXJzaXZlbHkgaW52b2tlIGBkZWJvdW5jZWRgLlxuICAgICAgICBpZiAoIXRpbWVvdXQpIGFyZ3MgPSBjb250ZXh0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIGRlYm91bmNlZCA9IHJlc3RBcmd1bWVudHMoZnVuY3Rpb24oX2FyZ3MpIHtcbiAgICAgIGNvbnRleHQgPSB0aGlzO1xuICAgICAgYXJncyA9IF9hcmdzO1xuICAgICAgcHJldmlvdXMgPSBub3coKTtcbiAgICAgIGlmICghdGltZW91dCkge1xuICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgd2FpdCk7XG4gICAgICAgIGlmIChpbW1lZGlhdGUpIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgZGVib3VuY2VkLmNhbmNlbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgdGltZW91dCA9IGFyZ3MgPSBjb250ZXh0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlYm91bmNlZDtcbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIGZpcnN0IGZ1bmN0aW9uIHBhc3NlZCBhcyBhbiBhcmd1bWVudCB0byB0aGUgc2Vjb25kLFxuICAvLyBhbGxvd2luZyB5b3UgdG8gYWRqdXN0IGFyZ3VtZW50cywgcnVuIGNvZGUgYmVmb3JlIGFuZCBhZnRlciwgYW5kXG4gIC8vIGNvbmRpdGlvbmFsbHkgZXhlY3V0ZSB0aGUgb3JpZ2luYWwgZnVuY3Rpb24uXG4gIGZ1bmN0aW9uIHdyYXAoZnVuYywgd3JhcHBlcikge1xuICAgIHJldHVybi
14938BwYXJ0aWFsKHdyYXBwZXIsIGZ1bmMpO1xuICB9XG5cbiAgLy8gUmV0dXJucyBhIG5lZ2F0ZWQgdmVyc2lvbiBvZiB0aGUgcGFzc2VkLWluIHByZWRpY2F0ZS5cbiAgZnVuY3Rpb24gbmVnYXRlKHByZWRpY2F0ZSkge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiAhcHJlZGljYXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGlzIHRoZSBjb21wb3NpdGlvbiBvZiBhIGxpc3Qgb2YgZnVuY3Rpb25zLCBlYWNoXG4gIC8vIGNvbnN1bWluZyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiB0aGF0IGZvbGxvd3MuXG4gIGZ1bmN0aW9uIGNvbXBvc2UoKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgdmFyIHN0YXJ0ID0gYXJncy5sZW5ndGggLSAxO1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBpID0gc3RhcnQ7XG4gICAgICB2YXIgcmVzdWx0ID0gYXJnc1tzdGFydF0uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIHdoaWxlIChpLS0pIHJlc3VsdCA9IGFyZ3NbaV0uY2FsbCh0aGlzLCByZXN1bHQpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICB9XG5cbiAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBvbmx5IGJlIGV4ZWN1dGVkIG9uIGFuZCBhZnRlciB0aGUgTnRoIGNhbGwuXG4gIGZ1bmN0aW9uIGFmdGVyKHRpbWVzLCBmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKC0tdGltZXMgPCAxKSB7XG4gICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHdpbGwgb25seSBiZSBleGVjdXRlZCB1cCB0byAoYnV0IG5vdCBpbmNsdWRpbmcpIHRoZVxuICAvLyBOdGggY2FsbC5cbiAgZnVuY3Rpb24gYmVmb3JlKHRpbWVzLCBmdW5jKSB7XG4gICAgdmFyIG1lbW87XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKC0tdGltZXMgPiAwKSB7XG4gICAgICAgIG1lbW8gPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG4gICAgICBpZiAodGltZXMgPD0gMSkgZnVuYyA9IG51bGw7XG4gICAgICByZXR1cm4gbWVtbztcbiAgICB9O1xuICB9XG5cbiAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhdCBtb3N0IG9uZSB0aW1lLCBubyBtYXR0ZXIgaG93XG4gIC8vIG9mdGVuIHlvdSBjYWxsIGl0LiBVc2VmdWwgZm9yIGxhenkgaW5pdGlhbGl6YXRpb24uXG4gIHZhciBvbmNlID0gcGFydGlhbChiZWZvcmUsIDIpO1xuXG4gIC8vIFJldHVybnMgdGhlIGZpcnN0IGtleSBvbiBhbiBvYmplY3QgdGhhdCBwYXNzZXMgYSB0cnV0aCB0ZXN0LlxuICBmdW5jdGlvbiBmaW5kS2V5KG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgcHJlZGljYXRlID0gY2IocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICB2YXIgX2tleXMgPSBrZXlzKG9iaiksIGtleTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gX2tleXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGtleSA9IF9rZXlzW2ldO1xuICAgICAgaWYgKHByZWRpY2F0ZShvYmpba2V5XSwga2V5LCBvYmopKSByZXR1cm4ga2V5O1xuICAgIH1cbiAgfVxuXG4gIC8vIEludGVybmFsIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGBfLmZpbmRJbmRleGAgYW5kIGBfLmZpbmRMYXN0SW5kZXhgLlxuICBmdW5jdGlvbiBjcmVhdGVQcmVkaWNhdGVJbmRleEZpbmRlcihkaXIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oYXJyYXksIHByZWRpY2F0ZSwgY29udGV4dCkge1xuICAgICAgcHJlZGljYXRlID0gY2IocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICAgIHZhciBsZW5ndGggPSBnZXRMZW5ndGgoYXJyYXkpO1xuICAgICAgdmFyIGluZGV4ID0gZGlyID4gMCA/IDAgOiBsZW5ndGggLSAxO1xuICAgICAgZm9yICg7IGluZGV4ID49IDAgJiYgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IGRpcikge1xuICAgICAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH07XG4gIH1cblxuICAvLyBSZXR1cm5zIHRoZSBmaXJzdCBpbmRleCBvbiBhbiBhcnJheS1saWtlIHRoYXQgcGFzc2VzIGEgdHJ1dGggdGVzdC5cbiAgdmFyIGZpbmRJbmRleCA9IGNyZWF0ZVByZWRpY2F0ZUluZGV4RmluZGVyKDEpO1xuXG4gIC8vIFJldHVybnMgdGhlIGxhc3QgaW5kZXggb24gYW4gYXJyYXktbGlrZSB0aGF0IHBhc3NlcyBhIHRydXRoIHRlc3QuXG4gIHZhciBmaW5kTGFzdEluZGV4ID0gY3JlYXRlUHJlZGljYXRlSW5kZXhGaW5kZXIoLTEpO1xuXG4gIC8vIFVzZSBhIGNvbXBhcmF0b3IgZnVuY3Rpb24gdG8gZmlndXJlIG91dCB0aGUgc21hbGxlc3QgaW5kZXggYXQgd2hpY2hcbiAgLy8gYW4gb2JqZWN0IHNob3VsZCBiZSBpbnNlcnRlZCBzbyBhcyB0byBtYWludGFpbiBvcmRlci4gVXNlcyBiaW5hcnkgc2VhcmNoLlxuICBmdW5jdGlvbiBzb3J0ZWRJbmRleChhcnJheSwgb2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIGl0ZXJhdGVlID0gY2IoaXRlcmF0ZWUsIGNvbnRleHQsIDEpO1xuICAgIHZhciB2YWx1ZSA9IGl0ZXJhdGVlKG9iaik7XG4gICAgdmFyIGxvdyA9IDAsIGhpZ2ggPSBnZXRMZW5ndGgoYXJyYXkpO1xuICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XG4gICAgICB2Y
14938XIgbWlkID0gTWF0aC5mbG9vcigobG93ICsgaGlnaCkgLyAyKTtcbiAgICAgIGlmIChpdGVyYXRlZShhcnJheVttaWRdKSA8IHZhbHVlKSBsb3cgPSBtaWQgKyAxOyBlbHNlIGhpZ2ggPSBtaWQ7XG4gICAgfVxuICAgIHJldHVybiBsb3c7XG4gIH1cblxuICAvLyBJbnRlcm5hbCBmdW5jdGlvbiB0byBnZW5lcmF0ZSB0aGUgYF8uaW5kZXhPZmAgYW5kIGBfLmxhc3RJbmRleE9mYCBmdW5jdGlvbnMuXG4gIGZ1bmN0aW9uIGNyZWF0ZUluZGV4RmluZGVyKGRpciwgcHJlZGljYXRlRmluZCwgc29ydGVkSW5kZXgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oYXJyYXksIGl0ZW0sIGlkeCkge1xuICAgICAgdmFyIGkgPSAwLCBsZW5ndGggPSBnZXRMZW5ndGgoYXJyYXkpO1xuICAgICAgaWYgKHR5cGVvZiBpZHggPT0gJ251bWJlcicpIHtcbiAgICAgICAgaWYgKGRpciA+IDApIHtcbiAgICAgICAgICBpID0gaWR4ID49IDAgPyBpZHggOiBNYXRoLm1heChpZHggKyBsZW5ndGgsIGkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxlbmd0aCA9IGlkeCA+PSAwID8gTWF0aC5taW4oaWR4ICsgMSwgbGVuZ3RoKSA6IGlkeCArIGxlbmd0aCArIDE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoc29ydGVkSW5kZXggJiYgaWR4ICYmIGxlbmd0aCkge1xuICAgICAgICBpZHggPSBzb3J0ZWRJbmRleChhcnJheSwgaXRlbSk7XG4gICAgICAgIHJldHVybiBhcnJheVtpZHhdID09PSBpdGVtID8gaWR4IDogLTE7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbSAhPT0gaXRlbSkge1xuICAgICAgICBpZHggPSBwcmVkaWNhdGVGaW5kKHNsaWNlLmNhbGwoYXJyYXksIGksIGxlbmd0aCksIGlzTmFOJDEpO1xuICAgICAgICByZXR1cm4gaWR4ID49IDAgPyBpZHggKyBpIDogLTE7XG4gICAgICB9XG4gICAgICBmb3IgKGlkeCA9IGRpciA+IDAgPyBpIDogbGVuZ3RoIC0gMTsgaWR4ID49IDAgJiYgaWR4IDwgbGVuZ3RoOyBpZHggKz0gZGlyKSB7XG4gICAgICAgIGlmIChhcnJheVtpZHhdID09PSBpdGVtKSByZXR1cm4gaWR4O1xuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH07XG4gIH1cblxuICAvLyBSZXR1cm4gdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGFuIGl0ZW0gaW4gYW4gYXJyYXksXG4gIC8vIG9yIC0xIGlmIHRoZSBpdGVtIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgYXJyYXkuXG4gIC8vIElmIHRoZSBhcnJheSBpcyBsYXJnZSBhbmQgYWxyZWFkeSBpbiBzb3J0IG9yZGVyLCBwYXNzIGB0cnVlYFxuICAvLyBmb3IgKippc1NvcnRlZCoqIHRvIHVzZSBiaW5hcnkgc2VhcmNoLlxuICB2YXIgaW5kZXhPZiA9IGNyZWF0ZUluZGV4RmluZGVyKDEsIGZpbmRJbmRleCwgc29ydGVkSW5kZXgpO1xuXG4gIC8vIFJldHVybiB0aGUgcG9zaXRpb24gb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBhbiBpdGVtIGluIGFuIGFycmF5LFxuICAvLyBvciAtMSBpZiB0aGUgaXRlbSBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGFycmF5LlxuICB2YXIgbGFzdEluZGV4T2YgPSBjcmVhdGVJbmRleEZpbmRlcigtMSwgZmluZExhc3RJbmRleCk7XG5cbiAgLy8gUmV0dXJuIHRoZSBmaXJzdCB2YWx1ZSB3aGljaCBwYXNzZXMgYSB0cnV0aCB0ZXN0LlxuICBmdW5jdGlvbiBmaW5kKG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIGtleUZpbmRlciA9IGlzQXJyYXlMaWtlKG9iaikgPyBmaW5kSW5kZXggOiBmaW5kS2V5O1xuICAgIHZhciBrZXkgPSBrZXlGaW5kZXIob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIGlmIChrZXkgIT09IHZvaWQgMCAmJiBrZXkgIT09IC0xKSByZXR1cm4gb2JqW2tleV07XG4gIH1cblxuICAvLyBDb252ZW5pZW5jZSB2ZXJzaW9uIG9mIGEgY29tbW9uIHVzZSBjYXNlIG9mIGBfLmZpbmRgOiBnZXR0aW5nIHRoZSBmaXJzdFxuICAvLyBvYmplY3QgY29udGFpbmluZyBzcGVjaWZpYyBga2V5OnZhbHVlYCBwYWlycy5cbiAgZnVuY3Rpb24gZmluZFdoZXJlKG9iaiwgYXR0cnMpIHtcbiAgICByZXR1cm4gZmluZChvYmosIG1hdGNoZXIoYXR0cnMpKTtcbiAgfVxuXG4gIC8vIFRoZSBjb3JuZXJzdG9uZSBmb3IgY29sbGVjdGlvbiBmdW5jdGlvbnMsIGFuIGBlYWNoYFxuICAvLyBpbXBsZW1lbnRhdGlvbiwgYWthIGBmb3JFYWNoYC5cbiAgLy8gSGFuZGxlcyByYXcgb2JqZWN0cyBpbiBhZGRpdGlvbiB0byBhcnJheS1saWtlcy4gVHJlYXRzIGFsbFxuICAvLyBzcGFyc2UgYXJyYXktbGlrZXMgYXMgaWYgdGhleSB3ZXJlIGRlbnNlLlxuICBmdW5jdGlvbiBlYWNoKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICBpdGVyYXRlZSA9IG9wdGltaXplQ2IoaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgIHZhciBpLCBsZW5ndGg7XG4gICAgaWYgKGlzQXJyYXlMaWtlKG9iaikpIHtcbiAgICAgIGZvciAoaSA9IDAsIGxlbmd0aCA9IG9iai5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICBpdGVyYXRlZShvYmpbaV0sIGksIG9iaik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfa2V5cyA9IGtleXMob2JqKTtcbiAgICAgIGZvciAoaSA9IDAsIGxlbmd0aCA9IF9rZXlzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGl0ZXJhdGVlKG9ialtfa2V5c1tpXV0sIF9rZXlzW2ldLCBvYmopO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLy8gUmV0dXJuIHRoZSByZXN1bHRzIG9mIGFwcGx5aW5nIHRoZSBpdGVyYXRlZSB0byBlYWNoIGVsZW1lbnQuXG4gIGZ1bmN0aW9uIG1hcChvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgdmFyIF9rZXlzID0gIWlzQXJyYXlMaWtlKG9iaikgJiYga2V5cyhvYmopLFxuICAgICAgICBsZW5ndGggPSAoX2tleXMgfHwgb2JqKS5sZW5ndGgsXG4gICAgICAgIHJlc3VsdHMgPSBBcnJheShsZW5ndGgpO1xuICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHZhciBjdXJyZW50S2V5ID0gX2tleXMgPyBfa2V5c1tpbmRleF0gOiBpbmRleDtcbiAgICAgIHJlc3VsdHNbaW5kZXhdID0gaXRlcmF0ZWUob2JqW2N1cnJlbnRLZXldLCBjdXJyZW50S2V5LCBvYmopO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8vIEludGVybmFsIGhlbHBlciB0byBjcmVhdGUgYSByZWR1Y2luZyBmdW5jdGlvbiwgaXRlcmF0aW5nIGxlZnQgb3IgcmlnaHQuXG4gIGZ1bmN0aW9uIGNyZWF0ZVJlZ
14938HVjZShkaXIpIHtcbiAgICAvLyBXcmFwIGNvZGUgdGhhdCByZWFzc2lnbnMgYXJndW1lbnQgdmFyaWFibGVzIGluIGEgc2VwYXJhdGUgZnVuY3Rpb24gdGhhblxuICAgIC8vIHRoZSBvbmUgdGhhdCBhY2Nlc3NlcyBgYXJndW1lbnRzLmxlbmd0aGAgdG8gYXZvaWQgYSBwZXJmIGhpdC4gKCMxOTkxKVxuICAgIHZhciByZWR1Y2VyID0gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgbWVtbywgaW5pdGlhbCkge1xuICAgICAgdmFyIF9rZXlzID0gIWlzQXJyYXlMaWtlKG9iaikgJiYga2V5cyhvYmopLFxuICAgICAgICAgIGxlbmd0aCA9IChfa2V5cyB8fCBvYmopLmxlbmd0aCxcbiAgICAgICAgICBpbmRleCA9IGRpciA+IDAgPyAwIDogbGVuZ3RoIC0gMTtcbiAgICAgIGlmICghaW5pdGlhbCkge1xuICAgICAgICBtZW1vID0gb2JqW19rZXlzID8gX2tleXNbaW5kZXhdIDogaW5kZXhdO1xuICAgICAgICBpbmRleCArPSBkaXI7XG4gICAgICB9XG4gICAgICBmb3IgKDsgaW5kZXggPj0gMCAmJiBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gZGlyKSB7XG4gICAgICAgIHZhciBjdXJyZW50S2V5ID0gX2tleXMgPyBfa2V5c1tpbmRleF0gOiBpbmRleDtcbiAgICAgICAgbWVtbyA9IGl0ZXJhdGVlKG1lbW8sIG9ialtjdXJyZW50S2V5XSwgY3VycmVudEtleSwgb2JqKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtZW1vO1xuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgbWVtbywgY29udGV4dCkge1xuICAgICAgdmFyIGluaXRpYWwgPSBhcmd1bWVudHMubGVuZ3RoID49IDM7XG4gICAgICByZXR1cm4gcmVkdWNlcihvYmosIG9wdGltaXplQ2IoaXRlcmF0ZWUsIGNvbnRleHQsIDQpLCBtZW1vLCBpbml0aWFsKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gKipSZWR1Y2UqKiBidWlsZHMgdXAgYSBzaW5nbGUgcmVzdWx0IGZyb20gYSBsaXN0IG9mIHZhbHVlcywgYWthIGBpbmplY3RgLFxuICAvLyBvciBgZm9sZGxgLlxuICB2YXIgcmVkdWNlID0gY3JlYXRlUmVkdWNlKDEpO1xuXG4gIC8vIFRoZSByaWdodC1hc3NvY2lhdGl2ZSB2ZXJzaW9uIG9mIHJlZHVjZSwgYWxzbyBrbm93biBhcyBgZm9sZHJgLlxuICB2YXIgcmVkdWNlUmlnaHQgPSBjcmVhdGVSZWR1Y2UoLTEpO1xuXG4gIC8vIFJldHVybiBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgcGFzcyBhIHRydXRoIHRlc3QuXG4gIGZ1bmN0aW9uIGZpbHRlcihvYmosIHByZWRpY2F0ZSwgY29udGV4dCkge1xuICAgIHZhciByZXN1bHRzID0gW107XG4gICAgcHJlZGljYXRlID0gY2IocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICBlYWNoKG9iaiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBsaXN0KSB7XG4gICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgbGlzdCkpIHJlc3VsdHMucHVzaCh2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cblxuICAvLyBSZXR1cm4gYWxsIHRoZSBlbGVtZW50cyBmb3Igd2hpY2ggYSB0cnV0aCB0ZXN0IGZhaWxzLlxuICBmdW5jdGlvbiByZWplY3Qob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICByZXR1cm4gZmlsdGVyKG9iaiwgbmVnYXRlKGNiKHByZWRpY2F0ZSkpLCBjb250ZXh0KTtcbiAgfVxuXG4gIC8vIERldGVybWluZSB3aGV0aGVyIGFsbCBvZiB0aGUgZWxlbWVudHMgcGFzcyBhIHRydXRoIHRlc3QuXG4gIGZ1bmN0aW9uIGV2ZXJ5KG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgcHJlZGljYXRlID0gY2IocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICB2YXIgX2tleXMgPSAhaXNBcnJheUxpa2Uob2JqKSAmJiBrZXlzKG9iaiksXG4gICAgICAgIGxlbmd0aCA9IChfa2V5cyB8fCBvYmopLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICB2Y
14938XIgY3VycmVudEtleSA9IF9rZXlzID8gX2tleXNbaW5kZXhdIDogaW5kZXg7XG4gICAgICBpZiAoIXByZWRpY2F0ZShvYmpbY3VycmVudEtleV0sIGN1cnJlbnRLZXksIG9iaikpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBEZXRlcm1pbmUgaWYgYXQgbGVhc3Qgb25lIGVsZW1lbnQgaW4gdGhlIG9iamVjdCBwYXNzZXMgYSB0cnV0aCB0ZXN0LlxuICBmdW5jdGlvbiBzb21lKG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgcHJlZGljYXRlID0gY2IocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICB2YXIgX2tleXMgPSAhaXNBcnJheUxpa2Uob2JqKSAmJiBrZXlzKG9iaiksXG4gICAgICAgIGxlbmd0aCA9IChfa2V5cyB8fCBvYmopLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICB2YXIgY3VycmVudEtleSA9IF9rZXlzID8gX2tleXNbaW5kZXhdIDogaW5kZXg7XG4gICAgICBpZiAocHJlZGljYXRlKG9ialtjdXJyZW50S2V5XSwgY3VycmVudEtleSwgb2JqKSkgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIERldGVybWluZSBpZiB0aGUgYXJyYXkgb3Igb2JqZWN0IGNvbnRhaW5zIGEgZ2l2ZW4gaXRlbSAodXNpbmcgYD09PWApLlxuICBmdW5jdGlvbiBjb250YWlucyhvYmosIGl0ZW0sIGZyb21JbmRleCwgZ3VhcmQpIHtcbiAgICBpZiAoIWlzQXJyYXlMaWtlKG9iaikpIG9iaiA9IHZhbHVlcyhvYmopO1xuICAgIGlmICh0eXBlb2YgZnJvbUluZGV4ICE9ICdudW1iZXInIHx8IGd1YXJkKSBmcm9tSW5kZXggPSAwO1xuICAgIHJldHVybiBpbmRleE9mKG9iaiwgaXRlbSwgZnJvbUluZGV4KSA+PSAwO1xuICB9XG5cbiAgLy8gSW52b2tlIGEgbWV0aG9kICh3aXRoIGFyZ3VtZW50cykgb24gZXZlcnkgaXRlbSBpbiBhIGNvbGxlY3Rpb24uXG4gIHZhciBpbnZva2UgPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKG9iaiwgcGF0aCwgYXJncykge1xuICAgIHZhciBjb250ZXh0UGF0aCwgZnVuYztcbiAgICBpZiAoaXNGdW5jdGlvbiQxKHBhdGgpKSB7XG4gICAgICBmdW5jID0gcGF0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aCA9IHRvUGF0aChwYXRoKTtcbiAgICAgIGNvbnRleHRQYXRoID0gcGF0aC5zbGljZSgwLCAtMSk7XG4gICAgICBwYXRoID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgICByZXR1cm4gbWFwKG9iaiwgZnVuY3Rpb24oY29udGV4dCkge1xuICAgICAgdmFyIG1ldGhvZCA9IGZ1bmM7XG4gICAgICBpZiAoIW1ldGhvZCkge1xuICAgICAgICBpZiAoY29udGV4dFBhdGggJiYgY29udGV4dFBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgY29udGV4dCA9IGRlZXBHZXQoY29udGV4dCwgY29udGV4dFBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb250ZXh0ID09IG51bGwpIHJldHVybiB2b2lkIDA7XG4gICAgICAgIG1ldGhvZCA9IGNvbnRleHRbcGF0aF07XG4gICAgICB9XG4gICAgICByZXR1cm4gbWV0aG9kID09IG51bGwgPyBtZXRob2QgOiBtZXRob2QuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIENvbnZlbmllbmNlIHZlcnNpb24gb2YgYSBjb21tb24gdXNlIGNhc2Ugb2YgYF8ubWFwYDogZmV0Y2hpbmcgYSBwcm9wZXJ0eS5cbiAgZnVuY3Rpb24gcGx1Y2sob2JqLCBrZXkpIHtcbiAgICByZXR1cm4gbWFwKG9iaiwgcHJvcGVydHkoa2V5KSk7XG4gIH1cblxuICAvLyBDb252ZW5pZW5jZSB2ZXJzaW9uIG9mIGEgY29tbW9uIHVzZSBjYXNlIG9mIGBfLmZpbHRlcmA6IHNlbGVjdGluZyBvbmx5XG4gIC8vIG9iamVjdHMgY29udGFpbmluZyBzcGVjaWZpYyBga2V5OnZhbHVlYCBwYWlycy5cbiAgZnVuY3Rpb24gd2hlcmUob2JqLCBhdHRycykge1xuICAgIHJldHVybiBmaWx0ZXIob2JqLCBtYXRjaGVyKGF0dHJzKSk7XG4gIH1cblxuICAvLyBSZXR1cm4gdGhlIG1heGltdW0gZWxlbWVudCAob3IgZWxlbWVudC1iYXNlZCBjb21wdXRhdGlvbikuXG4gIGZ1bmN0aW9uIG1heChvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgdmFyIHJlc3VsdCA9IC1JbmZpbml0eSwgbGFzdENvbXB1dGVkID0gLUluZmluaXR5LFxuICAgICAgICB2YWx1ZSwgY29tcHV0ZWQ7XG4gICAgaWYgKGl0ZXJhdGVlID09IG51bGwgfHwgdHlwZW9mIGl0ZXJhdGVlID09ICdudW1iZXInICYmIHR5cGVvZiBvYmpbMF0gIT0gJ29iamVjdCcgJiYgb2JqICE9IG51bGwpIHtcbiAgICAgIG9iaiA9IGlzQXJyYXlMaWtlKG9iaikgPyBvYmogOiB2YWx1ZXMob2JqKTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBvYmoubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFsdWUgPSBvYmpbaV07XG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlID4gcmVzdWx0KSB7XG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgICBlYWNoKG9iaiwgZnVuY3Rpb24odiwgaW5kZXgsIGxpc3QpIHtcbiAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSh2LCBpbmRleCwgbGlzdCk7XG4gICAgICAgIGlmIChjb21wdXRlZCA+IGxhc3RDb21wdXRlZCB8fCBjb21wdXRlZCA9PT0gLUluZmluaXR5ICYmIHJlc3VsdCA9PT0gLUluZmluaXR5KSB7XG4gICAgICAgICAgcmVzdWx0ID0gdjtcbiAgICAgICAgICBsYXN0Q29tcHV0ZWQgPSBjb21wdXRlZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBSZXR1cm4gdGhlIG1pbmltdW0gZWxlbWVudCAob3IgZWxlbWVudC1iYXNlZCBjb21wdXRhdGlvbikuXG4gIGZ1bmN0aW9uIG1pbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgdmFyIHJlc3VsdCA9IEluZmluaXR5LCBsYXN0Q29tcHV0ZWQgPSBJbmZpbml0eSxcbiAgICAgICAgdmFsdWUsIGNvbXB1dGVkO1xuICAgIGlmIChpdGVyYXRlZSA9PSBudWxsIHx8IHR5cGVvZiBpdGVyYXRlZSA9PSAnbnVtYmVyJyAmJiB0eXBlb2Ygb2JqWzBdICE9ICdvYmplY3QnICYmIG9iaiAhPSBudWxsKSB7XG4gICAgICBvYmogPSBpc0FycmF
149385TGlrZShvYmopID8gb2JqIDogdmFsdWVzKG9iaik7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gb2JqLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhbHVlID0gb2JqW2ldO1xuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSA8IHJlc3VsdCkge1xuICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZXJhdGVlID0gY2IoaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgICAgZWFjaChvYmosIGZ1bmN0aW9uKHYsIGluZGV4LCBsaXN0KSB7XG4gICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUodiwgaW5kZXgsIGxpc3QpO1xuICAgICAgICBpZiAoY29tcHV0ZWQgPCBsYXN0Q29tcHV0ZWQgfHwgY29tcHV0ZWQgPT09IEluZmluaXR5ICYmIHJlc3VsdCA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICByZXN1bHQgPSB2O1xuICAgICAgICAgIGxhc3RDb21wdXRlZCA9IGNvbXB1dGVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIFNhbXBsZSAqKm4qKiByYW5kb20gdmFsdWVzIGZyb20gYSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBtb2Rlcm4gdmVyc2lvbiBvZiB0aGVcbiAgLy8gW0Zpc2hlci1ZYXRlcyBzaHVmZmxlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaXNoZXLigJNZYXRlc19zaHVmZmxlKS5cbiAgLy8gSWYgKipuKiogaXMgbm90IHNwZWNpZmllZCwgcmV0dXJucyBhIHNpbmdsZSByYW5kb20gZWxlbWVudC5cbiAgLy8gVGhlIGludGVybmFsIGBndWFyZGAgYXJndW1lbnQgYWxsb3dzIGl0IHRvIHdvcmsgd2l0aCBgXy5tYXBgLlxuICBmdW5jdGlvbiBzYW1wbGUob2JqLCBuLCBndWFyZCkge1xuICAgIGlmIChuID09IG51bGwgfHwgZ3VhcmQpIHtcbiAgICAgIGlmICghaXNBcnJheUxpa2Uob2JqKSkgb2JqID0gdmFsdWVzKG9iaik7XG4gICAgICByZXR1cm4gb2JqW3JhbmRvbShvYmoubGVuZ3RoIC0gMSldO1xuICAgIH1cbiAgICB2YXIgc2FtcGxlID0gaXNBcnJheUxpa2Uob2JqKSA/IGNsb25lKG9iaikgOiB2YWx1ZXMob2JqKTtcbiAgICB2YXIgbGVuZ3RoID0gZ2V0TGVuZ3RoKHNhbXBsZSk7XG4gICAgbiA9IE1hdGgubWF4KE1hdGgubWluKG4sIGxlbmd0aCksIDApO1xuICAgIHZhciBsYXN0ID0gbGVuZ3RoIC0gMTtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbjsgaW5kZXgrKykge1xuICAgICAgdmFyIHJhbmQgPSByYW5kb20oaW5kZXgsIGxhc3QpO1xuICAgICAgdmFyIHRlbXAgPSBzYW1wbGVbaW5kZXhdO1xuICAgICAgc2FtcGxlW2luZGV4XSA9IHNhbXBsZVtyYW5kXTtcbiAgICAgIHNhbXBsZVtyYW5kXSA9IHRlbXA7XG4gICAgfVxuICAgIHJldHVybiBzYW1wbGUuc2xpY2UoMCwgbik7XG4gIH1cblxuICAvLyBTaHVmZmxlIGEgY29sbGVjdGlvbi5cbiAgZnVuY3Rpb24gc2h1ZmZsZShvYmopIHtcbiAgICByZXR1cm4gc2FtcGxlKG9iaiwgSW5maW5pdHkpO1xuICB9XG5cbiAgLy8gU29ydCB0aGUgb2JqZWN0J3MgdmFsdWVzIGJ5IGEgY3JpdGVyaW9uIHByb2R1Y2VkIGJ5IGFuIGl0ZXJhdGVlLlxuICBmdW5jdGlvbiBzb3J0Qnkob2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgcmV0dXJuIHBsdWNrKG1hcChvYmosIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGxpc3QpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgaW5kZXg6IGluZGV4KyssXG4gICAgICAgIGNyaXRlcmlhOiBpdGVyYXRlZSh2YWx1ZSwga2V5LCBsaXN0KVxuICAgICAgfTtcbiAgICB9KS5zb3J0KGZ1bmN0aW9uKGxlZnQsIHJpZ2h0KSB7XG4gICAgICB2Y
14938XIgYSA9IGxlZnQuY3JpdGVyaWE7XG4gICAgICB2YXIgYiA9IHJpZ2h0LmNyaXRlcmlhO1xuICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgaWYgKGEgPiBiIHx8IGEgPT09IHZvaWQgMCkgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhIDwgYiB8fCBiID09PSB2b2lkIDApIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsZWZ0LmluZGV4IC0gcmlnaHQuaW5kZXg7XG4gICAgfSksICd2YWx1ZScpO1xuICB9XG5cbiAgLy8gQW4gaW50ZXJuYWwgZnVuY3Rpb24gdXNlZCBmb3IgYWdncmVnYXRlIFwiZ3JvdXAgYnlcIiBvcGVyYXRpb25zLlxuICBmdW5jdGlvbiBncm91cChiZWhhdmlvciwgcGFydGl0aW9uKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICAgIHZhciByZXN1bHQgPSBwYXJ0aXRpb24gPyBbW10sIFtdXSA6IHt9O1xuICAgICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgICBlYWNoKG9iaiwgZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7XG4gICAgICAgIHZhciBrZXkgPSBpdGVyYXRlZSh2YWx1ZSwgaW5kZXgsIG9iaik7XG4gICAgICAgIGJlaGF2aW9yKHJlc3VsdCwgdmFsdWUsIGtleSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgfVxuXG4gIC8vIEdyb3VwcyB0aGUgb2JqZWN0J3MgdmFsdWVzIGJ5IGEgY3JpdGVyaW9uLiBQYXNzIGVpdGhlciBhIHN0cmluZyBhdHRyaWJ1dGVcbiAgLy8gdG8gZ3JvdXAgYnksIG9yIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBjcml0ZXJpb24uXG4gIHZhciBncm91cEJ5ID0gZ3JvdXAoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgaWYgKGhhcyQxKHJlc3VsdCwga2V5KSkgcmVzdWx0W2tleV0ucHVzaCh2YWx1ZSk7IGVsc2UgcmVzdWx0W2tleV0gPSBbdmFsdWVdO1xuICB9KTtcblxuICAvLyBJbmRleGVzIHRoZSBvYmplY3QncyB2YWx1ZXMgYnkgYSBjcml0ZXJpb24sIHNpbWlsYXIgdG8gYF8uZ3JvdXBCeWAsIGJ1dCBmb3JcbiAgLy8gd2hlbiB5b3Uga25vdyB0aGF0IHlvdXIgaW5kZXggdmFsdWVzIHdpbGwgYmUgdW5pcXVlLlxuICB2YXIgaW5kZXhCeSA9IGdyb3VwKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gIH0pO1xuXG4gIC8vIENvdW50cyBpbnN0YW5jZXMgb2YgYW4gb2JqZWN0IHRoYXQgZ3JvdXAgYnkgYSBjZXJ0YWluIGNyaXRlcmlvbi4gUGFzc1xuICAvLyBlaXRoZXIgYSBzdHJpbmcgYXR0cmlidXRlIHRvIGNvdW50IGJ5LCBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGVcbiAgLy8gY3JpdGVyaW9uLlxuICB2YXIgY291bnRCeSA9IGdyb3VwKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgIGlmIChoYXMkMShyZXN1bHQsIGtleSkpIHJlc3VsdFtrZXldKys7IGVsc2UgcmVzdWx0W2tleV0gPSAxO1xuICB9KTtcblxuICAvLyBTcGxpdCBhIGNvbGxlY3Rpb24gaW50byB0d28gYXJyYXlzOiBvbmUgd2hvc2UgZWxlbWVudHMgYWxsIHBhc3MgdGhlIGdpdmVuXG4gIC8vIHRydXRoIHRlc3QsIGFuZCBvbmUgd2hvc2UgZWxlbWVudHMgYWxsIGRvIG5vdCBwYXNzIHRoZSB0cnV0aCB0ZXN0LlxuICB2YXIgcGFydGl0aW9uID0gZ3JvdXAoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwgcGFzcykge1xuICAgIHJlc3VsdFtwYXNzID8gMCA6IDFdLnB1c2godmFsdWUpO1xuICB9LCB0cnVlKTtcblxuICAvLyBTYWZlbHkgY3JlYXRlIGEgcmVhbCwgbGl2ZSBhcnJheSBmcm9tIGFueXRoaW5nIGl0ZXJhYmxlLlxuICB2YXIgcmVTdHJTeW1ib2wgPSAvW15cXHVkODAwLVxcdWRmZmZdfFtcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl18W1xcdWQ4MDAtXFx1ZGZmZl0vZztcbiAgZnVuY3Rpb24gdG9BcnJheShvYmopIHtcbiAgICBpZiAoIW9iaikgcmV0dXJuIFtdO1xuICAgIGlmIChpc0FycmF5KG9iaikpIHJldHVybiBzbGljZS5jYWxsKG9iaik7XG4gICAgaWYgKGlzU3RyaW5nKG9iaikpIHtcbiAgICAgIC8vIEtlZXAgc3Vycm9nYXRlIHBhaXIgY2hhcmFjdGVycyB0b2dldGhlci5cbiAgICAgIHJldHVybiBvYmoubWF0Y2gocmVTdHJTeW1ib2wpO1xuICAgIH1cbiAgICBpZiAoaXNBcnJheUxpa2Uob2JqKSkgcmV0dXJuIG1hcChvYmosIGlkZW50aXR5KTtcbiAgICByZXR1cm4gdmFsdWVzKG9iaik7XG4gIH1cblxuICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIGNvbGxlY3Rpb24uXG4gIGZ1bmN0aW9uIHNpemUob2JqKSB7XG4gICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gMDtcbiAgICByZXR1cm4gaXNBcnJheUxpa2Uob2JqKSA/IG9iai5sZW5ndGggOiBrZXlzKG9iaikubGVuZ3RoO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgYF8ucGlja2AgaGVscGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyIGBrZXlgIGlzIGFuIGVudW1lcmFibGVcbiAgLy8gcHJvcGVydHkgbmFtZSBvZiBgb2JqYC5cbiAgZnVuY3Rpb24ga2V5SW5PYmoodmFsdWUsIGtleSwgb2JqKSB7XG4gICAgcmV0dXJuIGtleSBpbiBvYmo7XG4gIH1cblxuICAvLyBSZXR1cm4gYSBjb3B5IG9mIHRoZSBvYmplY3Qgb25seSBjb250YWluaW5nIHRoZSBhbGxvd2VkIHByb3BlcnRpZXMuXG4gIHZhciBwaWNrID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihvYmosIGtleXMpIHtcbiAgICB2YXIgcmVzdWx0ID0ge30sIGl0ZXJhdGVlID0ga2V5c1swXTtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiByZXN1bHQ7XG4gICAgaWYgKGlzRnVuY3Rpb24kMShpdGVyYXRlZSkpIHtcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDEpIGl0ZXJhdGVlID0gb3B0aW1pemVDYihpdGVyYXRlZSwga2V5c1sxXSk7XG4gICAgICBrZXlzID0gYWxsS2V5cyhvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBpdGVyYXRlZSA9IGtleUluT2JqO1xuICAgICAga2V5cyA9IGZsYXR0ZW4kMShrZXlzLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgb2JqID0gT2JqZWN0KG9iaik7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBrZXlzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2Y
14938XIga2V5ID0ga2V5c1tpXTtcbiAgICAgIHZhciB2YWx1ZSA9IG9ialtrZXldO1xuICAgICAgaWYgKGl0ZXJhdGVlKHZhbHVlLCBrZXksIG9iaikpIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xuXG4gIC8vIFJldHVybiBhIGNvcHkgb2YgdGhlIG9iamVjdCB3aXRob3V0IHRoZSBkaXNhbGxvd2VkIHByb3BlcnRpZXMuXG4gIHZhciBvbWl0ID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihvYmosIGtleXMpIHtcbiAgICB2YXIgaXRlcmF0ZWUgPSBrZXlzWzBdLCBjb250ZXh0O1xuICAgIGlmIChpc0Z1bmN0aW9uJDEoaXRlcmF0ZWUpKSB7XG4gICAgICBpdGVyYXRlZSA9IG5lZ2F0ZShpdGVyYXRlZSk7XG4gICAgICBpZiAoa2V5cy5sZW5ndGggPiAxKSBjb250ZXh0ID0ga2V5c1sxXTtcbiAgICB9IGVsc2Uge1xuICAgICAga2V5cyA9IG1hcChmbGF0dGVuJDEoa2V5cywgZmFsc2UsIGZhbHNlKSwgU3RyaW5nKTtcbiAgICAgIGl0ZXJhdGVlID0gZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAgICByZXR1cm4gIWNvbnRhaW5zKGtleXMsIGtleSk7XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcGljayhvYmosIGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgfSk7XG5cbiAgLy8gUmV0dXJucyBldmVyeXRoaW5nIGJ1dCB0aGUgbGFzdCBlbnRyeSBvZiB0aGUgYXJyYXkuIEVzcGVjaWFsbHkgdXNlZnVsIG9uXG4gIC8vIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBQYXNzaW5nICoqbioqIHdpbGwgcmV0dXJuIGFsbCB0aGUgdmFsdWVzIGluXG4gIC8vIHRoZSBhcnJheSwgZXhjbHVkaW5nIHRoZSBsYXN0IE4uXG4gIGZ1bmN0aW9uIGluaXRpYWwoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgcmV0dXJuIHNsaWNlLmNhbGwoYXJyYXksIDAsIE1hdGgubWF4KDAsIGFycmF5Lmxlbmd0aCAtIChuID09IG51bGwgfHwgZ3VhcmQgPyAxIDogbikpKTtcbiAgfVxuXG4gIC8vIEdldCB0aGUgZmlyc3QgZWxlbWVudCBvZiBhbiBhcnJheS4gUGFzc2luZyAqKm4qKiB3aWxsIHJldHVybiB0aGUgZmlyc3QgTlxuICAvLyB2YWx1ZXMgaW4gdGhlIGFycmF5LiBUaGUgKipndWFyZCoqIGNoZWNrIGFsbG93cyBpdCB0byB3b3JrIHdpdGggYF8ubWFwYC5cbiAgZnVuY3Rpb24gZmlyc3QoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgaWYgKGFycmF5ID09IG51bGwgfHwgYXJyYXkubGVuZ3RoIDwgMSkgcmV0dXJuIG4gPT0gbnVsbCB8fCBndWFyZCA/IHZvaWQgMCA6IFtdO1xuICAgIGlmIChuID09IG51bGwgfHwgZ3VhcmQpIHJldHVybiBhcnJheVswXTtcbiAgICByZXR1cm4gaW5pdGlhbChhcnJheSwgYXJyYXkubGVuZ3RoIC0gbik7XG4gIH1cblxuICAvLyBSZXR1cm5zIGV2ZXJ5dGhpbmcgYnV0IHRoZSBmaXJzdCBlbnRyeSBvZiB0aGUgYGFycmF5YC4gRXNwZWNpYWxseSB1c2VmdWwgb25cbiAgLy8gdGhlIGBhcmd1bWVudHNgIG9iamVjdC4gUGFzc2luZyBhbiAqKm4qKiB3aWxsIHJldHVybiB0aGUgcmVzdCBOIHZhbHVlcyBpbiB0aGVcbiAgLy8gYGFycmF5YC5cbiAgZnVuY3Rpb24gcmVzdChhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICByZXR1cm4gc2xpY2UuY2FsbChhcnJheSwgbiA9PSBudWxsIHx8IGd1YXJkID8gMSA6IG4pO1xuICB9XG5cbiAgLy8gR2V0IHRoZSBsYXN0IGVsZW1lbnQgb2YgYW4gYXJyYXkuIFBhc3NpbmcgKipuKiogd2lsbCByZXR1cm4gdGhlIGxhc3QgTlxuICAvLyB2YWx1ZXMgaW4gdGhlIGFycmF5LlxuICBmdW5jdGlvbiBsYXN0KGFycmF5LCBuLCBndWFyZCkge1xuICAgIGlmIChhcnJheSA9PSBudWxsIHx8IGFycmF5Lmxlbmd0aCA8IDEpIHJldHVybiBuID09IG51bGwgfHwgZ3VhcmQgPyB2b2lkIDAgOiBbXTtcbiAgICBpZiAobiA9PSBudWxsIHx8IGd1YXJkKSByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07XG4gICAgcmV0dXJuIHJlc3QoYXJyYXksIE1hdGgubWF4KDAsIGFycmF5Lmxlbmd0aCAtIG4pKTtcbiAgfVxuXG4gIC8vIFRyaW0gb3V0IGFsbCBmYWxzeSB2YWx1ZXMgZnJvbSBhbiBhcnJheS5cbiAgZnVuY3Rpb24gY29tcGFjdChhcnJheSkge1xuICAgIHJldHVybiBmaWx0ZXIoYXJyYXksIEJvb2xlYW4pO1xuICB9XG5cbiAgLy8gRmxhdHRlbiBvdXQgYW4gYXJyYXksIGVpdGhlciByZWN1cnNpdmVseSAoYnkgZGVmYXVsdCksIG9yIHVwIHRvIGBkZXB0aGAuXG4gIC8vIFBhc3NpbmcgYHRydWVgIG9yIGBmYWxzZWAgYXMgYGRlcHRoYCBtZWFucyBgMWAgb3IgYEluZmluaXR5YCwgcmVzcGVjdGl2ZWx5LlxuICBmdW5jdGlvbiBmbGF0dGVuKGFycmF5LCBkZXB0aCkge1xuICAgIHJldHVybiBmbGF0dGVuJDEoYXJyYXksIGRlcHRoLCBmYWxzZSk7XG4gIH1cblxuICAvLyBUYWtlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gb25lIGFycmF5IGFuZCBhIG51bWJlciBvZiBvdGhlciBhcnJheXMuXG4gIC8vIE9ubHkgdGhlIGVsZW1lbnRzIHByZXNlbnQgaW4ganVzdCB0aGUgZmlyc3QgYXJyYXkgd2lsbCByZW1haW4uXG4gIHZhciBkaWZmZXJlbmNlID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihhcnJheSwgcmVzdCkge1xuICAgIHJlc3QgPSBmbGF0dGVuJDEocmVzdCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGZpbHRlcihhcnJheSwgZnVuY3Rpb24odmFsdWUpe1xuICAgICAgcmV0dXJuICFjb250YWlucyhyZXN0LCB2YWx1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIFJldHVybiBhIHZlcnNpb24gb2YgdGhlIGFycmF5IHRoYXQgZG9lcyBub3QgY29udGFpbiB0aGUgc3BlY2lmaWVkIHZhbHVlKHMpLlxuICB2YXIgd2l0aG91dCA9IHJlc3RBcmd1bWVudHMoZnVuY3Rpb24oYXJyYXksIG90aGVyQXJyYXlzKSB7XG4gICAgcmV0dXJuIGRpZmZlcmVuY2UoYXJyYXksIG90aGVyQXJyYXlzKTtcbiAgfSk7XG5cbiAgLy8gUHJvZHVjZSBhIGR1cGxpY2F0ZS1mcmVlIHZlcnNpb24gb2YgdGhlIGFycmF5LiBJZiB0aGUgYXJyYXkgaGFzIGFscmVhZHlcbiAgLy8gYmVlbiBzb3J0ZWQsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgdXNpbmcgYSBmYXN0ZXIgYWxnb3JpdGhtLlxuICAvLyBUaGUgZmFzdGVyIGFsZ29yaXRobSB3aWxsIG5vdCB3b3JrIHdpdGggYW4gaXRlcmF0ZWUgaWYgdGhlIGl0ZXJhdGVlXG4gIC8vIGlzIG5vdCBhIG9uZS10by1vbmUgZnVuY3Rpb24sIHNvIHByb3ZpZGluZyBhbiBpdGVyYXRlZSB3aWxsIGRpc2FibGVcbiAgLy8gdGhlIGZhc3RlciBhbGdvcml0aG0uXG4gIGZ1bmN0aW9uIHVuaXEoYXJyYXksIGlzU29ydGVkLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIGlmICghaXNCb29sZWFuKGlzU29ydGVkKSkge1xuICAgICAgY29udGV4dCA9IGl0ZXJhdGVlO1xuICAgICAgaXRlcmF0ZWUgPSBpc1NvcnRlZDtcbiAgICAgIGlzU29ydGVkID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpdGVyYXRlZSAhPSBudWxsKSBpdGVyYXRlZSA9IGNiKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIHNlZW4gPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2V0TGVuZ3RoKGFycmF5KTsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2Y
14938XIgdmFsdWUgPSBhcnJheVtpXSxcbiAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUsIGksIGFycmF5KSA6IHZhbHVlO1xuICAgICAgaWYgKGlzU29ydGVkICYmICFpdGVyYXRlZSkge1xuICAgICAgICBpZiAoIWkgfHwgc2VlbiAhPT0gY29tcHV0ZWQpIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgc2VlbiA9IGNvbXB1dGVkO1xuICAgICAgfSBlbHNlIGlmIChpdGVyYXRlZSkge1xuICAgICAgICBpZiAoIWNvbnRhaW5zKHNlZW4sIGNvbXB1dGVkKSkge1xuICAgICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCFjb250YWlucyhyZXN1bHQsIHZhbHVlKSkge1xuICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBQcm9kdWNlIGFuIGFycmF5IHRoYXQgY29udGFpbnMgdGhlIHVuaW9uOiBlYWNoIGRpc3RpbmN0IGVsZW1lbnQgZnJvbSBhbGwgb2ZcbiAgLy8gdGhlIHBhc3NlZC1pbiBhcnJheXMuXG4gIHZhciB1bmlvbiA9IHJlc3RBcmd1bWVudHMoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgcmV0dXJuIHVuaXEoZmxhdHRlbiQxKGFycmF5cywgdHJ1ZSwgdHJ1ZSkpO1xuICB9KTtcblxuICAvLyBQcm9kdWNlIGFuIGFycmF5IHRoYXQgY29udGFpbnMgZXZlcnkgaXRlbSBzaGFyZWQgYmV0d2VlbiBhbGwgdGhlXG4gIC8vIHBhc3NlZC1pbiBhcnJheXMuXG4gIGZ1bmN0aW9uIGludGVyc2VjdGlvbihhcnJheSkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGdldExlbmd0aChhcnJheSk7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGl0ZW0gPSBhcnJheVtpXTtcbiAgICAgIGlmIChjb250YWlucyhyZXN1bHQsIGl0ZW0pKSBjb250aW51ZTtcbiAgICAgIHZhciBqO1xuICAgICAgZm9yIChqID0gMTsgaiA8IGFyZ3NMZW5ndGg7IGorKykge1xuICAgICAgICBpZiAoIWNvbnRhaW5zKGFyZ3VtZW50c1tqXSwgaXRlbSkpIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGogPT09IGFyZ3NMZW5ndGgpIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gQ29tcGxlbWVudCBvZiB6aXAuIFVuemlwIGFjY2VwdHMgYW4gYXJyYXkgb2YgYXJyYXlzIGFuZCBncm91cHNcbiAgLy8gZWFjaCBhcnJheSdzIGVsZW1lbnRzIG9uIHNoYXJlZCBpbmRpY2VzLlxuICBmdW5jdGlvbiB1bnppcChhcnJheSkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSAmJiBtYXgoYXJyYXksIGdldExlbmd0aCkubGVuZ3RoIHx8IDA7XG4gICAgdmFyIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICByZXN1bHRbaW5kZXhdID0gcGx1Y2soYXJyYXksIGluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIFppcCB0b2dldGhlciBtdWx0aXBsZSBsaXN0cyBpbnRvIGEgc2luZ2xlIGFycmF5IC0tIGVsZW1lbnRzIHRoYXQgc2hhcmVcbiAgLy8gYW4gaW5kZXggZ28gdG9nZXRoZXIuXG4gIHZhciB6aXAgPSByZXN0QXJndW1lbnRzKHVuemlwKTtcblxuICAvLyBDb252ZXJ0cyBsaXN0cyBpbnRvIG9iamVjdHMuIFBhc3MgZWl0aGVyIGEgc2luZ2xlIGFycmF5IG9mIGBba2V5LCB2YWx1ZV1gXG4gIC8vIHBhaXJzLCBvciB0d28gcGFyYWxsZWwgYXJyYXlzIG9mIHRoZSBzYW1lIGxlbmd0aCAtLSBvbmUgb2Yga2V5cywgYW5kIG9uZSBvZlxuICAvLyB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXMuIFBhc3NpbmcgYnkgcGFpcnMgaXMgdGhlIHJldmVyc2Ugb2YgYF8ucGFpcnNgLlxuICBmdW5jdGlvbiBvYmplY3QobGlzdCwgdmFsdWVzKSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBnZXRMZW5ndGgobGlzdCk7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHZhbHVlcykge1xuICAgICAgICByZXN1bHRbbGlzdFtpXV0gPSB2YWx1ZXNbaV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRbbGlzdFtpXVswXV0gPSBsaXN0W2ldWzFdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gR2VuZXJhdGUgYW4gaW50ZWdlciBBcnJheSBjb250YWluaW5nIGFuIGFyaXRobWV0aWMgcHJvZ3Jlc3Npb24uIEEgcG9ydCBvZlxuICAvLyB0aGUgbmF0aXZlIFB5dGhvbiBgcmFuZ2UoKWAgZnVuY3Rpb24uIFNlZVxuICAvLyBbdGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L2Z1bmN0aW9ucy5odG1sI3JhbmdlKS5cbiAgZnVuY3Rpb24gcmFuZ2Uoc3RhcnQsIHN0b3AsIHN0ZXApIHtcbiAgICBpZiAoc3RvcCA9PSBudWxsKSB7XG4gICAgICBzdG9wID0gc3RhcnQgfHwgMDtcbiAgICAgIHN0YXJ0ID0gMDtcbiAgICB9XG4gICAgaWYgKCFzdGVwKSB7XG4gICAgICBzdGVwID0gc3RvcCA8IHN0YXJ0ID8gLTEgOiAxO1xuICAgIH1cblxuICAgIHZhciBsZW5ndGggPSBNYXRoLm1heChNYXRoLmNlaWwoKHN0b3AgLSBzdGFydCkgLyBzdGVwKSwgMCk7XG4gICAgdmFyIHJhbmdlID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IGxlbmd0aDsgaWR4KyssIHN0YXJ0ICs9IHN0ZXApIHtcbiAgICAgIHJhbmdlW2lkeF0gPSBzdGFydDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmFuZ2U7XG4gIH1cblxuICAvLyBDaHVuayBhIHNpbmdsZSBhcnJheSBpbnRvIG11bHRpcGxlIGFycmF5cywgZWFjaCBjb250YWluaW5nIGBjb3VudGAgb3IgZmV3ZXJcbiAgLy8gaXRlbXMuXG4gIGZ1bmN0aW9uIGNodW5rKGFycmF5LCBjb3VudCkge1xuICAgIGlmIChjb3VudCA9PSBudWxsIHx8IGNvdW50IDwgMSkgcmV0dXJuIFtdO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgaSA9IDAsIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICB3aGlsZSAoaSA8IGxlbmd0aCkge1xuICAgICAgcmVzdWx0LnB1c2goc2xpY2UuY2FsbChhcnJheSwgaSwgaSArPSBjb3VudCkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnRpbnVlIGNoYWluaW5nIGludGVybWVkaWF0ZSByZXN1bHRzLlxuICBmdW5jdGlvbiBjaGFpblJlc3VsdChpbnN0YW5jZSwgb2JqKSB7XG4gICAgcmV0dXJuIGluc3RhbmNlLl9jaGFpbiA/IF8kMShvYmopLmNoYWluKCkgOiBvYmo7XG4gIH1cblxuICAvLyBBZGQgeW91ciBvd24gY3VzdG9tIGZ1bmN0aW9ucyB0byB0aGUgVW5kZXJzY29yZSBvYmplY3QuXG4gIGZ1bmN0aW9uIG1peGluKG9iaikge1xuICAgIGVhY2goZnVuY3Rpb25zKG9iaiksIGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHZhciBmdW5jID0gXyQxW25hbWVdID0gb2JqW25hbWVdO1xuICAgICAgXyQxLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2Y
14938XIgYXJncyA9IFt0aGlzLl93cmFwcGVkXTtcbiAgICAgICAgcHVzaC5hcHBseShhcmdzLCBhcmd1bWVudHMpO1xuICAgICAgICByZXR1cm4gY2hhaW5SZXN1bHQodGhpcywgZnVuYy5hcHBseShfJDEsIGFyZ3MpKTtcbiAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIF8kMTtcbiAgfVxuXG4gIC8vIEFkZCBhbGwgbXV0YXRvciBgQXJyYXlgIGZ1bmN0aW9ucyB0byB0aGUgd3JhcHBlci5cbiAgZWFjaChbJ3BvcCcsICdwdXNoJywgJ3JldmVyc2UnLCAnc2hpZnQnLCAnc29ydCcsICdzcGxpY2UnLCAndW5zaGlmdCddLCBmdW5jdGlvbihuYW1lKSB7XG4gICAgdmFyIG1ldGhvZCA9IEFycmF5UHJvdG9bbmFtZV07XG4gICAgXyQxLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG9iaiA9IHRoaXMuX3dyYXBwZWQ7XG4gICAgICBpZiAob2JqICE9IG51bGwpIHtcbiAgICAgICAgbWV0aG9kLmFwcGx5KG9iaiwgYXJndW1lbnRzKTtcbiAgICAgICAgaWYgKChuYW1lID09PSAnc2hpZnQnIHx8IG5hbWUgPT09ICdzcGxpY2UnKSAmJiBvYmoubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgZGVsZXRlIG9ialswXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNoYWluUmVzdWx0KHRoaXMsIG9iaik7XG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gQWRkIGFsbCBhY2Nlc3NvciBgQXJyYXlgIGZ1bmN0aW9ucyB0byB0aGUgd3JhcHBlci5cbiAgZWFjaChbJ2NvbmNhdCcsICdqb2luJywgJ3NsaWNlJ10sIGZ1bmN0aW9uKG5hbWUpIHtcbiAgICB2YXIgbWV0aG9kID0gQXJyYXlQcm90b1tuYW1lXTtcbiAgICBfJDEucHJvdG90eXBlW25hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICB2Y
14938XIgb2JqID0gdGhpcy5fd3JhcHBlZDtcbiAgICAgIGlmIChvYmogIT0gbnVsbCkgb2JqID0gbWV0aG9kLmFwcGx5KG9iaiwgYXJndW1lbnRzKTtcbiAgICAgIHJldHVybiBjaGFpblJlc3VsdCh0aGlzLCBvYmopO1xuICAgIH07XG4gIH0pO1xuXG4gIC8vIE5hbWVkIEV4cG9ydHNcblxuICB2YXIgYWxsRXhwb3J0cyA9IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgVkVSU0lPTjogVkVSU0lPTixcbiAgICByZXN0QXJndW1lbnRzOiByZXN0QXJndW1lbnRzLFxuICAgIGlzT2JqZWN0OiBpc09iamVjdCxcbiAgICBpc051bGw6IGlzTnVsbCxcbiAgICBpc1VuZGVmaW5lZDogaXNVbmRlZmluZWQsXG4gICAgaXNCb29sZWFuOiBpc0Jvb2xlYW4sXG4gICAgaXNFbGVtZW50OiBpc0VsZW1lbnQsXG4gICAgaXNTdHJpbmc6IGlzU3RyaW5nLFxuICAgIGlzTnVtYmVyOiBpc051bWJlcixcbiAgICBpc0RhdGU6IGlzRGF0ZSxcbiAgICBpc1JlZ0V4cDogaXNSZWdFeHAsXG4gICAgaXNFcnJvcjogaXNFcnJvcixcbiAgICBpc1N5bWJvbDogaXNTeW1ib2wsXG4gICAgaXNBcnJheUJ1ZmZlcjogaXNBcnJheUJ1ZmZlcixcbiAgICBpc0RhdGFWaWV3OiBpc0RhdGFWaWV3JDEsXG4gICAgaXNBcnJheTogaXNBcnJheSxcbiAgICBpc0Z1bmN0aW9uOiBpc0Z1bmN0aW9uJDEsXG4gICAgaXNBcmd1bWVudHM6IGlzQXJndW1lbnRzJDEsXG4gICAgaXNGaW5pdGU6IGlzRmluaXRlJDEsXG4gICAgaXNOYU46IGlzTmFOJDEsXG4gICAgaXNUeXBlZEFycmF5OiBpc1R5cGVkQXJyYXkkMSxcbiAgICBpc0VtcHR5OiBpc0VtcHR5LFxuICAgIGlzTWF0Y2g6IGlzTWF0Y2gsXG4gICAgaXNFcXVhbDogaXNFcXVhbCxcbiAgICBpc01hcDogaXNNYXAsXG4gICAgaXNXZWFrTWFwOiBpc1dlYWtNYXAsXG4gICAgaXNTZXQ6IGlzU2V0LFxuICAgIGlzV2Vha1NldDogaXNXZWFrU2V0LFxuICAgIGtleXM6IGtleXMsXG4gICAgYWxsS2V5czogYWxsS2V5cyxcbiAgICB2YWx1ZXM6IHZhbHVlcyxcbiAgICBwYWlyczogcGFpcnMsXG4gICAgaW52ZXJ0OiBpbnZlcnQsXG4gICAgZnVuY3Rpb25zOiBmdW5jdGlvbnMsXG4gICAgbWV0aG9kczogZnVuY3Rpb25zLFxuICAgIGV4dGVuZDogZXh0ZW5kLFxuICAgIGV4dGVuZE93bjogZXh0ZW5kT3duLFxuICAgIGFzc2lnbjogZXh0ZW5kT3duLFxuICAgIGRlZmF1bHRzOiBkZWZhdWx0cyxcbiAgICBjcmVhdGU6IGNyZWF0ZSxcbiAgICBjbG9uZTogY2xvbmUsXG4gICAgdGFwOiB0YXAsXG4gICAgZ2V0OiBnZXQsXG4gICAgaGFzOiBoYXMsXG4gICAgbWFwT2JqZWN0OiBtYXBPYmplY3QsXG4gICAgaWRlbnRpdHk6IGlkZW50aXR5LFxuICAgIGNvbnN0YW50OiBjb25zdGFudCxcbiAgICBub29wOiBub29wLFxuICAgIHRvUGF0aDogdG9QYXRoJDEsXG4gICAgcHJvcGVydHk6IHByb3BlcnR5LFxuICAgIHByb3BlcnR5T2Y6IHByb3BlcnR5T2YsXG4gICAgbWF0Y2hlcjogbWF0Y2hlcixcbiAgICBtYXRjaGVzOiBtYXRjaGVyLFxuICAgIHRpbWVzOiB0aW1lcyxcbiAgICByYW5kb206IHJhbmRvbSxcbiAgICBub3c6IG5vdyxcbiAgICBlc2NhcGU6IF9lc2NhcGUsXG4gICAgdW5lc2NhcGU6IF91bmVzY2FwZSxcbiAgICB0ZW1wbGF0ZVNldHRpbmdzOiB0ZW1wbGF0ZVNldHRpbmdzLFxuICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZSxcbiAgICByZXN1bHQ6IHJlc3VsdCxcbiAgICB1bmlxdWVJZDogdW5pcXVlSWQsXG4gICAgY2hhaW46IGNoYWluLFxuICAgIGl0ZXJhdGVlOiBpdGVyYXRlZSxcbiAgICBwYXJ0aWFsOiBwYXJ0aWFsLFxuICAgIGJpbmQ6IGJpbmQsXG4gICAgYmluZEFsbDogYmluZEFsbCxcbiAgICBtZW1vaXplOiBtZW1vaXplLFxuICAgIGRlbGF5OiBkZWxheSxcbiAgICBkZWZlcjogZGVmZXIsXG4gICAgdGhyb3R0bGU6IHRocm90dGxlLFxuICAgIGRlYm91bmNlOiBkZWJvdW5jZSxcbiAgICB3cmFwOiB3cmFwLFxuICAgIG5lZ2F0ZTogbmVnYXRlLFxuICAgIGNvbXBvc2U6IGNvbXBvc2UsXG4gICAgYWZ0ZXI6IGFmdGVyLFxuICAgIGJlZm9yZTogYmVmb3JlLFxuICAgIG9uY2U6IG9uY2UsXG4gICAgZmluZEtleTogZmluZEtleSxcbiAgICBmaW5kSW5kZXg6IGZpbmRJbmRleCxcbiAgICBmaW5kTGFzdEluZGV4OiBmaW5kTGFzdEluZGV4LFxuICAgIHNvcnRlZEluZGV4OiBzb3J0ZWRJbmRleCxcbiAgICBpbmRleE9mOiBpbmRleE9mLFxuICAgIGxhc3RJbmRleE9mOiBsYXN0SW5kZXhPZixcbiAgICBmaW5kOiBmaW5kLFxuICAgIGRldGVjdDogZmluZCxcbiAgICBmaW5kV2hlcmU6IGZpbmRXaGVyZSxcbiAgICBlYWNoOiBlYWNoLFxuICAgIGZvckVhY2g6IGVhY2gsXG4gICAgbWFwOiBtYXAsXG4gICAgY29sbGVjdDogbWFwLFxuICAgIHJlZHVjZTogcmVkdWNlLFxuICAgIGZvbGRsOiByZWR1Y2UsXG4gICAgaW5qZWN0OiByZWR1Y2UsXG4gICAgcmVkdWNlUmlnaHQ6IHJlZHVjZVJpZ2h0LFxuICAgIGZvbGRyOiByZWR1Y2VSaWdodCxcbiAgICBmaWx0ZXI6IGZpbHRlcixcbiAgICBzZWxlY3Q6IGZpbHRlcixcbiAgICByZWplY3Q6IHJlamVjdCxcbiAgICBldmVyeTogZXZlcnksXG4gICAgYWxsOiBldmVyeSxcbiAgICBzb21lOiBzb21lLFxuICAgIGFueTogc29tZSxcbiAgICBjb250YWluczogY29udGFpbnMsXG4gICAgaW5jbHVkZXM6IGNvbnRhaW5zLFxuICAgIGluY2x1ZGU6IGNvbnRhaW5zLFxuICAgIGludm9rZTogaW52b2tlLFxuICAgIHBsdWNrOiBwbHVjayxcbiAgICB3aGVyZTogd2hlcmUsXG4gICAgbWF4OiBtYXgsXG4gICAgbWluOiBtaW4sXG4gICAgc2h1ZmZsZTogc2h1ZmZsZSxcbiAgICBzYW1wbGU6IHNhbXBsZSxcbiAgICBzb3J0Qnk6IHNvcnRCeSxcbiAgICBncm91cEJ5OiBncm91cEJ5LFxuICAgIGluZGV4Qnk6IGluZGV4QnksXG4gICAgY291bnRCeTogY291bnRCeSxcbiAgICBwYXJ0aXRpb246IHBhcnRpdGlvbixcbiAgICB0b0FycmF5OiB0b0FycmF5LFxuICAgIHNpemU6IHNpemUsXG4gICAgcGljazogcGljayxcbiAgICBvbWl0OiBvbWl0LFxuICAgIGZpcnN0OiBmaXJzdCxcbiAgICBoZWFkOiBmaXJzdCxcbiAgICB0YWtlOiBmaXJzdCxcbiAgICBpbml0aWFsOiBpbml0aWFsLFxuICAgIGxhc3Q6IGxhc3QsXG4gICAgcmVzdDogcmVzdCxcbiAgICB0YWlsOiByZXN0LFxuICAgIGRyb3A6IHJlc3QsXG4gICAgY29tcGFjdDogY29tcGFjdCxcbiAgICBmbGF0dGVuOiBmbGF0dGVuLFxuICAgIHdpdGhvdXQ6IHdpdGhvdXQsXG4gICAgdW5pcTogdW5pcSxcbiAgICB1bmlxdWU6IHVuaXEsXG4gICAgdW5pb246IHVuaW9uLFxuICAgIGludGVyc2VjdGlvbj
14938ogaW50ZXJzZWN0aW9uLFxuICAgIGRpZmZlcmVuY2U6IGRpZmZlcmVuY2UsXG4gICAgdW56aXA6IHVuemlwLFxuICAgIHRyYW5zcG9zZTogdW56aXAsXG4gICAgemlwOiB6aXAsXG4gICAgb2JqZWN0OiBvYmplY3QsXG4gICAgcmFuZ2U6IHJhbmdlLFxuICAgIGNodW5rOiBjaHVuayxcbiAgICBtaXhpbjogbWl4aW4sXG4gICAgJ2RlZmF1bHQnOiBfJDFcbiAgfTtcblxuICAvLyBEZWZhdWx0IEV4cG9ydFxuXG4gIC8vIEFkZCBhbGwgb2YgdGhlIFVuZGVyc2NvcmUgZnVuY3Rpb25zIHRvIHRoZSB3cmFwcGVyIG9iamVjdC5cbiAgdmFyIF8gPSBtaXhpbihhbGxFeHBvcnRzKTtcbiAgLy8gTGVnYWN5IE5vZGUuanMgQVBJLlxuICBfLl8gPSBfO1xuXG4gIHJldHVybiBfO1xuXG59KSkpO1xuXG5cbn0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHt9KVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ6dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW01dlpHVmZiVzlrZFd4bGN5OTFibVJsY25OamIzSmxMM1Z1WkdWeWMyTnZjbVV0ZFcxa0xtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVH
14938RCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRWlMQ0ptYVd4bElqb2laMlZ1WlhKaGRHVmtMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWlobWRXNWpkR2x2YmlBb1oyeHZZbUZzTENCbVlXTjBiM0o1S1NCN1hHNGdJSFI1Y0dWdlppQmxlSEJ2Y25SeklEMDlQU0FuYjJKcVpXTjBKeUFtSmlCMGVYQmxiMllnYlc5a2RXeGxJQ0U5UFNBbmRXNWtaV1pwYm1Wa0p5QS9JRzF2WkhWc1pTNWxlSEJ2Y25SeklEMGdabUZqZEc5eWVTZ3BJRHBjYmlBZ2RIbHdaVzltSUdSbFptbHVaU0E5UFQwZ0oyWjFibU4wYVc5dUp5QW1KaUJrWldacGJtVXVZVzFrSUQ4Z1pHVm1hVzVsS0NkMWJtUmxjbk5qYjNKbEp5d2dabUZqZEc5eWVTa2dPbHh1SUNBb1oyeHZZbUZzSUQwZ2RIbHdaVzltSUdkc2IySmhiRlJvYVhNZ0lUMDlJQ2QxYm1SbFptbHVaV1FuSUQ4Z1oyeHZZbUZzVkdocGN5QTZJR2RzYjJKaGJDQjhmQ0J6Wld4bUxDQW9ablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSFpoY2lCamRYSnlaVzUwSUQwZ1oyeHZZbUZzTGw4N1hHNGdJQ0FnZG1GeUlHVjRjRzl5ZEhNZ1BTQm5iRzlpWVd3dVh5QTlJR1poWTNSdmNua29LVHRjYmlBZ0lDQmxlSEJ2Y25SekxtNXZRMjl1Wm14cFkzUWdQU0JtZFc1amRHbHZiaUFvS1NCN0lHZHNiMkpoYkM1ZklEMGdZM1Z5Y21WdWREc2djbVYwZFhKdUlHVjRjRzl5ZEhNN0lIMDdYRzRnSUgwb0tTa3BPMXh1ZlNoMGFHbHpMQ0FvWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0F2THlBZ0lDQWdWVzVrWlhKelkyOXlaUzVxY3lBeExqRXpMakZjYmlBZ0x5OGdJQ0FnSUdoMGRIQnpPaTh2ZFc1a1pYSnpZMjl5WldwekxtOXlaMXh1SUNBdkx5QWdJQ0FnS0dNcElESXdNRGt0TWpBeU1TQktaWEpsYlhrZ1FYTm9hMlZ1WVhNc0lFcDFiR2xoYmlCSGIyNW5aM0pwYW5Bc0lHRnVaQ0JFYjJOMWJXVnVkRU5zYjNWa0lHRnVaQ0JKYm5abGMzUnBaMkYwYVhabElGSmxjRzl5ZEdWeWN5QW1JRVZrYVhSdmNuTmNiaUFnTHk4Z0lDQWdJRlZ1WkdWeWMyTnZjbVVnYldGNUlHSmxJR1p5WldWc2VTQmthWE4wY21saWRYUmxaQ0IxYm1SbGNpQjBhR1VnVFVsVUlHeHBZMlZ1YzJVdVhHNWNiaUFnTHk4Z1EzVnljbVZ1ZENCMlpYSnphVzl1TGx4dUlDQjJZWElnVmtWU1UwbFBUaUE5SUNjeExqRXpMakVuTzF4dVhHNGdJQzh2SUVWemRHRmliR2x6YUNCMGFHVWdjbTl2ZENCdlltcGxZM1FzSUdCM2FXNWtiM2RnSUNoZ2MyVnNabUFwSUdsdUlIUm9aU0JpY205M2MyVnlMQ0JnWjJ4dlltRnNZRnh1SUNBdkx5QnZiaUIwYUdVZ2MyVnlkbVZ5TENCdmNpQmdkR2hwYzJBZ2FXNGdjMjl0WlNCMmFYSjBkV0ZzSUcxaFkyaHBibVZ6TGlCWFpTQjFjMlVnWUhObGJHWmdYRzRnSUM4dklHbHVjM1JsWVdRZ2IyWWdZSGRwYm1SdmQyQWdabTl5SUdCWFpXSlhiM0pyWlhKZ0lITjFjSEJ2Y25RdVhHNGdJSFpoY2lCeWIyOTBJRDBnZEhsd1pXOW1JSE5sYkdZZ1BUMGdKMjlpYW1WamRDY2dKaVlnYzJWc1ppNXpaV3htSUQwOVBTQnpaV3htSUNZbUlITmxiR1lnZkh4Y2JpQWdJQ0FnSUNBZ0lDQWdJSFI1Y0dWdlppQm5iRzlpWVd3Z1BUMGdKMjlpYW1WamRDY2dKaVlnWjJ4dlltRnNMbWRzYjJKaGJDQTlQVDBnWjJ4dlltRnNJQ1ltSUdkc2IySmhiQ0I4ZkZ4dUlDQWdJQ0FnSUNBZ0lDQWdSblZ1WTNScGIyNG9KM0psZEhWeWJpQjBhR2x6Snlrb0tTQjhmRnh1SUNBZ0lDQWdJQ0FnSUNBZ2UzMDdYRzVjYmlBZ0x5OGdVMkYyWlNCaWVYUmxjeUJwYmlCMGFHVWdiV2x1YVdacFpXUWdLR0oxZENCdWIzUWdaM3BwY0hCbFpDa2dkbVZ5YzJsdmJqcGNiaUFnZG1GeUlFRnljbUY1VUhKdmRHOGdQU0JCY25KaGVTNXdjbTkwYjNSNWNHVXNJRTlpYWxCeWIzUnZJRDBnVDJKcVpXTjBMbkJ5YjNSdmRIbHdaVHRjYmlBZ2RtRnlJRk41YldKdmJGQnliM1J2SUQwZ2RIbHdaVzltSUZONWJXSnZiQ0FoUFQwZ0ozVnVaR1ZtYVc1bFpDY2dQeUJUZVcxaWIyd3VjSEp2ZEc5MGVYQmxJRG9nYm5Wc2JEdGNibHh1SUNBdkx5QkRjbVZoZEdVZ2NYVnBZMnNnY21WbVpYSmxibU5sSUhaaGNtbGhZbXhsY3lCbWIzSWdjM0JsWldRZ1lXTmpaWE56SUhSdklHTnZjbVVnY0hKdmRHOTBlWEJsY3k1Y2JpQWdkbUZ5SUhCMWMyZ2dQU0JCY25KaGVWQnliM1J2TG5CMWMyZ3NYRzRnSUNBZ0lDQnpiR2xqWlNBOUlFRnljbUY1VUhKdmRHOHVjMnhwWTJVc1hHNGdJQ0FnSUNCMGIxTjBjbWx1WnlBOUlFOWlhbEJ5YjNSdkxuUnZVM1J5YVc1bkxGeHVJQ0FnSUNBZ2FHRnpUM2R1VUhKdmNHVnlkSGtnUFNCUFltcFFjbTkwYnk1b1lYTlBkMjVRY205d1pYSjBlVHRjYmx4dUlDQXZMeUJOYjJSbGNtNGdabVZoZEhWeVpTQmtaWFJsWTNScGIyNHVYRzRnSUhaaGNpQnpkWEJ3YjNKMGMwRnljbUY1UW5WbVptVnlJRDBnZEhsd1pXOW1JRUZ5Y21GNVFuVm1abVZ5SUNFOVBTQW5kVzVrWldacGJtVmtKeXhjYmlBZ0lDQWdJSE4xY0hCdmNuUnpSR0YwWVZacFpYY2dQU0IwZVhCbGIyWWdSR0YwWVZacFpYY2dJVDA5SUNkMWJtUmxabWx1WldRbk8xeHVYRzRnSUM4dklFRnNiQ0FxS2tWRFRVRlRZM0pwY0hRZ05Tc3FLaUJ1WVhScGRtVWdablZ1WTNScGIyNGdhVzF3YkdWd
14938FpXNTBZWFJwYjI1eklIUm9ZWFFnZDJVZ2FHOXdaU0IwYnlCMWMyVmNiaUFnTHk4Z1lYSmxJR1JsWTJ4aGNtVmtJR2hsY21VdVhHNGdJSFpoY2lCdVlYUnBkbVZKYzBGeWNtRjVJRDBnUVhKeVlYa3VhWE5CY25KaGVTeGNiaUFnSUNBZ0lHNWhkR2wyWlV0bGVYTWdQU0JQWW1wbFkzUXVhMlY1Y3l4Y2JpQWdJQ0FnSUc1aGRHbDJaVU55WldGMFpTQTlJRTlpYW1WamRDNWpjbVZoZEdVc1hHNGdJQ0FnSUNCdVlYUnBkbVZKYzFacFpYY2dQU0J6ZFhCd2IzSjBjMEZ5Y21GNVFuVm1abVZ5SUNZbUlFRnljbUY1UW5WbVptVnlMbWx6Vm1sbGR6dGNibHh1SUNBdkx5QkRjbVZoZEdVZ2NtVm1aWEpsYm1ObGN5QjBieUIwYUdWelpTQmlkV2xzZEdsdUlHWjFibU4wYVc5dWN5QmlaV05oZFhObElIZGxJRzkyWlhKeWFXUmxJSFJvWlcwdVhHNGdJSFpoY2lCZmFYTk9ZVTRnUFNCcGMwNWhUaXhjYmlBZ0lDQWdJRjlwYzBacGJtbDBaU0E5SUdselJtbHVhWFJsTzF4dVhHNGdJQzh2SUV0bGVYTWdhVzRnU1VVZ1BDQTVJSFJvWVhRZ2QyOXVKM1FnWW1VZ2FYUmxjbUYwWldRZ1lua2dZR1p2Y2lCclpYa2dhVzRnTGk0dVlDQmhibVFnZEdoMWN5QnRhWE56WldRdVhHNGdJSFpoY2lCb1lYTkZiblZ0UW5WbklEMGdJWHQwYjFOMGNtbHVaem9nYm5Wc2JIMHVjSEp2Y0dWeWRIbEpjMFZ1ZFcxbGNtRmliR1VvSjNSdlUzUnlhVzVuSnlrN1hHNGdJSFpoY2lCdWIyNUZiblZ0WlhKaFlteGxVSEp2Y0hNZ1BTQmJKM1poYkhWbFQyWW5MQ0FuYVhOUWNtOTBiM1I1Y0dWUFppY3NJQ2QwYjFOMGNtbHVaeWNzWEc0Z0lDQWdKM0J5YjNCbGNuUjVTWE5GYm5WdFpYSmhZbXhsSnl3Z0oyaGhjMDkzYmxCeWIzQmxjblI1Snl3Z0ozUnZURzlqWVd4bFUzUnlhVzVuSjEwN1hHNWNiaUFnTHk4Z1ZHaGxJR3hoY21kbGMzUWdhVzUwWldkbGNpQjBhR0YwSUdOaGJpQmlaU0J5WlhCeVpYTmxiblJsWkNCbGVHRmpkR3g1TGx4dUlDQjJZWElnVFVGWVgwRlNVa0ZaWDBsT1JFVllJRDBnVFdGMGFDNXdiM2NvTWl3Z05UTXBJQzBnTVR0Y2JseHVJQ0F2THlCVGIyMWxJR1oxYm1OMGFXOXVjeUIwWVd0bElHRWdkbUZ5YVdGaWJHVWdiblZ0WW1WeUlHOW1JR0Z5WjNWdFpXNTBjeXdnYjNJZ1lTQm1aWGNnWlhod1pXTjBaV1JjYmlBZ0x5OGdZWEpuZFcxbGJuUnpJR0YwSUhSb1pTQmlaV2RwYm01cGJtY2dZVzVrSUhSb1pXNGdZU0IyWVhKcFlXSnNaU0J1ZFcxaVpYSWdiMllnZG1Gc2RXVnpJSFJ2SUc5d1pYSmhkR1ZjYmlBZ0x5OGdiMjR1SUZSb2FYTWdhR1ZzY0dWeUlHRmpZM1Z0ZFd4aGRHVnpJR0ZzYkNCeVpXMWhhVzVwYm1jZ1lYSm5kVzFsYm5SeklIQmhjM1FnZEdobElHWjFibU4wYVc5dTRvQ1pjMXh1SUNBdkx5QmhjbWQxYldWdWRDQnNaVzVuZEdnZ0tHOXlJR0Z1SUdWNGNHeHBZMmwwSUdCemRHRnlkRWx1WkdWNFlDa3NJR2x1ZEc4Z1lXNGdZWEp5WVhrZ2RHaGhkQ0JpWldOdmJXVnpYRzRnSUM4dklIUm9aU0JzWVhOMElHRnlaM1Z0Wlc1MExpQlRhVzFwYkdGeUlIUnZJRVZUTnVLQW1YTWdYQ0p5WlhOMElIQmhjbUZ0WlhSbGNsd2lMbHh1SUNCbWRXNWpkR2x2YmlCeVpYTjBRWEpuZFcxbGJuUnpLR1oxYm1Nc0lITjBZWEowU1c1a1pYZ3BJSHRjYmlBZ0lDQnpkR0Z5ZEVsdVpHVjRJRDBnYzNSaGNuUkpibVJsZUNBOVBTQnVkV3hzSUQ4Z1puVnVZeTVzWlc1bmRHZ2dMU0F4SURvZ0szTjBZWEowU1c1a1pYZzdYRzRnSUNBZ2NtVjBkWEp1SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUNBZ2RtRnlJR3hsYm1kMGFDQTlJRTFoZEdndWJXRjRLR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ2dMU0J6ZEdGeWRFbHVaR1Y0TENBd0tTeGNiaUFnSUNBZ0lDQWdJQ0J5WlhOMElEMGdRWEp5WVhrb2JHVnVaM1JvS1N4Y2JpQWdJQ0FnSUNBZ0lDQnBibVJsZUNBOUlEQTdYRzRnSUNBZ0lDQm1iM0lnS0RzZ2FXNWtaWGdnUENCc1pXNW5kR2c3SUdsdVpHVjRLeXNwSUh0Y2JpQWdJQ0FnSUNBZ2NtVnpkRnRwYm1SbGVGMGdQU0JoY21kMWJXVnVkSE5iYVc1a1pYZ2dLeUJ6ZEdGeWRFbHVaR1Y0WFR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhOM2FYUmphQ0FvYzNSaGNuUkpibVJsZUNrZ2UxeHVJQ0FnSUNBZ0lDQmpZWE5sSURBNklISmxkSFZ5YmlCbWRXNWpMbU5oYkd3b2RHaHBjeXdnY21WemRDazdYRzRnSUNBZ0lDQWdJR05oYzJVZ01Ub2djbVYwZFhKdUlHWjFibU11WTJGc2JDaDBhR2x6TENCaGNtZDFiV1Z1ZEhOYk1GMHNJSEpsYzNRcE8xeHVJQ0FnSUNBZ0lDQmpZWE5sSURJNklISmxkSFZ5YmlCbWRXNWpMbU5oYkd3b2RHaHBjeXdnWVhKbmRXMWxiblJ6V3pCZExDQmhjbWQxYldWdWRITmJNVjBzSUhKbGMzUXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkbUZ5SUdGeVozTWdQU0JCY25KaGVTaHpkR0Z5ZEVsdVpHVjRJQ3NnTVNrN1hHNGdJQ0FnSUNCbWIzSWdLR2x1WkdWNElEMGdNRHNnYVc1a1pYZ2dQQ0J6ZEdGeWRFbHVaR1Y0T3lCcGJtUmxlQ3NyS1NCN1hHNGdJQ0FnSUNBZ0lHRnlaM05iYVc1a1pYaGRJRDBnWVhKbmRXMWxiblJ6VzJsdVpHVjRYVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR0Z5WjNOYmMzUmhjblJKYm1SbGVGMGdQU0J5WlhOME8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUdaMWJtTXVZWEJ3Ykhrb2RHaHBjeXdnWVhKbmN5azdYRzRnSUNBZ2ZUdGNiaUFnZlZ4dVhHNGdJQzh2SUVseklHRWdaMmwyWlc0Z2RtRnlhV0ZpYkdVZ1lXNGdiMkpxWldOMFAxeHVJQ0JtZFc1amRHbHZiaUJwYzA5aWFtVmpkQ2h2WW1vcElIdGNiaUFnSUNCMllYSWdkSGx3WlNBOUlIUjVjR1Z2WmlCdlltbzdYRzRnSUNBZ2NtVjBkWEp1SUhSNWNHVWdQVDA5SUNkbWRXNWpkR2x2YmljZ2ZId2dkSGx3WlNBOVBUMGdKMjlpYW1WamRDY2dKaVlnSVNGdlltbzdYRzRnSUgxY2JseHVJQ0F2THlCSmN5QmhJR2RwZG1WdUlIWmhiSFZsSUdWeGRXRnNJSFJ2SUc1MWJHdy9YRzRnSUdaMWJtTjBhVzl1SUdselRuVnNiQ2h2WW1vcElIdGNiaUFnSUNCeVpYUjFjbTRnYjJKcUlEMDlQU0J1ZFd4c08xeHVJQ0I5WEc1Y2JpQWdMeThnU1hNZ1lTQm5hWFpsYmlCMllYSnBZV0pzWlNCMWJtUmxabWx1WldRL1hHNGdJR1oxYm1OMGFXOXVJR2x6Vlc1a1pXWnBibVZrS0c5aWFpa2dlMXh1SUNBZ0lISmxkSFZ5YmlCdlltb2dQVDA5SUhadmFXUWdNRHRjYmlBZ2ZWeHVYRzRnSUM4dklFbHpJR0VnWjJsMlpXNGdkbUZzZFdVZ1lTQmliMjlzWldGdVAxeHVJQ0JtZFc1amRHbHZiaUJwYzBKdmIyeGxZVzRvYjJKcUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUc5aWF
14938pQTlQVDBnZEhKMVpTQjhmQ0J2WW1vZ1BUMDlJR1poYkhObElIeDhJSFJ2VTNSeWFXNW5MbU5oYkd3b2IySnFLU0E5UFQwZ0oxdHZZbXBsWTNRZ1FtOXZiR1ZoYmwwbk8xeHVJQ0I5WEc1Y2JpQWdMeThnU1hNZ1lTQm5hWFpsYmlCMllXeDFaU0JoSUVSUFRTQmxiR1Z0Wlc1MFAxeHVJQ0JtZFc1amRHbHZiaUJwYzBWc1pXMWxiblFvYjJKcUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUNFaEtHOWlhaUFtSmlCdlltb3VibTlrWlZSNWNHVWdQVDA5SURFcE8xeHVJQ0I5WEc1Y2JpQWdMeThnU1c1MFpYSnVZV3dnWm5WdVkzUnBiMjRnWm05eUlHTnlaV0YwYVc1bklHRWdZSFJ2VTNSeWFXNW5ZQzFpWVhObFpDQjBlWEJsSUhSbGMzUmxjaTVjYmlBZ1puVnVZM1JwYjI0Z2RHRm5WR1Z6ZEdWeUtHNWhiV1VwSUh0Y2JpQWdJQ0IyWVhJZ2RHRm5JRDBnSjF0dlltcGxZM1FnSnlBcklHNWhiV1VnS3lBblhTYzdYRzRnSUNBZ2NtVjBkWEp1SUdaMWJtTjBhVzl1S0c5aWFpa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlIUnZVM1J5YVc1bkxtTmhiR3dvYjJKcUtTQTlQVDBnZEdGbk8xeHVJQ0FnSUgwN1hHNGdJSDFjYmx4dUlDQjJZWElnYVhOVGRISnBibWNnUFNCMFlXZFVaWE4wWlhJb0oxTjBjbWx1WnljcE8xeHVYRzRnSUhaaGNpQnBjMDUxYldKbGNpQTlJSFJoWjFSbGMzUmxjaWduVG5WdFltVnlKeWs3WEc1Y2JpQWdkbUZ5SUdselJHRjBaU0E5SUhSaFoxUmxjM1JsY2lnblJHRjBaU2NwTzF4dVhHNGdJSFpoY2lCcGMxSmxaMFY0Y0NBOUlIUmhaMVJsYzNSbGNpZ25VbVZuUlhod0p5azdYRzVjYmlBZ2RtRnlJR2x6UlhKeWIzSWdQU0IwWVdkVVpYTjBaWElvSjBWeWNtOXlKeWs3WEc1Y2JpQWdkbUZ5SUdselUzbHRZbTlzSUQwZ2RHRm5WR1Z6ZEdWeUtDZFRlVzFpYjJ3bktUdGNibHh1SUNCMllYSWdhWE5CY25KaG
14938VVSjFabVpsY2lBOUlIUmhaMVJsYzNSbGNpZ25RWEp5WVhsQ2RXWm1aWEluS1R0Y2JseHVJQ0IyWVhJZ2FYTkdkVzVqZEdsdmJpQTlJSFJoWjFSbGMzUmxjaWduUm5WdVkzUnBiMjRuS1R0Y2JseHVJQ0F2THlCUGNIUnBiV2w2WlNCZ2FYTkdkVzVqZEdsdmJtQWdhV1lnWVhCd2NtOXdjbWxoZEdVdUlGZHZjbXNnWVhKdmRXNWtJSE52YldVZ1lIUjVjR1Z2Wm1BZ1luVm5jeUJwYmlCdmJHUmNiaUFnTHk4Z2RqZ3NJRWxGSURFeElDZ2pNVFl5TVNrc0lGTmhabUZ5YVNBNElDZ2pNVGt5T1Nrc0lHRnVaQ0JRYUdGdWRHOXRTbE1nS0NNeU1qTTJLUzVjYmlBZ2RtRnlJRzV2WkdWc2FYTjBJRDBnY205dmRDNWtiMk4xYldWdWRDQW1KaUJ5YjI5MExtUnZZM1Z0Wlc1MExtTm9hV3hrVG05a1pYTTdYRzRnSUdsbUlDaDBlWEJsYjJZZ0x5NHZJQ0U5SUNkbWRXNWpkR2x2YmljZ0ppWWdkSGx3Wlc5bUlFbHVkRGhCY25KaGVTQWhQU0FuYjJKcVpXTjBKeUFtSmlCMGVYQmxiMllnYm05a1pXeHBjM1FnSVQwZ0oyWjFibU4wYVc5dUp5a2dlMXh1SUNBZ0lHbHpSblZ1WTNScGIyNGdQU0JtZFc1amRHbHZiaWh2WW1vcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCMGVYQmxiMllnYjJKcUlEMDlJQ2RtZFc1amRHbHZiaWNnZkh3Z1ptRnNjMlU3WEc0Z0lDQWdmVHRjYmlBZ2ZWeHVYRzRnSUhaaGNpQnBjMFoxYm1OMGFXOXVKREVnUFNCcGMwWjFibU4wYVc5dU8xeHVYRzRnSUhaaGNpQm9ZWE5QWW1wbFkzUlVZV2NnUFNCMFlXZFVaWE4wWlhJb0owOWlhbVZqZENjcE8xeHVYRzRnSUM4dklFbHVJRWxGSURFd0lDMGdSV1JuWlNBeE15d2dZRVJoZEdGV2FXVjNZQ0JvWVhNZ2MzUnlhVzVuSUhSaFp5QmdKMXR2WW1wbFkzUWdUMkpxWldOMFhTZGdMbHh1SUNBdkx5QkpiaUJKUlNBeE1Td2dkR2hsSUcxdmMzUWdZMjl0Ylc5dUlHRnRiMjVuSUhSb1pXMHNJSFJvYVhNZ2NISnZZbXhsYlNCaGJITnZJR0Z3Y0d4cFpYTWdkRzljYmlBZ0x5OGdZRTFoY0dBc0lHQlhaV0ZyVFdGd1lDQmhibVFnWUZObGRHQXVYRzRnSUhaaGNpQm9ZWE5UZEhKcGJtZFVZV2RDZFdjZ1BTQW9YRzRnSUNBZ0lDQWdJSE4xY0hCdmNuUnpSR0YwWVZacFpYY2dKaVlnYUdGelQySnFaV04wVkdGbktHNWxkeUJFWVhSaFZtbGxkeWh1WlhjZ1FYSnlZWGxDZFdabVpYSW9PQ2twS1Z4dUlDQWdJQ0FnS1N4Y2JpQWdJQ0FnSUdselNVVXhNU0E5SUNoMGVYQmxiMllnVFdGd0lDRTlQU0FuZFc1a1pXWnBibVZrSnlBbUppQm9ZWE5QWW1wbFkzUlVZV2NvYm1WM0lFMWhjQ2twTzF4dVhHNGdJSFpoY2lCcGMwUmhkR0ZXYVdWM0lEMGdkR0ZuVkdWemRHVnlLQ2RFWVhSaFZtbGxkeWNwTzF4dVhHNGdJQzh2SUVsdUlFbEZJREV3SUMwZ1JXUm5aU0F4TXl3Z2QyVWdibVZsWkNCaElHUnBabVpsY21WdWRDQm9aWFZ5YVhOMGFXTmNiaUFnTHk4Z2RHOGdaR1YwWlhKdGFXNWxJSGRvWlhSb1pYSWdZVzRnYjJKcVpXTjBJR2x6SUdFZ1lFUmhkR0ZXYVdWM1lDNWNiaUFnWm5WdVkzUnBiMjRnYVdVeE1FbHpSR0YwWVZacFpYY29iMkpxS1NCN1hHNGdJQ0FnY21WMGRYSnVJRzlpYWlBaFBTQnVkV3hzSUNZbUlHbHpSblZ1WTNScGIyNGtNU2h2WW1vdVoyVjBTVzUwT0NrZ0ppWWdhWE5CY25KaG
14938VVSjFabVpsY2lodlltb3VZblZtWm1WeUtUdGNiaUFnZlZ4dVhHNGdJSFpoY2lCcGMwUmhkR0ZXYVdWM0pERWdQU0FvYUdGelUzUnlhVzVuVkdGblFuVm5JRDhnYVdVeE1FbHpSR0YwWVZacFpYY2dPaUJwYzBSaGRHRldhV1YzS1R0Y2JseHVJQ0F2THlCSmN5QmhJR2RwZG1WdUlIWmhiSFZsSUdGdUlHRnljbUY1UDF4dUlDQXZMeUJFWld4bFoyRjBaWE1nZEc4Z1JVTk5RVFVuY3lCdVlYUnBkbVVnWUVGeWNtRjVMbWx6UVhKeVlYbGdMbHh1SUNCMllYSWdhWE5CY25KaGVTQTlJRzVoZEdsMlpVbHpRWEp5WVhrZ2ZId2dkR0ZuVkdWemRHVnlLQ2RCY25KaGVTY3BPMXh1WEc0Z0lDOHZJRWx1ZEdWeWJtRnNJR1oxYm1OMGFXOXVJSFJ2SUdOb1pXTnJJSGRvWlhSb1pYSWdZR3RsZVdBZ2FYTWdZVzRnYjNkdUlIQnliM0JsY25SNUlHNWhiV1VnYjJZZ1lHOWlhbUF1WEc0Z0lHWjFibU4wYVc5dUlHaGhjeVF4S0c5aWFpd2dhMlY1S1NCN1hHNGdJQ0FnY21WMGRYSnVJRzlpYWlBaFBTQnVkV3hzSUNZbUlHaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29iMkpxTENCclpYa3BPMXh1SUNCOVhHNWNiaUFnZG1GeUlHbHpRWEpuZFcxbGJuUnpJRDBnZEdGblZHVnpkR1Z5S0NkQmNtZDFiV1Z1ZEhNbktUdGNibHh1SUNBdkx5QkVaV1pwYm1VZ1lTQm1ZV3hzWW1GamF5QjJaWEp6YVc5dUlHOW1JSFJvWlNCdFpYUm9iMlFnYVc0Z1luSnZkM05sY25NZ0tHRm9aVzBzSUVsRklEd2dPU2tzSUhkb1pYSmxYRzRnSUM4dklIUm9aWEpsSUdsemJpZDBJR0Z1ZVNCcGJuTndaV04wWVdKc1pTQmNJa0Z5WjNWdFpXNTBjMXdpSUhSNWNHVXVYRzRnSUNobWRXNWpkR2x2YmlncElIdGNiaUFnSUNCcFppQW9JV2x6UVhKbmRXMWxiblJ6S0dGeVozVnRaVzUwY3lrcElIdGNiaUFnSUNBZ0lHbHpRWEpuZFcxbGJuUnpJRDBnWm5WdVkzUnBiMjRvYjJKcUtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQm9ZWE1rTVNodlltb3NJQ2RqWVd4c1pXVW5LVHRjYmlBZ0lDQWdJSDA3WEc0Z0lDQWdmVnh1SUNCOUtDa3BPMXh1WEc0Z0lIWmhjaUJwYzBGeVozVnRaVzUwY3lReElEMGdhWE5CY21kMWJXVnVkSE03WEc1Y2JpQWdMeThnU1hNZ1lTQm5hWFpsYmlCdlltcGxZM1FnWVNCbWFXNXBkR1VnYm5WdFltVnlQMXh1SUNCbWRXNWpkR2x2YmlCcGMwWnBibWwwWlNReEtHOWlhaWtnZTF4dUlDQWdJSEpsZEhWeWJpQWhhWE5UZVcxaWIyd29iMkpxS1NBbUppQmZhWE5HYVc1cGRHVW9iMkpxS1NBbUppQWhhWE5PWVU0b2NHRnljMlZHYkc5aGRDaHZZbW9wS1R0Y2JpQWdmVnh1WEc0Z0lDOHZJRWx6SUhSb1pTQm5hWFpsYmlCMllXeDFaU0JnVG1GT1lEOWNiaUFnWm5WdVkzUnBiMjRnYVhOT1lVNGtNU2h2WW1vcElIdGNiaUFnSUNCeVpYUjFjbTRnYVhOT2RXMWlaWElvYjJKcUtTQW1KaUJmYVhOT1lVNG9iMkpxS1R0Y2JpQWdmVnh1WEc0Z0lDOHZJRkJ5WldScFkyRjBaUzFuWlc1bGNtRjBhVzVuSUdaMWJtTjBhVzl1TGlCUFpuUmxiaUIxYzJWbWRXd2diM1YwYzJsa1pTQnZaaUJWYm1SbGNuTmpiM0psTGx4dUlDQm1kVzVqZEdsdmJpQmpiMjV6ZEdGdWRDaDJZV3gxWlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUIyWVd4MVpUdGNiaUFnSUNCOU8xeHVJQ0I5WEc1Y2JpQWdMeThnUTI5dGJXOXVJR2x1ZEdWeWJtRnNJR3h2WjJsaklHWnZjaUJnYVhOQmNuSmhlVXhwYTJWZ0lHRnVaQ0JnYVhOQ2RXWm1aWEpNYVd0bFlDNWNiaUFnWm5WdVkzUnBiMjRnWTNKbFlYUmxVMmw2WlZCeWIzQmxjblI1UTJobFkyc29aMlYwVTJsNlpWQnliM0JsY25SNUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdaMWJtTjBhVzl1S0dOdmJHeGxZM1JwYjI0cElIdGNiaUFnSUNBZ0lIWmhjaUJ6YVhwbFVISnZjR1Z5ZEhrZ1BTQm5aWFJUYVhwbFVISnZjR1Z5ZEhrb1kyOXNiR1ZqZEdsdmJpazdYRzRnSUNBZ0lDQnlaWFIxY200Z2RIbHdaVzltSUhOcGVtVlFjbTl3WlhKMGVTQTlQU0FuYm5WdFltVnlKeUFtSmlCemFYcGxVSEp2Y0dWeWRIa2dQajBnTUNBbUppQnphWHBsVUhKdmNHVnlkSGtnUEQwZ1RVRllYMEZTVWtGWlgwbE9SRVZZTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUM4dklFbHVkR1Z5Ym1Gc0lHaGxiSEJsY2lCMGJ5Qm5aVzVsY21GMFpTQmhJR1oxYm1OMGFXOXVJSFJ2SUc5aWRHRnBiaUJ3Y205d1pYSjBlU0JnYTJWNVlDQm1jbTl0SUdCdlltcGdMbHh1SUNCbWRXNWpkR2x2YmlCemFHRnNiRzkzVUhKdmNHVnlkSGtvYTJWNUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdaMWJtTjBhVzl1S0c5aWFpa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHOWlhaUE5UFNCdWRXeHNJRDhnZG05cFpDQXdJRG9nYjJKcVcydGxlVjA3WEc0Z0lDQWdmVHRjYmlBZ2ZWeHVYRzRnSUM4dklFbHVkR1Z5Ym1Gc0lHaGxiSEJsY2lCMGJ5QnZZblJoYVc0Z2RHaGxJR0JpZVhSbFRHVnVaM1JvWUNCd2NtOXdaWEowZVNCdlppQmhiaUJ2WW1wbFkzUXVYRzRnSUhaaGNpQm5aWFJDZVhSbFRHVnVaM1JvSUQwZ2MyaGhiR3h2ZDFCeWIzQmxjblI1S0NkaWVYUmxUR1Z1WjNSb0p5azdYRzVjYmlBZ0x5OGdTVzUwWlhKdVlXd2dhR1ZzY0dWeUlIUnZJR1JsZEdWeWJXbHVaU0IzYUdWMGFHVnlJSGRsSUhOb2IzVnNaQ0J6Y0dWdVpDQmxlSFJsYm5OcGRtVWdZMmhsWTJ0eklHRm5ZV2x1YzNSY2JpQWdMeThnWUVGeWNtRjVRblZtWm1WeVlDQmxkQ0JoYkM1Y2JpQWdkbUZ5SUdselFuVm1abVZ5VEdsclpTQTlJR055WldGMFpWTnBlbVZRY205d1pYSjBlVU5vWldOcktHZGxkRUo1ZEdWTVpXNW5kR2dwTzF4dVhHNGdJQzh2SUVseklHRWdaMmwyWlc0Z2RtRnNkV1VnWVNCMGVYQmxaQ0JoY25KaGVUOWNiaUFnZG1GeUlIUjVjR1ZrUVhKeVlYbFFZWFIwWlhKdUlEMGdMMXhjVzI5aWFtVmpkQ0FvS0VsOFZXa3BiblFvT0h3eE5ud3pNaWw4Um14dllYUW9Neko4TmpRcGZGVnBiblE0UTJ4aGJYQmxaSHhDYVdjb1NYeFZhU2x1ZERZMEtVRnljbUY1WEZ4ZEx6dGNiaUFnWm5WdVkzUnBiMjRnYVhOVWVYQmxaRUZ5Y21GNUtHOWlhaWtnZTF4dUlDQWdJQzh2SUdCQmNuSmhlVUoxWm1abGNpNXBjMVpwWlhkZ0lHbHpJSFJvWlNCdGIzTjBJR1oxZEhWeVpTMXdjbTl2Wml3Z2MyOGdkWE5sSUdsMElIZG9aVzRnWVhaaGFXeGhZbXhsTGx4dUlDQWdJQzh2SUU5MGFHVnlkMmx6WlN3Z1ptRnNiQ0JpWVdOcklHOXVJSFJvWlNCaFltOTJaU0J5WldkMWJHRnlJR1Y0Y0hKbGMzTnBiMjR1WEc0Z0lDQWdjbVYwZFhKdUlHNWhkR2wyWlVselZtbGxkeUEvSUNodVlYUnBkbVZKYzFacFpYY29iMkpxS1NBbUppQWhhWE5FWVhSaFZtbGxkeVF4S0c5aWF
14938pa3BJRHBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdselFuVm1abVZ5VEdsclpTaHZZbW9wSUNZbUlIUjVjR1ZrUVhKeVlYbFFZWFIwWlhKdUxuUmxjM1FvZEc5VGRISnBibWN1WTJGc2JDaHZZbW9wS1R0Y2JpQWdmVnh1WEc0Z0lIWmhjaUJwYzFSNWNHVmtRWEp5WVhra01TQTlJSE4xY0hCdmNuUnpRWEp5WVhsQ2RXWm1aWElnUHlCcGMxUjVjR1ZrUVhKeVlYa2dPaUJqYjI1emRHRnVkQ2htWVd4elpTazdYRzVjYmlBZ0x5OGdTVzUwWlhKdVlXd2dhR1ZzY0dWeUlIUnZJRzlpZEdGcGJpQjBhR1VnWUd4bGJtZDBhR0FnY0hKdmNHVnlkSGtnYjJZZ1lXNGdiMkpxWldOMExseHVJQ0IyWVhJZ1oyVjBUR1Z1WjNSb0lEMGdjMmhoYkd4dmQxQnliM0JsY25SNUtDZHNaVzVuZEdnbktUdGNibHh1SUNBdkx5QkpiblJsY201aGJDQm9aV3h3WlhJZ2RHOGdZM0psWVhSbElHRWdjMmx0Y0d4bElHeHZiMnQxY0NCemRISjFZM1IxY21VdVhHNGdJQzh2SUdCamIyeHNaV04wVG05dVJXNTFiVkJ5YjNCellDQjFjMlZrSUhSdklHUmxjR1Z1WkNCdmJpQmdYeTVqYjI1MFlXbHVjMkFzSUdKMWRDQjBhR2x6SUd4bFpDQjBiMXh1SUNBdkx5QmphWEpqZFd4aGNpQnBiWEJ2Y25SekxpQmdaVzExYkdGMFpXUlRaWFJnSUdseklHRWdiMjVsTFc5bVppQnpiMngxZEdsdmJpQjBhR0YwSUc5dWJIa2dkMjl5YTNNZ1ptOXlYRzRnSUM4dklHRnljbUY1Y3lCdlppQnpkSEpwYm1kekxseHVJQ0JtZFc1amRHbHZiaUJsYlhWc1lYUmxaRk5sZENoclpYbHpLU0I3WEc0Z0lDQWdkbUZ5SUdoaGMyZ2dQU0I3ZlR0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJzSUQwZ2EyVjVjeTVzWlc1bmRHZ3NJR2tnUFNBd095QnBJRHdnYkRzZ0t5dHBLU0JvWVhOb1cydGxlWE5iYVYxZElEMGdkSEoxWlR0Y2JpQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdZMjl1ZEdGcGJuTTZJR1oxYm1OMGFXOXVLR3RsZVNrZ2V5QnlaWFIxY200Z2FHRnphRnRyWlhsZE95QjlMRnh1SUNBZ0lDQWdjSFZ6YURvZ1puVnVZM1JwYjI0b2EyVjVLU0I3WEc0Z0lDQWdJQ0FnSUdoaGMyaGJhMlY1WFNBOUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJyWlhsekxuQjFjMmdvYTJWNUtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOU8xeHVJQ0I5WEc1Y2JpQWdMeThnU1c1MFpYSnVZV3dnYUdWc2NHVnlMaUJEYUdWamEzTWdZR3RsZVhOZ0lHWnZjaUIwYUdVZ2NISmxjMlZ1WTJVZ2IyWWdhMlY1Y3lCcGJpQkpSU0E4SURrZ2RHaGhkQ0IzYjI0bmRGeHVJQ0F2THlCaVpTQnBkR1Z5WVhSbFpDQmllU0JnWm05eUlHdGxlU0JwYmlBdUxpNWdJR0Z1WkNCMGFIVnpJRzFwYzNObFpDNGdSWGgwWlc1a2N5QmdhMlY1YzJBZ2FXNGdjR3hoWTJVZ2FXWmNiaUFnTHk4Z2JtVmxaR1ZrTGx4dUlDQm1kVzVqZEdsdmJpQmpiMnhzWldOMFRtOXVSVzUxYlZCeWIzQnpLRzlpYWl3Z2EyVjVjeWtnZTF4dUlDQWdJR3RsZVhNZ1BTQmxiWFZzWVhSbFpGTmxkQ2hyWlhsektUdGNiaUFnSUNCMllYSWdibTl1Ulc1MWJVbGtlQ0E5SUc1dmJrVnVkVzFsY21GaWJHVlFjbTl3Y3k1c1pXNW5kR2c3WEc0Z0lDQWdkbUZ5SUdOdmJuTjBjblZqZEc5eUlEMGdiMkpxTG1OdmJuTjBjblZqZEc5eU8xeHVJQ0FnSUhaaGNpQndjbTkwYnlBOUlHbHpSblZ1WTNScGIyNGtNU2hqYjI1emRISjFZM1J2Y2lrZ0ppWWdZMjl1YzNSeWRXTjBiM0l1Y0hKdmRHOTBlWEJsSUh4OElFOWlhbEJ5YjNSdk8xeHVYRzRnSUNBZ0x5OGdRMjl1YzNSeWRXTjBiM0lnYVhNZ1lTQnpjR1ZqYVdGc0lHTmhjMlV1WEc0Z0lDQWdkbUZ5SUhCeWIzQWdQU0FuWTI5dWMzUnlkV04wYjNJbk8xeHVJQ0FnSUdsbUlDaG9ZWE1rTVNodlltb3NJSEJ5YjNBcElDWW1JQ0ZyWlhsekxtTnZiblJoYVc1ektIQnliM0FwS1NCclpYbHpMbkIxYzJnb2NISnZjQ2s3WEc1Y2JpQWdJQ0IzYUdsc1pTQW9ibTl1Ulc1MWJVbGtlQzB0S1NCN1hHNGdJQ0FnSUNCd2NtOXdJRDBnYm05dVJXNTFiV1Z5WVdKc1pWQnliM0J6VzI1dmJrVnVkVzFKWkhoZE8xeHVJQ0FnSUNBZ2FXWWdLSEJ5YjNBZ2FXNGdiMkpxSUNZbUlHOWlhbHR3Y205d1hTQWhQVDBnY0hKdmRHOWJjSEp2Y0YwZ0ppWWdJV3RsZVhNdVkyOXVkR0ZwYm5Nb2NISnZjQ2twSUh0Y2JpQWdJQ0FnSUNBZ2EyVjVjeTV3ZFhOb0tIQnliM0FwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUM4dklGSmxkSEpwWlhabElIUm9aU0J1WVcxbGN5QnZaaUJoYmlCdlltcGxZM1FuY3lCdmQyNGdjSEp2Y0dWeWRHbGxjeTVjYmlBZ0x5OGdSR1ZzWldkaGRHVnpJSFJ2SUNvcVJVTk5RVk5qY21sd2RDQTFLaW9uY3lCdVlYUnBkbVVnWUU5aWFtVmpkQzVyWlhsellDNWNiaUFnWm5WdVkzUnBiMjRnYTJWNWN5aHZZbW9wSUh0Y2JpQWdJQ0JwWmlBb0lXbHpUMkpxWldOMEtHOWlhaWtwSUhKbGRIVnliaUJiWFR0Y2JpQWdJQ0JwWmlBb2JtRjBhWFpsUzJWNWN5a2djbVYwZFhKdUlHNWhkR2wyWlV0bGVYTW9iMkpxS1R0Y2JpQWdJQ0IyWVhJZ2EyVjVjeUE5SUZ0ZE8xeHVJQ0FnSUdadmNpQW9kbUZ5SUd0bGVTQnBiaUJ2WW1vcElHbG1JQ2hvWVhNa01TaHZZbW9zSUd0bGVTa3BJR3RsZVhNdWNIVnphQ2hyWlhrcE8xeHVJQ0FnSUM4dklFRm9aVzBzSUVsRklEd2dPUzVjYmlBZ0lDQnBaaUFvYUdGelJXNTFiVUoxWnlrZ1kyOXNiR1ZqZEU1dmJrVnVkVzFRY205d2N5aHZZbW9zSUd0bGVYTXBPMXh1SUNBZ0lISmxkSFZ5YmlCclpYbHpPMXh1SUNCOVhHNWNiaUFnTHk4Z1NYTWdZU0JuYVhabGJpQmhjbkpoZVN3Z2MzUnlhVzVuTENCdmNpQnZZbXBsWTNRZ1pXMXdkSGsvWEc0Z0lDOHZJRUZ1SUZ3aVpXMXdkSGxjSWlCdlltcGxZM1FnYUdGeklHNXZJR1Z1ZFcxbGNtRmliR1VnYjNkdUxYQnliM0JsY25ScFpYTXVYRzRnSUdaMWJtTjBhVzl1SUdselJXMXdkSGtvYjJKcUtTQjdYRzRnSUNBZ2FXWWdLRzlpYWlBOVBTQnVkV3hzS1NCeVpYUjFjbTRnZEhKMVpUdGNiaUFnSUNBdkx5QlRhMmx3SUhSb1pTQnRiM0psSUdWNGNHVnVjMmwyWlNCZ2RHOVRkSEpwYm1kZ0xXSmhjMlZrSUhSNWNHVWdZMmhsWTJ0eklHbG1JR0J2WW1wZ0lHaGhjeUJ1YjF4dUlDQWdJQzh2SUdBdWJHVnVaM1JvWUM1Y2JpQWdJQ0IyWVhJZ2JHVnVaM1JvSUQwZ1oyVjBUR1Z1WjNSb0tHOWlhaWs3WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJzWlc1bmRHZ2dQVDBnSjI1MWJXSmxjaWNnSmlZZ0tGeHVJQ0FnSUNBZ2FYTkJjbkpoZVNodlltb3BJSHg4SUdselUzUnlhVzVuS0c5aWFpa2dmSHdnYVhOQmNtZDFiV1Z1ZEhNa01TaHZZbW9wWEc0Z0lDQWdLU2tnY21WMGRYSnVJR3hsYm1kMGFDQTlQVDBnTUR0Y2JpQWdJQ0J5WlhSMWNtNGdaMlYwVEdWdVozUm9LR3RsZVhNb2IySnFLU2tnUFQwOUlEQTdYRzRnSUgxY2JseHVJQ0F2THlCU1pYUjFjbTV6SUhkb1pYUm9aWElnWVc0Z2IySnFaV04wSUdoaGN5QmhJR2RwZG1WdUlITmxkQ0J2WmlCZ2EyVjVPblpoYkhWbFlDQndZV2x5Y3k1Y2JpQWdablZ1WTNScGIyNGdhWE5OWVhSamFDaHZZbXBsWTNRc0lHRjBkSEp6S1NCN1hHNGdJQ0FnZG1GeUlGOXJaWGx6SUQwZ2EyVjVjeWhoZEhSeWN5a3NJR3hsYm1kMGFDQTlJRjlyWlhsekxteGxibWQwYUR0Y2JpQWdJQ0JwWmlBb2IySnFaV04wSUQwOUlHNTFiR3dwSUhKbGRIVnliaUFoYkdWdVozUm9PMXh1SUNBZ0lIWmhjaUJ2WW1vZ1BTQlBZbXBsWTNRb2IySnFaV04wS1R0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Ec2dhU0E4SUd4bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQjJZWElnYTJWNUlEMGdYMnRsZVhOYmFWMDdYRzRnSUNBZ0lDQnBaaUFvWVhSMGNuTmJhMlY1WFNBaFBUMGdiMkpxVzJ0bGVWMGdmSHdnSVNoclpYa2dhVzRnYjJKcUtTa2djbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ2ZWeHVYRzRnSUM4dklFbG1JRlZ1WkdWeWMyTnZjbVVnYVhNZ1kyRnNiR1ZrSUdGeklHRWdablZ1WTNScGIyNHNJR2wwSUhKbGRIVnlibk1nWVNCM2NtRndjR1ZrSUc5aWFtVmpkQ0IwYUdGMElHTmhibHh1SUNBdkx5QmlaU0IxYzJWa0lFOVBMWE4wZVd4bExpQlVhR2x6SUhkeVlYQndaWElnYUc5c1pITWdZV3gwWlhKbFpDQjJaWEp6YVc5dWN5QnZaaUJoYkd3Z1puVnVZM1JwYjI1eklHRmtaR1ZrWEc0Z0lDOHZJSFJvY205MVoyZ2dZRjh1YldsNGFXNWdMaUJYY21Gd2NHVmtJRzlpYW1WamRITWdiV0Y1SUdKbElHTm9ZV2x1WldRdVhHNGdJR1oxYm1OMGFXOXVJRjhrTVNodlltb3BJSHRjYmlBZ0lDQnBaaUFvYjJKcUlHbHVjM1JoYm1ObGIyWWdYeVF4S1NCeVpYUjFjbTRnYjJKcU8xeHVJQ0FnSUdsbUlDZ2hLSFJvYVhNZ2FXNXpkR0Z1WTJWdlppQmZKREVwS1NCeVpYUjFjbTRnYm1WM0lGOGtNU2h2WW1vcE8xeHVJQ0FnSUhSb2FYTXVYM2R5WVhCd1pXUWdQU0J2WW1vN1hHNGdJSDFjYmx4dUlDQmZKREV1VmtWU1UwbFBUaUE5SUZaRlVsTkpUMDQ3WEc1Y2JpQWdMeThnUlhoMGNtRmpkSE1nZEdobElISmxjM1ZzZENCbWNtOXRJR0VnZDNKaGNIQmxaQ0JoYm1RZ1kyaGhhVzVsWkNCdlltcGxZM1F1WEc0Z0lGOGtNUzV3Y205MGIzUjVjR1V1ZG1Gc2RXVWdQU0JtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmQzSmhjSEJsWkR0Y2JpQWdmVHRjYmx4dUlDQXZMeUJRY205MmFXUmxJSFZ1ZDNKaGNIQnBibWNnY0hKdmVHbGxjeUJtYjNJZ2MyOXRaU0J0WlhSb2IyUnpJSFZ6WldRZ2FXNGdaVzVuYVc1bElHOXdaWEpoZEdsdmJuTmNiaUFnTHk4Z2MzVmphQ0JoY3lCaGNtbDBhRzFsZEdsaklHRnVaQ0JLVTA5T0lITjBjbWx1WjJsbWFXTmhkR2x2Ymk1Y2JpQWdYeVF4TG5CeWIzUnZkSGx3WlM1Mll
14938XeDFaVTltSUQwZ1h5UXhMbkJ5YjNSdmRIbHdaUzUwYjBwVFQwNGdQU0JmSkRFdWNISnZkRzkwZVhCbExuWmhiSFZsTzF4dVhHNGdJRjhrTVM1d2NtOTBiM1I1Y0dVdWRHOVRkSEpwYm1jZ1BTQm1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z1UzUnlhVzVuS0hSb2FYTXVYM2R5WVhCd1pXUXBPMXh1SUNCOU8xeHVYRzRnSUM4dklFbHVkR1Z5Ym1Gc0lHWjFibU4wYVc5dUlIUnZJSGR5WVhBZ2IzSWdjMmhoYkd4dmR5MWpiM0I1SUdGdUlFRnljbUY1UW5WbVptVnlMRnh1SUNBdkx5QjBlWEJsWkNCaGNuSmhlU0J2Y2lCRVlYUmhWbWxsZHlCMGJ5QmhJRzVsZHlCMmFXVjNMQ0J5WlhWemFXNW5JSFJvWlNCaWRXWm1aWEl1WEc0Z0lHWjFibU4wYVc5dUlIUnZRblZtWm1WeVZtbGxkeWhpZFdabVpYSlRiM1Z5WTJVcElIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGVnBiblE0UVhKeVlYa29YRzRnSUNBZ0lDQmlkV1ptWlhKVGIzVnlZMlV1WW5WbVptVnlJSHg4SUdKMVptWmxjbE52ZFhKalpTeGNiaUFnSUNBZ0lHSjFabVpsY2xOdmRYSmpaUzVpZVhSbFQyWm1jMlYwSUh4OElEQXNYRzRnSUNBZ0lDQm5aWFJDZVhSbFRHVnVaM1JvS0dKMVptWmxjbE52ZFhKalpTbGNiaUFnSUNBcE8xeHVJQ0I5WEc1Y2JpQWdMeThnVjJVZ2RYTmxJSFJvYVhNZ2MzUnlhVzVuSUhSM2FXTmxMQ0J6YnlCbmFYWmxJR2wwSUdFZ2JtRnRaU0JtYjNJZ2JXbHVhV1pwWTJGMGFXOXVMbHh1SUNCMllYSWdkR0ZuUkdGMFlWWnBaWGNnUFNBblcyOWlhbVZqZENCRVlYUmhWbWxsZDEwbk8xeHVYRzRnSUM4dklFbHVkR1Z5Ym1Gc0lISmxZM1Z5YzJsMlpTQmpiMjF3WVhKcGMyOXVJR1oxYm1OMGFXOXVJR1p2Y2lCZ1h5NXBjMFZ4ZFdGc1lDNWNiaUFnWm5WdVkzUnBiMjRnWlhFb1lTd2dZaXdnWVZOMFlXTnJMQ0JpVTNSaFkyc3BJSHRjYmlBZ0lDQXZMeUJKWkdWdWRHbGpZV3dnYjJKcVpXTjBjeUJoY21VZ1pYRjFZV3d1SUdBd0lEMDlQU0F0TUdBc0lHSjFkQ0IwYUdWNUlHRnlaVzRuZENCcFpHVnVkR2xqWVd3dVhHNGdJQ0FnTHk4Z1UyVmxJSFJvWlNCYlNHRnliVzl1ZVNCZ1pXZGhiR0FnY0hKdmNHOXpZV3hkS0doMGRIQnpPaTh2ZDJscmFTNWxZMjFoYzJOeWFYQjBMbTl5Wnk5a2IydDFMbkJvY0Q5cFpEMW9ZWEp0YjI1NU9tVm5ZV3dwTGx4dUlDQWdJR2xtSUNoaElEMDlQU0JpS1NCeVpYUjFjbTRnWVNBaFBUMGdNQ0I4ZkNBeElDOGdZU0E5UFQwZ01TQXZJR0k3WEc0Z0lDQWdMeThnWUc1MWJHeGdJRzl5SUdCMWJtUmxabWx1WldSZ0lHOXViSGtnWlhGMVlXd2dkRzhnYVhSelpXeG1JQ2h6ZEhKcFkzUWdZMjl0Y0dGeWFYTnZiaWt1WEc0Z0lDQWdhV1lnS0dFZ1BUMGdiblZzYkNCOGZDQmlJRDA5SUc1MWJHd3BJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdJQ0F2THlCZ1RtRk9ZSE1nWVhKbElHVnhkV2wyWVd4bGJuUXNJR0oxZENCdWIyNHRjbVZtYkdWNGFYWmxMbHh1SUNBZ0lHbG1JQ2hoSUNFOVBTQmhLU0J5WlhSMWNtNGdZaUFoUFQwZ1lqdGNiaUFnSUNBdkx5QkZlR2hoZFhOMElIQnlhVzFwZEdsMlpTQmphR1ZqYTNOY2JpQWdJQ0IyWVhJZ2RIbHdaU0E5SUhSNWNHVnZaaUJoTzF4dUlDQWdJR2xtSUNoMGVYQmxJQ0U5UFNBblpuVnVZM1JwYjI0bklDWW1JSFI1Y0dVZ0lUMDlJQ2R2WW1wbFkzUW5JQ1ltSUhSNWNHVnZaaUJpSUNFOUlDZHZZbXBsWTNRbktTQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdjbVYwZFhKdUlHUmxaWEJGY1NoaExDQmlMQ0JoVTNSaFkyc3NJR0pUZEdGamF5azdYRzRnSUgxY2JseHVJQ0F2THlCSmJuUmxjbTVoYkNCeVpXTjFjbk5wZG1VZ1kyOXRjR0Z5YVhOdmJpQm1kVzVqZEdsdmJpQm1iM0lnWUY4dWFYTkZjWFZoYkdBdVhHNGdJR1oxYm1OMGFXOXVJR1JsWlhCRmNTaGhMQ0JpTENCaFUzUmhZMnNzSUdKVGRHRmpheWtnZTF4dUlDQWdJQzh2SUZWdWQzSmhjQ0JoYm5rZ2QzSmhjSEJsWkNCdlltcGxZM1J6TGx4dUlDQWdJR2xtSUNoaElHbHVjM1JoYm1ObGIyWWdYeVF4S1NCaElEMGdZUzVmZDNKaGNIQmxaRHRjYmlBZ0lDQnBaaUFvWWlCcGJuTjBZVzVqWlc5bUlGOGtNU2tnWWlBOUlHSXVYM2R5WVhCd1pXUTdYRzRnSUNBZ0x5OGdRMjl0Y0dGeVpTQmdXMXREYkdGemMxMWRZQ0J1WVcxbGN5NWNiaUFnSUNCMllYSWdZMnhoYzNOT1lXMWxJRDBnZEc5VGRISnBibWN1WTJGc2JDaGhLVHRjYmlBZ0lDQnBaaUFvWTJ4aGMzTk9ZVzFsSUNFOVBTQjBiMU4wY21sdVp5NWpZV3hzS0dJcEtTQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdMeThnVjI5eWF5QmhjbTkxYm1RZ1lTQmlkV2NnYVc0Z1NVVWdNVEFnTFNCRlpHZGxJREV6TGx4dUlDQWdJR2xtSUNob1lYTlRkSEpwYm1kVVlXZENkV2NnSmlZZ1kyeGhjM05PWVcxbElEMDlJQ2RiYjJKcVpXTjBJRTlpYW1WamRGMG5JQ1ltSUdselJHRjBZVlpwWlhja01TaGhLU2tnZTF4dUlDQWdJQ0FnYVdZZ0tDRnBjMFJoZEdGV2FXVjNKREVvWWlrcElISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ0lDQWdJR05zWVhOelRtRnRaU0E5SUhSaFowUmhkR0ZXYVdWM08xeHVJQ0FnSUgxY2JpQWdJQ0J6ZDJsMFkyZ2dLR05zWVhOelRtRnRaU2tnZTF4dUlDQWdJQ0FnTHk4Z1ZHaGxjMlVnZEhsd1pYTWdZWEpsSUdOdmJYQmhjbVZrSUdKNUlIWmhiSFZsTGx4dUlDQWdJQ0FnWTJGelpTQW5XMjlpYW1WamRDQlNaV2RGZUhCZEp6cGNiaUFnSUNBZ0lDQWdMeThnVW1WblJYaHdjeUJoY21VZ1kyOWxjbU5sWkNCMGJ5QnpkSEpwYm1keklHWnZjaUJqYjIxd1lYSnBjMjl1SUNoT2IzUmxPaUFuSnlBcklDOWhMMmtnUFQwOUlDY3ZZUzlwSnlsY2JpQWdJQ0FnSUdOaGMyVWdKMXR2WW1wbFkzUWdVM1J5YVc1blhTYzZYRzRnSUNBZ0lDQWdJQzh2SUZCeWFXMXBkR2wyWlhNZ1lXNWtJSFJvWldseUlHTnZjbkpsYzNCdmJtUnBibWNnYjJKcVpXTjBJSGR5WVhCd1pYSnpJR0Z5WlNCbGNYVnBkbUZzWlc1ME95QjBhSFZ6TENCZ1hDSTFYQ0pnSUdselhHNGdJQ0FnSUNBZ0lDOHZJR1Z4ZFdsMllXeGxiblFnZEc4Z1lHNWxkeUJUZEhKcGJtY29YQ0kxWENJcFlDNWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlDY25JQ3NnWVNBOVBUMGdKeWNnS3lCaU8xeHVJQ0FnSUNBZ1kyRnpaU0FuVzI5aWFtVmpkQ0JPZFcxaVpYSmRKenBjYmlBZ0lDQWdJQ0FnTHk4Z1lFNWhUbUJ6SUdGeVpTQmxjWFZwZG1Gc1pXNTBMQ0JpZFhRZ2JtOXVMWEpsWm14bGVHbDJaUzVjYmlBZ0lDQWdJQ0FnTHk4Z1QySnFaV04wS0U1aFRpa2dhWE1nWlhGMWFYWmhiR1Z1ZENCMGJ5Qk9ZVTR1WEc0Z0lDQWdJQ0FnSUdsbUlDZ3JZU0FoUFQwZ0syRXBJSEpsZEhWeWJpQXJZaUFoUFQwZ0sySTdYRzRnSUNBZ0lDQWdJQzh2SUVGdUlHQmxaMkZzWUNCamIyMXdZWEpwYzI5dUlHbHpJSEJ
14938sY21admNtMWxaQ0JtYjNJZ2IzUm9aWElnYm5WdFpYSnBZeUIyWVd4MVpYTXVYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQXJZU0E5UFQwZ01DQS9JREVnTHlBcllTQTlQVDBnTVNBdklHSWdPaUFyWVNBOVBUMGdLMkk3WEc0Z0lDQWdJQ0JqWVhObElDZGJiMkpxWldOMElFUmhkR1ZkSnpwY2JpQWdJQ0FnSUdOaGMyVWdKMXR2WW1wbFkzUWdRbTl2YkdWaGJsMG5PbHh1SUNBZ0lDQWdJQ0F2THlCRGIyVnlZMlVnWkdGMFpYTWdZVzVrSUdKdmIyeGxZVzV6SUhSdklHNTFiV1Z5YVdNZ2NISnBiV2wwYVhabElIWmhiSFZsY3k0Z1JHRjBaWE1nWVhKbElHTnZiWEJoY21Wa0lHSjVJSFJvWldseVhHNGdJQ0FnSUNBZ0lDOHZJRzFwYkd4cGMyVmpiMjVrSUhKbGNISmxjMlZ1ZEdGMGFXOXVjeTRnVG05MFpTQjBhR0YwSUdsdWRtRnNhV1FnWkdGMFpYTWdkMmwwYUNCdGFXeHNhWE5sWTI5dVpDQnlaWEJ5WlhObGJuUmhkR2x2Ym5OY2JpQWdJQ0FnSUNBZ0x5OGdiMllnWUU1aFRtQWdZWEpsSUc1dmRDQmxjWFZwZG1Gc1pXNTBMbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdLMkVnUFQwOUlDdGlPMXh1SUNBZ0lDQWdZMkZ6WlNBblcyOWlhbVZqZENCVGVXMWliMnhkSnpwY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUZONWJXSnZiRkJ5YjNSdkxuWmhiSFZsVDJZdVkyRnNiQ2hoS1NBOVBUMGdVM2x0WW05c1VISnZkRzh1ZG1Gc2RXVlBaaTVqWVd4c0tHSXBPMXh1SUNBZ0lDQWdZMkZ6WlNBblcyOWlhbVZqZENCQmNuSmhlVUoxWm1abGNsMG5PbHh1SUNBZ0lDQWdZMkZ6WlNCMFlXZEVZWFJoVm1sbGR6cGNiaUFnSUNBZ0lDQWdMeThnUTI5bGNtTmxJSFJ2SUhSNWNHVmtJR0Z5Y21GNUlITnZJSGRsSUdOaGJpQm1ZV3hzSUhSb2NtOTFaMmd1WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJrWldWd1JYRW9kRzlDZFdabVpYSldhV1YzS0dFcExDQjBiMEoxWm1abGNsWnBaWGNvWWlrc0lHRlRkR0ZqYXl3Z1lsTjBZV05yS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IyWVhJZ1lYSmxRWEp5WVhseklEMGdZMnhoYzNOT1lXMWxJRDA5UFNBblcyOWlhbVZqZENCQmNuSmhlVjBuTzF4dUlDQWdJR2xtSUNnaFlYSmxRWEp5WVhseklDWW1JR2x6Vkhsd1pXUkJjbkpoZVNReEtHRXBLU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQmllWFJsVEdWdVozUm9JRDBnWjJWMFFubDBaVXhsYm1kMGFDaGhLVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHSjVkR1ZNWlc1bmRHZ2dJVDA5SUdkbGRFSjVkR1ZNWlc1bmRHZ29ZaWtwSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lDQWdhV1lnS0dFdVluVm1abVZ5SUQwOVBTQmlMbUoxWm1abGNpQW1KaUJoTG1KNWRHVlBabVp6WlhRZ1BUMDlJR0l1WW5sMFpVOW1abk5sZENrZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUNBZ0lDQWdJR0Z5WlVGeWNtRjVjeUE5SUhSeWRXVTdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDZ2hZWEpsUVhKeVlYbHpLU0I3WEc0Z0lDQWdJQ0JwWmlBb2RIbHdaVzltSUdFZ0lUMGdKMjlpYW1WamRDY2dmSHdnZEhsd1pXOW1JR0lnSVQwZ0oyOWlhbVZqZENjcElISmxkSFZ5YmlCbVlXeHpaVHRjYmx4dUlDQWdJQ0FnTHk4Z1QySnFaV04wY3lCM2FYUm9JR1JwWm1abGNtVnVkQ0JqYjI1emRISjFZM1J2Y25NZ1lYSmxJRzV2ZENCbGNYVnBkbUZzWlc1MExDQmlkWFFnWUU5aWFtVmpkR0J6SUc5eUlHQkJjbkpoZVdCelhHNGdJQ0FnSUNBdkx5Qm1jbTl0SUdScFptWmxjbVZ1ZENCbWNtRnRaWE1nWVhKbExseHVJQ0FnSUNBZ2RtRnlJR0ZEZEc5eUlEMGdZUzVqYjI1emRISjFZM1J2Y2l3Z1lrTjBiM0lnUFNCaUxtTnZibk4wY25WamRHOXlPMXh1SUNBZ0lDQWdhV1lnS0dGRGRHOXlJQ0U5UFNCaVEzUnZjaUFtSmlBaEtHbHpSblZ1WTNScGIyNGtNU2hoUTNSdmNpa2dKaVlnWVVOMGIzSWdhVzV6ZEdGdVkyVnZaaUJoUTNSdmNpQW1KbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbHpSblZ1WTNScGIyNGtNU2hpUTNSdmNpa2dKaVlnWWtOMGIzSWdhVzV6ZEdGdVkyVnZaaUJpUTNSdmNpbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKaVlnS0NkamIyNXpkSEoxWTNSdmNpY2dhVzRnWVNBbUppQW5ZMjl1YzNSeWRXTjBiM0luSUdsdUlHSXBLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnTHk4Z1FYTnpkVzFsSUdWeGRXRnNhWFI1SUdadmNpQmplV05zYVdNZ2MzUnlkV04wZFhKbGN5NGdWR2hsSUdGc1oyOXlhWFJvYlNCbWIzSWdaR1YwWldOMGFXNW5JR041WTJ4cFkxeHVJQ0FnSUM4dklITjBjblZqZEhWeVpYTWdhWE1nWVdSaGNIUmxaQ0JtY205dElFVlRJRFV1TVNCelpXTjBhVzl1SURFMUxqRXlMak1zSUdGaWMzUnlZV04wSUc5d1pYSmhkR2x2YmlCZ1NrOWdMbHh1WEc0Z0lDQWdMeThnU1c1cGRHbGhiR2w2YVc1bklITjBZV05ySUc5bUlIUnlZWFpsY25ObFpDQnZZbXBsWTNSekxseHVJQ0FnSUM4dklFbDBKM01nWkc5dVpTQm9aWEpsSUhOcGJtTmxJSGRsSUc5dWJIa2dibVZsWkNCMGFHVnRJR1p2Y2lCdlltcGxZM1J6SUdGdVpDQmhjbkpoZVhNZ1kyOXRjR0Z5YVhOdmJpNWNiaUFnSUNCaFUzUmhZMnNnUFNCaFUzUmhZMnNnZkh3Z1cxMDdYRzRnSUNBZ1lsTjBZV05ySUQwZ1lsTjBZV05ySUh4OElGdGRPMXh1SUNBZ0lIWmhjaUJzWlc1bmRHZ2dQU0JoVTNSaFkyc3ViR1Z1WjNSb08xeHVJQ0FnSUhkb2FXeGxJQ2hzWlc1bmRHZ3RMU2tnZTF4dUlDQWdJQ0FnTHk4Z1RHbHVaV0Z5SUhObFlYSmphQzRnVUdWeVptOXliV0Z1WTJVZ2FYTWdhVzUyWlhKelpXeDVJSEJ5YjNCdmNuUnBiMjVoYkNCMGJ5QjBhR1VnYm5WdFltVnlJRzltWEc0Z0lDQWdJQ0F2THlCMWJtbHhkV1VnYm1WemRHVmtJSE4wY25WamRIVnlaWE11WEc0Z0lDQWdJQ0JwWmlBb1lWTjBZV05yVzJ4bGJtZDBhRjBnUFQwOUlHRXBJSEpsZEhWeWJpQmlVM1JoWTJ0YmJHVnVaM1JvWFNBOVBUMGdZanRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJCWkdRZ2RHaGxJR1pwY25OMElHOWlhbVZqZENCMGJ5QjBhR1VnYzNSaFkyc2diMllnZEhKaGRtVnljMlZrSUc5aWFtVmpkSE11WEc0Z0lDQWdZVk4wWVdOckxuQjFjMmdvWVNrN1hHNGdJQ0FnWWxOMFlXTnJMbkIxYzJnb1lpazdYRzVjYmlBZ0lDQXZMeUJTWldOMWNuTnBkbVZzZVNCamIyMXdZWEpsSUc5aWFtVmpkSE1nWVc1a0lHRnljbUY1Y3k1Y2JpQWdJQ0JwWmlBb1lYSmxRWEp5WVhsektTQjdYRzRnSUNBZ0lDQXZMeUJEYjIxd1lYSmxJR0Z5Y21GNUlHeGxibWQwYUhNZ2RHOGdaR1YwWlhKdGFXNWxJR2xtSUdFZ1pHVmxjQ0JqYjIxd1lYSnBjMjl1SUdseklHNWxZMlZ6YzJGeWVTNWNiaUFnSUNBZ0lHeGxibWQwYUNBOUlHRXViR1Z1WjNSb08xeHVJQ0FnSUNBZ2FXWWdLR3hsYm1kMGFDQWhQVDBnWWk1c1pXNW5kR2dwSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lDOHZJRVJsWlhBZ1kyOX
14938RjR0Z5WlNCMGFHVWdZMjl1ZEdWdWRITXNJR2xuYm05eWFXNW5JRzV2YmkxdWRXMWxjbWxqSUhCeWIzQmxjblJwWlhNdVhHNGdJQ0FnSUNCM2FHbHNaU0FvYkdWdVozUm9MUzBwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0ZsY1NoaFcyeGxibWQwYUYwc0lHSmJiR1Z1WjNSb1hTd2dZVk4wWVdOckxDQmlVM1JoWTJzcEtTQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDOHZJRVJsWlhBZ1kyOXRjR0Z5WlNCdlltcGxZM1J6TGx4dUlDQWdJQ0FnZG1GeUlGOXJaWGx6SUQwZ2EyVjVjeWhoS1N3Z2EyVjVPMXh1SUNBZ0lDQWdiR1Z1WjNSb0lEMGdYMnRsZVhNdWJHVnVaM1JvTzF4dUlDQWdJQ0FnTHk4Z1JXNXpkWEpsSUhSb1lYUWdZbTkwYUNCdlltcGxZM1J6SUdOdmJuUmhhVzRnZEdobElITmhiV1VnYm5WdFltVnlJRzltSUhCeWIzQmxjblJwWlhNZ1ltVm1iM0psSUdOdmJYQmhjbWx1WnlCa1pXVndJR1Z4ZFdGc2FYUjVMbHh1SUNBZ0lDQWdhV1lnS0d0bGVYTW9ZaWt1YkdWdVozUm9JQ0U5UFNCc1pXNW5kR2dwSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lIZG9hV3hsSUNoc1pXNW5kR2d0TFNrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJFWldWd0lHTnZiWEJoY21VZ1pXRmphQ0J0WlcxaVpYSmNiaUFnSUNBZ0lDQWdhMlY1SUQwZ1gydGxlWE5iYkdWdVozUm9YVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRW9hR0Z6SkRFb1lpd2dhMlY1S1NBbUppQmxjU2hoVzJ0bGVWMHNJR0piYTJWNVhTd2dZVk4wWVdOckxDQmlVM1JoWTJzcEtTa2djbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQXZMeUJTWlcxdmRtVWdkR2hsSUdacGNuTjBJRzlpYW1WamRDQm1jbTl0SUhSb1pTQnpkR0ZqYXlCdlppQjBjbUYyWlhKelpXUWdiMkpxWldOMGN5NWNiaUFnSUNCaFUzUmhZMnN1Y0c5d0tDazdYRzRnSUNBZ1lsTjBZV05yTG5CdmNDZ3BPMXh1SUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNCOVhHNWNiaUFnTHk4Z1VHVnlabTl5YlNCaElHUmxaWEFnWTI5dGNHRnlhWE52YmlCMGJ5QmphR1ZqYXlCcFppQjBkMjhnYjJKcVpXTjBjeUJoY21VZ1pYRjFZV3d1WEc0Z0lHWjFibU4wYVc5dUlHbHpSWEYxWVd3b1lTd2dZaWtnZTF4dUlDQWdJSEpsZEhWeWJpQmxjU2hoTENCaUtUdGNiaUFnZlZ4dVhHNGdJQzh2SUZKbGRISnBaWFpsSUdGc2JDQjBhR1VnWlc1MWJXVnlZV0pzWlNCd2NtOXdaWEowZVNCdVlXMWxjeUJ2WmlCaGJpQnZZbXBsWTNRdVhHNGdJR1oxYm1OMGFXOXVJR0ZzYkV0bGVYTW9iMkpxS1NCN1hHNGdJQ0FnYVdZZ0tDRnBjMDlpYW1WamRDaHZZbW9wS1NCeVpYUjFjbTRnVzEwN1hHNGdJQ0FnZG1GeUlHdGxlWE1nUFNCYlhUdGNiaUFnSUNCbWIzSWdLSFpoY2lCclpYa2dhVzRnYjJKcUtTQnJaWGx6TG5CMWMyZ29hMlY1S1R0Y2JpQWdJQ0F2THlCQmFHVnRMQ0JKUlNBOElEa3VYRzRnSUNBZ2FXWWdLR2hoYzBWdWRXMUNkV2NwSUdOdmJHeGxZM1JPYjI1RmJuVnRVSEp2Y0hNb2IySnFMQ0JyWlhsektUdGNiaUFnSUNCeVpYUjFjbTRnYTJWNWN6dGNiaUFnZlZ4dVhHNGdJQzh2SUZOcGJtTmxJSFJvWlNCeVpXZDFiR0Z5SUdCUFltcGxZM1F1Y0hKdmRHOTBlWEJsTG5SdlUzUnlhVzVuWUNCMGVYQmxJSFJsYzNSeklHUnZiaWQwSUhkdmNtc2dabTl5WEc0Z0lDOHZJSE52YldVZ2RIbHdaWE1nYVc0Z1NVVWdNVEVzSUhkbElIVnpaU0JoSUdacGJtZGxjbkJ5YVc1MGFXNW5JR2hsZFhKcGMzUnBZeUJwYm5OMFpXRmtMQ0JpWVhObFpGeHVJQ0F2THlCdmJpQjBhR1VnYldWMGFHOWtjeTRnU1hRbmN5QnViM1FnWjNKbFlYUXNJR0oxZENCcGRDZHpJSFJvWlNCaVpYTjBJSGRsSUdkdmRDNWNiaUFnTHk4Z1ZHaGxJR1pwYm1kbGNuQnlhVzUwSUcxbGRHaHZaQ0JzYVhOMGN5QmhjbVVnWkdWbWFXNWxaQ0JpWld4dmR5NWNiaUFnWm5WdVkzUnBiMjRnYVdVeE1XWnBibWRsY25CeWFXNTBLRzFsZEdodlpITXBJSHRjYmlBZ0lDQjJZWElnYkdWdVozUm9JRDBnWjJWMFRHVnVaM1JvS0cxbGRHaHZaSE1wTzF4dUlDQWdJSEpsZEhWeWJpQm1kVzVqZEdsdmJpaHZZbW9wSUh0Y2JpQWdJQ0FnSUdsbUlDaHZZbW9nUFQwZ2JuVnNiQ2tnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUNBZ0x5OGdZRTFoY0dBc0lHQlhaV0ZyVFdGd1lDQmhibVFnWUZObGRHQWdhR0YyWlNCdWJ5QmxiblZ0WlhKaFlteGxJR3RsZVhNdVhHNGdJQ0FnSUNCMllYSWdhMlY1Y3lBOUlHRnNiRXRsZVhNb2IySnFLVHRjYmlBZ0lDQWdJR2xtSUNoblpYUk1aVzVuZEdnb2EyVjVjeWtwSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2diR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0ZwYzBaMWJtTjBhVzl1SkRFb2IySnFXMjFsZEdodlpITmJhVjFkS1NrZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdMeThnU1dZZ2QyVWdZWEpsSUhSbGMzUnBibWNnWVdkaGFXNXpkQ0JnVjJWaGEwMWhjR0FzSUhkbElHNWxaV1FnZEc4Z1pXNXpkWEpsSUhSb1lYUmNiaUFnSUNBZ0lDOHZJR0J2WW1wZ0lHUnZaWE51SjNRZ2FHRjJaU0JoSUdCbWIzSkZZV05vWUNCdFpYUm9iMlFnYVc0Z2IzSmtaWElnZEc4Z1pHbHpkR2x1WjNWcGMyaGNiaUFnSUNBZ0lDOHZJR2wwSUdaeWIyMGdZU0J5WldkMWJHRnlJR0JOWVhCZ0xseHVJQ0FnSUNBZ2NtVjBkWEp1SUcxbGRHaHZaSE1nSVQwOUlIZGxZV3ROWVhCTlpYUm9iMlJ6SUh4OElDRnBjMFoxYm1OMGFXOXVKREVvYjJKcVcyWnZja1ZoWTJoT1lXMWxYU2s3WEc0Z0lDQWdmVHRjYmlBZ2ZWeHVYRzRnSUM4dklFbHVJSFJvWlNCcGJuUmxjbVZ6ZENCdlppQmpiMjF3WVdOMElHMXBibWxtYVdOaGRHbHZiaXdnZDJVZ2QzSnBkR1ZjYmlBZ0x5OGdaV0ZqYUNCemRISnBibWNnYVc0Z2RHaGxJR1pwYm1kbGNuQnlhVzUwY3lCdmJteDVJRzl1WTJVdVhHNGdJSFpoY2lCbWIzSkZZV05vVG1GdFpTQTlJQ2RtYjNKRllXTm9KeXhjYmlBZ0lDQWdJR2hoYzA1aGJXVWdQU0FuYUdGekp5eGNiaUFnSUNBZ0lHTnZiVzF2YmtsdWFYUWdQU0JiSjJOc1pXRnlKeXdnSjJSbGJHVjBaU2RkTEZ4dUlDQWdJQ0FnYldGd1ZHRnBiQ0E5SUZzbloyVjBKeXdnYUdGelRtRnRaU3dnSjNObGRDZGRPMXh1WEc0Z0lDOHZJR0JOWVhCZ0xDQmdWMlZoYTAxaGNHQWdZVzVrSUdCVFpYUmdJR1ZoWTJnZ2FHRjJaU0J6YkdsbmFIUnNlU0JrYVdabVpYSmxiblJjYmlBZ0x5OGdZMjl0WW1sdVlYUnBiMjV6SUc5bUlIUm9aU0JoWW05MlpTQnpkV0pzYVhOMGN5NWNiaUFnZG1GeUlHMWhjRTFsZEdodlpITWdQU0JqYjIxdGIyNUpibWwwTG1OdmJtTmhkQ2htYjNKRllXTm9UbUZ0WlN3Z2JXRndWR0ZwYkNrc1hHNGdJQ0FnSUNCM1pXRnJUV0Z3VFdWMGFHOWtjeUE5SUdOdmJXMXZia2x1YVhRdVkyOXVZMkYwS0cxaGNGUmhhV3dwTEZ4dUlDQWdJQ0FnYzJWMFRXVjBhRzlrY3lBOUlGc25ZV1JrSjEwdVkyOXVZMkYwS0dOdmJXMXZia2x1YVhRc0lHWnZja1ZoWTJoT1lXMWxMQ0JvWVhOT1lXMWxLVHRjYmx4dUlDQjJZWElnYVhOTllYQWdQU0JwYzBsRk1URWdQeUJwWlRFeFptbHVaMlZ5Y0hKcGJuUW9iV0Z3VFdWMGFHOWtjeWtnT2lCMFlXZFVaWE4wWlhJb0owMWhjQ2NwTzF4dVhHNGdJSFpoY2lCcGMxZGxZV3ROWVhBZ1BTQnBjMGxGTVRFZ1B5QnBaVEV4Wm1sdVoyVnljSEpwYm5Rb2QyVmhhMDFoY0UxbGRHaHZaSE1wSURvZ2RHRm5WR1Z6ZEdWeUtDZFhaV0ZyVFdGd0p5azdYRzVjYmlBZ2RtRnlJR2x6VTJWMElEMGdhWE5KUlRFeElEOGdhV1V4TVdacGJtZGxjbkJ5YVc1MEtITmxkRTFsZEdodlpITXBJRG9nZEdGblZHVnpkR1Z5S0NkVFpYUW5LVHRjYmx4dUlDQjJZWElnYVhOWFpXRnJVMlYwSUQwZ2RHRm5WR1Z6ZEdWeUtDZFhaV0ZyVTJWMEp5azdYRzVjYmlBZ0x5OGdVbVYwY21sbGRtVWdkR2hsSUhaaGJIVmxjeUJ2WmlCaGJpQnZZbXBsWTNRbmN5QndjbTl3WlhKMGFXVnpMbHh1SUNCbWRXNWpkR2x2YmlCMllXeDFaWE1vYjJ
14938KcUtTQjdYRzRnSUNBZ2RtRnlJRjlyWlhseklEMGdhMlY1Y3lodlltb3BPMXh1SUNBZ0lIWmhjaUJzWlc1bmRHZ2dQU0JmYTJWNWN5NXNaVzVuZEdnN1hHNGdJQ0FnZG1GeUlIWmhiSFZsY3lBOUlFRnljbUY1S0d4bGJtZDBhQ2s3WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0JzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2RtRnNkV1Z6VzJsZElEMGdiMkpxVzE5clpYbHpXMmxkWFR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIWmhiSFZsY3p0Y2JpQWdmVnh1WEc0Z0lDOHZJRU52Ym5abGNuUWdZVzRnYjJKcVpXTjBJR2x1ZEc4Z1lTQnNhWE4wSUc5bUlHQmJhMlY1TENCMllXeDFaVjFnSUhCaGFYSnpMbHh1SUNBdkx5QlVhR1VnYjNCd2IzTnBkR1VnYjJZZ1lGOHViMkpxWldOMFlDQjNhWFJvSUc5dVpTQmhjbWQxYldWdWRDNWNiaUFnWm5WdVkzUnBiMjRnY0dGcGNuTW9iMkpxS1NCN1hHNGdJQ0FnZG1GeUlGOXJaWGx6SUQwZ2EyVjVjeWh2WW1vcE8xeHVJQ0FnSUhaaGNpQnNaVzVuZEdnZ1BTQmZhMlY1Y3k1c1pXNW5kR2c3WEc0Z0lDQWdkbUZ5SUhCaGFYSnpJRDBnUVhKeVlYa29iR1Z1WjNSb0tUdGNiaUFnSUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElHeGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0J3WVdseWMxdHBYU0E5SUZ0ZmEyVjVjMXRwWFN3Z2IySnFXMTlyWlhselcybGRYVjA3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCd1lXbHljenRjYmlBZ2ZWeHVYRzRnSUM4dklFbHVkbVZ5ZENCMGFHVWdhMlY1Y3lCaGJtUWdkbUZzZFdWeklHOW1JR0Z1SUc5aWFtVmpkQzRnVkdobElIWmhiSFZsY3lCdGRYTjBJR0psSUhObGNtbGhiR2w2WVdKc1pTNWNiaUFnWm5WdVkzUnBiMjRnYVc1MlpYSjBLRzlpYWlrZ2UxeHVJQ0FnSUhaaGNpQnlaWE4xYkhRZ1BTQjdmVHRjYmlBZ0lDQjJZWElnWDJ0bGVYTWdQU0JyWlhsektHOWlhaWs3WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBc0lHeGxibWQwYUNBOUlGOXJaWGx6TG14bGJtZDBhRHNnYVNBOElHeGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0J5WlhOMWJIUmJiMkpxVzE5clpYbHpXMmxkWFYwZ1BTQmZhMlY1YzF0cFhUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSEpsYzNWc2REdGNiaUFnZlZ4dVhHNGdJQzh2SUZKbGRIVnliaUJoSUhOdmNuUmxaQ0JzYVhOMElHOW1JSFJvWlNCbWRXNWpkR2x2YmlCdVlXMWxjeUJoZG1GcGJHRmliR1VnYjI0Z2RHaGxJRzlpYW1WamRDNWNiaUFnWm5WdVkzUnBiMjRnWm5WdVkzUnBiMjV6S0c5aWFpa2dlMXh1SUNBZ0lIWmhjaUJ1WVcxbGN5QTlJRnRkTzF4dUlDQWdJR1p2Y2lBb2RtRnlJR3RsZVNCcGJpQnZZbW9wSUh0Y2JpQWdJQ0FnSUdsbUlDaHBjMFoxYm1OMGFXOXVKREVvYjJKcVcydGxlVjBwS1NCdVlXMWxjeTV3ZFhOb0tHdGxlU2s3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCdVlXMWxjeTV6YjNKMEtDazdYRzRnSUgxY2JseHVJQ0F2THlCQmJpQnBiblJsY201aGJDQm1kVzVqZEdsdmJpQm1iM0lnWTNKbFlYUnBibWNnWVhOemFXZHVaWElnWm5WdVkzUnBiMjV6TGx4dUlDQm1kVzVqZEdsdmJpQmpjbVZoZEdWQmMzTnBaMjVsY2loclpYbHpSblZ1WXl3Z1pHVm1ZWFZzZEhNcElIdGNiaUFnSUNCeVpYUjFjbTRnWm5WdVkzUnBiMjRvYjJKcUtTQjdYRzRnSUNBZ0lDQjJZWElnYkdWdVozUm9JRDBnWVhKbmRXMWxiblJ6TG14bGJtZDBhRHRjYmlBZ0lDQWdJR2xtSUNoa1pXWmhkV3gwY3lrZ2IySnFJRDBnVDJKcVpXTjBLRzlpYWlrN1hHNGdJQ0FnSUNCcFppQW9iR1Z1WjNSb0lEd2dNaUI4ZkNCdlltb2dQVDBnYm5Wc2JDa2djbVYwZFhKdUlHOWlhanRjYmlBZ0lDQWdJR1p2Y2lBb2RtRnlJR2x1WkdWNElEMGdNVHNnYVc1a1pYZ2dQQ0JzWlc1bmRHZzdJR2x1WkdWNEt5c3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlITnZkWEpqWlNBOUlHRnlaM1Z0Wlc1MGMxdHBibVJsZUYwc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JyWlhseklEMGdhMlY1YzBaMWJtTW9jMjkxY21ObEtTeGNiaUFnSUNBZ0lDQWdJQ0FnSUd3Z1BTQnJaWGx6TG14bGJtZDBhRHRjYmlBZ0lDQWdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCc095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQjJZWElnYTJWNUlEMGdhMlY1YzF0cFhUdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb0lXUmxabUYxYkhSeklIeDhJRzlpYWx0clpYbGRJRDA5UFNCMmIybGtJREFwSUc5aWFsdHJaWGxkSUQwZ2MyOTFjbU5sVzJ0bGVWMDdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSEpsZEhWeWJpQnZZbW83WEc0Z0lDQWdmVHRjYmlBZ2ZWeHVYRzRnSUM4dklFVjRkR1Z1WkNCaElHZHBkbVZ1SUc5aWFtVmpkQ0IzYVhSb0lHRnNiQ0IwYUdVZ2NISnZjR1Z5ZEdsbGN5QnBiaUJ3WVhOelpXUXRhVzRnYjJKcVpXTjBLSE1wTGx4dUlDQjJZWElnWlhoMFpXNWtJRDBnWTNKbFlYUmxRWE56YVdkdVpYSW9ZV3hzUzJWNWN5azdYRzVjYmlBZ0x5OGdRWE56YVdkdWN5QmhJR2RwZG1WdUlHOWlhbVZqZENCM2FYUm9JR0ZzYkNCMGFHVWdiM2R1SUhCeWIzQmxjblJwWlhNZ2FXNGdkR2hsSUhCaGMzTmxaQzFwYmx4dUlDQXZMeUJ2WW1wbFkzUW9jeWt1WEc0Z0lDOHZJQ2hvZEhSd2N6b3ZMMlJsZG1Wc2IzQmxjaTV0YjNwcGJHeGhMbTl5Wnk5a2IyTnpMMWRsWWk5S1lYWmhVMk55YVhCMEwxSmxabVZ5Wlc1alpTOUhiRzlpWVd4ZlQySnFaV04wY3k5UFltcGxZM1F2WVhOemFXZHVLVnh1SUNCMllYSWdaWGgwWlc1a1QzZHVJRDBnWTNKbFlYUmxRWE56YVdkdVpYSW9hMlY1Y3lrN1hHNWNiaUFnTHk4Z1JtbHNiQ0JwYmlCaElHZHBkbVZ1SUc5aWFtVmpkQ0IzYVhSb0lHUmxabUYxYkhRZ2NISnZjR1Z5ZEdsbGN5NWNiaUFnZG1GeUlHUmxabUYxYkhSeklEMGdZM0psWVhSbFFYTnphV2R1WlhJb1lXeHNTMlY1Y3l3Z2RISjFaU2s3WEc1Y2JpQWdMeThnUTNKbFlYUmxJR0VnYm1GclpXUWdablZ1WTNScGIyNGdjbVZtWlhKbGJtTmxJR1p2Y2lCemRYSnliMmRoZEdVdGNISnZkRzkwZVhCbExYTjNZWEJ3YVc1bkxseHVJQ0JtZFc1amRHbHZiaUJqZEc5eUtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCbWRXNWpkR2x2YmlncGUzMDdYRzRnSUgxY2JseHVJQ0F2THlCQmJpQnBiblJsY201aGJDQm1kVzVqZEdsdmJpQm1iM0lnWTNKbFlYUnBibWNnWVNCdVpYY2diMkpxWldOMElIUm9ZWFFnYVc1b1pYSnBkSE1nWm5KdmJTQmhibTkwYUdWeUxseHVJQ0JtZFc1amRHbHZiaUJpWVhObFEzSmxZWFJsS0hCeWIzUnZkSGx3WlNrZ2UxeHVJQ0FnSUdsbUlDZ2hhWE5QWW1wbFkzUW9jSEp2ZEc5MGVYQmxLU2tnY21WMGRYSnVJSHQ5TzF4dUlDQWdJR2xtSUNodVlYUnBkbVZEY21WaGRHVXBJSEpsZEhWeWJpQnVZWFJwZG1WRGNtVmhkR1VvY0hKdmRHOTBlWEJsS1R0Y2JpQWdJQ0IyWVhJZ1EzUnZjaUE5SUdOMGIzSW9LVHRjYmlBZ0lDQkRkRzl5TG5CeWIzUnZkSGx3WlNBOUlIQnliM1J2ZEhsd1pUdGNiaUFnSUNCMllYSWdjbVZ6ZFd4MElEMGdibVYzSUVOMGIzSTdYRzRnSUNBZ1EzUnZjaTV3Y205MGIzUjVjR1VnUFNCdWRXeHNPMXh1SUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFE3WEc0Z0lIMWNibHh1SUNBdkx5QkRjbVZoZEdWeklHRnVJRzlpYW1WamRDQjBhR0YwSUdsdWFHVnlhWFJ6SUdaeWIyMGdkR2hsSUdkcGRtVnVJSEJ5YjNSdmRIbHdaU0J2WW1wbFkzUXVYRzRnSUM4dklFbG1JR0ZrWkdsMGFXOXVZV3dnY0hKdmNHVnlkR2xsY3lCaGNtVWdjSEp2ZG1sa1pXUWdkR2hsYmlCMGFHVjVJSGRwYkd3Z1ltVWdZV1JrWldRZ2RHOGdkR2hsWEc0Z0lDOHZJR0
1493855WldGMFpXUWdiMkpxWldOMExseHVJQ0JtZFc1amRHbHZiaUJqY21WaGRHVW9jSEp2ZEc5MGVYQmxMQ0J3Y205d2N5a2dlMXh1SUNBZ0lIWmhjaUJ5WlhOMWJIUWdQU0JpWVhObFEzSmxZWFJsS0hCeWIzUnZkSGx3WlNrN1hHNGdJQ0FnYVdZZ0tIQnliM0J6S1NCbGVIUmxibVJQZDI0b2NtVnpkV3gwTENCd2NtOXdjeWs3WEc0Z0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdmVnh1WEc0Z0lDOHZJRU55WldGMFpTQmhJQ2h6YUdGc2JHOTNMV05zYjI1bFpDa2daSFZ3YkdsallYUmxJRzltSUdGdUlHOWlhbVZqZEM1Y2JpQWdablZ1WTNScGIyNGdZMnh2Ym1Vb2IySnFLU0I3WEc0Z0lDQWdhV1lnS0NGcGMwOWlhbVZqZENodlltb3BLU0J5WlhSMWNtNGdiMkpxTzF4dUlDQWdJSEpsZEhWeWJpQnBjMEZ5Y21GNUtHOWlhaWtnUHlCdlltb3VjMnhwWTJVb0tTQTZJR1Y0ZEdWdVpDaDdmU3dnYjJKcUtUdGNiaUFnZlZ4dVhHNGdJQzh2SUVsdWRtOXJaWE1nWUdsdWRHVnlZMlZ3ZEc5eVlDQjNhWFJvSUhSb1pTQmdiMkpxWUNCaGJtUWdkR2hsYmlCeVpYUjFjbTV6SUdCdlltcGdMbHh1SUNBdkx5QlVhR1VnY0hKcGJXRnllU0J3ZFhKd2IzTmxJRzltSUhSb2FYTWdiV1YwYUc5a0lHbHpJSFJ2SUZ3aWRHRndJR2x1ZEc5Y0lpQmhJRzFsZEdodlpDQmphR0ZwYml3Z2FXNWNiaUFnTHk4Z2IzSmtaWElnZEc4Z2NHVnlabTl5YlNCdmNHVnlZWFJwYjI1eklHOXVJR2x1ZEdWeWJXVmthV0YwWlNCeVpYTjFiSFJ6SUhkcGRHaHBiaUIwYUdVZ1kyaGhhVzR1WEc0Z0lHWjFibU4wYVc5dUlIUmhjQ2h2WW1vc0lHbHVkR1Z5WTJWd2RHOXlLU0I3WEc0Z0lDQWdhVzUwWlhKalpYQjBiM0lvYjJKcUtUdGNiaUFnSUNCeVpYUjFjbTRnYjJKcU8xeHVJQ0I5WEc1Y2JpQWdMeThnVG05eWJXRnNhWHBsSUdFZ0tHUmxaWEFwSUhCeWIzQmxjblI1SUdCd1lYUm9ZQ0IwYnlCaGNuSmhlUzVjYmlBZ0x5OGdUR2xyWlNCZ1h5NXBkR1Z5WVhSbFpXQXNJSFJvYVhNZ1puVnVZM1JwYjI0Z1kyRnVJR0psSUdOMWMzUnZiV2w2WldRdVhHNGdJR1oxYm1OMGFXOXVJSFJ2VUdGMGFDUXhLSEJoZEdncElIdGNiaUFnSUNCeVpYUjFjbTRnYVhOQmNuSmhlU2h3WVhSb0tTQS9JSEJoZEdnZ09pQmJjR0YwYUYwN1hHNGdJSDFjYmlBZ1h5UXhMblJ2VUdGMGFDQTlJSFJ2VUdGMGFDUXhPMXh1WEc0Z0lDOHZJRWx1ZEdWeWJtRnNJSGR5WVhCd1pYSWdabTl5SUdCZkxuUnZVR0YwYUdBZ2RHOGdaVzVoWW14bElHMXBibWxtYVdOaGRHbHZiaTVjYmlBZ0x5OGdVMmx0YVd4aGNpQjBieUJnWTJKZ0lHWnZjaUJnWHk1cGRHVnlZWFJsWldBdVhHNGdJR1oxYm1OMGFXOXVJSFJ2VUdGMGFDaHdZWFJvS1NCN1hHNGdJQ0FnY21WMGRYSnVJRjhrTVM1MGIxQmhkR2dvY0dGMGFDazdYRzRnSUgxY2JseHVJQ0F2THlCSmJuUmxjbTVoYkNCbWRXNWpkR2x2YmlCMGJ5QnZZblJoYVc0Z1lTQnVaWE4wWldRZ2NISnZjR1Z5ZEhrZ2FXNGdZRzlpYW1BZ1lXeHZibWNnWUhCaGRHaGdMbHh1SUNCbWRXNWpkR2x2YmlCa1pXVndSMlYwS0c5aWFpd2djR0YwYUNrZ2UxeHVJQ0FnSUhaaGNpQnNaVzVuZEdnZ1BTQndZWFJvTG14bGJtZDBhRHRjYmlBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThJR3hsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCcFppQW9iMkpxSUQwOUlHNTFiR3dwSUhKbGRIVnliaUIyYjJsa0lEQTdYRzRnSUNBZ0lDQnZZbW9nUFNCdlltcGJjR0YwYUZ0cFhWMDdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJzWlc1bmRHZ2dQeUJ2WW1vZ09pQjJiMmxrSURBN1hHNGdJSDFjYmx4dUlDQXZMeUJIWlhRZ2RHaGxJSFpoYkhWbElHOW1JSFJvWlNBb1pHVmxjQ2tnY0hKdmNHVnlkSGtnYjI0Z1lIQmhkR2hnSUdaeWIyMGdZRzlpYW1WamRHQXVYRzRnSUM4dklFbG1JR0Z1ZVNCd2NtOXdaWEowZVNCcGJpQmdjR0YwYUdBZ1pHOWxjeUJ1YjNRZ1pYaHBjM1FnYjNJZ2FXWWdkR2hsSUhaaGJIVmxJR2x6WEc0Z0lDOHZJR0IxYm1SbFptbHVaV1JnTENCeVpYUjFjbTRnWUdSbFptRjFiSFJXWVd4MVpXQWdhVzV6ZEdWaFpDNWNiaUFnTHk4Z1ZHaGxJR0J3WVhSb1lDQnBjeUJ1YjNKdFlXeHBlbVZrSUhSb2NtOTFaMmdnWUY4dWRHOVFZWFJvWUM1Y2JpQWdablZ1WTNScGIyNGdaMlYwS0c5aWFtVmpkQ3dnY0dGMGFDd2daR1ZtWVhWc2RGWmhiSFZsS1NCN1hHNGdJQ0FnZG1GeUlIWmhiSFZsSUQwZ1pHVmxjRWRsZENodlltcGxZM1FzSUhSdlVHRjBhQ2h3WVhSb0tTazdYRzRnSUNBZ2NtVjBkWEp1SUdselZXNWtaV1pwYm1Wa0tIWmhiSFZsS1NBL0lHUmxabUYxYkhSV1lXeDFaU0E2SUhaaGJIVmxPMXh1SUNCOVhHNWNiaUFnTHk4Z1UyaHZjblJqZFhRZ1puVnVZM1JwYjI0Z1ptOXlJR05vWldOcmFXNW5JR2xtSUdGdUlHOWlhbVZqZENCb1lYTWdZU0JuYVhabGJpQndjbTl3WlhKMGVTQmthWEpsWTNSc2VTQnZibHh1SUNBdkx5QnBkSE5sYkdZZ0tHbHVJRzkwYUdWeUlIZHZjbVJ6TENCdWIzUWdiMjRnWVNCd2NtOTBiM1I1Y0dVcExpQlZibXhwYTJVZ2RHaGxJR2x1ZEdWeWJtRnNJR0JvWVhOZ1hHNGdJQzh2SUdaMWJtTjBhVzl1TENCMGFHbHpJSEIxWW14cFl5QjJaWEp6YVc5dUlHTmhiaUJoYkhOdklIUnlZWFpsY25ObElHNWxjM1JsWkNCd2NtOXdaWEowYVdWekxseHVJQ0JtZFc1amRHbHZiaUJvWVhNb2IySnFMQ0J3WVhSb0tTQjdYRzRnSUNBZ2NHRjBhQ0E5SUhSdlVHRjBhQ2h3WVhSb0tUdGNiaUFnSUNCMllYSWdiR1Z1WjNSb0lEMGdjR0YwYUM1c1pXNW5kR2c3WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0JzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2RtRnlJR3RsZVNBOUlIQmhkR2hiYVYwN1hHNGdJQ0FnSUNCcFppQW9JV2hoY3lReEtHOWlhaXdnYTJWNUtTa2djbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJQ0FnYjJKcUlEMGdiMkpxVzJ0bGVWMDdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUFoSVd4bGJtZDBhRHRjYmlBZ2ZWeHVYRzRnSUM4dklFdGxaWEFnZEdobElHbGtaVzUwYVhSNUlHWjFibU4wYVc5dUlHRnliM1Z1WkNCbWIzSWdaR1ZtWVhWc2RDQnBkR1Z5WVhSbFpYTXVYRzRnSUdaMWJtTjBhVzl1SUdsa1pXNTBhWFI1S0haaGJIVmxLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIWmhiSFZsTzF4dUlDQjlYRzVjYmlBZ0x5OGdVbVYwZFhKdWN5QmhJSEJ5WldScFkyRjBaU0JtYjNJZ1kyaGxZMnRwYm1jZ2QyaGxkR2hsY2lCaGJpQnZZbXBsWTNRZ2FHRnpJR0VnWjJsMlpXNGdjMlYwSUc5bVhHNGdJQzh2SUdCclpYazZkbUZzZFdWZ0lIQmhhWEp6TGx4dUlDQm1kVzVqZEdsdmJpQnRZWFJqYUdWeUtHRjBkSEp6S1NCN1hHNGdJQ0FnWVhSMGNuTWdQU0JsZUhSbGJtUlBkMjRvZTMwc0lHRjBkSEp6S1R0Y2JpQWdJQ0J5WlhSMWNtNGdablZ1WTNScGIyNG9iMkpxS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYVhOTllYUmphQ2h2WW1vc0lHRjBkSEp6S1R0Y2JpQWdJQ0I5TzF4dUlDQjlYRzVjYmlBZ0x5OGdRM0psWVhSbGN5QmhJR1oxYm1OMGFXOXVJSFJvWVhRc0lIZG9aVzRnY0dGemMyVmtJR0Z1SUc5aWFtVmpkQ3dnZDJsc2JDQjBjbUYyWlhKelpTQjBhR0YwSUc5aWFtVmpkT0tBbVhOY2JpQWdMeThnY0hKdmNHVnlkR2xsY3lCa2IzZHVJSFJvWlNCbmFYWmxiaUJnY0dGMGFHQXNJSE53WldOcFptbGxaQ0JoY3lCaGJpQmhjbkpoZVNCdlppQnJaWGx6SUc5eUlHbHVaR2xqWlhNdVhHNGdJR1oxYm1OMGFXOXVJSEJ5YjNCbGNuUjVLSEJoZEdncElIdGNiaUFnSUNCd1lYUm9JRDBnZEc5UVlYUm9LSEJoZEdncE8xeHVJQ0FnSUhKbGRIVnliaUJtZFc1amRHbHZiaWh2WW1vcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCa1pXVndSMlYwS0c5aWFpd2djR0YwYUNrN1hHNGdJQ0FnZlR0Y2JpQWdmVnh1WEc0Z0lDOHZJRWx1ZEdWeWJtRnNJR1oxYm1OMGFXOXVJSFJvWVhRZ2NtVjBkWEp1Y3lCaGJpQmxabVpwWTJsbGJuUWdLR1p2Y2lCamRYSnlaVzUwSUdWdVoybHVaWE1wSUhabGNuTnBiMjVjYmlBZ0x5OGdiMllnZEdobElIQmhjM05sWkMxcGJpQmpZV3hzWW1GamF5d2dkRzhnWW1VZ2NtVndaV0YwWldSc2VTQmhjSEJzYVdWa0lHbHVJRzkwYUdWeUlGVnVaR1Z5YzJOdmNtVmNiaUFnTHk4Z1puVnVZM1JwYjI1ekxseHVJQ0JtZFc1amRHbHZiaUJ2Y0hScGJXbDZaVU5pS0daMWJtTXNJR052Ym5SbGVIUXNJR0Z5WjBOdmRXNTBLU0I3WEc0Z0lDQWdhV1lnS0dOdmJuUmxlSFFnUFQwOUlIWnZhV1FnTUNrZ2NtVjBkWEp1SUdaMWJtTTdYRzRnSUNBZ2MzZHBkR05vSUNoaGNtZERiM1Z1ZENBOVBTQnVkV3hzSUQ4Z015QTZJR0Z5WjBOdmRXNTBLU0I3WEc0Z0lDQWdJQ0JqWVhObElERTZJSEpsZEhWeWJpQm1kVzVqZEdsdmJpaDJZV3gxWlNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1puVnVZeTVqWVd4c0tHTnZiblJsZUhRc0lIWmhiSFZsS1R0Y2JpQWdJQ0FnSUgwN1hHNGdJQ0FnSUNBdkx5QlVhR1VnTWkxaGNtZDFiV1Z1ZENCallYTmxJR2x6SUc5dGFYUjBaV1FnWW1WallYVnpaU0IzWmVLQW1YSmxJRzV2ZENCMWMybHVaeUJwZEM1Y2JpQWdJQ0FnSUdOaGMyVWdNem9nY21WMGRYSnVJR1oxYm1OMGFXOXVLSFpoYkhWbExDQnBibVJsZUN3Z1kyOXNiR1ZqZEdsdmJpa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdablZ1WXk1allXeHNLR052Ym5SbGVIUXNJSFpoYkhWbExDQnBibVJsZUN3Z1kyOXNiR1ZqZEdsdmJpazdYRzRnSUNBZ0lDQjlPMXh1SUNBZ0lDQWdZMkZ6WlNBME9pQnlaWFIxY200Z1puVnVZM1JwYjI0b1lXTmpkVzExYkdGMGIzSXNJSFpoYkhWbExDQnBibVJsZUN3Z1kyOXNiR1ZqZEdsdmJpa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdablZ1WXk1allXeHNLR052Ym5SbGVIUXNJR0ZqWTNWdGRXeGhkRzl5TENCMllXeDFaU3dnYVc1a1pYZ3NJR052Ykd4bFkzUnBiMjRwTzF4dUlDQWdJQ0FnZlR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHWjFibU11WVhCd2JIa29ZMjl1ZEdWNGRDd2dZWEpuZFcxbGJuUnpLVHRjYmlBZ0lDQjlPMXh1SUNCOVhHNWNiaUFnTHk4Z1FXNGdhVzUwWlhKdVlXd2dablZ1WTNScGIyNGdkRzhnWjJWdVpYSmhkR1VnWTJGc2JHSmhZMnR6SUhSb1lYUWdZMkZ1SUdKbElHRndjR3hwWldRZ2RHOGdaV0ZqYUZ4dUlDQXZMeUJsYkdWdFpXNTBJR2x1SUdFZ1kyOXNiR1ZqZEdsdmJpd2djbVYwZFhKdWFXNW5JSFJvWlNCa1pYTnBjbVZrSUhKbGMzVnNkQ0RpZ0pRZ1pXbDBhR1Z5SUdCZkxtbGtaVzUwYVhSNVlDeGNiaUFnTHk4Z1lXNGdZWEppYVhSeVlYSjVJR05oYkd4aVlXTnJMQ0JoSUhCeWIzQmxjblI1SUcxaGRHTm9aWElzSUc5eUlHRWdjSEp2Y0dWeWRIa2dZV05qWlhOemIzSXVYRzRnSUdaMWJtTjBhVzl1SUdKaGMyVkpkR1Z5WVhSbFpTaDJZV3gxWlN3Z1kyOXVkR1Y0ZEN3Z1lYSm5RMjkxYm5RcElIdGNiaUFnSUNCcFppQW9kbUZzZFdVZ1BUMGdiblZzYkNrZ2NtVjBkWEp1SUdsa1pXNTBhWFI1TzF4dUlDQWdJR2xtSUNocGMwWjFibU4wYVc5dUpERW9kbUZzZFdVcEtTQnlaWFIxY200Z2IzQjBhVzFwZW1WRFlpaDJZV3gxWlN3Z1kyOXVkR1Y0ZEN3Z1lYSm5RMjkxYm5RcE8xeHVJQ0FnSUdsbUlDaHBjMDlpYW1WamRDaDJZV3gxWlNrZ0ppWWdJV2x6UVhKeVlYa29kbUZzZFdVcEtTQnlaWFIxY200Z2JXRjBZMmhsY2loMllXeDFaU2s3WEc0Z0lDQWdjbVYwZFhKdUlIQnliM0JsY25SNUtIWmhiSFZsS1R0Y2JpQWdmVnh1WEc0Z0lDOHZJRVY0ZEdWeWJtRnNJSGR5WVhCd1pYSWdabTl5SUc5MWNpQmpZV3hzWW1GamF5Qm5aVzVsY21GMGIzSXVJRlZ6WlhKeklHMWhlU0JqZFhOMGIyMXBlbVZjYmlBZ0x5OGdZRjh1YVhSbGNtRjBaV1ZnSUdsbUlIUm9aWGtnZDJGdWRDQmhaR1JwZEdsdmJtRnNJSEJ5WldScFkyRjBaUzlwZEdWeVlYUmxaU0J6YUc5eWRHaGhibVFnYzNSNWJHVnpMbHh1SUNBdkx5QlVhR2x6SUdGaWMzUnlZV04wYVc5dUlHaHBaR1Z6SUhSb1pTQnBiblJsY201aGJDMXZibXg1SUdCaGNtZERiM1Z1ZEdBZ1lYSm5kVzFsYm5RdVhHNGdJR1oxYm1OMGFXOXVJR2wwWlhKaGRHVmxLSFpoYkhWbExDQmpiMjUwWlhoMEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdKaGMyVkpkR1Z5WVhSbFpTaDJZV3gxWlN3Z1kyOXVkR1Y0ZEN3Z1NXNW1hVzVwZEhrcE8xeHVJQ0I5WEc0Z0lGOGtNUzVwZEdWeVlYUmxaU0E5SUdsMFpYSmhkR1ZsTzF4dVhHNGdJQzh2SUZSb1pTQm1kVzVqZEdsdmJpQjNaU0JqWVd4c0lHbHVkR1Z5Ym1Gc2JIa2dkRzhnWjJWdVpYSmhkR1VnWVNCallXeHNZbUZqYXk0Z1NYUWdhVzUyYjJ0bGMxeHVJQ0F2THlCZ1h5NXBkR1Z5WVhSbFpXQWdhV1lnYjNabGNuSnBaR1JsYml3Z2IzUm9aWEozYVhObElHQmlZWE5sU1hSbGNtRjBaV1ZnTGx4dUlDQm1kVzVqZEdsdmJpQmpZaWgyWVd4MVpTd2dZMjl1ZEdWNGRDd2dZWEpuUTI5MWJuUXBJSHRjYmlBZ0lDQnBaaUFvWHlReExtbDBaWEpoZEdWbElDRTlQU0JwZEdWeVlYUmxaU2tnY21WMGRYSnVJRjhrTVM1cGRHVnlZWFJsWlNoMllXeDFaU3dnWTI5dWRHVjRkQ2s3WEc0Z0lDQWdjbVYwZFhKdUlHSmhjMlZKZEdWeVlYUmxaU2gyW
14938Vd4MVpTd2dZMjl1ZEdWNGRDd2dZWEpuUTI5MWJuUXBPMXh1SUNCOVhHNWNiaUFnTHk4Z1VtVjBkWEp1Y3lCMGFHVWdjbVZ6ZFd4MGN5QnZaaUJoY0hCc2VXbHVaeUIwYUdVZ1lHbDBaWEpoZEdWbFlDQjBieUJsWVdOb0lHVnNaVzFsYm5RZ2IyWWdZRzlpYW1BdVhHNGdJQzh2SUVsdUlHTnZiblJ5WVhOMElIUnZJR0JmTG0xaGNHQWdhWFFnY21WMGRYSnVjeUJoYmlCdlltcGxZM1F1WEc0Z0lHWjFibU4wYVc5dUlHMWhjRTlpYW1WamRDaHZZbW9zSUdsMFpYSmhkR1ZsTENCamIyNTBaWGgwS1NCN1hHNGdJQ0FnYVhSbGNtRjBaV1VnUFNCallpaHBkR1Z5WVhSbFpTd2dZMjl1ZEdWNGRDazdYRzRnSUNBZ2RtRnlJRjlyWlhseklEMGdhMlY1Y3lodlltb3BMRnh1SUNBZ0lDQWdJQ0JzWlc1bmRHZ2dQU0JmYTJWNWN5NXNaVzVuZEdnc1hHNGdJQ0FnSUNBZ0lISmxjM1ZzZEhNZ1BTQjdmVHRjYmlBZ0lDQm1iM0lnS0haaGNpQnBibVJsZUNBOUlEQTdJR2x1WkdWNElEd2diR1Z1WjNSb095QnBibVJsZUNzcktTQjdYRzRnSUNBZ0lDQjJZWElnWTNWeWNtVnVkRXRsZVNBOUlGOXJaWGx6VzJsdVpHVjRYVHRjYmlBZ0lDQWdJSEpsYzNWc2RITmJZM1Z5Y21WdWRFdGxlVjBnUFNCcGRHVnlZWFJsWlNodlltcGJZM1Z5Y21WdWRFdGxlVjBzSUdOMWNuSmxiblJMWlhrc0lHOWlhaWs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFJ6TzF4dUlDQjlYRzVjYmlBZ0x5OGdVSEpsWkdsallYUmxMV2RsYm1WeVlYUnBibWNnWm5WdVkzUnBiMjR1SUU5bWRHVnVJSFZ6WldaMWJDQnZkWFJ6YVdSbElHOW1JRlZ1WkdWeWMyTnZjbVV1WEc0Z0lHWjFibU4wYVc5dUlHNXZiM0FvS1h0OVhHNWNiaUFnTHk4Z1IyVnVaWEpoZEdWeklHRWdablZ1WTNScGIyNGdabTl5SUdFZ1oybDJaVzRnYjJKcVpXTjBJSFJvWVhRZ2NtVjBkWEp1Y3lCaElHZHBkbVZ1SUhCeWIzQmxjblI1TGx4dUlDQm1kVzVqZEdsdmJpQndjbTl3WlhKMGVVOW1LRzlpYWlrZ2UxeHVJQ0FnSUdsbUlDaHZZbW9nUFQwZ2JuVnNiQ2tnY21WMGRYSnVJRzV2YjNBN1hHNGdJQ0FnY21WMGRYSnVJR1oxYm1OMGFXOXVLSEJoZEdncElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCblpYUW9iMkpxTENCd1lYUm9LVHRjYmlBZ0lDQjlPMXh1SUNCOVhHNWNiaUFnTHk4Z1VuVnVJR0VnWm5WdVkzUnBiMjRnS2lwdUtpb2dkR2x0WlhNdVhHNGdJR1oxYm1OMGFXOXVJSFJwYldWektHNHNJR2wwWlhKaGRHVmxMQ0JqYjI1MFpYaDBLU0I3WEc0Z0lDQWdkbUZ5SUdGalkzVnRJRDBnUVhKeVlYa29UV0YwYUM1dFlYZ29NQ3dnYmlrcE8xeHVJQ0FnSUdsMFpYSmhkR1ZsSUQwZ2IzQjBhVzFwZW1WRFlpaHBkR1Z5WVhSbFpTd2dZMjl1ZEdWNGRDd2dNU2s3WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0J1T3lCcEt5c3BJR0ZqWTNWdFcybGRJRDBnYVhSbGNtRjBaV1VvYVNrN1hHNGdJQ0FnY21WMGRYSnVJR0ZqWTNWdE8xeHVJQ0I5WEc1Y2JpQWdMeThnVW1WMGRYSnVJR0VnY21GdVpHOXRJR2x1ZEdWblpYSWdZbVYwZDJWbGJpQmdiV2x1WUNCaGJtUWdZRzFoZUdBZ0tHbHVZMngxYzJsMlpTa3VYRzRnSUdaMWJtTjBhVzl1SUhKaGJtUnZiU2h0YVc0c0lHMWhlQ2tnZTF4dUlDQWdJR2xtSUNodFlYZ2dQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdiV0Y0SUQwZ2JXbHVPMXh1SUNBZ0lDQWdiV2x1SUQwZ01EdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJRzFwYmlBcklFMWhkR2d1Wm14dmIzSW9UV0YwYUM1eVlXNWtiMjBvS1NBcUlDaHRZWGdnTFNCdGFXNGdLeUF4S1NrN1hHNGdJSDFjYmx4dUlDQXZMeUJCSUNod2IzTnphV0pzZVNCbVlYTjBaWElwSUhkaGVTQjBieUJuWlhRZ2RHaGxJR04xY25KbGJuUWdkR2x0WlhOMFlXMXdJR0Z6SUdGdUlHbHVkR1ZuWlhJdVhHNGdJSFpoY2lCdWIzY2dQU0JFWVhSbExtNXZkeUI4ZkNCbWRXNWpkR2x2YmlncElIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lFUmhkR1VvS1M1blpYUlVhVzFsS0NrN1hHNGdJSDA3WEc1Y2JpQWdMeThnU1c1MFpYSnVZV3dnYUdWc2NHVnlJSFJ2SUdkbGJtVnlZWFJsSUdaMWJtTjBhVzl1Y3lCbWIzSWdaWE5qWVhCcGJtY2dZVzVrSUhWdVpYTmpZWEJwYm1jZ2MzUnlhVzVuYzF4dUlDQXZMeUIwYnk5bWNtOXRJRWhVVFV3Z2FXNTBaWEp3YjJ4aGRHbHZiaTVjYmlBZ1puVnVZM1JwYjI0Z1kzSmxZWFJsUlhOallYQmxjaWh0WVhBcElIdGNiaUFnSUNCMllYSWdaWE5qWVhCbGNpQTlJR1oxYm1OMGFXOXVLRzFoZEdOb0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2JXRndXMjFoZEdOb1hUdGNiaUFnSUNCOU8xeHVJQ0FnSUM4dklGSmxaMlY0WlhNZ1ptOXlJR2xrWlc1MGFXWjVhVzVuSUdFZ2EyVjVJSFJvWVhRZ2JtVmxaSE1nZEc4Z1ltVWdaWE5qWVhCbFpDNWNiaUFnSUNCMllYSWdjMjkxY21ObElEMGdKeWcvT2ljZ0t5QnJaWGx6S0cxaGNDa3VhbTlwYmlnbmZDY3BJQ3NnSnlrbk8xeHVJQ0FnSUhaaGNpQjBaWE4wVW1WblpYaHdJRDBnVW1WblJYaHdLSE52ZFhKalpTazdYRzRnSUNBZ2RtRnlJSEpsY0d4aFkyVlNaV2RsZUhBZ1BTQlNaV2RGZUhBb2MyOTFjbU5sTENBblp5Y3BPMXh1SUNBZ0lISmxkSFZ5YmlCbWRXNWpkR2x2YmloemRISnBibWNwSUh0Y2JpQWdJQ0FnSUhOMGNtbHVaeUE5SUhOMGNtbHVaeUE5UFNCdWRXeHNJRDhnSnljZ09pQW5KeUFySUhOMGNtbHVaenRjYmlBZ0lDQWdJSEpsZEhWeWJpQjBaWE4wVW1WblpYaHdMblJsYzNRb2MzUnlhVzVuS1NBL0lITjBjbWx1Wnk1eVpYQnNZV05sS0hKbGNHeGhZMlZTWldkbGVIQXNJR1Z6WTJGd1pYSXBJRG9nYzNSeWFXNW5PMXh1SUNBZ0lIMDdYRzRnSUgxY2JseHVJQ0F2THlCSmJuUmxjbTVoYkNCc2FYTjBJRzltSUVoVVRVd2daVzUwYVhScFpYTWdabTl5SUdWelkyRndhVzVuTGx4dUlDQjJZWElnWlhOallYQmxUV0Z3SUQwZ2UxeHVJQ0FnSUNjbUp6b2dKeVpoYlhBN0p5eGNiaUFnSUNBblBDYzZJQ2NtYkhRN0p5eGNiaUFnSUNBblBpYzZJQ2NtWjNRN0p5eGNiaUFnSUNBblhDSW5PaUFuSm5GMWIzUTdKeXhjYmlBZ0lDQmNJaWRjSWpvZ0p5WWplREkzT3ljc1hHNGdJQ0FnSjJBbk9pQW5KaU40TmpBN0oxeHVJQ0I5TzF4dVhHNGdJQzh2SUVaMWJtTjBhVzl1SUdadmNpQmxjMk5oY0dsdVp5QnpkSEpwYm1keklIUnZJRWhVVFV3Z2FXNTBaWEp3YjJ4aGRHbHZiaTVjYmlBZ2RtRnlJRjlsYzJOaGNHVWdQU0JqY21WaGRHVkZjMk5oY0dWeUtHVnpZMkZ3WlUxaGNDazdYRzVjYmlBZ0x5OGdTVzUwWlhKdVlXd2diR2x6ZENCdlppQklWRTFNSUdWdWRHbDBhV1Z6SUdadmNpQjFibVZ6WTJGd2FXNW5MbHh1SUNCMllYSWdkVzVsYzJOaGNHVk5ZWEFnUFNCcGJuWmxjblFvWlhOallYQmxUV0Z3S1R0Y2JseHVJQ0F2THlCR2RXNWpkR2x2YmlCbWIzSWdkVzVsYzJOaGNHbHVaeUJ6ZEhKcGJtZHpJR1p5YjIwZ1NGUk5UQ0JwYm5SbGNuQnZiR0YwYVc5dUxseHVJQ0IyWVhJZ1gzVnVaWE5qWVhCbElEMGdZM0
14938psWVhSbFJYTmpZWEJsY2loMWJtVnpZMkZ3WlUxaGNDazdYRzVjYmlBZ0x5OGdRbmtnWkdWbVlYVnNkQ3dnVlc1a1pYSnpZMjl5WlNCMWMyVnpJRVZTUWkxemRIbHNaU0IwWlcxd2JHRjBaU0JrWld4cGJXbDBaWEp6TGlCRGFHRnVaMlVnZEdobFhHNGdJQzh2SUdadmJHeHZkMmx1WnlCMFpXMXdiR0YwWlNCelpYUjBhVzVuY3lCMGJ5QjFjMlVnWVd4MFpYSnVZWFJwZG1VZ1pHVnNhVzFwZEdWeWN5NWNiaUFnZG1GeUlIUmxiWEJzWVhSbFUyVjBkR2x1WjNNZ1BTQmZKREV1ZEdWdGNHeGhkR1ZUWlhSMGFXNW5jeUE5SUh0Y2JpQWdJQ0JsZG1Gc2RXRjBaVG9nTHp3bEtGdGNYSE5jWEZOZEt6OHBKVDR2Wnl4Y2JpQWdJQ0JwYm5SbGNuQnZiR0YwWlRvZ0x6d2xQU2hiWEZ4elhGeFRYU3MvS1NVK0wyY3NYRzRnSUNBZ1pYTmpZWEJsT2lBdlBDVXRLRnRjWEhOY1hGTmRLejhwSlQ0dloxeHVJQ0I5TzF4dVhHNGdJQzh2SUZkb1pXNGdZM1Z6ZEc5dGFYcHBibWNnWUY4dWRHVnRjR3hoZEdWVFpYUjBhVzVuYzJBc0lHbG1JSGx2ZFNCa2IyNG5kQ0IzWVc1MElIUnZJR1JsWm1sdVpTQmhibHh1SUNBdkx5QnBiblJsY25CdmJHRjBhVzl1TENCbGRtRnNkV0YwYVc5dUlHOXlJR1Z6WTJGd2FXNW5JSEpsWjJWNExDQjNaU0J1WldWa0lHOXVaU0IwYUdGMElHbHpYRzRnSUM4dklHZDFZWEpoYm5SbFpXUWdibTkwSUhSdklHMWhkR05vTGx4dUlDQjJZWElnYm05TllYUmphQ0E5SUM4b0xpbGVMenRjYmx4dUlDQXZMeUJEWlhKMFlXbHVJR05vWVhKaFkzUmxjbk1nYm1WbFpDQjBieUJpWlNCbGMyTmhjR1ZrSUhOdklIUm9ZWFFnZEdobGVTQmpZVzRnWW1VZ2NIVjBJR2x1ZEc4Z1lWeHVJQ0F2THlCemRISnBibWNnYkdsMFpYSmhiQzVjYmlBZ2RtRnlJR1Z6WTJGd1pYTWdQU0I3WEc0Z0lDQWdYQ0luWENJNklGd2lKMXdpTEZ4dUlDQWdJQ2RjWEZ4Y0p6b2dKMXhjWEZ3bkxGeHVJQ0FnSUNkY1hISW5PaUFuY2ljc1hHNGdJQ0FnSjF4Y2JpYzZJQ2R1Snl4Y2JpQWdJQ0FuWEZ4MU1qQXlPQ2M2SUNkMU1qQXlPQ2NzWEc0Z0lDQWdKMXhjZFRJd01qa25PaUFuZFRJd01qa25YRzRnSUgwN1hHNWNiaUFnZG1GeUlHVnpZMkZ3WlZKbFowVjRjQ0E5SUM5Y1hGeGNmQ2Q4WEZ4eWZGeGNibnhjWEhVeU1ESTRmRnhjZFRJd01qa3ZaenRjYmx4dUlDQm1kVzVqZEdsdmJpQmxjMk5oY0dWRGFHRnlLRzFoZEdOb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUNkY1hGeGNKeUFySUdWelkyRndaWE5iYldGMFkyaGRPMXh1SUNCOVhHNWNiaUFnTHk4Z1NXNGdiM0prWlhJZ2RHOGdjSEpsZG1WdWRDQjBhR2x5WkMxd1lYSjBlU0JqYjJSbElHbHVhbVZqZEdsdmJpQjBhSEp2ZFdkb1hHNGdJQzh2SUdCZkxuUmxiWEJzWVhSbFUyVjBkR2x1WjNNdWRtRnlhV0ZpYkdWZ0xDQjNaU0IwWlhOMElHbDBJR0ZuWVdsdWMzUWdkR2hsSUdadmJHeHZkMmx1WnlCeVpXZDFiR0Z5WEc0Z0lDOHZJR1Y0Y0hKbGMzTnBiMjR1SUVsMElHbHpJR2x1ZEdWdWRHbHZibUZzYkhrZ1lTQmlhWFFnYlc5eVpTQnNhV0psY21Gc0lIUm9ZVzRnYW5WemRDQnRZWFJqYUdsdVp5QjJZV3hwWkZ4dUlDQXZMeUJwWkdWdWRHbG1hV1Z5Y3l3Z1luVjBJSE4wYVd4c0lIQnlaWFpsYm5SeklIQnZjM05wWW14bElHeHZiM0JvYjJ4bGN5QjBhSEp2ZFdkb0lHUmxabUYxYkhSeklHOXlYRzRnSUM4dklHUmxjM1J5ZFdOMGRYSnBibWNnWVhOemFXZHViV1Z1ZEM1Y2JpQWdkbUZ5SUdKaGNtVkpaR1Z1ZEdsbWFXVnlJRDBnTDE1Y1hITXFLRnhjZDN4Y1hDUXBLMXhjY3lva0x6dGNibHh1SUNBdkx5QktZWFpoVTJOeWFYQjBJRzFwWTNKdkxYUmxiWEJzWVhScGJtY3NJSE5wYldsc1lYSWdkRzhnU205b2JpQlNaWE5wWnlkeklHbHRjR3hsYldWdWRHRjBhVzl1TGx4dUlDQXZMeUJWYm1SbGNuTmpiM0psSUhSbGJYQnNZWFJwYm1jZ2FHRnVaR3hsY3lCaGNtSnBkSEpoY25rZ1pHVnNhVzFwZEdWeWN5d2djSEpsYzJWeWRtVnpJSGRvYVhSbGMzQmhZMlVzWEc0Z0lDOHZJR0Z1WkNCamIzSnlaV04wYkhrZ1pYTmpZWEJsY3lCeGRXOTBaWE1nZDJsMGFHbHVJR2x1ZEdWeWNHOXNZWFJsWkNCamIyUmxMbHh1SUNBdkx5Qk9Ram9nWUc5c1pGTmxkSFJwYm1kellDQnZibXg1SUdWNGFYTjBjeUJtYjNJZ1ltRmphM2RoY21SeklHTnZiWEJoZEdsaWFXeHBkSGt1WEc0Z0lHWjFibU4wYVc5dUlIUmxiWEJzWVhSbEtIUmxlSFFzSUhObGRIUnBibWR6TENCdmJHUlRaWFIwYVc1bmN5a2dlMXh1SUNBZ0lHbG1JQ2doYzJWMGRHbHVaM01nSmlZZ2IyeGtVMlYwZEdsdVozTXBJSE5sZEhScGJtZHpJRDBnYjJ4a1UyVjBkR2x1WjNNN1hHNGdJQ0FnYzJWMGRHbHVaM01nUFNCa1pXWmhkV3gwY3loN2ZTd2djMlYwZEdsdVozTXNJRjhrTVM1MFpXMXdiR0YwWlZObGRIUnBibWR6S1R0Y2JseHVJQ0FnSUM4dklFTnZiV0pwYm1VZ1pHVnNhVzFwZEdWeWN5QnBiblJ2SUc5dVpTQnlaV2QxYkdGeUlHVjRjSEpsYzNOcGIyNGdkbWxoSUdGc2RHVnlibUYwYVc5dUxseHVJQ0FnSUhaaGNpQnRZWFJqYUdWeUlEMGdVbVZuUlhod0tGdGNiaUFnSUNBZ0lDaHpaWFIwYVc1bmN5NWxjMk5oY0dVZ2ZId2dibTlOWVhSamFDa3VjMjkxY21ObExGeHVJQ0FnSUNBZ0tITmxkSFJwYm1kekxtbHVkR1Z5Y0c5c1lYUmxJSHg4SUc1dlRXRjBZMmdwTG5OdmRYSmpaU3hjYmlBZ0lDQWdJQ2h6WlhSMGFXNW5jeTVsZG1Gc2RXRjBaU0I4ZkNCdWIwMWhkR05vS1M1emIzVnlZMlZjYmlBZ0lDQmRMbXB2YVc0b0ozd25LU0FySUNkOEpDY3NJQ2RuSnlrN1hHNWNiaUFnSUNBdkx5QkRiMjF3YVd4bElIUm9aU0IwWlcxd2JHRjBaU0J6YjNWeVkyVXNJR1Z6WTJGd2FXNW5JSE4wY21sdVp5QnNhWFJsY21Gc2N5QmhjSEJ5YjNCeWFXRjBaV3g1TGx4dUlDQWdJSFpoY2lCcGJtUmxlQ0E5SURBN1hHNGdJQ0FnZG1GeUlITnZkWEpqWlNBOUlGd2lYMTl3S3owblhDSTdYRzRnSUNBZ2RHVjRkQzV5WlhCc1lXTmxLRzFoZEdOb1pYSXNJR1oxYm1OMGFXOXVLRzFoZEdOb0xDQmxjMk5oY0dVc0lHbHVkR1Z5Y0c5c1lYUmxMQ0JsZG1Gc2RXRjBaU3dnYjJabWMyVjBLU0I3WEc0Z0lDQWdJQ0J6YjNWeVkyVWdLejBnZEdWNGRDNXpiR2xqWlNocGJtUmxlQ3dnYjJabWMyVjBLUzV5WlhCc1lXTmxLR1Z6WTJGd1pWSmxaMFY0Y0N3Z1pYTmpZWEJsUTJoaGNpazdYRzRnSUNBZ0lDQnBibVJsZUNBOUlHOW1abk5sZENBcklHMWhkR05vTG14bGJtZDBhRHRjYmx4dUlDQWdJQ0FnYVdZZ0tHVnpZMkZ3WlNrZ2UxeHVJQ0FnSUNBZ0lDQnpiM1Z5WTJVZ0t6MGdYQ0luSzF4Y2JpZ29YMTkwUFNoY0lpQXJJR1Z6WTJGd1pTQXJJRndpS1NrOVBXNTFiR3cvSnljNlh5NWxjMk5oY0dVb1gxOTBLU2tyWEZ4dUoxd2lPMXh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2hwYm5SbGNuQnZiR0YwWlNrZ2UxeHVJQ0FnSUNBZ0lDQnpiM1Z5WTJVZ0t6MGdYQ0luSzF4Y2JpZ29YMTkwUFNoY0lpQXJJR2x1ZEdWeWNHOXNZWFJsSUNzZ1hDSXBLVDA5Ym5Wc2JEOG5KenBmWDNRcEsxeGNiaWRjSWp0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb1pYWmhiSFZoZEdVcElIdGNiaUFnSUNBZ0lDQWdjMjkxY21ObElDczlJRndpSnp0Y1hHNWNJaUFySUdWMllXeDFZWFJsSUNzZ1hDSmNYRzVmWDNBclBTZGNJanRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnTHk4Z1FXUnZZbVVnVmsxeklHNWxaV1FnZEdobElHMWhkR05vSUhKbGRIVnlibVZrSUhSdklIQnliMlIxWTJVZ2RHaGxJR052Y25KbFkzUWdiMlptYzJWMExseHVJQ0FnSUNBZ2NtVjBkWEp1SUcxaGRHTm9PMXh1SUNBZ0lIMHBPMXh1SUNBZ0lITnZkWEpqWlNBclBTQmNJaWM3WEZ4dVhDSTdYRzVjYmlBZ0lDQjJZWElnWVhKbmRXMWxiblFnUFNCelpYUjBhVzVuY3k1MllYSnBZV0pzWlR0Y2JpQWdJQ0JwWmlBb1lYSm5kVzFsYm5RcElIdGNiaUFnSUNBZ0lDOHZJRWx1YzNWeVpTQmhaMkZwYm5OMElIUm9hWEprTFhCaGNuUjVJR052WkdVZ2FXNXFaV04wYVc5dUxpQW9RMVpGTFRJd01qRXRNak16TlRncFhHNGdJQ0FnSUNCcFppQW9JV0poY21WSlpHVnVkR2xtYVdWeUxuUmxjM1FvWVhKbmRXMWxiblFwS1NCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUNkMllYSnBZV0pzWlNCcGN5QnViM1FnWVNCaVlYSmxJR2xrWlc1MGFXWnBaWEk2SUNjZ0t5QmhjbWQxYldWdWRGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnTHk4Z1NXWWdZU0IyWVhKcFlXSnNaU0JwY3lCdWIzUWdjM0JsWTJsbWFXVmtMQ0J3YkdGalpTQmtZWFJoSUhaaGJIVmxjeUJwYmlCc2IyTmhiQ0J6WTI5
14938d1pTNWNiaUFnSUNBZ0lITnZkWEpqWlNBOUlDZDNhWFJvS0c5aWFueDhlMzBwZTF4Y2JpY2dLeUJ6YjNWeVkyVWdLeUFuZlZ4Y2JpYzdYRzRnSUNBZ0lDQmhjbWQxYldWdWRDQTlJQ2R2WW1vbk8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhOdmRYSmpaU0E5SUZ3aWRtRnlJRjlmZEN4ZlgzQTlKeWNzWDE5cVBVRnljbUY1TG5CeWIzUnZkSGx3WlM1cWIybHVMRndpSUN0Y2JpQWdJQ0FnSUZ3aWNISnBiblE5Wm5WdVkzUnBiMjRvS1h0ZlgzQXJQVjlmYWk1allXeHNLR0Z5WjNWdFpXNTBjeXduSnlrN2ZUdGNYRzVjSWlBclhHNGdJQ0FnSUNCemIzVnlZMlVnS3lBbmNtVjBkWEp1SUY5ZmNEdGNYRzRuTzF4dVhHNGdJQ0FnZG1GeUlISmxibVJsY2p0Y2JpQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ2NtVnVaR1Z5SUQwZ2JtVjNJRVoxYm1OMGFXOXVLR0Z5WjNWdFpXNTBMQ0FuWHljc0lITnZkWEpqWlNrN1hHNGdJQ0FnZlNCallYUmphQ0FvWlNrZ2UxeHVJQ0FnSUNBZ1pTNXpiM1Z5WTJVZ1BTQnpiM1Z5WTJVN1hHNGdJQ0FnSUNCMGFISnZkeUJsTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFpoY2lCMFpXMXdiR0YwWlNBOUlHWjFibU4wYVc5dUtHUmhkR0VwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ5Wlc1a1pYSXVZMkZzYkNoMGFHbHpMQ0JrWVhSaExDQmZKREVwTzF4dUlDQWdJSDA3WEc1Y2JpQWdJQ0F2THlCUWNtOTJhV1JsSUhSb1pTQmpiMjF3YVd4bFpDQnpiM1Z5WTJVZ1lYTWdZU0JqYjI1MlpXNXBaVzVqWlNCbWIzSWdjSEpsWTI5dGNHbHNZWFJwYjI0dVhHNGdJQ0FnZEdWdGNHeGhkR1V1YzI5MWNtTmxJRDBnSjJaMWJtTjBhVzl1S0NjZ0t5QmhjbWQxYldWdWRDQXJJQ2NwZTF4Y2JpY2dLeUJ6YjNWeVkyVWdLeUFuZlNjN1hHNWNiaUFnSUNCeVpYUjFjbTRnZEdWdGNHeGhkR1U3WEc0Z0lIMWNibHh1SUNBdkx5QlVjbUYyWlhKelpYTWdkR2hsSUdOb2FXeGtjbVZ1SUc5bUlHQnZZbXBnSUdGc2IyNW5JR0J3WVhSb1lDNGdTV1lnWVNCamFHbHNaQ0JwY3lCaElHWjFibU4wYVc5dUxDQnBkRnh1SUNBdkx5QnBjeUJwYm5admEyVmtJSGRwZEdnZ2FYUnpJSEJoY21WdWRDQmhjeUJqYjI1MFpYaDBMaUJTWlhSMWNtNXpJSFJvWlNCMllXeDFaU0J2WmlCMGFHVWdabWx1WVd4Y2JpQWdMeThnWTJocGJHUXNJRzl5SUdCbVlXeHNZbUZqYTJBZ2FXWWdZVzU1SUdOb2FXeGtJR2x6SUhWdVpHVm1hVzVsWkM1Y2JpQWdablZ1WTNScGIyNGdjbVZ6ZFd4MEtHOWlhaXdnY0dGMGFDd2dabUZzYkdKaFkyc3BJSHRjYmlBZ0lDQndZWFJvSUQwZ2RHOVFZWFJvS0hCaGRHZ3BPMXh1SUNBZ0lIWmhjaUJzWlc1bmRHZ2dQU0J3WVhSb0xteGxibWQwYUR0Y2JpQWdJQ0JwWmlBb0lXeGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUdselJuVnVZM1JwYjI0a01TaG1ZV3hzWW1GamF5a2dQeUJtWVd4c1ltRmpheTVqWVd4c0tHOWlhaWtnT2lCbVlXeHNZbUZqYXp0Y2JpQWdJQ0I5WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0JzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2RtRnlJSEJ5YjNBZ1BTQnZZbW9nUFQwZ2JuVnNiQ0EvSUhadmFXUWdNQ0E2SUc5aWFsdHdZWFJvVzJsZFhUdGNiaUFnSUNBZ0lHbG1JQ2h3Y205d0lEMDlQU0IyYjJsa0lEQXBJSHRjYmlBZ0lDQWdJQ0FnY0hKdmNDQTlJR1poYkd4aVlXTnJPMXh1SUNBZ0lDQWdJQ0JwSUQwZ2JHVnVaM1JvT3lBdkx5QkZibk4xY21VZ2QyVWdaRzl1SjNRZ1kyOXVkR2x1ZFdVZ2FYUmxjbUYwYVc1bkxseHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2IySnFJRDBnYVhOR2RXNWpkR2x2YmlReEtIQnliM0FwSUQ4Z2NISnZjQzVqWVd4c0tHOWlhaWtnT2lCd2NtOXdPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnYjJKcU8xeHVJQ0I5WEc1Y2JpQWdMeThnUjJWdVpYSmhkR1VnWVNCMWJtbHhkV1VnYVc1MFpXZGxjaUJwWkNBb2RXNXBjWFZsSUhkcGRHaHBiaUIwYUdVZ1pXNTBhWEpsSUdOc2FXVnVkQ0J6WlhOemFXOXVLUzVjYmlBZ0x5OGdWWE5sWm5Wc0lHWnZjaUIwWlcxd2IzSmhjbmtnUkU5TklHbGtjeTVjYmlBZ2RtRnlJR2xrUTI5MWJuUmxjaUE5SURBN1hHNGdJR1oxYm1OMGFXOXVJSFZ1YVhGMVpVbGtLSEJ5WldacGVDa2dlMXh1SUNBZ0lIWmhjaUJwWkNBOUlDc3JhV1JEYjNWdWRHVnlJQ3NnSnljN1hHNGdJQ0FnY21WMGRYSnVJSEJ5WldacGVDQS9JSEJ5WldacGVDQXJJR2xrSURvZ2FXUTdYRzRnSUgxY2JseHVJQ0F2THlCVGRHRnlkQ0JqYUdGcGJtbHVaeUJoSUhkeVlYQndaV1FnVlc1a1pYSnpZMjl5WlNCdlltcGxZM1F1WEc0Z0lHWjFibU4wYVc5dUlHTm9ZV2x1S0c5aWFpa2dlMXh1SUNBZ0lIWmhjaUJwYm5OMFlXNWpaU0E5SUY4a01TaHZZbW9wTzF4dUlDQWdJR2x1YzNSaGJtTmxMbDlqYUdGcGJpQTlJSFJ5ZFdVN1hHNGdJQ0FnY21WMGRYSnVJR2x1YzNSaGJtTmxPMXh1SUNCOVhHNWNiaUFnTHk4Z1NXNTBaWEp1WVd3Z1puVnVZM1JwYjI0Z2RHOGdaWGhsWTNWMFpTQmdjMjkxY21ObFJuVnVZMkFnWW05MWJtUWdkRzhnWUdOdmJuUmxlSFJnSUhkcGRHZ2diM0IwYVc5dVlXeGNiaUFnTHk4Z1lHRnlaM05nTGlCRVpYUmxjbTFwYm1WeklIZG9aWFJvWlhJZ2RHOGdaWGhsWTNWMFpTQmhJR1oxYm1OMGFXOXVJR0Z6SUdFZ1kyOXVjM1J5ZFdOMGIzSWdiM0lnWVhNZ1lWeHVJQ0F2THlCdWIzSnRZV3dnWm5WdVkzUnBiMjR1WEc0Z0lHWjFibU4wYVc5dUlHVjRaV04xZEdWQ2IzVnVaQ2h6YjNWeVkyVkdkVzVqTENCaWIzVnVaRVoxYm1Nc0lHTnZiblJsZUhRc0lHTmhiR3hwYm1kRGIyNTBaWGgwTENCaGNtZHpLU0I3WEc0Z0lDQWdhV1lnS0NFb1kyRnNiR2x1WjBOdmJuUmxlSFFnYVc1emRHRnVZMlZ2WmlCaWIzVnVaRVoxYm1NcEtTQnlaWFIxY200Z2MyOTFjbU5sUm5WdVl5NWhjSEJzZVNoamIyNTBaWGgwTENCaGNtZHpLVHRjYmlBZ0lDQjJZWElnYzJWc1ppQTlJR0poYzJWRGNtVmhkR1VvYzI5MWNtTmxSblZ1WXk1d2NtOTBiM1I1Y0dVcE8xeHVJQ0FnSUhaaGNpQnlaWE4xYkhRZ1BTQnpiM1Z5WTJWR2RXNWpMbUZ3Y0d4NUtITmxiR1lzSUdGeVozTXBPMXh1SUNBZ0lHbG1JQ2hwYzA5aWFtVmpkQ2h5WlhOMWJIUXBLU0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVJQ0FnSUhKbGRIVnliaUJ6Wld4bU8xeHVJQ0I5WEc1Y2JpQWdMeThnVUdGeWRHbGhiR3g1SUdGd2NHeDVJR0VnWm5WdVkzUnBiMjRnWW5rZ1kzSmxZWFJwYm1jZ1lTQjJaWEp6YVc5dUlIUm9ZWFFnYUdGeklHaGhaQ0J6YjIxbElHOW1JR2wwYzF4dUlDQXZMeUJoY21kMWJXVnVkSE1nY0hKbExXWnBiR3hsWkN3Z2QybDBhRzkxZENCamFHRnVaMmx1WnlCcGRITWdaSGx1WVcxcFl5QmdkR2hwYzJBZ1kyOXVkR1Y0ZEM0Z1lGOWdJR0ZqZEhOY2JpQWdMeThnWVhNZ1lTQndiR0ZqWldodmJHUmxjaUJpZVNCa1pXWmhkV3gwTENCaGJHeHZkMmx1WnlCaGJua2dZMjl0WW1sdVlYUnBiMjRnYjJZZ1lYSm5kVzFsYm5SeklIUnZJR0psWEc0Z0lDOHZJSEJ5WlMxbWFXeHNaV1F1SUZObGRDQmdYeTV3WVhKMGFXRnNMbkJzWVdObGFHOXNaR1Z5WUNCbWIzSWdZU0JqZFhOMGIyMGdjR3hoWTJWb2IyeGtaWElnWVhKbmRXMWxiblF1WEc0Z0lIWmhjaUJ3WVhKMGFXRnNJRDBnY21WemRFRnlaM1Z0Wlc1MGN5aG1kVzVqZEdsdmJpaG1kVzVqTENCaWIzVnVaRUZ5WjNNcElIdGNiaUFnSUNCMllYSWdjR3hoWTJWb2IyeGtaWElnUFNCd1lYSjBhV0ZzTG5Cc1lXTmxhRzlzWkdWeU8xeHVJQ0FnSUhaaGNpQmliM1Z1WkNBOUlHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lDQWdkbUZ5SUhCdmMybDBhVzl1SUQwZ01Dd2diR1Z1WjNSb0lEMGdZbTkxYm1SQmNtZHpMbXhsYm1kMGFEdGNiaUFnSUNBZ0lIWmhjaUJoY21keklEMGdRWEp5WVhrb2JHVnVaM1JvS1R0Y2JpQWdJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdPeUJwSUR3Z2JHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJQ0FnWVhKbmMxdHBYU0E5SUdKdmRXNWtRWEpuYzF0cFhTQTlQVDBnY0d4aFkyVm9iMnhrWlhJZ1B5QmhjbWQxYldWdWRITmJjRzl6YVhScGIyNHJLMTBnT2lCaWIzVnVaRUZ5WjNOYmFWMDdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQjNhR2xzWlNBb2NHOXphWFJwYjI0Z1BDQmhjbWQxYldWdWRITXViR1Z1WjNSb0tTQmhjbWR6TG5CMWMyZ29ZWEpuZFcxbGJuUnpXM0J2YzJsMGFXOXVLeXRkS1R0Y2JpQWdJQ0FnSUhKbGRIVnliaUJsZUdWamRYUmxRbTkxYm1Rb1puVnVZeXdnWW05MWJtUXNJSFJvYVhNc0lIUm9hWE1zSUdGeVozTXBPMXh1SUNBZ0lIMDdYRzRnSUNBZ2NtVjBkWEp1SUdKdmRXNWtPMXh1SUNCOUtUdGNibHh1SUNCd1lYSjBhV0ZzTG5Cc1lXTmxhRzlzWkdWeUlEMGdYeVF4TzF4dVhHNGdJQzh2SUVOeVpXRjBaU0JoSUdaMWJtTjBhVzl1SUdKdmRXNWtJSFJ2SUdFZ1oybDJaVzRnYjJKcVpXTjBJQ2hoYzNOcFoyNXBibWNnWUhSb2FYTmdMQ0JoYm1RZ1lYSm5kVzFsYm5SekxGeHVJQ0F2THlCdmNIUnBiMjVoYkd4NUtTNWNiaUFnZG1GeUlHSnBibVFnUFNCeVpYTjBRWEpuZFcxbGJuUnpLR1o
14938xYm1OMGFXOXVLR1oxYm1Nc0lHTnZiblJsZUhRc0lHRnlaM01wSUh0Y2JpQWdJQ0JwWmlBb0lXbHpSblZ1WTNScGIyNGtNU2htZFc1aktTa2dkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWduUW1sdVpDQnRkWE4wSUdKbElHTmhiR3hsWkNCdmJpQmhJR1oxYm1OMGFXOXVKeWs3WEc0Z0lDQWdkbUZ5SUdKdmRXNWtJRDBnY21WemRFRnlaM1Z0Wlc1MGN5aG1kVzVqZEdsdmJpaGpZV3hzUVhKbmN5a2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHVjRaV04xZEdWQ2IzVnVaQ2htZFc1akxDQmliM1Z1WkN3Z1kyOXVkR1Y0ZEN3Z2RHaHBjeXdnWVhKbmN5NWpiMjVqWVhRb1kyRnNiRUZ5WjNNcEtUdGNiaUFnSUNCOUtUdGNiaUFnSUNCeVpYUjFjbTRnWW05MWJtUTdYRzRnSUgwcE8xeHVYRzRnSUM4dklFbHVkR1Z5Ym1Gc0lHaGxiSEJsY2lCbWIzSWdZMjlzYkdWamRHbHZiaUJ0WlhSb2IyUnpJSFJ2SUdSbGRHVnliV2x1WlNCM2FHVjBhR1Z5SUdFZ1kyOXNiR1ZqZEdsdmJseHVJQ0F2THlCemFHOTFiR1FnWW1VZ2FYUmxjbUYwWldRZ1lYTWdZVzRnWVhKeVlYa2diM0lnWVhNZ1lXNGdiMkpxWldOMExseHVJQ0F2THlCU1pXeGhkR1ZrT2lCb2RIUndjem92TDNCbGIzQnNaUzV0YjNwcGJHeGhMbTl5Wnk5K2FtOXlaVzVrYjNKbVppOWxjell0WkhKaFpuUXVhSFJ0YkNOelpXTXRkRzlzWlc1bmRHaGNiaUFnTHk4Z1FYWnZhV1J6SUdFZ2RtVnllU0J1WVhOMGVTQnBUMU1nT0NCS1NWUWdZblZuSUc5dUlFRlNUUzAyTkM0Z0l6SXdPVFJjYmlBZ2RtRnlJR2x6UVhKeVlYbE1hV3RsSUQwZ1kzSmxZWFJsVTJsNlpWQnliM0JsY25SNVEyaGxZMnNvWjJWMFRHVnVaM1JvS1R0Y2JseHVJQ0F2THlCSmJuUmxjbTVoYkNCcGJYQnNaVzFsYm5SaGRHbHZiaUJ2WmlCaElISmxZM1Z5YzJsMlpTQmdabXhoZEhSbGJtQWdablZ1WTNScGIyNHVYRzRnSUdaMWJtTjBhVzl1SUdac1lYUjBaVzRrTVNocGJuQjFkQ3dnWkdWd2RHZ3NJSE4wY21samRDd2diM1YwY0hWMEtTQjdYRzRnSUNBZ2IzVjBjSFYwSUQwZ2IzVjBjSFYwSUh4OElGdGRPMXh1SUNBZ0lHbG1JQ2doWkdWd2RHZ2dKaVlnWkdWd2RHZ2dJVDA5SURBcElIdGNiaUFnSUNBZ0lHUmxjSFJvSUQwZ1NXNW1hVzVwZEhrN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNoa1pYQjBhQ0E4UFNBd0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2IzVjBjSFYwTG1OdmJtTmhkQ2hwYm5CMWRDazdYRzRnSUNBZ2ZWeHVJQ0FnSUhaaGNpQnBaSGdnUFNCdmRYUndkWFF1YkdWdVozUm9PMXh1SUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3TENCc1pXNW5kR2dnUFNCblpYUk1aVzVuZEdnb2FXNXdkWFFwT3lCcElEd2diR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUhaaGNpQjJZV3gxWlNBOUlHbHVjSFYwVzJsZE8xeHVJQ0FnSUNBZ2FXWWdLR2x6UVhKeVlYbE1hV3RsS0haaGJIVmxLU0FtSmlBb2FYTkJjbkpoZVNoMllXeDFaU2tnZkh3Z2FYTkJjbWQxYldWdWRITWtNU2gyWVd4MVpTa3BLU0I3WEc0Z0lDQWdJQ0FnSUM4dklFWnNZWFIwWlc0Z1kzVnljbVZ1ZENCc1pYWmxiQ0J2WmlCaGNuSmhlU0J2Y2lCaGNtZDFiV1Z1ZEhNZ2IySnFaV04wTGx4dUlDQWdJQ0FnSUNCcFppQW9aR1Z3ZEdnZ1BpQXhLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1pteGhkSFJsYmlReEtIWmhiSFZsTENCa1pYQjBhQ0F0SURFc0lITjBjbWxqZEN3Z2IzVjBjSFYwS1R0Y2JpQWdJQ0FnSUNBZ0lDQnBaSGdnUFNCdmRYUndkWFF1YkdWdVozUm9PMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUhaaGNpQnFJRDBnTUN3Z2JHVnVJRDBnZG1Gc2RXVXViR1Z1WjNSb08xeHVJQ0FnSUNBZ0lDQWdJSGRvYVd4bElDaHFJRHdnYkdWdUtTQnZkWFJ3ZFhSYmFXUjRLeXRkSUQwZ2RtRnNkV1ZiYWlzclhUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2doYzNSeWFXTjBLU0I3WEc0Z0lDQWdJQ0FnSUc5MWRIQjFkRnRwWkhncksxMGdQU0IyWVd4MVpUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJRzkxZEhCMWREdGNiaUFnZlZ4dVhHNGdJQzh2SUVKcGJtUWdZU0J1ZFcxaVpYSWdiMllnWVc0Z2IySnFaV04wSjNNZ2JXVjBhRzlrY3lCMGJ5QjBhR0YwSUc5aWFtVmpkQzRnVW1WdFlXbHVhVzVuSUdGeVozVnRaVzUwYzF4dUlDQXZMeUJoY21VZ2RHaGxJRzFsZEdodlpDQnVZVzFsY3lCMGJ5QmlaU0JpYjNWdVpDNGdWWE5sWm5Wc0lHWnZjaUJsYm5OMWNtbHVaeUIwYUdGMElHRnNiQ0JqWVd4c1ltRmphM05jYmlBZ0x5OGdaR1ZtYVc1bFpDQnZiaUJoYmlCdlltcGxZM1FnWW1Wc2IyNW5JSFJ2SUdsMExseHVJQ0IyWVhJZ1ltbHVaRUZzYkNBOUlISmxjM1JCY21kMWJXVnVkSE1vWm5WdVkzUnBiMjRvYjJKcUxDQnJaWGx6S1NCN1hHNGdJQ0FnYTJWNWN5QTlJR1pzWVhSMFpXNGtNU2hyWlhsekxDQm1ZV3h6WlN3Z1ptRnNjMlVwTzF4dUlDQWdJSFpoY2lCcGJtUmxlQ0E5SUd0bGVYTXViR1Z1WjNSb08xeHVJQ0FnSUdsbUlDaHBibVJsZUNBOElERXBJSFJvY205M0lHNWxkeUJGY25KdmNpZ25ZbWx1WkVGc2JDQnRkWE4wSUdKbElIQmhjM05sWkNCbWRXNWpkR2x2YmlCdVlXMWxjeWNwTzF4dUlDQWdJSGRvYVd4bElDaHBibVJsZUMwdEtTQjdYRzRnSUNBZ0lDQjJZWElnYTJWNUlEMGdhMlY1YzF0cGJtUmxlRjA3WEc0Z0lDQWdJQ0J2WW1wYmEyVjVYU0E5SUdKcGJtUW9iMkpxVzJ0bGVWMHNJRzlpYWlrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnZZbW83WEc0Z0lIMHBPMXh1WEc0Z0lDOHZJRTFsYlc5cGVtVWdZVzRnWlhod1pXNXphWFpsSUdaMWJtTjBhVzl1SUdKNUlITjBiM0pwYm1jZ2FYUnpJSEpsYzNWc2RITXVYRzRnSUdaMWJtTjBhVzl1SUcxbGJXOXBlbVVvWm5WdVl5d2dhR0Z6YUdWeUtTQjdYRzRnSUNBZ2RtRnlJRzFsYlc5cGVtVWdQU0JtZFc1amRHbHZiaWhyWlhrcElIdGNiaUFnSUNBZ0lIWmhjaUJqWVdOb1pTQTlJRzFsYlc5cGVtVXVZMkZqYUdVN1hHNGdJQ0FnSUNCMllYSWdZV1JrY21WemN5QTlJQ2NuSUNzZ0tHaGhjMmhsY2lBL0lHaGhjMmhsY2k1aGNIQnNlU2gwYUdsekxDQmhjbWQxYldWdWRITXBJRG9nYTJWNUtUdGNiaUFnSUNBZ0lHbG1JQ2doYUdGekpERW9ZMkZqYUdVc0lHRmtaSEpsYzNNcEtTQmpZV05vWlZ0aFpHUnlaWE56WFNBOUlHWjFibU11WVhCd2JIa29kR2hwY3l3Z1lYSm5kVzFsYm5SektUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCallXTm9aVnRoWkdSeVpYTnpYVHRjYmlBZ0lDQjlPMXh1SUNBZ0lHMWxiVzlwZW1VdVkyRmphR1VnUFNCN2ZUdGNiaUFnSUNCeVpYUjFjbTRnYldWdGIybDZaVHRjYmlBZ2ZWeHVYRzRnSUM4dklFUmxiR0Y1Y3lCaElHWjFibU4wYVc5dUlHWnZjaUIwYUdVZ1oybDJaVzRnYm5WdFltVnlJRzltSUcxcGJHeHBjMlZqYjI1a2N5d2dZVzVrSUhSb1pXNGdZMkZzYkhOY2JpQWdMeThnYVhRZ2QybDBhQ0IwYUdVZ1lYSm5kVzFsYm5SeklITjFjSEJzYVdWa0xseHVJQ0IyWVhJZ1pHVnNZWGtnUFNCeVpYTjBRWEpuZFcxbGJuUnpLR1o
14938xYm1OMGFXOXVLR1oxYm1Nc0lIZGhhWFFzSUdGeVozTXBJSHRjYmlBZ0lDQnlaWFIxY200Z2MyVjBWR2x0Wlc5MWRDaG1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQm1kVzVqTG1Gd2NHeDVLRzUxYkd3c0lHRnlaM01wTzF4dUlDQWdJSDBzSUhkaGFYUXBPMXh1SUNCOUtUdGNibHh1SUNBdkx5QkVaV1psY25NZ1lTQm1kVzVqZEdsdmJpd2djMk5vWldSMWJHbHVaeUJwZENCMGJ5QnlkVzRnWVdaMFpYSWdkR2hsSUdOMWNuSmxiblFnWTJGc2JDQnpkR0ZqYXlCb1lYTmNiaUFnTHk4Z1kyeGxZWEpsWkM1Y2JpQWdkbUZ5SUdSbFptVnlJRDBnY0dGeWRHbGhiQ2hrWld4aGVTd2dYeVF4TENBeEtUdGNibHh1SUNBdkx5QlNaWFIxY201eklHRWdablZ1WTNScGIyNHNJSFJvWVhRc0lIZG9aVzRnYVc1MmIydGxaQ3dnZDJsc2JDQnZibXg1SUdKbElIUnlhV2RuWlhKbFpDQmhkQ0J0YjNOMElHOXVZMlZjYmlBZ0x5OGdaSFZ5YVc1bklHRWdaMmwyWlc0Z2QybHVaRzkzSUc5bUlIUnBiV1V1SUU1dmNtMWhiR3g1TENCMGFHVWdkR2h5YjNSMGJHVmtJR1oxYm1OMGFXOXVJSGRwYkd3Z2NuVnVYRzRnSUM4dklHRnpJRzExWTJnZ1lYTWdhWFFnWTJGdUxDQjNhWFJvYjNWMElHVjJaWElnWjI5cGJtY2diVzl5WlNCMGFHRnVJRzl1WTJVZ2NHVnlJR0IzWVdsMFlDQmtkWEpoZEdsdmJqdGNiaUFnTHk4Z1luVjBJR2xtSUhsdmRTZGtJR3hwYTJVZ2RHOGdaR2x6WVdKc1pTQjBhR1VnWlhobFkzVjBhVzl1SUc5dUlIUm9aU0JzWldGa2FXNW5JR1ZrWjJVc0lIQmhjM05jYmlBZ0x5OGdZSHRzWldGa2FXNW5PaUJtWVd4elpYMWdMaUJVYnlCa2FYTmhZbXhsSUdWNFpXTjFkR2x2YmlCdmJpQjBhR1VnZEhKaGFXeHBibWNnWldSblpTd2daR2wwZEc4dVhHNGdJR1oxYm1OMGFXOXVJSFJvY205MGRHeGxLR1oxYm1Nc0lIZGhhWFFzSUc5d2RHbHZibk1wSUh0Y2JpQWdJQ0IyWVhJZ2RHbHRaVzkxZEN3Z1kyOXVkR1Y0ZEN3Z1lYSm5jeXdnY21WemRXeDBPMXh1SUNBZ0lIWmhjaUJ3Y21WMmFXOTFjeUE5SURBN1hHNGdJQ0FnYVdZZ0tDRnZjSFJwYjI1ektTQnZjSFJwYjI1eklEMGdlMzA3WEc1Y2JpQWdJQ0IyWVhJZ2JHRjBaWElnUFNCbWRXNWpkR2x2YmlncElIdGNiaUFnSUNBZ0lIQnlaWFpwYjNWeklEMGdiM0IwYVc5dWN5NXNaV0ZrYVc1bklEMDlQU0JtWVd4elpTQS9JREFnT2lCdWIzY29LVHRjYmlBZ0lDQWdJSFJwYldWdmRYUWdQU0J1ZFd4c08xeHVJQ0FnSUNBZ2NtVnpkV3gwSUQwZ1puVnVZeTVoY0hCc2VTaGpiMjUwWlhoMExDQmhjbWR6S1R0Y2JpQWdJQ0FnSUdsbUlDZ2hkR2x0Wlc5MWRDa2dZMjl1ZEdWNGRDQTlJR0Z5WjNNZ1BTQnVkV3hzTzF4dUlDQWdJSDA3WEc1Y2JpQWdJQ0IyWVhJZ2RHaHliM1IwYkdWa0l
14938EMGdablZ1WTNScGIyNG9LU0I3WEc0Z0lDQWdJQ0IyWVhJZ1gyNXZkeUE5SUc1dmR5Z3BPMXh1SUNBZ0lDQWdhV1lnS0NGd2NtVjJhVzkxY3lBbUppQnZjSFJwYjI1ekxteGxZV1JwYm1jZ1BUMDlJR1poYkhObEtTQndjbVYyYVc5MWN5QTlJRjl1YjNjN1hHNGdJQ0FnSUNCMllYSWdjbVZ0WVdsdWFXNW5JRDBnZDJGcGRDQXRJQ2hmYm05M0lDMGdjSEpsZG1sdmRYTXBPMXh1SUNBZ0lDQWdZMjl1ZEdWNGRDQTlJSFJvYVhNN1hHNGdJQ0FnSUNCaGNtZHpJRDBnWVhKbmRXMWxiblJ6TzF4dUlDQWdJQ0FnYVdZZ0tISmxiV0ZwYm1sdVp5QThQU0F3SUh4OElISmxiV0ZwYm1sdVp5QStJSGRoYVhRcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0hScGJXVnZkWFFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiR1ZoY2xScGJXVnZkWFFvZEdsdFpXOTFkQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2RHbHRaVzkxZENBOUlHNTFiR3c3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2NISmxkbWx2ZFhNZ1BTQmZibTkzTzF4dUlDQWdJQ0FnSUNCeVpYTjFiSFFnUFNCbWRXNWpMbUZ3Y0d4NUtHTnZiblJsZUhRc0lHRnlaM01wTzF4dUlDQWdJQ0FnSUNCcFppQW9JWFJwYldWdmRYUXBJR052Ym5SbGVIUWdQU0JoY21keklEMGdiblZzYkR0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb0lYUnBiV1Z2ZFhRZ0ppWWdiM0IwYVc5dWN5NTBjbUZwYkdsdVp5QWhQVDBnWm1Gc2MyVXBJSHRjYmlBZ0lDQWdJQ0FnZEdsdFpXOTFkQ0E5SUhObGRGUnBiV1Z2ZFhRb2JHRjBaWElzSUhKbGJXRnBibWx1WnlrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnY21WemRXeDBPMXh1SUNBZ0lIMDdYRzVjYmlBZ0lDQjBhSEp2ZEhSc1pXUXVZMkZ1WTJWc0lEMGdablZ1WTNScGIyNG9LU0I3WEc0Z0lDQWdJQ0JqYkdWaGNsUnBiV1Z2ZFhRb2RHbHRaVzkxZENrN1hHNGdJQ0FnSUNCd2NtVjJhVzkxY3lBOUlEQTdYRzRnSUNBZ0lDQjBhVzFsYjNWMElEMGdZMjl1ZEdWNGRDQTlJR0Z5WjNNZ1BTQnVkV3hzTzF4dUlDQWdJSDA3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdkR2h5YjNSMGJHVmtPMXh1SUNCOVhHNWNiaUFnTHk4Z1YyaGxiaUJoSUhObGNYVmxibU5sSUc5bUlHTmhiR3h6SUc5bUlIUm9aU0J5WlhSMWNtNWxaQ0JtZFc1amRHbHZiaUJsYm1SekxDQjBhR1VnWVhKbmRXMWxiblJjYmlBZ0x5OGdablZ1WTNScGIyNGdhWE1nZEhKcFoyZGxjbVZrTGlCVWFHVWdaVzVrSUc5bUlHRWdjMlZ4ZFdWdVkyVWdhWE1nWkdWbWFXNWxaQ0JpZVNCMGFHVWdZSGRoYVhSZ1hHNGdJQzh2SUhCaGNtRnRaWFJsY2k0Z1NXWWdZR2x0YldWa2FXRjBaV0FnYVhNZ2NHRnpjMlZrTENCMGFHVWdZWEpuZFcxbGJuUWdablZ1WTNScGIyNGdkMmxzYkNCaVpWeHVJQ0F2THlCMGNtbG5aMlZ5WldRZ1lYUWdkR2hsSUdKbFoybHVibWx1WnlCdlppQjBhR1VnYzJWeGRXVnVZMlVnYVc1emRHVmhaQ0J2WmlCaGRDQjBhR1VnWlc1a0xseHVJQ0JtZFc1amRHbHZiaUJrWldKdmRXNWpaU2htZFc1akxDQjNZV2wwTENCcGJXMWxaR2xoZEdVcElIdGNiaUFnSUNCMllYSWdkR2x0Wlc5MWRDd2djSEpsZG1sdmRYTXNJR0Z5WjNNc0lISmxjM1ZzZEN3Z1kyOXVkR1Y0ZER0Y2JseHVJQ0FnSUhaaGNpQnNZWFJsY2lBOUlHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lDQWdkbUZ5SUhCaGMzTmxaQ0E5SUc1dmR5Z3BJQzBnY0hKbGRtbHZkWE03WEc0Z0lDQWdJQ0JwWmlBb2QyRnBkQ0ErSUhCaGMzTmxaQ2tnZTF4dUlDQWdJQ0FnSUNCMGFXMWxiM1YwSUQwZ2MyVjBWR2x0Wlc5MWRDaHNZWFJsY2l3Z2QyRnBkQ0F0SUhCaGMzTmxaQ2s3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0IwYVcxbGIzVjBJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdhV1lnS0NGcGJXMWxaR2xoZEdVcElISmxjM1ZzZENBOUlHWjFibU11WVhCd2JIa29ZMjl1ZEdWNGRDd2dZWEpuY3lrN1hHNGdJQ0FnSUNBZ0lDOHZJRlJvYVhNZ1kyaGxZMnNnYVhNZ2JtVmxaR1ZrSUdKbFkyRjFjMlVnWUdaMWJtTmdJR05oYmlCeVpXTjFjbk5wZG1Wc2VTQnBiblp2YTJVZ1lHUmxZbTkxYm1ObFpHQXVYRzRnSUNBZ0lDQWdJR2xtSUNnaGRHbHRaVzkxZENrZ1lYSm5jeUE5SUdOdmJuUmxlSFFnUFNCdWRXeHNPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMDdYRzVjYmlBZ0lDQjJZWElnWkdWaWIzVnVZMlZrSUQwZ2NtVnpkRUZ5WjNWdFpXNTBjeWhtZFc1amRHbHZiaWhmWVhKbmN5a2dlMXh1SUNBZ0lDQWdZMjl1ZEdWNGRDQTlJSFJvYVhNN1hHNGdJQ0FnSUNCaGNtZHpJRDBnWDJGeVozTTdYRzRnSUNBZ0lDQndjbVYyYVc5MWN5QTlJRzV2ZHlncE8xeHVJQ0FnSUNBZ2FXWWdLQ0YwYVcxbGIzVjBLU0I3WEc0Z0lDQWdJQ0FnSUhScGJXVnZkWFFnUFNCelpYUlVhVzFsYjNWMEtHeGhkR1Z5TENCM1lXbDBLVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHbHRiV1ZrYVdGMFpTa2djbVZ6ZFd4MElEMGdablZ1WXk1aGNIQnNlU2hqYjI1MFpYaDBMQ0JoY21kektUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFE3WEc0Z0lDQWdmU2s3WEc1Y2JpQWdJQ0JrWldKdmRXNWpaV1F1WTJGdVkyVnNJRDBnWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnSUNCamJHVmhjbFJwYldWdmRYUW9kR2x0Wlc5MWRDazdYRzRnSUNBZ0lDQjBhVzFsYjNWMElEMGdZWEpuY3lBOUlHTnZiblJsZUhRZ1BTQnVkV3hzTzF4dUlDQWdJSDA3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdaR1ZpYjNWdVkyVmtPMXh1SUNCOVhHNWNiaUFnTHk4Z1VtVjBkWEp1Y3lCMGFHVWdabWx5YzNRZ1puVnVZM1JwYjI0Z2NHRnpjMlZrSUdGeklHRnVJR0Z5WjNWdFpXNTBJSFJ2SUhSb1pTQnpaV052Ym1Rc1hHNGdJQzh2SUdGc2JHOTNhVzVuSUhsdmRTQjBieUJoWkdwMWMzUWdZWEpuZFcxbGJuUnpMQ0J5ZFc0Z1kyOWtaU0JpWldadmNtVWdZVzVrSUdGbWRHVnlMQ0JoYm1SY2JpQWdMeThnWTI5dVpHbDBhVzl1WVd4c2VTQmxlR1ZqZFhSbElIUm9aU0J2Y21sbmFXNWhiQ0JtZFc1amRHbHZiaTVjYmlBZ1puVnVZM1JwYjI0Z2QzSmhjQ2htZFc1akxDQjNjbUZ3Y0dWeUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUhCaGNuUnBZV3dvZDNKaGNIQmxjaXdnWm5WdVl5azdYRzRnSUgxY2JseHVJQ0F2THlCU1pYUjFjbTV6SUdFZ2JtVm5ZWFJsWkNCMlpYSnphVzl1SUc5bUlIUm9aU0J3WVhOelpXUXRhVzRnY0hKbFpHbGpZWFJsTGx4dUlDQm1kVzVqZEdsdmJpQnVaV2RoZEdVb2NISmxaR2xqWVhSbEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUNGd2NtVmthV05oZEdVdVlYQndiSGtvZEdocGN5d2dZWEpuZFcxbGJuUnpLVHRjYmlBZ0lDQjlPMXh1SUNCOVhHNWNiaUFnTHk4Z1VtVjBkWEp1Y3lCaElHWjFibU4wYVc5dUlIUm9ZWFFnYVhNZ2RHaGxJR052YlhCdmMybDBhVzl1SUc5bUlHRWdiR2x6ZENCdlppQm1kVzVqZEdsdmJuTXNJR1ZoWTJoY2JpQWdMeThnWTI5dWMzVnRhVzVuSUhSb1pTQnlaWFIxY200Z2RtRnNkV1VnYjJZZ2RHaGxJR1oxYm1OMGFXOXVJSFJvWVhRZ1ptOXNiRzkzY3k1Y2JpQWdablZ1WTNScGIyNGdZMjl0Y0c5elpTZ3BJSHRjYmlBZ0lDQjJZWElnWVhKbmN5QTlJR0Z5WjNWdFpXNTBje
14938nRjYmlBZ0lDQjJZWElnYzNSaGNuUWdQU0JoY21kekxteGxibWQwYUNBdElERTdYRzRnSUNBZ2NtVjBkWEp1SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUNBZ2RtRnlJR2tnUFNCemRHRnlkRHRjYmlBZ0lDQWdJSFpoY2lCeVpYTjFiSFFnUFNCaGNtZHpXM04wWVhKMFhTNWhjSEJzZVNoMGFHbHpMQ0JoY21kMWJXVnVkSE1wTzF4dUlDQWdJQ0FnZDJocGJHVWdLR2t0TFNrZ2NtVnpkV3gwSUQwZ1lYSm5jMXRwWFM1allXeHNLSFJvYVhNc0lISmxjM1ZzZENrN1hHNGdJQ0FnSUNCeVpYUjFjbTRnY21WemRXeDBPMXh1SUNBZ0lIMDdYRzRnSUgxY2JseHVJQ0F2THlCU1pYUjFjbTV6SUdFZ1puVnVZM1JwYjI0Z2RHaGhkQ0IzYVd4c0lHOXViSGtnWW1VZ1pYaGxZM1YwWldRZ2IyNGdZVzVrSUdGbWRHVnlJSFJvWlNCT2RHZ2dZMkZzYkM1Y2JpQWdablZ1WTNScGIyNGdZV1owWlhJb2RHbHRaWE1zSUdaMWJtTXBJSHRjYmlBZ0lDQnlaWFIxY200Z1puVnVZM1JwYjI0b0tTQjdYRzRnSUNBZ0lDQnBaaUFvTFMxMGFXMWxjeUE4SURFcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHWjFibU11WVhCd2JIa29kR2hwY3l3Z1lYSm5kVzFsYm5SektUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOU8xeHVJQ0I5WEc1Y2JpQWdMeThnVW1WMGRYSnVjeUJoSUdaMWJtTjBhVzl1SUhSb1lYUWdkMmxzYkNCdmJteDVJR0psSUdWNFpXTjFkR1ZrSUhWd0lIUnZJQ2hpZFhRZ2JtOTBJR2x1WTJ4MVpHbHVaeWtnZEdobFhHNGdJQzh2SUU1MGFDQmpZV3hzTGx4dUlDQm1kVzVqZEdsdmJpQmlaV1p2Y21Vb2RHbHRaWE1zSUdaMWJtTXBJSHRjYmlBZ0lDQjJZWElnYldWdGJ6dGNiaUFnSUNCeVpYUjFjbTRnWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnSUNCcFppQW9MUzEwYVcxbGN5QStJREFwSUh0Y2JpQWdJQ0FnSUNBZ2JXVnRieUE5SUdaMWJtTXVZWEJ3Ykhrb2RHaHBjeXdnWVhKbmRXMWxiblJ6S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdsbUlDaDBhVzFsY3lBOFBTQXhLU0JtZFc1aklEMGdiblZzYkR0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ0Wlcxdk8xeHVJQ0FnSUgwN1hHNGdJSDFjYmx4dUlDQXZMeUJTWlhSMWNtNXpJR0VnWm5WdVkzUnBiMjRnZEdoaGRDQjNhV3hzSUdKbElHVjRaV04xZEdWa0lHRjBJRzF2YzNRZ2IyNWxJSFJwYldVc0lHNXZJRzFoZEhSbGNpQm9iM2RjYmlBZ0x5OGdiMlowWlc0Z2VXOTFJR05oYkd3Z2FYUXVJRlZ6WldaMWJDQm1iM0lnYkdGNmVTQnBibWwwYVdGc2FYcGhkR2x2Ymk1Y2JpQWdkbUZ5SUc5dVkyVWdQU0J3WVhKMGFXRnNLR0psWm05eVpTd2dNaWs3WEc1Y2JpQWdMeThnVW1WMGRYSnVjeUIwYUdVZ1ptbHljM1FnYTJWNUlHOXVJR0Z1SUc5aWFtVmpkQ0IwYUdGMElIQmhjM05sY3lCaElIUnlkWFJvSUhSbGMzUXVYRzRnSUdaMWJtTjBhVzl1SUdacGJtUkxaWGtvYjJKcUxDQndjbVZrYVdOaGRHVXNJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQndjbVZrYVdOaGRHVWdQU0JqWWlod2NtVmthV05oZEdVc0lHTnZiblJsZUhRcE8xeHVJQ0FnSUhaaGNpQmZhMlY1Y3lBOUlHdGxlWE1vYjJKcUtTd2dhMlY1TzF4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd0xDQnNaVzVuZEdnZ1BTQmZhMlY1Y3k1c1pXNW5kR2c3SUdrZ1BDQnNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnYTJWNUlEMGdYMnRsZVhOYmFWMDdYRzRnSUNBZ0lDQnBaaUFvY0hKbFpHbGpZWFJsS0c5aWFsdHJaWGxkTENCclpYa3NJRzlpYWlrcElISmxkSFZ5YmlCclpYazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdMeThnU1c1MFpYSnVZV3dnWm5WdVkzUnBiMjRnZEc4Z1oyVnVaWEpoZEdVZ1lGOHVabWx1WkVsdVpHVjRZQ0JoYm1RZ1lGOHVabWx1WkV4aGMzUkpibVJsZUdBdVhHNGdJR1oxYm1OMGFXOXVJR055WldGMFpWQnlaV1JwWTJGMFpVbHVaR1Y0Um1sdVpHVnlLR1JwY2lrZ2UxeHVJQ0FnSUhKbGRIVnliaUJtZFc1amRHbHZiaWhoY25KaGVTd2djSEpsWkdsallYUmxMQ0JqYjI1MFpYaDBLU0I3WEc0Z0lDQWdJQ0J3Y21Wa2FXTmhkR1VnUFNCallpaHdjbVZrYVdOaGRHVXNJR052Ym5SbGVIUXBPMXh1SUNBZ0lDQWdkbUZ5SUd4bGJtZDBhQ0E5SUdkbGRFeGxibWQwYUNoaGNuSmhlU2s3WEc0Z0lDQWdJQ0IyWVhJZ2FXNWtaWGdnUFNCa2FYSWdQaUF3SUQ4Z01DQTZJR3hsYm1kMGFDQXRJREU3WEc0Z0lDQWdJQ0JtYjNJZ0tEc2dhVzVrWlhnZ1BqMGdNQ0FtSmlCcGJtUmxlQ0E4SUd4bGJtZDBhRHNnYVc1a1pYZ2dLejBnWkdseUtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNod2NtVmthV05oZEdVb1lYSnlZWGxiYVc1a1pYaGRMQ0JwYm1SbGVDd2dZWEp5WVhrcEtTQnlaWFIxY200Z2FXNWtaWGc3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J5WlhSMWNtNGdMVEU3WEc0Z0lDQWdmVHRjYmlBZ2ZWeHVYRzRnSUM4dklGSmxkSFZ5Ym5NZ2RHaGxJR1pwY25OMElHbHVaR1Y0SUc5dUlHRnVJR0Z5Y21GNUxXeHBhMlVnZEdoaGRDQndZWE56WlhNZ1lTQjBjblYwYUNCMFpYTjBMbHh1SUNCMllYSWdabWx1WkVsdVpHVjRJRDBnWTNKbFlYUmxVSEpsWkdsallYUmxTVzVrWlhoR2FXNWtaWElvTVNrN1hHNWNiaUFnTHk4Z1VtVjBkWEp1Y3lCMGFHVWdiR0Z6ZENCcGJtUmxlQ0J2YmlCaGJpQmhjbkpoZVMxc2FXdGxJSFJvWVhRZ2NHRnpjMlZ6SUdFZ2RISjFkR2dnZEdWemRDNWNiaUFnZG1GeUlHWnBibVJNWVhOMFNXNWtaWGdnUFNCamNtVmhkR1ZRY21Wa2FXTmhkR1ZKYm1SbGVFWnBibVJsY2lndE1TazdYRzVjYmlBZ0x5OGdWWE5sSUdFZ1kyOXRjR0Z5WVhSdmNpQm1kVzVqZEdsdmJpQjBieUJtYVdkMWNtVWdiM1YwSUhSb1pTQnpiV0ZzYkdWemRDQnBibVJsZUNCaGRDQjNhR2xqYUZ4dUlDQXZMeUJoYmlCdlltcGxZM1FnYzJodmRXeGtJR0psSUdsdWMyVnlkR1ZrSUhOdklHRnpJSFJ2SUcxaGFXNTBZV2x1SUc5eVpHVnlMaUJWYzJWeklHSnBibUZ5ZVNCelpXRnlZMmd1WEc0Z0lHWjFibU4wYVc5dUlITnZjblJsWkVsdVpHVjRLR0Z5Y21GNUxDQnZZbW9zSUdsMFpYSmhkR1ZsTENCamIyNTBaWGgwS1NCN1hHNGdJQ0FnYVhSbGNtRjBaV1VnUFNCallpaHBkR1Z5WVhSbFpTd2dZMjl1ZEdWNGRDd2dNU2s3WEc0Z0lDQWdkbUZ5SUhaaGJIVmxJRDBnYVhSbGNtRjBaV1VvYjJKcUtUdGNiaUFnSUNCMllYSWdiRzkzSUQwZ01Dd2dhR2xuYUNBOUlHZGxkRXhsYm1kMGFDaGhjbkpoZVNrN1hHNGdJQ0FnZDJocGJHVWdLR3h2ZHlBOElHaHBaMmdwSUh0Y2JpQWdJQ0FnSUhaaGNpQnRhV1FnUFNCTllYUm9MbVpzYjI5eUtDaHNiM2NnS3lCb2FXZG9LU0F2SURJcE8xeHVJQ0FnSUNBZ2FXWWdLR2wwWlhKaGRHVmxLR0Z5Y21GNVcyMXBaRjBwSUR3Z2RtRnNkV1VwSUd4dmR5QTlJRzFwWkNBcklERTdJR1ZzYzJVZ2FHbG5hQ0E5SUcxcFpEdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR3h2ZHp0Y2JpQWdmVnh1WEc0Z0lDOHZJRWx1ZEdWeWJtRnNJR1oxYm1OMGFXOXVJSFJ2SUdkbGJtVnlZWFJsSUhSb1pTQmdYeTVwYm1SbGVFOW1ZQ0JoYm1RZ1lGOHViR0Z6ZEVsdVpHVjRUMlpnSUdaMWJtTjBhVzl1Y3k1Y2JpQWdablZ1WTNScGIyNGdZM0psWVhSbFNXNWtaWGhHYVc1a1pYSW9aR2x5TENCd2NtVmthV05oZEdWR2FXNWtMQ0J6YjNKMFpXUkpibVJsZUNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJtZFc1amRHbHZiaWhoY25KaGVTd2dhWFJsYlN3Z2FXUjRLU0I3WEc0Z0lDQWdJQ0IyWVhJZ2FTQTlJREFzSUd4bGJtZDBhQ0E5SUdkbGRFeGxibWQwYUNoaGNuSmhlU2s3WEc0Z0lDQWdJQ0JwWmlBb2RIbHdaVzltSUdsa2VDQTlQU0FuYm5WdFltVnlKeWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9aR2x5SUQ0Z01Da2dlMXh1SUNBZ0lDQWdJQ0FnSUdrZ1BTQnBaSGdnUGowZ01DQS9JR2xrZUNBNklFMWhkR2d1YldGNEtHbGtlQ0FySUd4bGJtZDBhQ3dnYVNrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdiR1Z1WjNSb0lEMGdhV1I0SUQ0OUlEQWdQeUJOWVhSb0xtMXBiaWhwWkhnZ0t5QXhMQ0JzWlc1bmRHZ3BJRG9nYVdSNElDc2diR1Z1WjNSb0lDc2dNVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlNCbGJITmxJR2xtSUNoemIzSjBaV1JKYm1SbGVDQW1KaUJwWkhnZ0ppWWdiR1Z1WjNSb0tTQjdYRzRnSUNBZ0lDQWdJR2xrZUNBOUlITnZjblJsWkVsdVpHVjRLR0Z5Y21GNUxDQnBkR1Z0S1R0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdGeWNtRjVXMmxrZUYwZ1BUMDlJR2wwWlcwZ1B5QnBaSGdnT2lBdE1UdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHbG1JQ2hwZEdWdElDRTlQU0JwZEdWdEtTQjdYRzRnSUNBZ0lDQWdJR2xrZUNBOUlIQnlaV1JwWTJGMFpVWnBibVFvYzJ4cFkyVXVZMkZzYkNoaGNuSmhlU3dnYVN3Z2JHVnVaM1JvS1N3Z2FYTk9ZVTRrTVNrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCcFpIZ2dQajBnTUNBL0lHbGtlQ0FySUdrZ09pQXRNVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR1p2Y2lBb2FXUjRJRDBnWkdseUlENGdNQ0EvSUdrZ09pQnNaVzVuZEdnZ0xTQXhPeUJwWkhnZ1BqMGdNQ0FtSmlCcFpIZ2dQQ0JzWlc1bmRHZzdJR2xrZUNBclBTQmthWElwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR0Z5Y21GNVcybGtlRjBnUFQwOUlHbDBaVzBwSUhKbGRIVnliaUJwWkhnN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnTFRFN1hHNGdJQ0FnZlR0Y2JpQWdmVnh1WEc0Z0lDOHZJRkpsZEhWeWJpQjBhR1VnY0c5emFYUnBiMjRnYjJZZ2RHaGxJR1pwY25OMElHOWpZM1Z5Y21WdVkyVWdiMllnWVc0Z2FYUmxiU0JwYmlCaGJpQmhjbkpoZVN4Y2JpQWdMeThnYjNJZ0xURWdhV1lnZEdobElHbDBaVzBnYVhNZ2JtOTBJR2x1WTJ4MVpHVmtJR2x1SUhSb1pTQmhjbkpoZVM1Y2JpQWdMeThnU1dZZ2RHaGxJR0Z5Y21GNUlHbHpJR3hoY21kbElHRnVaQ0JoYkhKbFlXUjVJR2x1SUhOdmNuUWdiM0prWlhJc0lIQmhjM01nWUhSeWRXVmdYRzRnSUM4dklHWnZjaUFxS21selUyOXlkR1ZrS2lvZ2RHOGdkWE5sSUdKcGJtRnllU0J6WldGeVkyZ3VYRzRnSUhaaGNpQnBibVJsZUU5bUlEMGdZM0
14938psWVhSbFNXNWtaWGhHYVc1a1pYSW9NU3dnWm1sdVpFbHVaR1Y0TENCemIzSjBaV1JKYm1SbGVDazdYRzVjYmlBZ0x5OGdVbVYwZFhKdUlIUm9aU0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdiR0Z6ZENCdlkyTjFjbkpsYm1ObElHOW1JR0Z1SUdsMFpXMGdhVzRnWVc0Z1lYSnlZWGtzWEc0Z0lDOHZJRzl5SUMweElHbG1JSFJvWlNCcGRHVnRJR2x6SUc1dmRDQnBibU5zZFdSbFpDQnBiaUIwYUdVZ1lYSnlZWGt1WEc0Z0lIWmhjaUJzWVhOMFNXNWtaWGhQWmlBOUlHTnlaV0YwWlVsdVpHVjRSbWx1WkdWeUtDMHhMQ0JtYVc1a1RHRnpkRWx1WkdWNEtUdGNibHh1SUNBdkx5QlNaWFIxY200Z2RHaGxJR1pwY25OMElIWmhiSFZsSUhkb2FXTm9JSEJoYzNObGN5QmhJSFJ5ZFhSb0lIUmxjM1F1WEc0Z0lHWjFibU4wYVc5dUlHWnBibVFvYjJKcUxDQndjbVZrYVdOaGRHVXNJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQjJZWElnYTJWNVJtbHVaR1Z5SUQwZ2FYTkJjbkpoZVV4cGEyVW9iMkpxS1NBL0lHWnBibVJKYm1SbGVDQTZJR1pwYm1STFpYazdYRzRnSUNBZ2RtRnlJR3RsZVNBOUlHdGxlVVpwYm1SbGNpaHZZbW9zSUhCeVpXUnBZMkYwWlN3Z1kyOXVkR1Y0ZENrN1hHNGdJQ0FnYVdZZ0tHdGxlU0FoUFQwZ2RtOXBaQ0F3SUNZbUlHdGxlU0FoUFQwZ0xURXBJSEpsZEhWeWJpQnZZbXBiYTJWNVhUdGNiaUFnZlZ4dVhHNGdJQzh2SUVOdmJuWmxibWxsYm1ObElIWmxjbk5wYjI0Z2IyWWdZU0JqYjIxdGIyNGdkWE5sSUdOaGMyVWdiMllnWUY4dVptbHVaR0E2SUdkbGRIUnBibWNnZEdobElHWnBjbk4wWEc0Z0lDOHZJRzlpYW1WamRDQmpiMjUwWVdsdWFXNW5JSE53WldOcFptbGpJR0JyWlhrNmRtRnNkV1ZnSUhCaGFYSnpMbHh1SUNCbWRXNWpkR2x2YmlCbWFXNWtWMmhsY21Vb2IySnFMQ0JoZEhSeWN5a2dlMXh1SUNBZ0lISmxkSFZ5YmlCbWFXNWtLRzlpYWl3Z2JXRjBZMmhsY2loaGRIUnljeWtwTzF4dUlDQjlYRzVjYmlBZ0x5OGdWR2hsSUdOdmNtNWxjbk4wYjI1bElHWnZjaUJqYjJ4c1pXTjBhVzl1SUdaMWJtTjBhVzl1Y3l3Z1lXNGdZR1ZoWTJoZ1hHNGdJQzh2SUdsdGNHeGxiV1Z1ZEdGMGFXOXVMQ0JoYTJFZ1lHWnZja1ZoWTJoZ0xseHVJQ0F2THlCSVlXNWtiR1Z6SUhKaGR5QnZZbXBsWTNSeklHbHVJR0ZrWkdsMGFXOXVJSFJ2SUdGeWNtRjVMV3hwYTJWekxpQlVjbVZoZEhNZ1lXeHNYRzRnSUM4dklITndZWEp6WlNCaGNuSmhlUzFzYVd0bGN5QmhjeUJwWmlCMGFHVjVJSGRsY21VZ1pHVnVjMlV1WEc0Z0lHWjFibU4wYVc5dUlHVmhZMmdvYjJKcUxDQnBkR1Z5WVhSbFpTd2dZMjl1ZEdWNGRDa2dlMXh1SUNBZ0lHbDBaWEpoZEdWbElEMGdiM0IwYVcxcGVtVkRZaWhwZEdWeVlYUmxaU3dnWTI5dWRHVjRkQ2s3WEc0Z0lDQWdkbUZ5SUdrc0lHeGxibWQwYUR0Y2JpQWdJQ0JwWmlBb2FYTkJjbkpoZVV4cGEyVW9iMkpxS1NrZ2UxeHVJQ0FnSUNBZ1ptOXlJQ2hwSUQwZ01Dd2diR1Z1WjNSb0lEMGdiMkpxTG14bGJtZDBhRHNnYVNBOElHeGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0FnSUdsMFpYSmhkR1ZsS0c5aWFsdHBYU3dnYVN3Z2IySnFLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RtRnlJRjlyWlhseklEMGdhMlY1Y3lodlltb3BPMXh1SUNBZ0lDQWdabTl5SUNocElEMGdNQ3dnYkdWdVozUm9JRDBnWDJ0bGVYTXViR1Z1WjNSb095QnBJRHdnYkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lDQWdhWFJsY21GMFpXVW9iMkpxVzE5clpYbHpXMmxkWFN3Z1gydGxlWE5iYVYwc0lHOWlhaWs3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCdlltbzdYRzRnSUgxY2JseHVJQ0F2THlCU1pYUjFjbTRnZEdobElISmxjM1ZzZEhNZ2IyWWdZWEJ3YkhscGJtY2dkR2hsSUdsMFpYSmhkR1ZsSUhSdklHVmhZMmdnWld4bGJXVnVkQzVjYmlBZ1puVnVZM1JwYjI0Z2JXRndLRzlpYWl3Z2FYUmxjbUYwWldVc0lHTnZiblJsZUhRcElIdGNiaUFnSUNCcGRHVnlZWFJsWlNBOUlHTmlLR2wwWlhKaGRHVmxMQ0JqYjI1MFpYaDBLVHRjYmlBZ0lDQjJZWElnWDJ0bGVYTWdQU0FoYVhOQmNuSmhlVXhwYTJVb2IySnFLU0FtSmlCclpYbHpLRzlpYWlrc1hHNGdJQ0FnSUNBZ0lHeGxibWQwYUNBOUlDaGZhMlY1Y3lCOGZDQnZZbW9wTG14bGJtZDBhQ3hjYmlBZ0lDQWdJQ0FnY21WemRXeDBjeUE5SUVGeWNtRjVLR3hsYm1kMGFDazdYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2FXNWtaWGdnUFNBd095QnBibVJsZUNBOElHeGxibWQwYURzZ2FXNWtaWGdyS3lrZ2UxeHVJQ0FnSUNBZ2RtRnlJR04xY25KbGJuUkxaWGtnUFNCZmEyVjVjeUEvSUY5clpYbHpXMmx1WkdWNFhTQTZJR2x1WkdWNE8xeHVJQ0FnSUNBZ2NtVnpkV3gwYzF0cGJtUmxlRjBnUFNCcGRHVnlZWFJsWlNodlltcGJZM1Z5Y21WdWRFdGxlVjBzSUdOMWNuSmxiblJMWlhrc0lHOWlhaWs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFJ6TzF4dUlDQjlYRzVjYmlBZ0x5OGdTVzUwWlhKdVlXd2dhR1ZzY0dWeUlIUnZJR055WldGMFpTQmhJSEpsWkhWamFXNW5JR1oxYm1OMGFXOXVMQ0JwZEdWeVlYUnBibWNnYkdWbWRDQnZjaUJ5YVdkb2RDNWNiaUFnWm5WdVkzUnBiMjRnWTNKbFlYUmxVbVZrZFdObEtHUnBjaWtnZTF4dUlDQWdJQzh2SUZkeVlYQWdZMjlrWlNCMGFHRjBJSEpsWVhOemFXZHVjeUJoY21kMWJXVnVkQ0IyWVhKcFlXSnNaWE1nYVc0Z1lTQnpaWEJoY21GMFpTQm1kVzVqZEdsdmJpQjBhR0Z1WEc0Z0lDQWdMeThnZEdobElHOXVaU0IwYUdGMElHRmpZMlZ6YzJWeklHQmhjbWQxYldWdWRITXViR1Z1WjNSb1lDQjBieUJoZG05cFpDQmhJSEJsY21ZZ2FHbDBMaUFvSXpFNU9URXBYRzRnSUNBZ2RtRnlJSEpsWkhWalpYSWdQU0JtZFc1amRHbHZiaWh2WW1vc0lHbDBaWEpoZEdWbExDQnRaVzF2TENCcGJtbDBhV0ZzS1NCN1hHNGdJQ0FnSUNCMllYSWdYMnRsZVhNZ1BTQWhhWE5CY25KaG
14938VVeHBhMlVvYjJKcUtTQW1KaUJyWlhsektHOWlhaWtzWEc0Z0lDQWdJQ0FnSUNBZ2JHVnVaM1JvSUQwZ0tGOXJaWGx6SUh4OElHOWlhaWt1YkdWdVozUm9MRnh1SUNBZ0lDQWdJQ0FnSUdsdVpHVjRJRDBnWkdseUlENGdNQ0EvSURBZ09pQnNaVzVuZEdnZ0xTQXhPMXh1SUNBZ0lDQWdhV1lnS0NGcGJtbDBhV0ZzS1NCN1hHNGdJQ0FnSUNBZ0lHMWxiVzhnUFNCdlltcGJYMnRsZVhNZ1B5QmZhMlY1YzF0cGJtUmxlRjBnT2lCcGJtUmxlRjA3WEc0Z0lDQWdJQ0FnSUdsdVpHVjRJQ3M5SUdScGNqdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHWnZjaUFvT3lCcGJtUmxlQ0ErUFNBd0lDWW1JR2x1WkdWNElEd2diR1Z1WjNSb095QnBibVJsZUNBclBTQmthWElwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJR04xY25KbGJuUkxaWGtnUFNCZmEyVjVjeUEvSUY5clpYbHpXMmx1WkdWNFhTQTZJR2x1WkdWNE8xeHVJQ0FnSUNBZ0lDQnRaVzF2SUQwZ2FYUmxjbUYwWldVb2JXVnRieXdnYjJKcVcyTjFjbkpsYm5STFpYbGRMQ0JqZFhKeVpXNTBTMlY1TENCdlltb3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbVYwZFhKdUlHMWxiVzg3WEc0Z0lDQWdmVHRjYmx4dUlDQWdJSEpsZEhWeWJpQm1kVzVqZEdsdmJpaHZZbW9zSUdsMFpYSmhkR1ZsTENCdFpXMXZMQ0JqYjI1MFpYaDBLU0I3WEc0Z0lDQWdJQ0IyWVhJZ2FXNXBkR2xoYkNBOUlHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnZ1BqMGdNenRjYmlBZ0lDQWdJSEpsZEhWeWJpQnlaV1IxWTJWeUtHOWlhaXdnYjNCMGFXMXBlbVZEWWlocGRHVnlZWFJsWlN3Z1kyOXVkR1Y0ZEN3Z05Da3NJRzFsYlc4c0lHbHVhWFJwWVd3cE8xeHVJQ0FnSUgwN1hHNGdJSDFjYmx4dUlDQXZMeUFxS2xKbFpIVmpaU29xSUdKMWFXeGtjeUIxY0NCaElITnBibWRzWlNCeVpYTjFiSFFnWm5KdmJTQmhJR3hwYzNRZ2IyWWdkbUZzZFdWekxDQmhhMkVnWUdsdWFtVmpkR0FzWEc0Z0lDOHZJRzl5SUdCbWIyeGtiR0F1WEc0Z0lIWmhjaUJ5WldSMVkyVWdQU0JqY21WaGRHVlNaV1IxWTJVb01TazdYRzVjYmlBZ0x5OGdWR2hsSUhKcFoyaDBMV0Z6YzI5amFXRjBhWFpsSUhabGNuTnBiMjRnYjJZZ2NtVmtkV05sTENCaGJITnZJR3R1YjNkdUlHRnpJR0JtYjJ4a2NtQXVYRzRnSUhaaGNpQnlaV1IxWTJWU2FXZG9kQ0E5SUdOeVpXRjBaVkpsWkhWalpTZ3RNU2s3WEc1Y2JpQWdMeThnVW1WMGRYSnVJR0ZzYkNCMGFHVWdaV3hsYldWdWRITWdkR2hoZENCd1lYTnpJR0VnZEhKMWRHZ2dkR1Z6ZEM1Y2JpQWdablZ1WTNScGIyNGdabWxzZEdWeUtHOWlhaXdnY0hKbFpHbGpZWFJsTENCamIyNTBaWGgwS1NCN1hHNGdJQ0FnZG1GeUlISmxjM1ZzZEhNZ1BTQmJYVHRjYmlBZ0lDQndjbVZrYVdOaGRHVWdQU0JqWWlod2NtVmthV05oZEdVc0lHTnZiblJsZUhRcE8xeHVJQ0FnSUdWaFkyZ29iMkpxTENCbWRXNWpkR2x2YmloMllXeDFaU3dnYVc1a1pYZ3NJR3hwYzNRcElIdGNiaUFnSUNBZ0lHbG1JQ2h3Y21Wa2FXTmhkR1VvZG1Gc2RXVXNJR2x1WkdWNExDQnNhWE4wS1NrZ2NtVnpkV3gwY3k1d2RYTm9LSFpoYkhWbEtUdGNiaUFnSUNCOUtUdGNiaUFnSUNCeVpYUjFjbTRnY21WemRXeDBjenRjYmlBZ2ZWeHVYRzRnSUM4dklGSmxkSFZ5YmlCaGJHd2dkR2hsSUdWc1pXMWxiblJ6SUdadmNpQjNhR2xqYUNCaElIUnlkWFJvSUhSbGMzUWdabUZwYkhNdVhHNGdJR1oxYm1OMGFXOXVJSEpsYW1WamRDaHZZbW9zSUhCeVpXUnBZMkYwWlN3Z1kyOXVkR1Y0ZENrZ2UxeHVJQ0FnSUhKbGRIVnliaUJtYVd4MFpYSW9iMkpxTENCdVpXZGhkR1VvWTJJb2NISmxaR2xqWVhSbEtTa3NJR052Ym5SbGVIUXBPMXh1SUNCOVhHNWNiaUFnTHk4Z1JHVjBaWEp0YVc1bElIZG9aWFJvWlhJZ1lXeHNJRzltSUhSb1pTQmxiR1Z0Wlc1MGN5QndZWE56SUdFZ2RISjFkR2dnZEdWemRDNWNiaUFnWm5WdVkzUnBiMjRnWlhabGNua29iMkpxTENCd2NtVmthV05oZEdVc0lHTnZiblJsZUhRcElIdGNiaUFnSUNCd2NtVmthV05oZEdVZ1BTQmpZaWh3Y21Wa2FXTmhkR1VzSUdOdmJuUmxlSFFwTzF4dUlDQWdJSFpoY2lCZmEyVjVjeUE5SUNGcGMwRnljbUY1VEdsclpTaHZZbW9wSUNZbUlHdGxlWE1vYjJKcUtTeGNiaUFnSUNBZ0lDQWdiR1Z1WjNSb0lEMGdLRjlyWlhseklIeDhJRzlpYWlrdWJHVnVaM1JvTzF4dUlDQWdJR1p2Y2lBb2RtRnlJR2x1WkdWNElEMGdNRHNnYVc1a1pYZ2dQQ0JzWlc1bmRHZzdJR2x1WkdWNEt5c3BJSHRjYmlBZ0lDQWdJSFpoY2lCamRYSnlaVzUwUzJWNUlEMGdYMnRsZVhNZ1B5QmZhMlY1YzF0cGJtUmxlRjBnT2lCcGJtUmxlRHRjYmlBZ0lDQWdJR2xtSUNnaGNISmxaR2xqWVhSbEtHOWlhbHRqZFhKeVpXNTBTMlY1WFN3Z1kzVnljbVZ1ZEV0bGVTd2diMkpxS1NrZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnZlZ4dVhHNGdJQzh2SUVSbGRHVnliV2x1WlNCcFppQmhkQ0JzWldGemRDQnZibVVnWld4bGJXVnVkQ0JwYmlCMGFHVWdiMkpxWldOMElIQmhjM05sY3lCaElIUnlkWFJvSUhSbGMzUXVYRzRnSUdaMWJtTjBhVzl1SUhOdmJXVW9iMkpxTENCd2NtVmthV05oZEdVc0lHTnZiblJsZUhRcElIdGNiaUFnSUNCd2NtVmthV05oZEdVZ1BTQmpZaWh3Y21Wa2FXTmhkR1VzSUdOdmJuUmxlSFFwTzF4dUlDQWdJSFpoY2lCZmEyVjVjeUE5SUNGcGMwRnljbUY1VEdsclpTaHZZbW9wSUNZbUlHdGxlWE1vYjJKcUtTeGNiaUFnSUNBZ0lDQWdiR1Z1WjNSb0lEMGdLRjlyWlhseklIeDhJRzlpYWlrdWJHVnVaM1JvTzF4dUlDQWdJR1p2Y2lBb2RtRnlJR2x1WkdWNElEMGdNRHNnYVc1a1pYZ2dQQ0JzWlc1bmRHZzdJR2x1WkdWNEt5c3BJSHRjYmlBZ0lDQWdJSFpoY2lCamRYSnlaVzUwUzJWNUlEMGdYMnRsZVhNZ1B5QmZhMlY1YzF0cGJtUmxlRjBnT2lCcGJtUmxlRHRjYmlBZ0lDQWdJR2xtSUNod2NtVmthV05oZEdVb2IySnFXMk4xY25KbGJuUkxaWGxkTENCamRYSnlaVzUwUzJWNUxDQnZZbW9wS1NCeVpYUjFjbTRnZEhKMVpUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0I5WEc1Y2JpQWdMeThnUkdWMFpYSnRhVzVsSUdsbUlIUm9aU0JoY25KaGVTQnZjaUJ2WW1wbFkzUWdZMjl1ZEdGcGJuTWdZU0JuYVhabGJpQnBkR1Z0SUNoMWMybHVaeUJnUFQwOVlDa3VYRzRnSUdaMWJtTjBhVzl1SUdOdmJuUmhhVzV6S0c5aWFpd2dhWFJsYlN3Z1puSnZiVWx1WkdWNExDQm5kV0Z5WkNrZ2UxeHVJQ0FnSUdsbUlDZ2hhWE5CY25KaG
14938VVeHBhMlVvYjJKcUtTa2diMkpxSUQwZ2RtRnNkV1Z6S0c5aWFpazdYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQm1jbTl0U1c1a1pYZ2dJVDBnSjI1MWJXSmxjaWNnZkh3Z1ozVmhjbVFwSUdaeWIyMUpibVJsZUNBOUlEQTdYRzRnSUNBZ2NtVjBkWEp1SUdsdVpHVjRUMllvYjJKcUxDQnBkR1Z0TENCbWNtOXRTVzVrWlhncElENDlJREE3WEc0Z0lIMWNibHh1SUNBdkx5Qkpiblp2YTJVZ1lTQnRaWFJvYjJRZ0tIZHBkR2dnWVhKbmRXMWxiblJ6S1NCdmJpQmxkbVZ5ZVNCcGRHVnRJR2x1SUdFZ1kyOXNiR1ZqZEdsdmJpNWNiaUFnZG1GeUlHbHVkbTlyWlNBOUlISmxjM1JCY21kMWJXVnVkSE1vWm5WdVkzUnBiMjRvYjJKcUxDQndZWFJvTENCaGNtZHpLU0I3WEc0Z0lDQWdkbUZ5SUdOdmJuUmxlSFJRWVhSb0xDQm1kVzVqTzF4dUlDQWdJR2xtSUNocGMwWjFibU4wYVc5dUpERW9jR0YwYUNrcElIdGNiaUFnSUNBZ0lHWjFibU1nUFNCd1lYUm9PMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCd1lYUm9JRDBnZEc5UVlYUm9LSEJoZEdncE8xeHVJQ0FnSUNBZ1kyOXVkR1Y0ZEZCaGRHZ2dQU0J3WVhSb0xuTnNhV05sS0RBc0lDMHhLVHRjYmlBZ0lDQWdJSEJoZEdnZ1BTQndZWFJvVzNCaGRHZ3ViR1Z1WjNSb0lDMGdNVjA3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCdFlYQW9iMkpxTENCbWRXNWpkR2x2YmloamIyNTBaWGgwS1NCN1hHNGdJQ0FnSUNCMllYSWdiV1YwYUc5a0lEMGdablZ1WXp0Y2JpQWdJQ0FnSUdsbUlDZ2hiV1YwYUc5a0tTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoamIyNTBaWGgwVUdGMGFDQW1KaUJqYjI1MFpYaDBVR0YwYUM1c1pXNW5kR2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjUwWlhoMElEMGdaR1ZsY0VkbGRDaGpiMjUwWlhoMExDQmpiMjUwWlhoMFVHRjBhQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2FXWWdLR052Ym5SbGVIUWdQVDBnYm5Wc2JDa2djbVYwZFhKdUlIWnZhV1FnTUR0Y2JpQWdJQ0FnSUNBZ2JXVjBhRzlrSUQwZ1kyOXVkR1Y0ZEZ0d1lYUm9YVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSEpsZEhWeWJpQnRaWFJvYjJRZ1BUMGdiblZzYkNBL0lHMWxkR2h2WkNBNklHMWxkR2h2WkM1aGNIQnNlU2hqYjI1MFpYaDBMQ0JoY21kektUdGNiaUFnSUNCOUtUdGNiaUFnZlNrN1hHNWNiaUFnTHk4Z1EyOXVkbVZ1YVdWdVkyVWdkbVZ5YzJsdmJpQnZaaUJoSUdOdmJXMXZiaUIxYzJVZ1kyRnpaU0J2WmlCZ1h5NXRZWEJnT2lCbVpYUmphR2x1WnlCaElIQnliM0JsY25SNUxseHVJQ0JtZFc1amRHbHZiaUJ3YkhWamF5aHZZbW9zSUd0bGVTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCdFlYQW9iMkpxTENCd2NtOXdaWEowZVNoclpYa3BLVHRjYmlBZ2ZWeHVYRzRnSUM4dklFTnZiblpsYm1sbGJtTmxJSFpsY25OcGIyNGdiMllnWVNCamIyMXRiMjRnZFhObElHTmhjMlVnYjJZZ1lGOHVabWxzZEdWeVlEb2djMlZzWldOMGFXNW5JRzl1YkhsY2JpQWdMeThnYjJKcVpXTjBjeUJqYjI1MFlXbHVhVzVuSUhOd1pXTnBabWxqSUdCclpYazZkbUZzZFdWZ0lIQmhhWEp6TGx4dUlDQm1kVzVqZEdsdmJpQjNhR1Z5WlNodlltb3NJR0YwZEhKektTQjdYRzRnSUNBZ2NtVjBkWEp1SUdacGJIUmxjaWh2WW1vc0lHMWhkR05vWlhJb1lYUjBjbk1wS1R0Y2JpQWdmVnh1WEc0Z0lDOHZJRkpsZEhWeWJpQjBhR1VnYldGNGFXMTFiU0JsYkdWdFpXNTBJQ2h2Y2lCbGJHVnRaVzUwTFdKaGMyVmtJR052YlhCMWRHRjBhVzl1S1M1Y2JpQWdablZ1WTNScGIyNGdiV0Y0S0c5aWFpd2dhWFJsY21GMFpXVXNJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQjJZWElnY21WemRXeDBJRDBnTFVsdVptbHVhWFI1TENCc1lYTjBRMjl0Y0hWMFpXUWdQU0F0U1c1bWFXNXBkSGtzWEc0Z0lDQWdJQ0FnSUhaaGJIVmxMQ0JqYjIxd2RYUmxaRHRjYmlBZ0lDQnBaaUFvYVhSbGNtRjBaV1VnUFQwZ2JuVnNiQ0I4ZkNCMGVYQmxiMllnYVhSbGNtRjBaV1VnUFQwZ0oyNTFiV0psY2ljZ0ppWWdkSGx3Wlc5bUlHOWlhbHN3WFNBaFBTQW5iMkpxWldOMEp5QW1KaUJ2WW1vZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2IySnFJRDBnYVhOQmNuSmhlVXhwYTJVb2IySnFLU0EvSUc5aWFpQTZJSFpoYkhWbGN5aHZZbW9wTzF4dUlDQWdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQXNJR3hsYm1kMGFDQTlJRzlpYWk1c1pXNW5kR2c3SUdrZ1BDQnNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnSUNCMllXeDFaU0E5SUc5aWFsdHBYVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIWmhiSFZsSUNFOUlHNTFiR3dnSmlZZ2RtRnNkV1VnUGlCeVpYTjFiSFFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWE4xYkhRZ1BTQjJZV3gxWlR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JwZEdWeVlYUmxaU0E5SUdOaUtHbDBaWEpoZEdWbExDQmpiMjUwWlhoMEtUdGNiaUFnSUNBZ0lHVmhZMmdvYjJKcUxDQm1kVzVqZEdsdmJpaDJMQ0JwYm1SbGVDd2diR2x6ZENrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjF3ZFhSbFpDQTlJR2wwWlhKaGRHVmxLSFlzSUdsdVpHVjRMQ0JzYVhOMEtUdGNiaUFnSUNBZ0lDQWdhV1lnS0dOdmJYQjFkR1ZrSUQ0Z2JHRnpkRU52YlhCMWRHVmtJSHg4SUdOdmJYQjFkR1ZrSUQwOVBTQXRTVzVtYVc1cGRIa2dKaVlnY21WemRXeDBJRDA5UFNBdFNXNW1hVzVwZEhrcElIdGNiaUFnSUNBZ0lDQWdJQ0J5WlhOMWJIUWdQU0IyTzF4dUlDQWdJQ0FnSUNBZ0lHeGhjM1JEYjIxd2RYUmxaQ0E5SUdOdmJYQjFkR1ZrTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSEpsYzNWc2REdGNiaUFnZlZ4dVhHNGdJQzh2SUZKbGRIVnliaUIwYUdVZ2JXbHVhVzExYlNCbGJHVnRaVzUwSUNodmNpQmxiR1Z0Wlc1MExXSmhjMlZrSUdOdmJYQjFkR0YwYVc5dUtTNWNiaUFnWm5WdVkzUnBiMjRnYldsdUtHOWlhaXdnYVhSbGNtRjBaV1VzSUdOdmJuUmxlSFFwSUh0Y2JpQWdJQ0IyWVhJZ2NtVnpkV3gwSUQwZ1NXNW1hVzVwZEhrc0lHeGhjM1JEYjIxd2RYUmxaQ0E5SUVsdVptbHVhWFI1TEZ4dUlDQWdJQ0FnSUNCMllXeDFaU3dnWTI5dGNIVjBaV1E3WEc0Z0lDQWdhV1lnS0dsMFpYSmhkR1ZsSUQwOUlHNTFiR3dnZkh3Z2RIbHdaVzltSUdsMFpYSmhkR1ZsSUQwOUlDZHVkVzFpWlhJbklDWW1JSFI1Y0dWdlppQnZZbXBiTUYwZ0lUMGdKMjlpYW1WamRDY2dKaVlnYjJKcUlDRTlJRzUxYkd3cElIdGNiaUFnSUNBZ0lHOWlhaUE5SUdselFYSnlZWGxNYVd0bEtHOWlhaWtnUHlCdlltb2dPaUIyWVd4MVpYTW9iMkpxS1R0Y2JpQWdJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdMQ0JzWlc1bmRHZ2dQU0J2WW1vdWJHVnVaM1JvT3lCcElEd2diR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnNkV1VnUFNCdlltcGJhVjA3WEc0Z0lDQWdJQ0FnSUdsbUlDaDJZV3gxWlNBaFBTQnVkV3hzSUNZbUlIWmhiSFZsSUR3Z2NtVnpkV3gwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVZ6ZFd4MElEMGdkbUZzZFdVN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYVhSbGNtRjBaV1VnUFNCallpaH
14938BkR1Z5WVhSbFpTd2dZMjl1ZEdWNGRDazdYRzRnSUNBZ0lDQmxZV05vS0c5aWFpd2dablZ1WTNScGIyNG9kaXdnYVc1a1pYZ3NJR3hwYzNRcElIdGNiaUFnSUNBZ0lDQWdZMjl0Y0hWMFpXUWdQU0JwZEdWeVlYUmxaU2gyTENCcGJtUmxlQ3dnYkdsemRDazdYRzRnSUNBZ0lDQWdJR2xtSUNoamIyMXdkWFJsWkNBOElHeGhjM1JEYjIxd2RYUmxaQ0I4ZkNCamIyMXdkWFJsWkNBOVBUMGdTVzVtYVc1cGRIa2dKaVlnY21WemRXeDBJRDA5UFNCSmJtWnBibWwwZVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsYzNWc2RDQTlJSFk3WEc0Z0lDQWdJQ0FnSUNBZ2JHRnpkRU52YlhCMWRHVmtJRDBnWTI5dGNIVjBaV1E3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVJQ0I5WEc1Y2JpQWdMeThnVTJGdGNHeGxJQ29xYmlvcUlISmhibVJ2YlNCMllXeDFaWE1nWm5KdmJTQmhJR052Ykd4bFkzUnBiMjRnZFhOcGJtY2dkR2hsSUcxdlpHVnliaUIyWlhKemFXOXVJRzltSUhSb1pWeHVJQ0F2THlCYlJtbHphR1Z5TFZsaGRHVnpJSE5vZFdabWJHVmRLR2gwZEhCek9pOHZaVzR1ZDJscmFYQmxaR2xoTG05eVp5OTNhV3RwTDBacGMyaGxjdUtBazFsaGRHVnpYM05vZFdabWJHVXBMbHh1SUNBdkx5QkpaaUFxS200cUtpQnBjeUJ1YjNRZ2MzQmxZMmxtYVdWa0xDQnlaWFIxY201eklHRWdjMmx1WjJ4bElISmhibVJ2YlNCbGJHVnRaVzUwTGx4dUlDQXZMeUJVYUdVZ2FXNTBaWEp1WVd3Z1lHZDFZWEprWUNCaGNtZDFiV1Z1ZENCaGJHeHZkM01nYVhRZ2RHOGdkMjl5YXlCM2FYUm9JR0JmTG0xaGNHQXVYRzRnSUdaMWJtTjBhVzl1SUhOaGJYQnNaU2h2WW1vc0lHNHNJR2QxWVhKa0tTQjdYRzRnSUNBZ2FXWWdLRzRnUFQwZ2JuVnNiQ0I4ZkNCbmRXRnlaQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tDRnBjMEZ5Y21GNVRHbHJaU2h2WW1vcEtTQnZZbW9nUFNCMllXeDFaWE1vYjJKcUtUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdlltcGJjbUZ1Wkc5dEtHOWlhaTVzWlc1bmRHZ2dMU0F4S1YwN1hHNGdJQ0FnZlZ4dUlDQWdJSFpoY2lCellXMXdiR1VnUFNCcGMwRnljbUY1VEdsclpTaHZZbW9wSUQ4Z1kyeHZibVVvYjJKcUtTQTZJSFpoYkhWbGN5aHZZbW9wTzF4dUlDQWdJSFpoY2lCc1pXNW5kR2dnUFNCblpYUk1aVzVuZEdnb2MyRnRjR3hsS1R0Y2JpQWdJQ0J1SUQwZ1RXRjBhQzV0WVhnb1RXRjBhQzV0YVc0b2Jpd2diR1Z1WjNSb0tTd2dNQ2s3WEc0Z0lDQWdkbUZ5SUd4aGMzUWdQU0JzWlc1bmRHZ2dMU0F4TzF4dUlDQWdJR1p2Y2lBb2RtRnlJR2x1WkdWNElEMGdNRHNnYVc1a1pYZ2dQQ0J1T3lCcGJtUmxlQ3NyS1NCN1hHNGdJQ0FnSUNCMllYSWdjbUZ1WkNBOUlISmhibVJ2YlNocGJtUmxlQ3dnYkdGemRDazdYRzRnSUNBZ0lDQjJZWElnZEdWdGNDQTlJSE5oYlhCc1pWdHBibVJsZUYwN1hHNGdJQ0FnSUNCellXMXdiR1ZiYVc1a1pYaGRJRDBnYzJGdGNHeGxXM0poYm1SZE8xeHVJQ0FnSUNBZ2MyRnRjR3hsVzNKaGJtUmRJRDBnZEdWdGNEdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSE5oYlhCc1pTNXpiR2xqWlNnd0xDQnVLVHRjYmlBZ2ZWeHVYRzRnSUM4dklGTm9kV1ptYkdVZ1lTQmpiMnhzWldOMGFXOXVMbHh1SUNCbWRXNWpkR2x2YmlCemFIVm1abXhsS0c5aWFpa2dlMXh1SUNBZ0lISmxkSFZ5YmlCellXMXdiR1VvYjJKcUxDQkpibVpwYm1sMGVTazdYRzRnSUgxY2JseHVJQ0F2THlCVGIzSjBJSFJvWlNCdlltcGxZM1FuY3lCMllXeDFaWE1nWW5rZ1lTQmpjbWwwWlhKcGIyNGdjSEp2WkhWalpXUWdZbmtnWVc0Z2FYUmxjbUYwWldVdVhHNGdJR1oxYm1OMGFXOXVJSE52Y25SQ2VTaHZZbW9zSUdsMFpYSmhkR1ZsTENCamIyNTBaWGgwS1NCN1hHNGdJQ0FnZG1GeUlHbHVaR1Y0SUQwZ01EdGNiaUFnSUNCcGRHVnlZWFJsWlNBOUlHTmlLR2wwWlhKaGRHVmxMQ0JqYjI1MFpYaDBLVHRjYmlBZ0lDQnlaWFIxY200Z2NHeDFZMnNvYldGd0tHOWlhaXdnWm5WdVkzUnBiMjRvZG1Gc2RXVXNJR3RsZVN3Z2JHbHpkQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSHRjYmlBZ0lDQWdJQ0FnZG1Gc2RXVTZJSFpoYkhWbExGeHVJQ0FnSUNBZ0lDQnBibVJsZURvZ2FXNWtaWGdyS3l4Y2JpQWdJQ0FnSUNBZ1kzSnBkR1Z5YVdFNklHbDBaWEpoZEdWbEtIWmhiSFZsTENCclpYa3NJR3hwYzNRcFhHNGdJQ0FnSUNCOU8xeHVJQ0FnSUgwcExuTnZjblFvWm5WdVkzUnBiMjRvYkdWbWRDd2djbWxuYUhRcElIdGNiaUFnSUNBZ0lIWmhjaUJoSUQwZ2JHVm1kQzVqY21sMFpYSnBZVHRjYmlBZ0lDQWdJSFpoY2lCaUlEMGdjbWxuYUhRdVkzSnBkR1Z5YVdFN1hHNGdJQ0FnSUNCcFppQW9ZU0FoUFQwZ1lpa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1lTQStJR0lnZkh3Z1lTQTlQVDBnZG05cFpDQXdLU0J5WlhSMWNtNGdNVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHRWdQQ0JpSUh4OElHSWdQVDA5SUhadmFXUWdNQ2tnY21WMGRYSnVJQzB4TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVJR3hsWm5RdWFXNWtaWGdnTFNCeWFXZG9kQzVwYm1SbGVEdGNiaUFnSUNCOUtTd2dKM1poYkhWbEp5azdYRzRnSUgxY2JseHVJQ0F2THlCQmJpQnBiblJsY201aGJDQm1kVzVqZEdsdmJpQjFjMlZrSUdadmNpQmhaMmR5WldkaGRHVWdYQ0puY205MWNDQmllVndpSUc5d1pYSmhkR2x2Ym5NdVhHNGdJR1oxYm1OMGFXOXVJR2R5YjNWd0tHSmxhR0YyYVc5eUxDQndZWEowYVhScGIyNHBJSHRjYmlBZ0lDQnlaWFIxY200Z1puVnVZM1JwYjI0b2IySnFMQ0JwZEdWeVlYUmxaU3dnWTI5dWRHVjRkQ2tnZTF4dUlDQWdJQ0FnZG1GeUlISmxjM1ZzZENBOUlIQmhjblJwZEdsdmJpQS9JRnRiWFN3Z1cxMWRJRG9nZTMwN1hHNGdJQ0FnSUNCcGRHVnlZWFJsWlNBOUlHTmlLR2wwWlhKaGRHVmxMQ0JqYjI1MFpYaDBLVHRjYmlBZ0lDQWdJR1ZoWTJnb2IySnFMQ0JtZFc1amRHbHZiaWgyWVd4MVpTd2dhVzVrWlhncElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUd0bGVTQTlJR2wwWlhKaGRHVmxLSFpoYkhWbExDQnBibVJsZUN3Z2IySnFLVHRjYmlBZ0lDQWdJQ0FnWW1Wb1lYWnBiM0lvY21WemRXeDBMQ0IyWVd4MVpTd2dhMlY1S1R0Y2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkRHRjYmlBZ0lDQjlPMXh1SUNCOVhHNWNiaUFnTHk4Z1IzSnZkWEJ6SUhSb1pTQnZZbXBsWTNRbmN5QjJZV3gxWlhNZ1lua2dZU0JqY21sMFpYSnBiMjR1SUZCaGMzTWdaV2wwYU
14938dWeUlHRWdjM1J5YVc1bklHRjBkSEpwWW5WMFpWeHVJQ0F2THlCMGJ5Qm5jbTkxY0NCaWVTd2diM0lnWVNCbWRXNWpkR2x2YmlCMGFHRjBJSEpsZEhWeWJuTWdkR2hsSUdOeWFYUmxjbWx2Ymk1Y2JpQWdkbUZ5SUdkeWIzVndRbmtnUFNCbmNtOTFjQ2htZFc1amRHbHZiaWh5WlhOMWJIUXNJSFpoYkhWbExDQnJaWGtwSUh0Y2JpQWdJQ0JwWmlBb2FHRnpKREVvY21WemRXeDBMQ0JyWlhrcEtTQnlaWE4xYkhSYmEyVjVYUzV3ZFhOb0tIWmhiSFZsS1RzZ1pXeHpaU0J5WlhOMWJIUmJhMlY1WFNBOUlGdDJZV3gxWlYwN1hHNGdJSDBwTzF4dVhHNGdJQzh2SUVsdVpHVjRaWE1nZEdobElHOWlhbVZqZENkeklIWmhiSFZsY3lCaWVTQmhJR055YVhSbGNtbHZiaXdnYzJsdGFXeGhjaUIwYnlCZ1h5NW5jbTkxY0VKNVlDd2dZblYwSUdadmNseHVJQ0F2THlCM2FHVnVJSGx2ZFNCcmJtOTNJSFJvWVhRZ2VXOTFjaUJwYm1SbGVDQjJZV3gxWlhNZ2QybHNiQ0JpWlNCMWJtbHhkV1V1WEc0Z0lIWmhjaUJwYm1SbGVFSjVJRDBnWjNKdmRYQW9ablZ1WTNScGIyNG9jbVZ6ZFd4MExDQjJZV3gxWlN3Z2EyVjVLU0I3WEc0Z0lDQWdjbVZ6ZFd4MFcydGxlVjBnUFNCMllXeDFaVHRjYmlBZ2ZTazdYRzVjYmlBZ0x5OGdRMjkxYm5SeklHbHVjM1JoYm1ObGN5QnZaaUJoYmlCdlltcGxZM1FnZEdoaGRDQm5jbTkxY0NCaWVTQmhJR05sY25SaGFXNGdZM0pwZEdWeWFXOXVMaUJRWVhOelhHNGdJQzh2SUdWcGRHaGxjaUJoSUhOMGNtbHVaeUJoZEhSeWFXSjFkR1VnZEc4Z1kyOTFiblFnWW5rc0lHOXlJR0VnWm5WdVkzUnBiMjRnZEdoaGRDQnlaWFIxY201eklIUm9aVnh1SUNBdkx5QmpjbWwwWlhKcGIyNHVYRzRnSUhaaGNpQmpiM1Z1ZEVKNUlEMGdaM0p2ZFhBb1puVnVZM1JwYjI0b2NtVnpkV3gwTENCMllXeDFaU3dnYTJWNUtTQjdYRzRnSUNBZ2FXWWdLR2hoY3lReEtISmxjM1ZzZEN3Z2EyVjVLU2tnY21WemRXeDBXMnRsZVYwckt6c2daV3h6WlNCeVpYTjFiSFJiYTJWNVhTQTlJREU3WEc0Z0lIMHBPMXh1WEc0Z0lDOHZJRk53YkdsMElHRWdZMjlzYkdWamRHbHZiaUJwYm5SdklIUjNieUJoY25KaGVYTTZJRzl1WlNCM2FHOXpaU0JsYkdWdFpXNTBjeUJoYkd3Z2NHRnpjeUIwYUdVZ1oybDJaVzVjYmlBZ0x5OGdkSEoxZEdnZ2RHVnpkQ3dnWVc1a0lHOXVaU0IzYUc5elpTQmxiR1Z0Wlc1MGN5QmhiR3dnWkc4Z2JtOTBJSEJoYzNNZ2RHaGxJSFJ5ZFhSb0lIUmxjM1F1WEc0Z0lIWmhjaUJ3WVhKMGFYUnBiMjRnUFNCbmNtOTFjQ2htZFc1amRHbHZiaWh5WlhOMWJIUXNJSFpoYkhWbExDQndZWE56S1NCN1hHNGdJQ0FnY21WemRXeDBXM0JoYzNNZ1B5QXdJRG9nTVYwdWNIVnphQ2gyWVd4MVpTazdYRzRnSUgwc0lIUnlkV1VwTzF4dVhHNGdJQzh2SUZOaFptVnNlU0JqY21WaGRHVWdZU0J5WldGc0xDQnNhWFpsSUdGeWNtRjVJR1p5YjIwZ1lXNTVkR2hwYm1jZ2FYUmxjbUZpYkdVdVhHNGdJSFpoY2lCeVpWTjBjbE41YldKdmJDQTlJQzliWGx4Y2RXUTRNREF0WEZ4MVpHWm1abDE4VzF4Y2RXUTRNREF0WEZ4MVpHSm1abDFiWEZ4MVpHTXdNQzFjWEhWa1ptWm1YWHhiWEZ4MVpEZ3dNQzFjWEhWa1ptWm1YUzluTzF4dUlDQm1kVzVqZEdsdmJpQjBiMEZ5Y21GNUtHOWlhaWtnZTF4dUlDQWdJR2xtSUNnaGIySnFLU0J5WlhSMWNtNGdXMTA3WEc0Z0lDQWdhV1lnS0dselFYSnlZWGtvYjJKcUtTa2djbVYwZFhKdUlITnNhV05sTG1OaGJHd29iMkpxS1R0Y2JpQWdJQ0JwWmlBb2FYTlRkSEpwYm1jb2IySnFLU2tnZTF4dUlDQWdJQ0FnTHk4Z1MyVmxjQ0J6ZFhKeWIyZGhkR1VnY0dGcGNpQmphR0Z5WVdOMFpYSnpJSFJ2WjJWMGFHVnlMbHh1SUNBZ0lDQWdjbVYwZFhKdUlHOWlhaTV0WVhSamFDaHlaVk4wY2xONWJXSnZiQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hwYzBGeWNtRjVUR2xyWlNodlltb3BLU0J5WlhSMWNtNGdiV0Z3S0c5aWFpd2dhV1JsYm5ScGRIa3BPMXh1SUNBZ0lISmxkSFZ5YmlCMllXeDFaWE1vYjJKcUtUdGNiaUFnZlZ4dVhHNGdJQzh2SUZKbGRIVnliaUIwYUdVZ2JuVnRZbVZ5SUc5bUlHVnNaVzFsYm5SeklHbHVJR0VnWTI5c2JHVmpkR2x2Ymk1Y2JpQWdablZ1WTNScGIyNGdjMmw2WlNodlltb3BJSHRjYmlBZ0lDQnBaaUFvYjJKcUlEMDlJRzUxYkd3cElISmxkSFZ5YmlBd08xeHVJQ0FnSUhKbGRIVnliaUJwYzBGeWNtRjVUR2xyWlNodlltb3BJRDhnYjJKcUxteGxibWQwYUNBNklHdGxlWE1vYjJKcUtTNXNaVzVuZEdnN1hHNGdJSDFjYmx4dUlDQXZMeUJKYm5SbGNtNWhiQ0JnWHk1d2FXTnJZQ0JvWld4d1pYSWdablZ1WTNScGIyNGdkRzhnWkdWMFpYSnRhVzVsSUhkb1pYUm9aWElnWUd0bGVXQWdhWE1nWVc0Z1pXNTFiV1Z5WVdKc1pWeHVJQ0F2THlCd2NtOXdaWEowZVNCdVlXMWxJRzltSUdCdlltcGdMbHh1SUNCbWRXNWpkR2x2YmlCclpYbEpiazlpYWloMllXeDFaU3dnYTJWNUxDQnZZbW9wSUh0Y2JpQWdJQ0J5WlhSMWNtNGdhMlY1SUdsdUlHOWlhanRjYmlBZ2ZWeHVYRzRnSUM4dklGSmxkSFZ5YmlCaElHTnZjSGtnYjJZZ2RHaGxJRzlpYW1WamRDQnZibXg1SUdOdmJuUmhhVzVwYm1jZ2RHaGxJR0ZzYkc5M1pXUWdjSEp2Y0dWeWRHbGxjeTVjYmlBZ2RtRnlJSEJwWTJzZ1BTQnlaWE4wUVhKbmRXMWxiblJ6S0daMWJtTjBhVzl1S0c5aWFpd2dhMlY1Y3lrZ2UxeHVJQ0FnSUhaaGNpQnlaWE4xYkhRZ1BTQjdmU3dnYVhSbGNtRjBaV1VnUFNCclpYbHpXekJkTzF4dUlDQWdJR2xtSUNodlltb2dQVDBnYm5Wc2JDa2djbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdJQ0JwWmlBb2FYTkdkVzVqZEdsdmJpUXhLR2wwWlhKaGRHVmxLU2tnZTF4dUlDQWdJQ0FnYVdZZ0tHdGxlWE11YkdWdVozUm9JRDRnTVNrZ2FYUmxjbUYwWldVZ1BTQnZjSFJwYldsNlpVTmlLR2wwWlhKaGRHVmxMQ0JyWlhseld6RmRLVHRjYmlBZ0lDQWdJR3RsZVhNZ1BTQmhiR3hMWlhsektHOWlhaWs3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHbDBaWEpoZEdWbElEMGdhMlY1U1c1UFltbzdYRzRnSUNBZ0lDQnJaWGx6SUQwZ1pteGhkSFJsYmlReEtHdGxlWE1zSUdaaGJITmxMQ0JtWVd4elpTazdYRzRnSUNBZ0lDQnZZbW9nUFNCUFltcGxZM1FvYjJKcUtUdGNiaUFnSUNCOVhHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQXNJR3hsYm1kMGFDQTlJR3RsZVhNdWJHVnVaM1JvT3lCcElEd2diR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUhaaGNpQnJaWGtnUFNCclpYbHpXMmxkTzF4dUlDQWdJQ0FnZG1GeUlIWmhiSFZsSUQwZ2IySnFXMnRsZVYwN1hHNGdJQ0FnSUNCcFppQW9hWFJsY21GMFpXVW9kbUZzZFdVc0lHdGxlU3dnYjJKcUtTa2djbVZ6ZFd4MFcydGxlVjBnUFNCMllXeDFaVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkRHRjYmlBZ2ZTazdYRzVjYmlBZ0x5OGdVbVYwZFhKdUlHRWdZMjl3ZVNCdlppQjBhR1VnYjJKcVpXTjBJSGRwZEdodmRYUWdkR2hsSUdScGMyRnNiRzkzWldRZ2NISnZjR1Z5ZEdsbGN5NWNiaUFnZG1GeUlHOXRhWFFnUFNCeVpYTjBRWEpuZFcxbGJuUnpLR1o
14938xYm1OMGFXOXVLRzlpYWl3Z2EyVjVjeWtnZTF4dUlDQWdJSFpoY2lCcGRHVnlZWFJsWlNBOUlHdGxlWE5iTUYwc0lHTnZiblJsZUhRN1hHNGdJQ0FnYVdZZ0tHbHpSblZ1WTNScGIyNGtNU2hwZEdWeVlYUmxaU2twSUh0Y2JpQWdJQ0FnSUdsMFpYSmhkR1ZsSUQwZ2JtVm5ZWFJsS0dsMFpYSmhkR1ZsS1R0Y2JpQWdJQ0FnSUdsbUlDaHJaWGx6TG14bGJtZDBhQ0ErSURFcElHTnZiblJsZUhRZ1BTQnJaWGx6V3pGZE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JyWlhseklEMGdiV0Z3S0dac1lYUjBaVzRrTVNoclpYbHpMQ0JtWVd4elpTd2dabUZzYzJVcExDQlRkSEpwYm1jcE8xeHVJQ0FnSUNBZ2FYUmxjbUYwWldVZ1BTQm1kVzVqZEdsdmJpaDJZV3gxWlN3Z2EyVjVLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUFoWTI5dWRHRnBibk1vYTJWNWN5d2dhMlY1S1R0Y2JpQWdJQ0FnSUgwN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQndhV05yS0c5aWFpd2dhWFJsY21GMFpXVXNJR052Ym5SbGVIUXBPMXh1SUNCOUtUdGNibHh1SUNBdkx5QlNaWFIxY201eklHVjJaWEo1ZEdocGJtY2dZblYwSUhSb1pTQnNZWE4wSUdWdWRISjVJRzltSUhSb1pTQmhjbkpoZVM0Z1JYTndaV05wWVd4c2VTQjFjMlZtZFd3Z2IyNWNiaUFnTHk4Z2RHaGxJR0Z5WjNWdFpXNTBjeUJ2WW1wbFkzUXVJRkJoYzNOcGJtY2dLaXB1S2lvZ2QybHNiQ0J5WlhSMWNtNGdZV3hzSUhSb1pTQjJZV3gxWlhNZ2FXNWNiaUFnTHk4Z2RHaGxJR0Z5Y21GNUxDQmxlR05zZFdScGJtY2dkR2hsSUd4aGMzUWdUaTVjYmlBZ1puVnVZM1JwYjI0Z2FXNXBkR2xoYkNoaGNuSmhlU3dnYml3Z1ozVmhjbVFwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdjMnhwWTJVdVkyRnNiQ2hoY25KaGVTd2dNQ3dnVFdGMGFDNXRZWGdvTUN3Z1lYSnlZWGt1YkdWdVozUm9JQzBnS0c0Z1BUMGdiblZzYkNCOGZDQm5kV0Z5WkNBL0lERWdPaUJ1S1NrcE8xeHVJQ0I5WEc1Y2JpQWdMeThnUjJWMElIUm9aU0JtYVhKemRDQmxiR1Z0Wlc1MElHOW1JR0Z1SUdGeWNtRjVMaUJRWVhOemFXNW5JQ29xYmlvcUlIZHBiR3dnY21WMGRYSnVJSFJvWlNCbWFYSnpkQ0JPWEc0Z0lDOHZJSFpoYkhWbGN5QnBiaUIwYUdVZ1lYSnlZWGt1SUZSb1pTQXFLbWQxWVhKa0tpb2dZMmhsWTJzZ1lXeHNiM2R6SUdsMElIUnZJSGR2Y21zZ2QybDBhQ0JnWHk1dFlYQmdMbHh1SUNCbWRXNWpkR2x2YmlCbWFYSnpkQ2hoY25KaGVTd2diaXdnWjNWaGNtUXBJSHRjYmlBZ0lDQnBaaUFvWVhKeVlYa2dQVDBnYm5Wc2JDQjhmQ0JoY25KaGVTNXNaVzVuZEdnZ1BDQXhLU0J5WlhSMWNtNGdiaUE5UFNCdWRXeHNJSHg4SUdkMVlYSmtJRDhnZG05cFpDQXdJRG9nVzEwN1hHNGdJQ0FnYVdZZ0tHNGdQVDBnYm5Wc2JDQjhmQ0JuZFdGeVpDa2djbVYwZFhKdUlHRnljbUY1V3pCZE8xeHVJQ0FnSUhKbGRIVnliaUJwYm1sMGFXRnNLR0Z5Y21GNUxDQmhjbkpoZVM1c1pXNW5kR2dnTFNCdUtUdGNiaUFnZlZ4dVhHNGdJQzh2SUZKbGRIVnlibk1nWlhabGNubDBhR2x1WnlCaWRYUWdkR2hsSUdacGNuTjBJR1Z1ZEhKNUlHOW1JSFJvWlNCZ1lYSnlZWGxnTGlCRmMzQmxZMmxoYkd4NUlIVnpaV1oxYkNCdmJseHVJQ0F2THlCMGFHVWdZR0Z5WjNWdFpXNTBjMkFnYjJKcVpXTjBMaUJRWVhOemFXNW5JR0Z1SUNvcWJpb3FJSGRwYkd3Z2NtVjBkWEp1SUhSb1pTQnlaWE4wSUU0Z2RtRnNkV1Z6SUdsdUlIUm9aVnh1SUNBdkx5QmdZWEp5WVhsZ0xseHVJQ0JtZFc1amRHbHZiaUJ5WlhOMEtHRnljbUY1TENCdUxDQm5kV0Z5WkNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJ6YkdsalpTNWpZV3hzS0dGeWNtRjVMQ0J1SUQwOUlHNTFiR3dnZkh3Z1ozVmhjbVFnUHlBeElEb2diaWs3WEc0Z0lIMWNibHh1SUNBdkx5QkhaWFFnZEdobElHeGhjM1FnWld4bGJXVnVkQ0J2WmlCaGJpQmhjbkpoZVM0Z1VHRnpjMmx1WnlBcUttNHFLaUIzYVd4c0lISmxkSFZ5YmlCMGFHVWdiR0Z6ZENCT1hHNGdJQzh2SUhaaGJIVmxjeUJwYmlCMGFHVWdZWEp5WVhrdVhHNGdJR1oxYm1OMGFXOXVJR3hoYzNRb1lYSnlZWGtzSUc0c0lHZDFZWEprS1NCN1hHNGdJQ0FnYVdZZ0tHRnljbUY1SUQwOUlHNTFiR3dnZkh3Z1lYSnlZWGt1YkdWdVozUm9JRHdnTVNrZ2NtVjBkWEp1SUc0Z1BUMGdiblZzYkNCOGZDQm5kV0Z5WkNBL0lIWnZhV1FnTUNBNklGdGRPMXh1SUNBZ0lHbG1JQ2h1SUQwOUlHNTFiR3dnZkh3Z1ozVmhjbVFwSUhKbGRIVnliaUJoY25KaGVWdGhjbkpoZVM1c1pXNW5kR2dnTFNBeFhUdGNiaUFnSUNCeVpYUjFjbTRnY21WemRDaGhjbkpoZVN3Z1RXRjBhQzV0WVhnb01Dd2dZWEp5WVhrdWJHVnVaM1JvSUMwZ2Jpa3BPMXh1SUNCOVhHNWNiaUFnTHk4Z1ZISnBiU0J2ZFhRZ1lXeHNJR1poYkhONUlIWmhiSFZsY3lCbWNtOXRJR0Z1SUdGeWNtRjVMbHh1SUNCbWRXNWpkR2x2YmlCamIyMXdZV04wS0dGeWNtRjVLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHWnBiSFJsY2loaGNuSmhlU3dnUW05dmJHVmhiaWs3WEc0Z0lIMWNibHh1SUNBdkx5QkdiR0YwZEdWdUlHOTFkQ0JoYmlCaGNuSmhlU3dnWldsMGFHVnlJSEpsWTNWeWMybDJaV3g1SUNoaWVTQmtaV1poZFd4MEtTd2diM0lnZFhBZ2RHOGdZR1JsY0hSb1lDNWNiaUFnTHk4Z1VHRnpjMmx1WnlCZ2RISjFaV0FnYjNJZ1lHWmhiSE5sWUNCaGN5QmdaR1Z3ZEdoZ0lHMWxZVzV6SUdBeFlDQnZjaUJnU1c1bWFXNXBkSGxnTENCeVpYTndaV04wYVhabGJIa3VYRzRnSUdaMWJtTjBhVzl1SUdac1lYUjBaVzRvWVhKeVlYa3NJR1JsY0hSb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUdac1lYUjBaVzRrTVNoaGNuSmhlU3dnWkdWd2RHZ3NJR1poYkhObEtUdGNiaUFnZlZ4dVhHNGdJQzh2SUZSaGEyVWdkR2hsSUdScFptWmxjbVZ1WTJVZ1ltVjBkMlZsYmlCdmJtVWdZWEp5WVhrZ1lXNWtJR0VnYm5WdFltVnlJRzltSUc5MGFHVnlJR0Z5Y21GNWN5NWNiaUFnTHk4Z1QyNXNlU0IwYUdVZ1pXeGxiV1Z1ZEhNZ2NISmxjMlZ1ZENCcGJpQnFkWE4wSUhSb1pTQm1hWEp6ZENCaGNuSmhlU0IzYVd4c0lISmxiV0ZwYmk1Y2JpQWdkbUZ5SUdScFptWmxjbVZ1WTJVZ1BTQnlaWE4wUVhKbmRXMWxiblJ6S0daMWJtTjBhVzl1S0dGeWNtRjVMQ0J5WlhOMEtTQjdYRzRnSUNBZ2NtVnpkQ0E5SUdac1lYUjBaVzRrTVNoeVpYTjBMQ0IwY25WbExDQjBjblZsS1R0Y2JpQWdJQ0J5WlhSMWNtNGdabWxzZEdWeUtHRnljbUY1TENCbWRXNWpkR2x2YmloMllXeDFaU2w3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdJV052Ym5SaGFXNXpLSEpsYzNRc0lIWmhiSFZsS1R0Y2JpQWdJQ0I5S1R0Y2JpQWdmU2s3WEc1Y2JpQWdMeThnVW1WMGRYSnVJR0VnZG1WeWMybHZiaUJ2WmlCMGFHVWdZWEp5WVhrZ2RHaGhkQ0JrYjJWeklHNXZkQ0JqYjI1MFlXbHVJSFJvWlNCemNHVmphV1pwWldRZ2RtRnNkV1VvY3lrdVhHNGdJSFpoY2lCM2FYUm9iM1YwSUQwZ2NtVnpkRUZ5WjNWdFpXNTBjeWhtZFc1amRHbHZiaWhoY25KaGVTd2diM1JvWlhKQmNuSmhlWE1wSUh0Y2JpQWdJQ0J5WlhSMWNtNGdaR2xtWm1WeVpXNWpaU2hoY25KaGVTd2diM1JvWlhKQmNuSmhlWE1wTzF4dUlDQjlLVHRjYmx4dUlDQXZMeUJRY205a2RXTmxJR0VnWkhWd2JHbGpZWFJsTFdaeVpXVWdkbVZ5YzJsdmJpQnZaaUIwYU
14938dVZ1lYSnlZWGt1SUVsbUlIUm9aU0JoY25KaGVTQm9ZWE1nWVd4eVpXRmtlVnh1SUNBdkx5QmlaV1Z1SUhOdmNuUmxaQ3dnZVc5MUlHaGhkbVVnZEdobElHOXdkR2x2YmlCdlppQjFjMmx1WnlCaElHWmhjM1JsY2lCaGJHZHZjbWwwYUcwdVhHNGdJQzh2SUZSb1pTQm1ZWE4wWlhJZ1lXeG5iM0pwZEdodElIZHBiR3dnYm05MElIZHZjbXNnZDJsMGFDQmhiaUJwZEdWeVlYUmxaU0JwWmlCMGFHVWdhWFJsY21GMFpXVmNiaUFnTHk4Z2FYTWdibTkwSUdFZ2IyNWxMWFJ2TFc5dVpTQm1kVzVqZEdsdmJpd2djMjhnY0hKdmRtbGthVzVuSUdGdUlHbDBaWEpoZEdWbElIZHBiR3dnWkdsellXSnNaVnh1SUNBdkx5QjBhR1VnWm1GemRHVnlJR0ZzWjI5eWFYUm9iUzVjYmlBZ1puVnVZM1JwYjI0Z2RXNXBjU2hoY25KaGVTd2dhWE5UYjNKMFpXUXNJR2wwWlhKaGRHVmxMQ0JqYjI1MFpYaDBLU0I3WEc0Z0lDQWdhV1lnS0NGcGMwSnZiMnhsWVc0b2FYTlRiM0owWldRcEtTQjdYRzRnSUNBZ0lDQmpiMjUwWlhoMElEMGdhWFJsY21GMFpXVTdYRzRnSUNBZ0lDQnBkR1Z5WVhSbFpTQTlJR2x6VTI5eWRHVmtPMXh1SUNBZ0lDQWdhWE5UYjNKMFpXUWdQU0JtWVd4elpUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tHbDBaWEpoZEdWbElDRTlJRzUxYkd3cElHbDBaWEpoZEdWbElEMGdZMklvYVhSbGNtRjBaV1VzSUdOdmJuUmxlSFFwTzF4dUlDQWdJSFpoY2lCeVpYTjFiSFFnUFNCYlhUdGNiaUFnSUNCMllYSWdjMlZsYmlBOUlGdGRPMXh1SUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3TENCc1pXNW5kR2dnUFNCblpYUk1aVzVuZEdnb1lYSnlZWGtwT3lCcElEd2diR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUhaaGNpQjJZV3gxWlNBOUlHRnljbUY1VzJsZExGeHVJQ0FnSUNBZ0lDQWdJR052YlhCMWRHVmtJRDBnYVhSbGNtRjBaV1VnUHlCcGRHVnlZWFJsWlNoMllXeDFaU3dnYVN3Z1lYSnlZWGtwSURvZ2RtRnNkV1U3WEc0Z0lDQWdJQ0JwWmlBb2FYTlRiM0owWldRZ0ppWWdJV2wwWlhKaGRHVmxLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hhU0I4ZkNCelpXVnVJQ0U5UFNCamIyMXdkWFJsWkNrZ2NtVnpkV3gwTG5CMWMyZ29kbUZzZFdVcE8xeHVJQ0FnSUNBZ0lDQnpaV1Z1SUQwZ1kyOXRjSFYwWldRN1hHNGdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tHbDBaWEpoZEdWbEtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNnaFkyOXVkR0ZwYm5Nb2MyVmxiaXdnWTI5dGNIVjBaV1FwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjMlZsYmk1d2RYTm9LR052YlhCMWRHVmtLVHRjYmlBZ0lDQWdJQ0FnSUNCeVpYTjFiSFF1Y0hWemFDaDJZV3gxWlNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9JV052Ym5SaGFXNXpLSEpsYzNWc2RDd2dkbUZzZFdVcEtTQjdYRzRnSUNBZ0lDQWdJSEpsYzNWc2RDNXdkWE5vS0haaGJIVmxLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkRHRjYmlBZ2ZWeHVYRzRnSUM4dklGQnliMlIxWTJVZ1lXNGdZWEp5WVhrZ2RHaGhkQ0JqYjI1MFlXbHVjeUIwYUdVZ2RXNXBiMjQ2SUdWaFkyZ2daR2x6ZEdsdVkzUWdaV3hsYldWdWRDQm1jbTl0SUdGc2JDQnZabHh1SUNBdkx5QjBhR1VnY0dGemMyVmtMV2x1SUdGeWNtRjVjeTVjYmlBZ2RtRnlJSFZ1YVc5dUlEMGdjbVZ6ZEVGeVozVnRaVzUwY3lobWRXNWpkR2x2YmloaGNuSmhlWE1wSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkVzVwY1NobWJHRjBkR1Z1SkRFb1lYSnlZWGx6TENCMGNuVmxMQ0IwY25WbEtTazdYRzRnSUgwcE8xeHVYRzRnSUM4dklGQnliMlIxWTJVZ1lXNGdZWEp5WVhrZ2RHaGhkQ0JqYjI1MFlXbHVjeUJsZG1WeWVTQnBkR1Z0SUhOb1lYSmxaQ0JpWlhSM1pXVnVJR0ZzYkNCMGFHVmNiaUFnTHk4Z2NHRnpjMlZrTFdsdUlHRnljbUY1Y3k1Y2JpQWdablZ1WTNScGIyNGdhVzUwWlhKelpXTjBhVzl1S0dGeWNtRjVLU0I3WEc0Z0lDQWdkbUZ5SUhKbGMzVnNkQ0E5SUZ0ZE8xeHVJQ0FnSUhaaGNpQmhjbWR6VEdWdVozUm9JRDBnWVhKbmRXMWxiblJ6TG14bGJtZDBhRHRjYmlBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTUN3Z2JHVnVaM1JvSUQwZ1oyVjBUR1Z1WjNSb0tHRnljbUY1S1RzZ2FTQThJR3hsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCMllYSWdhWFJsYlNBOUlHRnljbUY1VzJsZE8xeHVJQ0FnSUNBZ2FXWWdLR052Ym5SaGFXNXpLSEpsYzNWc2RDd2dhWFJsYlNrcElHTnZiblJwYm5WbE8xeHVJQ0FnSUNBZ2RtRnlJR283WEc0Z0lDQWdJQ0JtYjNJZ0tHb2dQU0F4T3lCcUlEd2dZWEpuYzB4bGJtZDBhRHNnYWlzcktTQjdYRzRnSUNBZ0lDQWdJR2xtSUNnaFkyOXVkR0ZwYm5Nb1lYSm5kVzFsYm5SelcycGRMQ0JwZEdWdEtTa2dZbkpsWVdzN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCcFppQW9haUE5UFQwZ1lYSm5jMHhsYm1kMGFDa2djbVZ6ZFd4MExuQjFjMmdvYVhSbGJTazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzRnSUgxY2JseHVJQ0F2THlCRGIyMXdiR1Z0Wlc1MElHOW1JSHBwY0M0Z1ZXNTZhWEFnWVdOalpYQjBjeUJoYmlCaGNuSmhlU0J2WmlCaGNuSmhlWE1nWVc1a0lHZHliM1Z3YzF4dUlDQXZMeUJsWVdOb0lHRnljbUY1SjNNZ1pXeGxiV1Z1ZEhNZ2IyNGdjMmhoY21Wa0lHbHVaR2xqWlhNdVhHNGdJR1oxYm1OMGFXOXVJSFZ1ZW1sd0tHRnljbUY1S1NCN1hHNGdJQ0FnZG1GeUlHeGxibWQwYUNBOUlHRnljbUY1SUNZbUlHMWhlQ2hoY25KaGVTd2daMlYwVEdWdVozUm9LUzVzWlc1bmRHZ2dmSHdnTUR0Y2JpQWdJQ0IyWVhJZ2NtVnpkV3gwSUQwZ1FYSnlZWGtvYkdWdVozUm9LVHRjYmx4dUlDQWdJR1p2Y2lBb2RtRnlJR2x1WkdWNElEMGdNRHNnYVc1a1pYZ2dQQ0JzWlc1bmRHZzdJR2x1WkdWNEt5c3BJSHRjYmlBZ0lDQWdJSEpsYzNWc2RGdHBibVJsZUYwZ1BTQndiSFZqYXloaGNuSmhlU3dnYVc1a1pYZ3BPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnY21WemRXeDBPMXh1SUNCOVhHNWNiaUFnTHk4Z1dtbHdJSFJ2WjJWMGFHVnlJRzExYkhScGNHeGxJR3hwYzNSeklHbHVkRzhnWVNCemFXNW5iR1VnWVhKeVlYa2dMUzBnWld4bGJXVnVkSE1nZEdoaGRDQnphR0Z5WlZ4dUlDQXZMeUJoYmlCcGJtUmxlQ0JuYnlCMGIyZGxkR2hsY2k1Y2JpQWdkbUZ5SUhwcGNDQTlJSEpsYzNSQmNtZDFiV1Z1ZEhNb2RXNTZhWEFwTzF4dVhHNGdJQzh2SUVOdmJuWmxjblJ6SUd4cGMzUnpJR2x1ZEc4Z2IySnFaV04wY3k0Z1VHRnpjeUJsYVhSb1pYSWdZU0J6YVc1bmJHVWdZWEp5WVhrZ2IyWWdZRnRyWlhrc0lIWmhiSFZsWFdCY2JpQWdMeThnY0dGcGNuTXNJRzl5SUhSM2J5QndZWEpoYkd4bGJDQmhjbkpoZVhNZ2IyWWdkR2hsSUhOaGJXVWdiR1Z1WjNSb0lDMHRJRzl1WlNCdlppQnJaWGx6TENCaGJtUWdiMjVsSUc5bVhHNGdJQzh2SUhSb1pTQmpiM0p5WlhOd2IyNWthVzVuSUhaaGJIVmxjeTRnVUdGemMybHVaeUJpZVNCd1lXbHljeUJwY3lCMGFHVWdjbVYyWlhKelpTQnZaaUJnWHk1d1lXbHljMkF1WEc0Z0lHWjFibU4wYVc5dUlHOWlhbVZqZENoc2FYTjBMQ0IyWVd4MVpYTXBJSHRjYmlBZ0lDQjJZWElnY21WemRXeDBJRDBnZTMwN1hHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQXNJR3hsYm1kMGFDQTlJR2RsZEV4bGJtZDBhQ2hzYVhOMEtUc2dhU0E4SUd4bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQnBaaUFvZG1Gc2RXVnpLU0I3WEc0Z0lDQWdJQ0FnSUhKbGMzVnNkRnRzYVhOMFcybGRYU0E5SUhaaGJIVmxjMXRwWFR0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhKbGMzVnNkRnRzYVhOMFcybGRXekJkWFNBOUlHeHBjM1JiYVYxYk1WMDdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzRnSUgxY2JseHVJQ0F2THlCSFpXNWxjbUYwWlNCaGJpQnBiblJsWjJWeUlFRnljbUY1SUdOdmJuUmhhVzVwYm1jZ1lXNGdZWEpwZEdodFpYUnBZeUJ3Y205bmNtVnpjMmx2Ymk0Z1FTQndiM0owSUc5b
14938VhHNGdJQzh2SUhSb1pTQnVZWFJwZG1VZ1VIbDBhRzl1SUdCeVlXNW5aU2dwWUNCbWRXNWpkR2x2Ymk0Z1UyVmxYRzRnSUM4dklGdDBhR1VnVUhsMGFHOXVJR1J2WTNWdFpXNTBZWFJwYjI1ZEtHaDBkSEJ6T2k4dlpHOWpjeTV3ZVhSb2IyNHViM0puTDJ4cFluSmhjbmt2Wm5WdVkzUnBiMjV6TG1oMGJXd2pjbUZ1WjJVcExseHVJQ0JtZFc1amRHbHZiaUJ5WVc1blpTaHpkR0Z5ZEN3Z2MzUnZjQ3dnYzNSbGNDa2dlMXh1SUNBZ0lHbG1JQ2h6ZEc5d0lEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lITjBiM0FnUFNCemRHRnlkQ0I4ZkNBd08xeHVJQ0FnSUNBZ2MzUmhjblFnUFNBd08xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb0lYTjBaWEFwSUh0Y2JpQWdJQ0FnSUhOMFpYQWdQU0J6ZEc5d0lEd2djM1JoY25RZ1B5QXRNU0E2SURFN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZG1GeUlHeGxibWQwYUNBOUlFMWhkR2d1YldGNEtFMWhkR2d1WTJWcGJDZ29jM1J2Y0NBdElITjBZWEowS1NBdklITjBaWEFwTENBd0tUdGNiaUFnSUNCMllYSWdjbUZ1WjJVZ1BTQkJjbkpoZVNoc1pXNW5kR2dwTzF4dVhHNGdJQ0FnWm05eUlDaDJZWElnYVdSNElEMGdNRHNnYVdSNElEd2diR1Z1WjNSb095QnBaSGdyS3l3Z2MzUmhjblFnS3owZ2MzUmxjQ2tnZTF4dUlDQWdJQ0FnY21GdVoyVmJhV1I0WFNBOUlITjBZWEowTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnlZVzVuWlR0Y2JpQWdmVnh1WEc0Z0lDOHZJRU5vZFc1cklHRWdjMmx1WjJ4bElHRnljbUY1SUdsdWRHOGdiWFZzZEdsd2JHVWdZWEp5WVhsekxDQmxZV05vSUdOdmJuUmhhVzVwYm1jZ1lHTnZkVzUwWUNCdmNpQm1aWGRsY2x4dUlDQXZMeUJwZEdWdGN5NWNiaUFnWm5WdVkzUnBiMjRnWTJoMWJtc29ZWEp5WVhrc0lHTnZkVzUwS1NCN1hHNGdJQ0FnYVdZZ0tHTnZkVzUwSUQwOUlHNTFiR3dnZkh3Z1kyOTFiblFnUENBeEtTQnlaWFIxY200Z1cxMDdYRzRnSUNBZ2RtRnlJSEpsYzNWc2RDQTlJRnRkTzF4dUlDQWdJSFpoY2lCcElEMGdNQ3dnYkdWdVozUm9JRDBnWVhKeVlYa3ViR1Z1WjNSb08xeHVJQ0FnSUhkb2FXeGxJQ2hwSUR3Z2JHVnVaM1JvS1NCN1hHNGdJQ0FnSUNCeVpYTjFiSFF1Y0hWemFDaHpiR2xqWlM1allXeHNLR0Z5Y21GNUxDQnBMQ0JwSUNzOUlHTnZkVzUwS1NrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnlaWE4xYkhRN1hHNGdJSDFjYmx4dUlDQXZMeUJJWld4d1pYSWdablZ1WTNScGIyNGdkRzhnWTI5dWRHbHVkV1VnWTJoaGFXNXBibWNnYVc1MFpYSnRaV1JwWVhSbElISmxjM1ZzZEhNdVhHNGdJR1oxYm1OMGFXOXVJR05vWVdsdVVtVnpkV3gwS0dsdWMzUmhibU5sTENCdlltb3BJSHRjYmlBZ0lDQnlaWFIxY200Z2FXNXpkR0Z1WTJVdVgyTm9ZV2x1SUQ4Z1h5UXhLRzlpYWlrdVkyaGhhVzRvS1NBNklHOWlhanRjYmlBZ2ZWeHVYRzRnSUM4dklFRmtaQ0I1YjNWeUlHOTNiaUJqZFhOMGIyMGdablZ1WTNScGIyNXpJSFJ2SUhSb1pTQlZibVJsY25OamIzSmxJRzlpYW1WamRDNWNiaUFnWm5WdVkzUnBiMjRnYldsNGFXNG9iMkpxS1NCN1hHNGdJQ0FnWldGamFDaG1kVzVqZEdsdmJuTW9iMkpxS1N3Z1puVnVZM1JwYjI0b2JtRnRaU2tnZTF4dUlDQWdJQ0FnZG1GeUlHWjFibU1nUFNCZkpERmJibUZ0WlYwZ1BTQnZZbXBiYm1GdFpWMDdYRzRnSUNBZ0lDQmZKREV1Y0hKdmRHOTBlWEJsVzI1aGJXVmRJRDBnWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJoY21keklEMGdXM1JvYVhNdVgzZHlZWEJ3WldSZE8xeHVJQ0FnSUNBZ0lDQndkWE5vTG1Gd2NHeDVLR0Z5WjNNc0lHRnlaM1Z0Wlc1MGN5azdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmphR0ZwYmxKbGMzVnNkQ2gwYUdsekxDQm1kVzVqTG1Gd2NHeDVLRjhrTVN3Z1lYSm5jeWtwTzF4dUlDQWdJQ0FnZlR0Y2JpQWdJQ0I5S1R0Y2JpQWdJQ0J5WlhSMWNtNGdYeVF4TzF4dUlDQjlYRzVjYmlBZ0x5OGdRV1JrSUdGc2JDQnRkWFJoZEc5eUlHQkJjbkpoZVdBZ1puVnVZM1JwYjI1eklIUnZJSFJvWlNCM2NtRndjR1Z5TGx4dUlDQmxZV05vS0ZzbmNHOXdKeXdnSjNCMWMyZ25MQ0FuY21WMlpYSnpaU2NzSUNkemFHbG1kQ2NzSUNkemIzSjBKeXdnSjNOd2JHbGpaU2NzSUNkMWJuTm9hV1owSjEwc0lHWjFibU4wYVc5dUtHNWhiV1VwSUh0Y2JpQWdJQ0IyWVhJZ2JXVjBhRzlrSUQwZ1FYSnlZWGxRY205MGIxdHVZVzFsWFR0Y2JpQWdJQ0JmSkRFdWNISnZkRzkwZVhCbFcyNWhiV1ZkSUQwZ1puVnVZM1JwYjI0b0tTQjdYRzRnSUNBZ0lDQjJZWElnYjJKcUlEMGdkR2hwY3k1ZmQzSmhjSEJsWkR0Y2JpQWdJQ0FnSUdsbUlDaHZZbW9nSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNCdFpYUm9iMlF1WVhCd2JIa29iMkpxTENCaGNtZDFiV1Z1ZEhNcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvS0c1aGJXVWdQVDA5SUNkemFHbG1kQ2NnZkh3Z2JtRnRaU0E5UFQwZ0ozTndiR2xqWlNjcElDWW1JRzlpYWk1c1pXNW5kR2dnUFQwOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnSUNCa1pXeGxkR1VnYjJKcVd6QmRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J5WlhSMWNtNGdZMmhoYVc1U1pYTjFiSFFvZEdocGN5d2diMkpxS1R0Y2JpQWdJQ0I5TzF4dUlDQjlLVHRjYmx4dUlDQXZMeUJCWkdRZ1lXeHNJR0ZqWTJWemMyOXlJR0JCY25KaGVXQWdablZ1WTNScGIyNXpJSFJ2SUhSb1pTQjNjbUZ3Y0dWeUxseHVJQ0JsWVdOb0tGc25ZMjl1WTJGMEp5d2dKMnB2YVc0bkxDQW5jMnhwWTJVblhTd2dablZ1WTNScGIyNG9ibUZ0WlNrZ2UxeHVJQ0FnSUhaaGNpQnRaWFJvYjJRZ1BTQkJjbkpoZVZCeWIzUnZXMjVoYldWZE8xeHVJQ0FnSUY4a01TNXdjbTkwYjNSNWNHVmJibUZ0WlYwZ1BTQm1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQWdJSFpoY2lCdlltb2dQU0IwYUdsekxsOTNjbUZ3Y0dWa08xeHVJQ0FnSUNBZ2FXWWdLRzlpYWlBaFBTQnVkV3hzS1NCdlltb2dQU0J0WlhSb2IyUXVZWEJ3Ykhrb2IySnFMQ0JoY21kMWJXVnVkSE1wTzF4dUlDQWdJQ0FnY21WMGRYSnVJR05vWVdsdVVtVnpkV3gwS0hSb2FYTXNJRzlpYWlrN1hHNGdJQ0FnZlR0Y2JpQWdmU2s3WEc1Y2JpQWdMeThnVG1GdFpXUWdSWGh3YjNKMGMxeHVYRzRnSUhaaGNpQmhiR3hGZUhCdmNuUnpJRDBnZTF4dUlDQWdJRjlmY0hKdmRHOWZYem9nYm5Wc2JDeGNiaUFnSUNCV1JWSlRTVTlPT2lCV1JWSlRTVTlPTEZ4dUlDQWdJSEpsYzNSQmNtZDFiV1Z1ZEhNNklISmxjM1JCY21kMWJXVnVkSE1zWEc0Z0lDQWdhWE5QWW1wbFkzUTZJR2x6VDJKcVpXTjBMRnh1SUNBZ0lHbHpUblZzYkRvZ2FYTk9kV3hzTEZ4dUlDQWdJR2x6Vlc1a1pXWnBibVZrT2lCcGMxVnVaR1ZtYVc1bFpDeGNiaUFnSUNCcGMwSnZiMnhsWVc0NklHbHpRbTl2YkdWaGJpeGNiaUFnSUNCcGMwVnNaVzFsYm5RNklHbHpSV3hsYldWdWRDeGNiaU
14938FnSUNCcGMxTjBjbWx1WnpvZ2FYTlRkSEpwYm1jc1hHNGdJQ0FnYVhOT2RXMWlaWEk2SUdselRuVnRZbVZ5TEZ4dUlDQWdJR2x6UkdGMFpUb2dhWE5FWVhSbExGeHVJQ0FnSUdselVtVm5SWGh3T2lCcGMxSmxaMFY0Y0N4Y2JpQWdJQ0JwYzBWeWNtOXlPaUJwYzBWeWNtOXlMRnh1SUNBZ0lHbHpVM2x0WW05c09pQnBjMU41YldKdmJDeGNiaUFnSUNCcGMwRnljbUY1UW5WbVptVnlPaUJwYzBGeWNtRjVRblZtWm1WeUxGeHVJQ0FnSUdselJHRjBZVlpwWlhjNklHbHpSR0YwWVZacFpYY2tNU3hjYmlBZ0lDQnBjMEZ5Y21GNU9pQnBjMEZ5Y21GNUxGeHVJQ0FnSUdselJuVnVZM1JwYjI0NklHbHpSblZ1WTNScGIyNGtNU3hjYmlBZ0lDQnBjMEZ5WjNWdFpXNTBjem9nYVhOQmNtZDFiV1Z1ZEhNa01TeGNiaUFnSUNCcGMwWnBibWwwWlRvZ2FYTkdhVzVwZEdVa01TeGNiaUFnSUNCcGMwNWhUam9nYVhOT1lVNGtNU3hjYmlBZ0lDQnBjMVI1Y0dWa1FYSnlZWGs2SUdselZIbHdaV1JCY25KaGVTUXhMRnh1SUNBZ0lHbHpSVzF3ZEhrNklHbHpSVzF3ZEhrc1hHNGdJQ0FnYVhOTllYUmphRG9nYVhOTllYUmphQ3hjYmlBZ0lDQnBjMFZ4ZFdGc09pQnBjMFZ4ZFdGc0xGeHVJQ0FnSUdselRXRndPaUJwYzAxaGNDeGNiaUFnSUNCcGMxZGxZV3ROWVhBNklHbHpWMlZoYTAxaGNDeGNiaUFnSUNCcGMxTmxkRG9nYVhOVFpYUXNYRzRnSUNBZ2FYTlhaV0ZyVTJWME9pQnBjMWRsWVd0VFpYUXNYRzRnSUNBZ2EyVjVjem9nYTJWNWN5eGNiaUFnSUNCaGJHeExaWGx6T2lCaGJHeExaWGx6TEZ4dUlDQWdJSFpoYkhWbGN6b2dkbUZzZFdWekxGeHVJQ0FnSUhCaGFYSnpPaUJ3WVdseWN5eGNiaUFnSUNCcGJuWmxjblE2SUdsdWRtVnlkQ3hjYmlBZ0lDQm1kVzVqZEdsdmJuTTZJR1oxYm1OMGFXOXVjeXhjYmlBZ0lDQnRaWFJvYjJSek9pQm1kVzVqZEdsdmJuTXNYRzRnSUNBZ1pYaDBaVzVrT2lCbGVIUmxibVFzWEc0Z0lDQWdaWGgwWlc1a1QzZHVPaUJsZUhSbGJtUlBkMjRzWEc0Z0lDQWdZWE56YVdkdU9pQmxlSFJsYm1SUGQyNHNYRzRnSUNBZ1pHVm1ZWFZzZEhNNklHUmxabUYxYkhSekxGeHVJQ0FnSUdOeVpXRjBaVG9nWTNKbFlYUmxMRnh1SUNBZ0lHTnNiMjVsT2lCamJHOXVaU3hjYmlBZ0lDQjBZWEE2SUhSaGNDeGNiaUFnSUNCblpYUTZJR2RsZEN4Y2JpQWdJQ0JvWVhNNklHaGhjeXhjYmlBZ0lDQnRZWEJQWW1wbFkzUTZJRzFoY0U5aWFtVmpkQ3hjYmlBZ0lDQnBaR1Z1ZEdsMGVUb2dhV1JsYm5ScGRIa3NYRzRnSUNBZ1kyOXVjM1JoYm5RNklHTnZibk4wWVc1MExGeHVJQ0FnSUc1dmIzQTZJRzV2YjNBc1hHNGdJQ0FnZEc5UVlYUm9PaUIwYjFCaGRHZ2tNU3hjYmlBZ0lDQndjbTl3WlhKMGVUb2djSEp2Y0dWeWRIa3NYRzRnSUNBZ2NISnZjR1Z5ZEhsUFpqb2djSEp2Y0dWeWRIbFBaaXhjYmlBZ0lDQnRZWFJqYUdWeU9pQnRZWFJqYUdWeUxGeHVJQ0FnSUcxaGRHTm9aWE02SUcxaGRHTm9aWElzWEc0Z0lDQWdkR2x0WlhNNklIUnBiV1Z6TEZ4dUlDQWdJSEpoYm1SdmJUb2djbUZ1Wkc5dExGeHVJQ0FnSUc1dmR6b2dibTkzTEZ4dUlDQWdJR1Z6WTJGd1pUb2dYMlZ6WTJGd1pTeGNiaUFnSUNCMWJtVnpZMkZ3WlRvZ1gzVnVaWE5qWVhCbExGeHVJQ0FnSUhSbGJYQnNZWFJsVTJWMGRHbHVaM002SUhSbGJYQnNZWFJsVTJWMGRHbHVaM01zWEc0Z0lDQWdkR1Z0Y0d4aGRHVTZJSFJsYlhCc1lYUmxMRnh1SUNBZ0lISmxjM1ZzZERvZ2NtVnpkV3gwTEZ4dUlDQWdJSFZ1YVhGMVpVbGtPaUIxYm1seGRXVkpaQ3hjYmlBZ0lDQmphR0ZwYmpvZ1kyaGhhVzRzWEc0Z0lDQWdhWFJsY21GMFpXVTZJR2wwWlhKaGRHVmxMRnh1SUNBZ0lIQmhjblJwWVd3NklIQmhjblJwWVd3c1hHNGdJQ0FnWW1sdVpEb2dZbWx1WkN4Y2JpQWdJQ0JpYVc1a1FXeHNPaUJpYVc1a1FXeHNMRnh1SUNBZ0lHMWxiVzlwZW1VNklHMWxiVzlwZW1Vc1hHNGdJQ0FnWkdWc1lYazZJR1JsYkdGNUxGeHVJQ0FnSUdSbFptVnlPaUJrWldabGNpeGNiaU
14938FnSUNCMGFISnZkSFJzWlRvZ2RHaHliM1IwYkdVc1hHNGdJQ0FnWkdWaWIzVnVZMlU2SUdSbFltOTFibU5sTEZ4dUlDQWdJSGR5WVhBNklIZHlZWEFzWEc0Z0lDQWdibVZuWVhSbE9pQnVaV2RoZEdVc1hHNGdJQ0FnWTI5dGNHOXpaVG9nWTI5dGNHOXpaU3hjYmlBZ0lDQmhablJsY2pvZ1lXWjBaWElzWEc0Z0lDQWdZbVZtYjNKbE9pQmlaV1p2Y21Vc1hHNGdJQ0FnYjI1alpUb2diMjVqWlN4Y2JpQWdJQ0JtYVc1a1MyVjVPaUJtYVc1a1MyVjVMRnh1SUNBZ0lHWnBibVJKYm1SbGVEb2dabWx1WkVsdVpHVjRMRnh1SUNBZ0lHWnBibVJNWVhOMFNXNWtaWGc2SUdacGJtUk1ZWE4wU1c1a1pYZ3NYRzRnSUNBZ2MyOXlkR1ZrU1c1a1pYZzZJSE52Y25SbFpFbHVaR1Y0TEZ4dUlDQWdJR2x1WkdWNFQyWTZJR2x1WkdWNFQyWXNYRzRnSUNBZ2JHRnpkRWx1WkdWNFQyWTZJR3hoYzNSSmJtUmxlRTltTEZ4dUlDQWdJR1pwYm1RNklHWnBibVFzWEc0Z0lDQWdaR1YwWldOME9pQm1hVzVrTEZ4dUlDQWdJR1pwYm1SWGFHVnlaVG9nWm1sdVpGZG9aWEpsTEZ4dUlDQWdJR1ZoWTJnNklHVmhZMmdzWEc0Z0lDQWdabTl5UldGamFEb2daV0ZqYUN4Y2JpQWdJQ0J0WVhBNklHMWhjQ3hjYmlBZ0lDQmpiMnhzWldOME9pQnRZWEFzWEc0Z0lDQWdjbVZrZFdObE9pQnlaV1IxWTJVc1hHNGdJQ0FnWm05c1pHdzZJSEpsWkhWalpTeGNiaUFnSUNCcGJtcGxZM1E2SUhKbFpIVmpaU3hjYmlBZ0lDQnlaV1IxWTJWU2FXZG9kRG9nY21Wa2RXTmxVbWxuYUhRc1hHNGdJQ0FnWm05c1pISTZJSEpsWkhWalpWSnBaMmgwTEZ4dUlDQWdJR1pwYkhSbGNqb2dabWxzZEdWeUxGeHVJQ0FnSUhObGJHVmpkRG9nWm1sc2RHVnlMRnh1SUNBZ0lISmxhbVZqZERvZ2NtVnFaV04wTEZ4dUlDQWdJR1YyWlhKNU9pQmxkbVZ5ZVN4Y2JpQWdJQ0JoYkd3NklHVjJaWEo1TEZ4dUlDQWdJSE52YldVNklITnZiV1VzWEc0Z0lDQWdZVzU1T2lCemIyMWxMRnh1SUNBZ0lHTnZiblJoYVc1ek9pQmpiMjUwWVdsdWN5eGNiaUFnSUNCcGJtTnNkV1JsY3pvZ1kyOXVkR0ZwYm5Nc1hHNGdJQ0FnYVc1amJIVmtaVG9nWTI5dWRHRnBibk1zWEc0Z0lDQWdhVzUyYjJ0bE9pQnBiblp2YTJVc1hHNGdJQ0FnY0d4MVkyczZJSEJzZFdOckxGeHVJQ0FnSUhkb1pYSmxPaUIzYUdWeVpTeGNiaUFnSUNCdFlYZzZJRzFoZUN4Y2JpQWdJQ0J0YVc0NklHMXBiaXhjYmlBZ0lDQnphSFZtWm14bE9pQnphSFZtWm14bExGeHVJQ0FnSUhOaGJYQnNaVG9nYzJGdGNHeGxMRnh1SUNBZ0lITnZjblJDZVRvZ2MyOXlkRUo1TEZ4dUlDQWdJR2R5YjNWd1FuazZJR2R5YjNWd1Fua3NYRzRnSUNBZ2FXNWtaWGhDZVRvZ2FXNWtaWGhDZVN4Y2JpQWdJQ0JqYjNWdWRFSjVPaUJqYjNWdWRFSjVMRnh1SUNBZ0lIQmhjblJwZEdsdmJqb2djR0Z5ZEdsMGFXOXVMRnh1SUNBZ0lIUnZRWEp5WVhrNklIUnZRWEp5WVhrc1hHNGdJQ0FnYzJsNlpUb2djMmw2WlN4Y2JpQWdJQ0J3YVdOck9pQndhV05yTEZ4dUlDQWdJRzl0YVhRNklHOXRhWFFzWEc0Z0lDQWdabWx5YzNRNklHWnBjbk4wTEZ4dUlDQWdJR2hsWVdRNklHWnBjbk4wTEZ4dUlDQWdJSFJoYTJVNklHWnBjbk4wTEZ4dUlDQWdJR2x1YVhScFlXdzZJR2x1YVhScFlXd3NYRzRnSUNBZ2JHRnpkRG9nYkdGemRDeGNiaUFnSUNCeVpYTjBPaUJ5WlhOMExGeHVJQ0FnSUhSaGFXdzZJSEpsYzNRc1hHNGdJQ0FnWkhKdmNEb2djbVZ6ZEN4Y2JpQWdJQ0JqYjIxd1lXTjBPaUJqYjIxd1lXTjBMRnh1SUNBZ0lHWnNZWFIwWlc0NklHWnNZWFIwWlc0c1hHNGdJQ0FnZDJsMGFHOTFkRG9nZDJsMGFHOTFkQ3hjYmlBZ0lDQjFibWx4T2lCMWJtbHhMRnh1SUNBZ0lIVnVhWEYxWlRvZ2RXNXBjU3hjYmlBZ0lDQjFibWx2YmpvZ2RXNXBiMjRzWEc0Z0lDQWdhVzUwWlhKelpXTjBhVzl1T2lCcGJuUmxjbk5sWTNScGIyNHNYRzRnSUNBZ1pHbG1abVZ5Wlc1alpUb2daR2xtWm1WeVpXNWpaU3hjYmlBZ0lDQjFibnBwY0RvZ2RXNTZhWEFzWEc0Z0lDQWdkSEpoYm5Od2IzTmxPaUIxYm5wcGNDeGNiaUFnSUNCNmFYQTZJSHBwY0N4Y2JpQWdJQ0J2WW1wbFkzUTZJRzlpYW1WamRDeGNiaUFnSUNCeVlXNW5aVG9nY21GdVoyVXNYRzRnSUNBZ1kyaDFibXM2SUdOb2RXNXJMRnh1SUNBZ0lHMXBlR2x1T2lCdGFYaHBiaXhjYmlBZ0lDQW5aR1ZtWVhWc2RDYzZJRjhrTVZ4dUlDQjlPMXh1WEc0Z0lDOHZJRVJsWm1GMWJIUWdSWGh3YjNKMFhHNWNiaUFnTHk4Z1FXUmtJR0ZzYkNCdlppQjBhR1VnVlc1a1pYSnpZMjl5WlNCbWRXNWpkR2x2Ym5NZ2RHOGdkR2hsSUhkeVlYQndaWElnYjJKcVpXTjBMbHh1SUNCMllYSWdYeUE5SUcxcGVHbHVLR0ZzYkVWNGNHOXlkSE1wTzF4dUlDQXZMeUJNWldkaFkza2dUbTlrWlM1cWN5QkJVRWt1WEc0Z0lGOHVYeUE5SUY4N1hHNWNiaUFnY21WMGRYSnVJRjg3WEc1Y2JuMHBLU2s3WEc0dkx5TWdjMjkxY21ObFRXRndjR2x1WjFWU1REMTFibVJsY25OamIzSmxMWFZ0WkM1cWN5NXRZWEJjYmlKZGZRPT0iLCJ2YXIgJCA9IHJlcXVpcmUoJ2pxdWVyeScpO1xyXG52YXIgYnJlYWtwb2ludCA9IHJlcXVpcmUoXCIuL2FwcC1icmVha3BvaW50c1wiKTtcclxuXHJcbiQoZnVuY3Rpb24oKXtcclxuICAgICQoJy5hY2NvcmRpb24nKS5maW5kKCcuYWNjb3JkaW9uLXRvZ2dsZScpLmNsaWNrKGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgaWYoISQodGhpcykuaGFzQ2xhc3MoJ2FjY29yZGlvbi10b2dnbGUtLW9wZW4nKSkge1xyXG4gICAgICAgICAgICAkKCcuYWNjb3JkaW9uJykuZmluZCgnLmFjY29yZGlvbi10b2dnbGUtLW9wZW4nKS5yZW1vdmVDbGFzcyhcImFjY29yZGlvbi10b2dnbGUtLW9wZW5cIikubmV4dCgpLnNsaWRlVG9nZ2xlKCdmYXN0Jyk7XHJcblxyXG4gICAgICAgICAgICAkKHRoaXMpLnRvZ2dsZUNsYXNzKFwiYWNjb3JkaW9uLXRvZ2dsZS0tb3BlblwiKS5uZXh0KCkuc2xpZGVUb2dnbGUoJ2Zhc3QnLCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgaWYoYnJlYWtwb2ludCgpICE9IFwic21hcnRwaG9uZVwiKSB7XHJcblx0ICAgICAgICAgICAgICAgICQoJ2h0bWwsIGJvZHknKS5hbmltYXRlKHtcclxuXHQgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wOiAkKHRoaXMpLm9mZnNldCgpLnRvcCAtICggKCQoJy5jLW5hdmlnYXRpb24nKS5vdXRlckhlaWdodCh0cnVlKSAqIDIpICsgKCQodGhpcykucHJldigpLm91dGVySGVpZ2h0KHRydWUpICogMikpXHJcblx0ICAgICAgICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICAgXHRcdH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgJCh0aGlzKS50b2dnbGVDbGFzcyhcImFjY29yZGlvbi10b2dnbGUtLW9wZW5cIikubmV4dCgpLnNsaWRlVG9nZ2xlKCdmYXN0Jyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG59KTtcclxuXHJcbi8qXHJcbnZhciBicmVha3BvaW50ID0gcmVxdWlyZShcIi4vYXBwLWJyZWFrcG9pbnRzXCIpO1xyXG5cclxualF1ZXJ5KCBkb2N1bWVudCApLnJlYWR5KGZ1bmN0aW9uKCAkICkge1xyXG4gICAgJCgnLmFjY29yZGlvbicpLmZpbmQoJy5hY2NvcmRpb24tdG9nZ2xlJykuY2xpY2soZnVuY3Rpb24oKXtcclxuXHJcbiAgICAgICAgaWYoISQodGhpcykuaGFzQ2xhc3MoJ2FjY29yZGlvbi10b2dnbGUtLW9wZW4nKSkge1xyXG4gICAgICAgICAgICAkKCcuYWNjb3JkaW9uJykuZmluZCgnLmFjY29yZGlvbi10b2dnbGUtLW9wZW4nKS5yZW1vdmVDbGFzcyhcImFjY29yZGlvbi10b2dnbGUtLW9wZW5cIikubmV4dCgpLnNsaWRlVG9nZ2xlKCdmYXN0Jyk7XHJcblxyXG4gICAgICAgICAgICAkKHRoaXMpLnRvZ2dsZUNsYXNzKFwiYWNjb3JkaW9uLXRvZ2dsZS0tb3BlblwiKS5uZXh0KCkuc2xpZGVUb2dnbGUoJ2Zhc3QnLCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgaWYoYnJlYWtwb2ludCgpICE9IFwic21hcnRwaG9uZVwiKSB7XHJcblx0ICAgICAgICAgICAgICAgICQoJ2h0bWwsIGJvZHknKS5hbmltYXRlKHtcclxuXHQgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wOiAkKHRoaXMpLm9mZnNldCgpLnRvcCAtICggKCQoJy5uYXZpZ2F0aW9uJykub3V0ZXJIZWlnaHQodHJ1ZSkgKiAyKSArICgkKHRoaXMpLnByZXYoKS5vdXRlckhlaWdodCh0cnVlKSAqIDIpKVxyXG5cdCAgICAgICAgICAgICAgI
14938H0sIDUwMCk7XHJcbiAgICAgICAgIFx0XHR9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICQodGhpcykudG9nZ2xlQ2xhc3MoXCJhY2NvcmRpb24tdG9nZ2xlLS1vcGVuXCIpLm5leHQoKS5zbGlkZVRvZ2dsZSgnZmFzdCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9KTtcclxufSk7XHJcblxyXG4gKi8iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XHJcbiAgICByZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpLCAnOmJlZm9yZScpLmdldFByb3BlcnR5VmFsdWUoJ2NvbnRlbnQnKTtcclxufTtcclxuIiwidmFyIHN0eWxlcyA9IFtcclxuICAgIHtcclxuICAgICAgICBcImZlYXR1cmVUeXBlXCI6IFwiYWRtaW5pc3RyYXRpdmVcIixcclxuICAgICAgICBcImVsZW1lbnRUeXBlXCI6IFwibGFiZWxzLnRleHQuZmlsbFwiLFxyXG4gICAgICAgIFwic3R5bGVyc1wiOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwiY29sb3JcIjogXCIjNDQ0NDQ0XCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJmZWF0dXJlVHlwZVwiOiBcImxhbmRzY2FwZVwiLFxyXG4gICAgICAgIFwiZWxlbWVudFR5cGVcIjogXCJhbGxcIixcclxuICAgICAgICBcInN0eWxlcnNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcImNvbG9yXCI6IFwiI2YyZjJmMlwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIFwiZmVhdHVyZVR5cGVcIjogXCJwb2lcIixcclxuICAgICAgICBcImVsZW1lbnRUeXBlXCI6IFwiYWxsXCIsXHJcbiAgICAgICAgXCJzdHlsZXJzXCI6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJ2aXNpYmlsaXR5XCI6IFwib2ZmXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJmZWF0dXJlVHlwZVwiOiBcInJvYWRcIixcclxuICAgICAgICBcImVsZW1lbnRUeXBlXCI6IFwiYWxsXCIsXHJcbiAgICAgICAgXCJzdHlsZXJzXCI6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJzYXR1cmF0aW9uXCI6IC0xMDBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJsaWdodG5lc3NcIjogNDVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJmZWF0dXJlVHlwZVwiOiBcInJvYWQuaGlnaHdheVwiLFxyXG4gICAgICAgIFwiZWxlbWVudFR5cGVcIjogXCJhbGxcIixcclxuICAgICAgICBcInN0eWxlcnNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInZpc2liaWxpdHlcIjogXCJzaW1wbGlmaWVkXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJmZWF0dXJlVHlwZVwiOiBcInJvYWQuYXJ0ZXJpYWxcIixcclxuICAgICAgICBcImVsZW1lbnRUeXBlXCI6IFwibGFiZWxzLmljb25cIixcclxuICAgICAgICBcInN0eWxlcnNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInZpc2liaWxpdHlcIjogXCJvZmZcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBcImZlYXR1cmVUeXBlXCI6IFwidHJhbnNpdFwiLFxyXG4gICAgICAgIFwiZWxlbWVudFR5cGVcIjogXCJhbGxcIixcclxuICAgICAgICBcInN0eWxlcnNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInZpc2liaWxpdHlcIjogXCJvZmZcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBcImZlYXR1cmVUeXBlXCI6IFwid2F0ZXJcIixcclxuICAgICAgICBcImVsZW1lbnRUeXBlXCI6IFwiYWxsXCIsXHJcbiAgICAgICAgXCJzdHlsZXJzXCI6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJjb2xvclwiOiBcIiM0NmJjZWNcIlxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInZpc2liaWxpdHlcIjogXCJvblwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICB9XHJcbl1cclxuO1xyXG5cclxud2luZG93LmluaXRpYWxpemUgPSBmdW5jdGlvbigpIHtcclxuXHR2YXIgcGluID0gW107XHJcblx0dmFyIGluZm93aW5kb3cgPSAgbmV3IGdvb2dsZS5tYXBzLkluZm9XaW5kb3coe1xyXG4gICAgICAgIGNvbnRlbnQ6IFwiXCJcclxuICAgIH0pO1xyXG5cdHZhciBib3VuZHMgPSBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzKCk7XHJcblx0dmFyIHpvb20gPSA4O1xyXG5cclxuXHR2YXIgc3R5bGVkTWFwID0gbmV3IGdvb2dsZS5tYXBzLlN0eWxlZE1hcFR5cGUoc3R5bGVzLCB7bmFtZTogXCJjdXN0b20tbWFwXCJ9KTtcclxuXHJcblxyXG5cdHZhciBvcHRpb25zID0ge1xyXG4gICAgICAgIHpvb20gICAgICA6IHpvb20sXHJcbiAgICAgICAvLyBjZW50ZXIgICAgOiBsYXRMbmcsXHJcbiAgICAgICAgc2Nyb2xsd2hlZWw6IGZhbHNlLFxyXG4gICAgICAgIG1hcFR5cGVJZCA6IGdvb2dsZS5tYXBzLk1hcFR5cGVJZC5URVJSQUlOLCAvLyBUeXBlIGRlIGNhcnRlLCBkaWZmw6lyZW50ZXMgdmFsZXVycyBwb3NzaWJsZSBIWUJSSUQsIFJPQURNQVAsIFNBVEVMTElURSwgVEVSUkFJTlxyXG4gICAgICAgIG1heFpvb20gICA6IDIwLFxyXG4gICAgICAgIG1hcFR5cGVDb250cm9sT3B0aW9uczoge1xyXG4gICAgICAgICAgICBtYXBUeXBlSWRzOiBbZ29vZ2xlLm1hcHMuTWFwVHlwZUlkLlJPQURNQVAsICdtYXBfc3R5bGUnXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgem9vbUNvbnRyb2w6IHRydWVcclxuICAgIH07XHJcblxyXG5cdGlmKCQoJy5waW4nKS5sZW5ndGgpIHtcclxuICAgIFx0JCgnLnBpbicpLmVhY2goZnVuY3Rpb24oKXtcclxuXHRcdFx0dmFyIGRhdGEgPSB7XHJcblx0ICAgICAgICBcdFwibGF0XCI6ICQodGhpcykuYXR0cihcImRhdGEtbGF0XCIpLFxyXG5cdCAgICAgICAgXHRcImxuZ1wiOiAkKHRoaXMpLmF0dHIoXCJkYXRhLV9sbmdcIiksXHJcblx0ICAgICAgICBcdFwicGluXCI6ICQodGhpcykuYXR0cihcImRhdGEtcGluXCIpXHJcbiAgICBcdFx0fTtcclxuXHJcbiAgICBcdFx0cGluLnB1c2goZGF0YSk7XHJcbiAgICBcdH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHBpbi5sZW5ndGgpIHtcclxuICAgIFx0dmFyIGxhdCA9IHBpblswXVsnbGF0J107XHJcbiAgICBcdHZhciBsYXRMbmcgPSBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nKHBpblswXVsnbGF0J10sIHBpblswXVsnbG5nJ10pO1xyXG4gICAgXHR2YXIgbWFya2VyX3BpbiA9IHBpblswXVsncGluJ10
149387XHJcblx0XHRvcHRpb25zLmNlbnRlciA9IGxhdExuZztcclxuXHR9XHJcblxyXG5cdG1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvb2dsZScpLCBvcHRpb25zKTtcclxuXHRtYXAubWFwVHlwZXMuc2V0KCdtYXBfc3R5bGUnLCBzdHlsZWRNYXApO1xyXG5cdG1hcC5zZXRNYXBUeXBlSWQoJ21hcF9zdHlsZScpO1xyXG5cclxuXHRpZihwaW4ubGVuZ3RoKSB7XHJcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHBpbi5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHR2YXIgbWFya2VyID0gbmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7XHJcblx0XHRcdFx0bWFwOiBtYXAsXHJcblx0XHRcdFx0cG9zaXRpb246IG5ldyBnb29nbGUubWFwcy5MYXRMbmcocGluW2ldWydsYXQnXSwgcGluW2ldWydsbmcnXSksXHJcblx0XHRcdFx0aWNvbjogbmV3IGdvb2dsZS5tYXBzLk1hcmtlckltYWdlKHBpbltpXVsncGluJ10pXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuZnVuY3Rpb24gbG9hZFNjcmlwdCgpIHtcclxuICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcclxuICBzY3JpcHQuc3JjID0gJ2h0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9qcz92PTMuZXhwJyArXHJcbiAgICAgICcmY2FsbGJhY2s9aW5pdGlhbGl6ZSZrZXk9QUl6YVN5RDhRdXBqUWx3YThSdm5CSEZJVHc0MzZCdlJnQmdkYk40JztcclxuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XHJcbn1cclxuXHJcbmlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImdvb2dsZVwiKSkge1xyXG4gICAgd2luZG93Lm9ubG9hZCA9IGxvYWRTY3JpcHQ7XHJcbn0iXX0=

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.